From debbugs-submit-bounces@debbugs.gnu.org Fri Sep 13 21:48:31 2024 Received: (at submit) by debbugs.gnu.org; 14 Sep 2024 01:48:31 +0000 Received: from localhost ([127.0.0.1]:44496 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtn-0008PC-3m for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:31 -0400 Received: from lists.gnu.org ([209.51.188.17]:49832) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spHtl-0008P2-5N for submit@debbugs.gnu.org; Fri, 13 Sep 2024 21:48:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtb-0000Or-11 for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:19 -0400 Received: from mail.linj.tech ([5.255.109.209]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1spHtZ-0002Ro-GR for bug-gnu-emacs@gnu.org; Fri, 13 Sep 2024 21:48:18 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726278493; bh=UIRJ9Ugsxk1zzCZe/BiM2Xssv1+30yG/o/eOhlQSK5g=; h=From:To:Subject:Date; b=UK/PKMMvgJel9el1yGwDNq1pB2U5oW0YYm+CX5UoNjYaEbUXf2+Nbaw/lkd8+Rz6F EXXcQvi85231jzxrL+u0rF6TaxkrSdvts1hNa2iFEnTrETJypIQhGemM8/R+5xNYtS vC3cZ7MrkfntpRRYHT28LC+wlDXZCcG7WFfm6r3n7gpVXpRy67pf1Fl2uRJc9QqAqE RWFO7V5JKeYO+qv7dagpY5iWiqUaj/LtkPZVfXtDu6jh7Yw1SnhDKbP1V85FImfy4q xL2Yj2BW20HxpvyjTd6fJO1sIvgA/iZ2C3TeWPMDsKHCZs0LCbx5/pxC1hK2P8/xhM Sy/FOqOoGNtQA== To: bug-gnu-emacs@gnu.org Subject: 29.3; Eglot GNU ELPA tarball does not contain an info manual Date: Sat, 14 Sep 2024 09:47:55 +0800 Message-ID: <87v7yzvwdw.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=5.255.109.209; envelope-from=me@linj.tech; helo=mail.linj.tech X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) 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" X-Spam-Score: -2.4 (--) Eglot GNU ELPA tarball[1] does not contain an info manual. Others package tarballs, such as erc[2], do contain an info manual. Adding :doc "eglot.texi" to elpa-packages[3] should fix this. [1]: https://elpa.gnu.org/packages/eglot-1.17.tar [2]: https://elpa.gnu.org/packages/erc-5.6.tar [3]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages?id=51936a29b693bfc5f4f92e365b485a7c547b2ac1#n270 From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 15 08:29:39 2024 Received: (at 73241-done) by debbugs.gnu.org; 15 Sep 2024 12:29:39 +0000 Received: from localhost ([127.0.0.1]:48578 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoNm-0001DG-V7 for submit@debbugs.gnu.org; Sun, 15 Sep 2024 08:29:39 -0400 Received: from mout01.posteo.de ([185.67.36.65]:50217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoNk-0001D2-JE for 73241-done@debbugs.gnu.org; Sun, 15 Sep 2024 08:29:37 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id DBE76240027 for <73241-done@debbugs.gnu.org>; Sun, 15 Sep 2024 14:29:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1726403358; bh=JkdPxBgwynPPk5A+0kKtQuoegmyLrn8zowj1yrgomVM=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: From; b=j9GxIaVZtqcJ+INTzKYKbLKyWyLkydJ4K5HyJJ0AV3ji4hTQ3nzVB0Y6Yacu+WWOi Yks5LaW5nYegfvjvVJuLDolz4TDH4HiZ2gIudhnXpp5c3eE3FAQQBPGLvYEfsyYqOl 9nRFT4SkyIsJAKRUlRqrxuaxKEut5FhhThMmMbVfyzE5S+Iyjuw/+VDCZHs0wQTY/i p8FaVO+1QVARdvDbHFxgRWbIhCUtd3hkXDQrLm8lg6+liVMDqvM0mVdIrhs3413Ogz TM52WLZL0SdxNdT5rSQq8T6leC9jD1oF45Im6ALfIJ08LD/E50lnvttcIaMt8TfKoX us6iOfaqyc74Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4X66mY4Kdjz6tvr; Sun, 15 Sep 2024 14:29:17 +0200 (CEST) From: Philip Kaludercic To: Lin Jian Subject: Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual In-Reply-To: <87v7yzvwdw.fsf@linj.tech> (Lin Jian's message of "Sat, 14 Sep 2024 09:47:55 +0800") References: <87v7yzvwdw.fsf@linj.tech> X-Hashcash: 1:20:240915:73241@debbugs.gnu.org::kw151fyq9EPxNm0L:eYk X-Hashcash: 1:20:240915:me@linj.tech::HISZhppwFdU/vOnJ:nLL Date: Sun, 15 Sep 2024 12:29:16 +0000 Message-ID: <87a5g9ksmb.fsf@posteo.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Debbugs-Envelope-To: 73241-done Cc: 73241-done@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" --=-=-= Content-Type: text/plain Lin Jian writes: > Eglot GNU ELPA tarball[1] does not contain an info manual. Others > package tarballs, such as erc[2], do contain an info manual. > > Adding :doc "eglot.texi" to elpa-packages[3] should fix this. I can confirm that this works, here is the result. --=-=-= Content-Type: application/x-tar Content-Disposition: attachment; filename=eglot-1.17.tar Content-Transfer-Encoding: base64 ZWdsb3QtMS4xNy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMTc1 MAAwMDAxNzUwADAwMDAwMDAwMDAwADE0NjcxNTQwMDcwADAxMjExNAAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHBoaWxpcAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABl Z2xvdC0xLjE3L2VnbG90LmVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUw ADAwMDE3NTAAMDAwMDA1NjY0MDAAMTQ2NzE1NDAwNzAAMDEzNTYzACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7 OyBlZ2xvdC5lbCAtLS0gVGhlIEVtYWNzIENsaWVudCBmb3IgTFNQIHNlcnZlcnMgIC0qLSBsZXhp Y2FsLWJpbmRpbmc6IHQ7IC0qLQoKOzsgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCgo7OyBWZXJzaW9uOiAxLjE3Cjs7IEF1dGhvcjogSm/Do28g VMOhdm9yYSA8am9hb3Rhdm9yYUBnbWFpbC5jb20+Cjs7IE1haW50YWluZXI6IEpvw6NvIFTDoXZv cmEgPGpvYW90YXZvcmFAZ21haWwuY29tPgo7OyBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9qb2Fv dGF2b3JhL2VnbG90Cjs7IEtleXdvcmRzOiBjb252ZW5pZW5jZSwgbGFuZ3VhZ2VzCjs7IFBhY2th Z2UtUmVxdWlyZXM6ICgoZW1hY3MgIjI2LjMiKSAoanNvbnJwYyAiMS4wLjI0IikgKGZseW1ha2Ug IjEuMi4xIikgKHByb2plY3QgIjAuOS44IikgKHhyZWYgIjEuNi4yIikgKGVsZG9jICIxLjE0LjAi KSAoc2VxICIyLjIzIikgKGV4dGVybmFsLWNvbXBsZXRpb24gIjAuMSIpKQoKOzsgVGhpcyBpcyBh IEdOVSBFTFBBIDpjb3JlIHBhY2thZ2UuICBBdm9pZCBhZGRpbmcgZnVuY3Rpb25hbGl0eQo7OyB0 aGF0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHZlcnNpb24gb2YgRW1hY3MgcmVjb3JkZWQgYWJv dmUgb3IgYW55Cjs7IG9mIHRoZSBwYWNrYWdlIGRlcGVuZGVuY2llcy4KCjs7IFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3Mg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBFZ2xvdCAo IkVtYWNzIFBvbHlnbG90IikgaXMgYW4gRW1hY3MgTFNQIGNsaWVudCB0aGF0IHN0YXlzIG91dCBv Zgo7OyB5b3VyIHdheS4KOzsKOzsgVHlwaW5nIE0teCBlZ2xvdCBpbiBzb21lIHNvdXJjZSBmaWxl IGlzIG9mdGVuIGVub3VnaCB0byBnZXQgeW91Cjs7IHN0YXJ0ZWQsIGlmIHRoZSBsYW5ndWFnZSBz ZXJ2ZXIgeW91J3JlIGxvb2tpbmcgdG8gdXNlIGlzIGluc3RhbGxlZAo7OyBpbiB5b3VyIHN5c3Rl bS4gIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsLCBhdmFpbGFibGUgZnJvbQo7OyBodHRwczov L2pvYW90YXZvcmEuZ2l0aHViLmlvL2VnbG90LyBvciBmcm9tIE0teCBpbmZvIGZvciBtb3JlIHVz YWdlCjs7IGluc3RydWN0aW9ucy4KOzsKOzsgSWYgeW91IHdpc2ggdG8gY29udHJpYnV0ZSBjaGFu Z2VzIHRvIEVnbG90LCBwbGVhc2UgZG8gcmVhZCB0aGUgdXNlcgo7OyBtYW51YWwgZmlyc3QuICBB ZGRpdGlvbmFsbHksIHRha2UgdGhlIGZvbGxvd2luZyBpbiBjb25zaWRlcmF0aW9uOgoKOzsgKiBF Z2xvdCdzIG1haW4gam9iIGlzIHRvIGhvb2sgdXAgdGhlIGluZm9ybWF0aW9uIHRoYXQgbGFuZ3Vh Z2UKOzsgICBzZXJ2ZXJzIG9mZmVyIHZpYSBMU1AgdG8gRW1hY3MncyBVSSBmYWNpbGl0aWVzOiBY cmVmIGZvcgo7OyAgIGRlZmluaXRpb24tY2hhc2luZywgRmx5bWFrZSBmb3IgZGlhZ25vc3RpY3Ms IEVsZG9jIGZvciBhdC1wb2ludAo7OyAgIGRvY3VtZW50YXRpb24sIGV0Yy4gIEVnbG90J3Mgam9i IGlzIGdlbmVyYWxseSAqbm90KiB0byBwcm92aWRlCjs7ICAgc3VjaCBhIFVJIGl0c2VsZiwgdGhv dWdoIGEgc21hbGwgbnVtYmVyIG9mIHNpbXBsZQo7OyAgIGNvdW50ZXItZXhhbXBsZXMgZG8gZXhp c3QsIGUuZy4gaW4gdGhlIGBlZ2xvdC1yZW5hbWUnIGNvbW1hbmQgb3IKOzsgICB0aGUgYGVnbG90 LWlubGF5LWhpbnRzLW1vZGUnIG1pbm9yIG1vZGUuICBXaGVuIGEgbmV3IFVJIGlzCjs7ICAgZXZp ZGVudGx5IG5lZWRlZCwgY29uc2lkZXIgYWRkaW5nIGEgbmV3IHBhY2thZ2UgdG8gRW1hY3MsIG9y Cjs7ICAgZXh0ZW5kaW5nIGFuIGV4aXN0aW5nIG9uZS4KOzsKOzsgKiBFZ2xvdCB3YXMgZGVzaWdu ZWQgdG8gZnVuY3Rpb24gd2l0aCBqdXN0IHRoZSBVSSBmYWNpbGl0aWVzIGZvdW5kCjs7ICAgaW4g dGhlIGxhdGVzdCBFbWFjcyBjb3JlLCBhcyBsb25nIGFzIHRob3NlIGZhY2lsaXRpZXMgYXJlIGFs c28KOzsgICBhdmFpbGFibGUgYXMgR05VIEVMUEEgOmNvcmUgcGFja2FnZXMuICBIaXN0b3JpY2Fs bHksIGEgbnVtYmVyIG9mCjs7ICAgOmNvcmUgcGFja2FnZXMgd2VyZSBhZGRlZCBvciByZXdvcmtl ZCBpbiBFbWFjcyB0byBtYWtlIHRoaXMKOzsgICBwb3NzaWJsZS4gIFRoaXMgcHJpbmNpcGxlIHNo b3VsZCBiZSB1cGhlbGQgd2hlbiBhZGRpbmcgbmV3IExTUAo7OyAgIGZlYXR1cmVzIG9yIHR3ZWFr aW5nIGV4aXN0aW5nIG9uZXMuICBEZXNpZ24gYW55IG5ldyBmYWNpbGl0aWVzIGluCjs7ICAgYSB3 YXkgdGhhdCB0aGV5IGNvdWxkIHdvcmsgaW4gdGhlIGFic2VuY2Ugb2YgTFNQIG9yIHVzaW5nIHNv bWUKOzsgICBkaWZmZXJlbnQgcHJvdG9jb2wsIHRoZW4gbWFrZSBzdXJlIEVnbG90IGNhbiBsaW5r IHVwIExTUAo7OyAgIGluZm9ybWF0aW9uIHRvIGl0LgoKOzsgKiBUaGVyZSBhcmUgZmV3IEVnbG90 IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiAgVGhpcyBwcmluY2lwbGUKOzsgICBzaG91bGQgYWxz byBiZSB1cGhlbGQuICBJZiBFZ2xvdCBoYWQgdGhlc2UgdmFyaWFibGVzLCBpdCBjb3VsZCBiZQo7 OyAgIGR1cGxpY2F0aW5nIGNvbmZpZ3VyYXRpb24gZm91bmQgZWxzZXdoZXJlLCBibG9hdGluZyBp dHNlbGYgdXAsCjs7ICAgYW5kIG1ha2luZyBpdCBnZW5lcmFsbHkgaGFyZCB0byBpbnRlZ3JhdGUg d2l0aCB0aGUgZXZlciBncm93aW5nCjs7ICAgc2V0IG9mIExTUCBmZWF0dXJlcyBhbmQgRW1hY3Mg cGFja2FnZXMuICBGb3IgaW5zdGFuY2UsIHRoaXMgaXMKOzsgICB3aHkgb25lIGZpbmRzIGEgc2lu Z2xlIHZhcmlhYmxlCjs7ICAgYGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllcycgaW5z dGVhZCBvZiBhIG51bWJlciBvZgo7OyAgIGNhcGFiaWxpdHktc3BlY2lmaWMgZmxhZ3MsIG9yIHdo eSBjdXN0b21pemluZyB0aGUgZGlzcGxheSBvZgo7OyAgIExTUC1wcm92aWRlZCBkb2N1bWVudGF0 aW9uIGlzIGRvbmUgdmlhIEVsRG9jJ3MgdmFyaWFibGVzLCBub3QKOzsgICBFZ2xvdCdzLgo7Owo7 OyAqIExpbmtpbmcgdXAgTFNQIGluZm9ybWF0aW9uIHRvIG90aGVyIGxpYnJhcmllcyBpcyBnZW5l cmFsbHkgZG9uZQo7OyAgIGluIHRoZSBgZWdsb3QtLW1hbmFnZWQtbW9kZScgbWlub3IgbW9kZSBm dW5jdGlvbiwgYnkKOzsgICBidWZmZXItbG9jYWxseSBzZXR0aW5nIHRoZSBvdGhlciBsaWJyYXJ5 J3MgdmFyaWFibGVzIHRvCjs7ICAgRWdsb3Qtc3BlY2lmaWMgdmVyc2lvbnMuICBXaGVuIGRlY2lk aW5nIHdoYXQgdG8gc2V0IHRoZSB2YXJpYWJsZQo7OyAgIHRvLCB0aGUgZ2VuZXJhbCBpZGVhIGlz IHRvIGNob29zZSBhIGdvb2QgZGVmYXVsdCBmb3IgYmVnaW5uZXJzCjs7ICAgdGhhdCBkb2Vzbid0 IGNsYXNoIHdpdGggRW1hY3MncyBkZWZhdWx0cy4gIFRoZSBzZXR0aW5ncyBhcmUgb25seQo7OyAg IGluIHBsYWNlIGR1cmluZyBFZ2xvdCdzIExTUC1lbnJpY2hlZCB0ZW51cmUgb3ZlciBhIHByb2pl Y3QuICBFdmVuCjs7ICAgc28sIHNvbWUgb2YgdGhvc2UgZGVjaXNpb25zIHdpbGwgaW52YXJpYWJs eSBhZ2dyYXZhdGUgYSBtaW5vcml0eQo7OyAgIG9mIEVtYWNzIHBvd2VyIHVzZXJzLCBidXQgdGhl c2UgdXNlcnMgY2FuIHVzZSBgZWdsb3Qtc3RheS1vdXQtb2YnCjs7ICAgYW5kIGBlZ2xvdC1tYW5h Z2VkLW1vZGUtaG9vaycgdG8gYWRqdXN0IHRoaW5ncyB0byB0aGVpcgo7OyAgIHByZWZlcmVuY2Vz Lgo7Owo7OyAqIE9uIG9jY2FzaW9uLCB0byBlbmFibGUgbmV3IGZlYXR1cmVzLCBFZ2xvdCBjYW4g aGF2ZSBzb2Z0Cjs7ICAgZGVwZW5kZW5jaWVzIG9uIHBvcHVsYXIgbGlicmFyaWVzIHRoYXQgYXJl IG5vdCBpbiBFbWFjcyBjb3JlLgo7OyAgICJTb2Z0IiBtZWFucyB0aGF0IHRoZSBkZXBlbmRlbmN5 IGRvZXNuJ3QgaW1wYWlyIGFueSBvdGhlciB1c2Ugb2YKOzsgICBFZ2xvdCBiZXlvbmQgdGhhdCBm ZWF0dXJlLiAgU3VjaCBpcyB0aGUgY2FzZSBvZiB0aGUgc25pcHBldAo7OyAgIGZ1bmN0aW9uYWxp dHksIHZpYSB0aGUgWWFzbmlwcGV0IHBhY2thZ2UsIE1hcmtkb3duIGZvcm1hdHRpbmcgb2YKOzsg ICBhdC1wb2ludCBkb2N1bWVudGF0aW9uIHZpYSB0aGUgbWFya2Rvd24tbW9kZSBwYWNrYWdlLCBh bmQgbmljZXIKOzsgICBsb29raW5nIGNvbXBsZXRpb25zIHdoZW4gdGhlIENvbXBhbnkgcGFja2Fn ZSBpcyB1c2VkLgoKOzs7IENvZGU6CgoocmVxdWlyZSAnaW1lbnUpCihyZXF1aXJlICdjbC1saWIp CgoocmVxdWlyZSAndXJsLXBhcnNlKQoocmVxdWlyZSAndXJsLXV0aWwpCihyZXF1aXJlICdwY2Fz ZSkKKHJlcXVpcmUgJ2NvbXBpbGUpIDsgZm9yIHNvbWUgZmFjZXMKKHJlcXVpcmUgJ3dhcm5pbmdz KQooZXZhbC13aGVuLWNvbXBpbGUKICAocmVxdWlyZSAnc3Vici14KSkKKHJlcXVpcmUgJ2ZpbGVu b3RpZnkpCihyZXF1aXJlICdlcnQpCihyZXF1aXJlICd0ZXh0LXByb3BlcnR5LXNlYXJjaCBuaWwg dCkKKHJlcXVpcmUgJ2RpZmYtbW9kZSkKKHJlcXVpcmUgJ2RpZmYpCgo7OyBUaGVzZSBkZXBlbmRl bmNpZXMgYXJlIGFsc28gR05VIEVMUEEgY29yZSBwYWNrYWdlcy4gIEJlY2F1c2Ugb2YKOzsgYnVn IzYyNTc2LCBzaW5jZSB0aGVyZSBpcyBhIHJpc2sgdGhhdCBNLXggcGFja2FnZS1pbnN0YWxsLCBk ZXNwaXRlCjs7IGhhdmluZyBpbnN0YWxsZWQgdGhlbSwgZGlkbid0IGNvcnJlY3RseSByZS1sb2Fk IHRoZW0gb3ZlciB0aGUKOzsgYnVpbHQtaW4gdmVyc2lvbnMuCihldmFsLWFuZC1jb21waWxlCiAg OzsgRm9yIHRob3NlIHBhY2thZ2VzIHRoYXQgYXJlIHByZWxvYWRlZCwgcmVsb2FkIHRoZW0gaWYg bmVlZGVkLAogIDs7IHNpbmNlIHRoYXQncyB0aGUgYmVzdCB3ZSBjYW4gZG8gYW55d2F5LgogIDs7 IEZJWE1FOiBNYXliZSB0aGUgRUxQQSBwYWNrYWdlcyBmb3IgdGhvc2UgcHJlbG9hZGVkIHBhY2th Z2VzIHNob3VsZAogIDs7IGZvcmNlLXJlbG9hZCB0aGVtc2VsdmVzIGVhZ2VybHkgd2hlbiB0aGUg cGFja2FnZSBpcyBhY3RpdmF0ZWQhCiAgKGxldCAoKHJlbG9hZCAoaWYgKGZib3VuZHAgJ3JlcXVp cmUtd2l0aC1jaGVjaykgO0VtYWNz4omlMzAKICAgICAgICAgICAgICAgICAgICAjJ3JlcXVpcmUt d2l0aC1jaGVjawogICAgICAgICAgICAgICAgICAobGFtYmRhIChmZWF0dXJlICZyZXN0IF8pCiAg ICAgICAgICAgICAgICAgICAgOzsgSnVzdCBibGluZGx5IHJlbG9hZCBsaWtlIHdlIHVzZWQgdG8g ZG8gYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgOzsgYHJlcXVpcmUtd2l0aC1jaGVjaycuCiAg ICAgICAgICAgICAgICAgICAgKGxvYWQgKHN5bWJvbC1uYW1lIGZlYXR1cmUpIG5pbCAnbm9tZXNz YWdlKSkpKSkKCiAgICAoZnVuY2FsbCByZWxvYWQgJ2VsZG9jIG5pbCAncmVsb2FkKQogICAgKGZ1 bmNhbGwgcmVsb2FkICdzZXEgbmlsICdyZWxvYWQpCiAgICA7OyBGb3IgdGhvc2UgcGFja2FnZXMg d2hpY2ggYXJlIG5vdCBwcmVsb2FkZWQgT1RPSCwgc2lnbmFsIGFuIGVycm9yIGlmCiAgICA7OyB0 aGUgbG9hZGVkIGZpbGUgaXMgbm90IHRoZSBvbmUgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGxvYWRl ZC4KICAgIChtYXBjIHJlbG9hZCAnKHByb2plY3QgZmx5bWFrZSB4cmVmIGpzb25ycGMgZXh0ZXJu YWwtY29tcGxldGlvbikpKSkKCjs7IGZvcndhcmQtZGVjbGFyZSwgYnV0IGRvbid0IHJlcXVpcmUg KEVtYWNzIDI4IGRvZXNuJ3Qgc2VlbSB0byBjYXJlKQooZGVmdmFyIG1hcmtkb3duLWZvbnRpZnkt Y29kZS1ibG9ja3MtbmF0aXZlbHkpCihkZWZ2YXIgY29tcGFueS1iYWNrZW5kcykKKGRlZnZhciBj b21wYW55LXRvb2x0aXAtYWxpZ24tYW5ub3RhdGlvbnMpCihkZWZ2YXIgdHJhbXAtc3NoLWNvbnRy b2xtYXN0ZXItb3B0aW9ucykKKGRlZnZhciB0cmFtcC11c2Utc3NoLWNvbnRyb2xtYXN0ZXItb3B0 aW9ucykKCgwKOzs7IE9ic29sZXRlIGFsaWFzZXMKOzs7CihtYWtlLW9ic29sZXRlLXZhcmlhYmxl ICdlZ2xvdC0tbWFuYWdlZC1tb2RlLWhvb2sKICAgICAgICAgICAgICAgICAgICAgICAgJ2VnbG90 LW1hbmFnZWQtbW9kZS1ob29rICIxLjYiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFz ICdlZ2xvdC1jb25maXJtLXNlcnZlci1pbml0aWF0ZWQtZWRpdHMKICAnZWdsb3QtY29uZmlybS1z ZXJ2ZXItZWRpdHMgIjEuMTYiKQoobWFrZS1vYnNvbGV0ZS12YXJpYWJsZSAnZWdsb3QtZXZlbnRz LWJ1ZmZlci1zaXplCiAgJ2VnbG90LWV2ZW50cy1idWZmZXItY29uZmlnICIxLjE2IikKKGRlZmlu ZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZWdsb3QtLXVyaS10by1wYXRoICMnZWdsb3QtdXJp LXRvLXBhdGggIjEuMTYiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdlZ2xvdC0t cGF0aC10by11cmkgIydlZ2xvdC1wYXRoLXRvLXVyaSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUt ZnVuY3Rpb24tYWxpYXMgJ2VnbG90LS1yYW5nZS1yZWdpb24gIydlZ2xvdC1yYW5nZS1yZWdpb24g IjEuMTYiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdlZ2xvdC0tc2VydmVyLWNh cGFibGUgIydlZ2xvdC1zZXJ2ZXItY2FwYWJsZSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUtZnVu Y3Rpb24tYWxpYXMgJ2VnbG90LS1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlICMnZWdsb3Qtc2VydmVy LWNhcGFibGUtb3ItbG9zZSAiMS4xNiIpCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMK ICAnZWdsb3QtbHNwLWFiaWRpbmctY29sdW1uICMnZWdsb3QtdXRmLTE2LWxpbmVwb3MgIjEuMTIi KQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzCiAgJ2VnbG90LWN1cnJlbnQtY29sdW1u ICMnZWdsb3QtdXRmLTMyLWxpbmVwb3MgIjEuMTIiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxl LWFsaWFzCiAgJ2VnbG90LWN1cnJlbnQtY29sdW1uLWZ1bmN0aW9uICdlZ2xvdC1jdXJyZW50LWxp bmVwb3MtZnVuY3Rpb24gIjEuMTIiKQooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzCiAg J2VnbG90LW1vdmUtdG8tY3VycmVudC1jb2x1bW4gIydlZ2xvdC1tb3ZlLXRvLXV0Zi0zMi1saW5l cG9zICIxLjEyIikKKGRlZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcwogICdlZ2xvdC1tb3Zl LXRvLWxzcC1hYmlkaW5nLWNvbHVtbiAjJ2VnbG90LW1vdmUtdG8tdXRmLTE2LWxpbmVwb3MgIjEu MTIiKQooZGVmaW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFzCiAgJ2VnbG90LW1vdmUtdG8tY29s dW1uLWZ1bmN0aW9uICdlZ2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24gIjEuMTIiKQooZGVm aW5lLW9ic29sZXRlLXZhcmlhYmxlLWFsaWFzICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmls aXRlcwogICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRpZXMgIjEuOCIpCjs7OyMjI2F1 dG9sb2FkCihkZWZpbmUtb2Jzb2xldGUtZnVuY3Rpb24tYWxpYXMgJ2VnbG90LXVwZGF0ZSAjJ2Vn bG90LXVwZ3JhZGUtZWdsb3QgIjI5LjEiKQoKDAo7OzsgVXNlciB0d2Vha2FibGUgc3R1ZmYKKGRl Zmdyb3VwIGVnbG90IG5pbAogICJJbnRlcmFjdGlvbiB3aXRoIExhbmd1YWdlIFNlcnZlciBQcm90 b2NvbCBzZXJ2ZXJzLiIKICA6cHJlZml4ICJlZ2xvdC0iCiAgOmdyb3VwICdhcHBsaWNhdGlvbnMp CgooZGVmdW4gZWdsb3QtYWx0ZXJuYXRpdmVzIChhbHRlcm5hdGl2ZXMpCiAgIkNvbXB1dGUgc2Vy dmVyLWNob29zaW5nIGZ1bmN0aW9uIGZvciBgZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4KRWFjaCBl bGVtZW50IG9mIEFMVEVSTkFUSVZFUyBpcyBhIHN0cmluZyBQUk9HUkFNIG9yIGEgbGlzdCBvZgpz dHJpbmdzIChQUk9HUkFNIEFSR1MuLi4pIHdoZXJlIHByb2dyYW0gbmFtZXMgYW4gTFNQIHNlcnZl cgpwcm9ncmFtIHRvIHN0YXJ0IHdpdGggQVJHUy4gIFJldHVybnMgYSBmdW5jdGlvbiB0byBiZSBp bnZva2VkCmF1dG9tYXRpY2FsbHkgYnkgRWdsb3Qgb24gc3RhcnR1cC4gIFdoZW4gaW52b2tlZCwg dGhhdCBmdW5jdGlvbgp3aWxsIHJldHVybiBhIGxpc3QgKEFCU1BBVEggQVJHUyksIHdoZXJlIEFC U1BBVEggaXMgdGhlIGFic29sdXRlCnBhdGggb2YgdGhlIFBST0dSQU0gdGhhdCB3YXMgY2hvc2Vu IChpbnRlcmFjdGl2ZWx5IG9yCmF1dG9tYXRpY2FsbHkpLiIKICAobGFtYmRhICgmb3B0aW9uYWwg aW50ZXJhY3RpdmUgX3Byb2plY3QpCiAgICA7OyBKVEAyMDIxLTA2LTEzOiBUaGlzIGZ1bmN0aW9u IGlzIHdheSBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gaXQKICAgIDs7IGNvdWxkIGJlIGJlY2F1c2Ug aXQgYWNjb3VudHMgZm9yIHRoZSBmYWN0IHRoYXQKICAgIDs7IGBlZ2xvdC0tZXhlY3V0YWJsZS1m aW5kJyBtYXkgdGFrZSBtdWNoIGxvbmdlciB0byBleGVjdXRlIG9uCiAgICA7OyByZW1vdGUgZmls ZXMuCiAgICAobGV0KiAoKGxpc3RpZmllZCAoY2wtbG9vcCBmb3IgYSBpbiBhbHRlcm5hdGl2ZXMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgKGlmIChsaXN0cCBhKSBhIChs aXN0IGEpKSkpCiAgICAgICAgICAgKGVyciAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgIChl cnJvciAiTm9uZSBvZiAnJXMnIGFyZSB2YWxpZCBleGVjdXRhYmxlcyIKICAgICAgICAgICAgICAg ICAgICAgICAgIChtYXBjb25jYXQgIydjYXIgbGlzdGlmaWVkICIsICIpKSkpKQogICAgICAoY29u ZCAoKGFuZCBpbnRlcmFjdGl2ZSBjdXJyZW50LXByZWZpeC1hcmcpCiAgICAgICAgICAgICA7OyBB IEMtdSBhbHdheXMgbGV0cyB1c2VyIGlucHV0IHNvbWV0aGluZyBtYW51YWxseSwKICAgICAgICAg ICAgIG5pbCkKICAgICAgICAgICAgKGludGVyYWN0aXZlCiAgICAgICAgICAgICAobGV0KiAoKGF1 Z21lbnRlZCAobWFwY2FyIChsYW1iZGEgKGEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxldCAoKGZvdW5kIChlZ2xvdC0tZXhlY3V0YWJsZS1maW5kCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGEpIHQp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZm91bmQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGNh ciBhKSAoY29ucyBmb3VuZCAoY2RyIGEpKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlzdGlmaWVkKSkKICAgICAgICAgICAgICAgICAgICAoYXZhaWxhYmxlIChy ZW1vdmUgbmlsIGF1Z21lbnRlZCkpKQogICAgICAgICAgICAgICAoY29uZCAoKGNkciBhdmFpbGFi bGUpCiAgICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbXBsZXRpbmctcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJb ZWdsb3RdIE1vcmUgdGhhbiBvbmUgc2VydmVyIGV4ZWN1dGFibGUgYXZhaWxhYmxlOiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJ2NhciBhdmFpbGFibGUpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmlsIHQgbmlsIG5pbCAoY2FyIChjYXIgYXZhaWxhYmxlKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUgIydlcXVhbCkpKQogICAgICAg ICAgICAgICAgICAgICAoKGNkciAoY2FyIGF2YWlsYWJsZSkpKQogICAgICAgICAgICAgICAgICAg ICAodAogICAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgZXJyb3Igd2hlbiB1c2VkIGludGVy YWN0aXZlbHksIGxldCB0aGUKICAgICAgICAgICAgICAgICAgICAgIDs7IEVnbG90IHByb21wdCB0 aGUgdXNlciBmb3IgYWx0ZXJuYXRpdmUgKGdpdGh1YiM3MTkpCiAgICAgICAgICAgICAgICAgICAg ICBuaWwpKSkpCiAgICAgICAgICAgICh0CiAgICAgICAgICAgICAoY2wtbG9vcCBmb3IgKHAgLiBh cmdzKSBpbiBsaXN0aWZpZWQKICAgICAgICAgICAgICAgICAgICAgIGZvciBwcm9iZSA9IChlZ2xv dC0tZXhlY3V0YWJsZS1maW5kIHAgdCkKICAgICAgICAgICAgICAgICAgICAgIHdoZW4gcHJvYmUg cmV0dXJuIChjb25zIHByb2JlIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IChm dW5jYWxsIGVycikpKSkpKSkKCihkZWZ2YXIgZWdsb3Qtc2VydmVyLXByb2dyYW1zIGAoKChydXN0 LXRzLW1vZGUgcnVzdC1tb2RlKSAuICgicnVzdC1hbmFseXplciIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgoY21ha2UtbW9kZSBjbWFrZS10cy1tb2RlKSAuICgiY21ha2UtbGFu Z3VhZ2Utc2VydmVyIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpbXJjLW1v ZGUgLiAoInZpbS1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKChweXRob24tbW9kZSBweXRob24tdHMtbW9kZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJygicHlsc3AiICJweWxzIiAoInB5cmlnaHQtbGFuZ3Nl cnZlciIgIi0tc3RkaW8iKSAiamVkaS1sYW5ndWFnZS1zZXJ2ZXIiICJydWZmLWxzcCIpKSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGpzLWpzb24tbW9kZSBqc29uLW1vZGUganNv bi10cy1tb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoZWdsb3QtYWx0 ZXJuYXRpdmVzICcoKCJ2c2NvZGUtanNvbi1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgi dnNjb2RlLWpzb24tbGFuZ3VhZ2VzZXJ2ZXIiICItLXN0ZGlvIikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgianNvbi1sYW5ndWFnZXNl cnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGpz LW1vZGUgOmxhbmd1YWdlLWlkICJqYXZhc2NyaXB0IikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChqcy10cy1tb2RlIDpsYW5ndWFnZS1pZCAiamF2YXNjcmlwdCIpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAodHN4LXRzLW1vZGUgOmxhbmd1YWdlLWlkICJ0eXBl c2NyaXB0cmVhY3QiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVzY3Jp cHQtdHMtbW9kZSA6bGFuZ3VhZ2UtaWQgInR5cGVzY3JpcHQiKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHR5cGVzY3JpcHQtbW9kZSA6bGFuZ3VhZ2UtaWQgInR5cGVzY3JpcHQi KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoInR5cGVzY3JpcHQtbGFuZ3Vh Z2Utc2VydmVyIiAiLS1zdGRpbyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo YmFzaC10cy1tb2RlIHNoLW1vZGUpIC4gKCJiYXNoLWxhbmd1YWdlLXNlcnZlciIgInN0YXJ0Iikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwaHAtbW9kZSBwaHBzLW1vZGUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLChlZ2xvdC1hbHRlcm5hdGl2ZXMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKCJwaHBhY3RvciIgImxhbmd1YWdl LXNlcnZlciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgicGhwIiAi dmVuZG9yL2ZlbGl4ZmJlY2tlci9sYW5ndWFnZS1zZXJ2ZXIvYmluL3BocC1sYW5ndWFnZS1zZXJ2 ZXIucGhwIikpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMtbW9kZSBjLXRz LW1vZGUgYysrLW1vZGUgYysrLXRzLW1vZGUgb2JqYy1tb2RlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnKCJjbGFuZ2QiICJjY2xzIikpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoKGNhbWwtbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1sIikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh0dWFyZWctbW9kZSA6bGFuZ3VhZ2UtaWQgIm9jYW1s IikgcmVhc29uLW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJvY2Ft bGxzcCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocnVieS1tb2RlIHJ1Ynkt dHMtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoInNvbGFyZ3JhcGgi ICJzb2NrZXQiICItLXBvcnQiIDphdXRvcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGhhc2tlbGwtbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgi aGFza2VsbC1sYW5ndWFnZS1zZXJ2ZXItd3JhcHBlciIgIi0tbHNwIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVsbS1tb2RlIC4gKCJlbG0tbGFuZ3VhZ2Utc2VydmVyIikpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbnQtbW9kZSAuICgibWludCIgImxzIikp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtvdGxpbi1tb2RlIC4gKCJrb3RsaW4t bGFuZ3VhZ2Utc2VydmVyIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChnby1t b2RlIGdvLWRvdC1tb2QtbW9kZSBnby1kb3Qtd29yay1tb2RlIGdvLXRzLW1vZGUgZ28tbW9kLXRz LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCJnb3BscyIpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUi1tb2RlIGVzcy1yLW1vZGUpIC4gKCJSIiAi LS1zbGF2ZSIgIi1lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJsYW5ndWFnZXNlcnZlcjo6cnVuKCkiKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKGphdmEtbW9kZSBqYXZhLXRzLW1vZGUpIC4gKCJqZHRscyIpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZGFydC1tb2RlIGRhcnQtdHMtbW9kZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoImRhcnQiICJsYW5ndWFnZS1zZXJ2ZXIi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNsaWVudC1pZCIgImVtYWNz LmVnbG90LWRhcnQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVsaXhpci1t b2RlIGVsaXhpci10cy1tb2RlIGhlZXgtdHMtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLiAsKGlmIChhbmQgKGZib3VuZHAgJ3czMi1zaGVsbC1kb3Mtc2VtYW50aWNzKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodzMyLXNoZWxsLWRv cy1zZW1hbnRpY3MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygi bGFuZ3VhZ2Vfc2VydmVyLmJhdCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnKCJsYW5ndWFnZV9zZXJ2ZXIuc2giICJzdGFydF9sZXhpY2FsLnNoIikpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRhLW1vZGUgLiAoImFkYV9sYW5ndWFnZV9zZXJ2 ZXIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NhbGEtbW9kZSAuICwoZWds b3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICcoIm1ldGFscyIgIm1ldGFscy1lbWFjcyIpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocmFja2V0LW1vZGUgLiAoInJhY2tldCIgIi1sIiAicmFja2V0LWxhbmdzZXJ2 ZXIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHRleC1tb2RlIGNvbnRleHQt bW9kZSB0ZXhpbmZvLW1vZGUgYmlidGV4LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC4gLChlZ2xvdC1hbHRlcm5hdGl2ZXMgJygiZGlnZXN0aWYiICJ0ZXhsYWIiKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVybGFuZy1tb2RlIC4gKCJlcmxhbmdfbHMi ICItLXRyYW5zcG9ydCIgInN0ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCh5YW1sLXRzLW1vZGUgeWFtbC1tb2RlKSAuICgieWFtbC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0 ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5peC1tb2RlIC4gLChlZ2xv dC1hbHRlcm5hdGl2ZXMgJygibmlsIiAicm5peC1sc3AiICJuaXhkIikpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChuaWNrZWwtbW9kZSAuICgibmxzIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGdkc2NyaXB0LW1vZGUgLiAoImxvY2FsaG9zdCIgNjAwOCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmb3J0cmFuLW1vZGUgZjkwLW1vZGUpIC4g KCJmb3J0bHMiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnV0aGFyay1tb2Rl IC4gKCJmdXRoYXJrIiAibHNwIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChs dWEtbW9kZSBsdWEtdHMtbW9kZSkgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCJsdWEtbGFu Z3VhZ2Utc2VydmVyIiAibHVhLWxzcCIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoemlnLW1vZGUgLiAoInpscyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo Y3NzLW1vZGUgY3NzLXRzLW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4g LChlZ2xvdC1hbHRlcm5hdGl2ZXMgJygoInZzY29kZS1jc3MtbGFuZ3VhZ2Utc2VydmVyIiAiLS1z dGRpbyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoImNzcy1sYW5ndWFnZXNlcnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChodG1sLW1vZGUgLiAsKGVnbG90LWFsdGVybmF0aXZlcyAnKCgi dnNjb2RlLWh0bWwtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIpICgiaHRtbC1sYW5ndWFnZXNl cnZlciIgIi0tc3RkaW8iKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZG9j a2VyZmlsZS1tb2RlIGRvY2tlcmZpbGUtdHMtbW9kZSkgLiAoImRvY2tlci1sYW5nc2VydmVyIiAi LS1zdGRpbyIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2xvanVyZS1tb2Rl IGNsb2p1cmVzY3JpcHQtbW9kZSBjbG9qdXJlYy1tb2RlIGNsb2p1cmUtdHMtbW9kZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoImNsb2p1cmUtbHNwIikpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKChjc2hhcnAtbW9kZSBjc2hhcnAtdHMtbW9kZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoIm9tbmlzaGFycCIgIi1sc3AiKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNzaGFycC1scyIpKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1cmVzY3JpcHQtbW9kZSAuICgicHVyZXNjcmlw dC1sYW5ndWFnZS1zZXJ2ZXIiICItLXN0ZGlvIikpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChwZXJsLW1vZGUgY3BlcmwtbW9kZSkgLiAoInBlcmwiICItTVBlcmw6Okxhbmd1YWdl U2VydmVyIiAiLWUiICJQZXJsOjpMYW5ndWFnZVNlcnZlcjo6cnVuIikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKG1hcmtkb3duLW1vZGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLiAsKGVnbG90LWFsdGVybmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJygoIm1hcmtzbWFuIiAic2VydmVyIikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCJ2c2NvZGUtbWFya2Rvd24tbGFuZ3VhZ2Utc2VydmVyIiAiLS1z dGRpbyIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyYXBodml6LWRvdC1t b2RlIC4gKCJkb3QtbGFuZ3VhZ2Utc2VydmVyIiAiLS1zdGRpbyIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh0ZXJyYWZvcm0tbW9kZSAuICgidGVycmFmb3JtLWxzIiAic2VydmUi KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpdWEtdHMtbW9kZSB1aXVhLW1v ZGUpIC4gKCJ1aXVhIiAibHNwIikpKQogICJIb3cgdGhlIGNvbW1hbmQgYGVnbG90JyBndWVzc2Vz IHRoZSBzZXJ2ZXIgdG8gc3RhcnQuCkFuIGFzc29jaWF0aW9uIGxpc3Qgb2YgKE1BSk9SLU1PREUg LiBDT05UQUNUKSBwYWlycy4gIE1BSk9SLU1PREUKaWRlbnRpZmllcyB0aGUgYnVmZmVycyB0aGF0 IGFyZSB0byBiZSBtYW5hZ2VkIGJ5IGEgc3BlY2lmaWMKbGFuZ3VhZ2Ugc2VydmVyLiAgVGhlIGFz c29jaWF0ZWQgQ09OVEFDVCBzcGVjaWZpZXMgaG93IHRvIGNvbm5lY3QKdG8gYSBzZXJ2ZXIgZm9y IHRob3NlIGJ1ZmZlcnMuCgpNQUpPUi1NT0RFIGNhbiBiZToKCiogSW4gdGhlIG1vc3QgY29tbW9u IGNhc2UsIGEgc3ltYm9sIHN1Y2ggYXMgYGMtbW9kZSc7CgoqIEEgbGlzdCAoTUFKT1ItTU9ERS1T WU1CT0wgOkxBTkdVQUdFLUlEIElEKSB3aGVyZQogIE1BSk9SLU1PREUtU1lNQk9MIGlzIHRoZSBh Zm9yZW1lbnRpb25lZCBzeW1ib2wgYW5kIElEIGlzIGEKICBzdHJpbmcgaWRlbnRpZnlpbmcgdGhl IGxhbmd1YWdlIHRvIHRoZSBzZXJ2ZXI7CgoqIEEgbGlzdCBjb21iaW5pbmcgdGhlIHByZXZpb3Vz IHR3byBhbHRlcm5hdGl2ZXMsIG1lYW5pbmcKICBtdWx0aXBsZSBtYWpvciBtb2RlcyB3aWxsIGJl IGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBzZXJ2ZXIKICBwcm9ncmFtLiAgVGhpcyBhc3NvY2lh dGlvbiBpcyBzdWNoIHRoYXQgdGhlIHNhbWUgcmVzdWx0aW5nCiAgc2VydmVyIHByb2Nlc3Mgd2ls bCBtYW5hZ2UgYnVmZmVycyBvZiBkaWZmZXJlbnQgbWFqb3IgbW9kZXMuCgpDT05UQUNUIGNhbiBi ZToKCiogSW4gdGhlIG1vc3QgY29tbW9uIGNhc2UsIGEgbGlzdCBvZiBzdHJpbmdzIChQUk9HUkFN IFtBUkdTLi4uXSkuCiAgUFJPR1JBTSBpcyBjYWxsZWQgd2l0aCBBUkdTIGFuZCBpcyBleHBlY3Rl ZCB0byBzZXJ2ZSBMU1AgcmVxdWVzdHMKICBvdmVyIHRoZSBzdGFuZGFyZCBpbnB1dC9vdXRwdXQg Y2hhbm5lbHMuCgoqIEEgbGlzdCAoUFJPR1JBTSBbQVJHUy4uLl0gOmluaXRpYWxpemF0aW9uT3B0 aW9ucyBPUFRJT05TKSwKICB3aGVyZXVwb24gUFJPR1JBTSBpcyBjYWxsZWQgd2l0aCBBUkdTIGFz IGluIHRoZSBmaXJzdCBvcHRpb24sCiAgYW5kIHRoZSBMU1AgXCJpbml0aWFsaXphdGlvbk9wdGlv bnNcIiBKU09OIG9iamVjdCBpcwogIGNvbnN0cnVjdGVkIGZyb20gT1BUSU9OUy4gIElmIE9QVElP TlMgaXMgYSB1bmFyeSBmdW5jdGlvbiwgaXQKICBpcyBjYWxsZWQgd2l0aCB0aGUgc2VydmVyIGlu c3RhbmNlIGFuZCBzaG91bGQgcmV0dXJuIGEgSlNPTgogIG9iamVjdC4KCiogQSBsaXN0IChIT1NU IFBPUlQgW1RDUC1BUkdTLi4uXSkgd2hlcmUgSE9TVCBpcyBhIHN0cmluZyBhbmQKICBQT1JUIGlz IGEgcG9zaXRpdmUgaW50ZWdlciBmb3IgY29ubmVjdGluZyB0byBhIHNlcnZlciB2aWEgVENQLgog IFJlbWFpbmluZyBBUkdTIGFyZSBwYXNzZWQgdG8gYG9wZW4tbmV0d29yay1zdHJlYW0nIGZvcgog IHVwZ3JhZGluZyB0aGUgY29ubmVjdGlvbiB3aXRoIGVuY3J5cHRpb24gb3Igb3RoZXIgY2FwYWJp bGl0aWVzLgoKKiBBIGxpc3QgKFBST0dSQU0gW0FSR1MuLi5dIDphdXRvcG9ydCBbTU9SRUFSR1Mu Li5dKSwgd2hlcmV1cG9uIGEKICBjb21iaW5hdGlvbiBvZiBwcmV2aW91cyBvcHRpb25zIGlzIHVz ZWQuICBGaXJzdCwgYW4gYXR0ZW1wdCBpcwogIG1hZGUgdG8gZmluZCBhbiBhdmFpbGFibGUgc2Vy dmVyIHBvcnQsIHRoZW4gUFJPR1JBTSBpcyBsYXVuY2hlZAogIHdpdGggQVJHUzsgdGhlIGA6YXV0 b3BvcnQnIGtleXdvcmQgc3Vic3RpdHV0ZWQgZm9yIHRoYXQgbnVtYmVyOwogIGFuZCBNT1JFQVJH Uy4gIEVnbG90IHRoZW4gYXR0ZW1wdHMgdG8gZXN0YWJsaXNoIGEgVENQCiAgY29ubmVjdGlvbiB0 byB0aGF0IHBvcnQgbnVtYmVyIG9uIHRoZSBsb2NhbGhvc3QuCgoqIEEgY29ucyAoQ0xBU1MtTkFN RSAuIElOSVRBUkdTKSB3aGVyZSBDTEFTUy1OQU1FIGlzIGEgc3ltYm9sCiAgZGVzaWduYXRpbmcg YSBzdWJjbGFzcyBvZiBgZWdsb3QtbHNwLXNlcnZlcicsIGZvciByZXByZXNlbnRpbmcKICBleHBl cmltZW50YWwgTFNQIHNlcnZlcnMuICBJTklUQVJHUyBpcyBhIGtleXdvcmQtdmFsdWUgcGxpc3QK ICB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG9iamVjdCBvZiBDTEFTUy1OQU1FLCBvciBhIHBsYWlu IGxpc3QKICBpbnRlcnByZXRlZCBhcyB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb25zIG9mIENPTlRB Q1QuICBJbiB0aGUKICBsYXR0ZXIgY2FzZSB0aGF0IHBsYWluIGxpc3QgaXMgdXNlZCB0byBwcm9k dWNlIGEgcGxpc3Qgd2l0aCBhCiAgc3VpdGFibGUgOlBST0NFU1MgaW5pdGFyZyB0byBDTEFTUy1O QU1FLiAgVGhlIGNsYXNzCiAgYGVnbG90LWxzcC1zZXJ2ZXInIGRlc2NlbmRzIGZyb20gYGpzb25y cGMtcHJvY2Vzcy1jb25uZWN0aW9uJywKICB3aGljaCB5b3Ugc2hvdWxkIHNlZSBmb3IgdGhlIHNl bWFudGljcyBvZiB0aGUgbWFuZGF0b3J5CiAgOlBST0NFU1MgYXJndW1lbnQuCgoqIEEgZnVuY3Rp b24gb2YgdHdvIGFyZ3VtZW50cyAoSU5URVJBQ1RJVkUgUFJPSkVDVCkgcHJvZHVjaW5nIGFueQog IG9mIHRoZSBhYm92ZSB2YWx1ZXMgZm9yIENPTlRBQ1QuICBJTlRFUkFDVElWRSB3aWxsIGJlIHQg aWYgYW4KICBpbnRlcmFjdGl2ZSBgTS14IGVnbG90JyB3YXMgdXNlZCwgYW5kIG5pbCBvdGhlcndp c2UgKGUuZy4gZnJvbQogIGBlZ2xvdC1lbnN1cmUnKS4gIEludGVyYWN0aXZlIGNhbGxzIG1heSBh c2sgdGhlIHVzZXIgZm9yIGhpbnRzCiAgb24gZmluZGluZyB0aGUgcmVxdWlyZWQgcHJvZ3JhbXMs IGV0Yy4gIFBST0pFQ1QgaXMgd2hhdGV2ZXIKICBwcm9qZWN0IEVnbG90IGRpc2NvdmVyZWQgdmlh IGBwcm9qZWN0LWZpbmQtZnVuY3Rpb25zJyAod2hpY2gKICBzZWUpLiAgVGhlIGZ1bmN0aW9uIHNo b3VsZCByZXR1cm4gbmlsIG9yIHNpZ25hbCBhbiBlcnJvciBpZiBpdAogIGNhbid0IHByb2R1Y2Ug YSB2YWxpZCBDT05UQUNULiAgVGhlIGhlbHBlciBmdW5jdGlvbgogIGBlZ2xvdC1hbHRlcm5hdGl2 ZXMnICh3aGljaCBzZWUpIGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgYQogIGZ1bmN0aW9uIHRoYXQg b2ZmZXJzIG1vcmUgdGhhbiBvbmUgc2VydmVyIGZvciBhIGdpdmVuCiAgTUFKT1ItTU9ERS4iKQoK KGRlZmZhY2UgZWdsb3QtaGlnaGxpZ2h0LXN5bWJvbC1mYWNlCiAgJygodCAoOmluaGVyaXQgYm9s ZCkpKQogICJGYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBzeW1ib2wgYXQgcG9pbnQuIikKCihk ZWZmYWNlIGVnbG90LW1vZGUtbGluZQogICcoKHQgKDppbmhlcml0IGZvbnQtbG9jay1jb25zdGFu dC1mYWNlIDp3ZWlnaHQgYm9sZCkpKQogICJGYWNlIGZvciBwYWNrYWdlLW5hbWUgaW4gRWdsb3Qn cyBtb2RlIGxpbmUuIikKCihkZWZmYWNlIGVnbG90LWRpYWdub3N0aWMtdGFnLXVubmVjZXNzYXJ5 LWZhY2UKICAnKCh0ICg6aW5oZXJpdCBzaGFkb3cpKSkKICAiRmFjZSB1c2VkIHRvIHJlbmRlciB1 bnVzZWQgb3IgdW5uZWNlc3NhcnkgY29kZS4iKQoKKGRlZmZhY2UgZWdsb3QtZGlhZ25vc3RpYy10 YWctZGVwcmVjYXRlZC1mYWNlCiAgJygodCAuICg6aW5oZXJpdCBzaGFkb3cgOnN0cmlrZS10aHJv dWdoIHQpKSkKICAiRmFjZSB1c2VkIHRvIHJlbmRlciBkZXByZWNhdGVkIG9yIG9ic29sZXRlIGNv ZGUuIikKCihkZWZjdXN0b20gZWdsb3QtYXV0b3JlY29ubmVjdCAzCiAgIkNvbnRyb2wgYWJpbGl0 eSB0byByZWNvbm5lY3QgYXV0b21hdGljYWxseSB0byB0aGUgTFNQIHNlcnZlci4KSWYgdCwgYWx3 YXlzIHJlY29ubmVjdCBhdXRvbWF0aWNhbGx5IChub3QgcmVjb21tZW5kZWQpLiAgSWYgbmlsLApu ZXZlciByZWNvbm5lY3QgYXV0b21hdGljYWxseSBhZnRlciB1bmV4cGVjdGVkIHNlcnZlciBzaHV0 ZG93bnMsCmNyYXNoZXMgb3IgbmV0d29yayBmYWlsdXJlcy4gIEEgcG9zaXRpdmUgaW50ZWdlciBu dW1iZXIgc2F5cyB0bwpvbmx5IGF1dG9yZWNvbm5lY3QgaWYgdGhlIHByZXZpb3VzIHN1Y2Nlc3Nm dWwgY29ubmVjdGlvbiBhdHRlbXB0Cmxhc3RlZCBtb3JlIHRoYW4gdGhhdCBtYW55IHNlY29uZHMu IgogIDp0eXBlICcoY2hvaWNlIChjb25zdCA6dGFnICJSZWNvbm5lY3QgYXV0b21hdGljYWxseSIg dCkKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiTmV2ZXIgcmVjb25uZWN0IiBuaWwpCiAg ICAgICAgICAgICAgICAgKGludGVnZXIgOnRhZyAiTnVtYmVyIG9mIHNlY29uZHMiKSkpCgooZGVm Y3VzdG9tIGVnbG90LWNvbm5lY3QtdGltZW91dCAzMAogICJOdW1iZXIgb2Ygc2Vjb25kcyBiZWZv cmUgdGltaW5nIG91dCBMU1AgY29ubmVjdGlvbiBhdHRlbXB0cy4KSWYgbmlsLCBuZXZlciB0aW1l IG91dC4iCiAgOnR5cGUgJyhjaG9pY2UgKG51bWJlciA6dGFnICJOdW1iZXIgb2Ygc2Vjb25kcyIp CiAgICAgICAgICAgICAgICAgKGNvbnN0ICA6dGFnICJOZXZlciB0aW1lIG91dCIgbmlsKSkpCgoo ZGVmY3VzdG9tIGVnbG90LXN5bmMtY29ubmVjdCAzCiAgIkNvbnRyb2wgYmxvY2tpbmcgb2YgTFNQ IGNvbm5lY3Rpb24gYXR0ZW1wdHMuCklmIHQsIGJsb2NrIGZvciBgZWdsb3QtY29ubmVjdC10aW1l b3V0JyBzZWNvbmRzLiAgQSBwb3NpdGl2ZQppbnRlZ2VyIG51bWJlciBtZWFucyBibG9jayBmb3Ig dGhhdCBtYW55IHNlY29uZHMsIGFuZCB0aGVuIHdhaXQKZm9yIHRoZSBjb25uZWN0aW9uIGluIHRo ZSBiYWNrZ3JvdW5kLiAgbmlsIGhhcyB0aGUgc2FtZSBtZWFuaW5nCmFzIDAsIGkuZS4gZG9uJ3Qg YmxvY2sgYXQgYWxsLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAiQmxvY2sgZm9yIGBl Z2xvdC1jb25uZWN0LXRpbWVvdXQnIHNlY29uZHMiIHQpCiAgICAgICAgICAgICAgICAgKGNvbnN0 IDp0YWcgIk5ldmVyIGJsb2NrIiBuaWwpCiAgICAgICAgICAgICAgICAgKGludGVnZXIgOnRhZyAi TnVtYmVyIG9mIHNlY29uZHMgdG8gYmxvY2siKSkpCgooZGVmY3VzdG9tIGVnbG90LWF1dG9zaHV0 ZG93biBuaWwKICAiSWYgbm9uLW5pbCwgc2h1dCBkb3duIHNlcnZlciBhZnRlciBraWxsaW5nIGxh c3QgbWFuYWdlZCBidWZmZXIuIgogIDp0eXBlICdib29sZWFuKQoKKGRlZmN1c3RvbSBlZ2xvdC1z ZW5kLWNoYW5nZXMtaWRsZS10aW1lIDAuNQogICJEb24ndCB0ZWxsIHNlcnZlciBvZiBjaGFuZ2Vz IGJlZm9yZSBFbWFjcydzIGJlZW4gaWRsZSBmb3IgdGhpcyBtYW55IHNlY29uZHMuIgogIDp0eXBl ICdudW1iZXIpCgooZGVmY3VzdG9tIGVnbG90LWV2ZW50cy1idWZmZXItY29uZmlnCiAgKGxpc3Qg OnNpemUgKG9yIChib3VuZC1hbmQtdHJ1ZS1wIGVnbG90LWV2ZW50cy1idWZmZXItc2l6ZSkgMjAw MDAwMCkKICAgICAgICA6Zm9ybWF0ICdmdWxsKQogICJDb25maWd1cmUgdGhlIEVnbG90IGV2ZW50 cyBidWZmZXIuCgpWYWx1ZSBpcyBhIHBsaXN0IGFjY2VwdGluZyB0aGUga2V5cyBgOnNpemUnLCB3 aGljaCBjb250cm9scyB0aGUKc2l6ZSBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBidWZmZXIgKDAgZGlz YWJsZXMsIG5pbCBtZWFucwppbmZpbml0ZSksIGFuZCBgOmZvcm1hdCcsIHdoaWNoIGNvbnRyb2xz IHRoZSBzaGFwZSBvZiBlYWNoIGxvZwplbnRyeSAoYGZ1bGwnIGluY2x1ZGVzIHRoZSBvcmlnaW5h bCBKU09OLCBgbGlzcCcgdXNlcwpwcmV0dHktcHJpbnRlZCBMaXNwKS4KCkZvciBjaGFuZ2VzIG9u IHRoaXMgdmFyaWFibGUgdG8gdGFrZSBlZmZlY3QsIHlvdSBuZWVkIHRvIHJlc3RhcnQKdGhlIExT UCBjb25uZWN0aW9uLiAgVGhhdCBjYW4gYmUgZG9uZSBieSBgZWdsb3QtcmVjb25uZWN0Jy4iCiAg OnR5cGUgJyhwbGlzdCA6a2V5LXR5cGUgKHN5bWJvbCA6dGFnICJLZXl3b3JkIikKICAgICAgICAg ICAgICAgIDpvcHRpb25zICgoKGNvbnN0IDp0YWcgIlNpemUiIDpzaXplKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoY2hvaWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qg OnRhZyAiTm8gbGltaXQiIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlZ2Vy IDp0YWcgIk51bWJlciBvZiBjaGFyYWN0ZXJzIikpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICgoY29uc3QgOnRhZyAiRm9ybWF0IiA6Zm9ybWF0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAoY2hvaWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiRnVsbCB3 aXRoIG9yaWdpbmFsIEpTT04iIGZ1bGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiU2hvcnRlbmVkIiBzaG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25zdCA6dGFnICJQcmV0dHktcHJpbnRlZCBsaXNwIiBsaXNwKSkpKSkpCgooZGVmY3VzdG9tIGVn bG90LWNvbmZpcm0tc2VydmVyLWVkaXRzICcoKGVnbG90LXJlbmFtZSAuIG5pbCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0IC4gbWF5YmUtc3VtbWFyeSkpCiAgIkNv bnRyb2wgaWYgY2hhbmdlcyBwcm9wb3NlZCBieSBMU1Agc2hvdWxkIGJlIGNvbmZpcm1lZCB3aXRo IHVzZXIuCgpJZiB0aGlzIHZhcmlhYmxlJ3MgdmFsdWUgaXMgdGhlIHN5bWJvbCBgZGlmZicsIGEg ZGlmZiBidWZmZXIgaXMKcG9wcyB1cCwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gYXBwbHkgZWFjaCBj aGFuZ2UgaW5kaXZpZHVhbGx5LiAgSWYKdGhlIHN5bWJvbCBgc3VtbWFyeScgb3IgYW55IG90aGVy IG5vbi1uaWwgdmFsdWUsIHRoZSB1c2VyIGlzCnByb21wdGVkIGluIHRoZSBtaW5pYnVmZmVyIHdp dGggYWEgc2hvcnQgc3VtbWFyeSBvZiBjaGFuZ2VzLiAgVGhlCnN5bWJvbHMgYG1heWJlLWRpZmYn IGFuZCBgbWF5YmUtc3VtbWFyeScgbWVhbiB0aGF0IHRoZQpjb25maXJtYXRpb24gaXMgb2ZmZXJl ZCB0byB0aGUgdXNlciBvbmx5IGlmIHRoZSBjaGFuZ2VzIHRhcmdldApmaWxlcyB2aXNpdGVkIGlu IGJ1ZmZlcnMuICBGaW5hbGx5LCBhIG5pbCB2YWx1ZSBtZWFucyBhbGwgY2hhbmdlcwphcmUgYXBw bGllZCBkaXJlY3RseSB3aXRob3V0IGFueSBjb25maXJtYXRpb24uCgpJZiB0aGlzIHZhcmlhYmxl J3MgdmFsdWUgY2FuIGFsc28gYmUgYW4gYWxpc3QgKChDT01NQU5EIC4gQUNUSU9OKQouLi4pIHdo ZXJlIENPTU1BTkQgaXMgYSBzeW1ib2wgZGVzaWduYXRpbmcgYSBjb21tYW5kLCBzdWNoIGFzCmBl Z2xvdC1yZW5hbWUnLCBgZWdsb3QtY29kZS1hY3Rpb25zJywKYGVnbG90LWNvZGUtYWN0aW9uLXF1 aWNrZml4JywgZXRjLiAgQUNUSU9OIGlzIG9uZSBvZiB0aGUgc3ltYm9scwpkZXNjcmliZWQgYWJv dmUuICBUaGUgdmFsdWUgYHQnIGZvciBDT01NQU5EIGlzIGFjY2VwdGVkIGFuZCBpdHMKQUNUSU9O IGlzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBjb21tYW5kcyBub3QgaW4gdGhlIGFsaXN0LiIKICA6 dHlwZSAobGV0ICgoYmFzaWMtY2hvaWNlcwogICAgICAgICAgICAgICAnKChjb25zdCA6dGFnICJV c2UgZGlmZiIgZGlmZikKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiU3VtbWFyaXplIGFu ZCBwcm9tcHQiIHN1bW1hcnkpCiAgICAgICAgICAgICAgICAgKGNvbnN0IDp0YWcgIk1heWJlIHVz ZSBkaWZmIiBtYXliZS1kaWZmKQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJNYXliZSBz dW1tYXJpemUgYW5kIHByb21wdCIgbWF5YmUtc3VtbWFyeSkKICAgICAgICAgICAgICAgICAoY29u c3QgOnRhZyAiRG9uJ3QgY29uZmlybSIgbmlsKSkpKQogICAgICAgICAgYChjaG9pY2UgLEBiYXNp Yy1jaG9pY2VzCiAgICAgICAgICAgICAgICAgICAoYWxpc3QgOnRhZyAiUGVyLWNvbW1hbmQgYWxp c3QiCiAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleS10eXBlIChjaG9pY2UgKGZ1bmN0aW9u IDp0YWcgIkNvbW1hbmQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEZWZhdWx0IiB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICA6 dmFsdWUtdHlwZSAoY2hvaWNlIC4gLGJhc2ljLWNob2ljZXMpKSkpKQoKKGRlZmN1c3RvbSBlZ2xv dC1leHRlbmQtdG8teHJlZiBuaWwKICAiSWYgbm9uLW5pbCwgYWN0aXZhdGUgRWdsb3QgaW4gY3Jv c3MtcmVmZXJlbmNlZCBub24tcHJvamVjdCBmaWxlcy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgooZGVm Y3VzdG9tIGVnbG90LXByZWZlci1wbGFpbnRleHQgbmlsCiAgIklmIG5vbi1uaWwsIGFsd2F5cyBy ZXF1ZXN0IHBsYWludGV4dCByZXNwb25zZXMgdG8gaG92ZXIgcmVxdWVzdHMuIgogIDp0eXBlICdi b29sZWFuKQoKKGRlZmN1c3RvbSBlZ2xvdC1tZW51LXN0cmluZyAiZWdsb3QiCiAgIlN0cmluZyBk aXNwbGF5ZWQgaW4gbW9kZSBsaW5lIHdoZW4gRWdsb3QgaXMgYWN0aXZlLiIKICA6dHlwZSAnc3Ry aW5nKQoKKGRlZmN1c3RvbSBlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3MgdAogICJJZiBub24tbmlsLCBz aG93IHByb2dyZXNzIG9mIGxvbmcgcnVubmluZyBMU1Agc2VydmVyIHdvcmsuCklmIHNldCB0byBg bWVzc2FnZXMnLCB1c2UgKk1lc3NhZ2VzKiBidWZmZXIsIGVsc2UgdXNlIEVnbG90J3MKbW9kZSBs aW5lIGluZGljYXRvci4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIkRvbid0IHNob3cg cHJvZ3Jlc3MiIG5pbCkKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAiU2hvdyBwcm9ncmVz cyBpbiAqTWVzc2FnZXMqIiBtZXNzYWdlcykKICAgICAgICAgICAgICAgICAoY29uc3QgOnRhZyAi U2hvdyBwcm9ncmVzcyBpbiBFZ2xvdCdzIG1vZGUgbGluZSBpbmRpY2F0b3IiIHQpKQogIDp2ZXJz aW9uICIxLjEwIikKCihkZWZjdXN0b20gZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0aWVz IChsaXN0KQogICJMU1Agc2VydmVyIGNhcGFiaWxpdGllcyB0aGF0IEVnbG90IGNvdWxkIHVzZSwg YnV0IHdvbid0LgpZb3UgY291bGQgYWRkLCBmb3IgaW5zdGFuY2UsIHRoZSBzeW1ib2wKYDpkb2N1 bWVudEhpZ2hsaWdodFByb3ZpZGVyJyB0byBwcmV2ZW50IGF1dG9tYXRpYyBoaWdobGlnaHRpbmcK dW5kZXIgY3Vyc29yLiIKICA6dHlwZSAnKHNldAogICAgICAgICAgOnRhZyAiVGljayB0aGUgb25l cyB5b3UncmUgbm90IGludGVyZXN0ZWQgaW4iCiAgICAgICAgICAoY29uc3QgOnRhZyAiRG9jdW1l bnRhdGlvbiBvbiBob3ZlciIgOmhvdmVyUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAi Q29kZSBjb21wbGV0aW9uIiA6Y29tcGxldGlvblByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0 YWcgIkZ1bmN0aW9uIHNpZ25hdHVyZSBoZWxwIiA6c2lnbmF0dXJlSGVscFByb3ZpZGVyKQogICAg ICAgICAgKGNvbnN0IDp0YWcgIkdvIHRvIGRlZmluaXRpb24iIDpkZWZpbml0aW9uUHJvdmlkZXIp CiAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8gdHlwZSBkZWZpbml0aW9uIiA6dHlwZURlZmlu aXRpb25Qcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJHbyB0byBpbXBsZW1lbnRhdGlv biIgOmltcGxlbWVudGF0aW9uUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiR28gdG8g ZGVjbGFyYXRpb24iIDpkZWNsYXJhdGlvblByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0YWcg IkZpbmQgcmVmZXJlbmNlcyIgOnJlZmVyZW5jZXNQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6 dGFnICJIaWdobGlnaHQgc3ltYm9scyBhdXRvbWF0aWNhbGx5IiA6ZG9jdW1lbnRIaWdobGlnaHRQ cm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJMaXN0IHN5bWJvbHMgaW4gYnVmZmVyIiA6 ZG9jdW1lbnRTeW1ib2xQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJMaXN0IHN5bWJv bHMgaW4gd29ya3NwYWNlIiA6d29ya3NwYWNlU3ltYm9sUHJvdmlkZXIpCiAgICAgICAgICAoY29u c3QgOnRhZyAiRXhlY3V0ZSBjb2RlIGFjdGlvbnMiIDpjb2RlQWN0aW9uUHJvdmlkZXIpCiAgICAg ICAgICAoY29uc3QgOnRhZyAiQ29kZSBsZW5zIiA6Y29kZUxlbnNQcm92aWRlcikKICAgICAgICAg IChjb25zdCA6dGFnICJGb3JtYXQgYnVmZmVyIiA6ZG9jdW1lbnRGb3JtYXR0aW5nUHJvdmlkZXIp CiAgICAgICAgICAoY29uc3QgOnRhZyAiRm9ybWF0IHBvcnRpb24gb2YgYnVmZmVyIiA6ZG9jdW1l bnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcikKICAgICAgICAgIChjb25zdCA6dGFnICJPbi10eXBl IGZvcm1hdHRpbmciIDpkb2N1bWVudE9uVHlwZUZvcm1hdHRpbmdQcm92aWRlcikKICAgICAgICAg IChjb25zdCA6dGFnICJSZW5hbWUgc3ltYm9sIiA6cmVuYW1lUHJvdmlkZXIpCiAgICAgICAgICAo Y29uc3QgOnRhZyAiSGlnaGxpZ2h0IGxpbmtzIGluIGRvY3VtZW50IiA6ZG9jdW1lbnRMaW5rUHJv dmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiRGVjb3JhdGUgY29sb3IgcmVmZXJlbmNlcyIg OmNvbG9yUHJvdmlkZXIpCiAgICAgICAgICAoY29uc3QgOnRhZyAiRm9sZCByZWdpb25zIG9mIGJ1 ZmZlciIgOmZvbGRpbmdSYW5nZVByb3ZpZGVyKQogICAgICAgICAgKGNvbnN0IDp0YWcgIkV4ZWN1 dGUgY3VzdG9tIGNvbW1hbmRzIiA6ZXhlY3V0ZUNvbW1hbmRQcm92aWRlcikKICAgICAgICAgIChj b25zdCA6dGFnICJJbmxheSBoaW50cyIgOmlubGF5SGludFByb3ZpZGVyKSkpCgooZGVmdmFyIGVn bG90LXdpdGhob2xkLXByb2Nlc3MtaWQgbmlsCiAgIklmIG5vbi1uaWwsIEVnbG90IHdpbGwgbm90 IHNlbmQgdGhlIEVtYWNzIHByb2Nlc3MgaWQgdG8gdGhlIGxhbmd1YWdlIHNlcnZlci4KVGhpcyBj YW4gYmUgdXNlZnVsIHdoZW4gdXNpbmcgZG9ja2VyIHRvIHJ1biBhIGxhbmd1YWdlIHNlcnZlci4i KQoKDAo7OzsgQ29uc3RhbnRzCjs7OwooZGVmY29uc3QgZWdsb3QtLXZlcnNpb24KICAoZXZhbC13 aGVuLWNvbXBpbGUKICAgICh3aGVuIGJ5dGUtY29tcGlsZS1jdXJyZW50LWZpbGUKICAgICAgKHJl cXVpcmUgJ2xpc3AtbW50KQogICAgICAobG0tdmVyc2lvbiBieXRlLWNvbXBpbGUtY3VycmVudC1m aWxlKSkpCiAgIlRoZSB2ZXJzaW9uIGFzIGEgc3RyaW5nIG9mIHRoaXMgdmVyc2lvbiBvZiBFZ2xv dC4KSXQgaXMgbmlsIGlmIEVnbG90IGlzIG5vdCBieXRlLWNvbXBsaWVkLiIpCgooZGVmY29uc3Qg ZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzCiAgYCgoMSAuICJGaWxlIikgKDIgLiAiTW9kdWxlIikK ICAgICgzIC4gIk5hbWVzcGFjZSIpICg0IC4gIlBhY2thZ2UiKSAoNSAuICJDbGFzcyIpCiAgICAo NiAuICJNZXRob2QiKSAoNyAuICJQcm9wZXJ0eSIpICg4IC4gIkZpZWxkIikKICAgICg5IC4gIkNv bnN0cnVjdG9yIikgKDEwIC4gIkVudW0iKSAoMTEgLiAiSW50ZXJmYWNlIikKICAgICgxMiAuICJG dW5jdGlvbiIpICgxMyAuICJWYXJpYWJsZSIpICgxNCAuICJDb25zdGFudCIpCiAgICAoMTUgLiAi U3RyaW5nIikgKDE2IC4gIk51bWJlciIpICgxNyAuICJCb29sZWFuIikKICAgICgxOCAuICJBcnJh eSIpICgxOSAuICJPYmplY3QiKSAoMjAgLiAiS2V5IikKICAgICgyMSAuICJOdWxsIikgKDIyIC4g IkVudW1NZW1iZXIiKSAoMjMgLiAiU3RydWN0IikKICAgICgyNCAuICJFdmVudCIpICgyNSAuICJP cGVyYXRvciIpICgyNiAuICJUeXBlUGFyYW1ldGVyIikpKQoKKGRlZmNvbnN0IGVnbG90LS1raW5k LW5hbWVzCiAgYCgoMSAuICJUZXh0IikgKDIgLiAiTWV0aG9kIikgKDMgLiAiRnVuY3Rpb24iKSAo NCAuICJDb25zdHJ1Y3RvciIpCiAgICAoNSAuICJGaWVsZCIpICg2IC4gIlZhcmlhYmxlIikgKDcg LiAiQ2xhc3MiKSAoOCAuICJJbnRlcmZhY2UiKQogICAgKDkgLiAiTW9kdWxlIikgKDEwIC4gIlBy b3BlcnR5IikgKDExIC4gIlVuaXQiKSAoMTIgLiAiVmFsdWUiKQogICAgKDEzIC4gIkVudW0iKSAo MTQgLiAiS2V5d29yZCIpICgxNSAuICJTbmlwcGV0IikgKDE2IC4gIkNvbG9yIikKICAgICgxNyAu ICJGaWxlIikgKDE4IC4gIlJlZmVyZW5jZSIpICgxOSAuICJGb2xkZXIiKSAoMjAgLiAiRW51bU1l bWJlciIpCiAgICAoMjEgLiAiQ29uc3RhbnQiKSAoMjIgLiAiU3RydWN0IikgKDIzIC4gIkV2ZW50 IikgKDI0IC4gIk9wZXJhdG9yIikKICAgICgyNSAuICJUeXBlUGFyYW1ldGVyIikpKQoKKGRlZmNv bnN0IGVnbG90LS10YWctZmFjZXMKICBgKCgxIC4gZWdsb3QtZGlhZ25vc3RpYy10YWctdW5uZWNl c3NhcnktZmFjZSkKICAgICgyIC4gZWdsb3QtZGlhZ25vc3RpYy10YWctZGVwcmVjYXRlZC1mYWNl KSkpCgooZGVmdmFyYWxpYXMgJ2VnbG90LXt9ICdlZ2xvdC0te30pCgooZGVmY29uc3QgZWdsb3Qt LXt9IChtYWtlLWhhc2gtdGFibGUgOnNpemUgMCkgIlRoZSBlbXB0eSBKU09OIG9iamVjdC4iKQoK KGRlZnVuIGVnbG90LS1leGVjdXRhYmxlLWZpbmQgKGNvbW1hbmQgJm9wdGlvbmFsIHJlbW90ZSkK ICAiTGlrZSBFbWFjcyAyNydzIGBleGVjdXRhYmxlLWZpbmQnLCBpZ25vcmUgUkVNT1RFIG9uIEVt YWNzIDI2LiIKICAoaWYgKD49IGVtYWNzLW1ham9yLXZlcnNpb24gMjcpIChleGVjdXRhYmxlLWZp bmQgY29tbWFuZCByZW1vdGUpCiAgICAoZXhlY3V0YWJsZS1maW5kIGNvbW1hbmQpKSkKCihkZWZ1 biBlZ2xvdC0tYWNjZXB0ZWQtZm9ybWF0cyAoKQogIChpZiAoYW5kIChub3QgZWdsb3QtcHJlZmVy LXBsYWludGV4dCkgKGZib3VuZHAgJ2dmbS12aWV3LW1vZGUpKQogICAgICBbIm1hcmtkb3duIiAi cGxhaW50ZXh0Il0gWyJwbGFpbnRleHQiXSkpCgooZGVmY29uc3QgZWdsb3QtLXVyaS1wYXRoLWFs bG93ZWQtY2hhcnMKICAobGV0ICgodmVjIChjb3B5LXNlcXVlbmNlIHVybC1wYXRoLWFsbG93ZWQt Y2hhcnMpKSkKICAgIChhc2V0IHZlYyA/OiBuaWwpIDs7IHNlZSBnaXRodWIjNjM5CiAgICB2ZWMp CiAgIkxpa2UgYHVybC1wYXRoLWFsbG93cy1jaGFycycgYnV0IG1vcmUgcmVzdHJpY3RpdmUuIikK CgwKOzs7IE1lc3NhZ2UgdmVyaWZpY2F0aW9uIGhlbHBlcnMKOzs7CihldmFsLWFuZC1jb21waWxl CiAgKGRlZnZhciBlZ2xvdC0tbHNwLWludGVyZmFjZS1hbGlzdAogICAgYCgKICAgICAgKENvZGVB Y3Rpb24gKDp0aXRsZSkgKDpraW5kIDpkaWFnbm9zdGljcyA6ZWRpdCA6Y29tbWFuZCA6aXNQcmVm ZXJyZWQgOmRhdGEpKQogICAgICAoQ29uZmlndXJhdGlvbkl0ZW0gKCkgKDpzY29wZVVyaSA6c2Vj dGlvbikpCiAgICAgIChDb21tYW5kICgoOnRpdGxlIC4gc3RyaW5nKSAoOmNvbW1hbmQgLiBzdHJp bmcpKSAoOmFyZ3VtZW50cykpCiAgICAgIChDb21wbGV0aW9uSXRlbSAoOmxhYmVsKQogICAgICAg ICAgICAgICAgICAgICAgKDpraW5kIDpkZXRhaWwgOmRvY3VtZW50YXRpb24gOmRlcHJlY2F0ZWQg OnByZXNlbGVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzb3J0VGV4dCA6ZmlsdGVy VGV4dCA6aW5zZXJ0VGV4dCA6aW5zZXJ0VGV4dEZvcm1hdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDp0ZXh0RWRpdCA6YWRkaXRpb25hbFRleHRFZGl0cyA6Y29tbWl0Q2hhcmFjdGVycwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb21tYW5kIDpkYXRhIDp0YWdzKSkKICAgICAg KERpYWdub3N0aWMgKDpyYW5nZSA6bWVzc2FnZSkgKDpzZXZlcml0eSA6Y29kZSA6c291cmNlIDpy ZWxhdGVkSW5mb3JtYXRpb24gOmNvZGVEZXNjcmlwdGlvbiA6dGFncykpCiAgICAgIChEb2N1bWVu dEhpZ2hsaWdodCAoOnJhbmdlKSAoOmtpbmQpKQogICAgICAoRmlsZVN5c3RlbVdhdGNoZXIgKDpn bG9iUGF0dGVybikgKDpraW5kKSkKICAgICAgKEhvdmVyICg6Y29udGVudHMpICg6cmFuZ2UpKQog ICAgICAoSW5pdGlhbGl6ZVJlc3VsdCAoOmNhcGFiaWxpdGllcykgKDpzZXJ2ZXJJbmZvKSkKICAg ICAgKExvY2F0aW9uICg6dXJpIDpyYW5nZSkpCiAgICAgIChMb2NhdGlvbkxpbmsgKDp0YXJnZXRV cmkgOnRhcmdldFJhbmdlIDp0YXJnZXRTZWxlY3Rpb25SYW5nZSkgKDpvcmlnaW5TZWxlY3Rpb25S YW5nZSkpCiAgICAgIChMb2dNZXNzYWdlUGFyYW1zICg6dHlwZSA6bWVzc2FnZSkpCiAgICAgIChN YXJrdXBDb250ZW50ICg6a2luZCA6dmFsdWUpKQogICAgICAoUGFyYW1ldGVySW5mb3JtYXRpb24g KDpsYWJlbCkgKDpkb2N1bWVudGF0aW9uKSkKICAgICAgKFBvc2l0aW9uICg6bGluZSA6Y2hhcmFj dGVyKSkKICAgICAgKFJhbmdlICg6c3RhcnQgOmVuZCkpCiAgICAgIChSZWdpc3RyYXRpb24gKDpp ZCA6bWV0aG9kKSAoOnJlZ2lzdGVyT3B0aW9ucykpCiAgICAgIChSZXNwb25zZUVycm9yICg6Y29k ZSA6bWVzc2FnZSkgKDpkYXRhKSkKICAgICAgKFNob3dNZXNzYWdlUGFyYW1zICg6dHlwZSA6bWVz c2FnZSkpCiAgICAgIChTaG93TWVzc2FnZVJlcXVlc3RQYXJhbXMgKDp0eXBlIDptZXNzYWdlKSAo OmFjdGlvbnMpKQogICAgICAoU2lnbmF0dXJlSGVscCAoOnNpZ25hdHVyZXMpICg6YWN0aXZlU2ln bmF0dXJlIDphY3RpdmVQYXJhbWV0ZXIpKQogICAgICAoU2lnbmF0dXJlSW5mb3JtYXRpb24gKDps YWJlbCkgKDpkb2N1bWVudGF0aW9uIDpwYXJhbWV0ZXJzIDphY3RpdmVQYXJhbWV0ZXIpKQogICAg ICAoU3ltYm9sSW5mb3JtYXRpb24gKDpuYW1lIDpraW5kIDpsb2NhdGlvbikKICAgICAgICAgICAg ICAgICAgICAgICAgICg6ZGVwcmVjYXRlZCA6Y29udGFpbmVyTmFtZSkpCiAgICAgIChEb2N1bWVu dFN5bWJvbCAoOm5hbWUgOnJhbmdlIDpzZWxlY3Rpb25SYW5nZSA6a2luZCkKICAgICAgICAgICAg ICAgICAgICAgICg6ZGV0YWlsIDpkZXByZWNhdGVkIDpjaGlsZHJlbikpCiAgICAgIChUZXh0RG9j dW1lbnRFZGl0ICg6dGV4dERvY3VtZW50IDplZGl0cykgKCkpCiAgICAgIChUZXh0RWRpdCAoOnJh bmdlIDpuZXdUZXh0KSkKICAgICAgKFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgKDp1 cmkgOnZlcnNpb24pICgpKQogICAgICAoV29ya0RvbmVQcm9ncmVzcyAoOmtpbmQpICg6dGl0bGUg Om1lc3NhZ2UgOnBlcmNlbnRhZ2UgOmNhbmNlbGxhYmxlKSkKICAgICAgKFdvcmtzcGFjZUVkaXQg KCkgKDpjaGFuZ2VzIDpkb2N1bWVudENoYW5nZXMpKQogICAgICAoV29ya3NwYWNlU3ltYm9sICg6 bmFtZSA6a2luZCkgKDpjb250YWluZXJOYW1lIDpsb2NhdGlvbiA6ZGF0YSkpCiAgICAgIChJbmxh eUhpbnQgKDpwb3NpdGlvbiA6bGFiZWwpICg6a2luZCA6dGV4dEVkaXRzIDp0b29sdGlwIDpwYWRk aW5nTGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhZGRp bmdSaWdodCA6ZGF0YSkpCiAgICAgIChJbmxheUhpbnRMYWJlbFBhcnQgKDp2YWx1ZSkgKDp0b29s dGlwIDpsb2NhdGlvbiA6Y29tbWFuZCkpKQogICAgIkFsaXN0IChJTlRFUkZBQ0UtTkFNRSAuIElO VEVSRkFDRSkgb2Yga25vd24gZXh0ZXJuYWwgTFNQIGludGVyZmFjZXMuCgpJTlRFUkZBQ0UtTkFN RSBpcyBhIHN5bWJvbCBkZXNpZ25hdGVkIGJ5IHRoZSBzcGVjIGFzClwiaW50ZXJmYWNlXCIuICBJ TlRFUkZBQ0UgaXMgYSBsaXN0IChSRVFVSVJFRCBPUFRJT05BTCkgd2hlcmUKUkVRVUlSRUQgYW5k IE9QVElPTkFMIGFyZSBsaXN0cyBvZiBLRVlXT1JEIGRlc2lnbmF0aW5nIGZpZWxkCm5hbWVzIHRo YXQgbXVzdCBiZSwgb3IgbWF5IGJlLCByZXNwZWN0aXZlbHksIHByZXNlbnQgaW4gYSBtZXNzYWdl CmFkaGVyaW5nIHRvIHRoYXQgaW50ZXJmYWNlLiAgS0VZIGNhbiBiZSBhIGtleXdvcmQgb3IgYSBj b25zIChTWU0KVFlQRSksIHdoZXJlIHR5cGUgaXMgdXNlZCBieSBgY2wtdHlwZXAnIHRvIGNoZWNr IHR5cGVzIGF0CnJ1bnRpbWUuCgpIZXJlJ3Mgd2hhdCBhbiBlbGVtZW50IG9mIHRoaXMgYWxpc3Qg bWlnaHQgbG9vayBsaWtlOgoKICAgIChDb21tYW5kICgoOnRpdGxlIC4gc3RyaW5nKSAoOmNvbW1h bmQgLiBzdHJpbmcpKSAoOmFyZ3VtZW50cykpIikpCgooZXZhbC1hbmQtY29tcGlsZQogIChkZWZ2 YXIgZWdsb3Qtc3RyaWN0LW1vZGUKICAgICcoOzsgVW5jb21tZW50IG5leHQgbGluZXMgZm9yIGZ1 biBhbmQgZGVidWdnaW5nCiAgICAgIDs7IGRpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzCiAgICAg IDs7IGVuZm9yY2UtcmVxdWlyZWQta2V5cwogICAgICA7OyBlbmZvcmNlLW9wdGlvbmFsLWtleXMK ICAgICAgbm8tdW5rbm93bi1pbnRlcmZhY2VzKQogICAgIkhvdyBzdHJpY3RseSB0byBjaGVjayBM U1AgaW50ZXJmYWNlcyBhdCBjb21waWxlLSBhbmQgcnVuLXRpbWUuCgpWYWx1ZSBpcyBhIGxpc3Qg b2Ygc3ltYm9scyAoaWYgdGhlIGxpc3QgaXMgZW1wdHksIG5vIGNoZWNrcyBhcmUKcGVyZm9ybWVk KS4KCklmIHRoZSBzeW1ib2wgYGRpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzJyBpcyBwcmVzZW50 LCBhbiBlcnJvcgppcyByYWlzZWQgaWYgYW55IGV4dHJhbmVvdXMgZmllbGRzIGFyZSBzZW50IGJ5 IHRoZSBzZXJ2ZXIuICBBdApjb21waWxlLXRpbWUsIGEgd2FybmluZyBpcyByYWlzZWQgaWYgYSBk ZXN0cnVjdHVyaW5nIHNwZWMKaW5jbHVkZXMgc3VjaCBhIGZpZWxkLgoKSWYgdGhlIHN5bWJvbCBg ZW5mb3JjZS1yZXF1aXJlZC1rZXlzJyBpcyBwcmVzZW50LCBhbiBlcnJvciBpcwpyYWlzZWQgaWYg YW55IHJlcXVpcmVkIGZpZWxkcyBhcmUgbWlzc2luZyBmcm9tIHRoZSBtZXNzYWdlIHNlbnQKZnJv bSB0aGUgc2VydmVyLiAgQXQgY29tcGlsZS10aW1lLCBhIHdhcm5pbmcgaXMgcmFpc2VkIGlmIGEK ZGVzdHJ1Y3R1cmluZyBzcGVjIGRvZXNuJ3QgdXNlIHN1Y2ggYSBmaWVsZC4KCklmIHRoZSBzeW1i b2wgYGVuZm9yY2Utb3B0aW9uYWwta2V5cycgaXMgcHJlc2VudCwgbm90aGluZyBzcGVjaWFsCmhh cHBlbnMgYXQgcnVuLXRpbWUuICBBdCBjb21waWxlLXRpbWUsIGEgd2FybmluZyBpcyByYWlzZWQg aWYgYQpkZXN0cnVjdHVyaW5nIHNwZWMgZG9lc24ndCB1c2UgYWxsIG9wdGlvbmFsIGZpZWxkcy4K CklmIHRoZSBzeW1ib2wgYGRpc2FsbG93LXVua25vd24tbWV0aG9kcycgaXMgcHJlc2VudCwgRWds b3Qgd2FybnMKb24gdW5rbm93biBub3RpZmljYXRpb25zIGFuZCBlcnJvcnMgb24gdW5rbm93biBy ZXF1ZXN0cy4KCklmIHRoZSBzeW1ib2wgYG5vLXVua25vd24taW50ZXJmYWNlcycgaXMgcHJlc2Vu dCwgRWdsb3Qgd2FybnMgYXQKY29tcGlsZSB0aW1lIGlmIGFuIHVuZGVjbGFyZWQgTFNQIGludGVy ZmFjZSBpcyB1c2VkLiIpKQoKKGNsLWRlZnVuIGVnbG90LS1jaGVjay1vYmplY3QgKGludGVyZmFj ZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZvcHRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVuZm9yY2UtcmVxdWlyZWQgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk aXNhbGxvdy1ub24tc3RhbmRhcmQgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj aGVjay10eXBlcyB0KSkKICAiQ2hlY2sgdGhhdCBPQkpFQ1QgY29uZm9ybXMgdG8gSU5URVJGQUNF LiAgRXJyb3Igb3RoZXJ3aXNlLiIKICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kCiAgICAgICgma2V5 IHR5cGVzIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cyAmYWxsb3ctb3RoZXIta2V5cykKICAg ICAgKGVnbG90LS1pbnRlcmZhY2UgaW50ZXJmYWNlLW5hbWUpCiAgICAod2hlbi1sZXQgKChtaXNz aW5nIChhbmQgZW5mb3JjZS1yZXF1aXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj bC1zZXQtZGlmZmVyZW5jZSByZXF1aXJlZC1rZXlzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tcGxpc3Qta2V5cyBvYmplY3QpKSkpKQogICAg ICAoZWdsb3QtLWVycm9yICJBIGAlcycgbXVzdCBoYXZlICVzIiBpbnRlcmZhY2UtbmFtZSBtaXNz aW5nKSkKICAgICh3aGVuLWxldCAoKGV4Y2VzcyAoYW5kIGRpc2FsbG93LW5vbi1zdGFuZGFyZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGVnbG90LS1wbGlzdC1rZXlzIG9iamVjdCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYXBwZW5kIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cykpKSkp CiAgICAgIChlZ2xvdC0tZXJyb3IgIkEgYCVzJyBtdXN0bid0IGhhdmUgJXMiIGludGVyZmFjZS1u YW1lIGV4Y2VzcykpCiAgICAod2hlbiBjaGVjay10eXBlcwogICAgICAoY2wtbG9vcAogICAgICAg Zm9yIChrIHYpIG9uIG9iamVjdCBieSAjJ2NkZHIKICAgICAgIGZvciB0eXBlID0gKG9yIChjZHIg KGFzc29jIGsgdHlwZXMpKSB0KSA7OyBGSVhNRTogZW5mb3JjZSBuaWwgdHlwZT8KICAgICAgIHVu bGVzcyAoY2wtdHlwZXAgdiB0eXBlKQogICAgICAgZG8gKGVnbG90LS1lcnJvciAiQSBgJXMnIG11 c3QgaGF2ZSBhICVzIGFzICVzLCBidXQgaGFzICVzIgogICAgICAgICAgICAgICAgICAgICAgICBp bnRlcmZhY2UtbmFtZSkpKQogICAgdCkpCgooZXZhbC1hbmQtY29tcGlsZQogIChkZWZ1biBlZ2xv dC0ta2V5d29yZGl6ZS12YXJzICh2YXJzKQogICAgKG1hcGNhciAobGFtYmRhICh2YXIpIChpbnRl cm4gKGZvcm1hdCAiOiVzIiB2YXIpKSkgdmFycykpCgogIChkZWZ1biBlZ2xvdC0tZW5zdXJlLXR5 cGUgKGspIChpZiAoY29uc3AgaykgayAoY29ucyBrIHQpKSkKCiAgKGRlZnVuIGVnbG90LS1pbnRl cmZhY2UgKGludGVyZmFjZS1uYW1lKQogICAgKGxldCogKChpbnRlcmZhY2UgKGFzc29jIGludGVy ZmFjZS1uYW1lIGVnbG90LS1sc3AtaW50ZXJmYWNlLWFsaXN0KSkKICAgICAgICAgICAocmVxdWly ZWQgKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtdHlwZSAoY2FyIChjZHIgaW50ZXJmYWNlKSkpKQog ICAgICAgICAgIChvcHRpb25hbCAobWFwY2FyICMnZWdsb3QtLWVuc3VyZS10eXBlIChjYWRyIChj ZHIgaW50ZXJmYWNlKSkpKSkKICAgICAgKGxpc3QgOnR5cGVzIChhcHBlbmQgcmVxdWlyZWQgb3B0 aW9uYWwpCiAgICAgICAgICAgIDpyZXF1aXJlZC1rZXlzIChtYXBjYXIgIydjYXIgcmVxdWlyZWQp CiAgICAgICAgICAgIDpvcHRpb25hbC1rZXlzIChtYXBjYXIgIydjYXIgb3B0aW9uYWwpKSkpCgog IChkZWZ1biBlZ2xvdC0tY2hlY2stZHNwZWMgKGludGVyZmFjZS1uYW1lIGRzcGVjKQogICAgIkNo ZWNrIGRlc3RydWN0dXJpbmcgc3BlYyBEU1BFQyBhZ2FpbnN0IElOVEVSRkFDRS1OQU1FLiIKICAg IChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgcmVxdWlyZWQta2V5cyBvcHRpb25hbC1rZXlz ICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgIChlZ2xvdC0taW50ZXJmYWNlIGludGVyZmFjZS1u YW1lKQogICAgICAoY29uZCAoKG9yIHJlcXVpcmVkLWtleXMgb3B0aW9uYWwta2V5cykKICAgICAg ICAgICAgIChsZXQgKCh0b28tbWFueQogICAgICAgICAgICAgICAgICAgIChhbmQKICAgICAgICAg ICAgICAgICAgICAgKG1lbXEgJ2Rpc2FsbG93LW5vbi1zdGFuZGFyZC1rZXlzIGVnbG90LXN0cmlj dC1tb2RlKQogICAgICAgICAgICAgICAgICAgICAoY2wtc2V0LWRpZmZlcmVuY2UKICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVjKQogICAgICAgICAgICAg ICAgICAgICAgKGFwcGVuZCByZXF1aXJlZC1rZXlzIG9wdGlvbmFsLWtleXMpKSkpCiAgICAgICAg ICAgICAgICAgICAoaWdub3JlZC1yZXF1aXJlZAogICAgICAgICAgICAgICAgICAgIChhbmQKICAg ICAgICAgICAgICAgICAgICAgKG1lbXEgJ2VuZm9yY2UtcmVxdWlyZWQta2V5cyBlZ2xvdC1zdHJp Y3QtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgKGNsLXNldC1kaWZmZXJlbmNlCiAgICAgICAg ICAgICAgICAgICAgICByZXF1aXJlZC1rZXlzIChlZ2xvdC0ta2V5d29yZGl6ZS12YXJzIGRzcGVj KSkpKQogICAgICAgICAgICAgICAgICAgKG1pc3Npbmctb3V0CiAgICAgICAgICAgICAgICAgICAg KGFuZAogICAgICAgICAgICAgICAgICAgICAobWVtcSAnZW5mb3JjZS1vcHRpb25hbC1rZXlzIGVn bG90LXN0cmljdC1tb2RlKQogICAgICAgICAgICAgICAgICAgICAoY2wtc2V0LWRpZmZlcmVuY2UK ICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsLWtleXMgKGVnbG90LS1rZXl3b3JkaXplLXZh cnMgZHNwZWMpKSkpKQogICAgICAgICAgICAgICAod2hlbiB0b28tbWFueSAoYnl0ZS1jb21waWxl LXdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN0cnVjdHVyaW5nIGZvciAl cyBoYXMgZXh0cmFuZW91cyAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy ZmFjZS1uYW1lIHRvby1tYW55KSkKICAgICAgICAgICAgICAgKHdoZW4gaWdub3JlZC1yZXF1aXJl ZCAoYnl0ZS1jb21waWxlLXdhcm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIkRlc3RydWN0dXJpbmcgZm9yICVzIGlnbm9yZXMgcmVxdWlyZWQgJXMiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS1uYW1lIGlnbm9yZWQtcmVxdWly ZWQpKQogICAgICAgICAgICAgICAod2hlbiBtaXNzaW5nLW91dCAoYnl0ZS1jb21waWxlLXdhcm4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXN0cnVjdHVyaW5nIGZvciAlcyBp cyBtaXNzaW5nIG91dCBvbiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dGVyZmFjZS1uYW1lIG1pc3Npbmctb3V0KSkpKQogICAgICAgICAgICAoKG1lbXEgJ25vLXVua25v d24taW50ZXJmYWNlcyBlZ2xvdC1zdHJpY3QtbW9kZSkKICAgICAgICAgICAgIChieXRlLWNvbXBp bGUtd2FybiAiVW5rbm93biBMU1AgaW50ZXJmYWNlICVzIiBpbnRlcmZhY2UtbmFtZSkpKSkpKQoK KGNsLWRlZm1hY3JvIGVnbG90LS1kYmluZCAodmFycyBvYmplY3QgJmJvZHkgYm9keSkKICAiRGVz dHJ1Y3R1cmUgT0JKRUNULCBiaW5kaW5nIFZBUlMgaW4gQk9EWS4KVkFSUyBpcyAoWyhJTlRFUkZB Q0UpXSBTWU1TLi4uKQpIb25vciBgZWdsb3Qtc3RyaWN0LW1vZGUnLiIKICAoZGVjbGFyZSAoaW5k ZW50IDIpIChkZWJ1ZyAoc2V4cCBzZXhwICZyZXN0IGZvcm0pKSkKICAobGV0ICgoaW50ZXJmYWNl LW5hbWUgKGlmIChjb25zcCAoY2FyIHZhcnMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNhciAocG9wIHZhcnMpKSkpCiAgICAgICAgKG9iamVjdC1vbmNlIChtYWtlLXN5bWJvbCAib2Jq ZWN0LW9uY2UiKSkKICAgICAgICAoZm4tb25jZSAobWFrZS1zeW1ib2wgImZuLW9uY2UiKSkpCiAg ICAoY29uZCAoaW50ZXJmYWNlLW5hbWUKICAgICAgICAgICAoZWdsb3QtLWNoZWNrLWRzcGVjIGlu dGVyZmFjZS1uYW1lIHZhcnMpCiAgICAgICAgICAgYChsZXQgKCgsb2JqZWN0LW9uY2UgLG9iamVj dCkpCiAgICAgICAgICAgICAgKGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMgJmFs bG93LW90aGVyLWtleXMpICxvYmplY3Qtb25jZQogICAgICAgICAgICAgICAgKGVnbG90LS1jaGVj ay1vYmplY3QgJyxpbnRlcmZhY2UtbmFtZSAsb2JqZWN0LW9uY2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtZW1xICdlbmZvcmNlLXJlcXVpcmVkLWtleXMgZWdsb3Qtc3Ry aWN0LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnZGlz YWxsb3ctbm9uLXN0YW5kYXJkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWVtcSAnY2hlY2stdHlwZXMgZWdsb3Qtc3RyaWN0LW1v ZGUpKQogICAgICAgICAgICAgICAgLEBib2R5KSkpCiAgICAgICAgICAodAogICAgICAgICAgIGAo bGV0ICgoLG9iamVjdC1vbmNlICxvYmplY3QpCiAgICAgICAgICAgICAgICAgICgsZm4tb25jZSAo bGFtYmRhICgsQHZhcnMpICxAYm9keSkpKQogICAgICAgICAgICAgIChpZiAobWVtcSAnZGlzYWxs b3ctbm9uLXN0YW5kYXJkLWtleXMgZWdsb3Qtc3RyaWN0LW1vZGUpCiAgICAgICAgICAgICAgICAg IChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKCZrZXkgLEB2YXJzKSAsb2JqZWN0LW9uY2UKICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKQogICAgICAgICAgICAgICAg KGNsLWRlc3RydWN0dXJpbmctYmluZCAoJmtleSAsQHZhcnMgJmFsbG93LW90aGVyLWtleXMpICxv YmplY3Qtb25jZQogICAgICAgICAgICAgICAgICAoZnVuY2FsbCAsZm4tb25jZSAsQHZhcnMpKSkp KSkpKQoKKGNsLWRlZm1hY3JvIGVnbG90LS1sYW1iZGEgKGNsLWxhbWJkYS1saXN0ICZib2R5IGJv ZHkpCiAgIkZ1bmN0aW9uIG9mIGFyZ3MgQ0wtTEFNQkRBLUxJU1QgZm9yIHByb2Nlc3NpbmcgSU5U RVJGQUNFIG9iamVjdHMuCkhvbm9yIGBlZ2xvdC1zdHJpY3QtbW9kZScuIgogIChkZWNsYXJlIChp bmRlbnQgMSkgKGRlYnVnIChzZXhwICZyZXN0IGZvcm0pKSkKICAobGV0ICgoZSAoY2wtZ2Vuc3lt ICJqc29ucnBjLWxhbWJkYS1lbGVtIikpKQogICAgYChsYW1iZGEgKCxlKSAoY2wtYmxvY2sgbmls IChlZ2xvdC0tZGJpbmQgLGNsLWxhbWJkYS1saXN0ICxlICxAYm9keSkpKSkpCgooY2wtZGVmbWFj cm8gZWdsb3QtLWRjYXNlIChvYmogJnJlc3QgY2xhdXNlcykKICAiTGlrZSBgcGNhc2UnLCBidXQg Zm9yIHRoZSBMU1Agb2JqZWN0IE9CSi4KQ0xBVVNFUyBpcyBhIGxpc3QgKERFU1RSVUNUVVJFIEZP Uk1TLi4uKSB3aGVyZSBERVNUUlVDVFVSRSBpcwp0cmVhdGVkIGFzIGluIGBlZ2xvdC0tZGJpbmQn LiIKICAoZGVjbGFyZSAoaW5kZW50IDEpIChkZWJ1ZyAoc2V4cCAmcmVzdCAoc2V4cCAmcmVzdCBm b3JtKSkpKQogIChsZXQgKChvYmotb25jZSAobWFrZS1zeW1ib2wgIm9iai1vbmNlIikpKQogICAg YChsZXQgKCgsb2JqLW9uY2UgLG9iaikpCiAgICAgICAoY29uZAogICAgICAgICxAKGNsLWxvb3AK ICAgICAgICAgICBmb3IgKHZhcnMgLiBib2R5KSBpbiBjbGF1c2VzCiAgICAgICAgICAgZm9yIHZh cnMtYXMta2V5d29yZHMgPSAoZWdsb3QtLWtleXdvcmRpemUtdmFycyB2YXJzKQogICAgICAgICAg IGZvciBpbnRlcmZhY2UtbmFtZSA9IChpZiAoY29uc3AgKGNhciB2YXJzKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNhciAocG9wIHZhcnMpKSkKICAgICAgICAgICBmb3Ig Y29uZGl0aW9uID0KICAgICAgICAgICAoY29uZCAoaW50ZXJmYWNlLW5hbWUKICAgICAgICAgICAg ICAgICAgKGVnbG90LS1jaGVjay1kc3BlYyBpbnRlcmZhY2UtbmFtZSB2YXJzKQogICAgICAgICAg ICAgICAgICA7OyBJbiB0aGlzIG1vZGUsIGluIHJ1bnRpbWUsIHdlIGFzc3VtZQogICAgICAgICAg ICAgICAgICA7OyBgZWdsb3Qtc3RyaWN0LW1vZGUnIGlzIHBhcnRpYWxseSBvbiwgb3RoZXJ3aXNl IHdlCiAgICAgICAgICAgICAgICAgIDs7IGNhbid0IGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGNlcnRh aW4gdHlwZXMuCiAgICAgICAgICAgICAgICAgIGAoaWdub3JlLWVycm9ycwogICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtLWNoZWNrLW9iamVjdAogICAgICAgICAgICAgICAgICAgICAgJyxpbnRl cmZhY2UtbmFtZSAsb2JqLW9uY2UKICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAg ICAgICAgICAgIChtZW1xICdkaXNhbGxvdy1ub24tc3RhbmRhcmQta2V5cyBlZ2xvdC1zdHJpY3Qt bW9kZSkKICAgICAgICAgICAgICAgICAgICAgIHQpKSkKICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICA7OyBJbiB0aGlzIGludGVyZmFjZS1sZXNzIG1vZGUgd2UgZG9uJ3QgY2hl Y2sKICAgICAgICAgICAgICAgICAgOzsgYGVnbG90LXN0cmljdC1tb2RlJyBhdCBhbGw6IGp1c3Qg Y2hlY2sgdGhhdCB0aGUgb2JqZWN0CiAgICAgICAgICAgICAgICAgIDs7IGhhcyBhbGwgdGhlIGtl eXMgdGhlIHVzZXIgd2FudHMgdG8gZGVzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgIGAobnVs bCAoY2wtc2V0LWRpZmZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAnLHZhcnMtYXMt a2V5d29yZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXBsaXN0LWtleXMgLG9i ai1vbmNlKSkpKSkKICAgICAgICAgICBjb2xsZWN0IGAoLGNvbmRpdGlvbgogICAgICAgICAgICAg ICAgICAgICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kICgma2V5ICxAdmFycyAmYWxsb3ctb3RoZXIt a2V5cykKICAgICAgICAgICAgICAgICAgICAgICAgICxvYmotb25jZQogICAgICAgICAgICAgICAg ICAgICAgICxAYm9keSkpKQogICAgICAgICh0CiAgICAgICAgIChlZ2xvdC0tZXJyb3IgIiVTIGRp ZG4ndCBtYXRjaCBhbnkgb2YgJVMiCiAgICAgICAgICAgICAgICAgICAgICAgLG9iai1vbmNlCiAg ICAgICAgICAgICAgICAgICAgICAgJywobWFwY2FyICMnY2FyIGNsYXVzZXMpKSkpKSkpCgooY2wt ZGVmbWFjcm8gZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIgKGJ1ZiAmcmVzdCBib2R5KQogICJDaGVj ayBCVUYgbGl2ZSwgdGhlbiBkbyBCT0RZIGluIGl0LiIgKGRlY2xhcmUgKGluZGVudCAxKSAoZGVi dWcgdCkpCiAgKGxldCAoKGIgKGNsLWdlbnN5bSkpKQogICAgYChsZXQgKCgsYiAsYnVmKSkgKGlm IChidWZmZXItbGl2ZS1wICxiKSAod2l0aC1jdXJyZW50LWJ1ZmZlciAsYiAsQGJvZHkpKSkpKQoK KGNsLWRlZm1hY3JvIGVnbG90LS13aGVuLWJ1ZmZlci13aW5kb3cgKGJ1ZiAmYm9keSBib2R5KQog ICJDaGVjayBCVUYgc2hvd2luZyBzb21ld2hlcmUsIHRoZW4gZG8gQk9EWSBpbiBpdC4iIChkZWNs YXJlIChpbmRlbnQgMSkgKGRlYnVnIHQpKQogIChsZXQgKChiIChjbC1nZW5zeW0pKSkKICAgIGAo bGV0ICgoLGIgLGJ1ZikpCiAgICAgICA7O25vdGljZSB0aGUgZXhjZXB0aW9uIHdoZW4gdGVzdGlu ZyB3aXRoIGBlcnQnCiAgICAgICAod2hlbiAob3IgKGdldC1idWZmZXItd2luZG93ICxiKSAoZXJ0 LXJ1bm5pbmctdGVzdCkpCiAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyICxiICxAYm9keSkp KSkpCgooY2wtZGVmbWFjcm8gZWdsb3QtLXdpZGVuaW5nICgmcmVzdCBib2R5KQogICJTYXZlIGV4 Y3Vyc2lvbiBhbmQgcmVzdHJpY3Rpb24uICBXaWRlbi4gIFRoZW4gcnVuIEJPRFkuIiAoZGVjbGFy ZSAoZGVidWcgdCkpCiAgYChzYXZlLWV4Y3Vyc2lvbiAoc2F2ZS1yZXN0cmljdGlvbiAod2lkZW4p ICxAYm9keSkpKQoKDAo7OzsgUHVibGljIEVsaXNwIEFQSQo7OzsKKGNsLWRlZmdlbmVyaWMgZWds b3QtaGFuZGxlLXJlcXVlc3QgKHNlcnZlciBtZXRob2QgJnJlc3QgcGFyYW1zKQogICJIYW5kbGUg U0VSVkVSJ3MgTUVUSE9EIHJlcXVlc3Qgd2l0aCBQQVJBTVMuIikKCihjbC1kZWZnZW5lcmljIGVn bG90LWhhbmRsZS1ub3RpZmljYXRpb24gKHNlcnZlciBtZXRob2QgJnJlc3QgcGFyYW1zKQogICJI YW5kbGUgU0VSVkVSJ3MgTUVUSE9EIG5vdGlmaWNhdGlvbiB3aXRoIFBBUkFNUy4iKQoKKGNsLWRl ZmdlbmVyaWMgZWdsb3QtZXhlY3V0ZS1jb21tYW5kIChfIF8gXykKICAoZGVjbGFyZSAob2Jzb2xl dGUgZWdsb3QtZXhlY3V0ZSAiMzAuMSIpKQogICg6bWV0aG9kCiAgIChzZXJ2ZXIgY29tbWFuZCBh cmd1bWVudHMpCiAgIChlZ2xvdC0tcmVxdWVzdCBzZXJ2ZXIgOndvcmtzcGFjZS9leGVjdXRlQ29t bWFuZAogICAgICAgICAgICAgICAgICAgYCg6Y29tbWFuZCAsKGZvcm1hdCAiJXMiIGNvbW1hbmQp IDphcmd1bWVudHMgLGFyZ3VtZW50cykpKSkKCihjbC1kZWZnZW5lcmljIGVnbG90LWV4ZWN1dGUg KHNlcnZlciBhY3Rpb24pCiAgIkFzayBTRVJWRVIgdG8gZXhlY3V0ZSBBQ1RJT04uCkFDVElPTiBp cyBhbiBMU1Agb2JqZWN0IG9mIGVpdGhlciBgQ29kZUFjdGlvbicgb3IgYENvbW1hbmQnIHR5cGUu IgogICg6bWV0aG9kCiAgIChzZXJ2ZXIgYWN0aW9uKSAiRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4i CiAgIChlZ2xvdC0tZGNhc2UgYWN0aW9uCiAgICAgKCgoQ29tbWFuZCkpIChlZ2xvdC0tcmVxdWVz dCBzZXJ2ZXIgOndvcmtzcGFjZS9leGVjdXRlQ29tbWFuZCBhY3Rpb24pKQogICAgICgoKENvZGVB Y3Rpb24pIGVkaXQgY29tbWFuZCBkYXRhKQogICAgICAoaWYgKGFuZCAobnVsbCBlZGl0KSAobnVs bCBjb21tYW5kKSBkYXRhCiAgICAgICAgICAgICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29k ZUFjdGlvblByb3ZpZGVyIDpyZXNvbHZlUHJvdmlkZXIpKQogICAgICAgICAgKGVnbG90LWV4ZWN1 dGUgc2VydmVyIChlZ2xvdC0tcmVxdWVzdCBzZXJ2ZXIgOmNvZGVBY3Rpb24vcmVzb2x2ZSBhY3Rp b24pKQogICAgICAgICh3aGVuIGVkaXQgKGVnbG90LS1hcHBseS13b3Jrc3BhY2UtZWRpdCBlZGl0 IHRoaXMtY29tbWFuZCkpCiAgICAgICAgKHdoZW4gY29tbWFuZCAoZWdsb3QtLXJlcXVlc3Qgc2Vy dmVyIDp3b3Jrc3BhY2UvZXhlY3V0ZUNvbW1hbmQgY29tbWFuZCkpKSkpKSkKCihjbC1kZWZnZW5l cmljIGVnbG90LWluaXRpYWxpemF0aW9uLW9wdGlvbnMgKHNlcnZlcikKICAiSlNPTiBvYmplY3Qg dG8gc2VuZCB1bmRlciBgaW5pdGlhbGl6YXRpb25PcHRpb25zJy4iCiAgKDptZXRob2QgKHMpCiAg IChsZXQgKChwcm9iZSAocGxpc3QtZ2V0IChlZ2xvdC0tc2F2ZWQtaW5pdGFyZ3MgcykgOmluaXRp YWxpemF0aW9uT3B0aW9ucykpKQogICAgIChjb25kICgoZnVuY3Rpb25wIHByb2JlKSAoZnVuY2Fs bCBwcm9iZSBzKSkKICAgICAgICAgICAocHJvYmUpCiAgICAgICAgICAgKHQgZWdsb3QtLXt9KSkp KSkKCihjbC1kZWZnZW5lcmljIGVnbG90LXJlZ2lzdGVyLWNhcGFiaWxpdHkgKHNlcnZlciBtZXRo b2QgaWQgJnJlc3QgcGFyYW1zKQogICJBc2sgU0VSVkVSIHRvIHJlZ2lzdGVyIGNhcGFiaWxpdHkg TUVUSE9EIG1hcmtlZCB3aXRoIElELiIKICAoOm1ldGhvZAogICAoX3MgbWV0aG9kIF9pZCAmcmVz dCBfcGFyYW1zKQogICAoZWdsb3QtLXdhcm4gIlNlcnZlciB0cmllZCB0byByZWdpc3RlciB1bnN1 cHBvcnRlZCBjYXBhYmlsaXR5IGAlcyciCiAgICAgICAgICAgICAgICBtZXRob2QpKSkKCihjbC1k ZWZnZW5lcmljIGVnbG90LXVucmVnaXN0ZXItY2FwYWJpbGl0eSAoc2VydmVyIG1ldGhvZCBpZCAm cmVzdCBwYXJhbXMpCiAgIkFzayBTRVJWRVIgdG8gcmVnaXN0ZXIgY2FwYWJpbGl0eSBNRVRIT0Qg bWFya2VkIHdpdGggSUQuIgogICg6bWV0aG9kCiAgIChfcyBtZXRob2QgX2lkICZyZXN0IF9wYXJh bXMpCiAgIChlZ2xvdC0td2FybiAiU2VydmVyIHRyaWVkIHRvIHVucmVnaXN0ZXIgdW5zdXBwb3J0 ZWQgY2FwYWJpbGl0eSBgJXMnIgogICAgICAgICAgICAgICAgbWV0aG9kKSkpCgooY2wtZGVmZ2Vu ZXJpYyBlZ2xvdC1jbGllbnQtY2FwYWJpbGl0aWVzIChzZXJ2ZXIpCiAgIldoYXQgdGhlIEVnbG90 IExTUCBjbGllbnQgc3VwcG9ydHMgZm9yIFNFUlZFUi4iCiAgKDptZXRob2QgKHMpCiAgICAgICAg ICAgKGxpc3QKICAgICAgICAgICAgOndvcmtzcGFjZSAobGlzdAogICAgICAgICAgICAgICAgICAg ICAgICA6YXBwbHlFZGl0IHQKICAgICAgICAgICAgICAgICAgICAgICAgOmV4ZWN1dGVDb21tYW5k IGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgIDp3b3Jrc3BhY2VFZGl0IGAoOmRvY3VtZW50Q2hhbmdlcyB0KQogICAgICAgICAgICAgICAg ICAgICAgICA6ZGlkQ2hhbmdlV2F0Y2hlZEZpbGVzCiAgICAgICAgICAgICAgICAgICAgICAgIGAo OmR5bmFtaWNSZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAsKGlmIChlZ2xv dC0tdHJhbXBpc2gtcCBzKSA6anNvbi1mYWxzZSB0KSkKICAgICAgICAgICAgICAgICAgICAgICAg OnN5bWJvbCBgKDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlKQogICAgICAgICAgICAg ICAgICAgICAgICA6Y29uZmlndXJhdGlvbiB0CiAgICAgICAgICAgICAgICAgICAgICAgIDp3b3Jr c3BhY2VGb2xkZXJzIHQpCiAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAgKGxp c3QKICAgICAgICAgICAgIDpzeW5jaHJvbml6YXRpb24gKGxpc3QKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6d2lsbFNhdmUgdCA6d2lsbFNhdmVXYWl0VW50aWwgdCA6ZGlk U2F2ZSB0KQogICAgICAgICAgICAgOmNvbXBsZXRpb24gICAgICAobGlzdCA6ZHluYW1pY1JlZ2lz dHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y29tcGxldGlvbkl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCg6c25p cHBldFN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGlmIChh bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChlZ2xv dC0tc3RheS1vdXQtb2YtcCAneWFzbmlwcGV0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXNuaXBwZXQtZXhwYW5zaW9uLWZuKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6ZGVwcmVjYXRlZFN1cHBvcnQgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpyZXNvbHZlU3VwcG9ydCAoOnByb3BlcnRpZXMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZG9jdW1lbnRhdGlv biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZGV0YWlscyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYWRkaXRpb25hbFRleHRFZGl0cyJdKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDp0YWdTdXBwb3J0ICg6dmFsdWVTZXQgWzFdKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOmNvbnRleHRTdXBwb3J0IHQpCiAgICAgICAgICAgICA6 aG92ZXIgICAgICAgICAgICAgIChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb250ZW50Rm9ybWF0IChl Z2xvdC0tYWNjZXB0ZWQtZm9ybWF0cykpCiAgICAgICAgICAgICA6c2lnbmF0dXJlSGVscCAgICAg IChsaXN0IDpkeW5hbWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzaWduYXR1cmVJbmZvcm1hdGlvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBgKDpwYXJhbWV0ZXJJbmZvcm1hdGlvbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6bGFiZWxPZmZzZXRTdXBwb3J0IHQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRvY3VtZW50YXRpb25G b3JtYXQgLChlZ2xvdC0tYWNjZXB0ZWQtZm9ybWF0cykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6YWN0aXZlUGFyYW1ldGVyU3VwcG9ydCB0KSkKICAgICAgICAgICAg IDpyZWZlcmVuY2VzICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkK ICAgICAgICAgICAgIDpkZWZpbml0aW9uICAgICAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRp b24gOmpzb24tZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxp bmtTdXBwb3J0IHQpCiAgICAgICAgICAgICA6ZGVjbGFyYXRpb24gICAgICAgIChsaXN0IDpkeW5h bWljUmVnaXN0cmF0aW9uIDpqc29uLWZhbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpsaW5rU3VwcG9ydCB0KQogICAgICAgICAgICAgOmltcGxlbWVudGF0aW9uICAg ICAobGlzdCA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6bGlua1N1cHBvcnQgdCkKICAgICAgICAgICAgIDp0eXBl RGVmaW5pdGlvbiAgICAgKGxpc3QgOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmxpbmtTdXBwb3J0IHQpCiAgICAg ICAgICAgICA6ZG9jdW1lbnRTeW1ib2wgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOmhpZXJhcmNoaWNhbERvY3VtZW50U3ltYm9sU3VwcG9ydCB0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c3ltYm9sS2luZCBgKDp2YWx1ZVNl dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLEAobWFw Y2FyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj J2NhciBlZ2xvdC0tc3ltYm9sLWtpbmQtbmFtZXMpXSkpCiAgICAgICAgICAgICA6ZG9jdW1lbnRI aWdobGlnaHQgIGAoOmR5bmFtaWNSZWdpc3RyYXRpb24gOmpzb24tZmFsc2UpCiAgICAgICAgICAg ICA6Y29kZUFjdGlvbiAgICAgICAgIChsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOnJlc29sdmVTdXBwb3J0IGAoOnByb3BlcnRpZXMgWyJlZGl0IiAiY29t bWFuZCJdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRhdGFTdXBwb3J0IHQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2RlQWN0aW9uTGl0ZXJhbFN1cHBv cnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOmNvZGVBY3Rpb25LaW5kCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6dmFsdWVTZXQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFsicXVpY2tmaXgiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInJlZmFjdG9yIiAicmVmYWN0b3IuZXh0cmFjdCIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmYWN0b3IuaW5saW5lIiAicmVmYWN0b3Iu cmV3cml0ZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiAi c291cmNlLm9yZ2FuaXplSW1wb3J0cyJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDppc1ByZWZlcnJlZFN1cHBvcnQgdCkKICAgICAgICAgICAgIDpmb3JtYXR0aW5nICAgICAg ICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgIDpyYW5n ZUZvcm1hdHRpbmcgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1mYWxzZSkKICAgICAg ICAgICAgIDpyZW5hbWUgICAgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJhdGlvbiA6anNvbi1m YWxzZSkKICAgICAgICAgICAgIDppbmxheUhpbnQgICAgICAgICAgYCg6ZHluYW1pY1JlZ2lzdHJh dGlvbiA6anNvbi1mYWxzZSkKICAgICAgICAgICAgIDpwdWJsaXNoRGlhZ25vc3RpY3MgKGxpc3Qg OnJlbGF0ZWRJbmZvcm1hdGlvbiA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7OyBUT0RPOiBXZSBjYW4gc3VwcG9ydCA6Y29kZURlc2NyaXB0aW9uIGFm dGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFkZGluZyBhbiBh cHByb3ByaWF0ZSBVSSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 OyBGbHltYWtlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29kZURl c2NyaXB0aW9uU3VwcG9ydCA6anNvbi1mYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6dGFnU3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBgKDp2YWx1ZVNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFssQChtYXBjYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IydjYXIgZWdsb3QtLXRhZy1mYWNlcyldKSkpCiAgICAgICAgICAgIDp3aW5kb3cgYCg6c2hvd0Rv Y3VtZW50ICg6c3VwcG9ydCB0KQogICAgICAgICAgICAgICAgICAgICAgOndvcmtEb25lUHJvZ3Jl c3MgdCkKICAgICAgICAgICAgOmdlbmVyYWwgKGxpc3QgOnBvc2l0aW9uRW5jb2RpbmdzIFsidXRm LTMyIiAidXRmLTgiICJ1dGYtMTYiXSkKICAgICAgICAgICAgOmV4cGVyaW1lbnRhbCBlZ2xvdC0t e30pKSkKCihjbC1kZWZnZW5lcmljIGVnbG90LXdvcmtzcGFjZS1mb2xkZXJzIChzZXJ2ZXIpCiAg IlJldHVybiB3b3Jrc3BhY2VGb2xkZXJzIGZvciBTRVJWRVIuIgogIChsZXQgKChwcm9qZWN0IChl Z2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkKICAgICh2Y29uY2F0CiAgICAgKG1hcGNhciAobGFtYmRh IChkaXIpCiAgICAgICAgICAgICAgIChsaXN0IDp1cmkgKGVnbG90LXBhdGgtdG8tdXJpIGRpcikK ICAgICAgICAgICAgICAgICAgICAgOm5hbWUgKGFiYnJldmlhdGUtZmlsZS1uYW1lIGRpcikpKQog ICAgICAgICAgICAgYCgsKHByb2plY3Qtcm9vdCBwcm9qZWN0KSAsQChwcm9qZWN0LWV4dGVybmFs LXJvb3RzIHByb2plY3QpKSkpKSkKCihkZWZjbGFzcyBlZ2xvdC1sc3Atc2VydmVyIChqc29ucnBj LXByb2Nlc3MtY29ubmVjdGlvbikKICAoKHByb2plY3Qtbmlja25hbWUKICAgIDpkb2N1bWVudGF0 aW9uICJTaG9ydCBuaWNrbmFtZSBmb3IgdGhlIGFzc29jaWF0ZWQgcHJvamVjdC4iCiAgICA6YWNj ZXNzb3IgZWdsb3QtLXByb2plY3Qtbmlja25hbWUKICAgIDpyZWFkZXIgZWdsb3QtcHJvamVjdC1u aWNrbmFtZSkKICAgKGxhbmd1YWdlcwogICAgOmluaXRmb3JtIG5pbAogICAgOmRvY3VtZW50YXRp b24gIkFsaXN0ICgoTU9ERSAuIExBTkdVQUdFLUlELVNUUklORykuLi4pIG9mIG1hbmFnZWQgbGFu Z3VhZ2VzLiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tbGFuZ3VhZ2VzKQogICAoY2FwYWJpbGl0aWVz CiAgICA6aW5pdGZvcm0gbmlsCiAgICA6ZG9jdW1lbnRhdGlvbiAiSlNPTiBvYmplY3QgY29udGFp bmluZyBzZXJ2ZXIgY2FwYWJpbGl0aWVzLiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tY2FwYWJpbGl0 aWVzKQogICAoc2VydmVyLWluZm8KICAgIDppbml0Zm9ybSBuaWwKICAgIDpkb2N1bWVudGF0aW9u ICJKU09OIG9iamVjdCBjb250YWluaW5nIHNlcnZlciBpbmZvLiIKICAgIDphY2Nlc3NvciBlZ2xv dC0tc2VydmVyLWluZm8pCiAgIChzaHV0ZG93bi1yZXF1ZXN0ZWQKICAgIDppbml0Zm9ybSBuaWwK ICAgIDpkb2N1bWVudGF0aW9uICJGbGFnIHNldCB3aGVuIHNlcnZlciBpcyBzaHV0dGluZyBkb3du LiIKICAgIDphY2Nlc3NvciBlZ2xvdC0tc2h1dGRvd24tcmVxdWVzdGVkKQogICAocHJvamVjdAog ICAgOmluaXRmb3JtIG5pbAogICAgOmRvY3VtZW50YXRpb24gIlByb2plY3QgYXNzb2NpYXRlZCB3 aXRoIHNlcnZlci4iCiAgICA6YWNjZXNzb3IgZWdsb3QtLXByb2plY3QpCiAgIChwcm9ncmVzcy1y ZXBvcnRlcnMKICAgIDppbml0Zm9ybSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1YWwpIDph Y2Nlc3NvciBlZ2xvdC0tcHJvZ3Jlc3MtcmVwb3J0ZXJzCiAgICA6ZG9jdW1lbnRhdGlvbiAiTWFw cyBMU1AgcHJvZ3Jlc3MgdG9rZW5zIHRvIHByb2dyZXNzIHJlcG9ydGVycy4iKQogICAoaW5oaWJp dC1hdXRvcmVjb25uZWN0CiAgICA6aW5pdGZvcm0gdAogICAgOmRvY3VtZW50YXRpb24gIkdlbmVy YWxpemVkIGJvb2xlYW4gaW5oaWJpdGluZyBhdXRvLXJlY29ubmVjdGlvbiBpZiB0cnVlLiIKICAg IDphY2Nlc3NvciBlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0KQogICAoZmlsZS13YXRjaGVz CiAgICA6ZG9jdW1lbnRhdGlvbiAiTWFwIChESVIgLT4gKFdBVENIIElEMSBJRDIuLi4pKSBmb3Ig YGRpZENoYW5nZVdhdGNoZWRGaWxlcycuIgogICAgOmluaXRmb3JtIChtYWtlLWhhc2gtdGFibGUg OnRlc3QgIydlcXVhbCkgOmFjY2Vzc29yIGVnbG90LS1maWxlLXdhdGNoZXMpCiAgIChtYW5hZ2Vk LWJ1ZmZlcnMKICAgIDppbml0Zm9ybSBuaWwKICAgIDpkb2N1bWVudGF0aW9uICJMaXN0IG9mIGJ1 ZmZlcnMgbWFuYWdlZCBieSBzZXJ2ZXIuIgogICAgOmFjY2Vzc29yIGVnbG90LS1tYW5hZ2VkLWJ1 ZmZlcnMpCiAgIChzYXZlZC1pbml0YXJncwogICAgOmRvY3VtZW50YXRpb24gIlNhdmVkIGluaXRh cmdzIGZvciByZWNvbm5lY3Rpb24gcHVycG9zZXMuIgogICAgOmFjY2Vzc29yIGVnbG90LS1zYXZl ZC1pbml0YXJncykpCiAgOmRvY3VtZW50YXRpb24KICAiUmVwcmVzZW50cyBhIHNlcnZlci4gV3Jh cHMgYSBwcm9jZXNzIGZvciBMU1AgY29tbXVuaWNhdGlvbi4iKQoKKGRlY2xhcmUtZnVuY3Rpb24g dzMyLWxvbmctZmlsZS1uYW1lICJ3MzJwcm9jLmMiIChmbikpCihkZWZ1biBlZ2xvdC11cmktdG8t cGF0aCAodXJpKQogICJDb252ZXJ0IFVSSSB0byBmaWxlIHBhdGgsIGhlbHBlZCBieSBgZWdsb3Qt LWN1cnJlbnQtc2VydmVyJy4iCiAgKHdoZW4gKGtleXdvcmRwIHVyaSkgKHNldHEgdXJpIChzdWJz dHJpbmcgKHN5bWJvbC1uYW1lIHVyaSkgMSkpKQogIChsZXQqICgoc2VydmVyIChlZ2xvdC1jdXJy ZW50LXNlcnZlcikpCiAgICAgICAgIChyZW1vdGUtcHJlZml4IChhbmQgc2VydmVyIChlZ2xvdC0t dHJhbXBpc2gtcCBzZXJ2ZXIpKSkKICAgICAgICAgKHVybCAodXJsLWdlbmVyaWMtcGFyc2UtdXJs IHVyaSkpKQogICAgOzsgT25seSBwYXJzZSBmaWxlOi8vIFVSSXMsIGxlYXZlIG90aGVyIFVSSSB1 bnRvdWNoZWQgYXMKICAgIDs7IGBmaWxlLW5hbWUtaGFuZGxlci1hbGlzdCcgc2hvdWxkIGtub3cg aG93IHRvIGhhbmRsZSB0aGVtCiAgICA7OyAoYnVnIzU4NzkwKS4KICAgIChpZiAoc3RyaW5nPSAi ZmlsZSIgKHVybC10eXBlIHVybCkpCiAgICAgICAgKGxldCogKChyZXR2YWwgKHVybC11bmhleC1z dHJpbmcgKHVybC1maWxlbmFtZSB1cmwpKSkKICAgICAgICAgICAgICAgOzsgUmVtb3ZlIHRoZSBs ZWFkaW5nICIvIiBmb3IgbG9jYWwgTVMgV2luZG93cy1zdHlsZSBwYXRocy4KICAgICAgICAgICAg ICAgKG5vcm1hbGl6ZWQgKGlmIChhbmQgKG5vdCByZW1vdGUtcHJlZml4KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1wbHVzcCAobGVuZ3RoIHJldHZhbCkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHczMi1sb25nLWZpbGUtbmFtZSAoc3Vi c3RyaW5nIHJldHZhbCAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwpKSkK ICAgICAgICAgIChjb25jYXQgcmVtb3RlLXByZWZpeCBub3JtYWxpemVkKSkKICAgICAgdXJpKSkp CgooZGVmdW4gZWdsb3QtcGF0aC10by11cmkgKHBhdGgpCiAgIkNvbnZlcnQgUEFUSCwgYSBmaWxl IG5hbWUsIHRvIExTUCBVUkkgc3RyaW5nIGFuZCByZXR1cm4gaXQuIgogIChsZXQgKCh0cnVlcGF0 aCAoZmlsZS10cnVlbmFtZSBwYXRoKSkpCiAgICAoaWYgKGFuZCAodXJsLXR5cGUgKHVybC1nZW5l cmljLXBhcnNlLXVybCBwYXRoKSkKICAgICAgICAgICAgIDs7IEl0IG1pZ2h0IGJlIE1TIFdpbmRv d3MgcGF0aCB3aGljaCBpbmNsdWRlcyBhIGRyaXZlCiAgICAgICAgICAgICA7OyBsZXR0ZXIgdGhh dCBsb29rcyBsaWtlIGEgVVJMIHNjaGVtZSAoYnVnIzU5MzM4KQogICAgICAgICAgICAgKG5vdCAo YW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKICAgICAgICAgICAgICAgICAgICAgICAo ZmlsZS1uYW1lLWFic29sdXRlLXAgdHJ1ZXBhdGgpKSkpCiAgICAgICAgOzsgUGF0aCBpcyBhbHJl YWR5IGEgVVJJLCBzbyBmb3J3YXJkIGl0IHRvIHRoZSBMU1Agc2VydmVyCiAgICAgICAgOzsgdW50 b3VjaGVkLiAgVGhlIHNlcnZlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgaXQsIHNpbmNlCiAg ICAgICAgOzsgaXQgcHJvdmlkZWQgdGhpcyBVUkkgdG8gY2xpZW50cyBpbiB0aGUgZmlyc3QgcGxh Y2UuCiAgICAgICAgcGF0aAogICAgICAoY29uY2F0ICJmaWxlOi8vIgogICAgICAgICAgICAgIDs7 IEFkZCBhIGxlYWRpbmcgIi8iIGZvciBsb2NhbCBNUyBXaW5kb3dzLXN0eWxlIHBhdGhzLgogICAg ICAgICAgICAgIChpZiAoYW5kIChlcSBzeXN0ZW0tdHlwZSAnd2luZG93cy1udCkKICAgICAgICAg ICAgICAgICAgICAgICAobm90IChmaWxlLXJlbW90ZS1wIHRydWVwYXRoKSkpCiAgICAgICAgICAg ICAgICAgICIvIikKICAgICAgICAgICAgICAodXJsLWhleGlmeS1zdHJpbmcKICAgICAgICAgICAg ICAgOzsgQWdhaW4gd2F0Y2ggb3V0IGZvciB0cmFtcHkgcGF0aHMuCiAgICAgICAgICAgICAgIChk aXJlY3RvcnktZmlsZS1uYW1lIChmaWxlLWxvY2FsLW5hbWUgdHJ1ZXBhdGgpKQogICAgICAgICAg ICAgICBlZ2xvdC0tdXJpLXBhdGgtYWxsb3dlZC1jaGFycykpKSkpCgooZGVmdW4gZWdsb3QtcmFu Z2UtcmVnaW9uIChyYW5nZSAmb3B0aW9uYWwgbWFya2VycykKICAiUmV0dXJuIGEgY29ucyAoQkVH IC4gRU5EKSBvZiBwb3NpdGlvbnMgcmVwcmVzZW50aW5nIExTUCBSQU5HRS4KSWYgb3B0aW9uYWwg TUFSS0VSUywgbWFrZSBtYXJrZXJzIGluc3RlYWQuIgogIChsZXQqICgoc3QgKHBsaXN0LWdldCBy YW5nZSA6c3RhcnQpKQogICAgICAgICAoYmVnIChlZ2xvdC0tbHNwLXBvc2l0aW9uLXRvLXBvaW50 IHN0IG1hcmtlcnMpKQogICAgICAgICAoZW5kIChlZ2xvdC0tbHNwLXBvc2l0aW9uLXRvLXBvaW50 IChwbGlzdC1nZXQgcmFuZ2UgOmVuZCkgbWFya2VycykpKQogICAgKGNvbnMgYmVnIGVuZCkpKQoK KGRlZnVuIGVnbG90LXNlcnZlci1jYXBhYmxlICgmcmVzdCBmZWF0cykKICAiRGV0ZXJtaW5lIGlm IGN1cnJlbnQgc2VydmVyIGlzIGNhcGFibGUgb2YgRkVBVFMuIgogICh1bmxlc3MgKGNsLXNvbWUg KGxhbWJkYSAoZmVhdCkKICAgICAgICAgICAgICAgICAgICAgKG1lbXEgZmVhdCBlZ2xvdC1pZ25v cmVkLXNlcnZlci1jYXBhYmlsaXRpZXMpKQogICAgICAgICAgICAgICAgICAgZmVhdHMpCiAgICAo Y2wtbG9vcCBmb3IgY2FwcyA9IChlZ2xvdC0tY2FwYWJpbGl0aWVzIChlZ2xvdC0tY3VycmVudC1z ZXJ2ZXItb3ItbG9zZSkpCiAgICAgICAgICAgICB0aGVuIChjYWRyIHByb2JlKQogICAgICAgICAg ICAgZm9yIChmZWF0IC4gbW9yZSkgb24gZmVhdHMKICAgICAgICAgICAgIGZvciBwcm9iZSA9IChw bGlzdC1tZW1iZXIgY2FwcyBmZWF0KQogICAgICAgICAgICAgaWYgKG5vdCBwcm9iZSkgZG8gKGNs LXJldHVybiBuaWwpCiAgICAgICAgICAgICBpZiAoZXEgKGNhZHIgcHJvYmUpIDpqc29uLWZhbHNl KSBkbyAoY2wtcmV0dXJuIG5pbCkKICAgICAgICAgICAgIGlmIChub3QgKGxpc3RwIChjYWRyIHBy b2JlKSkpIGRvIChjbC1yZXR1cm4gKGlmIG1vcmUgbmlsIChjYWRyIHByb2JlKSkpCiAgICAgICAg ICAgICBmaW5hbGx5IChjbC1yZXR1cm4gKG9yIChjYWRyIHByb2JlKSB0KSkpKSkKCihkZWZ1biBl Z2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlICgmcmVzdCBmZWF0cykKICAiTGlrZSBgZWdsb3Qt c2VydmVyLWNhcGFibGUnLCBidXQgbWF5YmUgZXJyb3Igb3V0LiIKICAobGV0ICgocmV0dmFsIChh cHBseSAjJ2VnbG90LXNlcnZlci1jYXBhYmxlIGZlYXRzKSkpCiAgICAodW5sZXNzIHJldHZhbAog ICAgICAoZWdsb3QtLWVycm9yICJVbnN1cHBvcnRlZCBvciBpZ25vcmVkIExTUCBjYXBhYmlsaXR5 IGAlcyciCiAgICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAjJ3N5bWJvbC1uYW1lIGZlYXRz ICIgIikpKQogICAgcmV0dmFsKSkKCgwKOzs7IFByb2Nlc3Mvc2VydmVyIG1hbmFnZW1lbnQKKGRl ZnVuIGVnbG90LS1tYWpvci1tb2RlcyAocykgIk1ham9yIG1vZGVzIHNlcnZlciBTIGlzIHJlc3Bv bnNpYmxlIGZvci4iCiAgKG1hcGNhciAjJ2NhciAoZWdsb3QtLWxhbmd1YWdlcyBzKSkpCgooZGVm dW4gZWdsb3QtLWxhbmd1YWdlLWlkcyAocykgIkxTUCBMYW5ndWFnZSBJRCBzdHJpbmdzIGZvciBz ZXJ2ZXIgUydzIG1vZGVzLiIKICAobWFwY2FyICMnY2RyIChlZ2xvdC0tbGFuZ3VhZ2VzIHMpKSkK CihjbC1kZWZtZXRob2QgaW5pdGlhbGl6ZS1pbnN0YW5jZSA6YmVmb3JlICgoX3NlcnZlciBlZ2xv dC1sc3Atc2VydmVyKSAmb3B0aW9uYWwgYXJncykKICAoY2wtcmVtZiBhcmdzIDppbml0aWFsaXph dGlvbk9wdGlvbnMpKQoKKGRlZnZhciBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0IChtYWtlLWhh c2gtdGFibGUgOnRlc3QgIydlcXVhbCkKICAiS2V5cyBhcmUgcHJvamVjdHMuICBWYWx1ZXMgYXJl IGxpc3RzIG9mIHByb2Nlc3Nlcy4iKQoKKGRlZnVuIGVnbG90LXNodXRkb3duIChzZXJ2ZXIgJm9w dGlvbmFsIF9pbnRlcmFjdGl2ZSB0aW1lb3V0IHByZXNlcnZlLWJ1ZmZlcnMpCiAgIlBvbGl0ZWx5 IGFzayBTRVJWRVIgdG8gcXVpdC4KSW50ZXJhY3RpdmVseSwgcmVhZCBTRVJWRVIgZnJvbSB0aGUg bWluaWJ1ZmZlciB1bmxlc3MgdGhlcmUgaXMKb25seSBvbmUgYW5kIGl0J3MgbWFuYWdpbmcgdGhl IGN1cnJlbnQgYnVmZmVyLgoKRm9yY2VmdWxseSBxdWl0IGl0IGlmIGl0IGRvZXNuJ3QgcmVzcG9u ZCB3aXRoaW4gVElNRU9VVCBzZWNvbmRzLgpUSU1FT1VUIGRlZmF1bHRzIHRvIDEuNSBzZWNvbmRz LiAgRG9uJ3QgbGVhdmUgdGhpcyBmdW5jdGlvbiB3aXRoCnRoZSBzZXJ2ZXIgc3RpbGwgcnVubmlu Zy4KCklmIFBSRVNFUlZFLUJVRkZFUlMgaXMgbm9uLW5pbCAoaW50ZXJhY3RpdmVseSwgd2hlbiBj YWxsZWQgd2l0aCBhCnByZWZpeCBhcmd1bWVudCksIGRvIG5vdCBraWxsIGV2ZW50cyBhbmQgb3V0 cHV0IGJ1ZmZlcnMgb2YKU0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1yZWFk LXNlcnZlciAiU2h1dGRvd24gd2hpY2ggc2VydmVyIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpCiAgICAgICAgICAgICAgICAg ICAgIHQgbmlsIGN1cnJlbnQtcHJlZml4LWFyZykpCiAgKGVnbG90LS1tZXNzYWdlICJBc2tpbmcg JXMgcG9saXRlbHkgdG8gdGVybWluYXRlIiAoanNvbnJwYy1uYW1lIHNlcnZlcikpCiAgKHVud2lu ZC1wcm90ZWN0CiAgICAgIChwcm9nbgogICAgICAgIChzZXRmIChlZ2xvdC0tc2h1dGRvd24tcmVx dWVzdGVkIHNlcnZlcikgdCkKICAgICAgICAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyIDpzaHV0ZG93 biBuaWwgOnRpbWVvdXQgKG9yIHRpbWVvdXQgMS41KSkKICAgICAgICAoanNvbnJwYy1ub3RpZnkg c2VydmVyIDpleGl0IG5pbCkpCiAgICA7OyBOb3cgYXNrIGpzb25ycGMuZWwgdG8gc2h1dCBkb3du IHRoZSBzZXJ2ZXIuCiAgICAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIgKG5vdCBwcmVzZXJ2ZS1i dWZmZXJzKSkKICAgICh1bmxlc3MgcHJlc2VydmUtYnVmZmVycyAoa2lsbC1idWZmZXIgKGpzb25y cGMtZXZlbnRzLWJ1ZmZlciBzZXJ2ZXIpKSkpKQoKKGRlZnVuIGVnbG90LXNodXRkb3duLWFsbCAo Jm9wdGlvbmFsIHByZXNlcnZlLWJ1ZmZlcnMpCiAgIlBvbGl0ZWx5IGFzayBhbGwgbGFuZ3VhZ2Ug c2VydmVycyB0byBxdWl0LCBpbiBvcmRlci4KUFJFU0VSVkUtQlVGRkVSUyBhcyBpbiBgZWdsb3Qt c2h1dGRvd24nLCB3aGljaCBzZWUuIgogIChpbnRlcmFjdGl2ZSAobGlzdCBjdXJyZW50LXByZWZp eC1hcmcpKQogIChjbC1sb29wIGZvciBzcyBiZWluZyB0aGUgaGFzaC12YWx1ZXMgb2YgZWdsb3Qt LXNlcnZlcnMtYnktcHJvamVjdAogICAgICAgICAgIGRvICh3aXRoLWRlbW90ZWQtZXJyb3JzICJb ZWdsb3RdIHNodXRkb3duIGFsbDogJXMiCiAgICAgICAgICAgICAgICAoY2wtbG9vcCBmb3IgcyBp biBzcyBkbyAoZWdsb3Qtc2h1dGRvd24gcyBuaWwgbmlsIHByZXNlcnZlLWJ1ZmZlcnMpKSkpKQoK KGRlZnZhciBlZ2xvdC0tc2VydmVycy1ieS14cmVmZWQtZmlsZSAobWFrZS1oYXNoLXRhYmxlIDp0 ZXN0ICdlcXVhbCkpCgooZGVmdW4gZWdsb3QtLW9uLXNodXRkb3duIChzZXJ2ZXIpCiAgIkNhbGxl ZCBieSBqc29ucnBjLmVsIHdoZW4gU0VSVkVSIGlzIGFscmVhZHkgZGVhZC4iCiAgOzsgVHVybiBv ZmYgYGVnbG90LS1tYW5hZ2VkLW1vZGUnIHdoZXJlIGFwcHJvcHJpYXRlLgogIChkb2xpc3QgKGJ1 ZmZlciAoZWdsb3QtLW1hbmFnZWQtYnVmZmVycyBzZXJ2ZXIpKQogICAgKGxldCAoOzsgQXZvaWQg ZHVwbGljYXRlIHNodXRkb3ducyAoZ2l0aHViIzM4OSkKICAgICAgICAgIChlZ2xvdC1hdXRvc2h1 dGRvd24gbmlsKSkKICAgICAgKGVnbG90LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZmZlciAoZWdsb3Qt LW1hbmFnZWQtbW9kZS1vZmYpKSkpCiAgOzsgS2lsbCBhbnkgZXhwZW5zaXZlIHdhdGNoZXMKICAo bWFwaGFzaCAobGFtYmRhIChfZGlyIHdhdGNoLWFuZC1pZHMpCiAgICAgICAgICAgICAoZmlsZS1u b3RpZnktcm0td2F0Y2ggKGNhciB3YXRjaC1hbmQtaWRzKSkpCiAgICAgICAgICAgKGVnbG90LS1m aWxlLXdhdGNoZXMgc2VydmVyKSkKICA7OyBTZXZlciB0aGUgcHJvamVjdC9zZXJ2ZXIgcmVsYXRp b25zaGlwIGZvciBgc2VydmVyJwogIChzZXRmIChnZXRoYXNoIChlZ2xvdC0tcHJvamVjdCBzZXJ2 ZXIpIGVnbG90LS1zZXJ2ZXJzLWJ5LXByb2plY3QpCiAgICAgICAgKGRlbHEgc2VydmVyCiAgICAg ICAgICAgICAgKGdldGhhc2ggKGVnbG90LS1wcm9qZWN0IHNlcnZlcikgZWdsb3QtLXNlcnZlcnMt YnktcHJvamVjdCkpKQogIChtYXBoYXNoIChsYW1iZGEgKGYgcykKICAgICAgICAgICAgICh3aGVu IChlcSBzIHNlcnZlcikgKHJlbWhhc2ggZiBlZ2xvdC0tc2VydmVycy1ieS14cmVmZWQtZmlsZSkp KQogICAgICAgICAgIGVnbG90LS1zZXJ2ZXJzLWJ5LXhyZWZlZC1maWxlKQogIChjb25kICgoZWds b3QtLXNodXRkb3duLXJlcXVlc3RlZCBzZXJ2ZXIpCiAgICAgICAgIHQpCiAgICAgICAgKChub3Qg KGVnbG90LS1pbmhpYml0LWF1dG9yZWNvbm5lY3Qgc2VydmVyKSkKICAgICAgICAgKGVnbG90LS13 YXJuICJSZWNvbm5lY3RpbmcgYWZ0ZXIgdW5leHBlY3RlZCBzZXJ2ZXIgZXhpdC4iKQogICAgICAg ICAoZWdsb3QtcmVjb25uZWN0IHNlcnZlcikpCiAgICAgICAgKCh0aW1lcnAgKGVnbG90LS1pbmhp Yml0LWF1dG9yZWNvbm5lY3Qgc2VydmVyKSkKICAgICAgICAgKGVnbG90LS13YXJuICJOb3QgYXV0 by1yZWNvbm5lY3RpbmcsIGxhc3Qgb25lIGRpZG4ndCBsYXN0IGxvbmcuIikpKSkKCihkZWZ1biBl Z2xvdC0tYWxsLW1ham9yLW1vZGVzICgpCiAgIlJldHVybiBhbGwga25vd24gbWFqb3IgbW9kZXMu IgogIChsZXQgKChyZXR2YWwpKQogICAgKG1hcGF0b21zIChsYW1iZGEgKHN5bSkKICAgICAgICAg ICAgICAgICh3aGVuIChwbGlzdC1tZW1iZXIgKHN5bWJvbC1wbGlzdCBzeW0pICdkZXJpdmVkLW1v ZGUtcGFyZW50KQogICAgICAgICAgICAgICAgICAocHVzaCBzeW0gcmV0dmFsKSkpKQogICAgcmV0 dmFsKSkKCihkZWZ2YXIgZWdsb3QtY29tbWFuZC1oaXN0b3J5IG5pbAogICJIaXN0b3J5IG9mIENP TlRBQ1QgYXJndW1lbnRzIHRvIGBlZ2xvdCcuIikKCihkZWZ1biBlZ2xvdC0tbG9va3VwLW1vZGUg KG1vZGUpCiAgIkxvb2t1cCBgZWdsb3Qtc2VydmVyLXByb2dyYW1zJyBmb3IgTU9ERS4KUmV0dXJu IChMQU5HVUFHRVMgLiBDT05UQUNULVBST1hZKS4KCk1BTkFHRUQtTU9ERVMgaXMgYSBsaXN0IHdp dGggTU9ERSBhcyBpdHMgZmlyc3QgZWxlbWVudC4KU3Vic2VxdWVudCBlbGVtZW50cyBhcmUgb3Ro ZXIgbWFqb3IgbW9kZXMgYWxzbyBwb3RlbnRpYWxseQptYW5hZ2VkIGJ5IHRoZSBzZXJ2ZXIgdGhh dCBpcyB0byBtYW5hZ2UgTU9ERS4KCkxBTkdVQUdFLUlEUyBpcyBhIGxpc3Qgb2YgdGhlIHNhbWUg bGVuZ3RoIGFzIE1BTkFHRUQtTU9ERVMuICBFYWNoCmVsZW0gaXMgZGVyaXZlZCBmcm9tIHRoZSBj b3JyZXNwb25kaW5nIG1vZGUgbmFtZSwgaWYgbm90CnNwZWNpZmllZCBpbiBgZWdsb3Qtc2VydmVy LXByb2dyYW1zJyAod2hpY2ggc2VlKS4KCkNPTlRBQ1QtUFJPWFkgaXMgdGhlIHZhbHVlIG9mIHRo ZSBjb3JyZXNwb25kaW5nCmBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnIGVudHJ5LiIKICAoY2wtZmxl dCAoKGxhbmd1YWdlcyAobWFpbi1tb2RlLXN5bSBzcGVjcykKICAgICAgICAgICAgICAobGV0KiAo KHJlcwogICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAoanNvbnJwYy1sYW1iZGEgKHN5bSAm a2V5IGxhbmd1YWdlLWlkICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25zIHN5bQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChvciBsYW5ndWFnZS1pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob3IgKGdldCBzeW0gJ2VnbG90LWxhbmd1YWdlLWlkKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXCg/Oi10c1xcKT8tbW9k ZSQiICIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN5 bWJvbC1uYW1lIHN5bSkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjcykp CiAgICAgICAgICAgICAgICAgICAgIChoZWFkIChjbC1maW5kIG1haW4tbW9kZS1zeW0gcmVzIDpr ZXkgIydjYXIpKSkKICAgICAgICAgICAgICAgIChjb25zIGhlYWQgKGRlbHEgaGVhZCByZXMpKSkp KQogICAgKGNsLWxvb3AKICAgICBmb3IgKG1vZGVzIC4gY29udGFjdCkgaW4gZWdsb3Qtc2VydmVy LXByb2dyYW1zCiAgICAgZm9yIHNwZWNzID0gKG1hcGNhciAjJ2VnbG90LS1lbnN1cmUtbGlzdAog ICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChvciAoc3ltYm9scCBtb2RlcykgKGtleXdvcmRw IChjYWRyIG1vZGVzKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgbW9kZXMp IG1vZGVzKSkKICAgICB0aGVyZWlzIChjbC1zb21lIChsYW1iZGEgKHNwZWMpCiAgICAgICAgICAg ICAgICAgICAgICAgIChjbC1kZXN0cnVjdHVyaW5nLWJpbmQgKHN5bSAma2V5ICZhbGxvdy1vdGhl ci1rZXlzKSBzcGVjCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAocHJvdmlkZWQtbW9k ZS1kZXJpdmVkLXAgbW9kZSBzeW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u cyAobGFuZ3VhZ2VzIHN5bSBzcGVjcykgY29udGFjdCkpKSkKICAgICAgICAgICAgICAgICAgICAg IHNwZWNzKSkpKQoKKGRlZnVuIGVnbG90LS1ndWVzcy1jb250YWN0ICgmb3B0aW9uYWwgaW50ZXJh Y3RpdmUpCiAgIkhlbHBlciBmb3IgYGVnbG90Jy4KUmV0dXJuIChNQU5BR0VELU1PREVTIFBST0pF Q1QgQ0xBU1MgQ09OVEFDVCBMQU5HLUlEUykuICBJZiBJTlRFUkFDVElWRSBpcwpub24tbmlsLCBt YXliZSBwcm9tcHQgdXNlciwgZWxzZSBlcnJvciBhcyBzb29uIGFzIHNvbWV0aGluZyBjYW4ndApi ZSBndWVzc2VkLiIKICAobGV0KiAoKHByb2plY3QgKGVnbG90LS1jdXJyZW50LXByb2plY3QpKQog ICAgICAgICAoZ3Vlc3NlZC1tb2RlIChpZiBidWZmZXItZmlsZS1uYW1lIG1ham9yLW1vZGUpKQog ICAgICAgICAoZ3Vlc3NlZC1tb2RlLW5hbWUgKGFuZCBndWVzc2VkLW1vZGUgKHN5bWJvbC1uYW1l IGd1ZXNzZWQtbW9kZSkpKQogICAgICAgICAobWFpbi1tb2RlCiAgICAgICAgICAoY29uZAogICAg ICAgICAgICgoYW5kIGludGVyYWN0aXZlCiAgICAgICAgICAgICAgICAgKG9yICg+PSAocHJlZml4 LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKSAxNikKICAgICAgICAgICAgICAgICAg ICAgKG5vdCBndWVzc2VkLW1vZGUpKSkKICAgICAgICAgICAgKGludGVybgogICAgICAgICAgICAg KGNvbXBsZXRpbmctcmVhZAogICAgICAgICAgICAgICJbZWdsb3RdIFN0YXJ0IGEgc2VydmVyIHRv IG1hbmFnZSBidWZmZXJzIG9mIHdoYXQgbWFqb3IgbW9kZT8gIgogICAgICAgICAgICAgIChtYXBj YXIgIydzeW1ib2wtbmFtZSAoZWdsb3QtLWFsbC1tYWpvci1tb2RlcykpIG5pbCB0CiAgICAgICAg ICAgICAgZ3Vlc3NlZC1tb2RlLW5hbWUgbmlsIGd1ZXNzZWQtbW9kZS1uYW1lIG5pbCkpKQogICAg ICAgICAgICgobm90IGd1ZXNzZWQtbW9kZSkKICAgICAgICAgICAgKGVnbG90LS1lcnJvciAiQ2Fu J3QgZ3Vlc3MgbW9kZSB0byBtYW5hZ2UgZm9yIGAlcyciIChjdXJyZW50LWJ1ZmZlcikpKQogICAg ICAgICAgICh0IGd1ZXNzZWQtbW9kZSkpKQogICAgICAgICAobGFuZ3VhZ2VzLWFuZC1jb250YWN0 IChlZ2xvdC0tbG9va3VwLW1vZGUgbWFpbi1tb2RlKSkKICAgICAgICAgKG1hbmFnZWQtbW9kZXMg KG1hcGNhciAjJ2NhciAoY2FyIGxhbmd1YWdlcy1hbmQtY29udGFjdCkpKQogICAgICAgICAobGFu Z3VhZ2UtaWRzIChtYXBjYXIgIydjZHIgKGNhciBsYW5ndWFnZXMtYW5kLWNvbnRhY3QpKSkKICAg ICAgICAgKGd1ZXNzIChjZHIgbGFuZ3VhZ2VzLWFuZC1jb250YWN0KSkKICAgICAgICAgKGd1ZXNz IChpZiAoZnVuY3Rpb25wIGd1ZXNzKQogICAgICAgICAgICAgICAgICAgIChwY2FzZSAoY2RyIChm dW5jLWFyaXR5IGd1ZXNzKSkKICAgICAgICAgICAgICAgICAgICAgICgxIChmdW5jYWxsIGd1ZXNz IGludGVyYWN0aXZlKSkKICAgICAgICAgICAgICAgICAgICAgIChfIChmdW5jYWxsIGd1ZXNzIGlu dGVyYWN0aXZlIHByb2plY3QpKSkKICAgICAgICAgICAgICAgICAgZ3Vlc3MpKQogICAgICAgICAo Y2xhc3MgKG9yIChhbmQgKGNvbnNwIGd1ZXNzKSAoc3ltYm9scCAoY2FyIGd1ZXNzKSkKICAgICAg ICAgICAgICAgICAgICAgICAgIChwcm9nMSAodW5sZXNzIGN1cnJlbnQtcHJlZml4LWFyZyAoY2Fy IGd1ZXNzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZ3Vlc3MgKGNkciBndWVz cykpKSkKICAgICAgICAgICAgICAgICAgICAnZWdsb3QtbHNwLXNlcnZlcikpCiAgICAgICAgIChw cm9ncmFtIChhbmQgKGxpc3RwIGd1ZXNzKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdw IChjYXIgZ3Vlc3MpKQogICAgICAgICAgICAgICAgICAgICAgIDs7IEEgc2Vjb25kIGVsZW1lbnQg bWlnaHQgYmUgdGhlIHBvcnQgb2YgYSAoaG9zdCwgcG9ydCkKICAgICAgICAgICAgICAgICAgICAg ICA7OyBwYWlyLCBidXQgaW4gdGhhdCBjYXNlIGl0IGlzIG5vdCBhIHN0cmluZy4KICAgICAgICAg ICAgICAgICAgICAgICAob3IgKG51bGwgKGNkciBndWVzcykpIChzdHJpbmdwIChjYWRyIGd1ZXNz KSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGNhciBndWVzcykpKQogICAgICAgICAoYmFzZS1w cm9tcHQKICAgICAgICAgIChhbmQgaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIkVudGVyIHBy b2dyYW0gdG8gZXhlY3V0ZSAob3IgPGhvc3Q+Ojxwb3J0Pik6ICIpKQogICAgICAgICAoZnVsbC1w cm9ncmFtLWludm9jYXRpb24KICAgICAgICAgIChhbmQgcHJvZ3JhbQogICAgICAgICAgICAgICAo Y2wtZXZlcnkgIydzdHJpbmdwIGd1ZXNzKQogICAgICAgICAgICAgICAoY29tYmluZS1hbmQtcXVv dGUtc3RyaW5ncyBndWVzcykpKQogICAgICAgICAocHJvbXB0CiAgICAgICAgICAoYW5kIGJhc2Ut cHJvbXB0CiAgICAgICAgICAgICAgIChjb25kIChjdXJyZW50LXByZWZpeC1hcmcgYmFzZS1wcm9t cHQpCiAgICAgICAgICAgICAgICAgICAgICgobnVsbCBndWVzcykKICAgICAgICAgICAgICAgICAg ICAgIChmb3JtYXQgIltlZ2xvdF0gQ291bGRuJ3QgZ3Vlc3MgTFNQIHNlcnZlciBmb3IgYCVzJ1xu JXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW4tbW9kZSBiYXNlLXByb21wdCkp CiAgICAgICAgICAgICAgICAgICAgICgoYW5kIHByb2dyYW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG5vdCAoZmlsZS1uYW1lLWFic29sdXRlLXAgcHJvZ3JhbSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKGVnbG90LS1leGVjdXRhYmxlLWZpbmQgcHJvZ3JhbSB0KSkpCiAg ICAgICAgICAgICAgICAgICAgICAoaWYgZnVsbC1wcm9ncmFtLWludm9jYXRpb24KICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29uY2F0IChmb3JtYXQgIltlZ2xvdF0gSSBndWVzcyB5b3Ugd2Fu dCB0byBydW4gYCVzJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZnVsbC1wcm9ncmFtLWludm9jYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZm9ybWF0ICIsIGJ1dCBJIGNhbid0IGZpbmQgYCVzJyBpbiBQQVRIISIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJcbiIgYmFzZS1wcm9tcHQpCiAgICAgICAgICAgICAgICAgICAgICAg IChlZ2xvdC0tZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgImAlcycgbm90 IGZvdW5kIGluIFBBVEgsIGJ1dCBjYW4ndCBmb3JtIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiIGFuIGludGVyYWN0aXZlIHByb21wdCBmb3IgaGVscCB5b3UgZml4IgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoaXMuIikKICAgICAgICAgICAgICAgICAgICAg ICAgIHByb2dyYW0gZ3Vlc3MpKSkpKSkKICAgICAgICAgKGlucHV0IChhbmQgcHJvbXB0IChyZWFk LXNoZWxsLWNvbW1hbmQgcHJvbXB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZ1bGwtcHJvZ3JhbS1pbnZvY2F0aW9uCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlZ2xvdC1jb21tYW5kLWhpc3RvcnkpKSkKICAg ICAgICAgKGNvbnRhY3QKICAgICAgICAgIChpZiBpbnB1dAogICAgICAgICAgICAgIChpZiAoc3Ry aW5nLW1hdGNoCiAgICAgICAgICAgICAgICAgICAiXltcc1x0XSpcXCguKlxcKTpcXChbWzpkaWdp dDpdXStcXClbXHNcdF0qJCIgaW5wdXQpCiAgICAgICAgICAgICAgICAgIDs7IDxob3N0Pjo8cG9y dD4gc3BlY2lhbCBjYXNlIChidWcjNjc2ODIpCiAgICAgICAgICAgICAgICAgIChsaXN0IChtYXRj aC1zdHJpbmcgMSBpbnB1dCkKICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy10by1udW1i ZXIgKG1hdGNoLXN0cmluZyAyIGlucHV0KSkpCiAgICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5n LWFuZC11bnF1b3RlIGlucHV0KSkKICAgICAgICAgICAgZ3Vlc3MpKSkKICAgIChsaXN0IG1hbmFn ZWQtbW9kZXMgcHJvamVjdCBjbGFzcyBjb250YWN0IGxhbmd1YWdlLWlkcykpKQoKKGRlZnZhciBl Z2xvdC1sc3AtY29udGV4dCBuaWwKICAiRHluYW1pY2FsbHkgbm9uLW5pbCB3aGVuIHNlYXJjaGlu ZyBmb3IgcHJvamVjdHMgaW4gTFNQIGNvbnRleHQuIikKCihkZWZ1biBlZ2xvdC0tY3VycmVudC1w cm9qZWN0ICgpCiAgIlJldHVybiBhIHByb2plY3Qgb2JqZWN0IGZvciBFZ2xvdCdzIExTUCBwdXJw b3Nlcy4KVGhpcyByZWxpZXMgb24gYHByb2plY3QtY3VycmVudCcgYW5kIHRodXMgb24KYHByb2pl Y3QtZmluZC1mdW5jdGlvbnMnLiAgRnVuY3Rpb25zIGluIHRoZSBsYXR0ZXIKdmFyaWFibGUgKHdo aWNoIHNlZSkgY2FuIHF1ZXJ5IHRoZSB2YWx1ZSBgZWdsb3QtbHNwLWNvbnRleHQnIHRvCmRlY2lk ZSB3aGV0aGVyIGEgZ2l2ZW4gZGlyZWN0b3J5IGlzIGEgcHJvamVjdCBjb250YWluaW5nIGEKc3Vp dGFibGUgcm9vdCBkaXJlY3RvcnkgZm9yIGEgZ2l2ZW4gTFNQIHNlcnZlcidzIHB1cnBvc2VzLiIK ICAobGV0ICgoZWdsb3QtbHNwLWNvbnRleHQgdCkpCiAgICAob3IgKHByb2plY3QtY3VycmVudCkK ICAgICAgICBgKHRyYW5zaWVudCAuICwoZXhwYW5kLWZpbGUtbmFtZSBkZWZhdWx0LWRpcmVjdG9y eSkpKSkpCgooY2wtZGVmbWV0aG9kIHByb2plY3Qtcm9vdCAoKHByb2plY3QgKGhlYWQgZWdsb3Qt LXByb2plY3QpKSkKICAoY2FkciBwcm9qZWN0KSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBlZ2xv dCAobWFuYWdlZC1tYWpvci1tb2RlcyBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWRz CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCBfaW50ZXJhY3RpdmUp CiAgIlN0YXJ0IExTUCBzZXJ2ZXIgZm9yIFBST0pFQ1QncyBidWZmZXJzIHVuZGVyIE1BTkFHRUQt TUFKT1ItTU9ERVMuCgpUaGlzIHN0YXJ0cyBhIExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCAoTFNQ KSBzZXJ2ZXIgc3VpdGFibGUgZm9yCnRoZSBidWZmZXJzIG9mIFBST0pFQ1Qgd2hvc2UgYG1ham9y LW1vZGUnIGlzIGFtb25nCk1BTkFHRUQtTUFKT1ItTU9ERVMuICBDTEFTUyBpcyB0aGUgY2xhc3Mg b2YgdGhlIExTUCBzZXJ2ZXIgdG8Kc3RhcnQgYW5kIENPTlRBQ1Qgc3BlY2lmaWVzIGhvdyB0byBj b25uZWN0IHRvIHRoZSBzZXJ2ZXIuCgpJbnRlcmFjdGl2ZWx5LCB0aGUgY29tbWFuZCBhdHRlbXB0 cyB0byBndWVzcyBNQU5BR0VELU1BSk9SLU1PREVTLApDTEFTUywgQ09OVEFDVCwgYW5kIExBTkdV QUdFLUlEUyBmcm9tIGBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLAphY2NvcmRpbmcgdG8gdGhlIGN1 cnJlbnQgYnVmZmVyJ3MgYG1ham9yLW1vZGUnLiAgUFJPSkVDVCBpcwpndWVzc2VkIGZyb20gYHBy b2plY3QtZmluZC1mdW5jdGlvbnMnLiAgVGhlIHNlYXJjaCBmb3IgYWN0aXZlCnByb2plY3RzIGlu IHRoaXMgY29udGV4dCBiaW5kcyBgZWdsb3QtbHNwLWNvbnRleHQnICh3aGljaCBzZWUpLgoKSWYg aXQgY2FuJ3QgZ3Vlc3MsIGl0IHByb21wdHMgdGhlIHVzZXIgZm9yIHRoZSBtb2RlIGFuZCB0aGUK c2VydmVyLiAgV2l0aCBhIHNpbmdsZSBcXFt1bml2ZXJzYWwtYXJndW1lbnRdIHByZWZpeCBhcmcs IGl0CmFsd2F5cyBwcm9tcHRzIGZvciBDT01NQU5ELiAgV2l0aCB0d28gXFxbdW5pdmVyc2FsLWFy Z3VtZW50XSwgaXQKYWxzbyBhbHdheXMgcHJvbXB0cyBmb3IgTUFOQUdFRC1NQUpPUi1NT0RFLgoK VGhlIExTUCBzZXJ2ZXIgb2YgQ0xBU1MgaXMgc3RhcnRlZCAob3IgY29udGFjdGVkKSB2aWEgQ09O VEFDVC4KSWYgdGhpcyBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgY3VycmVudCAqYW5kIGZ1dHVy ZSogZmlsZQpidWZmZXJzIG9mIE1BTkFHRUQtTUFKT1ItTU9ERSBpbnNpZGUgUFJPSkVDVCBiZWNv bWUgXCJtYW5hZ2VkXCIKYnkgdGhlIExTUCBzZXJ2ZXIsIG1lYW5pbmcgdGhlIGluZm9ybWF0aW9u IGFib3V0IHRoZWlyIGNvbnRlbnRzIGlzCmV4Y2hhbmdlZCBwZXJpb2RpY2FsbHkgd2l0aCB0aGUg c2VydmVyIHRvIHByb3ZpZGUgZW5oYW5jZWQKY29kZS1hbmFseXNpcyB2aWEgYHhyZWYtZmluZC1k ZWZpbml0aW9ucycsIGBmbHltYWtlLW1vZGUnLApgZWxkb2MtbW9kZScsIGFuZCBgY29tcGxldGlv bi1hdC1wb2ludCcsIGFtb25nIG90aGVycy4KClBST0pFQ1QgaXMgYSBwcm9qZWN0IG9iamVjdCBh cyByZXR1cm5lZCBieSBgcHJvamVjdC1jdXJyZW50Jy4KCkNMQVNTIGlzIGEgc3ViY2xhc3Mgb2Yg YGVnbG90LWxzcC1zZXJ2ZXInLgoKQ09OVEFDVCBzcGVjaWZpZXMgaG93IHRvIGNvbnRhY3QgdGhl IHNlcnZlci4gIEl0IGlzIGEKa2V5d29yZC12YWx1ZSBwbGlzdCB1c2VkIHRvIGluaXRpYWxpemUg Q0xBU1Mgb3IgYSBwbGFpbiBsaXN0IGFzCmRlc2NyaWJlZCBpbiBgZWdsb3Qtc2VydmVyLXByb2dy YW1zJywgd2hpY2ggc2VlLgoKTEFOR1VBR0UtSURTIGlzIGEgbGlzdCBvZiBsYW5ndWFnZSBJRCBz dHJpbmcgdG8gc2VuZCB0byB0aGUKc2VydmVyIGZvciBlYWNoIGVsZW1lbnQgaW4gTUFOQUdFRC1N QUpPUi1NT0RFUy4KCklOVEVSQUNUSVZFIGlzIGlnbm9yZWQgYW5kIHByb3ZpZGVkIGZvciBiYWNr d2FyZCBjb21wYXRpYmlsaXR5LiIKICAoaW50ZXJhY3RpdmUKICAgKGxldCAoKGN1cnJlbnQtc2Vy dmVyIChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogICAgICh1bmxlc3MgKG9yIChudWxsIGN1cnJl bnQtc2VydmVyKQogICAgICAgICAgICAgICAgICh5LW9yLW4tcCAiXApbZWdsb3RdIFNodXQgZG93 biBjdXJyZW50IGNvbm5lY3Rpb24gYmVmb3JlIGF0dGVtcHRpbmcgbmV3IG9uZT8iKSkKICAgICAg ICh1c2VyLWVycm9yICJbZWdsb3RdIENvbm5lY3Rpb24gYXR0ZW1wdCBhYm9ydGVkIGJ5IHVzZXIu IikpCiAgICAgKHByb2cxIChhcHBlbmQgKGVnbG90LS1ndWVzcy1jb250YWN0IHQpICcodCkpCiAg ICAgICAod2hlbiBjdXJyZW50LXNlcnZlciAoaWdub3JlLWVycm9ycyAoZWdsb3Qtc2h1dGRvd24g Y3VycmVudC1zZXJ2ZXIpKSkpKSkKICAoZWdsb3QtLWNvbm5lY3QgKGVnbG90LS1lbnN1cmUtbGlz dCBtYW5hZ2VkLW1ham9yLW1vZGVzKQogICAgICAgICAgICAgICAgICBwcm9qZWN0IGNsYXNzIGNv bnRhY3QKICAgICAgICAgICAgICAgICAgKGVnbG90LS1lbnN1cmUtbGlzdCBsYW5ndWFnZS1pZHMp KSkKCihkZWZ1biBlZ2xvdC1yZWNvbm5lY3QgKHNlcnZlciAmb3B0aW9uYWwgaW50ZXJhY3RpdmUp CiAgIlJlY29ubmVjdCB0byBTRVJWRVIuCklOVEVSQUNUSVZFIGlzIHQgaWYgY2FsbGVkIGludGVy YWN0aXZlbHkuIgogIChpbnRlcmFjdGl2ZSAobGlzdCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9y LWxvc2UpIHQpKQogICh3aGVuIChqc29ucnBjLXJ1bm5pbmctcCBzZXJ2ZXIpCiAgICAoaWdub3Jl LWVycm9ycyAoZWdsb3Qtc2h1dGRvd24gc2VydmVyIGludGVyYWN0aXZlIG5pbCAncHJlc2VydmUt YnVmZmVycykpKQogIChlZ2xvdC0tY29ubmVjdCAoZWdsb3QtLW1ham9yLW1vZGVzIHNlcnZlcikK ICAgICAgICAgICAgICAgICAgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikKICAgICAgICAgICAgICAg ICAgKGVpZWlvLW9iamVjdC1jbGFzcy1uYW1lIHNlcnZlcikKICAgICAgICAgICAgICAgICAgKGVn bG90LS1zYXZlZC1pbml0YXJncyBzZXJ2ZXIpCiAgICAgICAgICAgICAgICAgIChlZ2xvdC0tbGFu Z3VhZ2UtaWRzIHNlcnZlcikpCiAgKGVnbG90LS1tZXNzYWdlICJSZWNvbm5lY3RlZCEiKSkKCihk ZWZ2YXIgZWdsb3QtLW1hbmFnZWQtbW9kZSkgOyBmb3J3YXJkIGRlY2wKCjs7OyMjI2F1dG9sb2Fk CihkZWZ1biBlZ2xvdC1lbnN1cmUgKCkKICAiU3RhcnQgRWdsb3Qgc2Vzc2lvbiBmb3IgY3VycmVu dCBidWZmZXIgaWYgdGhlcmUgaXNuJ3Qgb25lLgoKT25seSB1c2UgdGhpcyBmdW5jdGlvbiAoaW4g bWFqb3IgbW9kZSBob29rcywgZXRjKSBpZiB5b3UgYXJlCmNvbmZpZGVudCB0aGF0IEVnbG90IGNh biBiZSBzdGFydGVkIHNhZmVseSBhbmQgZWZmaWNpZW50bHkgZm9yCipldmVyeSogYnVmZmVyIHZp c2l0ZWQgd2hlcmUgdGhlc2UgaG9va3MgbWF5IGV4ZWN1dGUuCgpTaW5jZSBpdCBpcyBkaWZmaWN1 bHQgdG8gZXN0YWJsaXNoIHRoaXMgY29uZmlkZW5jZSBmdWxseSwgaXQncwpvZnRlbiB3aXNlIHRv IHVzZSB0aGUgaW50ZXJhY3RpdmUgY29tbWFuZCBgZWdsb3QnIGluc3RlYWQuICBUaGlzCmNvbW1h bmQgb25seSBuZWVkcyB0byBiZSBpbnZva2VkIG9uY2UgcGVyIHByb2plY3QsIGFzIGFsbCBvdGhl cgpmaWxlcyBvZiBhIGdpdmVuIG1ham9yIG1vZGUgdmlzaXRlZCB3aXRoaW4gdGhlIHNhbWUgcHJv amVjdCB3aWxsCmF1dG9tYXRpY2FsbHkgYmVjb21lIG1hbmFnZWQgd2l0aCBubyBmdXJ0aGVyIHVz ZXIgaW50ZXJ2ZW50aW9uCm5lZWRlZC4iCiAgKGxldCAoKGJ1ZmZlciAoY3VycmVudC1idWZmZXIp KSkKICAgIChjbC1sYWJlbHMKICAgICAgICAoKG1heWJlLWNvbm5lY3QKICAgICAgICAgICAoKQog ICAgICAgICAgIChlZ2xvdC0td2hlbi1saXZlLWJ1ZmZlciBidWZmZXIKICAgICAgICAgICAgIChy ZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgIydtYXliZS1jb25uZWN0IHQpCiAgICAgICAg ICAgICAodW5sZXNzIGVnbG90LS1tYW5hZ2VkLW1vZGUKICAgICAgICAgICAgICAgKGNvbmRpdGlv bi1jYXNlLXVubGVzcy1kZWJ1ZyBvb3BzCiAgICAgICAgICAgICAgICAgICAoYXBwbHkgIydlZ2xv dC0tY29ubmVjdCAoZWdsb3QtLWd1ZXNzLWNvbnRhY3QpKQogICAgICAgICAgICAgICAgIChlcnJv ciAoZWdsb3QtLXdhcm4gKGVycm9yLW1lc3NhZ2Utc3RyaW5nIG9vcHMpKSkpKSkpKQogICAgICAo d2hlbiBidWZmZXItZmlsZS1uYW1lCiAgICAgICAgKGFkZC1ob29rICdwb3N0LWNvbW1hbmQtaG9v ayAjJ21heWJlLWNvbm5lY3QgJ2FwcGVuZCB0KSkpKSkKCihkZWZ1biBlZ2xvdC1ldmVudHMtYnVm ZmVyIChzZXJ2ZXIpCiAgIkRpc3BsYXkgZXZlbnRzIGJ1ZmZlciBmb3IgU0VSVkVSLgpVc2UgY3Vy cmVudCBzZXJ2ZXIncyBvciBmaXJzdCBhdmFpbGFibGUgRWdsb3QgZXZlbnRzIGJ1ZmZlci4iCiAg KGludGVyYWN0aXZlIChsaXN0IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogIChsZXQgKChidWZm ZXIgKGlmIHNlcnZlciAoanNvbnJwYy1ldmVudHMtYnVmZmVyIHNlcnZlcikKICAgICAgICAgICAg ICAgICAgKGNsLWZpbmQgIlxcKkVHTE9ULipldmVudHNcXCoiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChidWZmZXItbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAjJ2J1 ZmZlci1uYW1lIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKSkpKQogICAgKGlmIGJ1ZmZlciAoZGlzcGxh eS1idWZmZXIgYnVmZmVyKQogICAgICAoZWdsb3QtLWVycm9yICJDYW4ndCBmaW5kIGFuIEVnbG90 IGV2ZW50cyBidWZmZXIhIikpKSkKCihkZWZ1biBlZ2xvdC1zdGRlcnItYnVmZmVyIChzZXJ2ZXIp CiAgIkRpc3BsYXkgc3RkZXJyIGJ1ZmZlciBmb3IgU0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxp c3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkpCiAgKGRpc3BsYXktYnVmZmVyIChq c29ucnBjLXN0ZGVyci1idWZmZXIgc2VydmVyKSkpCgooZGVmdW4gZWdsb3QtZm9yZ2V0LXBlbmRp bmctY29udGludWF0aW9ucyAoc2VydmVyKQogICJGb3JnZXQgcGVuZGluZyByZXF1ZXN0cyBmb3Ig U0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1s b3NlKSkpCiAgKGpzb25ycGMtZm9yZ2V0LXBlbmRpbmctY29udGludWF0aW9ucyBzZXJ2ZXIpKQoK KGRlZnZhciBlZ2xvdC1jb25uZWN0LWhvb2sKICAnKGVnbG90LXNpZ25hbC1kaWRDaGFuZ2VDb25m aWd1cmF0aW9uKQogICJIb29rIHJ1biBhZnRlciBjb25uZWN0aW5nIGluIGBlZ2xvdC0tY29ubmVj dCcuIikKCihkZWZ2YXIgZWdsb3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2sKICAnKCkKICAiSG9v ayBydW4gYWZ0ZXIgYSBgZWdsb3QtbHNwLXNlcnZlcicgaW5zdGFuY2UgaXMgY3JlYXRlZC4KClRo YXQgaXMgYmVmb3JlIGEgY29ubmVjdGlvbiB3YXMgZXN0YWJsaXNoZWQuICBVc2UKYGVnbG90LWNv bm5lY3QtaG9vaycgdG8gaG9vayBpbnRvIHdoZW4gYSBjb25uZWN0aW9uIHdhcwpzdWNjZXNzZnVs bHkgZXN0YWJsaXNoZWQgYW5kIHRoZSBzZXJ2ZXIgb24gdGhlIG90aGVyIHNpZGUgaGFzCnJlY2Vp dmVkIHRoZSBpbml0aWFsaXppbmcgY29uZmlndXJhdGlvbi4KCkVhY2ggZnVuY3Rpb24gaXMgcGFz c2VkIHRoZSBzZXJ2ZXIgYXMgYW4gYXJndW1lbnQiKQoKKGRlZnVuIGVnbG90LS1jbWQgKGNvbnRh Y3QpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1jb25uZWN0Jy4iCiAgKGlmIChmaWxlLXJlbW90ZS1w IGRlZmF1bHQtZGlyZWN0b3J5KQogICAgICA7OyBUT0RPOiB0aGlzIHNlZW1zIGxpa2UgYSBidWcs IGFsdGhvdWdoIGl04oCZcyBldmVyeXdoZXJlLiBGb3IKICAgICAgOzsgc29tZSByZWFzb24sIGZv ciByZW1vdGUgY29ubmVjdGlvbnMgb25seSwgb3ZlciBhIHBpcGUsIHdlCiAgICAgIDs7IG5lZWQg dG8gdHVybiBvZmYgbGluZSBidWZmZXJpbmcgb24gdGhlIHR0eS4KICAgICAgOzsKICAgICAgOzsg Tm90IG9ubHkgZG9lcyB0aGlzIHNlZW0gbGlrZSB0aGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5 LAogICAgICA7OyBidXQgaXQgYWxtb3N0IGNlcnRhaW5seSBkb2VzbuKAmXQgd29yayBvbiBub24t dW5peCBzeXN0ZW1zLgogICAgICAobGlzdCBzaGVsbC1maWxlLW5hbWUgIi1jIgogICAgICAgICAg ICAoc3RyaW5nLWpvaW4gKGNvbnMgInN0dHkgcmF3ID4gL2Rldi9udWxsOyIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXBjYXIgIydzaGVsbC1xdW90ZS1hcmd1bWVudCBjb250YWN0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICIgIikpCiAgICBjb250YWN0KSkKCihkZWZ2YXIt bG9jYWwgZWdsb3QtLWNhY2hlZC1zZXJ2ZXIgbmlsCiAgIkEgY2FjaGVkIHJlZmVyZW5jZSB0byB0 aGUgY3VycmVudCBFZ2xvdCBzZXJ2ZXIuIikKCihkZWZ1biBlZ2xvdC0tY29ubmVjdCAobWFuYWdl ZC1tb2RlcyBwcm9qZWN0IGNsYXNzIGNvbnRhY3QgbGFuZ3VhZ2UtaWRzKQogICJDb25uZWN0IHRv IE1BTkFHRUQtTU9ERVMsIExBTkdVQUdFLUlEUywgUFJPSkVDVCwgQ0xBU1MgYW5kIENPTlRBQ1Qu ClRoaXMgZG9jc3RyaW5nIGFwcGVhc2VzIGNoZWNrZG9jLCB0aGF0J3MgYWxsLiIKICAobGV0KiAo KGRlZmF1bHQtZGlyZWN0b3J5IChwcm9qZWN0LXJvb3QgcHJvamVjdCkpCiAgICAgICAgIChuaWNr bmFtZSAocHJvamVjdC1uYW1lIHByb2plY3QpKQogICAgICAgICAocmVhZGFibGUtbmFtZSAoZm9y bWF0ICJFR0xPVCAoJXMvJXMpIiBuaWNrbmFtZSBtYW5hZ2VkLW1vZGVzKSkKICAgICAgICAgc2Vy dmVyLWluZm8KICAgICAgICAgKGNvbnRhY3QgKGlmIChmdW5jdGlvbnAgY29udGFjdCkgKGZ1bmNh bGwgY29udGFjdCkgY29udGFjdCkpCiAgICAgICAgIChpbml0YXJncwogICAgICAgICAgKGNvbmQg KChrZXl3b3JkcCAoY2FyIGNvbnRhY3QpKSBjb250YWN0KQogICAgICAgICAgICAgICAgKChpbnRl Z2VycCAoY2FkciBjb250YWN0KSkKICAgICAgICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAo bGlzdCAoZm9ybWF0ICIlczolcyIgKGNhciBjb250YWN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgY29udGFjdCkpKSkKICAgICAgICAgICAg ICAgICBgKDpwcm9jZXNzICwobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYXBwbHkgIydvcGVuLW5ldHdvcmstc3RyZWFtCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVhZGFibGUtbmFtZSBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2FyIGNvbnRhY3QpIChjYWRyIGNvbnRhY3QpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNkZHIgY29udGFjdCkpKSkpCiAgICAgICAgICAgICAgICAo KGFuZCAoc3RyaW5ncCAoY2FyIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgICAgICAgKGNsLWZp bmQtaWYgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9y IChlcSB4IDphdXRvcG9ydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlcSAoY2FyLXNhZmUgeCkgOmF1dG9wb3J0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250YWN0KSkKICAgICAgICAgICAgICAgICAoc2V0cSBzZXJ2ZXItaW5mbyAobGlz dCAiPGluZmVyaW9yIHByb2Nlc3M+IikpCiAgICAgICAgICAgICAgICAgYCg6cHJvY2VzcyAsKGpz b25ycGMtYXV0b3BvcnQtYm9vdHN0cmFwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlYWRhYmxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGFjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA6Y29ubmVjdC1hcmdzICcoOm5vcXVlcnkgdCkpKSkKICAgICAgICAgICAgICAg ICgoc3RyaW5ncCAoY2FyIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgIChsZXQqICgocHJvYmUg KGNsLXBvc2l0aW9uLWlmICMna2V5d29yZHAgY29udGFjdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgIChtb3JlLWluaXRhcmdzIChhbmQgcHJvYmUgKGNsLXN1YnNlcSBjb250YWN0IHByb2JlKSkp CiAgICAgICAgICAgICAgICAgICAgICAgIChjb250YWN0IChjbC1zdWJzZXEgY29udGFjdCAwIHBy b2JlKSkpCiAgICAgICAgICAgICAgICAgICBgKDpwcm9jZXNzCiAgICAgICAgICAgICAgICAgICAg ICwobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChkZWZhdWx0LWRpcmVj dG9yeSBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg YnVnIzYxMzUwOiBUcmFtcCB0dXJucyBvbiBhIGZlYXR1cmUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgYnkgZGVmYXVsdCB0aGF0IGNhbid0ICh5ZXQpIGhhbmRsZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7OyB2ZXJ5IG11Y2ggZGF0YSBzbyB3ZSB0dXJuIGl0IG9mZgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB1bmNvbmRpdGlvbmFsbHkgLS0ganVzdCBm b3Igb3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHByb2Nlc3MuCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICh0cmFtcC11c2Utc3NoLWNvbnRyb2xtYXN0ZXItb3B0aW9u cyAnc3VwcHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmFtcC1zc2gtY29u dHJvbG1hc3Rlci1vcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW8gQ29u dHJvbE1hc3Rlcj1ubyAtbyBDb250cm9sUGF0aD1ub25lIikpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1ha2UtcHJvY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAgICA6bmFtZSByZWFk YWJsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb21tYW5kIChzZXRxIHNlcnZl ci1pbmZvIChlZ2xvdC0tY21kIGNvbnRhY3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICA6 Y29ubmVjdGlvbi10eXBlICdwaXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2Rpbmcg J3V0Zi04LWVtYWNzLXVuaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vcXVlcnkgdAog ICAgICAgICAgICAgICAgICAgICAgICAgICA6c3RkZXJyIChnZXQtYnVmZmVyLWNyZWF0ZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIqJXMgc3RkZXJyKiIgcmVh ZGFibGUtbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmaWxlLWhhbmRsZXIgdCkp KQogICAgICAgICAgICAgICAgICAgICAsQG1vcmUtaW5pdGFyZ3MpKSkpKQogICAgICAgICAoc3By ZWFkIChsYW1iZGEgKGZuKSAobGFtYmRhIChzZXJ2ZXIgbWV0aG9kIHBhcmFtcykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZWdsb3QtLWNhY2hlZC1zZXJ2ZXIgc2VydmVy KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSBmbiBzZXJ2ZXIgbWV0 aG9kIChhcHBlbmQgcGFyYW1zIG5pbCkpKSkpKQogICAgICAgICAoc2VydmVyCiAgICAgICAgICAo YXBwbHkKICAgICAgICAgICAjJ21ha2UtaW5zdGFuY2UgY2xhc3MKICAgICAgICAgICA6bmFtZSBy ZWFkYWJsZS1uYW1lCiAgICAgICAgICAgOmV2ZW50cy1idWZmZXItY29uZmlnIGVnbG90LWV2ZW50 cy1idWZmZXItY29uZmlnCiAgICAgICAgICAgOm5vdGlmaWNhdGlvbi1kaXNwYXRjaGVyIChmdW5j YWxsIHNwcmVhZCAjJ2VnbG90LWhhbmRsZS1ub3RpZmljYXRpb24pCiAgICAgICAgICAgOnJlcXVl c3QtZGlzcGF0Y2hlciAoZnVuY2FsbCBzcHJlYWQgIydlZ2xvdC1oYW5kbGUtcmVxdWVzdCkKICAg ICAgICAgICA6b24tc2h1dGRvd24gIydlZ2xvdC0tb24tc2h1dGRvd24KICAgICAgICAgICBpbml0 YXJncykpCiAgICAgICAgIChjYW5jZWxlZCBuaWwpCiAgICAgICAgICh0YWcgKG1ha2Utc3ltYm9s ICJjb25uZWN0ZWQtY2F0Y2gtdGFnIikpKQogICAgKHdoZW4gc2VydmVyLWluZm8KICAgICAgKGpz b25ycGMtLWRlYnVnIHNlcnZlciAiUnVubmluZyBsYW5ndWFnZSBzZXJ2ZXI6ICVzIgogICAgICAg ICAgICAgICAgICAgICAgKHN0cmluZy1qb2luIHNlcnZlci1pbmZvICIgIikpKQogICAgKHNldGYg KGVnbG90LS1zYXZlZC1pbml0YXJncyBzZXJ2ZXIpIGluaXRhcmdzKQogICAgKHNldGYgKGVnbG90 LS1wcm9qZWN0IHNlcnZlcikgcHJvamVjdCkKICAgIChzZXRmIChlZ2xvdC0tcHJvamVjdC1uaWNr bmFtZSBzZXJ2ZXIpIG5pY2tuYW1lKQogICAgKHNldGYgKGVnbG90LS1sYW5ndWFnZXMgc2VydmVy KQogICAgICAgICAgKGNsLWxvb3AgZm9yIG0gaW4gbWFuYWdlZC1tb2RlcyBmb3IgbCBpbiBsYW5n dWFnZS1pZHMKICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgKGNvbnMgbSBsKSkpCiAgICAocnVu LWhvb2std2l0aC1hcmdzICdlZ2xvdC1zZXJ2ZXItaW5pdGlhbGl6ZWQtaG9vayBzZXJ2ZXIpCiAg ICA7OyBOb3cgc3RhcnQgdGhlIGhhbmRzaGFrZS4gIFRvIGhvbm9yIGBlZ2xvdC1zeW5jLWNvbm5l Y3QnCiAgICA7OyBtYXliZS1zeW5jLW1heWJlLWFzeW5jIHNlbWFudGljcyB3ZSB1c2UgYGpzb25y cGMtYXN5bmMtcmVxdWVzdCcKICAgIDs7IGFuZCBtaW1pYyBtb3N0IG9mIGBqc29ucnBjLXJlcXVl c3QnLgogICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgKGNvbmRpdGlvbi1jYXNlIF9xdWl0CiAg ICAgICAgICAgIChsZXQgKChyZXR2YWwKICAgICAgICAgICAgICAgICAgIChjYXRjaCB0YWcKICAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgICAgICAgICAg ICAgICAgc2VydmVyCiAgICAgICAgICAgICAgICAgICAgICA6aW5pdGlhbGl6ZQogICAgICAgICAg ICAgICAgICAgICAgKGxpc3QgOnByb2Nlc3NJZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg KHVubGVzcyAob3IgZWdsb3Qtd2l0aGhvbGQtcHJvY2Vzcy1pZAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGZpbGUtcmVtb3RlLXAgZGVmYXVsdC1kaXJlY3RvcnkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgKGpzb25ycGMtcHJvY2Vz cy10eXBlIHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAnbmV0d29yaykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbWFjcy1waWQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsaWVudEluZm8KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGAoOm5hbWUgIkVnbG90IiAsQCh3aGVuIGVnbG90LS12ZXJzaW9uCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoOnZlcnNpb24gLGVnbG90 LS12ZXJzaW9uKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBNYXliZSB0dXJuIHRy YW1weSBgL3NzaDpmb29AYmFyOi9wYXRoL3RvL2Jhei5weScKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGludG8gYC9wYXRoL3RvL2Jhei5weScsIHNvIExTUCBncm9rcyBpdC4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpyb290UGF0aCAoZmlsZS1sb2NhbC1uYW1lCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIGRlZmF1bHQt ZGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpyb290VXJpIChlZ2xvdC1w YXRoLXRvLXVyaSBkZWZhdWx0LWRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDppbml0aWFsaXphdGlvbk9wdGlvbnMgKGVnbG90LWluaXRpYWxpemF0aW9uLW9wdGlvbnMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYXBhYmlsaXRpZXMgKGVnbG90LWNsaWVudC1j YXBhYmlsaXRpZXMgc2VydmVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFj ZUZvbGRlcnMgKGVnbG90LXdvcmtzcGFjZS1mb2xkZXJzIHNlcnZlcikpCiAgICAgICAgICAgICAg ICAgICAgICA6c3VjY2Vzcy1mbgogICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1sYW1iZGEg KChJbml0aWFsaXplUmVzdWx0KSBjYXBhYmlsaXRpZXMgc2VydmVySW5mbykKICAgICAgICAgICAg ICAgICAgICAgICAgKHVubGVzcyBjYW5jZWxlZAogICAgICAgICAgICAgICAgICAgICAgICAgIChw dXNoIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXRoYXNoIHByb2pl Y3QgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldGYgKGVnbG90LS1jYXBhYmlsaXRpZXMgc2VydmVyKSBjYXBhYmlsaXRpZXMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldGYgKGVnbG90LS1zZXJ2ZXItaW5mbyBzZXJ2ZXIpIHNlcnZl ckluZm8pCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbm90aWZ5IHNlcnZlciA6 aW5pdGlhbGl6ZWQgZWdsb3QtLXt9KQogICAgICAgICAgICAgICAgICAgICAgICAgIChkb2xpc3Qg KGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgt Y3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IE5v IG5lZWQgdG8gcGFzcyBTRVJWRVIgYXMgYW4gYXJndW1lbnQ6IGl0IGhhcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7OyBiZWVuIHJlZ2lzdGVyZWQgaW4gYGVnbG90LS1zZXJ2ZXJzLWJ5 LXByb2plY3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzbyB0aGF0IGl0IGNh biBiZSBmb3VuZCAoYW5kIGNhY2hlZCkgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7OyBgZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZScgaW4gYW55CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDs7IG1hbmFnZWQgYnVmZmVyLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0taW5oaWJpdC1hdXRvcmVjb25uZWN0 IHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGJvb2xlYW5wIGVnbG90LWF1dG9yZWNvbm5lY3QpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IGVnbG90LWF1dG9yZWNvbm5lY3Qp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGNsLXBsdXNwIGVnbG90LWF1dG9y ZWNvbm5lY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLXdpdGgtdGlt ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2xvdC1hdXRvcmVjb25uZWN0 IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChlZ2xvdC0taW5oaWJpdC1hdXRv cmVjb25uZWN0IHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChudWxsIGVnbG90LWF1dG9yZWNvbm5lY3QpKSkpKSkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgKHJ1bi1ob29rLXdpdGgtYXJncyAnZWdsb3QtY29ubmVjdC1ob29rIHNlcnZlcikKICAg ICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLW1lc3NhZ2UKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkNvbm5lY3RlZCEgU2VydmVyIGAlcycgbm93IG1hbmFnaW5nIGAlcycgYnVmZmVy cyBcCmluIHByb2plY3QgYCVzJy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAocGxp c3QtZ2V0IHNlcnZlckluZm8gOm5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo anNvbnJwYy1uYW1lIHNlcnZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZWQt bW9kZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LXByb2plY3Qtbmlja25hbWUg c2VydmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbiB0YWcgKHRocm93IHRhZyB0 KSkpKQogICAgICAgICAgICAgICAgICAgICAgOnRpbWVvdXQgZWdsb3QtY29ubmVjdC10aW1lb3V0 CiAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3ItZm4gKGVnbG90LS1sYW1iZGEgKChSZXNwb25z ZUVycm9yKSBjb2RlIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo dW5sZXNzIGNhbmNlbGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqc29u cnBjLXNodXRkb3duIHNlcnZlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxldCAoKG1zZyAoZm9ybWF0ICIlczogJXMiIGNvZGUgbWVzc2FnZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB0YWcgKHRocm93IHRhZyBgKGVycm9yIC4gLG1z ZykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLWVycm9y IG1zZykpKSkpCiAgICAgICAgICAgICAgICAgICAgICA6dGltZW91dC1mbiAobGFtYmRhICgpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgY2FuY2VsZWQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG1zZyAoZm9ybWF0 ICJUaW1lZCBvdXQgYWZ0ZXIgJXMgc2Vjb25kcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsb3QtY29ubmVjdC10aW1lb3V0KSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdGFnICh0aHJvdyB0YWcg YChlcnJvciAuICxtc2cpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZWdsb3QtLWVycm9yIG1zZykpKSkpKQogICAgICAgICAgICAgICAgICAgICAoY29uZCAoKG51 bWJlcnAgZWdsb3Qtc3luYy1jb25uZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFj Y2VwdC1wcm9jZXNzLW91dHB1dCBuaWwgZWdsb3Qtc3luYy1jb25uZWN0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGVnbG90LXN5bmMtY29ubmVjdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHdoaWxlIHQgKGFjY2VwdC1wcm9jZXNzLW91dHB1dAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5pbCBlZ2xvdC1jb25uZWN0LXRpbWVvdXQpKSkpKSkpCiAgICAg ICAgICAgICAgKHBjYXNlIHJldHZhbAogICAgICAgICAgICAgICAgKGAoZXJyb3IgLiAsbXNnKSAo ZWdsb3QtLWVycm9yIG1zZykpCiAgICAgICAgICAgICAgICAoYG5pbCAoZWdsb3QtLW1lc3NhZ2Ug IldhaXRpbmcgaW4gYmFja2dyb3VuZCBmb3Igc2VydmVyIGAlcyciCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQogICAgICAgICAgICAg ICAgICAgICAgbmlsKQogICAgICAgICAgICAgICAgKF8gc2VydmVyKSkpCiAgICAgICAgICAocXVp dCAoanNvbnJwYy1zaHV0ZG93biBzZXJ2ZXIpIChzZXRxIGNhbmNlbGVkICdxdWl0KSkpCiAgICAg IChzZXRxIHRhZyBuaWwpKSkpCgoMCjs7OyBIZWxwZXJzIChtb3ZlIHRoZXNlIHRvIEFQST8pCjs7 OwooZGVmdW4gZWdsb3QtLWVycm9yIChmb3JtYXQgJnJlc3QgYXJncykKICAiRXJyb3Igb3V0IHdp dGggRk9STUFUIHdpdGggQVJHUy4iCiAgKGVycm9yICJbZWdsb3RdICVzIiAoYXBwbHkgIydmb3Jt YXQgZm9ybWF0IGFyZ3MpKSkKCihkZWZ1biBlZ2xvdC0tbWVzc2FnZSAoZm9ybWF0ICZyZXN0IGFy Z3MpCiAgIk1lc3NhZ2Ugb3V0IHdpdGggRk9STUFUIHdpdGggQVJHUy4iCiAgKG1lc3NhZ2UgIltl Z2xvdF0gJXMiIChhcHBseSAjJ2Zvcm1hdCBmb3JtYXQgYXJncykpKQoKKGRlZnVuIGVnbG90LS13 YXJuIChmb3JtYXQgJnJlc3QgYXJncykKICAiV2FybmluZyBtZXNzYWdlIHdpdGggRk9STUFUIGFu ZCBBUkdTLiIKICAoYXBwbHkgIydlZ2xvdC0tbWVzc2FnZSAoY29uY2F0ICIod2FybmluZykgIiBm b3JtYXQpIGFyZ3MpCiAgKGxldCAoKHdhcm5pbmctbWluaW11bS1sZXZlbCA6ZXJyb3IpKQogICAg KGRpc3BsYXktd2FybmluZyAnZWdsb3QgKGFwcGx5ICMnZm9ybWF0IGZvcm1hdCBhcmdzKSA6d2Fy bmluZykpKQoKKGRlZmFsaWFzICdlZ2xvdC0tYm9sCiAgKGlmIChmYm91bmRwICdwb3MtYm9sKSAj J3Bvcy1ib2wKICAgIChsYW1iZGEgKCZvcHRpb25hbCBuKSAobGV0ICgoaW5oaWJpdC1maWVsZC10 ZXh0LW1vdGlvbiB0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbiBuKSkpKQogICJSZXR1cm4gcG9zaXRpb24gb2YgZmlyc3QgY2hhcmFjdGVyIGlu IGN1cnJlbnQgbGluZS4iKQoKKGNsLWRlZnVuIGVnbG90LS1yZXF1ZXN0IChzZXJ2ZXIgbWV0aG9k IHBhcmFtcyAma2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltbWVkaWF0ZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0IGNhbmNlbC1vbi1pbnB1dAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWwtb24taW5wdXQtcmV0dmFsKQog ICJMaWtlIGBqc29ucnBjLXJlcXVlc3QnLCBidXQgZm9yIEVnbG90IExTUCByZXF1ZXN0cy4KVW5s ZXNzIElNTUVESUFURSwgc2VuZCBwZW5kaW5nIGNoYW5nZXMgYmVmb3JlIG1ha2luZyByZXF1ZXN0 LiIKICAodW5sZXNzIGltbWVkaWF0ZSAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hh bmdlKSkKICAoanNvbnJwYy1yZXF1ZXN0IHNlcnZlciBtZXRob2QgcGFyYW1zCiAgICAgICAgICAg ICAgICAgICA6dGltZW91dCB0aW1lb3V0CiAgICAgICAgICAgICAgICAgICA6Y2FuY2VsLW9uLWlu cHV0IGNhbmNlbC1vbi1pbnB1dAogICAgICAgICAgICAgICAgICAgOmNhbmNlbC1vbi1pbnB1dC1y ZXR2YWwgY2FuY2VsLW9uLWlucHV0LXJldHZhbCkpCgoMCjs7OyBFbmNvZGluZyBmZXZlcgo7OzsK KGRlZnZhciBlZ2xvdC1jdXJyZW50LWxpbmVwb3MtZnVuY3Rpb24gIydlZ2xvdC11dGYtMTYtbGlu ZXBvcwogICJGdW5jdGlvbiBjYWxjdWxhdGluZyBwb3NpdGlvbiByZWxhdGl2ZSB0byBsaW5lIGJl Z2lubmluZy4KCkl0IGlzIGEgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzIGNvbnNpZGVyaW5nIHRo ZSB0ZXh0IGZyb20gbGluZQpiZWdpbm5pbmcgdXAgdG8gY3VycmVudCBwb2ludC4gIFRoZSByZXR1 cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZgpVVEYgY29kZSB1bml0cyBuZWVkZWQgdG8gZW5jb2Rl IHRoYXQgdGV4dCBmcm9tIHRoZSBMU1Agc2VydmVyJ3MKcGVyc3BlY3RpdmUuICBUaGlzIG1heSBi ZSBhIG51bWJlciBvZiBvY3RldHMsIDE2LWJpdCB3b3JkcyBvcgpVbmljb2RlIGNvZGUgcG9pbnRz LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgTFNQIHNlcnZlcidzCmBwb3NpdGlvbkVuY29kaW5n JyBjYXBhYmlsaXR5IGlzIFVURi04LCBVVEYtMTYgb3IgVVRGLTMyLApyZXNwZWN0aXZlbHkuICBQ b3NpdGlvbiBvZiBwb2ludCBzaG91bGQgcmVtYWluIHVuYWx0ZXJlZCBpZiB0aGF0CnJldHVybiB2 YWx1ZSBpcyBmZWQgdGhyb3VnaCB0aGUgY29ycmVzcG9uZGluZyBpbnZlcnNlIGZ1bmN0aW9uCmBl Z2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24nICh3aGljaCBzZWUpLiIpCgooZGVmdW4gZWds b3QtdXRmLTgtbGluZXBvcyAoKQogICJDYWxjdWxhdGUgbnVtYmVyIG9mIFVURi04IGJ5dGVzIGZy b20gbGluZSBiZWdpbm5pbmcuIgogIChsZW5ndGggKGVuY29kZS1jb2RpbmctcmVnaW9uIChlZ2xv dC0tYm9sKSAocG9pbnQpICd1dGYtOC11bml4IHQpKSkKCihkZWZ1biBlZ2xvdC11dGYtMTYtbGlu ZXBvcyAoJm9wdGlvbmFsIGxicCkKICAiQ2FsY3VsYXRlIG51bWJlciBvZiBVVEYtMTYgY29kZSB1 bml0cyBmcm9tIHBvc2l0aW9uIGdpdmVuIGJ5IExCUC4KTEJQIGRlZmF1bHRzIHRvIGBlZ2xvdC0t Ym9sJy4iCiAgKC8gKC0gKGxlbmd0aCAoZW5jb2RlLWNvZGluZy1yZWdpb24gKG9yIGxicCAoZWds b3QtLWJvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRml4IGdp dGh1YiM4NjAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWluIChwb2lu dCkgKHBvaW50LW1heCkpICd1dGYtMTYgdCkpCiAgICAgICAgMikKICAgICAyKSkKCihkZWZ1biBl Z2xvdC11dGYtMzItbGluZXBvcyAoKQogICJDYWxjdWxhdGUgbnVtYmVyIG9mIFVuaWNvZGUgY29k ZXBvaW50cyBmcm9tIGxpbmUgYmVnaW5uaW5nLiIKICAoLSAocG9pbnQpIChlZ2xvdC0tYm9sKSkp CgooZGVmdW4gZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24gKCZvcHRpb25hbCBwb3MpCiAgIkNv bnZlcnQgcG9pbnQgUE9TIHRvIExTUCBwb3NpdGlvbi4iCiAgKGVnbG90LS13aWRlbmluZwogICA7 OyBMU1AgbGluZSBpcyB6ZXJvLW9yaWdpbjsgZW1hY3MgaXMgb25lLW9yaWdpbi4KICAgKGxpc3Qg OmxpbmUgKDEtIChsaW5lLW51bWJlci1hdC1wb3MgcG9zIHQpKQogICAgICAgICA6Y2hhcmFjdGVy IChwcm9nbiAod2hlbiBwb3MgKGdvdG8tY2hhciBwb3MpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCBlZ2xvdC1jdXJyZW50LWxpbmVwb3MtZnVuY3Rpb24pKSkpKQoKKGRlZnZh ciBlZ2xvdC1tb3ZlLXRvLWxpbmVwb3MtZnVuY3Rpb24gIydlZ2xvdC1tb3ZlLXRvLXV0Zi0xNi1s aW5lcG9zCiAgIkZ1bmN0aW9uIHRvIG1vdmUgdG8gYSBwb3NpdGlvbiB3aXRoaW4gYSBsaW5lIHJl cG9ydGVkIGJ5IHRoZSBMU1Agc2VydmVyLgoKUGVyIHRoZSBMU1Agc3BlYywgY2hhcmFjdGVyIG9m ZnNldHMgaW4gTFNQIFBvc2l0aW9uIG9iamVjdHMgY291bnQKVVRGLTE2IGNvZGUgdW5pdHMsIG5v dCBhY3R1YWwgY29kZSBwb2ludHMuICBTbyB3aGVuIExTUCBzYXlzCnBvc2l0aW9uIDMgb2YgYSBs aW5lIGNvbnRhaW5pbmcganVzdCBcImFYYmNcIiwgd2hlcmUgWCBpcyBhIGZ1bm55Cmxvb2tpbmcg Y2hhcmFjdGVyIGluIHRoZSBVVEYtMTYgXCJzdXBwbGVtZW50YXJ5IHBsYW5lXCIsIGl0CmFjdHVh bGx5IG1lYW5zIGBiJywgbm90IGBjJy4gIFRoZSBkZWZhdWx0IHZhbHVlCmBlZ2xvdC1tb3ZlLXRv LXV0Zi0xNi1saW5lcG9zJyBhY2NvdW50cyBmb3IgdGhpcy4KClRoaXMgdmFyaWFibGUgY2FuIGFs c28gYmUgc2V0IHRvIGBlZ2xvdC1tb3ZlLXRvLXV0Zi04LWxpbmVwb3MnIG9yCmBlZ2xvdC1tb3Zl LXRvLXV0Zi0zMi1saW5lcG9zJyBmb3Igc2VydmVycyBub3QgY2xvc2VseSBmb2xsb3dpbmcKdGhl IHNwZWMuICBBbHNvLCBzaW5jZSBMU1AgMy4xNyBzZXJ2ZXIgYW5kIGNsaWVudCBtYXkgYWdyZWUg b24gYW4KZW5jb2RpbmcgYW5kIEVnbG90IHdpbGwgc2V0IHRoaXMgdmFyaWFibGUgYXV0b21hdGlj YWxseS4iKQoKKGRlZnVuIGVnbG90LW1vdmUtdG8tdXRmLTgtbGluZXBvcyAobikKICAiTW92ZSB0 byBsaW5lJ3MgTnRoIGJ5dGUgYXMgY29tcHV0ZWQgYnkgTFNQJ3MgVVRGLTggY3JpdGVyaW9uLiIK ICAobGV0KiAoKGJvbCAoZWdsb3QtLWJvbCkpCiAgICAgICAgIChnb2FsLWJ5dGUgKCsgKHBvc2l0 aW9uLWJ5dGVzIGJvbCkgbikpCiAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCiAg ICAoZ290by1jaGFyIGJvbCkKICAgICh3aGlsZSAoYW5kICg8IChwb3NpdGlvbi1ieXRlcyAocG9p bnQpKSBnb2FsLWJ5dGUpICg8IChwb2ludCkgZW9sKSkKICAgICAgOzsgcmF3IGJ5dGVzIHRha2Ug MiBieXRlcyBpbiB0aGUgYnVmZmVyCiAgICAgICh3aGVuICg+PSAoY2hhci1hZnRlcikgI3gzZmZm ODApIChzZXRxIGdvYWwtYnl0ZSAoMSsgZ29hbC1ieXRlKSkpCiAgICAgIChmb3J3YXJkLWNoYXIg MSkpKSkKCihkZWZ1biBlZ2xvdC1tb3ZlLXRvLXV0Zi0xNi1saW5lcG9zIChuKQogICJNb3ZlIHRv IGxpbmUncyBOdGggY29kZSB1bml0IGFzIGNvbXB1dGVkIGJ5IExTUCdzIFVURi0xNiBjcml0ZXJp b24uIgogIChsZXQqICgoYm9sIChlZ2xvdC0tYm9sKSkKICAgICAgICAgKGdvYWwtY2hhciAoKyBi b2wgbikpCiAgICAgICAgIChlb2wgKGxpbmUtZW5kLXBvc2l0aW9uKSkpCiAgICAoZ290by1jaGFy IGJvbCkKICAgICh3aGlsZSAoYW5kICg8IChwb2ludCkgZ29hbC1jaGFyKSAoPCAocG9pbnQpIGVv bCkpCiAgICAgIDs7IGNvZGUgcG9pbnRzIGluIHRoZSAic3VwcGxlbWVudGFyeSBwbGFjZSIgdXNl IHR3byBjb2RlIHVuaXRzCiAgICAgICh3aGVuICg8PSAjeDAxMDAwMCAoY2hhci1hZnRlcikgI3gx MGZmZmYpIChzZXRxIGdvYWwtY2hhciAoMS0gZ29hbC1jaGFyKSkpCiAgICAgIChmb3J3YXJkLWNo YXIgMSkpKSkKCihkZWZ1biBlZ2xvdC1tb3ZlLXRvLXV0Zi0zMi1saW5lcG9zIChuKQogICJNb3Zl IHRvIGxpbmUncyBOdGggY29kZXBvaW50IGFzIGNvbXB1dGVkIGJ5IExTUCdzIFVURi0zMiBjcml0 ZXJpb24uIgogIDs7IFdlIGNhbm5vdCB1c2UgYG1vdmUtdG8tY29sdW1uJyBoZXJlLCBiZWNhdXNl IGl0IG1vdmVzIHRvICp2aXN1YWwqCiAgOzsgY29sdW1ucywgd2hpY2ggY2FuIGJlIGRpZmZlcmVu dCBmcm9tIExTUCBjaGFyYWN0ZXJzIGluIGNhc2Ugb2YKICA7OyBgd2hpdGVzcGFjZS1tb2RlJywg YHByZXR0aWZ5LXN5bWJvbHMtbW9kZScsIGV0Yy4gIChnaXRodWIjMjk2LAogIDs7IGdpdGh1YiMy OTcpCiAgKGdvdG8tY2hhciAobWluICgrIChlZ2xvdC0tYm9sKSBuKSAobGluZS1lbmQtcG9zaXRp b24pKSkpCgooZGVmdW4gZWdsb3QtLWxzcC1wb3NpdGlvbi10by1wb2ludCAocG9zLXBsaXN0ICZv cHRpb25hbCBtYXJrZXIpCiAgIkNvbnZlcnQgTFNQIHBvc2l0aW9uIFBPUy1QTElTVCB0byBFbWFj cyBwb2ludC4KSWYgb3B0aW9uYWwgTUFSS0VSLCByZXR1cm4gYSBtYXJrZXIgaW5zdGVhZCIKICAo c2F2ZS1leGN1cnNpb24KICAgIChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICh3aWRlbikKICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKGZvcndhcmQtbGluZSAobWluIG1vc3QtcG9z aXRpdmUtZml4bnVtCiAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IHBvcy1wbGlz dCA6bGluZSkpKQogICAgICAodW5sZXNzIChlb2JwKSA7OyBpZiBsaW5lIHdhcyBleGNlc3NpdmUg bGVhdmUgcG9pbnQgYXQgZW9iCiAgICAgICAgKGxldCAoKGNvbCAocGxpc3QtZ2V0IHBvcy1wbGlz dCA6Y2hhcmFjdGVyKSkpCiAgICAgICAgICAodW5sZXNzICh3aG9sZW51bXAgY29sKQogICAgICAg ICAgICAoZWdsb3QtLXdhcm4KICAgICAgICAgICAgICJDYXV0aW9uOiBMU1Agc2VydmVyIHNlbnQg aW52YWxpZCBjaGFyYWN0ZXIgcG9zaXRpb24gJXMuIFVzaW5nIDAgaW5zdGVhZC4iCiAgICAgICAg ICAgICBjb2wpCiAgICAgICAgICAgIChzZXRxIGNvbCAwKSkKICAgICAgICAgIChmdW5jYWxsIGVn bG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiBjb2wpKSkKICAgICAgKGlmIG1hcmtlciAoY29w eS1tYXJrZXIgKHBvaW50LW1hcmtlcikpIChwb2ludCkpKSkpCgoMCjs7OyBNb3JlIGhlbHBlcnMK KGRlZmNvbnN0IGVnbG90LS11cmktcGF0aC1hbGxvd2VkLWNoYXJzCiAgKGxldCAoKHZlYyAoY29w eS1zZXF1ZW5jZSB1cmwtcGF0aC1hbGxvd2VkLWNoYXJzKSkpCiAgICAoYXNldCB2ZWMgPzogbmls KSA7OyBzZWUgZ2l0aHViIzYzOQogICAgdmVjKQogICJMaWtlIGB1cmwtcGF0aC1hbGxvd2VkLWNo YXJzJyBidXQgbW9yZSByZXN0cmljdGl2ZS4iKQoKKGRlZnVuIGVnbG90LS1zbmlwcGV0LWV4cGFu c2lvbi1mbiAoKQogICJDb21wdXRlIGEgZnVuY3Rpb24gdG8gZXhwYW5kIHNuaXBwZXRzLgpEb3Vi bGVzIGFzIGFuIGluZGljYXRvciBvZiBzbmlwcGV0IHN1cHBvcnQuIgogIChhbmQgKGZib3VuZHAg J3lhcy1taW5vci1tb2RlKQogICAgICAgKGxhbWJkYSAoJnJlc3QgYXJncykKICAgICAgICAgKHdp dGgtbm8td2FybmluZ3MKICAgICAgICAgICAodW5sZXNzIChib3VuZC1hbmQtdHJ1ZS1wIHlhcy1t aW5vci1tb2RlKSAoeWFzLW1pbm9yLW1vZGUgMSkpCiAgICAgICAgICAgKGFwcGx5ICMneWFzLWV4 cGFuZC1zbmlwcGV0IGFyZ3MpKSkpKQoKKGRlZnVuIGVnbG90LS1mb3JtYXQtbWFya3VwIChtYXJr dXApCiAgIkZvcm1hdCBNQVJLVVAgYWNjb3JkaW5nIHRvIExTUCdzIHNwZWMuIgogIChwY2FzZS1s ZXQgKChgKCxzdHJpbmcgLG1vZGUpCiAgICAgICAgICAgICAgIChpZiAoc3RyaW5ncCBtYXJrdXAp IChsaXN0IG1hcmt1cCAnZ2ZtLXZpZXctbW9kZSkKICAgICAgICAgICAgICAgICAobGlzdCAocGxp c3QtZ2V0IG1hcmt1cCA6dmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIChwbGlz dC1nZXQgbWFya3VwIDpraW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgKCJtYXJrZG93biIg J2dmbS12aWV3LW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAoInBsYWludGV4dCIgJ3Rl eHQtbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgIChfIG1ham9yLW1vZGUpKSkpKSkKICAg ICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChzZXRxLWxvY2FsIG1hcmtkb3duLWZvbnRpZnktY29k ZS1ibG9ja3MtbmF0aXZlbHkgdCkKICAgICAgKGluc2VydCBzdHJpbmcpCiAgICAgIChsZXQgKChp bmhpYml0LW1lc3NhZ2UgdCkKICAgICAgICAgICAgKG1lc3NhZ2UtbG9nLW1heCBuaWwpCiAgICAg ICAgICAgIG1hdGNoKQogICAgICAgIChpZ25vcmUtZXJyb3JzIChkZWxheS1tb2RlLWhvb2tzIChm dW5jYWxsIG1vZGUpKSkKICAgICAgICAoZm9udC1sb2NrLWVuc3VyZSkKICAgICAgICAoZ290by1j aGFyIChwb2ludC1taW4pKQogICAgICAgIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKICAg ICAgICAgICh3aGVuIChmYm91bmRwICd0ZXh0LXByb3BlcnR5LXNlYXJjaC1mb3J3YXJkKSA7OyBG SVhNRTogdXNlIGNvbXBhdAogICAgICAgICAgICAod2hpbGUgKHNldHEgbWF0Y2ggKHRleHQtcHJv cGVydHktc2VhcmNoLWZvcndhcmQgJ2ludmlzaWJsZSkpCiAgICAgICAgICAgICAgKGRlbGV0ZS1y ZWdpb24gKHByb3AtbWF0Y2gtYmVnaW5uaW5nIG1hdGNoKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9wLW1hdGNoLWVuZCBtYXRjaCkpKSkpCiAgICAgICAgKHN0cmluZy10cmltIChi dWZmZXItc3RyaW5nKSkpKSkpCgooZGVmdW4gZWdsb3QtLXJlYWQtc2VydmVyIChwcm9tcHQgJm9w dGlvbmFsIGRvbnQtaWYtanVzdC10aGUtb25lKQogICJSZWFkIGEgcnVubmluZyBFZ2xvdCBzZXJ2 ZXIgZnJvbSBtaW5pYnVmZmVyIHVzaW5nIFBST01QVC4KSWYgRE9OVC1JRi1KVVNULVRIRS1PTkUg YW5kIHRoZXJlJ3Mgb25seSBvbmUgc2VydmVyLCBkb24ndCBwcm9tcHQKYW5kIGp1c3QgcmV0dXJu IGl0LiAgUFJPTVBUIHNob3VsZG4ndCBlbmQgd2l0aCBhIHF1ZXN0aW9uIG1hcmsuIgogIChsZXQg KChzZXJ2ZXJzIChjbC1sb29wIGZvciBzZXJ2ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAg YmVpbmcgaGFzaC12YWx1ZXMgb2YgZWdsb3QtLXNlcnZlcnMtYnktcHJvamVjdAogICAgICAgICAg ICAgICAgICAgICAgICAgIGFwcGVuZCBzZXJ2ZXJzKSkKICAgICAgICAobmFtZSAobGFtYmRhIChz cnYpCiAgICAgICAgICAgICAgICAoZm9ybWF0ICIlcyAlcyIgKGVnbG90LXByb2plY3Qtbmlja25h bWUgc3J2KQogICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLW1ham9yLW1vZGVzIHNydikp KSkpCiAgICAoY29uZCAoKG51bGwgc2VydmVycykKICAgICAgICAgICAoZWdsb3QtLWVycm9yICJO byBzZXJ2ZXJzISIpKQogICAgICAgICAgKChvciAoY2RyIHNlcnZlcnMpIChub3QgZG9udC1pZi1q dXN0LXRoZS1vbmUpKQogICAgICAgICAgIChsZXQqICgoZGVmYXVsdCAod2hlbi1sZXQgKChjdXJy ZW50IChlZ2xvdC1jdXJyZW50LXNlcnZlcikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIG5hbWUgY3VycmVudCkpKQogICAgICAgICAgICAgICAgICAocmVhZCAoY29tcGxl dGluZy1yZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgZGVmYXVsdAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzIChkZWZhdWx0ICVzKT8gIiBwcm9tcHQgZGVm YXVsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCBwcm9tcHQgIj8gIikpCiAg ICAgICAgICAgICAgICAgICAgICAgICAobWFwY2FyIG5hbWUgc2VydmVycykKICAgICAgICAgICAg ICAgICAgICAgICAgIG5pbCB0CiAgICAgICAgICAgICAgICAgICAgICAgICBuaWwgbmlsCiAgICAg ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0KSkpCiAgICAgICAgICAgICAoY2wtZmluZCByZWFk IHNlcnZlcnMgOmtleSBuYW1lIDp0ZXN0ICMnZXF1YWwpKSkKICAgICAgICAgICh0IChjYXIgc2Vy dmVycykpKSkpCgooZGVmdW4gZWdsb3QtLXRyYW1waXNoLXAgKHNlcnZlcikKICAiVGVsbCBpZiBT RVJWRVIncyBwcm9qZWN0IHJvb3QgaXMgYGZpbGUtcmVtb3RlLXAnLiIKICAoZmlsZS1yZW1vdGUt cCAocHJvamVjdC1yb290IChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpCgooZGVmdW4gZWdsb3Qt LXBsaXN0LWtleXMgKHBsaXN0KSAiR2V0IGtleXMgb2YgYSBwbGlzdC4iCiAgKGNsLWxvb3AgZm9y IChrIF92KSBvbiBwbGlzdCBieSAjJ2NkZHIgY29sbGVjdCBrKSkKCihkZWZhbGlhcyAnZWdsb3Qt LWVuc3VyZS1saXN0CiAgKGlmIChmYm91bmRwICdlbnN1cmUtbGlzdCkgIydlbnN1cmUtbGlzdAog ICAgKGxhbWJkYSAoeCkgKGlmIChsaXN0cCB4KSB4IChsaXN0IHgpKSkpKQoKDAo7OzsgTWlub3Ig bW9kZXMKOzs7CihkZWZ2YXIgZWdsb3QtbW9kZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJz ZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgZGlzcGxheS1sb2NhbC1oZWxw XSAjJ2VsZG9jLWRvYy1idWZmZXIpCiAgICBtYXApKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tY3Vy cmVudC1mbHltYWtlLXJlcG9ydC1mbiBuaWwKICAiQ3VycmVudCBmbHltYWtlIHJlcG9ydCBmdW5j dGlvbiBmb3IgdGhpcyBidWZmZXIuIikKCihkZWZ2YXItbG9jYWwgZWdsb3QtLXNhdmVkLWJpbmRp bmdzIG5pbAogICJCaW5kaW5ncyBzYXZlZCBieSBgZWdsb3QtLXNldHEtc2F2aW5nJy4iKQoKKGRl ZnZhciBlZ2xvdC1zdGF5LW91dC1vZiAnKCkKICAiTGlzdCBvZiBFbWFjcyB0aGluZ3MgdGhhdCBF Z2xvdCBzaG91bGQgdHJ5IHRvIHN0YXkgb2YuCkVhY2ggZWxlbWVudCBpcyBhIHN0cmluZywgYSBz eW1ib2wsIG9yIGEgcmVnZXhwIHdoaWNoIGlzIG1hdGNoZWQKYWdhaW5zdCBhIHZhcmlhYmxlJ3Mg bmFtZS4gIEV4YW1wbGVzIGluY2x1ZGUgdGhlIHN0cmluZwpcImNvbXBhbnlcIiBvciB0aGUgc3lt Ym9sIGB4cmVmJy4KCkJlZm9yZSBFZ2xvdCBzdGFydHMgXCJtYW5hZ2luZ1wiIGEgcGFydGljdWxh ciBidWZmZXIsIGl0Cm9waW5pb25hdGVkbHkgc2V0cyBzb21lIHBlcmlwaGVyYWwgRW1hY3MgZmFj aWxpdGllcywgc3VjaCBhcwpGbHltYWtlLCBYcmVmIGFuZCBDb21wYW55LiAgVGhlc2Ugb3ZlcnJp ZGluZyBzZXR0aW5ncyBoZWxwIGVuc3VyZQpjb25zaXN0ZW50IEVnbG90IGJlaGF2aW9yIGFuZCBv bmx5IHN0YXkgaW4gcGxhY2UgdW50aWwKXCJtYW5hZ2luZ1wiIHN0b3BzICh1c3VhbGx5IHZpYSBg ZWdsb3Qtc2h1dGRvd24nKSwgd2hlcmV1cG9uIHRoZQpwcmV2aW91cyBzZXR0aW5ncyBhcmUgcmVz dG9yZWQuCgpIb3dldmVyLCBpZiB5b3Ugd2lzaCBmb3IgRWdsb3QgdG8gc3RheSBvdXQgb2YgYSBw YXJ0aWN1bGFyIEVtYWNzCmZhY2lsaXR5IHRoYXQgeW91J2QgbGlrZSB0byBrZWVwIGNvbnRyb2wg b2YgYWRkIGFuIGVsZW1lbnQgdG8KdGhpcyBsaXN0IGFuZCBFZ2xvdCB3aWxsIHJlZnJhaW4gZnJv bSBzZXR0aW5nIGl0LgoKRm9yIGV4YW1wbGUsIHRvIGtlZXAgeW91ciBDb21wYW55IGN1c3RvbWl6 YXRpb24sIGFkZCB0aGUgc3ltYm9sCmBjb21wYW55JyB0byB0aGlzIHZhcmlhYmxlLiIpCgooZGVm dW4gZWdsb3QtLXN0YXktb3V0LW9mLXAgKHN5bWJvbCkKICAiVGVsbCBpZiBFZ2xvdCBzaG91bGQg c3RheSBvdXQgb2YgU1lNQk9MLiIKICAoY2wtZmluZCAoc3ltYm9sLW5hbWUgc3ltYm9sKSBlZ2xv dC1zdGF5LW91dC1vZgogICAgICAgICAgIDp0ZXN0IChsYW1iZGEgKHMgdGhpbmcpCiAgICAgICAg ICAgICAgICAgICAobGV0ICgocmUgKGlmIChzeW1ib2xwIHRoaW5nKSAoc3ltYm9sLW5hbWUgdGhp bmcpIHRoaW5nKSkpCiAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2ggcmUgcykpKSkp CgooZGVmbWFjcm8gZWdsb3QtLXNldHEtc2F2aW5nIChzeW1ib2wgYmluZGluZykKICBgKHVubGVz cyAob3IgKG5vdCAoYm91bmRwICcsc3ltYm9sKSkgKGVnbG90LS1zdGF5LW91dC1vZi1wICcsc3lt Ym9sKSkKICAgICAocHVzaCAoY29ucyAnLHN5bWJvbCAoc3ltYm9sLXZhbHVlICcsc3ltYm9sKSkg ZWdsb3QtLXNhdmVkLWJpbmRpbmdzKQogICAgIChzZXRxLWxvY2FsICxzeW1ib2wgLGJpbmRpbmcp KSkKCihkZWZ1biBlZ2xvdC1tYW5hZ2VkLXAgKCkKICAiVGVsbCBpZiBjdXJyZW50IGJ1ZmZlciBp cyBtYW5hZ2VkIGJ5IEVnbG90LiIKICBlZ2xvdC0tbWFuYWdlZC1tb2RlKQoKKGRlZnZhciBlZ2xv dC1tYW5hZ2VkLW1vZGUtaG9vayBuaWwKICAiQSBob29rIHJ1biBieSBFZ2xvdCBhZnRlciBpdCBz dGFydGVkL3N0b3BwZWQgbWFuYWdpbmcgYSBidWZmZXIuClVzZSBgZWdsb3QtbWFuYWdlZC1wJyB0 byBkZXRlcm1pbmUgaWYgY3VycmVudCBidWZmZXIgaXMgbWFuYWdlZC4iKQoKKGRlZmluZS1taW5v ci1tb2RlIGVnbG90LS1tYW5hZ2VkLW1vZGUKICAiTW9kZSBmb3Igc291cmNlIGJ1ZmZlcnMgbWFu YWdlZCBieSBzb21lIEVnbG90IHByb2plY3QuIgogIDppbml0LXZhbHVlIG5pbCA6bGlnaHRlciBu aWwgOmtleW1hcCBlZ2xvdC1tb2RlLW1hcAogIChjb25kCiAgIChlZ2xvdC0tbWFuYWdlZC1tb2Rl CiAgICAocGNhc2UgKHBsaXN0LWdldCAoZWdsb3QtLWNhcGFiaWxpdGllcyAoZWdsb3QtY3VycmVu dC1zZXJ2ZXIpKQogICAgICAgICAgICAgICAgICAgICAgOnBvc2l0aW9uRW5jb2RpbmcpCiAgICAg ICgidXRmLTMyIgogICAgICAgKGVnbG90LS1zZXRxLXNhdmluZyBlZ2xvdC1jdXJyZW50LWxpbmVw b3MtZnVuY3Rpb24gIydlZ2xvdC11dGYtMzItbGluZXBvcykKICAgICAgIChlZ2xvdC0tc2V0cS1z YXZpbmcgZWdsb3QtbW92ZS10by1saW5lcG9zLWZ1bmN0aW9uICMnZWdsb3QtbW92ZS10by11dGYt MzItbGluZXBvcykpCiAgICAgICgidXRmLTgiCiAgICAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGVn bG90LWN1cnJlbnQtbGluZXBvcy1mdW5jdGlvbiAjJ2VnbG90LXV0Zi04LWxpbmVwb3MpCiAgICAg ICAoZWdsb3QtLXNldHEtc2F2aW5nIGVnbG90LW1vdmUtdG8tbGluZXBvcy1mdW5jdGlvbiAjJ2Vn bG90LW1vdmUtdG8tdXRmLTgtbGluZXBvcykpKQogICAgKGFkZC1ob29rICdhZnRlci1jaGFuZ2Ut ZnVuY3Rpb25zICMnZWdsb3QtLWFmdGVyLWNoYW5nZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYmVm b3JlLWNoYW5nZS1mdW5jdGlvbnMgIydlZ2xvdC0tYmVmb3JlLWNoYW5nZSBuaWwgdCkKICAgIChh ZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAjJ2VnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmIG5pbCB0 KQogICAgOzsgUHJlcGVuZCAiZGlkQ2xvc2UiIHRvIHRoZSBob29rIGFmdGVyIHRoZSAibm9ub2Zm Iiwgc28gaXQgd2lsbCBydW4gZmlyc3QKICAgIChhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAj J2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlIG5pbCB0KQogICAgKGFkZC1ob29r ICdiZWZvcmUtcmV2ZXJ0LWhvb2sgIydlZ2xvdC0tc2lnbmFsLXRleHREb2N1bWVudC9kaWRDbG9z ZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydlZ2xvdC0tYWZ0ZXIt cmV2ZXJ0LWhvb2sgbmlsIHQpCiAgICAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgIydlZ2xv dC0tc2lnbmFsLXRleHREb2N1bWVudC93aWxsU2F2ZSBuaWwgdCkKICAgIChhZGQtaG9vayAnYWZ0 ZXItc2F2ZS1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkU2F2ZSBuaWwgdCkK ICAgICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICd4cmVmKQogICAgICAoYWRkLWhvb2sg J3hyZWYtYmFja2VuZC1mdW5jdGlvbnMgIydlZ2xvdC14cmVmLWJhY2tlbmQgbmlsIHQpKQogICAg KGFkZC1ob29rICdjb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0aW9ucyAjJ2VnbG90LWNvbXBsZXRp b24tYXQtcG9pbnQgbmlsIHQpCiAgICAoYWRkLWhvb2sgJ2NvbXBsZXRpb24taW4tcmVnaW9uLW1v ZGUtaG9vayAjJ2VnbG90LS1jYXBmLXNlc3Npb24tZmx1c2ggbmlsIHQpCiAgICAoYWRkLWhvb2sg J2NvbXBhbnktYWZ0ZXItY29tcGxldGlvbi1ob29rICMnZWdsb3QtLWNhcGYtc2Vzc2lvbi1mbHVz aCBuaWwgdCkKICAgIChhZGQtaG9vayAnY2hhbmdlLW1ham9yLW1vZGUtaG9vayAjJ2VnbG90LS1t YW5hZ2VkLW1vZGUtb2ZmIG5pbCB0KQogICAgKGFkZC1ob29rICdwb3N0LXNlbGYtaW5zZXJ0LWhv b2sgIydlZ2xvdC0tcG9zdC1zZWxmLWluc2VydC1ob29rIG5pbCB0KQogICAgKGFkZC1ob29rICdw cmUtY29tbWFuZC1ob29rICMnZWdsb3QtLXByZS1jb21tYW5kLWhvb2sgbmlsIHQpCiAgICAoZWds b3QtLXNldHEtc2F2aW5nIHhyZWYtcHJvbXB0LWZvci1pZGVudGlmaWVyIG5pbCkKICAgIChlZ2xv dC0tc2V0cS1zYXZpbmcgZmx5bWFrZS1kaWFnbm9zdGljLWZ1bmN0aW9ucyAnKGVnbG90LWZseW1h a2UtYmFja2VuZCkpCiAgICAoZWdsb3QtLXNldHEtc2F2aW5nIGNvbXBhbnktYmFja2VuZHMgJyhj b21wYW55LWNhcGYpKQogICAgKGVnbG90LS1zZXRxLXNhdmluZyBjb21wYW55LXRvb2x0aXAtYWxp Z24tYW5ub3RhdGlvbnMgdCkKICAgIChlZ2xvdC0tc2V0cS1zYXZpbmcgZWxkb2MtZG9jdW1lbnRh dGlvbi1zdHJhdGVneQogICAgICAgICAgICAgICAgICAgICAgICAjJ2VsZG9jLWRvY3VtZW50YXRp b24tY29tcG9zZSkKICAgICh1bmxlc3MgKGVnbG90LS1zdGF5LW91dC1vZi1wICdpbWVudSkKICAg ICAgKGFkZC1mdW5jdGlvbiA6YmVmb3JlLXVudGlsIChsb2NhbCAnaW1lbnUtY3JlYXRlLWluZGV4 LWZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICAgICMnZWdsb3QtaW1lbnUpKQogICAgKHVubGVz cyAoZWdsb3QtLXN0YXktb3V0LW9mLXAgJ2ZseW1ha2UpIChmbHltYWtlLW1vZGUgMSkpCiAgICAo dW5sZXNzIChlZ2xvdC0tc3RheS1vdXQtb2YtcCAnZWxkb2MpCiAgICAgIChhZGQtaG9vayAnZWxk b2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlvbnMgIydlZ2xvdC1ob3Zlci1lbGRvYy1mdW5jdGlvbgog ICAgICAgICAgICAgICAgbmlsIHQpCiAgICAgIChhZGQtaG9vayAnZWxkb2MtZG9jdW1lbnRhdGlv bi1mdW5jdGlvbnMgIydlZ2xvdC1zaWduYXR1cmUtZWxkb2MtZnVuY3Rpb24KICAgICAgICAgICAg ICAgIG5pbCB0KQogICAgICAoZWxkb2MtbW9kZSAxKSkKICAgIChjbC1wdXNobmV3IChjdXJyZW50 LWJ1ZmZlcikgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZlcnMgKGVnbG90LWN1cnJlbnQtc2VydmVyKSkp KQogICAodAogICAgKHJlbW92ZS1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25zICMnZWdsb3Qt LWFmdGVyLWNoYW5nZSB0KQogICAgKHJlbW92ZS1ob29rICdiZWZvcmUtY2hhbmdlLWZ1bmN0aW9u cyAjJ2VnbG90LS1iZWZvcmUtY2hhbmdlIHQpCiAgICAocmVtb3ZlLWhvb2sgJ2tpbGwtYnVmZmVy LWhvb2sgIydlZ2xvdC0tbWFuYWdlZC1tb2RlLW9mZiB0KQogICAgKHJlbW92ZS1ob29rICdraWxs LWJ1ZmZlci1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgdCkKICAg IChyZW1vdmUtaG9vayAnYmVmb3JlLXJldmVydC1ob29rICMnZWdsb3QtLXNpZ25hbC10ZXh0RG9j dW1lbnQvZGlkQ2xvc2UgdCkKICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydl Z2xvdC0tYWZ0ZXItcmV2ZXJ0LWhvb2sgdCkKICAgIChyZW1vdmUtaG9vayAnYmVmb3JlLXNhdmUt aG9vayAjJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L3dpbGxTYXZlIHQpCiAgICAocmVtb3Zl LWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAjJ2VnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZFNh dmUgdCkKICAgIChyZW1vdmUtaG9vayAneHJlZi1iYWNrZW5kLWZ1bmN0aW9ucyAjJ2VnbG90LXhy ZWYtYmFja2VuZCB0KQogICAgKHJlbW92ZS1ob29rICdjb21wbGV0aW9uLWF0LXBvaW50LWZ1bmN0 aW9ucyAjJ2VnbG90LWNvbXBsZXRpb24tYXQtcG9pbnQgdCkKICAgIChyZW1vdmUtaG9vayAnY29t cGxldGlvbi1pbi1yZWdpb24tbW9kZS1ob29rICMnZWdsb3QtLWNhcGYtc2Vzc2lvbi1mbHVzaCB0 KQogICAgKHJlbW92ZS1ob29rICdjb21wYW55LWFmdGVyLWNvbXBsZXRpb24taG9vayAjJ2VnbG90 LS1jYXBmLXNlc3Npb24tZmx1c2ggdCkKICAgIChyZW1vdmUtaG9vayAnY2hhbmdlLW1ham9yLW1v ZGUtaG9vayAjJ2VnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmIHQpCiAgICAocmVtb3ZlLWhvb2sgJ3Bv c3Qtc2VsZi1pbnNlcnQtaG9vayAjJ2VnbG90LS1wb3N0LXNlbGYtaW5zZXJ0LWhvb2sgdCkKICAg IChyZW1vdmUtaG9vayAncHJlLWNvbW1hbmQtaG9vayAjJ2VnbG90LS1wcmUtY29tbWFuZC1ob29r IHQpCiAgICAocmVtb3ZlLWhvb2sgJ2VsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rpb25zICMnZWds b3QtaG92ZXItZWxkb2MtZnVuY3Rpb24gdCkKICAgIChyZW1vdmUtaG9vayAnZWxkb2MtZG9jdW1l bnRhdGlvbi1mdW5jdGlvbnMgIydlZ2xvdC1zaWduYXR1cmUtZWxkb2MtZnVuY3Rpb24gdCkKICAg IChjbC1sb29wIGZvciAodmFyIC4gc2F2ZWQtYmluZGluZykgaW4gZWdsb3QtLXNhdmVkLWJpbmRp bmdzCiAgICAgICAgICAgICBkbyAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlIHZhcikgc2F2ZWQt YmluZGluZykpCiAgICAocmVtb3ZlLWZ1bmN0aW9uIChsb2NhbCAnaW1lbnUtY3JlYXRlLWluZGV4 LWZ1bmN0aW9uKSAjJ2VnbG90LWltZW51KQogICAgKHdoZW4gZWdsb3QtLWN1cnJlbnQtZmx5bWFr ZS1yZXBvcnQtZm4KICAgICAgKGVnbG90LS1yZXBvcnQtdG8tZmx5bWFrZSBuaWwpCiAgICAgIChz ZXRxIGVnbG90LS1jdXJyZW50LWZseW1ha2UtcmVwb3J0LWZuIG5pbCkpCiAgICAobGV0ICgoc2Vy dmVyIGVnbG90LS1jYWNoZWQtc2VydmVyKSkKICAgICAgKHNldHEgZWdsb3QtLWNhY2hlZC1zZXJ2 ZXIgbmlsKQogICAgICAod2hlbiBzZXJ2ZXIKICAgICAgICAoc2V0ZiAoZWdsb3QtLW1hbmFnZWQt YnVmZmVycyBzZXJ2ZXIpCiAgICAgICAgICAgICAgKGRlbHEgKGN1cnJlbnQtYnVmZmVyKSAoZWds b3QtLW1hbmFnZWQtYnVmZmVycyBzZXJ2ZXIpKSkKICAgICAgICAod2hlbiAoYW5kIGVnbG90LWF1 dG9zaHV0ZG93bgogICAgICAgICAgICAgICAgICAgKG51bGwgKGVnbG90LS1tYW5hZ2VkLWJ1ZmZl cnMgc2VydmVyKSkpCiAgICAgICAgICAoZWdsb3Qtc2h1dGRvd24gc2VydmVyKSkpKSkpKQoKKGRl ZnVuIGVnbG90LS1tYW5hZ2VkLW1vZGUtb2ZmICgpCiAgIlR1cm4gb2ZmIGBlZ2xvdC0tbWFuYWdl ZC1tb2RlJyB1bmNvbmRpdGlvbmFsbHkuIgogIChyZW1vdmUtb3ZlcmxheXMgbmlsIG5pbCAnZWds b3QtLW92ZXJsYXkgdCkKICAoZWdsb3QtaW5sYXktaGludHMtbW9kZSAtMSkKICAoZWdsb3QtLW1h bmFnZWQtbW9kZSAtMSkpCgooZGVmdW4gZWdsb3QtY3VycmVudC1zZXJ2ZXIgKCkKICAiUmV0dXJu IGxvZ2ljYWwgRWdsb3Qgc2VydmVyIGZvciBjdXJyZW50IGJ1ZmZlciwgbmlsIGlmIG5vbmUuIgog IChzZXRxIGVnbG90LS1jYWNoZWQtc2VydmVyCiAgICAgICAgKG9yIGVnbG90LS1jYWNoZWQtc2Vy dmVyCiAgICAgICAgICAgIChhbmQgKG5vdCAoZXEgbWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9k ZSkpIDsgZ2gjMTMzMAogICAgICAgICAgICAgICAgIChvcgogICAgICAgICAgICAgICAgICAoY2wt ZmluZC1pZiAjJ2VnbG90LS1sYW5ndWFnZUlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnZXRoYXNoIChlZ2xvdC0tY3VycmVudC1wcm9qZWN0KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0KSkKICAgICAgICAgICAg ICAgICAgKGFuZCBlZ2xvdC1leHRlbmQtdG8teHJlZgogICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAoZ2V0aGFzaCAoZXhwYW5kLWZp bGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVnbG90LS1zZXJ2ZXJzLWJ5LXhyZWZlZC1maWxlKSkpKSkpKQoKKGRlZnVuIGVnbG90LS1jdXJy ZW50LXNlcnZlci1vci1sb3NlICgpCiAgIlJldHVybiBjdXJyZW50IGxvZ2ljYWwgRWdsb3Qgc2Vy dmVyIGNvbm5lY3Rpb24gb3IgZXJyb3IuIgogIChvciAoZWdsb3QtY3VycmVudC1zZXJ2ZXIpCiAg ICAgIChqc29ucnBjLWVycm9yICJObyBjdXJyZW50IEpTT04tUlBDIGNvbm5lY3Rpb24iKSkpCgoo ZGVmdmFyLWxvY2FsIGVnbG90LS1kaWFnbm9zdGljcyBuaWwKICAiRmx5bWFrZSBkaWFnbm9zdGlj cyBmb3IgdGhpcyBidWZmZXIuIikKCihkZWZ2YXIgcmV2ZXJ0LWJ1ZmZlci1wcmVzZXJ2ZS1tb2Rl cykKKGRlZnVuIGVnbG90LS1hZnRlci1yZXZlcnQtaG9vayAoKQogICJFZ2xvdCdzIGBhZnRlci1y ZXZlcnQtaG9vaycuIgogICh3aGVuIHJldmVydC1idWZmZXItcHJlc2VydmUtbW9kZXMgKGVnbG90 LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZE9wZW4pKSkKCihkZWZ1biBlZ2xvdC0tbWF5YmUtYWN0 aXZhdGUtZWRpdGluZy1tb2RlICgpCiAgIk1heWJlIGFjdGl2YXRlIGBlZ2xvdC0tbWFuYWdlZC1t b2RlJy4KCklmIGl0IGlzIGFjdGl2YXRlZCwgYWxzbyBzaWduYWwgdGV4dERvY3VtZW50L2RpZE9w ZW4uIgogICh1bmxlc3MgZWdsb3QtLW1hbmFnZWQtbW9kZQogICAgOzsgQ2FsbGVkIHdoZW4gYHJl dmVydC1idWZmZXItaW4tcHJvZ3Jlc3MtcCcgaXMgdCBidXQKICAgIDs7IGByZXZlcnQtYnVmZmVy LXByZXNlcnZlLW1vZGVzJyBpcyBuaWwuCiAgICAod2hlbiAoYW5kIGJ1ZmZlci1maWxlLW5hbWUg KGVnbG90LWN1cnJlbnQtc2VydmVyKSkKICAgICAgKHNldHEgZWdsb3QtLWRpYWdub3N0aWNzIG5p bCkKICAgICAgKGVnbG90LS1tYW5hZ2VkLW1vZGUpCiAgICAgIChlZ2xvdC0tc2lnbmFsLXRleHRE b2N1bWVudC9kaWRPcGVuKQogICAgICA7OyBSdW4gdXNlciBob29rIGFmdGVyICd0ZXh0RG9jdW1l bnQvZGlkT3Blbicgc28gc2VydmVyIGtub3dzCiAgICAgIDs7IGFib3V0IHRoZSBidWZmZXIuCiAg ICAgIChlZ2xvdC1pbmxheS1oaW50cy1tb2RlIDEpCiAgICAgIChydW4taG9va3MgJ2VnbG90LW1h bmFnZWQtbW9kZS1ob29rKSkpKQoKKGFkZC1ob29rICdhZnRlci1jaGFuZ2UtbWFqb3ItbW9kZS1o b29rICMnZWdsb3QtLW1heWJlLWFjdGl2YXRlLWVkaXRpbmctbW9kZSkKCihkZWZ1biBlZ2xvdC1j bGVhci1zdGF0dXMgKHNlcnZlcikKICAiQ2xlYXIgdGhlIGxhc3QgSlNPTlJQQyBlcnJvciBmb3Ig U0VSVkVSLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1s b3NlKSkpCiAgKHNldGYgKGpzb25ycGMtbGFzdC1lcnJvciBzZXJ2ZXIpIG5pbCkpCgoMCjs7OyBN b2RlLWxpbmUsIG1lbnUgYW5kIG90aGVyIHN1Z2FyCjs7OwooZGVmdmFyIGVnbG90LS1tb2RlLWxp bmUtZm9ybWF0IGAoOmV2YWwgKGVnbG90LS1tb2RlLWxpbmUtZm9ybWF0KSkpCgoocHV0ICdlZ2xv dC0tbW9kZS1saW5lLWZvcm1hdCAncmlza3ktbG9jYWwtdmFyaWFibGUgdCkKCihkZWZ1biBlZ2xv dC0tbW91c2UtY2FsbCAod2hhdCAmb3B0aW9uYWwgdXBkYXRlLW1vZGUtbGluZSkKICAiTWFrZSBh biBpbnRlcmFjdGl2ZSBsYW1iZGEgZm9yIGNhbGxpbmcgV0hBVCB3aXRoIHRoZSBtb3VzZS4iCiAg KGxhbWJkYSAoZXZlbnQpCiAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgKGxldCAoKHN0YXJ0IChl dmVudC1zdGFydCBldmVudCkpKSAod2l0aC1zZWxlY3RlZC13aW5kb3cgKHBvc24td2luZG93IHN0 YXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vy c2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hh ciAob3IgKHBvc24tcG9pbnQgc3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChjYWxsLWludGVyYWN0aXZlbHkgd2hhdCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIHVwZGF0ZS1tb2RlLWxpbmUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcmNlLW1vZGUt bGluZS11cGRhdGUgdCkpKSkpKSkKCihkZWZ1biBlZ2xvdC1tYW51YWwgKCkgIlJlYWQgRWdsb3Qn cyBtYW51YWwuIgogICAgICAgKGRlY2xhcmUgKG9ic29sZXRlIGluZm8gIjEuMTAiKSkKICAgICAg IChpbnRlcmFjdGl2ZSkgKGluZm8gIihlZ2xvdCkiKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBl Z2xvdC11cGdyYWRlLWVnbG90ICgmcmVzdCBfKSAiVXBkYXRlIEVnbG90IHRvIGxhdGVzdCB2ZXJz aW9uLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdpdGgtbm8td2FybmluZ3MKICAgIChyZXF1aXJlICdw YWNrYWdlKQogICAgKHVubGVzcyBwYWNrYWdlLWFyY2hpdmUtY29udGVudHMgKHBhY2thZ2UtcmVm cmVzaC1jb250ZW50cykpCiAgICAod2hlbi1sZXQgKChleGlzdGluZyAoY2FkciAoYXNzb2MgJ2Vn bG90IHBhY2thZ2UtYWxpc3QpKSkpCiAgICAgIChwYWNrYWdlLWRlbGV0ZSBleGlzdGluZyB0KSkK ICAgIChwYWNrYWdlLWluc3RhbGwgKGNhZHIgKGFzc29jICdlZ2xvdCBwYWNrYWdlLWFyY2hpdmUt Y29udGVudHMpKSkpKQoKKGVhc3ktbWVudS1kZWZpbmUgZWdsb3QtbWVudSBuaWwgIkVnbG90Igog IGAoIkVnbG90IgogICAgOzsgQ29tbWFuZHMgZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYW5kIGN1 c3RvbWl6YXRpb24uCiAgICBbIkN1c3RvbWl6ZSBFZ2xvdCIgKGxhbWJkYSAoKSAoaW50ZXJhY3Rp dmUpIChjdXN0b21pemUtZ3JvdXAgImVnbG90IikpXQogICAgIi0tIgogICAgOzsgeHJlZiBsaWtl IGNvbW1hbmRzLgogICAgWyJGaW5kIGRlZmluaXRpb25zIiB4cmVmLWZpbmQtZGVmaW5pdGlvbnMK ICAgICA6aGVscCAiRmluZCBkZWZpbml0aW9ucyBvZiBpZGVudGlmaWVyIGF0IHBvaW50IgogICAg IDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpkZWZpbml0aW9uUHJvdmlkZXIpXQogICAg WyJGaW5kIHJlZmVyZW5jZXMiIHhyZWYtZmluZC1yZWZlcmVuY2VzCiAgICAgOmhlbHAgIkZpbmQg cmVmZXJlbmNlcyB0byBpZGVudGlmaWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNl cnZlci1jYXBhYmxlIDpyZWZlcmVuY2VzUHJvdmlkZXIpXQogICAgWyJGaW5kIHN5bWJvbHMgaW4g d29ya3NwYWNlIChhcHJvcG9zKSIgeHJlZi1maW5kLWFwcm9wb3MKICAgICA6aGVscCAiRmluZCBz eW1ib2xzIG1hdGNoaW5nIGEgcXVlcnkiCiAgICAgOmFjdGl2ZSAoZWdsb3Qtc2VydmVyLWNhcGFi bGUgOndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKV0KICAgIFsiRmluZCBkZWNsYXJhdGlvbiIgZWds b3QtZmluZC1kZWNsYXJhdGlvbgogICAgIDpoZWxwICJGaW5kIGRlY2xhcmF0aW9uIGZvciBpZGVu dGlmaWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpkZWNs YXJhdGlvblByb3ZpZGVyKV0KICAgIFsiRmluZCBpbXBsZW1lbnRhdGlvbiIgZWdsb3QtZmluZC1p bXBsZW1lbnRhdGlvbgogICAgIDpoZWxwICJGaW5kIGltcGxlbWVudGF0aW9uIGZvciBpZGVudGlm aWVyIGF0IHBvaW50IgogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDppbXBsZW1l bnRhdGlvblByb3ZpZGVyKV0KICAgIFsiRmluZCB0eXBlIGRlZmluaXRpb24iIGVnbG90LWZpbmQt dHlwZURlZmluaXRpb24KICAgICA6aGVscCAiRmluZCB0eXBlIGRlZmluaXRpb24gZm9yIGlkZW50 aWZpZXIgYXQgcG9pbnQiCiAgICAgOmFjdGl2ZSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnR5cGVE ZWZpbml0aW9uUHJvdmlkZXIpXQogICAgIi0tIgogICAgOzsgTFNQLXJlbGF0ZWQgY29tbWFuZHMg KG1vc3RseSBFZ2xvdCdzIG93biBjb21tYW5kcykuCiAgICBbIlJlbmFtZSBzeW1ib2wiIGVnbG90 LXJlbmFtZQogICAgIDphY3RpdmUgKGVnbG90LXNlcnZlci1jYXBhYmxlIDpyZW5hbWVQcm92aWRl cildCiAgICBbIkZvcm1hdCBidWZmZXIiIGVnbG90LWZvcm1hdC1idWZmZXIKICAgICA6YWN0aXZl IChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRGb3JtYXR0aW5nUHJvdmlkZXIpXQogICAg WyJGb3JtYXQgYWN0aXZlIHJlZ2lvbiIgZWdsb3QtZm9ybWF0CiAgICAgOmFjdGl2ZSAoYW5kIChy ZWdpb24tYWN0aXZlLXApCiAgICAgICAgICAgICAgICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6 ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcikpXQogICAgWyJTaG93IEZseW1ha2UgZGlh Z25vc3RpY3MgZm9yIGJ1ZmZlciIgZmx5bWFrZS1zaG93LWJ1ZmZlci1kaWFnbm9zdGljc10KICAg IFsiU2hvdyBGbHltYWtlIGRpYWdub3N0aWNzIGZvciBwcm9qZWN0IiBmbHltYWtlLXNob3ctcHJv amVjdC1kaWFnbm9zdGljc10KICAgIFsiU2hvdyBFbGRvYyBkb2N1bWVudGF0aW9uIGF0IHBvaW50 IiBlbGRvYy1kb2MtYnVmZmVyXQogICAgIi0tIgogICAgWyJBbGwgcG9zc2libGUgY29kZSBhY3Rp b25zIiBlZ2xvdC1jb2RlLWFjdGlvbnMKICAgICA6YWN0aXZlIChlZ2xvdC1zZXJ2ZXItY2FwYWJs ZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0KICAgIFsiT3JnYW5pemUgaW1wb3J0cyIgZWdsb3QtY29k ZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cwogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2Fw YWJsZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0KICAgIFsiRXh0cmFjdCIgZWdsb3QtY29kZS1hY3Rp b24tZXh0cmFjdAogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29kZUFjdGlv blByb3ZpZGVyKV0KICAgIFsiSW5saW5lIiBlZ2xvdC1jb2RlLWFjdGlvbi1pbmxpbmUKICAgICA6 dmlzaWJsZSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildCiAgICBb IlJld3JpdGUiIGVnbG90LWNvZGUtYWN0aW9uLXJld3JpdGUKICAgICA6dmlzaWJsZSAoZWdsb3Qt c2VydmVyLWNhcGFibGUgOmNvZGVBY3Rpb25Qcm92aWRlcildCiAgICBbIlF1aWNrZml4IiBlZ2xv dC1jb2RlLWFjdGlvbi1xdWlja2ZpeAogICAgIDp2aXNpYmxlIChlZ2xvdC1zZXJ2ZXItY2FwYWJs ZSA6Y29kZUFjdGlvblByb3ZpZGVyKV0pKQoKKGVhc3ktbWVudS1kZWZpbmUgZWdsb3Qtc2VydmVy LW1lbnUgbmlsICJNb25pdG9yIHNlcnZlciBjb21tdW5pY2F0aW9uIgogICcoIkRlYnVnZ2luZyB0 aGUgc2VydmVyIGNvbW11bmljYXRpb24iCiAgICBbIlJlY29ubmVjdCB0byBzZXJ2ZXIiIGVnbG90 LXJlY29ubmVjdF0KICAgIFsiUXVpdCBzZXJ2ZXIiIGVnbG90LXNodXRkb3duXQogICAgIi0tIgog ICAgWyJMU1AgZXZlbnRzIGJ1ZmZlciIgZWdsb3QtZXZlbnRzLWJ1ZmZlcl0KICAgIFsiU2VydmVy IHN0ZGVyciBidWZmZXIiIGVnbG90LXN0ZGVyci1idWZmZXJdCiAgICBbIkN1c3RvbWl6ZSBldmVu dCBidWZmZXIgc2l6ZSIKICAgICAobGFtYmRhICgpCiAgICAgICAoaW50ZXJhY3RpdmUpCiAgICAg ICAoY3VzdG9taXplLXZhcmlhYmxlICdlZ2xvdC1ldmVudHMtYnVmZmVyLXNpemUpKV0pKQoKKGRl ZnVuIGVnbG90LS1tb2RlLWxpbmUtcHJvcHMgKHRoaW5nIGZhY2UgZGVmcyAmb3B0aW9uYWwgcHJl cGVuZCkKICAiSGVscGVyIGZvciBmdW5jdGlvbiBgZWdsb3QtLW1vZGUtbGluZS1mb3JtYXQnLgpV c2VzIFRISU5HLCBGQUNFLCBERUZTIGFuZCBQUkVQRU5ELiIKICAoY2wtbG9vcCB3aXRoIG1hcCA9 IChtYWtlLXNwYXJzZS1rZXltYXApCiAgICAgICAgICAgZm9yIChlbGVtIC4gcmVzdCkgb24gZGVm cwogICAgICAgICAgIGZvciAoa2V5IGRlZiBoZWxwKSA9IGVsZW0KICAgICAgICAgICBkbyAoZGVm aW5lLWtleSBtYXAgYFttb2RlLWxpbmUgLGtleV0gKGVnbG90LS1tb3VzZS1jYWxsIGRlZiB0KSkK ICAgICAgICAgICBjb25jYXQgKGZvcm1hdCAiJXM6ICVzIiBrZXkgaGVscCkgaW50byBibHVyYgog ICAgICAgICAgIHdoZW4gcmVzdCBjb25jYXQgIlxuIiBpbnRvIGJsdXJiCiAgICAgICAgICAgZmlu YWxseSAocmV0dXJuIGAoOnByb3BlcnRpemUgLHRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmFjZSAsZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGtleW1hcCAsbWFwIGhlbHAtZWNobyAsKGNvbmNhdCBwcmVwZW5kIGJsdXJi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlLWZhY2UgbW9k ZS1saW5lLWhpZ2hsaWdodCkpKSkKCihkZWZ1biBlZ2xvdC0tbW9kZS1saW5lLWZvcm1hdCAoKQog ICJDb21wb3NlIEVnbG90J3MgbW9kZS1saW5lLiIKICAobGV0KiAoKHNlcnZlciAoZWdsb3QtY3Vy cmVudC1zZXJ2ZXIpKQogICAgICAgICAobmljayAoYW5kIHNlcnZlciAoZWdsb3QtcHJvamVjdC1u aWNrbmFtZSBzZXJ2ZXIpKSkKICAgICAgICAgKHBlbmRpbmcgKGFuZCBzZXJ2ZXIgKGpzb25ycGMt Y29udGludWF0aW9uLWNvdW50IHNlcnZlcikpKQogICAgICAgICAobGFzdC1lcnJvciAoYW5kIHNl cnZlciAoanNvbnJwYy1sYXN0LWVycm9yIHNlcnZlcikpKSkKICAgIChhcHBlbmQKICAgICBgKCwo cHJvcGVydGl6ZQogICAgICAgICBlZ2xvdC1tZW51LXN0cmluZwogICAgICAgICAnZmFjZSAnZWds b3QtbW9kZS1saW5lCiAgICAgICAgICdtb3VzZS1mYWNlICdtb2RlLWxpbmUtaGlnaGxpZ2h0CiAg ICAgICAgICdoZWxwLWVjaG8gIkVnbG90OiBFbWFjcyBMU1AgY2xpZW50XG5tb3VzZS0xOiBEaXNw bGF5IG1pbm9yIG1vZGUgbWVudSIKICAgICAgICAgJ2tleW1hcCAobGV0ICgobWFwIChtYWtlLXNw YXJzZS1rZXltYXApKSkKICAgICAgICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbbW9kZS1s aW5lIGRvd24tbW91c2UtMV0gZWdsb3QtbWVudSkKICAgICAgICAgICAgICAgICAgIG1hcCkpKQog ICAgICh3aGVuIG5pY2sKICAgICAgIGAoIjoiCiAgICAgICAgICwocHJvcGVydGl6ZQogICAgICAg ICAgIG5pY2sKICAgICAgICAgICAnZmFjZSAnZWdsb3QtbW9kZS1saW5lCiAgICAgICAgICAgJ21v dXNlLWZhY2UgJ21vZGUtbGluZS1oaWdobGlnaHQKICAgICAgICAgICAnaGVscC1lY2hvIChmb3Jt YXQgIlByb2plY3QgJyVzJ1xubW91c2UtMTogTFNQIHNlcnZlciBjb250cm9sIG1lbnUiIG5pY2sp CiAgICAgICAgICAgJ2tleW1hcCAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAg ICAgICAgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFttb2RlLWxpbmUgZG93bi1tb3VzZS0x XSBlZ2xvdC1zZXJ2ZXItbWVudSkKICAgICAgICAgICAgICAgICAgICAgbWFwKSkKICAgICAgICAg LEAod2hlbiBsYXN0LWVycm9yCiAgICAgICAgICAgICBgKCIvIiAsKGVnbG90LS1tb2RlLWxpbmUt cHJvcHMKICAgICAgICAgICAgICAgICAgICAgImVycm9yIiAnY29tcGlsYXRpb24tbW9kZS1saW5l LWZhaWwKICAgICAgICAgICAgICAgICAgICAgJygobW91c2UtMyBlZ2xvdC1jbGVhci1zdGF0dXMg ICJDbGVhciB0aGlzIHN0YXR1cyIpKQogICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJBbiBl cnJvciBvY2N1cnJlZDogJXNcbiIgKHBsaXN0LWdldCBsYXN0LWVycm9yCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXNz YWdlKSkpKSkKICAgICAgICAgLEAod2hlbiAoY2wtcGx1c3AgcGVuZGluZykKICAgICAgICAgICAg IGAoIi8iICwoZWdsb3QtLW1vZGUtbGluZS1wcm9wcwogICAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICIlZCIgcGVuZGluZykgJ3dhcm5pbmcKICAgICAgICAgICAgICAgICAgICAgJygobW91c2Ut MyBlZ2xvdC1mb3JnZXQtcGVuZGluZy1jb250aW51YXRpb25zCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIkZvcmdldCBwZW5kaW5nIGNvbnRpbnVhdGlvbnMiKSkKICAgICAgICAgICAg ICAgICAgICAgIk51bWJlciBvZiBvdXRnb2luZywgXApzdGlsbCB1bmFuc3dlcmVkIExTUCByZXF1 ZXN0cyB0byB0aGUgc2VydmVyXG4iKSkpCiAgICAgICAgICxAKGNsLWxvb3AgZm9yIHByIGhhc2gt dmFsdWVzIG9mIChlZ2xvdC0tcHJvZ3Jlc3MtcmVwb3J0ZXJzIHNlcnZlcikKICAgICAgICAgICAg ICAgICAgICB3aGVuIChlcSAoY2FyIHByKSAgJ2VnbG90LS1tb2RlLWxpbmUtcmVwb3J0ZXIpCiAg ICAgICAgICAgICAgICAgICAgYXBwZW5kIGAoIi8iICwoZWdsb3QtLW1vZGUtbGluZS1wcm9wcwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIiVzJSUlJSIgKG9yIChu dGggNCBwcikgIj8iKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWdsb3Qt bW9kZS1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiKCVzKSAlcyAlcyIgKG50aCAxIHBy KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAyIHByKSAo bnRoIDMgcHIpKSkpKSkpKSkpCgooYWRkLXRvLWxpc3QgJ21vZGUtbGluZS1taXNjLWluZm8KICAg ICAgICAgICAgIGAoZWdsb3QtLW1hbmFnZWQtbW9kZSAoIiBbIiBlZ2xvdC0tbW9kZS1saW5lLWZv cm1hdCAiXSAiKSkpCgoMCjs7OyBGbHltYWtlIGN1c3RvbWl6YXRpb24KOzs7CihwdXQgJ2VnbG90 LW5vdGUgJ2ZseW1ha2UtY2F0ZWdvcnkgJ2ZseW1ha2Utbm90ZSkKKHB1dCAnZWdsb3Qtd2Fybmlu ZyAnZmx5bWFrZS1jYXRlZ29yeSAnZmx5bWFrZS13YXJuaW5nKQoocHV0ICdlZ2xvdC1lcnJvciAn Zmx5bWFrZS1jYXRlZ29yeSAnZmx5bWFrZS1lcnJvcikKCihkZWZhbGlhcyAnZWdsb3QtLW1ha2Ut ZGlhZyAjJ2ZseW1ha2UtbWFrZS1kaWFnbm9zdGljKQooZGVmYWxpYXMgJ2VnbG90LS1kaWFnLWRh dGEgIydmbHltYWtlLWRpYWdub3N0aWMtZGF0YSkKCihkZWZ2YXIgZWdsb3QtZGlhZ25vc3RpY3Mt bWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBt YXAgW21vdXNlLTJdICMnZWdsb3QtY29kZS1hY3Rpb25zLWF0LW1vdXNlKQogICAgbWFwKQogICJL ZXltYXAgYWN0aXZlIGluIEVnbG90LWJhY2tlZCBGbHltYWtlIGRpYWdub3N0aWMgb3ZlcmxheXMu IikKCihjbC1sb29wIGZvciBpIGZyb20gMQogICAgICAgICBmb3IgdHlwZSBpbiAnKGVnbG90LW5v dGUgZWdsb3Qtd2FybmluZyBlZ2xvdC1lcnJvcikKICAgICAgICAgZG8gKHB1dCB0eXBlICdmbHlt YWtlLW92ZXJsYXktY29udHJvbAogICAgICAgICAgICAgICAgIGAoKG1vdXNlLWZhY2UgLiBoaWdo bGlnaHQpCiAgICAgICAgICAgICAgICAgICAocHJpb3JpdHkgLiAsKCsgNTAgaSkpCiAgICAgICAg ICAgICAgICAgICAoa2V5bWFwIC4gLGVnbG90LWRpYWdub3N0aWNzLW1hcCkpKSkKCgwKOzs7IFBy b3RvY29sIGltcGxlbWVudGF0aW9uIChSZXF1ZXN0cywgbm90aWZpY2F0aW9ucywgZXRjKQo7OzsK KGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgbWV0aG9k ICZrZXkgJmFsbG93LW90aGVyLWtleXMpCiAgIkhhbmRsZSB1bmtub3duIG5vdGlmaWNhdGlvbi4i CiAgKHVubGVzcyAob3IgKHN0cmluZy1wcmVmaXgtcCAiJCIgKGZvcm1hdCAiJXMiIG1ldGhvZCkp CiAgICAgICAgICAgICAgKG5vdCAobWVtcSAnZGlzYWxsb3ctdW5rbm93bi1tZXRob2RzIGVnbG90 LXN0cmljdC1tb2RlKSkpCiAgICAoZWdsb3QtLXdhcm4gIlNlcnZlciBzZW50IHVua25vd24gbm90 aWZpY2F0aW9uIG1ldGhvZCBgJXMnIiBtZXRob2QpKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFu ZGxlLXJlcXVlc3QKICAoX3NlcnZlciBtZXRob2QgJmtleSAmYWxsb3ctb3RoZXIta2V5cykKICAi SGFuZGxlIHVua25vd24gcmVxdWVzdC4iCiAgKHdoZW4gKG1lbXEgJ2Rpc2FsbG93LXVua25vd24t bWV0aG9kcyBlZ2xvdC1zdHJpY3QtbW9kZSkKICAgIChqc29ucnBjLWVycm9yICJVbmtub3duIHJl cXVlc3QgbWV0aG9kIGAlcyciIG1ldGhvZCkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUt bm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB3aW5kb3cvc2hvd01lc3NhZ2Up KSAma2V5IHR5cGUgbWVzc2FnZSkKICAiSGFuZGxlIG5vdGlmaWNhdGlvbiB3aW5kb3cvc2hvd01l c3NhZ2UuIgogIChlZ2xvdC0tbWVzc2FnZSAocHJvcGVydGl6ZSAiU2VydmVyIHJlcG9ydHMgKHR5 cGU9JXMpOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgKGlmICg8PSB0 eXBlIDEpICdlcnJvcikpCiAgICAgICAgICAgICAgICAgIHR5cGUgbWVzc2FnZSkpCgooY2wtZGVm bWV0aG9kIGVnbG90LWhhbmRsZS1yZXF1ZXN0CiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB3aW5k b3cvc2hvd01lc3NhZ2VSZXF1ZXN0KSkKICAgICAgICAgICAma2V5IHR5cGUgbWVzc2FnZSBhY3Rp b25zICZhbGxvdy1vdGhlci1rZXlzKQogICJIYW5kbGUgc2VydmVyIHJlcXVlc3Qgd2luZG93L3No b3dNZXNzYWdlUmVxdWVzdC4iCiAgKGxldCogKChhY3Rpb25zIChhcHBlbmQgYWN0aW9ucyBuaWwp KSA7OyBnaCM2MjcKICAgICAgICAgKGxhYmVsIChjb21wbGV0aW5nLXJlYWQKICAgICAgICAgICAg ICAgICAoY29uY2F0CiAgICAgICAgICAgICAgICAgIChmb3JtYXQgKHByb3BlcnRpemUgIltlZ2xv dF0gU2VydmVyIHJlcG9ydHMgKHR5cGU9JXMpOiAlcyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnZmFjZSAoaWYgKG9yIChub3QgdHlwZSkgKDw9IHR5cGUgMSkpICdlcnJv cikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSBtZXNzYWdlKQogICAgICAgICAgICAg ICAgICAiXG5DaG9vc2UgYW4gb3B0aW9uOiAiKQogICAgICAgICAgICAgICAgIChvciAobWFwY2Fy IChsYW1iZGEgKG9iaikgKHBsaXN0LWdldCBvYmogOnRpdGxlKSkgYWN0aW9ucykKICAgICAgICAg ICAgICAgICAgICAgJygiT0siKSkKICAgICAgICAgICAgICAgICBuaWwgdCAocGxpc3QtZ2V0IChl bHQgYWN0aW9ucyAwKSA6dGl0bGUpKSkpCiAgICAoaWYgbGFiZWwgYCg6dGl0bGUgLGxhYmVsKSA6 bnVsbCkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2 ZXIgKF9tZXRob2QgKGVxbCB3aW5kb3cvbG9nTWVzc2FnZSkpICZrZXkgX3R5cGUgX21lc3NhZ2Up CiAgIkhhbmRsZSBub3RpZmljYXRpb24gd2luZG93L2xvZ01lc3NhZ2UuIikgOzsgbm9vcCwgdXNl IGV2ZW50cyBidWZmZXIKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbgog IChfc2VydmVyIChfbWV0aG9kIChlcWwgdGVsZW1ldHJ5L2V2ZW50KSkgJnJlc3QgX2FueSkKICAi SGFuZGxlIG5vdGlmaWNhdGlvbiB0ZWxlbWV0cnkvZXZlbnQuIikgOzsgbm9vcCwgdXNlIGV2ZW50 cyBidWZmZXIKCihkZWZhbGlhcyAnZWdsb3QtLXJlcG9ydGVyLXVwZGF0ZQogIChpZiAoPiBlbWFj cy1tYWpvci12ZXJzaW9uIDI2KSAjJ3Byb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZQogICAgKGxhbWJk YSAoYSBiICZvcHRpb25hbCBfYykgKHByb2dyZXNzLXJlcG9ydGVyLXVwZGF0ZSBhIGIpKSkpCgoo Y2wtZGVmbWV0aG9kIGVnbG90LWhhbmRsZS1ub3RpZmljYXRpb24KICAoc2VydmVyIChfbWV0aG9k IChlcWwgJC9wcm9ncmVzcykpICZrZXkgdG9rZW4gdmFsdWUpCiAgIkhhbmRsZSAkL3Byb2dyZXNz IG5vdGlmaWNhdGlvbiBpZGVudGlmaWVkIGJ5IFRPS0VOIGZyb20gU0VSVkVSLiIKICAod2hlbiBl Z2xvdC1yZXBvcnQtcHJvZ3Jlc3MKICAgIChjbC1mbGV0ICgoZm10ICgmcmVzdCBhcmdzKSAobWFw Y29uY2F0ICMnaWRlbnRpdHkgYXJncyAiICIpKQogICAgICAgICAgICAgIChta3ByICh0aXRsZSkK ICAgICAgICAgICAgICAgIChpZiAoZXEgZWdsb3QtcmVwb3J0LXByb2dyZXNzICdtZXNzYWdlcykK ICAgICAgICAgICAgICAgICAgICAobWFrZS1wcm9ncmVzcy1yZXBvcnRlcgogICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0ICJbZWdsb3RdICVzICVzOiAlcyIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZWdsb3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpIHRva2VuIHRpdGxlKSkKICAg ICAgICAgICAgICAgICAgKGxpc3QgJ2VnbG90LS1tb2RlLWxpbmUtcmVwb3J0ZXIgdG9rZW4gdGl0 bGUpKSkKICAgICAgICAgICAgICAodXBkIChwY250IG1zZyAmb3B0aW9uYWwKICAgICAgICAgICAg ICAgICAgICAgICAgIChwciAoZ2V0aGFzaCB0b2tlbiAoZWdsb3QtLXByb2dyZXNzLXJlcG9ydGVy cyBzZXJ2ZXIpKSkpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAgICAoKGVx IChjYXIgcHIpICdlZ2xvdC0tbW9kZS1saW5lLXJlcG9ydGVyKQogICAgICAgICAgICAgICAgICAg KHNldGNkciAoY2RkciBwcikgKGxpc3QgbXNnIHBjbnQpKQogICAgICAgICAgICAgICAgICAgKGZv cmNlLW1vZGUtbGluZS11cGRhdGUgdCkpCiAgICAgICAgICAgICAgICAgIChwciAoZWdsb3QtLXJl cG9ydGVyLXVwZGF0ZSBwciBwY250IG1zZykpKSkpCiAgICAgIChlZ2xvdC0tZGJpbmQgKChXb3Jr RG9uZVByb2dyZXNzKSBraW5kIHRpdGxlIHBlcmNlbnRhZ2UgbWVzc2FnZSkgdmFsdWUKICAgICAg ICAocGNhc2Uga2luZAogICAgICAgICAgKCJiZWdpbiIKICAgICAgICAgICAodXBkIHBlcmNlbnRh Z2UgKGZtdCB0aXRsZSBtZXNzYWdlKQogICAgICAgICAgICAgICAgKHB1dGhhc2ggdG9rZW4gKG1r cHIgdGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXByb2dyZXNzLXJlcG9y dGVycyBzZXJ2ZXIpKSkpCiAgICAgICAgICAoInJlcG9ydCIgKHVwZCBwZXJjZW50YWdlIG1lc3Nh Z2UpKQogICAgICAgICAgKCJlbmQiICh1cGQgKG9yIHBlcmNlbnRhZ2UgMTAwKSBtZXNzYWdlKQog ICAgICAgICAgIChydW4tYXQtdGltZSAyIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAobGFt YmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbWhhc2ggdG9rZW4gKGVnbG90LS1w cm9ncmVzcy1yZXBvcnRlcnMgc2VydmVyKSkpKSkpKSkpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1o YW5kbGUtbm90aWZpY2F0aW9uCiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB0ZXh0RG9jdW1lbnQv cHVibGlzaERpYWdub3N0aWNzKSkgJmtleSB1cmkgZGlhZ25vc3RpY3MKICAgICAgICAgICAmYWxs b3ctb3RoZXIta2V5cykgOyBGSVhNRTogZG9lc24ndCByZXNwZWN0IGBlZ2xvdC1zdHJpY3QtbW9k ZScKICAiSGFuZGxlIG5vdGlmaWNhdGlvbiBwdWJsaXNoRGlhZ25vc3RpY3MuIgogIChjbC1mbGV0 ICgoZWdsb3QtLWRpYWctdHlwZSAoc2V2KQogICAgICAgICAgICAgIChjb25kICgobnVsbCBzZXYp ICdlZ2xvdC1lcnJvcikKICAgICAgICAgICAgICAgICAgICAoKDw9IHNldiAxKSAnZWdsb3QtZXJy b3IpCiAgICAgICAgICAgICAgICAgICAgKCg9IHNldiAyKSAgJ2VnbG90LXdhcm5pbmcpCiAgICAg ICAgICAgICAgICAgICAgKHQgICAgICAgICAgJ2VnbG90LW5vdGUpKSkKICAgICAgICAgICAgKG1l c3MgKHNvdXJjZSBjb2RlIG1lc3NhZ2UpCiAgICAgICAgICAgICAgKGNvbmNhdCBzb3VyY2UgKGFu ZCBjb2RlIChmb3JtYXQgIiBbJXNdIiBjb2RlKSkgIjogIiBtZXNzYWdlKSkpCiAgICAoaWYtbGV0 KiAoKHBhdGggKGV4cGFuZC1maWxlLW5hbWUgKGVnbG90LXVyaS10by1wYXRoIHVyaSkpKQogICAg ICAgICAgICAgIChidWZmZXIgKGZpbmQtYnVmZmVyLXZpc2l0aW5nIHBhdGgpKSkKICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAg aW5pdGlhbGx5CiAgICAgICAgICAgKHNldHEgZmx5bWFrZS1saXN0LW9ubHktZGlhZ25vc3RpY3MK ICAgICAgICAgICAgICAgICAoYXNzb2MtZGVsZXRlLWFsbCBwYXRoIGZseW1ha2UtbGlzdC1vbmx5 LWRpYWdub3N0aWNzKSkKICAgICAgICAgICBmb3IgZGlhZy1zcGVjIGFjcm9zcyBkaWFnbm9zdGlj cwogICAgICAgICAgIGNvbGxlY3QgKGVnbG90LS1kYmluZCAoKERpYWdub3N0aWMpIHJhbmdlIGNv ZGUgbWVzc2FnZSBzZXZlcml0eSBzb3VyY2UgdGFncykKICAgICAgICAgICAgICAgICAgICAgICBk aWFnLXNwZWMKICAgICAgICAgICAgICAgICAgICAgKHNldHEgbWVzc2FnZSAobWVzcyBzb3VyY2Ug Y29kZSBtZXNzYWdlKSkKICAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldAogICAgICAgICAg ICAgICAgICAgICAgICAgKChgKCxiZWcgLiAsZW5kKSAoZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdl KSkpCiAgICAgICAgICAgICAgICAgICAgICAgOzsgRmFsbGJhY2sgdG8gYGZseW1ha2UtZGlhZy1y ZWdpb24nIGlmIHNlcnZlcgogICAgICAgICAgICAgICAgICAgICAgIDs7IGJvdGNoZWQgdGhlIHJh bmdlCiAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKD0gYmVnIGVuZCkKICAgICAgICAgICAg ICAgICAgICAgICAgIChpZi1sZXQqICgoc3QgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWFnLXJlZ2lvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZmx5bWFrZS1kaWFnLXJlZ2lvbgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSAoMSsgKHBsaXN0LWdldCBz dCA6bGluZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0 IHN0IDpjaGFyYWN0ZXIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgYmVn IChjYXIgZGlhZy1yZWdpb24pIGVuZCAoY2RyIGRpYWctcmVnaW9uKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVnbG90LS13aWRlbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRx IGJlZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1ib2wKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSsgKHBsaXN0LWdldCAocGxpc3QtZ2V0IHJh bmdlIDpzdGFydCkgOmxpbmUpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBl bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxKyAocGxpc3QtZ2V0IChwbGlzdC1n ZXQgcmFuZ2UgOmVuZCkgOmxpbmUpKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90 LS1tYWtlLWRpYWcKICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSBiZWcg ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZGlhZy10eXBlIHNldmVyaXR5KQog ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIGAoKGVnbG90LWxzcC1kaWFnIC4gLGRpYWct c3BlYykpCiAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuLWxldCAoKGZhY2VzCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1sb29wIGZvciB0YWcgYWNyb3NzIHRhZ3MK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiAoYWxpc3Qt Z2V0IHRhZyBlZ2xvdC0tdGFnLWZhY2VzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb2xsZWN0IGl0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYCgo ZmFjZSAuICxmYWNlcykpKSkpKQogICAgICAgICAgIGludG8gZGlhZ3MKICAgICAgICAgICBmaW5h bGx5IChjb25kICgoYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG9ubHkgYWRkIHRv IGN1cnJlbnQgcmVwb3J0IGlmIEZseW1ha2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsg c3RhcnRzIG9uIGlkbGUtdGltZXIgKGdpdGh1YiM5NTgpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKG51bGwgZmx5bWFrZS1uby1jaGFuZ2VzLXRpbWVvdXQpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICBlZ2xvdC0tY3VycmVudC1mbHltYWtlLXJlcG9ydC1mbikKICAgICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXJlcG9ydC10by1mbHltYWtlIGRpYWdzKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZWds b3QtLWRpYWdub3N0aWNzIGRpYWdzKSkpKSkKICAgICAgKGNsLWxvb3AKICAgICAgIGZvciBkaWFn LXNwZWMgYWNyb3NzIGRpYWdub3N0aWNzCiAgICAgICBjb2xsZWN0IChlZ2xvdC0tZGJpbmQgKChE aWFnbm9zdGljKSBjb2RlIHJhbmdlIG1lc3NhZ2Ugc2V2ZXJpdHkgc291cmNlKSBkaWFnLXNwZWMK ICAgICAgICAgICAgICAgICAoc2V0cSBtZXNzYWdlIChtZXNzIHNvdXJjZSBjb2RlIG1lc3NhZ2Up KQogICAgICAgICAgICAgICAgIChsZXQqICgoc3RhcnQgKHBsaXN0LWdldCByYW5nZSA6c3RhcnQp KQogICAgICAgICAgICAgICAgICAgICAgICAobGluZSAoMSsgKHBsaXN0LWdldCBzdGFydCA6bGlu ZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAoMSsgKHBsaXN0LWdldCBzdGFydCA6 Y2hhcmFjdGVyKSkpKQogICAgICAgICAgICAgICAgICAgKGVnbG90LS1tYWtlLWRpYWcKICAgICAg ICAgICAgICAgICAgICBwYXRoIChjb25zIGxpbmUgY2hhcikgbmlsIChlZ2xvdC0tZGlhZy10eXBl IHNldmVyaXR5KSBtZXNzYWdlKSkpCiAgICAgICBpbnRvIGRpYWdzCiAgICAgICBmaW5hbGx5CiAg ICAgICAoc2V0cSBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcwogICAgICAgICAgICAgKGFz c29jLWRlbGV0ZS1hbGwgcGF0aCBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcykpCiAgICAg ICAocHVzaCAoY29ucyBwYXRoIGRpYWdzKSBmbHltYWtlLWxpc3Qtb25seS1kaWFnbm9zdGljcykp KSkpCgooY2wtZGVmdW4gZWdsb3QtLXJlZ2lzdGVyLXVucmVnaXN0ZXIgKHNlcnZlciB0aGluZ3Mg aG93KQogICJIZWxwZXIgZm9yIGByZWdpc3RlckNhcGFiaWxpdHknLgpUSElOR1MgYXJlIGVpdGhl ciByZWdpc3RyYXRpb25zIG9yIHVucmVnaXN0ZXJhdGlvbnMgKHNpYykuIgogIChjbC1sb29wCiAg IGZvciB0aGluZyBpbiAoY2wtY29lcmNlIHRoaW5ncyAnbGlzdCkKICAgZG8gKGVnbG90LS1kYmlu ZCAoKFJlZ2lzdHJhdGlvbikgaWQgbWV0aG9kIHJlZ2lzdGVyT3B0aW9ucykgdGhpbmcKICAgICAg ICAoYXBwbHkgKGNsLWVjYXNlIGhvdwogICAgICAgICAgICAgICAgIChyZWdpc3RlciAnZWdsb3Qt cmVnaXN0ZXItY2FwYWJpbGl0eSkKICAgICAgICAgICAgICAgICAodW5yZWdpc3RlciAnZWdsb3Qt dW5yZWdpc3Rlci1jYXBhYmlsaXR5KSkKICAgICAgICAgICAgICAgc2VydmVyIChpbnRlcm4gbWV0 aG9kKSBpZCByZWdpc3Rlck9wdGlvbnMpKSkpCgooY2wtZGVmbWV0aG9kIGVnbG90LWhhbmRsZS1y ZXF1ZXN0CiAgKHNlcnZlciAoX21ldGhvZCAoZXFsIGNsaWVudC9yZWdpc3RlckNhcGFiaWxpdHkp KSAma2V5IHJlZ2lzdHJhdGlvbnMpCiAgIkhhbmRsZSBzZXJ2ZXIgcmVxdWVzdCBjbGllbnQvcmVn aXN0ZXJDYXBhYmlsaXR5LiIKICAoZWdsb3QtLXJlZ2lzdGVyLXVucmVnaXN0ZXIgc2VydmVyIHJl Z2lzdHJhdGlvbnMgJ3JlZ2lzdGVyKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVl c3QKICAoc2VydmVyIChfbWV0aG9kIChlcWwgY2xpZW50L3VucmVnaXN0ZXJDYXBhYmlsaXR5KSkK ICAgICAgICAgICZrZXkgdW5yZWdpc3RlcmF0aW9ucykgOzsgWFhYOiAidW5yZWdpc3RlcmF0aW9u cyIgKHNpYykKICAiSGFuZGxlIHNlcnZlciByZXF1ZXN0IGNsaWVudC91bnJlZ2lzdGVyQ2FwYWJp bGl0eS4iCiAgKGVnbG90LS1yZWdpc3Rlci11bnJlZ2lzdGVyIHNlcnZlciB1bnJlZ2lzdGVyYXRp b25zICd1bnJlZ2lzdGVyKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVlc3QKICAo X3NlcnZlciAoX21ldGhvZCAoZXFsIHdvcmtzcGFjZS9hcHBseUVkaXQpKSAma2V5IF9sYWJlbCBl ZGl0KQogICJIYW5kbGUgc2VydmVyIHJlcXVlc3Qgd29ya3NwYWNlL2FwcGx5RWRpdC4iCiAgKGVn bG90LS1hcHBseS13b3Jrc3BhY2UtZWRpdCBlZGl0IGxhc3QtY29tbWFuZCkKICBgKDphcHBsaWVk IHQpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtcmVxdWVzdAogIChzZXJ2ZXIgKF9tZXRo b2QgKGVxbCB3b3Jrc3BhY2Uvd29ya3NwYWNlRm9sZGVycykpKQogICJIYW5kbGUgc2VydmVyIHJl cXVlc3Qgd29ya3NwYWNlL3dvcmtzcGFjZUZvbGRlcnMuIgogIChlZ2xvdC13b3Jrc3BhY2UtZm9s ZGVycyBzZXJ2ZXIpKQoKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtcmVxdWVzdAogIChfc2Vy dmVyIChfbWV0aG9kIChlcWwgd2luZG93L3Nob3dEb2N1bWVudCkpICZrZXkKICAgICAgICAgICB1 cmkgZXh0ZXJuYWwgdGFrZUZvY3VzIHNlbGVjdGlvbikKICAiSGFuZGxlIHJlcXVlc3Qgd2luZG93 L3Nob3dEb2N1bWVudC4iCiAgKGxldCAoKHN1Y2Nlc3MgdCkKICAgICAgICAoZmlsZW5hbWUpKQog ICAgKGNvbmQKICAgICAoKGVxIGV4dGVybmFsIHQpIChicm93c2UtdXJsIHVyaSkpCiAgICAgKChm aWxlLXJlYWRhYmxlLXAgKHNldHEgZmlsZW5hbWUgKGVnbG90LXVyaS10by1wYXRoIHVyaSkpKQog ICAgICA7OyBVc2UgcnVuLXdpdGgtdGltZXIgdG8gYXZvaWQgbmVzdGVkIGNsaWVudCByZXF1ZXN0 cyBsaWtlIHRoZQogICAgICA7OyAic3luY2hyb25vdXMgaW1lbnUiIGZsb2F0ZWQgaW4gYnVnIzYy MTE2IHByZXN1bWFibHkgY2F1c2VkIGJ5CiAgICAgIDs7IHdoaWNoLWZ1bmMtbW9kZS4KICAgICAg KHJ1bi13aXRoLXRpbWVyCiAgICAgICAwIG5pbAogICAgICAgKGxhbWJkYSAoKQogICAgICAgICAo d2l0aC1jdXJyZW50LWJ1ZmZlciAoZmluZC1maWxlLW5vc2VsZWN0IGZpbGVuYW1lKQogICAgICAg ICAgIChjb25kICh0YWtlRm9jdXMKICAgICAgICAgICAgICAgICAgKHBvcC10by1idWZmZXIgKGN1 cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQt Zm9jdXMgKHNlbGVjdGVkLWZyYW1lKSkpCiAgICAgICAgICAgICAgICAgKChkaXNwbGF5LWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkpCiAgICAgICAgICAgKHdoZW4gc2VsZWN0aW9uCiAgICAgICAg ICAgICAocGNhc2UtbGV0ICgoYCgsYmVnIC4gLGVuZCkgKGVnbG90LXJhbmdlLXJlZ2lvbiBzZWxl Y3Rpb24pKSkKICAgICAgICAgICAgICAgOzsgRklYTUU6IGl0IGlzIHZlcnkgbmF1Z2h0eSB0byB1 c2Ugc29tZW9uZSBlbHNlJ3MgYC0tJwogICAgICAgICAgICAgICA7OyBmdW5jdGlvbiwgYnV0IGB4 cmVmLS1nb3RvLWNoYXInIGhhcHBlbnMgdG8gaGF2ZQogICAgICAgICAgICAgICA7OyBleGFjdGx5 IHRoZSBzZW1hbnRpY3Mgd2Ugd2FudCB2aXMtYS12aXMgd2lkZW5pbmcuCiAgICAgICAgICAgICAg ICh4cmVmLS1nb3RvLWNoYXIgYmVnKQogICAgICAgICAgICAgICAocHVsc2UtbW9tZW50YXJ5LWhp Z2hsaWdodC1yZWdpb24gYmVnIGVuZCAnaGlnaGxpZ2h0KSkpKSkpKQogICAgICh0IChzZXRxIHN1 Y2Nlc3MgOmpzb24tZmFsc2UpKSkKICAgIGAoOnN1Y2Nlc3MgLHN1Y2Nlc3MpKSkKCihkZWZ1biBl Z2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllciAoKQogICJDb21wdXRlIFRleHREb2N1bWVudElk ZW50aWZpZXIgb2JqZWN0IGZvciBjdXJyZW50IGJ1ZmZlci4iCiAgYCg6dXJpICwoZWdsb3QtcGF0 aC10by11cmkgKG9yIGJ1ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChidWZmZXItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YnVmZmVyLWJhc2UtYnVmZmVyKSkpKSkpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tdmVyc2lvbmVk LWlkZW50aWZpZXIgMCkKCihkZWZ1biBlZ2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50SWRlbnRp ZmllciAoKQogICJDb21wdXRlIFZlcnNpb25lZFRleHREb2N1bWVudElkZW50aWZpZXIgb2JqZWN0 IGZvciBjdXJyZW50IGJ1ZmZlci4iCiAgKGFwcGVuZCAoZWdsb3QtLVRleHREb2N1bWVudElkZW50 aWZpZXIpCiAgICAgICAgICBgKDp2ZXJzaW9uICxlZ2xvdC0tdmVyc2lvbmVkLWlkZW50aWZpZXIp KSkKCihjbC1kZWZ1biBlZ2xvdC0tbGFuZ3VhZ2VJZCAoJm9wdGlvbmFsIChzZXJ2ZXIgKGVnbG90 LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkpCiAgIkNvbXB1dGUgTFNQIFxcPSdsYW5ndWFnZUlk XFw9JyBzdHJpbmcgZm9yIGN1cnJlbnQgYnVmZmVyLgpEb3VibGVzIGFzIGFuIHByZWRpY2F0ZSB0 ZWxsaW5nIGlmIFNFUlZFUiBjYW4gbWFuYWdlIGN1cnJlbnQKYnVmZmVyLiIKICAoY2wtbG9vcCBm b3IgKG1vZGUgLiBsYW5ndWFnZWlkKSBpbgogICAgICAgICAgIChlZ2xvdC0tbGFuZ3VhZ2VzIHNl cnZlcikKICAgICAgICAgICB3aGVuIChwcm92aWRlZC1tb2RlLWRlcml2ZWQtcCBtYWpvci1tb2Rl IG1vZGUpCiAgICAgICAgICAgcmV0dXJuIGxhbmd1YWdlaWQpKQoKKGRlZnVuIGVnbG90LS1UZXh0 RG9jdW1lbnRJdGVtICgpCiAgIkNvbXB1dGUgVGV4dERvY3VtZW50SXRlbSBvYmplY3QgZm9yIGN1 cnJlbnQgYnVmZmVyLiIKICAoYXBwZW5kCiAgIChlZ2xvdC0tVmVyc2lvbmVkVGV4dERvY3VtZW50 SWRlbnRpZmllcikKICAgKGxpc3QgOmxhbmd1YWdlSWQgKGVnbG90LS1sYW5ndWFnZUlkKQogICAg ICAgICA6dGV4dAogICAgICAgICAoZWdsb3QtLXdpZGVuaW5nCiAgICAgICAgICAoYnVmZmVyLXN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKSkKCihkZWZ1 biBlZ2xvdC0tVGV4dERvY3VtZW50UG9zaXRpb25QYXJhbXMgKCkKICAiQ29tcHV0ZSBUZXh0RG9j dW1lbnRQb3NpdGlvblBhcmFtcy4iCiAgKGxpc3QgOnRleHREb2N1bWVudCAoZWdsb3QtLVRleHRE b2N1bWVudElkZW50aWZpZXIpCiAgICAgICAgOnBvc2l0aW9uIChlZ2xvdC0tcG9zLXRvLWxzcC1w b3NpdGlvbikpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyIG5pbAog ICJJZiBub24tbmlsLCB2YWx1ZSBvZiB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIgaW4gYnVm ZmVyLiIpCgooZGVmdW4gZWdsb3QtLXBvc3Qtc2VsZi1pbnNlcnQtaG9vayAoKQogICJTZXQgYGVn bG90LS1sYXN0LWluc2VydGVkLWNoYXInLCBtYXliZSBjYWxsIG9uLXR5cGUtZm9ybWF0dGluZy4i CiAgKHNldHEgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBsYXN0LWNvbW1hbmQtZXZlbnQpCiAg KGxldCAoKG90LXByb3ZpZGVyIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRPblR5cGVG b3JtYXR0aW5nUHJvdmlkZXIpKSkKICAgICh3aGVuIChhbmQgb3QtcHJvdmlkZXIKICAgICAgICAg ICAgICAgKGlnbm9yZS1lcnJvcnMgOyBnaXRodWIjOTA2LCBzb21lIExTJ3Mgc2VuZCBlbXB0eSBz dHJpbmdzCiAgICAgICAgICAgICAgICAgKG9yIChlcSBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFy CiAgICAgICAgICAgICAgICAgICAgICAgICAoc2VxLWZpcnN0IChwbGlzdC1nZXQgb3QtcHJvdmlk ZXIgOmZpcnN0VHJpZ2dlckNoYXJhY3RlcikpKQogICAgICAgICAgICAgICAgICAgICAoY2wtZmlu ZCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgb3QtcHJvdmlkZXIgOm1vcmVUcmlnZ2VyQ2hhcmFjdGVyKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6a2V5ICMnc2VxLWZpcnN0KSkpKQogICAgICAoZWdsb3QtZm9y bWF0IChwb2ludCkgbmlsIGVnbG90LS1sYXN0LWluc2VydGVkLWNoYXIpKSkpCgooZGVmdmFyIGVn bG90LS13b3Jrc3BhY2Utc3ltYm9scy1jYWNoZSAobWFrZS1oYXNoLXRhYmxlIDp0ZXN0ICMnZXF1 YWwpCiAgIkNhY2hlIG9mIGB3b3Jrc3BhY2UvU3ltYm9sJyByZXN1bHRzICB1c2VkIGJ5IGB4cmVm LWZpbmQtZGVmaW5pdGlvbnMnLiIpCgooZGVmdW4gZWdsb3QtLXByZS1jb21tYW5kLWhvb2sgKCkK ICAiUmVzZXQgc29tZSB0ZW1wb3JhcnkgdmFyaWFibGVzLiIKICAoY2xyaGFzaCBlZ2xvdC0td29y a3NwYWNlLXN5bWJvbHMtY2FjaGUpCiAgKHNldHEgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQtY2hhciBu aWwpKQoKKGRlZnVuIGVnbG90LS1Db21wbGV0aW9uUGFyYW1zICgpCiAgKGFwcGVuZAogICAoZWds b3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQogICBgKDpjb250ZXh0CiAgICAgLChpZi1s ZXQgKHRyaWdnZXIgKGFuZCAoY2hhcmFjdGVycCBlZ2xvdC0tbGFzdC1pbnNlcnRlZC1jaGFyKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWZpbmQgZWdsb3QtLWxhc3QtaW5zZXJ0ZWQt Y2hhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LXNlcnZlci1j YXBhYmxlIDpjb21wbGV0aW9uUHJvdmlkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnRyaWdnZXJDaGFyYWN0ZXJzKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChzdHIpIChhcmVmIHN0 ciAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0ZXN0ICMnY2hhci1l cXVhbCkpKQogICAgICAgICAgYCg6dHJpZ2dlcktpbmQgMiA6dHJpZ2dlckNoYXJhY3RlciAsdHJp Z2dlcikgYCg6dHJpZ2dlcktpbmQgMSkpKSkpCgooZGVmdmFyLWxvY2FsIGVnbG90LS1yZWNlbnQt Y2hhbmdlcyBuaWwKICAiUmVjZW50IGJ1ZmZlciBjaGFuZ2VzIGFzIGNvbGxlY3RlZCBieSBgZWds b3QtLWJlZm9yZS1jaGFuZ2UnLiIpCgooY2wtZGVmbWV0aG9kIGpzb25ycGMtY29ubmVjdGlvbi1y ZWFkeS1wICgoX3NlcnZlciBlZ2xvdC1sc3Atc2VydmVyKSBfd2hhdCkKICAiVGVsbCBpZiBTRVJW RVIgaXMgcmVhZHkgZm9yIFdIQVQgaW4gY3VycmVudCBidWZmZXIuIgogIChhbmQgKGNsLWNhbGwt bmV4dC1tZXRob2QpIChub3QgZWdsb3QtLXJlY2VudC1jaGFuZ2VzKSkpCgooZGVmdmFyLWxvY2Fs IGVnbG90LS1jaGFuZ2UtaWRsZS10aW1lciBuaWwgIklkbGUgdGltZXIgZm9yIGRpZENoYW5nZSBz aWduYWxzLiIpCgooZGVmdW4gZWdsb3QtLWJlZm9yZS1jaGFuZ2UgKGJlZyBlbmQpCiAgIkhvb2sg b250byBgYmVmb3JlLWNoYW5nZS1mdW5jdGlvbnMnIHdpdGggQkVHIGFuZCBFTkQuIgogICh3aGVu IChsaXN0cCBlZ2xvdC0tcmVjZW50LWNoYW5nZXMpCiAgICA7OyBSZWNvcmRzIEJFRyBhbmQgRU5E LCBjcnVjaWFsbHkgY29udmVydCB0aGVtIGludG8gTFNQCiAgICA7OyAobGluZS9jaGFyKSBwb3Np dGlvbnMgYmVmb3JlIHRoYXQgaW5mb3JtYXRpb24gaXMgbG9zdCAoYmVjYXVzZQogICAgOzsgdGhl IGFmdGVyLWNoYW5nZSB0aGluZ3kgZG9lc24ndCBrbm93IGlmIG5ld2xpbmVzIHdlcmUKICAgIDs7 IGRlbGV0ZWQvYWRkZWQpLiAgQWxzbyByZWNvcmQgbWFya2VycyBvZiBCRUcgYW5kIEVORAogICAg OzsgKGdpdGh1YiMyNTkpCiAgICAocHVzaCBgKCwoZWdsb3QtLXBvcy10by1sc3AtcG9zaXRpb24g YmVnKQogICAgICAgICAgICAsKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGVuZCkKICAgICAg ICAgICAgKCxiZWcgLiAsKGNvcHktbWFya2VyIGJlZyBuaWwpKQogICAgICAgICAgICAoLGVuZCAu ICwoY29weS1tYXJrZXIgZW5kIHQpKSkKICAgICAgICAgIGVnbG90LS1yZWNlbnQtY2hhbmdlcykp KQoKKGRlZnZhciBlZ2xvdC0tZG9jdW1lbnQtY2hhbmdlZC1ob29rICcoZWdsb3QtLXNpZ25hbC10 ZXh0RG9jdW1lbnQvZGlkQ2hhbmdlKQogICJJbnRlcm5hbCBob29rIGZvciBkb2luZyB0aGluZ3Mg d2hlbiB0aGUgZG9jdW1lbnQgY2hhbmdlcy4iKQoKKGRlZnVuIGVnbG90LS1hZnRlci1jaGFuZ2Ug KGJlZyBlbmQgcHJlLWNoYW5nZS1sZW5ndGgpCiAgIkhvb2sgb250byBgYWZ0ZXItY2hhbmdlLWZ1 bmN0aW9ucycuClJlY29yZHMgQkVHLCBFTkQgYW5kIFBSRS1DSEFOR0UtTEVOR1RIIGxvY2FsbHku IgogIChjbC1pbmNmIGVnbG90LS12ZXJzaW9uZWQtaWRlbnRpZmllcikKICAocGNhc2UgKGNhci1z YWZlIGVnbG90LS1yZWNlbnQtY2hhbmdlcykKICAgIChgKCxsc3AtYmVnICxsc3AtZW5kCiAgICAg ICAgICAgICAgICAoLGItYmVnIC4gLGItYmVnLW1hcmtlcikKICAgICAgICAgICAgICAgICgsYi1l bmQgLiAsYi1lbmQtbWFya2VyKSkKICAgICA7OyBnaXRodWIjMjU5IGFuZCBnaXRodWIjMzY3OiB3 aXRoIGBjYXBpdGFsaXplLXdvcmQnICYgZnJpZW5kcywKICAgICA7OyBgYmVmb3JlLWNoYW5nZS1m dW5jdGlvbnMnIHJlY29yZHMgdGhlIHdob2xlIHdvcmQncyBgYi1iZWcnIGFuZAogICAgIDs7IGBi LWVuZCcuICBTaW1pbGFybHksIHdoZW4gYGZpbGwtcGFyYWdyYXBoJyBjb2FsZXNjZXMgdHdvCiAg ICAgOzsgbGluZXMsIGBiLWJlZycgYW5kIGBiLWVuZCcgbWFyayBlbmQgb2YgZmlyc3QgbGluZSBh bmQgZW5kIG9mCiAgICAgOzsgc2Vjb25kIGxpbmUsIHJlc3AuICBJbiBib3RoIHNpdHVhdGlvbnMs IGBiZWcnIGFuZCBgZW5kJwogICAgIDs7IHJlY2VpdmVkIGhlcmUgc2VlbWluZ2x5IGNvbnRyYWRp Y3QgdGhhdDogdGhleSB3aWxsIGRpZmZlciBieSAxCiAgICAgOzsgYW5kIGVuY29tcGFzcyB0aGUg Y2FwaXRhbGl6ZWQgY2hhcmFjdGVyIG9yLCBpbiB0aGUgY29hbGVzY2luZwogICAgIDs7IGNhc2Us IHRoZSByZXBsYWNlbWVudCBvZiB0aGUgbmV3bGluZSB3aXRoIGEgc3BhY2UuICBXZSBrZWVwCiAg ICAgOzsgYm90aCBtYXJrZXJzIGFuZCBwb3NpdGlvbnMgdG8gZGV0ZWN0IGFuZCBjb3JyZWN0IHRo aXMuICBJbgogICAgIDs7IHRoaXMgc3BlY2lmaWMgY2FzZSwgd2UgaWdub3JlIGBiZWcnLCBgbGVu JyBhbmQKICAgICA7OyBgcHJlLWNoYW5nZS1sZW4nIGFuZCBzZW5kIHJpY2hlciBpbmZvcm1hdGlv biBhYm91dCB0aGUgcmVnaW9uCiAgICAgOzsgZnJvbSB0aGUgbWFya2Vycy4gIEkndmUgYWxzbyBl eHBlcmltZW50ZWQgd2l0aCBkb2luZyB0aGlzCiAgICAgOzsgdW5jb25kaXRpb25hbGx5IGJ1dCBp dCBzZWVtcyB0byBicmVhayB3aGVuIG5ld2xpbmVzIGFyZSBhZGRlZC4KICAgICAoaWYgKGFuZCAo PSBiLWVuZCBiLWVuZC1tYXJrZXIpICg9IGItYmVnIGItYmVnLW1hcmtlcikKICAgICAgICAgICAg ICAob3IgKC89IGJlZyBiLWJlZykgKC89IGVuZCBiLWVuZCkpKQogICAgICAgICAoc2V0Y2FyIGVn bG90LS1yZWNlbnQtY2hhbmdlcwogICAgICAgICAgICAgICAgIGAoLGxzcC1iZWcgLGxzcC1lbmQg LCgtIGItZW5kLW1hcmtlciBiLWJlZy1tYXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAsKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiLWJlZy1tYXJrZXIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGItZW5k LW1hcmtlcikpKQogICAgICAgKHNldGNhciBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKICAgICAgICAg ICAgICAgYCgsbHNwLWJlZyAsbHNwLWVuZCAscHJlLWNoYW5nZS1sZW5ndGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAsKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkp KSkKICAgIChfIChzZXRmIGVnbG90LS1yZWNlbnQtY2hhbmdlcyA6ZW1hY3MtbWVzc3VwKSkpCiAg KHdoZW4gZWdsb3QtLWNoYW5nZS1pZGxlLXRpbWVyIChjYW5jZWwtdGltZXIgZWdsb3QtLWNoYW5n ZS1pZGxlLXRpbWVyKSkKICAobGV0ICgoYnVmIChjdXJyZW50LWJ1ZmZlcikpKQogICAgKHNldHEg ZWdsb3QtLWNoYW5nZS1pZGxlLXRpbWVyCiAgICAgICAgICAocnVuLXdpdGgtaWRsZS10aW1lcgog ICAgICAgICAgIGVnbG90LXNlbmQtY2hhbmdlcy1pZGxlLXRpbWUKICAgICAgICAgICBuaWwgKGxh bWJkYSAoKSAoZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIgYnVmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAod2hlbiBlZ2xvdC0tbWFuYWdlZC1tb2RlCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChydW4taG9va3MgJ2VnbG90LS1kb2N1bWVudC1jaGFuZ2VkLWhvb2spCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGVnbG90LS1jaGFuZ2UtaWRsZS10aW1lciBuaWwp KSkpKSkpKQoKKGRlZnZhci1sb2NhbCBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbiAoKQog ICJDb25maWd1cmUgTFNQIHNlcnZlcnMgc3BlY2lmaWNhbGx5IGZvciBhIGdpdmVuIHByb2plY3Qu CgpUaGlzIHZhcmlhYmxlJ3MgdmFsdWUgc2hvdWxkIGJlIGEgcGxpc3QgKFNFQ1RJT04gVkFMVUUg Li4uKS4KU0VDVElPTiBpcyBhIGtleXdvcmQgbmFtaW5nIGEgcGFyYW1ldGVyIHNlY3Rpb24gcmVs ZXZhbnQgdG8gYQpwYXJ0aWN1bGFyIHNlcnZlci4gIFZBTFVFIGlzIGEgcGxpc3Qgb3IgYSBwcmlt aXRpdmUgdHlwZQpjb252ZXJ0ZWQgdG8gSlNPTiBhbHNvIHVuZGVyc3Rvb2QgYnkgdGhhdCBzZXJ2 ZXIuCgpJbnN0ZWFkIG9mIGEgcGxpc3QsIGFuIGFsaXN0ICgoU0VDVElPTiAuIFZBTFVFKSAuLi4p IGNhbiBiZSB1c2VkCmluc3RlYWQsIGJ1dCB0aGlzIHZhcmlhbnQgaXMgbGVzcyByZWxpYWJsZSBh bmQgbm90IHJlY29tbWVuZGVkLgoKVGhpcyB2YXJpYWJsZSBzaG91bGQgYmUgc2V0IGFzIGEgZGly ZWN0b3J5LWxvY2FsIHZhcmlhYmxlLiAgU2VlCmluZm8gbm9kZSBgKGVtYWNzKURpcmVjdG9yeSBW YXJpYWJsZXMnIGZvciB2YXJpb3VzIHdheXMgdG8gZG8gdGhhdC4KCkhlcmUncyBhbiBleGFtcGxl IHZhbHVlIHRoYXQgZXN0YWJsaXNoZXMgdHdvIHNlY3Rpb25zIHJlbGV2YW50IHRvCnRoZSBQeWxz cCBhbmQgR29wbHMgTFNQIHNlcnZlcnM6CgogICg6cHlsc3AgKDpwbHVnaW5zICg6amVkaV9jb21w bGV0aW9uICg6aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgOnB5bGludCAoOmVuYWJsZWQg Ompzb24tZmFsc2UpKSkKICAgOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKQoKVGhlIHZhbHVl IG9mIHRoaXMgdmFyaWFibGUgY2FuIGFsc28gYmUgYSB1bmFyeSBmdW5jdGlvbiBvZiBhCnNpbmds ZSBhcmd1bWVudCwgd2hpY2ggd2lsbCBiZSBhIGNvbm5lY3RlZCBgZWdsb3QtbHNwLXNlcnZlcicK aW5zdGFuY2UuICBUaGUgZnVuY3Rpb24gcnVucyB3aXRoIGBkZWZhdWx0LWRpcmVjdG9yeScgc2V0 IHRvIHRoZQpyb290IG9mIHRoZSBjdXJyZW50IHByb2plY3QuICBJdCBzaG91bGQgcmV0dXJuIGFu IG9iamVjdCBvZiB0aGUKZm9ybWF0IGRlc2NyaWJlZCBhYm92ZS4iKQoKOzs7IyMjYXV0b2xvYWQK KHB1dCAnZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gJ3NhZmUtbG9jYWwtdmFyaWFibGUg IydsaXN0cCkKCihkZWZ1biBlZ2xvdC1zaG93LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uICgmb3B0 aW9uYWwgc2VydmVyKQogICJEdW1wIGBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbicgYXMg SlNPTiBmb3IgZGVidWdnaW5nLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1yZWFkLXNl cnZlciAiU2hvdyB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbiBmb3IiIHQpKSkKICAobGV0ICgoY29u ZiAoZWdsb3QtLXdvcmtzcGFjZS1jb25maWd1cmF0aW9uLXBsaXN0IHNlcnZlcikpKQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRUdMT1Qgd29ya3NwYWNlIGNv bmZpZ3VyYXRpb24qIikKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgKGluc2VydCAoanNvbnJw Yy0tanNvbi1lbmNvZGUgY29uZikpCiAgICAgICh3aXRoLW5vLXdhcm5pbmdzCiAgICAgICAgKHJl cXVpcmUgJ2pzb24pCiAgICAgICAgKHdoZW4gKHJlcXVpcmUgJ2pzb24tbW9kZSBuaWwgdCkgKGpz b24tbW9kZSkpCiAgICAgICAgKGpzb24tcHJldHR5LXByaW50LWJ1ZmZlcikpCiAgICAgIChwb3At dG8tYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkpCgooZGVmdW4gZWdsb3QtLXdvcmtzcGFjZS1j b25maWd1cmF0aW9uLXBsaXN0IChzZXJ2ZXIgJm9wdGlvbmFsIHBhdGgpCiAgIlJldHVybnMgU0VS VkVSJ3Mgd29ya3NwYWNlIGNvbmZpZ3VyYXRpb24gYXMgYSBwbGlzdC4KSWYgUEFUSCBjb25zaWRl ciB0aGF0IGZpbGUncyBgZmlsZS1uYW1lLWRpcmVjdG9yeScgdG8gZ2V0IHRoZQpsb2NhbCB2YWx1 ZSBvZiB0aGUgYGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uJyB2YXJpYWJsZSwgZWxzZQp1 c2UgdGhlIHJvb3Qgb2YgU0VSVkVSJ3MgYGVnbG90LS1wcm9qZWN0Jy4iCiAgKGxldCAoKHZhbCAo d2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQog ICAgICAgICAgICAgICAgICAgICA7OyBTZWUgZ2l0aHViIzEyODEKICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhdGggKGlmIChmaWxlLWRpcmVjdG9yeS1wIHBhdGgpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBwYXRoKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IHBhdGgpKQogICAgICAg ICAgICAgICAgICAgICAgIChwcm9qZWN0LXJvb3QgKGVnbG90LS1wcm9qZWN0IHNlcnZlcikpKSkK ICAgICAgICAgICAgICAgOzsgU2V0IHRoZSBtYWpvciBtb2RlIHRvIGJlIHRoZSBmaXJzdCBvZiB0 aGUgbWFuYWdlZAogICAgICAgICAgICAgICA7OyBtb2Rlcy4gIFRoaXMgaXMgdGhlIG9uZSB0aGUg dXNlciBzdGFydGVkIGVnbG90IGluLgogICAgICAgICAgICAgICAoc2V0cSBtYWpvci1tb2RlIChj YXIgKGVnbG90LS1tYWpvci1tb2RlcyBzZXJ2ZXIpKSkKICAgICAgICAgICAgICAgKGhhY2stZGly LWxvY2FsLXZhcmlhYmxlcy1ub24tZmlsZS1idWZmZXIpCiAgICAgICAgICAgICAgIChpZiAoZnVu Y3Rpb25wIGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uKQogICAgICAgICAgICAgICAgICAg KGZ1bmNhbGwgZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gc2VydmVyKQogICAgICAgICAg ICAgICAgIGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uKSkpKQogICAgKG9yIChhbmQgKGNv bnNwIChjYXIgdmFsKSkKICAgICAgICAgICAgIChjbC1sb29wIGZvciAoc2VjdGlvbiAuIHYpIGlu IHZhbAogICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCAoaWYgKGtleXdvcmRwIHNlY3Rpb24p IHNlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJuIChmb3JtYXQg IjolcyIgc2VjdGlvbikpKQogICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCB2KSkKICAgICAg ICB2YWwpKSkKCihkZWZ1biBlZ2xvdC1zaWduYWwtZGlkQ2hhbmdlQ29uZmlndXJhdGlvbiAoc2Vy dmVyKQogICJTZW5kIGEgYDp3b3Jrc3BhY2UvZGlkQ2hhbmdlQ29uZmlndXJhdGlvbicgc2lnbmFs IHRvIFNFUlZFUi4KV2hlbiBjYWxsZWQgaW50ZXJhY3RpdmVseSwgdXNlIHRoZSBjdXJyZW50bHkg YWN0aXZlIHNlcnZlciIKICAoaW50ZXJhY3RpdmUgKGxpc3QgKGVnbG90LS1jdXJyZW50LXNlcnZl ci1vci1sb3NlKSkpCiAgKGpzb25ycGMtbm90aWZ5CiAgIHNlcnZlciA6d29ya3NwYWNlL2RpZENo YW5nZUNvbmZpZ3VyYXRpb24KICAgKGxpc3QKICAgIDpzZXR0aW5ncwogICAgKG9yIChlZ2xvdC0t d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVyKQogICAgICAgIGVnbG90LS17fSkp KSkKCihjbC1kZWZtZXRob2QgZWdsb3QtaGFuZGxlLXJlcXVlc3QKICAoc2VydmVyIChfbWV0aG9k IChlcWwgd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24pKSAma2V5IGl0ZW1zKQogICJIYW5kbGUgc2Vy dmVyIHJlcXVlc3Qgd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24uIgogIChhcHBseSAjJ3ZlY3Rvcgog ICAgICAgICAobWFwY2FyCiAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKENvbmZpZ3VyYXRpb25J dGVtKSBzY29wZVVyaSBzZWN0aW9uKQogICAgICAgICAgICAoY2wtbG9vcAogICAgICAgICAgICAg d2l0aCBzY29wZS11cmktcGF0aCA9IChhbmQgc2NvcGVVcmkgKGVnbG90LXVyaS10by1wYXRoIHNj b3BlVXJpKSkKICAgICAgICAgICAgIGZvciAod3NlY3Rpb24gbykKICAgICAgICAgICAgIG9uIChl Z2xvdC0td29ya3NwYWNlLWNvbmZpZ3VyYXRpb24tcGxpc3Qgc2VydmVyIHNjb3BlLXVyaS1wYXRo KQogICAgICAgICAgICAgYnkgIydjZGRyCiAgICAgICAgICAgICB3aGVuIChzdHJpbmc9CiAgICAg ICAgICAgICAgICAgICAoaWYgKGtleXdvcmRwIHdzZWN0aW9uKQogICAgICAgICAgICAgICAgICAg ICAgIChzdWJzdHJpbmcgKHN5bWJvbC1uYW1lIHdzZWN0aW9uKSAxKQogICAgICAgICAgICAgICAg ICAgICB3c2VjdGlvbikKICAgICAgICAgICAgICAgICAgIHNlY3Rpb24pCiAgICAgICAgICAgICBy ZXR1cm4gbykpCiAgICAgICAgICBpdGVtcykpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERv Y3VtZW50L2RpZENoYW5nZSAoKQogICJTZW5kIHRleHREb2N1bWVudC9kaWRDaGFuZ2UgdG8gc2Vy dmVyLiIKICAod2hlbiBlZ2xvdC0tcmVjZW50LWNoYW5nZXMKICAgIChsZXQqICgoc2VydmVyIChl Z2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkpCiAgICAgICAgICAgKHN5bmMtY2FwYWJpbGl0 eSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOnRleHREb2N1bWVudFN5bmMpKQogICAgICAgICAgIChz eW5jLWtpbmQgKGlmIChudW1iZXJwIHN5bmMtY2FwYWJpbGl0eSkgc3luYy1jYXBhYmlsaXR5CiAg ICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgc3luYy1jYXBhYmlsaXR5IDpjaGFuZ2Up KSkKICAgICAgICAgICAoZnVsbC1zeW5jLXAgKG9yIChlcSBzeW5jLWtpbmQgMSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlcSA6ZW1hY3MtbWVzc3VwIGVnbG90LS1yZWNlbnQtY2hhbmdl cykpKSkKICAgICAgKGpzb25ycGMtbm90aWZ5CiAgICAgICBzZXJ2ZXIgOnRleHREb2N1bWVudC9k aWRDaGFuZ2UKICAgICAgIChsaXN0CiAgICAgICAgOnRleHREb2N1bWVudCAoZWdsb3QtLVZlcnNp b25lZFRleHREb2N1bWVudElkZW50aWZpZXIpCiAgICAgICAgOmNvbnRlbnRDaGFuZ2VzCiAgICAg ICAgKGlmIGZ1bGwtc3luYy1wCiAgICAgICAgICAgICh2ZWN0b3IgYCg6dGV4dCAsKGVnbG90LS13 aWRlbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIChwb2ludC1taW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heCkpKSkpCiAgICAgICAgICAo Y2wtbG9vcCBmb3IgKGJlZyBlbmQgbGVuIHRleHQpIGluIChyZXZlcnNlIGVnbG90LS1yZWNlbnQt Y2hhbmdlcykKICAgICAgICAgICAgICAgICAgIDs7IGdpdGh1YiMyNTk6IGBjYXBpdGFsaXplLXdv cmQnIGFuZCBjb21tYW5kcyBiYXNlZAogICAgICAgICAgICAgICAgICAgOzsgb24gYGNhc2lmeV9y ZWdpb24nIHdpbGwgY2F1c2UgbXVsdGlwbGUgZHVwbGljYXRlCiAgICAgICAgICAgICAgICAgICA7 OyBlbXB0eSBlbnRyaWVzIGluIGBlZ2xvdC0tYmVmb3JlLWNoYW5nZScgY2FsbHMKICAgICAgICAg ICAgICAgICAgIDs7IHdpdGhvdXQgYW4gYGVnbG90LS1hZnRlci1jaGFuZ2UnIHJlY2lwcm9jYWwu CiAgICAgICAgICAgICAgICAgICA7OyBXZWVkIHRoZW0gb3V0IGhlcmUuCiAgICAgICAgICAgICAg ICAgICB3aGVuIChudW1iZXJwIGxlbikKICAgICAgICAgICAgICAgICAgIHZjb25jYXQgYFssKGxp c3QgOnJhbmdlIGAoOnN0YXJ0ICxiZWcgOmVuZCAsZW5kKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA6cmFuZ2VMZW5ndGggbGVuIDp0ZXh0IHRleHQpXSkpKSkKICAgICAgKHNl dHEgZWdsb3QtLXJlY2VudC1jaGFuZ2VzIG5pbCkKICAgICAgKGpzb25ycGMtLWNhbGwtZGVmZXJy ZWQgc2VydmVyKSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZE9wZW4g KCkKICAiU2VuZCB0ZXh0RG9jdW1lbnQvZGlkT3BlbiB0byBzZXJ2ZXIuIgogIChzZXRxIGVnbG90 LS1yZWNlbnQtY2hhbmdlcyBuaWwgZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyIDApCiAgKGpz b25ycGMtbm90aWZ5CiAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAgOnRleHRE b2N1bWVudC9kaWRPcGVuIGAoOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9jdW1lbnRJdGVt KSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENsb3NlICgpCiAgIlNl bmQgdGV4dERvY3VtZW50L2RpZENsb3NlIHRvIHNlcnZlci4iCiAgKHdpdGgtZGVtb3RlZC1lcnJv cnMKICAgICAgIltlZ2xvdF0gZXJyb3Igc2VuZGluZyB0ZXh0RG9jdW1lbnQvZGlkQ2xvc2U6ICVz IgogICAgKGpzb25ycGMtbm90aWZ5CiAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3Nl KQogICAgIDp0ZXh0RG9jdW1lbnQvZGlkQ2xvc2UgYCg6dGV4dERvY3VtZW50ICwoZWdsb3QtLVRl eHREb2N1bWVudElkZW50aWZpZXIpKSkpKQoKKGRlZnVuIGVnbG90LS1zaWduYWwtdGV4dERvY3Vt ZW50L3dpbGxTYXZlICgpCiAgIk1heWJlIHNlbmQgdGV4dERvY3VtZW50L3dpbGxTYXZlIHRvIHNl cnZlci4iCiAgKGxldCAoKHNlcnZlciAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQog ICAgICAgIChwYXJhbXMgYCg6cmVhc29uIDEgOnRleHREb2N1bWVudCAsKGVnbG90LS1UZXh0RG9j dW1lbnRJZGVudGlmaWVyKSkpKQogICAgKHdoZW4gKGVnbG90LXNlcnZlci1jYXBhYmxlIDp0ZXh0 RG9jdW1lbnRTeW5jIDp3aWxsU2F2ZSkKICAgICAgKGpzb25ycGMtbm90aWZ5IHNlcnZlciA6dGV4 dERvY3VtZW50L3dpbGxTYXZlIHBhcmFtcykpCiAgICAod2hlbiAoZWdsb3Qtc2VydmVyLWNhcGFi bGUgOnRleHREb2N1bWVudFN5bmMgOndpbGxTYXZlV2FpdFVudGlsKQogICAgICAoaWdub3JlLWVy cm9ycwogICAgICAgIChlZ2xvdC0tYXBwbHktdGV4dC1lZGl0cwogICAgICAgICAoZWdsb3QtLXJl cXVlc3Qgc2VydmVyIDp0ZXh0RG9jdW1lbnQvd2lsbFNhdmVXYWl0VW50aWwgcGFyYW1zCiAgICAg ICAgICAgICAgICAgICAgICAgICA6dGltZW91dCAwLjUpKSkpKSkKCihkZWZ1biBlZ2xvdC0tc2ln bmFsLXRleHREb2N1bWVudC9kaWRTYXZlICgpCiAgIk1heWJlIHNlbmQgdGV4dERvY3VtZW50L2Rp ZFNhdmUgdG8gc2VydmVyLiIKICAoZWdsb3QtLXNpZ25hbC10ZXh0RG9jdW1lbnQvZGlkQ2hhbmdl KQogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6dGV4dERvY3VtZW50U3luYyA6c2F2ZSkK ICAgIChqc29ucnBjLW5vdGlmeQogICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkK ICAgICA6dGV4dERvY3VtZW50L2RpZFNhdmUKICAgICAobGlzdAogICAgICA7OyBUT0RPOiBIYW5k bGUgVGV4dERvY3VtZW50U2F2ZVJlZ2lzdHJhdGlvbk9wdGlvbnMgdG8gY29udHJvbCB0aGlzLgog ICAgICA6dGV4dCAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChw b2ludC1tYXgpKQogICAgICA6dGV4dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRp ZmllcikpKSkpCgooZGVmdW4gZWdsb3QtZmx5bWFrZS1iYWNrZW5kIChyZXBvcnQtZm4gJnJlc3Qg X21vcmUpCiAgIkEgRmx5bWFrZSBiYWNrZW5kIGZvciBFZ2xvdC4KQ2FsbHMgUkVQT1JULUZOIChv ciBhcnJhbmdlcyBmb3IgaXQgdG8gYmUgY2FsbGVkKSB3aGVuIHRoZSBzZXJ2ZXIKcHVibGlzaGVz IGRpYWdub3N0aWNzLiAgQmV0d2VlbiBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLCBSRVBPUlQtRk4K bWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyAocmVzcGVjdGluZyB0aGUgcHJvdG9jb2wgb2YK YGZseW1ha2UtZGlhZ25vc3RpYy1mdW5jdGlvbnMnKS4iCiAgKGNvbmQgKGVnbG90LS1tYW5hZ2Vk LW1vZGUKICAgICAgICAgKHNldHEgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1yZXBvcnQtZm4gcmVw b3J0LWZuKQogICAgICAgICAoZWdsb3QtLXJlcG9ydC10by1mbHltYWtlIGVnbG90LS1kaWFnbm9z dGljcykpCiAgICAgICAgKHQKICAgICAgICAgKGZ1bmNhbGwgcmVwb3J0LWZuIG5pbCkpKSkKCihk ZWZ1biBlZ2xvdC0tcmVwb3J0LXRvLWZseW1ha2UgKGRpYWdzKQogICJJbnRlcm5hbCBoZWxwZXIg Zm9yIGBlZ2xvdC1mbHltYWtlLWJhY2tlbmQnLiIKICAoc2F2ZS1yZXN0cmljdGlvbgogICAgKHdp ZGVuKQogICAgKGZ1bmNhbGwgZWdsb3QtLWN1cnJlbnQtZmx5bWFrZS1yZXBvcnQtZm4gZGlhZ3MK ICAgICAgICAgICAgIDs7IElmIHRoZSBidWZmZXIgaGFzbid0IGNoYW5nZWQgc2luY2UgbGFzdAog ICAgICAgICAgICAgOzsgY2FsbCB0byB0aGUgcmVwb3J0IGZ1bmN0aW9uLCBmbHltYWtlIHdvbid0 CiAgICAgICAgICAgICA7OyBkZWxldGUgb2xkIGRpYWdub3N0aWNzLiAgVXNpbmcgOnJlZ2lvbgog ICAgICAgICAgICAgOzsga2V5d29yZCBmb3JjZXMgZmx5bWFrZSB0byBkZWxldGUKICAgICAgICAg ICAgIDs7IHRoZW0gKGdpdGh1YiMxNTkpLgogICAgICAgICAgICAgOnJlZ2lvbiAoY29ucyAocG9p bnQtbWluKSAocG9pbnQtbWF4KSkpKQogIChzZXRxIGVnbG90LS1kaWFnbm9zdGljcyBkaWFncykp CgooZGVmdW4gZWdsb3QteHJlZi1iYWNrZW5kICgpICJFZ2xvdCB4cmVmIGJhY2tlbmQuIiAnZWds b3QpCgooZGVmdmFyIGVnbG90LS10ZW1wLWxvY2F0aW9uLWJ1ZmZlcnMgKG1ha2UtaGFzaC10YWJs ZSA6dGVzdCAjJ2VxdWFsKQogICJIZWxwZXIgdmFyaWFibGUgZm9yIGBlZ2xvdC0tY29sbGVjdGlu Zy14cmVmcycuIikKCihkZWZ2YXIgZWdsb3QteHJlZi1sZXNzcC1mdW5jdGlvbiAjJ2lnbm9yZQog ICJDb21wYXJlIHR3byBgeHJlZi1pdGVtJyBvYmplY3RzIGZvciBzb3J0aW5nLiIpCgooY2wtZGVm bWFjcm8gZWdsb3QtLWNvbGxlY3RpbmcteHJlZnMgKChjb2xsZWN0b3IpICZyZXN0IGJvZHkpCiAg IlNvcnQgYW5kIGhhbmRsZSB4cmVmcyBjb2xsZWN0ZWQgd2l0aCBDT0xMRUNUT1IgaW4gQk9EWS4i CiAgKGRlY2xhcmUgKGluZGVudCAxKSAoZGVidWcgKHNleHAgJnJlc3QgZm9ybSkpKQogIChsZXQg KChjb2xsZWN0ZWQgKGNsLWdlbnN5bSAiY29sbGVjdGVkIikpKQogICAgYCh1bndpbmQtcHJvdGVj dAogICAgICAgICAobGV0ICgsY29sbGVjdGVkKQogICAgICAgICAgIChjbC1mbGV0ICgoLGNvbGxl Y3RvciAoeHJlZikgKHB1c2ggeHJlZiAsY29sbGVjdGVkKSkpCiAgICAgICAgICAgICAsQGJvZHkp CiAgICAgICAgICAgKHNldHEgLGNvbGxlY3RlZCAobnJldmVyc2UgLGNvbGxlY3RlZCkpCiAgICAg ICAgICAgKHNvcnQgLGNvbGxlY3RlZCBlZ2xvdC14cmVmLWxlc3NwLWZ1bmN0aW9uKSkKICAgICAg IChtYXBoYXNoIChsYW1iZGEgKF91cmkgYnVmKSAoa2lsbC1idWZmZXIgYnVmKSkgZWdsb3QtLXRl bXAtbG9jYXRpb24tYnVmZmVycykKICAgICAgIChjbHJoYXNoIGVnbG90LS10ZW1wLWxvY2F0aW9u LWJ1ZmZlcnMpKSkpCgooZGVmdW4gZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCAobmFtZSB1cmkgcmFu Z2UpCiAgIkxpa2UgYHhyZWYtbWFrZS1tYXRjaCcgYnV0IHdpdGggTFNQJ3MgTkFNRSwgVVJJIGFu ZCBSQU5HRS4KVHJ5IHRvIHZpc2l0IHRoZSB0YXJnZXQgZmlsZSBmb3IgYSByaWNoZXIgc3VtbWFy eSBsaW5lLiIKICAocGNhc2UtbGV0KgogICAgICAoKGZpbGUgKGVnbG90LXVyaS10by1wYXRoIHVy aSkpCiAgICAgICAodmlzaXRpbmcgKG9yIChmaW5kLWJ1ZmZlci12aXNpdGluZyBmaWxlKQogICAg ICAgICAgICAgICAgICAgICAoZ2V0aGFzaCB1cmkgZWdsb3QtLXRlbXAtbG9jYXRpb24tYnVmZmVy cykpKQogICAgICAgKGNvbGxlY3QgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAoZWdsb3Qt LXdpZGVuaW5nCiAgICAgICAgICAgICAgICAgICAocGNhc2UtbGV0KiAoKGAoLGJlZyAuICxlbmQp IChlZ2xvdC1yYW5nZS1yZWdpb24gcmFuZ2UpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChib2wgKHByb2duIChnb3RvLWNoYXIgYmVnKSAoZWdsb3QtLWJvbCkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmcgYm9sIChs aW5lLWVuZC1wb3NpdGlvbikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaS1i ZWcgKC0gYmVnIGJvbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpLWVuZCAo LSAobWluIChsaW5lLWVuZC1wb3NpdGlvbikgZW5kKSBib2wpKSkKICAgICAgICAgICAgICAgICAg ICAgKGFkZC1mYWNlLXRleHQtcHJvcGVydHkgaGktYmVnIGhpLWVuZCAneHJlZi1tYXRjaAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0IHN1YnN0cmluZykKICAg ICAgICAgICAgICAgICAgICAgKGxpc3Qgc3Vic3RyaW5nIChsaW5lLW51bWJlci1hdC1wb3MgKHBv aW50KSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtdXRmLTMyLWxpbmVwb3Mp ICgtIGVuZCBiZWcpKSkpKSkKICAgICAgIChgKCxzdW1tYXJ5ICxsaW5lICxjb2x1bW4gLGxlbmd0 aCkKICAgICAgICAoY29uZAogICAgICAgICAodmlzaXRpbmcgKHdpdGgtY3VycmVudC1idWZmZXIg dmlzaXRpbmcgKGZ1bmNhbGwgY29sbGVjdCkpKQogICAgICAgICAoKGZpbGUtcmVhZGFibGUtcCBm aWxlKSAod2l0aC1jdXJyZW50LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHB1dGhhc2ggdXJpIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgKnRlbXAqIikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS10ZW1wLWxvY2F0 aW9uLWJ1ZmZlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluc2VydC1m aWxlLWNvbnRlbnRzIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgY29sbGVjdCkpKQogICAgICAgICAodCA7OyBmYWxsIGJhY2sgdG8gdGhlICJkdW1iIHN0 cmF0ZWd5IgogICAgICAgICAgKGxldCogKChzdGFydCAoY2wtZ2V0ZiByYW5nZSA6c3RhcnQpKQog ICAgICAgICAgICAgICAgIChsaW5lICgxKyAoY2wtZ2V0ZiBzdGFydCA6bGluZSkpKQogICAgICAg ICAgICAgICAgIChzdGFydC1wb3MgKGNsLWdldGYgc3RhcnQgOmNoYXJhY3RlcikpCiAgICAgICAg ICAgICAgICAgKGVuZC1wb3MgKGNsLWdldGYgKGNsLWdldGYgcmFuZ2UgOmVuZCkgOmNoYXJhY3Rl cikpKQogICAgICAgICAgICAobGlzdCBuYW1lIGxpbmUgc3RhcnQtcG9zICgtIGVuZC1wb3Mgc3Rh cnQtcG9zKSkpKSkpKQogICAgKHNldGYgKGdldGhhc2ggKGV4cGFuZC1maWxlLW5hbWUgZmlsZSkg ZWdsb3QtLXNlcnZlcnMtYnkteHJlZmVkLWZpbGUpCiAgICAgICAgICAoZWdsb3QtLWN1cnJlbnQt c2VydmVyLW9yLWxvc2UpKQogICAgKHhyZWYtbWFrZS1tYXRjaCBzdW1tYXJ5ICh4cmVmLW1ha2Ut ZmlsZS1sb2NhdGlvbiBmaWxlIGxpbmUgY29sdW1uKSBsZW5ndGgpKSkKCihkZWZ1biBlZ2xvdC0t d29ya3NwYWNlLXN5bWJvbHMgKHBhdCAmb3B0aW9uYWwgYnVmZmVyKQogICJBc2sgZm9yIDp3b3Jr c3BhY2Uvc3ltYm9sIG9uIFBBVCwgcmV0dXJuIGxpc3Qgb2YgZm9ybWF0dGVkIHN0cmluZ3MuCklm IEJVRkZFUiwgc3dpdGNoIHRvIGl0IGJlZm9yZS4iCiAgKHdpdGgtY3VycmVudC1idWZmZXIgKG9y IGJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQogICAgKGVnbG90LXNlcnZlci1jYXBhYmxlLW9yLWxv c2UgOndvcmtzcGFjZVN5bWJvbFByb3ZpZGVyKQogICAgKG1hcGNhcgogICAgIChsYW1iZGEgKHdz cykKICAgICAgIChlZ2xvdC0tZGJpbmQgKChXb3Jrc3BhY2VTeW1ib2wpIG5hbWUgY29udGFpbmVy TmFtZSBraW5kKSB3c3MKICAgICAgICAgKHByb3BlcnRpemUKICAgICAgICAgIChmb3JtYXQgIiVz JXMgJXMiCiAgICAgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxlbmd0aCBjb250YWluZXJOYW1l KSkgIiIKICAgICAgICAgICAgICAgICAgICAoY29uY2F0IChwcm9wZXJ0aXplIGNvbnRhaW5lck5h bWUgJ2ZhY2UgJ3NoYWRvdykgIiAiKSkKICAgICAgICAgICAgICAgICAgbmFtZQogICAgICAgICAg ICAgICAgICAocHJvcGVydGl6ZSAoYWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5h bWVzICJVbmtub3duIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgJ3NoYWRv dykpCiAgICAgICAgICAnZWdsb3QtLWxzcC13b3Jrc3BhY2VTeW1ib2wgd3NzKSkpCiAgICAgKGVn bG90LS1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkgOndvcmtzcGFjZS9z eW1ib2wKICAgICAgICAgICAgICAgICAgICAgYCg6cXVlcnkgLHBhdCkpKSkpCgooY2wtZGVmbWV0 aG9kIHhyZWYtYmFja2VuZC1pZGVudGlmaWVyLWNvbXBsZXRpb24tdGFibGUgKChfYmFja2VuZCAo ZXFsIGVnbG90KSkpCiAgIllldCBhbm90aGVyIHRyaWNreSBjb25uZWN0aW9uIGJldHdlZW4gTFNQ IGFuZCBFbGlzcCBjb21wbGV0aW9uIHNlbWFudGljcy4iCiAgKGxldCAoKGJ1ZiAoY3VycmVudC1i dWZmZXIpKSAoY2FjaGUgZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkKICAgIChjbC1s YWJlbHMgKChyZWZyZXNoIChwYXQpIChlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMgcGF0IGJ1Zikp CiAgICAgICAgICAgICAgICAobG9va3VwLTEgKHBhdCkgOzsgY2hlY2sgY2FjaGUsIGVsc2UgcmVm cmVzaAogICAgICAgICAgICAgICAgICAobGV0ICgocHJvYmUgKGdldGhhc2ggcGF0IGNhY2hlIDpt aXNzaW5nKSkpCiAgICAgICAgICAgICAgICAgICAgKGlmIChlcSBwcm9iZSA6bWlzc2luZykgKHB1 dGhhc2ggcGF0IChyZWZyZXNoIHBhdCkgY2FjaGUpCiAgICAgICAgICAgICAgICAgICAgICBwcm9i ZSkpKQogICAgICAgICAgICAgICAgKGxvb2t1cCAocGF0IF9wb2ludCkKICAgICAgICAgICAgICAg ICAgKGxldCAoKHJlcyAobG9va3VwLTEgcGF0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGRl ZiAoYW5kIChzdHJpbmc9IHBhdCAiIikgKGdldGhhc2ggOmRlZmF1bHQgY2FjaGUpKSkpCiAgICAg ICAgICAgICAgICAgICAgKGFwcGVuZCBkZWYgcmVzIG5pbCkpKQogICAgICAgICAgICAgICAgKHNj b3JlIChjKQogICAgICAgICAgICAgICAgICAoY2wtZ2V0ZiAoZ2V0LXRleHQtcHJvcGVydHkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDAgJ2VnbG90LS1sc3Atd29ya3NwYWNlU3ltYm9sIGMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzY29yZSAwKSkpCiAgICAgIChleHRlcm5hbC1j b21wbGV0aW9uLXRhYmxlCiAgICAgICAnZWdsb3QtaW5kaXJlY3Rpb24tam95CiAgICAgICAjJ2xv b2t1cAogICAgICAgYCgoY3ljbGUtc29ydC1mdW5jdGlvbgogICAgICAgICAgLiAsKGxhbWJkYSAo Y29tcGxldGlvbnMpCiAgICAgICAgICAgICAgIChjbC1zb3J0IGNvbXBsZXRpb25zICMnPiA6a2V5 ICMnc2NvcmUpKSkpKSkpKQoKKGRlZnVuIGVnbG90LS1yZWNvdmVyLXdvcmtzcGFjZS1zeW1ib2wt bWV0YSAoc3RyaW5nKQogICJTZWFyY2ggYGVnbG90LS13b3Jrc3BhY2Utc3ltYm9scy1jYWNoZScg Zm9yIHJpY2ggZW50cnkgb2YgU1RSSU5HLiIKICAoY2F0Y2ggJ2ZvdW5kCiAgICAobWFwaGFzaCAo bGFtYmRhIChfayB2KQogICAgICAgICAgICAgICAod2hpbGUgKGNvbnNwIHYpCiAgICAgICAgICAg ICAgICAgOzsgTGlrZSBtZXNzPyBBc2sgbWluaWJ1ZmZlci5lbCBhYm91dCBpbXByb3BlciBsaXN0 cy4KICAgICAgICAgICAgICAgICAod2hlbiAoZXF1YWwgKGNhciB2KSBzdHJpbmcpICh0aHJvdyAn Zm91bmQgKGNhciB2KSkpCiAgICAgICAgICAgICAgICAgKHNldHEgdiAoY2RyIHYpKSkpCiAgICAg ICAgICAgICBlZ2xvdC0td29ya3NwYWNlLXN5bWJvbHMtY2FjaGUpKSkKCihjbC1kZWZtZXRob2Qg eHJlZi1iYWNrZW5kLWlkZW50aWZpZXItYXQtcG9pbnQgKChfYmFja2VuZCAoZXFsIGVnbG90KSkp CiAgKGxldCAoKGF0dGVtcHQKICAgICAgICAgKGFuZCAoeHJlZi0tcHJvbXB0LXAgdGhpcy1jb21t YW5kKQogICAgICAgICAgICAgIChwdXRoYXNoIDpkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAg ICAgKGlnbm9yZS1lcnJvcnMKICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0td29ya3Nw YWNlLXN5bWJvbHMgKHN5bWJvbC1uYW1lIChzeW1ib2wtYXQtcG9pbnQpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgZWdsb3QtLXdvcmtzcGFjZS1zeW1ib2xzLWNhY2hlKSkpKQogICAgKGlmIGF0 dGVtcHQgKGNhciBhdHRlbXB0KSAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQiKSkpCgooZGVmdmFy IGVnbG90LS1sc3AteHJlZi1yZWZzIG5pbAogICJgeHJlZicgb2JqZWN0cyBmb3Igb3ZlcnJpZGlu ZyBgeHJlZi1iYWNrZW5kLXJlZmVyZW5jZXMnJ3MuIikKCihjbC1kZWZ1biBlZ2xvdC0tbHNwLXhy ZWZzLWZvci1tZXRob2QgKG1ldGhvZCAma2V5IGV4dHJhLXBhcmFtcyBjYXBhYmlsaXR5KQogICJN YWtlIGB4cmVmJydzIGZvciBNRVRIT0QsIEVYVFJBLVBBUkFNUywgY2hlY2sgQ0FQQUJJTElUWS4i CiAgKGVnbG90LXNlcnZlci1jYXBhYmxlLW9yLWxvc2UKICAgKG9yIGNhcGFiaWxpdHkKICAgICAg IChpbnRlcm4KICAgICAgICAoZm9ybWF0ICI6JXNQcm92aWRlciIKICAgICAgICAgICAgICAgIChj YWRyIChzcGxpdC1zdHJpbmcgKHN5bWJvbC1uYW1lIG1ldGhvZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi8iKSkpKSkpCiAgKGxldCAoKHJlc3BvbnNlCiAgICAgICAgIChl Z2xvdC0tcmVxdWVzdAogICAgICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKQog ICAgICAgICAgbWV0aG9kIChhcHBlbmQgKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFt cykgZXh0cmEtcGFyYW1zKSkpKQogICAgKGVnbG90LS1jb2xsZWN0aW5nLXhyZWZzIChjb2xsZWN0 KQogICAgICAobWFwYwogICAgICAgKGxhbWJkYSAobG9jLW9yLWxvYy1saW5rKQogICAgICAgICAo bGV0ICgoc3ltLW5hbWUgKHN5bWJvbC1uYW1lIChzeW1ib2wtYXQtcG9pbnQpKSkpCiAgICAgICAg ICAgKGVnbG90LS1kY2FzZSBsb2Mtb3ItbG9jLWxpbmsKICAgICAgICAgICAgICgoKExvY2F0aW9u TGluaykgdGFyZ2V0VXJpIHRhcmdldFNlbGVjdGlvblJhbmdlKQogICAgICAgICAgICAgIChjb2xs ZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNoIHN5bS1uYW1lCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VXJpIHRhcmdldFNlbGVjdGlvblJhbmdl KSkpCiAgICAgICAgICAgICAoKChMb2NhdGlvbikgdXJpIHJhbmdlKQogICAgICAgICAgICAgIChj b2xsZWN0IChlZ2xvdC0teHJlZi1tYWtlLW1hdGNoIHN5bS1uYW1lCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpIHJhbmdlKSkpKSkpCiAgICAgICAoaWYg KHZlY3RvcnAgcmVzcG9uc2UpIHJlc3BvbnNlIChhbmQgcmVzcG9uc2UgKGxpc3QgcmVzcG9uc2Up KSkpKSkpCgooY2wtZGVmdW4gZWdsb3QtLWxzcC14cmVmLWhlbHBlciAobWV0aG9kICZrZXkgZXh0 cmEtcGFyYW1zIGNhcGFiaWxpdHkpCiAgIkhlbHBlciBmb3IgYGVnbG90LWZpbmQtZGVjbGFyYXRp b24nICYgZnJpZW5kcy4iCiAgKGxldCAoKGVnbG90LS1sc3AteHJlZi1yZWZzIChlZ2xvdC0tbHNw LXhyZWZzLWZvci1tZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmV4dHJhLXBhcmFtcyBleHRyYS1wYXJhbXMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYXBhYmlsaXR5IGNhcGFiaWxpdHkpKSkK ICAgIChpZiBlZ2xvdC0tbHNwLXhyZWYtcmVmcwogICAgICAgICh4cmVmLWZpbmQtcmVmZXJlbmNl cyAiTFNQIGlkZW50aWZpZXIgYXQgcG9pbnQuIikKICAgICAgKGVnbG90LS1tZXNzYWdlICIlcyBy ZXR1cm5lZCBubyByZWZlcmVuY2VzIiBtZXRob2QpKSkpCgooZGVmdW4gZWdsb3QtZmluZC1kZWNs YXJhdGlvbiAoKQogICJGaW5kIGRlY2xhcmF0aW9uIGZvciBTWU0sIHRoZSBpZGVudGlmaWVyIGF0 IHBvaW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGVnbG90LS1sc3AteHJlZi1oZWxwZXIgOnRleHRE b2N1bWVudC9kZWNsYXJhdGlvbikpCgooZGVmdW4gZWdsb3QtZmluZC1pbXBsZW1lbnRhdGlvbiAo KQogICJGaW5kIGltcGxlbWVudGF0aW9uIGZvciBTWU0sIHRoZSBpZGVudGlmaWVyIGF0IHBvaW50 LiIKICAoaW50ZXJhY3RpdmUpCiAgKGVnbG90LS1sc3AteHJlZi1oZWxwZXIgOnRleHREb2N1bWVu dC9pbXBsZW1lbnRhdGlvbikpCgooZGVmdW4gZWdsb3QtZmluZC10eXBlRGVmaW5pdGlvbiAoKQog ICJGaW5kIHR5cGUgZGVmaW5pdGlvbiBmb3IgU1lNLCB0aGUgaWRlbnRpZmllciBhdCBwb2ludC4i CiAgKGludGVyYWN0aXZlKQogIChlZ2xvdC0tbHNwLXhyZWYtaGVscGVyIDp0ZXh0RG9jdW1lbnQv dHlwZURlZmluaXRpb24pKQoKKGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtZGVmaW5pdGlvbnMg KChfYmFja2VuZCAoZXFsIGVnbG90KSkgaWQpCiAgKGxldCAoKHByb2JlIChlZ2xvdC0tcmVjb3Zl ci13b3Jrc3BhY2Utc3ltYm9sLW1ldGEgaWQpKSkKICAgIChpZiBwcm9iZQogICAgICAgIChlZ2xv dC0tZGJpbmQgKChXb3Jrc3BhY2VTeW1ib2wpIG5hbWUgbG9jYXRpb24pCiAgICAgICAgICAgIChn ZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLXdvcmtzcGFjZVN5bWJvbCBwcm9iZSkKICAg ICAgICAgIChlZ2xvdC0tZGJpbmQgKChMb2NhdGlvbikgdXJpIHJhbmdlKSBsb2NhdGlvbgogICAg ICAgICAgICAobGlzdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBuYW1lIHVyaSByYW5nZSkpKSkK ICAgICAgKGVnbG90LS1sc3AteHJlZnMtZm9yLW1ldGhvZCA6dGV4dERvY3VtZW50L2RlZmluaXRp b24pKSkpCgooY2wtZGVmbWV0aG9kIHhyZWYtYmFja2VuZC1yZWZlcmVuY2VzICgoX2JhY2tlbmQg KGVxbCBlZ2xvdCkpIF9pZGVudGlmaWVyKQogIChvcgogICBlZ2xvdC0tbHNwLXhyZWYtcmVmcwog ICAoZWdsb3QtLWxzcC14cmVmcy1mb3ItbWV0aG9kCiAgICA6dGV4dERvY3VtZW50L3JlZmVyZW5j ZXMgOmV4dHJhLXBhcmFtcyBgKDpjb250ZXh0ICg6aW5jbHVkZURlY2xhcmF0aW9uIHQpKSkpKQoK KGNsLWRlZm1ldGhvZCB4cmVmLWJhY2tlbmQtYXByb3BvcyAoKF9iYWNrZW5kIChlcWwgZWdsb3Qp KSBwYXR0ZXJuKQogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6d29ya3NwYWNlU3ltYm9s UHJvdmlkZXIpCiAgICAoZWdsb3QtLWNvbGxlY3RpbmcteHJlZnMgKGNvbGxlY3QpCiAgICAgICht YXBjCiAgICAgICAoZWdsb3QtLWxhbWJkYSAoKFN5bWJvbEluZm9ybWF0aW9uKSBuYW1lIGxvY2F0 aW9uKQogICAgICAgICAoZWdsb3QtLWRiaW5kICgoTG9jYXRpb24pIHVyaSByYW5nZSkgbG9jYXRp b24KICAgICAgICAgICAoY29sbGVjdCAoZWdsb3QtLXhyZWYtbWFrZS1tYXRjaCBuYW1lIHVyaSBy YW5nZSkpKSkKICAgICAgIChlZ2xvdC0tcmVxdWVzdCAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9y LWxvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgOndvcmtzcGFjZS9zeW1ib2wKICAgICAgICAg ICAgICAgICAgICAgICBgKDpxdWVyeSAscGF0dGVybikpKSkpKQoKKGRlZnVuIGVnbG90LWZvcm1h dC1idWZmZXIgKCkKICAiRm9ybWF0IGNvbnRlbnRzIG9mIGN1cnJlbnQgYnVmZmVyLiIKICAoaW50 ZXJhY3RpdmUpCiAgKGVnbG90LWZvcm1hdCBuaWwgbmlsKSkKCihkZWZ1biBlZ2xvdC1mb3JtYXQg KCZvcHRpb25hbCBiZWcgZW5kIG9uLXR5cGUtZm9ybWF0KQogICJGb3JtYXQgcmVnaW9uIEJFRyBF TkQuCklmIGVpdGhlciBCRUcgb3IgRU5EIGlzIG5pbCwgZm9ybWF0IGVudGlyZSBidWZmZXIuCklu dGVyYWN0aXZlbHksIGZvcm1hdCBhY3RpdmUgcmVnaW9uLCBvciBlbnRpcmUgYnVmZmVyIGlmIHJl Z2lvbgppcyBub3QgYWN0aXZlLgoKSWYgbm9uLW5pbCwgT04tVFlQRS1GT1JNQVQgaXMgYSBjaGFy YWN0ZXIganVzdCBpbnNlcnRlZCBhdCBCRUcKZm9yIHdoaWNoIExTUCBvbi10eXBlLWZvcm1hdHRp bmcgc2hvdWxkIGJlIHJlcXVlc3RlZC4iCiAgKGludGVyYWN0aXZlIChhbmQgKHJlZ2lvbi1hY3Rp dmUtcCkgKGxpc3QgKHJlZ2lvbi1iZWdpbm5pbmcpIChyZWdpb24tZW5kKSkpKQogIChwY2FzZS1s ZXQgKChgKCxtZXRob2QgLGNhcCAsYXJncykKICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAg ICAgICAgICgoYW5kIGJlZyBvbi10eXBlLWZvcm1hdCkKICAgICAgICAgICAgICAgICBgKDp0ZXh0 RG9jdW1lbnQvb25UeXBlRm9ybWF0dGluZwogICAgICAgICAgICAgICAgICAgOmRvY3VtZW50T25U eXBlRm9ybWF0dGluZ1Byb3ZpZGVyCiAgICAgICAgICAgICAgICAgICAsYCg6cG9zaXRpb24gLChl Z2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBiZWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOmNoICwoc3RyaW5nIG9uLXR5cGUtZm9ybWF0KSkpKQogICAgICAgICAgICAgICAgKChh bmQgYmVnIGVuZCkKICAgICAgICAgICAgICAgICBgKDp0ZXh0RG9jdW1lbnQvcmFuZ2VGb3JtYXR0 aW5nCiAgICAgICAgICAgICAgICAgICA6ZG9jdW1lbnRSYW5nZUZvcm1hdHRpbmdQcm92aWRlcgog ICAgICAgICAgICAgICAgICAgKDpyYW5nZSAsKGxpc3QgOnN0YXJ0IChlZ2xvdC0tcG9zLXRvLWxz cC1wb3NpdGlvbiBiZWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZW5kIChl Z2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBlbmQpKSkpKQogICAgICAgICAgICAgICAgKHQKICAg ICAgICAgICAgICAgICAnKDp0ZXh0RG9jdW1lbnQvZm9ybWF0dGluZyA6ZG9jdW1lbnRGb3JtYXR0 aW5nUHJvdmlkZXIgbmlsKSkpKSkKICAgIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlIGNh cCkKICAgIChlZ2xvdC0tYXBwbHktdGV4dC1lZGl0cwogICAgIChlZ2xvdC0tcmVxdWVzdAogICAg ICAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCiAgICAgIG1ldGhvZAogICAgICAoY2wt bGlzdCoKICAgICAgIDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVy KQogICAgICAgOm9wdGlvbnMgKGxpc3QgOnRhYlNpemUgdGFiLXdpZHRoCiAgICAgICAgICAgICAg ICAgICAgICA6aW5zZXJ0U3BhY2VzIChpZiBpbmRlbnQtdGFicy1tb2RlIDpqc29uLWZhbHNlIHQp CiAgICAgICAgICAgICAgICAgICAgICA6aW5zZXJ0RmluYWxOZXdsaW5lIChpZiByZXF1aXJlLWZp bmFsLW5ld2xpbmUgdCA6anNvbi1mYWxzZSkKICAgICAgICAgICAgICAgICAgICAgIDp0cmltRmlu YWxOZXdsaW5lcyAoaWYgZGVsZXRlLXRyYWlsaW5nLWxpbmVzIHQgOmpzb24tZmFsc2UpKQogICAg ICAgYXJncykpCiAgICAgbmlsCiAgICAgb24tdHlwZS1mb3JtYXQpKSkKCihkZWZ2YXIgZWdsb3Qt Y2FjaGUtc2Vzc2lvbi1jb21wbGV0aW9ucyB0CiAgIklmIG5vbi1uaWwgRWdsb3QgY2FjaGVzIGRh dGEgZHVyaW5nIGNvbXBsZXRpb24gc2Vzc2lvbnMuIikKCihkZWZ2YXIgZWdsb3QtLWNhcGYtc2Vz c2lvbiA6bm9uZSAiQSBjYWNoZSB1c2VkIGJ5IGBlZ2xvdC1jb21wbGV0aW9uLWF0LXBvaW50Jy4i KQoKKGRlZnVuIGVnbG90LS1jYXBmLXNlc3Npb24tZmx1c2ggKCZvcHRpb25hbCBfKSAoc2V0cSBl Z2xvdC0tY2FwZi1zZXNzaW9uIDpub25lKSkKCihkZWZ1biBlZ2xvdC0tZHVtYi1mbGV4IChwYXQg Y29tcCBpZ25vcmVjYXNlKQogICJSZXR1cm4gZGVzdHJ1Y3RpdmVseSBmb250aWZpZWQgQ09NUCBp ZmYgUEFUIG1hdGNoZXMgaXQuIgogIChjbC1sb29wIHdpdGggbGNvbXAgPSAobGVuZ3RoIGNvbXAp CiAgICAgICAgICAgd2l0aCBjYXNlLWZvbGQtc2VhcmNoID0gaWdub3JlY2FzZQogICAgICAgICAg IGluaXRpYWxseSAocmVtb3ZlLWxpc3Qtb2YtdGV4dC1wcm9wZXJ0aWVzIDAgbGNvbXAgJyhmYWNl KSBjb21wKQogICAgICAgICAgIGZvciB4IGFjcm9zcyBwYXQKICAgICAgICAgICBmb3IgaSA9IChj bC1sb29wIGZvciBqIGZyb20gKGlmIGkgKDErIGkpIDApIGJlbG93IGxjb21wCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3aGVuIChjaGFyLWVxdWFsIHggKGFyZWYgY29tcCBqKSkgcmV0dXJu IGopCiAgICAgICAgICAgdW5sZXNzIGkgZG8gKGNsLXJldHVybiBuaWwpCiAgICAgICAgICAgOzsg RklYTUU6IGNvdWxkIGRvIG11Y2ggYmV0dGVyIGhlcmUgYW5kIGNvYWxlc2NlIGludGVydmFscwog ICAgICAgICAgIGRvIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IGkgKDErIGkpICdjb21wbGV0aW9u cy1jb21tb24tcGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCBj b21wKQogICAgICAgICAgIGZpbmFsbHkgKGNsLXJldHVybiBjb21wKSkpCgooZGVmdW4gZWdsb3Qt LWR1bWItYWxsYyAocGF0IHRhYmxlIHByZWQgX3BvaW50KSAoZnVuY2FsbCB0YWJsZSBwYXQgcHJl ZCB0KSkKKGRlZnVuIGVnbG90LS1kdW1iLXRyeWMgKHBhdCB0YWJsZSBwcmVkIHBvaW50KQogIChp Zi1sZXQgKChwcm9iZSAoZnVuY2FsbCB0YWJsZSBwYXQgcHJlZCBuaWwpKSkKICAgICAgKGNvbnMg cHJvYmUgKGxlbmd0aCBwcm9iZSkpCiAgICAoY29ucyBwYXQgcG9pbnQpKSkKCihhZGQtdG8tbGlz dCAnY29tcGxldGlvbi1jYXRlZ29yeS1kZWZhdWx0cyAnKGVnbG90LWNhcGYgKHN0eWxlcyBlZ2xv dC0tZHVtYi1mbGV4KSkpCihhZGQtdG8tbGlzdCAnY29tcGxldGlvbi1zdHlsZXMtYWxpc3QgJyhl Z2xvdC0tZHVtYi1mbGV4IGVnbG90LS1kdW1iLXRyeWMgZWdsb3QtLWR1bWItYWxsYykpCgooZGVm dW4gZWdsb3QtY29tcGxldGlvbi1hdC1wb2ludCAoKQogICJFZ2xvdCdzIGBjb21wbGV0aW9uLWF0 LXBvaW50JyBmdW5jdGlvbi4iCiAgOzsgQ29tbWl0IGxvZ3MgZm9yIHRoaXMgZnVuY3Rpb24gaGVs cCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbi4KICAod2hlbi1sZXQgKGNvbXBsZXRpb24tY2Fw YWJpbGl0eSAoZWdsb3Qtc2VydmVyLWNhcGFibGUgOmNvbXBsZXRpb25Qcm92aWRlcikpCiAgICAo bGV0KiAoKHNlcnZlciAoZWdsb3QtLWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpKQogICAgICAgICAg IChib3VuZHMgKG9yIChib3VuZHMtb2YtdGhpbmctYXQtcG9pbnQgJ3N5bWJvbCkKICAgICAgICAg ICAgICAgICAgICAgICAoY29ucyAocG9pbnQpIChwb2ludCkpKSkKICAgICAgICAgICAoYm91bmRz LXN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyAoY2FyIGJvdW5kcykgKGNkciBib3VuZHMpKSkKICAg ICAgICAgICAoc29ydC1jb21wbGV0aW9ucwogICAgICAgICAgICAobGFtYmRhIChjb21wbGV0aW9u cykKICAgICAgICAgICAgICAoY2wtc29ydCBjb21wbGV0aW9ucwogICAgICAgICAgICAgICAgICAg ICAgICMnc3RyaW5nLWxlc3NwCiAgICAgICAgICAgICAgICAgICAgICAgOmtleSAobGFtYmRhIChj KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIGMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c29ydFRleHQpKSkpKQogICAgICAgICAg IChtZXRhZGF0YSBgKG1ldGFkYXRhIChjYXRlZ29yeSAuIGVnbG90LWNhcGYpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGRpc3BsYXktc29ydC1mdW5jdGlvbiAuICxzb3J0LWNvbXBs ZXRpb25zKSkpCiAgICAgICAgICAgKGxvY2FsLWNhY2hlIDpub25lKQogICAgICAgICAgIChvcmln LXBvcyAocG9pbnQpKQogICAgICAgICAgIChyZXNvbHZlZCAobWFrZS1oYXNoLXRhYmxlKSkKICAg ICAgICAgICAocHJveGllcwogICAgICAgICAgICAobGFtYmRhICgpCiAgICAgICAgICAgICAgKGlm IChsaXN0cCBsb2NhbC1jYWNoZSkgbG9jYWwtY2FjaGUKICAgICAgICAgICAgICAgIChsZXQqICgo cmVzcCAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvY29tcGxldGlvbgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLUNvbXBsZXRpb25QYXJhbXMpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjYW5jZWwtb24taW5w dXQgdCkpCiAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW1zIChhcHBlbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAodmVjdG9ycCByZXNwKSByZXNwIChwbGlzdC1nZXQgcmVz cCA6aXRlbXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKSkKICAgICAgICAg ICAgICAgICAgICAgICAoY2FjaGVwIChhbmQgKGxpc3RwIHJlc3ApIGl0ZW1zCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LWNhY2hlLXNlc3Npb24tY29tcGxldGlvbnMK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVxIChwbGlzdC1nZXQgcmVzcCA6 aXNJbmNvbXBsZXRlKSA6anNvbi1mYWxzZSkpKQogICAgICAgICAgICAgICAgICAgICAgIChyZXR2 YWwKICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhcgogICAgICAgICAgICAgICAgICAgICAg ICAgKGpzb25ycGMtbGFtYmRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCZyZXN0IGl0 ZW0gJmtleSBsYWJlbCBpbnNlcnRUZXh0IGluc2VydFRleHRGb3JtYXQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGV4dEVkaXQgJmFsbG93LW90aGVyLWtleXMpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChsZXQgKChwcm94eQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgU25pcHBldCBvciB0ZXh0RWRpdCwgaXQncyBzYWZlIHRvCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBkaXNwbGF5L2luc2VydCB0aGUgbGFiZWwgc2luY2UK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGl0J2xsIGJlIGFkanVzdGVkLiAg SWYgbm8gdXNhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBpbnNlcnRU ZXh0IGF0IGFsbCwgbGFiZWwgaXMgYmVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IHRvby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kICgob3Ig KGVxbCBpbnNlcnRUZXh0Rm9ybWF0IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRleHRFZGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChudWxsIGluc2VydFRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctZW1wdHktcCBpbnNlcnRUZXh0KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRyaW0tbGVmdCBsYWJlbCkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCBpbnNlcnRUZXh0KSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKHplcm9wIChsZW5ndGggcHJveHkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IDAgMSAn ZWdsb3QtLWxzcC1pdGVtIGl0ZW0gcHJveHkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByb3h5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zKSkpCiAgICAgICAgICAgICAg ICAgIDs7ICh0cmFjZS12YWx1ZXMgIlJlcXVlc3RlZCIgKGxlbmd0aCBwcm94aWVzKSBjYWNoZXAg Ym91bmRzKQogICAgICAgICAgICAgICAgICAoc2V0cSBlZ2xvdC0tY2FwZi1zZXNzaW9uCiAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBjYWNoZXAgKGxpc3QgYm91bmRzIHJldHZhbCByZXNvbHZl ZCBvcmlnLXBvcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5k cy1zdHJpbmcpIDpub25lKSkKICAgICAgICAgICAgICAgICAgKHNldHEgbG9jYWwtY2FjaGUgcmV0 dmFsKSkpKSkKICAgICAgICAgICAocmVzb2x2ZS1tYXliZQogICAgICAgICAgICA7OyBNYXliZSBj b21wbGV0aW9uL3Jlc29sdmUgSlNPTiBvYmplY3QgYGxzcC1jb21wJyBpbnRvCiAgICAgICAgICAg IDs7IGFub3RoZXIgSlNPTiBvYmplY3QsIGlmIGF0IGFsbCBwb3NzaWJsZS4gIE90aGVyd2lzZSwK ICAgICAgICAgICAgOzsganVzdCByZXR1cm4gbHNwLWNvbXAuCiAgICAgICAgICAgIChsYW1iZGEg KGxzcC1jb21wKQogICAgICAgICAgICAgIChvciAoZ2V0aGFzaCBsc3AtY29tcCByZXNvbHZlZCkK ICAgICAgICAgICAgICAgICAgKHNldGYgKGdldGhhc2ggbHNwLWNvbXAgcmVzb2x2ZWQpCiAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAoYW5kIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6Y29tcGxl dGlvblByb3ZpZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOnJlc29sdmVQcm92aWRlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBsaXN0LWdldCBsc3AtY29tcCA6ZGF0YSkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZWdsb3QtLXJlcXVlc3Qgc2VydmVyIDpjb21wbGV0aW9uSXRlbS9yZXNvbHZlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHNwLWNvbXAgOmNhbmNlbC1v bi1pbnB1dCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgIGxzcC1jb21wKSkpKSkpCiAgICAg ICh3aGVuIChhbmQgKGNvbnNwIGVnbG90LS1jYXBmLXNlc3Npb24pCiAgICAgICAgICAgICAgICAg KD0gKGNhciBib3VuZHMpIChjYXIgKG50aCAwIGVnbG90LS1jYXBmLXNlc3Npb24pKSkKICAgICAg ICAgICAgICAgICAoPj0gKGNkciBib3VuZHMpIChjZHIgKG50aCAwIGVnbG90LS1jYXBmLXNlc3Np b24pKSkpCiAgICAgICAgKHNldHEgbG9jYWwtY2FjaGUgKG50aCAxIGVnbG90LS1jYXBmLXNlc3Np b24pCiAgICAgICAgICAgICAgcmVzb2x2ZWQgKG50aCAyIGVnbG90LS1jYXBmLXNlc3Npb24pCiAg ICAgICAgICAgICAgb3JpZy1wb3MgKG50aCAzIGVnbG90LS1jYXBmLXNlc3Npb24pCiAgICAgICAg ICAgICAgYm91bmRzLXN0cmluZyAobnRoIDQgZWdsb3QtLWNhcGYtc2Vzc2lvbikpCiAgICAgICAg OzsgKHRyYWNlLXZhbHVlcyAiUmVjYWxsaW5nIGNhY2hlIiAobGVuZ3RoIGxvY2FsLWNhY2hlKSBi b3VuZHMgb3JpZy1wb3MpCiAgICAgICAgKQogICAgICAobGlzdAogICAgICAgKGNhciBib3VuZHMp CiAgICAgICAoY2RyIGJvdW5kcykKICAgICAgIChsYW1iZGEgKHBhdHRlcm4gcHJlZCBhY3Rpb24p CiAgICAgICAgIChjb25kCiAgICAgICAgICAoKGVxIGFjdGlvbiAnbWV0YWRhdGEpIG1ldGFkYXRh KSAgICAgICAgICAgICAgIDsgbWV0YWRhdGEKICAgICAgICAgICgoZXEgYWN0aW9uICdsYW1iZGEp ICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB0ZXN0LWNvbXBsZXRpb24KICAgICAgICAgICAo dGVzdC1jb21wbGV0aW9uIHBhdHRlcm4gKGZ1bmNhbGwgcHJveGllcykpKQogICAgICAgICAgKChl cSAoY2FyLXNhZmUgYWN0aW9uKSAnYm91bmRhcmllcykgbmlsKSAgICAgICA7IGJvdW5kYXJpZXMK ICAgICAgICAgICgobnVsbCBhY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OyB0cnktY29tcGxldGlvbgogICAgICAgICAgICh0cnktY29tcGxldGlvbiBwYXR0ZXJuIChmdW5j YWxsIHByb3hpZXMpKSkKICAgICAgICAgICgoZXEgYWN0aW9uIHQpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOyBhbGwtY29tcGxldGlvbnMKICAgICAgICAgICAobGV0ICgoY29tcHMg KGZ1bmNhbGwgcHJveGllcykpKQogICAgICAgICAgICAgKGRvbGlzdCAoYyBjb21wcykgKGVnbG90 LS1kdW1iLWZsZXggcGF0dGVybiBjIHQpKQogICAgICAgICAgICAgKGFsbC1jb21wbGV0aW9ucwog ICAgICAgICAgICAgICIiCiAgICAgICAgICAgICAgY29tcHMKICAgICAgICAgICAgICAobGFtYmRh IChwcm94eSkKICAgICAgICAgICAgICAgIChsZXQqICgoaXRlbSAoZ2V0LXRleHQtcHJvcGVydHkg MCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KSkKICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVy VGV4dCAocGxpc3QtZ2V0IGl0ZW0gOmZpbHRlclRleHQpKSkKICAgICAgICAgICAgICAgICAgKGFu ZCAob3IgKG51bGwgcHJlZCkgKGZ1bmNhbGwgcHJlZCBwcm94eSkpCiAgICAgICAgICAgICAgICAg ICAgICAgKGVnbG90LS1kdW1iLWZsZXgKICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiAo b3IgZmlsdGVyVGV4dCBwcm94eSkgY29tcGxldGlvbi1pZ25vcmUtY2FzZSkpKSkpKSkpKQogICAg ICAgOmFubm90YXRpb24tZnVuY3Rpb24KICAgICAgIChsYW1iZGEgKHByb3h5KQogICAgICAgICAo ZWdsb3QtLWRiaW5kICgoQ29tcGxldGlvbkl0ZW0pIGRldGFpbCBraW5kKQogICAgICAgICAgICAg KGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkKICAgICAgICAgICAo bGV0KiAoKGRldGFpbCAoYW5kIChzdHJpbmdwIGRldGFpbCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChub3QgKHN0cmluZz0gZGV0YWlsICIiKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRldGFpbCkpCiAgICAgICAgICAgICAgICAgIChhbm5vdGF0aW9uCiAgICAgICAg ICAgICAgICAgICAob3IgZGV0YWlsCiAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoYXNzb2Mg a2luZCBlZ2xvdC0ta2luZC1uYW1lcykpKSkpCiAgICAgICAgICAgICAod2hlbiBhbm5vdGF0aW9u CiAgICAgICAgICAgICAgIChjb25jYXQgIiAiCiAgICAgICAgICAgICAgICAgICAgICAgKHByb3Bl cnRpemUgYW5ub3RhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNl ICdmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKSkpKSkpCiAgICAgICA6Y29tcGFueS1raW5k CiAgICAgICA7OyBBc3NvY2lhdGUgZWFjaCBsc3AtaXRlbSB3aXRoIGEgbHNwLWtpbmQgc3ltYm9s LgogICAgICAgKGxhbWJkYSAocHJveHkpCiAgICAgICAgICh3aGVuLWxldCogKChsc3AtaXRlbSAo Z2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHByb3h5KSkKICAgICAgICAgICAg ICAgICAgICAgKGtpbmQgKGFsaXN0LWdldCAocGxpc3QtZ2V0IGxzcC1pdGVtIDpraW5kKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbG90LS1raW5kLW5hbWVzKSkpCiAg ICAgICAgICAgKHBjYXNlIGtpbmQKICAgICAgICAgICAgICgiRW51bU1lbWJlciIgJ2VudW0tbWVt YmVyKQogICAgICAgICAgICAgKCJUeXBlUGFyYW1ldGVyIiAndHlwZS1wYXJhbWV0ZXIpCiAgICAg ICAgICAgICAoXyAoaW50ZXJuIChkb3duY2FzZSBraW5kKSkpKSkpCiAgICAgICA6Y29tcGFueS1k ZXByZWNhdGVkCiAgICAgICAobGFtYmRhIChwcm94eSkKICAgICAgICAgKHdoZW4tbGV0ICgobHNw LWl0ZW0gKGdldC10ZXh0LXByb3BlcnR5IDAgJ2VnbG90LS1sc3AtaXRlbSBwcm94eSkpKQogICAg ICAgICAgIChvciAoc2VxLWNvbnRhaW5zLXAgKHBsaXN0LWdldCBsc3AtaXRlbSA6dGFncykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpCiAgICAgICAgICAgICAgIChlcSB0IChwbGlz dC1nZXQgbHNwLWl0ZW0gOmRlcHJlY2F0ZWQpKSkpKQogICAgICAgOmNvbXBhbnktZG9jc2lnCiAg ICAgICA7OyBGSVhNRTogYXV0b0ltcG9ydFRleHQgaXMgc3BlY2lmaWMgdG8gdGhlIHB5cmlnaHQg bGFuZ3VhZ2Ugc2VydmVyCiAgICAgICAobGFtYmRhIChwcm94eSkKICAgICAgICAgKHdoZW4tbGV0 KiAoKGxzcC1jb21wIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkp KQogICAgICAgICAgICAgICAgICAgICAoZGF0YSAocGxpc3QtZ2V0IChmdW5jYWxsIHJlc29sdmUt bWF5YmUgbHNwLWNvbXApIDpkYXRhKSkKICAgICAgICAgICAgICAgICAgICAgKGltcG9ydC10ZXh0 IChwbGlzdC1nZXQgZGF0YSA6YXV0b0ltcG9ydFRleHQpKSkKICAgICAgICAgICBpbXBvcnQtdGV4 dCkpCiAgICAgICA6Y29tcGFueS1kb2MtYnVmZmVyCiAgICAgICAobGFtYmRhIChwcm94eSkKICAg ICAgICAgKGxldCogKChkb2N1bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgKGxldCAoKGxzcC1j b21wIChnZXQtdGV4dC1wcm9wZXJ0eSAwICdlZ2xvdC0tbHNwLWl0ZW0gcHJveHkpKSkKICAgICAg ICAgICAgICAgICAgIChwbGlzdC1nZXQgKGZ1bmNhbGwgcmVzb2x2ZS1tYXliZSBsc3AtY29tcCkg OmRvY3VtZW50YXRpb24pKSkKICAgICAgICAgICAgICAgIChmb3JtYXR0ZWQgKGFuZCBkb2N1bWVu dGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1mb3JtYXQtbWFy a3VwIGRvY3VtZW50YXRpb24pKSkpCiAgICAgICAgICAgKHdoZW4gZm9ybWF0dGVkCiAgICAgICAg ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiAqZWdsb3QgZG9j KiIpCiAgICAgICAgICAgICAgIChlcmFzZS1idWZmZXIpCiAgICAgICAgICAgICAgIChpbnNlcnQg Zm9ybWF0dGVkKQogICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpKQogICAgICAgOmNv bXBhbnktcmVxdWlyZS1tYXRjaCAnbmV2ZXIKICAgICAgIDpjb21wYW55LXByZWZpeC1sZW5ndGgK ICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAoZ290by1jaGFyIChjYXIgYm91bmRzKSkK ICAgICAgICAgKHdoZW4gKGxpc3RwIGNvbXBsZXRpb24tY2FwYWJpbGl0eSkKICAgICAgICAgICAo bG9va2luZy1iYWNrCiAgICAgICAgICAgIChyZWdleHAtb3B0CiAgICAgICAgICAgICAoY2wtY29l cmNlIChjbC1nZXRmIGNvbXBsZXRpb24tY2FwYWJpbGl0eSA6dHJpZ2dlckNoYXJhY3RlcnMpICds aXN0KSkKICAgICAgICAgICAgKGVnbG90LS1ib2wpKSkpCiAgICAgICA6ZXhpdC1mdW5jdGlvbgog ICAgICAgKGxhbWJkYSAocHJveHkgc3RhdHVzKQogICAgICAgICAoZWdsb3QtLWNhcGYtc2Vzc2lv bi1mbHVzaCkKICAgICAgICAgKHdoZW4gKG1lbXEgc3RhdHVzICcoZmluaXNoZWQgZXhhY3QpKQog ICAgICAgICAgIDs7IFRvIGFzc2lzdCBpbiB1c2luZyB0aGlzIHdob2xlIGBjb21wbGV0aW9uLWF0 LXBvaW50JwogICAgICAgICAgIDs7IGZ1bmN0aW9uIGluc2lkZSBgY29tcGxldGlvbi1pbi1yZWdp b24nLCBlbnN1cmUgdGhlIGV4aXQKICAgICAgICAgICA7OyBmdW5jdGlvbiBydW5zIGluIHRoZSBi dWZmZXIgd2hlcmUgdGhlIGNvbXBsZXRpb24gd2FzCiAgICAgICAgICAgOzsgdHJpZ2dlcmVkIGZy b20uICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBpbiBFbWFjcyBpdHNlbGYuCiAgICAgICAgICAg OzsgKGdpdGh1YiM1MDUpCiAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGlmIChtaW5p YnVmZmVycCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1idWZm ZXIgKG1pbmlidWZmZXItc2VsZWN0ZWQtd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAoZWdsb3QtLWRiaW5kICgo Q29tcGxldGlvbkl0ZW0pIGluc2VydFRleHRGb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluc2VydFRleHQgdGV4dEVkaXQgYWRkaXRpb25hbFRleHRFZGl0cyBsYWJlbCkKICAgICAg ICAgICAgICAgICAoZnVuY2FsbAogICAgICAgICAgICAgICAgICByZXNvbHZlLW1heWJlCiAgICAg ICAgICAgICAgICAgIChvciAoZ2V0LXRleHQtcHJvcGVydHkgMCAnZWdsb3QtLWxzcC1pdGVtIHBy b3h5KQogICAgICAgICAgICAgICAgICAgICAgOzsgV2hlbiBzZWxlY3RpbmcgZnJvbSB0aGUgKkNv bXBsZXRpb25zKgogICAgICAgICAgICAgICAgICAgICAgOzsgYnVmZmVyLCBgcHJveHknIHdvbid0 IGhhdmUgYW55IHByb3BlcnRpZXMuCiAgICAgICAgICAgICAgICAgICAgICA7OyBBIGxvb2t1cCBz aG91bGQgZml4IHRoYXQgKGdpdGh1YiMxNDgpCiAgICAgICAgICAgICAgICAgICAgICAoZ2V0LXRl eHQtcHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAwICdlZ2xvdC0tbHNwLWl0ZW0KICAg ICAgICAgICAgICAgICAgICAgICAoY2wtZmluZCBwcm94eSAoZnVuY2FsbCBwcm94aWVzKSA6dGVz dCAjJ3N0cmluZz0pKSkpCiAgICAgICAgICAgICAgIChsZXQgKChzbmlwcGV0LWZuIChhbmQgKGVx bCBpbnNlcnRUZXh0Rm9ybWF0IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVnbG90LS1zbmlwcGV0LWV4cGFuc2lvbi1mbikpKSkKICAgICAgICAgICAgICAgICAoY29u ZCAodGV4dEVkaXQKICAgICAgICAgICAgICAgICAgICAgICAgOzsgUmV2ZXJ0IGJ1ZmZlciBiYWNr IHRvIHN0YXRlIHdoZW4gdGhlIGVkaXQKICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2FzIG9i dGFpbmVkIGZyb20gc2VydmVyLiBJZiBhIGBwcm94eScKICAgICAgICAgICAgICAgICAgICAgICAg OzsgImJhciIgd2FzIG9idGFpbmVkIGZyb20gYSBidWZmZXIgd2l0aAogICAgICAgICAgICAgICAg ICAgICAgICA7OyAiZm9vLmIiLCB0aGUgTFNQIGVkaXQgYXBwbGllcyB0byB0aGF0CiAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHN0YXRlLCBfbm90XyB0aGUgY3VycmVudCAiZm9vLmJhciIuCiAg ICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIG9yaWctcG9zIChwb2ludCkpCiAg ICAgICAgICAgICAgICAgICAgICAgIChpbnNlcnQgKHN1YnN0cmluZyBib3VuZHMtc3RyaW5nICgt IG9yaWctcG9zIChjYXIgYm91bmRzKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3Qt LWRiaW5kICgoVGV4dEVkaXQpIHJhbmdlIG5ld1RleHQpIHRleHRFZGl0CiAgICAgICAgICAgICAg ICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGJlZyAuICxlbmQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1yYW5nZS1yZWdpb24gcmFuZ2UpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZyBlbmQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ290by1jaGFyIGJlZykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIChvciBzbmlwcGV0LWZuICMnaW5zZXJ0KSBuZXdUZXh0KSkpKQogICAgICAg ICAgICAgICAgICAgICAgIChzbmlwcGV0LWZuCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IEEg c25pcHBldCBzaG91bGQgYmUgaW5zZXJ0ZWQsIGJ1dCB1c2luZyBwbGFpbgogICAgICAgICAgICAg ICAgICAgICAgICA7OyBgaW5zZXJ0VGV4dCcuICBUaGlzIHJlcXVpcmVzIHVzIHRvIGRlbGV0ZSB0 aGUKICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hvbGUgY29tcGxldGlvbiwgc2luY2UgYGlu c2VydFRleHQnIGlzIHRoZSBmdWxsCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IGNvbXBsZXRp b24ncyB0ZXh0LgogICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlLXJlZ2lvbiAoLSAocG9p bnQpIChsZW5ndGggcHJveHkpKSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAoZnVu Y2FsbCBzbmlwcGV0LWZuIChvciBpbnNlcnRUZXh0IGxhYmVsKSkpKQogICAgICAgICAgICAgICAg ICh3aGVuIChjbC1wbHVzcCAobGVuZ3RoIGFkZGl0aW9uYWxUZXh0RWRpdHMpKQogICAgICAgICAg ICAgICAgICAgKGVnbG90LS1hcHBseS10ZXh0LWVkaXRzIGFkZGl0aW9uYWxUZXh0RWRpdHMpKSkK ICAgICAgICAgICAgICAgKGVnbG90LS1zaWduYWwtdGV4dERvY3VtZW50L2RpZENoYW5nZSkpKSkp KSkpKQoKKGRlZnVuIGVnbG90LS1ob3Zlci1pbmZvIChjb250ZW50cyAmb3B0aW9uYWwgX3Jhbmdl KQogIChtYXBjb25jYXQgIydlZ2xvdC0tZm9ybWF0LW1hcmt1cAogICAgICAgICAgICAgKGlmICh2 ZWN0b3JwIGNvbnRlbnRzKSBjb250ZW50cyAobGlzdCBjb250ZW50cykpICJcbiIpKQoKKGRlZnVu IGVnbG90LS1zaWctaW5mbyAoc2lnICZvcHRpb25hbCBzaWctYWN0aXZlIGJyaWVmcCkKICAoZWds b3QtLWRiaW5kICgoU2lnbmF0dXJlSW5mb3JtYXRpb24pCiAgICAgICAgICAgICAgICAgKCg6bGFi ZWwgc2lnbGFiZWwpKQogICAgICAgICAgICAgICAgICgoOmRvY3VtZW50YXRpb24gc2lnZG9jKSkg cGFyYW1ldGVycyBhY3RpdmVQYXJhbWV0ZXIpCiAgICAgIHNpZwogICAgKHdpdGgtdGVtcC1idWZm ZXIKICAgICAgKGluc2VydCBzaWdsYWJlbCkKICAgICAgOzsgQWRkIGRvY3VtZW50YXRpb24sIGlu ZGVudGVkIHNvIHdlIGNhbiBkaXN0aW5ndWlzaCBtdWx0aXBsZSBzaWduYXR1cmVzCiAgICAgICh3 aGVuLWxldCAoZG9jIChhbmQgKG5vdCBicmllZnApIHNpZ2RvYyAoZWdsb3QtLWZvcm1hdC1tYXJr dXAgc2lnZG9jKSkpCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaW5z ZXJ0ICJcbiIgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiXiIgIiAgIiBkb2MpKSkKICAgICAg OzsgVHJ5IHRvIGhpZ2hsaWdodCBmdW5jdGlvbiBuYW1lIG9ubHkKICAgICAgKGxldCAoZmlyc3Qt cGFybGFiZWwpCiAgICAgICAgKGNvbmQgKChhbmQgKGNsLXBsdXNwIChsZW5ndGggcGFyYW1ldGVy cykpCiAgICAgICAgICAgICAgICAgICAgKHZlY3RvcnAgKHNldHEgZmlyc3QtcGFybGFiZWwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGxpc3QtZ2V0IChhcmVmIHBhcmFtZXRl cnMgMCkgOmxhYmVsKSkpKQogICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAg ICAgICAgIChnb3RvLWNoYXIgKGVsdCBmaXJzdC1wYXJsYWJlbCAwKSkKICAgICAgICAgICAgICAg IChza2lwLXN5bnRheC1iYWNrd2FyZCAiXnciKQogICAgICAgICAgICAgICAgKGFkZC1mYWNlLXRl eHQtcHJvcGVydHkgKHBvaW50LW1pbikgKHBvaW50KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2ZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpKSkKICAgICAgICAg ICAgICAoKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAiXFwoW14oXSpcXCkoW14pXSopIikp CiAgICAgICAgICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5IChtYXRjaC1iZWdpbm5pbmcg MSkgKG1hdGNoLWVuZCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Zm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSkpKSkKICAgICAgOzsgTm93IHRvIHRoZSBwYXJh bWV0ZXJzCiAgICAgIChjbC1sb29wCiAgICAgICB3aXRoIGFjdGl2ZS1wYXJhbSA9IChvciBzaWct YWN0aXZlIGFjdGl2ZVBhcmFtZXRlcikKICAgICAgIGZvciBpIGZyb20gMCBmb3IgcGFyYW1ldGVy IGFjcm9zcyBwYXJhbWV0ZXJzIGRvCiAgICAgICAoZWdsb3QtLWRiaW5kICgoUGFyYW1ldGVySW5m b3JtYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAoKDpsYWJlbCBwYXJsYWJlbCkpCiAgICAg ICAgICAgICAgICAgICAgICAoKDpkb2N1bWVudGF0aW9uIHBhcmRvYykpKQogICAgICAgICAgIHBh cmFtZXRlcgogICAgICAgICA7OyAuLi5wZXJoYXBzIGhpZ2hsaWdodCBpdCBpbiB0aGUgZm9ybWFs cyBsaXN0CiAgICAgICAgICh3aGVuIChlcSBpIGFjdGl2ZS1wYXJhbSkKICAgICAgICAgICAoc2F2 ZS1leGN1cnNpb24KICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgICAg ICAgICAocGNhc2UtbGV0CiAgICAgICAgICAgICAgICAgKChgKCxiZWcgLGVuZCkKICAgICAgICAg ICAgICAgICAgIChpZiAoc3RyaW5ncCBwYXJsYWJlbCkKICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgoY2FzZS1mb2xkLXNlYXJjaCBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAoc2VhcmNoLWZvcndhcmQgcGFybGFiZWwgKGxpbmUtZW5kLXBvc2l0aW9uKSB0KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAobWF0Y2gtYmVnaW5uaW5nIDApIChtYXRjaC1l bmQgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAjJzErIChhcHBlbmQgcGFybGFi ZWwgbmlsKSkpKSkKICAgICAgICAgICAgICAgKGlmIChhbmQgYmVnIGVuZCkKICAgICAgICAgICAg ICAgICAgIChhZGQtZmFjZS10ZXh0LXByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAgYmVnIGVu ZAogICAgICAgICAgICAgICAgICAgICdlbGRvYy1oaWdobGlnaHQtZnVuY3Rpb24tYXJndW1lbnQp KSkpKQogICAgICAgICA7OyAuLi5hbmQvb3IgbWF5YmUgYWRkIGl0cyBkb2Mgb24gYSBsaW5lIGJ5 IGl0cyBvd24uCiAgICAgICAgIChsZXQgKGZwYXJkb2MpCiAgICAgICAgICAgKHdoZW4gKGFuZCBw YXJkb2MgKG5vdCBicmllZnApCiAgICAgICAgICAgICAgICAgICAgICAobm90IChzdHJpbmctZW1w dHktcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZnBhcmRvYyAoZWdsb3QtLWZv cm1hdC1tYXJrdXAgcGFyZG9jKSkpKSkKICAgICAgICAgICAgIChpbnNlcnQgIlxuICAiCiAgICAg ICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplCiAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0 cmluZ3AgcGFybGFiZWwpIHBhcmxhYmVsCiAgICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAj J3N1YnN0cmluZyBzaWdsYWJlbCAobWFwY2FyICMnMSsgcGFybGFiZWwpKSkKICAgICAgICAgICAg ICAgICAgICAgICdmYWNlIChhbmQgKGVxIGkgYWN0aXZlLXBhcmFtKSAnZWxkb2MtaGlnaGxpZ2h0 LWZ1bmN0aW9uLWFyZ3VtZW50KSkKICAgICAgICAgICAgICAgICAgICAgIjogIiBmcGFyZG9jKSkp KSkKICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkpCgooZGVmdW4gZWdsb3Qtc2lnbmF0dXJlLWVsZG9j LWZ1bmN0aW9uIChjYikKICAiQSBtZW1iZXIgb2YgYGVsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rp b25zJywgZm9yIHNpZ25hdHVyZXMuIgogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6c2ln bmF0dXJlSGVscFByb3ZpZGVyKQogICAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIpKSkKICAg ICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgKGVnbG90LS1jdXJyZW50LXNlcnZlci1v ci1sb3NlKQogICAgICAgOnRleHREb2N1bWVudC9zaWduYXR1cmVIZWxwIChlZ2xvdC0tVGV4dERv Y3VtZW50UG9zaXRpb25QYXJhbXMpCiAgICAgICA6c3VjY2Vzcy1mbgogICAgICAgKGVnbG90LS1s YW1iZGEgKChTaWduYXR1cmVIZWxwKQogICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXMg YWN0aXZlU2lnbmF0dXJlIChhY3RpdmVQYXJhbWV0ZXIgMCkpCiAgICAgICAgIChlZ2xvdC0td2hl bi1idWZmZXItd2luZG93IGJ1ZgogICAgICAgICAgIChsZXQgKChhY3RpdmUtc2lnIChhbmQgKGNs LXBsdXNwIChsZW5ndGggc2lnbmF0dXJlcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXJlZiBzaWduYXR1cmVzIChvciBhY3RpdmVTaWduYXR1cmUgMCkpKSkpCiAgICAgICAg ICAgICAoaWYgKG5vdCBhY3RpdmUtc2lnKSAoZnVuY2FsbCBjYiBuaWwpCiAgICAgICAgICAgICAg IChmdW5jYWxsCiAgICAgICAgICAgICAgICBjYiAobWFwY29uY2F0IChsYW1iZGEgKHMpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1zaWctaW5mbyBzIChhbmQgKGVxIHMg YWN0aXZlLXNpZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhY3RpdmVQYXJhbWV0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aWduYXR1cmVzICJcbiIpCiAgICAgICAgICAgICAgICA6ZWNobyAoZWdsb3QtLXNpZy1pbmZvIGFj dGl2ZS1zaWcgYWN0aXZlUGFyYW1ldGVyIHQpKSkpKSkKICAgICAgIDpkZWZlcnJlZCA6dGV4dERv Y3VtZW50L3NpZ25hdHVyZUhlbHApKQogICAgdCkpCgooZGVmdW4gZWdsb3QtaG92ZXItZWxkb2Mt ZnVuY3Rpb24gKGNiKQogICJBIG1lbWJlciBvZiBgZWxkb2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlv bnMnLCBmb3IgaG92ZXIuIgogICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6aG92ZXJQcm92 aWRlcikKICAgIChsZXQgKChidWYgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgIChqc29ucnBjLWFz eW5jLXJlcXVlc3QKICAgICAgIChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAgICAg IDp0ZXh0RG9jdW1lbnQvaG92ZXIgKGVnbG90LS1UZXh0RG9jdW1lbnRQb3NpdGlvblBhcmFtcykK ICAgICAgIDpzdWNjZXNzLWZuIChlZ2xvdC0tbGFtYmRhICgoSG92ZXIpIGNvbnRlbnRzIHJhbmdl KQogICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdoZW4tYnVmZmVyLXdpbmRvdyBidWYKICAg ICAgICAgICAgICAgICAgICAgICAobGV0ICgoaW5mbyAodW5sZXNzIChzZXEtZW1wdHktcCBjb250 ZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0taG92ZXIt aW5mbyBjb250ZW50cyByYW5nZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IGNiIGluZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplY2hvIChhbmQgaW5m byAoc3RyaW5nLW1hdGNoICJcbiIgaW5mbykpKSkpKQogICAgICAgOmRlZmVycmVkIDp0ZXh0RG9j dW1lbnQvaG92ZXIpKQogICAgKGVnbG90LS1oaWdobGlnaHQtcGlnZ3liYWNrIGNiKQogICAgdCkp CgooZGVmdmFyIGVnbG90LS1oaWdobGlnaHRzIG5pbCAiT3ZlcmxheXMgZm9yIHRleHREb2N1bWVu dC9kb2N1bWVudEhpZ2hsaWdodC4iKQoKKGRlZnVuIGVnbG90LS1oaWdobGlnaHQtcGlnZ3liYWNr IChfY2IpCiAgIlJlcXVlc3QgYW5kIGhhbmRsZSBgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hs aWdodCcuIgogIDs7IEZJWE1FOiBPYnZpb3VzbHksIHRoaXMgaXMganVzdCBwaWdneSBiYWNraW5n IG9uIGVsZG9jJ3MgY2FsbHMgZm9yCiAgOzsgY29udmVuaWVuY2UsIGFzIHNob3duIGJ5IHRoZSBm YWN0IHRoYXQgd2UganVzdCBpZ25vcmUgY2IuCiAgKGxldCAoKGJ1ZiAoY3VycmVudC1idWZmZXIp KSkKICAgICh3aGVuIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZSA6ZG9jdW1lbnRIaWdobGlnaHRQcm92 aWRlcikKICAgICAgKGpzb25ycGMtYXN5bmMtcmVxdWVzdAogICAgICAgKGVnbG90LS1jdXJyZW50 LXNlcnZlci1vci1sb3NlKQogICAgICAgOnRleHREb2N1bWVudC9kb2N1bWVudEhpZ2hsaWdodCAo ZWdsb3QtLVRleHREb2N1bWVudFBvc2l0aW9uUGFyYW1zKQogICAgICAgOnN1Y2Nlc3MtZm4KICAg ICAgIChsYW1iZGEgKGhpZ2hsaWdodHMpCiAgICAgICAgIChtYXBjICMnZGVsZXRlLW92ZXJsYXkg ZWdsb3QtLWhpZ2hsaWdodHMpCiAgICAgICAgIChzZXRxIGVnbG90LS1oaWdobGlnaHRzCiAgICAg ICAgICAgICAgIChlZ2xvdC0td2hlbi1idWZmZXItd2luZG93IGJ1ZgogICAgICAgICAgICAgICAg IChtYXBjYXIKICAgICAgICAgICAgICAgICAgKGVnbG90LS1sYW1iZGEgKChEb2N1bWVudEhpZ2hs aWdodCkgcmFuZ2UpCiAgICAgICAgICAgICAgICAgICAgKHBjYXNlLWxldCAoKGAoLGJlZyAuICxl bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC1yYW5nZS1yZWdpb24g cmFuZ2UpKSkKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChvdiAobWFrZS1vdmVybGF5IGJl ZyBlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ICdmYWNlICdl Z2xvdC1oaWdobGlnaHQtc3ltYm9sLWZhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIChvdmVy bGF5LXB1dCBvdiAnbW9kaWZpY2F0aW9uLWhvb2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBgKCwobGFtYmRhIChvICZyZXN0IF8pIChkZWxldGUtb3ZlcmxheSBvKSkpKQog ICAgICAgICAgICAgICAgICAgICAgICBvdikpKQogICAgICAgICAgICAgICAgICBoaWdobGlnaHRz KSkpKQogICAgICAgOmRlZmVycmVkIDp0ZXh0RG9jdW1lbnQvZG9jdW1lbnRIaWdobGlnaHQpCiAg ICAgIG5pbCkpKQoKKGRlZnVuIGVnbG90LS1pbWVudS1TeW1ib2xJbmZvcm1hdGlvbiAocmVzKQog ICJDb21wdXRlIGBpbWVudS0taW5kZXgtYWxpc3QnIGZvciBSRVMgdmVjdG9yIG9mIFN5bWJvbElu Zm9ybWF0aW9uLiIKICAobWFwY2FyCiAgIChwY2FzZS1sYW1iZGEgKGAoLGtpbmQgLiAsb2Jqcykp CiAgICAgKGNvbnMKICAgICAgKGFsaXN0LWdldCBraW5kIGVnbG90LS1zeW1ib2wta2luZC1uYW1l cyAiVW5rbm93biIpCiAgICAgIChtYXBjYW4KICAgICAgIChwY2FzZS1sYW1iZGEgKGAoLGNvbnRh aW5lciAuICxvYmpzKSkKICAgICAgICAgKGxldCAoKGVsZW1zIChtYXBjYXIKICAgICAgICAgICAg ICAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKFN5bWJvbEluZm9ybWF0aW9uKSBraW5kIG5hbWUg bG9jYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgocmVnIChlZ2xvdC1yYW5n ZS1yZWdpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQg bG9jYXRpb24gOnJhbmdlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2luZCAo YWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zIChwcm9wZXJ0aXplIG5hbWUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFkY3J1bWItcmVnaW9uIHJlZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJlYWRjcnVtYi1raW5kIGtpbmQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgcmVnKSkpKQogICAgICAgICAg ICAgICAgICAgICAgIG9ianMpKSkKICAgICAgICAgICAoaWYgY29udGFpbmVyIChsaXN0IChjb25z IGNvbnRhaW5lciBlbGVtcykpIGVsZW1zKSkpCiAgICAgICAoc2VxLWdyb3VwLWJ5CiAgICAgICAg KGVnbG90LS1sYW1iZGEgKChTeW1ib2xJbmZvcm1hdGlvbikgY29udGFpbmVyTmFtZSkgY29udGFp bmVyTmFtZSkgb2JqcykpKSkKICAgKHNlcS1ncm91cC1ieSAoZWdsb3QtLWxhbWJkYSAoKFN5bWJv bEluZm9ybWF0aW9uKSBraW5kKSBraW5kKSByZXMpKSkKCihkZWZ1biBlZ2xvdC0taW1lbnUtRG9j dW1lbnRTeW1ib2wgKHJlcykKICAiQ29tcHV0ZSBgaW1lbnUtLWluZGV4LWFsaXN0JyBmb3IgUkVT IHZlY3RvciBvZiBEb2N1bWVudFN5bWJvbC4iCiAgKGNsLWxhYmVscyAoKGRmcyAoJmtleSBuYW1l IGNoaWxkcmVuIHJhbmdlIGtpbmQgJmFsbG93LW90aGVyLWtleXMpCiAgICAgICAgICAgICAgICAo bGV0KiAoKHJlZyAoZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdlKSkKICAgICAgICAgICAgICAgICAg ICAgICAoa2luZCAoYWxpc3QtZ2V0IGtpbmQgZWdsb3QtLXN5bWJvbC1raW5kLW5hbWVzKSkKICAg ICAgICAgICAgICAgICAgICAgICAobmFtZSAocHJvcGVydGl6ZSBuYW1lCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFkY3J1bWItcmVnaW9uIHJlZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdicmVhZGNydW1iLWtpbmQga2luZCkp KQogICAgICAgICAgICAgICAgICAoaWYgKHNlcS1lbXB0eS1wIGNoaWxkcmVuKQogICAgICAgICAg ICAgICAgICAgICAgKGNvbnMgbmFtZSAoY2FyIHJlZykpCiAgICAgICAgICAgICAgICAgICAgKGNv bnMgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcGNhciAobGFtYmRhIChjKSAo YXBwbHkgIydkZnMgYykpIGNoaWxkcmVuKSkpKSkpCiAgICAobWFwY2FyIChsYW1iZGEgKHMpIChh cHBseSAjJ2RmcyBzKSkgcmVzKSkpCgooY2wtZGVmdW4gZWdsb3QtaW1lbnUgKCkKICAiRWdsb3Qn cyBgaW1lbnUtY3JlYXRlLWluZGV4LWZ1bmN0aW9uJy4KUmV0dXJucyBhIGxpc3QgYXMgZGVzY3Jp YmVkIGluIGRvY3N0cmluZyBvZiBgaW1lbnUtLWluZGV4LWFsaXN0Jy4iCiAgKHVubGVzcyAoZWds b3Qtc2VydmVyLWNhcGFibGUgOmRvY3VtZW50U3ltYm9sUHJvdmlkZXIpCiAgICAoY2wtcmV0dXJu LWZyb20gZWdsb3QtaW1lbnUpKQogIChsZXQqICgocmVzIChlZ2xvdC0tcmVxdWVzdCAoZWdsb3Qt LWN1cnJlbnQtc2VydmVyLW9yLWxvc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0 ZXh0RG9jdW1lbnQvZG9jdW1lbnRTeW1ib2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YCg6dGV4dERvY3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChlZ2xvdC0t VGV4dERvY3VtZW50SWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpj YW5jZWwtb24taW5wdXQgbm9uLWVzc2VudGlhbCkpCiAgICAgICAgIChoZWFkIChhbmQgKGNsLXBs dXNwIChsZW5ndGggcmVzKSkgKGVsdCByZXMgMCkpKSkKICAgICh3aGVuIGhlYWQKICAgICAgKGVn bG90LS1kY2FzZSBoZWFkCiAgICAgICAgKCgoU3ltYm9sSW5mb3JtYXRpb24pKSAoZWdsb3QtLWlt ZW51LVN5bWJvbEluZm9ybWF0aW9uIHJlcykpCiAgICAgICAgKCgoRG9jdW1lbnRTeW1ib2wpKSAo ZWdsb3QtLWltZW51LURvY3VtZW50U3ltYm9sIHJlcykpKSkpKQoKKGNsLWRlZnVuIGVnbG90LS1h cHBseS10ZXh0LWVkaXRzIChlZGl0cyAmb3B0aW9uYWwgdmVyc2lvbiBzaWxlbnQpCiAgIkFwcGx5 IEVESVRTIGZvciBjdXJyZW50IGJ1ZmZlciBpZiBhdCBWRVJTSU9OLCBvciBpZiBpdCdzIG5pbC4K SWYgU0lMRU5ULCBkb24ndCBlY2hvIHByb2dyZXNzIGluIG1vZGUtbGluZS4iCiAgKHVubGVzcyBl ZGl0cyAoY2wtcmV0dXJuLWZyb20gZWdsb3QtLWFwcGx5LXRleHQtZWRpdHMpKQogICh1bmxlc3Mg KG9yIChub3QgdmVyc2lvbikgKGVxdWFsIHZlcnNpb24gZWdsb3QtLXZlcnNpb25lZC1pZGVudGlm aWVyKSkKICAgIChqc29ucnBjLWVycm9yICJFZGl0cyBvbiBgJXMnIHJlcXVpcmUgdmVyc2lvbiAl ZCwgeW91IGhhdmUgJWQiCiAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpIHZlcnNp b24gZWdsb3QtLXZlcnNpb25lZC1pZGVudGlmaWVyKSkKICAoYXRvbWljLWNoYW5nZS1ncm91cAog ICAgKGxldCogKChjaGFuZ2UtZ3JvdXAgKHByZXBhcmUtY2hhbmdlLWdyb3VwKSkKICAgICAgICAg ICAoaG93bWFueSAobGVuZ3RoIGVkaXRzKSkKICAgICAgICAgICAocmVwb3J0ZXIgKHVubGVzcyBz aWxlbnQKICAgICAgICAgICAgICAgICAgICAgICAobWFrZS1wcm9ncmVzcy1yZXBvcnRlcgogICAg ICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJbZWdsb3RdIGFwcGx5aW5nICVzIGVkaXRzIHRv IGAlcycuLi4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93bWFueSAoY3VycmVu dC1idWZmZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAwIGhvd21hbnkpKSkKICAgICAgICAg ICAoZG9uZSAwKSkKICAgICAgKG1hcGMgKHBjYXNlLWxhbWJkYSAoYCgsbmV3VGV4dCAsYmVnIC4g LGVuZCkpCiAgICAgICAgICAgICAgKGxldCAoKHNvdXJjZSAoY3VycmVudC1idWZmZXIpKSkKICAg ICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgICAgICAgICAgICAgIChpbnNlcnQg bmV3VGV4dCkKICAgICAgICAgICAgICAgICAgKGxldCAoKHRlbXAgKGN1cnJlbnQtYnVmZmVyKSkp CiAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc291cmNlCiAgICAgICAg ICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgKHNh dmUtcmVzdHJpY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAobmFycm93LXRvLXJlZ2lv biBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlLWJ1ZmZlci1jb250 ZW50cyB0ZW1wKSkpCiAgICAgICAgICAgICAgICAgICAgICAod2hlbiByZXBvcnRlcgogICAgICAg ICAgICAgICAgICAgICAgICAoZWdsb3QtLXJlcG9ydGVyLXVwZGF0ZSByZXBvcnRlciAoY2wtaW5j ZiBkb25lKSkpKSkpKSkKICAgICAgICAgICAgKG1hcGNhciAoZWdsb3QtLWxhbWJkYSAoKFRleHRF ZGl0KSByYW5nZSBuZXdUZXh0KQogICAgICAgICAgICAgICAgICAgICAgKGNvbnMgbmV3VGV4dCAo ZWdsb3QtcmFuZ2UtcmVnaW9uIHJhbmdlICdtYXJrZXJzKSkpCiAgICAgICAgICAgICAgICAgICAg KHJldmVyc2UgZWRpdHMpKSkKICAgICAgKHVuZG8tYW1hbGdhbWF0ZS1jaGFuZ2UtZ3JvdXAgY2hh bmdlLWdyb3VwKQogICAgICAod2hlbiByZXBvcnRlcgogICAgICAgIChwcm9ncmVzcy1yZXBvcnRl ci1kb25lIHJlcG9ydGVyKSkpKSkKCihkZWZ1biBlZ2xvdC0tY29uZmlybS1zZXJ2ZXItZWRpdHMg KG9yaWdpbiBfcHJlcGFyZWQpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1hcHBseS13b3Jrc3BhY2Ut ZWRpdC4KT1JJR0lOIGlzIGEgc3ltYm9sIGRlc2lnbmF0aW5nIGEgY29tbWFuZC4gIFJlYWRzIHRo ZQpgZWdsb3QtY29uZmlybS1zZXJ2ZXItZWRpdHMnIHVzZXIgb3B0aW9uIGFuZCByZXR1cm5zIGEg c3ltYm9sCmxpa2UgYGRpZmYnLCBgc3VtbWFyeScgb3IgbmlsLiIKICAobGV0ICh2KQogICAgKGNv bmQgKChzeW1ib2xwIGVnbG90LWNvbmZpcm0tc2VydmVyLWVkaXRzKSBlZ2xvdC1jb25maXJtLXNl cnZlci1lZGl0cykKICAgICAgICAgICgoc2V0cSB2IChhc3NvYyBvcmlnaW4gZWdsb3QtY29uZmly bS1zZXJ2ZXItZWRpdHMpKSAoY2RyIHYpKQogICAgICAgICAgKChzZXRxIHYgKGFzc29jIHQgZWds b3QtY29uZmlybS1zZXJ2ZXItZWRpdHMpKSAoY2RyIHYpKSkpKQoKKGRlZnVuIGVnbG90LS1wcm9w b3NlLWNoYW5nZXMtYXMtZGlmZiAocHJlcGFyZWQpCiAgIkhlbHBlciBmb3IgYGVnbG90LS1hcHBs eS13b3Jrc3BhY2UtZWRpdCcuCkdvYWwgaXMgdG8gcG9wdXAgYSBgZGlmZi1tb2RlJyBidWZmZXIg Y29udGFpbmluZyBhbGwgdGhlIGNoYW5nZXMKb2YgUFJFUEFSRUQsIHJlYWR5IHRvIGFwcGx5IHdp dGggQy1jIEMtYS4gIFBSRVBBUkVEIGlzIGEKbGlzdCAoKEZJTEVOQU1FIEVESVRTIFZFUlNJT04p Li4uKS4iCiAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqRUdMT1Qg cHJvcG9zZWQgc2VydmVyIGNoYW5nZXMqIikKICAgIChidWZmZXItZGlzYWJsZS11bmRvIChjdXJy ZW50LWJ1ZmZlcikpCiAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkKICAgICAgICAgICh0 YXJnZXQgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgIChkaWZmLW1vZGUpCiAgICAgIChlcmFzZS1i dWZmZXIpCiAgICAgIChwY2FzZS1kb2xpc3QgKGAoLHBhdGggLGVkaXRzICxfKSBwcmVwYXJlZCkK ICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgKGxldCogKChkaWZmIChjdXJyZW50 LWJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgKGV4aXN0aW5nLWJ1ZiAoZmluZC1idWZmZXItdmlz aXRpbmcgcGF0aCkpCiAgICAgICAgICAgICAgICAgKGV4aXN0aW5nLWJ1Zi1sYWJlbCAocHJpbjEt dG8tc3RyaW5nIGV4aXN0aW5nLWJ1ZikpKQogICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAgICAgICAgIChpZiBleGlzdGluZy1idWYKICAgICAgICAgICAgICAgICAgKGluc2VydC1i dWZmZXItc3Vic3RyaW5nIGV4aXN0aW5nLWJ1ZikKICAgICAgICAgICAgICAgIChpbnNlcnQtZmls ZS1jb250ZW50cyBwYXRoKSkKICAgICAgICAgICAgICAoZWdsb3QtLWFwcGx5LXRleHQtZWRpdHMg ZWRpdHMgbmlsIHQpCiAgICAgICAgICAgICAgKGRpZmYtbm8tc2VsZWN0IChvciBleGlzdGluZy1i dWYgcGF0aCkgKGN1cnJlbnQtYnVmZmVyKSBuaWwgdCBkaWZmKQogICAgICAgICAgICAgICh3aGVu IGV4aXN0aW5nLWJ1ZgogICAgICAgICAgICAgICAgOzsgSGVyZSB3ZSBoYXZlIHRvIHByZXRlbmQg dGhlIGxhYmVsIG9mIHRoZSB1bnNhdmVkCiAgICAgICAgICAgICAgICA7OyBidWZmZXIgaXMgdGhl IGFjdHVhbCBmaWxlLCBqdXN0IHNvIHRoYXQgd2UgY2FuCiAgICAgICAgICAgICAgICA7OyBkaWZm LWFwcGx5IHdpdGhvdXQgdHJvdWJsZXMuICBJZiB0aGVyZSdzIGEgYmV0dGVyCiAgICAgICAgICAg ICAgICA7OyB3YXksIGl0IHByb2JhYmx5IGludm9sdmVzIGNoYW5nZXMgdG8gYGRpZmYuZWwnLgog ICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgZGlmZgogICAgICAgICAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgICAgICAgICAgICAod2hpbGUgKHNlYXJj aC1mb3J3YXJkIGV4aXN0aW5nLWJ1Zi1sYWJlbCBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAo cmVwbGFjZS1tYXRjaCAoYnVmZmVyLWZpbGUtbmFtZSBleGlzdGluZy1idWYpKSkpKSkKICAgICAg ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgdGFyZ2V0CiAgICAgICAgICAgICAgKGluc2VydC1i dWZmZXItc3Vic3RyaW5nIGRpZmYpKSkpKSkKICAgIChzZXRxLWxvY2FsIGJ1ZmZlci1yZWFkLW9u bHkgdCkKICAgIChidWZmZXItZW5hYmxlLXVuZG8gKGN1cnJlbnQtYnVmZmVyKSkKICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCiAgICAocG9wLXRvLWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQog ICAgKGZvbnQtbG9jay1lbnN1cmUpKSkKCihkZWZ1biBlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVk aXQgKHdlZGl0IG9yaWdpbikKICAiQXBwbHkgKG9yIG9mZmVyIHRvIGFwcGx5KSB0aGUgd29ya3Nw YWNlIGVkaXQgV0VESVQuCk9SSUdJTiBpcyBhIHN5bWJvbCBkZXNpZ25hdGluZyB0aGUgY29tbWFu ZCB0aGF0IG9yaWdpbmF0ZWQgdGhpcwplZGl0IHByb3Bvc2VkIGJ5IHRoZSBzZXJ2ZXIuIgogIChl Z2xvdC0tZGJpbmQgKChXb3Jrc3BhY2VFZGl0KSBjaGFuZ2VzIGRvY3VtZW50Q2hhbmdlcykgd2Vk aXQKICAgIChsZXQgKChwcmVwYXJlZAogICAgICAgICAgIChtYXBjYXIgKGVnbG90LS1sYW1iZGEg KChUZXh0RG9jdW1lbnRFZGl0KSB0ZXh0RG9jdW1lbnQgZWRpdHMpCiAgICAgICAgICAgICAgICAg ICAgIChlZ2xvdC0tZGJpbmQgKChWZXJzaW9uZWRUZXh0RG9jdW1lbnRJZGVudGlmaWVyKSB1cmkg dmVyc2lvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREb2N1bWVudAogICAgICAgICAg ICAgICAgICAgICAgIChsaXN0IChlZ2xvdC11cmktdG8tcGF0aCB1cmkpIGVkaXRzIHZlcnNpb24p KSkKICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Q2hhbmdlcykpKQogICAgICAodW5sZXNzIChh bmQgY2hhbmdlcyBkb2N1bWVudENoYW5nZXMpCiAgICAgICAgOzsgV2UgZG9uJ3Qgd2FudCBkb3Vi bGUgZWRpdHMsIGFuZCBzb21lIHNlcnZlcnMgc2VuZCBib3RoCiAgICAgICAgOzsgY2hhbmdlcyBh bmQgZG9jdW1lbnRDaGFuZ2VzLiAgVGhpcyB1bmxlc3MgZW5zdXJlcyB0aGF0IHdlCiAgICAgICAg OzsgcHJlZmVyIGRvY3VtZW50Q2hhbmdlcyBvdmVyIGNoYW5nZXMuCiAgICAgICAgKGNsLWxvb3Ag Zm9yICh1cmkgZWRpdHMpIG9uIGNoYW5nZXMgYnkgIydjZGRyCiAgICAgICAgICAgICAgICAgZG8g KHB1c2ggKGxpc3QgKGVnbG90LXVyaS10by1wYXRoIHVyaSkgZWRpdHMpIHByZXBhcmVkKSkpCiAg ICAgIChjbC1mbGV0ICgobm90ZXZlcnktdmlzaXRlZC1wICgpCiAgICAgICAgICAgICAgICAgIChj bC1ub3RldmVyeSAjJ2ZpbmQtYnVmZmVyLXZpc2l0aW5nCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobWFwY2FyICMnY2FyIHByZXBhcmVkKSkpCiAgICAgICAgICAgICAgICAoYWNjZXB0 LXAgKCkKICAgICAgICAgICAgICAgICAgKHktb3Itbi1wCiAgICAgICAgICAgICAgICAgICAoZm9y bWF0ICJbZWdsb3RdIFNlcnZlciB3YW50cyB0byBlZGl0OlxuJXNQcm9jZWVkPyAiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBm b3IgKGYgZWRzIF8pIGluIHByZXBhcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25j YXQgKGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAlcyAoJWQg Y2hhbmdlJXMpXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGxlbmd0 aCBlZHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAobGVuZ3Ro IGVkcykgMSkgInMiICIiKSkpKSkpCiAgICAgICAgICAgICAgICAoYXBwbHkgKCkKICAgICAgICAg ICAgICAgICAgKGNsLWxvb3AgZm9yIGVkaXQgaW4gcHJlcGFyZWQKICAgICAgICAgICAgICAgICAg IGZvciAocGF0aCBlZGl0cyB2ZXJzaW9uKSA9IGVkaXQKICAgICAgICAgICAgICAgICAgIGRvICh3 aXRoLWN1cnJlbnQtYnVmZmVyIChmaW5kLWZpbGUtbm9zZWxlY3QgcGF0aCkKICAgICAgICAgICAg ICAgICAgICAgICAgKGVnbG90LS1hcHBseS10ZXh0LWVkaXRzIGVkaXRzIHZlcnNpb24pKQogICAg ICAgICAgICAgICAgICAgZmluYWxseSAoZWxkb2MpIChlZ2xvdC0tbWVzc2FnZSAiRWRpdCBzdWNj ZXNzZnVsISIpKSkpCiAgICAgICAgKGxldCAoKGRlY2lzaW9uIChlZ2xvdC0tY29uZmlybS1zZXJ2 ZXItZWRpdHMgb3JpZ2luIHByZXBhcmVkKSkpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICgo b3IgKGVxIGRlY2lzaW9uICdkaWZmKQogICAgICAgICAgICAgICAgKGFuZCAoZXEgZGVjaXNpb24g J21heWJlLWRpZmYpIChub3RldmVyeS12aXNpdGVkLXApKSkKICAgICAgICAgICAgKGVnbG90LS1w cm9wb3NlLWNoYW5nZXMtYXMtZGlmZiBwcmVwYXJlZCkpCiAgICAgICAgICAgKChvciAobWVtcSBk ZWNpc2lvbiAnKHQgc3VtbWFyeSkpCiAgICAgICAgICAgICAgICAoYW5kIChlcSBkZWNpc2lvbiAn bWF5YmUtc3VtbWFyeSkgKG5vdGV2ZXJ5LXZpc2l0ZWQtcCkpKQogICAgICAgICAgICAod2hlbiAo YWNjZXB0LXApIChhcHBseSkpKQogICAgICAgICAgICh0CiAgICAgICAgICAgIChhcHBseSkpKSkp KSkpCgooZGVmdW4gZWdsb3QtcmVuYW1lIChuZXduYW1lKQogICJSZW5hbWUgdGhlIGN1cnJlbnQg c3ltYm9sIHRvIE5FV05BTUUuIgogIChpbnRlcmFjdGl2ZQogICAobGlzdCAocmVhZC1mcm9tLW1p bmlidWZmZXIKICAgICAgICAgIChmb3JtYXQgIlJlbmFtZSBgJXMnIHRvOiAiIChvciAodGhpbmct YXQtcG9pbnQgJ3N5bWJvbCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJ1bmtub3duIHN5bWJvbCIpKQogICAgICAgICAgbmlsIG5pbCBuaWwgbmlsCiAgICAgICAg ICAoc3ltYm9sLW5hbWUgKHN5bWJvbC1hdC1wb2ludCkpKSkpCiAgKGVnbG90LXNlcnZlci1jYXBh YmxlLW9yLWxvc2UgOnJlbmFtZVByb3ZpZGVyKQogIChlZ2xvdC0tYXBwbHktd29ya3NwYWNlLWVk aXQKICAgKGVnbG90LS1yZXF1ZXN0IChlZ2xvdC0tY3VycmVudC1zZXJ2ZXItb3ItbG9zZSkKICAg ICAgICAgICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvcmVuYW1lIGAoLEAoZWdsb3QtLVRleHREb2N1 bWVudFBvc2l0aW9uUGFyYW1zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6bmV3TmFtZSAsbmV3bmFtZSkpCiAgIHRoaXMtY29tbWFuZCkpCgooZGVmdW4gZWdsb3Qt LWNvZGUtYWN0aW9uLWJvdW5kcyAoKQogICJDYWxjdWxhdGUgYXBwcm9wcmlhdGUgYm91bmRzIGRl cGVuZGluZyBvbiByZWdpb24gYW5kIHBvaW50LiIKICAobGV0IChkaWFncyBib2Z0YXApCiAgICAo Y29uZCAoKHVzZS1yZWdpb24tcCkgYCgsKHJlZ2lvbi1iZWdpbm5pbmcpICwocmVnaW9uLWVuZCkp KQogICAgICAgICAgKChzZXRxIGRpYWdzIChmbHltYWtlLWRpYWdub3N0aWNzIChwb2ludCkpKQog ICAgICAgICAgIChjbC1sb29wIGZvciBkIGluIGRpYWdzCiAgICAgICAgICAgICAgICAgICAgbWlu aW1pemluZyAoZmx5bWFrZS1kaWFnbm9zdGljLWJlZyBkKSBpbnRvIGJlZwogICAgICAgICAgICAg ICAgICAgIG1heGltaXppbmcgKGZseW1ha2UtZGlhZ25vc3RpYy1lbmQgZCkgaW50byBlbmQKICAg ICAgICAgICAgICAgICAgICBmaW5hbGx5IChjbC1yZXR1cm4gKGxpc3QgYmVnIGVuZCkpKSkKICAg ICAgICAgICgoc2V0cSBib2Z0YXAgKGJvdW5kcy1vZi10aGluZy1hdC1wb2ludCAnc2V4cCkpCiAg ICAgICAgICAgKGxpc3QgKGNhciBib2Z0YXApIChjZHIgYm9mdGFwKSkpCiAgICAgICAgICAodAog ICAgICAgICAgIChsaXN0IChwb2ludCkgKHBvaW50KSkpKSkpCgooZGVmdW4gZWdsb3QtY29kZS1h Y3Rpb25zIChiZWcgJm9wdGlvbmFsIGVuZCBhY3Rpb24ta2luZCBpbnRlcmFjdGl2ZSkKICAiRmlu ZCBMU1AgY29kZSBhY3Rpb25zIG9mIHR5cGUgQUNUSU9OLUtJTkQgYmV0d2VlbiBCRUcgYW5kIEVO RC4KSW50ZXJhY3RpdmVseSwgb2ZmZXIgdG8gZXhlY3V0ZSB0aGVtLgpJZiBBQ1RJT04tS0lORCBp cyBuaWwsIGNvbnNpZGVyIGFsbCBraW5kcyBvZiBhY3Rpb25zLgpJbnRlcmFjdGl2ZWx5LCBkZWZh dWx0IEJFRyBhbmQgRU5EIHRvIHJlZ2lvbidzIGJvdW5kcyBlbHNlIEJFRyBpcwpwb2ludCBhbmQg RU5EIGlzIG5pbCwgd2hpY2ggcmVzdWx0cyBpbiBhIHJlcXVlc3QgZm9yIGNvZGUgYWN0aW9ucwph dCBwb2ludC4gIFdpdGggcHJlZml4IGFyZ3VtZW50LCBwcm9tcHQgZm9yIEFDVElPTi1LSU5ELiIK ICAoaW50ZXJhY3RpdmUKICAgYCgsQChlZ2xvdC0tY29kZS1hY3Rpb24tYm91bmRzKQogICAgICwo YW5kIGN1cnJlbnQtcHJlZml4LWFyZwogICAgICAgICAgIChjb21wbGV0aW5nLXJlYWQgIltlZ2xv dF0gQWN0aW9uIGtpbmQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoInF1aWNrZml4 IiAicmVmYWN0b3IuZXh0cmFjdCIgInJlZmFjdG9yLmlubGluZSIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInJlZmFjdG9yLnJld3JpdGUiICJzb3VyY2Uub3JnYW5pemVJbXBvcnRzIikp KQogICAgIHQpKQogIChlZ2xvdC1zZXJ2ZXItY2FwYWJsZS1vci1sb3NlIDpjb2RlQWN0aW9uUHJv dmlkZXIpCiAgKGxldCogKChzZXJ2ZXIgKGVnbG90LS1jdXJyZW50LXNlcnZlci1vci1sb3NlKSkK ICAgICAgICAgKGFjdGlvbnMKICAgICAgICAgIChlZ2xvdC0tcmVxdWVzdAogICAgICAgICAgIHNl cnZlcgogICAgICAgICAgIDp0ZXh0RG9jdW1lbnQvY29kZUFjdGlvbgogICAgICAgICAgIChsaXN0 IDp0ZXh0RG9jdW1lbnQgKGVnbG90LS1UZXh0RG9jdW1lbnRJZGVudGlmaWVyKQogICAgICAgICAg ICAgICAgIDpyYW5nZSAobGlzdCA6c3RhcnQgKGVnbG90LS1wb3MtdG8tbHNwLXBvc2l0aW9uIGJl ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVuZCAoZWdsb3QtLXBvcy10by1sc3At cG9zaXRpb24gZW5kKSkKICAgICAgICAgICAgICAgICA6Y29udGV4dAogICAgICAgICAgICAgICAg IGAoOmRpYWdub3N0aWNzCiAgICAgICAgICAgICAgICAgICBbLEAoY2wtbG9vcCBmb3IgZGlhZyBp biAoZmx5bWFrZS1kaWFnbm9zdGljcyBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2hlbiAoY2RyIChhc3NvYyAnZWdsb3QtbHNwLWRpYWcKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVnbG90LS1kaWFnLWRhdGEgZGlhZykpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBpdCldCiAgICAgICAgICAgICAg ICAgICAsQCh3aGVuIGFjdGlvbi1raW5kIGAoOm9ubHkgWyxhY3Rpb24ta2luZF0pKSkpKSkKICAg ICAgICAgOzsgUmVkbyBmaWx0ZXJpbmcsIGluIGNhc2UgdGhlIGA6b25seScgZGlkbid0IGdvIHRo cm91Z2guCiAgICAgICAgIChhY3Rpb25zIChjbC1sb29wIGZvciBhIGFjcm9zcyBhY3Rpb25zCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gKG9yIChub3QgYWN0aW9uLWtpbmQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGdpdGh1YiM4NDcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1wcmVmaXgtcCBhY3Rpb24ta2luZCAocGxp c3QtZ2V0IGEgOmtpbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBhKSkp CiAgICAoaWYgaW50ZXJhY3RpdmUKICAgICAgICAoZWdsb3QtLXJlYWQtZXhlY3V0ZS1jb2RlLWFj dGlvbiBhY3Rpb25zIHNlcnZlciBhY3Rpb24ta2luZCkKICAgICAgYWN0aW9ucykpKQoKKGRlZmFs aWFzICdlZ2xvdC1jb2RlLWFjdGlvbnMtYXQtbW91c2UgKGVnbG90LS1tb3VzZS1jYWxsICdlZ2xv dC1jb2RlLWFjdGlvbnMpCiAgIkxpa2UgYGVnbG90LWNvZGUtYWN0aW9ucycsIGJ1dCBpbnRlbmRl ZCBmb3IgbW91c2UgZXZlbnRzLiIpCgooZGVmdW4gZWdsb3QtLXJlYWQtZXhlY3V0ZS1jb2RlLWFj dGlvbiAoYWN0aW9ucyBzZXJ2ZXIgJm9wdGlvbmFsIGFjdGlvbi1raW5kKQogICJIZWxwZXIgZm9y IGludGVyYWN0aXZlIGNhbGxzIHRvIGBlZ2xvdC1jb2RlLWFjdGlvbnMnLiIKICAobGV0KiAoKG1l bnUtaXRlbXMKICAgICAgICAgIChvciAoY2wtbG9vcCBmb3IgYSBpbiBhY3Rpb25zCiAgICAgICAg ICAgICAgICAgICAgICAgY29sbGVjdCAoY29ucyAocGxpc3QtZ2V0IGEgOnRpdGxlKSBhKSkKICAg ICAgICAgICAgICAoYXBwbHkgIydlZ2xvdC0tZXJyb3IKICAgICAgICAgICAgICAgICAgICAgKGlm IGFjdGlvbi1raW5kIGAoIk5vIFwiJXNcIiBjb2RlIGFjdGlvbnMgaGVyZSIgLGFjdGlvbi1raW5k KQogICAgICAgICAgICAgICAgICAgICAgIGAoIk5vIGNvZGUgYWN0aW9ucyBoZXJlIikpKSkpCiAg ICAgICAgIChwcmVmZXJyZWQtYWN0aW9uIChjbC1maW5kLWlmCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobGFtYmRhIChtZW51LWl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwbGlzdC1nZXQgKGNkciBtZW51LWl0ZW0pIDppc1ByZWZlcnJlZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtZW51LWl0ZW1zKSkKICAgICAgICAgKGRlZmF1bHQtYWN0aW9uIChjYXIg KG9yIHByZWZlcnJlZC1hY3Rpb24gKGNhciBtZW51LWl0ZW1zKSkpKQogICAgICAgICAoY2hvc2Vu IChpZiAoYW5kIGFjdGlvbi1raW5kIChudWxsIChjYWRyIG1lbnUtaXRlbXMpKSkKICAgICAgICAg ICAgICAgICAgICAgKGNkciAoY2FyIG1lbnUtaXRlbXMpKQogICAgICAgICAgICAgICAgICAgKGlm IChsaXN0cCBsYXN0LW5vbm1lbnUtZXZlbnQpCiAgICAgICAgICAgICAgICAgICAgICAgKHgtcG9w dXAtbWVudSBsYXN0LW5vbm1lbnUtZXZlbnQgYCgiRWdsb3QgY29kZSBhY3Rpb25zOiIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZHVt bXkiICxAbWVudS1pdGVtcykpKQogICAgICAgICAgICAgICAgICAgICAoY2RyIChhc3NvYyAoY29t cGxldGluZy1yZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJb ZWdsb3RdIFBpY2sgYW4gYWN0aW9uIChkZWZhdWx0ICVzKTogIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0LWFjdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1lbnUtaXRlbXMgbmlsIHQgbmlsIG5pbCBkZWZhdWx0LWFjdGlvbikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudS1pdGVtcykpKSkpKQogICAgKGVn bG90LWV4ZWN1dGUgc2VydmVyIGNob3NlbikpKQoKKGRlZm1hY3JvIGVnbG90LS1jb2RlLWFjdGlv biAobmFtZSBraW5kKQogICJEZWZpbmUgTkFNRSB0byBleGVjdXRlIEtJTkQgY29kZSBhY3Rpb24u IgogIGAoZGVmdW4gLG5hbWUgKGJlZyAmb3B0aW9uYWwgZW5kKQogICAgICwoZm9ybWF0ICJFeGVj dXRlIGAlcycgY29kZSBhY3Rpb25zIGJldHdlZW4gQkVHIGFuZCBFTkQuIiBraW5kKQogICAgIChp bnRlcmFjdGl2ZSAoZWdsb3QtLWNvZGUtYWN0aW9uLWJvdW5kcykpCiAgICAgKGVnbG90LWNvZGUt YWN0aW9ucyBiZWcgZW5kICxraW5kIHQpKSkKCihlZ2xvdC0tY29kZS1hY3Rpb24gZWdsb3QtY29k ZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cyAic291cmNlLm9yZ2FuaXplSW1wb3J0cyIpCihlZ2xv dC0tY29kZS1hY3Rpb24gZWdsb3QtY29kZS1hY3Rpb24tZXh0cmFjdCAicmVmYWN0b3IuZXh0cmFj dCIpCihlZ2xvdC0tY29kZS1hY3Rpb24gZWdsb3QtY29kZS1hY3Rpb24taW5saW5lICJyZWZhY3Rv ci5pbmxpbmUiKQooZWdsb3QtLWNvZGUtYWN0aW9uIGVnbG90LWNvZGUtYWN0aW9uLXJld3JpdGUg InJlZmFjdG9yLnJld3JpdGUiKQooZWdsb3QtLWNvZGUtYWN0aW9uIGVnbG90LWNvZGUtYWN0aW9u LXF1aWNrZml4ICJxdWlja2ZpeCIpCgoMCjs7OyBEeW5hbWljIHJlZ2lzdHJhdGlvbgo7OzsKKGNs LWRlZm1ldGhvZCBlZ2xvdC1yZWdpc3Rlci1jYXBhYmlsaXR5CiAgKHNlcnZlciAobWV0aG9kIChl cWwgd29ya3NwYWNlL2RpZENoYW5nZVdhdGNoZWRGaWxlcykpIGlkICZrZXkgd2F0Y2hlcnMpCiAg IkhhbmRsZSBkeW5hbWljIHJlZ2lzdHJhdGlvbiBvZiB3b3Jrc3BhY2UvZGlkQ2hhbmdlV2F0Y2hl ZEZpbGVzLiIKICAoZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5IHNlcnZlciBtZXRob2QgaWQp CiAgKGxldCogKHN1Y2Nlc3MKICAgICAgICAgKGdsb2JzIChtYXBjYXIKICAgICAgICAgICAgICAg ICAoZWdsb3QtLWxhbWJkYSAoKEZpbGVTeXN0ZW1XYXRjaGVyKSBnbG9iUGF0dGVybiBraW5kKQog ICAgICAgICAgICAgICAgICAgKGNvbnMgKGVnbG90LS1nbG9iLWNvbXBpbGUgZ2xvYlBhdHRlcm4g dCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlIGRlZmF1bHQgIjciIG1lYW5zIGJp dHdpc2UgT1Igb2YKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFdhdGNoS2luZC5DcmVhdGUg KDEpLCBXYXRjaEtpbmQuQ2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoMiksIFdh dGNoS2luZC5EZWxldGUgKDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAob3Iga2luZCA3KSkp CiAgICAgICAgICAgICAgICAgd2F0Y2hlcnMpKQogICAgICAgICAoZGlycy10by13YXRjaAogICAg ICAgICAgKGRlbGV0ZS1kdXBzIChtYXBjYXIgIydmaWxlLW5hbWUtZGlyZWN0b3J5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC1maWxlcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tcHJvamVjdCBzZXJ2ZXIpKSkpKSkKICAgIChjbC1sYWJlbHMK ICAgICAgICAoKGhhbmRsZS1ldmVudCAoZXZlbnQpCiAgICAgICAgICAgKHBjYXNlLWxldCogKChg KCxkZXNjICxhY3Rpb24gLGZpbGUgLGZpbGUxKSBldmVudCkKICAgICAgICAgICAgICAgICAgICAg ICAgKGFjdGlvbi10eXBlIChjbC1jYXNlIGFjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoY3JlYXRlZCAxKSAoY2hhbmdlZCAyKSAoZGVsZXRlZCAzKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgIChhY3Rpb24tYml0ICh3aGVuIGFjdGlvbi10eXBlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzaCAxICgxLSBhY3Rpb24tdHlwZSkpKSkp CiAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICgoYW5kIChtZW1xIGFjdGlvbiAnKGNy ZWF0ZWQgY2hhbmdlZCBkZWxldGVkKSkKICAgICAgICAgICAgICAgICAgICAoY2wtbG9vcCBmb3Ig KGdsb2IgLiBraW5kLWJpdG1hc2spIGluIGdsb2JzCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlcmVpcyAoYW5kICg+IChsb2dhbmQga2luZC1iaXRtYXNrIGFjdGlvbi1iaXQpIDApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGdsb2IgZmls ZSkpKSkKICAgICAgICAgICAgICAgKGpzb25ycGMtbm90aWZ5CiAgICAgICAgICAgICAgICBzZXJ2 ZXIgOndvcmtzcGFjZS9kaWRDaGFuZ2VXYXRjaGVkRmlsZXMKICAgICAgICAgICAgICAgIGAoOmNo YW5nZXMgLCh2ZWN0b3IgYCg6dXJpICwoZWdsb3QtcGF0aC10by11cmkgZmlsZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp0eXBlICxhY3Rpb24tdHlwZSkpKSkK ICAgICAgICAgICAgICAgKHdoZW4gKGFuZCAoZXEgYWN0aW9uICdjcmVhdGVkKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChmaWxlLWRpcmVjdG9yeS1wIGZpbGUpKQogICAgICAgICAgICAgICAg ICh3YXRjaC1kaXIgZmlsZSkpKQogICAgICAgICAgICAgICgoZXEgYWN0aW9uICdyZW5hbWVkKQog ICAgICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRlc2MgJ2RlbGV0ZWQgLGZpbGUpKQogICAg ICAgICAgICAgICAoaGFuZGxlLWV2ZW50IGAoLGRlc2MgJ2NyZWF0ZWQgLGZpbGUxKSkpKSkpCiAg ICAgICAgICh3YXRjaC1kaXIgKGRpcikKICAgICAgICAgICAod2hlbi1sZXQgKChwcm9iZQogICAg ICAgICAgICAgICAgICAgICAgIChhbmQgKGZpbGUtcmVhZGFibGUtcCBkaXIpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAob3IgKGdldGhhc2ggZGlyIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNl cnZlcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggZGlyIChsaXN0 IChmaWxlLW5vdGlmeS1hZGQtd2F0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRpciAnKGNoYW5nZSkgIydoYW5kbGUtZXZlbnQpKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNl cnZlcikpKSkpKQogICAgICAgICAgICAgKHB1c2ggaWQgKGNkciBwcm9iZSkpKSkpCiAgICAgICh1 bndpbmQtcHJvdGVjdAogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChtYXBjICMnd2F0Y2gt ZGlyIGRpcnMtdG8td2F0Y2gpCiAgICAgICAgICAgIChzZXRxCiAgICAgICAgICAgICBzdWNjZXNz CiAgICAgICAgICAgICBgKDptZXNzYWdlICwoZm9ybWF0ICJPSywgd2F0Y2hpbmcgJXMgZGlyZWN0 b3JpZXMgaW4gJXMgd2F0Y2hlcnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs ZW5ndGggZGlycy10by13YXRjaCkgKGxlbmd0aCB3YXRjaGVycykpKSkpCiAgICAgICAgKHVubGVz cyBzdWNjZXNzCiAgICAgICAgICAoZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5IHNlcnZlciBt ZXRob2QgaWQpKSkpKSkKCihjbC1kZWZtZXRob2QgZWdsb3QtdW5yZWdpc3Rlci1jYXBhYmlsaXR5 CiAgKHNlcnZlciAoX21ldGhvZCAoZXFsIHdvcmtzcGFjZS9kaWRDaGFuZ2VXYXRjaGVkRmlsZXMp KSBpZCkKICAiSGFuZGxlIGR5bmFtaWMgdW5yZWdpc3RyYXRpb24gb2Ygd29ya3NwYWNlL2RpZENo YW5nZVdhdGNoZWRGaWxlcy4iCiAgKG1hcGhhc2ggKGxhbWJkYSAoZGlyIHdhdGNoLWFuZC1pZHMp CiAgICAgICAgICAgICAoc2V0Y2RyIHdhdGNoLWFuZC1pZHMgKGRlbGV0ZSBpZCAoY2RyIHdhdGNo LWFuZC1pZHMpKSkKICAgICAgICAgICAgICh3aGVuIChudWxsIChjZHIgd2F0Y2gtYW5kLWlkcykp CiAgICAgICAgICAgICAgIChmaWxlLW5vdGlmeS1ybS13YXRjaCAoY2FyIHdhdGNoLWFuZC1pZHMp KQogICAgICAgICAgICAgICAocmVtaGFzaCBkaXIgKGVnbG90LS1maWxlLXdhdGNoZXMgc2VydmVy KSkpKQogICAgICAgICAgIChlZ2xvdC0tZmlsZS13YXRjaGVzIHNlcnZlcikpCiAgKGxpc3QgdCAi T0siKSkKCgwKOzs7IEdsb2IgaGVyb2ljcwo7OzsKKGRlZnVuIGVnbG90LS1nbG9iLXBhcnNlIChn bG9iKQogICJDb21wdXRlIGxpc3Qgb2YgKFNUQVRFLVNZTSBFTUlUVEVSLUZOIFBBVFRFUk4pLiIK ICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgZ2xvYikpCiAg ICAoY2wtbG9vcAogICAgIHdpdGggZ3JhbW1hciA9ICcoKDoqKiAgICAgICJcXCpcXCovPyIgICAg ICAgICAgICAgIGVnbG90LS1nbG9iLWVtaXQtKiopCiAgICAgICAgICAgICAgICAgICAgICAoOiog ICAgICAgIlxcKiIgICAgICAgICAgICAgICAgICAgZWdsb3QtLWdsb2ItZW1pdC0qKQogICAgICAg ICAgICAgICAgICAgICAgKDo/ICAgICAgICJcXD8iICAgICAgICAgICAgICAgICAgIGVnbG90LS1n bG9iLWVtaXQtPykKICAgICAgICAgICAgICAgICAgICAgICg6e30gICAgICAie1teXVsqe31dK30i ICAgICAgICAgICBlZ2xvdC0tZ2xvYi1lbWl0LXt9KQogICAgICAgICAgICAgICAgICAgICAgKDpy YW5nZSAgICJcXFtcXF4/W15dWy8sKnt9XStcXF0iIGVnbG90LS1nbG9iLWVtaXQtcmFuZ2UpCiAg ICAgICAgICAgICAgICAgICAgICAoOmxpdGVyYWwgIlteXVssKj97fV0rIiAgICAgICAgICAgZWds b3QtLWdsb2ItZW1pdC1zZWxmKSkKICAgICB1bnRpbCAoZW9icCkKICAgICBjb2xsZWN0IChjbC1s b29wCiAgICAgICAgICAgICAgZm9yIChfdG9rZW4gcmVnZXhwIGVtaXR0ZXIpIGluIGdyYW1tYXIK ICAgICAgICAgICAgICB0aGVyZWlzIChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQgIlxc PSIgcmVnZXhwKSBuaWwgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGNsLWdl bnN5bSAic3RhdGUtIikgZW1pdHRlciAobWF0Y2gtc3RyaW5nIDApKSkKICAgICAgICAgICAgICBm aW5hbGx5IChlcnJvciAiR2xvYiAnJXMnIGludmFsaWQgYXQgJXMiIChidWZmZXItc3RyaW5nKSAo cG9pbnQpKSkpKSkKCihkZWZ1biBlZ2xvdC0tZ2xvYi1jb21waWxlIChnbG9iICZvcHRpb25hbCBi eXRlLWNvbXBpbGUgbm9lcnJvcikKICAiQ29udmVydCBHTE9CIGludG8gRWxpc3AgZnVuY3Rpb24u ICBNYXliZSBCWVRFLUNPTVBJTEUgaXQuCklmIE5PRVJST1IsIHJldHVybiBwcmVkaWNhdGUsIGVs c2UgZXJyb3JpbmcgZnVuY3Rpb24uIgogIChsZXQqICgoc3RhdGVzIChlZ2xvdC0tZ2xvYi1wYXJz ZSBnbG9iKSkKICAgICAgICAgKGJvZHkgYCh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVy LWNyZWF0ZSAiICplZ2xvdC1nbG9iLW1hdGNoZXIqIikKICAgICAgICAgICAgICAgICAgKGVyYXNl LWJ1ZmZlcikKICAgICAgICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uIChpbnNlcnQgc3RyaW5n KSkKICAgICAgICAgICAgICAgICAgKGNsLWxhYmVscyAsKGNsLWxvb3AgZm9yICh0aGlzIHRoYXQp IG9uIHN0YXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHNl bGYgZW1pdCB0ZXh0KSA9IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIG5leHQgPSAob3IgKGNhciB0aGF0KSAnZW9icCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29sbGVjdCAoZnVuY2FsbCBlbWl0IHRleHQgc2VsZiBuZXh0KSkK ICAgICAgICAgICAgICAgICAgICAob3IgKCwoY2FhciBzdGF0ZXMpKQogICAgICAgICAgICAgICAg ICAgICAgICAoZXJyb3IgIkdsb2IgZG9uZSBidXQgbW9yZSB1bm1hdGNoZWQgdGV4dDogJyVzJyIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nIChwb2ludCkg KHBvaW50LW1heCkpKSkpKSkKICAgICAgICAgKGZvcm0gYChsYW1iZGEgKHN0cmluZykgLChpZiBu b2Vycm9yIGAoaWdub3JlLWVycm9ycyAsYm9keSkgYm9keSkpKSkKICAgIChpZiBieXRlLWNvbXBp bGUgKGJ5dGUtY29tcGlsZSBmb3JtKSBmb3JtKSkpCgooZGVmdW4gZWdsb3QtLWdsb2ItZW1pdC1z ZWxmICh0ZXh0IHNlbGYgbmV4dCkKICBgKCxzZWxmICgpIChyZS1zZWFyY2gtZm9yd2FyZCAsKGNv bmNhdCAiXFw9IiAocmVnZXhwLXF1b3RlIHRleHQpKSkgKCxuZXh0KSkpCgooZGVmdW4gZWdsb3Qt LWdsb2ItZW1pdC0qKiAoXyBzZWxmIG5leHQpCiAgYCgsc2VsZiAoKSAob3IgKGlnbm9yZS1lcnJv cnMgKHNhdmUtZXhjdXJzaW9uICgsbmV4dCkpKQogICAgICAgICAgICAgICAgIChhbmQgKHJlLXNl YXJjaC1mb3J3YXJkICJcXD0vP1teL10rLz8iKSAoLHNlbGYpKSkpKQoKKGRlZnVuIGVnbG90LS1n bG9iLWVtaXQtKiAoXyBzZWxmIG5leHQpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQg IlxcPVteL10iKQogICAgICAgICAgKG9yIChpZ25vcmUtZXJyb3JzIChzYXZlLWV4Y3Vyc2lvbiAo LG5leHQpKSkgKCxzZWxmKSkpKQoKKGRlZnVuIGVnbG90LS1nbG9iLWVtaXQtPyAoXyBzZWxmIG5l eHQpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQgIlxcPVteL10iKSAoLG5leHQpKSkK CihkZWZ1biBlZ2xvdC0tZ2xvYi1lbWl0LXt9IChhcmcgc2VsZiBuZXh0KQogIChsZXQgKChhbHRl cm5hdGl2ZXMgKHNwbGl0LXN0cmluZyAoc3Vic3RyaW5nIGFyZyAxICgxLSAobGVuZ3RoIGFyZykp KSAiLCIpKSkKICAgIGAoLHNlbGYgKCkKICAgICAgICAgICAgKG9yIChyZS1zZWFyY2gtZm9yd2Fy ZCAsKGNvbmNhdCAiXFw9IiAocmVnZXhwLW9wdCBhbHRlcm5hdGl2ZXMpKSBuaWwgdCkKICAgICAg ICAgICAgICAgIChlcnJvciAiRmFpbGVkIG1hdGNoaW5nIGFueSBvZiAlcyIgJyxhbHRlcm5hdGl2 ZXMpKQogICAgICAgICAgICAoLG5leHQpKSkpCgooZGVmdW4gZWdsb3QtLWdsb2ItZW1pdC1yYW5n ZSAoYXJnIHNlbGYgbmV4dCkKICAod2hlbiAoZXEgPyEgKGFyZWYgYXJnIDEpKSAoYXNldCBhcmcg MSA/XikpCiAgYCgsc2VsZiAoKSAocmUtc2VhcmNoLWZvcndhcmQgLChjb25jYXQgIlxcPSIgYXJn KSkgKCxuZXh0KSkpCgoMCjs7OyBMaXN0IGNvbm5lY3Rpb25zIG1vZGUKCihkZWZpbmUtZGVyaXZl ZC1tb2RlIGVnbG90LWxpc3QtY29ubmVjdGlvbnMtbW9kZSAgdGFidWxhdGVkLWxpc3QtbW9kZQog ICIiICJFZ2xvdCBtb2RlIGZvciBsaXN0aW5nIHNlcnZlciBjb25uZWN0aW9ucwpcXHtlZ2xvdC1s aXN0LWNvbm5lY3Rpb25zLW1vZGUtbWFwfSIKICAoc2V0cS1sb2NhbCB0YWJ1bGF0ZWQtbGlzdC1m b3JtYXQKICAgICAgICAgICAgICBgWygiTGFuZ3VhZ2Ugc2VydmVyIiAxNikgKCJQcm9qZWN0IG5h bWUiIDE2KSAoIk1vZGVzIGhhbmRsZWQiIDE2KV0pCiAgKHRhYnVsYXRlZC1saXN0LWluaXQtaGVh ZGVyKSkKCihkZWZ1biBlZ2xvdC1saXN0LWNvbm5lY3Rpb25zICgpCiAgIkxpc3QgY3VycmVudGx5 IGFjdGl2ZSBFZ2xvdCBjb25uZWN0aW9ucy4iCiAgKGludGVyYWN0aXZlKQogICh3aXRoLWN1cnJl bnQtYnVmZmVyCiAgICAgIChnZXQtYnVmZmVyLWNyZWF0ZSAiKkVHTE9UIGNvbm5lY3Rpb25zKiIp CiAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkgdCkpCiAgICAgIChlcmFzZS1idWZmZXIpCiAg ICAgIChlZ2xvdC1saXN0LWNvbm5lY3Rpb25zLW1vZGUpCiAgICAgIChzZXRxLWxvY2FsIHRhYnVs YXRlZC1saXN0LWVudHJpZXMKICAgICAgICAgICAgICAgICAgKG1hcGNhcgogICAgICAgICAgICAg ICAgICAgKGxhbWJkYSAoc2VydmVyKQogICAgICAgICAgICAgICAgICAgICAobGlzdCBzZXJ2ZXIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgYFssKG9yIChwbGlzdC1nZXQgKGVnbG90LS1zZXJ2 ZXItaW5mbyBzZXJ2ZXIpIDpuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGpzb25ycGMtbmFtZSBzZXJ2ZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoZWds b3QtcHJvamVjdC1uaWNrbmFtZSBzZXJ2ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LChtYXBjb25jYXQgIydzeW1ib2wtbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChlZ2xvdC0tbWFqb3ItbW9kZXMgc2VydmVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICIsICIpXSkpCiAgICAgICAgICAgICAgICAgICAoY2wtcmVk dWNlICMnYXBwZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNoLXRhYmxlLXZh bHVlcyBlZ2xvdC0tc2VydmVycy1ieS1wcm9qZWN0KSkpKQogICAgICAocmV2ZXJ0LWJ1ZmZlcikK ICAgICAgKHBvcC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpKSkKCgwKOzs7IElubGF5IGhp bnRzCihkZWZmYWNlIGVnbG90LWlubGF5LWhpbnQtZmFjZSAnKCh0ICg6aGVpZ2h0IDAuOCA6aW5o ZXJpdCBzaGFkb3cpKSkKICAiRmFjZSB1c2VkIGZvciBpbmxheSBoaW50IG92ZXJsYXlzLiIpCgoo ZGVmZmFjZSBlZ2xvdC10eXBlLWhpbnQtZmFjZSAnKCh0ICg6aW5oZXJpdCBlZ2xvdC1pbmxheS1o aW50LWZhY2UpKSkKICAiRmFjZSB1c2VkIGZvciB0eXBlIGlubGF5IGhpbnQgb3ZlcmxheXMuIikK CihkZWZmYWNlIGVnbG90LXBhcmFtZXRlci1oaW50LWZhY2UgJygodCAoOmluaGVyaXQgZWdsb3Qt aW5sYXktaGludC1mYWNlKSkpCiAgIkZhY2UgdXNlZCBmb3IgcGFyYW1ldGVyIGlubGF5IGhpbnQg b3ZlcmxheXMuIikKCihkZWZ2YXItbG9jYWwgZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRz LXJlZ2lvbiAoY29ucyBuaWwgbmlsKQogICJKaXQtbG9jay1jYWxjdWxhdGVkIChGUk9NIC4gVE8p IHJlZ2lvbiB3aXRoIHBvdGVudGlhbGx5IG91dGRhdGVkIGhpbnRzIikKCihkZWZ2YXItbG9jYWwg ZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRzLWxhc3QtcmVnaW9uIG5pbCkKCihkZWZ2YXIt bG9jYWwgZWdsb3QtLW91dHN0YW5kaW5nLWlubGF5LXJlZ2lvbnMtdGltZXIgbmlsCiAgIkhlbHBl ciB0aW1lciBmb3IgYGVnbG90LS11cGRhdGUtaGludHMnIikKCihkZWZ1biBlZ2xvdC0tdXBkYXRl LWhpbnRzIChmcm9tIHRvKQogICJKaXQtbG9jayBmdW5jdGlvbiBmb3IgRWdsb3QgaW5sYXkgaGlu dHMuIgogIChjbC1zeW1ib2wtbWFjcm9sZXQgKChyZWdpb24gZWdsb3QtLW91dHN0YW5kaW5nLWlu bGF5LWhpbnRzLXJlZ2lvbikKICAgICAgICAgICAgICAgICAgICAgICAobGFzdC1yZWdpb24gZWds b3QtLW91dHN0YW5kaW5nLWlubGF5LWhpbnRzLWxhc3QtcmVnaW9uKQogICAgICAgICAgICAgICAg ICAgICAgICh0aW1lciBlZ2xvdC0tb3V0c3RhbmRpbmctaW5sYXktcmVnaW9ucy10aW1lcikpCiAg ICAoc2V0Y2FyIHJlZ2lvbiAobWluIChvciAoY2FyIHJlZ2lvbikgKHBvaW50LW1heCkpIGZyb20p KQogICAgKHNldGNkciByZWdpb24gKG1heCAob3IgKGNkciByZWdpb24pIChwb2ludC1taW4pKSB0 bykpCiAgICA7OyBIQUNLOiBXZSdyZSByZWx5aW5nIG9uIGtub3dsZWRnZSBvZiBqaXQtbG9jayBp bnRlcm5hbHMgaGVyZS4gIFRoZQogICAgOzsgY29uZGl0aW9uIGNvbXBhcmluZyBgaml0LWxvY2st Y29udGV4dC11bmZvbnRpZnktcG9zJyB0bwogICAgOzsgYHBvaW50LW1heCcgaXMgYSBoZXVyaXN0 aWMgZm9yIHRlbGxpbmcgd2hldGhlciB0aGlzIGNhbGwgdG8KICAgIDs7IGBqaXQtbG9jay1mdW5j dGlvbnMnIGhhcHBlbnMgYWZ0ZXIgYGppdC1sb2NrLWNvbnRleHQtdGltZXInIGhhcwogICAgOzsg anVzdCBydW4uICBPbmx5IGFmdGVyIHRoaXMgZGVsYXkgc2hvdWxkIHdlIHN0YXJ0IHRoZSBzbW9v dGhpbmcKICAgIDs7IHRpbWVyIHRoYXQgd2lsbCBldmVudHVhbGx5IGNhbGwgYGVnbG90LS11cGRh dGUtaGludHMtMScgd2l0aCB0aGUKICAgIDs7IGNvYWxlc2NlZCByZWdpb24uICBJIHdpc2ggd2Ug ZGlkbid0IG5lZWQgdGhlIHRpbWVyLCBidXQgc29tZXRpbWVzCiAgICA7OyBhIGxvdCBvZiAibm9u LWNvbnRleHR1YWwiIGNhbGxzIGNvbWUgaW4gYWxsIGF0IG9uY2UgYW5kIGRvIHZlcmlmeQogICAg OzsgdGhlIGNvbmRpdGlvbi4gIE5vdGljZSBpdCBpcyBhIDAgc2Vjb25kIHRpbWVyIHRob3VnaCwg c28gd2UncmUKICAgIDs7IG5vdCBpbnRyb2R1Y2luZyBhbnkgbW9yZSBkZWxheSBvdmVyIGppdC1s b2NrJ3MgdGltZXJzLgogICAgKHdoZW4gKD0gaml0LWxvY2stY29udGV4dC11bmZvbnRpZnktcG9z IChwb2ludC1tYXgpKQogICAgICAoaWYgdGltZXIgKGNhbmNlbC10aW1lciB0aW1lcikpCiAgICAg IChsZXQgKChidWYgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAgICAgKHNldHEgdGltZXIgKHJ1bi1h dC10aW1lCiAgICAgICAgICAgICAgICAgICAgIDAgbmlsCiAgICAgICAgICAgICAgICAgICAgIChs YW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdoZW4tbGl2ZS1idWZmZXIg YnVmCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBIQUNLOiBJbiBzb21lIHBhdGhvbG9naWNh bCBzaXR1YXRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoRW1hY3MncyBvd24gY29k aW5nLmMsIGZvciBleGFtcGxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGppdC1sb2Nr IGlzIGNhbGxpbmcgYGVnbG90LS11cGRhdGUtaGludHMnCiAgICAgICAgICAgICAgICAgICAgICAg ICA7OyByZXBlYXRlZGx5IHdpdGggc2FtZSBzZXF1ZW5jZSBvZgogICAgICAgICAgICAgICAgICAg ICAgICAgOzsgYXJndW1lbnRzLCB3aGljaCBsZWFkcyB0bwogICAgICAgICAgICAgICAgICAgICAg ICAgOzsgYGVnbG90LS11cGRhdGUtaGludHMtMScgYmVpbmcgY2FsbGVkIHdpdGgKICAgICAgICAg ICAgICAgICAgICAgICAgIDs7IHRoZSBzYW1lIHJlZ2lvbiByZXBlYXRlZGx5LiAgVGhpcyBoYXBw ZW5zCiAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVuIGlmIHRoZSBoaW50LXBhaW50aW5n IGNvZGUgZG9lcwogICAgICAgICAgICAgICAgICAgICAgICAgOzsgbm90aGluZyBlbHNlIG90aGVy IHRoYW4gd2lkZW4sIG5hcnJvdywKICAgICAgICAgICAgICAgICAgICAgICAgIDs7IG1vdmUgcG9p bnQgdGhlbiByZXN0b3JlIHRoZXNlIHRoaW5ncy4KICAgICAgICAgICAgICAgICAgICAgICAgIDs7 IFBvc3NpYmxlIEVtYWNzIGJ1ZywgYnV0IHRoaXMgZml4ZXMgaXQuCiAgICAgICAgICAgICAgICAg ICAgICAgICAodW5sZXNzIChlcXVhbCBsYXN0LXJlZ2lvbiByZWdpb24pCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlZ2xvdC0tdXBkYXRlLWhpbnRzLTEgKG1heCAoY2FyIHJlZ2lvbikgKHBv aW50LW1pbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1pbiAoY2RyIHJlZ2lvbikgKHBvaW50LW1heCkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBsYXN0LXJlZ2lvbiByZWdpb24pKQogICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgcmVnaW9uIChjb25zIG5pbCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aW1lciBuaWwpKSkpKSkpKSkKCihkZWZ1biBlZ2xvdC0tdXBkYXRlLWhpbnRzLTEgKGZyb20g dG8pCiAgIkRvIG1vc3Qgd29yayBmb3IgYGVnbG90LS11cGRhdGUtaGludHMnLCBpbmNsdWRpbmcg TFNQIHJlcXVlc3QuIgogIChsZXQqICgoYnVmIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgIChw YWludC1oaW50CiAgICAgICAgICAoZWdsb3QtLWxhbWJkYSAoKElubGF5SGludCkgcG9zaXRpb24g a2luZCBsYWJlbCBwYWRkaW5nTGVmdCBwYWRkaW5nUmlnaHQpCiAgICAgICAgICAgIChnb3RvLWNo YXIgKGVnbG90LS1sc3AtcG9zaXRpb24tdG8tcG9pbnQgcG9zaXRpb24pKQogICAgICAgICAgICAo d2hlbiAob3IgKD4gKHBvaW50KSB0bykgKDwgKHBvaW50KSBmcm9tKSkgKGNsLXJldHVybikpCiAg ICAgICAgICAgIChsZXQqICgobGVmdC1wYWQgKGFuZCBwYWRkaW5nTGVmdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZXEgcGFkZGluZ0xlZnQgOmpzb24tZmFsc2UpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobWVtcSAoY2hhci1iZWZvcmUp ICcoMzIgOSkpKSAiICIpKQogICAgICAgICAgICAgICAgICAgKHJpZ2h0LXBhZCAoYW5kIHBhZGRp bmdSaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVxIHBhZGRp bmdSaWdodCA6anNvbi1mYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAobWVtcSAoY2hhci1hZnRlcikgJygzMiA5KSkpICIgIikpCiAgICAgICAgICAgICAgICAg ICAocGVnLWFmdGVyLXAgKGVxbCBraW5kIDEpKSkKICAgICAgICAgICAgICAoY2wtbGFiZWxzCiAg ICAgICAgICAgICAgICAgICgobWFrZS1vdiAoKQogICAgICAgICAgICAgICAgICAgICAoaWYgcGVn LWFmdGVyLXAKICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtlLW92ZXJsYXkgKHBvaW50KSAo MSsgKHBvaW50KSkgbmlsIHQpCiAgICAgICAgICAgICAgICAgICAgICAgKG1ha2Utb3ZlcmxheSAo MS0gKHBvaW50KSkgKHBvaW50KSBuaWwgbmlsIG5pbCkpKQogICAgICAgICAgICAgICAgICAgKGRv LWl0IChsYWJlbCBscGFkIHJwYWQgaSBuKQogICAgICAgICAgICAgICAgICAgICAobGV0KiAoKGZp cnN0cCAoemVyb3AgaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHdlYWstY3Vyc29y LXAgKGFuZCBmaXJzdHAgcGVnLWFmdGVyLXApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg KG92IChtYWtlLW92KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0IChjb25jYXQg bHBhZCBsYWJlbCBycGFkKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gdHdlYWstY3Vy c29yLXAgKHB1dC10ZXh0LXByb3BlcnR5IDAgMSAnY3Vyc29yIDEgdGV4dCkpCiAgICAgICAgICAg ICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92IChpZiBwZWctYWZ0ZXItcCAnYmVmb3JlLXN0cmlu ZyAnYWZ0ZXItc3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJv cGVydGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhY2UgKHBjYXNlIGtpbmQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgJ2VnbG90LXR5cGUtaGludC1m YWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMiAnZWds b3QtcGFyYW1ldGVyLWhpbnQtZmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKF8gJ2VnbG90LWlubGF5LWhpbnQtZmFjZSkpKSkKICAgICAgICAgICAgICAg ICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ3ByaW9yaXR5IChpZiBwZWctYWZ0ZXItcCBpICgtIG4g aSkpKQogICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZWdsb3QtLWlubGF5 LWhpbnQgdCkKICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2V2YXBvcmF0 ZSB0KQogICAgICAgICAgICAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdiAnZWdsb3QtLW92ZXJs YXkgdCkpKSkKICAgICAgICAgICAgICAgIChpZiAoc3RyaW5ncCBsYWJlbCkgKGRvLWl0IGxhYmVs IGxlZnQtcGFkIHJpZ2h0LXBhZCAwIDEpCiAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAg ICAgICAgICAgICAgICBmb3IgaSBmcm9tIDAgZm9yIGxkZXRhaWwgYWNyb3NzIGxhYmVsCiAgICAg ICAgICAgICAgICAgICBkbyAoZWdsb3QtLWRiaW5kICgoSW5sYXlIaW50TGFiZWxQYXJ0KSB2YWx1 ZSkgbGRldGFpbAogICAgICAgICAgICAgICAgICAgICAgICAoZG8taXQgdmFsdWUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHplcm9wIGkpIGxlZnQtcGFkKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGFuZCAoPSBpICgxLSAobGVuZ3RoIGxhYmVsKSkpIHJpZ2h0 LXBhZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKGxlbmd0aCBsYWJlbCkpKSkp KSkpKSkKICAgIChqc29ucnBjLWFzeW5jLXJlcXVlc3QKICAgICAoZWdsb3QtLWN1cnJlbnQtc2Vy dmVyLW9yLWxvc2UpCiAgICAgOnRleHREb2N1bWVudC9pbmxheUhpbnQKICAgICAobGlzdCA6dGV4 dERvY3VtZW50IChlZ2xvdC0tVGV4dERvY3VtZW50SWRlbnRpZmllcikKICAgICAgICAgICA6cmFu Z2UgKGxpc3QgOnN0YXJ0IChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiBmcm9tKQogICAgICAg ICAgICAgICAgICAgICAgICA6ZW5kIChlZ2xvdC0tcG9zLXRvLWxzcC1wb3NpdGlvbiB0bykpKQog ICAgIDpzdWNjZXNzLWZuIChsYW1iZGEgKGhpbnRzKQogICAgICAgICAgICAgICAgICAgKGVnbG90 LS13aGVuLWxpdmUtYnVmZmVyIGJ1ZgogICAgICAgICAgICAgICAgICAgICAoZWdsb3QtLXdpZGVu aW5nCiAgICAgICAgICAgICAgICAgICAgICA7OyBPdmVybGF5cyBlbmRpbmcgcmlnaHQgYXQgRlJP TSB3aXRoIGFuCiAgICAgICAgICAgICAgICAgICAgICA7OyBgYWZ0ZXItc3RyaW5nJyBwcm9wZXJ0 eSBsb2dpY2FsbHkgYmVsb25nIHRvCiAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgKEZST00g VE8pIHJlZ2lvbi4gIExpa2V3aXNlLCBzdWNoCiAgICAgICAgICAgICAgICAgICAgICA7OyBvdmVy bGF5cyBlbmRpbmcgYXQgVE8gZG9uJ3QgbG9naWNhbGx5IGJlbG9uZwogICAgICAgICAgICAgICAg ICAgICAgOzsgdG8gaXQuCiAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChvIChvdmVybGF5 cy1pbiAoMS0gZnJvbSkgdG8pKQogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiAoYW5kIChv dmVybGF5LWdldCBvICdlZ2xvdC0taW5sYXktaGludCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY29uZCAoKGVxIChvdmVybGF5LWVuZCBvKSBmcm9tKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1nZXQgbyAnYWZ0ZXItc3RyaW5n KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGVxIChvdmVybGF5 LWVuZCBvKSB0bykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG92 ZXJsYXktZ2V0IG8gJ2JlZm9yZS1zdHJpbmcpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZS1vdmVy bGF5IG8pKSkKICAgICAgICAgICAgICAgICAgICAgIChtYXBjIHBhaW50LWhpbnQgaGludHMpKSkp CiAgICAgOmRlZmVycmVkICdlZ2xvdC0tdXBkYXRlLWhpbnRzLTEpKSkKCihkZWZpbmUtbWlub3It bW9kZSBlZ2xvdC1pbmxheS1oaW50cy1tb2RlCiAgIk1pbm9yIG1vZGUgZm9yIGFubm90YXRpbmcg YnVmZmVycyB3aXRoIExTUCBzZXJ2ZXIncyBpbmxheSBoaW50cy4iCiAgOmdsb2JhbCBuaWwKICAo Y29uZCAoZWdsb3QtaW5sYXktaGludHMtbW9kZQogICAgICAgICAoaWYgKGVnbG90LXNlcnZlci1j YXBhYmxlIDppbmxheUhpbnRQcm92aWRlcikKICAgICAgICAgICAgIChqaXQtbG9jay1yZWdpc3Rl ciAjJ2VnbG90LS11cGRhdGUtaGludHMgJ2NvbnRleHR1YWwpCiAgICAgICAgICAgKGVnbG90LWlu bGF5LWhpbnRzLW1vZGUgLTEpKSkKICAgICAgICAodAogICAgICAgICAoaml0LWxvY2stdW5yZWdp c3RlciAjJ2VnbG90LS11cGRhdGUtaGludHMpCiAgICAgICAgIChyZW1vdmUtb3ZlcmxheXMgbmls IG5pbCAnZWdsb3QtLWlubGF5LWhpbnQgdCkpKSkKCgwKOzs7IEhhY2tzCjs7Owo7OyBFbWFjcyBi dWcjNTY0MDcsIHRoZSBvcHRpbWFsIHNvbHV0aW9uIGlzIGluIGRlc2t0b3AuZWwsIGJ1dCB0aGF0 J3MKOzsgaGFyZGVyLiBGb3Igbm93LCB1c2UgYHdpdGgtZXZhbC1hZnRlci1sb2FkJy4gU2VlIGFs c28gZ2l0aHViIzExODMuCih3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZGVza3RvcAogIChhZGQtdG8t bGlzdCAnZGVza3RvcC1taW5vci1tb2RlLWhhbmRsZXJzICcoZWdsb3QtLW1hbmFnZWQtbW9kZSAu IGlnbm9yZSkpCiAgKGFkZC10by1saXN0ICdkZXNrdG9wLW1pbm9yLW1vZGUtaGFuZGxlcnMgJyhl Z2xvdC1pbmxheS1oaW50cy1tb2RlIC4gaWdub3JlKSkpCgoMCjs7OyBNaXNjCjs7Owo7OzsjIyNh dXRvbG9hZAoocHJvZ24KICAocHV0ICdlZ2xvdC0tZGViYnVncy1vci1naXRodWItYnVnLXVyaSAn YnVnLXJlZmVyZW5jZS11cmwtZm9ybWF0IHQpCiAgKGRlZnVuIGVnbG90LS1kZWJidWdzLW9yLWdp dGh1Yi1idWctdXJpICgpCiAgICAoZm9ybWF0IChpZiAoc3RyaW5nPSAobWF0Y2gtc3RyaW5nIDIp ICJnaXRodWIiKQogICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvdGF2b3Jh L2VnbG90L2lzc3Vlcy8lcyIKICAgICAgICAgICAgICAiaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcv JXMiKQogICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDMpKSkpCgoocHJvdmlkZSAnZWdsb3QpCgoK OzsgTG9jYWwgVmFyaWFibGVzOgo7OyBidWctcmVmZXJlbmNlLWJ1Zy1yZWdleHA6ICJcXChcXChn aXRodWJcXHxidWdcXCkjXFwoWzAtOV0rXFwpXFwpIgo7OyBidWctcmVmZXJlbmNlLXVybC1mb3Jt YXQ6IGVnbG90LS1kZWJidWdzLW9yLWdpdGh1Yi1idWctdXJpCjs7IGNoZWNrZG9jLWZvcmNlLWRv Y3N0cmluZ3MtZmxhZzogbmlsCjs7IEVuZDoKCjs7OyBlZ2xvdC5lbCBlbmRzIGhlcmUKAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVnbG90LTEuMTcvZG9jbGljZW5zZS50ZXhpAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDA1NTYxMgAxNDU2NjYxMzM2NAAw MTUxNDIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIg IABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAQGMgVGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZS4KQGNlbnRlciBWZXJzaW9uIDEuMywgMyBOb3ZlbWJlciAyMDA4CgpAYyBUaGlzIGZpbGUgaXMg aW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgd2l0aGluIGFub3RoZXIgZG9jdW1lbnQsCkBjIGhlbmNl IG5vIHNlY3Rpb25pbmcgY29tbWFuZCBvciBAbm9kZS4KCkBkaXNwbGF5CkNvcHlyaWdodCBAY29w eXJpZ2h0e30gMjAwMCwgMjAwMSwgMjAwMiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KQHVyZWZ7aHR0cHM6Ly9mc2Yub3JnL30KCkV2ZXJ5b25lIGlzIHBlcm1pdHRl ZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwpvZiB0aGlzIGxpY2Vuc2Ug ZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KQGVuZCBkaXNwbGF5CgpA ZW51bWVyYXRlIDAKQGl0ZW0KUFJFQU1CTEUKClRoZSBwdXJwb3NlIG9mIHRoaXMgTGljZW5zZSBp cyB0byBtYWtlIGEgbWFudWFsLCB0ZXh0Ym9vaywgb3Igb3RoZXIKZnVuY3Rpb25hbCBhbmQgdXNl ZnVsIGRvY3VtZW50IEBkZm57ZnJlZX0gaW4gdGhlIHNlbnNlIG9mIGZyZWVkb206IHRvCmFzc3Vy ZSBldmVyeW9uZSB0aGUgZWZmZWN0aXZlIGZyZWVkb20gdG8gY29weSBhbmQgcmVkaXN0cmlidXRl IGl0LAp3aXRoIG9yIHdpdGhvdXQgbW9kaWZ5aW5nIGl0LCBlaXRoZXIgY29tbWVyY2lhbGx5IG9y IG5vbmNvbW1lcmNpYWxseS4KU2Vjb25kYXJpbHksIHRoaXMgTGljZW5zZSBwcmVzZXJ2ZXMgZm9y IHRoZSBhdXRob3IgYW5kIHB1Ymxpc2hlciBhIHdheQp0byBnZXQgY3JlZGl0IGZvciB0aGVpciB3 b3JrLCB3aGlsZSBub3QgYmVpbmcgY29uc2lkZXJlZCByZXNwb25zaWJsZQpmb3IgbW9kaWZpY2F0 aW9ucyBtYWRlIGJ5IG90aGVycy4KClRoaXMgTGljZW5zZSBpcyBhIGtpbmQgb2YgYGBjb3B5bGVm dCcnLCB3aGljaCBtZWFucyB0aGF0IGRlcml2YXRpdmUKd29ya3Mgb2YgdGhlIGRvY3VtZW50IG11 c3QgdGhlbXNlbHZlcyBiZSBmcmVlIGluIHRoZSBzYW1lIHNlbnNlLiAgSXQKY29tcGxlbWVudHMg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aGljaCBpcyBhIGNvcHlsZWZ0CmxpY2Vu c2UgZGVzaWduZWQgZm9yIGZyZWUgc29mdHdhcmUuCgpXZSBoYXZlIGRlc2lnbmVkIHRoaXMgTGlj ZW5zZSBpbiBvcmRlciB0byB1c2UgaXQgZm9yIG1hbnVhbHMgZm9yIGZyZWUKc29mdHdhcmUsIGJl Y2F1c2UgZnJlZSBzb2Z0d2FyZSBuZWVkcyBmcmVlIGRvY3VtZW50YXRpb246IGEgZnJlZQpwcm9n cmFtIHNob3VsZCBjb21lIHdpdGggbWFudWFscyBwcm92aWRpbmcgdGhlIHNhbWUgZnJlZWRvbXMg dGhhdCB0aGUKc29mdHdhcmUgZG9lcy4gIEJ1dCB0aGlzIExpY2Vuc2UgaXMgbm90IGxpbWl0ZWQg dG8gc29mdHdhcmUgbWFudWFsczsKaXQgY2FuIGJlIHVzZWQgZm9yIGFueSB0ZXh0dWFsIHdvcmss IHJlZ2FyZGxlc3Mgb2Ygc3ViamVjdCBtYXR0ZXIgb3IKd2hldGhlciBpdCBpcyBwdWJsaXNoZWQg YXMgYSBwcmludGVkIGJvb2suICBXZSByZWNvbW1lbmQgdGhpcyBMaWNlbnNlCnByaW5jaXBhbGx5 IGZvciB3b3JrcyB3aG9zZSBwdXJwb3NlIGlzIGluc3RydWN0aW9uIG9yIHJlZmVyZW5jZS4KCkBp dGVtCkFQUExJQ0FCSUxJVFkgQU5EIERFRklOSVRJT05TCgpUaGlzIExpY2Vuc2UgYXBwbGllcyB0 byBhbnkgbWFudWFsIG9yIG90aGVyIHdvcmssIGluIGFueSBtZWRpdW0sIHRoYXQKY29udGFpbnMg YSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBjYW4gYmUK ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4gIFN1Y2ggYSBub3Rp Y2UgZ3JhbnRzIGEKd29ybGQtd2lkZSwgcm95YWx0eS1mcmVlIGxpY2Vuc2UsIHVubGltaXRlZCBp biBkdXJhdGlvbiwgdG8gdXNlIHRoYXQKd29yayB1bmRlciB0aGUgY29uZGl0aW9ucyBzdGF0ZWQg aGVyZWluLiAgVGhlIGBgRG9jdW1lbnQnJywgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBtYW51 YWwgb3Igd29yay4gIEFueSBtZW1iZXIgb2YgdGhlIHB1YmxpYyBpcyBhCmxpY2Vuc2VlLCBhbmQg aXMgYWRkcmVzc2VkIGFzIGBgeW91JycuICBZb3UgYWNjZXB0IHRoZSBsaWNlbnNlIGlmIHlvdQpj b3B5LCBtb2RpZnkgb3IgZGlzdHJpYnV0ZSB0aGUgd29yayBpbiBhIHdheSByZXF1aXJpbmcgcGVy bWlzc2lvbgp1bmRlciBjb3B5cmlnaHQgbGF3LgoKQSBgYE1vZGlmaWVkIFZlcnNpb24nJyBvZiB0 aGUgRG9jdW1lbnQgbWVhbnMgYW55IHdvcmsgY29udGFpbmluZyB0aGUKRG9jdW1lbnQgb3IgYSBw b3J0aW9uIG9mIGl0LCBlaXRoZXIgY29waWVkIHZlcmJhdGltLCBvciB3aXRoCm1vZGlmaWNhdGlv bnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyIGxhbmd1YWdlLgoKQSBgYFNlY29uZGFy eSBTZWN0aW9uJycgaXMgYSBuYW1lZCBhcHBlbmRpeCBvciBhIGZyb250LW1hdHRlciBzZWN0aW9u Cm9mIHRoZSBEb2N1bWVudCB0aGF0IGRlYWxzIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIHJlbGF0aW9u c2hpcCBvZiB0aGUKcHVibGlzaGVycyBvciBhdXRob3JzIG9mIHRoZSBEb2N1bWVudCB0byB0aGUg RG9jdW1lbnQncyBvdmVyYWxsCnN1YmplY3QgKG9yIHRvIHJlbGF0ZWQgbWF0dGVycykgYW5kIGNv bnRhaW5zIG5vdGhpbmcgdGhhdCBjb3VsZCBmYWxsCmRpcmVjdGx5IHdpdGhpbiB0aGF0IG92ZXJh bGwgc3ViamVjdC4gIChUaHVzLCBpZiB0aGUgRG9jdW1lbnQgaXMgaW4KcGFydCBhIHRleHRib29r IG9mIG1hdGhlbWF0aWNzLCBhIFNlY29uZGFyeSBTZWN0aW9uIG1heSBub3QgZXhwbGFpbgphbnkg bWF0aGVtYXRpY3MuKSAgVGhlIHJlbGF0aW9uc2hpcCBjb3VsZCBiZSBhIG1hdHRlciBvZiBoaXN0 b3JpY2FsCmNvbm5lY3Rpb24gd2l0aCB0aGUgc3ViamVjdCBvciB3aXRoIHJlbGF0ZWQgbWF0dGVy cywgb3Igb2YgbGVnYWwsCmNvbW1lcmNpYWwsIHBoaWxvc29waGljYWwsIGV0aGljYWwgb3IgcG9s aXRpY2FsIHBvc2l0aW9uIHJlZ2FyZGluZwp0aGVtLgoKVGhlIGBgSW52YXJpYW50IFNlY3Rpb25z JycgYXJlIGNlcnRhaW4gU2Vjb25kYXJ5IFNlY3Rpb25zIHdob3NlIHRpdGxlcwphcmUgZGVzaWdu YXRlZCwgYXMgYmVpbmcgdGhvc2Ugb2YgSW52YXJpYW50IFNlY3Rpb25zLCBpbiB0aGUgbm90aWNl CnRoYXQgc2F5cyB0aGF0IHRoZSBEb2N1bWVudCBpcyByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBJZiBhCnNlY3Rpb24gZG9lcyBub3QgZml0IHRoZSBhYm92ZSBkZWZpbml0aW9uIG9mIFNl Y29uZGFyeSB0aGVuIGl0IGlzIG5vdAphbGxvd2VkIHRvIGJlIGRlc2lnbmF0ZWQgYXMgSW52YXJp YW50LiAgVGhlIERvY3VtZW50IG1heSBjb250YWluIHplcm8KSW52YXJpYW50IFNlY3Rpb25zLiAg SWYgdGhlIERvY3VtZW50IGRvZXMgbm90IGlkZW50aWZ5IGFueSBJbnZhcmlhbnQKU2VjdGlvbnMg dGhlbiB0aGVyZSBhcmUgbm9uZS4KClRoZSBgYENvdmVyIFRleHRzJycgYXJlIGNlcnRhaW4gc2hv cnQgcGFzc2FnZXMgb2YgdGV4dCB0aGF0IGFyZSBsaXN0ZWQsCmFzIEZyb250LUNvdmVyIFRleHRz IG9yIEJhY2stQ292ZXIgVGV4dHMsIGluIHRoZSBub3RpY2UgdGhhdCBzYXlzIHRoYXQKdGhlIERv Y3VtZW50IGlzIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEEgRnJvbnQtQ292ZXIgVGV4 dCBtYXkKYmUgYXQgbW9zdCA1IHdvcmRzLCBhbmQgYSBCYWNrLUNvdmVyIFRleHQgbWF5IGJlIGF0 IG1vc3QgMjUgd29yZHMuCgpBIGBgVHJhbnNwYXJlbnQnJyBjb3B5IG9mIHRoZSBEb2N1bWVudCBt ZWFucyBhIG1hY2hpbmUtcmVhZGFibGUgY29weSwKcmVwcmVzZW50ZWQgaW4gYSBmb3JtYXQgd2hv c2Ugc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlCmdlbmVyYWwgcHVibGljLCB0aGF0 IGlzIHN1aXRhYmxlIGZvciByZXZpc2luZyB0aGUgZG9jdW1lbnQKc3RyYWlnaHRmb3J3YXJkbHkg d2l0aCBnZW5lcmljIHRleHQgZWRpdG9ycyBvciAoZm9yIGltYWdlcyBjb21wb3NlZCBvZgpwaXhl bHMpIGdlbmVyaWMgcGFpbnQgcHJvZ3JhbXMgb3IgKGZvciBkcmF3aW5ncykgc29tZSB3aWRlbHkg YXZhaWxhYmxlCmRyYXdpbmcgZWRpdG9yLCBhbmQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgaW5wdXQg dG8gdGV4dCBmb3JtYXR0ZXJzIG9yCmZvciBhdXRvbWF0aWMgdHJhbnNsYXRpb24gdG8gYSB2YXJp ZXR5IG9mIGZvcm1hdHMgc3VpdGFibGUgZm9yIGlucHV0CnRvIHRleHQgZm9ybWF0dGVycy4gIEEg Y29weSBtYWRlIGluIGFuIG90aGVyd2lzZSBUcmFuc3BhcmVudCBmaWxlCmZvcm1hdCB3aG9zZSBt YXJrdXAsIG9yIGFic2VuY2Ugb2YgbWFya3VwLCBoYXMgYmVlbiBhcnJhbmdlZCB0byB0aHdhcnQK b3IgZGlzY291cmFnZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBieSByZWFkZXJzIGlzIG5vdCBU cmFuc3BhcmVudC4KQW4gaW1hZ2UgZm9ybWF0IGlzIG5vdCBUcmFuc3BhcmVudCBpZiB1c2VkIGZv ciBhbnkgc3Vic3RhbnRpYWwgYW1vdW50Cm9mIHRleHQuICBBIGNvcHkgdGhhdCBpcyBub3QgYGBU cmFuc3BhcmVudCcnIGlzIGNhbGxlZCBgYE9wYXF1ZScnLgoKRXhhbXBsZXMgb2Ygc3VpdGFibGUg Zm9ybWF0cyBmb3IgVHJhbnNwYXJlbnQgY29waWVzIGluY2x1ZGUgcGxhaW4KQVNDSUkgd2l0aG91 dCBtYXJrdXAsIFRleGluZm8gaW5wdXQgZm9ybWF0LCBMYUBUZVh7fSBpbnB1dApmb3JtYXQsIFNH TUwgb3IgWE1MIHVzaW5nIGEgcHVibGljbHkgYXZhaWxhYmxlCkRURCwgYW5kIHN0YW5kYXJkLWNv bmZvcm1pbmcgc2ltcGxlIEhUTUwsClBvc3RTY3JpcHQgb3IgUERGIGRlc2lnbmVkIGZvciBodW1h biBtb2RpZmljYXRpb24uICBFeGFtcGxlcwpvZiB0cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzIGlu Y2x1ZGUgUE5HLCBYQ0YgYW5kCkpQR0AuICBPcGFxdWUgZm9ybWF0cyBpbmNsdWRlIHByb3ByaWV0 YXJ5IGZvcm1hdHMgdGhhdCBjYW4gYmUKcmVhZCBhbmQgZWRpdGVkIG9ubHkgYnkgcHJvcHJpZXRh cnkgd29yZCBwcm9jZXNzb3JzLCBTR01MIG9yClhNTCBmb3Igd2hpY2ggdGhlIERURCBhbmQvb3Ig cHJvY2Vzc2luZyB0b29scyBhcmUKbm90IGdlbmVyYWxseSBhdmFpbGFibGUsIGFuZCB0aGUgbWFj aGluZS1nZW5lcmF0ZWQgSFRNTCwKUG9zdFNjcmlwdCBvciBQREYgcHJvZHVjZWQgYnkgc29tZSB3 b3JkIHByb2Nlc3NvcnMgZm9yCm91dHB1dCBwdXJwb3NlcyBvbmx5LgoKVGhlIGBgVGl0bGUgUGFn ZScnIG1lYW5zLCBmb3IgYSBwcmludGVkIGJvb2ssIHRoZSB0aXRsZSBwYWdlIGl0c2VsZiwKcGx1 cyBzdWNoIGZvbGxvd2luZyBwYWdlcyBhcyBhcmUgbmVlZGVkIHRvIGhvbGQsIGxlZ2libHksIHRo ZSBtYXRlcmlhbAp0aGlzIExpY2Vuc2UgcmVxdWlyZXMgdG8gYXBwZWFyIGluIHRoZSB0aXRsZSBw YWdlLiAgRm9yIHdvcmtzIGluCmZvcm1hdHMgd2hpY2ggZG8gbm90IGhhdmUgYW55IHRpdGxlIHBh Z2UgYXMgc3VjaCwgYGBUaXRsZSBQYWdlJycgbWVhbnMKdGhlIHRleHQgbmVhciB0aGUgbW9zdCBw cm9taW5lbnQgYXBwZWFyYW5jZSBvZiB0aGUgd29yaydzIHRpdGxlLApwcmVjZWRpbmcgdGhlIGJl Z2lubmluZyBvZiB0aGUgYm9keSBvZiB0aGUgdGV4dC4KClRoZSBgYHB1Ymxpc2hlcicnIG1lYW5z IGFueSBwZXJzb24gb3IgZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgY29waWVzCm9mIHRoZSBEb2N1 bWVudCB0byB0aGUgcHVibGljLgoKQSBzZWN0aW9uIGBgRW50aXRsZWQgWFlaJycgbWVhbnMgYSBu YW1lZCBzdWJ1bml0IG9mIHRoZSBEb2N1bWVudCB3aG9zZQp0aXRsZSBlaXRoZXIgaXMgcHJlY2lz ZWx5IFhZWiBvciBjb250YWlucyBYWVogaW4gcGFyZW50aGVzZXMgZm9sbG93aW5nCnRleHQgdGhh dCB0cmFuc2xhdGVzIFhZWiBpbiBhbm90aGVyIGxhbmd1YWdlLiAgKEhlcmUgWFlaIHN0YW5kcyBm b3IgYQpzcGVjaWZpYyBzZWN0aW9uIG5hbWUgbWVudGlvbmVkIGJlbG93LCBzdWNoIGFzIGBgQWNr bm93bGVkZ2VtZW50cycnLApgYERlZGljYXRpb25zJycsIGBgRW5kb3JzZW1lbnRzJycsIG9yIGBg SGlzdG9yeScnLikgIFRvIGBgUHJlc2VydmUgdGhlIFRpdGxlJycKb2Ygc3VjaCBhIHNlY3Rpb24g d2hlbiB5b3UgbW9kaWZ5IHRoZSBEb2N1bWVudCBtZWFucyB0aGF0IGl0IHJlbWFpbnMgYQpzZWN0 aW9uIGBgRW50aXRsZWQgWFlaJycgYWNjb3JkaW5nIHRvIHRoaXMgZGVmaW5pdGlvbi4KClRoZSBE b2N1bWVudCBtYXkgaW5jbHVkZSBXYXJyYW50eSBEaXNjbGFpbWVycyBuZXh0IHRvIHRoZSBub3Rp Y2Ugd2hpY2gKc3RhdGVzIHRoYXQgdGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gdGhlIERvY3VtZW50 LiAgVGhlc2UgV2FycmFudHkKRGlzY2xhaW1lcnMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgaW5jbHVk ZWQgYnkgcmVmZXJlbmNlIGluIHRoaXMKTGljZW5zZSwgYnV0IG9ubHkgYXMgcmVnYXJkcyBkaXNj bGFpbWluZyB3YXJyYW50aWVzOiBhbnkgb3RoZXIKaW1wbGljYXRpb24gdGhhdCB0aGVzZSBXYXJy YW50eSBEaXNjbGFpbWVycyBtYXkgaGF2ZSBpcyB2b2lkIGFuZCBoYXMKbm8gZWZmZWN0IG9uIHRo ZSBtZWFuaW5nIG9mIHRoaXMgTGljZW5zZS4KCkBpdGVtClZFUkJBVElNIENPUFlJTkcKCllvdSBt YXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQgaW4gYW55IG1lZGl1bSwgZWl0aGVy CmNvbW1lcmNpYWxseSBvciBub25jb21tZXJjaWFsbHksIHByb3ZpZGVkIHRoYXQgdGhpcyBMaWNl bnNlLCB0aGUKY29weXJpZ2h0IG5vdGljZXMsIGFuZCB0aGUgbGljZW5zZSBub3RpY2Ugc2F5aW5n IHRoaXMgTGljZW5zZSBhcHBsaWVzCnRvIHRoZSBEb2N1bWVudCBhcmUgcmVwcm9kdWNlZCBpbiBh bGwgY29waWVzLCBhbmQgdGhhdCB5b3UgYWRkIG5vIG90aGVyCmNvbmRpdGlvbnMgd2hhdHNvZXZl ciB0byB0aG9zZSBvZiB0aGlzIExpY2Vuc2UuICBZb3UgbWF5IG5vdCB1c2UKdGVjaG5pY2FsIG1l YXN1cmVzIHRvIG9ic3RydWN0IG9yIGNvbnRyb2wgdGhlIHJlYWRpbmcgb3IgZnVydGhlcgpjb3B5 aW5nIG9mIHRoZSBjb3BpZXMgeW91IG1ha2Ugb3IgZGlzdHJpYnV0ZS4gIEhvd2V2ZXIsIHlvdSBt YXkgYWNjZXB0CmNvbXBlbnNhdGlvbiBpbiBleGNoYW5nZSBmb3IgY29waWVzLiAgSWYgeW91IGRp c3RyaWJ1dGUgYSBsYXJnZSBlbm91Z2gKbnVtYmVyIG9mIGNvcGllcyB5b3UgbXVzdCBhbHNvIGZv bGxvdyB0aGUgY29uZGl0aW9ucyBpbiBzZWN0aW9uIDMuCgpZb3UgbWF5IGFsc28gbGVuZCBjb3Bp ZXMsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgc3RhdGVkIGFib3ZlLCBhbmQKeW91IG1heSBw dWJsaWNseSBkaXNwbGF5IGNvcGllcy4KCkBpdGVtCkNPUFlJTkcgSU4gUVVBTlRJVFkKCklmIHlv dSBwdWJsaXNoIHByaW50ZWQgY29waWVzIChvciBjb3BpZXMgaW4gbWVkaWEgdGhhdCBjb21tb25s eSBoYXZlCnByaW50ZWQgY292ZXJzKSBvZiB0aGUgRG9jdW1lbnQsIG51bWJlcmluZyBtb3JlIHRo YW4gMTAwLCBhbmQgdGhlCkRvY3VtZW50J3MgbGljZW5zZSBub3RpY2UgcmVxdWlyZXMgQ292ZXIg VGV4dHMsIHlvdSBtdXN0IGVuY2xvc2UgdGhlCmNvcGllcyBpbiBjb3ZlcnMgdGhhdCBjYXJyeSwg Y2xlYXJseSBhbmQgbGVnaWJseSwgYWxsIHRoZXNlIENvdmVyClRleHRzOiBGcm9udC1Db3ZlciBU ZXh0cyBvbiB0aGUgZnJvbnQgY292ZXIsIGFuZCBCYWNrLUNvdmVyIFRleHRzIG9uCnRoZSBiYWNr IGNvdmVyLiAgQm90aCBjb3ZlcnMgbXVzdCBhbHNvIGNsZWFybHkgYW5kIGxlZ2libHkgaWRlbnRp ZnkKeW91IGFzIHRoZSBwdWJsaXNoZXIgb2YgdGhlc2UgY29waWVzLiAgVGhlIGZyb250IGNvdmVy IG11c3QgcHJlc2VudAp0aGUgZnVsbCB0aXRsZSB3aXRoIGFsbCB3b3JkcyBvZiB0aGUgdGl0bGUg ZXF1YWxseSBwcm9taW5lbnQgYW5kCnZpc2libGUuICBZb3UgbWF5IGFkZCBvdGhlciBtYXRlcmlh bCBvbiB0aGUgY292ZXJzIGluIGFkZGl0aW9uLgpDb3B5aW5nIHdpdGggY2hhbmdlcyBsaW1pdGVk IHRvIHRoZSBjb3ZlcnMsIGFzIGxvbmcgYXMgdGhleSBwcmVzZXJ2ZQp0aGUgdGl0bGUgb2YgdGhl IERvY3VtZW50IGFuZCBzYXRpc2Z5IHRoZXNlIGNvbmRpdGlvbnMsIGNhbiBiZSB0cmVhdGVkCmFz IHZlcmJhdGltIGNvcHlpbmcgaW4gb3RoZXIgcmVzcGVjdHMuCgpJZiB0aGUgcmVxdWlyZWQgdGV4 dHMgZm9yIGVpdGhlciBjb3ZlciBhcmUgdG9vIHZvbHVtaW5vdXMgdG8gZml0CmxlZ2libHksIHlv dSBzaG91bGQgcHV0IHRoZSBmaXJzdCBvbmVzIGxpc3RlZCAoYXMgbWFueSBhcyBmaXQKcmVhc29u YWJseSkgb24gdGhlIGFjdHVhbCBjb3ZlciwgYW5kIGNvbnRpbnVlIHRoZSByZXN0IG9udG8gYWRq YWNlbnQKcGFnZXMuCgpJZiB5b3UgcHVibGlzaCBvciBkaXN0cmlidXRlIE9wYXF1ZSBjb3BpZXMg b2YgdGhlIERvY3VtZW50IG51bWJlcmluZwptb3JlIHRoYW4gMTAwLCB5b3UgbXVzdCBlaXRoZXIg aW5jbHVkZSBhIG1hY2hpbmUtcmVhZGFibGUgVHJhbnNwYXJlbnQKY29weSBhbG9uZyB3aXRoIGVh Y2ggT3BhcXVlIGNvcHksIG9yIHN0YXRlIGluIG9yIHdpdGggZWFjaCBPcGFxdWUgY29weQphIGNv bXB1dGVyLW5ldHdvcmsgbG9jYXRpb24gZnJvbSB3aGljaCB0aGUgZ2VuZXJhbCBuZXR3b3JrLXVz aW5nCnB1YmxpYyBoYXMgYWNjZXNzIHRvIGRvd25sb2FkIHVzaW5nIHB1YmxpYy1zdGFuZGFyZCBu ZXR3b3JrIHByb3RvY29scwphIGNvbXBsZXRlIFRyYW5zcGFyZW50IGNvcHkgb2YgdGhlIERvY3Vt ZW50LCBmcmVlIG9mIGFkZGVkIG1hdGVyaWFsLgpJZiB5b3UgdXNlIHRoZSBsYXR0ZXIgb3B0aW9u LCB5b3UgbXVzdCB0YWtlIHJlYXNvbmFibHkgcHJ1ZGVudCBzdGVwcywKd2hlbiB5b3UgYmVnaW4g ZGlzdHJpYnV0aW9uIG9mIE9wYXF1ZSBjb3BpZXMgaW4gcXVhbnRpdHksIHRvIGVuc3VyZQp0aGF0 IHRoaXMgVHJhbnNwYXJlbnQgY29weSB3aWxsIHJlbWFpbiB0aHVzIGFjY2Vzc2libGUgYXQgdGhl IHN0YXRlZApsb2NhdGlvbiB1bnRpbCBhdCBsZWFzdCBvbmUgeWVhciBhZnRlciB0aGUgbGFzdCB0 aW1lIHlvdSBkaXN0cmlidXRlIGFuCk9wYXF1ZSBjb3B5IChkaXJlY3RseSBvciB0aHJvdWdoIHlv dXIgYWdlbnRzIG9yIHJldGFpbGVycykgb2YgdGhhdAplZGl0aW9uIHRvIHRoZSBwdWJsaWMuCgpJ dCBpcyByZXF1ZXN0ZWQsIGJ1dCBub3QgcmVxdWlyZWQsIHRoYXQgeW91IGNvbnRhY3QgdGhlIGF1 dGhvcnMgb2YgdGhlCkRvY3VtZW50IHdlbGwgYmVmb3JlIHJlZGlzdHJpYnV0aW5nIGFueSBsYXJn ZSBudW1iZXIgb2YgY29waWVzLCB0byBnaXZlCnRoZW0gYSBjaGFuY2UgdG8gcHJvdmlkZSB5b3Ug d2l0aCBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIERvY3VtZW50LgoKQGl0ZW0KTU9ESUZJQ0FU SU9OUwoKWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIGEgTW9kaWZpZWQgVmVyc2lvbiBvZiB0 aGUgRG9jdW1lbnQgdW5kZXIKdGhlIGNvbmRpdGlvbnMgb2Ygc2VjdGlvbnMgMiBhbmQgMyBhYm92 ZSwgcHJvdmlkZWQgdGhhdCB5b3UgcmVsZWFzZQp0aGUgTW9kaWZpZWQgVmVyc2lvbiB1bmRlciBw cmVjaXNlbHkgdGhpcyBMaWNlbnNlLCB3aXRoIHRoZSBNb2RpZmllZApWZXJzaW9uIGZpbGxpbmcg dGhlIHJvbGUgb2YgdGhlIERvY3VtZW50LCB0aHVzIGxpY2Vuc2luZyBkaXN0cmlidXRpb24KYW5k IG1vZGlmaWNhdGlvbiBvZiB0aGUgTW9kaWZpZWQgVmVyc2lvbiB0byB3aG9ldmVyIHBvc3Nlc3Nl cyBhIGNvcHkKb2YgaXQuICBJbiBhZGRpdGlvbiwgeW91IG11c3QgZG8gdGhlc2UgdGhpbmdzIGlu IHRoZSBNb2RpZmllZCBWZXJzaW9uOgoKQGVudW1lcmF0ZSBBCkBpdGVtClVzZSBpbiB0aGUgVGl0 bGUgUGFnZSAoYW5kIG9uIHRoZSBjb3ZlcnMsIGlmIGFueSkgYSB0aXRsZSBkaXN0aW5jdApmcm9t IHRoYXQgb2YgdGhlIERvY3VtZW50LCBhbmQgZnJvbSB0aG9zZSBvZiBwcmV2aW91cyB2ZXJzaW9u cwood2hpY2ggc2hvdWxkLCBpZiB0aGVyZSB3ZXJlIGFueSwgYmUgbGlzdGVkIGluIHRoZSBIaXN0 b3J5IHNlY3Rpb24Kb2YgdGhlIERvY3VtZW50KS4gIFlvdSBtYXkgdXNlIHRoZSBzYW1lIHRpdGxl IGFzIGEgcHJldmlvdXMgdmVyc2lvbgppZiB0aGUgb3JpZ2luYWwgcHVibGlzaGVyIG9mIHRoYXQg dmVyc2lvbiBnaXZlcyBwZXJtaXNzaW9uLgoKQGl0ZW0KTGlzdCBvbiB0aGUgVGl0bGUgUGFnZSwg YXMgYXV0aG9ycywgb25lIG9yIG1vcmUgcGVyc29ucyBvciBlbnRpdGllcwpyZXNwb25zaWJsZSBm b3IgYXV0aG9yc2hpcCBvZiB0aGUgbW9kaWZpY2F0aW9ucyBpbiB0aGUgTW9kaWZpZWQKVmVyc2lv biwgdG9nZXRoZXIgd2l0aCBhdCBsZWFzdCBmaXZlIG9mIHRoZSBwcmluY2lwYWwgYXV0aG9ycyBv ZiB0aGUKRG9jdW1lbnQgKGFsbCBvZiBpdHMgcHJpbmNpcGFsIGF1dGhvcnMsIGlmIGl0IGhhcyBm ZXdlciB0aGFuIGZpdmUpLAp1bmxlc3MgdGhleSByZWxlYXNlIHlvdSBmcm9tIHRoaXMgcmVxdWly ZW1lbnQuCgpAaXRlbQpTdGF0ZSBvbiB0aGUgVGl0bGUgcGFnZSB0aGUgbmFtZSBvZiB0aGUgcHVi bGlzaGVyIG9mIHRoZQpNb2RpZmllZCBWZXJzaW9uLCBhcyB0aGUgcHVibGlzaGVyLgoKQGl0ZW0K UHJlc2VydmUgYWxsIHRoZSBjb3B5cmlnaHQgbm90aWNlcyBvZiB0aGUgRG9jdW1lbnQuCgpAaXRl bQpBZGQgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBmb3IgeW91ciBtb2RpZmljYXRp b25zCmFkamFjZW50IHRvIHRoZSBvdGhlciBjb3B5cmlnaHQgbm90aWNlcy4KCkBpdGVtCkluY2x1 ZGUsIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb3B5cmlnaHQgbm90aWNlcywgYSBsaWNlbnNlIG5v dGljZQpnaXZpbmcgdGhlIHB1YmxpYyBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgTW9kaWZpZWQgVmVy c2lvbiB1bmRlciB0aGUKdGVybXMgb2YgdGhpcyBMaWNlbnNlLCBpbiB0aGUgZm9ybSBzaG93biBp biB0aGUgQWRkZW5kdW0gYmVsb3cuCgpAaXRlbQpQcmVzZXJ2ZSBpbiB0aGF0IGxpY2Vuc2Ugbm90 aWNlIHRoZSBmdWxsIGxpc3RzIG9mIEludmFyaWFudCBTZWN0aW9ucwphbmQgcmVxdWlyZWQgQ292 ZXIgVGV4dHMgZ2l2ZW4gaW4gdGhlIERvY3VtZW50J3MgbGljZW5zZSBub3RpY2UuCgpAaXRlbQpJ bmNsdWRlIGFuIHVuYWx0ZXJlZCBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCkBpdGVtClByZXNlcnZl IHRoZSBzZWN0aW9uIEVudGl0bGVkIGBgSGlzdG9yeScnLCBQcmVzZXJ2ZSBpdHMgVGl0bGUsIGFu ZCBhZGQKdG8gaXQgYW4gaXRlbSBzdGF0aW5nIGF0IGxlYXN0IHRoZSB0aXRsZSwgeWVhciwgbmV3 IGF1dGhvcnMsIGFuZApwdWJsaXNoZXIgb2YgdGhlIE1vZGlmaWVkIFZlcnNpb24gYXMgZ2l2ZW4g b24gdGhlIFRpdGxlIFBhZ2UuICBJZgp0aGVyZSBpcyBubyBzZWN0aW9uIEVudGl0bGVkIGBgSGlz dG9yeScnIGluIHRoZSBEb2N1bWVudCwgY3JlYXRlIG9uZQpzdGF0aW5nIHRoZSB0aXRsZSwgeWVh ciwgYXV0aG9ycywgYW5kIHB1Ymxpc2hlciBvZiB0aGUgRG9jdW1lbnQgYXMKZ2l2ZW4gb24gaXRz IFRpdGxlIFBhZ2UsIHRoZW4gYWRkIGFuIGl0ZW0gZGVzY3JpYmluZyB0aGUgTW9kaWZpZWQKVmVy c2lvbiBhcyBzdGF0ZWQgaW4gdGhlIHByZXZpb3VzIHNlbnRlbmNlLgoKQGl0ZW0KUHJlc2VydmUg dGhlIG5ldHdvcmsgbG9jYXRpb24sIGlmIGFueSwgZ2l2ZW4gaW4gdGhlIERvY3VtZW50IGZvcgpw dWJsaWMgYWNjZXNzIHRvIGEgVHJhbnNwYXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGFuZCBs aWtld2lzZQp0aGUgbmV0d29yayBsb2NhdGlvbnMgZ2l2ZW4gaW4gdGhlIERvY3VtZW50IGZvciBw cmV2aW91cyB2ZXJzaW9ucwppdCB3YXMgYmFzZWQgb24uICBUaGVzZSBtYXkgYmUgcGxhY2VkIGlu IHRoZSBgYEhpc3RvcnknJyBzZWN0aW9uLgpZb3UgbWF5IG9taXQgYSBuZXR3b3JrIGxvY2F0aW9u IGZvciBhIHdvcmsgdGhhdCB3YXMgcHVibGlzaGVkIGF0CmxlYXN0IGZvdXIgeWVhcnMgYmVmb3Jl IHRoZSBEb2N1bWVudCBpdHNlbGYsIG9yIGlmIHRoZSBvcmlnaW5hbApwdWJsaXNoZXIgb2YgdGhl IHZlcnNpb24gaXQgcmVmZXJzIHRvIGdpdmVzIHBlcm1pc3Npb24uCgpAaXRlbQpGb3IgYW55IHNl Y3Rpb24gRW50aXRsZWQgYGBBY2tub3dsZWRnZW1lbnRzJycgb3IgYGBEZWRpY2F0aW9ucycnLCBQ cmVzZXJ2ZQp0aGUgVGl0bGUgb2YgdGhlIHNlY3Rpb24sIGFuZCBwcmVzZXJ2ZSBpbiB0aGUgc2Vj dGlvbiBhbGwgdGhlCnN1YnN0YW5jZSBhbmQgdG9uZSBvZiBlYWNoIG9mIHRoZSBjb250cmlidXRv ciBhY2tub3dsZWRnZW1lbnRzIGFuZC9vcgpkZWRpY2F0aW9ucyBnaXZlbiB0aGVyZWluLgoKQGl0 ZW0KUHJlc2VydmUgYWxsIHRoZSBJbnZhcmlhbnQgU2VjdGlvbnMgb2YgdGhlIERvY3VtZW50LAp1 bmFsdGVyZWQgaW4gdGhlaXIgdGV4dCBhbmQgaW4gdGhlaXIgdGl0bGVzLiAgU2VjdGlvbiBudW1i ZXJzCm9yIHRoZSBlcXVpdmFsZW50IGFyZSBub3QgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzZWN0 aW9uIHRpdGxlcy4KCkBpdGVtCkRlbGV0ZSBhbnkgc2VjdGlvbiBFbnRpdGxlZCBgYEVuZG9yc2Vt ZW50cycnLiAgU3VjaCBhIHNlY3Rpb24KbWF5IG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgTW9kaWZp ZWQgVmVyc2lvbi4KCkBpdGVtCkRvIG5vdCByZXRpdGxlIGFueSBleGlzdGluZyBzZWN0aW9uIHRv IGJlIEVudGl0bGVkIGBgRW5kb3JzZW1lbnRzJycgb3IKdG8gY29uZmxpY3QgaW4gdGl0bGUgd2l0 aCBhbnkgSW52YXJpYW50IFNlY3Rpb24uCgpAaXRlbQpQcmVzZXJ2ZSBhbnkgV2FycmFudHkgRGlz Y2xhaW1lcnMuCkBlbmQgZW51bWVyYXRlCgpJZiB0aGUgTW9kaWZpZWQgVmVyc2lvbiBpbmNsdWRl cyBuZXcgZnJvbnQtbWF0dGVyIHNlY3Rpb25zIG9yCmFwcGVuZGljZXMgdGhhdCBxdWFsaWZ5IGFz IFNlY29uZGFyeSBTZWN0aW9ucyBhbmQgY29udGFpbiBubyBtYXRlcmlhbApjb3BpZWQgZnJvbSB0 aGUgRG9jdW1lbnQsIHlvdSBtYXkgYXQgeW91ciBvcHRpb24gZGVzaWduYXRlIHNvbWUgb3IgYWxs Cm9mIHRoZXNlIHNlY3Rpb25zIGFzIGludmFyaWFudC4gIFRvIGRvIHRoaXMsIGFkZCB0aGVpciB0 aXRsZXMgdG8gdGhlCmxpc3Qgb2YgSW52YXJpYW50IFNlY3Rpb25zIGluIHRoZSBNb2RpZmllZCBW ZXJzaW9uJ3MgbGljZW5zZSBub3RpY2UuClRoZXNlIHRpdGxlcyBtdXN0IGJlIGRpc3RpbmN0IGZy b20gYW55IG90aGVyIHNlY3Rpb24gdGl0bGVzLgoKWW91IG1heSBhZGQgYSBzZWN0aW9uIEVudGl0 bGVkIGBgRW5kb3JzZW1lbnRzJycsIHByb3ZpZGVkIGl0IGNvbnRhaW5zCm5vdGhpbmcgYnV0IGVu ZG9yc2VtZW50cyBvZiB5b3VyIE1vZGlmaWVkIFZlcnNpb24gYnkgdmFyaW91cwpwYXJ0aWVzLS0t Zm9yIGV4YW1wbGUsIHN0YXRlbWVudHMgb2YgcGVlciByZXZpZXcgb3IgdGhhdCB0aGUgdGV4dCBo YXMKYmVlbiBhcHByb3ZlZCBieSBhbiBvcmdhbml6YXRpb24gYXMgdGhlIGF1dGhvcml0YXRpdmUg ZGVmaW5pdGlvbiBvZiBhCnN0YW5kYXJkLgoKWW91IG1heSBhZGQgYSBwYXNzYWdlIG9mIHVwIHRv IGZpdmUgd29yZHMgYXMgYSBGcm9udC1Db3ZlciBUZXh0LCBhbmQgYQpwYXNzYWdlIG9mIHVwIHRv IDI1IHdvcmRzIGFzIGEgQmFjay1Db3ZlciBUZXh0LCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Cm9m IENvdmVyIFRleHRzIGluIHRoZSBNb2RpZmllZCBWZXJzaW9uLiAgT25seSBvbmUgcGFzc2FnZSBv ZgpGcm9udC1Db3ZlciBUZXh0IGFuZCBvbmUgb2YgQmFjay1Db3ZlciBUZXh0IG1heSBiZSBhZGRl ZCBieSAob3IKdGhyb3VnaCBhcnJhbmdlbWVudHMgbWFkZSBieSkgYW55IG9uZSBlbnRpdHkuICBJ ZiB0aGUgRG9jdW1lbnQgYWxyZWFkeQppbmNsdWRlcyBhIGNvdmVyIHRleHQgZm9yIHRoZSBzYW1l IGNvdmVyLCBwcmV2aW91c2x5IGFkZGVkIGJ5IHlvdSBvcgpieSBhcnJhbmdlbWVudCBtYWRlIGJ5 IHRoZSBzYW1lIGVudGl0eSB5b3UgYXJlIGFjdGluZyBvbiBiZWhhbGYgb2YsCnlvdSBtYXkgbm90 IGFkZCBhbm90aGVyOyBidXQgeW91IG1heSByZXBsYWNlIHRoZSBvbGQgb25lLCBvbiBleHBsaWNp dApwZXJtaXNzaW9uIGZyb20gdGhlIHByZXZpb3VzIHB1Ymxpc2hlciB0aGF0IGFkZGVkIHRoZSBv bGQgb25lLgoKVGhlIGF1dGhvcihzKSBhbmQgcHVibGlzaGVyKHMpIG9mIHRoZSBEb2N1bWVudCBk byBub3QgYnkgdGhpcyBMaWNlbnNlCmdpdmUgcGVybWlzc2lvbiB0byB1c2UgdGhlaXIgbmFtZXMg Zm9yIHB1YmxpY2l0eSBmb3Igb3IgdG8gYXNzZXJ0IG9yCmltcGx5IGVuZG9yc2VtZW50IG9mIGFu eSBNb2RpZmllZCBWZXJzaW9uLgoKQGl0ZW0KQ09NQklOSU5HIERPQ1VNRU5UUwoKWW91IG1heSBj b21iaW5lIHRoZSBEb2N1bWVudCB3aXRoIG90aGVyIGRvY3VtZW50cyByZWxlYXNlZCB1bmRlciB0 aGlzCkxpY2Vuc2UsIHVuZGVyIHRoZSB0ZXJtcyBkZWZpbmVkIGluIHNlY3Rpb24gNCBhYm92ZSBm b3IgbW9kaWZpZWQKdmVyc2lvbnMsIHByb3ZpZGVkIHRoYXQgeW91IGluY2x1ZGUgaW4gdGhlIGNv bWJpbmF0aW9uIGFsbCBvZiB0aGUKSW52YXJpYW50IFNlY3Rpb25zIG9mIGFsbCBvZiB0aGUgb3Jp Z2luYWwgZG9jdW1lbnRzLCB1bm1vZGlmaWVkLCBhbmQKbGlzdCB0aGVtIGFsbCBhcyBJbnZhcmlh bnQgU2VjdGlvbnMgb2YgeW91ciBjb21iaW5lZCB3b3JrIGluIGl0cwpsaWNlbnNlIG5vdGljZSwg YW5kIHRoYXQgeW91IHByZXNlcnZlIGFsbCB0aGVpciBXYXJyYW50eSBEaXNjbGFpbWVycy4KClRo ZSBjb21iaW5lZCB3b3JrIG5lZWQgb25seSBjb250YWluIG9uZSBjb3B5IG9mIHRoaXMgTGljZW5z ZSwgYW5kCm11bHRpcGxlIGlkZW50aWNhbCBJbnZhcmlhbnQgU2VjdGlvbnMgbWF5IGJlIHJlcGxh Y2VkIHdpdGggYSBzaW5nbGUKY29weS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBJbnZhcmlhbnQg U2VjdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dApkaWZmZXJlbnQgY29udGVudHMsIG1ha2Ug dGhlIHRpdGxlIG9mIGVhY2ggc3VjaCBzZWN0aW9uIHVuaXF1ZSBieQphZGRpbmcgYXQgdGhlIGVu ZCBvZiBpdCwgaW4gcGFyZW50aGVzZXMsIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbAphdXRob3Ig b3IgcHVibGlzaGVyIG9mIHRoYXQgc2VjdGlvbiBpZiBrbm93biwgb3IgZWxzZSBhIHVuaXF1ZSBu dW1iZXIuCk1ha2UgdGhlIHNhbWUgYWRqdXN0bWVudCB0byB0aGUgc2VjdGlvbiB0aXRsZXMgaW4g dGhlIGxpc3Qgb2YKSW52YXJpYW50IFNlY3Rpb25zIGluIHRoZSBsaWNlbnNlIG5vdGljZSBvZiB0 aGUgY29tYmluZWQgd29yay4KCkluIHRoZSBjb21iaW5hdGlvbiwgeW91IG11c3QgY29tYmluZSBh bnkgc2VjdGlvbnMgRW50aXRsZWQgYGBIaXN0b3J5JycKaW4gdGhlIHZhcmlvdXMgb3JpZ2luYWwg ZG9jdW1lbnRzLCBmb3JtaW5nIG9uZSBzZWN0aW9uIEVudGl0bGVkCmBgSGlzdG9yeScnOyBsaWtl d2lzZSBjb21iaW5lIGFueSBzZWN0aW9ucyBFbnRpdGxlZCBgYEFja25vd2xlZGdlbWVudHMnJywK YW5kIGFueSBzZWN0aW9ucyBFbnRpdGxlZCBgYERlZGljYXRpb25zJycuICBZb3UgbXVzdCBkZWxl dGUgYWxsCnNlY3Rpb25zIEVudGl0bGVkIGBgRW5kb3JzZW1lbnRzLicnCgpAaXRlbQpDT0xMRUNU SU9OUyBPRiBET0NVTUVOVFMKCllvdSBtYXkgbWFrZSBhIGNvbGxlY3Rpb24gY29uc2lzdGluZyBv ZiB0aGUgRG9jdW1lbnQgYW5kIG90aGVyIGRvY3VtZW50cwpyZWxlYXNlZCB1bmRlciB0aGlzIExp Y2Vuc2UsIGFuZCByZXBsYWNlIHRoZSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGlzCkxpY2Vuc2Ug aW4gdGhlIHZhcmlvdXMgZG9jdW1lbnRzIHdpdGggYSBzaW5nbGUgY29weSB0aGF0IGlzIGluY2x1 ZGVkIGluCnRoZSBjb2xsZWN0aW9uLCBwcm92aWRlZCB0aGF0IHlvdSBmb2xsb3cgdGhlIHJ1bGVz IG9mIHRoaXMgTGljZW5zZSBmb3IKdmVyYmF0aW0gY29weWluZyBvZiBlYWNoIG9mIHRoZSBkb2N1 bWVudHMgaW4gYWxsIG90aGVyIHJlc3BlY3RzLgoKWW91IG1heSBleHRyYWN0IGEgc2luZ2xlIGRv Y3VtZW50IGZyb20gc3VjaCBhIGNvbGxlY3Rpb24sIGFuZCBkaXN0cmlidXRlCml0IGluZGl2aWR1 YWxseSB1bmRlciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHlvdSBpbnNlcnQgYSBjb3B5IG9mIHRo aXMKTGljZW5zZSBpbnRvIHRoZSBleHRyYWN0ZWQgZG9jdW1lbnQsIGFuZCBmb2xsb3cgdGhpcyBM aWNlbnNlIGluIGFsbApvdGhlciByZXNwZWN0cyByZWdhcmRpbmcgdmVyYmF0aW0gY29weWluZyBv ZiB0aGF0IGRvY3VtZW50LgoKQGl0ZW0KQUdHUkVHQVRJT04gV0lUSCBJTkRFUEVOREVOVCBXT1JL UwoKQSBjb21waWxhdGlvbiBvZiB0aGUgRG9jdW1lbnQgb3IgaXRzIGRlcml2YXRpdmVzIHdpdGgg b3RoZXIgc2VwYXJhdGUKYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3JrcywgaW4gb3Ig b24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yCmRpc3RyaWJ1dGlvbiBtZWRpdW0sIGlzIGNhbGxl ZCBhbiBgYGFnZ3JlZ2F0ZScnIGlmIHRoZSBjb3B5cmlnaHQKcmVzdWx0aW5nIGZyb20gdGhlIGNv bXBpbGF0aW9uIGlzIG5vdCB1c2VkIHRvIGxpbWl0IHRoZSBsZWdhbCByaWdodHMKb2YgdGhlIGNv bXBpbGF0aW9uJ3MgdXNlcnMgYmV5b25kIHdoYXQgdGhlIGluZGl2aWR1YWwgd29ya3MgcGVybWl0 LgpXaGVuIHRoZSBEb2N1bWVudCBpcyBpbmNsdWRlZCBpbiBhbiBhZ2dyZWdhdGUsIHRoaXMgTGlj ZW5zZSBkb2VzIG5vdAphcHBseSB0byB0aGUgb3RoZXIgd29ya3MgaW4gdGhlIGFnZ3JlZ2F0ZSB3 aGljaCBhcmUgbm90IHRoZW1zZWx2ZXMKZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgRG9jdW1lbnQu CgpJZiB0aGUgQ292ZXIgVGV4dCByZXF1aXJlbWVudCBvZiBzZWN0aW9uIDMgaXMgYXBwbGljYWJs ZSB0byB0aGVzZQpjb3BpZXMgb2YgdGhlIERvY3VtZW50LCB0aGVuIGlmIHRoZSBEb2N1bWVudCBp cyBsZXNzIHRoYW4gb25lIGhhbGYgb2YKdGhlIGVudGlyZSBhZ2dyZWdhdGUsIHRoZSBEb2N1bWVu dCdzIENvdmVyIFRleHRzIG1heSBiZSBwbGFjZWQgb24KY292ZXJzIHRoYXQgYnJhY2tldCB0aGUg RG9jdW1lbnQgd2l0aGluIHRoZSBhZ2dyZWdhdGUsIG9yIHRoZQplbGVjdHJvbmljIGVxdWl2YWxl bnQgb2YgY292ZXJzIGlmIHRoZSBEb2N1bWVudCBpcyBpbiBlbGVjdHJvbmljIGZvcm0uCk90aGVy d2lzZSB0aGV5IG11c3QgYXBwZWFyIG9uIHByaW50ZWQgY292ZXJzIHRoYXQgYnJhY2tldCB0aGUg d2hvbGUKYWdncmVnYXRlLgoKQGl0ZW0KVFJBTlNMQVRJT04KClRyYW5zbGF0aW9uIGlzIGNvbnNp ZGVyZWQgYSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgc28geW91IG1heQpkaXN0cmlidXRlIHRyYW5z bGF0aW9ucyBvZiB0aGUgRG9jdW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9mIHNlY3Rpb24gNC4KUmVw bGFjaW5nIEludmFyaWFudCBTZWN0aW9ucyB3aXRoIHRyYW5zbGF0aW9ucyByZXF1aXJlcyBzcGVj aWFsCnBlcm1pc3Npb24gZnJvbSB0aGVpciBjb3B5cmlnaHQgaG9sZGVycywgYnV0IHlvdSBtYXkg aW5jbHVkZQp0cmFuc2xhdGlvbnMgb2Ygc29tZSBvciBhbGwgSW52YXJpYW50IFNlY3Rpb25zIGlu IGFkZGl0aW9uIHRvIHRoZQpvcmlnaW5hbCB2ZXJzaW9ucyBvZiB0aGVzZSBJbnZhcmlhbnQgU2Vj dGlvbnMuICBZb3UgbWF5IGluY2x1ZGUgYQp0cmFuc2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UsIGFu ZCBhbGwgdGhlIGxpY2Vuc2Ugbm90aWNlcyBpbiB0aGUKRG9jdW1lbnQsIGFuZCBhbnkgV2FycmFu dHkgRGlzY2xhaW1lcnMsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gaW5jbHVkZQp0aGUgb3JpZ2lu YWwgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBhbmQgdGhlIG9yaWdpbmFsIHZlcnNp b25zCm9mIHRob3NlIG5vdGljZXMgYW5kIGRpc2NsYWltZXJzLiAgSW4gY2FzZSBvZiBhIGRpc2Fn cmVlbWVudCBiZXR3ZWVuCnRoZSB0cmFuc2xhdGlvbiBhbmQgdGhlIG9yaWdpbmFsIHZlcnNpb24g b2YgdGhpcyBMaWNlbnNlIG9yIGEgbm90aWNlCm9yIGRpc2NsYWltZXIsIHRoZSBvcmlnaW5hbCB2 ZXJzaW9uIHdpbGwgcHJldmFpbC4KCklmIGEgc2VjdGlvbiBpbiB0aGUgRG9jdW1lbnQgaXMgRW50 aXRsZWQgYGBBY2tub3dsZWRnZW1lbnRzJycsCmBgRGVkaWNhdGlvbnMnJywgb3IgYGBIaXN0b3J5 JycsIHRoZSByZXF1aXJlbWVudCAoc2VjdGlvbiA0KSB0byBQcmVzZXJ2ZQppdHMgVGl0bGUgKHNl Y3Rpb24gMSkgd2lsbCB0eXBpY2FsbHkgcmVxdWlyZSBjaGFuZ2luZyB0aGUgYWN0dWFsCnRpdGxl LgoKQGl0ZW0KVEVSTUlOQVRJT04KCllvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5z ZSwgb3IgZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQKZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRl ZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9k aWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIGl0IGlzIHZvaWQsIGFuZAp3aWxsIGF1dG9t YXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KCkhvd2V2 ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3Vy IGxpY2Vuc2UKZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVk IChhKSBwcm92aXNpb25hbGx5LAp1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVy IGV4cGxpY2l0bHkgYW5kIGZpbmFsbHkKdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikg cGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyCmZhaWxzIHRvIG5vdGlmeSB5b3Ug b2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMgcHJpb3IgdG8KNjAgZGF5 cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFy dGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCnJlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhl IGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQp2aW9sYXRpb24gYnkgc29tZSBy ZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCnJlY2VpdmVk IG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20g dGhhdApjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0 byAzMCBkYXlzIGFmdGVyCnlvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgoKVGVybWluYXRpb24g b2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUK bGljZW5zZXMgb2YgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMgb3IgcmlnaHRzIGZy b20geW91IHVuZGVyCnRoaXMgTGljZW5zZS4gIElmIHlvdXIgcmlnaHRzIGhhdmUgYmVlbiB0ZXJt aW5hdGVkIGFuZCBub3QgcGVybWFuZW50bHkKcmVpbnN0YXRlZCwgcmVjZWlwdCBvZiBhIGNvcHkg b2Ygc29tZSBvciBhbGwgb2YgdGhlIHNhbWUgbWF0ZXJpYWwgZG9lcwpub3QgZ2l2ZSB5b3UgYW55 IHJpZ2h0cyB0byB1c2UgaXQuCgpAaXRlbQpGVVRVUkUgUkVWSVNJT05TIE9GIFRISVMgTElDRU5T RQoKVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCBuZXcsIHJldmlzZWQg dmVyc2lvbnMKb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSBmcm9tIHRpbWUg dG8gdGltZS4gIFN1Y2ggbmV3CnZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8g dGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heQpkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3Mg bmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLiAgU2VlCkB1cmVme2h0dHBzOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvfS4KCkVhY2ggdmVyc2lvbiBvZiB0aGUgTGljZW5zZSBpcyBnaXZlbiBhIGRpc3Rp bmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLgpJZiB0aGUgRG9jdW1lbnQgc3BlY2lmaWVzIHRoYXQg YSBwYXJ0aWN1bGFyIG51bWJlcmVkIHZlcnNpb24gb2YgdGhpcwpMaWNlbnNlIGBgb3IgYW55IGxh dGVyIHZlcnNpb24nJyBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mCmZvbGxv d2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgc3BlY2lmaWVkIHZl cnNpb24gb3IKb2YgYW55IGxhdGVyIHZlcnNpb24gdGhhdCBoYXMgYmVlbiBwdWJsaXNoZWQgKG5v dCBhcyBhIGRyYWZ0KSBieSB0aGUKRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIERv Y3VtZW50IGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uCm51bWJlciBvZiB0aGlzIExpY2Vuc2Us IHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIChub3QKYXMgYSBkcmFm dCkgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBEb2N1bWVudApzcGVj aWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlIHZlcnNpb25zIG9mIHRo aXMKTGljZW5zZSBjYW4gYmUgdXNlZCwgdGhhdCBwcm94eSdzIHB1YmxpYyBzdGF0ZW1lbnQgb2Yg YWNjZXB0YW5jZSBvZiBhCnZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UgdG8gY2hv b3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlCkRvY3VtZW50LgoKQGl0ZW0KUkVMSUNFTlNJTkcKCmBg TWFzc2l2ZSBNdWx0aWF1dGhvciBDb2xsYWJvcmF0aW9uIFNpdGUnJyAob3IgYGBNTUMgU2l0ZScn KSBtZWFucyBhbnkKV29ybGQgV2lkZSBXZWIgc2VydmVyIHRoYXQgcHVibGlzaGVzIGNvcHlyaWdo dGFibGUgd29ya3MgYW5kIGFsc28KcHJvdmlkZXMgcHJvbWluZW50IGZhY2lsaXRpZXMgZm9yIGFu eWJvZHkgdG8gZWRpdCB0aG9zZSB3b3Jrcy4gIEEKcHVibGljIHdpa2kgdGhhdCBhbnlib2R5IGNh biBlZGl0IGlzIGFuIGV4YW1wbGUgb2Ygc3VjaCBhIHNlcnZlci4gIEEKYGBNYXNzaXZlIE11bHRp YXV0aG9yIENvbGxhYm9yYXRpb24nJyAob3IgYGBNTUMnJykgY29udGFpbmVkIGluIHRoZQpzaXRl IG1lYW5zIGFueSBzZXQgb2YgY29weXJpZ2h0YWJsZSB3b3JrcyB0aHVzIHB1Ymxpc2hlZCBvbiB0 aGUgTU1DCnNpdGUuCgpgYENDLUJZLVNBJycgbWVhbnMgdGhlIENyZWF0aXZlIENvbW1vbnMgQXR0 cmlidXRpb24tU2hhcmUgQWxpa2UgMy4wCmxpY2Vuc2UgcHVibGlzaGVkIGJ5IENyZWF0aXZlIENv bW1vbnMgQ29ycG9yYXRpb24sIGEgbm90LWZvci1wcm9maXQKY29ycG9yYXRpb24gd2l0aCBhIHBy aW5jaXBhbCBwbGFjZSBvZiBidXNpbmVzcyBpbiBTYW4gRnJhbmNpc2NvLApDYWxpZm9ybmlhLCBh cyB3ZWxsIGFzIGZ1dHVyZSBjb3B5bGVmdCB2ZXJzaW9ucyBvZiB0aGF0IGxpY2Vuc2UKcHVibGlz aGVkIGJ5IHRoYXQgc2FtZSBvcmdhbml6YXRpb24uCgpgYEluY29ycG9yYXRlJycgbWVhbnMgdG8g cHVibGlzaCBvciByZXB1Ymxpc2ggYSBEb2N1bWVudCwgaW4gd2hvbGUgb3IKaW4gcGFydCwgYXMg cGFydCBvZiBhbm90aGVyIERvY3VtZW50LgoKQW4gTU1DIGlzIGBgZWxpZ2libGUgZm9yIHJlbGlj ZW5zaW5nJycgaWYgaXQgaXMgbGljZW5zZWQgdW5kZXIgdGhpcwpMaWNlbnNlLCBhbmQgaWYgYWxs IHdvcmtzIHRoYXQgd2VyZSBmaXJzdCBwdWJsaXNoZWQgdW5kZXIgdGhpcyBMaWNlbnNlCnNvbWV3 aGVyZSBvdGhlciB0aGFuIHRoaXMgTU1DLCBhbmQgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCBp biB3aG9sZQpvciBpbiBwYXJ0IGludG8gdGhlIE1NQywgKDEpIGhhZCBubyBjb3ZlciB0ZXh0cyBv ciBpbnZhcmlhbnQgc2VjdGlvbnMsCmFuZCAoMikgd2VyZSB0aHVzIGluY29ycG9yYXRlZCBwcmlv ciB0byBOb3ZlbWJlciAxLCAyMDA4LgoKVGhlIG9wZXJhdG9yIG9mIGFuIE1NQyBTaXRlIG1heSBy ZXB1Ymxpc2ggYW4gTU1DIGNvbnRhaW5lZCBpbiB0aGUgc2l0ZQp1bmRlciBDQy1CWS1TQSBvbiB0 aGUgc2FtZSBzaXRlIGF0IGFueSB0aW1lIGJlZm9yZSBBdWd1c3QgMSwgMjAwOSwKcHJvdmlkZWQg dGhlIE1NQyBpcyBlbGlnaWJsZSBmb3IgcmVsaWNlbnNpbmcuCgpAZW5kIGVudW1lcmF0ZQoKQHBh Z2UKQGhlYWRpbmcgQURERU5EVU06IEhvdyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRv Y3VtZW50cwoKVG8gdXNlIHRoaXMgTGljZW5zZSBpbiBhIGRvY3VtZW50IHlvdSBoYXZlIHdyaXR0 ZW4sIGluY2x1ZGUgYSBjb3B5IG9mCnRoZSBMaWNlbnNlIGluIHRoZSBkb2N1bWVudCBhbmQgcHV0 IHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZApsaWNlbnNlIG5vdGljZXMganVzdCBhZnRlciB0 aGUgdGl0bGUgcGFnZToKCkBzbWFsbGV4YW1wbGUKQGdyb3VwCiAgQ29weXJpZ2h0IChDKSAgQHZh cnt5ZWFyfSAgQHZhcnt5b3VyIG5hbWV9LgogIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5 LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhpcyBkb2N1bWVudAogIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMwogIG9y IGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOwogIHdpdGggbm8gSW52YXJpYW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywg YW5kIG5vIEJhY2stQ292ZXIKICBUZXh0cy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNs dWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVQogIEZyZWUgRG9jdW1lbnRhdGlvbiBM aWNlbnNlJycuCkBlbmQgZ3JvdXAKQGVuZCBzbWFsbGV4YW1wbGUKCklmIHlvdSBoYXZlIEludmFy aWFudCBTZWN0aW9ucywgRnJvbnQtQ292ZXIgVGV4dHMgYW5kIEJhY2stQ292ZXIgVGV4dHMsCnJl cGxhY2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4nJ0A6IGxpbmUgd2l0aCB0aGlzOgoKQHNtYWxs ZXhhbXBsZQpAZ3JvdXAKICAgIHdpdGggdGhlIEludmFyaWFudCBTZWN0aW9ucyBiZWluZyBAdmFy e2xpc3QgdGhlaXIgdGl0bGVzfSwgd2l0aAogICAgdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5n IEB2YXJ7bGlzdH0sIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzCiAgICBiZWluZyBAdmFy e2xpc3R9LgpAZW5kIGdyb3VwCkBlbmQgc21hbGxleGFtcGxlCgpJZiB5b3UgaGF2ZSBJbnZhcmlh bnQgU2VjdGlvbnMgd2l0aG91dCBDb3ZlciBUZXh0cywgb3Igc29tZSBvdGhlcgpjb21iaW5hdGlv biBvZiB0aGUgdGhyZWUsIG1lcmdlIHRob3NlIHR3byBhbHRlcm5hdGl2ZXMgdG8gc3VpdCB0aGUK c2l0dWF0aW9uLgoKSWYgeW91ciBkb2N1bWVudCBjb250YWlucyBub250cml2aWFsIGV4YW1wbGVz IG9mIHByb2dyYW0gY29kZSwgd2UKcmVjb21tZW5kIHJlbGVhc2luZyB0aGVzZSBleGFtcGxlcyBp biBwYXJhbGxlbCB1bmRlciB5b3VyIGNob2ljZSBvZgpmcmVlIHNvZnR3YXJlIGxpY2Vuc2UsIHN1 Y2ggYXMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAp0byBwZXJtaXQgdGhlaXIgdXNl IGluIGZyZWUgc29mdHdhcmUuCgpAYyBMb2NhbCBWYXJpYWJsZXM6CkBjIGlzcGVsbC1sb2NhbC1w ZGljdDogImlzcGVsbC1kaWN0IgpAYyBFbmQ6CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlZ2xvdC0xLjE3L2RvY3N0eWxlLnRleGkA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAwMDEwNTIAMTQ1 NjY2MTMzNjQAMDE0NjQ1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwaGlsaXAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBjIEVtYWNzIGRvY3VtZW50YXRpb24gc3R5 bGUgc2V0dGluZ3MKQGRvY3VtZW50ZW5jb2RpbmcgVVRGLTgKQGMgVGhlc2UgdHdvIHJlcXVpcmUg VGV4aW5mbyA1LjAgb3IgbGF0ZXIsIHNvIHdlIHVzZSB0aGUgb2xkZXIKQGMgZXF1aXZhbGVudCBA c2V0IHZhcmlhYmxlcyBzdXBwb3J0ZWQgaW4gNC4xMSBhbmQgaGVuY2UKQGlnbm9yZQpAY29kZXF1 b3RlYmFja3RpY2sgb24KQGNvZGVxdW90ZXVuZGlyZWN0ZWQgb24KQGVuZCBpZ25vcmUKQHNldCB0 eGljb2RlcXVvdGV1bmRpcmVjdGVkCkBzZXQgdHhpY29kZXF1b3RlYmFja3RpY2sKQGlmdGV4CkBj IEl0IHR1cm5zIG91dCBUZVggc29tZXRpbWVzIGZhaWxzIHRvIGh5cGhlbmF0ZSwgc28gd2UgaGVs cCBpdCBoZXJlCkBoeXBoZW5hdGlvbnthdS10by1tYXQtaS1jYWwtbHl9CkBoeXBoZW5hdGlvbntz cGVjLWktZmllZH0KQGh5cGhlbmF0aW9ue3dvcmstYS1yb3VuZH0KQGh5cGhlbmF0aW9ue3dvcmst YS1yb3VuZHN9CkBoeXBoZW5hdGlvbnt1bi1tYXJrZWR9CkBoeXBoZW5hdGlvbntkaWMtdGlvbi1h cnl9CkBlbmQgaWZ0ZXgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlZ2xvdC0xLjE3L2VnbG90LnRleGkAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAxNzUwADAwMDE3NTAAMDAwMDAyMDAyNjEAMTQ2NzE1 NDAwNjcAMDE0MTMwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzdGFyICAAcGhpbGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwaGlsaXAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxpbnB1dCB0ZXhpbmZvICBAYyAtKi10ZXhpbmZv LSotCkBjICUqKnN0YXJ0IG9mIGhlYWRlcgpAc2V0ZmlsZW5hbWUgLi4vLi4vZWdsb3QuaW5mbwpA c2V0dGl0bGUgRWdsb3Q6IFRoZSBFbWFjcyBDbGllbnQgZm9yIHRoZSBMYW5ndWFnZSBTZXJ2ZXIg UHJvdG9jb2wKQGluY2x1ZGUgZG9jc3R5bGUudGV4aQpAc3luY29kZWluZGV4IHZyIGNwCkBzeW5j b2RlaW5kZXggZm4gY3AKQGMgJSoqZW5kIG9mIGhlYWRlcgoKQGNvcHlpbmcKVGhpcyBtYW51YWwg aXMgZm9yIEVnbG90LCB0aGUgRW1hY3MgTFNQIGNsaWVudC4KCkNvcHlyaWdodCBAY29weXJpZ2h0 e30gMjAyMi0tMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCkBxdW90YXRpb24K UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0 aGlzIGRvY3VtZW50CnVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlLCBWZXJzaW9uIDEuMyBvcgphbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2l0aCBubwpJbnZhcmlhbnQgU2VjdGlvbnMs IHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCmFuZCB3 aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUg bGljZW5zZQppcyBpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZScnLgoKKGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6 IGBgWW91IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKbW9kaWZ5IHRoaXMgR05VIG1hbnVh bC4nJwpAZW5kIHF1b3RhdGlvbgpAZW5kIGNvcHlpbmcKCkBkaXJjYXRlZ29yeSBFbWFjcyBtaXNj IGZlYXR1cmVzCkBkaXJlbnRyeQoqIEVnbG90OiAoZWdsb3QpLiAgICAgICAgICAgICBMYW5ndWFn ZSBTZXJ2ZXIgUHJvdG9jb2wgY2xpZW50IGZvciBFbWFjcy4KQGVuZCBkaXJlbnRyeQoKQHRpdGxl cGFnZQpAc3AgNApAYyBUaGUgdGl0bGUgaXMgcHJpbnRlZCBpbiBhIGxhcmdlIGZvbnQuCkBjZW50 ZXIgQHRpdGxlZm9udHtVc2VyJ3MgR3VpZGV9CkBzcCAxCkBjZW50ZXIgQHRpdGxlZm9udHt0b30K QHNwIDEKQGNlbnRlciBAdGl0bGVmb250e0VnbG90OiBUaGUgRW1hY3MgTFNQIENsaWVudH0KQGln bm9yZQpAc3AgMgpAY2VudGVyIHJlbGVhc2UgMS44CkBjIC1yZWxlYXNlLQpAZW5kIGlnbm9yZQpA c3AgMwpAY2VudGVyIEpvQH5hbyBUQCdhdm9yYSAmIEVsaSBaYXJldHNraWkKQGMgLWRhdGUtCgpA cGFnZQpAdnNraXAgMHB0IHBsdXMgMWZpbGxsCkBpbnNlcnRjb3B5aW5nCkBlbmQgdGl0bGVwYWdl CgpAY29udGVudHMKCkBpZm5vdHRleApAbm9kZSBUb3AKQHRvcCBFZ2xvdAoKQGNpbmRleCBMU1AK QGNpbmRleCBsYW5ndWFnZSBzZXJ2ZXIgcHJvdG9jb2wKRWdsb3QgaXMgdGhlIEVtYWNzIGNsaWVu dCBmb3IgdGhlIEBkZm57TGFuZ3VhZ2UgU2VydmVyIFByb3RvY29sfQooQGFjcm9ueW17TFNQfSku ICBUaGUgbmFtZSBgYEVnbG90JycgaXMgYW4gYWNyb255bSB0aGF0IHN0YW5kcyBmb3IKQGlmaHRt bApgYEBlbXBoe0V9bWFjcyBQb2x5QGVtcGh7Z2xvdH0nJy4KQGVuZCBpZmh0bWwKQGlmbm90aHRt bApgYEVtYWNzIHBvbHlHTE9UJycuCkBlbmQgaWZub3RodG1sCkBmb290bm90ZXsKQSBAZGZue3Bv bHlnbG90fSBpcyBhCnBlcnNvbiB3aG8gaXMgYWJsZSB0byB1c2Ugc2V2ZXJhbCBsYW5ndWFnZXMu Cn0gRWdsb3QgcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgYW5kIGEgc2V0IG9mIGNvbW1hbmRzIGZv ciBlbnJpY2hpbmcKdGhlIHNvdXJjZSBjb2RlIGVkaXRpbmcgY2FwYWJpbGl0aWVzIG9mIEVtYWNz IHZpYSBMU1BALiAgTFNQIGlzIGEKc3RhbmRhcmRpemVkIGNvbW11bmljYXRpb25zIHByb3RvY29s IGJldHdlZW4gc291cmNlIGNvZGUgZWRpdG9ycyAoc3VjaAphcyBFbWFjcykgYW5kIGxhbmd1YWdl IHNlcnZlcnMtLS1wcm9ncmFtcyBleHRlcm5hbCB0byBFbWFjcyB3aGljaAphbmFseXplIHRoZSBz b3VyY2UgY29kZSBvbiBiZWhhbGYgb2YgRW1hY3MuICBUaGUgcHJvdG9jb2wgYWxsb3dzIEVtYWNz CnRvIHJlY2VpdmUgdmFyaW91cyBzb3VyY2UgY29kZSBzZXJ2aWNlcyBmcm9tIHRoZSBzZXJ2ZXIs IHN1Y2ggYXMKZGVzY3JpcHRpb24gYW5kIGxvY2F0aW9uIG9mIGZ1bmN0aW9uIGNhbGxzLCB0eXBl cyBvZiB2YXJpYWJsZXMsIGNsYXNzCmRlZmluaXRpb25zLCBzeW50YWN0aWMgZXJyb3JzLCBldGMu ICBUaGlzIHdheSwgRW1hY3MgZG9lc24ndCBuZWVkIHRvCmltcGxlbWVudCB0aGUgbGFuZ3VhZ2Ut c3BlY2lmaWMgcGFyc2luZyBhbmQgYW5hbHlzaXMgY2FwYWJpbGl0aWVzIGluCml0cyBvd24gY29k ZSwgYnV0IGlzIHN0aWxsIGNhcGFibGUgb2YgcHJvdmlkaW5nIHNvcGhpc3RpY2F0ZWQgZWRpdGlu ZwpmZWF0dXJlcyB0aGF0IHJlbHkgb24gc3VjaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgYXV0b21h dGljIGNvZGUKY29tcGxldGlvbiwgZ28tdG8gZGVmaW5pdGlvbiBvZiBmdW5jdGlvbi9jbGFzcywg ZG9jdW1lbnRhdGlvbiBvZgpzeW1ib2wgYXQtcG9pbnQsIHJlZmFjdG9yaW5nLCBvbi10aGUtZmx5 IGRpYWdub3N0aWNzLCBhbmQgbW9yZS4KCkVnbG90IGl0c2VsZiBpcyBjb21wbGV0ZWx5IGxhbmd1 YWdlLWFnbm9zdGljLCBidXQgaXQgY2FuIHN1cHBvcnQgYW55CnByb2dyYW1taW5nIGxhbmd1YWdl IGZvciB3aGljaCB0aGVyZSBpcyBhIGxhbmd1YWdlIHNlcnZlciBhbmQgYW4gRW1hY3MKbWFqb3Ig bW9kZS4KClRoaXMgbWFudWFsIGRvY3VtZW50cyBob3cgdG8gY29uZmlndXJlLCB1c2UsIGFuZCBj dXN0b21pemUgRWdsb3QuCgpAaW5zZXJ0Y29weWluZwoKQG1lbnUKKiBRdWljayBTdGFydDo6ICAg ICAgICAgICAgICAgICBGb3IgdGhlIGltcGF0aWVudC4KKiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnM6 OiAgICAgICBIb3cgdG8gd29yayB3aXRoIGxhbmd1YWdlIHNlcnZlcnMuCiogVXNpbmcgRWdsb3Q6 OiAgICAgICAgICAgICAgICAgSW1wb3J0YW50IEVnbG90IGNvbW1hbmRzIGFuZCB2YXJpYWJsZXMu CiogQ3VzdG9taXppbmcgRWdsb3Q6OiAgICAgICAgICAgRWdsb3QgY3VzdG9taXphdGlvbiBhbmQg YWR2YW5jZWQgZmVhdHVyZXMuCiogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb246OiAgRmlu ZS10dW5lIGEgc3BlY2lmaWMgbGFuZ3VhZ2Ugc2VydmVyCiogRXh0ZW5kaW5nIEVnbG90OjogICAg ICAgICAgICAgV3JpdGluZyBFZ2xvdCBleHRlbnNpb25zIGluIEVsaXNwCiogVHJvdWJsZXNob290 aW5nIEVnbG90OjogICAgICAgVHJvdWJsZXNob290aW5nIGFuZCByZXBvcnRpbmcgYnVncy4KKiBH TlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OiAgVGhlIGxpY2Vuc2UgZm9yIHRoaXMgbWFu dWFsLgoqIEluZGV4OjoKQGVuZCBtZW51CkBlbmQgaWZub3R0ZXgKCkBub2RlIFF1aWNrIFN0YXJ0 CkBjaGFwdGVyIFF1aWNrIFN0YXJ0CkBjaW5kZXggcXVpY2sgc3RhcnQKClRoaXMgY2hhcHRlciBw cm92aWRlcyBjb25jaXNlIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCBhbmQgdXNpbmcKRWds b3Qgd2l0aCB5b3VyIHByb2dyYW1taW5nIHByb2plY3QgaW4gY29tbW9uIHVzYWdlIHNjZW5hcmlv cy4gIEZvcgptb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucyByZWdhcmRpbmcgRWdsb3Qgc2V0dXAs IEBweHJlZntFZ2xvdCBhbmQgTFNQClNlcnZlcnN9LiAgQHhyZWZ7VXNpbmcgRWdsb3R9LCBmb3Ig ZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdXNpbmcgRWdsb3QsCmFuZCBzZWUgQHJlZntDdXN0b21p emluZyBFZ2xvdH0sIGZvciBhZGFwdGluZyBFZ2xvdCB0byBsZXNzIGNvbW1vbiB1c2UKcGF0dGVy bnMuCgpIZXJlJ3MgaG93IHRvIHN0YXJ0IHVzaW5nIEVnbG90IHdpdGggeW91ciBwcm9ncmFtbWlu ZyBwcm9qZWN0OgoKQGVudW1lcmF0ZQpAaXRlbQpTZWxlY3QgYW5kIGluc3RhbGwgYSBsYW5ndWFn ZSBzZXJ2ZXIuCgpFZ2xvdCBjb21lcyBwcmUtY29uZmlndXJlZCB3aXRoIG1hbnkgcG9wdWxhciBs YW5ndWFnZSBzZXJ2ZXJzLCBzZWUgdGhlCnZhbHVlIG9mIEBjb2Rle2VnbG90LXNlcnZlci1wcm9n cmFtc30uICBJZiB0aGUgc2VydmVyKHMpIG1lbnRpb25lZAp0aGVyZSBzYXRpc2Z5IHlvdXIgbmVl ZHMgZm9yIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZShzKSB3aXRoIHdoaWNoCnlvdSB3YW50IHRv IHVzZSBFZ2xvdCwgeW91IGp1c3QgbmVlZCB0byBtYWtlIHN1cmUgdGhvc2Ugc2VydmVycyBhcmUK aW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAgQWx0ZXJuYXRpdmVseSwgaW5zdGFsbCBvbmUgb3Ig bW9yZSBzZXJ2ZXJzCm9mIHlvdXIgY2hvaWNlIGFuZCBhZGQgdGhlbSB0byB0aGUgdmFsdWUgb2YK QGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW1zfSwgYXMgZGVzY3JpYmVkIGluIEByZWZ7U2V0dGlu ZyBVcCBMU1AKU2VydmVyc30uCgpAaXRlbQpUdXJuIG9uIEVnbG90IGZvciB5b3VyIHByb2plY3Qu CgpUbyBzdGFydCB1c2luZyBFZ2xvdCBmb3IgYSBwcm9qZWN0LCB0eXBlIEBrYmR7TS14IGVnbG90 IEBrZXl7UkVUfX0gaW4KYSBidWZmZXIgdmlzaXRpbmcgYW55IGZpbGUgdGhhdCBiZWxvbmdzIHRv IHRoZSBwcm9qZWN0LiAgVGhpcyBzdGFydHMKdGhlIGxhbmd1YWdlIHNlcnZlciBjb25maWd1cmVk IGZvciB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugb2YgdGhhdApidWZmZXIsIGFuZCBjYXVzZXMg RWdsb3QgdG8gc3RhcnQgQGRmbnttYW5hZ2luZ30gZmlsZS12aXNpdGluZyBidWZmZXJzCnJlbGF0 ZWQgdG8gdGhhdCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIFRoaXMgaW5jbHVkZXMgZmlsZXMgdGhh dCBhcmUKYWxyZWFkeSB2aXNpdGVkIGF0IHRoZSB0aW1lIHRoZSBAY29kZXtlZ2xvdH0gY29tbWFu ZCBpcyBpbnZva2VkLCBhcwp3ZWxsIGFzIGFueSBmaWxlcyB2aXNpdGVkIGFmdGVyIHRoaXMgaW52 b2NhdGlvbi4KClRoZSBub3Rpb24gb2YgYSBgYHByb2plY3QnJyB1c2VkIGJ5IEVnbG90IGlzIHRo ZSBzYW1lIEVtYWNzIHVzZXMKKEBweHJlZntQcm9qZWN0cywsLCBlbWFjcywgR05VIEVtYWNzIE1h bnVhbH0pOiBpbiB0aGUgc2ltcGxlc3QgY2FzZSwKdGhlIGBgcHJvamVjdCcnIGlzIHRoZSBzaW5n bGUgZmlsZSB5b3UgYXJlIGVkaXRpbmcsIGJ1dCBpdCBjYW4gYWxzbyBiZQphbGwgdGhlIGZpbGVz IGluIGEgc2luZ2xlIGRpcmVjdG9yeSBvciBhIGRpcmVjdG9yeSB0cmVlIHVuZGVyIHNvbWUKdmVy c2lvbiBjb250cm9sIHN5c3RlbSwgc3VjaCBhcyBHaXQuCgpUaGVyZSBhcmUgYWx0ZXJuYXRlIHdh eXMgb2Ygc3RhcnRpbmcgRWdsb3Q7IHNlZSBAcmVme1N0YXJ0aW5nIEVnbG90fQpmb3IgZGV0YWls cy4KCkBpdGVtClVzZSBFZ2xvdC4KCk1vc3QgRWdsb3QgZmFjaWxpdGllcyBhcmUgaW50ZWdyYXRl ZCBpbnRvIEVtYWNzIGZlYXR1cmVzLCBzdWNoIGFzCkVsRG9jLCBGbHltYWtlLCBYcmVmLCBhbmQg SW1lbnUuICBIb3dldmVyLCBFZ2xvdCBhbHNvIHByb3ZpZGVzCmNvbW1hbmRzIG9mIGl0cyBvd24s IG1haW5seSB0byBwZXJmb3JtIHRhc2tzIGJ5IHRoZSBsYW5ndWFnZSBzZXJ2ZXIsCnN1Y2ggYXMg QGtiZHtNLXggZWdsb3QtcmVuYW1lfSAodG8gcmVuYW1lIGFuIGlkZW50aWZpZXIgYWNyb3NzIHRo ZQplbnRpcmUgcHJvamVjdCksIEBrYmR7TS14IGVnbG90LWZvcm1hdH0gKHRvIHJlZm9ybWF0IGFu ZCByZWluZGVudApjb2RlKSwgYW5kIHNvbWUgb3RoZXJzLiAgQHhyZWZ7RWdsb3QgQ29tbWFuZHN9 LCBmb3IgdGhlIGRldGFpbGVkIGxpc3QKb2YgRWdsb3QgY29tbWFuZHMuCgpAaXRlbQpUaGF0J3Mg aXQhCkBlbmQgZW51bWVyYXRlCgpAbm9kZSBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKQGNoYXB0ZXIg RWdsb3QgYW5kIExTUCBTZXJ2ZXJzCgpUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byBzZXQg dXAgRWdsb3QgZm9yIHlvdXIgbmVlZHMsIGFuZCBob3cgdG8Kc3RhcnQgaXQuCgpAbWVudQoqIFNl dHRpbmcgVXAgTFNQIFNlcnZlcnM6OiAgIEhvdyB0byBjb25maWd1cmUgTFNQIHNlcnZlcnMgZm9y IHlvdXIgbmVlZHMuCiogU3RhcnRpbmcgRWdsb3Q6OiAgICAgICAgICAgICAgV2F5cyBvZiBzdGFy dGluZyBFZ2xvdCBmb3IgeW91ciBwcm9qZWN0LgoqIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnM6 OgpAZW5kIG1lbnUKCkBub2RlIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMKQHNlY3Rpb24gU2V0dGlu ZyBVcCBMU1AgU2VydmVycwpAY2luZGV4IHNldHRpbmcgdXAgTFNQIHNlcnZlciBmb3IgRWdsb3QK QGNpbmRleCBMU1Agc2VydmVyIGZvciBFZ2xvdCwgc2V0dGluZyB1cApAY2luZGV4IGxhbmd1YWdl IHNlcnZlciBmb3IgRWdsb3QKCkZvciBFZ2xvdCB0byBiZSB1c2VmdWwsIGl0IG11c3QgZmlyc3Qg YmUgY29tYmluZWQgd2l0aCBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4gIFVzdWFsbHksIHRo YXQgbWVhbnMgcnVubmluZyB0aGUgc2VydmVyIHByb2dyYW0KbG9jYWxseSBhcyBhIGNoaWxkIHBy b2Nlc3Mgb2YgRW1hY3MgKEBweHJlZntQcm9jZXNzZXMsLCwgZWxpc3AsIEdOVQpFbWFjcyBMaXNw IFJlZmVyZW5jZSBNYW51YWx9KSBhbmQgY29tbXVuaWNhdGluZyB3aXRoIGl0IHZpYSB0aGUKc3Rh bmRhcmQgaW5wdXQgYW5kIG91dHB1dCBzdHJlYW1zLgoKVGhlIGxhbmd1YWdlIHNlcnZlciBwcm9n cmFtIG11c3QgYmUgaW5zdGFsbGVkIHNlcGFyYXRlbHksIGFuZCBpcyBub3QKZnVydGhlciBkaXNj dXNzZWQgaW4gdGhpcyBtYW51YWw7IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZQpw YXJ0aWN1bGFyIHNlcnZlcihzKSB5b3Ugd2FudCB0byBpbnN0YWxsLgoKVG8gdXNlIGEgbGFuZ3Vh Z2Ugc2VydmVyLCBFZ2xvdCBtdXN0IGtub3cgaG93IHRvIHN0YXJ0IGl0IGFuZCB3aGljaApwcm9n cmFtbWluZyBsYW5ndWFnZXMgZWFjaCBzZXJ2ZXIgc3VwcG9ydHMuICBUaGlzIGluZm9ybWF0aW9u IGlzCnByb3ZpZGVkIGJ5IHRoZSB2YXJpYWJsZSBAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9 LgoKQGRlZnZhciBlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMKVGhpcyB2YXJpYWJsZSBhc3NvY2lhdGVz IG1ham9yIG1vZGVzIHdpdGggbmFtZXMgYW5kIGNvbW1hbmQtbGluZQphcmd1bWVudHMgb2YgdGhl IGxhbmd1YWdlIHNlcnZlciBwcm9ncmFtcyBjb3JyZXNwb25kaW5nIHRvIHRoZQpwcm9ncmFtbWlu ZyBsYW5ndWFnZSBvZiBlYWNoIG1ham9yIG1vZGUuICBJdCBwcm92aWRlcyBhbGwgdGhlCmluZm9y bWF0aW9uIHRoYXQgRWdsb3QgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgcHJvZ3JhbW1pbmcgbGFu Z3VhZ2Ugb2YKdGhlIHNvdXJjZSB5b3UgYXJlIGVkaXRpbmcuCgpUaGUgdmFsdWUgb2YgdGhlIHZh cmlhYmxlIGlzIGFuIGFsaXN0LCB3aG9zZSBlbGVtZW50cyBhcmUgb2YgdGhlIGZvcm0KQHd7QGNv ZGV7KEB2YXJ7bWFqb3ItbW9kZX0gLiBAdmFye3NlcnZlcn0pfX0uCgpUaGUgQHZhcnttYWpvci1t b2RlfSBvZiB0aGUgYWxpc3QgZWxlbWVudHMgY2FuIGJlIGVpdGhlciBhIHN5bWJvbCBvZgphbiBF bWFjcyBtYWpvciBtb2RlIG9yIGEgbGlzdCBvZiB0aGUgZm9ybSBAd3tAY29kZXsoQHZhcnttb2Rl fQo6bGFuZ3VhZ2UtaWQgQHZhcntpZH0pfX0sIHdpdGggQHZhcnttb2RlfSBiZWluZyBhIG1ham9y LW1vZGUgc3ltYm9sCmFuZCBAdmFye2lkfSBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGxh bmd1YWdlIHRvIHRoZSBzZXJ2ZXIgKGlmCkVnbG90IGNhbm5vdCBieSBpdHNlbGYgY29udmVydCB0 aGUgbWFqb3ItbW9kZSB0byB0aGUgbGFuZ3VhZ2UKaWRlbnRpZmllciBzdHJpbmcgcmVxdWlyZWQg YnkgdGhlIHNlcnZlcikuICBJbiBhZGRpdGlvbiwKQHZhcnttYWpvci1tb2RlfSBjYW4gYmUgYSBs aXN0IG9mIHNldmVyYWwgbWFqb3IgbW9kZXMgc3BlY2lmaWVkIGluIG9uZQpvZiB0aGUgYWJvdmUg Zm9ybXMgLS0gdGhpcyBtZWFucyBhIHJ1bm5pbmcgaW5zdGFuY2Ugb2YgdGhlIGFzc29jaWF0ZWQK c2VydmVyIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxlcyBvZiBtdWx0aXBsZSBtYWpvciBtb2RlcyBv ciBsYW5ndWFnZXMKaW4gdGhlIHByb2plY3QuCgpUaGUgQHZhcntzZXJ2ZXJ9IHBhcnQgb2YgdGhl IGFsaXN0IGVsZW1lbnRzIGNhbiBiZSBvbmUgb2YgdGhlCmZvbGxvd2luZzoKCkB0YWJsZSBAY29k ZQpAaXRlbSAoQHZhcntwcm9ncmFtfSBAdmFye2FyZ3N9QGRvdHN7fSkKVGhpcyBzYXlzIHRvIGlu dm9rZSBAdmFye3Byb2dyYW19IHdpdGggemVybyBvciBtb3JlIGFyZ3VtZW50cwpAdmFye2FyZ3N9 OyB0aGUgcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBjb21tdW5pY2F0ZSB3aXRoIEVtYWNzIHZpYSB0 aGUKc3RhbmRhcmQgaW5wdXQgYW5kIHN0YW5kYXJkIG91dHB1dCBzdHJlYW1zLgoKQGl0ZW0gKEB2 YXJ7cHJvZ3JhbX0gQHZhcnthcmdzfUBkb3Rze30gOmluaXRpYWxpemF0aW9uT3B0aW9ucyBAdmFy e29wdGlvbnN9QGRvdHN7fSkKQHZhcntwcm9ncmFtfSBpcyBpbnZva2VkIHdpdGggQHZhcnthcmdz fSBidXQgQHZhcntvcHRpb25zfSBzcGVjaWZpZXMKaG93IHRvIGNvbnN0cnVjdCB0aGUgQHNhbXB7 OmluaXRpYWxpemF0aW9uT3B0aW9uc30gSlNPTiBvYmplY3QgdG8gcGFzcwp0aGUgc2VydmVyIG9u IGR1cmluZyB0aGUgTFNQIGhhbmRzaGFrZSAoQHB4cmVme0FkdmFuY2VkIHNlcnZlcgpjb25maWd1 cmF0aW9ufSkuCgpAaXRlbSAoQHZhcntob3N0fSBAdmFye3BvcnR9IEB2YXJ7YXJnc31AZG90c3t9 KQpIZXJlIEB2YXJ7aG9zdH0gaXMgYSBzdHJpbmcgYW5kIEB2YXJ7cG9ydH0gaXMgYSBwb3NpdGl2 ZSBpbnRlZ2VyCnNwZWNpZnlpbmcgYSBUQ1AgY29ubmVjdGlvbiB0byBhIHJlbW90ZSBzZXJ2ZXIu ICBUaGUgQHZhcnthcmdzfSBhcmUKcGFzc2VkIHRvIEBjb2Rle29wZW4tbmV0d29yay1zdHJlYW19 LCBlLmcuQDogaWYgdGhlIGNvbm5lY3Rpb24gbmVlZHMKdG8gdXNlIGVuY3J5cHRpb24gb3Igb3Ro ZXIgbm9uLWRlZmF1bHQgcGFyYW1ldGVycyAoQHB4cmVme05ldHdvcmssLCwKZWxpc3AsIEdOVSBF bWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9KS4KCkBpdGVtIChAdmFye3Byb2dyYW19IEB2YXJ7 YXJnc31AZG90c3t9IDphdXRvcG9ydCBAdmFye21vcmVhcmdzfUBkb3Rze30pCkB2YXJ7cHJvZ3Jh bX0gaXMgc3RhcnRlZCB3aXRoIGEgY29tbWFuZCBsaW5lIGNvbnN0cnVjdGVkIGZyb20KQHZhcnth cmdzfSBmb2xsb3dlZCBieSBhbiBhdmFpbGFibGUgc2VydmVyIHBvcnQgYW5kIHRoZSByZXN0IG9m CmFyZ3VtZW50cyBpbiBAdmFye21vcmVhcmdzfTsgRWdsb3QgdGhlbiBlc3RhYmxpc2hlcyBhIFRD UCBjb25uZWN0aW9uCndpdGggdGhlIHNlcnZlciB2aWEgdGhhdCBwb3J0IG9uIHRoZSBsb2NhbCBo b3N0LgoKQGl0ZW0gQHZhcntmdW5jdGlvbn0KVGhpcyBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiBh IHNpbmdsZSBhcmd1bWVudDogbm9uLUBjb2Rle25pbH0gaWYgdGhlCmNvbm5lY3Rpb24gd2FzIHJl cXVlc3RlZCBpbnRlcmFjdGl2ZWx5IChlLmcuLCBieSB0aGUgQGNvZGV7ZWdsb3R9CmNvbW1hbmQp LCBvdGhlcndpc2UgQGNvZGV7bmlsfS4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgdmFs dWUgb2YKYW55IG9mIHRoZSBmb3JtcyBkZXNjcmliZWQgYWJvdmUuICBUaGlzIGFsbG93cyBpbnRl cmFjdGlvbiB3aXRoIHRoZQp1c2VyIGZvciBkZXRlcm1pbmluZyB0aGUgcHJvZ3JhbSB0byBzdGFy dCBhbmQgaXRzIGNvbW1hbmQtbGluZQphcmd1bWVudHMuCkBlbmQgdGFibGUKCkBlbmQgZGVmdmFy CgpFZ2xvdCBjb21lcyB3aXRoIGEgZmFpcmx5IGNvbXBsZXRlIHNldCBvZiBhc3NvY2lhdGlvbnMg b2YgbWFqb3ItbW9kZXMKdG8gcG9wdWxhciBsYW5ndWFnZSBzZXJ2ZXJzIHByZWRlZmluZWQuICBJ ZiB5b3UgbmVlZCB0byBhZGQgc2VydmVyCmFzc29jaWF0aW9ucyB0byB0aGUgZGVmYXVsdCBsaXN0 LCB1c2UgQGNvZGV7YWRkLXRvLWxpc3R9LiAgRm9yCmV4YW1wbGUsIGlmIHRoZXJlIGlzIGEgaHlw b3RoZXRpY2FsIGxhbmd1YWdlIHNlcnZlciBwcm9ncmFtCkBjb21tYW5ke2Zvb2xzfSBmb3IgdGhl IGxhbmd1YWdlIEBjb2Rle0Zvb30gd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGFuCkVtYWNzIG1ham9y LW1vZGUgQGNvZGV7Zm9vLW1vZGV9LCB5b3UgY2FuIGFkZCBpdCB0byB0aGUgYWxpc3QgbGlrZQp0 aGlzOgoKQGxpc3AKKHdpdGgtZXZhbC1hZnRlci1sb2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAn ZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICcoZm9vLW1vZGUgLiAoImZvb2xz IiAiLS1zdGRpbyIpKSkpCkBlbmQgbGlzcAoKVGhpcyB3aWxsIGludm9rZSB0aGUgcHJvZ3JhbSBA Y29tbWFuZHtmb29sc30gd2l0aCB0aGUgY29tbWFuZC1saW5lCmFyZ3VtZW50IEBvcHRpb257LS1z dGRpb30gaW4gc3VwcG9ydCBvZiBlZGl0aW5nIHNvdXJjZSBmaWxlcyBmb3Igd2hpY2gKRW1hY3Mg dHVybnMgb24gQGNvZGV7Zm9vLW1vZGV9LCBhbmQgd2lsbCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBw cm9ncmFtCnZpYSB0aGUgc3RhbmRhcmQgc3RyZWFtcy4gIEFzIHVzdWFsIHdpdGggaW52b2tpbmcg cHJvZ3JhbXMsIHRoZQpleGVjdXRhYmxlIGZpbGUgQGZpbGV7Zm9vbHN9IHNob3VsZCBiZSBpbiBv bmUgb2YgdGhlIGRpcmVjdG9yaWVzCm1lbnRpb25lZCBieSB0aGUgQGNvZGV7ZXhlYy1wYXRofSB2 YXJpYWJsZSAoQHB4cmVme1N1YnByb2Nlc3MKQ3JlYXRpb24sLCwgZWxpc3AsIEdOVSBFbWFjcyBM aXNwIFJlZmVyZW5jZSBNYW51YWx9KSwgZm9yIEVnbG90IHRvIGJlCmFibGUgdG8gZmluZCBpdC4K ClNvbWV0aW1lcywgbXVsdGlwbGUgc2VydmVycyBhcmUgYWNjZXB0YWJsZSBhbHRlcm5hdGl2ZXMg Zm9yIGhhbmRsaW5nIGEKZ2l2ZW4gbWFqb3ItbW9kZS4gIEluIHRob3NlIGNhc2VzLCB5b3UgbWF5 IGNvbWJpbmUgdGhlIGhlbHBlciBmdW5jdGlvbgpAY29kZXtlZ2xvdC1hbHRlcm5hdGl2ZXN9IHdp dGggdGhlIGZ1bmN0aW9uYWwgZm9ybSBvZgpAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9LgoK QGxpc3AKKHdpdGgtZXZhbC1hZnRlci1sb2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAnZWdsb3Qt c2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgIGAoZm9vLW1vZGUgLiAsKGVnbG90LWFsdGVy bmF0aXZlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygoImZvb2xzIiAiLS1zdGRp byIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgicGhld2xzIiAiLS1mYXN0Iikp KSkpKQpAZW5kIGxpc3AKCklmIHlvdSBoYXZlIEBjb21tYW5ke2Zvb2xzfSBhbmQgQGNvbW1hbmR7 cGhld2xzfSBpbnN0YWxsZWQsIHRoZQpmdW5jdGlvbiBwcm9kdWNlZCBieSBAY29kZXtlZ2xvdC1h bHRlcm5hdGl2ZXN9IHdpbGwgcHJvbXB0IGZvciB0aGUKc2VydmVyIHRvIHVzZSBpbiBAY29kZXtm b28tbW9kZX0gYnVmZmVycy4gIEVsc2UgaXQgd2lsbCB1c2Ugd2hpY2hldmVyCmlzIGF2YWlsYWJs ZS4KCkBub2RlIFN0YXJ0aW5nIEVnbG90CkBzZWN0aW9uIFN0YXJ0aW5nIEVnbG90CkBjaW5kZXgg c3RhcnRpbmcgRWdsb3QKQGNpbmRleCBhY3RpdmF0aW5nIEVnbG90IGZvciBhIHByb2plY3QKCkBm aW5kZXggZWdsb3QKVGhlIG1vc3QgY29tbW9uIHdheSB0byBzdGFydCBFZ2xvdCBpcyB0byBzaW1w bHkgdmlzaXQgYSBzb3VyY2UgZmlsZSBvZgphIGdpdmVuIGxhbmd1YWdlIGFuZCB1c2UgdGhlIGNv bW1hbmQgQGtiZHtNLXggZWdsb3R9LiAgVGhpcyBzdGFydHMgdGhlCmxhbmd1YWdlIHNlcnZlciBz dWl0YWJsZSBmb3IgdGhlIHZpc2l0ZWQgZmlsZSdzIG1ham9yLW1vZGUsIGFuZAphdHRlbXB0cyB0 byBjb25uZWN0IHRvIGl0LiAgSWYgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlIHNlcnZl cgppcyBzdWNjZXNzZnVsLCB5b3Ugd2lsbCBzZWUgdGhlIEBjb2Rle1tlZ2xvdDpAdmFye3Byb2pl Y3R9XX0gaW5kaWNhdG9yCm9uIHRoZSBtb2RlIGxpbmUgd2hpY2ggcmVmbGVjdHMgdGhlIHNlcnZl ciB0aGF0IHdhcyBzdGFydGVkLiAgSWYgdGhlCnNlcnZlciBwcm9ncmFtIGNvdWxkbid0IGJlIHN0 YXJ0ZWQgb3IgY29ubmVjdGlvbiB0byBpdCBmYWlsZWQsIHlvdQp3aWxsIHNlZSBhbiBlcnJvciBt ZXNzYWdlOyBpbiB0aGF0IGNhc2UsIHRyeSB0byB0cm91Ymxlc2hvb3QgdGhlCnByb2JsZW0gYXMg ZGVzY3JpYmVkIGluIEByZWZ7VHJvdWJsZXNob290aW5nIEVnbG90fS4gIE9uY2UgYSBsYW5ndWFn ZQpzZXJ2ZXIgd2FzIHN1Y2Nlc3NmdWxseSBzdGFydGVkIGFuZCBFZ2xvdCBjb25uZWN0ZWQgdG8g aXQsIHlvdSBjYW4KaW1tZWRpYXRlbHkgc3RhcnQgdXNpbmcgdGhlIEVtYWNzIGZlYXR1cmVzIHN1 cHBvcnRlZCBieSBFZ2xvdCwgYXMKZGVzY3JpYmVkIGluIEByZWZ7RWdsb3QgRmVhdHVyZXN9LgoK QSBzaW5nbGUgRWdsb3Qgc2Vzc2lvbiBmb3IgYSBjZXJ0YWluIG1ham9yLW1vZGUgdXN1YWxseSBz ZXJ2ZXMgYWxsIHRoZQpidWZmZXJzIHVuZGVyIHRoYXQgbW9kZSB3aGljaCB2aXNpdCBmaWxlcyBm cm9tIHRoZSBzYW1lIHByb2plY3QsIHNvCnlvdSBkb24ndCBuZWVkIHRvIGludm9rZSBAa2Jke00t eCBlZ2xvdH0gYWdhaW4gd2hlbiB5b3UgdmlzaXQgYW5vdGhlcgpmaWxlIGZyb20gdGhlIHNhbWUg cHJvamVjdCB3aGljaCBpcyBlZGl0ZWQgdXNpbmcgdGhlIHNhbWUgbWFqb3ItbW9kZS4KVGhpcyBp cyBiZWNhdXNlIEVnbG90IHVzZXMgdGhlIEVtYWNzIHByb2plY3QgaW5mcmFzdHJ1Y3R1cmUsIGFz CmRlc2NyaWJlZCBpbiBAcmVme0VnbG90IGFuZCBCdWZmZXJzfSwgYW5kIHRoaXMga25vd3MgYWJv dXQgZmlsZXMgdGhhdApiZWxvbmcgdG8gdGhlIHNhbWUgcHJvamVjdC4gIFRodXMsIGFmdGVyIHN0 YXJ0aW5nIGFuIEVnbG90IHNlc3Npb24gZm9yCnNvbWUgYnVmZmVyLCB0aGF0IHNlc3Npb24gaXMg YXV0b21hdGljYWxseSByZXVzZWQgd2hlbiB2aXNpdGluZyBmaWxlcwppbiB0aGUgc2FtZSBwcm9q ZWN0IHdpdGggdGhlIHNhbWUgbWFqb3ItbW9kZS4KCkBmaW5kZXggZWdsb3QtZW5zdXJlCkFsdGVy bmF0aXZlbHksIHlvdSBjb3VsZCBjb25maWd1cmUgRWdsb3QgdG8gc3RhcnQgYXV0b21hdGljYWxs eSBmb3IKb25lIG9yIG1vcmUgbWFqb3ItbW9kZXMgZnJvbSB0aGUgcmVzcGVjdGl2ZSBtb2RlIGhv b2tzLiAgSGVyZSdzIGFuCmV4YW1wbGUgZm9yIGEgaHlwb3RoZXRpY2FsIEBjb2Rle2Zvby1tb2Rl fToKCkBsaXNwCiAoYWRkLWhvb2sgJ2Zvby1tb2RlLWhvb2sgJ2VnbG90LWVuc3VyZSkKQGVuZCBs aXNwCgpAbm9pbmRlbnQKVGhlIGZ1bmN0aW9uIEBjb2Rle2VnbG90LWVuc3VyZX0gd2lsbCBzdGFy dCBhbiBFZ2xvdCBzZXNzaW9uIGZvciBlYWNoCmJ1ZmZlciBpbiB3aGljaCBAY29kZXtmb28tbW9k ZX0gaXMgdHVybmVkIG9uLCBpZiB0aGVyZSBpc24ndCBhbHJlYWR5CmFuIEVnbG90IHNlc3Npb24g dGhhdCBoYW5kbGVzIHRoZSBidWZmZXIuICBOb3RlIHRoYXQgdGhpcyB2YXJpYW50IG9mCnN0YXJ0 aW5nIGFuIEVnbG90IHNlc3Npb24gaXMgbm9uLWludGVyYWN0aXZlLCBzbyBpdCBzaG91bGQgYmUg dXNlZApvbmx5IHdoZW4geW91IGFyZSBjb25maWRlbnQgdGhhdCBFZ2xvdCBjYW4gYmUgc3RhcnRl ZCByZWxpYWJseSBmb3IgYW55CmZpbGUgd2hpY2ggbWF5IGJlIHZpc2l0ZWQgd2l0aCB0aGUgbWFq b3ItbW9kZSBpbiBxdWVzdGlvbi4KCk5vdGUgdGhhdCBpdCdzIG9mdGVuIGRpZmZpY3VsdCB0byBl c3RhYmxpc2ggdGhpcyBjb25maWRlbmNlIGZ1bGx5LCBzbwppdCBtYXkgYmUgd2lzZSB0byB1c2Ug dGhlIGludGVyYWN0aXZlIGNvbW1hbmQgQGNvZGV7ZWdsb3R9IGluc3RlYWQuCllvdSBvbmx5IG5l ZWQgdG8gaW52b2tlIGl0IG9uY2UgcGVyIHByb2plY3QsIGFzIGFsbCBvdGhlciBmaWxlcwp2aXNp dGVkIHdpdGhpbiB0aGUgc2FtZSBwcm9qZWN0IHdpbGwgYXV0b21hdGljYWxseSBiZSBtYW5hZ2Vk IHdpdGggbm8KZnVydGhlciB1c2VyIGludGVydmVudGlvbiBuZWVkZWQuCgpXaGVuIEVnbG90IGNv bm5lY3RzIHRvIGEgbGFuZ3VhZ2Ugc2VydmVyIGZvciB0aGUgZmlyc3QgdGltZSBpbiBhbgpFbWFj cyBzZXNzaW9uLCBpdCBydW5zIHRoZSBob29rIEBjb2Rle2VnbG90LWNvbm5lY3QtaG9va30KKEBw eHJlZntFZ2xvdCBWYXJpYWJsZXN9KS4KCkBub2RlIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnMK QHNlY3Rpb24gU2h1dHRpbmcgRG93biBMU1AgU2VydmVycwpAY2luZGV4IHNodXR0aW5nIGRvd24g TFNQIHNlcnZlcgoKV2hlbiBFZ2xvdCBpcyB0dXJuZWQgb24sIGl0IGFycmFuZ2VzIGZvciB0dXJu aW5nIGl0c2VsZiBvZmYKYXV0b21hdGljYWxseSBpZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nl c3MgdGVybWluYXRlcy4gIFR1cm5pbmcgb2ZmCkVnbG90IG1lYW5zIHRoYXQgaXQgc2h1dHMgZG93 biB0aGUgc2VydmVyIGNvbm5lY3Rpb24sIGNlYXNlcyBpdHMKbWFuYWdlbWVudCBvZiBhbGwgdGhl IGJ1ZmZlcnMgdGhhdCB1c2UgdGhlIHNlcnZlciBjb25uZWN0aW9uIHdoaWNoIHdhcwp0ZXJtaW5h dGVkLCBkZWFjdGl2YXRlcyBpdHMgbWlub3IgbW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5h bAp2YWx1ZXMgb2YgdGhlIEVtYWNzIHZhcmlhYmxlcyB0aGF0IEVnbG90IGNoYW5nZWQgd2hlbiBp dCB3YXMgdHVybmVkCm9uLiAgQHhyZWZ7RWdsb3QgYW5kIEJ1ZmZlcnN9LCBmb3IgbW9yZSBkZXRh aWxzIG9mIHdoYXQgRWdsb3QKbWFuYWdlbWVudCBvZiBhIGJ1ZmZlciBlbnRhaWxzLgoKQGZpbmRl eCBlZ2xvdC1zaHV0ZG93bgpZb3UgY2FuIGFsc28gc2h1dCBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVy IG1hbnVhbGx5LCBieSB1c2luZyB0aGUKY29tbWFuZCBAa2Jke00teCBlZ2xvdC1zaHV0ZG93bn0u ICBUaGlzIHByb21wdHMgZm9yIHRoZSBzZXJ2ZXIgKHVubGVzcwp0aGVyZSdzIG9ubHkgb25lIGNv bm5lY3Rpb24gYW5kIGl0J3MgdXNlZCBpbiB0aGUgY3VycmVudCBidWZmZXIpLCBhbmQKdGhlbiBz aHV0cyBpdCBkb3duLiAgQnkgZGVmYXVsdCwgaXQgYWxzbyBraWxscyB0aGUgc2VydmVyJ3MgZXZl bnRzCmJ1ZmZlciAoQHB4cmVme1Ryb3VibGVzaG9vdGluZyBFZ2xvdH0pLCBidXQgYSBwcmVmaXgg YXJndW1lbnQgcHJldmVudHMKdGhhdC4KCkFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3VzdG9taXpl IHRoZSB2YXJpYWJsZQpAY29kZXtlZ2xvdC1hdXRvc2h1dGRvd259IHRvIGEgbm9uLUBjb2Rle25p bH0gdmFsdWUsIGluIHdoaWNoIGNhc2UKRWdsb3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHNodXQgZG93 biB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nlc3Mgd2hlbgp0aGUgbGFzdCBidWZmZXIgc2VydmVk IGJ5IHRoYXQgbGFuZ3VhZ2Ugc2VydmVyIGlzIGtpbGxlZC4gIFRoZSBkZWZhdWx0Cm9mIHRoaXMg dmFyaWFibGUgaXMgQGNvZGV7bmlsfSwgc28gdGhhdCB2aXNpdGluZyBhbm90aGVyIGZpbGUgd291 bGQKYXV0b21hdGljYWxseSBhY3RpdmF0ZSBFZ2xvdCBldmVuIHdoZW4gdGhlIHByb2plY3Qgd2hp Y2ggc3RhcnRlZCBFZ2xvdAp3aXRoIHRoZSBzZXJ2ZXIgbm8gbG9uZ2VyIGhhcyBhbnkgYnVmZmVy IGFzc29jaWF0ZWQgd2l0aCBpdC4gIFRoaXMKZGVmYXVsdCBhbGxvd3MgeW91IHRvIHN0YXJ0IGEg c2VydmVyIG9ubHkgb25jZSBpbiBlYWNoIEVtYWNzIHNlc3Npb24uCgpAbm9kZSBVc2luZyBFZ2xv dApAY2hhcHRlciBVc2luZyBFZ2xvdAoKVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBpbiBkZXRhaWwg dGhlIGZlYXR1cmVzIHRoYXQgRWdsb3QgcHJvdmlkZXMgYW5kCmhvdyBpdCBkb2VzIHRoYXQuICBJ dCBhbHNvIHByb3ZpZGVzIHJlZmVyZW5jZSBzZWN0aW9ucyBmb3IgRWdsb3QKY29tbWFuZHMgYW5k IHZhcmlhYmxlcy4KCkBtZW51CiogRWdsb3QgRmVhdHVyZXM6OgoqIEVnbG90IGFuZCBCdWZmZXJz OjoKKiBFZ2xvdCBDb21tYW5kczo6CiogRWdsb3QgVmFyaWFibGVzOjoKQGVuZCBtZW51CgpAbm9k ZSBFZ2xvdCBGZWF0dXJlcwpAc2VjdGlvbiBFZ2xvdCBGZWF0dXJlcwpAY2luZGV4IGZlYXR1cmVz IGluIGJ1ZmZlcnMgc3VwcG9ydGVkIGJ5IEVnbG90CgpXaGlsZSBFZ2xvdCBpcyBlbmFibGVkIGlu IGEgYnVmZmVyLCBpdCBpcyBzYWlkIHRvIGJlIEBkZm57bWFuYWdpbmd9Cml0LCB1c2luZyBMU1Ag YW5kIHRoZSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMgb2YgdGhlIGxhbmd1YWdlIHNlcnZlciB0bwph Y3RpdmF0ZSBhbmQgZW5oYW5jZSBtb2Rlcm4gSURFIGZlYXR1cmVzIGluIEVtYWNzLiAgU29tZSBv ZiB0aGVzZQpmZWF0dXJlcyBhcmUgcHJvdmlkZWQgdmlhIG90aGVyIEVtYWNzIHBhY2thZ2VzLCBh bmQgc29tZSB2aWEgRWdsb3QKZGlyZWN0bHkgKEBweHJlZntFZ2xvdCBDb21tYW5kc30pLgoKSGVy ZSdzIGFuIG92ZXJ2aWV3IG9mIHRoZSBtYWluIGZlYXR1cmVzIHRoYXQgRWdsb3QgcHJvdmlkZXM6 CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkF0LXBvaW50IGRvY3VtZW50YXRpb246IHdoZW4gcG9p bnQgaXMgYXQgb3IgbmVhciBhIHN5bWJvbCBvciBhbgppZGVudGlmaWVyLCB0aGUgaW5mb3JtYXRp b24gYWJvdXQgdGhlIHN5bWJvbC9pZGVudGlmaWVyLCBzdWNoIGFzIHRoZQpzaWduYXR1cmUgb2Yg YSBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QgYW5kIHNlcnZlci1nZW5lcmF0ZWQKZGlhZ25vc3Rp Y3MsIGlzIG1hZGUgYXZhaWxhYmxlIHZpYSB0aGUgRWxEb2MgcGFja2FnZQooQHB4cmVme1Byb2dy YW1taW5nIExhbmd1YWdlIERvYywsLCBlbWFjcywgR05VIEVtYWNzIE1hbnVhbH0pLiAgVGhpcwph bGxvd3MgbWFqb3IgbW9kZXMgdG8gcHJvdmlkZSBleHRlbnNpdmUgaGVscCBhbmQgZG9jdW1lbnRh dGlvbiBhYm91dAp0aGUgcHJvZ3JhbSBpZGVudGlmaWVycy4KCkBpdGVtCk9uLXRoZS1mbHkgZGlh Z25vc3RpYyBhbm5vdGF0aW9ucywgdmlhIHRoZSBGbHltYWtlIHBhY2thZ2UKKEBweHJlZntUb3As LCwgZmx5bWFrZSwgR05VIEZseW1ha2UgbWFudWFsfSkuICBFZ2xvdCdzIEZseW1ha2UgYmFja2Vu ZApyZXBsYWNlcyBvdGhlciBGbHltYWtlIGJhY2tlbmRzIHdoaWxlIGl0IGlzIG1hbmFnaW5nIGEg YnVmZmVyLCBhbmQKZW5oYW5jZXMgZGlhZ25vc3RpY3Mgd2l0aCBpbnRlcmFjdGl2ZSBzZXJ2ZXIt c3VnZ2VzdGVkIGZpeGVzCihzby1jYWxsZWQgQGRmbntjb2RlIGFjdGlvbnN9LCBAcHhyZWZ7RWds b3QgQ29tbWFuZHN9KQoKQGl0ZW0KRmluZGluZyBkZWZpbml0aW9ucyBhbmQgdXNlcyBvZiBpZGVu dGlmaWVycywgdmlhIFhyZWYgKEBweHJlZntYcmVmLCwsCmVtYWNzLCBHTlUgRW1hY3MgTWFudWFs fSkuICBFZ2xvdCBwcm92aWRlcyBhIGJhY2tlbmQgZm9yIHRoZSBYcmVmCmNhcGFiaWxpdGllcyB3 aGljaCB1c2VzIHRoZSBsYW5ndWFnZS1zZXJ2ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUKcHJvZ3Jh bSBzb3VyY2UuICBJbiBwYXJ0aWN1bGFyLCBpdCBlbGltaW5hdGVzIHRoZSBuZWVkIHRvIGdlbmVy YXRlCnRhZ3MgdGFibGVzIChAcHhyZWZ7VGFncyB0YWJsZXMsLCwgZW1hY3MsIEdOVSBFbWFjcyBN YW51YWx9KSBmb3IKbGFuZ3VhZ2VzIHdoaWNoIGFyZSBvbmx5IHN1cHBvcnRlZCBieSB0aGUgQGNv ZGV7ZXRhZ3N9IGJhY2tlbmQuCgpAaXRlbQpCdWZmZXIgbmF2aWdhdGlvbiBieSBuYW1lIG9mIGZ1 bmN0aW9uLCBjbGFzcywgbWV0aG9kLCBldGMuLCB2aWEgSW1lbnUKKEBweHJlZntJbWVudSwsLCBl bWFjcywgR05VIEVtYWNzIE1hbnVhbH0pLiAgRWdsb3QgcHJvdmlkZXMgaXRzIG93bgp2YXJpYW50 IG9mIEBjb2Rle2ltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbn0sIHdoaWNoIGdlbmVyYXRlcyB0 aGUKaW5kZXggZm9yIHRoZSBidWZmZXIgYmFzZWQgb24gbGFuZ3VhZ2Utc2VydmVyIHByb2dyYW0g c291cmNlIGFuYWx5c2lzLgoKQGl0ZW0KRW5oYW5jZWQgY29tcGxldGlvbiBvZiBzeW1ib2wgYXQg cG9pbnQgYnkgdGhlCkBjb2Rle2NvbXBsZXRpb24tYXQtcG9pbnR9IGNvbW1hbmQgKEBweHJlZntT eW1ib2wgQ29tcGxldGlvbiwsLCBlbWFjcywKR05VIEVtYWNzIE1hbnVhbH0pLiAgVGhpcyB1c2Vz IHRoZSBsYW5ndWFnZS1zZXJ2ZXIncyBwYXJzZXIgZGF0YSBmb3IKdGhlIGNvbXBsZXRpb24gY2Fu ZGlkYXRlcy4KCkBpdGVtCkF1dG9tYXRpYyByZWZvcm1hdHRpbmcgb2Ygc291cmNlIGNvZGUgYXMg eW91IHR5cGUgaXQuICBUaGlzIGlzIHNpbWlsYXIKdG8gd2hhdCB0aGUgQGNvZGV7ZWdsb3QtZm9y bWF0fSBjb21tYW5kIGRvZXMgKHNlZSBiZWxvdyksIGJ1dCBpcwphY3RpdmF0ZWQgYXV0b21hdGlj YWxseSBhcyB5b3UgdHlwZS4KCkBpdGVtCklmIGEgY29tcGxldGlvbiBwYWNrYWdlIHN1Y2ggYXMg QGNvZGV7Y29tcGFueS1tb2RlfSwgYSBwb3B1bGFyCnRoaXJkLXBhcnR5IGNvbXBsZXRpb24gcGFj a2FnZSAob3IgYW55IG90aGVyIGNvbXBsZXRpb24gcGFja2FnZSksIGlzCmluc3RhbGxlZCwgRWds b3QgZW5oYW5jZXMgaXQgYnkgcHJvdmlkaW5nIGNvbXBsZXRpb24gY2FuZGlkYXRlcyBiYXNlZApv biB0aGUgbGFuZ3VhZ2Utc2VydmVyIGFuYWx5c2lzIG9mIHRoZSBzb3VyY2UgY29kZS4KKEBjb2Rl e2NvbXBhbnktbW9kZX0gY2FuIGJlIGluc3RhbGxlZCBmcm9tIEdOVSBFTFBBLikKCkBpdGVtCklm IEBjb2Rle3lhc25pcHBldH0sIGEgcG9wdWxhciB0aGlyZC1wYXJ0eSBwYWNrYWdlIGZvciBhdXRv bWF0aWMKaW5zZXJ0aW9uIG9mIGNvZGUgdGVtcGxhdGVzIChzbmlwcGV0cyksIGlzIGluc3RhbGxl ZCwgYW5kIHRoZSBsYW5ndWFnZQpzZXJ2ZXIgc3VwcG9ydHMgc25pcHBldCBjb21wbGV0aW9uIGNh bmRpZGF0ZXMsIEVnbG90IGFycmFuZ2VzIGZvciB0aGUKY29tcGxldGlvbiBwYWNrYWdlIHRvIGlu c3RhbnRpYXRlIHRoZXNlIHNuaXBwZXRzIHVzaW5nCkBjb2Rle3lhc25pcHBldH0uICAoQGNvZGV7 eWFzbmlwcGV0fSBjYW4gYmUgaW5zdGFsbGVkIGZyb20gR05VIEVMUEEuKQoKQGl0ZW0KSWYgdGhl IHBvcHVsYXIgdGhpcmQtcGFydHkgcGFja2FnZSBAY29kZXttYXJrZG93bi1tb2RlfSBpcyBpbnN0 YWxsZWQsCmFuZCB0aGUgc2VydmVyIHByb3ZpZGVzIGF0LXBvaW50IGRvY3VtZW50YXRpb24gZm9y bWF0dGVkIGFzIE1hcmtkb3duCmluIGFkZGl0aW9uIHRvIHBsYWluIHRleHQsIEVnbG90IGFycmFu Z2VzIGZvciB0aGUgRWxEb2MgcGFja2FnZSB0bwplbnJpY2ggdGhpcyB0ZXh0IHdpdGggZm9udGlm aWNhdGlvbnMgYW5kIG90aGVyIG5pY2UgZm9ybWF0dGluZyBiZWZvcmUKZGlzcGxheWluZyBpdCB0 byB0aGUgdXNlci4gIFRoaXMgbWFrZXMgdGhlIGRvY3VtZW50YXRpb24gc2hvd24gYnkKRWxEb2Mg bG9vayBuaWNlciBvbiBkaXNwbGF5LgoKQGl0ZW0KSW4gYWRkaXRpb24gdG8gZW5hYmxpbmcgYW5k IGVuaGFuY2luZyBvdGhlciBmZWF0dXJlcyBhbmQgcGFja2FnZXMsCkVnbG90IGFsc28gcHJvdmlk ZXMgYSBudW1iZXIgb2YgdXNlciBjb21tYW5kcyBiYXNlZCBvbiB0aGUKY2FwYWJpbGl0aWVzIG9m IGxhbmd1YWdlIHNlcnZlcnMuICBFeGFtcGxlcyBpbmNsdWRlIHJlbmFtaW5nIHN5bWJvbHMKd2l0 aCBAa2Jke2VnbG90LXJlbmFtZX0gYW5kIGFza2luZyB0byBhdXRvbWF0aWNhbGx5IGNvcnJlY3Qg cHJvYmxlbXMKd2l0aCBAa2Jke2VnbG90LWNvZGUtYWN0aW9uc30uICBAeHJlZntFZ2xvdCBDb21t YW5kc30uCkBlbmQgaXRlbWl6ZQoKTm90IGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0 IG9mIExTUCBjYXBhYmlsaXRpZXMsIGJ1dCBtb3N0IG9mCnRoZW0gc3VwcG9ydCBlbm91Z2ggdG8g ZW5hYmxlIHRoZSBiYXNpYyBzZXQgb2YgZmVhdHVyZXMgbWVudGlvbmVkCmFib3ZlLgoKQ29udmVy c2VseSwgc29tZSBzZXJ2ZXJzIG9mZmVyIGNhcGFiaWxpdGllcyBmb3Igd2hpY2ggbm8gZXF1aXZh bGVudApFbWFjcyBwYWNrYWdlIGV4aXN0cyB5ZXQsIGFuZCBzbyBFZ2xvdCBjYW5ub3QgKHlldCkg ZXhwb3NlIHRoZXNlCmNhcGFiaWxpdGllcyB0byBFbWFjcyB1c2Vycy4gIEhvd2V2ZXIsIEB4cmVm e0V4dGVuZGluZyBFZ2xvdH0uCgpGaW5hbGx5LCBpdCdzIHdvcnRoIG5vdGluZyB0aGF0LCBieSBk ZWZhdWx0LCBFZ2xvdCBnZW5lcmFsbHkgdHVybnMgb24KYWxsIGZlYXR1cmVzIHRoYXQgaXQgQGVt cGh7Y2FufSB0dXJuIG9uLiAgSXQncyBwb3NzaWJsZSB0byBvcHQgb3V0IG9mCnNvbWUgZmVhdHVy ZXMgdmlhIHVzZXIgb3B0aW9ucyAoQHB4cmVme0N1c3RvbWl6aW5nIEVnbG90fSkgYW5kIGEgaG9v awp0aGF0IHJ1bnMgYWZ0ZXIgRWdsb3Qgc3RhcnRzIG1hbmFnaW5nIGEgYnVmZmVyIChAcHhyZWZ7 RWdsb3QgYW5kCkJ1ZmZlcnN9KS4KCkBub2RlIEVnbG90IGFuZCBCdWZmZXJzCkBzZWN0aW9uIEJ1 ZmZlcnMsIFByb2plY3RzLCBhbmQgRWdsb3QKQGNpbmRleCBidWZmZXJzIG1hbmFnZWQgYnkgRWds b3QKQGNpbmRleCBwcm9qZWN0cyBhbmQgRWdsb3QKCkBjaW5kZXggd29ya3NwYWNlCk9uZSBvZiB0 aGUgbWFpbiBzdHJvbmcgcG9pbnRzIG9mIHVzaW5nIGEgbGFuZ3VhZ2Ugc2VydmVyIGlzIHRoYXQg YQpsYW5ndWFnZSBzZXJ2ZXIgaGFzIGEgYnJvYWQgdmlldyBvZiB0aGUgcHJvZ3JhbTogaXQgY29u c2lkZXJzIG1vcmUKdGhhbiBqdXN0IHRoZSBzaW5nbGUgc291cmNlIGZpbGUgeW91IGFyZSBlZGl0 aW5nLiAgSWRlYWxseSwgdGhlCmxhbmd1YWdlIHNlcnZlciBzaG91bGQga25vdyBhYm91dCBhbGwg dGhlIHNvdXJjZSBmaWxlcyBvZiB5b3VyIHByb2dyYW0Kd2hpY2ggYXJlIHdyaXR0ZW4gaW4gdGhl IGxhbmd1YWdlIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiAgSW4gdGhlCmxhbmd1YWdlLXNlcnZl ciBwYXJsYW5jZSwgdGhlIHNldCBvZiB0aGUgc291cmNlIGZpbGVzIG9mIGEgcHJvZ3JhbSBpcwpr bm93biBhcyBhIEBkZm57d29ya3NwYWNlfS4gIFRoZSBFbWFjcyBlcXVpdmFsZW50IG9mIGEgd29y a3NwYWNlIGlzIGEKQGRmbntwcm9qZWN0fSAoQHB4cmVme1Byb2plY3RzLCwsIGVtYWNzLCBHTlUg RW1hY3MgTWFudWFsfSkuICBFZ2xvdApmdWxseSBzdXBwb3J0cyBFbWFjcyBwcm9qZWN0cywgYW5k IGNvbnNpZGVycyB0aGUgZmlsZSBpbiB3aG9zZSBidWZmZXIKRWdsb3QgaXMgdHVybmVkIG9uIGFz IGJlbG9uZ2luZyB0byBhIHByb2plY3QuICBJbiB0aGUgc2ltcGxlc3QgY2FzZSwKdGhhdCBmaWxl IGlzIHRoZSBlbnRpcmUgcHJvamVjdCwgaS5lLkA6IHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBh CnNpbmdsZSBmaWxlLiAgQnV0IHRoZXJlIGFyZSBvdGhlciBtb3JlIGNvbXBsZXggcHJvamVjdHM6 CgpAaXRlbWl6ZSBAYnVsbGV0CkBpdGVtCkEgc2luZ2xlLWRpcmVjdG9yeSBwcm9qZWN0OiBzZXZl cmFsIHNvdXJjZSBmaWxlcyBpbiBhIHNpbmdsZSBjb21tb24KZGlyZWN0b3J5LgoKQGl0ZW0KQSBW QyBwcm9qZWN0OiBzb3VyY2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaGllcmFyY2h5IHVuZGVyIHNv bWUgVkNTLAplLmcuQDogYSBWQ1MgcmVwb3NpdG9yeSAoQHB4cmVme1ZlcnNpb24gQ29udHJvbCws LCBlbWFjcywgR05VIEVtYWNzCk1hbnVhbH0pLgoKQGl0ZW0KQW4gRURFIHByb2plY3Q6IHNvdXJj ZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSBoaWVyYXJjaHkgbWFuYWdlZCB2aWEgdGhlCkVtYWNzIERl dmVsb3BtZW50IEVudmlyb25tZW50IChAcHhyZWZ7RURFLCwsIGVtYWNzLCBHTlUgRW1hY3MKTWFu dWFsfSkuCkBlbmQgaXRlbWl6ZQoKRWdsb3QgdXNlcyBFbWFjcydzIHByb2plY3QgbWFuYWdlbWVu dCBpbmZyYXN0cnVjdHVyZSB0byBmaWd1cmUgb3V0CndoaWNoIGZpbGVzIGFuZCBidWZmZXJzIGJl bG9uZyB0byB3aGF0IHByb2plY3QsIHNvIGFueSBraW5kIG9mIHByb2plY3QKc3VwcG9ydGVkIGJ5 IHRoYXQgaW5mcmFzdHJ1Y3R1cmUgaXMgYXV0b21hdGljYWxseSBzdXBwb3J0ZWQgYnkgRWdsb3Qu CgpXaGVuIEVnbG90IHN0YXJ0cyBhIHNlcnZlciBwcm9ncmFtLCBpdCBkb2VzIHNvIGluIHRoZSBw cm9qZWN0J3Mgcm9vdApkaXJlY3RvcnksIHdoaWNoIGlzIHVzdWFsbHkgdGhlIHRvcC1sZXZlbCBk aXJlY3Rvcnkgb2YgdGhlIHByb2plY3QncwpkaXJlY3RvcnkgaGllcmFyY2h5LiAgVGhpcyBlbnN1 cmVzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgaGFzIHRoZSBzYW1lCmNvbXByZWhlbnNpdmUgdmlldyBv ZiB0aGUgcHJvamVjdCdzIGZpbGVzIGFzIHlvdSBkby4KCkZvciBleGFtcGxlLCBpZiB5b3Ugdmlz aXQgdGhlIGZpbGUgQGZpbGV7fi9wcm9qZWN0cy9mb29leS9saWIveC5mb299CmFuZCBAZmlsZXt4 LmZvb30gYmVsb25ncyB0byBhIHByb2plY3Qgcm9vdGVkIGF0CkBmaWxle34vcHJvamVjdHMvZm9v ZXl9IChwZXJoYXBzIGJlY2F1c2UgYSBAZmlsZXsuZ2l0fSBkaXJlY3RvcnkKZXhpc3RzIHRoZXJl KSwgdGhlbiBAa2Jke00teCBlZ2xvdH0gY2F1c2VzIHRoZSBzZXJ2ZXIgcHJvZ3JhbSB0byBzdGFy dAp3aXRoIHRoYXQgcm9vdCBhcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIFRoZSBz ZXJ2ZXIgdGhlbiB3aWxsCmFuYWx5emUgbm90IG9ubHkgdGhlIGZpbGUgQGZpbGV7bGliL3guZm9v fSB5b3UgdmlzaXRlZCwgYnV0IGxpa2VseQphbHNvIGFsbCB0aGUgb3RoZXIgQGZpbGV7Ki5mb299 IGZpbGVzIHVuZGVyIHRoZQpAZmlsZXt+L3Byb2plY3RzL2Zvb2V5fSBkaXJlY3RvcnkuCgpJbiBz b21lIGNhc2VzLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIGEgZ2l2ZW4gcHJv amVjdCB3aWxsCm5lZWQgdG8gYmUgcHJvdmlkZWQgdG8gdGhlIGxhbmd1YWdlIHNlcnZlciB3aGVu IHN0YXJ0aW5nIGl0LiAgVGhlCnZhcmlhYmxlIEBjb2Rle2VnbG90LXdvcmtzcGFjZS1jb25maWd1 cmF0aW9ufSAoQHB4cmVme0N1c3RvbWl6aW5nCkVnbG90fSkgZXhpc3RzIGZvciB0aGF0IHB1cnBv c2UuICBJdCBzcGVjaWZpZXMgdGhlIHBhcmFtZXRlcnMgYW5kCnRoZWlyIHZhbHVlcyB0byBjb21t dW5pY2F0ZSB0byBlYWNoIGxhbmd1YWdlIHNlcnZlciB3aGljaCBuZWVkcyB0aGF0LgoKV2hlbiBF Z2xvdCBpcyBhY3RpdmUgZm9yIGEgcHJvamVjdCwgaXQgcGVyZm9ybXMgc2V2ZXJhbCBiYWNrZ3Jv dW5kCmFjdGl2aXRpZXMgb24gYmVoYWxmIG9mIHRoZSBwcm9qZWN0IGFuZCBpdHMgYnVmZmVyczoK CkBpdGVtaXplIEBidWxsZXQKQGNpbmRleCBtb2RlLWxpbmUgaW5kaWNhdGlvbiBvZiBsYW5ndWFn ZSBzZXJ2ZXIKQGNpbmRleCBtb3VzZSBjbGlja3Mgb24gbW9kZS1saW5lLCBhbmQgRWdsb3QKQHZp bmRleCBlZ2xvdC1tZW51CkBpdGVtCkFsbCBvZiB0aGUgcHJvamVjdCdzIGZpbGUtdmlzaXRpbmcg YnVmZmVycyB1bmRlciB0aGUgc2FtZSBtYWpvci1tb2RlCmFyZSBzZXJ2ZWQgYnkgYSBzaW5nbGUg bGFuZ3VhZ2Utc2VydmVyIGNvbm5lY3Rpb24uICAoSWYgdGhlIHByb2plY3QKdXNlcyBzZXZlcmFs IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGhlcmUgd2lsbCB1c3VhbGx5IGJlIGEgc2VwYXJhdGUK c2VydmVyIGNvbm5lY3Rpb24gZm9yIGVhY2ggZ3JvdXAgb2YgZmlsZXMgd3JpdHRlbiBpbiB0aGUg c2FtZSBsYW5ndWFnZQphbmQgdXNpbmcgdGhlIHNhbWUgRW1hY3MgbWFqb3ItbW9kZS4pICBFZ2xv dCBhZGRzIHRoZQpAc2FtcHtbZWdsb3Q6QHZhcntwcm9qZWN0fV19IGluZGljYXRpb24gdG8gdGhl IG1vZGUgbGluZSBvZgplYWNoIHN1Y2ggYnVmZmVyLCB3aGVyZSBAdmFye3NlcnZlcn0gaXMgdGhl IG5hbWUgb2YgdGhlIHNlcnZlciBhbmQKQHZhcntwcm9qZWN0fSBpZGVudGlmaWVzIHRoZSBwcm9q ZWN0IGJ5IGl0cyByb290IGRpcmVjdG9yeS4gIENsaWNraW5nCnRoZSBtb3VzZSBvbiB0aGUgRWds b3QgbW9kZS1saW5lIGluZGljYXRpb24gYWN0aXZhdGVzIGEgbWVudSB3aXRoCnNlcnZlci1zcGVj aWZpYyBpdGVtcy4KCkBpdGVtCkZvciBlYWNoIGJ1ZmZlciBpbiB3aGljaCBFZ2xvdCBpcyBhY3Rp dmUsIGl0IG5vdGlmaWVzIHRoZSBsYW5ndWFnZQpzZXJ2ZXIgdGhhdCBFZ2xvdCBpcyBAZGZue21h bmFnaW5nfSB0aGUgZmlsZSB2aXNpdGVkIGJ5IHRoYXQgYnVmZmVyLgpUaGlzIHRlbGxzIHRoZSBs YW5ndWFnZSBzZXJ2ZXIgdGhhdCB0aGUgZmlsZSdzIGNvbnRlbnRzIG9uIGRpc2sgbWF5IG5vCmxv bmdlciBiZSB1cC10by1kYXRlIGR1ZSB0byB1bnNhdmVkIGVkaXRzLiAgRWdsb3QgcmVwb3J0cyB0 byB0aGUKc2VydmVyIGFueSBjaGFuZ2VzIGluIHRoZSB0ZXh0IG9mIGVhY2ggbWFuYWdlZCBidWZm ZXIsIHRvIG1ha2UgdGhlCnNlcnZlciBhd2FyZSBvZiB1bnNhdmVkIGNoYW5nZXMuICBUaGlzIGlu Y2x1ZGVzIHlvdXIgZWRpdGluZyBvZiB0aGUKYnVmZmVyIGFuZCBhbHNvIGNoYW5nZXMgZG9uZSBh dXRvbWF0aWNhbGx5IGJ5IG90aGVyIEVtYWNzIGZlYXR1cmVzIGFuZApjb21tYW5kcy4gIEtpbGxp bmcgYSBidWZmZXIgcmVsaW5xdWlzaGVzIGl0cyBtYW5hZ2VtZW50IGJ5IEVnbG90IGFuZApub3Rp ZmllcyB0aGUgc2VydmVyIHRoYXQgdGhlIGZpbGUgb24gZGlzayBpcyB1cC10by1kYXRlLgoKQHZp bmRleCBlZ2xvdC1tYW5hZ2VkLW1vZGUtaG9vawpAdmluZGV4IGVnbG90LW1hbmFnZWQtcApAaXRl bQpFZ2xvdCB0dXJucyBvbiBhIHNwZWNpYWwgbWlub3IgbW9kZSBpbiBlYWNoIGJ1ZmZlciBpdCBt YW5hZ2VzLiAgVGhpcwptaW5vciBtb2RlIGVuc3VyZXMgdGhlIHNlcnZlciBpcyBub3RpZmllZCBh Ym91dCBmaWxlcyBFZ2xvdCBtYW5hZ2VzLAphbmQgYWxzbyBhcnJhbmdlcyBmb3Igb3RoZXIgRW1h Y3MgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVnbG90CihAcHhyZWZ7RWdsb3QgRmVhdHVyZXN9KSB0 byByZWNlaXZlIGluZm9ybWF0aW9uIGZyb20gdGhlIGxhbmd1YWdlCnNlcnZlciwgYnkgY2hhbmdp bmcgdGhlIHNldHRpbmdzIG9mIHRoZXNlIGZlYXR1cmVzLiAgVW5saWtlIG90aGVyCm1pbm9yLW1v ZGVzLCB0aGlzIHNwZWNpYWwgbWlub3IgbW9kZSBpcyBub3QgYWN0aXZhdGVkIG1hbnVhbGx5IGJ5 IHRoZQp1c2VyLCBidXQgYXV0b21hdGljYWxseSwgYXMgdGhlIHJlc3VsdCBvZiBzdGFydGluZyBh biBFZ2xvdCBzZXNzaW9uCmZvciB0aGUgYnVmZmVyLiAgSG93ZXZlciwgdGhpcyBtaW5vciBtb2Rl IHByb3ZpZGVzIGEgaG9vayB2YXJpYWJsZQpAY29kZXtlZ2xvdC1tYW5hZ2VkLW1vZGUtaG9va30g dGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUgdGhlIEVnbG90Cm1hbmFnZW1lbnQgb2YgdGhl IGJ1ZmZlci4gIFRoaXMgaG9vayBpcyBydW4gYm90aCB3aGVuIHRoZSBtaW5vciBtb2RlCmlzIHR1 cm5lZCBvbiBhbmQgd2hlbiBpdCdzIHR1cm5lZCBvZmY7IHVzZSB0aGUgdmFyaWFibGUKQGNvZGV7 ZWdsb3QtbWFuYWdlZC1wfSB0byB0ZWxsIGlmIGN1cnJlbnQgYnVmZmVyIGlzIHN0aWxsIGJlaW5n Cm1hbmFnZWQgb3Igbm90LiAgV2hlbiBFZ2xvdCBzdG9wcyBtYW5hZ2luZyB0aGUgYnVmZmVyLCB0 aGlzIG1pbm9yIG1vZGUKaXMgdHVybmVkIG9mZiwgYW5kIGFsbCB0aGUgc2V0dGluZ3MgdGhhdCBF Z2xvdCBjaGFuZ2VkIGFyZSByZXN0b3JlZCB0bwp0aGVpciBvcmlnaW5hbCB2YWx1ZXMuCgpAaXRl bQpXaGVuIHlvdSB2aXNpdCBhIGZpbGUgdW5kZXIgdGhlIHNhbWUgcHJvamVjdCwgd2hldGhlciBh biBleGlzdGluZyBvciBhCm5ldyBmaWxlLCBpdHMgYnVmZmVyIGlzIGF1dG9tYXRpY2FsbHkgYWRk ZWQgdG8gdGhlIHNldCBvZiBidWZmZXJzCm1hbmFnZWQgYnkgRWdsb3QsIGFuZCB0aGUgc2VydmVy IHdoaWNoIHN1cHBvcnRzIHRoZSBidWZmZXIncwptYWpvci1tb2RlIGlzIG5vdGlmaWVkIGFib3V0 IHRoYXQuICBUaHVzLCB2aXNpdGluZyBhIG5vbi1leGlzdGVudCBmaWxlCkBmaWxley9ob21lL2pv ZS9wcm9qZWN0cy9mb29leS9saWIveS5mb299IGluIHRoZSBhYm92ZSBleGFtcGxlIHdpbGwKbm90 aWZ5IHRoZSBzZXJ2ZXIgb2YgdGhlIEBmaWxleyouZm9vfSBmaWxlcycgbGFuZ3VhZ2UgdGhhdCBh IG5ldyBmaWxlCndhcyBhZGRlZCB0byB0aGUgcHJvamVjdCwgZXZlbiBiZWZvcmUgdGhlIGZpbGUg YXBwZWFycyBvbiBkaXNrLiAgVGhlCnNwZWNpYWwgRWdsb3QgbWlub3IgbW9kZSBpcyBhbHNvIHR1 cm5lZCBvbiBhdXRvbWF0aWNhbGx5IGluIHRoZSBidWZmZXIKdmlzaXRpbmcgdGhlIGZpbGUuCkBl bmQgaXRlbWl6ZQoKQG5vZGUgRWdsb3QgQ29tbWFuZHMKQHNlY3Rpb24gRWdsb3QgQ29tbWFuZHMK QGNpbmRleCBjb21tYW5kcywgRWdsb3QKClRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHJlZmVyZW5j ZSBmb3IgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBFZ2xvdApjb21tYW5kczoKCkBmdGFibGUgQGNv ZGUKQGl0ZW0gTS14IGVnbG90ClRoaXMgY29tbWFuZCBhZGRzIHRoZSBjdXJyZW50IGJ1ZmZlciBh bmQgdGhlIGZpbGUgaXQgdmlzaXRzIHRvIHRoZQpncm91cCBvZiBidWZmZXJzIGFuZCBmaWxlcyBt YW5hZ2VkIGJ5IEVnbG90IG9uIGJlaGFsZiBvZiBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4g IElmIGEgbGFuZ3VhZ2Ugc2VydmVyIGZvciB0aGUgYnVmZmVyJ3MKQGNvZGV7bWFqb3ItbW9kZX0g KEBweHJlZntNYWpvciBNb2RlcywsLCBlbWFjcywgR05VIEVtYWNzIE1hbnVhbH0pIGlzCm5vdCB5 ZXQgcnVubmluZywgaXQgd2lsbCBiZSBzdGFydGVkOyBvdGhlcndpc2UgdGhlIGJ1ZmZlciBhbmQg aXRzIGZpbGUKd2lsbCBiZSBhZGRlZCB0byB0aG9zZSBtYW5hZ2VkIGJ5IGFuIGV4aXN0aW5nIHNl cnZlciBzZXNzaW9uLgoKVGhlIGNvbW1hbmQgYXR0ZW1wdHMgdG8gZmlndXJlIG91dCB0aGUgYnVm ZmVyJ3MgbWFqb3IgbW9kZSBhbmQgdGhlCnN1aXRhYmxlIGxhbmd1YWdlIHNlcnZlcjsgaW4gY2Fz ZSBpdCBmYWlscywgaXQgbWlnaHQgcHJvbXB0IGZvciB0aGUKbWFqb3IgbW9kZSB0byB1c2UgYW5k IGZvciB0aGUgc2VydmVyIHByb2dyYW0gdG8gc3RhcnQuICBJZiBpbnZva2VkCndpdGggQGtiZHtD LXV9LCBpdCBhbHdheXMgcHJvbXB0cyBmb3IgdGhlIHNlcnZlciBwcm9ncmFtLCBhbmQgaWYKaW52 b2tlZCB3aXRoIEBrYmR7Qy11IEMtdX0sIGl0IGFsc28gcHJvbXB0cyBmb3IgdGhlIG1ham9yIG1v ZGUuCgpJZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGlzIHN1Y2Nlc3NmdWxseSBzdGFydGVkIGFuZCBj b250YWN0ZWQsIHRoaXMKY29tbWFuZCBhcnJhbmdlcyBmb3IgYW55IG90aGVyIGJ1ZmZlcnMgYmVs b25naW5nIHRvIHRoZSBzYW1lIHByb2plY3QKYW5kIHVzaW5nIHRoZSBzYW1lIG1ham9yIG1vZGUg dG8gdXNlIHRoZSBzYW1lIGxhbmd1YWdlLXNlcnZlciBzZXNzaW9uLgpUaGF0IGluY2x1ZGVzIGFu eSBidWZmZXJzIGNyZWF0ZWQgYnkgdmlzaXRpbmcgZmlsZXMgYWZ0ZXIgdGhpcyBjb21tYW5kCnN1 Y2NlZWRzIHRvIGNvbm5lY3QgdG8gYSBsYW5ndWFnZSBzZXJ2ZXIuCgpBbGwgdGhlIEVtYWNzIGZl YXR1cmVzIHRoYXQgYXJlIGNhcGFibGUgb2YgdXNpbmcgRWdsb3Qgc2VydmljZXMKKEBweHJlZntF Z2xvdCBGZWF0dXJlc30pIGFyZSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgYnkgdGhpcyBjb21t YW5kCnRvIHN0YXJ0IHVzaW5nIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdmlhIEVnbG90LiAgVG8gY3Vz dG9taXplIHdoaWNoCkVtYWNzIGZlYXR1cmVzIHdpbGwgYmUgY29uZmlndXJlZCB0byB1c2UgRWds b3QsIHVzZSB0aGUKQGNvZGV7ZWdsb3Qtc3RheS1vdXQtb2Z9IG9wdGlvbiAoQHB4cmVme0N1c3Rv bWl6aW5nIEVnbG90fSkuCgpAaXRlbSBNLXggZWdsb3QtcmVjb25uZWN0ClRoaXMgY29tbWFuZCBz aHV0cyBkb3duIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlCnNlcnZlciBh bmQgaW1tZWRpYXRlbHkgcmVzdGFydHMgaXQgdXNpbmcgdGhlIHNhbWUgb3B0aW9ucyB1c2VkCm9y aWdpbmFsbHkuICBUaGlzIGNhbiBzb21ldGltZXMgYmUgdXNlZnVsIHRvIHVuY2xvZyBhIHBhcnRp YWxseQptYWxmdW5jdGlvbmluZyBzZXJ2ZXIgY29ubmVjdGlvbi4KCkBpdGVtIE0teCBlZ2xvdC1z aHV0ZG93bgpUaGlzIGNvbW1hbmQgc2h1dHMgZG93biBhIGxhbmd1YWdlIHNlcnZlci4gIEl0IHBy b21wdHMgZm9yIGEgbGFuZ3VhZ2UKc2VydmVyIHRvIHNodXQgZG93biAodW5sZXNzIHRoZXJlJ3Mg b25seSBvbmUgc2VydmVyIHNlc3Npb24sIGFuZCBpdAptYW5hZ2VzIHRoZSBjdXJyZW50IGJ1ZmZl cikuICBUaGVuIHRoZSBjb21tYW5kIHNodXRzIGRvd24gdGhlIHNlcnZlcgphbmQgc3RvcHMgbWFu YWdpbmcgdGhlIGJ1ZmZlcnMgdGhlIHNlcnZlciB3YXMgdXNlZCBmb3IuICBFbWFjcwpmZWF0dXJl cyAoQHB4cmVme0VnbG90IEZlYXR1cmVzfSkgdGhhdCBFZ2xvdCBjb25maWd1cmVkIHRvIHdvcmsg d2l0aAp0aGUgbGFuZ3VhZ2Ugc2VydmVyIGFyZSByZXN0b3JlZCBiYWNrIHRvIHRoZWlyIG9yaWdp bmFsIGNvbmZpZ3VyYXRpb24uCgpOb3JtYWxseSwgdGhpcyBjb21tYW5kIGtpbGxzIHRoZSBidWZm ZXJzIHVzZWQgZm9yIGNvbW11bmljYXRpbmcgd2l0aAp0aGUgbGFuZ3VhZ2Ugc2VydmVyLCBidXQg aWYgaW52b2tlZCB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IEBrYmR7Qy11fSwKdGhlIGNvbW1hbmQg ZG9lc24ndCBraWxsIHRob3NlIGJ1ZmZlcnMsIGFsbG93aW5nIHRoZW0gdG8gYmUgdXNlZCBmb3IK ZGlhZ25vc3RpY3MgYW5kIHByb2JsZW0gcmVwb3J0aW5nIChAcHhyZWZ7VHJvdWJsZXNob290aW5n IEVnbG90fSkuCgpAaXRlbSBNLXggZWdsb3Qtc2h1dGRvd24tYWxsClRoaXMgY29tbWFuZCBzaHV0 cyBkb3duIGFsbCB0aGUgbGFuZ3VhZ2Ugc2VydmVycyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQKRW1h Y3Mgc2Vzc2lvbi4gIEFzIHdpdGggQGNvZGV7ZWdsb3Qtc2h1dGRvd259LCBpbnZva2luZyB0aGlz IGNvbW1hbmQKd2l0aCBhIHByZWZpeCBhcmd1bWVudCBhdm9pZHMga2lsbGluZyB0aGUgYnVmZmVy cyB1c2VkIGZvcgpjb21tdW5pY2F0aW9ucyB3aXRoIHRoZSBsYW5ndWFnZSBzZXJ2ZXJzLgoKQGl0 ZW0gTS14IGVnbG90LXJlbmFtZQpUaGlzIGNvbW1hbmQgcmVuYW1lcyB0aGUgcHJvZ3JhbSBzeW1i b2wgKGEuay5hLkA6IEBkZm57aWRlbnRpZmllcn0pIGF0CnBvaW50IHRvIGFub3RoZXIgbmFtZS4g IEl0IHByb21wdHMgZm9yIHRoZSBuZXcgbmFtZSBvZiB0aGUgc3ltYm9sLCBhbmQKdGhlbiBtb2Rp ZmllcyBhbGwgdGhlIGZpbGVzIGluIHRoZSBwcm9qZWN0IHdoaWNoIGFyZSBtYW5hZ2VkIGJ5IHRo ZQpsYW5ndWFnZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyIHRvIGltcGxlbWVudCB0aGUg cmVuYW1pbmcuCgpAaXRlbSBNLXggZWdsb3QtZm9ybWF0ClRoaXMgY29tbWFuZCByZWZvcm1hdHMg dGhlIGFjdGl2ZSByZWdpb24gYWNjb3JkaW5nIHRvIHRoZQpsYW5ndWFnZS1zZXJ2ZXIgcnVsZXMu ICBJZiBubyByZWdpb24gaXMgYWN0aXZlLCBpdCByZWZvcm1hdHMgdGhlCmVudGlyZSBjdXJyZW50 IGJ1ZmZlci4KCkBpdGVtIE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVyClRoaXMgY29tbWFuZCByZWZv cm1hdHMgdGhlIGN1cnJlbnQgYnVmZmVyLCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMKQGNvZGV7ZWds b3QtZm9ybWF0fSBkb2VzLgoKQGNpbmRleCBjb2RlIGFjdGlvbnMKQGl0ZW0gTS14IGVnbG90LWNv ZGUtYWN0aW9ucwpAaXRlbXggTS14IGVnbG90LWNvZGUtYWN0aW9uLW9yZ2FuaXplLWltcG9ydHMK QGl0ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2ZpeApAaXRlbXggTS14IGVnbG90LWNv ZGUtYWN0aW9uLWV4dHJhY3QKQGl0ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1pbmxpbmUKQGl0 ZW14IE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1yZXdyaXRlClRoZXNlIGNvbW1hbmRzIGFsbG93IHlv dSB0byBpbnZva2UgdGhlIHNvLWNhbGxlZCBAZGZue2NvZGUgYWN0aW9uc306CnJlcXVlc3RzIGZv ciB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvIHByb3ZpZGUgZWRpdGluZyBjb21tYW5kcyBmb3IKY29y cmVjdGluZywgcmVmYWN0b3Jpbmcgb3IgYmVhdXRpZnlpbmcgeW91ciBjb2RlLiAgVGhlc2UgY29t bWFuZHMgbWF5CmFmZmVjdCBtb3JlIHRoYW4gb25lIHZpc2l0ZWQgZmlsZSBiZWxvbmdpbmcgdG8g dGhlIHByb2plY3QuCgpUaGUgY29tbWFuZCBAY29kZXtlZ2xvdC1jb2RlLWFjdGlvbnN9IGFza3Mg dGhlIHNlcnZlciBpZiB0aGVyZSBhcmUgYW55CmNvZGUgYWN0aW9ucyBmb3IgYW55IHBvaW50IGlu IHRoZSBidWZmZXIgb3IgY29udGFpbmVkIGluIHRoZSBhY3RpdmUKcmVnaW9uLiAgSWYgdGhlcmUg YXJlLCB5b3UgaGF2ZSB0aGUgY2hvaWNlIHRvIGV4ZWN1dGUgb25lIG9mIHRoZW0gdmlhCnRoZSBt aW5pYnVmZmVyLgoKQSBjb21tb24gdXNlIG9mIGNvZGUgYWN0aW9ucyBpcyBmaXhpbmcgdGhlIEZs eW1ha2UgZXJyb3IgZGlhZ25vc3RpY3MKaXNzdWVkIGJ5IEVnbG90IChAcHhyZWZ7VG9wLCwsIGZs eW1ha2UsIEdOVSBGbHltYWtlIG1hbnVhbH0pLgpDbGlja2luZyBvbiBhIGRpYWdub3N0aWMgd2l0 aCBAa2Jke21vdXNlLTJ9IGludm9rZXMKQGNvZGV7ZWdsb3QtY29kZS1hY3Rpb25zLWF0LW1vdXNl fSB3aGljaCBwb3BzIHVwIGEgbWVudSBvZiBhdmFpbGFibGUKY29kZSBhY3Rpb25zLiAgVGhlIHZh cmlhYmxlIEBjb2Rle2VnbG90LWRpYWdub3N0aWNzLW1hcH0gY2FuIGJlIHVzZWQKdG8gY29udHJv bCB0aGUgbW91c2UgYmluZGluZy4KCk90aGVyIGNvbW1hbmRzIGV4ZWN1dGUgYSBzcGVjaWZpYyBj b2RlIGFjdGlvbi4gIEZvciBleGFtcGxlLApAY29kZXtlZ2xvdC1jb2RlLWFjdGlvbi1vcmdhbml6 ZS1pbXBvcnRzfSByZWFycmFuZ2VzIHRoZSBwcm9ncmFtJ3MKQGRmbntpbXBvcnRzfS0tLWRlY2xh cmF0aW9ucyBvZiBtb2R1bGVzIHdob3NlIGNhcGFiaWxpdGllcyB0aGUgcHJvZ3JhbQp1c2VzLgoK QGNpbmRleCBpbmxheSBoaW50cwpAaXRlbSBNLXggZWdsb3QtaW5sYXktaGludHMtbW9kZQpUaGlz IGNvbW1hbmQgdG9nZ2xlcyBMU1AgQGRmbntpbmxheSBoaW50c30gb24gYW5kIG9mZiBmb3IgdGhl IGN1cnJlbnQKYnVmZmVyLiAgSW5sYXkgaGludHMgYXJlIHNtYWxsIHRleHQgYW5ub3RhdGlvbnMg dG8gc3BlY2lmaWMgcGFydHMgb2YKdGhlIHdob2xlIGJ1ZmZlciwgbm90IHVubGlrZSBkaWFnbm9z dGljcywgYnV0IGRlc2lnbmVkIHRvIGhlbHAKcmVhZGFiaWxpdHkgaW5zdGVhZCBvZiBpbmRpY2F0 aW5nIHByb2JsZW1zLiAgRm9yIGV4YW1wbGUsIGEgQysrCmxhbmd1YWdlIHNlcnZlciBjYW4gc2Vy dmUgaGludHMgYWJvdXQgcG9zaXRpb25hbCBwYXJhbWV0ZXIgbmFtZXMgaW4KZnVuY3Rpb24gY2Fs bHMgYW5kIGEgdmFyaWFibGUncyBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgdHlwZS4gIElubGF5Cmhp bnRzIGhlbHAgdGhlIHVzZXIgbm90IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2UgdGhpbmdzIGJ5IGhl YXJ0LgpAZW5kIGZ0YWJsZQoKVGhlIGZvbGxvd2luZyBFZ2xvdCBjb21tYW5kcyBhcmUgdXNlZCBs ZXNzIGNvbW1vbmx5LCBtb3N0bHkgZm9yCmRpYWdub3N0aWMgYW5kIHRyb3VibGVzaG9vdGluZyBw dXJwb3NlczoKCkBmdGFibGUgQGNvZGUKQGl0ZW0gTS14IGVnbG90LWV2ZW50cy1idWZmZXIKVGhp cyBjb21tYW5kIHBvcHMgdXAgdGhlIGV2ZW50cyBidWZmZXIgdXNlZCBmb3IgY29tbXVuaWNhdGlv biB3aXRoIHRoZQpsYW5ndWFnZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgoKQGl0ZW0g TS14IGVnbG90LXN0ZGVyci1idWZmZXIKVGhpcyBjb21tYW5kIHBvcHMgdXAgdGhlIGJ1ZmZlciB3 aXRoIHRoZSBkZWJ1ZyBpbmZvIHByaW50ZWQgYnkgdGhlCmxhbmd1YWdlIHNlcnZlciB0byBpdHMg c3RhbmRhcmQgZXJyb3Igc3RyZWFtLgoKQGl0ZW0gTS14IGVnbG90LWZvcmdldC1wZW5kaW5nLWNv bnRpbnVhdGlvbnMKRm9yZ2V0IHBlbmRpbmcgcmVxdWVzdHMgZm9yIHRoZSBzZXJ2ZXIgb2YgdGhl IGN1cnJlbnQgYnVmZmVyLgpAYyBGSVhNRTogQmV0dGVyIGRlc2NyaXB0aW9uIG9mIHRoZSBuZWVk LgoKQGl0ZW0gTS14IGVnbG90LXNpZ25hbC1kaWRDaGFuZ2VDb25maWd1cmF0aW9uClRoaXMgY29t bWFuZCB1cGRhdGVzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBhY2NvcmRpbmcg dG8KdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIEBjb2Rle2VnbG90LXdvcmtzcGFj ZS1jb25maWd1cmF0aW9ufQooQHB4cmVme0N1c3RvbWl6aW5nIEVnbG90fSkuCgpAaXRlbSBNLXgg ZWdsb3QtY2xlYXItc3RhdHVzCkNsZWFyIHRoZSBsYXN0IEpTT05SUEMgZXJyb3IgZm9yIHRoZSBz ZXJ2ZXIgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLgpFZ2xvdCBrZWVwcyB0cmFjayBvZiBlcnJvbmVv dXMgc2l0dWF0aW9ucyBlbmNvdW50ZXJlZCBieSB0aGUgc2VydmVyIGluCml0cyBtb2RlLWxpbmUg aW5kaWNhdGlvbiBzbyB0aGF0IHRoZSB1c2VyIG1heSBpbnNwZWN0IHRoZQpjb21tdW5pY2F0aW9u IGxlYWRpbmcgdXAgdG8gaXQgKEBweHJlZntUcm91Ymxlc2hvb3RpbmcgRWdsb3R9KS4gIElmCnRo ZSBzaXR1YXRpb24gaXMgZGVlbWVkIHVuaW50ZXJlc3Rpbmcgb3IgdGVtcG9yYXJ5LCB0aGlzIGNv bW1hbmQgY2FuCmJlIHVzZWQgdG8gYGBmb3JnZXQnJyB0aGUgZXJyb3IuICBOb3RlIHRoYXQgdGhl IGNvbW1hbmQgQGNvZGV7TS14CmVnbG90LXJlY29ubmVjdH0gY2FuIHNvbWV0aW1lcyBiZSB1c2Vk IHRvIHVuY2xvZyBhIHRlbXBvcmFyaWx5Cm1hbGZ1bmN0aW9uaW5nIHNlcnZlci4KQGVuZCBmdGFi bGUKCkFzIGRlc2NyaWJlZCBpbiBAcmVme0VnbG90IEZlYXR1cmVzfSBtb3N0IGZlYXR1cmVzIGFz c29jaWF0ZWQgd2l0aApFZ2xvdCBhcmUgYWN0dWFsbHkgcHJvdmlkZWQgYnkgb3RoZXIgRW1hY3Mg cGFja2FnZXMgYW5kIGZlYXR1cmVzLCBhbmQKRWdsb3Qgb25seSBlbmhhbmNlcyB0aGVtIGJ5IGFs bG93aW5nIHRoZW0gdG8gdXNlIHRoZSBpbmZvcm1hdGlvbgpjb21pbmcgZnJvbSB0aGUgbGFuZ3Vh Z2Ugc2VydmVycy4gIEZvciBjb21wbGV0ZW5lc3MsIGhlcmUncyB0aGUgbGlzdApvZiBjb21tYW5k cyBvZiB0aG9zZSBvdGhlciBwYWNrYWdlcyB0aGF0IGFyZSB2ZXJ5IGNvbW1vbmx5IHVzZWQgaW4K RWdsb3QtbWFuYWdlZCBidWZmZXJzOgoKQGMgTm90IEBmdGFibGUsIGJlY2F1c2UgdGhlIGluZGV4 IGVudHJpZXMgc2hvdWxkIG1lbnRpb24gRWdsb3QKQHRhYmxlIEBjb2RlCkBjaW5kZXggZWxkb2Ms IGFuZCBFZ2xvdApAY2luZGV4IGRvY3VtZW50YXRpb24gdXNpbmcgRWdsb3QKQGl0ZW0gTS14IGVs ZG9jCkFzayB0aGUgRWxEb2Mgc3lzdGVtIGZvciBoZWxwIGF0IHBvaW50LgoKQGNpbmRleCBmbHlt YWtlLCBhbmQgRWdsb3QKQGNpbmRleCBvbi10aGUtZmx5IGRpYWdub3N0aWNzIHVzaW5nIEVnbG90 CkBpdGVtIE0teCBmbHltYWtlLXNob3ctYnVmZmVyLWRpYWdub3N0aWNzCkFzayBGbHltYWtlIHN5 c3RlbSB0byBkaXNwbGF5IGRpYWdub3N0aWNzIGZvciB0aGUgY3VycmVudCBidWZmZXIuCgpAaXRl bSBNLXggZmx5bWFrZS1zaG93LXByb2plY3QtZGlhZ25vc3RpY3MKQXNrIEZseW1ha2UgdG8gbGlz dCBkaWFnbm9zdGljcyBmb3IgYWxsIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudApwcm9qZWN0LgoK QGNpbmRleCB4cmVmLCBhbmQgRWdsb3QKQGNpbmRleCBmaW5kaW5nIGRlZmluaXRpb25zIG9mIGlk ZW50aWZpZXJzIHVzaW5nIEVnbG90CkBpdGVtIE0teCB4cmVmLWZpbmQtZGVmaW5pdGlvbnMKQXNr IFhyZWYgdG8gZ28gdGhlIGRlZmluaXRpb24gb2YgdGhlIGlkZW50aWZpZXIgYXQgcG9pbnQuCgpA Y2luZGV4IGltZW51IG5hdmlnYXRpb24gdXNpbmcgRWdsb3QKQGl0ZW0gTS14IGltZW51CkxldCB0 aGUgdXNlciBuYXZpZ2F0ZSB0aGUgcHJvZ3JhbSBzb3VyY2UgY29kZSB1c2luZyBidWZmZXIgaW5k ZXgsCmNhdGVnb3JpemluZyBwcm9ncmFtIGVsZW1lbnRzIGJ5IHN5bnRhY3RpYyBjbGFzcyAoY2xh c3MsIG1ldGhvZCwKdmFyaWFibGUsIGV0Yy4pIGFuZCBvZmZlcmluZyBjb21wbGV0aW9uLgoKQGNp bmRleCBzeW1ib2wgY29tcGxldGlvbiB1c2luZyBFZ2xvdApAaXRlbSBNLXggY29tcGxldGlvbi1h dC1wb2ludApSZXF1ZXN0IGNvbXBsZXRpb24gb2YgdGhlIHN5bWJvbCBhdCBwb2ludC4KQGVuZCB0 YWJsZQoKQG5vZGUgRWdsb3QgVmFyaWFibGVzCkBzZWN0aW9uIEVnbG90IFZhcmlhYmxlcwpAY2lu ZGV4IHZhcmlhYmxlcywgRWdsb3QKClRoaXMgc2VjdGlvbiBwcm92aWRlcyBhIHJlZmVyZW5jZSBm b3IgdGhlIEVnbG90IHVzZXIgb3B0aW9ucy4KCkB2dGFibGUgQGNvZGUKQGl0ZW0gZWdsb3QtYXV0 b3JlY29ubmVjdApUaGlzIG9wdGlvbiBjb250cm9scyB0aGUgYWJpbGl0eSB0byByZWNvbm5lY3Qg YXV0b21hdGljYWxseSB0byB0aGUKbGFuZ3VhZ2Ugc2VydmVyIHdoZW4gRWdsb3QgZGV0ZWN0cyB0 aGF0IHRoZSBzZXJ2ZXIgcHJvY2VzcyB0ZXJtaW5hdGVkCnVuZXhwZWN0ZWRseS4gIFRoZSBkZWZh dWx0IHZhbHVlIEBjb2RlezN9IG1lYW5zIHRvIGF0dGVtcHQgcmVjb25uZWN0aW9uIG9ubHkKaWYg dGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbiBsYXN0ZWQgZm9yIG1vcmUgdGhhbiB0 aGF0IG51bWJlcgpvZiBzZWNvbmRzOyBhIGRpZmZlcmVudCBwb3NpdGl2ZSB2YWx1ZSBjaGFuZ2Vz IHRoZSBtaW5pbWFsIGxlbmd0aCBvZgp0aGUgY29ubmVjdGlvbiB0byB0cmlnZ2VyIHJlY29ubmVj dGlvbi4gIEEgdmFsdWUgb2YgQGNvZGV7dH0gbWVhbnMKYWx3YXlzIHJlY29ubmVjdCBhdXRvbWF0 aWNhbGx5LCBhbmQgQGNvZGV7bmlsfSBtZWFucyBuZXZlciByZWNvbm5lY3QKKGluIHdoaWNoIGNh c2UgeW91IHdpbGwgbmVlZCB0byByZWNvbm5lY3QgbWFudWFsbHkgdXNpbmcgQGtiZHtNLXgKZWds b3R9KS4KCkBpdGVtIGVnbG90LWNvbm5lY3QtdGltZW91dApUaGlzIHNwZWNpZmllcyB0aGUgbnVt YmVyIG9mIHNlY29uZHMgYmVmb3JlIGNvbm5lY3Rpb24gYXR0ZW1wdCB0byBhCmxhbmd1YWdlIHNl cnZlciB0aW1lcyBvdXQuICBUaGUgdmFsdWUgb2YgQGNvZGV7bmlsfSBtZWFucyBuZXZlciB0aW1l Cm91dC4gIFRoZSBkZWZhdWx0IGlzIDMwIHNlY29uZHMuCgpAaXRlbSBlZ2xvdC1zeW5jLWNvbm5l Y3QKVGhpcyBzZXR0aW5nIGlzIG1haW5seSBpbXBvcnRhbnQgZm9yIGNvbm5lY3Rpb25zIHdoaWNo IGFyZSBzbG93IHRvCmVzdGFibGlzaC4gIFdoZXJlYXMgdGhlIHZhcmlhYmxlIEBjb2Rle2VnbG90 LWNvbm5lY3QtdGltZW91dH0gY29udHJvbHMKaG93IGxvbmcgdG8gd2FpdCBmb3IsIHRoaXMgdmFy aWFibGUgY29udHJvbHMgd2hldGhlciB0byBibG9jayBFbWFjcydzCnVzZXIgaW50ZXJmYWNlIHdo aWxlIHdhaXRpbmcuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAY29kZXszfTsgYSBwb3NpdGl2ZQp2 YWx1ZSBtZWFucyBibG9jayBmb3IgdGhhdCBtYW55IHNlY29uZHMsIHRoZW4gd2FpdCBmb3IgdGhl IGNvbm5lY3Rpb24KaW4gdGhlIGJhY2tncm91bmQuICBUaGUgdmFsdWUgb2YgQGNvZGV7dH0gbWVh bnMgYmxvY2sgZHVyaW5nIHRoZSB3aG9sZQp3YWl0aW5nIHBlcmlvZC4gIFRoZSB2YWx1ZSBvZiBA Y29kZXtuaWx9IG9yIEBjb2RlezB9IG1lYW5zIGRvbid0IGJsb2NrIGF0CmFsbCBkdXJpbmcgdGhl IHdhaXRpbmcgcGVyaW9kLgoKQGl0ZW0gZWdsb3QtZXZlbnRzLWJ1ZmZlci1jb25maWcKVGhpcyBj b25maWd1cmVzIHRoZSBzaXplIGFuZCBmb3JtYXQgb2YgdGhlIEVnbG90IGV2ZW50cyBidWZmZXIu CkB4cmVme0VnbG90IENvbW1hbmRzLCBlZ2xvdC1ldmVudHMtYnVmZmVyfSwgZm9yIGhvdyB0byBh Y2Nlc3MgdGhhdApidWZmZXIuICBJZiB0aGUgdmFsdWUgaXMgY2hhbmdlZCwgdGhlIGNvbm5lY3Rp b24gc2hvdWxkIGJlIHJlc3RhcnRlZAp1c2luZyBAa2Jke00teCBlZ2xvdC1yZWNvbm5lY3R9IGZv ciB0aGUgbmV3IHZhbHVlIHRvIHRha2UgZWZmZWN0LgpAYyBGSVhNRTogU2hvdWxkbid0IHRoZSBk ZWZjdXN0b20gZG8gdGhpcyBieSBpdHNlbGYgdXNpbmcgdGhlIDpzZXQKQGMgYXR0cmlidXRlPyAg TWF5YmUgbm90IGJlY2F1c2UgcmVjb25uZWN0aW5nIGlzIGEgY29tcGxleCB0YXNrLgpAeHJlZntU cm91Ymxlc2hvb3RpbmcgRWdsb3R9LCBmb3Igd2hlbiB0aGlzIGNvdWxkIGJlIHVzZWZ1bC4KCkBp dGVtIGVnbG90LWF1dG9zaHV0ZG93bgpJZiB0aGlzIGlzIG5vbi1AY29kZXtuaWx9LCBFZ2xvdCBz aHV0cyBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVyIHdoZW4gdGhlCmxhc3QgYnVmZmVyIG1hbmFnZWQg YnkgaXQgaXMga2lsbGVkLiAgQHhyZWZ7U2h1dHRpbmcgRG93biBMU1AgU2VydmVyc30uClRoZSBk ZWZhdWx0IGlzIEBjb2Rle25pbH07IGlmIHlvdSB3YW50IHRvIHNodXQgZG93biBhIHNlcnZlciwg dXNlCkBrYmR7TS14IGVnbG90LXNodXRkb3dufSAoQHB4cmVme0VnbG90IENvbW1hbmRzfSkuCgpA aXRlbSBlZ2xvdC1jb25maXJtLXNlcnZlci1lZGl0cwpWYXJpb3VzIEVnbG90IGNvbW1hbmRzIGFu ZCBjb2RlIGFjdGlvbnMgcmVzdWx0IGluIHRoZSBsYW5ndWFnZSBzZXJ2ZXIKc2VuZGluZyBlZGl0 aW5nIGNvbW1hbmRzIHRvIEVtYWNzLiAgSWYgdGhpcyBvcHRpb24ncyB2YWx1ZSBpcwpub24tQGNv ZGV7bmlsfSwgRWdsb3Qgd2lsbCBhc2sgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgcGVyZm9ybWlu ZwplZGl0cyBwcm9wb3NlZCBieSB0aGUgbGFuZ3VhZ2Ugc2VydmVyLiAgVGhpcyBvcHRpb24ncyB2 YWx1ZSBjYW4gYmUKY3JhZnRlZCB0byByZXF1aXJlIHRoaXMgY29uZmlybWF0aW9uIGZvciBzcGVj aWZpYyBjb21tYW5kcyBvciBvbmx5CndoZW4gdGhlIGVkaXQgYWZmZWN0cyBmaWxlcyBub3QgeWV0 IHZpc2l0ZWQgYnkgdGhlIHVzZXIuICBDb25zdWx0IHRoaXMKb3B0aW9uJ3MgZG9jc3RyaW5nIGZv ciBtb3JlIGluZm9ybWF0aW9uLgoKQGl0ZW0gZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0 aWVzClRoaXMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIGxpc3Qgb2YgbGFuZ3VhZ2Ugc2VydmVyIGNh cGFiaWxpdGllcyB0aGF0CkVnbG90IHNob3VsZCBub3QgdXNlLiAgVGhlIGRlZmF1bHQgaXMgQGNv ZGV7bmlsfTogRWdsb3QgdXNlcyBhbGwgb2YKdGhlIGNhcGFiaWxpdGllcyBzdXBwb3J0ZWQgYnkg ZWFjaCBzZXJ2ZXIuCgpAaXRlbSBlZ2xvdC1leHRlbmQtdG8teHJlZgpJZiB0aGlzIGlzIG5vbi1A Y29kZXtuaWx9LCBhbmQgQGtiZHtNLS59CihAY29kZXt4cmVmLWZpbmQtZGVmaW5pdGlvbnN9KSBs YW5kcyB5b3UgaW4gYSBmaWxlIG91dHNpZGUgb2YgeW91cgpwcm9qZWN0LCBzdWNoIGFzIGEgc3lz dGVtLWluc3RhbGxlZCBsaWJyYXJ5IG9yIGhlYWRlciBmaWxlLAp0cmFuc2llbnRseSBjb25zaWRl ciB0aGF0IGZpbGUgYXMgbWFuYWdlZCBieSB0aGUgc2FtZSBsYW5ndWFnZSBzZXJ2ZXIuClRoYXQg ZmlsZSBpcyBzdGlsbCBvdXRzaWRlIHlvdXIgcHJvamVjdCAoaS5lLiBAY29kZXtwcm9qZWN0LWZp bmQtZmlsZX0Kd29uJ3QgZmluZCBpdCksIGJ1dCBFZ2xvdCBhbmQgdGhlIHNlcnZlciB3aWxsIGNv bnNpZGVyIGl0IHRvIGJlIHBhcnQKb2YgdGhlIHdvcmtzcGFjZS4gIFRoZSBkZWZhdWx0IGlzIEBj b2Rle25pbH0uCgpAaXRlbSBlZ2xvdC1tb2RlLW1hcApUaGlzIHZhcmlhYmxlIGlzIHRoZSBrZXlt YXAgZm9yIGJpbmRpbmcgRWdsb3QtcmVsYXRlZCBjb21tYW5kLiAgSXQgaXMKaW4gZWZmZWN0IG9u bHkgYXMgbG9uZyBhcyB0aGUgYnVmZmVyIGlzIG1hbmFnZWQgYnkgRWdsb3QuICBCeSBkZWZhdWx0 LAppdCBpcyBlbXB0eSwgd2l0aCB0aGUgc2luZ2xlIGV4Y2VwdGlvbjogQGtiZHtDLWggLn0gaXMg cmVtYXBwZWQgdG8KaW52b2tlIEBjb2Rle2VsZG9jLWRvYy1idWZmZXJ9LiAgWW91IGNhbiBiaW5k IGFkZGl0aW9uYWwgY29tbWFuZHMgaW4KdGhpcyBtYXAuICBGb3IgZXhhbXBsZToKCkBsaXNwCiAg KGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiQy1jIHIiKSAnZWdsb3QtcmVuYW1lKQog IChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIkMtYyBvIikgJ2VnbG90LWNvZGUtYWN0 aW9uLW9yZ2FuaXplLWltcG9ydHMpCiAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAi Qy1jIGgiKSAnZWxkb2MpCiAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiPGY2PiIp ICd4cmVmLWZpbmQtZGVmaW5pdGlvbnMpCkBlbmQgbGlzcAoKQGVuZCB2dGFibGUKCkFkZGl0aW9u YWwgdmFyaWFibGVzLCB3aGljaCBhcmUgcmVsZXZhbnQgZm9yIGN1c3RvbWl6aW5nIHRoZSBzZXJ2 ZXIKY29ubmVjdGlvbnMsIGFyZSBkb2N1bWVudGVkIGluIEByZWZ7Q3VzdG9taXppbmcgRWdsb3R9 LgoKQG5vZGUgQ3VzdG9taXppbmcgRWdsb3QKQGNoYXB0ZXIgQ3VzdG9taXppbmcgRWdsb3QKQGNp bmRleCBjdXN0b21pemluZyBFZ2xvdAoKRWdsb3QgaXRzZWxmIGhhcyBhIHJlbGF0aXZlbHkgc21h bGwgbnVtYmVyIG9mIGN1c3RvbWl6YXRpb24gb3B0aW9ucy4KQSBsYXJnZSBwYXJ0IG9mIGN1c3Rv bWl6aW5nIEVnbG90IHRvIHlvdXIgbmVlZHMgYW5kIHByZWZlcmVuY2VzIHNob3VsZAphY3R1YWxs eSBiZSBkb25lIHZpYSBvcHRpb25zIG9mIHRoZSBFbWFjcyBwYWNrYWdlcyBhbmQgZmVhdHVyZXMg d2hpY2gKRWdsb3Qgc3VwcG9ydHMgYW5kIGVuaGFuY2VzIChAcHhyZWZ7RWdsb3QgRmVhdHVyZXN9 KS4gIEZvciBleGFtcGxlOgoKQGl0ZW1pemUgQGJ1bGxldApAaXRlbQpUbyBjb25maWd1cmUgdGhl IGZhY2UgdXNlZCBmb3Igc2VydmVyLWRlcml2ZWQgZXJyb3JzIGFuZCB3YXJuaW5ncywKY3VzdG9t aXplIHRoZSBGbHltYWtlIGZhY2VzIEBjb2Rle2ZseW1ha2UtZXJyb3J9IGFuZApAY29kZXtmbHlt YWtlLXdhcm5pbmd9LgoKQGl0ZW0KVG8gY29uZmlndXJlIHRoZSBhbW91bnQgb2Ygc3BhY2UgdGFr ZW4gdXAgYnkgZG9jdW1lbnRhdGlvbiBpbiB0aGUKZWNobyBhcmVhLCBjdXN0b21pemUgdGhlIEVs RG9jIHZhcmlhYmxlCkBjb2Rle2VsZG9jLWVjaG8tYXJlYS11c2UtbXVsdGlsaW5lLXB9LgoKQGl0 ZW0KVG8gY29tcGxldGVseSBjaGFuZ2UgaG93IEVsRG9jIGRpc3BsYXlzIHRoZSBhdC1wb2ludCBk b2N1bWVudGF0aW9uCmRlc3RpbmF0aW9uLCBjdXN0b21pemUgdGhlIEVsRG9jIHZhcmlhYmxlCkBj b2Rle2VsZG9jLWRpc3BsYXktZnVuY3Rpb25zfS4KQGVuZCBpdGVtaXplCgpGb3IgdGhpcyByZWFz b24sIHRoaXMgbWFudWFsIGRlc2NyaWJlcyBvbmx5IGhvdyB0byBjdXN0b21pemUKRWdsb3QncyBv d24gb3BlcmF0aW9uLCB3aGljaCBtYWlubHkgaGFzIHRvIGRvIHdpdGggdGhlIHNlcnZlcgpjb25u ZWN0aW9ucyBhbmQgdGhlIHNlcnZlciBmZWF0dXJlcyB0byBiZSB1c2VkIGJ5IEVnbG90LgoKQGMg QHRhYmxlLCBub3QgQHZ0YWJsZSwgYmVjYXVzZSBzb21lIG9mIHRoZSB2YXJpYWJsZXMgYXJlIGlu ZGV4ZWQKQGMgZWxzZXdoZXJlCkB0YWJsZSBAY29kZQpAaXRlbSBlZ2xvdC1zZXJ2ZXItcHJvZ3Jh bXMKVGhpcyB2YXJpYWJsZSBkZXRlcm1pbmVzIHdoaWNoIGxhbmd1YWdlIHNlcnZlciB0byBzdGFy dCBmb3IgZWFjaApzdXBwb3J0ZWQgbWFqb3IgbW9kZSwgYW5kIGhvdyB0byBpbnZva2UgdGhhdCBz ZXJ2ZXIncyBwcm9ncmFtLgpAeHJlZntTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzfSwgZm9yIHRoZSBk ZXRhaWxzLgoKQHZpbmRleCBlZ2xvdC1zdHJpY3QtbW9kZQpAaXRlbSBlZ2xvdC1zdHJpY3QtbW9k ZQpUaGlzIGlzIEBjb2Rle25pbH0gYnkgZGVmYXVsdCwgbWVhbmluZyB0aGF0IEVnbG90IGlzIGdl bmVyYWxseSBsZW5pZW50CmFib3V0IG5vbi1jb25mb3JtaW5nIHNlcnZlcnMuICBJZiB5b3UgbmVl ZCB0byBkZWJ1ZyBhIHNlcnZlciwgc2V0IHRoaXMKdG8gQHd7QGNvZGV7KGRpc2FsbG93LW5vbi1z dGFuZGFyZC1rZXlzIGVuZm9yY2UtcmVxdWlyZWQta2V5cyl9fS4KCkB2aW5kZXggZWdsb3Qtc2Vy dmVyLWluaXRpYWxpemVkLWhvb2sKQGl0ZW0gZWdsb3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2sK QSBob29rIHJ1biBhZnRlciB0aGUgc2VydmVyIG9iamVjdCBpcyBzdWNjZXNzZnVsbHkgaW5pdGlh bGl6ZWQuCgpAdmluZGV4IGVnbG90LWNvbm5lY3QtaG9vawpAaXRlbSBlZ2xvdC1jb25uZWN0LWhv b2sKQSBob29rIHJ1biBhZnRlciBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1 bGx5CmVzdGFibGlzaGVkLiAgQHhyZWZ7U3RhcnRpbmcgRWdsb3R9LgoKQGl0ZW0gZWdsb3QtbWFu YWdlZC1tb2RlLWhvb2sKQSBob29rIHJ1biBhZnRlciBFZ2xvdCBzdGFydGVkIG9yIHN0b3BwZWQg bWFuYWdpbmcgYSBidWZmZXIuCkB4cmVme0VnbG90IGFuZCBCdWZmZXJzfSwgZm9yIGRldGFpbHMg b2YgaXRzIHVzYWdlLgoKQHZpbmRleCBlZ2xvdC1zdGF5LW91dC1vZgpAaXRlbSBlZ2xvdC1zdGF5 LW91dC1vZgpUaGlzIHZhcmlhYmxlJ3MgdmFsdWUgbGlzdHMgRW1hY3MgZmVhdHVyZXMgdGhhdCBF Z2xvdCBzaG91bGRuJ3QKYXV0b21hdGljYWxseSB0cnkgdG8gbWFuYWdlIG9uIHRoZSB1c2VyJ3Mg YmVoYWxmLiAgSXQgaXMgdXNlZnVsLCBmb3IKZXhhbXBsZSwgd2hlbiB5b3UgbmVlZCB0byB1c2Ug bm9uLUxTUCBGbHltYWtlIG9yIENvbXBhbnkgYmFjay1lbmRzLgpUbyBoYXZlIEVnbG90IHN0YXkg YXdheSBmcm9tIHNvbWUgRW1hY3MgZmVhdHVyZSwgYWRkIHRoYXQgZmVhdHVyZSdzCnN5bWJvbCBv ciBhIHJlZ2V4cCB0aGF0IHdpbGwgbWF0Y2ggYSBzeW1ib2wncyBuYW1lIHRvIHRoZSBsaXN0OiBm b3IKZXhhbXBsZSwgdGhlIHN5bWJvbCBAY29kZXt4cmVmfSB0byBsZWF2ZSBYcmVmIGFsb25lLCBv ciB0aGUgc3RyaW5nCkBzYW1we2NvbXBhbnl9IHRvIHN0YXkgYXdheSBmcm9tIHlvdXIgQ29tcGFu eSBjdXN0b21pemF0aW9ucy4gIEhlcmUncyBhbgpleGFtcGxlOgoKQGxpc3AKKGFkZC10by1saXN0 ICdlZ2xvdC1zdGF5LW91dC1vZiAnZmx5bWFrZSkKQGVuZCBsaXNwCgpOb3RlIHRoYXQgeW91IGNh biBzdGlsbCBjb25maWd1cmUgdGhlIGV4Y2x1ZGVkIEVtYWNzIGZlYXR1cmVzIG1hbnVhbGx5CnRv IHVzZSBFZ2xvdCBpbiB5b3VyIEBjb2Rle2VnbG90LW1hbmFnZWQtbW9kZS1ob29rfSBvciB2aWEg c29tZSBvdGhlcgptZWNoYW5pc20uCgpAdmluZGV4IGVnbG90LXJlcG9ydC1wcm9ncmVzcwpAY2lu ZGV4IHByb2dyZXNzCkBpdGVtIGVnbG90LXJlcG9ydC1wcm9ncmVzcwpTZXQgdGhpcyB2YXJpYWJs ZSB0byB0cnVlIGlmIHlvdSdkIGxpa2UgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucyBjb21pbmcKZnJv bSB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvIGJlIGhhbmRsZWQgYXMgRW1hY3MncyBwcm9ncmVzcyBy ZXBvcnRpbmcKZmFjaWxpdGllcy4KQGVuZCB0YWJsZQoKQG5vZGUgQWR2YW5jZWQgc2VydmVyIGNv bmZpZ3VyYXRpb24KQGNoYXB0ZXIgQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KClRob3Vn aCBtYW55IGxhbmd1YWdlIHNlcnZlcnMgd29yayB3ZWxsIG91dC1vZi10aGUtYm94LCBtb3N0IGFs bG93CmZpbmUtZ3JhaW5lZCBjb250cm9sIG9mIHRoZWlyIG9wZXJhdGlvbiB2aWEgc3BlY2lmaWMg Y29uZmlndXJhdGlvbgpvcHRpb25zIHRoYXQgYXJlIHRyYW5zbWl0dGVkIG92ZXIgdGhlIExTUCBw cm90b2NvbCBhbmQgdmFyeSBmcm9tCnNlcnZlciB0byBzZXJ2ZXIuICBBIHNtYWxsIG51bWJlciBv ZiBzZXJ2ZXJzIHJlcXVpcmUgc3VjaCBzcGVjaWFsCmNvbmZpZ3VyYXRpb24gdG8gd29yayBhY2Nl cHRhYmx5LCBvciBldmVuIHRvIHdvcmsgYXQgYWxsLgoKQWZ0ZXIgaGF2aW5nIHNldHVwIGEgc2Vy dmVyIGV4ZWN1dGFibGUgcHJvZ3JhbSBpbgpAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9IChA cHhyZWZ7U2V0dGluZyBVcCBMU1AgU2VydmVyc30pIGFuZAplbnN1cmluZyBFZ2xvdCBjYW4gaW52 b2tlIGl0LCB5b3UgbWF5IHdhbnQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc29tZQpvZiB0aGVzZSBv cHRpb25zLiAgWW91IHNob3VsZCBmaXJzdCBkaXN0aW5ndWlzaCB0d28gbWFpbiBraW5kcyBvZgpz ZXJ2ZXIgY29uZmlndXJhdGlvbjoKCkBpdGVtaXplIEBidWxsZXQKQGl0ZW0KUHJvamVjdC1zcGVj aWZpYywgYXBwbHlpbmcgdG8gYSBzcGVjaWZpYyBwcm9qZWN0OwoKQGl0ZW0KVXNlci1zcGVjaWZp YywgYXBwbHlpbmcgdG8gYWxsIHByb2plY3RzIHRoZSBzZXJ2ZXIgaXMgdXNlZCBmb3IuCkBlbmQg aXRlbWl6ZQoKV2hlbiB5b3UgaGF2ZSBkZWNpZGVkIHdoaWNoIGtpbmQgeW91IG5lZWQsIHRoZSBm b2xsb3dpbmcgc2VjdGlvbnMKdGVhY2ggaG93IEVnbG90J3MgdXNlciB2YXJpYWJsZXMgY2FuIGJl IHVzZWQgdG8gYWNoaWV2ZSBpdDoKCkBtZW51CiogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9uOjoKKiBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb246OgoqIEpTT05SUEMgb2JqZWN0cyBp biBFbGlzcDo6CkBlbmQgbWVudQoKSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vdCBhbGwg c2VydmVycyBhbGxvdyBib3RoIGtpbmRzIG9mCmNvbmZpZ3VyYXRpb24sIG5vciBpcyBpdCBndWFy YW50ZWVkIHRoYXQgdXNlciBvcHRpb25zIGNhbiBiZSBjb3BpZWQKb3ZlciB0byBwcm9qZWN0IG9w dGlvbnMsIGFuZCB2aWNlLXZlcnNhLiAgV2hlbiBpbiBkb3VidCwgY29uc3VsdCB5b3VyCmxhbmd1 YWdlIHNlcnZlcidzIGRvY3VtZW50YXRpb24uCgpJdCdzIGFsc28gd29ydGggbm90aW5nIHRoYXQg c29tZSBsYW5ndWFnZSBzZXJ2ZXJzIGNhbiByZWFkIHRoZXNlCnNldHRpbmdzIGZyb20gY29uZmln dXJhdGlvbiBmaWxlcyBpbiB0aGUgdXNlcidzIEBjb2Rle0hPTUV9IGRpcmVjdG9yeQpvciBpbiBh IHByb2plY3QncyBkaXJlY3RvcnkuICBGb3IgZXhhbXBsZSwgdGhlIEBjb21tYW5ke3B5bHNwfSBQ eXRob24Kc2VydmVyIHJlYWRzIHRoZSBmaWxlIEBmaWxle34vLmNvbmZpZy9weWNvZGVzdHlsZX0g Zm9yIHVzZXIKY29uZmlndXJhdGlvbi4gIFRoZSBAY29tbWFuZHtjbGFuZ2R9IEMvQysrIHNlcnZl ciByZWFkcyBib3RoCkBmaWxle34vLmNvbmZpZy9jbGFuZ2QvY29uZmlnLnlhbWx9IGZvciB1c2Vy IGNvbmZpZ3VyYXRpb24gYW5kCkBmaWxley5jbGFuZ2R9IGZvciBwcm9qZWN0IGNvbmZpZ3VyYXRp b24uICBJdCBtYXkgYmUgYWR2YW50YWdlb3VzIHRvCnVzZSB0aGVzZSBtZWNoYW5pc21zIGluc3Rl YWQgb2YgRWdsb3QncywgYXMgdGhpcyB3aWxsIHByb2JhYmx5IHdvcmsKd2l0aCBvdGhlciBMU1Ag Y2xpZW50cyBhbmQgbWF5IGJlIGVhc2llciB0byBkZWJ1ZyB0aGFuIG9wdGlvbnMgcmlkaW5nCm9u IHRoZSBMU1Agd2lyZS4KCkBub2RlIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbgpAc2Vj dGlvbiBQcm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24KQHZpbmRleCBlZ2xvdC13b3Jrc3Bh Y2UtY29uZmlndXJhdGlvbgpAY2luZGV4IHdvcmtzcGFjZSBjb25maWd1cmF0aW9uCgpUbyBzZXQg cHJvamVjdC1zcGVjaWZpYyBzZXR0aW5ncywgd2hpY2ggdGhlIExTUCBzcGVjaWZpY2F0aW9uIGNh bGxzCkBkZm57d29ya3NwYWNlIGNvbmZpZ3VyYXRpb259LCB0aGUgdmFyaWFibGUKQGNvZGV7ZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IG1heSBiZSB1c2VkLgoKVGhpcyB2YXJpYWJsZSBp cyBhIGRpcmVjdG9yeS1sb2NhbCB2YXJpYWJsZSAoQHB4cmVme0RpcmVjdG9yeQpWYXJpYWJsZXMs ICwgUGVyLWRpcmVjdG9yeSBMb2NhbCBWYXJpYWJsZXMsIGVtYWNzLCBUaGUgR05VIEVtYWNzCk1h bnVhbH0pLiAgSXQncyBpbXBvcnRhbnQgdG8gcmVjb2duaXplIHRoYXQgdGhpcyB2YXJpYWJsZSBy ZWFsbHkgb25seQptYWtlcyBzZW5zZSB3aGVuIHNldCBkaXJlY3RvcnktbG9jYWxseS4gIEl0IHVz dWFsbHkgZG9lcyBub3QgbWFrZQpzZW5zZSB0byBzZXQgaXQgZmlsZS1sb2NhbGx5IG9yIGluIGEg bWFqb3ItbW9kZSBob29rLgoKVGhlIG1vc3QgY29tbW9uIHdheSB0byBzZXQgQGNvZGV7ZWdsb3Qt d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24gfSBpcwp1c2luZyBhIEBmaWxley5kaXItbG9jYWxzLmVs fSBmaWxlIGluIHRoZSByb290IG9mIHlvdXIgcHJvamVjdC4gIElmCnlvdSBjYW4ndCBkbyB0aGF0 LCB5b3UgbWF5IGFsc28gc2V0IGl0IGZyb20gRWxpc3AgY29kZSB2aWEgdGhlCkBjb2Rle2Rpci1s b2NhbHMtc2V0LWNsYXNzLXZhcmlhYmxlc30gZnVuY3Rpb24uICAoQHB4cmVme0RpcmVjdG9yeQpM b2NhbCBWYXJpYWJsZXMsLCwgZWxpc3AsIEdOVSBFbWFjcyBMaXNwIFJlZmVyZW5jZSBNYW51YWx9 KS4KCkhvd2V2ZXIgeW91IGNob29zZSB0byBzZXQgaXQsIHRoZSB2YXJpYWJsZSdzIHZhbHVlIGlz IGEgcGxpc3QKKEBweHJlZntQcm9wZXJ0eSBMaXN0cywsLCBlbGlzcCwgR05VIEVtYWNzIExpc3Ag UmVmZXJlbmNlIE1hbnVhbH0pIHdpdGgKdGhlIGZvbGxvd2luZyBmb3JtYXQ6CgpAbGlzcAogKEB2 YXJ7OnNlcnZlcjF9IEB2YXJ7cGxpc3QxfSBAdmFyezpzZXJ2ZXIyfSBAdmFye3BsaXN0Mn0gQGRv dHN7fSkKQGVuZCBsaXNwCgpAbm9pbmRlbnQKSGVyZSwgQHZhcns6c2VydmVyMX0gYW5kIEB2YXJ7 OnNlcnZlcjJ9IGFyZSBrZXl3b3JkcyB3aG9zZSBuYW1lcwppZGVudGlmeSB0aGUgTFNQIGxhbmd1 YWdlIHNlcnZlcnMgdG8gdGFyZ2V0LiAgQ29uc3VsdCBzZXJ2ZXIKZG9jdW1lbnRhdGlvbiB0byBm aW5kIG91dCB3aGF0IG5hbWUgdG8gdXNlLiAgQHZhcntwbGlzdDF9IGFuZApAdmFye3BsaXN0Mn0g YXJlIHBsaXN0cyBvZiBvcHRpb25zLCBwb3NzaWJseSBuZXN0aW5nIG90aGVyIHBsaXN0cy4KCkBm aW5kZXggZWdsb3Qtc2hvdy13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgpXaGVuIGV4cGVyaW1lbnRp bmcgd2l0aCB3b3Jrc3BhY2Ugc2V0dGluZ3MsIHlvdSBjYW4gdXNlIHRoZSBjb21tYW5kCkBrYmR7 TS14IGVnbG90LXNob3ctd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IHRvIGluc3BlY3QgYW5kIGRl YnVnIHRoZQp2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIGluIGl0cyBmaW5hbCBKU09OIGZvcm0sIHJl YWR5IHRvIGJlIHNlbnQgdG8gdGhlCnNlcnZlciAoQHB4cmVme0pTT05SUEMgb2JqZWN0cyBpbiBF bGlzcH0pLiAgVGhpcyBoZWxwZXIgY29tbWFuZCB3b3JrcwpldmVuIGJlZm9yZSBhY3R1YWxseSBj b25uZWN0aW5nIHRvIHRoZSBzZXJ2ZXIuCgpUaGVzZSB2YXJpYWJsZSdzIHZhbHVlIGRvZXNuJ3Qg dGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkuICBUaGF0IGhhcHBlbnMKdXBvbiBlc3RhYmxpc2hpbmcg dGhlIGNvbm5lY3Rpb24sIGluIHJlc3BvbnNlIHRvIGFuIGV4cGxpY2l0IHF1ZXJ5CmZyb20gdGhl IHNlcnZlciwgb3Igd2hlbiBpc3N1aW5nIHRoZSBjb21tYW5kIEBrYmR7TS14CmVnbG90LXNpZ25h bC1kaWRDaGFuZ2VDb25maWd1cmF0aW9ufSB3aGljaCBub3RpZmllcyB0aGUgc2VydmVyIGR1cmlu ZwphbiBvbmdvaW5nIEVnbG90IHNlc3Npb24uCgpAc3Vic2VjdGlvbiBFeGFtcGxlcwoKRm9yIHNv bWUgdXNlcnMsIHNldHRpbmcgQGNvZGV7ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IGlz IGEKc29tZXdoYXQgZGF1bnRpbmcgdGFzay4gIE9uZSBvZiB0aGUgcmVhc29ucyBpcyBoYXZpbmcg dG8gbWFuYWdlIHRoZQpnZW5lcmFsIEVsaXNwIHN5bnRheCBvZiBwZXItbW9kZSBkaXJlY3Rvcnkt bG9jYWwgdmFyaWFibGVzLCB3aGljaCB1c2VzCmFsaXN0cyAoQHB4cmVme0Fzc29jaWF0aW9uIExp c3RzLCwsIGVsaXNwLCBHTlUgRW1hY3MgTGlzcCBSZWZlcmVuY2UKTWFudWFsfSksIGFuZCB0aGUg c3BlY2lmaWMgc3ludGF4IG9mIEVnbG90J3MgdmFyaWFibGUsIHdoaWNoIHVzZXMKcGxpc3RzLiAg U29tZSBleGFtcGxlcyBhcmUgdXNlZnVsLgoKTGV0J3Mgc2F5IHlvdSB3YW50IHRvIGNvbmZpZ3Vy ZSB0d28gbGFuZ3VhZ2Ugc2VydmVycyB0byBiZSB1c2VkIGluIGEKcHJvamVjdCB3cml0dGVuIGlu IGEgY29tYmluYXRpb24gb2YgdGhlIFB5dGhvbiBhbmQgR28gbGFuZ3VhZ2VzLiAgWW91CndhbnQg dG8gdXNlIHRoZSBAY29tbWFuZHtweWxzcH0gYW5kIEBjb21tYW5ke2dvcGxzfSBsYW5ndWFnZXMK c2VydmVycy4gIEluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzZXJ2ZXJzIGluIHF1ZXN0aW9u IChvciBpbiBzb21lCm90aGVyIGVkaXRvcidzIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgaW4gc29t ZSBibG9nIGFydGljbGUpLCB5b3UgZmluZAp0aGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gb3B0 aW9ucyBpbiBpbmZvcm1hbCBkb3R0ZWQtbm90YXRpb24Kc3ludGF4OgoKQGV4YW1wbGUKcHlsc3Au cGx1Z2lucy5qZWRpX2NvbXBsZXRpb24uaW5jbHVkZV9wYXJhbXM6IHRydWUKcHlsc3AucGx1Z2lu cy5qZWRpX2NvbXBsZXRpb24uZnV6enk6IHRydWUKcHlsc3AucHlsaW50LmVuYWJsZWQ6IGZhbHNl CmdvcGxzLnVzZVBsYWNlaG9sZGVyczogdHJ1ZQpAZW5kIGV4YW1wbGUKClRvIGFwcGx5IHRoaXMg dG8gRWdsb3QsIGFuZCBhc3N1bWluZyB5b3UgY2hvc2UgdGhlCkBmaWxley5kaXItbG9jYWxzLmVs fSBmaWxlIG1ldGhvZCwgdGhlIGNvbnRlbnRzIG9mIHRoYXQgZmlsZSBjb3VsZCBiZToKCkBsaXNw CigobmlsCiAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAgIC4gKDpweWxz cCAoOnBsdWdpbnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogICAgICAg ICA6Z29wbHMgKDp1c2VQbGFjZWhvbGRlcnMgdCkpKSkpCiAocHl0aG9uLWJhc2UtbW9kZSAuICgo aW5kZW50LXRhYnMtbW9kZSAuIG5pbCkpKQogKGdvLW1vZGUgICAgICAgICAgLiAoKGluZGVudC10 YWJzLW1vZGUgLiB0KSkpKQpAZW5kIGxpc3AKCkBub2luZGVudApUaGlzIHNldHMgdGhlIHZhbHVl IG9mIEBjb2Rle2VnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9ufSBpbiBhbGwgdGhlCmJ1ZmZl cnMgaW5zaWRlIHRoZSBwcm9qZWN0OyBlYWNoIHNlcnZlciB3aWxsIHVzZSBvbmx5IHRoZSBzZWN0 aW9uIG9mCnRoZSBwYXJhbWV0ZXJzIGludGVuZGVkIGZvciB0aGF0IHNlcnZlciwgYW5kIGlnbm9y ZSB0aGUgcmVzdC4gIE5vdGUKaG93IGFsaXN0cyBhcmUgdXNlZCBmb3IgYXNzb2NpYXRpbmcgRW1h Y3MgbW9kZSBuYW1lcyB3aXRoIGFsaXN0cwphc3NvY2lhdGluZyB2YXJpYWJsZSBuYW1lcyB3aXRo IHZhcmlhYmxlIHZhbHVlcy4gIFRoZW4gbm90aWNlIGhvdwpwbGlzdHMgYXJlIHVzZWQgaW5zaWRl IHRoZSB2YWx1ZSBvZgpAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0uCgpUaGlz IGZvbGxvd2luZyBmb3JtIG1heSBhbHNvIGJlIHVzZWQ6CgpAbGlzcAooKHB5dGhvbi1iYXNlLW1v ZGUKICAuICgoZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgLiAoOnB5bHNwICg6 cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1enp5IHQpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZhbHNlKSkpKSkKICAgICAoaW5k ZW50LXRhYnMtbW9kZSAuIG5pbCkpKQogKGdvLW1vZGUKICAuICgoZWdsb3Qtd29ya3NwYWNlLWNv bmZpZ3VyYXRpb24KICAgICAgLiAoOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKSkKICAgICAo aW5kZW50LXRhYnMtbW9kZSAuIHQpKSkpCkBlbmQgbGlzcAoKQG5vaW5kZW50ClRoaXMgc2V0cyB1 cCB0aGUgdmFsdWUgb2YgQGNvZGV7ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259CnNlcGFy YXRlbHkgZGVwZW5kaW5nIG9uIHRoZSBtYWpvciBtb2RlIG9mIGVhY2ggb2YgdGhhdCBwcm9qZWN0 J3MKYnVmZmVycy4gIEBjb2Rle3B5dGhvbi1iYXNlLW1vZGV9IGJ1ZmZlcnMgd2lsbCBoYXZlIHRo ZSB2YXJpYWJsZSBzZXQgdG8KQGNvZGV7KDpweWxzcCAoOnBsdWdpbnMgLi4uKSl9LiAgQGNvZGV7 Z28tbW9kZX0gYnVmZmVycyB3aWxsIGhhdmUgdGhlCnZhcmlhYmxlIHNldCB0byBAY29kZXsoOmdv cGxzICg6dXNlUGxhY2Vob2xkZXJzIHQpKX0uCgpTb21lIHNlcnZlcnMgd2lsbCBpc3N1ZSB3b3Jr c3BhY2UgY29uZmlndXJhdGlvbiBmb3Igc3BlY2lmaWMgZmlsZXMKaW5zaWRlIHlvdXIgcHJvamVj dC4gIEZvciBleGFtcGxlLCBpZiB5b3Uga25vdyBAY29kZXtnb3Bsc30gaXMgYXNraW5nCmFib3V0 IHNwZWNpZmljIGZpbGVzIGluIHRoZSBAY29kZXtzcmMvaW1wb3J0ZWR9IHN1YmRpcmVjdG9yeSBh bmQgeW91CndhbnQgdG8gc2V0IGEgZGlmZmVyZW50IG9wdGlvbiBmb3IgQGNvZGV7Z29wbHMudXNl UGxhY2Vob2xkZXJzfSAsIHlvdQptYXkgdXNlIHNvbWV0aGluZyBsaWtlOgoKQGxpc3AKKChweXRo b24tYmFzZS1tb2RlCiAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAgIC4g KDpweWxzcCAoOnBsdWdpbnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAg ICAgICAgICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKSkp CiAgICAgKGluZGVudC10YWJzLW1vZGUgbmlsKSkpCiAoZ28tbW9kZQogIC4gKChlZ2xvdC13b3Jr c3BhY2UtY29uZmlndXJhdGlvbgogICAgICAuICg6Z29wbHMgKDp1c2VQbGFjZWhvbGRlcnMgdCkp KQogICAgIChpbmRlbnQtdGFicy1tb2RlIHQpKSkKICgic3JjL2ltcG9ydGVkIgogICAuICgoZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgLiAoOmdvcGxzICg6dXNlUGxhY2Vob2xk ZXJzIG5pbCkpKSkpKQpAZW5kIGxpc3AKCkZpbmFsbHksIGlmIG9uZSBuZWVkcyB0byBkZXRlcm1p bmUgdGhlIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIGJhc2VkCm9uIHNvbWUgZHluYW1pYyBjb250 ZXh0LCBAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0gY2FuIGJlCnNldCB0byBh IGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZQpAY29kZXtlZ2xvdC1s c3Atc2VydmVyfSBpbnN0YW5jZSBvZiB0aGUgY29ubmVjdGVkIHNlcnZlciAoaWYgYW55KSBhbmQK d2l0aCBAY29kZXtkZWZhdWx0LWRpcmVjdG9yeX0gc2V0IHRvIHRoZSByb290IG9mIHRoZSBwcm9q ZWN0LiAgVGhlCmZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBwbGlzdCBzdWl0YWJsZSBmb3IgdXNl IGFzIHRoZSB2YXJpYWJsZSdzCnZhbHVlLgoKQG5vZGUgVXNlci1zcGVjaWZpYyBjb25maWd1cmF0 aW9uCkBzZWN0aW9uIFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbgpAY2luZGV4IGluaXRpYWxp emF0aW9uT3B0aW9ucwpAY2luZGV4IGNvbW1hbmQtbGluZSBhcmd1bWVudHMKClRoaXMga2luZCBv ZiBjb25maWd1cmF0aW9uIGFwcGxpZXMgdG8gYWxsIHByb2plY3RzIHRoZSBzZXJ2ZXIgaXMgdXNl ZApmb3IuICBIZXJlLCB0aGVyZSBhcmUgYSBudW1iZXIgb2Ygd2F5cyB0byBkbyB0aGlzIGluc2lk ZSBFZ2xvdC4KCkEgY29tbW9uIHdheSBpcyB0byBwYXNzIGNvbW1hbmQtbGluZSBvcHRpb25zIHRv IHRoZSBzZXJ2ZXIgaW52b2NhdGlvbgp2aWEgQGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW1zfS4g IExldCdzIHNheSB3ZSB3YW50IHRvIGNvbmZpZ3VyZQp3aGVyZSB0aGUgQGNvbW1hbmR7Y2xhbmdk fSBzZXJ2ZXIgcmVhZHMgaXRzCkBjb2Rle2NvbXBpbGVfY29tbWFuZHMuanNvbn0gZnJvbS4gIFRo aXMgY2FuIGJlIGRvbmUgbGlrZSBzbzoKCkBsaXNwCih3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWds b3QKICAoYWRkLXRvLWxpc3QgJ2VnbG90LXNlcnZlci1wcm9ncmFtcwogICAgICAgICAgICAgICBg KGMrKy1tb2RlIC4gKCJjbGFuZ2QiICItLWNvbXBpbGUtY29tbWFuZHMtZGlyPS90bXAiKSkpKQoK QGVuZCBsaXNwCgpAbm9pbmRlbnQKQW5vdGhlciB3YXkgaXMgdG8gaGF2ZSBFZ2xvdCBwYXNzIGEg SlNPTiBvYmplY3QgdG8gdGhlIHNlcnZlciBkdXJpbmcKdGhlIExTUCBoYW5kc2hha2UuICBUaGlz IGlzIGRvbmUgdXNpbmcgdGhlCkBjb2Rlezppbml0aWFsaXphdGlvbk9wdGlvbnN9IHN5bnRheCBv ZiBAY29kZXtlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXN9OgoKQGxpc3AKKHdpdGgtZXZhbC1hZnRlci1s b2FkICdlZ2xvdAogIChhZGQtdG8tbGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAg ICAgICAgIGAoYysrLW1vZGUgLiAoImNsYW5nZCIgOmluaXRpYWxpemF0aW9uT3B0aW9ucwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg6Y29tcGlsYXRpb25EYXRhYmFzZVBh dGggIi90bXAiKSkpKSkKQGVuZCBsaXNwCgpAbm9pbmRlbnQKVGhlIGFyZ3VtZW50IEBjb2Rleyg6 Y29tcGlsYXRpb25EYXRhYmFzZVBhdGggIi90bXAiKX0gaXMgRW1hY3MncwpyZXByZXNlbnRhdGlv biBpbiBwbGlzdCBmb3JtYXQgb2YgYSBzaW1wbGUgSlNPTiBvYmplY3QKQGNvZGV7QHsiY29tcGls YXRpb25EYXRhYmFzZVBhdGgiOiAiL3RtcCJAfX0uICBUbyBsZWFybiBob3cgdG8KcmVwcmVzZW50 IG1vcmUgZGVlcGx5IG5lc3RlZCBvcHRpb25zIGluIHRoaXMgZm9ybWF0LCBAcHhyZWZ7SlNPTlJQ QwpvYmplY3RzIGluIEVsaXNwfS4KCkluIHRoaXMgY2FzZSwgdGhlIHR3byBleGFtcGxlcyBhY2hp ZXZlIGV4YWN0bHkgdGhlIHNhbWUsIGJ1dCBub3RpY2UKaG93IHRoZSBvcHRpb24ncyBuYW1lIGhh cyBjaGFuZ2VkIGJldHdlZW4gdGhlbS4KCkB2aW5kZXggZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3Vy YXRpb24KRmluYWxseSB0aGVyZSBpcyBhbm90aGVyIHdheSB0byBkbyB1c2VyLXNwZWNpZmljIGNv bmZpZ3VyYXRpb24gb2YKbGFuZ3VhZ2Ugc2VydmVycywgd2hpY2ggbWF5IGJlIHVzZWQgaWYgdGhl IG1ldGhvZHMgYWJvdmUgYXJlIG5vdApzdXBwb3J0ZWQuICBJdCBjb25zaXN0cyBvZiBAZW1waHtn bG9iYWxseX0gc2V0dGluZwpAY29kZXtlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbn0sIGEg dmFyaWFibGUgb3JpZ2luYWxseSBpbnRlbmRlZApmb3IgcHJvamVjdC1zcGVjaWZpYyBjb25maWd1 cmF0aW9uLiAgVGhpcyBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCmdpdmluZyBhbGwgeW91ciBwcm9q ZWN0cyBhIGNlcnRhaW4gZGVmYXVsdCBjb25maWd1cmF0aW9uLCBhcyBkZXNjcmliZWQKaW4gQHJl ZntQcm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb259LiAgSGVyZSBpcyBhbiBleGFtcGxlOgoK QGxpc3AKKHNldHEtZGVmYXVsdCBlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAgICAg ICAgICAgICcoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFy YW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDpmdXp6eSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnB5bGludCAoOmVu YWJsZWQgOmpzb24tZmFsc2UpKSkKICAgICAgICAgICAgICAgIDpnb3BscyAoOnVzZVBsYWNlaG9s ZGVycyB0KSkpCkBlbmQgbGlzcAoKTm90ZSB0aGF0IHRoZSBnbG9iYWwgdmFsdWUgb2YgQGNvZGV7 ZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb259IGlzCmFsd2F5cyBvdmVycmlkZGVuIGlmIGEg ZGlyZWN0b3J5LWxvY2FsIHZhbHVlIGlzIGRldGVjdGVkLgoKQG5vZGUgSlNPTlJQQyBvYmplY3Rz IGluIEVsaXNwCkBzZWN0aW9uIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcAoKRW1hY3MncyBwcmVm ZXJyZWQgd2F5IG9mIHJlcHJlc2VudGluZyBKU09OIGlzIHZpYSBMaXNwIGxpc3RzLiAgSW4KRWds b3QsIHRoZSBzeW50YXggb2YgdGhpcyBsaXN0IGlzIHRoZSBzaW1wbGVzdCBwb3NzaWJsZSAodGhl IG9uZSB3aXRoCmZld2VyIHBhcmVudGhlc2lzKSwgYSBwbGlzdCAoQHB4cmVme1Byb3BlcnR5IExp c3RzLCwsIGVsaXNwLCBHTlUgRW1hY3MKTGlzcCBSZWZlcmVuY2UgTWFudWFsfSkuCgpUaGUgcGxp c3QgbWF5IGJlIGFyYml0cmFyaWx5IGNvbXBsZXgsIGFuZCBnZW5lcmFsbHkgY29udGFpbmluZyBv dGhlcgprZXl3b3JkLXZhbHVlIHByb3BlcnR5IHN1Yi1wbGlzdHMgY29ycmVzcG9uZGluZyB0byBK U09OIHN1Yi1vYmplY3RzLgoKRm9yIHJlcHJlc2VudGluZyB0aGUgSlNPTiBsZWFmIHZhbHVlcyBA Y29kZXt0cnVlfSwgQGNvZGV7ZmFsc2V9LApAY29kZXtudWxsfSBhbmQgQGNvZGV7QHtAfX0sIHlv dSBjYW4gdXNlIHRoZSBMaXNwIHZhbHVlcyBAY29kZXt0fSwKQGNvZGV7Ompzb24tZmFsc2V9LCBA Y29kZXtuaWx9LCBhbmQgQGNvZGV7ZWdsb3QtQHtAfX0sIHJlc3BlY3RpdmVseS4KSlNPTiBhcnJh eXMgYXJlIHJlcHJlc2VudGVkIGFzIEVsaXNwIHZlY3RvcnMgc3Vycm91bmRlZCBieSBzcXVhcmUg YnJhY2tldHMKKEBweHJlZntWZWN0b3JzLCwsZWxpc3AsR05VIEVtYWNzIExpc3AgUmVmZXJlbmNl IE1hbnVhbH0pLgoKRm9yIGV4YW1wbGUsIHRoZSBwbGlzdAoKQGxpc3AKKDpweWxzcCAoOnBsdWdp bnMgKDpqZWRpX2NvbXBsZXRpb24gKDppbmNsdWRlX3BhcmFtcyB0CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6ZnV6enkgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmNhY2hlX2ZvciBbInBhbmRhcyIgIm51bXB5Il0pCiAgICAgICAgICAgICAgICAg ICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogOmdvcGxzICg6dXNlUGxhY2Vob2xk ZXJzIHQpKQpAZW5kIGxpc3AKCkBub2luZGVudAppcyBzZXJpYWxpemVkIGJ5IEVnbG90IHRvIHRo ZSBmb2xsb3dpbmcgSlNPTiB0ZXh0OgoKQGV4YW1wbGUKQHsKICAicHlsc3AiOiBAewogICAgInBs dWdpbnMiOiBAewogICAgICAiamVkaV9jb21wbGV0aW9uIjogQHsKICAgICAgICAiaW5jbHVkZV9w YXJhbXMiOiB0cnVlLAogICAgICAgICJmdXp6eSI6IHRydWUsCiAgICAgICAgImNhY2hlX2ZvciI6 IFsgInBhbmRhcyIsICJudW1weSIgXQogICAgICBAfSwKICAgICAgInB5bGludCI6IEB7CiAgICAg ICAgImVuYWJsZWQiOiBmYWxzZQogICAgICBAfQogICAgQH0KICBAfSwKICAiZ29wbHMiOiBAewog ICAgInVzZVBsYWNlaG9sZGVycyI6IHRydWUKICBAfQpAfQpAZW5kIGV4YW1wbGUKCkBub2RlIEV4 dGVuZGluZyBFZ2xvdApAY2hhcHRlciBFeHRlbmRpbmcgRWdsb3QKClNvbWV0aW1lcyBpdCBtYXkg YmUgdXNlZnVsIHRvIGV4dGVuZCBleGlzdGluZyBFZ2xvdCBmdW5jdGlvbmFsaXR5CnVzaW5nIEVs aXNwIGl0cyBwdWJsaWMgbWV0aG9kcy4gIEEgZ29vZCBleGFtcGxlIG9mIHdoZW4gdGhpcyBuZWVk IG1heQphcmlzZSBpcyBhZGRpbmcgc3VwcG9ydCBmb3IgYSBjdXN0b20gTFNQIHByb3RvY29sIGV4 dGVuc2lvbiBvbmx5CmltcGxlbWVudGVkIGJ5IGEgc3BlY2lmaWMgc2VydmVyLgoKVGhlIGJlc3Qg c291cmNlIG9mIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgaXMgcHJvYmFibHkgRWdsb3Qgc291cmNl CmNvZGUgaXRzZWxmLCBwYXJ0aWN1bGFybHkgdGhlIHNlY3Rpb24gbWFya2VkIGBgQVBJJycuCgpN b3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIHdpdGggQ29tbW9uLUxpc3Ag c3R5bGUKZ2VuZXJpYyBmdW5jdGlvbnMgKEBweHJlZntHZW5lcmljcywsLGVpZWlvLEVJRUlPfSkg dGhhdCBjYW4gYmUgZWFzaWx5CmV4dGVuZGVkIG9yIG92ZXJyaWRkZW4uICBUaGUgRWdsb3QgY29k ZSBpdHNlbGYgaXMgYW4gZXhhbXBsZSBvbiBob3cgdG8KZG8gdGhpcy4KClRoZSBmb2xsb3dpbmcg aXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBleGFtcGxlIHRoYXQgYWRkcyBzdXBwb3J0IGZvciB0aGUK QGNvZGV7aW5hY3RpdmVSZWdpb25zfSBleHBlcmltZW50YWwgZmVhdHVyZSBpbnRyb2R1Y2VkIGlu IHZlcnNpb24gMTcKb2YgdGhlIEBjb21tYW5ke2NsYW5nZH0gQy9DKysgbGFuZ3VhZ2Ugc2VydmVy KysuCgpTdW1tYXJpbHksIHRoZSBmZWF0dXJlIHdvcmtzIGJ5IGZpcnN0IGhhdmluZyB0aGUgc2Vy dmVyIGRldGVjdCB0aGUKRWdsb3QncyBhZHZlcnRpc2VtZW50IG9mIHRoZSBAY29kZXtpbmFjdGl2 ZVJlZ2lvbnN9IGNsaWVudCBjYXBhYmlsaXR5CmR1cmluZyBzdGFydHVwLCB3aGVyZXVwb24gdGhl IGxhbmd1YWdlIHNlcnZlciB3aWxsIHJlcG9ydCBhIGxpc3Qgb2YKcmVnaW9ucyBvZiBpbmFjdGl2 ZSBjb2RlIGZvciBlYWNoIGJ1ZmZlci4gIFRoaXMgaXMgdXN1YWxseSBjb2RlCnN1cnJvdW5kZWQg YnkgQy9DKysgQGNvZGV7I2lmZGVmfSBtYWNyb3MgdGhhdCB0aGUgcHJlcHJvY2Vzc29yIHJlbW92 ZXMKYmFzZWQgb24gY29tcGlsZS10aW1lIGluZm9ybWF0aW9uLgoKVGhlIGxhbmd1YWdlIHNlcnZl ciByZXBvcnRzIHRoZSByZWdpb25zIGJ5IHBlcmlvZGljYWxseSBzZW5kaW5nIGEKQGNvZGV7dGV4 dERvY3VtZW50L2luYWN0aXZlUmVnaW9uc30gbm90aWZpY2F0aW9uIGZvciBlYWNoIG1hbmFnZWQK YnVmZmVyIChAcHhyZWZ7RWdsb3QgYW5kIEJ1ZmZlcnN9KS4gTm9ybWFsbHksIHVua25vd24gc2Vy dmVyCm5vdGlmaWNhdGlvbnMgYXJlIGlnbm9yZWQgYnkgRWdsb3QsIGJ1dCB3ZSdyZSBnb2luZyBj aGFuZ2UgdGhhdC4KCkJvdGggdGhlIGFubm91bmNlbWVudCBvZiB0aGUgY2xpZW50IGNhcGFiaWxp dHkgYW5kIHRoZSBoYW5kbGluZyBvZiB0aGUKbmV3IG5vdGlmaWNhdGlvbiBpcyBkb25lIGJ5IGFk ZGluZyBtZXRob2RzIHRvIGdlbmVyaWMgZnVuY3Rpb25zLgoKQGl0ZW1pemUgQGJ1bGxldApAaXRl bQpUaGUgZmlyc3QgbWV0aG9kIGV4dGVuZHMgQGNvZGV7ZWdsb3QtY2xpZW50LWNhcGFiaWxpdGll c30gdXNpbmcgYQpzaW1wbGUgaGV1cmlzdGljIHRvIGRldGVjdCBpZiBjdXJyZW50IHNlcnZlciBp cyBAY29tbWFuZHtjbGFuZ2R9IGFuZAplbmFibGVzIHRoZSBAY29kZXtpbmFjdGl2ZVJlZ2lvbn0g Y2FwYWJpbGl0eS4KCkBsaXNwCihjbC1kZWZtZXRob2QgZWdsb3QtY2xpZW50LWNhcGFiaWxpdGll cyA6YXJvdW5kIChzZXJ2ZXIpCiAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkK ICAgICh3aGVuIChjbC1maW5kICJjbGFuZ2QiIChwcm9jZXNzLWNvbW1hbmQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGpzb25ycGMtLXByb2Nlc3Mgc2VydmVyKSkKICAgICAgICAgICAg ICAgICAgIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKQogICAgICAoc2V0ZiAoY2wtZ2V0ZiAoY2wtZ2V0 ZiBiYXNlIDp0ZXh0RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIDppbmFjdGl2ZVJlZ2lv bnNDYXBhYmlsaXRpZXMpCiAgICAgICAgICAgICcoOmluYWN0aXZlUmVnaW9ucyB0KSkpCiAgICBi YXNlKSkKQGVuZCBsaXNwCgpOb3RpY2Ugd2UgdXNlIGFuIGludGVybmFsIGZ1bmN0aW9uIG9mIHRo ZSBAY29kZXtqc29ucnBjLmVsfSBsaWJyYXJ5LAphbmQgYSByZWdleHAgc2VhcmNoIHRvIGRldGVj dCBAY29tbWFuZHtjbGFuZ2R9LiAgQW4gYWx0ZXJuYXRpdmUgd291bGQKYmUgdG8gZGVmaW5lIGEg bmV3IEVJRUlPIHN1YmNsYXNzIG9mIEBjb2Rle2VnbG90LWxzcC1zZXJ2ZXJ9LCBtYXliZQpjYWxs ZWQgQGNvZGV7ZWdsb3QtY2xhbmdkfSwgc28gdGhhdCB0aGUgbWV0aG9kIHdvdWxkIGJlIHNpbXBs aWZpZWQ6CgpAbGlzcAooY2wtZGVmbWV0aG9kIGVnbG90LWNsaWVudC1jYXBhYmlsaXRpZXMgOmFy b3VuZCAoKF9zIGVnbG90LWNsYW5nZCkpCiAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRo b2QpKSkKICAgIChzZXRmIChjbC1nZXRmIChjbC1nZXRmIGJhc2UgOnRleHREb2N1bWVudCkKICAg ICAgICAgICAgICAgICAgICAgOmluYWN0aXZlUmVnaW9uc0NhcGFiaWxpdGllcykKICAgICAgICAg ICAgJyg6aW5hY3RpdmVSZWdpb25zIHQpKSkpCkBlbmQgbGlzcAoKSG93ZXZlciwgdGhpcyB3b3Vs ZCByZXF1aXJlIHRoYXQgdXNlcnMgdHdlYWsKQGNvZGV7ZWdsb3Qtc2VydmVyLXByb2dyYW19IHRv IHRlbGwgRWdsb3QgaW5zdGFudGlhdGUgc3VjaCBzdWItY2xhc3NlcwppbnN0ZWFkIG9mIHRoZSBn ZW5lcmljIEBjb2Rle2VnbG90LWxzcC1zZXJ2ZXJ9IChAcHhyZWZ7U2V0dGluZyBVcCBMU1AKU2Vy dmVyc30pLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgcGFydGljdWxhciBkZW1vbnN0cmF0aW9u LCB3ZSdyZQpnb2luZyB0byB1c2UgdGhlIG1vcmUgaGFja3kgcmVnZXhwIHJvdXRlIHdoaWNoIGRv ZXNuJ3QgcmVxdWlyZSB0aGF0LgoKTm90ZSwgaG93ZXZlciwgdGhhdCBkZXRlY3Rpbmcgc2VydmVy IHZlcnNpb25zIGJlZm9yZSBhbm5vdW5jaW5nIG5ldwpjYXBhYmlsaXRpZXMgaXMgZ2VuZXJhbGx5 IG5vdCBuZWVkZWQsIGFzIGJvdGggc2VydmVyIGFuZCBjbGllbnQgYXJlCnJlcXVpcmVkIGJ5IExT UCB0byBpZ25vcmUgdW5rbm93biBjYXBhYmlsaXRpZXMgYWR2ZXJ0aXNlZCBieSB0aGVpcgpjb3Vu dGVycGFydHMuCgpAaXRlbQpUaGUgc2Vjb25kIG1ldGhvZCBpbXBsZW1lbnRzIEBjb2Rle2VnbG90 LWhhbmRsZS1ub3RpZmljYXRpb259IHRvCnByb2Nlc3MgdGhlIHNlcnZlciBub3RpZmljYXRpb24g Zm9yIHRoZSBMU1AgbWV0aG9kCkBjb2Rle3RleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnN9LiAg Rm9yIGVhY2ggcmVnaW9uIHJlY2VpdmVkIGl0CmNyZWF0ZXMgYW4gb3ZlcmxheSBhcHBseWluZyB0 aGUgQGNvZGV7c2hhZG93fSBmYWNlIHRvIHRoZSByZWdpb24uCk92ZXJsYXlzIGFyZSByZWNyZWF0 ZWQgZXZlcnkgdGltZSBhIG5ldyBub3RpZmljYXRpb24gb2YgdGhpcyBraW5kIGlzCnJlY2VpdmVk LgoKVG8gbGVhcm4gYWJvdXQgaG93IEBjb21tYW5ke2NsYW5nZH0ncyBzcGVjaWFsIEpTT05SUEMg bm90aWZpY2F0aW9uCm1lc3NhZ2UgaXMgc3RydWN0dXJlZCBpbiBkZXRhaWwgeW91IGNvdWxkIGNv bnN1bHQgdGhhdCBzZXJ2ZXIncwpkb2N1bWVudGF0aW9uLiAgQW5vdGhlciBwb3NzaWJpbGl0eSBp cyB0byBldmFsdWF0ZSB0aGUgZmlyc3QKY2FwYWJpbGl0eS1hbm5vdW5jaW5nIG1ldGhvZCwgcmVj b25uZWN0IHRvIHRoZSBzZXJ2ZXIgYW5kIHBlZWsgaW4gdGhlCmV2ZW50cyBidWZmZXIgKEBweHJl ZntFZ2xvdCBDb21tYW5kcywgZWdsb3QtZXZlbnRzLWJ1ZmZlcn0pLiAgWW91CmNvdWxkIGZpbmQg c29tZXRoaW5nIGxpa2U6CgpAbGlzcApbc2VydmVyLW5vdGlmaWNhdGlvbl0gTW9uIFNlcCAgNCAw MToxMDowNCAyMDIzOgooOmpzb25ycGMgIjIuMCIgOm1ldGhvZCAidGV4dERvY3VtZW50L2luYWN0 aXZlUmVnaW9ucyIgOnBhcmFtcwogICAgICAgICAgKDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAo OnVyaSAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuY3BwIikKICAgICAgICAgICA6cmVnaW9ucwogICAg ICAgICAgIFsoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMTgpCiAgICAgICAgICAgICA6ZW5k ICg6Y2hhcmFjdGVyIDU4IDpsaW5lIDE5KSkKICAgICAgICAgICAgKDpzdGFydCAoOmNoYXJhY3Rl ciAwIDpsaW5lIDM2KQogICAgICAgICAgICAgOmVuZCAoOmNoYXJhY3RlciAxIDpsaW5lIDM4KSld KSkKQGVuZCBsaXNwCgpUaGlzIHJldmVhbHMgdGhhdCB0aGUgQGNvZGV7dGV4dERvY3VtZW50L2lu YWN0aXZlUmVnaW9uc30gbm90aWZpY2F0aW9uCmNvbnRhaW5zIGEgQGNvZGV7OnRleHREb2N1bWVu dH0gcHJvcGVydHkgdG8gZGVzaWduYXRlIHRoZSBtYW5hZ2VkCmJ1ZmZlciBhbmQgYW4gYXJyYXkg b2YgTFNQIHJlZ2lvbnMgdW5kZXIgdGhlIEBjb2RlezpyZWdpb25zfSBwcm9wZXJ0eS4KTm90aWNl IGhvdyB0aGUgbWVzc2FnZSAob3JpZ2luYWxseSBpbiBKU09OIGZvcm1hdCksIGlzIHJlcHJlc2Vu dGVkIGFzCkVsaXNwIHBsaXN0cyAoQHB4cmVme0pTT05SUEMgb2JqZWN0cyBpbiBFbGlzcH0pLgoK VGhlIEVnbG90IGdlbmVyaWMgZnVuY3Rpb24gbWFjaGluZXJ5IHdpbGwgYXV0b21hdGljYWxseSBk ZXN0cnVjdHVyZQp0aGUgaW5jb21pbmcgbWVzc2FnZSwgc28gdGhlc2UgdHdvIHByb3BlcnRpZXMg Y2FuIHNpbXBseSBiZSBhZGRlZCB0bwp0aGUgbmV3IG1ldGhvZCdzIGxhbWJkYSBsaXN0IGFzIEBj b2RleyZrZXl9IGFyZ3VtZW50cy4gIEFsc28sIHRoZQpAY29kZXtlZ2xvdC11cmktdG8tcGF0aH0g YW5kIEBjb2Rle2VnbG90LXJhbmdlLXJlZ2lvbn0gbWF5IGJlIHVzZWQgdG8KZWFzaWx5IHBhcnNl IHRoZSBMU1AgQGNvZGV7OnVyaX0gYW5kIEBjb2RlezpzdGFydCAuLi4gOmVuZCAuLi59Cm9iamVj dHMgdG8gb2J0YWluIEVtYWNzIG9iamVjdHMgZm9yIGZpbGUgbmFtZXMgYW5kIHBvc2l0aW9ucy4K ClRoZSByZW1haW5kZXIgb2YgdGhlIGltcGxlbWVudGF0aW9uIGNvbnNpc3RzIG9mIHN0YW5kYXJk IEVsaXNwCnRlY2huaXF1ZXMgdG8gbG9vcCBvdmVyIGFycmF5cywgbWFuYWdlIGJ1ZmZlcnMgYW5k IG92ZXJsYXlzLgoKQGxpc3AKKGNsLWRlZm1ldGhvZCBlZ2xvdC1oYW5kbGUtbm90aWZpY2F0aW9u CiAgKF9zZXJ2ZXIgKF9tZXRob2QgKGVxbCB0ZXh0RG9jdW1lbnQvaW5hY3RpdmVSZWdpb25zKSkK ICAgICAgICAgICAma2V5IHJlZ2lvbnMgdGV4dERvY3VtZW50ICZhbGxvdy1vdGhlci1rZXlzKQog IChpZi1sZXQqICgocGF0aCAoZXhwYW5kLWZpbGUtbmFtZSAoZWdsb3QtdXJpLXRvLXBhdGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbC1nZXRmIHRleHREb2N1bWVudCA6 dXJpKSkpKQogICAgICAgICAgICAoYnVmZmVyIChmaW5kLWJ1ZmZlci12aXNpdGluZyBwYXRoKSkp CiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgogICAgICAgIChyZW1vdmUtb3Zlcmxh eXMgbmlsIG5pbCAnaW5hY3RpdmUtY29kZSB0KQogICAgICAgIChjbC1sb29wCiAgICAgICAgIGZv ciByIGFjcm9zcyByZWdpb25zCiAgICAgICAgIGZvciAoYmVnIC4gZW5kKSA9IChlZ2xvdC1yYW5n ZS1yZWdpb24gcikKICAgICAgICAgZm9yIG92ID0gKG1ha2Utb3ZlcmxheSBiZWcgZW5kKQogICAg ICAgICBkbwogICAgICAgICAob3ZlcmxheS1wdXQgb3YgJ2ZhY2UgJ3NoYWRvdykKICAgICAgICAg KG92ZXJsYXktcHV0IG92ICdpbmFjdGl2ZS1jb2RlIHQpKSkpKQpAZW5kIGxpc3AKCkBlbmQgaXRl bWl6ZQoKQWZ0ZXIgZXZhbHVhdGluZyB0aGVzZSB0d28gYWRkaXRpb25zIGFuZCByZWNvbm5lY3Rp bmcgdG8gdGhlCkBjb21tYW5ke2NsYW5nZH0gbGFuZ3VhZ2Ugc2VydmVyICh2ZXJzaW9uIDE3KSwg dGhlIHJlc3VsdCB3aWxsIGJlIHRoYXQKYWxsIHRoZSBpbmFjdGl2ZSBjb2RlIGluIHRoZSBidWZm ZXIgd2lsbCBiZSBuaWNlbHkgZ3JheWVkIG91dCB1c2luZwp0aGUgTFNQIHNlcnZlciBrbm93bGVk Z2UgYWJvdXQgY3VycmVudCBjb21waWxlIHRpbWUgcHJlcHJvY2Vzc29yCmRlZmluZXMuCgpAbm9k ZSBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKQGNoYXB0ZXIgVHJvdWJsZXNob290aW5nIEVnbG90CkBj aW5kZXggdHJvdWJsZXNob290aW5nIEVnbG90CgpUaGlzIGNoYXB0ZXIgZG9jdW1lbnRzIGNvbW1h bmRzIGFuZCB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgdXNlZCB0bwp0cm91Ymxlc2hvb3QgRWdsb3Qg cHJvYmxlbXMuICBJdCBhbHNvIHByb3ZpZGVzIGd1aWRlbGluZXMgZm9yCnJlcG9ydGluZyBFZ2xv dCBidWdzIGluIGEgd2F5IHRoYXQgZmFjaWxpdGF0ZXMgdGhlaXIgcmVzb2x1dGlvbi4KCldoZW4g eW91IGVuY291bnRlciBwcm9ibGVtcyB3aXRoIEVnbG90LCB0cnkgZmlyc3QgdXNpbmcgdGhlIGNv bW1hbmRzCkBrYmR7TS14IGVnbG90LWV2ZW50cy1idWZmZXJ9IGFuZCBAa2Jke00teCBlZ2xvdC1z dGRlcnItYnVmZmVyfS4gIFRoZXkKcG9wIHVwIHNwZWNpYWwgYnVmZmVycyB0aGF0IGNhbiBiZSB1 c2VkIHRvIGluc3BlY3QgdGhlIGNvbW11bmljYXRpb25zCmJldHdlZW4gdGhlIEVnbG90IGFuZCBs YW5ndWFnZSBzZXJ2ZXIuICBJbiBtYW55IGNhc2VzLCB0aGlzIHdpbGwKaW5kaWNhdGUgdGhlIHBy b2JsZW1zIG9yIGF0IGxlYXN0IHByb3ZpZGUgYSBoaW50LgoKQG1lbnUKKiBQZXJmb3JtYW5jZTo6 CiogR2V0dGluZyB0aGUgbGF0ZXN0IHZlcnNpb246OgoqIFJlcG9ydGluZyBidWdzOjoKQGVuZCBt ZW51CgpAbm9kZSBQZXJmb3JtYW5jZQpAc2VjdGlvbiBQZXJmb3JtYW5jZQpAY2luZGV4IHBlcmZv cm1hbmNlIHByb2JsZW1zLCB3aXRoIEVnbG90CkEgY29tbW9uIGFuZCBlYXN5LXRvLWZpeCBjYXVz ZSBvZiBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiBFZ2xvdAooZXNwZWNpYWxseSBpbiBvbGRlciB2 ZXJzaW9ucykgaXMgaXRzIGV2ZW50cyBidWZmZXIsIHNpbmNlIGl0CnJlcHJlc2VudHMgYWRkaXRp b25hbCB3b3JrIHRoYXQgRWdsb3QgbXVzdCBkbyAoQHB4cmVme0VnbG90IENvbW1hbmRzLAplZ2xv dC1ldmVudHMtYnVmZmVyfSkuICBJZiB5b3UgZmluZCBFZ2xvdCBpcyBvcGVyYXRpbmcgY29ycmVj dGx5IGJ1dApzbG93bHksIHRyeSB0byBjdXN0b21pemUgdGhlIHZhcmlhYmxlCkBjb2Rle2VnbG90 LWV2ZW50cy1idWZmZXItY29uZmlnfSAoQHB4cmVme0VnbG90IFZhcmlhYmxlc30pIGFuZCBzZXQK aXRzIEBjb2RlezpzaXplfSBwcm9wZXJ0eSB0byAwLiAgVGhpcyB3aWxsIGRpc2FibGUgcmVjb3Jk aW5nIGFueQpldmVudHMgYW5kIG1heSBzcGVlZCB0aGluZ3MgdXAuCgpJbiBvdGhlciBzaXR1YXRp b25zLCB0aGUgY2F1c2Ugb2YgcG9vciBwZXJmb3JtYW5jZSBsaWVzIGluIHRoZQpsYW5ndWFnZSBz ZXJ2ZXIgaXRzZWxmLiAgU2VydmVycyB1c2UgYWdncmVzc2l2ZSBjYWNoaW5nIGFuZCBvdGhlcgp0 ZWNobmlxdWVzIHRvIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2UuICBPZnRlbiwgdGhpcyBjYW4g YmUgdHdlYWtlZApieSBjaGFuZ2luZyB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gKEBweHJlZntB ZHZhbmNlZCBzZXJ2ZXIKY29uZmlndXJhdGlvbn0pLgoKQG5vZGUgR2V0dGluZyB0aGUgbGF0ZXN0 IHZlcnNpb24KQHNlY3Rpb24gR2V0dGluZyB0aGUgbGF0ZXN0IHZlcnNpb24KQGNpbmRleCB1cGdy YWRpbmcgRWdsb3QKClRvIGluc3RhbGwgdGhlIGxhdGVzdCBFZ2xvdCBpbiBhbiBFbWFjcyB2ZXJz aW9uIHRoYXQgZG9lcyBub3QgYnVuZGxlCkVnbG90LCB1c2UgQGtiZHtNLXggcGFja2FnZS1pbnN0 YWxsfS4KCk9mdGVuLCBhIG5ld2VyIEVnbG90IHZlcnNpb24gZXhpc3RzIHRoYXQgaGFzIGZpeGVk IGEgbG9uZ3N0YW5kaW5nIGJ1ZywKaGFzIG1vcmUgTFNQIGZlYXR1cmVzLCBvciBqdXN0IGJldHRl ciBzdXBwb3J0cyBhIHBhcnRpY3VsYXIgbGFuZ3VhZ2UKc2VydmVyLiAgUmVjZW50IEVnbG90IHZl cnNpb25zIGNhbiBzZWxmLXVwZGF0ZSB2aWEgdGhlIGNvbW1hbmQKQGtiZHtNLXggZWdsb3QtdXBn cmFkZS1lZ2xvdH0uICBUaGlzIHdpbGwgcmVwbGFjZSBhbnkgY3VycmVudGx5Cmluc3RhbGxlZCB2 ZXJzaW9uIHdpdGggdGhlIG5ld2VzdCBvbmUgYXZhaWxhYmxlIGZyb20gdGhlIEVMUEEgYXJjaGl2 ZXMKY29uZmlndXJlZCBpbiBAY29kZXtwYWNrYWdlLWFyY2hpdmVzfS4KCllvdSBjYW4gYWxzbyB1 cGRhdGUgRWdsb3QgdGhyb3VnaCBvdGhlciBtZXRob2RzLCBzdWNoIGFzCkBjb2Rle3VzZS1wYWNr YWdlfSAoQHB4cmVme0luc3RhbGxpbmcgcGFja2FnZXMsLCwgdXNlLXBhY2thZ2UsCnVzZS1wYWNr YWdlIFVzZXIgTWFudWFsfSksIEBjb2Rle3BhY2thZ2UtaW5zdGFsbH0sCkBjb2Rle2xpc3QtcGFj a2FnZXN9IG9yIHRoZSBuZXdlciBAY29kZXtwYWNrYWdlLXVwZ3JhZGV9CihAcHhyZWZ7UGFja2Fn ZXMsLCwgZW1hY3MsIEdOVSBFbWFjcyBNYW51YWx9KS4gIEhvd2V2ZXIsIGRvIHJlYWQgdGhlCmRv Y3N0cmluZ3Mgb2YgdGhlIGNvbW1hbmQgeW91IGludGVuZCB0byB1c2UgYmVmb3JlIHlvdSB1c2Ug aXQsIGFzIHNvbWUKb2YgdGhlbSBtYXkgbm90IHdvcmsgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkg YWNyb3NzIEVtYWNzIHZlcnNpb25zLAptZWFuaW5nIHlvdXIgY29uZmlndXJhdGlvbiBtYXkgYmUg bm90IHBvcnRhYmxlLgoKQG5vZGUgUmVwb3J0aW5nIGJ1Z3MKQHNlY3Rpb24gUmVwb3J0aW5nIGJ1 Z3MKQGNpbmRleCBidWcgcmVwb3J0cwoKSWYgeW91IHRoaW5rIHlvdSBoYXZlIGZvdW5kIGEgYnVn LCB3ZSB3YW50IHRvIGhlYXIgYWJvdXQgaXQuICBCZWZvcmUKcmVwb3J0aW5nIGEgYnVnLCBrZWVw IGluIG1pbmQgdGhhdCBpbnRlcmFjdGlvbiB3aXRoIGxhbmd1YWdlIHNlcnZlcnMKcmVwcmVzZW50 cyBhIGxhcmdlIHF1YW50aXR5IG9mIHVua25vd24gdmFyaWFibGVzLiAgVGhlcmVmb3JlLCBpdCBp cwpnZW5lcmFsbHkgYm90aCBAZW1waHtkaWZmaWN1bHR9IGFuZCBAZW1waHthYnNvbHV0ZWx5IGVz c2VudGlhbH0gdGhhdAp0aGUgbWFpbnRhaW5lcnMgcmVwcm9kdWNlIGJ1Z3MgZXhhY3RseSBhcyB0 aGV5IGhhcHBlbmVkIHRvIHlvdSwgdGhlCnVzZXIuCgpUbyByZXBvcnQgYW4gRWdsb3QgYnVnLCBz ZW5kIGUtbWFpbCB0byBAZW1haWx7YnVnLWdudS1lbWFjc0BAZ251Lm9yZ30uCgpUbyB1bmRlcnN0 YW5kIGhvdyB0byB3cml0ZSB0aGlzIGVtYWlsLCBnZXQgYWNxdWFpbnRlZCB3aXRoIEVtYWNzJ3Mg YnVnCnJlcG9ydGluZyBndWlkZWxpbmVzIChAcHhyZWZ7QnVncywsLCBlbWFjcywgR05VIEVtYWNz IE1hbnVhbH0pLiAgVGhlbiwKZm9sbG93IHRoaXMgRWdsb3Qtc3BlY2lmaWMgY2hlY2tsaXN0OgoK QGVudW1lcmF0ZQpAaXRlbQpJbmNsdWRlIHRoZSB0cmFuc2NyaXB0IG9mIEpTT05SUEMgZXZlbnRz IG9idGFpbmVkIGZyb20gdGhlIGJ1ZmZlcgpwb3BwZWQgdXAgYnkgQGtiZHtNLXggZWdsb3QtZXZl bnRzLWJ1ZmZlcn0uICBZb3UgbWF5IG5hcnJvdyBkb3duIHRoZQp0cmFuc2NyaXB0IGlmIHlvdSBh cmUgc3VyZSBvZiB3aGVyZSB0aGUgcHJvYmxlbWF0aWMgZXhjaGFuZ2UgaXMsIGJ1dAppdCdzIHNh ZmVyIHRvIGluY2x1ZGUgdGhlIHdob2xlIHRyYW5zY3JpcHQsIGVpdGhlciBhdHRhY2hlZCBvciBp bmxpbmUuCgpAaXRlbQpJZiBFbWFjcyBzaWduYWxlZCBhbiBlcnJvciAoYW4gZXJyb3IgbWVzc2Fn ZSB3YXMgc2VlbiBvciBoZWFyZCksIG1ha2UKc3VyZSB0byByZXBlYXQgdGhlIHByb2Nlc3MgYWZ0 ZXIgdHVybmluZyBvbiBAY29kZXtkZWJ1Zy1vbi1lcnJvcn0gdmlhCkBrYmR7TS14IHRvZ2dsZS1k ZWJ1Zy1vbi1lcnJvcn0uICBUaGlzIG5vcm1hbGx5IHByb2R1Y2VzIGEgYmFja3RyYWNlCm9mIHRo ZSBlcnJvciB0aGF0IHNob3VsZCBhbHNvIGJlIGF0dGFjaGVkIHRvIHRoZSBidWcgcmVwb3J0LgoK QGl0ZW0KSW5jbHVkZSBhIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgbWFpbnRhaW5lciBzaG91bGQg b2J0YWluLCBpbnN0YWxsLAphbmQgY29uZmlndXJlIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgeW91IHVz ZWQuICBNYWludGFpbmVycyB1c3VhbGx5IGhhdmUKYWNjZXNzIHRvIEdOVS9MaW51eCBzeXN0ZW1z LCB0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBkaXN0cmlidXRpb24KdGhhdCB5b3UgbWF5IGJl IHVzaW5nLiAgSWYgcG9zc2libGUsIHRyeSB0byByZXBsaWNhdGUgdGhlIHByb2JsZW0gd2l0aAp0 aGUgQy9DQHR7Kyt9IG9yIFB5dGhvbiBzZXJ2ZXJzLCBhcyB0aGVzZSBhcmUgdmVyeSBlYXN5IHRv IGluc3RhbGwuCgpAaXRlbQpEZXNjcmliZSBob3cgdG8gc2V0dXAgYSBAZW1waHttaW5pbWFsfSBw cm9qZWN0IGRpcmVjdG9yeSB3aGVyZSBFZ2xvdApzaG91bGQgYmUgc3RhcnRlZCBmb3IgdGhlIHBy b2JsZW0gdG8gaGFwcGVuLiAgRGVzY3JpYmUgZWFjaCBmaWxlJ3MKbmFtZSBhbmQgaXRzIGNvbnRl bnRzLiAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBzdXBwbHkgdGhlIGFkZHJlc3Mgb2YgYQpwdWJs aWMgR2l0IHJlcG9zaXRvcnkuCgpAaXRlbQpJbmNsdWRlIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2Fy ZSB1c2VkLiAgVGhlIEVtYWNzIHZlcnNpb24gY2FuIGJlCm9idGFpbmVkIHdpdGggQGtiZHtNLXgg ZW1hY3MtdmVyc2lvbn0uCgpXZSB3ZWxjb21lIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBFZ2xvdCB2 ZXJzaW9ucywgYnV0IGl0IGlzIGhlbHBmdWwgdG8KZmlyc3QgY2hlY2sgaWYgdGhlIHByb2JsZW0g aXNuJ3QgYWxyZWFkeSBmaXhlZCBpbiB0aGUgbGF0ZXN0IHZlcnNpb24KKEBweHJlZntHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbn0pLgoKSXQncyBhbHNvIGVzc2VudGlhbCB0byBpbmNsdWRlIHRo ZSB2ZXJzaW9uIG9mIEVMUEEgcGFja2FnZXMgdGhhdCBhcmUKZXhwbGljaXRseSBvciBpbXBsaWNp dGx5IGxvYWRlZC4gIFRoZSBvcHRpb25hbCBidXQgcG9wdWxhciBDb21wYW55IG9yCk1hcmtkb3du IHBhY2thZ2VzIGFyZSBkaXN0cmlidXRlZCBhcyBHTlUgRUxQQSBwYWNrYWdlcywgbm90IHRvIG1l bnRpb24KRWdsb3QgaXRzZWxmIGluIHNvbWUgc2l0dWF0aW9ucy4gIFNvbWUgbWFqb3IgbW9kZXMg KEdvLCBSdXN0LCBldGMuKQphcmUgcHJvdmlkZWQgYnkgRUxQQSBwYWNrYWdlcy4gIEl0J3Mgc29t ZXRpbWVzIGVhc3kgdG8gbWlzcyB0aGVzZSwKc2luY2UgdGhleSBhcmUgdXN1YWxseSBpbXBsaWNp dGx5IGxvYWRlZCB3aGVuIHZpc2l0aW5nIGEgZmlsZSBpbiB0aGF0Cmxhbmd1YWdlLgoKRUxQQSBw YWNrYWdlcyB1c3VhbGx5IGxpdmUgaW4gQGNvZGV7fi8uZW1hY3MuZC9lbHBhfSAob3Igd2hhdCBp cyBpbgpAY29kZXtwYWNrYWdlLXVzZXItZGlyfSkuICBJbmNsdWRpbmcgYSBsaXN0aW5nIG9mIGZp bGVzIGluIHRoYXQKZGlyZWN0b3J5IGlzIGEgd2F5IHRvIHRlbGwgdGhlIG1haW50YWluZXJzIGFi b3V0IEVMUEEgcGFja2FnZQp2ZXJzaW9ucy4KCkBpdGVtCkluY2x1ZGUgYSByZWNpcGUgdG8gcmVw bGljYXRlIHRoZSBwcm9ibGVtIHdpdGggQGVtcGh7YSBjbGVhbiBFbWFjcwpydW59LiAgVGhlIGlu dm9jYXRpb24gQGNvZGV7ZW1hY3MgLVEgLWYgcGFja2FnZS1pbml0aWFsaXplfSBzdGFydHMKRW1h Y3Mgd2l0aCBubyBjb25maWd1cmF0aW9uIGFuZCBpbml0aWFsaXplcyB0aGUgRUxQQSBwYWNrYWdl cy4gIEEgdmVyeQptaW5pbWFsIEBmaWxley5lbWFjc30gaW5pdGlhbGl6YXRpb24gZmlsZSAoMTAg bGluZXMgb3IgbGVzcykgaXMgYWxzbwphY2NlcHRhYmxlIGFuZCBnb29kIG1lYW5zIHRvIGRlc2Ny aWJlIGNoYW5nZXMgdG8gdmFyaWFibGVzLgoKVGhlcmUgaXMgdXN1YWxseSBubyBuZWVkIHRvIGlu Y2x1ZGUgQGNvZGV7cmVxdWlyZX0gc3RhdGVtZW50cyBpbiB0aGUKcmVjaXBlLCBhcyBFZ2xvdCdz IGZ1bmN0aW9uYWxpdHkgdXNlcyBhdXRvbG9hZHMuCgpMaWtld2lzZSwgdGhlcmUgaXMgcmFyZWx5 IHRoZSBuZWVkIHRvIHVzZSB0aGluZ3MgbGlrZQpAY29kZXt1c2UtcGFja2FnZX0gb3IgQGNvZGV7 ZWdsb3QtZW5zdXJlfS4gIFRoaXMganVzdCBtYWtlcyB0aGUgcmVjaXBlCmhhcmRlciB0byBmb2xs b3cuICBQcmVmZXIgc2V0dGluZyB2YXJpYWJsZXMgd2l0aCBAY29kZXtzZXRxfSBhbmQKYWRkaW5n IHRvIGhvb2tzIHdpdGggQGNvZGV7YWRkLWhvb2t9LiAgUHJlZmVyIHN0YXJ0aW5nIEVnbG90IHdp dGgKQGNvZGV7TS14IGVnbG90fS4KCkBpdGVtCk1ha2Ugc3VyZSB0byBkb3VibGUgY2hlY2sgYWxs IHRoZSBhYm92ZSBlbGVtZW50cyBhbmQgcmUtcnVuIHRoZSByZWNpcGUKdG8gc2VlIHRoYXQgdGhl IHByb2JsZW0gaXMgcmVwcm9kdWNpYmxlLiAgRm9sbG93aW5nIHRoZSByZWNpcGUgc2hvdWxkCnBy b2R1Y2UgZXZlbnQgdHJhbnNjcmlwdCBhbmQgZXJyb3IgYmFja3RyYWNlcyB0aGF0IGFyZSB2ZXJ5 IHNpbWlsYXIgdG8KdGhlIG9uZXMgeW91IGluY2x1ZGVkLiAgSWYgdGhlIHByb2JsZW0gb25seSBo YXBwZW5zIHNvbWV0aW1lcywgbWVudGlvbgp0aGlzIGluIHlvdXIgcmVwb3J0LgpAZW5kIGVudW1l cmF0ZQoKUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHNvbWUgcHJvYmxlbXMgcmVwb3J0ZWQgYWdh aW5zdCBFZ2xvdCBtYXkKYWN0dWFsbHkgYmUgYnVncyBpbiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIG9y IHRoZSBFbWFjcyBmZWF0dXJlL3BhY2thZ2UKdGhhdCB1c2VkIEVnbG90IHRvIGNvbW11bmljYXRl IHdpdGggdGhlIGxhbmd1YWdlIHNlcnZlci4gIEVnbG90IGlzLCBpbgptYW55IGNhc2VzLCBqdXN0 IGEgZnJvbnRlbmQgdG8gdGhhdCBmdW5jdGlvbmFsaXR5LgoKQG5vZGUgR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlCkBhcHBlbmRpeCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UK QGluY2x1ZGUgZG9jbGljZW5zZS50ZXhpCgpAbm9kZSBJbmRleApAdW5udW1iZXJlZCBJbmRleApA cHJpbnRpbmRleCBjcAoKQGJ5ZQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAGVnbG90LTEuMTcvRUdMT1QtTkVXUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw MDAwNjQ0ADAwMDE3NTAAMDAwMTc1MAAwMDAwMDA1NDEzMAAxNDY3MTU0MDA2NwAwMTM0NzQAIDAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAARWdsb3QgTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLSotIG91dGxpbmUgLSotCgpDb3B5cmlnaHQgKEMpIDIwMTgtMjAy NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KU2VlIHRoZSBlbmQgb2YgdGhlIGZpbGUg Zm9yIGxpY2Vuc2UgY29uZGl0aW9ucy4KClBsZWFzZSBzZW5kIEVnbG90IGJ1ZyByZXBvcnRzIHRv ICdidWctZ251LWVtYWNzQGdudS5vcmcnLCBhbmQgQ2MgKG9yClgtRGViYnVncy1DQykgdGhlIG1h aW50YWluZXIgJ2pvYW90YXZvcmFAZ21haWwuY29tJyBhcyB3ZWxsLiAgUGxlYXNlCnJlYWQgdGhl IGNoYXB0ZXIgdGl0bGVkICJUcm91Ymxlc2hvb3RpbmciIGluIHRoZSBFZ2xvdCBtYW51YWwsCmF2 YWlsYWJsZSBodHRwczovL2pvYW90YXZvcmEuZ2l0aHViLmlvL2VnbG90LyNUcm91Ymxlc2hvb3Rp bmctRWdsb3QKClRoaXMgZmlsZSBpcyBhYm91dCBjaGFuZ2VzIGluIEVnbG90LCB0aGUgRW1hY3Mg Y2xpZW50IGZvciBMU1AKKExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCkgZGlzdHJpYnV0ZWQgd2l0 aCBHTlUgRW1hY3Mgc2luY2UgRW1hY3MKdmVyc2lvbiAyOS4xIGFuZCB3aXRoIEdOVSBFTFBBIHNp bmNlIDIwMTguCgpOb3RlOiByZWZlcmVuY2VzIHRvIHNvbWUgRWdsb3QgaXNzdWVzIGFyZSBwcmVz ZW50ZWQgYXMgImdpdGh1YiNubm5uIi4KVGhpcyByZWZlcnMgdG8gaHR0cHM6Ly9naXRodWIuY29t L2pvYW90YXZvcmEvZWdsb3QvaXNzdWVzLy4gIFRoYXQgaXMsCnRvIGxvb2sgdXAgaXNzdWUgZ2l0 aHViIzEyMzQsIGdvIHRvCmh0dHBzOi8vZ2l0aHViLmNvbS9qb2FvdGF2b3JhL2VnbG90L2lzc3Vl cy8xMjM0LgoKDAoqIENoYW5nZXMgaW4gdXBjb21pbmcgRWdsb3QKCgwKKiBDaGFuZ2VzIGluIEVn bG90IDEuMTcgKDI1LzEvMjAyNCkKCioqIEZpeGVzIHRvIGNvbXBsZXRpb24gKGdpdGh1YiM4NDcs IGdpdGh1YiMxMzQ5KQoKKiogRml4IGNvZGUtYWN0aW9uIGdhdGhlcmluZyBmb3Igc29tZSBzZXJ2 ZXJzIChnaXRodWIjODQ3KQoKKiogRXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIEVnbG90LW9ubHkg c3VicHJvamVjdHMKClVudGlsIHByb2plY3QuZWwncyBzdXBwb3J0IGZvciBzdWJwcm9qZWN0cyBp bXByb3ZlcywgZ2l0aHViIzEzMzcKZGVzY3JpYmVzIGEgcmVhc29uYWJseSBzYW5lIHdheSB0byBj b25maWd1cmUgbmVzdGVkIHN1Yi1wcm9qZWN0cwp3aXRoaW4gYSBsYXJnZXIgb25lIGp1c3QgZm9y IEVnbG90IHB1cnBvc2VzLgoKDAoqIENoYW5nZXMgaW4gRWdsb3QgMS4xNiAoMjcvMTIvMjAyMykK CioqIENvZGUgYWN0aW9ucyBjYW4gYmUgcHJldmlld2VkIGluIGRpZmYgZm9ybWF0CgpUaGUgdmFy aWFibGUgJ2VnbG90LWNvbmZpcm0tc2VydmVyLWVkaXRzJyByZXBsYWNlcyB0aGUgb2Jzb2xldGUK J2VnbG90LWNvbmZpcm0tc2VydmVyLWluaXRpYXRlZC1lZGl0cycgYW5kIGJyaW5ncyBhYm91dCBh IG5ldwpjb25maXJtYXRpb24gbW9kZWwgZm9yIGNvZGUgYWN0aW9ucywgbWFraW5nIGl0IHBvc3Np YmxlIHRvIGhhdmUgb25seQpjZXJ0YWluIGNvbW1hbmRzIHJlcXVpcmUgdXNlciBjb25maXJtYXRp b24uICBJdCBhbGxvd3MgYSB0ZW1wb3JhcnkKJ2RpZmYtbW9kZScgYnVmZmVyIHRvIGRpc3BsYXkg dGhlIHByb3Bvc2VkIGNoYW5nZXMsIHNvIHRoZSB1c2VyIGNhbgphcHBseSB0aGVtIG9uZSBieSBv bmUuICBTZWUgYnVnIzYwMzM4LgoKKiogQ29tcGxldGlvbiBzb3J0aW5nIGhhcyBiZWVuIGZpeGVk CgpJbiBzb21lIHNpdHVhdGlvbnMsIEVnbG90IHdhcyBub3QgcmVzcGVjdGluZyB0aGUgY29tcGxl dGlvbiBzb3J0IG9yZGVyCmRlY2lkZWQgYnkgdGhlIGxhbmd1YWdlIHNlcnZlciwgZmFsbGluZyBi YWNrIG9uIHRoZSBzb3J0IG9yZGVyCmRldGVybWluZWQgYnkgdGhlICdmbGV4JyBjb21wbGV0aW9u IHN0eWxlIGluc3RlYWQuICBTZWUgZ2l0aHViIzEzMDYuCgoqKiBJbXByb3ZlIG1vdXNlIGludm9j YXRpb24gb2YgY29kZSBhY3Rpb25zCgpXaGVuIGludm9raW5nIGNvZGUgYWN0aW9ucyBieSBtaWRk bGUgY2xpY2tpbmcgd2l0aCB0aGUgbW91c2Ugb24KRmx5bWFrZSBkaWFnbm9zdGljcywgaXQgd2Fz IG9mdGVuIHRoZSBjYXNlIHRoYXQgRWdsb3QgZGlkbid0IHJlcXVlc3QKY29kZSBhY3Rpb25zIGNv cnJlY3RseSBhbmQgdGh1cyBubyBhY3Rpb25zIHdlcmUgb2ZmZXJlZCB0byB0aGUgdXNlci4KVGhp cyBoYXMgYmVlbiBmaXhlZC4gIFNlZSBnaXRodWIjMTI5NS4KCioqIE9wdGltaXplZCBmaWxlLXdh dGNoaW5nIGNhcGFiaWxpdHkKClNvbWUgc2VydmVycywgbGlrZSB0aGUgUHlyaWdodCBsYW5ndWFn ZSBzZXJ2ZXIsIGlzc3VlIHRvbyBtYW55IGZpbGUKd2F0Y2hpbmcgcmVxdWVzdHMuICBUaGlzIGNo YW5nZSBzbGlnaHRseSByZWR1Y2VzIHRoZSBudW1iZXIgb2YgZmlsZQp3YXRjaGVyIG9iamVjdHMg cmVxdWVzdGVkIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0sIHdoaWNoIGNhbiBiZSBhCnByb2Js ZW0sIHBhcnRpY3VsYXJseSBvbiBNYWMgT1MuICBTZWUgZ2l0aHViIzEyMjggYW5kIGdpdGh1YiMx MjI2LgoKKiogRmFzdGVyLCBtb3JlIGFjY3VyYXRlLCBldmVudCBsb2dnaW5nCgpUaGUgRWdsb3Qg ZXZlbnRzIGJ1ZmZlciB0YWtlcyBhZHZhbnRhZ2Ugb2YgbmV3IGZ1bmN0aW9uYWxpdHkgaW4KSnNv bnJwYyAxLjIzLiAgQnkgZGVmYXVsdCwgTGlzcC1zdHlsZSBwcmludGluZyBvZiBKU09OLVJQQyBt ZXNzYWdlIChhCmNvbW1vbiBjYXVzZSBvZiBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbikgaXMgZGlz YWJsZWQuICBUaGUgZnVsbApvcmlnaW5hbCBKU09OIG1lc3NhZ2UgaXMgcHJlc2VudGVkIGluc3Rl YWQuICBTZWUgbmV3IHZhcmlhYmxlCidlZ2xvdC1ldmVudHMtYnVmZmVyLWNvbmZpZycsIHdoaWNo IHJlcGxhY2VzIHRoZSBvYnNvbGV0ZQonZWdsb3QtZXZlbnRzLWJ1ZmZlci1zaXplJy4KCioqICd0 ZXh0ZG9jdW1lbnQvb25UeXBlRm9ybWF0dGluZycgZmVhdHVyZSBoYXMgYmVlbiBmaXhlZAoKRm9y ICduZXdsaW5lJyBjb21tYW5kcywgRWdsb3Qgc29tZXRpbWVzIHNlbnQgdGhlIHdyb25nIGNoYXJh Y3RlciBjb2RlCnRvIHRoZSBzZXJ2ZXIuICBBbHNvIHRoaXMgZmVhdHVyZSBpcyBub3cgbGVzcyBj aGF0dHkgaW4gdGhlIG1vZGUtbGluZQphbmQgbWVzc2FnZXMgYnVmZmVyLgoKKiogUGFydGlhbCBm aXggQy1NLWkgIm1pZGRsZS1vZi1zeW1ib2wiIGNvbXBsZXRpb25zIChnaXRodWIjMTMzOSkKCioq IEFkZCAiRXh0ZW5kaW5nIEVnbG90IiBzZWN0aW9uIHRvIG1hbnVhbAoKKiogRml4ZWQgRWxpc3Ag aW50ZXJmYWNlICdlZ2xvdC1sc3AtY29udGV4dCcgKGdpdGh1YiMxMzM2LCBnaXRodWIjMTMzNykK CioqIFN1cHBvcnRzIExTUCdzICd3aW5kb3cvc2hvd1JlcXVlc3QnIChidWcjNjIxMTYpCgoqKiBU aGUgc2VsZi11cGdyYWRlIGNvbW1hbmQgaXMgbm93IGNhbGxlZCAnZWdsb3QtdXBncmFkZS1lZ2xv dCcKCioqIE5ld2x5IGFkZGVkIGRpcmVjdG9yaWVzIGFsc28gd2F0Y2hlZCAoZ2l0aHViIzEyMjgp CgoqKiBTZW5kIGNvcnJlY3QgJzpsYW5ndWFnZS1pZCcgZm9yIEphdmFTY3JpcHQgc2VydmVyIChi dWcjNjcxNTApCgoqKiBOZXcgc2VydmVycyBoYXZlIGJlZW4gYWRkZWQgdG8gJ2VnbG90LXNlcnZl ci1wcm9ncmFtcycuCgotIG5scyAoYnVnIzYzNjAzKQotIG5peGQgKGJ1ZyM2NDIxNCkKLSBsZXhp Y2FsIChidWcjNjUzNTkpCi0gdGVycmFmb3JtLWxzIChidWcjNjU2NzEpCi0gcnVmZi1sc3AgKGJ1 ZyM2NzQ0MSkKLSB1aXVhIChidWcjNjc4NTApCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjE1ICgy OS80LzIwMjMpCgoqKiBGaXggTFNQICJsYW5ndWFnZUlkIiBkZXRlY3Rpb24KCk1hbnkgc2VydmVy cyB0b2RheSBzdXBwb3J0IG11bHRpcGxlIGxhbmd1YWdlcywgbWVhbmluZyB0aGV5IGNhbiBoYW5k bGUKbW9yZSB0aGFuIG9uZSBmaWxlIHR5cGUgaW4gdGhlIHNhbWUgY29ubmVjdGlvbi4gIFRoaXMg cmVsaWVzIG9uIHRoZQpjbGllbnQgc3VwcGx5aW5nIGEgJzpsYW5ndWFnZUlkJyBzdHJpbmcuICBQ cmV2aW91c2x5LCBFZ2xvdCBjYWxjdWxhdGVkCnRoaXMgc3RyaW5nIGJhc2VkIG9uIGFuIGltcGVy ZmVjdCBoZXVyaXN0aWMgYW5kIHdhcyBvZnRlbiB3cm9uZy4gIFNlZQpnaXRodWIjMTIwNi4KCioq IEZpeCBwcm9ibGVtcyB3aXRoIG1pc3Npbmcgc2lnbmF0dXJlIGRvY3VtZW50YXRpb24gKGJ1ZyM2 MjY4NykKCioqIFJld29ya2VkICdlZ2xvdC1pbWVudScKCkVnbG90J3MgSW1lbnUgYmFja2VuZCAo dXNlZCBmb3IgTS14IGltZW51IGFtb25nIG90aGVyIGV4dGVuc2lvbnMpLCBoYXMKYmVlbiByZXdv cmtlZC4gIE1vc3QgbmV3ZXIgc2VydmVycyByZXNwb25kIHRvCid0ZXh0RG9jdW1lbnQvZG9jdW1l bnRTeW1ib2wnIHdpdGggYSB2ZWN0b3Igb2YgJ0RvY3VtZW50U3ltYm9sJywgbm90CidTeW1ib2xJ bmZvcm1hdGlvbicuICBJdCdzIG5vdCB3b3J0aCBpdCB0cnlpbmcgdG8gbWFrZSB0aGUgdHdvIGZv cm1hdHMKcmVzZW1ibGUgZWFjaCBvdGhlci4gIFRoaXMgYWxzbyBsYXlzIGdyb3VuZHdvcmsgc3Vw cG9ydGluZyBhCmZvcnRoY29taW5nICJicmVhZGNydW1iIiBmZWF0dXJlIG9mIGJ1ZyM1ODQzMS4K CioqIE5ldyBjb21tYW5kICdlZ2xvdC11cGRhdGUnCgpUaGlzIGFsbG93cyB1c2VycyB0byBlYXNp bHkgdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBFZ2xvdC4KCgwKKiBDaGFuZ2VzIGlu IEVnbG90IDEuMTQgKDMvNC8yMDIzKQoKKiogRmFzdGVyLCBtb3JlIHJlc3BvbnNpdmUgY29tcGxl dGlvbgoKRWdsb3QgdGFrZXMgYWR2YW50YWdlIG9mIExTUCdzICJpc0luY29tcGxldGUiIGZsYWcg aW4gcmVzcG9uc2VzIHRvCmNvbXBsZXRpb24gcmVxdWVzdHMgdG8gZHJpdmUgbmV3IGNvbXBsZXRp b24tY2FjaGluZyBtZWNoYW5pc20gZm9yIHRoZQpkdXJhdGlvbiBvZiBlYWNoIGNvbXBsZXRpb24g c2Vzc2lvbi4gIE9uY2UgYSBmdWxsIHNldCBvZiBjb21wbGV0aW9ucwppcyBvYnRhaW5lZCBmb3Ig YSBnaXZlbiBwb3NpdGlvbiwgdGhlIHNlcnZlciBuZWVkbid0IGJlIGNvbnRhY3RlZCBpbgptYW55 IHNjZW5hcmlvcywgcmVzdWx0aW5nIGluIHNpZ25pZmljYW50bHkgbGVzcyBjb21tdW5pY2F0aW9u Cm92ZXJoZWFkLiAgVGhpcyB3b3JrcyB3aXRoIHRoZSBwb3B1bGFyIENvbXBhbnkgcGFja2FnZSBh bmQgc3RvY2sKY29tcGxldGlvbi1hdC1wb2ludCBpbnRlcmZhY2VzLgoKQSB2YXJpYWJsZSAnZWds b3QtY2FjaGUtc2Vzc2lvbi1jb21wbGV0aW9ucycsIHQgYnkgZGVmYXVsdCwgY29udHJvbHMKdGhp cy4gIFRoZSBtZWNoYW5pc20gd2FzIHRlc3RlZCB3aXRoIGNjbHMsIGpkdGxzLCBweWxzcCwgZ29s c3AgYW5kCmNsYW5nZC4gIE5vdGFibHksIHRoZSBDL0MrKyBsYW5ndWFnZSBzZXJ2ZXIgQ2xhbmdk IHZlcnNpb24gMTUgaGFzIGEKYnVnIGluIGl0cyAiaXNJY29tcGxldGUiIGZsYWcgKGl0IGlzIGZp eGVkIGluIGxhdGVyIHZlcnNpb25zKS4gIElmIHlvdQpydW4gaW50byBwcm9ibGVtcywgZGlzYWJs ZSB0aGlzIG1lY2hhbmlzbSBsaWtlIHNvOgoKKGFkZC1ob29rICdjLWNvbW1vbi1tb2RlLWhvb2sK ICAgKGxhbWJkYSAoKSAoc2V0cS1sb2NhbCBlZ2xvdC1jYWNoZS1zZXNzaW9uLWNvbXBsZXRpb25z IG5pbCkpKQoKKiogQXQtcG9pbnQgZG9jdW1lbnRhdGlvbiBsZXNzIG9idHJ1c2l2ZSBpbiBlY2hv IGFyZWEKCkVnbG90IHRha2VzIGFkdmFudGFnZSBvZiBuZXcgZmVhdHVyZXMgb2YgRWxEb2MgdG8g c2VwYXJhdGUgc2hvcnQKZG9jdW1lbnRhdGlvbiBzdHJpbmdzIGZyb20gbGFyZ2Ugb25lcywgc2Vu ZGluZyB0aGUgZm9ybWVyIHRvIGJlIHNob3duIGluCnRoZSBFbERvYydzIGVjaG8gYXJlYSBhbmQg dGhlIGxhdHRlciB0byBiZSBzaG93biBpbiBvdGhlciBvdXRsZXRzLApzdWNoIGFzIHRoZSAqZWxk b2MqIGJ1ZmZlciBvYnRhaW5hYmxlIHdpdGggJ0MtaCAuJy4KCioqIE5ldyB2YXJpYWJsZSAnZWds b3QtcHJlZmVyLXBsYWludGV4dCcKCkN1c3RvbWl6ZSB0aGlzIHRvIHQgdG8gb3B0LWluIHRvIGRv Y3N0cmluZ3MgaW4gcGxhaW4gdGV4dCBpbnN0ZWFkIG9mCk1hcmtkb3duLgoKKGJ1ZyM2MTM3MykK CioqIFByb2dyZXNzIGluZGljYXRvcnMgaW5oYWJpdCB0aGUgbW9kZS1saW5lIGJ5IGRlZmF1bHQK ClRvIHN3aXRjaCB0byB0aGUgZWNobyBhcmVhLCBjdXN0b21pemUgJ2VnbG90LXJlcG9ydC1wcm9n cmVzcycgdG8KJ21lc3NhZ2VzJy4gIFRvIHN3aXRjaCBvZmYgcHJvZ3Jlc3MgcmVwb3J0aW5nIGNv bXBsZXRlbHksIHNldCB0byBuaWwuCgoqKiBTbmlwcGV0IHN1cHBvcnQgaXMgZWFzaWVyIHRvIGVu YWJsZQoKVGhlIHVzZXIgbmVlZG4ndCBtYW51YWxseSBhY3RpdmF0ZSAneWFzLW1pbm9yLW1vZGUn IG9yCid5YXMtZ2xvYmFsLW1vZGUnLiAgSWYgWUFTbmlwcGV0IGlzIGluc3RhbGxlZCBhbmQgdGhl IHNlcnZlciBzdXBwb3J0cwpzbmlwcGV0cywgaXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5LCB1bmxl c3MgdGhlIHN5bWJvbCAneWFzbmlwcGV0JyBoYXMKYmVlbiBhZGRlZCB0byAnZWdsb3Qtc3RheS1v dXQtb2YnLgoKDAoqIENoYW5nZXMgaW4gRWdsb3QgMS4xMyAoMTUvMDMvMjAyMykKCioqIEVMUEEg aW5zdGFsbGF0aW9ucyBvbiBFbWFjcyAyNi4zIGFyZSBzdXBwb3J0ZWQgYWdhaW4uCgoMCiogQ2hh bmdlcyBpbiBFZ2xvdCAxLjEyLjI5IChFZ2xvdCBidW5kbGVkIHdpdGggRW1hY3MgMjkuMSkKCioq IEVnbG90IGhhcyBhIG5ldyBjb21tYW5kIHRvIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9u LgoKVGhlIG5ldyBjb21tYW5kICdlZ2xvdC11cGdyYWRlLWVnbG90JyBhbGxvd3MgZWFzaWx5IGdy YWJiaW5nIHRoZQpsYXRlc3QgdmVyc2lvbiBvZiBFZ2xvdCBmcm9tIEVMUEEuICBUaGlzIG1pZ2h0 IGJlIG1vcmUgY29udmVuaWVudCB0aGFuCnVzaW5nIHRoZSBtb3JlIGdlbmVyYWwgY29tbWFuZCAn cGFja2FnZS1pbnN0YWxsJywgd2hpY2ggYnkgZGVmYXVsdAp3aWxsIG5vdCB1cGdyYWRlICJidWls dC1pbiIgcGFja2FnZXMsIHRob3NlIHRoYXQgY29tZSB3aXRoIEVtYWNzLgoKDAoqIENoYW5nZXMg aW4gRWdsb3QgMS4xMiAoMTMvMDMvMjAyMykKCioqIExTUCBpbmxheSBoaW50cyBhcmUgbm93IHN1 cHBvcnRlZC4KSW5sYXkgaGludHMgYXJlIHNtYWxsIHRleHQgYW5ub3RhdGlvbnMgbm90IHVubGlr ZSBkaWFnbm9zdGljcywgYnV0CmRlc2lnbmVkIHRvIGhlbHAgcmVhZGFiaWxpdHkgaW5zdGVhZCBv ZiBpbmRpY2F0aW5nIHByb2JsZW1zLiAgRm9yCmV4YW1wbGUsIGEgQysrIExTUCBzZXJ2ZXIgY2Fu IHNlcnZlIGhpbnRzIGFib3V0IHBvc2l0aW9uYWwgcGFyYW1ldGVyCm5hbWVzIGluIGZ1bmN0aW9u IGNhbGxzIGFuZCBhIHZhcmlhYmxlJ3MgYXV0b21hdGljYWxseSBkZWR1Y2VkIHR5cGUuCkVtYWNz IGNhbiBkaXNwbGF5IHRoZXNlIGhpbnRzIHVzaW5nIG92ZXJsYXlzLCBoZWxwaW5nIHRoZSB1c2Vy CnJlbWVtYmVyIHRob3NlIHR5cGVzIGFuZCBwYXJhbWV0ZXIgbmFtZXMuCgoqKiBMb25nc3RhbmRp bmcgVHJhbXAgaW5zdGFiaWxpdHkgaXNzdWVzIHNvbHZlZC4KVGhlIHNvbHV0aW9uIGludm9sdmVz IGEgVHJhbXAtc3BlY2lmaWMgd29ya2Fyb3VuZCBpbiBFZ2xvdC4gIEZ1dHVyZQpUcmFtcCB2ZXJz aW9ucyB3aWxsIGhhdmUgdGhpcyBwcm9ibGVtIHNvbHZlZCBhdCB0aGUgb3JpZ2luLiAgVGhlCndv cmthcm91bmQgd2lsbCB0aGVuIGJlIHJlbW92ZWQuICBFbWFjcyBidWcjNjEzNTAgaGFzIG1vcmUg ZGV0YWlscy4KCihnaXRodWIjODU5LCBnaXRodWIjMTAyMCwgZ2l0aHViIzg4MykKCioqIExTUCdz ICdwb3NpdGlvbkVuY29kaW5nJyBjYXBhYmlsaXR5IGlzIG5vdyBzdXBwb3J0ZWQuClRoZSBwb3Np dGlvbi1lbmNvZGluZyBzY2hlbWUgKFVURi04LCBVVEYtMTYgb3IgVVRGLTMyKSBjYW4gbm93CmJl IG5lZ290aWF0ZWQgd2l0aCB0aGUgc2VydmVyLgoKKiogTW9yZSBvZiB0aGUgdXNlcidzIEVsZG9j IGNvbmZpZ3VyYXRpb24gaXMgcmVzcGVjdGVkLgpUaGlzIGNoYW5nZSBhZGRyZXNzZXMgdGhlIHBy b2JsZW1zIHJlcG9ydGVkIGluIG1hbnkgRWdsb3QgcmVwb3J0cwpkYXRpbmcgYmFjayB0byBlYXJs eSAyMDIxIGF0IGxlYXN0LgoKKGdpdGh1YiM2NDYsIGdpdGh1YiM4OTQsIGdpdGh1YiM5MjAsIGdp dGh1YiMxMDMxLCBnaXRodWIjMTE3MSkuCgpUaGlzIGlzIHVuZmluaXNoZWQgd29yaywgYXMgJ2Vs ZG9jLWRvY3VtZW50YXRpb24tc3RyYXRlZ3knIGlzIHN0aWxsCnNldCBieSBFZ2xvdCBkdXJpbmcg aXRzIHRlbnVyZSBvdmVyIGEgYnVmZmVyLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yCml0IGNhbm5v dCB3b3JrIHJlYXNvbmFibHkgd2l0aCBFZ2xvdCdzIGFkZGl0aW9ucyB0bwonZWxkb2MtZG9jdW1l bnRhdGlvbi1mdW5jdGlvbnMnLgoKKiogQ29tcGxldGlvbiBsYWJlbHMgYXJlIGNvcnJlY3RseSBk aXNwbGF5ZWQgaW4gc2VydmVycyBsaWtlIGNsYW5nZC4KCihnaXRodWIjMTE0MSkKCioqIEFzc29y dGVkIGJ1Z2ZpeGVzLgoKKGJ1ZyM2MTMxMiwgYnVnIzYxNDc4LCBidWcjNjE1MzIsIGJ1ZyM2MTcy NiwgYnVnIzYxODY2LCBidWcjNjE3NDgpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjExICgyNy8x LzIwMjMpCgoqKiBOZXcgc2VydmVyIHZzY29kZS1qc29uLWxhbmd1YWdlc2VydmVyIGFkZGVkIHRv ICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLgoKKGJ1ZyM2MDE5OCkKCioqIEFzc29ydGVkIGJ1Z2Zp eGVzLgoKKGJ1ZyM2MDM3OSwgYnVnIzYwNTU3LCAoYnVnIzYxMDQ4KQoKDAoqIENoYW5nZXMgaW4g RWdsb3QgMS4xMCAoMTYvMTIvMjAyMikKCioqIEVtYWNzIHByb2dyZXNzIHJlcG9ydGVycyBhcmUg dXNlZCBmb3IgTFNQIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMuCihidWcjNTkxNDkpCgoqKiBMU1Ag cmVwb3J0ZWQgVVJJcyBvdGhlciB0aGFuIGZpbGU6Ly8gYXJlIHBhc3NlZCBvbiB0byBFbWFjcy4K VGhpcyBjaGFuZ2UgYWxsb3dzIG90aGVyIFVSSSBoYW5kbGVycywgc3VjaCBhcyBhICdqYXI6JyBo YW5kbGluZwpwYWNrYWdlLCB0byBjb29wZXJhdGUgd2l0aCBFZ2xvdCBhbmQgZmluZCBmaWxlcyBp bnNpZGUgY29tcHJlc3NlZCBmaWxlCnN5c3RlbXMgKGJ1ZyM1ODc5MCkuCgoqKiBFZ2xvdCBub3cg c2hvd3MgaW4gdGhlIG1lbnUgYmFyLgoKKiogVHJlZS1zaXR0ZXIgbW9kZXMgYWRkZWQgdG8gJ2Vn bG90LXNlcnZlci1wcm9ncmFtcycuClRoZXNlIG1vZGVzIGFyZSB1c3VhbGx5IGhhbmRsZWQgYnkg dGhlIHNhbWUgc2VydmVyIHRoYXQgaGFuZGxlcyB0aGUKImNsYXNzaWNhbCBtb2RlIi4KCioqIE5l dyBzZXJ2ZXJzIGNzaGFycC1scyBhbmQgdGV4bGFiIGFkZGVkIHRvICdlZ2xvdC1zZXJ2ZXItcHJv Z3JhbXMnLgoKKiogQXNzb3J0ZWQgYnVnZml4ZXMuCihidWcjNTk4MjQsIGJ1ZyM1OTMzOCkKCgwK KiBDaGFuZ2VzIGluIEVnbG90IDEuOSAoOC8xMC8yMDIyKQoKVGhpcyBpcyB0aGUgbGFzdCByZWxl YXNlIGJlZm9yZSBpbnRlZ3JhdGlvbiBpbnRvIEVtYWNzJ3MgY29yZS4KCioqIE5ldyAnTS14IGVn bG90LWxpc3QtY29ubmVjdGlvbnMnIGNvbW1hbmQuClByb2JhYmx5IG5vdCB2ZXJ5IHVzZWZ1bCBm b3Igbm93LiAgTW9yZSBrZXliaW5kaW5ncyBhbmQgY2xpY2thYmxlCnNob3J0Y3V0cyB0byBjb25u ZWN0aW9uLXNwZWNpZmljIGNvbW1hbmRzIHRvIGJlIGFkZGVkIGxhdGVyLgoKKiogTWFudWFsIHRl bXBvcmFyaWx5IGxpdmVzIGluIHNlcGFyYXRlIE1BTlVBTC5tZCBmaWxlLgpUaGUgbWFudWFsIGhh cyBiZWVuIHJld3JpdHRlbiBtb3N0bHkgZnJvbSBzY3JhdGNoLiAgSXQgaXMgc3RydWN0dXJlZApo aWVyYXJjaGljYWxseSBhbmQgaXMgbW9yZSBjb21wbGV0ZS4gIEFmdGVyIHRoZSBtZXJnZSBpbnRv IEVtYWNzLCB0aGUKRWdsb3QgVGV4aW5mbyBtYW51YWwgYnVuZGxlZCB3aXRoIEVtYWNzIHVzZWQg dGhpcyB0ZW1wb3JhcnkgbWFudWFsIGFzCmEgc3RhcnRpbmcgcG9pbnQuCgoqKiBTdXBwb3J0IGZv ciAic2luZ2xlIHNlcnZlciwgbXVsdGlwbGUgbW9kZXMiLgpQcmV2aW91c2x5LCBpZiBhbiBlbnRy eSBzdWNoIGFzICcoKGMrKy1tb2RlIGMtbW9kZSkgLiAoImNsYW5nZCkiKScgd2FzCmZvdW5kIGlu ICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLCBpdCBtZWFudCB0aGF0ICcuY3BwJyBmaWxlcyAnLmMn CmZpbGVzIHdvdWxkIGxlYWQgdG8gdHdvICdjbGFuZ2QnIGluc3RhbmNlcyBmb3IgbWFuYWdpbmcg dGhlbSwgZXZlbiBpZgp0aGVzZSBmaWxlcyB3ZXJlIGluIHRoZSBzYW1lIHByb2plY3QuICBOb3cg b25seSBvbmUgaXMgY3JlYXRlZC4gIEl0IGlzCmFzc3VtZWQgdGhhdCBtb3N0LCBpZiBub3QgYWxs LCBzZXJ2ZXJzIGNvbmZpZ3VyZWQgaW4KJ2VnbG90LXNlcnZlci1wcm9ncmFtcycgaGFuZGxlIHRo aXMgY29ycmVjdGx5LgoKKGdpdGh1YiM2ODEpCgoqKiAnZWdsb3QtaW1lbnUnIG5vIGxvbmdlciB1 c2VzIHByb2JsZW1hdGljICJzcGVjaWFsIGVsZW1lbnRzIi4KVGhvdWdoIEVnbG90J3MgJ2VnbG90 LWltZW51JyByZXR1cm5lZCBhIGZ1bGx5IGNvbXBsaWFudCAnaW1lbnUnCnN0cnVjdHVyZSwgdGhh dCBvYmplY3Qgd2FzIG5vdCB1bmRlcnN0b29kIGJ5IG1hbnkgb3RoZXIgZnJvbnRlbmRzCm90aGVy IHRoYW4gJ00teCBpbWVudScgaXRzZWxmLiAgU2luY2UgdGhlIHNwZWNpYWwgZnVuY3Rpb25hbGl0 eSBpdAplbmFibGVkIHdhc24ndCBiZWluZyB1c2VkIGFueXdheSwgaXQgd2FzIGRlY2lkZWQgdG8g cmVtb3ZlIGl0IHRvIGZpeAp0aGVzZSBsb25nc3RhbmRpbmcgcHJvYmxlbXMuCgooZ2l0aHViIzc1 OCwgZ2l0aHViIzUzNiwgZ2l0aHViIzUzNSkKCioqICdlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJh dGlvbicgaGFzIGJlZW4gb3ZlcmhhdWxlZC4KVGhpcyB2YXJpYWJsZSBhbmQgaXRzIHVzZXMgYXJl IG5vdyBtb3JlIHRob3JvdWdobHkgZG9jdW1lbnRlZC4gIEl0IGNhbgpiZSBzZXQgdG8gYSBmdW5j dGlvbiBmb3IgZHluYW1pYyBjYWxjdWxhdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbi4KVGhlIHBy ZWZlcnJlZCBmb3JtYXQgaXMgYSBwbGlzdCwgdGhvdWdoIHRoZSBlYXJsaWVyIGFsaXN0IGZvcm1h dCBpcwpzdGlsbCBzdXBwb3J0ZWQuCgooZ2l0aHViIzk2NywgZ2l0aHViIzU5MCwgZ2l0aHViIzc5 MCkKCioqICdDLXUgTS0uJyBsaXN0cyBhbmQgY29tcGxldGVzIGFyYml0cmFyeSB3b3Jrc3BhY2Ug c3ltYm9scy4KQSB2ZXJ5IG9sZCByZXF1ZXN0LCBub3cgbWFkZSBwb3NzaWJsZSBieSBhIHJlbGF0 aXZlbHkgcmVjZW50IGNoYW5nZSB0bwp0aGUgJ3dvcmtzcGFjZS9zeW1ib2wnIFJQQyBtZXRob2Qu CgooZ2l0aHViIzEzMSkKCioqIFJld29ya2VkIG1vZGUtbGluZSBtZW51cy4KTmV3IG1lbnVzIGhl bHAgZGlzY292ZXIgRWdsb3QncyBmZWF0dXJlcyBhbmQgc2hvdyB3aGljaCBvZiB0aGVtIGFyZQpz dXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgc2VydmVyLiAgTWVudXMgY2FuIGJlIGN1c3RvbWl6ZWQg YXdheSB2aWEKJ2VnbG90LW1lbnUtc3RyaW5nJywgbWFraW5nIHNwYWNlIGluIG1vZGUtbGluZS4K CihnaXRodWIjNzkyKQoKKiogRWFzaWVyIHRvIHVzZSBMU1AgJ2luaXRpYWxpemUuaW5pdGlhbGl6 YXRpb25PcHRpb25zJy4KSW4gJ2VnbG90LXNlcnZlci1wcm9ncmFtcycgYSBwbGlzdCBtYXkgYmUg YXBwZW5kZWQgdG8gdGhlIHVzdWFsIGxpc3QKb2Ygc3RyaW5ncyBwYXNzZWQgYXMgY29tbWFuZCBs aW5lIGFyZ3VtZW50cy4gIFRoZSB2YWx1ZSBvZiBpdHMKJzppbml0aWFsaXphdGlvbk9wdGlvbnMn IGtleSBjb25zdHJ1Y3RzIHRoZSBjb3JyZXNwb25kaW5nIExTUCBKU09OCm9iamVjdC4gIFRoaXMg bWF5IGJlIGVhc2llciB0aGFuIGNyZWF0aW5nIGEgJ2RlZmNsYXNzJyBmb3IgYSBzcGVjaWZpYwpz ZXJ2ZXIgYW5kIHNwZWNpYWxpemluZyAnZWdsb3QtaW5pdGlhbGl6YXRpb24tb3B0aW9ucycgdG8g dGhhdCBjbGFzcy4KCihnaXRodWIjOTAxLCBnaXRodWIjODQ1LCBnaXRodWIjOTQwKQoKKiogTFNQ IG9uLXR5cGUgZm9ybWF0dGluZyBpcyBub3cgc3VwcG9ydGVkLgpUaGlzIGlzIHRoZSAnZG9jdW1l bnRPblR5cGVGb3JtYXR0aW5nUHJvdmlkZXInIExTUCBjYXBhYmlsaXR5LCB3aGljaAptYXkgYmUg ZGlzYWJsZWQgdmlhICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRpZXMnCgooZ2l0aHVi Izg5OSkKCioqIEJhc2ljIExTUCAid29ya3NwYWNlIGZvbGRlcnMiIHN1cHBvcnQgYWRkZWQuCkVn bG90IG5vdyBhZHZlcnRpc2VzICdwcm9qZWN0LXJvb3QnIGFuZCAncHJvamVjdC1leHRlcm5hbC1y b290cycgYXMKd29ya3NwYWNlLWZvbGRlcnMuICAoQ29uZmlndXJpbmcgJ3Byb2plY3QtdmMtZXh0 ZXJuYWwtcm9vdHMtZnVuY3Rpb24nCnZpYSBFbGlzcCBvciAndGFncy10YWJsZS1saXN0JyB2aWEg Q3VzdG9taXplIGFyZSB0d28gd2F5cyB0byBzZXQgdGhlCmV4dGVybmFsIHJvb3RzIG9mIGEgc2lt cGxlIGdpdCBwcm9qZWN0LikKCihnaXRodWIjODkzKQoKKiogRWdsb3QgY2FuIG5vdyBzaG93IHBy b2plY3Qgd2lkZSBkaWFnbm9zdGljcyB2aWEgRmx5bWFrZS4KU29tZSBMU1Agc2VydmVycyByZXBv cnQgZGlhZ25vc3RpY3MgZm9yIGFsbCBmaWxlcyBpbiB0aGUgY3VycmVudAp3b3Jrc3BhY2UuICBG bHltYWtlIGhhcyAoYXMgb2YgdmVyc2lvbiAxLjIuMSkgdGhlIG9wdGlvbiB0byBzaG93CmRpYWdu b3N0aWNzIGZyb20gYnVmZmVycyBvdGhlciB0aGFuIHRoZSBjdXJyZW50bHkgdmlzaXRlZCBvbmUu ICBUaGUKY29tbWFuZCAnTS14IGZseW1ha2Utc2hvdy1wcm9qZWN0LWRpYWdub3N0aWNzJyB3aWxs IG5vdyBzaG93IGFsbCB0aGUKZGlhZ25vc3RpY3MgcmVsZXZhbnQgdG8gYSB3b3Jrc3BhY2UuCgoo Z2l0aHViIzgxMCkKCioqIFN1cHBvcnQgTFNQIGNvbXBsZXRpb24gdGFncy4KQW4gTFNQIGNvbXBs ZXRpb24gdGFnIGNhbiBiZSB1c2VkIHRvIHRlbGwgdGhlIGVkaXRvciBob3cgdG8gcmVuZGVyIGEK Y29tcGxldGlvbi4gIFByZXNlbnRseSwgb25lIGtpbmQgb2YgdGFnIGV4aXN0cywgZGVub3Rpbmcg aXRzCmNvcnJlc3BvbmRpbmcgY29tcGxldGlvbiBhcyBvYnNvbGV0ZS4KCihnaXRodWIjNzk3KQoK KiogU3VwcG9ydCBMU1Agb3B0aW9uYWwgZGlhZ25vc3RpYyB0YWdzLgpBIGRpYWdub3N0aWMgdGFn IGNhbiBpbmRpY2F0ZSBlaXRoZXIgInVudXNlZCBvciB1bm5lY2Vzc2FyeSBjb2RlIiBvcgoiZGVw cmVjYXRlZCBvciBvYnNvbGV0ZSBjb2RlIi4gIEZvbGxvd2luZyB0aGUgcmVuZGVyaW5nIHN1Z2dl c3Rpb25zIGluCnRoZSBwcm90b2NvbCwgd2UgZmFkZSBvdXQgdW5uZWNlc3NhcnkgY29kZSBhbmQg c3RyaWtlLXRocm91Z2gKZGVwcmVjYXRlZCBjb2RlLgoKKGdpdGh1YiM3OTQpCgoqKiBUaGUgUnVz dCBsYW5ndWFnZSBzZXJ2ZXIgaXMgbm93IHJ1c3QtYW5hbHl6ZXIgYnkgZGVmYXVsdC4KRWdsb3Qg d2lsbCBub3cgcHJlZmVyIHN0YXJ0aW5nICJydXN0LWFuYWx5emVyIiB0byAicmxzIiB3aGVuIGl0 IGlzCmF2YWlsYWJsZS4gIFRoZSBzcGVjaWFsIHN1cHBvcnQgY29kZSBmb3IgUkxTIGhhcyBiZWVu IHJlbW92ZWQuCgooZ2l0aHViIzgwMykKCioqIE5ldyBzZXJ2ZXJzIGhhdmUgYmVlbiBhZGRlZCB0 byAnZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4KLSBjbG9qdXJlLWxzcCAoZ2l0aHViIzgxMykKLSBy YWNrZXQtbGFuZ3NlcnZlciAoZ2l0aHViIzY5NCkKLSBmdXRoYXJrIGxzcCAoZ2l0aHViIzkyMikK LSBwdXJlc2NyaXB0LWxhbmd1YWdlLXNlcnZlciAoZ2l0aHViIzkwNSkKLSBQZXJsOjpMYW5ndWFn ZVNlcnZlciAoZ2l0aHViIzk1MikKLSBtYXJrc21hbiAoZ2l0aHViIzEwMTMpCi0gamVkaS1sYW5n dWFnZS1zZXJ2ZXIgKFsjOTk0XShnaXRodWIjOTk0KSkKCgwKKiBDaGFuZ2VzIGluIEVnbG90IDEu OCAoMTIvMS8yMDIyKQoKKiogQWx0ZXJuYXRlIHNlcnZlcnMgc3VwcG9ydGVkIG91dC1vZi1ib3gg Zm9yIHRoZSBzYW1lIG1ham9yIG1vZGUuCkluIHByYWN0aWNlLCB0aGlzIHJlbW92ZXMgdGhlIG5l ZWQgZm9yIEVnbG90IHRvICJvZmZpY2lhbGx5IiBibGVzcyBvbmUKc2VydmVyIG92ZXIgYW5vdGhl ci4KCkRvIG5vdCBjb25mdXNlIHRoaXMgZmVhdHVyZSB3aXRoIGFub3RoZXIgbWlzc2luZyBmZWF0 dXJlIHdoaWNoCmNvbnNpc3RzIG9mIHN1cHBvcnRpbmcgbXVsdGlwbGUgc2VydmVycyBzaW11bHRh bmVvdXNseSBtYW5hZ2luZyBhCm1ham9yIG1vZGUgd2l0aGluIGEgcHJvamVjdC4KCihnaXRodWIj Njg4KQoKKiogVFJBTVAgc3VwcG9ydCBhZGRlZC4KVGhlcmUgYXJlIG5vIHZhcmlhYmxlcyB0byBj dXN0b21pemU6IHZpc2l0IGEgcmVtb3RlIGZpbGUsIGVuc3VyZSB0aGUKc2VydmVyIGFsc28gZXhp c3RzIGluIHRoZSByZW1vdGUsIGFuZCB0eXBlICJNLXggZWdsb3QiLgoKKGdpdGh1YiM2MzcsIGdp dGh1YiM0NjMsIGdpdGh1YiM4NCkKCioqICdlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRp ZXMnIGlzIG5vdyBjb3JyZWN0bHkgc3BlbGxlZC4KVGhpcyB1c2VyLXZpc2libGUgdmFyaWFibGUg dXNlZCB0byBiZSBzcGVsbGVkCidlZ2xvdC1pZ25vcmVkLXNlcnZlci1jYXBhYmlsaXRlcycsIHdo aWNoIGlzIHN0aWxsIGEgdmFsaWQgYnV0Cm9ic29sZXRlIG5hbWUuCgooZ2l0aHViIzcyNCkKCioq IEVnbG90IGNhbiBtYW5hZ2UgY3Jvc3MtcmVmZXJlbmNlZCBmaWxlcyBvdXRzaWRlIHByb2plY3Qu ClRoaXMgaXMgYWN0aXZhdGVkIGJ5IGEgbmV3IGN1c3RvbWl6YXRpb24gb3B0aW9uCidlZ2xvdC1l eHRlbmQtdG8teHJlZicsIHdoaWNoIGRlZmF1bHRzIHRvIG5pbC4KCihnaXRodWIjNzYsIGdpdGh1 YiM2ODYsIGdpdGh1YiM2OTUpCgoqKiBDb2RlIGFjdGlvbiBzaG9ydGN1dHMgY2FuIGJlIGFkZGVk IGJ5IHRoZSB1c2VyLgonTS14IGVnbG90LWNvZGUtYWN0aW9ucycgYWNjZXB0cyBhbiBvcHRpb25h bCAnYWN0aW9uLWtpbmQnIGFyZ3VtZW50LApzcGVjaWZpZWQgaW50ZXJhY3RpdmVseSB3aXRoICdD LXUnLiAgT3RoZXIgc2hvcnRjdXRzIGNhbGwgc3BlY2lmaWMKYWN0aW9ucyBkaXJlY3RseSAoJ2Vn bG90LWNvZGUtYWN0aW9uLWlubGluZScsCidlZ2xvdC1jb2RlLWFjdGlvbi1leHRyYWN0JywgJ2Vn bG90LWNvZGUtYWN0aW9uLXJld3JpdGUnLAonZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1w b3J0cycgYW5kCidlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2ZpeCcpLiAgT25lIGNhbiBjcmVhdGUg b25lJ3Mgb3duIHNob3J0Y3V0cyBmb3IKY29kZSBhY3Rpb25zIHdpdGggc3BlY2lmaWMgYSBraW5k IGJ5IGNhbGxpbmcgJ2VnbG90LWNvZGUtYWN0aW9ucycgZnJvbQpMaXNwLgoKKGdpdGh1YiM0MTEp CgoqKiBOZXcgY29tbWFuZCAnZWdsb3Qtc2h1dGRvd24tYWxsIGFkZGVkLgpUaGlzIGRpc2Nvbm5l Y3RzIGFsbCB0aGUgRWdsb3QgY29ubmVjdGlvbnMgaW4gdGhlIHVzZXIncyBzZXNzaW9uLgoKKGdp dGh1YiM2NDMpCgoqKiBOZXcgdmFyaWFibGUgJ2VnbG90LXdpdGhob2xkLXByb2Nlc3MtaWQnIGFk ZGVkLgpJZiBub24tbmlsLCBFZ2xvdCB3aWxsIG5vdCBzZW5kIHRoZSBFbWFjcyBwcm9jZXNzIElE IHRvIHRoZSBsYW5ndWFnZQpzZXJ2ZXIuICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB1c2luZyBk b2NrZXIgdG8gcnVuIGEgbGFuZ3VhZ2UKc2VydmVyLgoKKGdpdGh1YiM3MjIpCgoqKiBTZXZlcmFs IG5ldyBzZXJ2ZXJzIGhhdmUgYmVlbiBhZGRlZCB0byAnZWdsb3Qtc2VydmVyLXByb2dyYW1zJy4K LSBjbWFrZS1sYW5ndWFnZS1zZXJ2ZXIgKGdpdGh1YiM3ODcpCi0gY3NzLWxhbmd1YWdlc2VydmVy IChnaXRodWIjMjA0LCBnaXRodWIjNzY5KQotIGZvcnRscyAoZ2l0aHViIzYwMykKLSBodG1sLWxh bmd1YWdlc2VydmVyIChnaXRodWIjMjA0LCBnaXRodWIjNzY5KQotIGpzb24tbGFuZ3VhZ2VzZXJ2 ZXIgKGdpdGh1YiMyMDQsIGdpdGh1YiM3NjkpCi0gbHVhLWxzcCAoZ2l0aHViIzcyMSkKLSBtaW50 IGxzIChnaXRodWIjNzUwKQotIHB5cmlnaHQgKGdpdGh1YiM3NDIpCi0gdmltLWxhbmd1YWdlLXNl cnZlciAoZ2l0aHViIzc4NykKLSB5YW1sLWxhbmd1YWdlLXNlcnZlciAoZ2l0aHViIzc1MSkKLSB6 bHMgKGdpdGh1YiM2NDYpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjcgKDE2LzEyLzIwMjApCgoq KiBIaWVyYXJjaGljYWwgc3ltYm9scyBhcmUgc3VwcG9ydGVkIGluIEltZW51LgooZ2l0aHViIzMw MykuCgoqKiBNdWx0aXBsZSAiZG9jdW1lbnRhdGlvbiBhdCBwb2ludCIgc291cmNlcyBhcmUgc3Vw cG9ydGVkLgpTdWNoIHNvdXJjZXMgaW5jbHVkZSBhcyBMU1AncyBzaWduYXR1cmUsIGhvdmVyIGFu ZCBhbHNvIHRoZSBGbHltYWtlCmRpYWdub3N0aWMgbWVzc2FnZXMuICBUaGV5IGNhbiBhbGwgYmUg cHJlc2VudGVkIGluIHRoZSBlY2hvIGFyZWEKKHNwYWNlIHBlcm1pdHRpbmcpLCBvciB2aWEgJ0Mt aCAuJy4gIEZvciBub3csIGNvbXBvc2l0aW9uIG9mIGRpZmZlcmVudApzb3VyY2VzIGNhbiBiZSBj dXN0b21pemVkIHVzaW5nICdlbGRvYy1kb2N1bWVudGF0aW9uLXN0cmF0ZWd5JywKJ2VsZG9jLWVj aG8tYXJlYS11c2UtbXVsdGlsaW5lLXAnIGFuZCAnZWxkb2MtcHJlZmVyLWRvYy1idWZmZXInLgoK VGhlIHZhcmlhYmxlcyAnZWdsb3QtcHV0LWRvYy1pbi1oZWxwLWJ1ZmZlcicgYW5kCidlZ2xvdC1h dXRvLWRpc3BsYXktaGVscC1idWZmZXInIGhhdmUgYmVlbiByZW1vdmVkLgoKKGdpdGh1YiM0Mzks IGdpdGh1YiM0OTQsIGdpdGh1YiM0ODEsIGdpdGh1YiM0NTQpCgoMCiogQ2hhbmdlcyBpbiBFZ2xv dCAxLjYgKDE2LzA0LzIwMjApCgoqKiBDb2x1bW4gb2Zmc2V0IGNhbGN1bGF0aW9uIGlzIG5vdyBM U1AtY29uZm9ybWFudC4KSXQgc2VlbXMgdGhlIG1ham9yaXR5IG9mIHNlcnZlcnMgbm93IGNvbXBs eSB3aXRoIHRoZSBsYW5ndWFnZSBzZXJ2ZXIKc3BlY2lmaWNhdGlvbiB3aGVuIGl0IGNvbWVzIHRv IGhhbmRsaW5nIG5vbi1BU0NJSSB0ZXh0cy4gIFRoZXJlZm9yZQp0aGUgZGVmYXVsdCB2YWx1ZXMg b2YgJ2VnbG90LW1vdmUtdG8tY29sdW1uLWZ1bmN0aW9uJyBhbmQKJ2VnbG90LWN1cnJlbnQtY29s dW1uLWZ1bmN0aW9uJyBoYXZlIGJlZW4gY2hhbmdlZC4gIENvbnN1bHQgdGhlCmRvY3VtZW50YXRp b24gb2YgdGhlc2UgdmFyaWFibGVzIGZvciBob3cgdG8gcmVzdG9yZSB0aGUgb2xkIGJlaGF2aW9y LgoKKGdpdGh1YiMzNjEpCgoqKiBMU1Agd29ya3NwYWNlL2NvbmZpZ3VyYXRpb24gcmVxdWVzdHMg YXJlIHN1cHBvcnRlZC4KQWxzbyBhIG5ldyBzZWN0aW9uICJQZXItcHJvamVjdCBzZXJ2ZXIgY29u ZmlndXJhdGlvbiIgaW4gdGhlIFJFQURNRS5tZApzaG91bGQgYW5zd2VyIHNvbWUgRkFRJ3MgaW4g dGhpcyByZWdhcmQuCgooZ2l0aHViIzMyNikKCgwKKiBDaGFuZ2VzIGluIEVnbG90IDEuNSAoMjAv MTAvMjAxOSkKCioqIEVnbG90IHRha2VzIG92ZXIgQ29tcGFueSBjb25maWd1cmF0aW9uLgpTaW1p bGFyIHRvIHdoYXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCBGbHltYWtlLCBFbGRvYyBhbmQg WHJlZiwgdXNlCmp1c3QgdGhlIGJhY2tlbmQgdGhhdCBjYW4gZG8gc29tZXRoaW5nIHVzZWZ1bCBp biBFZ2xvdCwKJ2NvbXBhbnktY2FwZicuICBTZWUgJ2VnbG90LXN0YXktb3V0LW9mJyB0byBvcHQg b3V0IG9mIHRoaXMuCgooZ2l0aHViIzMyNCkKCioqIE5ldyBvcHRpb24gJ2VnbG90LWF1dG9zaHV0 ZG93bicgYWRkZWQuClRoaXMgZGlzY29ubmVjdHMgdGhlIHNlcnZlciBhZnRlciBsYXN0IG1hbmFn ZWQgYnVmZmVyIGlzIGtpbGxlZC4KCihnaXRodWIjMjE3LCBnaXRodWIjMjcwKQoKKiogQ29tcGxl dGlvbiBzdXBwb3J0IGhhcyBiZWVuIGZpeGVkLgpBbW9uZyBvdGhlciB0aGluZ3MsIGNvbnNpZGVy IExTUCdzICJmaWx0ZXJUZXh0IiBjb29raWVzLCB3aGljaCBlbmFibGUKYSBraW5kIG9mIHBvb3It bWFuJ3MgZmxleC1tYXRjaGluZyBmb3Igc29tZSBiYWNrZW5kcy4KCihnaXRodWIjMjM1LCBnaXRo dWIjMzEzLCBnaXRodWIjMzExLCBnaXRodWIjMjc5KQoKKiogU3VwcG9ydHMgTFNQJ3MgImdvdG8g ZGVjbGFyYXRpb24vaW1wbGVtZW50YXRpb24vdHlwZURlZmluaXRpb24iLgoKKGdpdGh1YiMzMDIp CgoqKiBOZXcgb3B0aW9uICdlZ2xvdC1zZW5kLWNoYW5nZXMtaWRsZS10aW1lJyBhZGRlZC4KCihn aXRodWIjMjU4KQoKKiogRWdsb3QncyBFbGRvYyBubyBsb25nZXIgZmxpY2tlcnMgd2hlbiBtb3Zp bmcgYXJvdW5kLgoKKGdpdGh1YiMxOTgpCgoqKiBMYXJnZSBkb2NzIHNob3duIGluIGhlbHAgYnVm ZmVyIGluc3RlYWQgb2YgZWNobyBhcmVhIGJ5IGRlZmF1bHQuCkFsc28gYWRkIHR3byBuZXcgY3Vz dG9taXphdGlvbiB2YXJpYWJsZXMKJ2VnbG90LXB1dC1kb2MtaW4taGVscC1idWZmZXInIGFuZCAn ZWdsb3QtYXV0by1kaXNwbGF5LWhlbHAtYnVmZmVyJy4KCihnaXRodWIjMTk4KQoKKiogQnVpbHQt aW4gc3VwcG9ydCBmb3IgR28sIEVsaXhpciBhbmQgQWRhIGFkZGVkLgoKKGdpdGh1YiMzMDQsIGdp dGh1YiMyNjQsIGdpdGh1YiMzMTYpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjQgKDUvMS8yMDE5 KQoKKiogUGFyYW1ldGVyIGhpZ2hsaWdodGluZyBpbiB0aGUgZmlyc3QgbGluZSBvZiBzaWduYXR1 cmUgY29ycmVjdGVkLgoKKiogTWFya2Rvd24gZG9jdW1lbnRhdGlvbiBzdHJpbmdzIGFyZSByZW5k ZXJlZCB3aXRoIGZhY2VzLgpFZ2xvdCB1c2VzICdnZm0tdmlldy1tb2RlJyBmb3IgdGhpcy4KCioq IEhhcmQgZGVwZW5kZW5jaWVzIG9uIEZseW1ha2UgaGF2ZSBiZWVuIHJlbW92ZWQuClRoZSB1c2Vy IGNhbiB0dXJuIEZseW1ha2Ugb2ZmIG5vdyBpbiBidWZmZXJzIG1hbmFnZWQgYnkgRWdsb3QuCgoq KiBDb25uZWN0aW9uIGhvb2tzIGFyZSBydW4gd2l0aCBwcm9wZXIgZGlyZWN0b3J5IGxvY2FsIHZh cmlhYmxlcy4KVGhpcyBmaXhlcyBpc3N1ZXMgd2l0aCBzdXNwaWNpb3VzbHkgZW1wdHkgJ2RpZENo YW5nZUNvbmZpZ3VyYXRpb24nCm1lc3NhZ2VzIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGNvbW11bmlj YXRlIHBhcmFtZXRlcnMgZnJvbSBhCmRpcmVjdG9yeS1zZXQgJ2VnbG90LXdvcmtzcGFjZS1jb25m aWd1cmF0aW9uJy4KCihnaXRodWIjMTk2KQoKKiogQ29tcGxldGlvbiBzb3J0aW5nIGhhcyBiZWVu IGZpeGVkLgpJZiB0aGUgc2VydmVyIHJldHVybnMgY29tcGxldGlvbnMgaW4gc29tZSBzZW5zaWJs ZSBvcmRlciwgRWdsb3Qgd2lsbAprZWVwIGl0LgoKKGdpdGh1YiMxOTApCgoqKiBGbHltYWtlIGFu ZCBFbGRvYyB0YWtlbiBvdmVyIGNvbXBsZXRlbHkgd2hpbGUgbWFuYWdpbmcgYnVmZmVycy4KTm8g bG9uZ2VyIHRyeSB0byBhZGQgRWdsb3QncyBmYWNpbGl0aWVzIHRvIGV4aXN0aW5nIGZhY2lsaXRp ZXMgaW4KdGhlc2UgdHdvIGRvbWFpbnMuCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjMgKDEwLzEy LzIwMTgpCgoqKiBQcm92aWRlIHN0cmljdCBjaGVja2luZyBvZiBpbmNvbWluZyBMU1AgbWVzc2Fn ZXMuCgooZ2l0aHViIzE0NCwgZ2l0aHViIzE1NikKCioqIEFkZCBicmllZiBjb250ZXh0IGFmdGVy ICd4cmVmLWZpbmQtcmVmZXJlbmNlcycgd2hlbiBhdmFpbGFibGUuCgooZ2l0aHViIzUyKQoKKiog U3VwcG9ydCAnY29tcGxldGlvbkNvbnRleHQnIHRvIGhlbHAgc2VydmVycyBsaWtlICdjY2xzJy4K CioqIFVzZSBGbHltYWtlIGZyb20gR05VIEVMUEEuCgooZ2l0aHViIzE3OCkKCgwKKiBDaGFuZ2Vz IGluIEVnbG90IDEuMiAoMjMvMTEvMjAxOCkKCioqIFN1cHBvcnQgc25pcHBldCBjb21wbGV0aW9u cy4KRWdsb3QgdXNlcyAneWFzbmlwcGV0LmVsJyBmb3IgdGhpcywgaWYgaXQgaXMgaW5zdGFsbGVk LgoKKGdpdGh1YiM1MCkKCioqICd3b3Jrc3BhY2UvZGlkQ2hhbmdlQ29uZmlndXJhdGlvbicgaW1w bGVtZW50ZWQuCgooZ2l0aHViIzI5KQoKKiogSGFuZGxlIGV4cGVyaW1lbnRhbC91bmtub3duIHNl cnZlciBtZXRob2RzIGdyYWNlZnVsbHkuCgooZ2l0aHViIzM5KQoKKiogQWNjZXB0IGZ1bmN0aW9u cyBhcyBlbnRyaWVzIGluICdlZ2xvdC1zZXJ2ZXItcHJvZ3JhbXMnLgonQ09OVEFDVCcgaW4gdGhl ICcoTUFKT1ItTU9ERSAuIENPTlRBQ1QpJyBhc3NvY2lhdGlvbiBpbgonZWdsb3Qtc2VydmVyLXBy b2dyYW1zJyBjYW4gbm93IGJlIGEgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzCnByb2R1Y2luZyBh bnkgdmFsdWUgcHJldmlvdXNseSB2YWxpZCBmb3IgYSBjb250YWN0LiAgRnVuY3Rpb25zIGNhbiBi ZQppbnRlcmFjdGl2ZSBvciBub24taW50ZXJhY3RpdmUuCgooZ2l0aHViIzYzKQoKKiogSW1wcm92 ZSBjb21wbGV0aW9uIHRvIGJlIHNuYXBwaWVyIGFuZCBkb24ndCBoaW5kZXIgdHlwaW5nLgoKKGdp dGh1YiM2MSkKCioqIENvbnNpZGVyICc6dHJpZ2dlckNoYXJhY3RlcnMnIGluIGNvbXBhbnkgY29t cGxldGlvbi4KCihnaXRodWIjODApCgoqKiBBZGQgc3VwcG9ydCBmb3IgTFNQICdUZXh0RWRpdCcg b2JqZWN0cyBpbiBjb21wbGV0aW9uLgoKKiogUHJlZmVyIGNjbHMgb3ZlciBjcXVlcnkgZm9yIEMv QysrCgooZ2l0aHViIzk0KQoKKiogJ2VnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGVzJyBp cyBtb3JlIHVzZXItZnJpZW5kbHkuCgooZ2l0aHViIzEyNikKCioqIFN1cHBvcnRzIGFzeW5jaHJv bm91cyBjb25uZWN0aW9ucy4KSWYgYSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaXMgdGFraW5n IHRvbyBsb25nLCBpcyB3aWxsIGNvbnRpbnVlIGluCnRoZSBiYWNrZ3JvdW5kLiAgQSBuZXcgZGVm Y3VzdG9tICdlZ2xvdC1zeW5jLWNvbm5lY3QnIGNvbnRyb2xzIHRoaXMKZmVhdHVyZS4KCihnaXRo dWIjNjgpCgoqKiBUaGUgJ2VnbG90LXNodXRkb3duJyBjb21tYW5kIHByb21wdHMgZm9yIHRoZSBz ZXJ2ZXIgdG8gc2h1dGRvd24uCgooZ2l0aHViIzczKQoKKiogQWRkIHN1cHBvcnQgZm9yIHRoZSBF Y2xpcHNlIEpEVCBsYW5ndWFnZSBzZXJ2ZXIuCgooZ2l0aHViIzYzKQoKKiogQWRkIG91dC1vZi10 aGUtYm94IHN1cHBvcnQgZm9yIEhhc2tlbGwsIEtvdGxpbiwgR28sIE9jYW1sLCBSLgoKKiogQWRk IHRoZSBhYmlsaXR5IHRvIG1vdmUgdG8gTFNQLXByZWNpc2UgY29sdW1ucy4KU29tZSBzZXJ2ZXJz IGxpa2UgJ2NsYW5nZCcgZm9sbG93IHRoZSBVVEYtMTYtYmFzZWQgc3BlYyB2ZXJ5IGNsb3NlbHkK aGVyZS4KCihnaXRodWIjMTI0KQoKKiogRml4IGEgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlIGZv bnRpZnlpbmcgTFNQIGRvYy4KCihnaXRodWIjMTU0KQoKKiogRml4IG1hbnksIG1hbnkgYnVncwoK KGdpdGh1YiM0NCwgZ2l0aHViIzQ4LCBnaXRodWIjNTQsIGdpdGh1YiM1OCwgZ2l0aHViIzY0LCBn aXRodWIjNzQsCiBnaXRodWIjODEsIGdpdGh1YiM4MiwgZ2l0aHViIzg2LCBnaXRodWIjODcsIGdp dGh1YiM4MywgZ2l0aHViIzkzLAogZ2l0aHViIzEwMCwgZ2l0aHViIzExNSwgZ2l0aHViIzEyMCwg Z2l0aHViIzEyMSwgZ2l0aHViIzEyNiwKIGdpdGh1YiMxMzgsIGdpdGh1YiMxNDQsIGdpdGh1YiMx NTgsIGdpdGh1YiMxNjAsIGdpdGh1YiMxNjcpCgoMCiogQ2hhbmdlcyBpbiBFZ2xvdCAxLjEgKDkv Ny8yMDE4KQoKKiogSW1wbGVtZW50IFRDUCBhdXRvc3RhcnQvYXV0b2Nvbm5lY3QgKGFuZCBzdXBw b3J0IFJ1YnkncyBTb2xhcmdyYXBoKS4KVGhlICc6YXV0b3BvcnQnIHN5bWJvbCBpbiB0aGUgc2Vy dmVyIGludm9jYXRpb24gaXMgcmVwbGFjZWQKZHluYW1pY2FsbHkgYnkgYSBsb2NhbCBwb3J0IGJl bGlldmVkIHRvIGJlIHZhY2FudCwgc28gdGhhdCB0aGUgZW5zdWluZwpUQ1AgY29ubmVjdGlvbiBm aW5kcyBhIGxpc3RlbmluZyBzZXJ2ZXIuCgoqKiBFZ2xvdCBub3cgZGVwZW5kcyBvbiBFbWFjcyBs aWJyYXJ5ICdqc29ucnBjLmVsJy4KCgwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUaGlzIGZpbGUgaXMgcGFydCBv ZiBHTlUgRW1hY3MuCgpHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgoKR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggR05VIEVtYWNz LiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCgwKTG9jYWwg VmFyaWFibGVzOgpidWctcmVmZXJlbmNlLWJ1Zy1yZWdleHA6ICJcXChcXChnaXRodWJcXHxidWdc XCkjXFwoWzAtOV0rXFwpXFwpIgpidWctcmVmZXJlbmNlLXVybC1mb3JtYXQ6IGVnbG90LS1kZWJi dWdzLW9yLWdpdGh1Yi1idWctdXJpCnBhcmFncmFwaC1zZXBhcmF0ZTogIlsJIAxdIgpFbmQ6CgoA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWdsb3QtMS4xNy9lZ2xvdC5pbmZvAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADAwMDA2NDQAMDAwMTc1MAAwMDAxNzUwADAwMDAwMzAzNDUzADE0NjcxNTQwMDcw ADAxNDExMwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3Rh ciAgAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGhpbGlwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUaGlzIGlzIGRvY3VvWEVOVS5pbmZvLCBwcm9kdWNlZCBi eSAudGV4aTJhbnktcmVhbCB2ZXJzaW9uIDcuMSBmcm9tCmVnbG90LnRleGkuCgpUaGlzIG1hbnVh bCBpcyBmb3IgRWdsb3QsIHRoZSBFbWFjcyBMU1AgY2xpZW50LgoKICAgQ29weXJpZ2h0IMKpIDIw MjItMjAyNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCiAgICAgUGVybWlzc2lvbiBp cyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzCiAgICAgZG9j dW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vu c2UsCiAgICAgVmVyc2lvbiAxLjMgb3IgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlCiAgICAgRm91bmRhdGlvbjsgd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlv bnMsIHdpdGggdGhlIEZyb250LUNvdmVyIFRleHRzCiAgICAgYmVpbmcgIkEgR05VIE1hbnVhbCIs IGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGluIChhKQogICAgIGJlbG93LiAgQSBj b3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkCiAg ICAgIkdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSIuCgogICAgIChhKSBUaGUgRlNGJ3Mg QmFjay1Db3ZlciBUZXh0IGlzOiAiWW91IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKICAg ICBtb2RpZnkgdGhpcyBHTlUgbWFudWFsLiIKSU5GTy1ESVItU0VDVElPTiBFbWFjcyBtaXNjIGZl YXR1cmVzClNUQVJULUlORk8tRElSLUVOVFJZCiogRWdsb3Q6IChlZ2xvdCkuICAgICAgICAgICAg IExhbmd1YWdlIFNlcnZlciBQcm90b2NvbCBjbGllbnQgZm9yIEVtYWNzLgpFTkQtSU5GTy1ESVIt RU5UUlkKCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBUb3AsICBOZXh0OiBRdWljayBT dGFydCwgIFVwOiAoZGlyKQoKRWdsb3QKKioqKioKCkVnbG90IGlzIHRoZSBFbWFjcyBjbGllbnQg Zm9yIHRoZSDigJxMYW5ndWFnZSBTZXJ2ZXIgUHJvdG9jb2zigJ0gKExTUCkuICBUaGUKbmFtZSAi RWdsb3QiIGlzIGFuIGFjcm9ueW0gdGhhdCBzdGFuZHMgZm9yICJFbWFjcyBwb2x5R0xPVCIuICgx KSBFZ2xvdApwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBhbmQgYSBzZXQgb2YgY29tbWFuZHMgZm9y IGVucmljaGluZyB0aGUgc291cmNlCmNvZGUgZWRpdGluZyBjYXBhYmlsaXRpZXMgb2YgRW1hY3Mg dmlhIExTUC4gIExTUCBpcyBhIHN0YW5kYXJkaXplZApjb21tdW5pY2F0aW9ucyBwcm90b2NvbCBi ZXR3ZWVuIHNvdXJjZSBjb2RlIGVkaXRvcnMgKHN1Y2ggYXMgRW1hY3MpIGFuZApsYW5ndWFnZSBz ZXJ2ZXJzLS1wcm9ncmFtcyBleHRlcm5hbCB0byBFbWFjcyB3aGljaCBhbmFseXplIHRoZSBzb3Vy Y2UKY29kZSBvbiBiZWhhbGYgb2YgRW1hY3MuICBUaGUgcHJvdG9jb2wgYWxsb3dzIEVtYWNzIHRv IHJlY2VpdmUgdmFyaW91cwpzb3VyY2UgY29kZSBzZXJ2aWNlcyBmcm9tIHRoZSBzZXJ2ZXIsIHN1 Y2ggYXMgZGVzY3JpcHRpb24gYW5kIGxvY2F0aW9uCm9mIGZ1bmN0aW9uIGNhbGxzLCB0eXBlcyBv ZiB2YXJpYWJsZXMsIGNsYXNzIGRlZmluaXRpb25zLCBzeW50YWN0aWMKZXJyb3JzLCBldGMuICBU aGlzIHdheSwgRW1hY3MgZG9lc24ndCBuZWVkIHRvIGltcGxlbWVudCB0aGUKbGFuZ3VhZ2Utc3Bl Y2lmaWMgcGFyc2luZyBhbmQgYW5hbHlzaXMgY2FwYWJpbGl0aWVzIGluIGl0cyBvd24gY29kZSwg YnV0CmlzIHN0aWxsIGNhcGFibGUgb2YgcHJvdmlkaW5nIHNvcGhpc3RpY2F0ZWQgZWRpdGluZyBm ZWF0dXJlcyB0aGF0IHJlbHkKb24gc3VjaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgYXV0b21hdGlj IGNvZGUgY29tcGxldGlvbiwgZ28tdG8KZGVmaW5pdGlvbiBvZiBmdW5jdGlvbi9jbGFzcywgZG9j dW1lbnRhdGlvbiBvZiBzeW1ib2wgYXQtcG9pbnQsCnJlZmFjdG9yaW5nLCBvbi10aGUtZmx5IGRp YWdub3N0aWNzLCBhbmQgbW9yZS4KCiAgIEVnbG90IGl0c2VsZiBpcyBjb21wbGV0ZWx5IGxhbmd1 YWdlLWFnbm9zdGljLCBidXQgaXQgY2FuIHN1cHBvcnQgYW55CnByb2dyYW1taW5nIGxhbmd1YWdl IGZvciB3aGljaCB0aGVyZSBpcyBhIGxhbmd1YWdlIHNlcnZlciBhbmQgYW4gRW1hY3MKbWFqb3Ig bW9kZS4KCiAgIFRoaXMgbWFudWFsIGRvY3VtZW50cyBob3cgdG8gY29uZmlndXJlLCB1c2UsIGFu ZCBjdXN0b21pemUgRWdsb3QuCgogICBUaGlzIG1hbnVhbCBpcyBmb3IgRWdsb3QsIHRoZSBFbWFj cyBMU1AgY2xpZW50LgoKICAgQ29weXJpZ2h0IMKpIDIwMjItMjAyNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KCiAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3Ry aWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzCiAgICAgZG9jdW1lbnQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsCiAgICAgVmVyc2lvbiAxLjMgb3Ig YW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiAgICAgRm91 bmRhdGlvbjsgd2l0aCBubyBJbnZhcmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVy IFRleHRzCiAgICAgYmVpbmcgIkEgR05VIE1hbnVhbCIsIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVy IFRleHRzIGFzIGluIChhKQogICAgIGJlbG93LiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGlu Y2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkCiAgICAgIkdOVSBGcmVlIERvY3VtZW50YXRp b24gTGljZW5zZSIuCgogICAgIChhKSBUaGUgRlNGJ3MgQmFjay1Db3ZlciBUZXh0IGlzOiAiWW91 IGhhdmUgdGhlIGZyZWVkb20gdG8gY29weSBhbmQKICAgICBtb2RpZnkgdGhpcyBHTlUgbWFudWFs LiIKCiogTWVudToKCiogUXVpY2sgU3RhcnQ6OiAgICAgICAgICAgICAgICAgRm9yIHRoZSBpbXBh dGllbnQuCiogRWdsb3QgYW5kIExTUCBTZXJ2ZXJzOjogICAgICAgSG93IHRvIHdvcmsgd2l0aCBs YW5ndWFnZSBzZXJ2ZXJzLgoqIFVzaW5nIEVnbG90OjogICAgICAgICAgICAgICAgIEltcG9ydGFu dCBFZ2xvdCBjb21tYW5kcyBhbmQgdmFyaWFibGVzLgoqIEN1c3RvbWl6aW5nIEVnbG90OjogICAg ICAgICAgIEVnbG90IGN1c3RvbWl6YXRpb24gYW5kIGFkdmFuY2VkIGZlYXR1cmVzLgoqIEFkdmFu Y2VkIHNlcnZlciBjb25maWd1cmF0aW9uOjogIEZpbmUtdHVuZSBhIHNwZWNpZmljIGxhbmd1YWdl IHNlcnZlcgoqIEV4dGVuZGluZyBFZ2xvdDo6ICAgICAgICAgICAgIFdyaXRpbmcgRWdsb3QgZXh0 ZW5zaW9ucyBpbiBFbGlzcAoqIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6ICAgICAgIFRyb3VibGVz aG9vdGluZyBhbmQgcmVwb3J0aW5nIGJ1Z3MuCiogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlOjogIFRoZSBsaWNlbnNlIGZvciB0aGlzIG1hbnVhbC4KKiBJbmRleDo6CgogICAtLS0tLS0t LS0tIEZvb3Rub3RlcyAtLS0tLS0tLS0tCgogICAoMSkgQSDigJxwb2x5Z2xvdOKAnSBpcyBhIHBl cnNvbiB3aG8gaXMgYWJsZSB0byB1c2Ugc2V2ZXJhbCBsYW5ndWFnZXMuCgofCkZpbGU6IGRvY3Vv WEVOVS5pbmZvLCAgTm9kZTogUXVpY2sgU3RhcnQsICBOZXh0OiBFZ2xvdCBhbmQgTFNQIFNlcnZl cnMsICBQcmV2OiBUb3AsICBVcDogVG9wCgoxIFF1aWNrIFN0YXJ0CioqKioqKioqKioqKioKClRo aXMgY2hhcHRlciBwcm92aWRlcyBjb25jaXNlIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCBh bmQgdXNpbmcKRWdsb3Qgd2l0aCB5b3VyIHByb2dyYW1taW5nIHByb2plY3QgaW4gY29tbW9uIHVz YWdlIHNjZW5hcmlvcy4gIEZvciBtb3JlCmRldGFpbGVkIGluc3RydWN0aW9ucyByZWdhcmRpbmcg RWdsb3Qgc2V0dXAsICpub3RlIEVnbG90IGFuZCBMU1AKU2VydmVyczo6LiAgKk5vdGUgVXNpbmcg RWdsb3Q6OiwgZm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHVzaW5nCkVnbG90LCBhbmQgc2Vl ICpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjosIGZvciBhZGFwdGluZyBFZ2xvdCB0byBsZXNzCmNv bW1vbiB1c2UgcGF0dGVybnMuCgogICBIZXJlJ3MgaG93IHRvIHN0YXJ0IHVzaW5nIEVnbG90IHdp dGggeW91ciBwcm9ncmFtbWluZyBwcm9qZWN0OgoKICAxLiBTZWxlY3QgYW5kIGluc3RhbGwgYSBs YW5ndWFnZSBzZXJ2ZXIuCgogICAgIEVnbG90IGNvbWVzIHByZS1jb25maWd1cmVkIHdpdGggbWFu eSBwb3B1bGFyIGxhbmd1YWdlIHNlcnZlcnMsIHNlZQogICAgIHRoZSB2YWx1ZSBvZiDigJhlZ2xv dC1zZXJ2ZXItcHJvZ3JhbXPigJkuICBJZiB0aGUgc2VydmVyKHMpIG1lbnRpb25lZAogICAgIHRo ZXJlIHNhdGlzZnkgeW91ciBuZWVkcyBmb3IgdGhlIHByb2dyYW1taW5nIGxhbmd1YWdlKHMpIHdp dGggd2hpY2gKICAgICB5b3Ugd2FudCB0byB1c2UgRWdsb3QsIHlvdSBqdXN0IG5lZWQgdG8gbWFr ZSBzdXJlIHRob3NlIHNlcnZlcnMgYXJlCiAgICAgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLiAg QWx0ZXJuYXRpdmVseSwgaW5zdGFsbCBvbmUgb3IgbW9yZQogICAgIHNlcnZlcnMgb2YgeW91ciBj aG9pY2UgYW5kIGFkZCB0aGVtIHRvIHRoZSB2YWx1ZSBvZgogICAgIOKAmGVnbG90LXNlcnZlci1w cm9ncmFtc+KAmSwgYXMgZGVzY3JpYmVkIGluICpub3RlIFNldHRpbmcgVXAgTFNQCiAgICAgU2Vy dmVyczo6LgoKICAyLiBUdXJuIG9uIEVnbG90IGZvciB5b3VyIHByb2plY3QuCgogICAgIFRvIHN0 YXJ0IHVzaW5nIEVnbG90IGZvciBhIHByb2plY3QsIHR5cGUg4oCYTS14IGVnbG90IDxSRVQ+4oCZ IGluIGEKICAgICBidWZmZXIgdmlzaXRpbmcgYW55IGZpbGUgdGhhdCBiZWxvbmdzIHRvIHRoZSBw cm9qZWN0LiAgVGhpcyBzdGFydHMKICAgICB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGNvbmZpZ3VyZWQg Zm9yIHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSBvZiB0aGF0CiAgICAgYnVmZmVyLCBhbmQgY2F1 c2VzIEVnbG90IHRvIHN0YXJ0IOKAnG1hbmFnaW5n4oCdIGZpbGUtdmlzaXRpbmcgYnVmZmVycwog ICAgIHJlbGF0ZWQgdG8gdGhhdCBwcm9ncmFtbWluZyBsYW5ndWFnZS4gIFRoaXMgaW5jbHVkZXMg ZmlsZXMgdGhhdCBhcmUKICAgICBhbHJlYWR5IHZpc2l0ZWQgYXQgdGhlIHRpbWUgdGhlIOKAmGVn bG904oCZIGNvbW1hbmQgaXMgaW52b2tlZCwgYXMgd2VsbAogICAgIGFzIGFueSBmaWxlcyB2aXNp dGVkIGFmdGVyIHRoaXMgaW52b2NhdGlvbi4KCiAgICAgVGhlIG5vdGlvbiBvZiBhICJwcm9qZWN0 IiB1c2VkIGJ5IEVnbG90IGlzIHRoZSBzYW1lIEVtYWNzIHVzZXMKICAgICAoKm5vdGUgKGVtYWNz KVByb2plY3RzOjopOiBpbiB0aGUgc2ltcGxlc3QgY2FzZSwgdGhlICJwcm9qZWN0IiBpcwogICAg IHRoZSBzaW5nbGUgZmlsZSB5b3UgYXJlIGVkaXRpbmcsIGJ1dCBpdCBjYW4gYWxzbyBiZSBhbGwg dGhlIGZpbGVzCiAgICAgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IG9yIGEgZGlyZWN0b3J5IHRyZWUg dW5kZXIgc29tZSB2ZXJzaW9uCiAgICAgY29udHJvbCBzeXN0ZW0sIHN1Y2ggYXMgR2l0LgoKICAg ICBUaGVyZSBhcmUgYWx0ZXJuYXRlIHdheXMgb2Ygc3RhcnRpbmcgRWdsb3Q7IHNlZSAqbm90ZSBT dGFydGluZwogICAgIEVnbG90OjogZm9yIGRldGFpbHMuCgogIDMuIFVzZSBFZ2xvdC4KCiAgICAg TW9zdCBFZ2xvdCBmYWNpbGl0aWVzIGFyZSBpbnRlZ3JhdGVkIGludG8gRW1hY3MgZmVhdHVyZXMs IHN1Y2ggYXMKICAgICBFbERvYywgRmx5bWFrZSwgWHJlZiwgYW5kIEltZW51LiAgSG93ZXZlciwg RWdsb3QgYWxzbyBwcm92aWRlcwogICAgIGNvbW1hbmRzIG9mIGl0cyBvd24sIG1haW5seSB0byBw ZXJmb3JtIHRhc2tzIGJ5IHRoZSBsYW5ndWFnZQogICAgIHNlcnZlciwgc3VjaCBhcyDigJhNLXgg ZWdsb3QtcmVuYW1l4oCZICh0byByZW5hbWUgYW4gaWRlbnRpZmllciBhY3Jvc3MKICAgICB0aGUg ZW50aXJlIHByb2plY3QpLCDigJhNLXggZWdsb3QtZm9ybWF04oCZICh0byByZWZvcm1hdCBhbmQg cmVpbmRlbnQKICAgICBjb2RlKSwgYW5kIHNvbWUgb3RoZXJzLiAgKk5vdGUgRWdsb3QgQ29tbWFu ZHM6OiwgZm9yIHRoZSBkZXRhaWxlZAogICAgIGxpc3Qgb2YgRWdsb3QgY29tbWFuZHMuCgogIDQu IFRoYXQncyBpdCEKCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBFZ2xvdCBhbmQgTFNQ IFNlcnZlcnMsICBOZXh0OiBVc2luZyBFZ2xvdCwgIFByZXY6IFF1aWNrIFN0YXJ0LCAgVXA6IFRv cAoKMiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKKioqKioqKioqKioqKioqKioqKioqKioKClRoaXMg Y2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHNldCB1cCBFZ2xvdCBmb3IgeW91ciBuZWVkcywgYW5k IGhvdyB0bwpzdGFydCBpdC4KCiogTWVudToKCiogU2V0dGluZyBVcCBMU1AgU2VydmVyczo6ICAg SG93IHRvIGNvbmZpZ3VyZSBMU1Agc2VydmVycyBmb3IgeW91ciBuZWVkcy4KKiBTdGFydGluZyBF Z2xvdDo6ICAgICAgICAgICAgICBXYXlzIG9mIHN0YXJ0aW5nIEVnbG90IGZvciB5b3VyIHByb2pl Y3QuCiogU2h1dHRpbmcgRG93biBMU1AgU2VydmVyczo6CgofCkZpbGU6IGRvY3VvWEVOVS5pbmZv LCAgTm9kZTogU2V0dGluZyBVcCBMU1AgU2VydmVycywgIE5leHQ6IFN0YXJ0aW5nIEVnbG90LCAg VXA6IEVnbG90IGFuZCBMU1AgU2VydmVycwoKMi4xIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMKPT09 PT09PT09PT09PT09PT09PT09PT09PT0KCkZvciBFZ2xvdCB0byBiZSB1c2VmdWwsIGl0IG11c3Qg Zmlyc3QgYmUgY29tYmluZWQgd2l0aCBhIHN1aXRhYmxlCmxhbmd1YWdlIHNlcnZlci4gIFVzdWFs bHksIHRoYXQgbWVhbnMgcnVubmluZyB0aGUgc2VydmVyIHByb2dyYW0gbG9jYWxseQphcyBhIGNo aWxkIHByb2Nlc3Mgb2YgRW1hY3MgKCpub3RlIChlbGlzcClQcm9jZXNzZXM6OikgYW5kIGNvbW11 bmljYXRpbmcKd2l0aCBpdCB2aWEgdGhlIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQgc3RyZWFt cy4KCiAgIFRoZSBsYW5ndWFnZSBzZXJ2ZXIgcHJvZ3JhbSBtdXN0IGJlIGluc3RhbGxlZCBzZXBh cmF0ZWx5LCBhbmQgaXMgbm90CmZ1cnRoZXIgZGlzY3Vzc2VkIGluIHRoaXMgbWFudWFsOyByZWZl ciB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUKcGFydGljdWxhciBzZXJ2ZXIocykgeW91IHdh bnQgdG8gaW5zdGFsbC4KCiAgIFRvIHVzZSBhIGxhbmd1YWdlIHNlcnZlciwgRWdsb3QgbXVzdCBr bm93IGhvdyB0byBzdGFydCBpdCBhbmQgd2hpY2gKcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGVhY2gg c2VydmVyIHN1cHBvcnRzLiAgVGhpcyBpbmZvcm1hdGlvbiBpcwpwcm92aWRlZCBieSB0aGUgdmFy aWFibGUg4oCYZWdsb3Qtc2VydmVyLXByb2dyYW1z4oCZLgoKIC0tIFZhcmlhYmxlOiBlZ2xvdC1z ZXJ2ZXItcHJvZ3JhbXMKICAgICBUaGlzIHZhcmlhYmxlIGFzc29jaWF0ZXMgbWFqb3IgbW9kZXMg d2l0aCBuYW1lcyBhbmQgY29tbWFuZC1saW5lCiAgICAgYXJndW1lbnRzIG9mIHRoZSBsYW5ndWFn ZSBzZXJ2ZXIgcHJvZ3JhbXMgY29ycmVzcG9uZGluZyB0byB0aGUKICAgICBwcm9ncmFtbWluZyBs YW5ndWFnZSBvZiBlYWNoIG1ham9yIG1vZGUuICBJdCBwcm92aWRlcyBhbGwgdGhlCiAgICAgaW5m b3JtYXRpb24gdGhhdCBFZ2xvdCBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBwcm9ncmFtbWluZyBs YW5ndWFnZQogICAgIG9mIHRoZSBzb3VyY2UgeW91IGFyZSBlZGl0aW5nLgoKICAgICBUaGUgdmFs dWUgb2YgdGhlIHZhcmlhYmxlIGlzIGFuIGFsaXN0LCB3aG9zZSBlbGVtZW50cyBhcmUgb2YgdGhl CiAgICAgZm9ybSDigJgoTUFKT1ItTU9ERSAuIFNFUlZFUinigJkuCgogICAgIFRoZSBNQUpPUi1N T0RFIG9mIHRoZSBhbGlzdCBlbGVtZW50cyBjYW4gYmUgZWl0aGVyIGEgc3ltYm9sIG9mIGFuCiAg ICAgRW1hY3MgbWFqb3IgbW9kZSBvciBhIGxpc3Qgb2YgdGhlIGZvcm0g4oCYKE1PREUgOmxhbmd1 YWdlLWlkIElEKeKAmSwKICAgICB3aXRoIE1PREUgYmVpbmcgYSBtYWpvci1tb2RlIHN5bWJvbCBh bmQgSUQgYSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzCiAgICAgdGhlIGxhbmd1YWdlIHRvIHRoZSBz ZXJ2ZXIgKGlmIEVnbG90IGNhbm5vdCBieSBpdHNlbGYgY29udmVydCB0aGUKICAgICBtYWpvci1t b2RlIHRvIHRoZSBsYW5ndWFnZSBpZGVudGlmaWVyIHN0cmluZyByZXF1aXJlZCBieSB0aGUKICAg ICBzZXJ2ZXIpLiAgSW4gYWRkaXRpb24sIE1BSk9SLU1PREUgY2FuIGJlIGEgbGlzdCBvZiBzZXZl cmFsIG1ham9yCiAgICAgbW9kZXMgc3BlY2lmaWVkIGluIG9uZSBvZiB0aGUgYWJvdmUgZm9ybXMg LSB0aGlzIG1lYW5zIGEgcnVubmluZwogICAgIGluc3RhbmNlIG9mIHRoZSBhc3NvY2lhdGVkIHNl cnZlciBpcyByZXNwb25zaWJsZSBmb3IgZmlsZXMgb2YKICAgICBtdWx0aXBsZSBtYWpvciBtb2Rl cyBvciBsYW5ndWFnZXMgaW4gdGhlIHByb2plY3QuCgogICAgIFRoZSBTRVJWRVIgcGFydCBvZiB0 aGUgYWxpc3QgZWxlbWVudHMgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgICDigJgo UFJPR1JBTSBBUkdTLi4uKeKAmQogICAgICAgICAgVGhpcyBzYXlzIHRvIGludm9rZSBQUk9HUkFN IHdpdGggemVybyBvciBtb3JlIGFyZ3VtZW50cyBBUkdTOwogICAgICAgICAgdGhlIHByb2dyYW0g aXMgZXhwZWN0ZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBFbWFjcyB2aWEgdGhlCiAgICAgICAgICBz dGFuZGFyZCBpbnB1dCBhbmQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbXMuCgogICAgIOKAmChQUk9H UkFNIEFSR1MuLi4gOmluaXRpYWxpemF0aW9uT3B0aW9ucyBPUFRJT05TLi4uKeKAmQogICAgICAg ICAgUFJPR1JBTSBpcyBpbnZva2VkIHdpdGggQVJHUyBidXQgT1BUSU9OUyBzcGVjaWZpZXMgaG93 IHRvCiAgICAgICAgICBjb25zdHJ1Y3QgdGhlIOKAmDppbml0aWFsaXphdGlvbk9wdGlvbnPigJkg SlNPTiBvYmplY3QgdG8gcGFzcyB0aGUKICAgICAgICAgIHNlcnZlciBvbiBkdXJpbmcgdGhlIExT UCBoYW5kc2hha2UgKCpub3RlIEFkdmFuY2VkIHNlcnZlcgogICAgICAgICAgY29uZmlndXJhdGlv bjo6KS4KCiAgICAg4oCYKEhPU1QgUE9SVCBBUkdTLi4uKeKAmQogICAgICAgICAgSGVyZSBIT1NU IGlzIGEgc3RyaW5nIGFuZCBQT1JUIGlzIGEgcG9zaXRpdmUgaW50ZWdlcgogICAgICAgICAgc3Bl Y2lmeWluZyBhIFRDUCBjb25uZWN0aW9uIHRvIGEgcmVtb3RlIHNlcnZlci4gIFRoZSBBUkdTIGFy ZQogICAgICAgICAgcGFzc2VkIHRvIOKAmG9wZW4tbmV0d29yay1zdHJlYW3igJksIGUuZy4gaWYg dGhlIGNvbm5lY3Rpb24gbmVlZHMKICAgICAgICAgIHRvIHVzZSBlbmNyeXB0aW9uIG9yIG90aGVy IG5vbi1kZWZhdWx0IHBhcmFtZXRlcnMgKCpub3RlCiAgICAgICAgICAoZWxpc3ApTmV0d29yazo6 KS4KCiAgICAg4oCYKFBST0dSQU0gQVJHUy4uLiA6YXV0b3BvcnQgTU9SRUFSR1MuLi4p4oCZCiAg ICAgICAgICBQUk9HUkFNIGlzIHN0YXJ0ZWQgd2l0aCBhIGNvbW1hbmQgbGluZSBjb25zdHJ1Y3Rl ZCBmcm9tIEFSR1MKICAgICAgICAgIGZvbGxvd2VkIGJ5IGFuIGF2YWlsYWJsZSBzZXJ2ZXIgcG9y dCBhbmQgdGhlIHJlc3Qgb2YgYXJndW1lbnRzCiAgICAgICAgICBpbiBNT1JFQVJHUzsgRWdsb3Qg dGhlbiBlc3RhYmxpc2hlcyBhIFRDUCBjb25uZWN0aW9uIHdpdGggdGhlCiAgICAgICAgICBzZXJ2 ZXIgdmlhIHRoYXQgcG9ydCBvbiB0aGUgbG9jYWwgaG9zdC4KCiAgICAg4oCYRlVOQ1RJT07igJkK ICAgICAgICAgIFRoaXMgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgYSBzaW5nbGUgYXJndW1lbnQ6 IG5vbi3igJhuaWzigJkgaWYKICAgICAgICAgIHRoZSBjb25uZWN0aW9uIHdhcyByZXF1ZXN0ZWQg aW50ZXJhY3RpdmVseSAoZS5nLiwgYnkgdGhlCiAgICAgICAgICDigJhlZ2xvdOKAmSBjb21tYW5k KSwgb3RoZXJ3aXNlIOKAmG5pbOKAmS4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuCiAgICAg ICAgICBhIHZhbHVlIG9mIGFueSBvZiB0aGUgZm9ybXMgZGVzY3JpYmVkIGFib3ZlLiAgVGhpcyBh bGxvd3MKICAgICAgICAgIGludGVyYWN0aW9uIHdpdGggdGhlIHVzZXIgZm9yIGRldGVybWluaW5n IHRoZSBwcm9ncmFtIHRvIHN0YXJ0CiAgICAgICAgICBhbmQgaXRzIGNvbW1hbmQtbGluZSBhcmd1 bWVudHMuCgogICBFZ2xvdCBjb21lcyB3aXRoIGEgZmFpcmx5IGNvbXBsZXRlIHNldCBvZiBhc3Nv Y2lhdGlvbnMgb2YgbWFqb3ItbW9kZXMKdG8gcG9wdWxhciBsYW5ndWFnZSBzZXJ2ZXJzIHByZWRl ZmluZWQuICBJZiB5b3UgbmVlZCB0byBhZGQgc2VydmVyCmFzc29jaWF0aW9ucyB0byB0aGUgZGVm YXVsdCBsaXN0LCB1c2Ug4oCYYWRkLXRvLWxpc3TigJkuICBGb3IgZXhhbXBsZSwgaWYKdGhlcmUg aXMgYSBoeXBvdGhldGljYWwgbGFuZ3VhZ2Ugc2VydmVyIHByb2dyYW0g4oCYZm9vbHPigJkgZm9y IHRoZSBsYW5ndWFnZQrigJhGb2/igJkgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGFuIEVtYWNzIG1h am9yLW1vZGUg4oCYZm9vLW1vZGXigJksIHlvdSBjYW4gYWRkCml0IHRvIHRoZSBhbGlzdCBsaWtl IHRoaXM6CgogICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAgIChhZGQtdG8t bGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAgJyhmb28tbW9k ZSAuICgiZm9vbHMiICItLXN0ZGlvIikpKSkKCiAgIFRoaXMgd2lsbCBpbnZva2UgdGhlIHByb2dy YW0g4oCYZm9vbHPigJkgd2l0aCB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50CuKAmC0tc3RkaW/i gJkgaW4gc3VwcG9ydCBvZiBlZGl0aW5nIHNvdXJjZSBmaWxlcyBmb3Igd2hpY2ggRW1hY3MgdHVy bnMgb24K4oCYZm9vLW1vZGXigJksIGFuZCB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlIHByb2dy YW0gdmlhIHRoZSBzdGFuZGFyZApzdHJlYW1zLiAgQXMgdXN1YWwgd2l0aCBpbnZva2luZyBwcm9n cmFtcywgdGhlIGV4ZWN1dGFibGUgZmlsZSDigJhmb29sc+KAmQpzaG91bGQgYmUgaW4gb25lIG9m IHRoZSBkaXJlY3RvcmllcyBtZW50aW9uZWQgYnkgdGhlIOKAmGV4ZWMtcGF0aOKAmQp2YXJpYWJs ZSAoKm5vdGUgKGVsaXNwKVN1YnByb2Nlc3MgQ3JlYXRpb246OiksIGZvciBFZ2xvdCB0byBiZSBh YmxlIHRvCmZpbmQgaXQuCgogICBTb21ldGltZXMsIG11bHRpcGxlIHNlcnZlcnMgYXJlIGFjY2Vw dGFibGUgYWx0ZXJuYXRpdmVzIGZvciBoYW5kbGluZwphIGdpdmVuIG1ham9yLW1vZGUuICBJbiB0 aG9zZSBjYXNlcywgeW91IG1heSBjb21iaW5lIHRoZSBoZWxwZXIgZnVuY3Rpb24K4oCYZWdsb3Qt YWx0ZXJuYXRpdmVz4oCZIHdpdGggdGhlIGZ1bmN0aW9uYWwgZm9ybSBvZgrigJhlZ2xvdC1zZXJ2 ZXItcHJvZ3JhbXPigJkuCgogICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAg IChhZGQtdG8tbGlzdCAnZWdsb3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAg YChmb28tbW9kZSAuICwoZWdsb3QtYWx0ZXJuYXRpdmVzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcoKCJmb29scyIgIi0tc3RkaW8iKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgicGhld2xzIiAiLS1mYXN0IikpKSkpKQoKICAgSWYgeW91IGhhdmUg 4oCYZm9vbHPigJkgYW5kIOKAmHBoZXdsc+KAmSBpbnN0YWxsZWQsIHRoZSBmdW5jdGlvbiBwcm9k dWNlZCBieQrigJhlZ2xvdC1hbHRlcm5hdGl2ZXPigJkgd2lsbCBwcm9tcHQgZm9yIHRoZSBzZXJ2 ZXIgdG8gdXNlIGluIOKAmGZvby1tb2Rl4oCZCmJ1ZmZlcnMuICBFbHNlIGl0IHdpbGwgdXNlIHdo aWNoZXZlciBpcyBhdmFpbGFibGUuCgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogU3Rh cnRpbmcgRWdsb3QsICBOZXh0OiBTaHV0dGluZyBEb3duIExTUCBTZXJ2ZXJzLCAgUHJldjogU2V0 dGluZyBVcCBMU1AgU2VydmVycywgIFVwOiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnMKCjIuMiBTdGFy dGluZyBFZ2xvdAo9PT09PT09PT09PT09PT09PT0KClRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc3Rh cnQgRWdsb3QgaXMgdG8gc2ltcGx5IHZpc2l0IGEgc291cmNlIGZpbGUgb2YgYQpnaXZlbiBsYW5n dWFnZSBhbmQgdXNlIHRoZSBjb21tYW5kIOKAmE0teCBlZ2xvdOKAmS4gIFRoaXMgc3RhcnRzIHRo ZQpsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoZSB2aXNpdGVkIGZpbGUncyBtYWpvci1t b2RlLCBhbmQgYXR0ZW1wdHMKdG8gY29ubmVjdCB0byBpdC4gIElmIHRoZSBjb25uZWN0aW9uIHRv IHRoZSBsYW5ndWFnZSBzZXJ2ZXIgaXMKc3VjY2Vzc2Z1bCwgeW91IHdpbGwgc2VlIHRoZSDigJhb ZWdsb3Q6UFJPSkVDVF3igJkgaW5kaWNhdG9yIG9uIHRoZSBtb2RlCmxpbmUgd2hpY2ggcmVmbGVj dHMgdGhlIHNlcnZlciB0aGF0IHdhcyBzdGFydGVkLiAgSWYgdGhlIHNlcnZlciBwcm9ncmFtCmNv dWxkbid0IGJlIHN0YXJ0ZWQgb3IgY29ubmVjdGlvbiB0byBpdCBmYWlsZWQsIHlvdSB3aWxsIHNl ZSBhbiBlcnJvcgptZXNzYWdlOyBpbiB0aGF0IGNhc2UsIHRyeSB0byB0cm91Ymxlc2hvb3QgdGhl IHByb2JsZW0gYXMgZGVzY3JpYmVkIGluCipub3RlIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6LiAg T25jZSBhIGxhbmd1YWdlIHNlcnZlciB3YXMgc3VjY2Vzc2Z1bGx5CnN0YXJ0ZWQgYW5kIEVnbG90 IGNvbm5lY3RlZCB0byBpdCwgeW91IGNhbiBpbW1lZGlhdGVseSBzdGFydCB1c2luZyB0aGUKRW1h Y3MgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVnbG90LCBhcyBkZXNjcmliZWQgaW4gKm5vdGUgRWds b3QKRmVhdHVyZXM6Oi4KCiAgIEEgc2luZ2xlIEVnbG90IHNlc3Npb24gZm9yIGEgY2VydGFpbiBt YWpvci1tb2RlIHVzdWFsbHkgc2VydmVzIGFsbAp0aGUgYnVmZmVycyB1bmRlciB0aGF0IG1vZGUg d2hpY2ggdmlzaXQgZmlsZXMgZnJvbSB0aGUgc2FtZSBwcm9qZWN0LCBzbwp5b3UgZG9uJ3QgbmVl ZCB0byBpbnZva2Ug4oCYTS14IGVnbG904oCZIGFnYWluIHdoZW4geW91IHZpc2l0IGFub3RoZXIg ZmlsZQpmcm9tIHRoZSBzYW1lIHByb2plY3Qgd2hpY2ggaXMgZWRpdGVkIHVzaW5nIHRoZSBzYW1l IG1ham9yLW1vZGUuICBUaGlzCmlzIGJlY2F1c2UgRWdsb3QgdXNlcyB0aGUgRW1hY3MgcHJvamVj dCBpbmZyYXN0cnVjdHVyZSwgYXMgZGVzY3JpYmVkIGluCipub3RlIEVnbG90IGFuZCBCdWZmZXJz OjosIGFuZCB0aGlzIGtub3dzIGFib3V0IGZpbGVzIHRoYXQgYmVsb25nIHRvIHRoZQpzYW1lIHBy b2plY3QuICBUaHVzLCBhZnRlciBzdGFydGluZyBhbiBFZ2xvdCBzZXNzaW9uIGZvciBzb21lIGJ1 ZmZlciwKdGhhdCBzZXNzaW9uIGlzIGF1dG9tYXRpY2FsbHkgcmV1c2VkIHdoZW4gdmlzaXRpbmcg ZmlsZXMgaW4gdGhlIHNhbWUKcHJvamVjdCB3aXRoIHRoZSBzYW1lIG1ham9yLW1vZGUuCgogICBB bHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgY29uZmlndXJlIEVnbG90IHRvIHN0YXJ0IGF1dG9tYXRp Y2FsbHkgZm9yCm9uZSBvciBtb3JlIG1ham9yLW1vZGVzIGZyb20gdGhlIHJlc3BlY3RpdmUgbW9k ZSBob29rcy4gIEhlcmUncyBhbgpleGFtcGxlIGZvciBhIGh5cG90aGV0aWNhbCDigJhmb28tbW9k ZeKAmToKCiAgICAgIChhZGQtaG9vayAnZm9vLW1vZGUtaG9vayAnZWdsb3QtZW5zdXJlKQoKVGhl IGZ1bmN0aW9uIOKAmGVnbG90LWVuc3VyZeKAmSB3aWxsIHN0YXJ0IGFuIEVnbG90IHNlc3Npb24g Zm9yIGVhY2ggYnVmZmVyCmluIHdoaWNoIOKAmGZvby1tb2Rl4oCZIGlzIHR1cm5lZCBvbiwgaWYg dGhlcmUgaXNuJ3QgYWxyZWFkeSBhbiBFZ2xvdApzZXNzaW9uIHRoYXQgaGFuZGxlcyB0aGUgYnVm ZmVyLiAgTm90ZSB0aGF0IHRoaXMgdmFyaWFudCBvZiBzdGFydGluZyBhbgpFZ2xvdCBzZXNzaW9u IGlzIG5vbi1pbnRlcmFjdGl2ZSwgc28gaXQgc2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIHlvdSBh cmUKY29uZmlkZW50IHRoYXQgRWdsb3QgY2FuIGJlIHN0YXJ0ZWQgcmVsaWFibHkgZm9yIGFueSBm aWxlIHdoaWNoIG1heSBiZQp2aXNpdGVkIHdpdGggdGhlIG1ham9yLW1vZGUgaW4gcXVlc3Rpb24u CgogICBOb3RlIHRoYXQgaXQncyBvZnRlbiBkaWZmaWN1bHQgdG8gZXN0YWJsaXNoIHRoaXMgY29u ZmlkZW5jZSBmdWxseSwgc28KaXQgbWF5IGJlIHdpc2UgdG8gdXNlIHRoZSBpbnRlcmFjdGl2ZSBj b21tYW5kIOKAmGVnbG904oCZIGluc3RlYWQuICBZb3Ugb25seQpuZWVkIHRvIGludm9rZSBpdCBv bmNlIHBlciBwcm9qZWN0LCBhcyBhbGwgb3RoZXIgZmlsZXMgdmlzaXRlZCB3aXRoaW4KdGhlIHNh bWUgcHJvamVjdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgbWFuYWdlZCB3aXRoIG5vIGZ1cnRoZXIg dXNlcgppbnRlcnZlbnRpb24gbmVlZGVkLgoKICAgV2hlbiBFZ2xvdCBjb25uZWN0cyB0byBhIGxh bmd1YWdlIHNlcnZlciBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gYW4KRW1hY3Mgc2Vzc2lvbiwgaXQg cnVucyB0aGUgaG9vayDigJhlZ2xvdC1jb25uZWN0LWhvb2vigJkgKCpub3RlIEVnbG90ClZhcmlh Ymxlczo6KS4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBTaHV0dGluZyBEb3duIExT UCBTZXJ2ZXJzLCAgUHJldjogU3RhcnRpbmcgRWdsb3QsICBVcDogRWdsb3QgYW5kIExTUCBTZXJ2 ZXJzCgoyLjMgU2h1dHRpbmcgRG93biBMU1AgU2VydmVycwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQoKV2hlbiBFZ2xvdCBpcyB0dXJuZWQgb24sIGl0IGFycmFuZ2VzIGZvciB0dXJuaW5n IGl0c2VsZiBvZmYKYXV0b21hdGljYWxseSBpZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb2Nlc3Mg dGVybWluYXRlcy4gIFR1cm5pbmcgb2ZmCkVnbG90IG1lYW5zIHRoYXQgaXQgc2h1dHMgZG93biB0 aGUgc2VydmVyIGNvbm5lY3Rpb24sIGNlYXNlcyBpdHMKbWFuYWdlbWVudCBvZiBhbGwgdGhlIGJ1 ZmZlcnMgdGhhdCB1c2UgdGhlIHNlcnZlciBjb25uZWN0aW9uIHdoaWNoIHdhcwp0ZXJtaW5hdGVk LCBkZWFjdGl2YXRlcyBpdHMgbWlub3IgbW9kZSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5hbCB2 YWx1ZXMKb2YgdGhlIEVtYWNzIHZhcmlhYmxlcyB0aGF0IEVnbG90IGNoYW5nZWQgd2hlbiBpdCB3 YXMgdHVybmVkIG9uLiAgKk5vdGUKRWdsb3QgYW5kIEJ1ZmZlcnM6OiwgZm9yIG1vcmUgZGV0YWls cyBvZiB3aGF0IEVnbG90IG1hbmFnZW1lbnQgb2YgYQpidWZmZXIgZW50YWlscy4KCiAgIFlvdSBj YW4gYWxzbyBzaHV0IGRvd24gYSBsYW5ndWFnZSBzZXJ2ZXIgbWFudWFsbHksIGJ5IHVzaW5nIHRo ZQpjb21tYW5kIOKAmE0teCBlZ2xvdC1zaHV0ZG93buKAmS4gIFRoaXMgcHJvbXB0cyBmb3IgdGhl IHNlcnZlciAodW5sZXNzCnRoZXJlJ3Mgb25seSBvbmUgY29ubmVjdGlvbiBhbmQgaXQncyB1c2Vk IGluIHRoZSBjdXJyZW50IGJ1ZmZlciksIGFuZAp0aGVuIHNodXRzIGl0IGRvd24uICBCeSBkZWZh dWx0LCBpdCBhbHNvIGtpbGxzIHRoZSBzZXJ2ZXIncyBldmVudHMKYnVmZmVyICgqbm90ZSBUcm91 Ymxlc2hvb3RpbmcgRWdsb3Q6OiksIGJ1dCBhIHByZWZpeCBhcmd1bWVudCBwcmV2ZW50cwp0aGF0 LgoKICAgQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjdXN0b21pemUgdGhlIHZhcmlhYmxlIOKAmGVn bG90LWF1dG9zaHV0ZG93buKAmSB0bwphIG5vbi3igJhuaWzigJkgdmFsdWUsIGluIHdoaWNoIGNh c2UgRWdsb3Qgd2lsbCBhdXRvbWF0aWNhbGx5IHNodXQgZG93biB0aGUKbGFuZ3VhZ2Ugc2VydmVy IHByb2Nlc3Mgd2hlbiB0aGUgbGFzdCBidWZmZXIgc2VydmVkIGJ5IHRoYXQgbGFuZ3VhZ2UKc2Vy dmVyIGlzIGtpbGxlZC4gIFRoZSBkZWZhdWx0IG9mIHRoaXMgdmFyaWFibGUgaXMg4oCYbmls4oCZ LCBzbyB0aGF0CnZpc2l0aW5nIGFub3RoZXIgZmlsZSB3b3VsZCBhdXRvbWF0aWNhbGx5IGFjdGl2 YXRlIEVnbG90IGV2ZW4gd2hlbiB0aGUKcHJvamVjdCB3aGljaCBzdGFydGVkIEVnbG90IHdpdGgg dGhlIHNlcnZlciBubyBsb25nZXIgaGFzIGFueSBidWZmZXIKYXNzb2NpYXRlZCB3aXRoIGl0LiAg VGhpcyBkZWZhdWx0IGFsbG93cyB5b3UgdG8gc3RhcnQgYSBzZXJ2ZXIgb25seSBvbmNlCmluIGVh Y2ggRW1hY3Mgc2Vzc2lvbi4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBVc2luZyBF Z2xvdCwgIE5leHQ6IEN1c3RvbWl6aW5nIEVnbG90LCAgUHJldjogRWdsb3QgYW5kIExTUCBTZXJ2 ZXJzLCAgVXA6IFRvcAoKMyBVc2luZyBFZ2xvdAoqKioqKioqKioqKioqCgpUaGlzIGNoYXB0ZXIg ZGVzY3JpYmVzIGluIGRldGFpbCB0aGUgZmVhdHVyZXMgdGhhdCBFZ2xvdCBwcm92aWRlcyBhbmQK aG93IGl0IGRvZXMgdGhhdC4gIEl0IGFsc28gcHJvdmlkZXMgcmVmZXJlbmNlIHNlY3Rpb25zIGZv ciBFZ2xvdApjb21tYW5kcyBhbmQgdmFyaWFibGVzLgoKKiBNZW51OgoKKiBFZ2xvdCBGZWF0dXJl czo6CiogRWdsb3QgYW5kIEJ1ZmZlcnM6OgoqIEVnbG90IENvbW1hbmRzOjoKKiBFZ2xvdCBWYXJp YWJsZXM6OgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IEVnbG90IEZlYXR1cmVzLCAg TmV4dDogRWdsb3QgYW5kIEJ1ZmZlcnMsICBVcDogVXNpbmcgRWdsb3QKCjMuMSBFZ2xvdCBGZWF0 dXJlcwo9PT09PT09PT09PT09PT09PT0KCldoaWxlIEVnbG90IGlzIGVuYWJsZWQgaW4gYSBidWZm ZXIsIGl0IGlzIHNhaWQgdG8gYmUg4oCcbWFuYWdpbmfigJ0gaXQsCnVzaW5nIExTUCBhbmQgdGhl IHNwZWNpZmljIGNhcGFiaWxpdGllcyBvZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRvCmFjdGl2YXRl IGFuZCBlbmhhbmNlIG1vZGVybiBJREUgZmVhdHVyZXMgaW4gRW1hY3MuICBTb21lIG9mIHRoZXNl CmZlYXR1cmVzIGFyZSBwcm92aWRlZCB2aWEgb3RoZXIgRW1hY3MgcGFja2FnZXMsIGFuZCBzb21l IHZpYSBFZ2xvdApkaXJlY3RseSAoKm5vdGUgRWdsb3QgQ29tbWFuZHM6OikuCgogICBIZXJlJ3Mg YW4gb3ZlcnZpZXcgb2YgdGhlIG1haW4gZmVhdHVyZXMgdGhhdCBFZ2xvdCBwcm92aWRlczoKCiAg IOKAoiBBdC1wb2ludCBkb2N1bWVudGF0aW9uOiB3aGVuIHBvaW50IGlzIGF0IG9yIG5lYXIgYSBz eW1ib2wgb3IgYW4KICAgICBpZGVudGlmaWVyLCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5 bWJvbC9pZGVudGlmaWVyLCBzdWNoIGFzCiAgICAgdGhlIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9u IG9yIGNsYXNzIG1ldGhvZCBhbmQgc2VydmVyLWdlbmVyYXRlZAogICAgIGRpYWdub3N0aWNzLCBp cyBtYWRlIGF2YWlsYWJsZSB2aWEgdGhlIEVsRG9jIHBhY2thZ2UgKCpub3RlCiAgICAgKGVtYWNz KVByb2dyYW1taW5nIExhbmd1YWdlIERvYzo6KS4gIFRoaXMgYWxsb3dzIG1ham9yIG1vZGVzIHRv CiAgICAgcHJvdmlkZSBleHRlbnNpdmUgaGVscCBhbmQgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUg cHJvZ3JhbQogICAgIGlkZW50aWZpZXJzLgoKICAg4oCiIE9uLXRoZS1mbHkgZGlhZ25vc3RpYyBh bm5vdGF0aW9ucywgdmlhIHRoZSBGbHltYWtlIHBhY2thZ2UgKCpub3RlCiAgICAgKGZseW1ha2Up VG9wOjopLiAgRWdsb3QncyBGbHltYWtlIGJhY2tlbmQgcmVwbGFjZXMgb3RoZXIgRmx5bWFrZQog ICAgIGJhY2tlbmRzIHdoaWxlIGl0IGlzIG1hbmFnaW5nIGEgYnVmZmVyLCBhbmQgZW5oYW5jZXMg ZGlhZ25vc3RpY3MKICAgICB3aXRoIGludGVyYWN0aXZlIHNlcnZlci1zdWdnZXN0ZWQgZml4ZXMg KHNvLWNhbGxlZCDigJxjb2RlIGFjdGlvbnPigJ0sCiAgICAgKm5vdGUgRWdsb3QgQ29tbWFuZHM6 OikKCiAgIOKAoiBGaW5kaW5nIGRlZmluaXRpb25zIGFuZCB1c2VzIG9mIGlkZW50aWZpZXJzLCB2 aWEgWHJlZiAoKm5vdGUKICAgICAoZW1hY3MpWHJlZjo6KS4gIEVnbG90IHByb3ZpZGVzIGEgYmFj a2VuZCBmb3IgdGhlIFhyZWYgY2FwYWJpbGl0aWVzCiAgICAgd2hpY2ggdXNlcyB0aGUgbGFuZ3Vh Z2Utc2VydmVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByb2dyYW0gc291cmNlLgogICAgIEluIHBh cnRpY3VsYXIsIGl0IGVsaW1pbmF0ZXMgdGhlIG5lZWQgdG8gZ2VuZXJhdGUgdGFncyB0YWJsZXMK ICAgICAoKm5vdGUgKGVtYWNzKVRhZ3MgdGFibGVzOjopIGZvciBsYW5ndWFnZXMgd2hpY2ggYXJl IG9ubHkgc3VwcG9ydGVkCiAgICAgYnkgdGhlIOKAmGV0YWdz4oCZIGJhY2tlbmQuCgogICDigKIg QnVmZmVyIG5hdmlnYXRpb24gYnkgbmFtZSBvZiBmdW5jdGlvbiwgY2xhc3MsIG1ldGhvZCwgZXRj LiwgdmlhCiAgICAgSW1lbnUgKCpub3RlIChlbWFjcylJbWVudTo6KS4gIEVnbG90IHByb3ZpZGVz IGl0cyBvd24gdmFyaWFudCBvZgogICAgIOKAmGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbuKA mSwgd2hpY2ggZ2VuZXJhdGVzIHRoZSBpbmRleCBmb3IgdGhlCiAgICAgYnVmZmVyIGJhc2VkIG9u IGxhbmd1YWdlLXNlcnZlciBwcm9ncmFtIHNvdXJjZSBhbmFseXNpcy4KCiAgIOKAoiBFbmhhbmNl ZCBjb21wbGV0aW9uIG9mIHN5bWJvbCBhdCBwb2ludCBieSB0aGUg4oCYY29tcGxldGlvbi1hdC1w b2ludOKAmQogICAgIGNvbW1hbmQgKCpub3RlIChlbWFjcylTeW1ib2wgQ29tcGxldGlvbjo6KS4g IFRoaXMgdXNlcyB0aGUKICAgICBsYW5ndWFnZS1zZXJ2ZXIncyBwYXJzZXIgZGF0YSBmb3IgdGhl IGNvbXBsZXRpb24gY2FuZGlkYXRlcy4KCiAgIOKAoiBBdXRvbWF0aWMgcmVmb3JtYXR0aW5nIG9m IHNvdXJjZSBjb2RlIGFzIHlvdSB0eXBlIGl0LiAgVGhpcyBpcwogICAgIHNpbWlsYXIgdG8gd2hh dCB0aGUg4oCYZWdsb3QtZm9ybWF04oCZIGNvbW1hbmQgZG9lcyAoc2VlIGJlbG93KSwgYnV0IGlz CiAgICAgYWN0aXZhdGVkIGF1dG9tYXRpY2FsbHkgYXMgeW91IHR5cGUuCgogICDigKIgSWYgYSBj b21wbGV0aW9uIHBhY2thZ2Ugc3VjaCBhcyDigJhjb21wYW55LW1vZGXigJksIGEgcG9wdWxhcgog ICAgIHRoaXJkLXBhcnR5IGNvbXBsZXRpb24gcGFja2FnZSAob3IgYW55IG90aGVyIGNvbXBsZXRp b24gcGFja2FnZSksCiAgICAgaXMgaW5zdGFsbGVkLCBFZ2xvdCBlbmhhbmNlcyBpdCBieSBwcm92 aWRpbmcgY29tcGxldGlvbiBjYW5kaWRhdGVzCiAgICAgYmFzZWQgb24gdGhlIGxhbmd1YWdlLXNl cnZlciBhbmFseXNpcyBvZiB0aGUgc291cmNlIGNvZGUuCiAgICAgKOKAmGNvbXBhbnktbW9kZeKA mSBjYW4gYmUgaW5zdGFsbGVkIGZyb20gR05VIEVMUEEuKQoKICAg4oCiIElmIOKAmHlhc25pcHBl dOKAmSwgYSBwb3B1bGFyIHRoaXJkLXBhcnR5IHBhY2thZ2UgZm9yIGF1dG9tYXRpYwogICAgIGlu c2VydGlvbiBvZiBjb2RlIHRlbXBsYXRlcyAoc25pcHBldHMpLCBpcyBpbnN0YWxsZWQsIGFuZCB0 aGUKICAgICBsYW5ndWFnZSBzZXJ2ZXIgc3VwcG9ydHMgc25pcHBldCBjb21wbGV0aW9uIGNhbmRp ZGF0ZXMsIEVnbG90CiAgICAgYXJyYW5nZXMgZm9yIHRoZSBjb21wbGV0aW9uIHBhY2thZ2UgdG8g aW5zdGFudGlhdGUgdGhlc2Ugc25pcHBldHMKICAgICB1c2luZyDigJh5YXNuaXBwZXTigJkuICAo 4oCYeWFzbmlwcGV04oCZIGNhbiBiZSBpbnN0YWxsZWQgZnJvbSBHTlUgRUxQQS4pCgogICDigKIg SWYgdGhlIHBvcHVsYXIgdGhpcmQtcGFydHkgcGFja2FnZSDigJhtYXJrZG93bi1tb2Rl4oCZIGlz IGluc3RhbGxlZCwKICAgICBhbmQgdGhlIHNlcnZlciBwcm92aWRlcyBhdC1wb2ludCBkb2N1bWVu dGF0aW9uIGZvcm1hdHRlZCBhcwogICAgIE1hcmtkb3duIGluIGFkZGl0aW9uIHRvIHBsYWluIHRl eHQsIEVnbG90IGFycmFuZ2VzIGZvciB0aGUgRWxEb2MKICAgICBwYWNrYWdlIHRvIGVucmljaCB0 aGlzIHRleHQgd2l0aCBmb250aWZpY2F0aW9ucyBhbmQgb3RoZXIgbmljZQogICAgIGZvcm1hdHRp bmcgYmVmb3JlIGRpc3BsYXlpbmcgaXQgdG8gdGhlIHVzZXIuICBUaGlzIG1ha2VzIHRoZQogICAg IGRvY3VtZW50YXRpb24gc2hvd24gYnkgRWxEb2MgbG9vayBuaWNlciBvbiBkaXNwbGF5LgoKICAg 4oCiIEluIGFkZGl0aW9uIHRvIGVuYWJsaW5nIGFuZCBlbmhhbmNpbmcgb3RoZXIgZmVhdHVyZXMg YW5kIHBhY2thZ2VzLAogICAgIEVnbG90IGFsc28gcHJvdmlkZXMgYSBudW1iZXIgb2YgdXNlciBj b21tYW5kcyBiYXNlZCBvbiB0aGUKICAgICBjYXBhYmlsaXRpZXMgb2YgbGFuZ3VhZ2Ugc2VydmVy cy4gIEV4YW1wbGVzIGluY2x1ZGUgcmVuYW1pbmcKICAgICBzeW1ib2xzIHdpdGgg4oCYZWdsb3Qt cmVuYW1l4oCZIGFuZCBhc2tpbmcgdG8gYXV0b21hdGljYWxseSBjb3JyZWN0CiAgICAgcHJvYmxl bXMgd2l0aCDigJhlZ2xvdC1jb2RlLWFjdGlvbnPigJkuICAqTm90ZSBFZ2xvdCBDb21tYW5kczo6 LgoKICAgTm90IGFsbCBzZXJ2ZXJzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0IG9mIExTUCBjYXBhYmls aXRpZXMsIGJ1dCBtb3N0IG9mCnRoZW0gc3VwcG9ydCBlbm91Z2ggdG8gZW5hYmxlIHRoZSBiYXNp YyBzZXQgb2YgZmVhdHVyZXMgbWVudGlvbmVkIGFib3ZlLgoKICAgQ29udmVyc2VseSwgc29tZSBz ZXJ2ZXJzIG9mZmVyIGNhcGFiaWxpdGllcyBmb3Igd2hpY2ggbm8gZXF1aXZhbGVudApFbWFjcyBw YWNrYWdlIGV4aXN0cyB5ZXQsIGFuZCBzbyBFZ2xvdCBjYW5ub3QgKHlldCkgZXhwb3NlIHRoZXNl CmNhcGFiaWxpdGllcyB0byBFbWFjcyB1c2Vycy4gIEhvd2V2ZXIsICpOb3RlIEV4dGVuZGluZyBF Z2xvdDo6LgoKICAgRmluYWxseSwgaXQncyB3b3J0aCBub3RpbmcgdGhhdCwgYnkgZGVmYXVsdCwg RWdsb3QgZ2VuZXJhbGx5IHR1cm5zIG9uCmFsbCBmZWF0dXJlcyB0aGF0IGl0IF9jYW5fIHR1cm4g b24uICBJdCdzIHBvc3NpYmxlIHRvIG9wdCBvdXQgb2Ygc29tZQpmZWF0dXJlcyB2aWEgdXNlciBv cHRpb25zICgqbm90ZSBDdXN0b21pemluZyBFZ2xvdDo6KSBhbmQgYSBob29rIHRoYXQKcnVucyBh ZnRlciBFZ2xvdCBzdGFydHMgbWFuYWdpbmcgYSBidWZmZXIgKCpub3RlIEVnbG90IGFuZCBCdWZm ZXJzOjopLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IEVnbG90IGFuZCBCdWZmZXJz LCAgTmV4dDogRWdsb3QgQ29tbWFuZHMsICBQcmV2OiBFZ2xvdCBGZWF0dXJlcywgIFVwOiBVc2lu ZyBFZ2xvdAoKMy4yIEJ1ZmZlcnMsIFByb2plY3RzLCBhbmQgRWdsb3QKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KCk9uZSBvZiB0aGUgbWFpbiBzdHJvbmcgcG9pbnRzIG9mIHVzaW5n IGEgbGFuZ3VhZ2Ugc2VydmVyIGlzIHRoYXQgYQpsYW5ndWFnZSBzZXJ2ZXIgaGFzIGEgYnJvYWQg dmlldyBvZiB0aGUgcHJvZ3JhbTogaXQgY29uc2lkZXJzIG1vcmUgdGhhbgpqdXN0IHRoZSBzaW5n bGUgc291cmNlIGZpbGUgeW91IGFyZSBlZGl0aW5nLiAgSWRlYWxseSwgdGhlIGxhbmd1YWdlCnNl cnZlciBzaG91bGQga25vdyBhYm91dCBhbGwgdGhlIHNvdXJjZSBmaWxlcyBvZiB5b3VyIHByb2dy YW0gd2hpY2ggYXJlCndyaXR0ZW4gaW4gdGhlIGxhbmd1YWdlIHN1cHBvcnRlZCBieSB0aGUgc2Vy dmVyLiAgSW4gdGhlIGxhbmd1YWdlLXNlcnZlcgpwYXJsYW5jZSwgdGhlIHNldCBvZiB0aGUgc291 cmNlIGZpbGVzIG9mIGEgcHJvZ3JhbSBpcyBrbm93biBhcyBhCuKAnHdvcmtzcGFjZeKAnS4gIFRo ZSBFbWFjcyBlcXVpdmFsZW50IG9mIGEgd29ya3NwYWNlIGlzIGEg4oCccHJvamVjdOKAnSAoKm5v dGUKKGVtYWNzKVByb2plY3RzOjopLiAgRWdsb3QgZnVsbHkgc3VwcG9ydHMgRW1hY3MgcHJvamVj dHMsIGFuZCBjb25zaWRlcnMKdGhlIGZpbGUgaW4gd2hvc2UgYnVmZmVyIEVnbG90IGlzIHR1cm5l ZCBvbiBhcyBiZWxvbmdpbmcgdG8gYSBwcm9qZWN0LgpJbiB0aGUgc2ltcGxlc3QgY2FzZSwgdGhh dCBmaWxlIGlzIHRoZSBlbnRpcmUgcHJvamVjdCwgaS5lLiB5b3VyIHByb2plY3QKY29uc2lzdHMg b2YgYSBzaW5nbGUgZmlsZS4gIEJ1dCB0aGVyZSBhcmUgb3RoZXIgbW9yZSBjb21wbGV4IHByb2pl Y3RzOgoKICAg4oCiIEEgc2luZ2xlLWRpcmVjdG9yeSBwcm9qZWN0OiBzZXZlcmFsIHNvdXJjZSBm aWxlcyBpbiBhIHNpbmdsZSBjb21tb24KICAgICBkaXJlY3RvcnkuCgogICDigKIgQSBWQyBwcm9q ZWN0OiBzb3VyY2UgZmlsZXMgaW4gYSBkaXJlY3RvcnkgaGllcmFyY2h5IHVuZGVyIHNvbWUgVkNT LAogICAgIGUuZy4gYSBWQ1MgcmVwb3NpdG9yeSAoKm5vdGUgKGVtYWNzKVZlcnNpb24gQ29udHJv bDo6KS4KCiAgIOKAoiBBbiBFREUgcHJvamVjdDogc291cmNlIGZpbGVzIGluIGEgZGlyZWN0b3J5 IGhpZXJhcmNoeSBtYW5hZ2VkIHZpYQogICAgIHRoZSBFbWFjcyBEZXZlbG9wbWVudCBFbnZpcm9u bWVudCAoKm5vdGUgKGVtYWNzKUVERTo6KS4KCiAgIEVnbG90IHVzZXMgRW1hY3MncyBwcm9qZWN0 IG1hbmFnZW1lbnQgaW5mcmFzdHJ1Y3R1cmUgdG8gZmlndXJlIG91dAp3aGljaCBmaWxlcyBhbmQg YnVmZmVycyBiZWxvbmcgdG8gd2hhdCBwcm9qZWN0LCBzbyBhbnkga2luZCBvZiBwcm9qZWN0CnN1 cHBvcnRlZCBieSB0aGF0IGluZnJhc3RydWN0dXJlIGlzIGF1dG9tYXRpY2FsbHkgc3VwcG9ydGVk IGJ5IEVnbG90LgoKICAgV2hlbiBFZ2xvdCBzdGFydHMgYSBzZXJ2ZXIgcHJvZ3JhbSwgaXQgZG9l cyBzbyBpbiB0aGUgcHJvamVjdCdzIHJvb3QKZGlyZWN0b3J5LCB3aGljaCBpcyB1c3VhbGx5IHRo ZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0J3MKZGlyZWN0b3J5IGhpZXJhcmNo eS4gIFRoaXMgZW5zdXJlcyB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGhhcyB0aGUgc2FtZQpjb21wcmVo ZW5zaXZlIHZpZXcgb2YgdGhlIHByb2plY3QncyBmaWxlcyBhcyB5b3UgZG8uCgogICBGb3IgZXhh bXBsZSwgaWYgeW91IHZpc2l0IHRoZSBmaWxlIOKAmH4vcHJvamVjdHMvZm9vZXkvbGliL3guZm9v 4oCZIGFuZArigJh4LmZvb+KAmSBiZWxvbmdzIHRvIGEgcHJvamVjdCByb290ZWQgYXQg4oCYfi9w cm9qZWN0cy9mb29leeKAmSAocGVyaGFwcwpiZWNhdXNlIGEg4oCYLmdpdOKAmSBkaXJlY3Rvcnkg ZXhpc3RzIHRoZXJlKSwgdGhlbiDigJhNLXggZWdsb3TigJkgY2F1c2VzIHRoZQpzZXJ2ZXIgcHJv Z3JhbSB0byBzdGFydCB3aXRoIHRoYXQgcm9vdCBhcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVj dG9yeS4KVGhlIHNlcnZlciB0aGVuIHdpbGwgYW5hbHl6ZSBub3Qgb25seSB0aGUgZmlsZSDigJhs aWIveC5mb2/igJkgeW91IHZpc2l0ZWQsCmJ1dCBsaWtlbHkgYWxzbyBhbGwgdGhlIG90aGVyIOKA mCouZm9v4oCZIGZpbGVzIHVuZGVyIHRoZSDigJh+L3Byb2plY3RzL2Zvb2V54oCZCmRpcmVjdG9y eS4KCiAgIEluIHNvbWUgY2FzZXMsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8g YSBnaXZlbiBwcm9qZWN0CndpbGwgbmVlZCB0byBiZSBwcm92aWRlZCB0byB0aGUgbGFuZ3VhZ2Ug c2VydmVyIHdoZW4gc3RhcnRpbmcgaXQuICBUaGUKdmFyaWFibGUg4oCYZWdsb3Qtd29ya3NwYWNl LWNvbmZpZ3VyYXRpb27igJkgKCpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjopCmV4aXN0cyBmb3Ig dGhhdCBwdXJwb3NlLiAgSXQgc3BlY2lmaWVzIHRoZSBwYXJhbWV0ZXJzIGFuZCB0aGVpciB2YWx1 ZXMKdG8gY29tbXVuaWNhdGUgdG8gZWFjaCBsYW5ndWFnZSBzZXJ2ZXIgd2hpY2ggbmVlZHMgdGhh dC4KCiAgIFdoZW4gRWdsb3QgaXMgYWN0aXZlIGZvciBhIHByb2plY3QsIGl0IHBlcmZvcm1zIHNl dmVyYWwgYmFja2dyb3VuZAphY3Rpdml0aWVzIG9uIGJlaGFsZiBvZiB0aGUgcHJvamVjdCBhbmQg aXRzIGJ1ZmZlcnM6CgogICDigKIgQWxsIG9mIHRoZSBwcm9qZWN0J3MgZmlsZS12aXNpdGluZyBi dWZmZXJzIHVuZGVyIHRoZSBzYW1lCiAgICAgbWFqb3ItbW9kZSBhcmUgc2VydmVkIGJ5IGEgc2lu Z2xlIGxhbmd1YWdlLXNlcnZlciBjb25uZWN0aW9uLiAgKElmCiAgICAgdGhlIHByb2plY3QgdXNl cyBzZXZlcmFsIHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGhlcmUgd2lsbCB1c3VhbGx5CiAgICAg YmUgYSBzZXBhcmF0ZSBzZXJ2ZXIgY29ubmVjdGlvbiBmb3IgZWFjaCBncm91cCBvZiBmaWxlcyB3 cml0dGVuIGluCiAgICAgdGhlIHNhbWUgbGFuZ3VhZ2UgYW5kIHVzaW5nIHRoZSBzYW1lIEVtYWNz IG1ham9yLW1vZGUuKSAgRWdsb3QgYWRkcwogICAgIHRoZSDigJhbZWdsb3Q6UFJPSkVDVF3igJkg aW5kaWNhdGlvbiB0byB0aGUgbW9kZSBsaW5lIG9mIGVhY2ggc3VjaAogICAgIGJ1ZmZlciwgd2hl cmUgU0VSVkVSIGlzIHRoZSBuYW1lIG9mIHRoZSBzZXJ2ZXIgYW5kIFBST0pFQ1QKICAgICBpZGVu dGlmaWVzIHRoZSBwcm9qZWN0IGJ5IGl0cyByb290IGRpcmVjdG9yeS4gIENsaWNraW5nIHRoZSBt b3VzZQogICAgIG9uIHRoZSBFZ2xvdCBtb2RlLWxpbmUgaW5kaWNhdGlvbiBhY3RpdmF0ZXMgYSBt ZW51IHdpdGgKICAgICBzZXJ2ZXItc3BlY2lmaWMgaXRlbXMuCgogICDigKIgRm9yIGVhY2ggYnVm ZmVyIGluIHdoaWNoIEVnbG90IGlzIGFjdGl2ZSwgaXQgbm90aWZpZXMgdGhlIGxhbmd1YWdlCiAg ICAgc2VydmVyIHRoYXQgRWdsb3QgaXMg4oCcbWFuYWdpbmfigJ0gdGhlIGZpbGUgdmlzaXRlZCBi eSB0aGF0IGJ1ZmZlci4KICAgICBUaGlzIHRlbGxzIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdGhhdCB0 aGUgZmlsZSdzIGNvbnRlbnRzIG9uIGRpc2sgbWF5CiAgICAgbm8gbG9uZ2VyIGJlIHVwLXRvLWRh dGUgZHVlIHRvIHVuc2F2ZWQgZWRpdHMuICBFZ2xvdCByZXBvcnRzIHRvIHRoZQogICAgIHNlcnZl ciBhbnkgY2hhbmdlcyBpbiB0aGUgdGV4dCBvZiBlYWNoIG1hbmFnZWQgYnVmZmVyLCB0byBtYWtl IHRoZQogICAgIHNlcnZlciBhd2FyZSBvZiB1bnNhdmVkIGNoYW5nZXMuICBUaGlzIGluY2x1ZGVz IHlvdXIgZWRpdGluZyBvZiB0aGUKICAgICBidWZmZXIgYW5kIGFsc28gY2hhbmdlcyBkb25lIGF1 dG9tYXRpY2FsbHkgYnkgb3RoZXIgRW1hY3MgZmVhdHVyZXMKICAgICBhbmQgY29tbWFuZHMuICBL aWxsaW5nIGEgYnVmZmVyIHJlbGlucXVpc2hlcyBpdHMgbWFuYWdlbWVudCBieQogICAgIEVnbG90 IGFuZCBub3RpZmllcyB0aGUgc2VydmVyIHRoYXQgdGhlIGZpbGUgb24gZGlzayBpcyB1cC10by1k YXRlLgoKICAg4oCiIEVnbG90IHR1cm5zIG9uIGEgc3BlY2lhbCBtaW5vciBtb2RlIGluIGVhY2gg YnVmZmVyIGl0IG1hbmFnZXMuCiAgICAgVGhpcyBtaW5vciBtb2RlIGVuc3VyZXMgdGhlIHNlcnZl ciBpcyBub3RpZmllZCBhYm91dCBmaWxlcyBFZ2xvdAogICAgIG1hbmFnZXMsIGFuZCBhbHNvIGFy cmFuZ2VzIGZvciBvdGhlciBFbWFjcyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkKICAgICBFZ2xvdCAo Km5vdGUgRWdsb3QgRmVhdHVyZXM6OikgdG8gcmVjZWl2ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQog ICAgIGxhbmd1YWdlIHNlcnZlciwgYnkgY2hhbmdpbmcgdGhlIHNldHRpbmdzIG9mIHRoZXNlIGZl YXR1cmVzLgogICAgIFVubGlrZSBvdGhlciBtaW5vci1tb2RlcywgdGhpcyBzcGVjaWFsIG1pbm9y IG1vZGUgaXMgbm90IGFjdGl2YXRlZAogICAgIG1hbnVhbGx5IGJ5IHRoZSB1c2VyLCBidXQgYXV0 b21hdGljYWxseSwgYXMgdGhlIHJlc3VsdCBvZiBzdGFydGluZwogICAgIGFuIEVnbG90IHNlc3Np b24gZm9yIHRoZSBidWZmZXIuICBIb3dldmVyLCB0aGlzIG1pbm9yIG1vZGUgcHJvdmlkZXMKICAg ICBhIGhvb2sgdmFyaWFibGUg4oCYZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2vigJkgdGhhdCBjYW4g YmUgdXNlZCB0bwogICAgIGN1c3RvbWl6ZSB0aGUgRWdsb3QgbWFuYWdlbWVudCBvZiB0aGUgYnVm ZmVyLiAgVGhpcyBob29rIGlzIHJ1bgogICAgIGJvdGggd2hlbiB0aGUgbWlub3IgbW9kZSBpcyB0 dXJuZWQgb24gYW5kIHdoZW4gaXQncyB0dXJuZWQgb2ZmOyB1c2UKICAgICB0aGUgdmFyaWFibGUg 4oCYZWdsb3QtbWFuYWdlZC1w4oCZIHRvIHRlbGwgaWYgY3VycmVudCBidWZmZXIgaXMgc3RpbGwK ICAgICBiZWluZyBtYW5hZ2VkIG9yIG5vdC4gIFdoZW4gRWdsb3Qgc3RvcHMgbWFuYWdpbmcgdGhl IGJ1ZmZlciwgdGhpcwogICAgIG1pbm9yIG1vZGUgaXMgdHVybmVkIG9mZiwgYW5kIGFsbCB0aGUg c2V0dGluZ3MgdGhhdCBFZ2xvdCBjaGFuZ2VkCiAgICAgYXJlIHJlc3RvcmVkIHRvIHRoZWlyIG9y aWdpbmFsIHZhbHVlcy4KCiAgIOKAoiBXaGVuIHlvdSB2aXNpdCBhIGZpbGUgdW5kZXIgdGhlIHNh bWUgcHJvamVjdCwgd2hldGhlciBhbiBleGlzdGluZwogICAgIG9yIGEgbmV3IGZpbGUsIGl0cyBi dWZmZXIgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgc2V0IG9mCiAgICAgYnVmZmVycyBt YW5hZ2VkIGJ5IEVnbG90LCBhbmQgdGhlIHNlcnZlciB3aGljaCBzdXBwb3J0cyB0aGUKICAgICBi dWZmZXIncyBtYWpvci1tb2RlIGlzIG5vdGlmaWVkIGFib3V0IHRoYXQuICBUaHVzLCB2aXNpdGlu ZyBhCiAgICAgbm9uLWV4aXN0ZW50IGZpbGUg4oCYL2hvbWUvam9lL3Byb2plY3RzL2Zvb2V5L2xp Yi95LmZvb+KAmSBpbiB0aGUgYWJvdmUKICAgICBleGFtcGxlIHdpbGwgbm90aWZ5IHRoZSBzZXJ2 ZXIgb2YgdGhlIOKAmCouZm9v4oCZIGZpbGVzJyBsYW5ndWFnZSB0aGF0CiAgICAgYSBuZXcgZmls ZSB3YXMgYWRkZWQgdG8gdGhlIHByb2plY3QsIGV2ZW4gYmVmb3JlIHRoZSBmaWxlIGFwcGVhcnMK ICAgICBvbiBkaXNrLiAgVGhlIHNwZWNpYWwgRWdsb3QgbWlub3IgbW9kZSBpcyBhbHNvIHR1cm5l ZCBvbgogICAgIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGJ1ZmZlciB2aXNpdGluZyB0aGUgZmlsZS4K Ch8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBFZ2xvdCBDb21tYW5kcywgIE5leHQ6IEVn bG90IFZhcmlhYmxlcywgIFByZXY6IEVnbG90IGFuZCBCdWZmZXJzLCAgVXA6IFVzaW5nIEVnbG90 CgozLjMgRWdsb3QgQ29tbWFuZHMKPT09PT09PT09PT09PT09PT09CgpUaGlzIHNlY3Rpb24gcHJv dmlkZXMgYSByZWZlcmVuY2UgZm9yIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgRWdsb3QKY29tbWFu ZHM6CgrigJhNLXggZWdsb3TigJkKICAgICBUaGlzIGNvbW1hbmQgYWRkcyB0aGUgY3VycmVudCBi dWZmZXIgYW5kIHRoZSBmaWxlIGl0IHZpc2l0cyB0byB0aGUKICAgICBncm91cCBvZiBidWZmZXJz IGFuZCBmaWxlcyBtYW5hZ2VkIGJ5IEVnbG90IG9uIGJlaGFsZiBvZiBhIHN1aXRhYmxlCiAgICAg bGFuZ3VhZ2Ugc2VydmVyLiAgSWYgYSBsYW5ndWFnZSBzZXJ2ZXIgZm9yIHRoZSBidWZmZXIncwog ICAgIOKAmG1ham9yLW1vZGXigJkgKCpub3RlIChlbWFjcylNYWpvciBNb2Rlczo6KSBpcyBub3Qg eWV0IHJ1bm5pbmcsIGl0CiAgICAgd2lsbCBiZSBzdGFydGVkOyBvdGhlcndpc2UgdGhlIGJ1ZmZl ciBhbmQgaXRzIGZpbGUgd2lsbCBiZSBhZGRlZCB0bwogICAgIHRob3NlIG1hbmFnZWQgYnkgYW4g ZXhpc3Rpbmcgc2VydmVyIHNlc3Npb24uCgogICAgIFRoZSBjb21tYW5kIGF0dGVtcHRzIHRvIGZp Z3VyZSBvdXQgdGhlIGJ1ZmZlcidzIG1ham9yIG1vZGUgYW5kIHRoZQogICAgIHN1aXRhYmxlIGxh bmd1YWdlIHNlcnZlcjsgaW4gY2FzZSBpdCBmYWlscywgaXQgbWlnaHQgcHJvbXB0IGZvciB0aGUK ICAgICBtYWpvciBtb2RlIHRvIHVzZSBhbmQgZm9yIHRoZSBzZXJ2ZXIgcHJvZ3JhbSB0byBzdGFy dC4gIElmIGludm9rZWQKICAgICB3aXRoIOKAmEMtdeKAmSwgaXQgYWx3YXlzIHByb21wdHMgZm9y IHRoZSBzZXJ2ZXIgcHJvZ3JhbSwgYW5kIGlmCiAgICAgaW52b2tlZCB3aXRoIOKAmEMtdSBDLXXi gJksIGl0IGFsc28gcHJvbXB0cyBmb3IgdGhlIG1ham9yIG1vZGUuCgogICAgIElmIHRoZSBsYW5n dWFnZSBzZXJ2ZXIgaXMgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgYW5kIGNvbnRhY3RlZCwgdGhpcwog ICAgIGNvbW1hbmQgYXJyYW5nZXMgZm9yIGFueSBvdGhlciBidWZmZXJzIGJlbG9uZ2luZyB0byB0 aGUgc2FtZQogICAgIHByb2plY3QgYW5kIHVzaW5nIHRoZSBzYW1lIG1ham9yIG1vZGUgdG8gdXNl IHRoZSBzYW1lCiAgICAgbGFuZ3VhZ2Utc2VydmVyIHNlc3Npb24uICBUaGF0IGluY2x1ZGVzIGFu eSBidWZmZXJzIGNyZWF0ZWQgYnkKICAgICB2aXNpdGluZyBmaWxlcyBhZnRlciB0aGlzIGNvbW1h bmQgc3VjY2VlZHMgdG8gY29ubmVjdCB0byBhIGxhbmd1YWdlCiAgICAgc2VydmVyLgoKICAgICBB bGwgdGhlIEVtYWNzIGZlYXR1cmVzIHRoYXQgYXJlIGNhcGFibGUgb2YgdXNpbmcgRWdsb3Qgc2Vy dmljZXMKICAgICAoKm5vdGUgRWdsb3QgRmVhdHVyZXM6OikgYXJlIGF1dG9tYXRpY2FsbHkgY29u ZmlndXJlZCBieSB0aGlzCiAgICAgY29tbWFuZCB0byBzdGFydCB1c2luZyB0aGUgbGFuZ3VhZ2Ug c2VydmVyIHZpYSBFZ2xvdC4gIFRvIGN1c3RvbWl6ZQogICAgIHdoaWNoIEVtYWNzIGZlYXR1cmVz IHdpbGwgYmUgY29uZmlndXJlZCB0byB1c2UgRWdsb3QsIHVzZSB0aGUKICAgICDigJhlZ2xvdC1z dGF5LW91dC1vZuKAmSBvcHRpb24gKCpub3RlIEN1c3RvbWl6aW5nIEVnbG90OjopLgoK4oCYTS14 IGVnbG90LXJlY29ubmVjdOKAmQogICAgIFRoaXMgY29tbWFuZCBzaHV0cyBkb3duIHRoZSBjdXJy ZW50IGNvbm5lY3Rpb24gdG8gdGhlIGxhbmd1YWdlCiAgICAgc2VydmVyIGFuZCBpbW1lZGlhdGVs eSByZXN0YXJ0cyBpdCB1c2luZyB0aGUgc2FtZSBvcHRpb25zIHVzZWQKICAgICBvcmlnaW5hbGx5 LiAgVGhpcyBjYW4gc29tZXRpbWVzIGJlIHVzZWZ1bCB0byB1bmNsb2cgYSBwYXJ0aWFsbHkKICAg ICBtYWxmdW5jdGlvbmluZyBzZXJ2ZXIgY29ubmVjdGlvbi4KCuKAmE0teCBlZ2xvdC1zaHV0ZG93 buKAmQogICAgIFRoaXMgY29tbWFuZCBzaHV0cyBkb3duIGEgbGFuZ3VhZ2Ugc2VydmVyLiAgSXQg cHJvbXB0cyBmb3IgYQogICAgIGxhbmd1YWdlIHNlcnZlciB0byBzaHV0IGRvd24gKHVubGVzcyB0 aGVyZSdzIG9ubHkgb25lIHNlcnZlcgogICAgIHNlc3Npb24sIGFuZCBpdCBtYW5hZ2VzIHRoZSBj dXJyZW50IGJ1ZmZlcikuICBUaGVuIHRoZSBjb21tYW5kCiAgICAgc2h1dHMgZG93biB0aGUgc2Vy dmVyIGFuZCBzdG9wcyBtYW5hZ2luZyB0aGUgYnVmZmVycyB0aGUgc2VydmVyIHdhcwogICAgIHVz ZWQgZm9yLiAgRW1hY3MgZmVhdHVyZXMgKCpub3RlIEVnbG90IEZlYXR1cmVzOjopIHRoYXQgRWds b3QKICAgICBjb25maWd1cmVkIHRvIHdvcmsgd2l0aCB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGFyZSBy ZXN0b3JlZCBiYWNrIHRvCiAgICAgdGhlaXIgb3JpZ2luYWwgY29uZmlndXJhdGlvbi4KCiAgICAg Tm9ybWFsbHksIHRoaXMgY29tbWFuZCBraWxscyB0aGUgYnVmZmVycyB1c2VkIGZvciBjb21tdW5p Y2F0aW5nCiAgICAgd2l0aCB0aGUgbGFuZ3VhZ2Ugc2VydmVyLCBidXQgaWYgaW52b2tlZCB3aXRo IGEgcHJlZml4IGFyZ3VtZW50CiAgICAg4oCYQy114oCZLCB0aGUgY29tbWFuZCBkb2Vzbid0IGtp bGwgdGhvc2UgYnVmZmVycywgYWxsb3dpbmcgdGhlbSB0byBiZQogICAgIHVzZWQgZm9yIGRpYWdu b3N0aWNzIGFuZCBwcm9ibGVtIHJlcG9ydGluZyAoKm5vdGUgVHJvdWJsZXNob290aW5nCiAgICAg RWdsb3Q6OikuCgrigJhNLXggZWdsb3Qtc2h1dGRvd24tYWxs4oCZCiAgICAgVGhpcyBjb21tYW5k IHNodXRzIGRvd24gYWxsIHRoZSBsYW5ndWFnZSBzZXJ2ZXJzIGFjdGl2ZSBpbiB0aGUKICAgICBj dXJyZW50IEVtYWNzIHNlc3Npb24uICBBcyB3aXRoIOKAmGVnbG90LXNodXRkb3du4oCZLCBpbnZv a2luZyB0aGlzCiAgICAgY29tbWFuZCB3aXRoIGEgcHJlZml4IGFyZ3VtZW50IGF2b2lkcyBraWxs aW5nIHRoZSBidWZmZXJzIHVzZWQgZm9yCiAgICAgY29tbXVuaWNhdGlvbnMgd2l0aCB0aGUgbGFu Z3VhZ2Ugc2VydmVycy4KCuKAmE0teCBlZ2xvdC1yZW5hbWXigJkKICAgICBUaGlzIGNvbW1hbmQg cmVuYW1lcyB0aGUgcHJvZ3JhbSBzeW1ib2wgKGEuay5hLiDigJxpZGVudGlmaWVy4oCdKSBhdAog ICAgIHBvaW50IHRvIGFub3RoZXIgbmFtZS4gIEl0IHByb21wdHMgZm9yIHRoZSBuZXcgbmFtZSBv ZiB0aGUgc3ltYm9sLAogICAgIGFuZCB0aGVuIG1vZGlmaWVzIGFsbCB0aGUgZmlsZXMgaW4gdGhl IHByb2plY3Qgd2hpY2ggYXJlIG1hbmFnZWQgYnkKICAgICB0aGUgbGFuZ3VhZ2Ugc2VydmVyIG9m IHRoZSBjdXJyZW50IGJ1ZmZlciB0byBpbXBsZW1lbnQgdGhlCiAgICAgcmVuYW1pbmcuCgrigJhN LXggZWdsb3QtZm9ybWF04oCZCiAgICAgVGhpcyBjb21tYW5kIHJlZm9ybWF0cyB0aGUgYWN0aXZl IHJlZ2lvbiBhY2NvcmRpbmcgdG8gdGhlCiAgICAgbGFuZ3VhZ2Utc2VydmVyIHJ1bGVzLiAgSWYg bm8gcmVnaW9uIGlzIGFjdGl2ZSwgaXQgcmVmb3JtYXRzIHRoZQogICAgIGVudGlyZSBjdXJyZW50 IGJ1ZmZlci4KCuKAmE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVy4oCZCiAgICAgVGhpcyBjb21tYW5k IHJlZm9ybWF0cyB0aGUgY3VycmVudCBidWZmZXIsIGluIHRoZSBzYW1lIG1hbm5lciBhcwogICAg IOKAmGVnbG90LWZvcm1hdOKAmSBkb2VzLgoK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uc+KAmQri gJhNLXggZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0c+KAmQrigJhNLXggZWdsb3Qt Y29kZS1hY3Rpb24tcXVpY2tmaXjigJkK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uLWV4dHJhY3Ti gJkK4oCYTS14IGVnbG90LWNvZGUtYWN0aW9uLWlubGluZeKAmQrigJhNLXggZWdsb3QtY29kZS1h Y3Rpb24tcmV3cml0ZeKAmQogICAgIFRoZXNlIGNvbW1hbmRzIGFsbG93IHlvdSB0byBpbnZva2Ug dGhlIHNvLWNhbGxlZCDigJxjb2RlIGFjdGlvbnPigJ06CiAgICAgcmVxdWVzdHMgZm9yIHRoZSBs YW5ndWFnZSBzZXJ2ZXIgdG8gcHJvdmlkZSBlZGl0aW5nIGNvbW1hbmRzIGZvcgogICAgIGNvcnJl Y3RpbmcsIHJlZmFjdG9yaW5nIG9yIGJlYXV0aWZ5aW5nIHlvdXIgY29kZS4gIFRoZXNlIGNvbW1h bmRzCiAgICAgbWF5IGFmZmVjdCBtb3JlIHRoYW4gb25lIHZpc2l0ZWQgZmlsZSBiZWxvbmdpbmcg dG8gdGhlIHByb2plY3QuCgogICAgIFRoZSBjb21tYW5kIOKAmGVnbG90LWNvZGUtYWN0aW9uc+KA mSBhc2tzIHRoZSBzZXJ2ZXIgaWYgdGhlcmUgYXJlIGFueQogICAgIGNvZGUgYWN0aW9ucyBmb3Ig YW55IHBvaW50IGluIHRoZSBidWZmZXIgb3IgY29udGFpbmVkIGluIHRoZSBhY3RpdmUKICAgICBy ZWdpb24uICBJZiB0aGVyZSBhcmUsIHlvdSBoYXZlIHRoZSBjaG9pY2UgdG8gZXhlY3V0ZSBvbmUg b2YgdGhlbQogICAgIHZpYSB0aGUgbWluaWJ1ZmZlci4KCiAgICAgQSBjb21tb24gdXNlIG9mIGNv ZGUgYWN0aW9ucyBpcyBmaXhpbmcgdGhlIEZseW1ha2UgZXJyb3IKICAgICBkaWFnbm9zdGljcyBp c3N1ZWQgYnkgRWdsb3QgKCpub3RlIChmbHltYWtlKVRvcDo6KS4gIENsaWNraW5nIG9uIGEKICAg ICBkaWFnbm9zdGljIHdpdGgg4oCYbW91c2UtMuKAmSBpbnZva2VzIOKAmGVnbG90LWNvZGUtYWN0 aW9ucy1hdC1tb3VzZeKAmQogICAgIHdoaWNoIHBvcHMgdXAgYSBtZW51IG9mIGF2YWlsYWJsZSBj b2RlIGFjdGlvbnMuICBUaGUgdmFyaWFibGUKICAgICDigJhlZ2xvdC1kaWFnbm9zdGljcy1tYXDi gJkgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgbW91c2UgYmluZGluZy4KCiAgICAgT3RoZXIg Y29tbWFuZHMgZXhlY3V0ZSBhIHNwZWNpZmljIGNvZGUgYWN0aW9uLiAgRm9yIGV4YW1wbGUsCiAg ICAg4oCYZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0c+KAmSByZWFycmFuZ2VzIHRo ZSBwcm9ncmFtJ3MKICAgICDigJxpbXBvcnRz4oCdLS1kZWNsYXJhdGlvbnMgb2YgbW9kdWxlcyB3 aG9zZSBjYXBhYmlsaXRpZXMgdGhlIHByb2dyYW0KICAgICB1c2VzLgoK4oCYTS14IGVnbG90LWlu bGF5LWhpbnRzLW1vZGXigJkKICAgICBUaGlzIGNvbW1hbmQgdG9nZ2xlcyBMU1Ag4oCcaW5sYXkg aGludHPigJ0gb24gYW5kIG9mZiBmb3IgdGhlIGN1cnJlbnQKICAgICBidWZmZXIuICBJbmxheSBo aW50cyBhcmUgc21hbGwgdGV4dCBhbm5vdGF0aW9ucyB0byBzcGVjaWZpYyBwYXJ0cwogICAgIG9m IHRoZSB3aG9sZSBidWZmZXIsIG5vdCB1bmxpa2UgZGlhZ25vc3RpY3MsIGJ1dCBkZXNpZ25lZCB0 byBoZWxwCiAgICAgcmVhZGFiaWxpdHkgaW5zdGVhZCBvZiBpbmRpY2F0aW5nIHByb2JsZW1zLiAg Rm9yIGV4YW1wbGUsIGEgQysrCiAgICAgbGFuZ3VhZ2Ugc2VydmVyIGNhbiBzZXJ2ZSBoaW50cyBh Ym91dCBwb3NpdGlvbmFsIHBhcmFtZXRlciBuYW1lcyBpbgogICAgIGZ1bmN0aW9uIGNhbGxzIGFu ZCBhIHZhcmlhYmxlJ3MgYXV0b21hdGljYWxseSBkZWR1Y2VkIHR5cGUuICBJbmxheQogICAgIGhp bnRzIGhlbHAgdGhlIHVzZXIgbm90IGhhdmUgdG8gcmVtZW1iZXIgdGhlc2UgdGhpbmdzIGJ5IGhl YXJ0LgoKICAgVGhlIGZvbGxvd2luZyBFZ2xvdCBjb21tYW5kcyBhcmUgdXNlZCBsZXNzIGNvbW1v bmx5LCBtb3N0bHkgZm9yCmRpYWdub3N0aWMgYW5kIHRyb3VibGVzaG9vdGluZyBwdXJwb3NlczoK CuKAmE0teCBlZ2xvdC1ldmVudHMtYnVmZmVy4oCZCiAgICAgVGhpcyBjb21tYW5kIHBvcHMgdXAg dGhlIGV2ZW50cyBidWZmZXIgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoCiAgICAgdGhlIGxh bmd1YWdlIHNlcnZlciBvZiB0aGUgY3VycmVudCBidWZmZXIuCgrigJhNLXggZWdsb3Qtc3RkZXJy LWJ1ZmZlcuKAmQogICAgIFRoaXMgY29tbWFuZCBwb3BzIHVwIHRoZSBidWZmZXIgd2l0aCB0aGUg ZGVidWcgaW5mbyBwcmludGVkIGJ5IHRoZQogICAgIGxhbmd1YWdlIHNlcnZlciB0byBpdHMgc3Rh bmRhcmQgZXJyb3Igc3RyZWFtLgoK4oCYTS14IGVnbG90LWZvcmdldC1wZW5kaW5nLWNvbnRpbnVh dGlvbnPigJkKICAgICBGb3JnZXQgcGVuZGluZyByZXF1ZXN0cyBmb3IgdGhlIHNlcnZlciBvZiB0 aGUgY3VycmVudCBidWZmZXIuCgrigJhNLXggZWdsb3Qtc2lnbmFsLWRpZENoYW5nZUNvbmZpZ3Vy YXRpb27igJkKICAgICBUaGlzIGNvbW1hbmQgdXBkYXRlcyB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGNv bmZpZ3VyYXRpb24gYWNjb3JkaW5nIHRvCiAgICAgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHZh cmlhYmxlIOKAmGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9u4oCZCiAgICAgKCpub3RlIEN1 c3RvbWl6aW5nIEVnbG90OjopLgoK4oCYTS14IGVnbG90LWNsZWFyLXN0YXR1c+KAmQogICAgIENs ZWFyIHRoZSBsYXN0IEpTT05SUEMgZXJyb3IgZm9yIHRoZSBzZXJ2ZXIgb2YgdGhlIGN1cnJlbnQg YnVmZmVyLgogICAgIEVnbG90IGtlZXBzIHRyYWNrIG9mIGVycm9uZW91cyBzaXR1YXRpb25zIGVu Y291bnRlcmVkIGJ5IHRoZSBzZXJ2ZXIKICAgICBpbiBpdHMgbW9kZS1saW5lIGluZGljYXRpb24g c28gdGhhdCB0aGUgdXNlciBtYXkgaW5zcGVjdCB0aGUKICAgICBjb21tdW5pY2F0aW9uIGxlYWRp bmcgdXAgdG8gaXQgKCpub3RlIFRyb3VibGVzaG9vdGluZyBFZ2xvdDo6KS4gIElmCiAgICAgdGhl IHNpdHVhdGlvbiBpcyBkZWVtZWQgdW5pbnRlcmVzdGluZyBvciB0ZW1wb3JhcnksIHRoaXMgY29t bWFuZAogICAgIGNhbiBiZSB1c2VkIHRvICJmb3JnZXQiIHRoZSBlcnJvci4gIE5vdGUgdGhhdCB0 aGUgY29tbWFuZCDigJhNLXgKICAgICBlZ2xvdC1yZWNvbm5lY3TigJkgY2FuIHNvbWV0aW1lcyBi ZSB1c2VkIHRvIHVuY2xvZyBhIHRlbXBvcmFyaWx5CiAgICAgbWFsZnVuY3Rpb25pbmcgc2VydmVy LgoKICAgQXMgZGVzY3JpYmVkIGluICpub3RlIEVnbG90IEZlYXR1cmVzOjogbW9zdCBmZWF0dXJl cyBhc3NvY2lhdGVkIHdpdGgKRWdsb3QgYXJlIGFjdHVhbGx5IHByb3ZpZGVkIGJ5IG90aGVyIEVt YWNzIHBhY2thZ2VzIGFuZCBmZWF0dXJlcywgYW5kCkVnbG90IG9ubHkgZW5oYW5jZXMgdGhlbSBi eSBhbGxvd2luZyB0aGVtIHRvIHVzZSB0aGUgaW5mb3JtYXRpb24gY29taW5nCmZyb20gdGhlIGxh bmd1YWdlIHNlcnZlcnMuICBGb3IgY29tcGxldGVuZXNzLCBoZXJlJ3MgdGhlIGxpc3Qgb2YKY29t bWFuZHMgb2YgdGhvc2Ugb3RoZXIgcGFja2FnZXMgdGhhdCBhcmUgdmVyeSBjb21tb25seSB1c2Vk IGluCkVnbG90LW1hbmFnZWQgYnVmZmVyczoKCuKAmE0teCBlbGRvY+KAmQogICAgIEFzayB0aGUg RWxEb2Mgc3lzdGVtIGZvciBoZWxwIGF0IHBvaW50LgoK4oCYTS14IGZseW1ha2Utc2hvdy1idWZm ZXItZGlhZ25vc3RpY3PigJkKICAgICBBc2sgRmx5bWFrZSBzeXN0ZW0gdG8gZGlzcGxheSBkaWFn bm9zdGljcyBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLgoK4oCYTS14IGZseW1ha2Utc2hvdy1wcm9q ZWN0LWRpYWdub3N0aWNz4oCZCiAgICAgQXNrIEZseW1ha2UgdG8gbGlzdCBkaWFnbm9zdGljcyBm b3IgYWxsIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudAogICAgIHByb2plY3QuCgrigJhNLXggeHJl Zi1maW5kLWRlZmluaXRpb25z4oCZCiAgICAgQXNrIFhyZWYgdG8gZ28gdGhlIGRlZmluaXRpb24g b2YgdGhlIGlkZW50aWZpZXIgYXQgcG9pbnQuCgrigJhNLXggaW1lbnXigJkKICAgICBMZXQgdGhl IHVzZXIgbmF2aWdhdGUgdGhlIHByb2dyYW0gc291cmNlIGNvZGUgdXNpbmcgYnVmZmVyIGluZGV4 LAogICAgIGNhdGVnb3JpemluZyBwcm9ncmFtIGVsZW1lbnRzIGJ5IHN5bnRhY3RpYyBjbGFzcyAo Y2xhc3MsIG1ldGhvZCwKICAgICB2YXJpYWJsZSwgZXRjLikgIGFuZCBvZmZlcmluZyBjb21wbGV0 aW9uLgoK4oCYTS14IGNvbXBsZXRpb24tYXQtcG9pbnTigJkKICAgICBSZXF1ZXN0IGNvbXBsZXRp b24gb2YgdGhlIHN5bWJvbCBhdCBwb2ludC4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2Rl OiBFZ2xvdCBWYXJpYWJsZXMsICBQcmV2OiBFZ2xvdCBDb21tYW5kcywgIFVwOiBVc2luZyBFZ2xv dAoKMy40IEVnbG90IFZhcmlhYmxlcwo9PT09PT09PT09PT09PT09PT09CgpUaGlzIHNlY3Rpb24g cHJvdmlkZXMgYSByZWZlcmVuY2UgZm9yIHRoZSBFZ2xvdCB1c2VyIG9wdGlvbnMuCgrigJhlZ2xv dC1hdXRvcmVjb25uZWN04oCZCiAgICAgVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIGFiaWxpdHkg dG8gcmVjb25uZWN0IGF1dG9tYXRpY2FsbHkgdG8gdGhlCiAgICAgbGFuZ3VhZ2Ugc2VydmVyIHdo ZW4gRWdsb3QgZGV0ZWN0cyB0aGF0IHRoZSBzZXJ2ZXIgcHJvY2VzcwogICAgIHRlcm1pbmF0ZWQg dW5leHBlY3RlZGx5LiAgVGhlIGRlZmF1bHQgdmFsdWUg4oCYM+KAmSBtZWFucyB0byBhdHRlbXB0 CiAgICAgcmVjb25uZWN0aW9uIG9ubHkgaWYgdGhlIHByZXZpb3VzIHN1Y2Nlc3NmdWwgY29ubmVj dGlvbiBsYXN0ZWQgZm9yCiAgICAgbW9yZSB0aGFuIHRoYXQgbnVtYmVyIG9mIHNlY29uZHM7IGEg ZGlmZmVyZW50IHBvc2l0aXZlIHZhbHVlCiAgICAgY2hhbmdlcyB0aGUgbWluaW1hbCBsZW5ndGgg b2YgdGhlIGNvbm5lY3Rpb24gdG8gdHJpZ2dlcgogICAgIHJlY29ubmVjdGlvbi4gIEEgdmFsdWUg b2Yg4oCYdOKAmSBtZWFucyBhbHdheXMgcmVjb25uZWN0IGF1dG9tYXRpY2FsbHksCiAgICAgYW5k IOKAmG5pbOKAmSBtZWFucyBuZXZlciByZWNvbm5lY3QgKGluIHdoaWNoIGNhc2UgeW91IHdpbGwg bmVlZCB0bwogICAgIHJlY29ubmVjdCBtYW51YWxseSB1c2luZyDigJhNLXggZWdsb3TigJkpLgoK 4oCYZWdsb3QtY29ubmVjdC10aW1lb3V04oCZCiAgICAgVGhpcyBzcGVjaWZpZXMgdGhlIG51bWJl ciBvZiBzZWNvbmRzIGJlZm9yZSBjb25uZWN0aW9uIGF0dGVtcHQgdG8gYQogICAgIGxhbmd1YWdl IHNlcnZlciB0aW1lcyBvdXQuICBUaGUgdmFsdWUgb2Yg4oCYbmls4oCZIG1lYW5zIG5ldmVyIHRp bWUKICAgICBvdXQuICBUaGUgZGVmYXVsdCBpcyAzMCBzZWNvbmRzLgoK4oCYZWdsb3Qtc3luYy1j b25uZWN04oCZCiAgICAgVGhpcyBzZXR0aW5nIGlzIG1haW5seSBpbXBvcnRhbnQgZm9yIGNvbm5l Y3Rpb25zIHdoaWNoIGFyZSBzbG93IHRvCiAgICAgZXN0YWJsaXNoLiAgV2hlcmVhcyB0aGUgdmFy aWFibGUg4oCYZWdsb3QtY29ubmVjdC10aW1lb3V04oCZIGNvbnRyb2xzCiAgICAgaG93IGxvbmcg dG8gd2FpdCBmb3IsIHRoaXMgdmFyaWFibGUgY29udHJvbHMgd2hldGhlciB0byBibG9jawogICAg IEVtYWNzJ3MgdXNlciBpbnRlcmZhY2Ugd2hpbGUgd2FpdGluZy4gIFRoZSBkZWZhdWx0IHZhbHVl IGlzIOKAmDPigJk7IGEKICAgICBwb3NpdGl2ZSB2YWx1ZSBtZWFucyBibG9jayBmb3IgdGhhdCBt YW55IHNlY29uZHMsIHRoZW4gd2FpdCBmb3IgdGhlCiAgICAgY29ubmVjdGlvbiBpbiB0aGUgYmFj a2dyb3VuZC4gIFRoZSB2YWx1ZSBvZiDigJh04oCZIG1lYW5zIGJsb2NrIGR1cmluZwogICAgIHRo ZSB3aG9sZSB3YWl0aW5nIHBlcmlvZC4gIFRoZSB2YWx1ZSBvZiDigJhuaWzigJkgb3Ig4oCYMOKA mSBtZWFucyBkb24ndAogICAgIGJsb2NrIGF0IGFsbCBkdXJpbmcgdGhlIHdhaXRpbmcgcGVyaW9k LgoK4oCYZWdsb3QtZXZlbnRzLWJ1ZmZlci1jb25maWfigJkKICAgICBUaGlzIGNvbmZpZ3VyZXMg dGhlIHNpemUgYW5kIGZvcm1hdCBvZiB0aGUgRWdsb3QgZXZlbnRzIGJ1ZmZlci4KICAgICAqTm90 ZSBlZ2xvdC1ldmVudHMtYnVmZmVyOiBFZ2xvdCBDb21tYW5kcywgZm9yIGhvdyB0byBhY2Nlc3Mg dGhhdAogICAgIGJ1ZmZlci4gIElmIHRoZSB2YWx1ZSBpcyBjaGFuZ2VkLCB0aGUgY29ubmVjdGlv biBzaG91bGQgYmUKICAgICByZXN0YXJ0ZWQgdXNpbmcg4oCYTS14IGVnbG90LXJlY29ubmVjdOKA mSBmb3IgdGhlIG5ldyB2YWx1ZSB0byB0YWtlCiAgICAgZWZmZWN0LiAgKk5vdGUgVHJvdWJsZXNo b290aW5nIEVnbG90OjosIGZvciB3aGVuIHRoaXMgY291bGQgYmUKICAgICB1c2VmdWwuCgrigJhl Z2xvdC1hdXRvc2h1dGRvd27igJkKICAgICBJZiB0aGlzIGlzIG5vbi3igJhuaWzigJksIEVnbG90 IHNodXRzIGRvd24gYSBsYW5ndWFnZSBzZXJ2ZXIgd2hlbiB0aGUKICAgICBsYXN0IGJ1ZmZlciBt YW5hZ2VkIGJ5IGl0IGlzIGtpbGxlZC4gICpOb3RlIFNodXR0aW5nIERvd24gTFNQCiAgICAgU2Vy dmVyczo6LiAgVGhlIGRlZmF1bHQgaXMg4oCYbmls4oCZOyBpZiB5b3Ugd2FudCB0byBzaHV0IGRv d24gYQogICAgIHNlcnZlciwgdXNlIOKAmE0teCBlZ2xvdC1zaHV0ZG93buKAmSAoKm5vdGUgRWds b3QgQ29tbWFuZHM6OikuCgrigJhlZ2xvdC1jb25maXJtLXNlcnZlci1lZGl0c+KAmQogICAgIFZh cmlvdXMgRWdsb3QgY29tbWFuZHMgYW5kIGNvZGUgYWN0aW9ucyByZXN1bHQgaW4gdGhlIGxhbmd1 YWdlCiAgICAgc2VydmVyIHNlbmRpbmcgZWRpdGluZyBjb21tYW5kcyB0byBFbWFjcy4gIElmIHRo aXMgb3B0aW9uJ3MgdmFsdWUKICAgICBpcyBub24t4oCYbmls4oCZLCBFZ2xvdCB3aWxsIGFzayBm b3IgY29uZmlybWF0aW9uIGJlZm9yZSBwZXJmb3JtaW5nCiAgICAgZWRpdHMgcHJvcG9zZWQgYnkg dGhlIGxhbmd1YWdlIHNlcnZlci4gIFRoaXMgb3B0aW9uJ3MgdmFsdWUgY2FuIGJlCiAgICAgY3Jh ZnRlZCB0byByZXF1aXJlIHRoaXMgY29uZmlybWF0aW9uIGZvciBzcGVjaWZpYyBjb21tYW5kcyBv ciBvbmx5CiAgICAgd2hlbiB0aGUgZWRpdCBhZmZlY3RzIGZpbGVzIG5vdCB5ZXQgdmlzaXRlZCBi eSB0aGUgdXNlci4gIENvbnN1bHQKICAgICB0aGlzIG9wdGlvbidzIGRvY3N0cmluZyBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4KCuKAmGVnbG90LWlnbm9yZWQtc2VydmVyLWNhcGFiaWxpdGllc+KAmQog ICAgIFRoaXMgdmFyaWFibGUncyB2YWx1ZSBpcyBhIGxpc3Qgb2YgbGFuZ3VhZ2Ugc2VydmVyIGNh cGFiaWxpdGllcwogICAgIHRoYXQgRWdsb3Qgc2hvdWxkIG5vdCB1c2UuICBUaGUgZGVmYXVsdCBp cyDigJhuaWzigJk6IEVnbG90IHVzZXMgYWxsIG9mCiAgICAgdGhlIGNhcGFiaWxpdGllcyBzdXBw b3J0ZWQgYnkgZWFjaCBzZXJ2ZXIuCgrigJhlZ2xvdC1leHRlbmQtdG8teHJlZuKAmQogICAgIElm IHRoaXMgaXMgbm9uLeKAmG5pbOKAmSwgYW5kIOKAmE0tLuKAmSAo4oCYeHJlZi1maW5kLWRlZmlu aXRpb25z4oCZKSBsYW5kcyB5b3UKICAgICBpbiBhIGZpbGUgb3V0c2lkZSBvZiB5b3VyIHByb2pl Y3QsIHN1Y2ggYXMgYSBzeXN0ZW0taW5zdGFsbGVkCiAgICAgbGlicmFyeSBvciBoZWFkZXIgZmls ZSwgdHJhbnNpZW50bHkgY29uc2lkZXIgdGhhdCBmaWxlIGFzIG1hbmFnZWQKICAgICBieSB0aGUg c2FtZSBsYW5ndWFnZSBzZXJ2ZXIuICBUaGF0IGZpbGUgaXMgc3RpbGwgb3V0c2lkZSB5b3VyCiAg ICAgcHJvamVjdCAoaS5lLiAg4oCYcHJvamVjdC1maW5kLWZpbGXigJkgd29uJ3QgZmluZCBpdCks IGJ1dCBFZ2xvdCBhbmQKICAgICB0aGUgc2VydmVyIHdpbGwgY29uc2lkZXIgaXQgdG8gYmUgcGFy dCBvZiB0aGUgd29ya3NwYWNlLiAgVGhlCiAgICAgZGVmYXVsdCBpcyDigJhuaWzigJkuCgrigJhl Z2xvdC1tb2RlLW1hcOKAmQogICAgIFRoaXMgdmFyaWFibGUgaXMgdGhlIGtleW1hcCBmb3IgYmlu ZGluZyBFZ2xvdC1yZWxhdGVkIGNvbW1hbmQuICBJdAogICAgIGlzIGluIGVmZmVjdCBvbmx5IGFz IGxvbmcgYXMgdGhlIGJ1ZmZlciBpcyBtYW5hZ2VkIGJ5IEVnbG90LiAgQnkKICAgICBkZWZhdWx0 LCBpdCBpcyBlbXB0eSwgd2l0aCB0aGUgc2luZ2xlIGV4Y2VwdGlvbjog4oCYQy1oIC7igJkgaXMK ICAgICByZW1hcHBlZCB0byBpbnZva2Ug4oCYZWxkb2MtZG9jLWJ1ZmZlcuKAmS4gIFlvdSBjYW4g YmluZCBhZGRpdGlvbmFsCiAgICAgY29tbWFuZHMgaW4gdGhpcyBtYXAuICBGb3IgZXhhbXBsZToK CiAgICAgICAgICAgIChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIkMtYyByIikgJ2Vn bG90LXJlbmFtZSkKICAgICAgICAgICAgKGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAi Qy1jIG8iKSAnZWdsb3QtY29kZS1hY3Rpb24tb3JnYW5pemUtaW1wb3J0cykKICAgICAgICAgICAg KGRlZmluZS1rZXkgZWdsb3QtbW9kZS1tYXAgKGtiZCAiQy1jIGgiKSAnZWxkb2MpCiAgICAgICAg ICAgIChkZWZpbmUta2V5IGVnbG90LW1vZGUtbWFwIChrYmQgIjxmNj4iKSAneHJlZi1maW5kLWRl ZmluaXRpb25zKQoKICAgQWRkaXRpb25hbCB2YXJpYWJsZXMsIHdoaWNoIGFyZSByZWxldmFudCBm b3IgY3VzdG9taXppbmcgdGhlIHNlcnZlcgpjb25uZWN0aW9ucywgYXJlIGRvY3VtZW50ZWQgaW4g Km5vdGUgQ3VzdG9taXppbmcgRWdsb3Q6Oi4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2Rl OiBDdXN0b21pemluZyBFZ2xvdCwgIE5leHQ6IEFkdmFuY2VkIHNlcnZlciBjb25maWd1cmF0aW9u LCAgUHJldjogVXNpbmcgRWdsb3QsICBVcDogVG9wCgo0IEN1c3RvbWl6aW5nIEVnbG90CioqKioq KioqKioqKioqKioqKioKCkVnbG90IGl0c2VsZiBoYXMgYSByZWxhdGl2ZWx5IHNtYWxsIG51bWJl ciBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMuICBBCmxhcmdlIHBhcnQgb2YgY3VzdG9taXppbmcg RWdsb3QgdG8geW91ciBuZWVkcyBhbmQgcHJlZmVyZW5jZXMgc2hvdWxkCmFjdHVhbGx5IGJlIGRv bmUgdmlhIG9wdGlvbnMgb2YgdGhlIEVtYWNzIHBhY2thZ2VzIGFuZCBmZWF0dXJlcyB3aGljaApF Z2xvdCBzdXBwb3J0cyBhbmQgZW5oYW5jZXMgKCpub3RlIEVnbG90IEZlYXR1cmVzOjopLiAgRm9y IGV4YW1wbGU6CgogICDigKIgVG8gY29uZmlndXJlIHRoZSBmYWNlIHVzZWQgZm9yIHNlcnZlci1k ZXJpdmVkIGVycm9ycyBhbmQgd2FybmluZ3MsCiAgICAgY3VzdG9taXplIHRoZSBGbHltYWtlIGZh Y2VzIOKAmGZseW1ha2UtZXJyb3LigJkgYW5kIOKAmGZseW1ha2Utd2FybmluZ+KAmS4KCiAgIOKA oiBUbyBjb25maWd1cmUgdGhlIGFtb3VudCBvZiBzcGFjZSB0YWtlbiB1cCBieSBkb2N1bWVudGF0 aW9uIGluIHRoZQogICAgIGVjaG8gYXJlYSwgY3VzdG9taXplIHRoZSBFbERvYyB2YXJpYWJsZQog ICAgIOKAmGVsZG9jLWVjaG8tYXJlYS11c2UtbXVsdGlsaW5lLXDigJkuCgogICDigKIgVG8gY29t cGxldGVseSBjaGFuZ2UgaG93IEVsRG9jIGRpc3BsYXlzIHRoZSBhdC1wb2ludCBkb2N1bWVudGF0 aW9uCiAgICAgZGVzdGluYXRpb24sIGN1c3RvbWl6ZSB0aGUgRWxEb2MgdmFyaWFibGUKICAgICDi gJhlbGRvYy1kaXNwbGF5LWZ1bmN0aW9uc+KAmS4KCiAgIEZvciB0aGlzIHJlYXNvbiwgdGhpcyBt YW51YWwgZGVzY3JpYmVzIG9ubHkgaG93IHRvIGN1c3RvbWl6ZSBFZ2xvdCdzCm93biBvcGVyYXRp b24sIHdoaWNoIG1haW5seSBoYXMgdG8gZG8gd2l0aCB0aGUgc2VydmVyIGNvbm5lY3Rpb25zIGFu ZAp0aGUgc2VydmVyIGZlYXR1cmVzIHRvIGJlIHVzZWQgYnkgRWdsb3QuCgrigJhlZ2xvdC1zZXJ2 ZXItcHJvZ3JhbXPigJkKICAgICBUaGlzIHZhcmlhYmxlIGRldGVybWluZXMgd2hpY2ggbGFuZ3Vh Z2Ugc2VydmVyIHRvIHN0YXJ0IGZvciBlYWNoCiAgICAgc3VwcG9ydGVkIG1ham9yIG1vZGUsIGFu ZCBob3cgdG8gaW52b2tlIHRoYXQgc2VydmVyJ3MgcHJvZ3JhbS4KICAgICAqTm90ZSBTZXR0aW5n IFVwIExTUCBTZXJ2ZXJzOjosIGZvciB0aGUgZGV0YWlscy4KCuKAmGVnbG90LXN0cmljdC1tb2Rl 4oCZCiAgICAgVGhpcyBpcyDigJhuaWzigJkgYnkgZGVmYXVsdCwgbWVhbmluZyB0aGF0IEVnbG90 IGlzIGdlbmVyYWxseSBsZW5pZW50CiAgICAgYWJvdXQgbm9uLWNvbmZvcm1pbmcgc2VydmVycy4g IElmIHlvdSBuZWVkIHRvIGRlYnVnIGEgc2VydmVyLCBzZXQKICAgICB0aGlzIHRvIOKAmChkaXNh bGxvdy1ub24tc3RhbmRhcmQta2V5cyBlbmZvcmNlLXJlcXVpcmVkLWtleXMp4oCZLgoK4oCYZWds b3Qtc2VydmVyLWluaXRpYWxpemVkLWhvb2vigJkKICAgICBBIGhvb2sgcnVuIGFmdGVyIHRoZSBz ZXJ2ZXIgb2JqZWN0IGlzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KCuKAmGVnbG90LWNvbm5l Y3QtaG9va+KAmQogICAgIEEgaG9vayBydW4gYWZ0ZXIgY29ubmVjdGlvbiB0byB0aGUgc2VydmVy IGlzIHN1Y2Nlc3NmdWxseQogICAgIGVzdGFibGlzaGVkLiAgKk5vdGUgU3RhcnRpbmcgRWdsb3Q6 Oi4KCuKAmGVnbG90LW1hbmFnZWQtbW9kZS1ob29r4oCZCiAgICAgQSBob29rIHJ1biBhZnRlciBF Z2xvdCBzdGFydGVkIG9yIHN0b3BwZWQgbWFuYWdpbmcgYSBidWZmZXIuICAqTm90ZQogICAgIEVn bG90IGFuZCBCdWZmZXJzOjosIGZvciBkZXRhaWxzIG9mIGl0cyB1c2FnZS4KCuKAmGVnbG90LXN0 YXktb3V0LW9m4oCZCiAgICAgVGhpcyB2YXJpYWJsZSdzIHZhbHVlIGxpc3RzIEVtYWNzIGZlYXR1 cmVzIHRoYXQgRWdsb3Qgc2hvdWxkbid0CiAgICAgYXV0b21hdGljYWxseSB0cnkgdG8gbWFuYWdl IG9uIHRoZSB1c2VyJ3MgYmVoYWxmLiAgSXQgaXMgdXNlZnVsLAogICAgIGZvciBleGFtcGxlLCB3 aGVuIHlvdSBuZWVkIHRvIHVzZSBub24tTFNQIEZseW1ha2Ugb3IgQ29tcGFueQogICAgIGJhY2st ZW5kcy4gIFRvIGhhdmUgRWdsb3Qgc3RheSBhd2F5IGZyb20gc29tZSBFbWFjcyBmZWF0dXJlLCBh ZGQKICAgICB0aGF0IGZlYXR1cmUncyBzeW1ib2wgb3IgYSByZWdleHAgdGhhdCB3aWxsIG1hdGNo IGEgc3ltYm9sJ3MgbmFtZQogICAgIHRvIHRoZSBsaXN0OiBmb3IgZXhhbXBsZSwgdGhlIHN5bWJv bCDigJh4cmVm4oCZIHRvIGxlYXZlIFhyZWYgYWxvbmUsIG9yCiAgICAgdGhlIHN0cmluZyDigJhj b21wYW554oCZIHRvIHN0YXkgYXdheSBmcm9tIHlvdXIgQ29tcGFueSBjdXN0b21pemF0aW9ucy4K ICAgICBIZXJlJ3MgYW4gZXhhbXBsZToKCiAgICAgICAgICAoYWRkLXRvLWxpc3QgJ2VnbG90LXN0 YXktb3V0LW9mICdmbHltYWtlKQoKICAgICBOb3RlIHRoYXQgeW91IGNhbiBzdGlsbCBjb25maWd1 cmUgdGhlIGV4Y2x1ZGVkIEVtYWNzIGZlYXR1cmVzCiAgICAgbWFudWFsbHkgdG8gdXNlIEVnbG90 IGluIHlvdXIg4oCYZWdsb3QtbWFuYWdlZC1tb2RlLWhvb2vigJkgb3IgdmlhIHNvbWUKICAgICBv dGhlciBtZWNoYW5pc20uCgrigJhlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3PigJkKICAgICBTZXQgdGhp cyB2YXJpYWJsZSB0byB0cnVlIGlmIHlvdSdkIGxpa2UgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9ucwog ICAgIGNvbWluZyBmcm9tIHRoZSBsYW5ndWFnZSBzZXJ2ZXIgdG8gYmUgaGFuZGxlZCBhcyBFbWFj cydzIHByb2dyZXNzCiAgICAgcmVwb3J0aW5nIGZhY2lsaXRpZXMuCgofCkZpbGU6IGRvY3VvWEVO VS5pbmZvLCAgTm9kZTogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24sICBOZXh0OiBFeHRl bmRpbmcgRWdsb3QsICBQcmV2OiBDdXN0b21pemluZyBFZ2xvdCwgIFVwOiBUb3AKCjUgQWR2YW5j ZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoK VGhvdWdoIG1hbnkgbGFuZ3VhZ2Ugc2VydmVycyB3b3JrIHdlbGwgb3V0LW9mLXRoZS1ib3gsIG1v c3QgYWxsb3cKZmluZS1ncmFpbmVkIGNvbnRyb2wgb2YgdGhlaXIgb3BlcmF0aW9uIHZpYSBzcGVj aWZpYyBjb25maWd1cmF0aW9uCm9wdGlvbnMgdGhhdCBhcmUgdHJhbnNtaXR0ZWQgb3ZlciB0aGUg TFNQIHByb3RvY29sIGFuZCB2YXJ5IGZyb20gc2VydmVyCnRvIHNlcnZlci4gIEEgc21hbGwgbnVt YmVyIG9mIHNlcnZlcnMgcmVxdWlyZSBzdWNoIHNwZWNpYWwgY29uZmlndXJhdGlvbgp0byB3b3Jr IGFjY2VwdGFibHksIG9yIGV2ZW4gdG8gd29yayBhdCBhbGwuCgogICBBZnRlciBoYXZpbmcgc2V0 dXAgYSBzZXJ2ZXIgZXhlY3V0YWJsZSBwcm9ncmFtIGluCuKAmGVnbG90LXNlcnZlci1wcm9ncmFt c+KAmSAoKm5vdGUgU2V0dGluZyBVcCBMU1AgU2VydmVyczo6KSBhbmQgZW5zdXJpbmcKRWdsb3Qg Y2FuIGludm9rZSBpdCwgeW91IG1heSB3YW50IHRvIHRha2UgYWR2YW50YWdlIG9mIHNvbWUgb2Yg dGhlc2UKb3B0aW9ucy4gIFlvdSBzaG91bGQgZmlyc3QgZGlzdGluZ3Vpc2ggdHdvIG1haW4ga2lu ZHMgb2Ygc2VydmVyCmNvbmZpZ3VyYXRpb246CgogICDigKIgUHJvamVjdC1zcGVjaWZpYywgYXBw bHlpbmcgdG8gYSBzcGVjaWZpYyBwcm9qZWN0OwoKICAg4oCiIFVzZXItc3BlY2lmaWMsIGFwcGx5 aW5nIHRvIGFsbCBwcm9qZWN0cyB0aGUgc2VydmVyIGlzIHVzZWQgZm9yLgoKICAgV2hlbiB5b3Ug aGF2ZSBkZWNpZGVkIHdoaWNoIGtpbmQgeW91IG5lZWQsIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMK dGVhY2ggaG93IEVnbG90J3MgdXNlciB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSBp dDoKCiogTWVudToKCiogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uOjoKKiBVc2VyLXNw ZWNpZmljIGNvbmZpZ3VyYXRpb246OgoqIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6CgogICBJ dCdzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbm90IGFsbCBzZXJ2ZXJzIGFsbG93IGJvdGgga2lu ZHMgb2YKY29uZmlndXJhdGlvbiwgbm9yIGlzIGl0IGd1YXJhbnRlZWQgdGhhdCB1c2VyIG9wdGlv bnMgY2FuIGJlIGNvcGllZCBvdmVyCnRvIHByb2plY3Qgb3B0aW9ucywgYW5kIHZpY2UtdmVyc2Eu ICBXaGVuIGluIGRvdWJ0LCBjb25zdWx0IHlvdXIKbGFuZ3VhZ2Ugc2VydmVyJ3MgZG9jdW1lbnRh dGlvbi4KCiAgIEl0J3MgYWxzbyB3b3J0aCBub3RpbmcgdGhhdCBzb21lIGxhbmd1YWdlIHNlcnZl cnMgY2FuIHJlYWQgdGhlc2UKc2V0dGluZ3MgZnJvbSBjb25maWd1cmF0aW9uIGZpbGVzIGluIHRo ZSB1c2VyJ3Mg4oCYSE9NReKAmSBkaXJlY3Rvcnkgb3IgaW4gYQpwcm9qZWN0J3MgZGlyZWN0b3J5 LiAgRm9yIGV4YW1wbGUsIHRoZSDigJhweWxzcOKAmSBQeXRob24gc2VydmVyIHJlYWRzIHRoZQpm aWxlIOKAmH4vLmNvbmZpZy9weWNvZGVzdHlsZeKAmSBmb3IgdXNlciBjb25maWd1cmF0aW9uLiAg VGhlIOKAmGNsYW5nZOKAmSBDL0MrKwpzZXJ2ZXIgcmVhZHMgYm90aCDigJh+Ly5jb25maWcvY2xh bmdkL2NvbmZpZy55YW1s4oCZIGZvciB1c2VyIGNvbmZpZ3VyYXRpb24KYW5kIOKAmC5jbGFuZ2Ti gJkgZm9yIHByb2plY3QgY29uZmlndXJhdGlvbi4gIEl0IG1heSBiZSBhZHZhbnRhZ2VvdXMgdG8g dXNlCnRoZXNlIG1lY2hhbmlzbXMgaW5zdGVhZCBvZiBFZ2xvdCdzLCBhcyB0aGlzIHdpbGwgcHJv YmFibHkgd29yayB3aXRoCm90aGVyIExTUCBjbGllbnRzIGFuZCBtYXkgYmUgZWFzaWVyIHRvIGRl YnVnIHRoYW4gb3B0aW9ucyByaWRpbmcgb24gdGhlCkxTUCB3aXJlLgoKHwpGaWxlOiBkb2N1b1hF TlUuaW5mbywgIE5vZGU6IFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIE5leHQ6IFVz ZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIFVwOiBBZHZhbmNlZCBzZXJ2ZXIgY29uZmlndXJh dGlvbgoKNS4xIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CgpUbyBzZXQgcHJvamVjdC1zcGVjaWZpYyBzZXR0aW5ncywgd2hp Y2ggdGhlIExTUCBzcGVjaWZpY2F0aW9uIGNhbGxzCuKAnHdvcmtzcGFjZSBjb25maWd1cmF0aW9u 4oCdLCB0aGUgdmFyaWFibGUg4oCYZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb27igJkKbWF5 IGJlIHVzZWQuCgogICBUaGlzIHZhcmlhYmxlIGlzIGEgZGlyZWN0b3J5LWxvY2FsIHZhcmlhYmxl ICgqbm90ZSBQZXItZGlyZWN0b3J5CkxvY2FsIFZhcmlhYmxlczogKGVtYWNzKURpcmVjdG9yeSBW YXJpYWJsZXMuKS4gIEl0J3MgaW1wb3J0YW50IHRvCnJlY29nbml6ZSB0aGF0IHRoaXMgdmFyaWFi bGUgcmVhbGx5IG9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiBzZXQKZGlyZWN0b3J5LWxvY2FsbHkuICBJ dCB1c3VhbGx5IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gc2V0IGl0CmZpbGUtbG9jYWxseSBvciBp biBhIG1ham9yLW1vZGUgaG9vay4KCiAgIFRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc2V0IOKAmGVn bG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uIOKAmSBpcyB1c2luZwphIOKAmC5kaXItbG9jYWxz LmVs4oCZIGZpbGUgaW4gdGhlIHJvb3Qgb2YgeW91ciBwcm9qZWN0LiAgSWYgeW91IGNhbid0IGRv CnRoYXQsIHlvdSBtYXkgYWxzbyBzZXQgaXQgZnJvbSBFbGlzcCBjb2RlIHZpYSB0aGUK4oCYZGly LWxvY2Fscy1zZXQtY2xhc3MtdmFyaWFibGVz4oCZIGZ1bmN0aW9uLiAgKCpub3RlIChlbGlzcClE aXJlY3RvcnkKTG9jYWwgVmFyaWFibGVzOjopLgoKICAgSG93ZXZlciB5b3UgY2hvb3NlIHRvIHNl dCBpdCwgdGhlIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYSBwbGlzdCAoKm5vdGUKKGVsaXNwKVByb3Bl cnR5IExpc3RzOjopIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtYXQ6CgogICAgICAoOlNFUlZFUjEg UExJU1QxIDpTRVJWRVIyIFBMSVNUMiAuLi4pCgpIZXJlLCA6U0VSVkVSMSBhbmQgOlNFUlZFUjIg YXJlIGtleXdvcmRzIHdob3NlIG5hbWVzIGlkZW50aWZ5IHRoZSBMU1AKbGFuZ3VhZ2Ugc2VydmVy cyB0byB0YXJnZXQuICBDb25zdWx0IHNlcnZlciBkb2N1bWVudGF0aW9uIHRvIGZpbmQgb3V0Cndo YXQgbmFtZSB0byB1c2UuICBQTElTVDEgYW5kIFBMSVNUMiBhcmUgcGxpc3RzIG9mIG9wdGlvbnMs IHBvc3NpYmx5Cm5lc3Rpbmcgb3RoZXIgcGxpc3RzLgoKICAgV2hlbiBleHBlcmltZW50aW5nIHdp dGggd29ya3NwYWNlIHNldHRpbmdzLCB5b3UgY2FuIHVzZSB0aGUgY29tbWFuZArigJhNLXggZWds b3Qtc2hvdy13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSB0byBpbnNwZWN0IGFuZCBkZWJ1ZyB0 aGUgdmFsdWUKb2YgdGhpcyB2YXJpYWJsZSBpbiBpdHMgZmluYWwgSlNPTiBmb3JtLCByZWFkeSB0 byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIKKCpub3RlIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6 KS4gIFRoaXMgaGVscGVyIGNvbW1hbmQgd29ya3MgZXZlbgpiZWZvcmUgYWN0dWFsbHkgY29ubmVj dGluZyB0byB0aGUgc2VydmVyLgoKICAgVGhlc2UgdmFyaWFibGUncyB2YWx1ZSBkb2Vzbid0IHRh a2UgZWZmZWN0IGltbWVkaWF0ZWx5LiAgVGhhdCBoYXBwZW5zCnVwb24gZXN0YWJsaXNoaW5nIHRo ZSBjb25uZWN0aW9uLCBpbiByZXNwb25zZSB0byBhbiBleHBsaWNpdCBxdWVyeSBmcm9tCnRoZSBz ZXJ2ZXIsIG9yIHdoZW4gaXNzdWluZyB0aGUgY29tbWFuZCDigJhNLXgKZWdsb3Qtc2lnbmFsLWRp ZENoYW5nZUNvbmZpZ3VyYXRpb27igJkgd2hpY2ggbm90aWZpZXMgdGhlIHNlcnZlciBkdXJpbmcg YW4Kb25nb2luZyBFZ2xvdCBzZXNzaW9uLgoKNS4xLjEgRXhhbXBsZXMKLS0tLS0tLS0tLS0tLS0K CkZvciBzb21lIHVzZXJzLCBzZXR0aW5nIOKAmGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9u 4oCZIGlzIGEgc29tZXdoYXQKZGF1bnRpbmcgdGFzay4gIE9uZSBvZiB0aGUgcmVhc29ucyBpcyBo YXZpbmcgdG8gbWFuYWdlIHRoZSBnZW5lcmFsIEVsaXNwCnN5bnRheCBvZiBwZXItbW9kZSBkaXJl Y3RvcnktbG9jYWwgdmFyaWFibGVzLCB3aGljaCB1c2VzIGFsaXN0cyAoKm5vdGUKKGVsaXNwKUFz c29jaWF0aW9uIExpc3RzOjopLCBhbmQgdGhlIHNwZWNpZmljIHN5bnRheCBvZiBFZ2xvdCdzCnZh cmlhYmxlLCB3aGljaCB1c2VzIHBsaXN0cy4gIFNvbWUgZXhhbXBsZXMgYXJlIHVzZWZ1bC4KCiAg IExldCdzIHNheSB5b3Ugd2FudCB0byBjb25maWd1cmUgdHdvIGxhbmd1YWdlIHNlcnZlcnMgdG8g YmUgdXNlZCBpbiBhCnByb2plY3Qgd3JpdHRlbiBpbiBhIGNvbWJpbmF0aW9uIG9mIHRoZSBQeXRo b24gYW5kIEdvIGxhbmd1YWdlcy4gIFlvdQp3YW50IHRvIHVzZSB0aGUg4oCYcHlsc3DigJkgYW5k IOKAmGdvcGxz4oCZIGxhbmd1YWdlcyBzZXJ2ZXJzLiAgSW4gdGhlCmRvY3VtZW50YXRpb24gb2Yg dGhlIHNlcnZlcnMgaW4gcXVlc3Rpb24gKG9yIGluIHNvbWUgb3RoZXIgZWRpdG9yJ3MKY29uZmln dXJhdGlvbiBmaWxlLCBvciBpbiBzb21lIGJsb2cgYXJ0aWNsZSksIHlvdSBmaW5kIHRoZSBmb2xs b3dpbmcKY29uZmlndXJhdGlvbiBvcHRpb25zIGluIGluZm9ybWFsIGRvdHRlZC1ub3RhdGlvbiBz eW50YXg6CgogICAgIHB5bHNwLnBsdWdpbnMuamVkaV9jb21wbGV0aW9uLmluY2x1ZGVfcGFyYW1z OiB0cnVlCiAgICAgcHlsc3AucGx1Z2lucy5qZWRpX2NvbXBsZXRpb24uZnV6enk6IHRydWUKICAg ICBweWxzcC5weWxpbnQuZW5hYmxlZDogZmFsc2UKICAgICBnb3Bscy51c2VQbGFjZWhvbGRlcnM6 IHRydWUKCiAgIFRvIGFwcGx5IHRoaXMgdG8gRWdsb3QsIGFuZCBhc3N1bWluZyB5b3UgY2hvc2Ug dGhlIOKAmC5kaXItbG9jYWxzLmVs4oCZCmZpbGUgbWV0aG9kLCB0aGUgY29udGVudHMgb2YgdGhh dCBmaWxlIGNvdWxkIGJlOgoKICAgICAoKG5pbAogICAgICAgLiAoKGVnbG90LXdvcmtzcGFjZS1j b25maWd1cmF0aW9uCiAgICAgICAgICAgLiAoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxl dGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6cHlsaW50ICg6ZW5hYmxlZCA6anNvbi1mYWxzZSkpKQogICAgICAgICAgICAgIDpnb3BscyAo OnVzZVBsYWNlaG9sZGVycyB0KSkpKSkKICAgICAgKHB5dGhvbi1iYXNlLW1vZGUgLiAoKGluZGVu dC10YWJzLW1vZGUgLiBuaWwpKSkKICAgICAgKGdvLW1vZGUgICAgICAgICAgLiAoKGluZGVudC10 YWJzLW1vZGUgLiB0KSkpKQoKVGhpcyBzZXRzIHRoZSB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3Bh Y2UtY29uZmlndXJhdGlvbuKAmSBpbiBhbGwgdGhlCmJ1ZmZlcnMgaW5zaWRlIHRoZSBwcm9qZWN0 OyBlYWNoIHNlcnZlciB3aWxsIHVzZSBvbmx5IHRoZSBzZWN0aW9uIG9mIHRoZQpwYXJhbWV0ZXJz IGludGVuZGVkIGZvciB0aGF0IHNlcnZlciwgYW5kIGlnbm9yZSB0aGUgcmVzdC4gIE5vdGUgaG93 CmFsaXN0cyBhcmUgdXNlZCBmb3IgYXNzb2NpYXRpbmcgRW1hY3MgbW9kZSBuYW1lcyB3aXRoIGFs aXN0cyBhc3NvY2lhdGluZwp2YXJpYWJsZSBuYW1lcyB3aXRoIHZhcmlhYmxlIHZhbHVlcy4gIFRo ZW4gbm90aWNlIGhvdyBwbGlzdHMgYXJlIHVzZWQKaW5zaWRlIHRoZSB2YWx1ZSBvZiDigJhlZ2xv dC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmS4KCiAgIFRoaXMgZm9sbG93aW5nIGZvcm0gbWF5 IGFsc28gYmUgdXNlZDoKCiAgICAgKChweXRob24tYmFzZS1tb2RlCiAgICAgICAuICgoZWdsb3Qt d29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAuICg6cHlsc3AgKDpwbHVnaW5zICg6 amVkaV9jb21wbGV0aW9uICg6aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdXp6eSB0KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZhbHNlKSkpKSkKICAgICAgICAg IChpbmRlbnQtdGFicy1tb2RlIC4gbmlsKSkpCiAgICAgIChnby1tb2RlCiAgICAgICAuICgoZWds b3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAuICg6Z29wbHMgKDp1c2VQbGFj ZWhvbGRlcnMgdCkpKQogICAgICAgICAgKGluZGVudC10YWJzLW1vZGUgLiB0KSkpKQoKVGhpcyBz ZXRzIHVwIHRoZSB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSBz ZXBhcmF0ZWx5CmRlcGVuZGluZyBvbiB0aGUgbWFqb3IgbW9kZSBvZiBlYWNoIG9mIHRoYXQgcHJv amVjdCdzIGJ1ZmZlcnMuCuKAmHB5dGhvbi1iYXNlLW1vZGXigJkgYnVmZmVycyB3aWxsIGhhdmUg dGhlIHZhcmlhYmxlIHNldCB0byDigJgoOnB5bHNwCig6cGx1Z2lucyAuLi4pKeKAmS4gIOKAmGdv LW1vZGXigJkgYnVmZmVycyB3aWxsIGhhdmUgdGhlIHZhcmlhYmxlIHNldCB0bwrigJgoOmdvcGxz ICg6dXNlUGxhY2Vob2xkZXJzIHQpKeKAmS4KCiAgIFNvbWUgc2VydmVycyB3aWxsIGlzc3VlIHdv cmtzcGFjZSBjb25maWd1cmF0aW9uIGZvciBzcGVjaWZpYyBmaWxlcwppbnNpZGUgeW91ciBwcm9q ZWN0LiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBrbm93IOKAmGdvcGxz4oCZIGlzIGFza2luZyBhYm91 dApzcGVjaWZpYyBmaWxlcyBpbiB0aGUg4oCYc3JjL2ltcG9ydGVk4oCZIHN1YmRpcmVjdG9yeSBh bmQgeW91IHdhbnQgdG8gc2V0IGEKZGlmZmVyZW50IG9wdGlvbiBmb3Ig4oCYZ29wbHMudXNlUGxh Y2Vob2xkZXJz4oCZICwgeW91IG1heSB1c2Ugc29tZXRoaW5nCmxpa2U6CgogICAgICgocHl0aG9u LWJhc2UtbW9kZQogICAgICAgLiAoKGVnbG90LXdvcmtzcGFjZS1jb25maWd1cmF0aW9uCiAgICAg ICAgICAgLiAoOnB5bHNwICg6cGx1Z2lucyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFy YW1zIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6 ZnV6enkgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cHlsaW50ICg6ZW5hYmxl ZCA6anNvbi1mYWxzZSkpKSkpCiAgICAgICAgICAoaW5kZW50LXRhYnMtbW9kZSBuaWwpKSkKICAg ICAgKGdvLW1vZGUKICAgICAgIC4gKChlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAg ICAgICAgIC4gKDpnb3BscyAoOnVzZVBsYWNlaG9sZGVycyB0KSkpCiAgICAgICAgICAoaW5kZW50 LXRhYnMtbW9kZSB0KSkpCiAgICAgICgic3JjL2ltcG9ydGVkIgogICAgICAgIC4gKChlZ2xvdC13 b3Jrc3BhY2UtY29uZmlndXJhdGlvbgogICAgICAgICAgIC4gKDpnb3BscyAoOnVzZVBsYWNlaG9s ZGVycyBuaWwpKSkpKSkKCiAgIEZpbmFsbHksIGlmIG9uZSBuZWVkcyB0byBkZXRlcm1pbmUgdGhl IHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIGJhc2VkCm9uIHNvbWUgZHluYW1pYyBjb250ZXh0LCDi gJhlZ2xvdC13b3Jrc3BhY2UtY29uZmlndXJhdGlvbuKAmSBjYW4gYmUgc2V0IHRvIGEKZnVuY3Rp b24uICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIOKAmGVnbG90LWxzcC1zZXJ2ZXLi gJkgaW5zdGFuY2UKb2YgdGhlIGNvbm5lY3RlZCBzZXJ2ZXIgKGlmIGFueSkgYW5kIHdpdGgg4oCY ZGVmYXVsdC1kaXJlY3RvcnnigJkgc2V0IHRvIHRoZQpyb290IG9mIHRoZSBwcm9qZWN0LiAgVGhl IGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBwbGlzdCBzdWl0YWJsZSBmb3IKdXNlIGFzIHRoZSB2 YXJpYWJsZSdzIHZhbHVlLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5vZGU6IFVzZXItc3Bl Y2lmaWMgY29uZmlndXJhdGlvbiwgIE5leHQ6IEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcCwgIFBy ZXY6IFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiwgIFVwOiBBZHZhbmNlZCBzZXJ2ZXIg Y29uZmlndXJhdGlvbgoKNS4yIFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBhcHBsaWVz IHRvIGFsbCBwcm9qZWN0cyB0aGUgc2VydmVyIGlzIHVzZWQKZm9yLiAgSGVyZSwgdGhlcmUgYXJl IGEgbnVtYmVyIG9mIHdheXMgdG8gZG8gdGhpcyBpbnNpZGUgRWdsb3QuCgogICBBIGNvbW1vbiB3 YXkgaXMgdG8gcGFzcyBjb21tYW5kLWxpbmUgb3B0aW9ucyB0byB0aGUgc2VydmVyIGludm9jYXRp b24KdmlhIOKAmGVnbG90LXNlcnZlci1wcm9ncmFtc+KAmS4gIExldCdzIHNheSB3ZSB3YW50IHRv IGNvbmZpZ3VyZSB3aGVyZSB0aGUK4oCYY2xhbmdk4oCZIHNlcnZlciByZWFkcyBpdHMg4oCYY29t cGlsZV9jb21tYW5kcy5qc29u4oCZIGZyb20uICBUaGlzIGNhbiBiZQpkb25lIGxpa2Ugc286Cgog ICAgICh3aXRoLWV2YWwtYWZ0ZXItbG9hZCAnZWdsb3QKICAgICAgIChhZGQtdG8tbGlzdCAnZWds b3Qtc2VydmVyLXByb2dyYW1zCiAgICAgICAgICAgICAgICAgICAgYChjKystbW9kZSAuICgiY2xh bmdkIiAiLS1jb21waWxlLWNvbW1hbmRzLWRpcj0vdG1wIikpKSkKCgpBbm90aGVyIHdheSBpcyB0 byBoYXZlIEVnbG90IHBhc3MgYSBKU09OIG9iamVjdCB0byB0aGUgc2VydmVyIGR1cmluZyB0aGUK TFNQIGhhbmRzaGFrZS4gIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUg4oCYOmluaXRpYWxpemF0aW9u T3B0aW9uc+KAmSBzeW50YXgKb2Yg4oCYZWdsb3Qtc2VydmVyLXByb2dyYW1z4oCZOgoKICAgICAo d2l0aC1ldmFsLWFmdGVyLWxvYWQgJ2VnbG90CiAgICAgICAoYWRkLXRvLWxpc3QgJ2VnbG90LXNl cnZlci1wcm9ncmFtcwogICAgICAgICAgICAgICAgICAgIGAoYysrLW1vZGUgLiAoImNsYW5nZCIg OmluaXRpYWxpemF0aW9uT3B0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDpjb21waWxhdGlvbkRhdGFiYXNlUGF0aCAiL3RtcCIpKSkpKQoKVGhlIGFyZ3Vt ZW50IOKAmCg6Y29tcGlsYXRpb25EYXRhYmFzZVBhdGggIi90bXAiKeKAmSBpcyBFbWFjcydzCnJl cHJlc2VudGF0aW9uIGluIHBsaXN0IGZvcm1hdCBvZiBhIHNpbXBsZSBKU09OIG9iamVjdArigJh7 ImNvbXBpbGF0aW9uRGF0YWJhc2VQYXRoIjogIi90bXAifeKAmS4gIFRvIGxlYXJuIGhvdyB0byBy ZXByZXNlbnQgbW9yZQpkZWVwbHkgbmVzdGVkIG9wdGlvbnMgaW4gdGhpcyBmb3JtYXQsICpub3Rl IEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6LgoKICAgSW4gdGhpcyBjYXNlLCB0aGUgdHdvIGV4 YW1wbGVzIGFjaGlldmUgZXhhY3RseSB0aGUgc2FtZSwgYnV0IG5vdGljZQpob3cgdGhlIG9wdGlv bidzIG5hbWUgaGFzIGNoYW5nZWQgYmV0d2VlbiB0aGVtLgoKICAgRmluYWxseSB0aGVyZSBpcyBh bm90aGVyIHdheSB0byBkbyB1c2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb2YKbGFuZ3VhZ2Ug c2VydmVycywgd2hpY2ggbWF5IGJlIHVzZWQgaWYgdGhlIG1ldGhvZHMgYWJvdmUgYXJlIG5vdApz dXBwb3J0ZWQuICBJdCBjb25zaXN0cyBvZiBfZ2xvYmFsbHlfIHNldHRpbmcK4oCYZWdsb3Qtd29y a3NwYWNlLWNvbmZpZ3VyYXRpb27igJksIGEgdmFyaWFibGUgb3JpZ2luYWxseSBpbnRlbmRlZCBm b3IKcHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiAgVGhpcyBoYXMgdGhlIHNhbWUgZWZm ZWN0IGFzIGdpdmluZyBhbGwKeW91ciBwcm9qZWN0cyBhIGNlcnRhaW4gZGVmYXVsdCBjb25maWd1 cmF0aW9uLCBhcyBkZXNjcmliZWQgaW4gKm5vdGUKUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9uOjouICBIZXJlIGlzIGFuIGV4YW1wbGU6CgogICAgIChzZXRxLWRlZmF1bHQgZWdsb3Qtd29y a3NwYWNlLWNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICcoOnB5bHNwICg6cGx1Z2lu cyAoOmplZGlfY29tcGxldGlvbiAoOmluY2x1ZGVfcGFyYW1zIHQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1enp5IHQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpweWxpbnQgKDplbmFibGVkIDpqc29uLWZh bHNlKSkpCiAgICAgICAgICAgICAgICAgICAgIDpnb3BscyAoOnVzZVBsYWNlaG9sZGVycyB0KSkp CgogICBOb3RlIHRoYXQgdGhlIGdsb2JhbCB2YWx1ZSBvZiDigJhlZ2xvdC13b3Jrc3BhY2UtY29u ZmlndXJhdGlvbuKAmSBpcwphbHdheXMgb3ZlcnJpZGRlbiBpZiBhIGRpcmVjdG9yeS1sb2NhbCB2 YWx1ZSBpcyBkZXRlY3RlZC4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBKU09OUlBD IG9iamVjdHMgaW4gRWxpc3AsICBQcmV2OiBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sICBV cDogQWR2YW5jZWQgc2VydmVyIGNvbmZpZ3VyYXRpb24KCjUuMyBKU09OUlBDIG9iamVjdHMgaW4g RWxpc3AKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKRW1hY3MncyBwcmVmZXJyZWQgd2F5 IG9mIHJlcHJlc2VudGluZyBKU09OIGlzIHZpYSBMaXNwIGxpc3RzLiAgSW4gRWdsb3QsCnRoZSBz eW50YXggb2YgdGhpcyBsaXN0IGlzIHRoZSBzaW1wbGVzdCBwb3NzaWJsZSAodGhlIG9uZSB3aXRo IGZld2VyCnBhcmVudGhlc2lzKSwgYSBwbGlzdCAoKm5vdGUgKGVsaXNwKVByb3BlcnR5IExpc3Rz OjopLgoKICAgVGhlIHBsaXN0IG1heSBiZSBhcmJpdHJhcmlseSBjb21wbGV4LCBhbmQgZ2VuZXJh bGx5IGNvbnRhaW5pbmcgb3RoZXIKa2V5d29yZC12YWx1ZSBwcm9wZXJ0eSBzdWItcGxpc3RzIGNv cnJlc3BvbmRpbmcgdG8gSlNPTiBzdWItb2JqZWN0cy4KCiAgIEZvciByZXByZXNlbnRpbmcgdGhl IEpTT04gbGVhZiB2YWx1ZXMg4oCYdHJ1ZeKAmSwg4oCYZmFsc2XigJksIOKAmG51bGzigJkgYW5k CuKAmHt94oCZLCB5b3UgY2FuIHVzZSB0aGUgTGlzcCB2YWx1ZXMg4oCYdOKAmSwg4oCYOmpzb24t ZmFsc2XigJksIOKAmG5pbOKAmSwgYW5kCuKAmGVnbG90LXt94oCZLCByZXNwZWN0aXZlbHkuICBK U09OIGFycmF5cyBhcmUgcmVwcmVzZW50ZWQgYXMgRWxpc3AgdmVjdG9ycwpzdXJyb3VuZGVkIGJ5 IHNxdWFyZSBicmFja2V0cyAoKm5vdGUgKGVsaXNwKVZlY3RvcnM6OikuCgogICBGb3IgZXhhbXBs ZSwgdGhlIHBsaXN0CgogICAgICg6cHlsc3AgKDpwbHVnaW5zICg6amVkaV9jb21wbGV0aW9uICg6 aW5jbHVkZV9wYXJhbXMgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6ZnV6enkgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2Fj aGVfZm9yIFsicGFuZGFzIiAibnVtcHkiXSkKICAgICAgICAgICAgICAgICAgICAgICAgOnB5bGlu dCAoOmVuYWJsZWQgOmpzb24tZmFsc2UpKSkKICAgICAgOmdvcGxzICg6dXNlUGxhY2Vob2xkZXJz IHQpKQoKaXMgc2VyaWFsaXplZCBieSBFZ2xvdCB0byB0aGUgZm9sbG93aW5nIEpTT04gdGV4dDoK CiAgICAgewogICAgICAgInB5bHNwIjogewogICAgICAgICAicGx1Z2lucyI6IHsKICAgICAgICAg ICAiamVkaV9jb21wbGV0aW9uIjogewogICAgICAgICAgICAgImluY2x1ZGVfcGFyYW1zIjogdHJ1 ZSwKICAgICAgICAgICAgICJmdXp6eSI6IHRydWUsCiAgICAgICAgICAgICAiY2FjaGVfZm9yIjog WyAicGFuZGFzIiwgIm51bXB5IiBdCiAgICAgICAgICAgfSwKICAgICAgICAgICAicHlsaW50Ijog ewogICAgICAgICAgICAgImVuYWJsZWQiOiBmYWxzZQogICAgICAgICAgIH0KICAgICAgICAgfQog ICAgICAgfSwKICAgICAgICJnb3BscyI6IHsKICAgICAgICAgInVzZVBsYWNlaG9sZGVycyI6IHRy dWUKICAgICAgIH0KICAgICB9CgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogRXh0ZW5k aW5nIEVnbG90LCAgTmV4dDogVHJvdWJsZXNob290aW5nIEVnbG90LCAgUHJldjogQWR2YW5jZWQg c2VydmVyIGNvbmZpZ3VyYXRpb24sICBVcDogVG9wCgo2IEV4dGVuZGluZyBFZ2xvdAoqKioqKioq KioqKioqKioqKgoKU29tZXRpbWVzIGl0IG1heSBiZSB1c2VmdWwgdG8gZXh0ZW5kIGV4aXN0aW5n IEVnbG90IGZ1bmN0aW9uYWxpdHkgdXNpbmcKRWxpc3AgaXRzIHB1YmxpYyBtZXRob2RzLiAgQSBn b29kIGV4YW1wbGUgb2Ygd2hlbiB0aGlzIG5lZWQgbWF5IGFyaXNlIGlzCmFkZGluZyBzdXBwb3J0 IGZvciBhIGN1c3RvbSBMU1AgcHJvdG9jb2wgZXh0ZW5zaW9uIG9ubHkgaW1wbGVtZW50ZWQgYnkg YQpzcGVjaWZpYyBzZXJ2ZXIuCgogICBUaGUgYmVzdCBzb3VyY2Ugb2YgZG9jdW1lbnRhdGlvbiBm b3IgdGhpcyBpcyBwcm9iYWJseSBFZ2xvdCBzb3VyY2UKY29kZSBpdHNlbGYsIHBhcnRpY3VsYXJs eSB0aGUgc2VjdGlvbiBtYXJrZWQgIkFQSSIuCgogICBNb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5 IGlzIGltcGxlbWVudGVkIHdpdGggQ29tbW9uLUxpc3Agc3R5bGUKZ2VuZXJpYyBmdW5jdGlvbnMg KCpub3RlIChlaWVpbylHZW5lcmljczo6KSB0aGF0IGNhbiBiZSBlYXNpbHkgZXh0ZW5kZWQKb3Ig b3ZlcnJpZGRlbi4gIFRoZSBFZ2xvdCBjb2RlIGl0c2VsZiBpcyBhbiBleGFtcGxlIG9uIGhvdyB0 byBkbyB0aGlzLgoKICAgVGhlIGZvbGxvd2luZyBpcyBhIHJlbGF0aXZlbHkgc2ltcGxlIGV4YW1w bGUgdGhhdCBhZGRzIHN1cHBvcnQgZm9yCnRoZSDigJhpbmFjdGl2ZVJlZ2lvbnPigJkgZXhwZXJp bWVudGFsIGZlYXR1cmUgaW50cm9kdWNlZCBpbiB2ZXJzaW9uIDE3IG9mCnRoZSDigJhjbGFuZ2Ti gJkgQy9DKysgbGFuZ3VhZ2Ugc2VydmVyKysuCgogICBTdW1tYXJpbHksIHRoZSBmZWF0dXJlIHdv cmtzIGJ5IGZpcnN0IGhhdmluZyB0aGUgc2VydmVyIGRldGVjdCB0aGUKRWdsb3QncyBhZHZlcnRp c2VtZW50IG9mIHRoZSDigJhpbmFjdGl2ZVJlZ2lvbnPigJkgY2xpZW50IGNhcGFiaWxpdHkgZHVy aW5nCnN0YXJ0dXAsIHdoZXJldXBvbiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHdpbGwgcmVwb3J0IGEg bGlzdCBvZiByZWdpb25zIG9mCmluYWN0aXZlIGNvZGUgZm9yIGVhY2ggYnVmZmVyLiAgVGhpcyBp cyB1c3VhbGx5IGNvZGUgc3Vycm91bmRlZCBieSBDL0MrKwrigJgjaWZkZWbigJkgbWFjcm9zIHRo YXQgdGhlIHByZXByb2Nlc3NvciByZW1vdmVzIGJhc2VkIG9uIGNvbXBpbGUtdGltZQppbmZvcm1h dGlvbi4KCiAgIFRoZSBsYW5ndWFnZSBzZXJ2ZXIgcmVwb3J0cyB0aGUgcmVnaW9ucyBieSBwZXJp b2RpY2FsbHkgc2VuZGluZyBhCuKAmHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnPigJkgbm90 aWZpY2F0aW9uIGZvciBlYWNoIG1hbmFnZWQgYnVmZmVyCigqbm90ZSBFZ2xvdCBhbmQgQnVmZmVy czo6KS4gIE5vcm1hbGx5LCB1bmtub3duIHNlcnZlciBub3RpZmljYXRpb25zIGFyZQppZ25vcmVk IGJ5IEVnbG90LCBidXQgd2UncmUgZ29pbmcgY2hhbmdlIHRoYXQuCgogICBCb3RoIHRoZSBhbm5v dW5jZW1lbnQgb2YgdGhlIGNsaWVudCBjYXBhYmlsaXR5IGFuZCB0aGUgaGFuZGxpbmcgb2YKdGhl IG5ldyBub3RpZmljYXRpb24gaXMgZG9uZSBieSBhZGRpbmcgbWV0aG9kcyB0byBnZW5lcmljIGZ1 bmN0aW9ucy4KCiAgIOKAoiBUaGUgZmlyc3QgbWV0aG9kIGV4dGVuZHMg4oCYZWdsb3QtY2xpZW50 LWNhcGFiaWxpdGllc+KAmSB1c2luZyBhIHNpbXBsZQogICAgIGhldXJpc3RpYyB0byBkZXRlY3Qg aWYgY3VycmVudCBzZXJ2ZXIgaXMg4oCYY2xhbmdk4oCZIGFuZCBlbmFibGVzIHRoZQogICAgIOKA mGluYWN0aXZlUmVnaW9u4oCZIGNhcGFiaWxpdHkuCgogICAgICAgICAgKGNsLWRlZm1ldGhvZCBl Z2xvdC1jbGllbnQtY2FwYWJpbGl0aWVzIDphcm91bmQgKHNlcnZlcikKICAgICAgICAgICAgKGxl dCAoKGJhc2UgKGNsLWNhbGwtbmV4dC1tZXRob2QpKSkKICAgICAgICAgICAgICAod2hlbiAoY2wt ZmluZCAiY2xhbmdkIiAocHJvY2Vzcy1jb21tYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoanNvbnJwYy0tcHJvY2VzcyBzZXJ2ZXIpKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDp0ZXN0ICMnc3RyaW5nLW1hdGNoKQogICAgICAgICAgICAgICAgKHNldGYg KGNsLWdldGYgKGNsLWdldGYgYmFzZSA6dGV4dERvY3VtZW50KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOmluYWN0aXZlUmVnaW9uc0NhcGFiaWxpdGllcykKICAgICAgICAgICAgICAg ICAgICAgICcoOmluYWN0aXZlUmVnaW9ucyB0KSkpCiAgICAgICAgICAgICAgYmFzZSkpCgogICAg IE5vdGljZSB3ZSB1c2UgYW4gaW50ZXJuYWwgZnVuY3Rpb24gb2YgdGhlIOKAmGpzb25ycGMuZWzi gJkgbGlicmFyeSwgYW5kCiAgICAgYSByZWdleHAgc2VhcmNoIHRvIGRldGVjdCDigJhjbGFuZ2Ti gJkuICBBbiBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0bwogICAgIGRlZmluZSBhIG5ldyBFSUVJTyBz dWJjbGFzcyBvZiDigJhlZ2xvdC1sc3Atc2VydmVy4oCZLCBtYXliZSBjYWxsZWQKICAgICDigJhl Z2xvdC1jbGFuZ2TigJksIHNvIHRoYXQgdGhlIG1ldGhvZCB3b3VsZCBiZSBzaW1wbGlmaWVkOgoK ICAgICAgICAgIChjbC1kZWZtZXRob2QgZWdsb3QtY2xpZW50LWNhcGFiaWxpdGllcyA6YXJvdW5k ICgoX3MgZWdsb3QtY2xhbmdkKSkKICAgICAgICAgICAgKGxldCAoKGJhc2UgKGNsLWNhbGwtbmV4 dC1tZXRob2QpKSkKICAgICAgICAgICAgICAoc2V0ZiAoY2wtZ2V0ZiAoY2wtZ2V0ZiBiYXNlIDp0 ZXh0RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6aW5hY3RpdmVSZWdp b25zQ2FwYWJpbGl0aWVzKQogICAgICAgICAgICAgICAgICAgICAgJyg6aW5hY3RpdmVSZWdpb25z IHQpKSkpCgogICAgIEhvd2V2ZXIsIHRoaXMgd291bGQgcmVxdWlyZSB0aGF0IHVzZXJzIHR3ZWFr IOKAmGVnbG90LXNlcnZlci1wcm9ncmFt4oCZCiAgICAgdG8gdGVsbCBFZ2xvdCBpbnN0YW50aWF0 ZSBzdWNoIHN1Yi1jbGFzc2VzIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMKICAgICDigJhlZ2xvdC1s c3Atc2VydmVy4oCZICgqbm90ZSBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzOjopLiAgRm9yIHRoZQog ICAgIHB1cnBvc2VzIG9mIHRoaXMgcGFydGljdWxhciBkZW1vbnN0cmF0aW9uLCB3ZSdyZSBnb2lu ZyB0byB1c2UgdGhlCiAgICAgbW9yZSBoYWNreSByZWdleHAgcm91dGUgd2hpY2ggZG9lc24ndCBy ZXF1aXJlIHRoYXQuCgogICAgIE5vdGUsIGhvd2V2ZXIsIHRoYXQgZGV0ZWN0aW5nIHNlcnZlciB2 ZXJzaW9ucyBiZWZvcmUgYW5ub3VuY2luZyBuZXcKICAgICBjYXBhYmlsaXRpZXMgaXMgZ2VuZXJh bGx5IG5vdCBuZWVkZWQsIGFzIGJvdGggc2VydmVyIGFuZCBjbGllbnQgYXJlCiAgICAgcmVxdWly ZWQgYnkgTFNQIHRvIGlnbm9yZSB1bmtub3duIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5IHRo ZWlyCiAgICAgY291bnRlcnBhcnRzLgoKICAg4oCiIFRoZSBzZWNvbmQgbWV0aG9kIGltcGxlbWVu dHMg4oCYZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbuKAmSB0byBwcm9jZXNzCiAgICAgdGhlIHNl cnZlciBub3RpZmljYXRpb24gZm9yIHRoZSBMU1AgbWV0aG9kCiAgICAg4oCYdGV4dERvY3VtZW50 L2luYWN0aXZlUmVnaW9uc+KAmS4gIEZvciBlYWNoIHJlZ2lvbiByZWNlaXZlZCBpdAogICAgIGNy ZWF0ZXMgYW4gb3ZlcmxheSBhcHBseWluZyB0aGUg4oCYc2hhZG934oCZIGZhY2UgdG8gdGhlIHJl Z2lvbi4KICAgICBPdmVybGF5cyBhcmUgcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbm90aWZp Y2F0aW9uIG9mIHRoaXMga2luZAogICAgIGlzIHJlY2VpdmVkLgoKICAgICBUbyBsZWFybiBhYm91 dCBob3cg4oCYY2xhbmdk4oCZJ3Mgc3BlY2lhbCBKU09OUlBDIG5vdGlmaWNhdGlvbiBtZXNzYWdl CiAgICAgaXMgc3RydWN0dXJlZCBpbiBkZXRhaWwgeW91IGNvdWxkIGNvbnN1bHQgdGhhdCBzZXJ2 ZXIncwogICAgIGRvY3VtZW50YXRpb24uICBBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRvIGV2YWx1 YXRlIHRoZSBmaXJzdAogICAgIGNhcGFiaWxpdHktYW5ub3VuY2luZyBtZXRob2QsIHJlY29ubmVj dCB0byB0aGUgc2VydmVyIGFuZCBwZWVrIGluCiAgICAgdGhlIGV2ZW50cyBidWZmZXIgKCpub3Rl IGVnbG90LWV2ZW50cy1idWZmZXI6IEVnbG90IENvbW1hbmRzLikuCiAgICAgWW91IGNvdWxkIGZp bmQgc29tZXRoaW5nIGxpa2U6CgogICAgICAgICAgW3NlcnZlci1ub3RpZmljYXRpb25dIE1vbiBT ZXAgIDQgMDE6MTA6MDQgMjAyMzoKICAgICAgICAgICg6anNvbnJwYyAiMi4wIiA6bWV0aG9kICJ0 ZXh0RG9jdW1lbnQvaW5hY3RpdmVSZWdpb25zIiA6cGFyYW1zCiAgICAgICAgICAgICAgICAgICAg KDp0ZXh0RG9jdW1lbnQKICAgICAgICAgICAgICAgICAgICAgKDp1cmkgImZpbGU6Ly8vcGF0aC90 by9maWxlLmNwcCIpCiAgICAgICAgICAgICAgICAgICAgIDpyZWdpb25zCiAgICAgICAgICAgICAg ICAgICAgIFsoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMTgpCiAgICAgICAgICAgICAgICAg ICAgICAgOmVuZCAoOmNoYXJhY3RlciA1OCA6bGluZSAxOSkpCiAgICAgICAgICAgICAgICAgICAg ICAoOnN0YXJ0ICg6Y2hhcmFjdGVyIDAgOmxpbmUgMzYpCiAgICAgICAgICAgICAgICAgICAgICAg OmVuZCAoOmNoYXJhY3RlciAxIDpsaW5lIDM4KSldKSkKCiAgICAgVGhpcyByZXZlYWxzIHRoYXQg dGhlIOKAmHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnPigJkgbm90aWZpY2F0aW9uCiAgICAg Y29udGFpbnMgYSDigJg6dGV4dERvY3VtZW504oCZIHByb3BlcnR5IHRvIGRlc2lnbmF0ZSB0aGUg bWFuYWdlZCBidWZmZXIKICAgICBhbmQgYW4gYXJyYXkgb2YgTFNQIHJlZ2lvbnMgdW5kZXIgdGhl IOKAmDpyZWdpb25z4oCZIHByb3BlcnR5LiAgTm90aWNlCiAgICAgaG93IHRoZSBtZXNzYWdlIChv cmlnaW5hbGx5IGluIEpTT04gZm9ybWF0KSwgaXMgcmVwcmVzZW50ZWQgYXMKICAgICBFbGlzcCBw bGlzdHMgKCpub3RlIEpTT05SUEMgb2JqZWN0cyBpbiBFbGlzcDo6KS4KCiAgICAgVGhlIEVnbG90 IGdlbmVyaWMgZnVuY3Rpb24gbWFjaGluZXJ5IHdpbGwgYXV0b21hdGljYWxseSBkZXN0cnVjdHVy ZQogICAgIHRoZSBpbmNvbWluZyBtZXNzYWdlLCBzbyB0aGVzZSB0d28gcHJvcGVydGllcyBjYW4g c2ltcGx5IGJlIGFkZGVkCiAgICAgdG8gdGhlIG5ldyBtZXRob2QncyBsYW1iZGEgbGlzdCBhcyDi gJgma2V54oCZIGFyZ3VtZW50cy4gIEFsc28sIHRoZQogICAgIOKAmGVnbG90LXVyaS10by1wYXRo 4oCZIGFuZCDigJhlZ2xvdC1yYW5nZS1yZWdpb27igJkgbWF5IGJlIHVzZWQgdG8gZWFzaWx5CiAg ICAgcGFyc2UgdGhlIExTUCDigJg6dXJp4oCZIGFuZCDigJg6c3RhcnQgLi4uIDplbmQgLi4u4oCZ IG9iamVjdHMgdG8gb2J0YWluCiAgICAgRW1hY3Mgb2JqZWN0cyBmb3IgZmlsZSBuYW1lcyBhbmQg cG9zaXRpb25zLgoKICAgICBUaGUgcmVtYWluZGVyIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBjb25z aXN0cyBvZiBzdGFuZGFyZCBFbGlzcAogICAgIHRlY2huaXF1ZXMgdG8gbG9vcCBvdmVyIGFycmF5 cywgbWFuYWdlIGJ1ZmZlcnMgYW5kIG92ZXJsYXlzLgoKICAgICAgICAgIChjbC1kZWZtZXRob2Qg ZWdsb3QtaGFuZGxlLW5vdGlmaWNhdGlvbgogICAgICAgICAgICAoX3NlcnZlciAoX21ldGhvZCAo ZXFsIHRleHREb2N1bWVudC9pbmFjdGl2ZVJlZ2lvbnMpKQogICAgICAgICAgICAgICAgICAgICAm a2V5IHJlZ2lvbnMgdGV4dERvY3VtZW50ICZhbGxvdy1vdGhlci1rZXlzKQogICAgICAgICAgICAo aWYtbGV0KiAoKHBhdGggKGV4cGFuZC1maWxlLW5hbWUgKGVnbG90LXVyaS10by1wYXRoCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsLWdldGYgdGV4dERv Y3VtZW50IDp1cmkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyIChmaW5kLWJ1ZmZl ci12aXNpdGluZyBwYXRoKSkpCiAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBi dWZmZXIKICAgICAgICAgICAgICAgICAgKHJlbW92ZS1vdmVybGF5cyBuaWwgbmlsICdpbmFjdGl2 ZS1jb2RlIHQpCiAgICAgICAgICAgICAgICAgIChjbC1sb29wCiAgICAgICAgICAgICAgICAgICBm b3IgciBhY3Jvc3MgcmVnaW9ucwogICAgICAgICAgICAgICAgICAgZm9yIChiZWcgLiBlbmQpID0g KGVnbG90LXJhbmdlLXJlZ2lvbiByKQogICAgICAgICAgICAgICAgICAgZm9yIG92ID0gKG1ha2Ut b3ZlcmxheSBiZWcgZW5kKQogICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAg IChvdmVybGF5LXB1dCBvdiAnZmFjZSAnc2hhZG93KQogICAgICAgICAgICAgICAgICAgKG92ZXJs YXktcHV0IG92ICdpbmFjdGl2ZS1jb2RlIHQpKSkpKQoKICAgQWZ0ZXIgZXZhbHVhdGluZyB0aGVz ZSB0d28gYWRkaXRpb25zIGFuZCByZWNvbm5lY3RpbmcgdG8gdGhlIOKAmGNsYW5nZOKAmQpsYW5n dWFnZSBzZXJ2ZXIgKHZlcnNpb24gMTcpLCB0aGUgcmVzdWx0IHdpbGwgYmUgdGhhdCBhbGwgdGhl IGluYWN0aXZlCmNvZGUgaW4gdGhlIGJ1ZmZlciB3aWxsIGJlIG5pY2VseSBncmF5ZWQgb3V0IHVz aW5nIHRoZSBMU1Agc2VydmVyCmtub3dsZWRnZSBhYm91dCBjdXJyZW50IGNvbXBpbGUgdGltZSBw cmVwcm9jZXNzb3IgZGVmaW5lcy4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBUcm91 Ymxlc2hvb3RpbmcgRWdsb3QsICBOZXh0OiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2Us ICBQcmV2OiBFeHRlbmRpbmcgRWdsb3QsICBVcDogVG9wCgo3IFRyb3VibGVzaG9vdGluZyBFZ2xv dAoqKioqKioqKioqKioqKioqKioqKioqKgoKVGhpcyBjaGFwdGVyIGRvY3VtZW50cyBjb21tYW5k cyBhbmQgdmFyaWFibGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8KdHJvdWJsZXNob290IEVnbG90IHBy b2JsZW1zLiAgSXQgYWxzbyBwcm92aWRlcyBndWlkZWxpbmVzIGZvciByZXBvcnRpbmcKRWdsb3Qg YnVncyBpbiBhIHdheSB0aGF0IGZhY2lsaXRhdGVzIHRoZWlyIHJlc29sdXRpb24uCgogICBXaGVu IHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMgd2l0aCBFZ2xvdCwgdHJ5IGZpcnN0IHVzaW5nIHRoZSBj b21tYW5kcwrigJhNLXggZWdsb3QtZXZlbnRzLWJ1ZmZlcuKAmSBhbmQg4oCYTS14IGVnbG90LXN0 ZGVyci1idWZmZXLigJkuICBUaGV5IHBvcCB1cApzcGVjaWFsIGJ1ZmZlcnMgdGhhdCBjYW4gYmUg dXNlZCB0byBpbnNwZWN0IHRoZSBjb21tdW5pY2F0aW9ucyBiZXR3ZWVuCnRoZSBFZ2xvdCBhbmQg bGFuZ3VhZ2Ugc2VydmVyLiAgSW4gbWFueSBjYXNlcywgdGhpcyB3aWxsIGluZGljYXRlIHRoZQpw cm9ibGVtcyBvciBhdCBsZWFzdCBwcm92aWRlIGEgaGludC4KCiogTWVudToKCiogUGVyZm9ybWFu Y2U6OgoqIEdldHRpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uOjoKKiBSZXBvcnRpbmcgYnVnczo6Cgof CkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogUGVyZm9ybWFuY2UsICBOZXh0OiBHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbiwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKCjcuMSBQZXJm b3JtYW5jZQo9PT09PT09PT09PT09PT0KCkEgY29tbW9uIGFuZCBlYXN5LXRvLWZpeCBjYXVzZSBv ZiBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiBFZ2xvdAooZXNwZWNpYWxseSBpbiBvbGRlciB2ZXJz aW9ucykgaXMgaXRzIGV2ZW50cyBidWZmZXIsIHNpbmNlIGl0IHJlcHJlc2VudHMKYWRkaXRpb25h bCB3b3JrIHRoYXQgRWdsb3QgbXVzdCBkbyAoKm5vdGUgZWdsb3QtZXZlbnRzLWJ1ZmZlcjogRWds b3QKQ29tbWFuZHMuKS4gIElmIHlvdSBmaW5kIEVnbG90IGlzIG9wZXJhdGluZyBjb3JyZWN0bHkg YnV0IHNsb3dseSwgdHJ5IHRvCmN1c3RvbWl6ZSB0aGUgdmFyaWFibGUg4oCYZWdsb3QtZXZlbnRz LWJ1ZmZlci1jb25maWfigJkgKCpub3RlIEVnbG90ClZhcmlhYmxlczo6KSBhbmQgc2V0IGl0cyDi gJg6c2l6ZeKAmSBwcm9wZXJ0eSB0byAwLiAgVGhpcyB3aWxsIGRpc2FibGUKcmVjb3JkaW5nIGFu eSBldmVudHMgYW5kIG1heSBzcGVlZCB0aGluZ3MgdXAuCgogICBJbiBvdGhlciBzaXR1YXRpb25z LCB0aGUgY2F1c2Ugb2YgcG9vciBwZXJmb3JtYW5jZSBsaWVzIGluIHRoZQpsYW5ndWFnZSBzZXJ2 ZXIgaXRzZWxmLiAgU2VydmVycyB1c2UgYWdncmVzc2l2ZSBjYWNoaW5nIGFuZCBvdGhlcgp0ZWNo bmlxdWVzIHRvIGltcHJvdmUgdGhlaXIgcGVyZm9ybWFuY2UuICBPZnRlbiwgdGhpcyBjYW4gYmUg dHdlYWtlZCBieQpjaGFuZ2luZyB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24gKCpub3RlIEFkdmFu Y2VkIHNlcnZlcgpjb25maWd1cmF0aW9uOjopLgoKHwpGaWxlOiBkb2N1b1hFTlUuaW5mbywgIE5v ZGU6IEdldHRpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uLCAgTmV4dDogUmVwb3J0aW5nIGJ1Z3MsICBQ cmV2OiBQZXJmb3JtYW5jZSwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWdsb3QKCjcuMiBHZXR0aW5n IHRoZSBsYXRlc3QgdmVyc2lvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRvIGlu c3RhbGwgdGhlIGxhdGVzdCBFZ2xvdCBpbiBhbiBFbWFjcyB2ZXJzaW9uIHRoYXQgZG9lcyBub3Qg YnVuZGxlCkVnbG90LCB1c2Ug4oCYTS14IHBhY2thZ2UtaW5zdGFsbOKAmS4KCiAgIE9mdGVuLCBh IG5ld2VyIEVnbG90IHZlcnNpb24gZXhpc3RzIHRoYXQgaGFzIGZpeGVkIGEgbG9uZ3N0YW5kaW5n CmJ1ZywgaGFzIG1vcmUgTFNQIGZlYXR1cmVzLCBvciBqdXN0IGJldHRlciBzdXBwb3J0cyBhIHBh cnRpY3VsYXIKbGFuZ3VhZ2Ugc2VydmVyLiAgUmVjZW50IEVnbG90IHZlcnNpb25zIGNhbiBzZWxm LXVwZGF0ZSB2aWEgdGhlIGNvbW1hbmQK4oCYTS14IGVnbG90LXVwZ3JhZGUtZWdsb3TigJkuICBU aGlzIHdpbGwgcmVwbGFjZSBhbnkgY3VycmVudGx5IGluc3RhbGxlZAp2ZXJzaW9uIHdpdGggdGhl IG5ld2VzdCBvbmUgYXZhaWxhYmxlIGZyb20gdGhlIEVMUEEgYXJjaGl2ZXMgY29uZmlndXJlZApp biDigJhwYWNrYWdlLWFyY2hpdmVz4oCZLgoKICAgWW91IGNhbiBhbHNvIHVwZGF0ZSBFZ2xvdCB0 aHJvdWdoIG90aGVyIG1ldGhvZHMsIHN1Y2ggYXMK4oCYdXNlLXBhY2thZ2XigJkgKCpub3RlICh1 c2UtcGFja2FnZSlJbnN0YWxsaW5nIHBhY2thZ2VzOjopLArigJhwYWNrYWdlLWluc3RhbGzigJks IOKAmGxpc3QtcGFja2FnZXPigJkgb3IgdGhlIG5ld2VyIOKAmHBhY2thZ2UtdXBncmFkZeKAmSAo Km5vdGUKKGVtYWNzKVBhY2thZ2VzOjopLiAgSG93ZXZlciwgZG8gcmVhZCB0aGUgZG9jc3RyaW5n cyBvZiB0aGUgY29tbWFuZCB5b3UKaW50ZW5kIHRvIHVzZSBiZWZvcmUgeW91IHVzZSBpdCwgYXMg c29tZSBvZiB0aGVtIG1heSBub3Qgd29yayBpbiBleGFjdGx5CnRoZSBzYW1lIHdheSBhY3Jvc3Mg RW1hY3MgdmVyc2lvbnMsIG1lYW5pbmcgeW91ciBjb25maWd1cmF0aW9uIG1heSBiZQpub3QgcG9y dGFibGUuCgofCkZpbGU6IGRvY3VvWEVOVS5pbmZvLCAgTm9kZTogUmVwb3J0aW5nIGJ1Z3MsICBQ cmV2OiBHZXR0aW5nIHRoZSBsYXRlc3QgdmVyc2lvbiwgIFVwOiBUcm91Ymxlc2hvb3RpbmcgRWds b3QKCjcuMyBSZXBvcnRpbmcgYnVncwo9PT09PT09PT09PT09PT09PT0KCklmIHlvdSB0aGluayB5 b3UgaGF2ZSBmb3VuZCBhIGJ1Zywgd2Ugd2FudCB0byBoZWFyIGFib3V0IGl0LiAgQmVmb3JlCnJl cG9ydGluZyBhIGJ1Zywga2VlcCBpbiBtaW5kIHRoYXQgaW50ZXJhY3Rpb24gd2l0aCBsYW5ndWFn ZSBzZXJ2ZXJzCnJlcHJlc2VudHMgYSBsYXJnZSBxdWFudGl0eSBvZiB1bmtub3duIHZhcmlhYmxl cy4gIFRoZXJlZm9yZSwgaXQgaXMKZ2VuZXJhbGx5IGJvdGggX2RpZmZpY3VsdF8gYW5kIF9hYnNv bHV0ZWx5IGVzc2VudGlhbF8gdGhhdCB0aGUKbWFpbnRhaW5lcnMgcmVwcm9kdWNlIGJ1Z3MgZXhh Y3RseSBhcyB0aGV5IGhhcHBlbmVkIHRvIHlvdSwgdGhlIHVzZXIuCgogICBUbyByZXBvcnQgYW4g RWdsb3QgYnVnLCBzZW5kIGUtbWFpbCB0byA8YnVnLWdudS1lbWFjc0BnbnUub3JnPi4KCiAgIFRv IHVuZGVyc3RhbmQgaG93IHRvIHdyaXRlIHRoaXMgZW1haWwsIGdldCBhY3F1YWludGVkIHdpdGgg RW1hY3MncwpidWcgcmVwb3J0aW5nIGd1aWRlbGluZXMgKCpub3RlIChlbWFjcylCdWdzOjopLiAg VGhlbiwgZm9sbG93IHRoaXMKRWdsb3Qtc3BlY2lmaWMgY2hlY2tsaXN0OgoKICAxLiBJbmNsdWRl IHRoZSB0cmFuc2NyaXB0IG9mIEpTT05SUEMgZXZlbnRzIG9idGFpbmVkIGZyb20gdGhlIGJ1ZmZl cgogICAgIHBvcHBlZCB1cCBieSDigJhNLXggZWdsb3QtZXZlbnRzLWJ1ZmZlcuKAmS4gIFlvdSBt YXkgbmFycm93IGRvd24gdGhlCiAgICAgdHJhbnNjcmlwdCBpZiB5b3UgYXJlIHN1cmUgb2Ygd2hl cmUgdGhlIHByb2JsZW1hdGljIGV4Y2hhbmdlIGlzLAogICAgIGJ1dCBpdCdzIHNhZmVyIHRvIGlu Y2x1ZGUgdGhlIHdob2xlIHRyYW5zY3JpcHQsIGVpdGhlciBhdHRhY2hlZCBvcgogICAgIGlubGlu ZS4KCiAgMi4gSWYgRW1hY3Mgc2lnbmFsZWQgYW4gZXJyb3IgKGFuIGVycm9yIG1lc3NhZ2Ugd2Fz IHNlZW4gb3IgaGVhcmQpLAogICAgIG1ha2Ugc3VyZSB0byByZXBlYXQgdGhlIHByb2Nlc3MgYWZ0 ZXIgdHVybmluZyBvbiDigJhkZWJ1Zy1vbi1lcnJvcuKAmQogICAgIHZpYSDigJhNLXggdG9nZ2xl LWRlYnVnLW9uLWVycm9y4oCZLiAgVGhpcyBub3JtYWxseSBwcm9kdWNlcyBhCiAgICAgYmFja3Ry YWNlIG9mIHRoZSBlcnJvciB0aGF0IHNob3VsZCBhbHNvIGJlIGF0dGFjaGVkIHRvIHRoZSBidWcK ICAgICByZXBvcnQuCgogIDMuIEluY2x1ZGUgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIG1haW50 YWluZXIgc2hvdWxkIG9idGFpbiwgaW5zdGFsbCwKICAgICBhbmQgY29uZmlndXJlIHRoZSBsYW5n dWFnZSBzZXJ2ZXIgeW91IHVzZWQuICBNYWludGFpbmVycyB1c3VhbGx5CiAgICAgaGF2ZSBhY2Nl c3MgdG8gR05VL0xpbnV4IHN5c3RlbXMsIHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlCiAgICAg ZGlzdHJpYnV0aW9uIHRoYXQgeW91IG1heSBiZSB1c2luZy4gIElmIHBvc3NpYmxlLCB0cnkgdG8g cmVwbGljYXRlCiAgICAgdGhlIHByb2JsZW0gd2l0aCB0aGUgQy9DKysgb3IgUHl0aG9uIHNlcnZl cnMsIGFzIHRoZXNlIGFyZSB2ZXJ5CiAgICAgZWFzeSB0byBpbnN0YWxsLgoKICA0LiBEZXNjcmli ZSBob3cgdG8gc2V0dXAgYSBfbWluaW1hbF8gcHJvamVjdCBkaXJlY3Rvcnkgd2hlcmUgRWdsb3QK ICAgICBzaG91bGQgYmUgc3RhcnRlZCBmb3IgdGhlIHByb2JsZW0gdG8gaGFwcGVuLiAgRGVzY3Jp YmUgZWFjaCBmaWxlJ3MKICAgICBuYW1lIGFuZCBpdHMgY29udGVudHMuICBBbHRlcm5hdGl2ZWx5 LCB5b3UgY2FuIHN1cHBseSB0aGUgYWRkcmVzcwogICAgIG9mIGEgcHVibGljIEdpdCByZXBvc2l0 b3J5LgoKICA1LiBJbmNsdWRlIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSB1c2VkLiAgVGhlIEVt YWNzIHZlcnNpb24gY2FuIGJlCiAgICAgb2J0YWluZWQgd2l0aCDigJhNLXggZW1hY3MtdmVyc2lv buKAmS4KCiAgICAgV2Ugd2VsY29tZSBidWcgcmVwb3J0cyBhYm91dCBhbGwgRWdsb3QgdmVyc2lv bnMsIGJ1dCBpdCBpcyBoZWxwZnVsCiAgICAgdG8gZmlyc3QgY2hlY2sgaWYgdGhlIHByb2JsZW0g aXNuJ3QgYWxyZWFkeSBmaXhlZCBpbiB0aGUgbGF0ZXN0CiAgICAgdmVyc2lvbiAoKm5vdGUgR2V0 dGluZyB0aGUgbGF0ZXN0IHZlcnNpb246OikuCgogICAgIEl0J3MgYWxzbyBlc3NlbnRpYWwgdG8g aW5jbHVkZSB0aGUgdmVyc2lvbiBvZiBFTFBBIHBhY2thZ2VzIHRoYXQKICAgICBhcmUgZXhwbGlj aXRseSBvciBpbXBsaWNpdGx5IGxvYWRlZC4gIFRoZSBvcHRpb25hbCBidXQgcG9wdWxhcgogICAg IENvbXBhbnkgb3IgTWFya2Rvd24gcGFja2FnZXMgYXJlIGRpc3RyaWJ1dGVkIGFzIEdOVSBFTFBB IHBhY2thZ2VzLAogICAgIG5vdCB0byBtZW50aW9uIEVnbG90IGl0c2VsZiBpbiBzb21lIHNpdHVh dGlvbnMuICBTb21lIG1ham9yIG1vZGVzCiAgICAgKEdvLCBSdXN0LCBldGMuKSAgYXJlIHByb3Zp ZGVkIGJ5IEVMUEEgcGFja2FnZXMuICBJdCdzIHNvbWV0aW1lcwogICAgIGVhc3kgdG8gbWlzcyB0 aGVzZSwgc2luY2UgdGhleSBhcmUgdXN1YWxseSBpbXBsaWNpdGx5IGxvYWRlZCB3aGVuCiAgICAg dmlzaXRpbmcgYSBmaWxlIGluIHRoYXQgbGFuZ3VhZ2UuCgogICAgIEVMUEEgcGFja2FnZXMgdXN1 YWxseSBsaXZlIGluIOKAmH4vLmVtYWNzLmQvZWxwYeKAmSAob3Igd2hhdCBpcyBpbgogICAgIOKA mHBhY2thZ2UtdXNlci1kaXLigJkpLiAgSW5jbHVkaW5nIGEgbGlzdGluZyBvZiBmaWxlcyBpbiB0 aGF0CiAgICAgZGlyZWN0b3J5IGlzIGEgd2F5IHRvIHRlbGwgdGhlIG1haW50YWluZXJzIGFib3V0 IEVMUEEgcGFja2FnZQogICAgIHZlcnNpb25zLgoKICA2LiBJbmNsdWRlIGEgcmVjaXBlIHRvIHJl cGxpY2F0ZSB0aGUgcHJvYmxlbSB3aXRoIF9hIGNsZWFuIEVtYWNzIHJ1bl8uCiAgICAgVGhlIGlu dm9jYXRpb24g4oCYZW1hY3MgLVEgLWYgcGFja2FnZS1pbml0aWFsaXpl4oCZIHN0YXJ0cyBFbWFj cyB3aXRoCiAgICAgbm8gY29uZmlndXJhdGlvbiBhbmQgaW5pdGlhbGl6ZXMgdGhlIEVMUEEgcGFj a2FnZXMuICBBIHZlcnkgbWluaW1hbAogICAgIOKAmC5lbWFjc+KAmSBpbml0aWFsaXphdGlvbiBm aWxlICgxMCBsaW5lcyBvciBsZXNzKSBpcyBhbHNvIGFjY2VwdGFibGUKICAgICBhbmQgZ29vZCBt ZWFucyB0byBkZXNjcmliZSBjaGFuZ2VzIHRvIHZhcmlhYmxlcy4KCiAgICAgVGhlcmUgaXMgdXN1 YWxseSBubyBuZWVkIHRvIGluY2x1ZGUg4oCYcmVxdWlyZeKAmSBzdGF0ZW1lbnRzIGluIHRoZQog ICAgIHJlY2lwZSwgYXMgRWdsb3QncyBmdW5jdGlvbmFsaXR5IHVzZXMgYXV0b2xvYWRzLgoKICAg ICBMaWtld2lzZSwgdGhlcmUgaXMgcmFyZWx5IHRoZSBuZWVkIHRvIHVzZSB0aGluZ3MgbGlrZSDi gJh1c2UtcGFja2FnZeKAmQogICAgIG9yIOKAmGVnbG90LWVuc3VyZeKAmS4gIFRoaXMganVzdCBt YWtlcyB0aGUgcmVjaXBlIGhhcmRlciB0byBmb2xsb3cuCiAgICAgUHJlZmVyIHNldHRpbmcgdmFy aWFibGVzIHdpdGgg4oCYc2V0ceKAmSBhbmQgYWRkaW5nIHRvIGhvb2tzIHdpdGgKICAgICDigJhh ZGQtaG9va+KAmS4gIFByZWZlciBzdGFydGluZyBFZ2xvdCB3aXRoIOKAmE0teCBlZ2xvdOKAmS4K CiAgNy4gTWFrZSBzdXJlIHRvIGRvdWJsZSBjaGVjayBhbGwgdGhlIGFib3ZlIGVsZW1lbnRzIGFu ZCByZS1ydW4gdGhlCiAgICAgcmVjaXBlIHRvIHNlZSB0aGF0IHRoZSBwcm9ibGVtIGlzIHJlcHJv ZHVjaWJsZS4gIEZvbGxvd2luZyB0aGUKICAgICByZWNpcGUgc2hvdWxkIHByb2R1Y2UgZXZlbnQg dHJhbnNjcmlwdCBhbmQgZXJyb3IgYmFja3RyYWNlcyB0aGF0CiAgICAgYXJlIHZlcnkgc2ltaWxh ciB0byB0aGUgb25lcyB5b3UgaW5jbHVkZWQuICBJZiB0aGUgcHJvYmxlbSBvbmx5CiAgICAgaGFw cGVucyBzb21ldGltZXMsIG1lbnRpb24gdGhpcyBpbiB5b3VyIHJlcG9ydC4KCiAgIFBsZWFzZSBr ZWVwIGluIG1pbmQgdGhhdCBzb21lIHByb2JsZW1zIHJlcG9ydGVkIGFnYWluc3QgRWdsb3QgbWF5 CmFjdHVhbGx5IGJlIGJ1Z3MgaW4gdGhlIGxhbmd1YWdlIHNlcnZlciBvciB0aGUgRW1hY3MgZmVh dHVyZS9wYWNrYWdlCnRoYXQgdXNlZCBFZ2xvdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBsYW5n dWFnZSBzZXJ2ZXIuICBFZ2xvdCBpcywgaW4KbWFueSBjYXNlcywganVzdCBhIGZyb250ZW5kIHRv IHRoYXQgZnVuY3Rpb25hbGl0eS4KCh8KRmlsZTogZG9jdW9YRU5VLmluZm8sICBOb2RlOiBHTlUg RnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UsICBOZXh0OiBJbmRleCwgIFByZXY6IFRyb3VibGVz aG9vdGluZyBFZ2xvdCwgIFVwOiBUb3AKCkFwcGVuZGl4IEEgR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgogICAg ICAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMywgMyBOb3ZlbWJlciAyMDA4CgogICAgIENvcHly aWdodCDCqSAyMDAwLCAyMDAxLCAyMDAyLCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogICAgIDxodHRwczovL2ZzZi5vcmcvPgoKICAgICBFdmVyeW9uZSBpcyBwZXJt aXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKICAgICBvZiB0aGlz IGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgMC4g UFJFQU1CTEUKCiAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBMaWNlbnNlIGlzIHRvIG1ha2UgYSBt YW51YWwsIHRleHRib29rLCBvciBvdGhlcgogICAgIGZ1bmN0aW9uYWwgYW5kIHVzZWZ1bCBkb2N1 bWVudCDigJxmcmVl4oCdIGluIHRoZSBzZW5zZSBvZiBmcmVlZG9tOiB0bwogICAgIGFzc3VyZSBl dmVyeW9uZSB0aGUgZWZmZWN0aXZlIGZyZWVkb20gdG8gY29weSBhbmQgcmVkaXN0cmlidXRlIGl0 LAogICAgIHdpdGggb3Igd2l0aG91dCBtb2RpZnlpbmcgaXQsIGVpdGhlciBjb21tZXJjaWFsbHkg b3IKICAgICBub25jb21tZXJjaWFsbHkuICBTZWNvbmRhcmlseSwgdGhpcyBMaWNlbnNlIHByZXNl cnZlcyBmb3IgdGhlCiAgICAgYXV0aG9yIGFuZCBwdWJsaXNoZXIgYSB3YXkgdG8gZ2V0IGNyZWRp dCBmb3IgdGhlaXIgd29yaywgd2hpbGUgbm90CiAgICAgYmVpbmcgY29uc2lkZXJlZCByZXNwb25z aWJsZSBmb3IgbW9kaWZpY2F0aW9ucyBtYWRlIGJ5IG90aGVycy4KCiAgICAgVGhpcyBMaWNlbnNl IGlzIGEga2luZCBvZiAiY29weWxlZnQiLCB3aGljaCBtZWFucyB0aGF0IGRlcml2YXRpdmUKICAg ICB3b3JrcyBvZiB0aGUgZG9jdW1lbnQgbXVzdCB0aGVtc2VsdmVzIGJlIGZyZWUgaW4gdGhlIHNh bWUgc2Vuc2UuCiAgICAgSXQgY29tcGxlbWVudHMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLCB3aGljaCBpcyBhIGNvcHlsZWZ0CiAgICAgbGljZW5zZSBkZXNpZ25lZCBmb3IgZnJlZSBz b2Z0d2FyZS4KCiAgICAgV2UgaGF2ZSBkZXNpZ25lZCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8g dXNlIGl0IGZvciBtYW51YWxzIGZvcgogICAgIGZyZWUgc29mdHdhcmUsIGJlY2F1c2UgZnJlZSBz b2Z0d2FyZSBuZWVkcyBmcmVlIGRvY3VtZW50YXRpb246IGEKICAgICBmcmVlIHByb2dyYW0gc2hv dWxkIGNvbWUgd2l0aCBtYW51YWxzIHByb3ZpZGluZyB0aGUgc2FtZSBmcmVlZG9tcwogICAgIHRo YXQgdGhlIHNvZnR3YXJlIGRvZXMuICBCdXQgdGhpcyBMaWNlbnNlIGlzIG5vdCBsaW1pdGVkIHRv CiAgICAgc29mdHdhcmUgbWFudWFsczsgaXQgY2FuIGJlIHVzZWQgZm9yIGFueSB0ZXh0dWFsIHdv cmssIHJlZ2FyZGxlc3MKICAgICBvZiBzdWJqZWN0IG1hdHRlciBvciB3aGV0aGVyIGl0IGlzIHB1 Ymxpc2hlZCBhcyBhIHByaW50ZWQgYm9vay4gIFdlCiAgICAgcmVjb21tZW5kIHRoaXMgTGljZW5z ZSBwcmluY2lwYWxseSBmb3Igd29ya3Mgd2hvc2UgcHVycG9zZSBpcwogICAgIGluc3RydWN0aW9u IG9yIHJlZmVyZW5jZS4KCiAgMS4gQVBQTElDQUJJTElUWSBBTkQgREVGSU5JVElPTlMKCiAgICAg VGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IG1hbnVhbCBvciBvdGhlciB3b3JrLCBpbiBhbnkg bWVkaXVtLAogICAgIHRoYXQgY29udGFpbnMgYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmln aHQgaG9sZGVyIHNheWluZyBpdCBjYW4KICAgICBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhpcyBMaWNlbnNlLiAgU3VjaCBhIG5vdGljZQogICAgIGdyYW50cyBhIHdvcmxkLXdp ZGUsIHJveWFsdHktZnJlZSBsaWNlbnNlLCB1bmxpbWl0ZWQgaW4gZHVyYXRpb24sCiAgICAgdG8g dXNlIHRoYXQgd29yayB1bmRlciB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaGVyZWluLiAgVGhlCiAg ICAgIkRvY3VtZW50IiwgYmVsb3csIHJlZmVycyB0byBhbnkgc3VjaCBtYW51YWwgb3Igd29yay4g IEFueSBtZW1iZXIKICAgICBvZiB0aGUgcHVibGljIGlzIGEgbGljZW5zZWUsIGFuZCBpcyBhZGRy ZXNzZWQgYXMgInlvdSIuICBZb3UgYWNjZXB0CiAgICAgdGhlIGxpY2Vuc2UgaWYgeW91IGNvcHks IG1vZGlmeSBvciBkaXN0cmlidXRlIHRoZSB3b3JrIGluIGEgd2F5CiAgICAgcmVxdWlyaW5nIHBl cm1pc3Npb24gdW5kZXIgY29weXJpZ2h0IGxhdy4KCiAgICAgQSAiTW9kaWZpZWQgVmVyc2lvbiIg b2YgdGhlIERvY3VtZW50IG1lYW5zIGFueSB3b3JrIGNvbnRhaW5pbmcgdGhlCiAgICAgRG9jdW1l bnQgb3IgYSBwb3J0aW9uIG9mIGl0LCBlaXRoZXIgY29waWVkIHZlcmJhdGltLCBvciB3aXRoCiAg ICAgbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIgbGFuZ3VhZ2Uu CgogICAgIEEgIlNlY29uZGFyeSBTZWN0aW9uIiBpcyBhIG5hbWVkIGFwcGVuZGl4IG9yIGEgZnJv bnQtbWF0dGVyIHNlY3Rpb24KICAgICBvZiB0aGUgRG9jdW1lbnQgdGhhdCBkZWFscyBleGNsdXNp dmVseSB3aXRoIHRoZSByZWxhdGlvbnNoaXAgb2YgdGhlCiAgICAgcHVibGlzaGVycyBvciBhdXRo b3JzIG9mIHRoZSBEb2N1bWVudCB0byB0aGUgRG9jdW1lbnQncyBvdmVyYWxsCiAgICAgc3ViamVj dCAob3IgdG8gcmVsYXRlZCBtYXR0ZXJzKSBhbmQgY29udGFpbnMgbm90aGluZyB0aGF0IGNvdWxk CiAgICAgZmFsbCBkaXJlY3RseSB3aXRoaW4gdGhhdCBvdmVyYWxsIHN1YmplY3QuICAoVGh1cywg aWYgdGhlIERvY3VtZW50CiAgICAgaXMgaW4gcGFydCBhIHRleHRib29rIG9mIG1hdGhlbWF0aWNz LCBhIFNlY29uZGFyeSBTZWN0aW9uIG1heSBub3QKICAgICBleHBsYWluIGFueSBtYXRoZW1hdGlj cy4pICBUaGUgcmVsYXRpb25zaGlwIGNvdWxkIGJlIGEgbWF0dGVyIG9mCiAgICAgaGlzdG9yaWNh bCBjb25uZWN0aW9uIHdpdGggdGhlIHN1YmplY3Qgb3Igd2l0aCByZWxhdGVkIG1hdHRlcnMsIG9y CiAgICAgb2YgbGVnYWwsIGNvbW1lcmNpYWwsIHBoaWxvc29waGljYWwsIGV0aGljYWwgb3IgcG9s aXRpY2FsIHBvc2l0aW9uCiAgICAgcmVnYXJkaW5nIHRoZW0uCgogICAgIFRoZSAiSW52YXJpYW50 IFNlY3Rpb25zIiBhcmUgY2VydGFpbiBTZWNvbmRhcnkgU2VjdGlvbnMgd2hvc2UKICAgICB0aXRs ZXMgYXJlIGRlc2lnbmF0ZWQsIGFzIGJlaW5nIHRob3NlIG9mIEludmFyaWFudCBTZWN0aW9ucywg aW4gdGhlCiAgICAgbm90aWNlIHRoYXQgc2F5cyB0aGF0IHRoZSBEb2N1bWVudCBpcyByZWxlYXNl ZCB1bmRlciB0aGlzIExpY2Vuc2UuCiAgICAgSWYgYSBzZWN0aW9uIGRvZXMgbm90IGZpdCB0aGUg YWJvdmUgZGVmaW5pdGlvbiBvZiBTZWNvbmRhcnkgdGhlbiBpdAogICAgIGlzIG5vdCBhbGxvd2Vk IHRvIGJlIGRlc2lnbmF0ZWQgYXMgSW52YXJpYW50LiAgVGhlIERvY3VtZW50IG1heQogICAgIGNv bnRhaW4gemVybyBJbnZhcmlhbnQgU2VjdGlvbnMuICBJZiB0aGUgRG9jdW1lbnQgZG9lcyBub3Qg aWRlbnRpZnkKICAgICBhbnkgSW52YXJpYW50IFNlY3Rpb25zIHRoZW4gdGhlcmUgYXJlIG5vbmUu CgogICAgIFRoZSAiQ292ZXIgVGV4dHMiIGFyZSBjZXJ0YWluIHNob3J0IHBhc3NhZ2VzIG9mIHRl eHQgdGhhdCBhcmUKICAgICBsaXN0ZWQsIGFzIEZyb250LUNvdmVyIFRleHRzIG9yIEJhY2stQ292 ZXIgVGV4dHMsIGluIHRoZSBub3RpY2UKICAgICB0aGF0IHNheXMgdGhhdCB0aGUgRG9jdW1lbnQg aXMgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQQogICAgIEZyb250LUNvdmVyIFRleHQg bWF5IGJlIGF0IG1vc3QgNSB3b3JkcywgYW5kIGEgQmFjay1Db3ZlciBUZXh0IG1heQogICAgIGJl IGF0IG1vc3QgMjUgd29yZHMuCgogICAgIEEgIlRyYW5zcGFyZW50IiBjb3B5IG9mIHRoZSBEb2N1 bWVudCBtZWFucyBhIG1hY2hpbmUtcmVhZGFibGUgY29weSwKICAgICByZXByZXNlbnRlZCBpbiBh IGZvcm1hdCB3aG9zZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUKICAgICBnZW5l cmFsIHB1YmxpYywgdGhhdCBpcyBzdWl0YWJsZSBmb3IgcmV2aXNpbmcgdGhlIGRvY3VtZW50CiAg ICAgc3RyYWlnaHRmb3J3YXJkbHkgd2l0aCBnZW5lcmljIHRleHQgZWRpdG9ycyBvciAoZm9yIGlt YWdlcyBjb21wb3NlZAogICAgIG9mIHBpeGVscykgZ2VuZXJpYyBwYWludCBwcm9ncmFtcyBvciAo Zm9yIGRyYXdpbmdzKSBzb21lIHdpZGVseQogICAgIGF2YWlsYWJsZSBkcmF3aW5nIGVkaXRvciwg YW5kIHRoYXQgaXMgc3VpdGFibGUgZm9yIGlucHV0IHRvIHRleHQKICAgICBmb3JtYXR0ZXJzIG9y IGZvciBhdXRvbWF0aWMgdHJhbnNsYXRpb24gdG8gYSB2YXJpZXR5IG9mIGZvcm1hdHMKICAgICBz dWl0YWJsZSBmb3IgaW5wdXQgdG8gdGV4dCBmb3JtYXR0ZXJzLiAgQSBjb3B5IG1hZGUgaW4gYW4g b3RoZXJ3aXNlCiAgICAgVHJhbnNwYXJlbnQgZmlsZSBmb3JtYXQgd2hvc2UgbWFya3VwLCBvciBh YnNlbmNlIG9mIG1hcmt1cCwgaGFzCiAgICAgYmVlbiBhcnJhbmdlZCB0byB0aHdhcnQgb3IgZGlz Y291cmFnZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBieQogICAgIHJlYWRlcnMgaXMgbm90IFRy YW5zcGFyZW50LiAgQW4gaW1hZ2UgZm9ybWF0IGlzIG5vdCBUcmFuc3BhcmVudCBpZgogICAgIHVz ZWQgZm9yIGFueSBzdWJzdGFudGlhbCBhbW91bnQgb2YgdGV4dC4gIEEgY29weSB0aGF0IGlzIG5v dAogICAgICJUcmFuc3BhcmVudCIgaXMgY2FsbGVkICJPcGFxdWUiLgoKICAgICBFeGFtcGxlcyBv ZiBzdWl0YWJsZSBmb3JtYXRzIGZvciBUcmFuc3BhcmVudCBjb3BpZXMgaW5jbHVkZSBwbGFpbgog ICAgIEFTQ0lJIHdpdGhvdXQgbWFya3VwLCBUZXhpbmZvIGlucHV0IGZvcm1hdCwgTGFUZVggaW5w dXQgZm9ybWF0LAogICAgIFNHTUwgb3IgWE1MIHVzaW5nIGEgcHVibGljbHkgYXZhaWxhYmxlIERU RCwgYW5kIHN0YW5kYXJkLWNvbmZvcm1pbmcKICAgICBzaW1wbGUgSFRNTCwgUG9zdFNjcmlwdCBv ciBQREYgZGVzaWduZWQgZm9yIGh1bWFuIG1vZGlmaWNhdGlvbi4KICAgICBFeGFtcGxlcyBvZiB0 cmFuc3BhcmVudCBpbWFnZSBmb3JtYXRzIGluY2x1ZGUgUE5HLCBYQ0YgYW5kIEpQRy4KICAgICBP cGFxdWUgZm9ybWF0cyBpbmNsdWRlIHByb3ByaWV0YXJ5IGZvcm1hdHMgdGhhdCBjYW4gYmUgcmVh ZCBhbmQKICAgICBlZGl0ZWQgb25seSBieSBwcm9wcmlldGFyeSB3b3JkIHByb2Nlc3NvcnMsIFNH TUwgb3IgWE1MIGZvciB3aGljaAogICAgIHRoZSBEVEQgYW5kL29yIHByb2Nlc3NpbmcgdG9vbHMg YXJlIG5vdCBnZW5lcmFsbHkgYXZhaWxhYmxlLCBhbmQKICAgICB0aGUgbWFjaGluZS1nZW5lcmF0 ZWQgSFRNTCwgUG9zdFNjcmlwdCBvciBQREYgcHJvZHVjZWQgYnkgc29tZSB3b3JkCiAgICAgcHJv Y2Vzc29ycyBmb3Igb3V0cHV0IHB1cnBvc2VzIG9ubHkuCgogICAgIFRoZSAiVGl0bGUgUGFnZSIg bWVhbnMsIGZvciBhIHByaW50ZWQgYm9vaywgdGhlIHRpdGxlIHBhZ2UgaXRzZWxmLAogICAgIHBs dXMgc3VjaCBmb2xsb3dpbmcgcGFnZXMgYXMgYXJlIG5lZWRlZCB0byBob2xkLCBsZWdpYmx5LCB0 aGUKICAgICBtYXRlcmlhbCB0aGlzIExpY2Vuc2UgcmVxdWlyZXMgdG8gYXBwZWFyIGluIHRoZSB0 aXRsZSBwYWdlLiAgRm9yCiAgICAgd29ya3MgaW4gZm9ybWF0cyB3aGljaCBkbyBub3QgaGF2ZSBh bnkgdGl0bGUgcGFnZSBhcyBzdWNoLCAiVGl0bGUKICAgICBQYWdlIiBtZWFucyB0aGUgdGV4dCBu ZWFyIHRoZSBtb3N0IHByb21pbmVudCBhcHBlYXJhbmNlIG9mIHRoZQogICAgIHdvcmsncyB0aXRs ZSwgcHJlY2VkaW5nIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvZHkgb2YgdGhlIHRleHQuCgogICAg IFRoZSAicHVibGlzaGVyIiBtZWFucyBhbnkgcGVyc29uIG9yIGVudGl0eSB0aGF0IGRpc3RyaWJ1 dGVzIGNvcGllcwogICAgIG9mIHRoZSBEb2N1bWVudCB0byB0aGUgcHVibGljLgoKICAgICBBIHNl Y3Rpb24gIkVudGl0bGVkIFhZWiIgbWVhbnMgYSBuYW1lZCBzdWJ1bml0IG9mIHRoZSBEb2N1bWVu dAogICAgIHdob3NlIHRpdGxlIGVpdGhlciBpcyBwcmVjaXNlbHkgWFlaIG9yIGNvbnRhaW5zIFhZ WiBpbiBwYXJlbnRoZXNlcwogICAgIGZvbGxvd2luZyB0ZXh0IHRoYXQgdHJhbnNsYXRlcyBYWVog aW4gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlIFhZWgogICAgIHN0YW5kcyBmb3IgYSBzcGVjaWZp YyBzZWN0aW9uIG5hbWUgbWVudGlvbmVkIGJlbG93LCBzdWNoIGFzCiAgICAgIkFja25vd2xlZGdl bWVudHMiLCAiRGVkaWNhdGlvbnMiLCAiRW5kb3JzZW1lbnRzIiwgb3IgIkhpc3RvcnkiLikKICAg ICBUbyAiUHJlc2VydmUgdGhlIFRpdGxlIiBvZiBzdWNoIGEgc2VjdGlvbiB3aGVuIHlvdSBtb2Rp ZnkgdGhlCiAgICAgRG9jdW1lbnQgbWVhbnMgdGhhdCBpdCByZW1haW5zIGEgc2VjdGlvbiAiRW50 aXRsZWQgWFlaIiBhY2NvcmRpbmcKICAgICB0byB0aGlzIGRlZmluaXRpb24uCgogICAgIFRoZSBE b2N1bWVudCBtYXkgaW5jbHVkZSBXYXJyYW50eSBEaXNjbGFpbWVycyBuZXh0IHRvIHRoZSBub3Rp Y2UKICAgICB3aGljaCBzdGF0ZXMgdGhhdCB0aGlzIExpY2Vuc2UgYXBwbGllcyB0byB0aGUgRG9j dW1lbnQuICBUaGVzZQogICAgIFdhcnJhbnR5IERpc2NsYWltZXJzIGFyZSBjb25zaWRlcmVkIHRv IGJlIGluY2x1ZGVkIGJ5IHJlZmVyZW5jZSBpbgogICAgIHRoaXMgTGljZW5zZSwgYnV0IG9ubHkg YXMgcmVnYXJkcyBkaXNjbGFpbWluZyB3YXJyYW50aWVzOiBhbnkgb3RoZXIKICAgICBpbXBsaWNh dGlvbiB0aGF0IHRoZXNlIFdhcnJhbnR5IERpc2NsYWltZXJzIG1heSBoYXZlIGlzIHZvaWQgYW5k CiAgICAgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZyBvZiB0aGlzIExpY2Vuc2UuCgogIDIu IFZFUkJBVElNIENPUFlJTkcKCiAgICAgWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBE b2N1bWVudCBpbiBhbnkgbWVkaXVtLCBlaXRoZXIKICAgICBjb21tZXJjaWFsbHkgb3Igbm9uY29t bWVyY2lhbGx5LCBwcm92aWRlZCB0aGF0IHRoaXMgTGljZW5zZSwgdGhlCiAgICAgY29weXJpZ2h0 IG5vdGljZXMsIGFuZCB0aGUgbGljZW5zZSBub3RpY2Ugc2F5aW5nIHRoaXMgTGljZW5zZQogICAg IGFwcGxpZXMgdG8gdGhlIERvY3VtZW50IGFyZSByZXByb2R1Y2VkIGluIGFsbCBjb3BpZXMsIGFu ZCB0aGF0IHlvdQogICAgIGFkZCBubyBvdGhlciBjb25kaXRpb25zIHdoYXRzb2V2ZXIgdG8gdGhv c2Ugb2YgdGhpcyBMaWNlbnNlLiAgWW91CiAgICAgbWF5IG5vdCB1c2UgdGVjaG5pY2FsIG1lYXN1 cmVzIHRvIG9ic3RydWN0IG9yIGNvbnRyb2wgdGhlIHJlYWRpbmcKICAgICBvciBmdXJ0aGVyIGNv cHlpbmcgb2YgdGhlIGNvcGllcyB5b3UgbWFrZSBvciBkaXN0cmlidXRlLiAgSG93ZXZlciwKICAg ICB5b3UgbWF5IGFjY2VwdCBjb21wZW5zYXRpb24gaW4gZXhjaGFuZ2UgZm9yIGNvcGllcy4gIElm IHlvdQogICAgIGRpc3RyaWJ1dGUgYSBsYXJnZSBlbm91Z2ggbnVtYmVyIG9mIGNvcGllcyB5b3Ug bXVzdCBhbHNvIGZvbGxvdyB0aGUKICAgICBjb25kaXRpb25zIGluIHNlY3Rpb24gMy4KCiAgICAg WW91IG1heSBhbHNvIGxlbmQgY29waWVzLCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIHN0YXRl ZCBhYm92ZSwKICAgICBhbmQgeW91IG1heSBwdWJsaWNseSBkaXNwbGF5IGNvcGllcy4KCiAgMy4g Q09QWUlORyBJTiBRVUFOVElUWQoKICAgICBJZiB5b3UgcHVibGlzaCBwcmludGVkIGNvcGllcyAo b3IgY29waWVzIGluIG1lZGlhIHRoYXQgY29tbW9ubHkKICAgICBoYXZlIHByaW50ZWQgY292ZXJz KSBvZiB0aGUgRG9jdW1lbnQsIG51bWJlcmluZyBtb3JlIHRoYW4gMTAwLCBhbmQKICAgICB0aGUg RG9jdW1lbnQncyBsaWNlbnNlIG5vdGljZSByZXF1aXJlcyBDb3ZlciBUZXh0cywgeW91IG11c3QK ICAgICBlbmNsb3NlIHRoZSBjb3BpZXMgaW4gY292ZXJzIHRoYXQgY2FycnksIGNsZWFybHkgYW5k IGxlZ2libHksIGFsbAogICAgIHRoZXNlIENvdmVyIFRleHRzOiBGcm9udC1Db3ZlciBUZXh0cyBv biB0aGUgZnJvbnQgY292ZXIsIGFuZAogICAgIEJhY2stQ292ZXIgVGV4dHMgb24gdGhlIGJhY2sg Y292ZXIuICBCb3RoIGNvdmVycyBtdXN0IGFsc28gY2xlYXJseQogICAgIGFuZCBsZWdpYmx5IGlk ZW50aWZ5IHlvdSBhcyB0aGUgcHVibGlzaGVyIG9mIHRoZXNlIGNvcGllcy4gIFRoZQogICAgIGZy b250IGNvdmVyIG11c3QgcHJlc2VudCB0aGUgZnVsbCB0aXRsZSB3aXRoIGFsbCB3b3JkcyBvZiB0 aGUgdGl0bGUKICAgICBlcXVhbGx5IHByb21pbmVudCBhbmQgdmlzaWJsZS4gIFlvdSBtYXkgYWRk IG90aGVyIG1hdGVyaWFsIG9uIHRoZQogICAgIGNvdmVycyBpbiBhZGRpdGlvbi4gIENvcHlpbmcg d2l0aCBjaGFuZ2VzIGxpbWl0ZWQgdG8gdGhlIGNvdmVycywgYXMKICAgICBsb25nIGFzIHRoZXkg cHJlc2VydmUgdGhlIHRpdGxlIG9mIHRoZSBEb2N1bWVudCBhbmQgc2F0aXNmeSB0aGVzZQogICAg IGNvbmRpdGlvbnMsIGNhbiBiZSB0cmVhdGVkIGFzIHZlcmJhdGltIGNvcHlpbmcgaW4gb3RoZXIg cmVzcGVjdHMuCgogICAgIElmIHRoZSByZXF1aXJlZCB0ZXh0cyBmb3IgZWl0aGVyIGNvdmVyIGFy ZSB0b28gdm9sdW1pbm91cyB0byBmaXQKICAgICBsZWdpYmx5LCB5b3Ugc2hvdWxkIHB1dCB0aGUg Zmlyc3Qgb25lcyBsaXN0ZWQgKGFzIG1hbnkgYXMgZml0CiAgICAgcmVhc29uYWJseSkgb24gdGhl IGFjdHVhbCBjb3ZlciwgYW5kIGNvbnRpbnVlIHRoZSByZXN0IG9udG8KICAgICBhZGphY2VudCBw YWdlcy4KCiAgICAgSWYgeW91IHB1Ymxpc2ggb3IgZGlzdHJpYnV0ZSBPcGFxdWUgY29waWVzIG9m IHRoZSBEb2N1bWVudAogICAgIG51bWJlcmluZyBtb3JlIHRoYW4gMTAwLCB5b3UgbXVzdCBlaXRo ZXIgaW5jbHVkZSBhIG1hY2hpbmUtcmVhZGFibGUKICAgICBUcmFuc3BhcmVudCBjb3B5IGFsb25n IHdpdGggZWFjaCBPcGFxdWUgY29weSwgb3Igc3RhdGUgaW4gb3Igd2l0aAogICAgIGVhY2ggT3Bh cXVlIGNvcHkgYSBjb21wdXRlci1uZXR3b3JrIGxvY2F0aW9uIGZyb20gd2hpY2ggdGhlIGdlbmVy YWwKICAgICBuZXR3b3JrLXVzaW5nIHB1YmxpYyBoYXMgYWNjZXNzIHRvIGRvd25sb2FkIHVzaW5n IHB1YmxpYy1zdGFuZGFyZAogICAgIG5ldHdvcmsgcHJvdG9jb2xzIGEgY29tcGxldGUgVHJhbnNw YXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGZyZWUKICAgICBvZiBhZGRlZCBtYXRlcmlhbC4g IElmIHlvdSB1c2UgdGhlIGxhdHRlciBvcHRpb24sIHlvdSBtdXN0IHRha2UKICAgICByZWFzb25h Ymx5IHBydWRlbnQgc3RlcHMsIHdoZW4geW91IGJlZ2luIGRpc3RyaWJ1dGlvbiBvZiBPcGFxdWUK ICAgICBjb3BpZXMgaW4gcXVhbnRpdHksIHRvIGVuc3VyZSB0aGF0IHRoaXMgVHJhbnNwYXJlbnQg Y29weSB3aWxsCiAgICAgcmVtYWluIHRodXMgYWNjZXNzaWJsZSBhdCB0aGUgc3RhdGVkIGxvY2F0 aW9uIHVudGlsIGF0IGxlYXN0IG9uZQogICAgIHllYXIgYWZ0ZXIgdGhlIGxhc3QgdGltZSB5b3Ug ZGlzdHJpYnV0ZSBhbiBPcGFxdWUgY29weSAoZGlyZWN0bHkgb3IKICAgICB0aHJvdWdoIHlvdXIg YWdlbnRzIG9yIHJldGFpbGVycykgb2YgdGhhdCBlZGl0aW9uIHRvIHRoZSBwdWJsaWMuCgogICAg IEl0IGlzIHJlcXVlc3RlZCwgYnV0IG5vdCByZXF1aXJlZCwgdGhhdCB5b3UgY29udGFjdCB0aGUg YXV0aG9ycyBvZgogICAgIHRoZSBEb2N1bWVudCB3ZWxsIGJlZm9yZSByZWRpc3RyaWJ1dGluZyBh bnkgbGFyZ2UgbnVtYmVyIG9mIGNvcGllcywKICAgICB0byBnaXZlIHRoZW0gYSBjaGFuY2UgdG8g cHJvdmlkZSB5b3Ugd2l0aCBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlCiAgICAgRG9jdW1lbnQu CgogIDQuIE1PRElGSUNBVElPTlMKCiAgICAgWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIGEg TW9kaWZpZWQgVmVyc2lvbiBvZiB0aGUgRG9jdW1lbnQKICAgICB1bmRlciB0aGUgY29uZGl0aW9u cyBvZiBzZWN0aW9ucyAyIGFuZCAzIGFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdQogICAgIHJlbGVh c2UgdGhlIE1vZGlmaWVkIFZlcnNpb24gdW5kZXIgcHJlY2lzZWx5IHRoaXMgTGljZW5zZSwgd2l0 aCB0aGUKICAgICBNb2RpZmllZCBWZXJzaW9uIGZpbGxpbmcgdGhlIHJvbGUgb2YgdGhlIERvY3Vt ZW50LCB0aHVzIGxpY2Vuc2luZwogICAgIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIG9m IHRoZSBNb2RpZmllZCBWZXJzaW9uIHRvIHdob2V2ZXIKICAgICBwb3NzZXNzZXMgYSBjb3B5IG9m IGl0LiAgSW4gYWRkaXRpb24sIHlvdSBtdXN0IGRvIHRoZXNlIHRoaW5ncyBpbgogICAgIHRoZSBN b2RpZmllZCBWZXJzaW9uOgoKICAgICAgIEEuIFVzZSBpbiB0aGUgVGl0bGUgUGFnZSAoYW5kIG9u IHRoZSBjb3ZlcnMsIGlmIGFueSkgYSB0aXRsZQogICAgICAgICAgZGlzdGluY3QgZnJvbSB0aGF0 IG9mIHRoZSBEb2N1bWVudCwgYW5kIGZyb20gdGhvc2Ugb2YgcHJldmlvdXMKICAgICAgICAgIHZl cnNpb25zICh3aGljaCBzaG91bGQsIGlmIHRoZXJlIHdlcmUgYW55LCBiZSBsaXN0ZWQgaW4gdGhl CiAgICAgICAgICBIaXN0b3J5IHNlY3Rpb24gb2YgdGhlIERvY3VtZW50KS4gIFlvdSBtYXkgdXNl IHRoZSBzYW1lIHRpdGxlCiAgICAgICAgICBhcyBhIHByZXZpb3VzIHZlcnNpb24gaWYgdGhlIG9y aWdpbmFsIHB1Ymxpc2hlciBvZiB0aGF0CiAgICAgICAgICB2ZXJzaW9uIGdpdmVzIHBlcm1pc3Np b24uCgogICAgICAgQi4gTGlzdCBvbiB0aGUgVGl0bGUgUGFnZSwgYXMgYXV0aG9ycywgb25lIG9y IG1vcmUgcGVyc29ucyBvcgogICAgICAgICAgZW50aXRpZXMgcmVzcG9uc2libGUgZm9yIGF1dGhv cnNoaXAgb2YgdGhlIG1vZGlmaWNhdGlvbnMgaW4KICAgICAgICAgIHRoZSBNb2RpZmllZCBWZXJz aW9uLCB0b2dldGhlciB3aXRoIGF0IGxlYXN0IGZpdmUgb2YgdGhlCiAgICAgICAgICBwcmluY2lw YWwgYXV0aG9ycyBvZiB0aGUgRG9jdW1lbnQgKGFsbCBvZiBpdHMgcHJpbmNpcGFsCiAgICAgICAg ICBhdXRob3JzLCBpZiBpdCBoYXMgZmV3ZXIgdGhhbiBmaXZlKSwgdW5sZXNzIHRoZXkgcmVsZWFz ZSB5b3UKICAgICAgICAgIGZyb20gdGhpcyByZXF1aXJlbWVudC4KCiAgICAgICBDLiBTdGF0ZSBv biB0aGUgVGl0bGUgcGFnZSB0aGUgbmFtZSBvZiB0aGUgcHVibGlzaGVyIG9mIHRoZQogICAgICAg ICAgTW9kaWZpZWQgVmVyc2lvbiwgYXMgdGhlIHB1Ymxpc2hlci4KCiAgICAgICBELiBQcmVzZXJ2 ZSBhbGwgdGhlIGNvcHlyaWdodCBub3RpY2VzIG9mIHRoZSBEb2N1bWVudC4KCiAgICAgICBFLiBB ZGQgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBmb3IgeW91ciBtb2RpZmljYXRpb25z CiAgICAgICAgICBhZGphY2VudCB0byB0aGUgb3RoZXIgY29weXJpZ2h0IG5vdGljZXMuCgogICAg ICAgRi4gSW5jbHVkZSwgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNvcHlyaWdodCBub3RpY2VzLCBh IGxpY2Vuc2UKICAgICAgICAgIG5vdGljZSBnaXZpbmcgdGhlIHB1YmxpYyBwZXJtaXNzaW9uIHRv IHVzZSB0aGUgTW9kaWZpZWQKICAgICAgICAgIFZlcnNpb24gdW5kZXIgdGhlIHRlcm1zIG9mIHRo aXMgTGljZW5zZSwgaW4gdGhlIGZvcm0gc2hvd24gaW4KICAgICAgICAgIHRoZSBBZGRlbmR1bSBi ZWxvdy4KCiAgICAgICBHLiBQcmVzZXJ2ZSBpbiB0aGF0IGxpY2Vuc2Ugbm90aWNlIHRoZSBmdWxs IGxpc3RzIG9mIEludmFyaWFudAogICAgICAgICAgU2VjdGlvbnMgYW5kIHJlcXVpcmVkIENvdmVy IFRleHRzIGdpdmVuIGluIHRoZSBEb2N1bWVudCdzCiAgICAgICAgICBsaWNlbnNlIG5vdGljZS4K CiAgICAgICBILiBJbmNsdWRlIGFuIHVuYWx0ZXJlZCBjb3B5IG9mIHRoaXMgTGljZW5zZS4KCiAg ICAgICBJLiBQcmVzZXJ2ZSB0aGUgc2VjdGlvbiBFbnRpdGxlZCAiSGlzdG9yeSIsIFByZXNlcnZl IGl0cyBUaXRsZSwKICAgICAgICAgIGFuZCBhZGQgdG8gaXQgYW4gaXRlbSBzdGF0aW5nIGF0IGxl YXN0IHRoZSB0aXRsZSwgeWVhciwgbmV3CiAgICAgICAgICBhdXRob3JzLCBhbmQgcHVibGlzaGVy IG9mIHRoZSBNb2RpZmllZCBWZXJzaW9uIGFzIGdpdmVuIG9uIHRoZQogICAgICAgICAgVGl0bGUg UGFnZS4gIElmIHRoZXJlIGlzIG5vIHNlY3Rpb24gRW50aXRsZWQgIkhpc3RvcnkiIGluIHRoZQog ICAgICAgICAgRG9jdW1lbnQsIGNyZWF0ZSBvbmUgc3RhdGluZyB0aGUgdGl0bGUsIHllYXIsIGF1 dGhvcnMsIGFuZAogICAgICAgICAgcHVibGlzaGVyIG9mIHRoZSBEb2N1bWVudCBhcyBnaXZlbiBv biBpdHMgVGl0bGUgUGFnZSwgdGhlbiBhZGQKICAgICAgICAgIGFuIGl0ZW0gZGVzY3JpYmluZyB0 aGUgTW9kaWZpZWQgVmVyc2lvbiBhcyBzdGF0ZWQgaW4gdGhlCiAgICAgICAgICBwcmV2aW91cyBz ZW50ZW5jZS4KCiAgICAgICBKLiBQcmVzZXJ2ZSB0aGUgbmV0d29yayBsb2NhdGlvbiwgaWYgYW55 LCBnaXZlbiBpbiB0aGUgRG9jdW1lbnQKICAgICAgICAgIGZvciBwdWJsaWMgYWNjZXNzIHRvIGEg VHJhbnNwYXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGFuZAogICAgICAgICAgbGlrZXdpc2Ug dGhlIG5ldHdvcmsgbG9jYXRpb25zIGdpdmVuIGluIHRoZSBEb2N1bWVudCBmb3IKICAgICAgICAg IHByZXZpb3VzIHZlcnNpb25zIGl0IHdhcyBiYXNlZCBvbi4gIFRoZXNlIG1heSBiZSBwbGFjZWQg aW4gdGhlCiAgICAgICAgICAiSGlzdG9yeSIgc2VjdGlvbi4gIFlvdSBtYXkgb21pdCBhIG5ldHdv cmsgbG9jYXRpb24gZm9yIGEgd29yawogICAgICAgICAgdGhhdCB3YXMgcHVibGlzaGVkIGF0IGxl YXN0IGZvdXIgeWVhcnMgYmVmb3JlIHRoZSBEb2N1bWVudAogICAgICAgICAgaXRzZWxmLCBvciBp ZiB0aGUgb3JpZ2luYWwgcHVibGlzaGVyIG9mIHRoZSB2ZXJzaW9uIGl0IHJlZmVycwogICAgICAg ICAgdG8gZ2l2ZXMgcGVybWlzc2lvbi4KCiAgICAgICBLLiBGb3IgYW55IHNlY3Rpb24gRW50aXRs ZWQgIkFja25vd2xlZGdlbWVudHMiIG9yICJEZWRpY2F0aW9ucyIsCiAgICAgICAgICBQcmVzZXJ2 ZSB0aGUgVGl0bGUgb2YgdGhlIHNlY3Rpb24sIGFuZCBwcmVzZXJ2ZSBpbiB0aGUgc2VjdGlvbgog ICAgICAgICAgYWxsIHRoZSBzdWJzdGFuY2UgYW5kIHRvbmUgb2YgZWFjaCBvZiB0aGUgY29udHJp YnV0b3IKICAgICAgICAgIGFja25vd2xlZGdlbWVudHMgYW5kL29yIGRlZGljYXRpb25zIGdpdmVu IHRoZXJlaW4uCgogICAgICAgTC4gUHJlc2VydmUgYWxsIHRoZSBJbnZhcmlhbnQgU2VjdGlvbnMg b2YgdGhlIERvY3VtZW50LCB1bmFsdGVyZWQKICAgICAgICAgIGluIHRoZWlyIHRleHQgYW5kIGlu IHRoZWlyIHRpdGxlcy4gIFNlY3Rpb24gbnVtYmVycyBvciB0aGUKICAgICAgICAgIGVxdWl2YWxl bnQgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNlY3Rpb24gdGl0bGVzLgoKICAgICAg IE0uIERlbGV0ZSBhbnkgc2VjdGlvbiBFbnRpdGxlZCAiRW5kb3JzZW1lbnRzIi4gIFN1Y2ggYSBz ZWN0aW9uCiAgICAgICAgICBtYXkgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBNb2RpZmllZCBWZXJz aW9uLgoKICAgICAgIE4uIERvIG5vdCByZXRpdGxlIGFueSBleGlzdGluZyBzZWN0aW9uIHRvIGJl IEVudGl0bGVkCiAgICAgICAgICAiRW5kb3JzZW1lbnRzIiBvciB0byBjb25mbGljdCBpbiB0aXRs ZSB3aXRoIGFueSBJbnZhcmlhbnQKICAgICAgICAgIFNlY3Rpb24uCgogICAgICAgTy4gUHJlc2Vy dmUgYW55IFdhcnJhbnR5IERpc2NsYWltZXJzLgoKICAgICBJZiB0aGUgTW9kaWZpZWQgVmVyc2lv biBpbmNsdWRlcyBuZXcgZnJvbnQtbWF0dGVyIHNlY3Rpb25zIG9yCiAgICAgYXBwZW5kaWNlcyB0 aGF0IHF1YWxpZnkgYXMgU2Vjb25kYXJ5IFNlY3Rpb25zIGFuZCBjb250YWluIG5vCiAgICAgbWF0 ZXJpYWwgY29waWVkIGZyb20gdGhlIERvY3VtZW50LCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIGRl c2lnbmF0ZQogICAgIHNvbWUgb3IgYWxsIG9mIHRoZXNlIHNlY3Rpb25zIGFzIGludmFyaWFudC4g IFRvIGRvIHRoaXMsIGFkZCB0aGVpcgogICAgIHRpdGxlcyB0byB0aGUgbGlzdCBvZiBJbnZhcmlh bnQgU2VjdGlvbnMgaW4gdGhlIE1vZGlmaWVkIFZlcnNpb24ncwogICAgIGxpY2Vuc2Ugbm90aWNl LiAgVGhlc2UgdGl0bGVzIG11c3QgYmUgZGlzdGluY3QgZnJvbSBhbnkgb3RoZXIKICAgICBzZWN0 aW9uIHRpdGxlcy4KCiAgICAgWW91IG1heSBhZGQgYSBzZWN0aW9uIEVudGl0bGVkICJFbmRvcnNl bWVudHMiLCBwcm92aWRlZCBpdCBjb250YWlucwogICAgIG5vdGhpbmcgYnV0IGVuZG9yc2VtZW50 cyBvZiB5b3VyIE1vZGlmaWVkIFZlcnNpb24gYnkgdmFyaW91cwogICAgIHBhcnRpZXMtLWZvciBl eGFtcGxlLCBzdGF0ZW1lbnRzIG9mIHBlZXIgcmV2aWV3IG9yIHRoYXQgdGhlIHRleHQKICAgICBo YXMgYmVlbiBhcHByb3ZlZCBieSBhbiBvcmdhbml6YXRpb24gYXMgdGhlIGF1dGhvcml0YXRpdmUK ICAgICBkZWZpbml0aW9uIG9mIGEgc3RhbmRhcmQuCgogICAgIFlvdSBtYXkgYWRkIGEgcGFzc2Fn ZSBvZiB1cCB0byBmaXZlIHdvcmRzIGFzIGEgRnJvbnQtQ292ZXIgVGV4dCwKICAgICBhbmQgYSBw YXNzYWdlIG9mIHVwIHRvIDI1IHdvcmRzIGFzIGEgQmFjay1Db3ZlciBUZXh0LCB0byB0aGUgZW5k IG9mCiAgICAgdGhlIGxpc3Qgb2YgQ292ZXIgVGV4dHMgaW4gdGhlIE1vZGlmaWVkIFZlcnNpb24u ICBPbmx5IG9uZSBwYXNzYWdlCiAgICAgb2YgRnJvbnQtQ292ZXIgVGV4dCBhbmQgb25lIG9mIEJh Y2stQ292ZXIgVGV4dCBtYXkgYmUgYWRkZWQgYnkgKG9yCiAgICAgdGhyb3VnaCBhcnJhbmdlbWVu dHMgbWFkZSBieSkgYW55IG9uZSBlbnRpdHkuICBJZiB0aGUgRG9jdW1lbnQKICAgICBhbHJlYWR5 IGluY2x1ZGVzIGEgY292ZXIgdGV4dCBmb3IgdGhlIHNhbWUgY292ZXIsIHByZXZpb3VzbHkgYWRk ZWQKICAgICBieSB5b3Ugb3IgYnkgYXJyYW5nZW1lbnQgbWFkZSBieSB0aGUgc2FtZSBlbnRpdHkg eW91IGFyZSBhY3Rpbmcgb24KICAgICBiZWhhbGYgb2YsIHlvdSBtYXkgbm90IGFkZCBhbm90aGVy OyBidXQgeW91IG1heSByZXBsYWNlIHRoZSBvbGQKICAgICBvbmUsIG9uIGV4cGxpY2l0IHBlcm1p c3Npb24gZnJvbSB0aGUgcHJldmlvdXMgcHVibGlzaGVyIHRoYXQgYWRkZWQKICAgICB0aGUgb2xk IG9uZS4KCiAgICAgVGhlIGF1dGhvcihzKSBhbmQgcHVibGlzaGVyKHMpIG9mIHRoZSBEb2N1bWVu dCBkbyBub3QgYnkgdGhpcwogICAgIExpY2Vuc2UgZ2l2ZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGVp ciBuYW1lcyBmb3IgcHVibGljaXR5IGZvciBvciB0bwogICAgIGFzc2VydCBvciBpbXBseSBlbmRv cnNlbWVudCBvZiBhbnkgTW9kaWZpZWQgVmVyc2lvbi4KCiAgNS4gQ09NQklOSU5HIERPQ1VNRU5U UwoKICAgICBZb3UgbWF5IGNvbWJpbmUgdGhlIERvY3VtZW50IHdpdGggb3RoZXIgZG9jdW1lbnRz IHJlbGVhc2VkIHVuZGVyCiAgICAgdGhpcyBMaWNlbnNlLCB1bmRlciB0aGUgdGVybXMgZGVmaW5l ZCBpbiBzZWN0aW9uIDQgYWJvdmUgZm9yCiAgICAgbW9kaWZpZWQgdmVyc2lvbnMsIHByb3ZpZGVk IHRoYXQgeW91IGluY2x1ZGUgaW4gdGhlIGNvbWJpbmF0aW9uIGFsbAogICAgIG9mIHRoZSBJbnZh cmlhbnQgU2VjdGlvbnMgb2YgYWxsIG9mIHRoZSBvcmlnaW5hbCBkb2N1bWVudHMsCiAgICAgdW5t b2RpZmllZCwgYW5kIGxpc3QgdGhlbSBhbGwgYXMgSW52YXJpYW50IFNlY3Rpb25zIG9mIHlvdXIK ICAgICBjb21iaW5lZCB3b3JrIGluIGl0cyBsaWNlbnNlIG5vdGljZSwgYW5kIHRoYXQgeW91IHBy ZXNlcnZlIGFsbAogICAgIHRoZWlyIFdhcnJhbnR5IERpc2NsYWltZXJzLgoKICAgICBUaGUgY29t YmluZWQgd29yayBuZWVkIG9ubHkgY29udGFpbiBvbmUgY29weSBvZiB0aGlzIExpY2Vuc2UsIGFu ZAogICAgIG11bHRpcGxlIGlkZW50aWNhbCBJbnZhcmlhbnQgU2VjdGlvbnMgbWF5IGJlIHJlcGxh Y2VkIHdpdGggYSBzaW5nbGUKICAgICBjb3B5LiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIEludmFy aWFudCBTZWN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICBidXQgZGlmZmVyZW50IGNvbnRl bnRzLCBtYWtlIHRoZSB0aXRsZSBvZiBlYWNoIHN1Y2ggc2VjdGlvbiB1bmlxdWUKICAgICBieSBh ZGRpbmcgYXQgdGhlIGVuZCBvZiBpdCwgaW4gcGFyZW50aGVzZXMsIHRoZSBuYW1lIG9mIHRoZQog ICAgIG9yaWdpbmFsIGF1dGhvciBvciBwdWJsaXNoZXIgb2YgdGhhdCBzZWN0aW9uIGlmIGtub3du LCBvciBlbHNlIGEKICAgICB1bmlxdWUgbnVtYmVyLiAgTWFrZSB0aGUgc2FtZSBhZGp1c3RtZW50 IHRvIHRoZSBzZWN0aW9uIHRpdGxlcyBpbgogICAgIHRoZSBsaXN0IG9mIEludmFyaWFudCBTZWN0 aW9ucyBpbiB0aGUgbGljZW5zZSBub3RpY2Ugb2YgdGhlCiAgICAgY29tYmluZWQgd29yay4KCiAg ICAgSW4gdGhlIGNvbWJpbmF0aW9uLCB5b3UgbXVzdCBjb21iaW5lIGFueSBzZWN0aW9ucyBFbnRp dGxlZAogICAgICJIaXN0b3J5IiBpbiB0aGUgdmFyaW91cyBvcmlnaW5hbCBkb2N1bWVudHMsIGZv cm1pbmcgb25lIHNlY3Rpb24KICAgICBFbnRpdGxlZCAiSGlzdG9yeSI7IGxpa2V3aXNlIGNvbWJp bmUgYW55IHNlY3Rpb25zIEVudGl0bGVkCiAgICAgIkFja25vd2xlZGdlbWVudHMiLCBhbmQgYW55 IHNlY3Rpb25zIEVudGl0bGVkICJEZWRpY2F0aW9ucyIuICBZb3UKICAgICBtdXN0IGRlbGV0ZSBh bGwgc2VjdGlvbnMgRW50aXRsZWQgIkVuZG9yc2VtZW50cy4iCgogIDYuIENPTExFQ1RJT05TIE9G IERPQ1VNRU5UUwoKICAgICBZb3UgbWF5IG1ha2UgYSBjb2xsZWN0aW9uIGNvbnNpc3Rpbmcgb2Yg dGhlIERvY3VtZW50IGFuZCBvdGhlcgogICAgIGRvY3VtZW50cyByZWxlYXNlZCB1bmRlciB0aGlz IExpY2Vuc2UsIGFuZCByZXBsYWNlIHRoZSBpbmRpdmlkdWFsCiAgICAgY29waWVzIG9mIHRoaXMg TGljZW5zZSBpbiB0aGUgdmFyaW91cyBkb2N1bWVudHMgd2l0aCBhIHNpbmdsZSBjb3B5CiAgICAg dGhhdCBpcyBpbmNsdWRlZCBpbiB0aGUgY29sbGVjdGlvbiwgcHJvdmlkZWQgdGhhdCB5b3UgZm9s bG93IHRoZQogICAgIHJ1bGVzIG9mIHRoaXMgTGljZW5zZSBmb3IgdmVyYmF0aW0gY29weWluZyBv ZiBlYWNoIG9mIHRoZSBkb2N1bWVudHMKICAgICBpbiBhbGwgb3RoZXIgcmVzcGVjdHMuCgogICAg IFlvdSBtYXkgZXh0cmFjdCBhIHNpbmdsZSBkb2N1bWVudCBmcm9tIHN1Y2ggYSBjb2xsZWN0aW9u LCBhbmQKICAgICBkaXN0cmlidXRlIGl0IGluZGl2aWR1YWxseSB1bmRlciB0aGlzIExpY2Vuc2Us IHByb3ZpZGVkIHlvdSBpbnNlcnQKICAgICBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGludG8gdGhl IGV4dHJhY3RlZCBkb2N1bWVudCwgYW5kIGZvbGxvdyB0aGlzCiAgICAgTGljZW5zZSBpbiBhbGwg b3RoZXIgcmVzcGVjdHMgcmVnYXJkaW5nIHZlcmJhdGltIGNvcHlpbmcgb2YgdGhhdAogICAgIGRv Y3VtZW50LgoKICA3LiBBR0dSRUdBVElPTiBXSVRIIElOREVQRU5ERU5UIFdPUktTCgogICAgIEEg Y29tcGlsYXRpb24gb2YgdGhlIERvY3VtZW50IG9yIGl0cyBkZXJpdmF0aXZlcyB3aXRoIG90aGVy CiAgICAgc2VwYXJhdGUgYW5kIGluZGVwZW5kZW50IGRvY3VtZW50cyBvciB3b3JrcywgaW4gb3Ig b24gYSB2b2x1bWUgb2YgYQogICAgIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMg Y2FsbGVkIGFuICJhZ2dyZWdhdGUiIGlmIHRoZQogICAgIGNvcHlyaWdodCByZXN1bHRpbmcgZnJv bSB0aGUgY29tcGlsYXRpb24gaXMgbm90IHVzZWQgdG8gbGltaXQgdGhlCiAgICAgbGVnYWwgcmln aHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzIGJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFs CiAgICAgd29ya3MgcGVybWl0LiAgV2hlbiB0aGUgRG9jdW1lbnQgaXMgaW5jbHVkZWQgaW4gYW4g YWdncmVnYXRlLCB0aGlzCiAgICAgTGljZW5zZSBkb2VzIG5vdCBhcHBseSB0byB0aGUgb3RoZXIg d29ya3MgaW4gdGhlIGFnZ3JlZ2F0ZSB3aGljaAogICAgIGFyZSBub3QgdGhlbXNlbHZlcyBkZXJp dmF0aXZlIHdvcmtzIG9mIHRoZSBEb2N1bWVudC4KCiAgICAgSWYgdGhlIENvdmVyIFRleHQgcmVx dWlyZW1lbnQgb2Ygc2VjdGlvbiAzIGlzIGFwcGxpY2FibGUgdG8gdGhlc2UKICAgICBjb3BpZXMg b2YgdGhlIERvY3VtZW50LCB0aGVuIGlmIHRoZSBEb2N1bWVudCBpcyBsZXNzIHRoYW4gb25lIGhh bGYKICAgICBvZiB0aGUgZW50aXJlIGFnZ3JlZ2F0ZSwgdGhlIERvY3VtZW50J3MgQ292ZXIgVGV4 dHMgbWF5IGJlIHBsYWNlZAogICAgIG9uIGNvdmVycyB0aGF0IGJyYWNrZXQgdGhlIERvY3VtZW50 IHdpdGhpbiB0aGUgYWdncmVnYXRlLCBvciB0aGUKICAgICBlbGVjdHJvbmljIGVxdWl2YWxlbnQg b2YgY292ZXJzIGlmIHRoZSBEb2N1bWVudCBpcyBpbiBlbGVjdHJvbmljCiAgICAgZm9ybS4gIE90 aGVyd2lzZSB0aGV5IG11c3QgYXBwZWFyIG9uIHByaW50ZWQgY292ZXJzIHRoYXQgYnJhY2tldAog ICAgIHRoZSB3aG9sZSBhZ2dyZWdhdGUuCgogIDguIFRSQU5TTEFUSU9OCgogICAgIFRyYW5zbGF0 aW9uIGlzIGNvbnNpZGVyZWQgYSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgc28geW91IG1heQogICAg IGRpc3RyaWJ1dGUgdHJhbnNsYXRpb25zIG9mIHRoZSBEb2N1bWVudCB1bmRlciB0aGUgdGVybXMg b2Ygc2VjdGlvbgogICAgIDQuICBSZXBsYWNpbmcgSW52YXJpYW50IFNlY3Rpb25zIHdpdGggdHJh bnNsYXRpb25zIHJlcXVpcmVzIHNwZWNpYWwKICAgICBwZXJtaXNzaW9uIGZyb20gdGhlaXIgY29w eXJpZ2h0IGhvbGRlcnMsIGJ1dCB5b3UgbWF5IGluY2x1ZGUKICAgICB0cmFuc2xhdGlvbnMgb2Yg c29tZSBvciBhbGwgSW52YXJpYW50IFNlY3Rpb25zIGluIGFkZGl0aW9uIHRvIHRoZQogICAgIG9y aWdpbmFsIHZlcnNpb25zIG9mIHRoZXNlIEludmFyaWFudCBTZWN0aW9ucy4gIFlvdSBtYXkgaW5j bHVkZSBhCiAgICAgdHJhbnNsYXRpb24gb2YgdGhpcyBMaWNlbnNlLCBhbmQgYWxsIHRoZSBsaWNl bnNlIG5vdGljZXMgaW4gdGhlCiAgICAgRG9jdW1lbnQsIGFuZCBhbnkgV2FycmFudHkgRGlzY2xh aW1lcnMsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28KICAgICBpbmNsdWRlIHRoZSBvcmlnaW5hbCBF bmdsaXNoIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIGFuZCB0aGUKICAgICBvcmlnaW5hbCB2ZXJz aW9ucyBvZiB0aG9zZSBub3RpY2VzIGFuZCBkaXNjbGFpbWVycy4gIEluIGNhc2Ugb2YgYQogICAg IGRpc2FncmVlbWVudCBiZXR3ZWVuIHRoZSB0cmFuc2xhdGlvbiBhbmQgdGhlIG9yaWdpbmFsIHZl cnNpb24gb2YKICAgICB0aGlzIExpY2Vuc2Ugb3IgYSBub3RpY2Ugb3IgZGlzY2xhaW1lciwgdGhl IG9yaWdpbmFsIHZlcnNpb24gd2lsbAogICAgIHByZXZhaWwuCgogICAgIElmIGEgc2VjdGlvbiBp biB0aGUgRG9jdW1lbnQgaXMgRW50aXRsZWQgIkFja25vd2xlZGdlbWVudHMiLAogICAgICJEZWRp Y2F0aW9ucyIsIG9yICJIaXN0b3J5IiwgdGhlIHJlcXVpcmVtZW50IChzZWN0aW9uIDQpIHRvCiAg ICAgUHJlc2VydmUgaXRzIFRpdGxlIChzZWN0aW9uIDEpIHdpbGwgdHlwaWNhbGx5IHJlcXVpcmUg Y2hhbmdpbmcgdGhlCiAgICAgYWN0dWFsIHRpdGxlLgoKICA5LiBURVJNSU5BVElPTgoKICAgICBZ b3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIERv Y3VtZW50CiAgICAgZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vu c2UuICBBbnkgYXR0ZW1wdAogICAgIG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vu c2UsIG9yIGRpc3RyaWJ1dGUgaXQgaXMgdm9pZCwKICAgICBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5 IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCgogICAgIEhvd2V2ZXIs IGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCiAg ICAgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0 ZWQgKGEpCiAgICAgcHJvdmlzaW9uYWxseSwgdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0 IGhvbGRlciBleHBsaWNpdGx5IGFuZAogICAgIGZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vu c2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZQogICAgIGNvcHlyaWdodCBob2xkZXIgZmFp bHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUKICAgICByZWFzb25hYmxl IG1lYW5zIHByaW9yIHRvIDYwIGRheXMgYWZ0ZXIgdGhlIGNlc3NhdGlvbi4KCiAgICAgTW9yZW92 ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCiAg ICAgcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmll cyB5b3Ugb2YgdGhlCiAgICAgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucywgdGhp cyBpcyB0aGUgZmlyc3QgdGltZSB5b3UgaGF2ZQogICAgIHJlY2VpdmVkIG5vdGljZSBvZiB2aW9s YXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20KICAgICB0aGF0IGNvcHly aWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMK ICAgICBhZnRlciB5b3VyIHJlY2VpcHQgb2YgdGhlIG5vdGljZS4KCiAgICAgVGVybWluYXRpb24g b2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZQogICAg IHRoZSBsaWNlbnNlcyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdo dHMgZnJvbSB5b3UKICAgICB1bmRlciB0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZl IGJlZW4gdGVybWluYXRlZCBhbmQgbm90CiAgICAgcGVybWFuZW50bHkgcmVpbnN0YXRlZCwgcmVj ZWlwdCBvZiBhIGNvcHkgb2Ygc29tZSBvciBhbGwgb2YgdGhlCiAgICAgc2FtZSBtYXRlcmlhbCBk b2VzIG5vdCBnaXZlIHlvdSBhbnkgcmlnaHRzIHRvIHVzZSBpdC4KCiAgMTAuIEZVVFVSRSBSRVZJ U0lPTlMgT0YgVEhJUyBMSUNFTlNFCgogICAgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24g bWF5IHB1Ymxpc2ggbmV3LCByZXZpc2VkIHZlcnNpb25zIG9mCiAgICAgdGhlIEdOVSBGcmVlIERv Y3VtZW50YXRpb24gTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3CiAgICAgdmVy c2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBi dXQgbWF5CiAgICAgZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBj b25jZXJucy4gIFNlZQogICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCgogICAg IEVhY2ggdmVyc2lvbiBvZiB0aGUgTGljZW5zZSBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZl cnNpb24KICAgICBudW1iZXIuICBJZiB0aGUgRG9jdW1lbnQgc3BlY2lmaWVzIHRoYXQgYSBwYXJ0 aWN1bGFyIG51bWJlcmVkCiAgICAgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2UgIm9yIGFueSBsYXRl ciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UKICAgICBoYXZlIHRoZSBvcHRpb24gb2YgZm9s bG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YKICAgICB0aGF0IHNwZWNp ZmllZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHRoYXQgaGFzIGJlZW4KICAgICBw dWJsaXNoZWQgKG5vdCBhcyBhIGRyYWZ0KSBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LiAgSWYgdGhlCiAgICAgRG9jdW1lbnQgZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVy IG9mIHRoaXMgTGljZW5zZSwgeW91IG1heQogICAgIGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1 Ymxpc2hlZCAobm90IGFzIGEgZHJhZnQpIGJ5IHRoZSBGcmVlCiAgICAgU29mdHdhcmUgRm91bmRh dGlvbi4gIElmIHRoZSBEb2N1bWVudCBzcGVjaWZpZXMgdGhhdCBhIHByb3h5IGNhbgogICAgIGRl Y2lkZSB3aGljaCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0 aGF0CiAgICAgcHJveHkncyBwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJz aW9uIHBlcm1hbmVudGx5CiAgICAgYXV0aG9yaXplcyB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lv biBmb3IgdGhlIERvY3VtZW50LgoKICAxMS4gUkVMSUNFTlNJTkcKCiAgICAgIk1hc3NpdmUgTXVs dGlhdXRob3IgQ29sbGFib3JhdGlvbiBTaXRlIiAob3IgIk1NQyBTaXRlIikgbWVhbnMgYW55CiAg ICAgV29ybGQgV2lkZSBXZWIgc2VydmVyIHRoYXQgcHVibGlzaGVzIGNvcHlyaWdodGFibGUgd29y a3MgYW5kIGFsc28KICAgICBwcm92aWRlcyBwcm9taW5lbnQgZmFjaWxpdGllcyBmb3IgYW55Ym9k eSB0byBlZGl0IHRob3NlIHdvcmtzLiAgQQogICAgIHB1YmxpYyB3aWtpIHRoYXQgYW55Ym9keSBj YW4gZWRpdCBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggYSBzZXJ2ZXIuCiAgICAgQSAiTWFzc2l2ZSBN dWx0aWF1dGhvciBDb2xsYWJvcmF0aW9uIiAob3IgIk1NQyIpIGNvbnRhaW5lZCBpbiB0aGUKICAg ICBzaXRlIG1lYW5zIGFueSBzZXQgb2YgY29weXJpZ2h0YWJsZSB3b3JrcyB0aHVzIHB1Ymxpc2hl ZCBvbiB0aGUgTU1DCiAgICAgc2l0ZS4KCiAgICAgIkNDLUJZLVNBIiBtZWFucyB0aGUgQ3JlYXRp dmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAzLjAKICAgICBsaWNlbnNlIHB1Ymxp c2hlZCBieSBDcmVhdGl2ZSBDb21tb25zIENvcnBvcmF0aW9uLCBhIG5vdC1mb3ItcHJvZml0CiAg ICAgY29ycG9yYXRpb24gd2l0aCBhIHByaW5jaXBhbCBwbGFjZSBvZiBidXNpbmVzcyBpbiBTYW4g RnJhbmNpc2NvLAogICAgIENhbGlmb3JuaWEsIGFzIHdlbGwgYXMgZnV0dXJlIGNvcHlsZWZ0IHZl cnNpb25zIG9mIHRoYXQgbGljZW5zZQogICAgIHB1Ymxpc2hlZCBieSB0aGF0IHNhbWUgb3JnYW5p emF0aW9uLgoKICAgICAiSW5jb3Jwb3JhdGUiIG1lYW5zIHRvIHB1Ymxpc2ggb3IgcmVwdWJsaXNo IGEgRG9jdW1lbnQsIGluIHdob2xlIG9yCiAgICAgaW4gcGFydCwgYXMgcGFydCBvZiBhbm90aGVy IERvY3VtZW50LgoKICAgICBBbiBNTUMgaXMgImVsaWdpYmxlIGZvciByZWxpY2Vuc2luZyIgaWYg aXQgaXMgbGljZW5zZWQgdW5kZXIgdGhpcwogICAgIExpY2Vuc2UsIGFuZCBpZiBhbGwgd29ya3Mg dGhhdCB3ZXJlIGZpcnN0IHB1Ymxpc2hlZCB1bmRlciB0aGlzCiAgICAgTGljZW5zZSBzb21ld2hl cmUgb3RoZXIgdGhhbiB0aGlzIE1NQywgYW5kIHN1YnNlcXVlbnRseQogICAgIGluY29ycG9yYXRl ZCBpbiB3aG9sZSBvciBpbiBwYXJ0IGludG8gdGhlIE1NQywgKDEpIGhhZCBubyBjb3ZlcgogICAg IHRleHRzIG9yIGludmFyaWFudCBzZWN0aW9ucywgYW5kICgyKSB3ZXJlIHRodXMgaW5jb3Jwb3Jh dGVkIHByaW9yCiAgICAgdG8gTm92ZW1iZXIgMSwgMjAwOC4KCiAgICAgVGhlIG9wZXJhdG9yIG9m IGFuIE1NQyBTaXRlIG1heSByZXB1Ymxpc2ggYW4gTU1DIGNvbnRhaW5lZCBpbiB0aGUKICAgICBz aXRlIHVuZGVyIENDLUJZLVNBIG9uIHRoZSBzYW1lIHNpdGUgYXQgYW55IHRpbWUgYmVmb3JlIEF1 Z3VzdCAxLAogICAgIDIwMDksIHByb3ZpZGVkIHRoZSBNTUMgaXMgZWxpZ2libGUgZm9yIHJlbGlj ZW5zaW5nLgoKQURERU5EVU06IEhvdyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRvY3Vt ZW50cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgpUbyB1c2UgdGhpcyBMaWNlbnNlIGluIGEgZG9jdW1lbnQgeW91IGhhdmUgd3JpdHRlbiwgaW5j bHVkZSBhIGNvcHkgb2YKdGhlIExpY2Vuc2UgaW4gdGhlIGRvY3VtZW50IGFuZCBwdXQgdGhlIGZv bGxvd2luZyBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UKbm90aWNlcyBqdXN0IGFmdGVyIHRoZSB0aXRs ZSBwYWdlOgoKICAgICAgIENvcHlyaWdodCAoQykgIFlFQVIgIFlPVVIgTkFNRS4KICAgICAgIFBl cm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhp cyBkb2N1bWVudAogICAgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zCiAgICAgICBvciBhbnkgbGF0ZXIgdmVyc2lvbiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKICAgICAgIHdpdGggbm8g SW52YXJpYW50IFNlY3Rpb25zLCBubyBGcm9udC1Db3ZlciBUZXh0cywgYW5kIG5vIEJhY2stQ292 ZXIKICAgICAgIFRleHRzLiAgQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRo ZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCiAgICAgICBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZScnLgoKICAgSWYgeW91IGhhdmUgSW52YXJpYW50IFNlY3Rpb25zLCBGcm9udC1Db3ZlciBUZXh0 cyBhbmQgQmFjay1Db3ZlcgpUZXh0cywgcmVwbGFjZSB0aGUgIndpdGguLi5UZXh0cy4iIGxpbmUg d2l0aCB0aGlzOgoKICAgICAgICAgd2l0aCB0aGUgSW52YXJpYW50IFNlY3Rpb25zIGJlaW5nIExJ U1QgVEhFSVIgVElUTEVTLCB3aXRoCiAgICAgICAgIHRoZSBGcm9udC1Db3ZlciBUZXh0cyBiZWlu ZyBMSVNULCBhbmQgd2l0aCB0aGUgQmFjay1Db3ZlciBUZXh0cwogICAgICAgICBiZWluZyBMSVNU LgoKICAgSWYgeW91IGhhdmUgSW52YXJpYW50IFNlY3Rpb25zIHdpdGhvdXQgQ292ZXIgVGV4dHMs IG9yIHNvbWUgb3RoZXIKY29tYmluYXRpb24gb2YgdGhlIHRocmVlLCBtZXJnZSB0aG9zZSB0d28g YWx0ZXJuYXRpdmVzIHRvIHN1aXQgdGhlCnNpdHVhdGlvbi4KCiAgIElmIHlvdXIgZG9jdW1lbnQg Y29udGFpbnMgbm9udHJpdmlhbCBleGFtcGxlcyBvZiBwcm9ncmFtIGNvZGUsIHdlCnJlY29tbWVu ZCByZWxlYXNpbmcgdGhlc2UgZXhhbXBsZXMgaW4gcGFyYWxsZWwgdW5kZXIgeW91ciBjaG9pY2Ug b2YgZnJlZQpzb2Z0d2FyZSBsaWNlbnNlLCBzdWNoIGFzIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSwgdG8gcGVybWl0CnRoZWlyIHVzZSBpbiBmcmVlIHNvZnR3YXJlLgoKHwpGaWxlOiBk b2N1b1hFTlUuaW5mbywgIE5vZGU6IEluZGV4LCAgUHJldjogR05VIEZyZWUgRG9jdW1lbnRhdGlv biBMaWNlbnNlLCAgVXA6IFRvcAoKSW5kZXgKKioqKioKCgAIW2luZGV4AAhdCiogTWVudToKCiog YWN0aXZhdGluZyBFZ2xvdCBmb3IgYSBwcm9qZWN0OiAgICAgICAgU3RhcnRpbmcgRWdsb3QuICAg ICAgKGxpbmUgICA2KQoqIGJ1ZmZlcnMgbWFuYWdlZCBieSBFZ2xvdDogICAgICAgICAgICAgIEVn bG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICAgNikKKiBidWcgcmVwb3J0czogICAgICAgICAgICAg ICAgICAgICAgICAgICBSZXBvcnRpbmcgYnVncy4gICAgICAobGluZSAgIDYpCiogY29kZSBhY3Rp b25zOiAgICAgICAgICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUg IDc5KQoqIGNvbW1hbmQtbGluZSBhcmd1bWVudHM6ICAgICAgICAgICAgICAgIFVzZXItc3BlY2lm aWMgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgIDYpCiogY29tbWFuZHMsIEVnbG90OiAgICAg ICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgICA2KQoqIGN1c3Rv bWl6aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChs aW5lICAgNikKKiBkb2N1bWVudGF0aW9uIHVzaW5nIEVnbG90OiAgICAgICAgICAgICBFZ2xvdCBD b21tYW5kcy4gICAgICAobGluZSAxNTEpCiogZWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU3RhcnRpbmcgRWdsb3QuICAgICAgKGxpbmUgICA2KQoqIGVnbG90LWF1dG9yZWNv bm5lY3Q6ICAgICAgICAgICAgICAgICAgIEVnbG90IFZhcmlhYmxlcy4gICAgIChsaW5lICAgOCkK KiBlZ2xvdC1hdXRvc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMu ICAgICAobGluZSAgNDIpCiogZWdsb3QtY29uZmlybS1zZXJ2ZXItZWRpdHM6ICAgICAgICAgICAg RWdsb3QgVmFyaWFibGVzLiAgICAgKGxpbmUgIDQ4KQoqIGVnbG90LWNvbm5lY3QtaG9vazogICAg ICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICAzOSkKKiBlZ2xvdC1j b25uZWN0LXRpbWVvdXQ6ICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAgICAobGlu ZSAgMTkpCiogZWdsb3QtZW5zdXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnRpbmcg RWdsb3QuICAgICAgKGxpbmUgIDI5KQoqIGVnbG90LWV2ZW50cy1idWZmZXItY29uZmlnOiAgICAg ICAgICAgIEVnbG90IFZhcmlhYmxlcy4gICAgIChsaW5lICAzNCkKKiBlZ2xvdC1leHRlbmQtdG8t eHJlZjogICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAgICAobGluZSAgNjIpCiog ZWdsb3QtaWdub3JlZC1zZXJ2ZXItY2FwYWJpbGl0aWVzOiAgICAgRWdsb3QgVmFyaWFibGVzLiAg ICAgKGxpbmUgIDU3KQoqIGVnbG90LW1hbmFnZWQtbW9kZS1ob29rOiAgICAgICAgICAgICAgIEVn bG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICA3NCkKKiBlZ2xvdC1tYW5hZ2VkLXA6ICAgICAgICAg ICAgICAgICAgICAgICBFZ2xvdCBhbmQgQnVmZmVycy4gICAobGluZSAgNzQpCiogZWdsb3QtbWVu dTogICAgICAgICAgICAgICAgICAgICAgICAgICAgRWdsb3QgYW5kIEJ1ZmZlcnMuICAgKGxpbmUg IDUzKQoqIGVnbG90LW1vZGUtbWFwOiAgICAgICAgICAgICAgICAgICAgICAgIEVnbG90IFZhcmlh Ymxlcy4gICAgIChsaW5lICA3MSkKKiBlZ2xvdC1yZXBvcnQtcHJvZ3Jlc3M6ICAgICAgICAgICAg ICAgICBDdXN0b21pemluZyBFZ2xvdC4gICAobGluZSAgNjMpCiogZWdsb3Qtc2VydmVyLWluaXRp YWxpemVkLWhvb2s6ICAgICAgICAgQ3VzdG9taXppbmcgRWdsb3QuICAgKGxpbmUgIDM2KQoqIGVn bG90LXNlcnZlci1wcm9ncmFtczogICAgICAgICAgICAgICAgIFNldHRpbmcgVXAgTFNQIFNlcnZl cnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpbmUgIDE5KQoqIGVnbG90LXNob3ctd29ya3NwYWNlLWNvbmZpZ3VyYXRpb246 ICAgIFByb2plY3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgMzIpCiogZWds b3Qtc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICAgICAgU2h1dHRpbmcgRG93biBMU1AgU2Vy dmVycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGluZSAgMTUpCiogZWdsb3Qtc3RheS1vdXQtb2Y6ICAgICAgICAgICAgICAg ICAgICAgQ3VzdG9taXppbmcgRWdsb3QuICAgKGxpbmUgIDQ3KQoqIGVnbG90LXN0cmljdC1tb2Rl OiAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICAzMSkKKiBl Z2xvdC1zeW5jLWNvbm5lY3Q6ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBWYXJpYWJsZXMuICAg ICAobGluZSAgMjQpCiogZWdsb3Qtd29ya3NwYWNlLWNvbmZpZ3VyYXRpb246ICAgICAgICAgUHJv amVjdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lICAgNikKKiBlZ2xvdC13b3Jr c3BhY2UtY29uZmlndXJhdGlvbiA8MT46ICAgICBVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24u CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUgIDM2KQoqIGVsZG9jLCBhbmQgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDE1MSkKKiBmZWF0dXJlcyBpbiBidWZmZXJzIHN1 cHBvcnRlZCBieSBFZ2xvdDogRWdsb3QgRmVhdHVyZXMuICAgICAobGluZSAgIDYpCiogZmluZGlu ZyBkZWZpbml0aW9ucyBvZiBpZGVudGlmaWVycyB1c2luZyBFZ2xvdDogRWdsb3QgQ29tbWFuZHMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxpbmUgMTYxKQoqIGZseW1ha2UsIGFuZCBFZ2xvdDogICAgICAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDE1NCkKKiBpbWVudSBuYXZpZ2F0aW9uIHVzaW5n IEVnbG90OiAgICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxNjQpCiogaW5pdGlh bGl6YXRpb25PcHRpb25zOiAgICAgICAgICAgICAgICAgVXNlci1zcGVjaWZpYyBjb25maWd1cmF0 aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsaW5lICAgNikKKiBpbmxheSBoaW50czogICAgICAgICAgICAgICAgICAgICAg ICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxMDYpCiogbGFuZ3VhZ2Ugc2VydmVyIGZv ciBFZ2xvdDogICAgICAgICAgICAgU2V0dGluZyBVcCBMU1AgU2VydmVycy4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAg IDYpCiogbGFuZ3VhZ2Ugc2VydmVyIHByb3RvY29sOiAgICAgICAgICAgICAgVG9wLiAgICAgICAg ICAgICAgICAgKGxpbmUgICA2KQoqIExTUDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRvcC4gICAgICAgICAgICAgICAgIChsaW5lICAgNikKKiBMU1Agc2VydmVyIGZvciBFZ2xv dCwgc2V0dGluZyB1cDogICAgICBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5lICAg NikKKiBNLXggZWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZ2xvdCBDb21tYW5k cy4gICAgICAobGluZSAgIDkpCiogTS14IGVnbG90LWNsZWFyLXN0YXR1czogICAgICAgICAgICAg ICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgMTM0KQoqIE0teCBlZ2xvdC1jb2RlLWFjdGlv bi1leHRyYWN0OiAgICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lICA4MikKKiBNLXgg ZWdsb3QtY29kZS1hY3Rpb24taW5saW5lOiAgICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAo bGluZSAgODMpCiogTS14IGVnbG90LWNvZGUtYWN0aW9uLW9yZ2FuaXplLWltcG9ydHM6IEVnbG90 IENvbW1hbmRzLiAgICAgKGxpbmUgIDgwKQoqIE0teCBlZ2xvdC1jb2RlLWFjdGlvbi1xdWlja2Zp eDogICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lICA4MSkKKiBNLXggZWdsb3QtY29k ZS1hY3Rpb24tcmV3cml0ZTogICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAgODQp CiogTS14IGVnbG90LWNvZGUtYWN0aW9uczogICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMu ICAgICAgKGxpbmUgIDc5KQoqIE0teCBlZ2xvdC1ldmVudHMtYnVmZmVyOiAgICAgICAgICAgICAg IEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5lIDExOCkKKiBNLXggZWdsb3QtZm9yZ2V0LXBlbmRp bmctY29udGludWF0aW9uczogRWdsb3QgQ29tbWFuZHMuICAgICAobGluZSAxMjYpCiogTS14IGVn bG90LWZvcm1hdDogICAgICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxp bmUgIDcwKQoqIE0teCBlZ2xvdC1mb3JtYXQtYnVmZmVyOiAgICAgICAgICAgICAgIEVnbG90IENv bW1hbmRzLiAgICAgIChsaW5lICA3NSkKKiBNLXggZWdsb3QtaW5sYXktaGludHMtbW9kZTogICAg ICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxMDYpCiogTS14IGVnbG90LXJlY29u bmVjdDogICAgICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgIDM2KQoq IE0teCBlZ2xvdC1yZW5hbWU6ICAgICAgICAgICAgICAgICAgICAgIEVnbG90IENvbW1hbmRzLiAg ICAgIChsaW5lICA2MykKKiBNLXggZWdsb3Qtc2h1dGRvd246ICAgICAgICAgICAgICAgICAgICBF Z2xvdCBDb21tYW5kcy4gICAgICAobGluZSAgNDIpCiogTS14IGVnbG90LXNodXRkb3duLWFsbDog ICAgICAgICAgICAgICAgRWdsb3QgQ29tbWFuZHMuICAgICAgKGxpbmUgIDU3KQoqIE0teCBlZ2xv dC1zaWduYWwtZGlkQ2hhbmdlQ29uZmlndXJhdGlvbjogRWdsb3QgQ29tbWFuZHMuICAgIChsaW5l IDEyOSkKKiBNLXggZWdsb3Qtc3RkZXJyLWJ1ZmZlcjogICAgICAgICAgICAgICBFZ2xvdCBDb21t YW5kcy4gICAgICAobGluZSAxMjIpCiogbW9kZS1saW5lIGluZGljYXRpb24gb2YgbGFuZ3VhZ2Ug c2VydmVyOiBFZ2xvdCBhbmQgQnVmZmVycy4gKGxpbmUgIDUzKQoqIG1vdXNlIGNsaWNrcyBvbiBt b2RlLWxpbmUsIGFuZCBFZ2xvdDogIEVnbG90IGFuZCBCdWZmZXJzLiAgIChsaW5lICA1MykKKiBv bi10aGUtZmx5IGRpYWdub3N0aWNzIHVzaW5nIEVnbG90OiAgICBFZ2xvdCBDb21tYW5kcy4gICAg ICAobGluZSAxNTQpCiogcGVyZm9ybWFuY2UgcHJvYmxlbXMsIHdpdGggRWdsb3Q6ICAgICAgUGVy Zm9ybWFuY2UuICAgICAgICAgKGxpbmUgICA2KQoqIHByb2dyZXNzOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEN1c3RvbWl6aW5nIEVnbG90LiAgIChsaW5lICA2MykKKiBwcm9qZWN0cyBh bmQgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICBFZ2xvdCBhbmQgQnVmZmVycy4gICAobGluZSAg IDYpCiogcXVpY2sgc3RhcnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVpY2sgU3RhcnQu ICAgICAgICAgKGxpbmUgICA2KQoqIHNldHRpbmcgdXAgTFNQIHNlcnZlciBmb3IgRWdsb3Q6ICAg ICAgIFNldHRpbmcgVXAgTFNQIFNlcnZlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUgICA2KQoqIHNodXR0aW5nIGRv d24gTFNQIHNlcnZlcjogICAgICAgICAgICAgIFNodXR0aW5nIERvd24gTFNQIFNlcnZlcnMuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxpbmUgICA2KQoqIHN0YXJ0aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgICAgICAgIFN0 YXJ0aW5nIEVnbG90LiAgICAgIChsaW5lICAgNikKKiBzeW1ib2wgY29tcGxldGlvbiB1c2luZyBF Z2xvdDogICAgICAgICBFZ2xvdCBDb21tYW5kcy4gICAgICAobGluZSAxNjkpCiogdHJvdWJsZXNo b290aW5nIEVnbG90OiAgICAgICAgICAgICAgICAgVHJvdWJsZXNob290aW5nIEVnbG90LgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChsaW5lICAgNikKKiB1cGdyYWRpbmcgRWdsb3Q6ICAgICAgICAgICAgICAgICAgICAgICBHZXR0 aW5nIHRoZSBsYXRlc3QgdmVyc2lvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSAgIDYpCiogdmFyaWFibGVzLCBFZ2xv dDogICAgICAgICAgICAgICAgICAgICAgRWdsb3QgVmFyaWFibGVzLiAgICAgKGxpbmUgICA2KQoq IHdvcmtzcGFjZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVnbG90IGFuZCBCdWZmZXJz LiAgIChsaW5lICAgNikKKiB3b3Jrc3BhY2UgY29uZmlndXJhdGlvbjogICAgICAgICAgICAgICBQ cm9qZWN0LXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmUgICA2KQoqIHhyZWYsIGFu ZCBFZ2xvdDogICAgICAgICAgICAgICAgICAgICAgIEVnbG90IENvbW1hbmRzLiAgICAgIChsaW5l IDE2MSkKCgofClRhZyBUYWJsZToKTm9kZTogVG9wfzg5NgpSZWY6IFRvcC1Gb290bm90ZS0xfzM0 ODAKTm9kZTogUXVpY2sgU3RhcnR/MzU1NQpOb2RlOiBFZ2xvdCBhbmQgTFNQIFNlcnZlcnN/NjA4 OQpOb2RlOiBTZXR0aW5nIFVwIExTUCBTZXJ2ZXJzfzY1MTAKTm9kZTogU3RhcnRpbmcgRWdsb3R/ MTE3NDIKTm9kZTogU2h1dHRpbmcgRG93biBMU1AgU2VydmVyc38xNDQwOApOb2RlOiBVc2luZyBF Z2xvdH8xNTk1NgpOb2RlOiBFZ2xvdCBGZWF0dXJlc38xNjM0NQpOb2RlOiBFZ2xvdCBhbmQgQnVm ZmVyc38yMDczNApOb2RlOiBFZ2xvdCBDb21tYW5kc38yNjQyNgpOb2RlOiBFZ2xvdCBWYXJpYWJs ZXN/MzQzMTkKTm9kZTogQ3VzdG9taXppbmcgRWdsb3R/Mzg2NTEKTm9kZTogQWR2YW5jZWQgc2Vy dmVyIGNvbmZpZ3VyYXRpb25/NDE1NzEKTm9kZTogUHJvamVjdC1zcGVjaWZpYyBjb25maWd1cmF0 aW9ufzQzNTY3Ck5vZGU6IFVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbn80OTQ3MQpOb2RlOiBK U09OUlBDIG9iamVjdHMgaW4gRWxpc3B/NTE5MjMKTm9kZTogRXh0ZW5kaW5nIEVnbG90fzUzNDYz Ck5vZGU6IFRyb3VibGVzaG9vdGluZyBFZ2xvdH82MDE5MQpOb2RlOiBQZXJmb3JtYW5jZX82MDk2 NgpOb2RlOiBHZXR0aW5nIHRoZSBsYXRlc3QgdmVyc2lvbn82MTg1MgpOb2RlOiBSZXBvcnRpbmcg YnVnc382Mjk3MApOb2RlOiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2V/NjcyNTkKTm9k ZTogSW5kZXh/OTI0MjIKHwpFbmQgVGFnIFRhYmxlCgofCkxvY2FsIFZhcmlhYmxlczoKY29kaW5n OiB1dGYtOApFbmQ6CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVn bG90LTEuMTcvZGlyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAA MDAwMTc1MAAwMDAwMDAwMTE3NQAxNDY3MTU0MDA3MAAwMTI2MjEAIDAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVGhp cyBpcyB0aGUgZmlsZSAuLi4vaW5mby9kaXIsIHdoaWNoIGNvbnRhaW5zIHRoZQp0b3Btb3N0IG5v ZGUgb2YgdGhlIEluZm8gaGllcmFyY2h5LCBjYWxsZWQgKGRpcilUb3AuClRoZSBmaXJzdCB0aW1l IHlvdSBpbnZva2UgSW5mbyB5b3Ugc3RhcnQgb2ZmIGxvb2tpbmcgYXQgdGhpcyBub2RlLgofCkZp bGU6IGRpciwJTm9kZTogVG9wCVRoaXMgaXMgdGhlIHRvcCBvZiB0aGUgSU5GTyB0cmVlCgogIFRo aXMgKHRoZSBEaXJlY3Rvcnkgbm9kZSkgZ2l2ZXMgYSBtZW51IG9mIG1ham9yIHRvcGljcy4KICBU eXBpbmcgInEiIGV4aXRzLCAiSCIgbGlzdHMgYWxsIEluZm8gY29tbWFuZHMsICJkIiByZXR1cm5z IGhlcmUsCiAgImgiIGdpdmVzIGEgcHJpbWVyIGZvciBmaXJzdC10aW1lcnMsCiAgIm1FbWFjczxS ZXR1cm4+IiB2aXNpdHMgdGhlIEVtYWNzIG1hbnVhbCwgZXRjLgoKICBJbiBFbWFjcywgeW91IGNh biBjbGljayBtb3VzZSBidXR0b24gMiBvbiBhIG1lbnUgaXRlbSBvciBjcm9zcyByZWZlcmVuY2UK ICB0byBzZWxlY3QgaXQuCgoqIE1lbnU6CgpFbWFjcyBtaXNjIGZlYXR1cmVzCiogRWdsb3Q6IChl Z2xvdCkuICAgICAgICAgICAgICAgTGFuZ3VhZ2UgU2VydmVyIFByb3RvY29sIGNsaWVudCBmb3Ig RW1hY3MuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVnbG90 LTEuMTcvZWdsb3QtcGtnLmVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTAAMDAw MTc1MAAwMDAwMDAwMTAyNAAxNDY3MTU0MDA3MAAwMTQzMjQAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABwaGlsaXAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHBoaWxpcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzsgR2Vu ZXJhdGVkIHBhY2thZ2UgZGVzY3JpcHRpb24gZnJvbSBlZ2xvdC5lbCAgLSotIG5vLWJ5dGUtY29t cGlsZTogdCAtKi0KKGRlZmluZS1wYWNrYWdlICJlZ2xvdCIgIjEuMTciICJUaGUgRW1hY3MgQ2xp ZW50IGZvciBMU1Agc2VydmVycyIgJygoZW1hY3MgIjI2LjMiKSAoanNvbnJwYyAiMS4wLjI0Iikg KGZseW1ha2UgIjEuMi4xIikgKHByb2plY3QgIjAuOS44IikgKHhyZWYgIjEuNi4yIikgKGVsZG9j ICIxLjE0LjAiKSAoc2VxICIyLjIzIikgKGV4dGVybmFsLWNvbXBsZXRpb24gIjAuMSIpKSA6Y29t bWl0ICJiMDE0YmNhODMzYTE3ZjViMjI1OGU4ODExNWYwM2NmZmE5ODNkMGJkIiA6YXV0aG9ycyAn KCgiSm/Do28gVMOhdm9yYSIgLiAiam9hb3Rhdm9yYUBnbWFpbC5jb20iKSkgOm1haW50YWluZXIg JygiSm/Do28gVMOhdm9yYSIgLiAiam9hb3Rhdm9yYUBnbWFpbC5jb20iKSA6a2V5d29yZHMgJygi Y29udmVuaWVuY2UiICJsYW5ndWFnZXMiKSA6dXJsICJodHRwczovL2dpdGh1Yi5jb20vam9hb3Rh dm9yYS9lZ2xvdCIpCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= --=-=-= Content-Type: text/plain The changes has been pushed to elpa.git. Thanks! > [1]: https://elpa.gnu.org/packages/eglot-1.17.tar > [2]: https://elpa.gnu.org/packages/erc-5.6.tar > [3]: https://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/elpa-packages?id=51936a29b693bfc5f4f92e365b485a7c547b2ac1#n270 > > > > > > -- Philip Kaludercic on icterid --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 15 08:46:40 2024 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 12:46:40 +0000 Received: from localhost ([127.0.0.1]:48589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoeG-0002E6-6l for submit@debbugs.gnu.org; Sun, 15 Sep 2024 08:46:40 -0400 Received: from mail.linj.tech ([5.255.109.209]:46230) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spoeE-0002Dx-Ug for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 08:46:39 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726404385; bh=AtGko3sV14kwwB0XdaYOBZUJkHaE4QN6gdEyK+fR1lo=; h=From:To:Subject:In-Reply-To:References:CC:Date; b=MZs5MeqYbBdfF1mkMAH4akwTyqGTawVcau1aFvNYuutMpZ6PKVCMU5Uqwl6mMpE0N 4+NsUXm1ARqwIrUdyqjmLOJU2Ny2HD+GmYjTF72anqj77/ccnsi08XTuArw4PtC0m7 akDInQIShB8e8J1gTLG1wa5HBjsUXprQBZUr4PuNp6tMnFuX+t2N1QhtcgvX4z/bNx 0S0wwFHwmuoTwN06I498fyUo9Hi4nQTS+50pdeOtcHmWKGSm5dR83vLGDMGL19R3On mLjXxnMdsZdbx2KMNSeA1t+INmsFqMAk0LYYXdr7yhH8t8WpWWxpp5QluFmFRXlvTP UxWsqKrQOZilw== To: Philip Kaludercic Subject: Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual In-Reply-To: <87a5g9ksmb.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 Sep 2024 12:29:16 +0000") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> Date: Sun, 15 Sep 2024 20:46:15 +0800 Message-ID: <87o74pw0dk.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 73241 Cc: 73241@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: -1.0 (-) Philip Kaludercic writes: Thanks! May I ask when tarballs containing that fix will appear on GNU ELPA and GNU-devel ELPA? From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 15 10:18:51 2024 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 14:18:51 +0000 Received: from localhost ([127.0.0.1]:50414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spq5T-0007jh-5M for submit@debbugs.gnu.org; Sun, 15 Sep 2024 10:18:51 -0400 Received: from mout02.posteo.de ([185.67.36.66]:34785) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spq5Q-0007jO-Ax for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 10:18:49 -0400 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id BE1BB240103 for <73241@debbugs.gnu.org>; Sun, 15 Sep 2024 16:18:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1726409909; bh=eQ2RoimBBIHbSxWazjgPiRQJ/NNk5TDndCoQDxO+Cbg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type: From; b=kirZMp0bUFU6mG24FfYXQXgasC4wJ/zVZ/E2BFMFvrRXxdvQJQLs5ifp9v3iTZIDH kymIYV0JQT6QQ54syshIUdvUDTX9G17QhjlyHyZdXfBvmEd003NTAo6BFLrAv6t7W+ e0P+c3ixCUU+zpVOXTsUxC+qpHAERtL9UJuC3iyKno3XabamikR9T0fmVVCHrz01cS SVWQ3W0lvw4NloixEHSlgf3djgg+ZH1eHuuyyqQVyaNUQ9zqeo6vevcTpn3+Wxc1yZ 8zV1gbgDnuDW1r1XMQzIPERaMPsbli5A9VupV5qsAzRyyYNwinzJ+6eckuszQW+3Nu IprRolf2WWwGg== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4X69BY1pfFz9rxG; Sun, 15 Sep 2024 16:18:29 +0200 (CEST) From: Philip Kaludercic To: Lin Jian Subject: Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual In-Reply-To: <87o74pw0dk.fsf@linj.tech> (Lin Jian's message of "Sun, 15 Sep 2024 20:46:15 +0800") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> <87o74pw0dk.fsf@linj.tech> X-Hashcash: 1:20:240915:me@linj.tech::lEwoWED0XM+bEHVA:0FNy X-Hashcash: 1:20:240915:73241@debbugs.gnu.org::LeoMFgXf4apvdZ1S:7eeN Date: Sun, 15 Sep 2024 14:18:28 +0000 Message-ID: <874j6hknkb.fsf@posteo.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 73241 Cc: 73241@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 (---) Lin Jian writes: > Philip Kaludercic writes: > > Thanks! > > May I ask when tarballs containing that fix will appear on GNU ELPA and > GNU-devel ELPA? It should appear on ELPA-devel when the eglot.el is changed, and on regular ELPA when a new release is made. If you think that this is important enough, one could consider a point-release, but we should double-check with the Eglot maintainers on that one. -- Philip Kaludercic on icterid From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 15 17:46:59 2024 Received: (at 73241) by debbugs.gnu.org; 15 Sep 2024 21:46:59 +0000 Received: from localhost ([127.0.0.1]:50635 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spx59-0007ET-G4 for submit@debbugs.gnu.org; Sun, 15 Sep 2024 17:46:59 -0400 Received: from mail.linj.tech ([5.255.109.209]:59342) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1spx58-0007EK-4C for 73241@debbugs.gnu.org; Sun, 15 Sep 2024 17:46:58 -0400 From: Lin Jian DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linj.tech; s=mail; t=1726436804; bh=iTJgvX7wntr8cmuOsiEQHnZAw74h47uV1v4k22AqEr8=; h=From:To:Subject:In-Reply-To:References:CC:Date; b=ugmg6DwDxQWqK67N+iEtpRB8yAPLwULRvpdrF4hxVJKwByHqM+Pr2tkK9fs9+pnDl 8Cedeur65TQXPq0Ki2crqFOf1xjvI264mjOGcE5QQGr+4PuFl64JA50swYqtYmjAf2 RSOflwCfQyOtIzJNZsjax814mypMbJLVr8Wltp26tEuHDOZ72x1p57n7AnjFKbH0VP mWoHGmpdl1LRdHH+Wgd6e7ShF7/av/lkEVPE3/p39T2IVnQfXiJMxvWZKinipWp8TF 6/eIdjT7k5kaSh3VG/6nRzJ2OcgmGl/ZD0/NW064fSDC3/QTjAxxgxggfe/i3AIFJS 6jQOuicjO4yKQ== To: Philip Kaludercic Subject: Re: bug#73241: 29.3; Eglot GNU ELPA tarball does not contain an info manual In-Reply-To: <874j6hknkb.fsf@posteo.net> (Philip Kaludercic's message of "Sun, 15 Sep 2024 14:18:28 +0000") References: <87v7yzvwdw.fsf@linj.tech> <87a5g9ksmb.fsf@posteo.net> <87o74pw0dk.fsf@linj.tech> <874j6hknkb.fsf@posteo.net> Date: Mon, 16 Sep 2024 05:46:28 +0800 Message-ID: <87h6agwpxn.fsf@linj.tech> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 73241 Cc: 73241@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: -1.0 (-) I do not think missing info manual is a big issue. I ask when the fix is available out of curiosity. Thanks for the info. From unknown Tue Jun 17 21:57:37 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 14 Oct 2024 11:24:09 +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