Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ncdKU-0003Rl-3c for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 01:22:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ncdKS-00039G-IP for pgsql-hackers@arkaria.postgresql.org; Fri, 08 Apr 2022 01:22:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ncdKR-00035j-O3 for pgsql-hackers@lists.postgresql.org; Fri, 08 Apr 2022 01:22:24 +0000 Received: from anastigmatix.net ([68.171.219.55]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ncdKM-0000Y6-Hj for pgsql-hackers@postgresql.org; Fri, 08 Apr 2022 01:22:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=anastigmatix.net; s=default; h=Content-Type:Message-ID:References: In-Reply-To:Subject:To:From:Date:MIME-Version:Sender:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=oWpqRHt/tiiuib3ZL3V2ZqaUXoR4zEMtNdcuxbVZErg=; b=RI5xEOwuuSTsJoonR27jW9G82u Y2AhtF8Bow2vTAZCZc0pinXSo/G3wL0EXkZ5lXPv/sYwEnatoFkhnwDy+6DQkbCUXahyQPS6yY4qq TdM1HAawYJhubRAisFoss68RP/8gZ51Jmg3XSp5E95B6gEWmrb6nIYd20uBOTylZboB65sZnhjSAB L9n4+BNmO0JqxIR0UMripHkDA426GV2hAUCgzUhzu9Gw6TosjbNgC8d4A+psraJDFXEG+o3l1uNAa zG51eDAj+q+WZjYP5TCmgyPoQc378imoeMWMq2ZNVww00duaNdFaraOwRZOyNXK3UV6sZ2o2PYioI rkBUcFPg==; Received: from [::1] (port=56528 helo=bay.acenet.us) by bay.acenet.us with esmtpa (Exim 4.94.2) (envelope-from ) id 1ncdKG-00CSPd-2s; Thu, 07 Apr 2022 21:22:16 -0400 MIME-Version: 1.0 Date: Thu, 07 Apr 2022 21:22:11 -0400 From: chap@anastigmatix.net To: Peter Eisentraut , PostgreSQL Hackers Subject: Re: Documentation about PL transforms In-Reply-To: <6215246A.1000309@anastigmatix.net> References: <61FDBCFE.3090800@anastigmatix.net> <62017DB3.5020900@anastigmatix.net> <6213FFA0.1080202@anastigmatix.net> <6215246A.1000309@anastigmatix.net> User-Agent: Roundcube Webmail/1.4.12 Message-ID: <15aae6eba18b19579ce2568828c692bd@anastigmatix.net> X-Sender: chap@anastigmatix.net Content-Type: multipart/mixed; boundary="=_383627b03f3032e924b279ff6e9d20f7" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bay.acenet.us X-AntiAbuse: Original Domain - postgresql.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - anastigmatix.net X-Get-Message-Sender-Via: bay.acenet.us: authenticated_id: chap@anastigmatix.net X-Authenticated-Sender: bay.acenet.us: chap@anastigmatix.net X-Source: X-Source-Args: X-Source-Dir: X-From-Rewrite: unmodified, already matched List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_383627b03f3032e924b279ff6e9d20f7 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2022-02-22 12:59, Chapman Flack wrote: > It would have been painful to write documentation of get_func_trftypes > saying its result isn't what get_transform_{from.to}sql expect, so > patch 1 does add a get_call_trftypes that returns a List *. > > Patch 2 then updates the docs as discussed in this thread. It turned > out > plhandler.sgml was kind of a long monolith of text even before adding > transform information, so I broke it into sections first. This patch > adds > the section markup without reindenting, so the changes aren't obscured. > > The chapter had also fallen behind the introduction of procedures, so > I have changed many instances of 'function' to the umbrella term > 'routine'. > > Patch 3 simply reindents for the new section markup and rewraps. > Whitespace only. > > Patch 4 updates src/test/modules/plsample to demonstrate handling of > transforms (and to add some more comments generally). Here is a rebase. --=_383627b03f3032e924b279ff6e9d20f7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Warmup-add-a-get_call_trftypes-function.patch Content-Disposition: attachment; filename=v2-0001-Warmup-add-a-get_call_trftypes-function.patch; size=2987 RnJvbSA5YzcyNjQyM2Q0N2ExMTRhODJjYTcwM2MwZTAzYTYyZTNkNzRmMWY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFwbWFuIEZsYWNrIDxjaGFwQGFuYXN0aWdtYXRpeC5uZXQ+ CkRhdGU6IE1vbiwgMjEgRmViIDIwMjIgMjA6NTY6MjggLTA1MDAKU3ViamVjdDogW1BBVENIIHYy IDEvNF0gV2FybXVwOiBhZGQgYSBnZXRfY2FsbF90cmZ0eXBlcyBmdW5jdGlvbgoKVGhlIGV4aXN0 aW5nIGdldF9mdW5jX3RyZnR5cGVzIGZ1bmN0aW9uIHByb2R1Y2VzIGFuIE9pZFtdLCB3aGVyZQpi b3RoIGV4aXN0aW5nIGdldF90cmFuc2Zvcm1fe2Zyb20sdG99c3FsIGZ1bmN0aW9ucyB0aGF0IGRl cGVuZApvbiB0aGUgcmVzdWx0IGV4cGVjdCBhIExpc3QqLgoKUmF0aGVyIHRoYW4gd3JpdGluZyBk b2N1bWVudGF0aW9uIGF3a3dhcmRseSBkZXNjcmliaW5nIGZ1bmN0aW9ucwp0aGF0IHdvbid0IHBs YXkgdG9nZXRoZXIsIGFkZCBhIGdldF9jYWxsX3RyZnR5cGVzIGZ1bmN0aW9uIHRoYXQKcmV0dXJu cyBMaXN0Ki4gKFRoZSBuYW1lIGdldF9jYWxsXy4uLiB0byBkaXN0aW5ndWlzaCBmcm9tCmdldF9m dW5jXy4uLiBmb2xsb3dzIHRoZSBuYW1pbmcgdXNlZCBpbiBmdW5jYXBpLmggZm9yIGEgZnVuY3Rp b24KcmV0dXJuaW5nIGluZm9ybWF0aW9uIGFib3V0IGVpdGhlciBhIGZ1bmN0aW9uIG9yIGEgcHJv Y2VkdXJlLikKLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyB8IDE4ICsr KysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvZnVuY2FwaS5oICAgICAgICAgICAgICAgfCAg NSArKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgfCAgMSArCiAzIGZp bGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCmluZGV4IDFiN2UxMWIuLjNjZDk0ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCkBAIC0yMTE3LDYgKzIxMTcsMjQgQEAgZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQs IE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKQogCQlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAor LyoKKyAqIGdldF9jYWxsX3RyZnR5cGVzCisgKgorICoJCUEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg ZG9lcyBub3QgaXRzZWxmIHF1ZXJ5IHRoZSB0cmFuc2Zvcm0gY2FjaGUsIGJ1dAorICoJCWNvbnN0 cnVjdHMgdGhlIHRyYW5zZm9ybS10eXBlIExpc3QgZXhwZWN0ZWQgYnkgdGhlIGZ1bmN0aW9ucyBh Ym92ZS4KKyAqLworTGlzdCAqCitnZXRfY2FsbF90cmZ0eXBlcyhIZWFwVHVwbGUgcHJvY1R1cCkK K3sKKwlEYXR1bQkJcHJvdHJmdHlwZXM7CisJYm9vbAkJaXNOdWxsOworCisJcHJvdHJmdHlwZXMg PSBTeXNDYWNoZUdldEF0dHIoUFJPQ09JRCwgcHJvY1R1cCwKKwkJCQkJCQkJICBBbnVtX3BnX3By b2NfcHJvdHJmdHlwZXMsCisJCQkJCQkJCSAgJmlzTnVsbCk7CisJcmV0dXJuIGlzTnVsbCA/ICBO SUwgOiBvaWRfYXJyYXlfdG9fbGlzdChwcm90cmZ0eXBlcyk7Cit9CisKIAogLyoJCQkJLS0tLS0t LS0tLSBUWVBFIENBQ0hFIC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZnVuY2FwaS5oIGIvc3JjL2luY2x1ZGUvZnVuY2FwaS5oCmluZGV4IGRjM2Q4MTkuLjcw YzNlMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Z1bmNhcGkuaAorKysgYi9zcmMvaW5jbHVk ZS9mdW5jYXBpLmgKQEAgLTE3NSw3ICsxNzUsMTIgQEAgZXh0ZXJuIGludAlnZXRfZnVuY19hcmdf aW5mbyhIZWFwVHVwbGUgcHJvY1R1cCwKIGV4dGVybiBpbnQJZ2V0X2Z1bmNfaW5wdXRfYXJnX25h bWVzKERhdHVtIHByb2FyZ25hbWVzLCBEYXR1bSBwcm9hcmdtb2RlcywKIAkJCQkJCQkJCSBjaGFy ICoqKmFyZ19uYW1lcyk7CiAKKy8qCisgKiBBIGRlcHJlY2F0ZWQgZWFybGllciB2ZXJzaW9uIG9m IGdldF9jYWxsX3RyZnR5cGVzIChpbiBsc3lzY2FjaGUuaCkuCisgKiBUaGF0IHZlcnNpb24gcHJv ZHVjZXMgYSBMaXN0LCB3aGljaCBpcyB0aGUgZm9ybSBkb3duc3RyZWFtIGZ1bmN0aW9ucyBleHBl Y3QuCisgKi8KIGV4dGVybiBpbnQJZ2V0X2Z1bmNfdHJmdHlwZXMoSGVhcFR1cGxlIHByb2NUdXAs IE9pZCAqKnBfdHJmdHlwZXMpOworCiBleHRlcm4gY2hhciAqZ2V0X2Z1bmNfcmVzdWx0X25hbWUo T2lkIGZ1bmN0aW9uSWQpOwogCiBleHRlcm4gVHVwbGVEZXNjIGJ1aWxkX2Z1bmN0aW9uX3Jlc3Vs dF90dXBkZXNjX2QoY2hhciBwcm9raW5kLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv bHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBiOGRkMjdk Li45M2IxOWU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4dGVy biBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9y ZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3BhY2Uo T2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsK K2V4dGVybiBMaXN0ICpnZXRfY2FsbF90cmZ0eXBlcyhIZWFwVHVwbGUgcHJvY1R1cCk7CiBleHRl cm4gT2lkCWdldF90cmFuc2Zvcm1fZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3Qg KnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9p ZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQo T2lkIHR5cGlkKTsKLS0gCjIuNy4zCgo= --=_383627b03f3032e924b279ff6e9d20f7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0002-Update-PL-handler-implementation-docs.patch Content-Disposition: attachment; filename=v2-0002-Update-PL-handler-implementation-docs.patch; size=33413 RnJvbSA3ZmIzZjg5NzFjNGM1NzM5MDNiMWQwOGJjYmViMTI2ZTMxYTY1NDRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFwbWFuIEZsYWNrIDxjaGFwQGFuYXN0aWdtYXRpeC5uZXQ+ CkRhdGU6IE1vbiwgMjEgRmViIDIwMjIgMjA6NTk6MzIgLTA1MDAKU3ViamVjdDogW1BBVENIIHYy IDIvNF0gVXBkYXRlIFBMIGhhbmRsZXIgaW1wbGVtZW50YXRpb24gZG9jcwoKVGhlIG9yaWdpbmFs IHB1cnBvc2Ugd2FzIHRvIGFkZCBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0IGZvcgpDUkVBVEUgVFJB TlNGT1JNICh3aGljaCBtdXN0IGJlIGV4cGxpY2l0bHkgY29kZWQgaW4gYW55IFBMCmltcGxlbWVu dGF0aW9uIGludGVuZGluZyB0byBzdXBwb3J0IGl0KS4gQnV0IHRoZSBwbGhhbmRsZXIKc2VjdGlv biB3YXMgYWJvdXQgYXMgbG9uZyBhcyBhIG1vbm9saXRoIG9mIHRleHQgb3VnaHQgdG8gYmUsCmV2 ZW4gYmVmb3JlIGFkZGluZyB0cmFuc2Zvcm0gaW5mb3JtYXRpb24sIHNvIHJlb3JnYW5pemVkCmZp cnN0IGludG8gc2VjdGlvbnMuCgpGcm9udC1sb2FkZWQgd2l0aCBzaG9ydCBkZXNjcmlwdGlvbnMg b2YgdGhlIHRocmVlIHBvc3NpYmxlCmZ1bmN0aW9ucyAoY2FsbCBoYW5kbGVyLCB2YWxpZGF0b3Is IGlubGluZSBoYW5kbGVyKSByZWdpc3RlcmVkCndpdGggQ1JFQVRFIExBTkdVQUdFLiBUaGUgbGF0 dGVyIHR3byB3ZXJlIGFmdGVydGhvdWdodHMgaW4gaGlzdG9yaWNhbApzZXF1ZW5jZSwgYnV0IHRo ZSBkb2NzIGRvbid0IG5lZWQgdG8gcHJlc2VudCB0aGVtIHRoYXQgd2F5LgoKVGhlIHNlY3Rpb24g aGFkIGFsc28gZmFsbGVuIGJlaGluZCB0aGUgaW50cm9kdWN0aW9uIG9mIHByb2NlZHVyZXMsCnNv IHVwZGF0ZWQgdG8gZ2VuZXJhbGx5IHVzZSB0aGUgdW1icmVsbGEgdGVybSAncm91dGluZScgaW4g cGxhY2UKb2YgJ2Z1bmN0aW9uJy4KCk5ldyBzZWN0aW9uIG1hcmt1cCBhZGRlZCBoZXJlIHdpdGhv dXQgaW5kZW50YXRpb24gY2hhbmdlLCB0byBhdm9pZApvYnNjdXJpbmcgY2hhbmdlcy4gQSBmb2xs b3ctb24gY29tbWl0IHdpbGwgcmVpbmRlbnQgYW5kIHJld3JhcC4KLS0tCiBkb2Mvc3JjL3NnbWwv ZXZlbnQtdHJpZ2dlci5zZ21sICAgICAgICB8ICAxNiArKwogZG9jL3NyYy9zZ21sL3BsaGFuZGxl ci5zZ21sICAgICAgICAgICAgfCA0MDAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t CiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90cmFuc2Zvcm0uc2dtbCB8ICA2NSArKysrLS0KIGRv Yy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAgICAgICAgIHwgICAyICstCiA0IGZpbGVzIGNo YW5nZWQsIDM5MyBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZXZlbnQtdHJpZ2dlci5zZ21sIGIvZG9jL3NyYy9zZ21sL2V2ZW50LXRyaWdn ZXIuc2dtbAppbmRleCA5YzY2Zjk3Li4xNGVjNzBhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZXZlbnQtdHJpZ2dlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9ldmVudC10cmlnZ2VyLnNnbWwK QEAgLTY3MCw2ICs2NzAsMTQgQEAKICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48L2VudHJ5 PgogICAgICAgIDwvcm93PgogICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVm dCI+PGxpdGVyYWw+Q1JFQVRFIFRSQU5TRk9STTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8 ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg ICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAg ICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5DUkVBVEUg VFJJR0dFUjwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgogICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgpAQCAtOTU4LDYgKzk2NiwxNCBAQAogICAg ICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICAg PHJvdz4KKyAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRSQU5TRk9S TTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxpdGVy YWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+PGxp dGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+ PGxpdGVyYWw+WDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249ImNlbnRl ciI+PGxpdGVyYWw+LTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgICA8ZW50cnkgYWxpZ249Imxl ZnQiPjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KICAgICAgICAgPGVudHJ5 IGFsaWduPSJsZWZ0Ij48bGl0ZXJhbD5EUk9QIFRSSUdHRVI8L2xpdGVyYWw+PC9lbnRyeT4KICAg ICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjxsaXRlcmFsPlg8L2xpdGVyYWw+PC9lbnRy eT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wbGhhbmRsZXIuc2dtbCBiL2RvYy9zcmMvc2dt bC9wbGhhbmRsZXIuc2dtbAppbmRleCA0MGVlNTlkLi45NWU4NTE1IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcGxoYW5kbGVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BsaGFuZGxlci5zZ21s CkBAIC0xLDcgKzEsNyBAQAogPCEtLSBkb2Mvc3JjL3NnbWwvcGxoYW5kbGVyLnNnbWwgLS0+CiAK ICA8Y2hhcHRlciBpZD0icGxoYW5kbGVyIj4KLSAgIDx0aXRsZT5Xcml0aW5nIGEgUHJvY2VkdXJh bCBMYW5ndWFnZSBIYW5kbGVyPC90aXRsZT4KKyAgIDx0aXRsZT5JbXBsZW1lbnRpbmcgYSBuZXcg UHJvY2VkdXJhbCBMYW5ndWFnZTwvdGl0bGU+CiAKICAgIDxpbmRleHRlcm0gem9uZT0icGxoYW5k bGVyIj4KICAgICA8cHJpbWFyeT5wcm9jZWR1cmFsIGxhbmd1YWdlPC9wcmltYXJ5PgpAQCAtOSw1 MiArOSwxMTcgQEAKICAgIDwvaW5kZXh0ZXJtPgogCiAgICA8cGFyYT4KLSAgICBBbGwgY2FsbHMg dG8gZnVuY3Rpb25zIHRoYXQgYXJlIHdyaXR0ZW4gaW4gYSBsYW5ndWFnZSBvdGhlciB0aGFuCi0g ICAgdGhlIGN1cnJlbnQgPHF1b3RlPnZlcnNpb24gMTwvcXVvdGU+IGludGVyZmFjZSBmb3IgY29t cGlsZWQKLSAgICBsYW5ndWFnZXMgKHRoaXMgaW5jbHVkZXMgZnVuY3Rpb25zIGluIHVzZXItZGVm aW5lZCBwcm9jZWR1cmFsIGxhbmd1YWdlcwotICAgIGFuZCBmdW5jdGlvbnMgd3JpdHRlbiBpbiBT UUwpIGdvIHRocm91Z2ggYSA8Zmlyc3R0ZXJtPmNhbGwgaGFuZGxlcjwvZmlyc3R0ZXJtPgotICAg IGZ1bmN0aW9uIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UuICBJdCBpcyB0aGUgcmVzcG9uc2li aWxpdHkgb2YKLSAgICB0aGUgY2FsbCBoYW5kbGVyIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGlu IGEgbWVhbmluZ2Z1bCB3YXksIHN1Y2gKLSAgICBhcyBieSBpbnRlcnByZXRpbmcgdGhlIHN1cHBs aWVkIHNvdXJjZSB0ZXh0LiAgVGhpcyBjaGFwdGVyIG91dGxpbmVzCi0gICAgaG93IGEgbmV3IHBy b2NlZHVyYWwgbGFuZ3VhZ2UncyBjYWxsIGhhbmRsZXIgY2FuIGJlIHdyaXR0ZW4uCisgICAgVG8g bWFrZSBhIG5ldyBwcm9jZWR1cmFsIGxhbmd1YWdlIGF2YWlsYWJsZSBpbgorICAgIDxwcm9kdWN0 bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4sIGF0IGxlYXN0IG9uZSBkZWRpY2F0ZWQgaGFu ZGxlcgorICAgIGZ1bmN0aW9uLCBhbmQgb3B0aW9uYWxseSBvbmUgb3IgdHdvIG90aGVycywgbXVz dCBiZSB3cml0dGVuIGFuZCB0aGVuIG5hbWVkCisgICAgaW4gYSA8eHJlZiBsaW5rZW5kPSJzcWwt Y3JlYXRlbGFuZ3VhZ2UiLz4gY29tbWFuZC4gVGhleSBhcmU6CisgICAgPHZhcmlhYmxlbGlzdD4K KyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPmNhbGwgaGFuZGxlcjwvdGVybT4KKyAg ICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgKFJlcXVpcmVkLikgUmVzcG9u c2libGUgZm9yIGV4ZWN1dGluZworICAgICAgICA8Z2xvc3N0ZXJtIGxpbmtlbmQ9Imdsb3NzYXJ5 LXJvdXRpbmUiPnJvdXRpbmVzPC9nbG9zc3Rlcm0+CisgICAgICAgICg8Z2xvc3N0ZXJtIGxpbmtl bmQ9Imdsb3NzYXJ5LWZ1bmN0aW9uIj5mdW5jdGlvbnM8L2dsb3NzdGVybT4gb3IKKyAgICAgICAg PGdsb3NzdGVybSBsaW5rZW5kPSJnbG9zc2FyeS1wcm9jZWR1cmUiPnByb2NlZHVyZXM8L2dsb3Nz dGVybT4pIGRlZmluZWQKKyAgICAgICAgaW4gdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2UuCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAg IDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT52YWxpZGF0b3I8L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIChPcHRpb25hbC4pIElmIHByb3ZpZGVkLCB0 aGlzIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgcm91dGluZSB1c2luZworICAgICAgICB0aGUg cHJvY2VkdXJhbCBsYW5ndWFnZSBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQsIGFuZCBzaG91 bGQgY2hlY2sKKyAgICAgICAgdGhlIGRlZmluaXRpb24gdG8gcmVwb3J0IGFueSBlcnJvcnMgZGV0 ZWN0YWJsZSBhdCB0aGF0IHRpbWUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT5p bmxpbmUgaGFuZGxlcjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgKE9wdGlvbmFsLikgSWYgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2UgY2FuIGJlIHVzZWQg aW5saW5lIGluCisgICAgICAgIGEgPHhyZWYgbGlua2VuZD0ic3FsLWRvIi8+IHN0YXRlbWVudCwg dGhpcyBoYW5kbGVyIG11c3QgYmUgcHJvdmlkZWQsCisgICAgICAgIGFuZCBpcyByZXNwb25zaWJs ZSBmb3IgZXhlY3V0aW5nIHN1Y2ggaW5saW5lIGNvZGUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIFRoZSBjYWxsIGhhbmRsZXIgZm9yIGEgcHJvY2Vk dXJhbCBsYW5ndWFnZSBpcyBhCi0gICAgPHF1b3RlPm5vcm1hbDwvcXVvdGU+IGZ1bmN0aW9uIHRo YXQgbXVzdCBiZSB3cml0dGVuIGluIGEgY29tcGlsZWQKLSAgICBsYW5ndWFnZSBzdWNoIGFzIEMs IHVzaW5nIHRoZSB2ZXJzaW9uLTEgaW50ZXJmYWNlLCBhbmQgcmVnaXN0ZXJlZAotICAgIHdpdGgg PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBhcyB0YWtpbmcgbm8gYXJndW1l bnRzCisgICAgVGhpcyBjaGFwdGVyIG91dGxpbmVzIGhvdyBhIG5ldyBwcm9jZWR1cmFsIGxhbmd1 YWdlJ3MgaGFuZGxlcnMgY2FuIGJlCisgICAgd3JpdHRlbi4KKyAgIDwvcGFyYT4KKworICAgPHNl Y3QxIGlkPSJwbGhhbmRsZXItY2FsbCI+CisgICAgPHRpdGxlPkNhbGwgaGFuZGxlciBmdW5jdGlv bjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIEV2ZXJ5IHJvdXRpbmUgZGVmaW5lZCB3aXRoIGEg bGFuZ3VhZ2UgbmFtZSBvdGhlciB0aGFuCisgICAgPGxpdGVyYWw+aW50ZXJuYWw8L2xpdGVyYWw+ IChhcyBkZWZpbmVkIGluIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWludGVybmFsIi8+KQorICAgIG9y IDxsaXRlcmFsPmM8L2xpdGVyYWw+ICg8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1jIi8+KSB3aWxsIGJl IGNhbGxlZCBieQorICAgIGludm9raW5nIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlJ3MgY2FsbCBo YW5kbGVyLgorICAgIDxmb290bm90ZT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGlzIHRydWUg ZXZlbiBvZiByb3V0aW5lcyB3aXRoIGxhbmd1YWdlIG5hbWUgPGxpdGVyYWw+c3FsPC9saXRlcmFs PiwKKyAgICAgIHRob3VnaCwgYXMgYSBzcGVjaWFsIGNhc2UsIHRoYXQgY2FsbCBoYW5kbGVyIGhh cyBubyBlbnRyeSBpbiB0aGUgc3lzdGVtCisgICAgICBjYXRhbG9ncy4KKyAgICAgPC9wYXJhPgor ICAgIDwvZm9vdG5vdGU+CisgICAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mCisgICAgdGhl IGNhbGwgaGFuZGxlciB0byBleGVjdXRlIHRoZSByb3V0aW5lIGluIGEgbWVhbmluZ2Z1bCB3YXks IHN1Y2gKKyAgICBhcyBieSBpbnRlcnByZXRpbmcgdGhlIHN1cHBsaWVkIHNvdXJjZSB0ZXh0Lgor ICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUaGUgY2FsbCBoYW5kbGVyIGlzIGEgPHF1b3Rl Pm5vcm1hbDwvcXVvdGU+IHVzZXItZGVmaW5lZCBmdW5jdGlvbiB0aGF0IG11c3QKKyAgICBiZSBk ZWNsYXJlZCB0byA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGFzIHRha2lu ZyBubyBhcmd1bWVudHMKICAgICBhbmQgcmV0dXJuaW5nIHRoZSB0eXBlIDx0eXBlPmxhbmd1YWdl X2hhbmRsZXI8L3R5cGU+LiAgVGhpcwogICAgIHNwZWNpYWwgcHNldWRvLXR5cGUgaWRlbnRpZmll cyB0aGUgZnVuY3Rpb24gYXMgYSBjYWxsIGhhbmRsZXIgYW5kCiAgICAgcHJldmVudHMgaXQgZnJv bSBiZWluZyBjYWxsZWQgZGlyZWN0bHkgaW4gU1FMIGNvbW1hbmRzLgotICAgIEZvciBtb3JlIGRl dGFpbHMgb24gQyBsYW5ndWFnZSBjYWxsaW5nIGNvbnZlbnRpb25zIGFuZCBkeW5hbWljIGxvYWRp bmcsCi0gICAgc2VlIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMiLz4uCisgICAgVGhpcyBoYW5kbGVy IG11c3Qgbm90IHJlcXVpcmUgYSBjYWxsIGhhbmRsZXIgb2YgaXRzIG93biwgd2hpY2ggbWFrZXMK KyAgICB0aGUgcHJlZGVmaW5lZCBsYW5ndWFnZXMgPGxpdGVyYWw+aW50ZXJuYWw8L2xpdGVyYWw+ IG9yIDxsaXRlcmFsPmM8L2xpdGVyYWw+CisgICAgdGhlIG9ubHkgY2hvaWNlcyBmb3IgdGhlIGhh bmRsZXIncyBvd24gZGVjbGFyYXRpb24uCisgICAgVHlwaWNhbGx5LCBpdCB3aWxsIGJlIGEgbG9h ZGFibGUgZnVuY3Rpb24gaW4gbGFuZ3VhZ2UKKyAgICA8bGl0ZXJhbD5jPC9saXRlcmFsPiwgYXMg ZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMiLz4uCisgICAgPGZvb3Rub3RlPgor ICAgICA8cGFyYT4KKyAgICAgIEl0IG1heSBiZSBpbXBsZW1lbnRlZCBpbiBhIGxhbmd1YWdlIG90 aGVyIHRoYW4gQywgYXMgbG9uZyBhcyBpdCBjYW4gYmUKKyAgICAgIGJ1aWx0IGludG8gYSBsb2Fk YWJsZSBvYmplY3Qgd2l0aCBjb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbnMuCisgICAgIDwv cGFyYT4KKyAgICA8L2Zvb3Rub3RlPgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KICAgICBUaGUg Y2FsbCBoYW5kbGVyIGlzIGNhbGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVyIGZ1bmN0 aW9uOgogICAgIEl0IHJlY2VpdmVzIGEgcG9pbnRlciB0byBhCiAgICAgPHN0cnVjdG5hbWU+RnVu Y3Rpb25DYWxsSW5mb0Jhc2VEYXRhPC9zdHJ1Y3RuYW1lPiA8dHlwZT5zdHJ1Y3Q8L3R5cGU+IGNv bnRhaW5pbmcKLSAgICBhcmd1bWVudCB2YWx1ZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj YWxsZWQgZnVuY3Rpb24sIGFuZCBpdAorICAgIGFyZ3VtZW50IHZhbHVlcyBhbmQgaW5mb3JtYXRp b24gYWJvdXQgdGhlIGNhbGxlZCByb3V0aW5lLCBhbmQgaXQKICAgICBpcyBleHBlY3RlZCB0byBy ZXR1cm4gYSA8dHlwZT5EYXR1bTwvdHlwZT4gcmVzdWx0IChhbmQgcG9zc2libHkKICAgICBzZXQg dGhlIDxzdHJ1Y3RmaWVsZD5pc251bGw8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUKICAgICA8 c3RydWN0bmFtZT5GdW5jdGlvbkNhbGxJbmZvQmFzZURhdGE8L3N0cnVjdG5hbWU+IHN0cnVjdHVy ZSwgaWYgaXQgd2lzaGVzCiAgICAgdG8gcmV0dXJuIGFuIFNRTCBudWxsIHJlc3VsdCkuICBUaGUg ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY2FsbAotICAgIGhhbmRsZXIgYW5kIGFuIG9yZGluYXJ5IGNh bGxlZSBmdW5jdGlvbiBpcyB0aGF0IHRoZQorICAgIGhhbmRsZXIgYW5kIGFuIG9yZGluYXJ5IGNh bGxlZSBpcyB0aGF0IHRoZQogICAgIDxzdHJ1Y3RmaWVsZD5mbGluZm8tJmd0O2ZuX29pZDwvc3Ry dWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQogICAgIDxzdHJ1Y3RuYW1lPkZ1bmN0aW9uQ2FsbEluZm9C YXNlRGF0YTwvc3RydWN0bmFtZT4gc3RydWN0dXJlIHdpbGwgY29udGFpbgotICAgIHRoZSBPSUQg b2YgdGhlIGFjdHVhbCBmdW5jdGlvbiB0byBiZSBjYWxsZWQsIG5vdCBvZiB0aGUgY2FsbAorICAg IHRoZSBPSUQgb2YgdGhlIGFjdHVhbCByb3V0aW5lIHRvIGJlIGNhbGxlZCwgbm90IG9mIHRoZSBj YWxsCiAgICAgaGFuZGxlciBpdHNlbGYuICBUaGUgY2FsbCBoYW5kbGVyIG11c3QgdXNlIHRoaXMg ZmllbGQgdG8gZGV0ZXJtaW5lCi0gICAgd2hpY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZS4gIEFsc28s IHRoZSBwYXNzZWQgYXJndW1lbnQgbGlzdCBoYXMKLSAgICBiZWVuIHNldCB1cCBhY2NvcmRpbmcg dG8gdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSB0YXJnZXQgZnVuY3Rpb24sCisgICAgd2hpY2ggcm91 dGluZSB0byBleGVjdXRlLiAgQWxzbywgdGhlIHBhc3NlZCBhcmd1bWVudCBsaXN0IGhhcworICAg IGJlZW4gc2V0IHVwIGFjY29yZGluZyB0byB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIHRhcmdldCBy b3V0aW5lLAogICAgIG5vdCBvZiB0aGUgY2FsbCBoYW5kbGVyLgogICAgPC9wYXJhPgogCiAgICA8 cGFyYT4KLSAgICBJdCdzIHVwIHRvIHRoZSBjYWxsIGhhbmRsZXIgdG8gZmV0Y2ggdGhlIGVudHJ5 IG9mIHRoZSBmdW5jdGlvbiBmcm9tIHRoZQotICAgIDxjbGFzc25hbWU+cGdfcHJvYzwvY2xhc3Nu YW1lPiBzeXN0ZW0gY2F0YWxvZyBhbmQgdG8gYW5hbHl6ZSB0aGUgYXJndW1lbnQKLSAgICBhbmQg cmV0dXJuIHR5cGVzIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24uIFRoZSA8bGl0ZXJhbD5BUzwvbGl0 ZXJhbD4gY2xhdXNlIGZyb20gdGhlCi0gICAgPGNvbW1hbmQ+Q1JFQVRFIEZVTkNUSU9OPC9jb21t YW5kPiBjb21tYW5kIGZvciB0aGUgZnVuY3Rpb24gd2lsbCBiZSBmb3VuZAorICAgIEl0J3MgdXAg dG8gdGhlIGNhbGwgaGFuZGxlciB0byBmZXRjaCB0aGUgcm91dGluZSdzIGRlZmluaW5nCisgICAg PGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+IHJvdyBmcm9tIHRoZSBzeXN0ZW0gY2F0YWxv ZyBjYWNoZQorICAgIHRvIGRldGVybWluZSB3aGF0IHRvIGV4ZWN1dGUsIHdoYXQgcGFyYW1ldGVy IGFuZCByZXR1cm4gdHlwZXMgYXJlIGV4cGVjdGVkLAorICAgIGFuZCBzbyBvbi4KKyAgICBUaGUg PGxpdGVyYWw+QVM8L2xpdGVyYWw+IGNsYXVzZSBmcm9tIHRoZQorICAgIDxjb21tYW5kPkNSRUFU RSBGVU5DVElPTjwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwvY29tbWFu ZD4KKyAgICBjb21tYW5kIGZvciB0aGUgcm91dGluZSB3aWxsIGJlIGZvdW5kCiAgICAgaW4gdGhl IDxsaXRlcmFsPnByb3NyYzwvbGl0ZXJhbD4gY29sdW1uIG9mIHRoZQogICAgIDxjbGFzc25hbWU+ cGdfcHJvYzwvY2xhc3NuYW1lPiByb3cuIFRoaXMgaXMgY29tbW9ubHkgc291cmNlCiAgICAgdGV4 dCBpbiB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZSwgYnV0IGluIHRoZW9yeSBpdCBjb3VsZCBiZSBz b21ldGhpbmcgZWxzZSwKQEAgLTYzLDEyICsxMjgsMTQ3IEBACiAgICA8L3BhcmE+CiAKICAgIDxw YXJhPgotICAgIE9mdGVuLCB0aGUgc2FtZSBmdW5jdGlvbiBpcyBjYWxsZWQgbWFueSB0aW1lcyBw ZXIgU1FMIHN0YXRlbWVudC4KKyAgICBUaGUgaGFuZGxlciBtYXkgYWxzbyBleGFtaW5lIHRoZSBw YXNzZWQKKyAgICA8c3RydWN0bmFtZT5GdW5jdGlvbkNhbGxJbmZvQmFzZURhdGE8L3N0cnVjdG5h bWU+IHN0cnVjdHVyZSBmb3IgaW5mb3JtYXRpb24KKyAgICBvbiB0aGUgY29udGV4dCBvZiB0aGUg Y2FsbC4gSWYgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2Ugd2lsbCBzdXBwb3J0CisgICAgcmV0dXJu aW5nIHNldHMsIHRoZSBzdHJ1Y3R1cmUgbWF5IGNvbnRhaW4gYSBwb2ludGVyIHRvIGEKKyAgICA8 c3RydWN0bmFtZT5SZXR1cm5TZXRJbmZvPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgZm9yIHVzZSBh cyBkZXNjcmliZWQgaW4KKyAgICA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1jLXJldHVybi1zZXQiLz4u IElmIHRoZSBsYW5ndWFnZSB3aWxsIHN1cHBvcnQgdHJpZ2dlcnMKKyAgICBvciBldmVudCB0cmln Z2VycywgdGhlIHN0cnVjdHVyZSBtYXkgaG9sZCBhIHBvaW50ZXIgdG8gb25lIG9mIHRoZSBzdHJ1 Y3R1cmVzCisgICAgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9InRyaWdnZXItaW50ZXJmYWNl Ii8+IG9yCisgICAgPHhyZWYgbGlua2VuZD0iZXZlbnQtdHJpZ2dlci1pbnRlcmZhY2UiLz4sIGFu ZCB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZQorICAgIHNob3VsZCBwcm92aWRlIHNvbWUgd2F5IGZv ciB0aGUgY2FsbGVkIGZ1bmN0aW9uIHRvIHVzZSB0aGUgaW5mb3JtYXRpb24KKyAgICB0aGV5IGNh cnJ5LgorICAgPC9wYXJhPgorCisgICA8c2VjdDIgaWQ9InBsaGFuZGxlci1jYWxsLWFyZ3MiPgor ICAgIDx0aXRsZT5QYXJhbWV0ZXIgYW5kIHJldHVybiB0eXBlIHJlc29sdXRpb248L3RpdGxlPgor CisgICAgPHBhcmE+CisgICAgIEEgcm91dGluZSdzIHN0YXRpY2FsbHktZGVjbGFyZWQgcGFyYW1l dGVyIHR5cGVzIChhbmQsIGZvciBhIGZ1bmN0aW9uLAorICAgICByZXR1cm4gdHlwZSkgYXJlIGZv dW5kIGluIHRoZSA8bGl0ZXJhbD5wcm9hcmd0eXBlczwvbGl0ZXJhbD4gYW5kCisgICAgIDxsaXRl cmFsPnByb3JldHR5cGU8L2xpdGVyYWw+IGNvbHVtbnMgb2YgdGhlIDxjbGFzc25hbWU+cGdfcHJv YzwvY2xhc3NuYW1lPgorICAgICByb3cuCisgICAgIElmIGEgcm91dGluZSBoYXMgPGxpdGVyYWw+ T1VUPC9saXRlcmFsPiBwYXJhbWV0ZXJzLCB0aG9zZSB0eXBlcyBhcmUKKyAgICAgaW5jbHVkZWQg aW4gdGhlIDxsaXRlcmFsPnByb2FsbGFyZ3R5cGVzPC9saXRlcmFsPiBjb2x1bW4sIGFuZCB0aGVp ciBuYW1lcworICAgICBpbiA8bGl0ZXJhbD5wcm9hcmduYW1lczwvbGl0ZXJhbD4uCisgICAgIENv bnZlbmllbmNlIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiA8ZmlsZW5hbWU+ZnVuY2FwaS5oPC9maWxl bmFtZT4gYXJlCisgICAgIGF2YWlsYWJsZSBmb3IgZXh0cmFjdGluZyB0aGF0IGluZm9ybWF0aW9u LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgc3RhdGljYWxseS1kZWNsYXJl ZCB0eXBlcyBtYXkgaW5jbHVkZSBwb2x5bW9ycGhpYyB0eXBlcyB0aGF0IG5lZWQKKyAgICAgdG8g YmUgcmVzb2x2ZWQgYWNjb3JkaW5nIHRvIHRoZSBhY3R1YWwgdHlwZXMgcHJlc2VudCBhdCB0aGUg Y2FsbCBzaXRlLAorICAgICBhcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0ieGZ1bmMtYy1w b2x5bW9ycGhpc20iLz4uCisgICAgPC9wYXJhPgorCisgICA8L3NlY3QyPgorCisgICA8c2VjdDIg aWQ9InBsaGFuZGxlci1jYWxsLXR5cGVzIj4KKyAgICA8dGl0bGU+TWFwcGluZyB0byBwcm9jZWR1 cmFsIGxhbmd1YWdlIHR5cGVzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICBPbmNlIHRoZSA8 cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHR5cGVzIG9mIGFueSBwYXJhbWV0 ZXJzCisgICAgIGFuZCByZXN1bHRzIGhhdmUgYmVlbiByZXNvbHZlZCwgdGhlIGhhbmRsZXIgbXVz dCBkZXRlcm1pbmUgaG93IGl0IHdpbGwKKyAgICAgbWFwIHRoZWlyIHZhbHVlcyB0byBhbmQgZnJv bSBzdWl0YWJsZSB0eXBlcyB0aGF0IGV4aXN0IGluIHRoZSBwcm9jZWR1cmFsCisgICAgIGxhbmd1 YWdlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgZGVzaWduZXIgb2YgYSBw cm9jZWR1cmFsIGxhbmd1YWdlIHdpbGwgdHlwaWNhbGx5IGRvY3VtZW50IHdoYXQgdHlwZXMKKyAg ICAgd2lsbCBiZSBzdXBwb3J0ZWQgYW5kIGhvdyB0aGV5IHdpbGwgYmUgbWFwcGVkLCB3aGljaCBj b3VsZCBiZSBhcyBzaW1wbGUKKyAgICAgYXMgdXNpbmcgZXZlcnkgdHlwZSdzIHRleHQgaW5wdXQv b3V0cHV0IGZvcm1hdCB0byBtYXAgaXQgdG8gdGhlIHRhcmdldAorICAgICBsYW5ndWFnZSdzIHN0 cmluZyB0eXBlLCBvciBjb3VsZCBkaXJlY3RseSBtYXAgbWFueSB0eXBlcyB0byBjb3JyZXNwb25k aW5nCisgICAgIG9uZXMgdGhlIHRhcmdldCBsYW5ndWFnZSBwcm92aWRlcy4gVGhlIGhhbmRsZXIg ZnVuY3Rpb24gd2lsbCBpbXBsZW1lbnQKKyAgICAgdGhvc2UgcnVsZXMuCisgICAgPC9wYXJhPgor CisgICAgPHNlY3QzIGlkPSJwbGhhbmRsZXItY2FsbC10eXBlcy10cmFuc2Zvcm0iPgorICAgICA8 dGl0bGU+VHlwZSB0cmFuc2Zvcm1zPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIEJlY2F1 c2UgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpcyBleHRlbnNpYmxlLCBh bmQKKyAgICAgIGFuIGV4dGVuc2lvbiBjYW4gZWFzaWx5IHN1cHBseSBuZXcgdHlwZXMsIGEgcHJv Y2VkdXJhbCBsYW5ndWFnZSBoYW5kbGVyCisgICAgICBtYXkgZW5jb3VudGVyIHR5cGVzIGl0IGhh cyBubyBwcmVkZWZpbmVkIG1hcHBpbmdzIGZvciwgb3Igb25seSBhbiBhd2t3YXJkCisgICAgICBk ZWZhdWx0IG1hcHBpbmcgc3VjaCBhcyB0byBhIHRleHQgc3RyaW5nLiBBIHByb2NlZHVyYWwgbGFu Z3VhZ2UgY2FuIGJlCisgICAgICBkZXNpZ25lZCBzbyB0aGF0IGl0cyB0eXBlIG1hcHBpbmdzIGFy ZSBhbHNvIGV4dGVuc2libGUsIGFuZCBhbiBleHRlbnNpb24KKyAgICAgIGNhbiBhZGQgbWFwcGlu Z3MgYmV0d2VlbiBuZXcgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0eXBl cworICAgICAgYW5kIHN1aXRhYmxlIHR5cGVzIGluIHRoZSB0YXJnZXQgbGFuZ3VhZ2UuCisgICAg IDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIE9uZSBtZWNoYW5pc20gPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBwcm92aWRlcyB0aGF0IG1heSBiZQorICAgICAgdXNl ZCBmb3IgdGhhdCBwdXJwb3NlIGlzIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0cmFuc2Zvcm0i Lz4uCisgICAgICBUaGUgY29tbWFuZCBhc3NvY2lhdGVzIGEgPHByb2R1Y3RuYW1lPlBvc3RncmVT UUw8L3Byb2R1Y3RuYW1lPiB0eXBlIGFuZAorICAgICAgYSBzcGVjaWZpYyBwcm9jZWR1cmFsIGxh bmd1YWdlIHdpdGggYSBwYWlyIG9mIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlCisgICAgICBtYXBw aW5nIG9mIHRoYXQgdHlwZSB0byBhIGNvcnJlc3BvbmRpbmcgcHJvY2VkdXJhbCBsYW5ndWFnZSB0 eXBlIGFuZCBiYWNrLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBGb3IgYSBw cm9jZWR1cmFsIGxhbmd1YWdlIHRvIHN1cHBvcnQgdHJhbnNmb3JtcywgaXRzIGNhbGwgaGFuZGxl ciBpcworICAgICAgcmVzcG9uc2libGUgZm9yIGNvbnN1bHRpbmcgdGhlIDxsaXRlcmFsPnByb3Ry ZnR5cGVzPC9saXRlcmFsPiBjb2x1bW4gb2YKKyAgICAgIGEgcm91dGluZSdzIDxjbGFzc25hbWU+ cGdfcHJvYzwvY2xhc3NuYW1lPiByb3cgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGVzCisgICAgICBz aG91bGQgaGF2ZSB0cmFuc2Zvcm1zIGFwcGxpZWQuCisgICAgICBBIGNvbnZlbmllbmNlIGZ1bmN0 aW9uIDxmdW5jdGlvbj5nZXRfY2FsbF90cmZ0eXBlczwvZnVuY3Rpb24+IGlzCisgICAgICBhdmFp bGFibGUuCisgICAgICBUaGUgY2FsbCBoYW5kbGVyIG11c3QgdGhlbiByZXNvbHZlIHRoZSA8cXVv dGU+ZnJvbSBTUUw8L3F1b3RlPiBmdW5jdGlvbgorICAgICAgZm9yIGVhY2ggYWZmZWN0ZWQgcGFy YW1ldGVyIHR5cGUsIGFuZCB0aGUgPHF1b3RlPnRvIFNRTDwvcXVvdGU+IGZ1bmN0aW9uCisgICAg ICBmb3IgYW55IGFmZmVjdGVkIHJlc3VsdC4KKyAgICAgIEl0IG1heSB1c2UgdGhlIDxmdW5jdGlv bj5nZXRfdHJhbnNmb3JtX2Zyb21zcWw8L2Z1bmN0aW9uPiBhbmQKKyAgICAgIDxmdW5jdGlvbj5n ZXRfdHJhbnNmb3JtX3Rvc3FsPC9mdW5jdGlvbj4gZnVuY3Rpb25zIGZvciB0aGF0LgorICAgICA8 L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgaGFuZGxlciBtdXN0IHRoZW4gYXBwbHkg dGhlIHByb3BlciA8cXVvdGU+ZnJvbSBTUUw8L3F1b3RlPiBmdW5jdGlvbnMKKyAgICAgIHRvIGFs bCBhZmZlY3RlZCBpbnB1dHMgKGluY2x1ZGluZyBlbGVtZW50cyB3aXRoaW4gYXJyYXkgb3IgY29t cG9zaXRlCisgICAgICB0eXBlcykgYW5kLCBhZnRlciBjYWxsaW5nIHRoZSB0YXJnZXQgcm91dGlu ZSwgYXBwbHkgdGhlIHByb3BlcgorICAgICAgPHF1b3RlPnRvIFNRTDwvcXVvdGU+IGZ1bmN0aW9u cyBzaW1pbGFybHkgdG8gYW55IHJlc3VsdHMuCisgICAgICBJZiB0aGUgdGFyZ2V0IHJvdXRpbmUg bWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgZGF0YWJhc2UgdXNpbmcgU1BJLAorICAgICAgdGhlIGhh bmRsZXIgbWF5IGFycmFuZ2UgZm9yIHRoZSByZXF1ZXN0ZWQgdHJhbnNmb3JtcyB0byBiZSBhcHBs aWVkCisgICAgICBpbiB0aG9zZSBvcGVyYXRpb25zIGFzIHdlbGwuCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIEJlY2F1c2UgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2UgaW1wbGVt ZW50YXRpb24sIGFuZCBub3QKKyAgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4gaXRzZWxmLCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZworICAgICAgdGhlIHRyYW5z Zm9ybSBmdW5jdGlvbnMsIGl0IGlzIGZyZWUgdG8gZGVmaW5lIHdoYXQgaXQgd2lsbCBwYXNzIGFz IHRoZQorICAgICAgcGFyYW1ldGVyIHRvIGVhY2ggZnVuY3Rpb24gKGRlY2xhcmVkIGFzIDx0eXBl PmludGVybmFsPC90eXBlPiBmb3IgYm90aCksCisgICAgICBhbmQgaG93IGl0IHdpbGwgaW50ZXJw cmV0IHRoZSByZXN1bHQgKGFsc28gZGVjbGFyZWQgPHR5cGU+aW50ZXJuYWw8L3R5cGU+KQorICAg ICAgb2YgdGhlIDxxdW90ZT5mcm9tIFNRTDwvcXVvdGU+IGZ1bmN0aW9uLiBFZmZlY3RpdmVseSwg ZWFjaCBwcm9jZWR1cmFsCisgICAgICBsYW5ndWFnZSdzIGltcGxlbWVudGF0aW9uIGRlZmluZXMg dGhlIEFQSSB0aGF0IG11c3QgYmUgYWRoZXJlZCB0bworICAgICAgYnkgYW55IGF1dGhvciBvZiB0 cmFuc2Zvcm1zIGZvciB0aGF0IGxhbmd1YWdlLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+ CisgICAgICBBIHByb2NlZHVyYWwgbGFuZ3VhZ2UgbWlnaHQgaW1wb3NlIGxpbWl0cyBvbiB3aGVy ZSBhbmQgaG93IGl0IHdpbGwgYXBwbHkKKyAgICAgIHRyYW5zZm9ybXMgKHN1Y2ggYXMgb24gYXJy YXkgb3IgZG9tYWluIHR5cGVzKS4gVGhlCisgICAgICA8ZnVuY3Rpb24+Z2V0X3RyYW5zZm9ybV9m cm9tc3FsPC9mdW5jdGlvbj4gYW5kCisgICAgICA8ZnVuY3Rpb24+Z2V0X3RyYW5zZm9ybV90b3Nx bDwvZnVuY3Rpb24+IGZ1bmN0aW9ucyBtZW50aW9uZWQgYWJvdmUKKyAgICAgIGNvbnNpZGVyIGVh Y2ggdHlwZSBvbmx5IHNoYWxsb3dseSwgYW5kIHdpbGwgbm90LCBmb3IgZXhhbXBsZSwgcmV0dXJu CisgICAgICBhIHRyYW5zZm9ybSBmdW5jdGlvbiBmb3IgYSBkb21haW4gdHlwZSBpZiBvbmx5IGl0 cyBiYXNlIHR5cGUgd2FzIGxpc3RlZCBpbgorICAgICAgdGhlIDxsaXRlcmFsPlRSQU5TRk9STTwv bGl0ZXJhbD4gY2xhdXNlLgorICAgICAgSWYgYSBwcm9jZWR1cmFsIGxhbmd1YWdlJ3MgY2FsbCBo YW5kbGVyIGRvZXMgbm90IGltcGxlbWVudCB0cmFuc2Zvcm1zCisgICAgICBhdCBhbGwsIG5vIDxs aXRlcmFsPlRSQU5TRk9STTwvbGl0ZXJhbD4gY2xhdXNlIHdpbGwgaGF2ZSBhbnkgZWZmZWN0Cisg ICAgICBmb3Igcm91dGluZXMgZGVjbGFyZWQgaW4gdGhhdCBsYW5ndWFnZS4KKyAgICAgIFRoZSBs YW5ndWFnZSdzIHZhbGlkYXRvciBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnaXZlIGltbWVkaWF0 ZSBmZWVkYmFjaworICAgICAgaWYgYSByb3V0aW5lIGlzIGRlY2xhcmVkIHdpdGggPGxpdGVyYWw+ VFJBTlNGT1JNPC9saXRlcmFsPiBjbGF1c2VzCisgICAgICB0aGUgaW1wbGVtZW50YXRpb24gY2Fu bm90IHN1cHBvcnQuCisgICAgIDwvcGFyYT4KKworICAgIDwvc2VjdDM+CisKKyAgIDwvc2VjdDI+ CisKKyAgIDxzZWN0MiBpZD0icGxoYW5kbGVyLWNhbGwtY2FjaGUiPgorICAgIDx0aXRsZT5DYWNo aW5nIHJlc29sdmVkIHJvdXRpbmUgaW5mb3JtYXRpb248L3RpdGxlPgorCisgICA8cGFyYT4KKyAg ICBPZnRlbiwgdGhlIHNhbWUgcm91dGluZSBpcyBjYWxsZWQgbWFueSB0aW1lcyBwZXIgU1FMIHN0 YXRlbWVudC4KICAgICBBIGNhbGwgaGFuZGxlciBjYW4gYXZvaWQgcmVwZWF0ZWQgbG9va3VwcyBv ZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUKLSAgICBjYWxsZWQgZnVuY3Rpb24gYnkgdXNpbmcgdGhl CisgICAgY2FsbGVkIHJvdXRpbmUgYnkgdXNpbmcgdGhlCiAgICAgPHN0cnVjdGZpZWxkPmZsaW5m by0mZ3Q7Zm5fZXh0cmE8L3N0cnVjdGZpZWxkPiBmaWVsZC4gIFRoaXMgd2lsbAogICAgIGluaXRp YWxseSBiZSA8c3ltYm9sPk5VTEw8L3N5bWJvbD4sIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBjYWxs IGhhbmRsZXIgdG8gcG9pbnQgYXQKLSAgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FsbGVkIGZ1 bmN0aW9uLiAgT24gc3Vic2VxdWVudCBjYWxscywgaWYKKyAgICBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY2FsbGVkIHJvdXRpbmUuICBPbiBzdWJzZXF1ZW50IGNhbGxzLCBpZgogICAgIDxzdHJ1Y3Rm aWVsZD5mbGluZm8tJmd0O2ZuX2V4dHJhPC9zdHJ1Y3RmaWVsZD4gaXMgYWxyZWFkeSBub24tPHN5 bWJvbD5OVUxMPC9zeW1ib2w+CiAgICAgdGhlbiBpdCBjYW4gYmUgdXNlZCBhbmQgdGhlIGluZm9y bWF0aW9uIGxvb2t1cCBzdGVwIHNraXBwZWQuICBUaGUKICAgICBjYWxsIGhhbmRsZXIgbXVzdCBt YWtlIHN1cmUgdGhhdApAQCAtODEsNTkgKzI4MSw1OCBAQAogICAgIG5vcm1hbGx5IGhhdmUgdGhl IHNhbWUgbGlmZXNwYW4gYXMgdGhlCiAgICAgPHN0cnVjdG5hbWU+Rm1nckluZm88L3N0cnVjdG5h bWU+IGl0c2VsZi4gIEJ1dCB0aGUgaGFuZGxlciBjb3VsZAogICAgIGFsc28gY2hvb3NlIHRvIHVz ZSBhIGxvbmdlci1saXZlZCBtZW1vcnkgY29udGV4dCBzbyB0aGF0IGl0IGNhbiBjYWNoZQotICAg IGZ1bmN0aW9uIGRlZmluaXRpb24gaW5mb3JtYXRpb24gYWNyb3NzIHF1ZXJpZXMuCisgICAgcm91 dGluZSBkZWZpbml0aW9uIGluZm9ybWF0aW9uIGFjcm9zcyBxdWVyaWVzLgogICAgPC9wYXJhPgog CiAgICA8cGFyYT4KLSAgICBXaGVuIGEgcHJvY2VkdXJhbC1sYW5ndWFnZSBmdW5jdGlvbiBpcyBp bnZva2VkIGFzIGEgdHJpZ2dlciwgbm8gYXJndW1lbnRzCi0gICAgYXJlIHBhc3NlZCBpbiB0aGUg dXN1YWwgd2F5LCBidXQgdGhlCi0gICAgPHN0cnVjdG5hbWU+RnVuY3Rpb25DYWxsSW5mb0Jhc2VE YXRhPC9zdHJ1Y3RuYW1lPidzCi0gICAgPHN0cnVjdGZpZWxkPmNvbnRleHQ8L3N0cnVjdGZpZWxk PiBmaWVsZCBwb2ludHMgYXQgYQotICAgIDxzdHJ1Y3RuYW1lPlRyaWdnZXJEYXRhPC9zdHJ1Y3Ru YW1lPiBzdHJ1Y3R1cmUsIHJhdGhlciB0aGFuIGJlaW5nIDxzeW1ib2w+TlVMTDwvc3ltYm9sPgot ICAgIGFzIGl0IGlzIGluIGEgcGxhaW4gZnVuY3Rpb24gY2FsbC4gIEEgbGFuZ3VhZ2UgaGFuZGxl ciBzaG91bGQKLSAgICBwcm92aWRlIG1lY2hhbmlzbXMgZm9yIHByb2NlZHVyYWwtbGFuZ3VhZ2Ug ZnVuY3Rpb25zIHRvIGdldCBhdCB0aGUgdHJpZ2dlcgotICAgIGluZm9ybWF0aW9uLgorICAgIElm IHRoZSBoYW5kbGVyIHN1cHBvcnRzIHJldHVybmluZyBzZXRzLCBhbmQgdXNlcyB0aGUgVmFsdWVQ ZXJDYWxsIG1vZGUKKyAgICBoZWxwZXIgbWFjcm9zIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5k PSJ4ZnVuYy1jLXJldHVybi1zZXQiLz4sIGl0IG11c3QKKyAgICBub3QgdXNlIDxzdHJ1Y3RmaWVs ZD5mbl9leHRyYTwvc3RydWN0ZmllbGQ+IGR1cmluZyBzZXQtcmV0dXJuaW5nIGNhbGxzLgorICAg IFRoZSBoZWxwZXIgbWFjcm9zIHVzZSB0aGF0IGZpZWxkIGZvciB0aGVpciBvd24gcHVycG9zZXMu IEFmdGVyCisgICAgPGxpdGVyYWw+U1JGX0ZJUlNUQ0FMTF9JTklUPC9saXRlcmFsPiBoYXMgYmVl biBjYWxsZWQsIHRoZSBmaWVsZCB3aWxsIHBvaW50CisgICAgdG8gYSA8c3RydWN0bmFtZT5GdW5j Q2FsbENvbnRleHQ8L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSwgd2hpY2ggaGFzCisgICAgYSA8c3Ry dWN0ZmllbGQ+dXNlcl9mY3R4PC9zdHJ1Y3RmaWVsZD4gZmllbGQgdGhhdCBjYW4gYmUgdXNlZCBz aW1pbGFybHksCisgICAgYnV0IG9ubHkgdGhyb3VnaCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgcmV0 dXJuaW5nIG9uZSBzZXQgcmVzdWx0LgogICAgPC9wYXJhPgogCi0gICA8cGFyYT4KLSAgICBBIHRl bXBsYXRlIGZvciBhIHByb2NlZHVyYWwtbGFuZ3VhZ2UgaGFuZGxlciB3cml0dGVuIGFzIGEgQyBl eHRlbnNpb24gaXMKLSAgICBwcm92aWRlZCBpbiA8bGl0ZXJhbD5zcmMvdGVzdC9tb2R1bGVzL3Bs c2FtcGxlPC9saXRlcmFsPi4gIFRoaXMgaXMgYQotICAgIHdvcmtpbmcgc2FtcGxlIGRlbW9uc3Ry YXRpbmcgb25lIHdheSB0byBjcmVhdGUgYSBwcm9jZWR1cmFsLWxhbmd1YWdlCi0gICAgaGFuZGxl ciwgcHJvY2VzcyBwYXJhbWV0ZXJzLCBhbmQgcmV0dXJuIGEgdmFsdWUuCi0gICA8L3BhcmE+Cisg ICA8L3NlY3QyPgogCi0gICA8cGFyYT4KLSAgICBBbHRob3VnaCBwcm92aWRpbmcgYSBjYWxsIGhh bmRsZXIgaXMgc3VmZmljaWVudCB0byBjcmVhdGUgYSBtaW5pbWFsCi0gICAgcHJvY2VkdXJhbCBs YW5ndWFnZSwgdGhlcmUgYXJlIHR3byBvdGhlciBmdW5jdGlvbnMgdGhhdCBjYW4gb3B0aW9uYWxs eQotICAgIGJlIHByb3ZpZGVkIHRvIG1ha2UgdGhlIGxhbmd1YWdlIG1vcmUgY29udmVuaWVudCB0 byB1c2UuICBUaGVzZQotICAgIGFyZSBhIDxmaXJzdHRlcm0+dmFsaWRhdG9yPC9maXJzdHRlcm0+ IGFuZCBhbgotICAgIDxmaXJzdHRlcm0+aW5saW5lIGhhbmRsZXI8L2ZpcnN0dGVybT4uICBBIHZh bGlkYXRvciBjYW4gYmUgcHJvdmlkZWQKLSAgICB0byBhbGxvdyBsYW5ndWFnZS1zcGVjaWZpYyBj aGVja2luZyB0byBiZSBkb25lIGR1cmluZwotICAgIDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVm dW5jdGlvbiIvPi4KLSAgICBBbiBpbmxpbmUgaGFuZGxlciBjYW4gYmUgcHJvdmlkZWQgdG8gYWxs b3cgdGhlIGxhbmd1YWdlIHRvIHN1cHBvcnQKLSAgICBhbm9ueW1vdXMgY29kZSBibG9ja3MgZXhl Y3V0ZWQgdmlhIHRoZSA8eHJlZiBsaW5rZW5kPSJzcWwtZG8iLz4gY29tbWFuZC4KLSAgIDwvcGFy YT4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MSBpZD0icGxoYW5kbGVyLXZhbGlkYXRvciI+Cisg ICAgPHRpdGxlPlZhbGlkYXRvciBmdW5jdGlvbjwvdGl0bGU+CiAKICAgIDxwYXJhPgogICAgIElm IGEgdmFsaWRhdG9yIGlzIHByb3ZpZGVkIGJ5IGEgcHJvY2VkdXJhbCBsYW5ndWFnZSwgaXQKICAg ICBtdXN0IGJlIGRlY2xhcmVkIGFzIGEgZnVuY3Rpb24gdGFraW5nIGEgc2luZ2xlIHBhcmFtZXRl ciBvZiB0eXBlCiAgICAgPHR5cGU+b2lkPC90eXBlPi4gIFRoZSB2YWxpZGF0b3IncyByZXN1bHQg aXMgaWdub3JlZCwgc28gaXQgaXMgY3VzdG9tYXJpbHkKLSAgICBkZWNsYXJlZCB0byByZXR1cm4g PHR5cGU+dm9pZDwvdHlwZT4uICBUaGUgdmFsaWRhdG9yIHdpbGwgYmUgY2FsbGVkIGF0Ci0gICAg dGhlIGVuZCBvZiBhIDxjb21tYW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gY29tbWFuZCB0 aGF0IGhhcyBjcmVhdGVkCi0gICAgb3IgdXBkYXRlZCBhIGZ1bmN0aW9uIHdyaXR0ZW4gaW4gdGhl IHByb2NlZHVyYWwgbGFuZ3VhZ2UuCi0gICAgVGhlIHBhc3NlZC1pbiBPSUQgaXMgdGhlIE9JRCBv ZiB0aGUgZnVuY3Rpb24ncyA8Y2xhc3NuYW1lPnBnX3Byb2M8L2NsYXNzbmFtZT4KKyAgICBkZWNs YXJlZCB0byByZXR1cm4gPHR5cGU+dm9pZDwvdHlwZT4uCisgICAgVGhlIHZhbGlkYXRvciBpdHNl bGYgbWF5IGJlIHdyaXR0ZW4gaW4gYW55IHByb2NlZHVyYWwgbGFuZ3VhZ2UgYWJsZSB0bworICAg IHJlY2VpdmUgYW4gPHR5cGU+b2lkPC90eXBlPi10eXBlZCBwYXJhbWV0ZXIgYW5kIHF1ZXJ5IHN5 c3RlbSBjYXRhbG9ncy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIHZhbGlkYXRv ciB3aWxsIGJlIGNhbGxlZCBhdAorICAgIHRoZSBlbmQgb2YgYSA8Y29tbWFuZD5DUkVBVEUgRlVO Q1RJT048L2NvbW1hbmQ+IG9yCisgICAgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwvY29tbWFu ZD4gY29tbWFuZCB0aGF0IGhhcyBjcmVhdGVkCisgICAgb3IgdXBkYXRlZCBhIHJvdXRpbmUgd3Jp dHRlbiBpbiB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZS4KKyAgICBUaGUgcGFzc2VkLWluIE9JRCBp cyB0aGUgT0lEIG9mIHRoZSByb3V0aW5lJ3MgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+ CiAgICAgcm93LiAgVGhlIHZhbGlkYXRvciBtdXN0IGZldGNoIHRoaXMgcm93IGluIHRoZSB1c3Vh bCB3YXksIGFuZCBkbwogICAgIHdoYXRldmVyIGNoZWNraW5nIGlzIGFwcHJvcHJpYXRlLgorICAg PC9wYXJhPgorCisgICA8cGFyYT4KICAgICBGaXJzdCwgY2FsbCA8ZnVuY3Rpb24+Q2hlY2tGdW5j dGlvblZhbGlkYXRvckFjY2VzcygpPC9mdW5jdGlvbj4gdG8gZGlhZ25vc2UKICAgICBleHBsaWNp dCBjYWxscyB0byB0aGUgdmFsaWRhdG9yIHRoYXQgdGhlIHVzZXIgY291bGQgbm90IGFjaGlldmUg dGhyb3VnaAotICAgIDxjb21tYW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4uICBUeXBpY2Fs IGNoZWNrcyB0aGVuIGluY2x1ZGUgdmVyaWZ5aW5nCi0gICAgdGhhdCB0aGUgZnVuY3Rpb24ncyBh cmd1bWVudCBhbmQgcmVzdWx0IHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlCi0gICAgbGFuZ3Vh Z2UsIGFuZCB0aGF0IHRoZSBmdW5jdGlvbidzIGJvZHkgaXMgc3ludGFjdGljYWxseSBjb3JyZWN0 Ci0gICAgaW4gdGhlIGxhbmd1YWdlLiAgSWYgdGhlIHZhbGlkYXRvciBmaW5kcyB0aGUgZnVuY3Rp b24gdG8gYmUgb2theSwKKyAgICA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IG9y IDxjb21tYW5kPkNSRUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+LgorICAgIFR5cGljYWwgY2hlY2tz IHRoZW4gaW5jbHVkZSB2ZXJpZnlpbmcKKyAgICB0aGF0IHRoZSByb3V0aW5lJ3MgYXJndW1lbnQg YW5kIHJlc3VsdCB0eXBlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQorICAgIGxhbmd1YWdlLCBhbmQg dGhhdCB0aGUgcm91dGluZSdzIGJvZHkgaXMgc3ludGFjdGljYWxseSBjb3JyZWN0CisgICAgaW4g dGhlIGxhbmd1YWdlLiAgSWYgdGhlIHZhbGlkYXRvciBmaW5kcyB0aGUgcm91dGluZSB0byBiZSBv a2F5LAogICAgIGl0IHNob3VsZCBqdXN0IHJldHVybi4gIElmIGl0IGZpbmRzIGFuIGVycm9yLCBp dCBzaG91bGQgcmVwb3J0IHRoYXQKICAgICB2aWEgdGhlIG5vcm1hbCA8ZnVuY3Rpb24+ZXJlcG9y dCgpPC9mdW5jdGlvbj4gZXJyb3IgcmVwb3J0aW5nIG1lY2hhbmlzbS4KICAgICBUaHJvd2luZyBh biBlcnJvciB3aWxsIGZvcmNlIGEgdHJhbnNhY3Rpb24gcm9sbGJhY2sgYW5kIHRodXMgcHJldmVu dAotICAgIHRoZSBpbmNvcnJlY3QgZnVuY3Rpb24gZGVmaW5pdGlvbiBmcm9tIGJlaW5nIGNvbW1p dHRlZC4KKyAgICB0aGUgaW5jb3JyZWN0IHJvdXRpbmUgZGVmaW5pdGlvbiBmcm9tIGJlaW5nIGNv bW1pdHRlZC4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+CkBAIC0xNDMsMzUgKzM0Miw3MiBAQAog ICAgIGxhbmd1YWdlIHByb3ZpZGVzIGZvciBjb2RlIGV4ZWN1dGlvbiBhdCBjb21waWxhdGlvbiB0 aW1lLCB0aGUgdmFsaWRhdG9yCiAgICAgbXVzdCBzdXBwcmVzcyBjaGVja3MgdGhhdCB3b3VsZCBp bmR1Y2Ugc3VjaCBleGVjdXRpb24uICBJbiBwYXJ0aWN1bGFyLAogICAgIHRoaXMgcGFyYW1ldGVy IGlzIHR1cm5lZCBvZmYgYnkgPGFwcGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPiBzbyB0 aGF0IGl0IGNhbgotICAgIGxvYWQgcHJvY2VkdXJhbCBsYW5ndWFnZSBmdW5jdGlvbnMgd2l0aG91 dCB3b3JyeWluZyBhYm91dCBzaWRlIGVmZmVjdHMgb3IKLSAgICBkZXBlbmRlbmNpZXMgb2YgdGhl IGZ1bmN0aW9uIGJvZGllcyBvbiBvdGhlciBkYXRhYmFzZSBvYmplY3RzLgorICAgIGxvYWQgcHJv Y2VkdXJhbCBsYW5ndWFnZSByb3V0aW5lcyB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHNpZGUgZWZm ZWN0cyBvcgorICAgIGRlcGVuZGVuY2llcyBvZiB0aGUgcm91dGluZSBib2RpZXMgb24gb3RoZXIg ZGF0YWJhc2Ugb2JqZWN0cy4KICAgICAoQmVjYXVzZSBvZiB0aGlzIHJlcXVpcmVtZW50LCB0aGUg Y2FsbCBoYW5kbGVyIHNob3VsZCBhdm9pZAotICAgIGFzc3VtaW5nIHRoYXQgdGhlIHZhbGlkYXRv ciBoYXMgZnVsbHkgY2hlY2tlZCB0aGUgZnVuY3Rpb24uICBUaGUgcG9pbnQKKyAgICBhc3N1bWlu ZyB0aGF0IHRoZSB2YWxpZGF0b3IgaGFzIGZ1bGx5IGNoZWNrZWQgdGhlIHJvdXRpbmUuICBUaGUg cG9pbnQKICAgICBvZiBoYXZpbmcgYSB2YWxpZGF0b3IgaXMgbm90IHRvIGxldCB0aGUgY2FsbCBo YW5kbGVyIG9taXQgY2hlY2tzLCBidXQKICAgICB0byBub3RpZnkgdGhlIHVzZXIgaW1tZWRpYXRl bHkgaWYgdGhlcmUgYXJlIG9idmlvdXMgZXJyb3JzIGluIGEKLSAgICA8Y29tbWFuZD5DUkVBVEUg RlVOQ1RJT048L2NvbW1hbmQ+IGNvbW1hbmQuKQorICAgIDxjb21tYW5kPkNSRUFURSBGVU5DVElP TjwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwvY29tbWFuZD4KKyAgICBj b21tYW5kLikKKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CiAgICAgV2hpbGUgdGhlIGNob2ljZSBv ZiBleGFjdGx5IHdoYXQgdG8gY2hlY2sgaXMgbW9zdGx5IGxlZnQgdG8gdGhlCiAgICAgZGlzY3Jl dGlvbiBvZiB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uLCBub3RlIHRoYXQgdGhlIGNvcmUKLSAgICA8 Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IGNvZGUgb25seSBleGVjdXRlcyA8bGl0 ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZXMKLSAgICBhdHRhY2hlZCB0byBhIGZ1bmN0aW9uIHdo ZW4gPHZhcm5hbWU+Y2hlY2tfZnVuY3Rpb25fYm9kaWVzPC92YXJuYW1lPiBpcyBvbi4KKyAgICA8 Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5DUkVBVEUgUFJP Q0VEVVJFPC9jb21tYW5kPgorICAgIGNvZGUgb25seSBleGVjdXRlcyA8bGl0ZXJhbD5TRVQ8L2xp dGVyYWw+IGNsYXVzZXMKKyAgICBhdHRhY2hlZCB0byBhIHJvdXRpbmUgd2hlbiA8dmFybmFtZT5j aGVja19mdW5jdGlvbl9ib2RpZXM8L3Zhcm5hbWU+IGlzIG9uLgogICAgIFRoZXJlZm9yZSwgY2hl Y2tzIHdob3NlIHJlc3VsdHMgbWlnaHQgYmUgYWZmZWN0ZWQgYnkgR1VDIHBhcmFtZXRlcnMKICAg ICBkZWZpbml0ZWx5IHNob3VsZCBiZSBza2lwcGVkIHdoZW4gPHZhcm5hbWU+Y2hlY2tfZnVuY3Rp b25fYm9kaWVzPC92YXJuYW1lPiBpcwogICAgIG9mZiwgdG8gYXZvaWQgZmFsc2UgZmFpbHVyZXMg d2hlbiByZWxvYWRpbmcgYSBkdW1wLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KLSAgICBJZiBh biBpbmxpbmUgaGFuZGxlciBpcyBwcm92aWRlZCBieSBhIHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGl0 CisgICAgSWYgYSBsYW5ndWFnZSdzIGNhbGwgaGFuZGxlciBkb2VzIG5vdCBhcHBseSBwYXJhbWV0 ZXIgYW5kIHJldHVybiB0eXBlCisgICAgdHJhbnNmb3JtcywgdGhlbiBubyA8bGl0ZXJhbD5UUkFO U0ZPUk08L2xpdGVyYWw+IGNsYXVzZSBpbiBhIHJvdXRpbmUKKyAgICBkZWNsYXJhdGlvbiB3aWxs IGhhdmUgYW55IGVmZmVjdC4gVG8gcHJvdmlkZSBpbW1lZGlhdGUgZmVlZGJhY2sgaWYgYQorICAg IGRlY2xhcmF0aW9uIGNvbnRhaW5zIHN1Y2ggYSBjbGF1c2UsIHRoZSB2YWxpZGF0b3IgY2FuIHJl cG9ydCBhIHN1aXRhYmxlCisgICAgZXJyb3Igd2hlbmV2ZXIgdGhlIDxsaXRlcmFsPnByb3RyZnR5 cGVzPC9saXRlcmFsPiBjb2x1bW4gb2YgdGhlIHJvdXRpbmUncworICAgIDxjbGFzc25hbWU+cGdf cHJvYzwvY2xhc3NuYW1lPiByb3cgaXMgbm9uLW51bGwuCisgICA8L3BhcmE+CisKKyAgIDwvc2Vj dDE+CisKKyAgIDxzZWN0MSBpZD0icGxoYW5kbGVyLWlubGluZSI+CisgICAgPHRpdGxlPklubGlu ZSBoYW5kbGVyIGZ1bmN0aW9uPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgSWYgdGhpcyBoYW5k bGVyIGlzIHByb3ZpZGVkIGJ5IGEgcHJvY2VkdXJhbCBsYW5ndWFnZSwgaXQKICAgICBtdXN0IGJl IGRlY2xhcmVkIGFzIGEgZnVuY3Rpb24gdGFraW5nIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBl Ci0gICAgPHR5cGU+aW50ZXJuYWw8L3R5cGU+LiAgVGhlIGlubGluZSBoYW5kbGVyJ3MgcmVzdWx0 IGlzIGlnbm9yZWQsIHNvIGl0IGlzCi0gICAgY3VzdG9tYXJpbHkgZGVjbGFyZWQgdG8gcmV0dXJu IDx0eXBlPnZvaWQ8L3R5cGU+LiAgVGhlIGlubGluZSBoYW5kbGVyCisgICAgPHR5cGU+aW50ZXJu YWw8L3R5cGU+LCB3aGljaCB3aWxsIGJlIGEgcG9pbnRlcgorICAgIHRvIGFuIDxzdHJ1Y3RuYW1l PklubGluZUNvZGVCbG9jazwvc3RydWN0bmFtZT4gc3RydWN0IHdoZW4gdGhlIGhhbmRsZXIKKyAg ICBpcyBjYWxsZWQuICBUaGUgcmVzdWx0IGlzIGlnbm9yZWQsIHNvIHRoZSByZXR1cm4gdHlwZSBp cyBjdXN0b21hcmlseQorICAgIGRlY2xhcmVkIGFzIDx0eXBlPnZvaWQ8L3R5cGU+LgorICAgIFRo ZSBpbmxpbmUgaGFuZGxlciBpdHNlbGYgbWF5IGJlIHdyaXR0ZW4gaW4gYW55IHByb2NlZHVyYWwg bGFuZ3VhZ2UgdGhhdAorICAgIHBlcm1pdHMgZGVjbGFyaW5nIGFuIDx0eXBlPmludGVybmFsPC90 eXBlPiBwYXJhbWV0ZXIgd2l0aCBhIHN1aXRhYmxlCisgICAgbGFuZ3VhZ2UgYmluZGluZyBmb3Ig YWNjZXNzaW5nIGl0IGFzIGFuCisgICAgPHN0cnVjdG5hbWU+SW5saW5lQ29kZUJsb2NrPC9zdHJ1 Y3RuYW1lPiBzdHJ1Y3QuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBpbmxpbmUg aGFuZGxlcgogICAgIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSA8Y29tbWFuZD5ETzwvY29tbWFuZD4g c3RhdGVtZW50IGlzIGV4ZWN1dGVkIHNwZWNpZnlpbmcKLSAgICB0aGUgcHJvY2VkdXJhbCBsYW5n dWFnZS4gIFRoZSBwYXJhbWV0ZXIgYWN0dWFsbHkgcGFzc2VkIGlzIGEgcG9pbnRlcgotICAgIHRv IGFuIDxzdHJ1Y3RuYW1lPklubGluZUNvZGVCbG9jazwvc3RydWN0bmFtZT4gc3RydWN0LCB3aGlj aCBjb250YWlucyBpbmZvcm1hdGlvbgorICAgIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlLiAgVGhl IDxzdHJ1Y3RuYW1lPklubGluZUNvZGVCbG9jazwvc3RydWN0bmFtZT4KKyAgICBzdHJ1Y3QgY29u dGFpbnMgaW5mb3JtYXRpb24KICAgICBhYm91dCB0aGUgPGNvbW1hbmQ+RE88L2NvbW1hbmQ+IHN0 YXRlbWVudCdzIHBhcmFtZXRlcnMsIGluIHBhcnRpY3VsYXIgdGhlCi0gICAgdGV4dCBvZiB0aGUg YW5vbnltb3VzIGNvZGUgYmxvY2sgdG8gYmUgZXhlY3V0ZWQuICBUaGUgaW5saW5lIGhhbmRsZXIK LSAgICBzaG91bGQgZXhlY3V0ZSB0aGlzIGNvZGUgYW5kIHJldHVybi4KKyAgICB0ZXh0IG9mIHRo ZSBhbm9ueW1vdXMgY29kZSBibG9jayB0byBiZSBleGVjdXRlZC4KKyAgICBJdCBhbHNvIGNvbnRh aW5zIHRoZSBPSUQgb2YgdGhlIGludGVuZGVkIHByb2NlZHVyYWwgbGFuZ3VhZ2UgYW5kIHdoZXRo ZXIKKyAgICB0aGF0IHByb2NlZHVyYWwgbGFuZ3VhZ2UgaXMgZGVjbGFyZWQgYXMgPGxpdGVyYWw+ VFJVU1RFRDwvbGl0ZXJhbD4sIHVzZWZ1bAorICAgIGlmIGEgc2luZ2xlIGlubGluZSBoYW5kbGVy IGlzIHN1cHBvcnRpbmcgbW9yZSB0aGFuIG9uZSBwcm9jZWR1cmFsIGxhbmd1YWdlLgorICAgIFRo ZSBpbmxpbmUgaGFuZGxlciBzaG91bGQgZXhlY3V0ZSB0aGUgY29kZSBibG9jayBhbmQgcmV0dXJu LgogICAgPC9wYXJhPgogCisgICA8L3NlY3QxPgorCisgICA8c2VjdDEgaWQ9InBsaGFuZGxlci1w YWNrYWdpbmciPgorICAgIDx0aXRsZT5QYWNrYWdpbmcgdGhlIGxhbmd1YWdlIGhhbmRsZXJzPC90 aXRsZT4KKwogICAgPHBhcmE+CiAgICAgSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSB3cmFwIGFs bCB0aGVzZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsCiAgICAgYXMgd2VsbCBhcyB0aGUgPGNvbW1h bmQ+Q1JFQVRFIExBTkdVQUdFPC9jb21tYW5kPiBjb21tYW5kIGl0c2VsZiwgaW50bwpAQCAtMTgx LDYgKzQxNywxOCBAQAogICAgIGV4dGVuc2lvbnMuCiAgICA8L3BhcmE+CiAKKyAgIDwvc2VjdDE+ CisKKyAgIDxzZWN0MSBpZD0icGxoYW5kbGVyLWV4YW1wbGVzIj4KKyAgICA8dGl0bGU+RXhhbXBs ZSBjb2RlPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgQSB0ZW1wbGF0ZSBmb3IgYSBwcm9jZWR1 cmFsLWxhbmd1YWdlIGhhbmRsZXIgd3JpdHRlbiBhcyBhIEMgZXh0ZW5zaW9uIGlzCisgICAgcHJv dmlkZWQgaW4gPGxpdGVyYWw+c3JjL3Rlc3QvbW9kdWxlcy9wbHNhbXBsZTwvbGl0ZXJhbD4uICBU aGlzIGlzIGEKKyAgICB3b3JraW5nIHNhbXBsZSBkZW1vbnN0cmF0aW5nIG9uZSB3YXkgdG8gY3Jl YXRlIGEgcHJvY2VkdXJhbC1sYW5ndWFnZQorICAgIGhhbmRsZXIsIHByb2Nlc3MgcGFyYW1ldGVy cywgYW5kIHJldHVybiBhIHZhbHVlLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBUaGUg cHJvY2VkdXJhbCBsYW5ndWFnZXMgaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGRpc3RyaWJ1dGlv bgogICAgIGFyZSBnb29kIHJlZmVyZW5jZXMgd2hlbiB0cnlpbmcgdG8gd3JpdGUgeW91ciBvd24g bGFuZ3VhZ2UgaGFuZGxlci4KQEAgLTE4OSw0ICs0MzcsNiBAQAogICAgIHJlZmVyZW5jZSBwYWdl IGFsc28gaGFzIHNvbWUgdXNlZnVsIGRldGFpbHMuCiAgICA8L3BhcmE+CiAKKyAgIDwvc2VjdDE+ CisKICA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90cmFu c2Zvcm0uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RyYW5zZm9ybS5zZ21sCmluZGV4 IDM0YmRjNjAuLmUxZGM3OWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Ry YW5zZm9ybS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RyYW5zZm9ybS5zZ21s CkBAIC0yMiw4ICsyMiw4IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxyZWZzeW5vcHNp c2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBbIE9SIFJFUExBQ0UgXSBUUkFOU0ZPUk0gRk9SIDxy ZXBsYWNlYWJsZT50eXBlX25hbWU8L3JlcGxhY2VhYmxlPiBMQU5HVUFHRSA8cmVwbGFjZWFibGU+ bGFuZ19uYW1lPC9yZXBsYWNlYWJsZT4gKAotICAgIEZST00gU1FMIFdJVEggRlVOQ1RJT04gPHJl cGxhY2VhYmxlPmZyb21fc3FsX2Z1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbICg8cmVwbGFj ZWFibGU+YXJndW1lbnRfdHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pIF0sCi0gICAgVE8gU1FM IFdJVEggRlVOQ1RJT04gPHJlcGxhY2VhYmxlPnRvX3NxbF9mdW5jdGlvbl9uYW1lPC9yZXBsYWNl YWJsZT4gWyAoPHJlcGxhY2VhYmxlPmFyZ3VtZW50X3R5cGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5d KSBdCisgICAgRlJPTSBTUUwgV0lUSCBGVU5DVElPTiA8cmVwbGFjZWFibGU+ZnJvbV9zcWxfZnVu Y3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+IFsgKDx0eXBlPmludGVybmFsPC90eXBlPikgXSwKKyAg ICBUTyBTUUwgV0lUSCBGVU5DVElPTiA8cmVwbGFjZWFibGU+dG9fc3FsX2Z1bmN0aW9uX25hbWU8 L3JlcGxhY2VhYmxlPiBbICg8dHlwZT5pbnRlcm5hbDwvdHlwZT4pIF0KICk7CiA8L3N5bm9wc2lz PgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC04MCw2ICs4MCwxOSBAQCBDUkVBVEUgWyBPUiBSRVBM QUNFIF0gVFJBTlNGT1JNIEZPUiA8cmVwbGFjZWFibGU+dHlwZV9uYW1lPC9yZXBsYWNlYWJsZT4g TEFOR1VBRwogICAgaGF2ZSA8bGl0ZXJhbD5FWEVDVVRFPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24g dGhlIGZyb20tU1FMIGFuZCB0by1TUUwKICAgIGZ1bmN0aW9ucywgaWYgc3BlY2lmaWVkLgogICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUeXBpY2FsbHksIDxjb21tYW5kPkNSRUFURSBUUkFOU0ZP Uk08L2NvbW1hbmQ+IHdpbGwgYmUgdXNlZCB0byByZWdpc3RlcgorICAgdHJhbnNmb3JtcyBkZXZl bG9wZWQgYnkgb3RoZXJzIChvciwgZXZlbiBtb3JlIHR5cGljYWxseSwgdGhleSB3aWxsIGJlCisg ICBwYWNrYWdlZCBpbiBhbiBleHRlbnNpb24sIGFuZCA8Y29tbWFuZD5DUkVBVEUgRVhURU5TSU9O PC9jb21tYW5kPiB3aWxsCisgICBkbyB0aGUgcmVnaXN0cmF0aW9uKS4KKyAgIFRvIGRldmVsb3Ag bmV3IHRyYW5zZm9ybSBmdW5jdGlvbnMgZm9yIGEgZ2l2ZW4gcHJvY2VkdXJhbCBsYW5ndWFnZSwg eW91IG11c3QKKyAgIGJlIGZhbWlsaWFyIHdpdGggaXRzIGltcGxlbWVudGF0aW9uLCB3aGljaCBk ZXRlcm1pbmVzIHdoZXRoZXIgaXQgc3VwcG9ydHMKKyAgIHRyYW5zZm9ybXMgYXQgYWxsLCBhbmQg ZGVmaW5lcyB0aGUgZGV0YWlscywgc3VjaCBhcyB3aGF0IGlzIGV4cGVjdGVkIGZvcgorICAgdGhl IHJldHVybiBhbmQgcGFyYW1ldGVyIHR5cGVzIGRlY2xhcmVkIDx0eXBlPmludGVybmFsPC90eXBl Pi4KKyAgIFRvIGRldmVsb3AgYSBwcm9jZWR1cmFsIGxhbmd1YWdlIHdpdGggc3VwcG9ydCBmb3Ig dHJhbnNmb3Jtcywgc2VlCisgICA8eHJlZiBsaW5rZW5kPSJwbGhhbmRsZXItY2FsbC10eXBlcy10 cmFuc2Zvcm0iLz4uCisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpAQCAt MTA3LDE4ICsxMjAsMTkgQEAgQ1JFQVRFIFsgT1IgUkVQTEFDRSBdIFRSQU5TRk9STSBGT1IgPHJl cGxhY2VhYmxlPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IExBTkdVQUcKICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAogICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPjxyZXBsYWNl YWJsZT5mcm9tX3NxbF9mdW5jdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT5bKDxyZXBsYWNlYWJsZT5h cmd1bWVudF90eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSldPC9saXRlcmFsPjwvdGVybT4KKyAg ICAgPHRlcm0+PGxpdGVyYWw+PHJlcGxhY2VhYmxlPmZyb21fc3FsX2Z1bmN0aW9uX25hbWU8L3Jl cGxhY2VhYmxlPlsoPHR5cGU+aW50ZXJuYWw8L3R5cGU+KV08L2xpdGVyYWw+PC90ZXJtPgogCiAg ICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmdW5j dGlvbiBmb3IgY29udmVydGluZyB0aGUgdHlwZSBmcm9tIHRoZSBTUUwKICAgICAgICBlbnZpcm9u bWVudCB0byB0aGUgbGFuZ3VhZ2UuICBJdCBtdXN0IHRha2Ugb25lIGFyZ3VtZW50IG9mCiAgICAg ICAgdHlwZSA8dHlwZT5pbnRlcm5hbDwvdHlwZT4gYW5kIHJldHVybiB0eXBlIDx0eXBlPmludGVy bmFsPC90eXBlPi4gIFRoZQotICAgICAgIGFjdHVhbCBhcmd1bWVudCB3aWxsIGJlIG9mIHRoZSB0 eXBlIGZvciB0aGUgdHJhbnNmb3JtLCBhbmQgdGhlIGZ1bmN0aW9uCi0gICAgICAgc2hvdWxkIGJl IGNvZGVkIGFzIGlmIGl0IHdlcmUuICAoQnV0IGl0IGlzIG5vdCBhbGxvd2VkIHRvIGRlY2xhcmUg YW4KLSAgICAgICBTUUwtbGV2ZWwgZnVuY3Rpb24gcmV0dXJuaW5nIDx0eXBlPmludGVybmFsPC90 eXBlPiB3aXRob3V0IGF0Ci0gICAgICAgbGVhc3Qgb25lIGFyZ3VtZW50IG9mIHR5cGUgPHR5cGU+ aW50ZXJuYWw8L3R5cGU+LikgIFRoZSBhY3R1YWwgcmV0dXJuCi0gICAgICAgdmFsdWUgd2lsbCBi ZSBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIGxhbmd1YWdlIGltcGxlbWVudGF0aW9uLgorICAg ICAgIGFjdHVhbCBhcmd1bWVudCB3aWxsIGJlIHN1cHBsaWVkIGJ5IHRoZSBsYW5ndWFnZSBoYW5k bGVyLiBJdCB3aWxsCisgICAgICAgdHlwaWNhbGx5IGJlIG9mIHRoZSB0eXBlIGZvciB0aGUgdHJh bnNmb3JtIChldmVuIHRob3VnaCBkZWNsYXJlZAorICAgICAgIDx0eXBlPmludGVybmFsPC90eXBl PiksIGJ1dCB3aGVuIHdyaXRpbmcgdHJhbnNmb3JtcyBmb3IgYSBwYXJ0aWN1bGFyCisgICAgICAg bGFuZ3VhZ2UsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgY29uc3VsdGVkIGZvciB0aGUg ZGV0YWlscy4KKyAgICAgICBUaGUgYWN0dWFsIHJldHVybgorICAgICAgIHZhbHVlIHdpbGwgYWxz byBiZSBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIGxhbmd1YWdlIGltcGxlbWVudGF0aW9uLgog ICAgICAgIElmIG5vIGFyZ3VtZW50IGxpc3QgaXMgc3BlY2lmaWVkLCB0aGUgZnVuY3Rpb24gbmFt ZSBtdXN0IGJlIHVuaXF1ZSBpbgogICAgICAgIGl0cyBzY2hlbWEuCiAgICAgICA8L3BhcmE+CkBA IC0xMjYsNyArMTQwLDcgQEAgQ1JFQVRFIFsgT1IgUkVQTEFDRSBdIFRSQU5TRk9STSBGT1IgPHJl cGxhY2VhYmxlPnR5cGVfbmFtZTwvcmVwbGFjZWFibGU+IExBTkdVQUcKICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAogICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgIDx0ZXJtPjxsaXRlcmFsPjxyZXBsYWNl YWJsZT50b19zcWxfZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+Wyg8cmVwbGFjZWFibGU+YXJn dW1lbnRfdHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAg IDx0ZXJtPjxsaXRlcmFsPjxyZXBsYWNlYWJsZT50b19zcWxfZnVuY3Rpb25fbmFtZTwvcmVwbGFj ZWFibGU+Wyg8dHlwZT5pbnRlcm5hbDwvdHlwZT4pXTwvbGl0ZXJhbD48L3Rlcm0+CiAKICAgICAg PGxpc3RpdGVtPgogICAgICAgPHBhcmE+CkBAIC0xOTIsMTEgKzIwNiwzNCBAQCBDUkVBVEUgVFJB TlNGT1JNIEZPUiBoc3RvcmUgTEFOR1VBR0UgcGxweXRob24zdSAoCiAgIDx0aXRsZT5Db21wYXRp YmlsaXR5PC90aXRsZT4KIAogICA8cGFyYT4KLSAgIFRoaXMgZm9ybSBvZiA8Y29tbWFuZD5DUkVB VEUgVFJBTlNGT1JNPC9jb21tYW5kPiBpcyBhCi0gICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+IGV4dGVuc2lvbi4gIFRoZXJlIGlzIGEgPGNvbW1hbmQ+Q1JFQVRFCi0gICBU UkFOU0ZPUk08L2NvbW1hbmQ+IGNvbW1hbmQgaW4gdGhlIDxhY3JvbnltPlNRTDwvYWNyb255bT4g c3RhbmRhcmQsIGJ1dCBpdAotICAgaXMgZm9yIGFkYXB0aW5nIGRhdGEgdHlwZXMgdG8gY2xpZW50 IGxhbmd1YWdlcy4gIFRoYXQgdXNhZ2UgaXMgbm90IHN1cHBvcnRlZAotICAgYnkgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPi4KKyAgIFRoZXJlIGlzIGEgPGNvbW1hbmQ+Q1JF QVRFIFRSQU5TRk9STTwvY29tbWFuZD4gY29tbWFuZCBpbiB0aGUKKyAgIDxhY3JvbnltPlNRTDwv YWNyb255bT4gc3RhbmRhcmQuCisgICA8bGl0ZXJhbD5MQU5HVUFHRSA8cmVwbGFjZWFibGU+bGFu Z19uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IGlzIGEKKyAgIDxwcm9kdWN0bmFtZT5Qb3N0 Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZXh0ZW5zaW9uLgorICAgQSB0cmFuc2Zvcm0gaW4gdGhlIDxh Y3JvbnltPlNRTDwvYWNyb255bT4gc3RhbmRhcmQgbWF5IGJlIGNyZWF0ZWQgb25seSBmb3IKKyAg IGEgPHF1b3RlPnVzZXItZGVmaW5lZDwvcXVvdGU+IHR5cGUsIGFuZCB0cmFuc2Zvcm1zIGl0IHRv IGEgc3RhbmRhcmQKKyAgIDxhY3JvbnltPlNRTDwvYWNyb255bT4gdHlwZSB0aGF0IGlzIGV4cGVj dGVkIHRvIGhhdmUgY3Jvc3MtbGFuZ3VhZ2Ugc3VwcG9ydC4KKyAgIEEgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0cmFuc2Zvcm0gY2FuIGJlIGNyZWF0ZWQgZm9yCisgICBh bnkgdHlwZSwgYW5kIHRyYW5zZm9ybXMgaXQgZGlyZWN0bHkgdG8gYSBsYW5ndWFnZS1zcGVjaWZp YyB0eXBlLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBBIHRyYW5zZm9ybSBpbiB0aGUgPGFj cm9ueW0+U1FMPC9hY3JvbnltPiBzdGFuZGFyZCBpcyBhcHBsaWVkCisgICBmb3Igc2VydmVyLXNp ZGUgcm91dGluZXMgYW5kIGFsc28gZm9yIGVtYmVkZGVkLTxhY3JvbnltPlNRTDwvYWNyb255bT4g Y2xpZW50CisgICBsYW5ndWFnZXMuIEluIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4sIGEgdHJhbnNmb3JtIGlzIG9ubHkKKyAgIGFwcGxpZWQgZm9yIHNlcnZlci1zaWRlIHJv dXRpbmVzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBJbiB0aGUgPGFjcm9ueW0+U1FMPC9h Y3JvbnltPiBzdGFuZGFyZCwgYSB0cmFuc2Zvcm0gZ3JvdXAgKG9uZSBwYWlyIG9mCisgICBmcm9t LTxhY3JvbnltPlNRTDwvYWNyb255bT4gYW5kIHRvLTxhY3JvbnltPlNRTDwvYWNyb255bT4gZnVu Y3Rpb25zKSBtYXkgaGF2ZQorICAgYSBncm91cCBuYW1lLCBhbGxvd2luZyBtdWx0aXBsZSB0cmFu c2Zvcm1zIHRvIGV4aXN0IGZvciB0aGUgc2FtZSB0eXBlLCBhbmQKKyAgIGVhY2ggcm91dGluZSBt YXkgZGVjbGFyZSB3aGljaCBvbmUgdG8gYXBwbHksIGJ5IGdpdmluZyBpdHMgbmFtZS4KKyAgIFRy YW5zZm9ybSBncm91cHMgYXJlIG5vdCBuYW1lZCBpbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwv cHJvZHVjdG5hbWU+LAorICAgc28gb25seSBvbmUgdHJhbnNmb3JtIGZvciBhIGdpdmVuIHR5cGUg YW5kIHByb2NlZHVyYWwgbGFuZ3VhZ2UgbWF5IGV4aXN0IGF0CisgICBhbnkgdGltZS4gUm91dGlu ZXMgdXNpbmcgdGhhdCBsYW5ndWFnZSBtYXkgY2hvb3NlIGJldHdlZW4gdHdvIG1hcHBpbmdzIGZv cgorICAgdGhlIHR5cGU6IHRoZSBidWlsdC1pbiBkZWZhdWx0LCBvciB0aGUgb25lIGRlZmluZWQg YnkgdGhlIHNpbmdsZSBhdmFpbGFibGUKKyAgIHRyYW5zZm9ybS4KICAgPC9wYXJhPgogIDwvcmVm c2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sIGIvZG9jL3NyYy9z Z21sL3hmdW5jLnNnbWwKaW5kZXggYTM0NzIzMC4uZGY2MTNlNiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3hmdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKQEAgLTMyOTUs NyArMzI5NSw3IEBAIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHJldGNvbXBvc2l0ZShJTiBp bnRlZ2VyLCBJTiBpbnRlZ2VyLAogICAgIDwvcGFyYT4KICAgIDwvc2VjdDI+CiAKLSAgIDxzZWN0 Mj4KKyAgIDxzZWN0MiBpZD0ieGZ1bmMtYy1wb2x5bW9ycGhpc20iPgogICAgIDx0aXRsZT5Qb2x5 bW9ycGhpYyBBcmd1bWVudHMgYW5kIFJldHVybiBUeXBlczwvdGl0bGU+CiAKICAgICA8cGFyYT4K LS0gCjIuNy4zCgo= --=_383627b03f3032e924b279ff6e9d20f7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0003-Reindent-and-wrap-between-added-sect1-tags.patch Content-Disposition: attachment; filename=v2-0003-Reindent-and-wrap-between-added-sect1-tags.patch; size=36769 RnJvbSAzZjhkN2JkYjc4NWMwYTEyNGIxMWYzMTMxZDljNTMyMzcxN2UwYjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFwbWFuIEZsYWNrIDxjaGFwQGFuYXN0aWdtYXRpeC5uZXQ+ CkRhdGU6IE1vbiwgMjEgRmViIDIwMjIgMjE6MjE6NTEgLTA1MDAKU3ViamVjdDogW1BBVENIIHYy IDMvNF0gUmVpbmRlbnQgYW5kIHdyYXAgYmV0d2VlbiBhZGRlZCBzZWN0MSB0YWdzCgpBIHdoaXRl c3BhY2Utb25seSBjb21taXQuCi0tLQogZG9jL3NyYy9zZ21sL3BsaGFuZGxlci5zZ21sIHwgNjM4 ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMzIxIGluc2VydGlvbnMoKyksIDMxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcGxoYW5kbGVyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGxoYW5kbGVyLnNnbWwK aW5kZXggOTVlODUxNS4uMDAzYTZjOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3BsaGFuZGxl ci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wbGhhbmRsZXIuc2dtbApAQCAtNTcsMzg1ICs1Nywz ODkgQEAKICAgIDxzZWN0MSBpZD0icGxoYW5kbGVyLWNhbGwiPgogICAgIDx0aXRsZT5DYWxsIGhh bmRsZXIgZnVuY3Rpb248L3RpdGxlPgogCi0gICA8cGFyYT4KLSAgICBFdmVyeSByb3V0aW5lIGRl ZmluZWQgd2l0aCBhIGxhbmd1YWdlIG5hbWUgb3RoZXIgdGhhbgotICAgIDxsaXRlcmFsPmludGVy bmFsPC9saXRlcmFsPiAoYXMgZGVmaW5lZCBpbiA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1pbnRlcm5h bCIvPikKLSAgICBvciA8bGl0ZXJhbD5jPC9saXRlcmFsPiAoPHhyZWYgbGlua2VuZD0ieGZ1bmMt YyIvPikgd2lsbCBiZSBjYWxsZWQgYnkKLSAgICBpbnZva2luZyB0aGUgcHJvY2VkdXJhbCBsYW5n dWFnZSdzIGNhbGwgaGFuZGxlci4KLSAgICA8Zm9vdG5vdGU+Ci0gICAgIDxwYXJhPgotICAgICAg VGhpcyBpcyB0cnVlIGV2ZW4gb2Ygcm91dGluZXMgd2l0aCBsYW5ndWFnZSBuYW1lIDxsaXRlcmFs PnNxbDwvbGl0ZXJhbD4sCi0gICAgICB0aG91Z2gsIGFzIGEgc3BlY2lhbCBjYXNlLCB0aGF0IGNh bGwgaGFuZGxlciBoYXMgbm8gZW50cnkgaW4gdGhlIHN5c3RlbQotICAgICAgY2F0YWxvZ3MuCi0g ICAgIDwvcGFyYT4KLSAgICA8L2Zvb3Rub3RlPgotICAgIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0 eSBvZgotICAgIHRoZSBjYWxsIGhhbmRsZXIgdG8gZXhlY3V0ZSB0aGUgcm91dGluZSBpbiBhIG1l YW5pbmdmdWwgd2F5LCBzdWNoCi0gICAgYXMgYnkgaW50ZXJwcmV0aW5nIHRoZSBzdXBwbGllZCBz b3VyY2UgdGV4dC4KLSAgIDwvcGFyYT4KLQotICAgPHBhcmE+Ci0gICAgVGhlIGNhbGwgaGFuZGxl ciBpcyBhIDxxdW90ZT5ub3JtYWw8L3F1b3RlPiB1c2VyLWRlZmluZWQgZnVuY3Rpb24gdGhhdCBt dXN0Ci0gICAgYmUgZGVjbGFyZWQgdG8gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3Ru YW1lPiBhcyB0YWtpbmcgbm8gYXJndW1lbnRzCi0gICAgYW5kIHJldHVybmluZyB0aGUgdHlwZSA8 dHlwZT5sYW5ndWFnZV9oYW5kbGVyPC90eXBlPi4gIFRoaXMKLSAgICBzcGVjaWFsIHBzZXVkby10 eXBlIGlkZW50aWZpZXMgdGhlIGZ1bmN0aW9uIGFzIGEgY2FsbCBoYW5kbGVyIGFuZAotICAgIHBy ZXZlbnRzIGl0IGZyb20gYmVpbmcgY2FsbGVkIGRpcmVjdGx5IGluIFNRTCBjb21tYW5kcy4KLSAg ICBUaGlzIGhhbmRsZXIgbXVzdCBub3QgcmVxdWlyZSBhIGNhbGwgaGFuZGxlciBvZiBpdHMgb3du LCB3aGljaCBtYWtlcwotICAgIHRoZSBwcmVkZWZpbmVkIGxhbmd1YWdlcyA8bGl0ZXJhbD5pbnRl cm5hbDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+YzwvbGl0ZXJhbD4KLSAgICB0aGUgb25seSBjaG9p Y2VzIGZvciB0aGUgaGFuZGxlcidzIG93biBkZWNsYXJhdGlvbi4KLSAgICBUeXBpY2FsbHksIGl0 IHdpbGwgYmUgYSBsb2FkYWJsZSBmdW5jdGlvbiBpbiBsYW5ndWFnZQotICAgIDxsaXRlcmFsPmM8 L2xpdGVyYWw+LCBhcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0ieGZ1bmMtYyIvPi4KLSAg ICA8Zm9vdG5vdGU+Ci0gICAgIDxwYXJhPgotICAgICAgSXQgbWF5IGJlIGltcGxlbWVudGVkIGlu IGEgbGFuZ3VhZ2Ugb3RoZXIgdGhhbiBDLCBhcyBsb25nIGFzIGl0IGNhbiBiZQotICAgICAgYnVp bHQgaW50byBhIGxvYWRhYmxlIG9iamVjdCB3aXRoIGNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50 aW9ucy4KLSAgICAgPC9wYXJhPgotICAgIDwvZm9vdG5vdGU+Ci0gICA8L3BhcmE+Ci0KLSAgIDxw YXJhPgotICAgIFRoZSBjYWxsIGhhbmRsZXIgaXMgY2FsbGVkIGluIHRoZSBzYW1lIHdheSBhcyBh bnkgb3RoZXIgZnVuY3Rpb246Ci0gICAgSXQgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIGEKLSAgICA8 c3RydWN0bmFtZT5GdW5jdGlvbkNhbGxJbmZvQmFzZURhdGE8L3N0cnVjdG5hbWU+IDx0eXBlPnN0 cnVjdDwvdHlwZT4gY29udGFpbmluZwotICAgIGFyZ3VtZW50IHZhbHVlcyBhbmQgaW5mb3JtYXRp b24gYWJvdXQgdGhlIGNhbGxlZCByb3V0aW5lLCBhbmQgaXQKLSAgICBpcyBleHBlY3RlZCB0byBy ZXR1cm4gYSA8dHlwZT5EYXR1bTwvdHlwZT4gcmVzdWx0IChhbmQgcG9zc2libHkKLSAgICBzZXQg dGhlIDxzdHJ1Y3RmaWVsZD5pc251bGw8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUKLSAgICA8 c3RydWN0bmFtZT5GdW5jdGlvbkNhbGxJbmZvQmFzZURhdGE8L3N0cnVjdG5hbWU+IHN0cnVjdHVy ZSwgaWYgaXQgd2lzaGVzCi0gICAgdG8gcmV0dXJuIGFuIFNRTCBudWxsIHJlc3VsdCkuICBUaGUg ZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY2FsbAotICAgIGhhbmRsZXIgYW5kIGFuIG9yZGluYXJ5IGNh bGxlZSBpcyB0aGF0IHRoZQotICAgIDxzdHJ1Y3RmaWVsZD5mbGluZm8tJmd0O2ZuX29pZDwvc3Ry dWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQotICAgIDxzdHJ1Y3RuYW1lPkZ1bmN0aW9uQ2FsbEluZm9C YXNlRGF0YTwvc3RydWN0bmFtZT4gc3RydWN0dXJlIHdpbGwgY29udGFpbgotICAgIHRoZSBPSUQg b2YgdGhlIGFjdHVhbCByb3V0aW5lIHRvIGJlIGNhbGxlZCwgbm90IG9mIHRoZSBjYWxsCi0gICAg aGFuZGxlciBpdHNlbGYuICBUaGUgY2FsbCBoYW5kbGVyIG11c3QgdXNlIHRoaXMgZmllbGQgdG8g ZGV0ZXJtaW5lCi0gICAgd2hpY2ggcm91dGluZSB0byBleGVjdXRlLiAgQWxzbywgdGhlIHBhc3Nl ZCBhcmd1bWVudCBsaXN0IGhhcwotICAgIGJlZW4gc2V0IHVwIGFjY29yZGluZyB0byB0aGUgZGVj bGFyYXRpb24gb2YgdGhlIHRhcmdldCByb3V0aW5lLAotICAgIG5vdCBvZiB0aGUgY2FsbCBoYW5k bGVyLgotICAgPC9wYXJhPgotCi0gICA8cGFyYT4KLSAgICBJdCdzIHVwIHRvIHRoZSBjYWxsIGhh bmRsZXIgdG8gZmV0Y2ggdGhlIHJvdXRpbmUncyBkZWZpbmluZwotICAgIDxjbGFzc25hbWU+cGdf cHJvYzwvY2xhc3NuYW1lPiByb3cgZnJvbSB0aGUgc3lzdGVtIGNhdGFsb2cgY2FjaGUKLSAgICB0 byBkZXRlcm1pbmUgd2hhdCB0byBleGVjdXRlLCB3aGF0IHBhcmFtZXRlciBhbmQgcmV0dXJuIHR5 cGVzIGFyZSBleHBlY3RlZCwKLSAgICBhbmQgc28gb24uCi0gICAgVGhlIDxsaXRlcmFsPkFTPC9s aXRlcmFsPiBjbGF1c2UgZnJvbSB0aGUKLSAgICA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2Nv bW1hbmQ+IG9yIDxjb21tYW5kPkNSRUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+Ci0gICAgY29tbWFu ZCBmb3IgdGhlIHJvdXRpbmUgd2lsbCBiZSBmb3VuZAotICAgIGluIHRoZSA8bGl0ZXJhbD5wcm9z cmM8L2xpdGVyYWw+IGNvbHVtbiBvZiB0aGUKLSAgICA8Y2xhc3NuYW1lPnBnX3Byb2M8L2NsYXNz bmFtZT4gcm93LiBUaGlzIGlzIGNvbW1vbmx5IHNvdXJjZQotICAgIHRleHQgaW4gdGhlIHByb2Nl ZHVyYWwgbGFuZ3VhZ2UsIGJ1dCBpbiB0aGVvcnkgaXQgY291bGQgYmUgc29tZXRoaW5nIGVsc2Us Ci0gICAgc3VjaCBhcyBhIHBhdGggbmFtZSB0byBhIGZpbGUsIG9yIGFueXRoaW5nIGVsc2UgdGhh dCB0ZWxscyB0aGUgY2FsbCBoYW5kbGVyCi0gICAgd2hhdCB0byBkbyBpbiBkZXRhaWwuCi0gICA8 L3BhcmE+Ci0KLSAgIDxwYXJhPgotICAgIFRoZSBoYW5kbGVyIG1heSBhbHNvIGV4YW1pbmUgdGhl IHBhc3NlZAotICAgIDxzdHJ1Y3RuYW1lPkZ1bmN0aW9uQ2FsbEluZm9CYXNlRGF0YTwvc3RydWN0 bmFtZT4gc3RydWN0dXJlIGZvciBpbmZvcm1hdGlvbgotICAgIG9uIHRoZSBjb250ZXh0IG9mIHRo ZSBjYWxsLiBJZiB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZSB3aWxsIHN1cHBvcnQKLSAgICByZXR1 cm5pbmcgc2V0cywgdGhlIHN0cnVjdHVyZSBtYXkgY29udGFpbiBhIHBvaW50ZXIgdG8gYQotICAg IDxzdHJ1Y3RuYW1lPlJldHVyblNldEluZm88L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSBmb3IgdXNl IGFzIGRlc2NyaWJlZCBpbgotICAgIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMtcmV0dXJuLXNldCIv Pi4gSWYgdGhlIGxhbmd1YWdlIHdpbGwgc3VwcG9ydCB0cmlnZ2VycwotICAgIG9yIGV2ZW50IHRy aWdnZXJzLCB0aGUgc3RydWN0dXJlIG1heSBob2xkIGEgcG9pbnRlciB0byBvbmUgb2YgdGhlIHN0 cnVjdHVyZXMKLSAgICBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0idHJpZ2dlci1pbnRlcmZh Y2UiLz4gb3IKLSAgICA8eHJlZiBsaW5rZW5kPSJldmVudC10cmlnZ2VyLWludGVyZmFjZSIvPiwg YW5kIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlCi0gICAgc2hvdWxkIHByb3ZpZGUgc29tZSB3YXkg Zm9yIHRoZSBjYWxsZWQgZnVuY3Rpb24gdG8gdXNlIHRoZSBpbmZvcm1hdGlvbgotICAgIHRoZXkg Y2FycnkuCi0gICA8L3BhcmE+Ci0KLSAgIDxzZWN0MiBpZD0icGxoYW5kbGVyLWNhbGwtYXJncyI+ Ci0gICAgPHRpdGxlPlBhcmFtZXRlciBhbmQgcmV0dXJuIHR5cGUgcmVzb2x1dGlvbjwvdGl0bGU+ Ci0KICAgICA8cGFyYT4KLSAgICAgQSByb3V0aW5lJ3Mgc3RhdGljYWxseS1kZWNsYXJlZCBwYXJh bWV0ZXIgdHlwZXMgKGFuZCwgZm9yIGEgZnVuY3Rpb24sCi0gICAgIHJldHVybiB0eXBlKSBhcmUg Zm91bmQgaW4gdGhlIDxsaXRlcmFsPnByb2FyZ3R5cGVzPC9saXRlcmFsPiBhbmQKLSAgICAgPGxp dGVyYWw+cHJvcmV0dHlwZTwvbGl0ZXJhbD4gY29sdW1ucyBvZiB0aGUgPGNsYXNzbmFtZT5wZ19w cm9jPC9jbGFzc25hbWU+Ci0gICAgIHJvdy4KLSAgICAgSWYgYSByb3V0aW5lIGhhcyA8bGl0ZXJh bD5PVVQ8L2xpdGVyYWw+IHBhcmFtZXRlcnMsIHRob3NlIHR5cGVzIGFyZQotICAgICBpbmNsdWRl ZCBpbiB0aGUgPGxpdGVyYWw+cHJvYWxsYXJndHlwZXM8L2xpdGVyYWw+IGNvbHVtbiwgYW5kIHRo ZWlyIG5hbWVzCi0gICAgIGluIDxsaXRlcmFsPnByb2FyZ25hbWVzPC9saXRlcmFsPi4KLSAgICAg Q29udmVuaWVuY2UgZnVuY3Rpb25zIGRlY2xhcmVkIGluIDxmaWxlbmFtZT5mdW5jYXBpLmg8L2Zp bGVuYW1lPiBhcmUKLSAgICAgYXZhaWxhYmxlIGZvciBleHRyYWN0aW5nIHRoYXQgaW5mb3JtYXRp b24uCisgICAgIEV2ZXJ5IHJvdXRpbmUgZGVmaW5lZCB3aXRoIGEgbGFuZ3VhZ2UgbmFtZSBvdGhl ciB0aGFuCisgICAgIDxsaXRlcmFsPmludGVybmFsPC9saXRlcmFsPiAoYXMgZGVmaW5lZCBpbgor ICAgICA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1pbnRlcm5hbCIvPikKKyAgICAgb3IgPGxpdGVyYWw+ YzwvbGl0ZXJhbD4gKDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMiLz4pIHdpbGwgYmUgY2FsbGVkIGJ5 CisgICAgIGludm9raW5nIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlJ3MgY2FsbCBoYW5kbGVyLgor ICAgICA8Zm9vdG5vdGU+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGlzIHRydWUgZXZlbiBv ZiByb3V0aW5lcyB3aXRoIGxhbmd1YWdlIG5hbWUgPGxpdGVyYWw+c3FsPC9saXRlcmFsPiwKKyAg ICAgICB0aG91Z2gsIGFzIGEgc3BlY2lhbCBjYXNlLCB0aGF0IGNhbGwgaGFuZGxlciBoYXMgbm8g ZW50cnkgaW4gdGhlIHN5c3RlbQorICAgICAgIGNhdGFsb2dzLgorICAgICAgPC9wYXJhPgorICAg ICA8L2Zvb3Rub3RlPgorICAgICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YKKyAgICAgdGhl IGNhbGwgaGFuZGxlciB0byBleGVjdXRlIHRoZSByb3V0aW5lIGluIGEgbWVhbmluZ2Z1bCB3YXks IHN1Y2gKKyAgICAgYXMgYnkgaW50ZXJwcmV0aW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgdGV4dC4K ICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgVGhlIHN0YXRpY2FsbHktZGVjbGFyZWQg dHlwZXMgbWF5IGluY2x1ZGUgcG9seW1vcnBoaWMgdHlwZXMgdGhhdCBuZWVkCi0gICAgIHRvIGJl IHJlc29sdmVkIGFjY29yZGluZyB0byB0aGUgYWN0dWFsIHR5cGVzIHByZXNlbnQgYXQgdGhlIGNh bGwgc2l0ZSwKLSAgICAgYXMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMtcG9s eW1vcnBoaXNtIi8+LgorICAgICBUaGUgY2FsbCBoYW5kbGVyIGlzIGEgPHF1b3RlPm5vcm1hbDwv cXVvdGU+IHVzZXItZGVmaW5lZCBmdW5jdGlvbiB0aGF0IG11c3QKKyAgICAgYmUgZGVjbGFyZWQg dG8gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBhcyB0YWtpbmcgbm8gYXJn dW1lbnRzCisgICAgIGFuZCByZXR1cm5pbmcgdGhlIHR5cGUgPHR5cGU+bGFuZ3VhZ2VfaGFuZGxl cjwvdHlwZT4uICBUaGlzCisgICAgIHNwZWNpYWwgcHNldWRvLXR5cGUgaWRlbnRpZmllcyB0aGUg ZnVuY3Rpb24gYXMgYSBjYWxsIGhhbmRsZXIgYW5kCisgICAgIHByZXZlbnRzIGl0IGZyb20gYmVp bmcgY2FsbGVkIGRpcmVjdGx5IGluIFNRTCBjb21tYW5kcy4KKyAgICAgVGhpcyBoYW5kbGVyIG11 c3Qgbm90IHJlcXVpcmUgYSBjYWxsIGhhbmRsZXIgb2YgaXRzIG93biwgd2hpY2ggbWFrZXMKKyAg ICAgdGhlIHByZWRlZmluZWQgbGFuZ3VhZ2VzIDxsaXRlcmFsPmludGVybmFsPC9saXRlcmFsPiBv cgorICAgICA8bGl0ZXJhbD5jPC9saXRlcmFsPiB0aGUgb25seSBjaG9pY2VzIGZvciB0aGUgaGFu ZGxlcidzIG93biBkZWNsYXJhdGlvbi4KKyAgICAgVHlwaWNhbGx5LCBpdCB3aWxsIGJlIGEgbG9h ZGFibGUgZnVuY3Rpb24gaW4gbGFuZ3VhZ2UKKyAgICAgPGxpdGVyYWw+YzwvbGl0ZXJhbD4sIGFz IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1jIi8+LgorICAgICA8Zm9vdG5vdGU+ CisgICAgICA8cGFyYT4KKyAgICAgICBJdCBtYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBsYW5ndWFn ZSBvdGhlciB0aGFuIEMsIGFzIGxvbmcgYXMgaXQgY2FuIGJlCisgICAgICAgYnVpbHQgaW50byBh IGxvYWRhYmxlIG9iamVjdCB3aXRoIGNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9ucy4KKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9mb290bm90ZT4KICAgICA8L3BhcmE+CiAKLSAgIDwvc2VjdDI+ Ci0KLSAgIDxzZWN0MiBpZD0icGxoYW5kbGVyLWNhbGwtdHlwZXMiPgotICAgIDx0aXRsZT5NYXBw aW5nIHRvIHByb2NlZHVyYWwgbGFuZ3VhZ2UgdHlwZXM8L3RpdGxlPgorICAgIDxwYXJhPgorICAg ICBUaGUgY2FsbCBoYW5kbGVyIGlzIGNhbGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVy IGZ1bmN0aW9uOgorICAgICBJdCByZWNlaXZlcyBhIHBvaW50ZXIgdG8gYQorICAgICA8c3RydWN0 bmFtZT5GdW5jdGlvbkNhbGxJbmZvQmFzZURhdGE8L3N0cnVjdG5hbWU+IDx0eXBlPnN0cnVjdDwv dHlwZT4KKyAgICAgY29udGFpbmluZyBhcmd1bWVudCB2YWx1ZXMgYW5kIGluZm9ybWF0aW9uIGFi b3V0IHRoZSBjYWxsZWQgcm91dGluZSwgYW5kIGl0CisgICAgIGlzIGV4cGVjdGVkIHRvIHJldHVy biBhIDx0eXBlPkRhdHVtPC90eXBlPiByZXN1bHQgKGFuZCBwb3NzaWJseQorICAgICBzZXQgdGhl IDxzdHJ1Y3RmaWVsZD5pc251bGw8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUKKyAgICAgPHN0 cnVjdG5hbWU+RnVuY3Rpb25DYWxsSW5mb0Jhc2VEYXRhPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUs IGlmIGl0IHdpc2hlcworICAgICB0byByZXR1cm4gYW4gU1FMIG51bGwgcmVzdWx0KS4gIFRoZSBk aWZmZXJlbmNlIGJldHdlZW4gYSBjYWxsCisgICAgIGhhbmRsZXIgYW5kIGFuIG9yZGluYXJ5IGNh bGxlZSBpcyB0aGF0IHRoZQorICAgICA8c3RydWN0ZmllbGQ+ZmxpbmZvLSZndDtmbl9vaWQ8L3N0 cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUKKyAgICAgPHN0cnVjdG5hbWU+RnVuY3Rpb25DYWxsSW5m b0Jhc2VEYXRhPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgd2lsbCBjb250YWluCisgICAgIHRoZSBP SUQgb2YgdGhlIGFjdHVhbCByb3V0aW5lIHRvIGJlIGNhbGxlZCwgbm90IG9mIHRoZSBjYWxsCisg ICAgIGhhbmRsZXIgaXRzZWxmLiAgVGhlIGNhbGwgaGFuZGxlciBtdXN0IHVzZSB0aGlzIGZpZWxk IHRvIGRldGVybWluZQorICAgICB3aGljaCByb3V0aW5lIHRvIGV4ZWN1dGUuICBBbHNvLCB0aGUg cGFzc2VkIGFyZ3VtZW50IGxpc3QgaGFzCisgICAgIGJlZW4gc2V0IHVwIGFjY29yZGluZyB0byB0 aGUgZGVjbGFyYXRpb24gb2YgdGhlIHRhcmdldCByb3V0aW5lLAorICAgICBub3Qgb2YgdGhlIGNh bGwgaGFuZGxlci4KKyAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgT25jZSB0aGUgPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0eXBlcyBvZiBhbnkgcGFyYW1ldGVy cwotICAgICBhbmQgcmVzdWx0cyBoYXZlIGJlZW4gcmVzb2x2ZWQsIHRoZSBoYW5kbGVyIG11c3Qg ZGV0ZXJtaW5lIGhvdyBpdCB3aWxsCi0gICAgIG1hcCB0aGVpciB2YWx1ZXMgdG8gYW5kIGZyb20g c3VpdGFibGUgdHlwZXMgdGhhdCBleGlzdCBpbiB0aGUgcHJvY2VkdXJhbAotICAgICBsYW5ndWFn ZS4KKyAgICAgSXQncyB1cCB0byB0aGUgY2FsbCBoYW5kbGVyIHRvIGZldGNoIHRoZSByb3V0aW5l J3MgZGVmaW5pbmcKKyAgICAgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+IHJvdyBmcm9t IHRoZSBzeXN0ZW0gY2F0YWxvZyBjYWNoZQorICAgICB0byBkZXRlcm1pbmUgd2hhdCB0byBleGVj dXRlLCB3aGF0IHBhcmFtZXRlciBhbmQgcmV0dXJuIHR5cGVzIGFyZSBleHBlY3RlZCwKKyAgICAg YW5kIHNvIG9uLgorICAgICBUaGUgPGxpdGVyYWw+QVM8L2xpdGVyYWw+IGNsYXVzZSBmcm9tIHRo ZQorICAgICA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IG9yIDxjb21tYW5kPkNS RUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+CisgICAgIGNvbW1hbmQgZm9yIHRoZSByb3V0aW5lIHdp bGwgYmUgZm91bmQKKyAgICAgaW4gdGhlIDxsaXRlcmFsPnByb3NyYzwvbGl0ZXJhbD4gY29sdW1u IG9mIHRoZQorICAgICA8Y2xhc3NuYW1lPnBnX3Byb2M8L2NsYXNzbmFtZT4gcm93LiBUaGlzIGlz IGNvbW1vbmx5IHNvdXJjZQorICAgICB0ZXh0IGluIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlLCBi dXQgaW4gdGhlb3J5IGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlLAorICAgICBzdWNoIGFzIGEg cGF0aCBuYW1lIHRvIGEgZmlsZSwgb3IgYW55dGhpbmcgZWxzZSB0aGF0IHRlbGxzIHRoZSBjYWxs IGhhbmRsZXIKKyAgICAgd2hhdCB0byBkbyBpbiBkZXRhaWwuCiAgICAgPC9wYXJhPgogCiAgICAg PHBhcmE+Ci0gICAgIFRoZSBkZXNpZ25lciBvZiBhIHByb2NlZHVyYWwgbGFuZ3VhZ2Ugd2lsbCB0 eXBpY2FsbHkgZG9jdW1lbnQgd2hhdCB0eXBlcwotICAgICB3aWxsIGJlIHN1cHBvcnRlZCBhbmQg aG93IHRoZXkgd2lsbCBiZSBtYXBwZWQsIHdoaWNoIGNvdWxkIGJlIGFzIHNpbXBsZQotICAgICBh cyB1c2luZyBldmVyeSB0eXBlJ3MgdGV4dCBpbnB1dC9vdXRwdXQgZm9ybWF0IHRvIG1hcCBpdCB0 byB0aGUgdGFyZ2V0Ci0gICAgIGxhbmd1YWdlJ3Mgc3RyaW5nIHR5cGUsIG9yIGNvdWxkIGRpcmVj dGx5IG1hcCBtYW55IHR5cGVzIHRvIGNvcnJlc3BvbmRpbmcKLSAgICAgb25lcyB0aGUgdGFyZ2V0 IGxhbmd1YWdlIHByb3ZpZGVzLiBUaGUgaGFuZGxlciBmdW5jdGlvbiB3aWxsIGltcGxlbWVudAot ICAgICB0aG9zZSBydWxlcy4KKyAgICAgVGhlIGhhbmRsZXIgbWF5IGFsc28gZXhhbWluZSB0aGUg cGFzc2VkCisgICAgIDxzdHJ1Y3RuYW1lPkZ1bmN0aW9uQ2FsbEluZm9CYXNlRGF0YTwvc3RydWN0 bmFtZT4gc3RydWN0dXJlIGZvciBpbmZvcm1hdGlvbgorICAgICBvbiB0aGUgY29udGV4dCBvZiB0 aGUgY2FsbC4gSWYgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2Ugd2lsbCBzdXBwb3J0CisgICAgIHJl dHVybmluZyBzZXRzLCB0aGUgc3RydWN0dXJlIG1heSBjb250YWluIGEgcG9pbnRlciB0byBhCisg ICAgIDxzdHJ1Y3RuYW1lPlJldHVyblNldEluZm88L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSBmb3Ig dXNlIGFzIGRlc2NyaWJlZCBpbgorICAgICA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1jLXJldHVybi1z ZXQiLz4uIElmIHRoZSBsYW5ndWFnZSB3aWxsIHN1cHBvcnQgdHJpZ2dlcnMKKyAgICAgb3IgZXZl bnQgdHJpZ2dlcnMsIHRoZSBzdHJ1Y3R1cmUgbWF5IGhvbGQgYSBwb2ludGVyIHRvIG9uZSBvZgor ICAgICB0aGUgc3RydWN0dXJlcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0idHJpZ2dlci1p bnRlcmZhY2UiLz4gb3IKKyAgICAgPHhyZWYgbGlua2VuZD0iZXZlbnQtdHJpZ2dlci1pbnRlcmZh Y2UiLz4sIGFuZCB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZQorICAgICBzaG91bGQgcHJvdmlkZSBz b21lIHdheSBmb3IgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB1c2UgdGhlIGluZm9ybWF0aW9uCisg ICAgIHRoZXkgY2FycnkuCiAgICAgPC9wYXJhPgogCi0gICAgPHNlY3QzIGlkPSJwbGhhbmRsZXIt Y2FsbC10eXBlcy10cmFuc2Zvcm0iPgotICAgICA8dGl0bGU+VHlwZSB0cmFuc2Zvcm1zPC90aXRs ZT4KKyAgICA8c2VjdDIgaWQ9InBsaGFuZGxlci1jYWxsLWFyZ3MiPgorICAgICA8dGl0bGU+UGFy YW1ldGVyIGFuZCByZXR1cm4gdHlwZSByZXNvbHV0aW9uPC90aXRsZT4KIAogICAgICA8cGFyYT4K LSAgICAgIEJlY2F1c2UgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpcyBl eHRlbnNpYmxlLCBhbmQKLSAgICAgIGFuIGV4dGVuc2lvbiBjYW4gZWFzaWx5IHN1cHBseSBuZXcg dHlwZXMsIGEgcHJvY2VkdXJhbCBsYW5ndWFnZSBoYW5kbGVyCi0gICAgICBtYXkgZW5jb3VudGVy IHR5cGVzIGl0IGhhcyBubyBwcmVkZWZpbmVkIG1hcHBpbmdzIGZvciwgb3Igb25seSBhbiBhd2t3 YXJkCi0gICAgICBkZWZhdWx0IG1hcHBpbmcgc3VjaCBhcyB0byBhIHRleHQgc3RyaW5nLiBBIHBy b2NlZHVyYWwgbGFuZ3VhZ2UgY2FuIGJlCi0gICAgICBkZXNpZ25lZCBzbyB0aGF0IGl0cyB0eXBl IG1hcHBpbmdzIGFyZSBhbHNvIGV4dGVuc2libGUsIGFuZCBhbiBleHRlbnNpb24KLSAgICAgIGNh biBhZGQgbWFwcGluZ3MgYmV0d2VlbiBuZXcgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1 Y3RuYW1lPiB0eXBlcwotICAgICAgYW5kIHN1aXRhYmxlIHR5cGVzIGluIHRoZSB0YXJnZXQgbGFu Z3VhZ2UuCisgICAgICBBIHJvdXRpbmUncyBzdGF0aWNhbGx5LWRlY2xhcmVkIHBhcmFtZXRlciB0 eXBlcyAoYW5kLCBmb3IgYSBmdW5jdGlvbiwKKyAgICAgIHJldHVybiB0eXBlKSBhcmUgZm91bmQg aW4gdGhlIDxsaXRlcmFsPnByb2FyZ3R5cGVzPC9saXRlcmFsPiBhbmQKKyAgICAgIDxsaXRlcmFs PnByb3JldHR5cGU8L2xpdGVyYWw+IGNvbHVtbnMgb2YgdGhlCisgICAgICA8Y2xhc3NuYW1lPnBn X3Byb2M8L2NsYXNzbmFtZT4gcm93LgorICAgICAgSWYgYSByb3V0aW5lIGhhcyA8bGl0ZXJhbD5P VVQ8L2xpdGVyYWw+IHBhcmFtZXRlcnMsIHRob3NlIHR5cGVzIGFyZQorICAgICAgaW5jbHVkZWQg aW4gdGhlIDxsaXRlcmFsPnByb2FsbGFyZ3R5cGVzPC9saXRlcmFsPiBjb2x1bW4sIGFuZCB0aGVp ciBuYW1lcworICAgICAgaW4gPGxpdGVyYWw+cHJvYXJnbmFtZXM8L2xpdGVyYWw+LgorICAgICAg Q29udmVuaWVuY2UgZnVuY3Rpb25zIGRlY2xhcmVkIGluIDxmaWxlbmFtZT5mdW5jYXBpLmg8L2Zp bGVuYW1lPiBhcmUKKyAgICAgIGF2YWlsYWJsZSBmb3IgZXh0cmFjdGluZyB0aGF0IGluZm9ybWF0 aW9uLgogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAgICBPbmUgbWVjaGFuaXNtIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gcHJvdmlkZXMgdGhhdCBtYXkgYmUK LSAgICAgIHVzZWQgZm9yIHRoYXQgcHVycG9zZSBpcyA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRl dHJhbnNmb3JtIi8+LgotICAgICAgVGhlIGNvbW1hbmQgYXNzb2NpYXRlcyBhIDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdHlwZSBhbmQKLSAgICAgIGEgc3BlY2lmaWMgcHJv Y2VkdXJhbCBsYW5ndWFnZSB3aXRoIGEgcGFpciBvZiBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZQot ICAgICAgbWFwcGluZyBvZiB0aGF0IHR5cGUgdG8gYSBjb3JyZXNwb25kaW5nIHByb2NlZHVyYWwg bGFuZ3VhZ2UgdHlwZSBhbmQgYmFjay4KKyAgICAgIFRoZSBzdGF0aWNhbGx5LWRlY2xhcmVkIHR5 cGVzIG1heSBpbmNsdWRlIHBvbHltb3JwaGljIHR5cGVzIHRoYXQgbmVlZAorICAgICAgdG8gYmUg cmVzb2x2ZWQgYWNjb3JkaW5nIHRvIHRoZSBhY3R1YWwgdHlwZXMgcHJlc2VudCBhdCB0aGUgY2Fs bCBzaXRlLAorICAgICAgYXMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9InhmdW5jLWMtcG9s eW1vcnBoaXNtIi8+LgogICAgICA8L3BhcmE+CiAKLSAgICAgPHBhcmE+Ci0gICAgICBGb3IgYSBw cm9jZWR1cmFsIGxhbmd1YWdlIHRvIHN1cHBvcnQgdHJhbnNmb3JtcywgaXRzIGNhbGwgaGFuZGxl ciBpcwotICAgICAgcmVzcG9uc2libGUgZm9yIGNvbnN1bHRpbmcgdGhlIDxsaXRlcmFsPnByb3Ry ZnR5cGVzPC9saXRlcmFsPiBjb2x1bW4gb2YKLSAgICAgIGEgcm91dGluZSdzIDxjbGFzc25hbWU+ cGdfcHJvYzwvY2xhc3NuYW1lPiByb3cgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGVzCi0gICAgICBz aG91bGQgaGF2ZSB0cmFuc2Zvcm1zIGFwcGxpZWQuCi0gICAgICBBIGNvbnZlbmllbmNlIGZ1bmN0 aW9uIDxmdW5jdGlvbj5nZXRfY2FsbF90cmZ0eXBlczwvZnVuY3Rpb24+IGlzCi0gICAgICBhdmFp bGFibGUuCi0gICAgICBUaGUgY2FsbCBoYW5kbGVyIG11c3QgdGhlbiByZXNvbHZlIHRoZSA8cXVv dGU+ZnJvbSBTUUw8L3F1b3RlPiBmdW5jdGlvbgotICAgICAgZm9yIGVhY2ggYWZmZWN0ZWQgcGFy YW1ldGVyIHR5cGUsIGFuZCB0aGUgPHF1b3RlPnRvIFNRTDwvcXVvdGU+IGZ1bmN0aW9uCi0gICAg ICBmb3IgYW55IGFmZmVjdGVkIHJlc3VsdC4KLSAgICAgIEl0IG1heSB1c2UgdGhlIDxmdW5jdGlv bj5nZXRfdHJhbnNmb3JtX2Zyb21zcWw8L2Z1bmN0aW9uPiBhbmQKLSAgICAgIDxmdW5jdGlvbj5n ZXRfdHJhbnNmb3JtX3Rvc3FsPC9mdW5jdGlvbj4gZnVuY3Rpb25zIGZvciB0aGF0LgotICAgICA8 L3BhcmE+CisgICAgPC9zZWN0Mj4KIAotICAgICA8cGFyYT4KLSAgICAgIFRoZSBoYW5kbGVyIG11 c3QgdGhlbiBhcHBseSB0aGUgcHJvcGVyIDxxdW90ZT5mcm9tIFNRTDwvcXVvdGU+IGZ1bmN0aW9u cwotICAgICAgdG8gYWxsIGFmZmVjdGVkIGlucHV0cyAoaW5jbHVkaW5nIGVsZW1lbnRzIHdpdGhp biBhcnJheSBvciBjb21wb3NpdGUKLSAgICAgIHR5cGVzKSBhbmQsIGFmdGVyIGNhbGxpbmcgdGhl IHRhcmdldCByb3V0aW5lLCBhcHBseSB0aGUgcHJvcGVyCi0gICAgICA8cXVvdGU+dG8gU1FMPC9x dW90ZT4gZnVuY3Rpb25zIHNpbWlsYXJseSB0byBhbnkgcmVzdWx0cy4KLSAgICAgIElmIHRoZSB0 YXJnZXQgcm91dGluZSBtaWdodCBpbnRlcmFjdCB3aXRoIHRoZSBkYXRhYmFzZSB1c2luZyBTUEks Ci0gICAgICB0aGUgaGFuZGxlciBtYXkgYXJyYW5nZSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2Zv cm1zIHRvIGJlIGFwcGxpZWQKLSAgICAgIGluIHRob3NlIG9wZXJhdGlvbnMgYXMgd2VsbC4KLSAg ICAgPC9wYXJhPgorICAgIDxzZWN0MiBpZD0icGxoYW5kbGVyLWNhbGwtdHlwZXMiPgorICAgICA8 dGl0bGU+TWFwcGluZyB0byBwcm9jZWR1cmFsIGxhbmd1YWdlIHR5cGVzPC90aXRsZT4KIAogICAg ICA8cGFyYT4KLSAgICAgIEJlY2F1c2UgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2UgaW1wbGVtZW50 YXRpb24sIGFuZCBub3QKLSAgICAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFt ZT4gaXRzZWxmLCBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZwotICAgICAgdGhlIHRyYW5zZm9y bSBmdW5jdGlvbnMsIGl0IGlzIGZyZWUgdG8gZGVmaW5lIHdoYXQgaXQgd2lsbCBwYXNzIGFzIHRo ZQotICAgICAgcGFyYW1ldGVyIHRvIGVhY2ggZnVuY3Rpb24gKGRlY2xhcmVkIGFzIDx0eXBlPmlu dGVybmFsPC90eXBlPiBmb3IgYm90aCksCi0gICAgICBhbmQgaG93IGl0IHdpbGwgaW50ZXJwcmV0 IHRoZSByZXN1bHQgKGFsc28gZGVjbGFyZWQgPHR5cGU+aW50ZXJuYWw8L3R5cGU+KQotICAgICAg b2YgdGhlIDxxdW90ZT5mcm9tIFNRTDwvcXVvdGU+IGZ1bmN0aW9uLiBFZmZlY3RpdmVseSwgZWFj aCBwcm9jZWR1cmFsCi0gICAgICBsYW5ndWFnZSdzIGltcGxlbWVudGF0aW9uIGRlZmluZXMgdGhl IEFQSSB0aGF0IG11c3QgYmUgYWRoZXJlZCB0bwotICAgICAgYnkgYW55IGF1dGhvciBvZiB0cmFu c2Zvcm1zIGZvciB0aGF0IGxhbmd1YWdlLgorICAgICAgT25jZSB0aGUgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB0eXBlcyBvZiBhbnkgcGFyYW1ldGVycworICAgICAgYW5k IHJlc3VsdHMgaGF2ZSBiZWVuIHJlc29sdmVkLCB0aGUgaGFuZGxlciBtdXN0IGRldGVybWluZSBo b3cgaXQgd2lsbAorICAgICAgbWFwIHRoZWlyIHZhbHVlcyB0byBhbmQgZnJvbSBzdWl0YWJsZSB0 eXBlcyB0aGF0IGV4aXN0IGluIHRoZSBwcm9jZWR1cmFsCisgICAgICBsYW5ndWFnZS4KICAgICAg PC9wYXJhPgogCiAgICAgIDxwYXJhPgotICAgICAgQSBwcm9jZWR1cmFsIGxhbmd1YWdlIG1pZ2h0 IGltcG9zZSBsaW1pdHMgb24gd2hlcmUgYW5kIGhvdyBpdCB3aWxsIGFwcGx5Ci0gICAgICB0cmFu c2Zvcm1zIChzdWNoIGFzIG9uIGFycmF5IG9yIGRvbWFpbiB0eXBlcykuIFRoZQotICAgICAgPGZ1 bmN0aW9uPmdldF90cmFuc2Zvcm1fZnJvbXNxbDwvZnVuY3Rpb24+IGFuZAotICAgICAgPGZ1bmN0 aW9uPmdldF90cmFuc2Zvcm1fdG9zcWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMgbWVudGlvbmVkIGFi b3ZlCi0gICAgICBjb25zaWRlciBlYWNoIHR5cGUgb25seSBzaGFsbG93bHksIGFuZCB3aWxsIG5v dCwgZm9yIGV4YW1wbGUsIHJldHVybgotICAgICAgYSB0cmFuc2Zvcm0gZnVuY3Rpb24gZm9yIGEg ZG9tYWluIHR5cGUgaWYgb25seSBpdHMgYmFzZSB0eXBlIHdhcyBsaXN0ZWQgaW4KLSAgICAgIHRo ZSA8bGl0ZXJhbD5UUkFOU0ZPUk08L2xpdGVyYWw+IGNsYXVzZS4KLSAgICAgIElmIGEgcHJvY2Vk dXJhbCBsYW5ndWFnZSdzIGNhbGwgaGFuZGxlciBkb2VzIG5vdCBpbXBsZW1lbnQgdHJhbnNmb3Jt cwotICAgICAgYXQgYWxsLCBubyA8bGl0ZXJhbD5UUkFOU0ZPUk08L2xpdGVyYWw+IGNsYXVzZSB3 aWxsIGhhdmUgYW55IGVmZmVjdAotICAgICAgZm9yIHJvdXRpbmVzIGRlY2xhcmVkIGluIHRoYXQg bGFuZ3VhZ2UuCi0gICAgICBUaGUgbGFuZ3VhZ2UncyB2YWxpZGF0b3IgZnVuY3Rpb24gY2FuIGJl IHVzZWQgdG8gZ2l2ZSBpbW1lZGlhdGUgZmVlZGJhY2sKLSAgICAgIGlmIGEgcm91dGluZSBpcyBk ZWNsYXJlZCB3aXRoIDxsaXRlcmFsPlRSQU5TRk9STTwvbGl0ZXJhbD4gY2xhdXNlcwotICAgICAg dGhlIGltcGxlbWVudGF0aW9uIGNhbm5vdCBzdXBwb3J0LgorICAgICAgVGhlIGRlc2lnbmVyIG9m IGEgcHJvY2VkdXJhbCBsYW5ndWFnZSB3aWxsIHR5cGljYWxseSBkb2N1bWVudCB3aGF0IHR5cGVz CisgICAgICB3aWxsIGJlIHN1cHBvcnRlZCBhbmQgaG93IHRoZXkgd2lsbCBiZSBtYXBwZWQsIHdo aWNoIGNvdWxkIGJlIGFzIHNpbXBsZQorICAgICAgYXMgdXNpbmcgZXZlcnkgdHlwZSdzIHRleHQg aW5wdXQvb3V0cHV0IGZvcm1hdCB0byBtYXAgaXQgdG8gdGhlIHRhcmdldAorICAgICAgbGFuZ3Vh Z2UncyBzdHJpbmcgdHlwZSwgb3IgY291bGQgZGlyZWN0bHkgbWFwIG1hbnkgdHlwZXMgdG8gY29y cmVzcG9uZGluZworICAgICAgb25lcyB0aGUgdGFyZ2V0IGxhbmd1YWdlIHByb3ZpZGVzLiBUaGUg aGFuZGxlciBmdW5jdGlvbiB3aWxsIGltcGxlbWVudAorICAgICAgdGhvc2UgcnVsZXMuCiAgICAg IDwvcGFyYT4KIAotICAgIDwvc2VjdDM+Ci0KLSAgIDwvc2VjdDI+Ci0KLSAgIDxzZWN0MiBpZD0i cGxoYW5kbGVyLWNhbGwtY2FjaGUiPgotICAgIDx0aXRsZT5DYWNoaW5nIHJlc29sdmVkIHJvdXRp bmUgaW5mb3JtYXRpb248L3RpdGxlPgorICAgICA8c2VjdDMgaWQ9InBsaGFuZGxlci1jYWxsLXR5 cGVzLXRyYW5zZm9ybSI+CisgICAgICA8dGl0bGU+VHlwZSB0cmFuc2Zvcm1zPC90aXRsZT4KKwor ICAgICAgPHBhcmE+CisgICAgICAgQmVjYXVzZSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJv ZHVjdG5hbWU+IGlzIGV4dGVuc2libGUsIGFuZAorICAgICAgIGFuIGV4dGVuc2lvbiBjYW4gZWFz aWx5IHN1cHBseSBuZXcgdHlwZXMsIGEgcHJvY2VkdXJhbCBsYW5ndWFnZSBoYW5kbGVyCisgICAg ICAgbWF5IGVuY291bnRlciB0eXBlcyBpdCBoYXMgbm8gcHJlZGVmaW5lZCBtYXBwaW5ncyBmb3Is IG9yIG9ubHkgYW4gYXdrd2FyZAorICAgICAgIGRlZmF1bHQgbWFwcGluZyBzdWNoIGFzIHRvIGEg dGV4dCBzdHJpbmcuIEEgcHJvY2VkdXJhbCBsYW5ndWFnZSBjYW4gYmUKKyAgICAgICBkZXNpZ25l ZCBzbyB0aGF0IGl0cyB0eXBlIG1hcHBpbmdzIGFyZSBhbHNvIGV4dGVuc2libGUsIGFuZCBhbiBl eHRlbnNpb24KKyAgICAgICBjYW4gYWRkIG1hcHBpbmdzIGJldHdlZW4gbmV3IDxwcm9kdWN0bmFt ZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdHlwZXMKKyAgICAgICBhbmQgc3VpdGFibGUgdHlw ZXMgaW4gdGhlIHRhcmdldCBsYW5ndWFnZS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+ CisgICAgICAgT25lIG1lY2hhbmlzbSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5h bWU+IHByb3ZpZGVzIHRoYXQgbWF5IGJlCisgICAgICAgdXNlZCBmb3IgdGhhdCBwdXJwb3NlIGlz IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0cmFuc2Zvcm0iLz4uCisgICAgICAgVGhlIGNvbW1h bmQgYXNzb2NpYXRlcyBhIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdHlw ZSBhbmQKKyAgICAgICBhIHNwZWNpZmljIHByb2NlZHVyYWwgbGFuZ3VhZ2Ugd2l0aCBhIHBhaXIg b2YgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUKKyAgICAgICBtYXBwaW5nIG9mIHRoYXQgdHlwZSB0 byBhIGNvcnJlc3BvbmRpbmcgcHJvY2VkdXJhbCBsYW5ndWFnZSB0eXBlCisgICAgICAgYW5kIGJh Y2suCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIEZvciBhIHByb2NlZHVy YWwgbGFuZ3VhZ2UgdG8gc3VwcG9ydCB0cmFuc2Zvcm1zLCBpdHMgY2FsbCBoYW5kbGVyIGlzCisg ICAgICAgcmVzcG9uc2libGUgZm9yIGNvbnN1bHRpbmcgdGhlIDxsaXRlcmFsPnByb3RyZnR5cGVz PC9saXRlcmFsPiBjb2x1bW4gb2YKKyAgICAgICBhIHJvdXRpbmUncyA8Y2xhc3NuYW1lPnBnX3By b2M8L2NsYXNzbmFtZT4gcm93IHRvIGRldGVybWluZSB3aGljaCB0eXBlcworICAgICAgIHNob3Vs ZCBoYXZlIHRyYW5zZm9ybXMgYXBwbGllZC4KKyAgICAgICBBIGNvbnZlbmllbmNlIGZ1bmN0aW9u IDxmdW5jdGlvbj5nZXRfY2FsbF90cmZ0eXBlczwvZnVuY3Rpb24+IGlzCisgICAgICAgYXZhaWxh YmxlLgorICAgICAgIFRoZSBjYWxsIGhhbmRsZXIgbXVzdCB0aGVuIHJlc29sdmUgdGhlIDxxdW90 ZT5mcm9tIFNRTDwvcXVvdGU+IGZ1bmN0aW9uCisgICAgICAgZm9yIGVhY2ggYWZmZWN0ZWQgcGFy YW1ldGVyIHR5cGUsIGFuZCB0aGUgPHF1b3RlPnRvIFNRTDwvcXVvdGU+IGZ1bmN0aW9uCisgICAg ICAgZm9yIGFueSBhZmZlY3RlZCByZXN1bHQuCisgICAgICAgSXQgbWF5IHVzZSB0aGUgPGZ1bmN0 aW9uPmdldF90cmFuc2Zvcm1fZnJvbXNxbDwvZnVuY3Rpb24+IGFuZAorICAgICAgIDxmdW5jdGlv bj5nZXRfdHJhbnNmb3JtX3Rvc3FsPC9mdW5jdGlvbj4gZnVuY3Rpb25zIGZvciB0aGF0LgorICAg ICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgaGFuZGxlciBtdXN0IHRoZW4g YXBwbHkgdGhlIHByb3BlciA8cXVvdGU+ZnJvbSBTUUw8L3F1b3RlPiBmdW5jdGlvbnMKKyAgICAg ICB0byBhbGwgYWZmZWN0ZWQgaW5wdXRzIChpbmNsdWRpbmcgZWxlbWVudHMgd2l0aGluIGFycmF5 IG9yIGNvbXBvc2l0ZQorICAgICAgIHR5cGVzKSBhbmQsIGFmdGVyIGNhbGxpbmcgdGhlIHRhcmdl dCByb3V0aW5lLCBhcHBseSB0aGUgcHJvcGVyCisgICAgICAgPHF1b3RlPnRvIFNRTDwvcXVvdGU+ IGZ1bmN0aW9ucyBzaW1pbGFybHkgdG8gYW55IHJlc3VsdHMuCisgICAgICAgSWYgdGhlIHRhcmdl dCByb3V0aW5lIG1pZ2h0IGludGVyYWN0IHdpdGggdGhlIGRhdGFiYXNlIHVzaW5nIFNQSSwKKyAg ICAgICB0aGUgaGFuZGxlciBtYXkgYXJyYW5nZSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2Zvcm1z IHRvIGJlIGFwcGxpZWQKKyAgICAgICBpbiB0aG9zZSBvcGVyYXRpb25zIGFzIHdlbGwuCisgICAg ICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIEJlY2F1c2UgdGhlIHByb2NlZHVyYWwg bGFuZ3VhZ2UgaW1wbGVtZW50YXRpb24sIGFuZCBub3QKKyAgICAgICA8cHJvZHVjdG5hbWU+UG9z dGdyZVNRTDwvcHJvZHVjdG5hbWU+IGl0c2VsZiwgaXMgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcK KyAgICAgICB0aGUgdHJhbnNmb3JtIGZ1bmN0aW9ucywgaXQgaXMgZnJlZSB0byBkZWZpbmUgd2hh dCBpdCB3aWxsIHBhc3MgYXMgdGhlCisgICAgICAgcGFyYW1ldGVyIHRvIGVhY2ggZnVuY3Rpb24g KGRlY2xhcmVkIGFzIDx0eXBlPmludGVybmFsPC90eXBlPiBmb3IgYm90aCksCisgICAgICAgYW5k IGhvdyBpdCB3aWxsIGludGVycHJldCB0aGUgcmVzdWx0IChhbHNvIGRlY2xhcmVkCisgICAgICAg PHR5cGU+aW50ZXJuYWw8L3R5cGU+KSBvZiB0aGUgPHF1b3RlPmZyb20gU1FMPC9xdW90ZT4gZnVu Y3Rpb24uCisgICAgICAgRWZmZWN0aXZlbHksIGVhY2ggcHJvY2VkdXJhbCBsYW5ndWFnZSdzIGlt cGxlbWVudGF0aW9uIGRlZmluZXMgdGhlIEFQSQorICAgICAgIHRoYXQgbXVzdCBiZSBhZGhlcmVk IHRvIGJ5IGFueSBhdXRob3Igb2YgdHJhbnNmb3JtcyBmb3IgdGhhdCBsYW5ndWFnZS4KKyAgICAg IDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgQSBwcm9jZWR1cmFsIGxhbmd1YWdlIG1p Z2h0IGltcG9zZSBsaW1pdHMgb24gd2hlcmUgYW5kIGhvdyBpdCB3aWxsIGFwcGx5CisgICAgICAg dHJhbnNmb3JtcyAoc3VjaCBhcyBvbiBhcnJheSBvciBkb21haW4gdHlwZXMpLiBUaGUKKyAgICAg ICA8ZnVuY3Rpb24+Z2V0X3RyYW5zZm9ybV9mcm9tc3FsPC9mdW5jdGlvbj4gYW5kCisgICAgICAg PGZ1bmN0aW9uPmdldF90cmFuc2Zvcm1fdG9zcWw8L2Z1bmN0aW9uPiBmdW5jdGlvbnMgbWVudGlv bmVkIGFib3ZlCisgICAgICAgY29uc2lkZXIgZWFjaCB0eXBlIG9ubHkgc2hhbGxvd2x5LCBhbmQg d2lsbCBub3QsIGZvciBleGFtcGxlLCByZXR1cm4KKyAgICAgICBhIHRyYW5zZm9ybSBmdW5jdGlv biBmb3IgYSBkb21haW4gdHlwZSBpZiBvbmx5IGl0cyBiYXNlIHR5cGUgd2FzIGxpc3RlZAorICAg ICAgIGluIHRoZSA8bGl0ZXJhbD5UUkFOU0ZPUk08L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgICBJ ZiBhIHByb2NlZHVyYWwgbGFuZ3VhZ2UncyBjYWxsIGhhbmRsZXIgZG9lcyBub3QgaW1wbGVtZW50 IHRyYW5zZm9ybXMKKyAgICAgICBhdCBhbGwsIG5vIDxsaXRlcmFsPlRSQU5TRk9STTwvbGl0ZXJh bD4gY2xhdXNlIHdpbGwgaGF2ZSBhbnkgZWZmZWN0CisgICAgICAgZm9yIHJvdXRpbmVzIGRlY2xh cmVkIGluIHRoYXQgbGFuZ3VhZ2UuCisgICAgICAgVGhlIGxhbmd1YWdlJ3MgdmFsaWRhdG9yIGZ1 bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdpdmUgaW1tZWRpYXRlIGZlZWRiYWNrCisgICAgICAgaWYg YSByb3V0aW5lIGlzIGRlY2xhcmVkIHdpdGggPGxpdGVyYWw+VFJBTlNGT1JNPC9saXRlcmFsPiBj bGF1c2VzCisgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIGNhbm5vdCBzdXBwb3J0LgorICAgICAg PC9wYXJhPgorCisgICAgIDwvc2VjdDM+CisKKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyIGlk PSJwbGhhbmRsZXItY2FsbC1jYWNoZSI+CisgICAgIDx0aXRsZT5DYWNoaW5nIHJlc29sdmVkIHJv dXRpbmUgaW5mb3JtYXRpb248L3RpdGxlPgogCi0gICA8cGFyYT4KLSAgICBPZnRlbiwgdGhlIHNh bWUgcm91dGluZSBpcyBjYWxsZWQgbWFueSB0aW1lcyBwZXIgU1FMIHN0YXRlbWVudC4KLSAgICBB IGNhbGwgaGFuZGxlciBjYW4gYXZvaWQgcmVwZWF0ZWQgbG9va3VwcyBvZiBpbmZvcm1hdGlvbiBh Ym91dCB0aGUKLSAgICBjYWxsZWQgcm91dGluZSBieSB1c2luZyB0aGUKLSAgICA8c3RydWN0Zmll bGQ+ZmxpbmZvLSZndDtmbl9leHRyYTwvc3RydWN0ZmllbGQ+IGZpZWxkLiAgVGhpcyB3aWxsCi0g ICAgaW5pdGlhbGx5IGJlIDxzeW1ib2w+TlVMTDwvc3ltYm9sPiwgYnV0IGNhbiBiZSBzZXQgYnkg dGhlIGNhbGwgaGFuZGxlciB0byBwb2ludCBhdAotICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBj YWxsZWQgcm91dGluZS4gIE9uIHN1YnNlcXVlbnQgY2FsbHMsIGlmCi0gICAgPHN0cnVjdGZpZWxk PmZsaW5mby0mZ3Q7Zm5fZXh0cmE8L3N0cnVjdGZpZWxkPiBpcyBhbHJlYWR5IG5vbi08c3ltYm9s Pk5VTEw8L3N5bWJvbD4KLSAgICB0aGVuIGl0IGNhbiBiZSB1c2VkIGFuZCB0aGUgaW5mb3JtYXRp b24gbG9va3VwIHN0ZXAgc2tpcHBlZC4gIFRoZQotICAgIGNhbGwgaGFuZGxlciBtdXN0IG1ha2Ug c3VyZSB0aGF0Ci0gICAgPHN0cnVjdGZpZWxkPmZsaW5mby0mZ3Q7Zm5fZXh0cmE8L3N0cnVjdGZp ZWxkPiBpcyBtYWRlIHRvIHBvaW50IGF0Ci0gICAgbWVtb3J5IHRoYXQgd2lsbCBsaXZlIGF0IGxl YXN0IHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgcXVlcnksCi0gICAgc2luY2UgYW4gPHN0 cnVjdG5hbWU+Rm1nckluZm88L3N0cnVjdG5hbWU+IGRhdGEgc3RydWN0dXJlIGNvdWxkIGJlCi0g ICAga2VwdCB0aGF0IGxvbmcuICBPbmUgd2F5IHRvIGRvIHRoaXMgaXMgdG8gYWxsb2NhdGUgdGhl IGV4dHJhIGRhdGEKLSAgICBpbiB0aGUgbWVtb3J5IGNvbnRleHQgc3BlY2lmaWVkIGJ5Ci0gICAg PHN0cnVjdGZpZWxkPmZsaW5mby0mZ3Q7Zm5fbWN4dDwvc3RydWN0ZmllbGQ+OyBzdWNoIGRhdGEg d2lsbAotICAgIG5vcm1hbGx5IGhhdmUgdGhlIHNhbWUgbGlmZXNwYW4gYXMgdGhlCi0gICAgPHN0 cnVjdG5hbWU+Rm1nckluZm88L3N0cnVjdG5hbWU+IGl0c2VsZi4gIEJ1dCB0aGUgaGFuZGxlciBj b3VsZAotICAgIGFsc28gY2hvb3NlIHRvIHVzZSBhIGxvbmdlci1saXZlZCBtZW1vcnkgY29udGV4 dCBzbyB0aGF0IGl0IGNhbiBjYWNoZQotICAgIHJvdXRpbmUgZGVmaW5pdGlvbiBpbmZvcm1hdGlv biBhY3Jvc3MgcXVlcmllcy4KLSAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgT2Z0ZW4sIHRo ZSBzYW1lIHJvdXRpbmUgaXMgY2FsbGVkIG1hbnkgdGltZXMgcGVyIFNRTCBzdGF0ZW1lbnQuCisg ICAgIEEgY2FsbCBoYW5kbGVyIGNhbiBhdm9pZCByZXBlYXRlZCBsb29rdXBzIG9mIGluZm9ybWF0 aW9uIGFib3V0IHRoZQorICAgICBjYWxsZWQgcm91dGluZSBieSB1c2luZyB0aGUKKyAgICAgPHN0 cnVjdGZpZWxkPmZsaW5mby0mZ3Q7Zm5fZXh0cmE8L3N0cnVjdGZpZWxkPiBmaWVsZC4gIFRoaXMg d2lsbAorICAgICBpbml0aWFsbHkgYmUgPHN5bWJvbD5OVUxMPC9zeW1ib2w+LCBidXQgY2FuIGJl IHNldCBieSB0aGUgY2FsbCBoYW5kbGVyCisgICAgIHRvIHBvaW50IGF0IGluZm9ybWF0aW9uIGFi b3V0IHRoZSBjYWxsZWQgcm91dGluZS4gIE9uIHN1YnNlcXVlbnQgY2FsbHMsCisgICAgIGlmIDxz dHJ1Y3RmaWVsZD5mbGluZm8tJmd0O2ZuX2V4dHJhPC9zdHJ1Y3RmaWVsZD4gaXMgYWxyZWFkeQor ICAgICBub24tPHN5bWJvbD5OVUxMPC9zeW1ib2w+IHRoZW4gaXQgY2FuIGJlIHVzZWQgYW5kIHRo ZSBpbmZvcm1hdGlvbiBsb29rdXAKKyAgICAgc3RlcCBza2lwcGVkLiAgVGhlIGNhbGwgaGFuZGxl ciBtdXN0IG1ha2Ugc3VyZSB0aGF0CisgICAgIDxzdHJ1Y3RmaWVsZD5mbGluZm8tJmd0O2ZuX2V4 dHJhPC9zdHJ1Y3RmaWVsZD4gaXMgbWFkZSB0byBwb2ludCBhdAorICAgICBtZW1vcnkgdGhhdCB3 aWxsIGxpdmUgYXQgbGVhc3QgdW50aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBxdWVyeSwKKyAg ICAgc2luY2UgYW4gPHN0cnVjdG5hbWU+Rm1nckluZm88L3N0cnVjdG5hbWU+IGRhdGEgc3RydWN0 dXJlIGNvdWxkIGJlCisgICAgIGtlcHQgdGhhdCBsb25nLiAgT25lIHdheSB0byBkbyB0aGlzIGlz IHRvIGFsbG9jYXRlIHRoZSBleHRyYSBkYXRhCisgICAgIGluIHRoZSBtZW1vcnkgY29udGV4dCBz cGVjaWZpZWQgYnkKKyAgICAgPHN0cnVjdGZpZWxkPmZsaW5mby0mZ3Q7Zm5fbWN4dDwvc3RydWN0 ZmllbGQ+OyBzdWNoIGRhdGEgd2lsbAorICAgICBub3JtYWxseSBoYXZlIHRoZSBzYW1lIGxpZmVz cGFuIGFzIHRoZQorICAgICA8c3RydWN0bmFtZT5GbWdySW5mbzwvc3RydWN0bmFtZT4gaXRzZWxm LiAgQnV0IHRoZSBoYW5kbGVyIGNvdWxkCisgICAgIGFsc28gY2hvb3NlIHRvIHVzZSBhIGxvbmdl ci1saXZlZCBtZW1vcnkgY29udGV4dCBzbyB0aGF0IGl0IGNhbiBjYWNoZQorICAgICByb3V0aW5l IGRlZmluaXRpb24gaW5mb3JtYXRpb24gYWNyb3NzIHF1ZXJpZXMuCisgICAgPC9wYXJhPgogCi0g ICA8cGFyYT4KLSAgICBJZiB0aGUgaGFuZGxlciBzdXBwb3J0cyByZXR1cm5pbmcgc2V0cywgYW5k IHVzZXMgdGhlIFZhbHVlUGVyQ2FsbCBtb2RlCi0gICAgaGVscGVyIG1hY3JvcyBkZXNjcmliZWQg aW4gPHhyZWYgbGlua2VuZD0ieGZ1bmMtYy1yZXR1cm4tc2V0Ii8+LCBpdCBtdXN0Ci0gICAgbm90 IHVzZSA8c3RydWN0ZmllbGQ+Zm5fZXh0cmE8L3N0cnVjdGZpZWxkPiBkdXJpbmcgc2V0LXJldHVy bmluZyBjYWxscy4KLSAgICBUaGUgaGVscGVyIG1hY3JvcyB1c2UgdGhhdCBmaWVsZCBmb3IgdGhl aXIgb3duIHB1cnBvc2VzLiBBZnRlcgotICAgIDxsaXRlcmFsPlNSRl9GSVJTVENBTExfSU5JVDwv bGl0ZXJhbD4gaGFzIGJlZW4gY2FsbGVkLCB0aGUgZmllbGQgd2lsbCBwb2ludAotICAgIHRvIGEg PHN0cnVjdG5hbWU+RnVuY0NhbGxDb250ZXh0PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUsIHdoaWNo IGhhcwotICAgIGEgPHN0cnVjdGZpZWxkPnVzZXJfZmN0eDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRo YXQgY2FuIGJlIHVzZWQgc2ltaWxhcmx5LAotICAgIGJ1dCBvbmx5IHRocm91Z2ggdGhlIHNlcXVl bmNlIG9mIGNhbGxzIHJldHVybmluZyBvbmUgc2V0IHJlc3VsdC4KLSAgIDwvcGFyYT4KKyAgICA8 cGFyYT4KKyAgICAgSWYgdGhlIGhhbmRsZXIgc3VwcG9ydHMgcmV0dXJuaW5nIHNldHMsIGFuZCB1 c2VzIHRoZSBWYWx1ZVBlckNhbGwgbW9kZQorICAgICBoZWxwZXIgbWFjcm9zIGRlc2NyaWJlZCBp biA8eHJlZiBsaW5rZW5kPSJ4ZnVuYy1jLXJldHVybi1zZXQiLz4sIGl0IG11c3QKKyAgICAgbm90 IHVzZSA8c3RydWN0ZmllbGQ+Zm5fZXh0cmE8L3N0cnVjdGZpZWxkPiBkdXJpbmcgc2V0LXJldHVy bmluZyBjYWxscy4KKyAgICAgVGhlIGhlbHBlciBtYWNyb3MgdXNlIHRoYXQgZmllbGQgZm9yIHRo ZWlyIG93biBwdXJwb3Nlcy4gQWZ0ZXIKKyAgICAgPGxpdGVyYWw+U1JGX0ZJUlNUQ0FMTF9JTklU PC9saXRlcmFsPiBoYXMgYmVlbiBjYWxsZWQsIHRoZSBmaWVsZCB3aWxsIHBvaW50CisgICAgIHRv IGEgPHN0cnVjdG5hbWU+RnVuY0NhbGxDb250ZXh0PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUsIHdo aWNoIGhhcworICAgICBhIDxzdHJ1Y3RmaWVsZD51c2VyX2ZjdHg8L3N0cnVjdGZpZWxkPiBmaWVs ZCB0aGF0IGNhbiBiZSB1c2VkIHNpbWlsYXJseSwKKyAgICAgYnV0IG9ubHkgdGhyb3VnaCB0aGUg c2VxdWVuY2Ugb2YgY2FsbHMgcmV0dXJuaW5nIG9uZSBzZXQgcmVzdWx0LgorICAgIDwvcGFyYT4K IAotICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QyPgogCiAgICA8L3NlY3QxPgogCiAgICA8c2VjdDEg aWQ9InBsaGFuZGxlci12YWxpZGF0b3IiPgogICAgIDx0aXRsZT5WYWxpZGF0b3IgZnVuY3Rpb248 L3RpdGxlPgogCi0gICA8cGFyYT4KLSAgICBJZiBhIHZhbGlkYXRvciBpcyBwcm92aWRlZCBieSBh IHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGl0Ci0gICAgbXVzdCBiZSBkZWNsYXJlZCBhcyBhIGZ1bmN0 aW9uIHRha2luZyBhIHNpbmdsZSBwYXJhbWV0ZXIgb2YgdHlwZQotICAgIDx0eXBlPm9pZDwvdHlw ZT4uICBUaGUgdmFsaWRhdG9yJ3MgcmVzdWx0IGlzIGlnbm9yZWQsIHNvIGl0IGlzIGN1c3RvbWFy aWx5Ci0gICAgZGVjbGFyZWQgdG8gcmV0dXJuIDx0eXBlPnZvaWQ8L3R5cGU+LgotICAgIFRoZSB2 YWxpZGF0b3IgaXRzZWxmIG1heSBiZSB3cml0dGVuIGluIGFueSBwcm9jZWR1cmFsIGxhbmd1YWdl IGFibGUgdG8KLSAgICByZWNlaXZlIGFuIDx0eXBlPm9pZDwvdHlwZT4tdHlwZWQgcGFyYW1ldGVy IGFuZCBxdWVyeSBzeXN0ZW0gY2F0YWxvZ3MuCi0gICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAg IElmIGEgdmFsaWRhdG9yIGlzIHByb3ZpZGVkIGJ5IGEgcHJvY2VkdXJhbCBsYW5ndWFnZSwgaXQK KyAgICAgbXVzdCBiZSBkZWNsYXJlZCBhcyBhIGZ1bmN0aW9uIHRha2luZyBhIHNpbmdsZSBwYXJh bWV0ZXIgb2YgdHlwZQorICAgICA8dHlwZT5vaWQ8L3R5cGU+LiAgVGhlIHZhbGlkYXRvcidzIHJl c3VsdCBpcyBpZ25vcmVkLCBzbyBpdCBpcyBjdXN0b21hcmlseQorICAgICBkZWNsYXJlZCB0byBy ZXR1cm4gPHR5cGU+dm9pZDwvdHlwZT4uCisgICAgIFRoZSB2YWxpZGF0b3IgaXRzZWxmIG1heSBi ZSB3cml0dGVuIGluIGFueSBwcm9jZWR1cmFsIGxhbmd1YWdlIGFibGUgdG8KKyAgICAgcmVjZWl2 ZSBhbiA8dHlwZT5vaWQ8L3R5cGU+LXR5cGVkIHBhcmFtZXRlciBhbmQgcXVlcnkgc3lzdGVtIGNh dGFsb2dzLgorICAgIDwvcGFyYT4KIAotICAgPHBhcmE+Ci0gICAgVGhlIHZhbGlkYXRvciB3aWxs IGJlIGNhbGxlZCBhdAotICAgIHRoZSBlbmQgb2YgYSA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048 L2NvbW1hbmQ+IG9yCi0gICAgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwvY29tbWFuZD4gY29t bWFuZCB0aGF0IGhhcyBjcmVhdGVkCi0gICAgb3IgdXBkYXRlZCBhIHJvdXRpbmUgd3JpdHRlbiBp biB0aGUgcHJvY2VkdXJhbCBsYW5ndWFnZS4KLSAgICBUaGUgcGFzc2VkLWluIE9JRCBpcyB0aGUg T0lEIG9mIHRoZSByb3V0aW5lJ3MgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+Ci0gICAg cm93LiAgVGhlIHZhbGlkYXRvciBtdXN0IGZldGNoIHRoaXMgcm93IGluIHRoZSB1c3VhbCB3YXks IGFuZCBkbwotICAgIHdoYXRldmVyIGNoZWNraW5nIGlzIGFwcHJvcHJpYXRlLgotICAgPC9wYXJh PgorICAgIDxwYXJhPgorICAgICBUaGUgdmFsaWRhdG9yIHdpbGwgYmUgY2FsbGVkIGF0CisgICAg IHRoZSBlbmQgb2YgYSA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IG9yCisgICAg IDxjb21tYW5kPkNSRUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+IGNvbW1hbmQgdGhhdCBoYXMgY3Jl YXRlZAorICAgICBvciB1cGRhdGVkIGEgcm91dGluZSB3cml0dGVuIGluIHRoZSBwcm9jZWR1cmFs IGxhbmd1YWdlLgorICAgICBUaGUgcGFzc2VkLWluIE9JRCBpcyB0aGUgT0lEIG9mIHRoZSByb3V0 aW5lJ3MKKyAgICAgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+IHJvdy4gIFRoZSB2YWxp ZGF0b3IgbXVzdCBmZXRjaCB0aGlzIHJvdworICAgICBpbiB0aGUgdXN1YWwgd2F5LCBhbmQgZG8g d2hhdGV2ZXIgY2hlY2tpbmcgaXMgYXBwcm9wcmlhdGUuCisgICAgPC9wYXJhPgogCi0gICA8cGFy YT4KLSAgICBGaXJzdCwgY2FsbCA8ZnVuY3Rpb24+Q2hlY2tGdW5jdGlvblZhbGlkYXRvckFjY2Vz cygpPC9mdW5jdGlvbj4gdG8gZGlhZ25vc2UKLSAgICBleHBsaWNpdCBjYWxscyB0byB0aGUgdmFs aWRhdG9yIHRoYXQgdGhlIHVzZXIgY291bGQgbm90IGFjaGlldmUgdGhyb3VnaAotICAgIDxjb21t YW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVS RTwvY29tbWFuZD4uCi0gICAgVHlwaWNhbCBjaGVja3MgdGhlbiBpbmNsdWRlIHZlcmlmeWluZwot ICAgIHRoYXQgdGhlIHJvdXRpbmUncyBhcmd1bWVudCBhbmQgcmVzdWx0IHR5cGVzIGFyZSBzdXBw b3J0ZWQgYnkgdGhlCi0gICAgbGFuZ3VhZ2UsIGFuZCB0aGF0IHRoZSByb3V0aW5lJ3MgYm9keSBp cyBzeW50YWN0aWNhbGx5IGNvcnJlY3QKLSAgICBpbiB0aGUgbGFuZ3VhZ2UuICBJZiB0aGUgdmFs aWRhdG9yIGZpbmRzIHRoZSByb3V0aW5lIHRvIGJlIG9rYXksCi0gICAgaXQgc2hvdWxkIGp1c3Qg cmV0dXJuLiAgSWYgaXQgZmluZHMgYW4gZXJyb3IsIGl0IHNob3VsZCByZXBvcnQgdGhhdAotICAg IHZpYSB0aGUgbm9ybWFsIDxmdW5jdGlvbj5lcmVwb3J0KCk8L2Z1bmN0aW9uPiBlcnJvciByZXBv cnRpbmcgbWVjaGFuaXNtLgotICAgIFRocm93aW5nIGFuIGVycm9yIHdpbGwgZm9yY2UgYSB0cmFu c2FjdGlvbiByb2xsYmFjayBhbmQgdGh1cyBwcmV2ZW50Ci0gICAgdGhlIGluY29ycmVjdCByb3V0 aW5lIGRlZmluaXRpb24gZnJvbSBiZWluZyBjb21taXR0ZWQuCi0gICA8L3BhcmE+CisgICAgPHBh cmE+CisgICAgIEZpcnN0LCBjYWxsIDxmdW5jdGlvbj5DaGVja0Z1bmN0aW9uVmFsaWRhdG9yQWNj ZXNzKCk8L2Z1bmN0aW9uPgorICAgICB0byBkaWFnbm9zZSBleHBsaWNpdCBjYWxscyB0byB0aGUg dmFsaWRhdG9yIHRoYXQgdGhlIHVzZXIgY291bGQgbm90IGFjaGlldmUKKyAgICAgdGhyb3VnaCA8 Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IG9yCisgICAgIDxjb21tYW5kPkNSRUFU RSBQUk9DRURVUkU8L2NvbW1hbmQ+LgorICAgICBUeXBpY2FsIGNoZWNrcyB0aGVuIGluY2x1ZGUg dmVyaWZ5aW5nCisgICAgIHRoYXQgdGhlIHJvdXRpbmUncyBhcmd1bWVudCBhbmQgcmVzdWx0IHR5 cGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlCisgICAgIGxhbmd1YWdlLCBhbmQgdGhhdCB0aGUgcm91 dGluZSdzIGJvZHkgaXMgc3ludGFjdGljYWxseSBjb3JyZWN0CisgICAgIGluIHRoZSBsYW5ndWFn ZS4gIElmIHRoZSB2YWxpZGF0b3IgZmluZHMgdGhlIHJvdXRpbmUgdG8gYmUgb2theSwKKyAgICAg aXQgc2hvdWxkIGp1c3QgcmV0dXJuLiAgSWYgaXQgZmluZHMgYW4gZXJyb3IsIGl0IHNob3VsZCBy ZXBvcnQgdGhhdAorICAgICB2aWEgdGhlIG5vcm1hbCA8ZnVuY3Rpb24+ZXJlcG9ydCgpPC9mdW5j dGlvbj4gZXJyb3IgcmVwb3J0aW5nIG1lY2hhbmlzbS4KKyAgICAgVGhyb3dpbmcgYW4gZXJyb3Ig d2lsbCBmb3JjZSBhIHRyYW5zYWN0aW9uIHJvbGxiYWNrIGFuZCB0aHVzIHByZXZlbnQKKyAgICAg dGhlIGluY29ycmVjdCByb3V0aW5lIGRlZmluaXRpb24gZnJvbSBiZWluZyBjb21taXR0ZWQuCisg ICAgPC9wYXJhPgogCi0gICA8cGFyYT4KLSAgICBWYWxpZGF0b3IgZnVuY3Rpb25zIHNob3VsZCB0 eXBpY2FsbHkgaG9ub3IgdGhlIDx4cmVmCi0gICAgbGlua2VuZD0iZ3VjLWNoZWNrLWZ1bmN0aW9u LWJvZGllcyIvPiBwYXJhbWV0ZXI6IGlmIGl0IGlzIHR1cm5lZCBvZmYgdGhlbgotICAgIGFueSBl eHBlbnNpdmUgb3IgY29udGV4dC1zZW5zaXRpdmUgY2hlY2tpbmcgc2hvdWxkIGJlIHNraXBwZWQu ICBJZiB0aGUKLSAgICBsYW5ndWFnZSBwcm92aWRlcyBmb3IgY29kZSBleGVjdXRpb24gYXQgY29t cGlsYXRpb24gdGltZSwgdGhlIHZhbGlkYXRvcgotICAgIG11c3Qgc3VwcHJlc3MgY2hlY2tzIHRo YXQgd291bGQgaW5kdWNlIHN1Y2ggZXhlY3V0aW9uLiAgSW4gcGFydGljdWxhciwKLSAgICB0aGlz IHBhcmFtZXRlciBpcyB0dXJuZWQgb2ZmIGJ5IDxhcHBsaWNhdGlvbj5wZ19kdW1wPC9hcHBsaWNh dGlvbj4gc28gdGhhdCBpdCBjYW4KLSAgICBsb2FkIHByb2NlZHVyYWwgbGFuZ3VhZ2Ugcm91dGlu ZXMgd2l0aG91dCB3b3JyeWluZyBhYm91dCBzaWRlIGVmZmVjdHMgb3IKLSAgICBkZXBlbmRlbmNp ZXMgb2YgdGhlIHJvdXRpbmUgYm9kaWVzIG9uIG90aGVyIGRhdGFiYXNlIG9iamVjdHMuCi0gICAg KEJlY2F1c2Ugb2YgdGhpcyByZXF1aXJlbWVudCwgdGhlIGNhbGwgaGFuZGxlciBzaG91bGQgYXZv aWQKLSAgICBhc3N1bWluZyB0aGF0IHRoZSB2YWxpZGF0b3IgaGFzIGZ1bGx5IGNoZWNrZWQgdGhl IHJvdXRpbmUuICBUaGUgcG9pbnQKLSAgICBvZiBoYXZpbmcgYSB2YWxpZGF0b3IgaXMgbm90IHRv IGxldCB0aGUgY2FsbCBoYW5kbGVyIG9taXQgY2hlY2tzLCBidXQKLSAgICB0byBub3RpZnkgdGhl IHVzZXIgaW1tZWRpYXRlbHkgaWYgdGhlcmUgYXJlIG9idmlvdXMgZXJyb3JzIGluIGEKLSAgICA8 Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048L2NvbW1hbmQ+IG9yIDxjb21tYW5kPkNSRUFURSBQUk9D RURVUkU8L2NvbW1hbmQ+Ci0gICAgY29tbWFuZC4pCi0gICA8L3BhcmE+CisgICAgPHBhcmE+Cisg ICAgIFZhbGlkYXRvciBmdW5jdGlvbnMgc2hvdWxkIHR5cGljYWxseSBob25vciB0aGUgPHhyZWYK KyAgICAgbGlua2VuZD0iZ3VjLWNoZWNrLWZ1bmN0aW9uLWJvZGllcyIvPiBwYXJhbWV0ZXI6IGlm IGl0IGlzIHR1cm5lZCBvZmYgdGhlbgorICAgICBhbnkgZXhwZW5zaXZlIG9yIGNvbnRleHQtc2Vu c2l0aXZlIGNoZWNraW5nIHNob3VsZCBiZSBza2lwcGVkLiAgSWYgdGhlCisgICAgIGxhbmd1YWdl IHByb3ZpZGVzIGZvciBjb2RlIGV4ZWN1dGlvbiBhdCBjb21waWxhdGlvbiB0aW1lLCB0aGUgdmFs aWRhdG9yCisgICAgIG11c3Qgc3VwcHJlc3MgY2hlY2tzIHRoYXQgd291bGQgaW5kdWNlIHN1Y2gg ZXhlY3V0aW9uLiAgSW4gcGFydGljdWxhciwKKyAgICAgdGhpcyBwYXJhbWV0ZXIgaXMgdHVybmVk IG9mZiBieSA8YXBwbGljYXRpb24+cGdfZHVtcDwvYXBwbGljYXRpb24+IHNvIHRoYXQKKyAgICAg aXQgY2FuIGxvYWQgcHJvY2VkdXJhbCBsYW5ndWFnZSByb3V0aW5lcyB3aXRob3V0IHdvcnJ5aW5n IGFib3V0CisgICAgIHNpZGUgZWZmZWN0cyBvciBkZXBlbmRlbmNpZXMgb2YgdGhlIHJvdXRpbmUg Ym9kaWVzIG9uIG90aGVyIGRhdGFiYXNlCisgICAgIG9iamVjdHMuCisgICAgIChCZWNhdXNlIG9m IHRoaXMgcmVxdWlyZW1lbnQsIHRoZSBjYWxsIGhhbmRsZXIgc2hvdWxkIGF2b2lkCisgICAgIGFz c3VtaW5nIHRoYXQgdGhlIHZhbGlkYXRvciBoYXMgZnVsbHkgY2hlY2tlZCB0aGUgcm91dGluZS4g IFRoZSBwb2ludAorICAgICBvZiBoYXZpbmcgYSB2YWxpZGF0b3IgaXMgbm90IHRvIGxldCB0aGUg Y2FsbCBoYW5kbGVyIG9taXQgY2hlY2tzLCBidXQKKyAgICAgdG8gbm90aWZ5IHRoZSB1c2VyIGlt bWVkaWF0ZWx5IGlmIHRoZXJlIGFyZSBvYnZpb3VzIGVycm9ycyBpbiBhCisgICAgIDxjb21tYW5k PkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+Q1JFQVRFIFBST0NFRFVSRTwv Y29tbWFuZD4KKyAgICAgY29tbWFuZC4pCisgICAgPC9wYXJhPgogCi0gICA8cGFyYT4KLSAgICBX aGlsZSB0aGUgY2hvaWNlIG9mIGV4YWN0bHkgd2hhdCB0byBjaGVjayBpcyBtb3N0bHkgbGVmdCB0 byB0aGUKLSAgICBkaXNjcmV0aW9uIG9mIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb24sIG5vdGUgdGhh dCB0aGUgY29yZQotICAgIDxjb21tYW5kPkNSRUFURSBGVU5DVElPTjwvY29tbWFuZD4gYW5kIDxj b21tYW5kPkNSRUFURSBQUk9DRURVUkU8L2NvbW1hbmQ+Ci0gICAgY29kZSBvbmx5IGV4ZWN1dGVz IDxsaXRlcmFsPlNFVDwvbGl0ZXJhbD4gY2xhdXNlcwotICAgIGF0dGFjaGVkIHRvIGEgcm91dGlu ZSB3aGVuIDx2YXJuYW1lPmNoZWNrX2Z1bmN0aW9uX2JvZGllczwvdmFybmFtZT4gaXMgb24uCi0g ICAgVGhlcmVmb3JlLCBjaGVja3Mgd2hvc2UgcmVzdWx0cyBtaWdodCBiZSBhZmZlY3RlZCBieSBH VUMgcGFyYW1ldGVycwotICAgIGRlZmluaXRlbHkgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiA8dmFy bmFtZT5jaGVja19mdW5jdGlvbl9ib2RpZXM8L3Zhcm5hbWU+IGlzCi0gICAgb2ZmLCB0byBhdm9p ZCBmYWxzZSBmYWlsdXJlcyB3aGVuIHJlbG9hZGluZyBhIGR1bXAuCi0gICA8L3BhcmE+CisgICAg PHBhcmE+CisgICAgIFdoaWxlIHRoZSBjaG9pY2Ugb2YgZXhhY3RseSB3aGF0IHRvIGNoZWNrIGlz IG1vc3RseSBsZWZ0IHRvIHRoZQorICAgICBkaXNjcmV0aW9uIG9mIHRoZSB2YWxpZGF0b3IgZnVu Y3Rpb24sIG5vdGUgdGhhdCB0aGUgY29yZQorICAgICA8Y29tbWFuZD5DUkVBVEUgRlVOQ1RJT048 L2NvbW1hbmQ+IGFuZCA8Y29tbWFuZD5DUkVBVEUgUFJPQ0VEVVJFPC9jb21tYW5kPgorICAgICBj b2RlIG9ubHkgZXhlY3V0ZXMgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjbGF1c2VzCisgICAgIGF0 dGFjaGVkIHRvIGEgcm91dGluZSB3aGVuIDx2YXJuYW1lPmNoZWNrX2Z1bmN0aW9uX2JvZGllczwv dmFybmFtZT4gaXMgb24uCisgICAgIFRoZXJlZm9yZSwgY2hlY2tzIHdob3NlIHJlc3VsdHMgbWln aHQgYmUgYWZmZWN0ZWQgYnkgR1VDIHBhcmFtZXRlcnMKKyAgICAgZGVmaW5pdGVseSBzaG91bGQg YmUgc2tpcHBlZCB3aGVuIDx2YXJuYW1lPmNoZWNrX2Z1bmN0aW9uX2JvZGllczwvdmFybmFtZT4K KyAgICAgaXMgb2ZmLCB0byBhdm9pZCBmYWxzZSBmYWlsdXJlcyB3aGVuIHJlbG9hZGluZyBhIGR1 bXAuCisgICAgPC9wYXJhPgogCi0gICA8cGFyYT4KLSAgICBJZiBhIGxhbmd1YWdlJ3MgY2FsbCBo YW5kbGVyIGRvZXMgbm90IGFwcGx5IHBhcmFtZXRlciBhbmQgcmV0dXJuIHR5cGUKLSAgICB0cmFu c2Zvcm1zLCB0aGVuIG5vIDxsaXRlcmFsPlRSQU5TRk9STTwvbGl0ZXJhbD4gY2xhdXNlIGluIGEg cm91dGluZQotICAgIGRlY2xhcmF0aW9uIHdpbGwgaGF2ZSBhbnkgZWZmZWN0LiBUbyBwcm92aWRl IGltbWVkaWF0ZSBmZWVkYmFjayBpZiBhCi0gICAgZGVjbGFyYXRpb24gY29udGFpbnMgc3VjaCBh IGNsYXVzZSwgdGhlIHZhbGlkYXRvciBjYW4gcmVwb3J0IGEgc3VpdGFibGUKLSAgICBlcnJvciB3 aGVuZXZlciB0aGUgPGxpdGVyYWw+cHJvdHJmdHlwZXM8L2xpdGVyYWw+IGNvbHVtbiBvZiB0aGUg cm91dGluZSdzCi0gICAgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+IHJvdyBpcyBub24t bnVsbC4KLSAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgSWYgYSBsYW5ndWFnZSdzIGNhbGwg aGFuZGxlciBkb2VzIG5vdCBhcHBseSBwYXJhbWV0ZXIgYW5kIHJldHVybiB0eXBlCisgICAgIHRy YW5zZm9ybXMsIHRoZW4gbm8gPGxpdGVyYWw+VFJBTlNGT1JNPC9saXRlcmFsPiBjbGF1c2UgaW4g YSByb3V0aW5lCisgICAgIGRlY2xhcmF0aW9uIHdpbGwgaGF2ZSBhbnkgZWZmZWN0LiBUbyBwcm92 aWRlIGltbWVkaWF0ZSBmZWVkYmFjayBpZiBhCisgICAgIGRlY2xhcmF0aW9uIGNvbnRhaW5zIHN1 Y2ggYSBjbGF1c2UsIHRoZSB2YWxpZGF0b3IgY2FuIHJlcG9ydCBhIHN1aXRhYmxlCisgICAgIGVy cm9yIHdoZW5ldmVyIHRoZSA8bGl0ZXJhbD5wcm90cmZ0eXBlczwvbGl0ZXJhbD4gY29sdW1uIG9m IHRoZSByb3V0aW5lJ3MKKyAgICAgPGNsYXNzbmFtZT5wZ19wcm9jPC9jbGFzc25hbWU+IHJvdyBp cyBub24tbnVsbC4KKyAgICA8L3BhcmE+CiAKICAgIDwvc2VjdDE+CiAKICAgIDxzZWN0MSBpZD0i cGxoYW5kbGVyLWlubGluZSI+CiAgICAgPHRpdGxlPklubGluZSBoYW5kbGVyIGZ1bmN0aW9uPC90 aXRsZT4KIAotICAgPHBhcmE+Ci0gICAgSWYgdGhpcyBoYW5kbGVyIGlzIHByb3ZpZGVkIGJ5IGEg cHJvY2VkdXJhbCBsYW5ndWFnZSwgaXQKLSAgICBtdXN0IGJlIGRlY2xhcmVkIGFzIGEgZnVuY3Rp b24gdGFraW5nIGEgc2luZ2xlIHBhcmFtZXRlciBvZiB0eXBlCi0gICAgPHR5cGU+aW50ZXJuYWw8 L3R5cGU+LCB3aGljaCB3aWxsIGJlIGEgcG9pbnRlcgotICAgIHRvIGFuIDxzdHJ1Y3RuYW1lPklu bGluZUNvZGVCbG9jazwvc3RydWN0bmFtZT4gc3RydWN0IHdoZW4gdGhlIGhhbmRsZXIKLSAgICBp cyBjYWxsZWQuICBUaGUgcmVzdWx0IGlzIGlnbm9yZWQsIHNvIHRoZSByZXR1cm4gdHlwZSBpcyBj dXN0b21hcmlseQotICAgIGRlY2xhcmVkIGFzIDx0eXBlPnZvaWQ8L3R5cGU+LgotICAgIFRoZSBp bmxpbmUgaGFuZGxlciBpdHNlbGYgbWF5IGJlIHdyaXR0ZW4gaW4gYW55IHByb2NlZHVyYWwgbGFu Z3VhZ2UgdGhhdAotICAgIHBlcm1pdHMgZGVjbGFyaW5nIGFuIDx0eXBlPmludGVybmFsPC90eXBl PiBwYXJhbWV0ZXIgd2l0aCBhIHN1aXRhYmxlCi0gICAgbGFuZ3VhZ2UgYmluZGluZyBmb3IgYWNj ZXNzaW5nIGl0IGFzIGFuCi0gICAgPHN0cnVjdG5hbWU+SW5saW5lQ29kZUJsb2NrPC9zdHJ1Y3Ru YW1lPiBzdHJ1Y3QuCi0gICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIElmIHRoaXMgaGFuZGxl ciBpcyBwcm92aWRlZCBieSBhIHByb2NlZHVyYWwgbGFuZ3VhZ2UsIGl0CisgICAgIG11c3QgYmUg ZGVjbGFyZWQgYXMgYSBmdW5jdGlvbiB0YWtpbmcgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIHR5cGUK KyAgICAgPHR5cGU+aW50ZXJuYWw8L3R5cGU+LCB3aGljaCB3aWxsIGJlIGEgcG9pbnRlcgorICAg ICB0byBhbiA8c3RydWN0bmFtZT5JbmxpbmVDb2RlQmxvY2s8L3N0cnVjdG5hbWU+IHN0cnVjdCB3 aGVuIHRoZSBoYW5kbGVyCisgICAgIGlzIGNhbGxlZC4gIFRoZSByZXN1bHQgaXMgaWdub3JlZCwg c28gdGhlIHJldHVybiB0eXBlIGlzIGN1c3RvbWFyaWx5CisgICAgIGRlY2xhcmVkIGFzIDx0eXBl PnZvaWQ8L3R5cGU+LgorICAgICBUaGUgaW5saW5lIGhhbmRsZXIgaXRzZWxmIG1heSBiZSB3cml0 dGVuIGluIGFueSBwcm9jZWR1cmFsIGxhbmd1YWdlIHRoYXQKKyAgICAgcGVybWl0cyBkZWNsYXJp bmcgYW4gPHR5cGU+aW50ZXJuYWw8L3R5cGU+IHBhcmFtZXRlciB3aXRoIGEgc3VpdGFibGUKKyAg ICAgbGFuZ3VhZ2UgYmluZGluZyBmb3IgYWNjZXNzaW5nIGl0IGFzIGFuCisgICAgIDxzdHJ1Y3Ru YW1lPklubGluZUNvZGVCbG9jazwvc3RydWN0bmFtZT4gc3RydWN0LgorICAgIDwvcGFyYT4KIAot ICAgPHBhcmE+Ci0gICAgVGhlIGlubGluZSBoYW5kbGVyCi0gICAgd2lsbCBiZSBjYWxsZWQgd2hl biBhIDxjb21tYW5kPkRPPC9jb21tYW5kPiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgc3BlY2lmeWlu ZwotICAgIHRoZSBwcm9jZWR1cmFsIGxhbmd1YWdlLiAgVGhlIDxzdHJ1Y3RuYW1lPklubGluZUNv ZGVCbG9jazwvc3RydWN0bmFtZT4KLSAgICBzdHJ1Y3QgY29udGFpbnMgaW5mb3JtYXRpb24KLSAg ICBhYm91dCB0aGUgPGNvbW1hbmQ+RE88L2NvbW1hbmQ+IHN0YXRlbWVudCdzIHBhcmFtZXRlcnMs IGluIHBhcnRpY3VsYXIgdGhlCi0gICAgdGV4dCBvZiB0aGUgYW5vbnltb3VzIGNvZGUgYmxvY2sg dG8gYmUgZXhlY3V0ZWQuCi0gICAgSXQgYWxzbyBjb250YWlucyB0aGUgT0lEIG9mIHRoZSBpbnRl bmRlZCBwcm9jZWR1cmFsIGxhbmd1YWdlIGFuZCB3aGV0aGVyCi0gICAgdGhhdCBwcm9jZWR1cmFs IGxhbmd1YWdlIGlzIGRlY2xhcmVkIGFzIDxsaXRlcmFsPlRSVVNURUQ8L2xpdGVyYWw+LCB1c2Vm dWwKLSAgICBpZiBhIHNpbmdsZSBpbmxpbmUgaGFuZGxlciBpcyBzdXBwb3J0aW5nIG1vcmUgdGhh biBvbmUgcHJvY2VkdXJhbCBsYW5ndWFnZS4KLSAgICBUaGUgaW5saW5lIGhhbmRsZXIgc2hvdWxk IGV4ZWN1dGUgdGhlIGNvZGUgYmxvY2sgYW5kIHJldHVybi4KLSAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgVGhlIGlubGluZSBoYW5kbGVyCisgICAgIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSA8 Y29tbWFuZD5ETzwvY29tbWFuZD4gc3RhdGVtZW50IGlzIGV4ZWN1dGVkCisgICAgIHNwZWNpZnlp bmcgdGhlIHByb2NlZHVyYWwgbGFuZ3VhZ2UuCisgICAgIFRoZSA8c3RydWN0bmFtZT5JbmxpbmVD b2RlQmxvY2s8L3N0cnVjdG5hbWU+IHN0cnVjdCBjb250YWlucyBpbmZvcm1hdGlvbgorICAgICBh Ym91dCB0aGUgPGNvbW1hbmQ+RE88L2NvbW1hbmQ+IHN0YXRlbWVudCdzIHBhcmFtZXRlcnMsIGlu IHBhcnRpY3VsYXIgdGhlCisgICAgIHRleHQgb2YgdGhlIGFub255bW91cyBjb2RlIGJsb2NrIHRv IGJlIGV4ZWN1dGVkLgorICAgICBJdCBhbHNvIGNvbnRhaW5zIHRoZSBPSUQgb2YgdGhlIGludGVu ZGVkIHByb2NlZHVyYWwgbGFuZ3VhZ2UgYW5kIHdoZXRoZXIKKyAgICAgdGhhdCBwcm9jZWR1cmFs IGxhbmd1YWdlIGlzIGRlY2xhcmVkIGFzIDxsaXRlcmFsPlRSVVNURUQ8L2xpdGVyYWw+LCB1c2Vm dWwKKyAgICAgaWYgYSBzaW5nbGUgaW5saW5lIGhhbmRsZXIgaXMgc3VwcG9ydGluZyBtb3JlIHRo YW4gb25lIHByb2NlZHVyYWwgbGFuZ3VhZ2UuCisgICAgIFRoZSBpbmxpbmUgaGFuZGxlciBzaG91 bGQgZXhlY3V0ZSB0aGUgY29kZSBibG9jayBhbmQgcmV0dXJuLgorICAgIDwvcGFyYT4KIAogICAg PC9zZWN0MT4KIAogICAgPHNlY3QxIGlkPSJwbGhhbmRsZXItcGFja2FnaW5nIj4KICAgICA8dGl0 bGU+UGFja2FnaW5nIHRoZSBsYW5ndWFnZSBoYW5kbGVyczwvdGl0bGU+CiAKLSAgIDxwYXJhPgot ICAgIEl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3Ugd3JhcCBhbGwgdGhlc2UgZnVuY3Rpb24gZGVj bGFyYXRpb25zLAotICAgIGFzIHdlbGwgYXMgdGhlIDxjb21tYW5kPkNSRUFURSBMQU5HVUFHRTwv Y29tbWFuZD4gY29tbWFuZCBpdHNlbGYsIGludG8KLSAgICBhbiA8Zmlyc3R0ZXJtPmV4dGVuc2lv bjwvZmlyc3R0ZXJtPiBzbyB0aGF0IGEgc2ltcGxlIDxjb21tYW5kPkNSRUFURSBFWFRFTlNJT048 L2NvbW1hbmQ+Ci0gICAgY29tbWFuZCBpcyBzdWZmaWNpZW50IHRvIGluc3RhbGwgdGhlIGxhbmd1 YWdlLiAgU2VlCi0gICAgPHhyZWYgbGlua2VuZD0iZXh0ZW5kLWV4dGVuc2lvbnMiLz4gZm9yIGlu Zm9ybWF0aW9uIGFib3V0IHdyaXRpbmcKLSAgICBleHRlbnNpb25zLgotICAgPC9wYXJhPgorICAg IDxwYXJhPgorICAgICBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IHdyYXAgYWxsIHRoZXNlIGZ1 bmN0aW9uIGRlY2xhcmF0aW9ucywKKyAgICAgYXMgd2VsbCBhcyB0aGUgPGNvbW1hbmQ+Q1JFQVRF IExBTkdVQUdFPC9jb21tYW5kPiBjb21tYW5kIGl0c2VsZiwgaW50bworICAgICBhbiA8Zmlyc3R0 ZXJtPmV4dGVuc2lvbjwvZmlyc3R0ZXJtPiBzbyB0aGF0IGEgc2ltcGxlCisgICAgIDxjb21tYW5k PkNSRUFURSBFWFRFTlNJT048L2NvbW1hbmQ+IGNvbW1hbmQgaXMgc3VmZmljaWVudCB0byBpbnN0 YWxsCisgICAgIHRoZSBsYW5ndWFnZS4gIFNlZSA8eHJlZiBsaW5rZW5kPSJleHRlbmQtZXh0ZW5z aW9ucyIvPiBmb3IgaW5mb3JtYXRpb24KKyAgICAgYWJvdXQgd3JpdGluZyBleHRlbnNpb25zLgor ICAgIDwvcGFyYT4KIAogICAgPC9zZWN0MT4KIAogICAgPHNlY3QxIGlkPSJwbGhhbmRsZXItZXhh bXBsZXMiPgogICAgIDx0aXRsZT5FeGFtcGxlIGNvZGU8L3RpdGxlPgogCi0gICA8cGFyYT4KLSAg ICBBIHRlbXBsYXRlIGZvciBhIHByb2NlZHVyYWwtbGFuZ3VhZ2UgaGFuZGxlciB3cml0dGVuIGFz IGEgQyBleHRlbnNpb24gaXMKLSAgICBwcm92aWRlZCBpbiA8bGl0ZXJhbD5zcmMvdGVzdC9tb2R1 bGVzL3Bsc2FtcGxlPC9saXRlcmFsPi4gIFRoaXMgaXMgYQotICAgIHdvcmtpbmcgc2FtcGxlIGRl bW9uc3RyYXRpbmcgb25lIHdheSB0byBjcmVhdGUgYSBwcm9jZWR1cmFsLWxhbmd1YWdlCi0gICAg aGFuZGxlciwgcHJvY2VzcyBwYXJhbWV0ZXJzLCBhbmQgcmV0dXJuIGEgdmFsdWUuCi0gICA8L3Bh cmE+CisgICAgPHBhcmE+CisgICAgIEEgdGVtcGxhdGUgZm9yIGEgcHJvY2VkdXJhbC1sYW5ndWFn ZSBoYW5kbGVyIHdyaXR0ZW4gYXMgYSBDIGV4dGVuc2lvbiBpcworICAgICBwcm92aWRlZCBpbiA8 bGl0ZXJhbD5zcmMvdGVzdC9tb2R1bGVzL3Bsc2FtcGxlPC9saXRlcmFsPi4gIFRoaXMgaXMgYQor ICAgICB3b3JraW5nIHNhbXBsZSBkZW1vbnN0cmF0aW5nIG9uZSB3YXkgdG8gY3JlYXRlIGEgcHJv Y2VkdXJhbC1sYW5ndWFnZQorICAgICBoYW5kbGVyLCBwcm9jZXNzIHBhcmFtZXRlcnMsIGFuZCBy ZXR1cm4gYSB2YWx1ZS4KKyAgICA8L3BhcmE+CiAKLSAgIDxwYXJhPgotICAgIFRoZSBwcm9jZWR1 cmFsIGxhbmd1YWdlcyBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgZGlzdHJpYnV0aW9uCi0gICAg YXJlIGdvb2QgcmVmZXJlbmNlcyB3aGVuIHRyeWluZyB0byB3cml0ZSB5b3VyIG93biBsYW5ndWFn ZSBoYW5kbGVyLgotICAgIExvb2sgaW50byB0aGUgPGZpbGVuYW1lPnNyYy9wbDwvZmlsZW5hbWU+ IHN1YmRpcmVjdG9yeSBvZiB0aGUgc291cmNlIHRyZWUuCi0gICAgVGhlIDx4cmVmIGxpbmtlbmQ9 InNxbC1jcmVhdGVsYW5ndWFnZSIvPgotICAgIHJlZmVyZW5jZSBwYWdlIGFsc28gaGFzIHNvbWUg dXNlZnVsIGRldGFpbHMuCi0gICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoZSBwcm9jZWR1 cmFsIGxhbmd1YWdlcyBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgZGlzdHJpYnV0aW9uCisgICAg IGFyZSBnb29kIHJlZmVyZW5jZXMgd2hlbiB0cnlpbmcgdG8gd3JpdGUgeW91ciBvd24gbGFuZ3Vh Z2UgaGFuZGxlci4KKyAgICAgTG9vayBpbnRvIHRoZSA8ZmlsZW5hbWU+c3JjL3BsPC9maWxlbmFt ZT4gc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UgdHJlZS4KKyAgICAgVGhlIDx4cmVmIGxpbmtl bmQ9InNxbC1jcmVhdGVsYW5ndWFnZSIvPgorICAgICByZWZlcmVuY2UgcGFnZSBhbHNvIGhhcyBz b21lIHVzZWZ1bCBkZXRhaWxzLgorICAgIDwvcGFyYT4KIAogICAgPC9zZWN0MT4KIAotLSAKMi43 LjMKCg== --=_383627b03f3032e924b279ff6e9d20f7 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0004-PL-Sample-with-TRANSFORM-FOR-TYPE.patch Content-Disposition: attachment; filename=v2-0004-PL-Sample-with-TRANSFORM-FOR-TYPE.patch; size=8683 RnJvbSAzMzliODU1MzZhMjZiZTcxYjFiNWVlYWJhNmFlMmY0ODNmOGE4NTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDaGFwbWFuIEZsYWNrIDxjaGFwQGFuYXN0aWdtYXRpeC5uZXQ+ CkRhdGU6IFRodSwgNyBBcHIgMjAyMiAyMDo1MjoxOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjIg NC80XSBQTC9TYW1wbGUgIndpdGgiIFRSQU5TRk9STSBGT1IgVFlQRQoKQWRkIGp1c3QgZW5vdWdo IFRSQU5TRk9STSBoYW5kbGluZyB0byBQTC9TYW1wbGUgZm9yIGl0IHRvIGFubm91bmNlCndoYXQg ZnVuY3Rpb25zIHdvdWxkIGJlIGNhbGxlZCAoaW4gYSByZWFsIGltcGxlbWVudGF0aW9uKSBvbiB3 aGljaApyZXR1cm4gb3IgYXJndW1lbnQgdHlwZXMuCgpBZGQgYSB0ZXN0IGJhc2VkIG9uIGNyZWF0 aW5nIGEgY29tcGxldGVseSBib2d1cyB0cmFuc2Zvcm0gb3V0IG9mCmV4aXN0aW5nIGZ1bmN0aW9u cyB0aGF0IGhhdmUgdGhlIHJpZ2h0IHBhcmFtZXRlciBhbmQgcmV0dXJuIHR5cGVzCmJ1dCBvdGhl cndpc2Ugbm8gYnVzaW5lc3MgYXQgYWxsIGJlaW5nIHVzZWQgZm9yIGEgdHJhbnNmb3JtLiBCZWNh dXNlClBML1NhbXBsZSB3aWxsIG5vdCByZWFsbHkgY2FsbCB0aGVtLCB0aGF0IHdpbGwgd29yayBh cyBhIHRlc3QuCgpJbiBwYXNzaW5nOiB0dXJuIGEgU2VhcmNoU3lzQ2FjaGUoLi4uLCAwLCAwLCAw KSB0byBTZWFyY2hTeXNDYWNoZTEKc28gdGhlIGV4YW1wbGUgY29kZSBpcyBmb2xsb3dpbmcgdGhl IHJlY29tbWVuZGVkIHByYWN0aWNlLgotLS0KIHNyYy90ZXN0L21vZHVsZXMvcGxzYW1wbGUvZXhw ZWN0ZWQvcGxzYW1wbGUub3V0IHwgMzEgKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9wbHNh bXBsZS9wbHNhbXBsZS5jICAgICAgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysr CiBzcmMvdGVzdC9tb2R1bGVzL3Bsc2FtcGxlL3NxbC9wbHNhbXBsZS5zcWwgICAgICB8IDE4ICsr KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvcGxzYW1wbGUvZXhwZWN0ZWQvcGxzYW1wbGUub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy9wbHNhbXBsZS9leHBlY3RlZC9wbHNhbXBsZS5vdXQKaW5kZXggOGFkNWY3YS4uYmFi MWNiMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9wbHNhbXBsZS9leHBlY3RlZC9wbHNh bXBsZS5vdXQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9wbHNhbXBsZS9leHBlY3RlZC9wbHNhbXBs ZS5vdXQKQEAgLTM0LDYgKzM0LDM3IEBAIE5PVElDRTogIGFyZ3VtZW50OiAwOyBuYW1lOiBhMTsg dmFsdWU6IHtmb28sYmFyLGhvZ2V9CiAgCiAoMSByb3cpCiAKKy8qCisgKiBDcmVhdGUgYSBib2d1 cyB0cmFuc2Zvcm0gdXNpbmcgYSBjb3VwbGUgZXhpc3RpbmcgZnVuY3Rpb25zIHRoYXQKKyAqIGhh cHBlbiB0byBoYXZlIHRoZSByaWdodCBwYXJhbWV0ZXIgYW5kIHJldHVybiB0eXBlcy4gQ2FsYW1p dHkgZG9lcworICogbm90IGVuc3VlLCBiZWNhdXNlIHBsc2FtcGxlIHdpbGwgbWVyZWx5IGFubm91 bmNlIHdoYXQgdHJhbnNmb3JtIGZ1bmN0aW9ucworICogaXQgIndvdWxkIiBhcHBseSwgYW5kIG5v dCByZWFsbHkgY2FsbCB0aGVtLgorICovCitDUkVBVEUgVFJBTlNGT1JNIEZPUiB0ZXh0IExBTkdV QUdFIHBsc2FtcGxlICgKKyAgRlJPTSBTUUwgV0lUSCBGVU5DVElPTiBwcnNkX2xleHR5cGUsIFRP IFNRTCBXSVRIIEZVTkNUSU9OIHRleHRyZWN2CispOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04KKyAgcGxzYW1wbGVfcmVzdWx0X3RleHQoYTEgbnVtZXJpYywgYTIgdGV4dCwgYTMgaW50ZWdl cltdKQorUkVUVVJOUyB0ZXh0CitUUkFOU0ZPUk0gRk9SIFRZUEUgdGV4dAorQVMgJCQKKyAgRXhh bXBsZSBvZiBzb3VyY2Ugd2l0aCB0ZXh0IHJlc3VsdC4KKyQkIExBTkdVQUdFIHBsc2FtcGxlOwor U0VMRUNUIHBsc2FtcGxlX3Jlc3VsdF90ZXh0KDEuMjMsICdhYmMnLCAnezQsIDUsIDZ9Jyk7CitO T1RJQ0U6ICBzb3VyY2UgdGV4dCBvZiBmdW5jdGlvbiAicGxzYW1wbGVfcmVzdWx0X3RleHQiOiAK KyAgRXhhbXBsZSBvZiBzb3VyY2Ugd2l0aCB0ZXh0IHJlc3VsdC4KKworTk9USUNFOiAgYXJndW1l bnQ6IDA7IG5hbWU6IGExOyB2YWx1ZTogMS4yMworTk9USUNFOiAgYXJndW1lbnQ6IDE7IG5hbWU6 IGEyOyB0cmFuc2Zvcm1lZCB3aXRoOiBwcnNkX2xleHR5cGUoaW50ZXJuYWwpCitOT1RJQ0U6ICBh cmd1bWVudDogMjsgbmFtZTogYTM7IHZhbHVlOiB7NCw1LDZ9CitOT1RJQ0U6ICByZXR1cm4gdmFs dWU6IHRyYW5zZm9ybWVkIHdpdGg6IHRleHRyZWN2KGludGVybmFsKQorICAgICAgICAgcGxzYW1w bGVfcmVzdWx0X3RleHQgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgRXhh bXBsZSBvZiBzb3VyY2Ugd2l0aCB0ZXh0IHJlc3VsdC4rCisgCisoMSByb3cpCisKIENSRUFURSBG VU5DVElPTiBteV90cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIHRyaWdnZXIgQVMgJCQKIGlmIFREX2V2 ZW50ID09ICJJTlNFUlQiCiAgICAgcmV0dXJuIFREX05FVwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9wbHNhbXBsZS9wbHNhbXBsZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9wbHNhbXBsZS9w bHNhbXBsZS5jCmluZGV4IDc4MGRiNzIuLjUxZmVlMTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvcGxzYW1wbGUvcGxzYW1wbGUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Bsc2FtcGxl L3Bsc2FtcGxlLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNp bmNsdWRlICJ1dGlscy9yZWdwcm9jLmgiICAgLyogb25seSBmb3IgZm9ybWF0X3Byb2NlZHVyZSgp ICovCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogUEdfTU9EVUxFX01BR0lDOwpAQCAt MTAyLDEyICsxMDMsMTUgQEAgcGxzYW1wbGVfZnVuY19oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJRm9ybV9wZ19wcm9jIHBsX3N0cnVjdDsKIAl2b2xhdGlsZSBNZW1vcnlDb250ZXh0IHByb2Nf Y3h0ID0gTlVMTDsKIAlPaWQJCSAgICphcmd0eXBlczsKKwlMaXN0CSAgICp0cmZ0eXBlczsKIAlj aGFyCSAgKiphcmduYW1lczsKIAljaGFyCSAgICphcmdtb2RlczsKIAljaGFyCSAgICpwcm9uYW1l OwogCUZvcm1fcGdfdHlwZSBwZ190eXBlX2VudHJ5OwogCU9pZAkJCXJlc3VsdF90eXBpb3BhcmFt OwogCU9pZAkJCXByb3JldHR5cGU7CisJT2lkCQkJcHJvbGFuZzsKKwlPaWQJCQl0b3NxbDsKIAlG bWdySW5mbwlyZXN1bHRfaW5fZnVuYzsKIAlpbnQJCQludW1hcmdzOwogCkBAIC0xMjMsNiArMTI3 LDcgQEAgcGxzYW1wbGVfZnVuY19oYW5kbGVyKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICogYSBiYXNl IGZvciB0aGUgZnVuY3Rpb24gdmFsaWRhdGlvbiBhbmQgZXhlY3V0aW9uLgogCSAqLwogCXBsX3N0 cnVjdCA9IChGb3JtX3BnX3Byb2MpIEdFVFNUUlVDVChwbF90dXBsZSk7CisJcHJvbGFuZyA9IHBs X3N0cnVjdC0+cHJvbGFuZzsKIAlwcm9uYW1lID0gcHN0cmR1cChOYW1lU3RyKHBsX3N0cnVjdC0+ cHJvbmFtZSkpOwogCXJldCA9IFN5c0NhY2hlR2V0QXR0cihQUk9DT0lELCBwbF90dXBsZSwgQW51 bV9wZ19wcm9jX3Byb3NyYywgJmlzbnVsbCk7CiAJaWYgKGlzbnVsbCkKQEAgLTE0MSwyNiArMTQ2 LDkyIEBAIHBsc2FtcGxlX2Z1bmNfaGFuZGxlcihQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJ ICJQTC9TYW1wbGUgZnVuY3Rpb24iLAogCQkJCQkJCQkJIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsK IAorCS8qCisJICogVGhpcyBhcnJheSBvZiBGbWdySW5mbyB3aWxsIGhvbGQsIGZvciBlYWNoIHN1 cHBsaWVkIGlucHV0IGFyZ3VtZW50LAorCSAqIHRoZSByZXNvbHZlZCBvdXRwdXQtdG8tdGV4dCBm dW5jdGlvbiBmb3IgdGhhdCBhcmd1bWVudCdzIHR5cGUuCisJICogZmNpbmZvLT5uYXJncyBjb21l cyBmcm9tIHRoZSBjYWxsZXIsIGFuZCByZWZsZWN0cyB0aGUgbnVtYmVyIG9mIGlucHV0CisJICog YXJndW1lbnRzIHN1cHBsaWVkIGluIHRoaXMgY2FsbC4KKwkgKi8KIAlhcmdfb3V0X2Z1bmMgPSAo Rm1nckluZm8gKikgcGFsbG9jMChmY2luZm8tPm5hcmdzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CisK KwkvKgorCSAqIE9idGFpbiB0aGUgdHlwZXMsIG5hbWVzLCBhbmQgbW9kZXMgKElOL09VVC9JTk9V VC8uLi4pIGZvciBhbGwgb2YKKwkgKiB0aGUgZnVuY3Rpb24ncyBzdGF0aWNhbGx5IGRlY2xhcmVk IGFyZ3VtZW50cywgcmV0dXJuaW5nIHRoZWlyIG51bWJlcgorCSAqIChnaXZpbmcgdGhlIHNpemUg b2YgZWFjaCByZXN1bHQgYXJyYXkpLiBudW1hcmdzIGNhbiBiZSBsYXJnZXIgdGhhbgorCSAqIGZj aW5mby0+bmFyZ3MgKHdoaWNoIG9ubHkgcmVmbGVjdHMgSU4gYXJndW1lbnRzKS4gbnVtYXJncyBj YW4gYWxzbyBiZQorCSAqIHNtYWxsZXIgdGhhbiBmY2luZm8tPm5hcmdzIChpbiB0aGUgY2FzZSBv ZiBhIGZ1bmN0aW9uIGRlY2xhcmVkCisJICogVkFSSUFESUMgImFueSIsIGJ1dCBpdCBpcyByYXJl IGZvciBhIFBMIHRvIHN1cHBvcnQgdGhhdCkuCisJICovCiAJbnVtYXJncyA9IGdldF9mdW5jX2Fy Z19pbmZvKHBsX3R1cGxlLCAmYXJndHlwZXMsICZhcmduYW1lcywgJmFyZ21vZGVzKTsKIAogCS8q CisJICogRm9yIG5vdywgUEwvU2FtcGxlIGRvZXMgbm90IHN1cHBvcnQgYW55IGFyZ3VtZW50IHdp dGggbW9kZSBvdGhlciB0aGFuIElOLgorCSAqIFdoZW4gbW9kZSBpcyBJTiBmb3IgZXZlcnkgYXJn dW1lbnQsIGFyZ21vZGVzIHdpbGwgYmUgTlVMTCwgc28gcmVwb3J0CisJICogYW4gZXJyb3IgaWYg aXQgaXMgbm90LiBUbyBtb3JlIGhlbHBmdWxseSByZXBvcnQgdGhlIGVycm9yIGF0IHRoZSB0aW1l CisJICogb2YgZGVjbGFyYXRpb24sIGEgdmFsaWRhdG9yIGZ1bmN0aW9uIGNhbiBjaGVjayB0aGlz IHRvby4KKwkgKi8KKwlpZiAoIGFyZ21vZGVzICE9IE5VTEwgKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJtc2coIm9ubHkgSU4gYXJndW1lbnRzIHN1cHBvcnRlZCBmb3IgUEwvU2FtcGxlIikp KTsKKworCS8qCisJICogT2J0YWluIHRoZSB0eXBlcyBmb3Igd2hpY2ggdHJhbnNmb3JtcyBzaG91 bGQgYmUgYXBwbGllZC4KKwkgKiBGb3IgYSBQTCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdHJhbnNm b3JtcywgaXQgY291bGQgYmUgY29uc2lkZXJhdGUgdG8KKwkgKiByZXBvcnQgYW4gZXJyb3IgaGVy ZSAob3IgZWFybGllciwgaW4gYSB2YWxpZGF0b3IpIGlmIHRyZnR5cGVzIGlzIG5vdCBOSUwsCisJ ICogcmF0aGVyIHRoYW4gc2ltcGx5IGlnbm9yaW5nIGFueSB0cmFuc2Zvcm1zIHRoYXQgbWlnaHQg YmUgbWlzdGFrZW5seQorCSAqIGRlY2xhcmVkLgorCSAqLworCXRyZnR5cGVzID0gZ2V0X2NhbGxf dHJmdHlwZXMocGxfdHVwbGUpOworCisJLyoKIAkgKiBJdGVyYXRlIHRocm91Z2ggYWxsIG9mIHRo ZSBmdW5jdGlvbiBhcmd1bWVudHMsIHByaW50aW5nIGVhY2ggaW5wdXQKIAkgKiB2YWx1ZS4KIAkg Ki8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51bWFyZ3M7IGkrKykKIAl7CiAJCU9pZAkJCWFyZ3R5 cGUgPSBwbF9zdHJ1Y3QtPnByb2FyZ3R5cGVzLnZhbHVlc1tpXTsKKwkJT2lkCQkJZnJvbXNxbDsK IAkJY2hhcgkgICAqdmFsdWU7CiAKKwkJLyoKKwkJICogR2V0IHRoZSBPaWQgb2YgdGhlICJmcm9t IFNRTCIgdHJhbnNmb3JtIGZ1bmN0aW9uIGlmIHRoaXMgYXJnJ3MgdHlwZQorCQkgKiBpcyBvbmUg b2YgdGhvc2UgdG8gd2hpY2ggdHJhbnNmb3JtcyBzaG91bGQgYmUgYXBwbGllZCwgb3IgSW52YWxp ZE9pZAorCQkgKiBpZiBub3QuCisJCSAqLworCQlmcm9tc3FsID0gZ2V0X3RyYW5zZm9ybV9mcm9t c3FsKGFyZ3R5cGUsIHByb2xhbmcsIHRyZnR5cGVzKTsKKwogCQl0eXBlX3R1cGxlID0gU2VhcmNo U3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0oYXJndHlwZSkpOwogCQlpZiAoIUhl YXBUdXBsZUlzVmFsaWQodHlwZV90dXBsZSkpCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3Vw IGZhaWxlZCBmb3IgdHlwZSAldSIsIGFyZ3R5cGUpOwogCiAJCXR5cGVfc3RydWN0ID0gKEZvcm1f cGdfdHlwZSkgR0VUU1RSVUNUKHR5cGVfdHVwbGUpOworCisJCS8qCisJCSAqIExvb2sgdXAgdGhl IHR5cGUncyBvdXRwdXQgZnVuY3Rpb24gYW5kIHNhdmUgdGhlIGRldGFpbHMKKwkJICogaW4gYXJn X291dF9mdW5jW2ldLgorCQkgKi8KIAkJZm1ncl9pbmZvX2N4dCh0eXBlX3N0cnVjdC0+dHlwb3V0 cHV0LCAmKGFyZ19vdXRfZnVuY1tpXSksIHByb2NfY3h0KTsKKwogCQlSZWxlYXNlU3lzQ2FjaGUo dHlwZV90dXBsZSk7CiAKKwkJLyoKKwkJICogSWYgYSB0cmFuc2Zvcm0gZnVuY3Rpb24gd2FzIGZv dW5kIGZvciB0aGlzIGFyZywgdXNlIGl0IGluc3RlYWQgb2YKKwkJICogdGhlIGRlZmF1bHQgY29u dmVyc2lvbiBiZWxvdy4gSW4gdGhpcyBleGFtcGxlLCAidXNlIGl0IiBtZWFucworCQkgKiByZXBv cnRpbmcgdGhlIHRyYW5zZm9ybSBmdW5jdGlvbidzIG5hbWUuIEEgcmVhbCBQTCB3b3VsZCwgb2Yg Y291cnNlLAorCQkgKiBhcHBseSB0aGF0IGZ1bmN0aW9uIHRvIHRoZSBhcmd1bWVudCB2YWx1ZSBh bmQgdXNlIHRoZSByZXN1bHQuCisJCSAqLworCQlpZiAoIE9pZElzVmFsaWQoZnJvbXNxbCkgKQor CQl7CisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycm1zZygiYXJndW1lbnQ6ICVkOyBuYW1l OiAlczsgdHJhbnNmb3JtZWQgd2l0aDogJXMiLAorCQkJCQkJCWksIGFyZ25hbWVzW2ldLCBmb3Jt YXRfcHJvY2VkdXJlKGZyb21zcWwpKSkpOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkg KiBObyB0cmFuc2Zvcm0sIHNvIGFwcGx5IHRoZSBkZWZhdWx0IGNvbnZlcnNpb24gdGhhdCBjYWxs cyB0aGUgdHlwZSdzCisJCSAqIG91dHB1dCBmdW5jdGlvbiB0byBvYnRhaW4gYSBzdHJpbmcuCisJ CSAqLwogCQl2YWx1ZSA9IE91dHB1dEZ1bmN0aW9uQ2FsbCgmYXJnX291dF9mdW5jW2ldLCBmY2lu Zm8tPmFyZ3NbaV0udmFsdWUpOwogCQllcmVwb3J0KE5PVElDRSwKIAkJCQkoZXJybXNnKCJhcmd1 bWVudDogJWQ7IG5hbWU6ICVzOyB2YWx1ZTogJXMiLApAQCAtMTgyLDYgKzI1MywxNSBAQCBwbHNh bXBsZV9mdW5jX2hhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIAlpZiAocHJvcmV0dHlwZSAhPSBU RVhUT0lEKQogCQlQR19SRVRVUk5fTlVMTCgpOwogCisJdG9zcWwgPSBnZXRfdHJhbnNmb3JtX3Rv c3FsKHByb3JldHR5cGUsIHByb2xhbmcsIHRyZnR5cGVzKTsKKworCWlmICggT2lkSXNWYWxpZCh0 b3NxbCkgKQorCXsKKwkJZXJlcG9ydChOT1RJQ0UsCisJCQkJKGVycm1zZygicmV0dXJuIHZhbHVl OiB0cmFuc2Zvcm1lZCB3aXRoOiAlcyIsCisJCQkJCQlmb3JtYXRfcHJvY2VkdXJlKHRvc3FsKSkp KTsKKwl9CisKIAl0eXBlX3R1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsCiAJCQkJCQkJ CSBPYmplY3RJZEdldERhdHVtKHByb3JldHR5cGUpKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHlwZV90dXBsZSkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Bsc2FtcGxlL3NxbC9w bHNhbXBsZS5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Bsc2FtcGxlL3NxbC9wbHNhbXBsZS5zcWwK aW5kZXggY2Y2NTJhZC4uNGEzMTg3NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9wbHNh bXBsZS9zcWwvcGxzYW1wbGUuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcGxzYW1wbGUvc3Fs L3Bsc2FtcGxlLnNxbApAQCAtMTQsNiArMTQsMjQgQEAgQVMgJCQKICQkIExBTkdVQUdFIHBsc2Ft cGxlOwogU0VMRUNUIHBsc2FtcGxlX3Jlc3VsdF92b2lkKCd7Zm9vLCBiYXIsIGhvZ2V9Jyk7CiAK Ky8qCisgKiBDcmVhdGUgYSBib2d1cyB0cmFuc2Zvcm0gdXNpbmcgYSBjb3VwbGUgZXhpc3Rpbmcg ZnVuY3Rpb25zIHRoYXQKKyAqIGhhcHBlbiB0byBoYXZlIHRoZSByaWdodCBwYXJhbWV0ZXIgYW5k IHJldHVybiB0eXBlcy4gQ2FsYW1pdHkgZG9lcworICogbm90IGVuc3VlLCBiZWNhdXNlIHBsc2Ft cGxlIHdpbGwgbWVyZWx5IGFubm91bmNlIHdoYXQgdHJhbnNmb3JtIGZ1bmN0aW9ucworICogaXQg IndvdWxkIiBhcHBseSwgYW5kIG5vdCByZWFsbHkgY2FsbCB0aGVtLgorICovCitDUkVBVEUgVFJB TlNGT1JNIEZPUiB0ZXh0IExBTkdVQUdFIHBsc2FtcGxlICgKKyAgRlJPTSBTUUwgV0lUSCBGVU5D VElPTiBwcnNkX2xleHR5cGUsIFRPIFNRTCBXSVRIIEZVTkNUSU9OIHRleHRyZWN2CispOworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04KKyAgcGxzYW1wbGVfcmVzdWx0X3RleHQoYTEgbnVtZXJp YywgYTIgdGV4dCwgYTMgaW50ZWdlcltdKQorUkVUVVJOUyB0ZXh0CitUUkFOU0ZPUk0gRk9SIFRZ UEUgdGV4dAorQVMgJCQKKyAgRXhhbXBsZSBvZiBzb3VyY2Ugd2l0aCB0ZXh0IHJlc3VsdC4KKyQk IExBTkdVQUdFIHBsc2FtcGxlOworU0VMRUNUIHBsc2FtcGxlX3Jlc3VsdF90ZXh0KDEuMjMsICdh YmMnLCAnezQsIDUsIDZ9Jyk7CisKIENSRUFURSBGVU5DVElPTiBteV90cmlnZ2VyX2Z1bmMoKSBS RVRVUk5TIHRyaWdnZXIgQVMgJCQKIGlmIFREX2V2ZW50ID09ICJJTlNFUlQiCiAgICAgcmV0dXJu IFREX05FVwotLSAKMi43LjMKCg== --=_383627b03f3032e924b279ff6e9d20f7--