From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EE2BC31E5C for ; Mon, 17 Jun 2019 15:41:38 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DDE69208CB for ; Mon, 17 Jun 2019 15:41:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DDE69208CB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hctl0-0008NR-T9; Mon, 17 Jun 2019 15:41:18 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hctkz-0008Mo-BB for xen-devel@lists.xenproject.org; Mon, 17 Jun 2019 15:41:17 +0000 X-Inumbo-ID: 567e1c18-9116-11e9-8980-bc764e045a96 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 567e1c18-9116-11e9-8980-bc764e045a96; Mon, 17 Jun 2019 15:41:13 +0000 (UTC) Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa4.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa4.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa4.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: T6BohGEw++h1+GHoXfsshj2diqf/tn8AfnI4zOUbwCvFNuPDAjtmLNt2keSpd5eQOZnlzet7b+ 7dJWVOWL7Y/QwWvD/49R4ewdrqcwO9ph/qUuGrf9ArPBOjBR36I2kFHOsfiUylDnH0YlxCMCnL FiFJ/cXAuWgmPs0pTWdIuWU8RtwaPXwxJj6GhtkEcW1PjxkL7zkWp0ffcT9ho9iSFIZIcNK9N9 8QxfoIzoGSO+mriOo/LWx7a36DRPCbsV/fk1OnK8hG4b7x40uP0hsY9iej1IQXNDL5yUfFJZ+v jjI= X-SBRS: 2.7 X-MesageID: 1846123 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.63,385,1557201600"; d="scan'208";a="1846123" From: Anthony PERARD To: Date: Mon, 17 Jun 2019 16:41:02 +0100 Message-ID: <20190617154105.32323-2-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190617154105.32323-1-anthony.perard@citrix.com> References: <20190617154105.32323-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH 1/4] xen: Fix build with public headers X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Stefano Stabellini , Paul Durrant Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Rm9sbG93aW5nIDM3Njc3ZDdkYjMgIkNsZWFuIHVwIGEgZmV3IGhlYWRlciBndWFyZCBzeW1ib2xz IiwgUUVNVSBzdGFydAp0byBmYWlsIHRvIGJ1aWxkOgoKSW4gZmlsZSBpbmNsdWRlZCBmcm9tIH4v eGVuL3Rvb2xzLy4uL3Rvb2xzL2luY2x1ZGUveGVuL2lvL2Jsa2lmLmg6MzE6MCwKICAgICAgICAg ICAgICAgICBmcm9tIH4veGVuL3Rvb2xzL3FlbXUteGVuLWRpci9ody9ibG9jay94ZW5fYmxraWYu aDo1LAogICAgICAgICAgICAgICAgIGZyb20gfi94ZW4vdG9vbHMvcWVtdS14ZW4tZGlyL2h3L2Js b2NrL3hlbi1ibG9jay5jOjIyOgp+L3hlbi90b29scy8uLi90b29scy9pbmNsdWRlL3hlbi9pby9y aW5nLmg6Njg6MDogZXJyb3I6ICJfX0NPTlNUX1JJTkdfU0laRSIgcmVkZWZpbmVkIFstV2Vycm9y XQogI2RlZmluZSBfX0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCgpJbiBmaWxlIGluY2x1ZGVk IGZyb20gfi94ZW4vdG9vbHMvcWVtdS14ZW4tZGlyL2h3L2Jsb2NrL3hlbl9ibGtpZi5oOjQ6MCwK ICAgICAgICAgICAgICAgICBmcm9tIH4veGVuL3Rvb2xzL3FlbXUteGVuLWRpci9ody9ibG9jay94 ZW4tYmxvY2suYzoyMjoKfi94ZW4vdG9vbHMvcWVtdS14ZW4tZGlyL2luY2x1ZGUvaHcveGVuL2lv L3JpbmcuaDo2NjowOiBub3RlOiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJldmlvdXMg ZGVmaW5pdGlvbgogI2RlZmluZSBfX0NPTlNUX1JJTkdfU0laRShfcywgX3N6KSBcCgpUaGUgaXNz dWUgaXMgdGhhdCBzb21lIHB1YmxpYyB4ZW4gaGVhZGVycyBoYXZlIGJlZW4gaW1wb3J0ZWQgKGJ5 CmY2NWVhZGI2MzkgInhlbjogaW1wb3J0IHJpbmcuaCBmcm9tIHhlbiIpIGJ1dCBub3QgYWxsLiBX aXRoIHRoZSBjaGFuZ2UKaW4gdGhlIGd1YXJkcyBzeW1ib2xlLCB0aGUgcmluZy5oIGhlYWRlciBz dGFydCB0byBiZSBpbXBvcnRlZCB0d2ljZS4KCkZpeCB0aGUgYnVpbGQgYnkgaW1wb3J0aW5nIGJs a2lmLmggYW5kIHVzYmlmLmggYW5kIHRoZXJlIGRlcGVuZGVuY2llcy4KU29tZSBjbGVhbnVwIGhh dmUgYmVlbiBkb25lIG9uIHRob3NlIGZpbGVzLgoKU3Vic2VxdWVudCBwYXRjaGVzIHdpbGwgaW1w b3J0IG90aGVyIFhlbiBwdWJsaWMgaGVhZGVycy4KCnJpbmcuaCBoYXZlIGJlZW4gbW92ZWQgdG8g Imh3L3hlbi9pbnRlcmZhY2UvIiBhbG9uZyB3aXRoIGJsa2lmLmggYW5kCnVzYmlmLmggYXMgdGhv c2UgZGVzY3JpYmUgaW50ZXJmYWNlIChhbmQgd291bGQgYWxsb3cgdG8gYWxzbyBpbXBvcnQgYQp4 ZW4uaCBoZWFkZXIgaWYgdGhhdCB3YXMgbmVjZXNzYXJ5KS4KCnhlbi1tYXBjYWNoZS5jIGRvZXNu J3QgbmVlZHMgZ3JhbnRfdGFibGUuaC4KClNpZ25lZC1vZmYtYnk6IEFudGhvbnkgUEVSQVJEIDxh bnRob255LnBlcmFyZEBjaXRyaXguY29tPgotLS0KIGh3LzlwZnMveGVuLTlwZnMuaCAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIGh3L2Jsb2NrL3hlbl9ibGtpZi5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKy0KIGh3L3VzYi94ZW4tdXNiLmMgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDMgKy0KIGh3L3hlbi94ZW4tbGVnYWN5LWJhY2tlbmQuYyAgICAgICAgICAgICAgfCAg IDIgLQogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2dyYW50X3RhYmxlLmggICB8ICAzNiArKwog aW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2Jsa2lmLmggICAgICB8IDcxMiArKysrKysrKysr KysrKysrKysrKysrKwogaW5jbHVkZS9ody94ZW4veyA9PiBpbnRlcmZhY2V9L2lvL3JpbmcuaCB8 ICAgMAogaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3VzYmlmLmggICAgICB8IDI1NCArKysr KysrKwogOCBmaWxlcyBjaGFuZ2VkLCAxMDA1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2dyYW50X3RhYmxl LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vYmxraWYu aAogcmVuYW1lIGluY2x1ZGUvaHcveGVuL3sgPT4gaW50ZXJmYWNlfS9pby9yaW5nLmggKDEwMCUp CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL3VzYmlmLmgK CmRpZmYgLS1naXQgYS9ody85cGZzL3hlbi05cGZzLmggYi9ody85cGZzL3hlbi05cGZzLmgKaW5k ZXggZmJkZWUzZDg0My4uOTJkYzg3ZTllMCAxMDA2NDQKLS0tIGEvaHcvOXBmcy94ZW4tOXBmcy5o CisrKyBiL2h3LzlwZnMveGVuLTlwZnMuaApAQCAtMTQsNyArMTQsNyBAQAogI2RlZmluZSBIV185 UEZTX1hFTl85UEZTX0gKIAogI2luY2x1ZGUgPHhlbi9pby9wcm90b2NvbHMuaD4KLSNpbmNsdWRl ICJody94ZW4vaW8vcmluZy5oIgorI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vcmluZy5o IgogCiAvKgogICogRG8gbm90IG1lcmdlIGludG8geGVuLTlwLWJhY2tlbmQuYzogY2xhbmcgZG9l c24ndCBhbGxvdyB1bnVzZWQgc3RhdGljCmRpZmYgLS1naXQgYS9ody9ibG9jay94ZW5fYmxraWYu aCBiL2h3L2Jsb2NrL3hlbl9ibGtpZi5oCmluZGV4IGEzNTM2OTNlYTAuLjVhMTA5NGQ3OTMgMTAw NjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbl9ibGtpZi5oCisrKyBiL2h3L2Jsb2NrL3hlbl9ibGtpZi5o CkBAIC0xLDggKzEsNyBAQAogI2lmbmRlZiBYRU5fQkxLSUZfSAogI2RlZmluZSBYRU5fQkxLSUZf SAogCi0jaW5jbHVkZSAiaHcveGVuL2lvL3JpbmcuaCIKLSNpbmNsdWRlIDx4ZW4vaW8vYmxraWYu aD4KKyNpbmNsdWRlICJody94ZW4vaW50ZXJmYWNlL2lvL2Jsa2lmLmgiCiAjaW5jbHVkZSA8eGVu L2lvL3Byb3RvY29scy5oPgogCiAvKgpkaWZmIC0tZ2l0IGEvaHcvdXNiL3hlbi11c2IuYyBiL2h3 L3VzYi94ZW4tdXNiLmMKaW5kZXggYjIwZDBjZmFkZi4uZGZiYjQxOGU3NyAxMDA2NDQKLS0tIGEv aHcvdXNiL3hlbi11c2IuYworKysgYi9ody91c2IveGVuLXVzYi5jCkBAIC0zMiw4ICszMiw3IEBA CiAjaW5jbHVkZSAicWFwaS9xbXAvcWRpY3QuaCIKICNpbmNsdWRlICJxYXBpL3FtcC9xc3RyaW5n LmgiCiAKLSNpbmNsdWRlICJody94ZW4vaW8vcmluZy5oIgotI2luY2x1ZGUgPHhlbi9pby91c2Jp Zi5oPgorI2luY2x1ZGUgImh3L3hlbi9pbnRlcmZhY2UvaW8vdXNiaWYuaCIKIAogLyoKICAqIENo ZWNrIGZvciByZXF1aXJlZCBzdXBwb3J0IG9mIHVzYmlmLmg6IFVTQklGX1NIT1JUX05PVF9PSyB3 YXMgdGhlIGxhc3QKZGlmZiAtLWdpdCBhL2h3L3hlbi94ZW4tbGVnYWN5LWJhY2tlbmQuYyBiL2h3 L3hlbi94ZW4tbGVnYWN5LWJhY2tlbmQuYwppbmRleCAzNmZkMWU5YjA5Li4zNzE1Yzk0ZmE2IDEw MDY0NAotLS0gYS9ody94ZW4veGVuLWxlZ2FjeS1iYWNrZW5kLmMKKysrIGIvaHcveGVuL3hlbi1s ZWdhY3ktYmFja2VuZC5jCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiaHcveGVuL3hlbl9w dmRldi5oIgogI2luY2x1ZGUgIm1vbml0b3IvcWRldi5oIgogCi0jaW5jbHVkZSA8eGVuL2dyYW50 X3RhYmxlLmg+Ci0KIERldmljZVN0YXRlICp4ZW5fc3lzZGV2OwogQnVzU3RhdGUgKnhlbl9zeXNi dXM7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5o IGIvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2dyYW50X3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzAyZTQwNDgxNAotLS0gL2Rldi9udWxsCisrKyBiL2lu Y2x1ZGUvaHcveGVuL2ludGVyZmFjZS9ncmFudF90YWJsZS5oCkBAIC0wLDAgKzEsMzYgQEAKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqIGdyYW50X3RhYmxlLmgKKyAqCisgKiBJbnRlcmZhY2Ug Zm9yIGdyYW50aW5nIGZvcmVpZ24gYWNjZXNzIHRvIHBhZ2UgZnJhbWVzLCBhbmQgcmVjZWl2aW5n CisgKiBwYWdlLW93bmVyc2hpcCB0cmFuc2ZlcnMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w eQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g RVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENvcHlyaWdo dCAoYykgMjAwNCwgSyBBIEZyYXNlcgorICovCisKKyNpZm5kZWYgWEVOX1BVQkxJQ19HUkFOVF9U QUJMRV9ICisjZGVmaW5lIFhFTl9QVUJMSUNfR1JBTlRfVEFCTEVfSAorCisvKgorICogUmVmZXJl bmNlIHRvIGEgZ3JhbnQgZW50cnkgaW4gYSBzcGVjaWZpZWQgZG9tYWluJ3MgZ3JhbnQgdGFibGUu CisgKi8KK3R5cGVkZWYgdWludDMyX3QgZ3JhbnRfcmVmX3Q7CisKKyNlbmRpZiAvKiBYRU5fUFVC TElDX0dSQU5UX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcveGVuL2ludGVyZmFj ZS9pby9ibGtpZi5oIGIvaW5jbHVkZS9ody94ZW4vaW50ZXJmYWNlL2lvL2Jsa2lmLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMmZlNzcyNzFjOQotLS0gL2Rldi9udWxs CisrKyBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby9ibGtpZi5oCkBAIC0wLDAgKzEsNzEy IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBibGtpZi5oCisgKgorICogVW5pZmllZCBi bG9jay1kZXZpY2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRo ZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBz aGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA0LCBLZWlyIEZyYXNlcgorICogQ29weXJpZ2h0 IChjKSAyMDEyLCBTcGVjdHJhIExvZ2ljIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBYRU5f UFVCTElDX0lPX0JMS0lGX0gKKyNkZWZpbmUgWEVOX1BVQkxJQ19JT19CTEtJRl9ICisKKyNpbmNs dWRlICJyaW5nLmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqIEZyb250 LT5iYWNrIG5vdGlmaWNhdGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRp bmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHJlcV9ldmVu dCAoaS5lLiwgdGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0 aGUgcmluZyBtYWNyb3MpLiBCYWNrZW5kcyBtdXN0IHNldAorICogcmVxX2V2ZW50IGFwcHJvcHJp YXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgorICoK KyAqIEJhY2stPmZyb250IG5vdGlmaWNhdGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlc3Bv bnNlLCBzZW5kaW5nIGEKKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBv biByc3BfZXZlbnQgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJv dmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gRnJvbnRlbmRzIG11c3Qgc2V0CisgKiByc3BfZXZl bnQgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9O U0VTKCkpLgorICovCisKKyNpZm5kZWYgYmxraWZfdmRldl90CisjZGVmaW5lIGJsa2lmX3ZkZXZf dCAgIHVpbnQxNl90CisjZW5kaWYKKyNkZWZpbmUgYmxraWZfc2VjdG9yX3QgdWludDY0X3QKKwor LyoKKyAqIEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFhlbiBibG9jayBk cml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4gdGhlIFhlblN0b3JlIHRvCisgKiBjb21tdW5pY2F0 ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4gIFRo aXMKKyAqIHNlY3Rpb24gZW51bWVyYXRlcyB0aGVzZSBub2RlcyB3aGljaCByZXNpZGUgaW4gdGhl IHJlc3BlY3RpdmUgZnJvbnQgYW5kCisgKiBiYWNrZW5kIHBvcnRpb25zIG9mIHRoZSBYZW5TdG9y ZSwgZm9sbG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlvbi4KKyAqCisgKiBBbGwgZGF0YSBpbiB0 aGUgWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3MuICBOb2RlcyBzcGVjaWZ5aW5nIG51bWVy aWMKKyAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiBkZWNpbWFsLiAgSW50ZWdlciB2YWx1ZSByYW5n ZXMgbGlzdGVkIGJlbG93IGFyZQorICogZXhwcmVzc2VkIGFzIGZpeGVkIHNpemVkIGludGVnZXIg dHlwZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9uCisgKiBvZiBhIHByb3Blcmx5 IGZvcm1hdGVkIG5vZGUgc3RyaW5nLCB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uCisgKgor ICogQW55IHNwZWNpZmllZCBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBpZiB0aGUgY29ycmVz cG9uZGluZyBYZW5CdXMgbm9kZQorICogaXMgbm90IHByZXNlbnQgaW4gdGhlIFhlblN0b3JlLgor ICoKKyAqIFhlblN0b3JlIG5vZGVzIGluIHNlY3Rpb25zIG1hcmtlZCAiUFJJVkFURSIgYXJlIHNv bGVseSBmb3IgdXNlIGJ5IHRoZQorICogZHJpdmVyIHNpZGUgd2hvc2UgWGVuQnVzIHRyZWUgY29u dGFpbnMgdGhlbS4KKyAqCisgKiBYZW5TdG9yZSBub2RlcyBtYXJrZWQgIkRFUFJFQ0FURUQiIGlu IHRoZWlyIG5vdGVzIHNlY3Rpb24gc2hvdWxkIG9ubHkgYmUKKyAqIHVzZWQgdG8gcHJvdmlkZSBp bnRlcm9wZXJhYmlsaXR5IHdpdGggbGVnYWN5IGltcGxlbWVudGF0aW9ucy4KKyAqCisgKiBTZWUg dGhlIFhlbkJ1cyBzdGF0ZSB0cmFuc2l0aW9uIGRpYWdyYW0gYmVsb3cgZm9yIGRldGFpbHMgb24g d2hlbiBYZW5CdXMKKyAqIG5vZGVzIG11c3QgYmUgcHVibGlzaGVkIGFuZCB3aGVuIHRoZXkgY2Fu IGJlIHF1ZXJpZWQuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCBEZXZpY2UgSWRlbnRpZmljYXRpb24g KFBSSVZBVEUpIC0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG1vZGUKKyAqICAgICAgVmFsdWVz OiAgICAgICAgICJyIiAocmVhZCBvbmx5KSwgInciICh3cml0YWJsZSkKKyAqCisgKiAgICAgIFRo ZSByZWFkIG9yIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byB0aGUgYmFja2luZyBzdG9yZSB0 byBiZQorICogICAgICBncmFudGVkIHRvIHRoZSBmcm9udGVuZC4KKyAqCisgKiBwYXJhbXMKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIHN0cmluZworICoKKyAqICAgICAgQSBmcmVlIGZvcm1hdHRl ZCBzdHJpbmcgcHJvdmlkaW5nIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gZm9yIHRoZQorICogICAg ICBob3RwbHVnIHNjcmlwdCB0byBhdHRhY2ggdGhlIGRldmljZSBhbmQgcHJvdmlkZSBhIHN1aXRh YmxlCisgKiAgICAgIGhhbmRsZXIgKGllOiBhIGJsb2NrIGRldmljZSkgZm9yIGJsa2JhY2sgdG8g dXNlLgorICoKKyAqIHBoeXNpY2FsLWRldmljZQorICogICAgICBWYWx1ZXM6ICAgICAgICAgIk1B Sk9SOk1JTk9SIgorICogICAgICBOb3RlczogMTEKKyAqCisgKiAgICAgIE1BSk9SIGFuZCBNSU5P UiBhcmUgdGhlIG1ham9yIG51bWJlciBhbmQgbWlub3IgbnVtYmVyIG9mIHRoZQorICogICAgICBi YWNraW5nIGRldmljZSByZXNwZWN0aXZlbHkuCisgKgorICogcGh5c2ljYWwtZGV2aWNlLXBhdGgK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIHBhdGggc3RyaW5nCisgKgorICogICAgICBBIHN0cmlu ZyB0aGF0IGNvbnRhaW5zIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBkaXNrIGltYWdlLiBPbgor ICogICAgICBOZXRCU0QgYW5kIExpbnV4IHRoaXMgaXMgYWx3YXlzIGEgYmxvY2sgZGV2aWNlLCB3 aGlsZSBvbiBGcmVlQlNECisgKiAgICAgIGl0IGNhbiBiZSBlaXRoZXIgYSBibG9jayBkZXZpY2Ug b3IgYSByZWd1bGFyIGZpbGUuCisgKgorICogdHlwZQorICogICAgICBWYWx1ZXM6ICAgICAgICAg ImZpbGUiLCAicGh5IiwgInRhcCIKKyAqCisgKiAgICAgIFRoZSB0eXBlIG9mIHRoZSBiYWNraW5n IGRldmljZS9vYmplY3QuCisgKgorICoKKyAqIGRpcmVjdC1pby1zYWZlCisgKiAgICAgIFZhbHVl czogICAgICAgICAwLzEgKGJvb2xlYW4pCisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKgor ICogICAgICBUaGUgdW5kZXJseWluZyBzdG9yYWdlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgZGly ZWN0IElPIG1lbW9yeQorICogICAgICBsaWZldGltZSBidWcuICBTZWU6CisgKiAgICAgICAgaHR0 cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxMi0xMi9tc2cwMTE1 NC5odG1sCisgKgorICogICAgICBUaGVyZWZvcmUgdGhpcyBvcHRpb24gZ2l2ZXMgdGhlIGJhY2tl bmQgcGVybWlzc2lvbiB0byB1c2UKKyAqICAgICAgT19ESVJFQ1QsIG5vdHdpdGhzdGFuZGluZyB0 aGF0IGJ1Zy4KKyAqCisgKiAgICAgIFRoYXQgaXMsIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQs IHVzZSBvZiBPX0RJUkVDVCBpcyBzYWZlLAorICogICAgICBpbiBjaXJjdW1zdGFuY2VzIHdoZXJl IHdlIHdvdWxkIG5vcm1hbGx5IGhhdmUgYXZvaWRlZCBpdCBhcyBhCisgKiAgICAgIHdvcmthcm91 bmQgZm9yIHRoYXQgYnVnLiAgVGhpcyBvcHRpb24gaXMgbm90IHJlbGV2YW50IGZvciBhbGwKKyAq ICAgICAgYmFja2VuZHMsIGFuZCBldmVuIG5vdCBuZWNlc3NhcmlseSBzdXBwb3J0ZWQgZm9yIHRo b3NlIGZvcgorICogICAgICB3aGljaCBpdCBpcyByZWxldmFudC4gIEEgYmFja2VuZCB3aGljaCBr bm93cyB0aGF0IGl0IGlzIG5vdAorICogICAgICBhZmZlY3RlZCBieSB0aGUgYnVnIGNhbiBpZ25v cmUgdGhpcyBvcHRpb24uCisgKgorICogICAgICBUaGlzIG9wdGlvbiBkb2Vzbid0IHJlcXVpcmUg YSBiYWNrZW5kIHRvIHVzZSBPX0RJUkVDVCwgc28gaXQKKyAqICAgICAgc2hvdWxkIG5vdCBiZSB1 c2VkIHRvIHRyeSB0byBjb250cm9sIHRoZSBjYWNoaW5nIGJlaGF2aW91ci4KKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBmZWF0dXJlLWJhcnJpZXIKKyAqICAgICAgVmFsdWVzOiAg ICAgICAgIDAvMSAoYm9vbGVhbikKKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAqCisgKiAg ICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBwcm9jZXNz IHJlcXVlc3RzCisgKiAgICAgIGNvbnRhaW5pbmcgdGhlIEJMS0lGX09QX1dSSVRFX0JBUlJJRVIg cmVxdWVzdCBvcGNvZGUuICBSZXF1ZXN0cworICogICAgICBvZiB0aGlzIHR5cGUgbWF5IHN0aWxs IGJlIHJldHVybmVkIGF0IGFueSB0aW1lIHdpdGggdGhlCisgKiAgICAgIEJMS0lGX1JTUF9FT1BO T1RTVVBQIHJlc3VsdCBjb2RlLgorICoKKyAqIGZlYXR1cmUtZmx1c2gtY2FjaGUKKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAK KyAqCisgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNh biBwcm9jZXNzIHJlcXVlc3RzCisgKiAgICAgIGNvbnRhaW5pbmcgdGhlIEJMS0lGX09QX0ZMVVNI X0RJU0tDQUNIRSByZXF1ZXN0IG9wY29kZS4gIFJlcXVlc3RzCisgKiAgICAgIG9mIHRoaXMgdHlw ZSBtYXkgc3RpbGwgYmUgcmV0dXJuZWQgYXQgYW55IHRpbWUgd2l0aCB0aGUKKyAqICAgICAgQkxL SUZfUlNQX0VPUE5PVFNVUFAgcmVzdWx0IGNvZGUuCisgKgorICogZmVhdHVyZS1kaXNjYXJkCisg KiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4pCisgKiAgICAgIERlZmF1bHQgVmFs dWU6ICAwCisgKgorICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMgdGhhdCB0aGUgYmFj a2VuZCBjYW4gcHJvY2VzcyByZXF1ZXN0cworICogICAgICBjb250YWluaW5nIHRoZSBCTEtJRl9P UF9ESVNDQVJEIHJlcXVlc3Qgb3Bjb2RlLiAgUmVxdWVzdHMKKyAqICAgICAgb2YgdGhpcyB0eXBl IG1heSBzdGlsbCBiZSByZXR1cm5lZCBhdCBhbnkgdGltZSB3aXRoIHRoZQorICogICAgICBCTEtJ Rl9SU1BfRU9QTk9UU1VQUCByZXN1bHQgY29kZS4KKyAqCisgKiBmZWF0dXJlLXBlcnNpc3RlbnQK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikKKyAqICAgICAgRGVmYXVsdCBW YWx1ZTogIDAKKyAqICAgICAgTm90ZXM6IDcKKyAqCisgKiAgICAgIEEgdmFsdWUgb2YgIjEiIGlu ZGljYXRlcyB0aGF0IHRoZSBiYWNrZW5kIGNhbiBrZWVwIHRoZSBncmFudHMgdXNlZAorICogICAg ICBieSB0aGUgZnJvbnRlbmQgZHJpdmVyIG1hcHBlZCwgc28gdGhlIHNhbWUgc2V0IG9mIGdyYW50 cyBzaG91bGQgYmUKKyAqICAgICAgdXNlZCBpbiBhbGwgdHJhbnNhY3Rpb25zLiBUaGUgbWF4aW11 bSBudW1iZXIgb2YgZ3JhbnRzIHRoZSBiYWNrZW5kCisgKiAgICAgIGNhbiBtYXAgcGVyc2lzdGVu dGx5IGRlcGVuZHMgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgaWRlYWxseSBpdAorICogICAg ICBzaG91bGQgYmUgUklOR19TSVpFICogQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9SRVFVRVNULiBV c2luZyB0aGlzCisgKiAgICAgIGZlYXR1cmUgdGhlIGJhY2tlbmQgZG9lc24ndCBuZWVkIHRvIHVu bWFwIGVhY2ggZ3JhbnQsIHByZXZlbnRpbmcKKyAqICAgICAgY29zdGx5IFRMQiBmbHVzaGVzLiBU aGUgYmFja2VuZCBkcml2ZXIgc2hvdWxkIG9ubHkgbWFwIGdyYW50cworICogICAgICBwZXJzaXN0 ZW50bHkgaWYgdGhlIGZyb250ZW5kIHN1cHBvcnRzIGl0LiBJZiBhIGJhY2tlbmQgZHJpdmVyIGNo b29zZXMKKyAqICAgICAgdG8gdXNlIHRoZSBwZXJzaXN0ZW50IHByb3RvY29sIHdoZW4gdGhlIGZy b250ZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpdCwKKyAqICAgICAgaXQgd2lsbCBwcm9iYWJseSBoaXQg dGhlIG1heGltdW0gbnVtYmVyIG9mIHBlcnNpc3RlbnRseSBtYXBwZWQgZ3JhbnRzCisgKiAgICAg IChkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZnJvbnRlbmQgd29uJ3QgYmUgcmV1c2luZyB0aGUg c2FtZSBncmFudHMpLAorICogICAgICBhbmQgZmFsbCBiYWNrIHRvIG5vbi1wZXJzaXN0ZW50IG1v ZGUuIEJhY2tlbmQgaW1wbGVtZW50YXRpb25zIG1heQorICogICAgICBzaHJpbmsgb3IgZXhwYW5k IHRoZSBudW1iZXIgb2YgcGVyc2lzdGVudGx5IG1hcHBlZCBncmFudHMgd2l0aG91dAorICogICAg ICBub3RpZnlpbmcgdGhlIGZyb250ZW5kIGRlcGVuZGluZyBvbiBtZW1vcnkgY29uc3RyYWludHMg KHRoaXMgbWlnaHQKKyAqICAgICAgY2F1c2UgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbikuCisg KgorICogICAgICBJZiBhIGJhY2tlbmQgZHJpdmVyIHdhbnRzIHRvIGxpbWl0IHRoZSBtYXhpbXVt IG51bWJlciBvZiBwZXJzaXN0ZW50bHkKKyAqICAgICAgbWFwcGVkIGdyYW50cyB0byBhIHZhbHVl IGxlc3MgdGhhbiBSSU5HX1NJWkUgKgorICogICAgICBCTEtJRl9NQVhfU0VHTUVOVFNfUEVSX1JF UVVFU1QgYSBMUlUgc3RyYXRlZ3kgc2hvdWxkIGJlIHVzZWQgdG8KKyAqICAgICAgZGlzY2FyZCB0 aGUgZ3JhbnRzIHRoYXQgYXJlIGxlc3MgY29tbW9ubHkgdXNlZC4gVXNpbmcgYSBMUlUgaW4gdGhl CisgKiAgICAgIGJhY2tlbmQgZHJpdmVyIHBhaXJlZCB3aXRoIGEgTElGTyBxdWV1ZSBpbiB0aGUg ZnJvbnRlbmQgd2lsbAorICogICAgICBhbGxvdyB1cyB0byBoYXZlIGJldHRlciBwZXJmb3JtYW5j ZSBpbiB0aGlzIHNjZW5hcmlvLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVz dCBUcmFuc3BvcnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBt YXgtcmluZy1wYWdlLW9yZGVyCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cisg KiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKiAgICAgIE5vdGVzOiAgICAgICAgICAxLCAzCisg KgorICogICAgICBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZSBvZiB0aGUgcmVxdWVzdCByaW5n IGJ1ZmZlciBpbiB1bml0cyBvZgorICogICAgICBsYihtYWNoaW5lIHBhZ2VzKS4gKGUuZy4gMCA9 PSAxIHBhZ2UsICAxID0gMiBwYWdlcywgMiA9PSA0IHBhZ2VzLAorICogICAgICBldGMuKS4KKyAq CisgKiBtYXgtcmluZy1wYWdlcworICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgor ICogICAgICBEZWZhdWx0IFZhbHVlOiAgMQorICogICAgICBOb3RlczogICAgICAgICAgREVQUkVD QVRFRCwgMiwgMworICoKKyAqICAgICAgVGhlIG1heGltdW0gc3VwcG9ydGVkIHNpemUgb2YgdGhl IHJlcXVlc3QgcmluZyBidWZmZXIgaW4gdW5pdHMgb2YKKyAqICAgICAgbWFjaGluZSBwYWdlcy4g IFRoZSB2YWx1ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gQmFja2VuZCBEZXZpY2UgUHJvcGVydGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogZGlzY2FyZC1lbmFibGUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAo Ym9vbGVhbikKKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDEKKyAqCisgKiAgICAgIFRoaXMgb3B0 aW9uYWwgcHJvcGVydHksIHNldCBieSB0aGUgdG9vbHN0YWNrLCBpbnN0cnVjdHMgdGhlIGJhY2tl bmQKKyAqICAgICAgdG8gb2ZmZXIgKG9yIG5vdCB0byBvZmZlcikgZGlzY2FyZCB0byB0aGUgZnJv bnRlbmQuIElmIHRoZSBwcm9wZXJ0eQorICogICAgICBpcyBtaXNzaW5nIHRoZSBiYWNrZW5kIHNo b3VsZCBvZmZlciBkaXNjYXJkIGlmIHRoZSBiYWNraW5nIHN0b3JhZ2UKKyAqICAgICAgYWN0dWFs bHkgc3VwcG9ydHMgaXQuCisgKgorICogZGlzY2FyZC1hbGlnbm1lbnQKKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDx1aW50MzJfdD4KKyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAqICAgICAg Tm90ZXM6ICAgICAgICAgIDQsIDUKKyAqCisgKiAgICAgIFRoZSBvZmZzZXQsIGluIGJ5dGVzIGZy b20gdGhlIGJlZ2lubmluZyBvZiB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UsCisgKiAgICAgIHRv IHRoZSBmaXJzdCwgYWRkcmVzc2FibGUsIGRpc2NhcmQgZXh0ZW50IG9uIHRoZSB1bmRlcmx5aW5n IGRldmljZS4KKyAqCisgKiBkaXNjYXJkLWdyYW51bGFyaXR5CisgKiAgICAgIFZhbHVlczogICAg ICAgICA8dWludDMyX3Q+CisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICA8InNlY3Rvci1zaXplIj4K KyAqICAgICAgTm90ZXM6ICAgICAgICAgIDQKKyAqCisgKiAgICAgIFRoZSBzaXplLCBpbiBieXRl cywgb2YgdGhlIGluZGl2aWR1YWxseSBhZGRyZXNzYWJsZSBkaXNjYXJkIGV4dGVudHMKKyAqICAg ICAgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlLgorICoKKyAqIGRpc2NhcmQtc2VjdXJlCisgKiAg ICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4pCisgKiAgICAgIERlZmF1bHQgVmFsdWU6 ICAwCisgKiAgICAgIE5vdGVzOiAgICAgICAgICAxMAorICoKKyAqICAgICAgQSB2YWx1ZSBvZiAi MSIgaW5kaWNhdGVzIHRoYXQgdGhlIGJhY2tlbmQgY2FuIHByb2Nlc3MgQkxLSUZfT1BfRElTQ0FS RAorICogICAgICByZXF1ZXN0cyB3aXRoIHRoZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSBmbGFnIHNl dC4KKyAqCisgKiBpbmZvCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+IChiaXRt YXApCisgKgorICogICAgICBBIGNvbGxlY3Rpb24gb2YgYml0IGZsYWdzIGRlc2NyaWJpbmcgYXR0 cmlidXRlcyBvZiB0aGUgYmFja2luZworICogICAgICBkZXZpY2UuICBUaGUgVkRJU0tfKiBtYWNy b3MgZGVmaW5lIHRoZSBtZWFuaW5nIG9mIGVhY2ggYml0CisgKiAgICAgIGxvY2F0aW9uLgorICoK KyAqIHNlY3Rvci1zaXplCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgor ICogICAgICBUaGUgbG9naWNhbCBibG9jayBzaXplLCBpbiBieXRlcywgb2YgdGhlIHVuZGVybHlp bmcgc3RvcmFnZS4gVGhpcworICogICAgICBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIHdpdGggYSBt aW5pbXVtIHZhbHVlIG9mIDUxMi4KKyAqCisgKiAgICAgIE5PVEU6IEJlY2F1c2Ugb2YgaW1wbGVt ZW50YXRpb24gYnVncyBpbiBzb21lIGZyb250ZW5kcyB0aGlzIG11c3QgYmUKKyAqICAgICAgICAg ICAgc2V0IHRvIDUxMiwgdW5sZXNzIHRoZSBmcm9udGVuZCBhZHZlcnRpemVzIGEgbm9uLXplcm8g dmFsdWUKKyAqICAgICAgICAgICAgaW4gaXRzICJmZWF0dXJlLWxhcmdlLXNlY3Rvci1zaXplIiB4 ZW5idXMgbm9kZS4gKFNlZSBiZWxvdykuCisgKgorICogcGh5c2ljYWwtc2VjdG9yLXNpemUKKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqICAgICAgRGVmYXVsdCBWYWx1ZTog IDwic2VjdG9yLXNpemUiPgorICoKKyAqICAgICAgVGhlIHBoeXNpY2FsIGJsb2NrIHNpemUsIGlu IGJ5dGVzLCBvZiB0aGUgYmFja2VuZCBzdG9yYWdlLiBUaGlzCisgKiAgICAgIG11c3QgYmUgYW4g aW50ZWdlciBtdWx0aXBsZSBvZiAic2VjdG9yLXNpemUiLgorICoKKyAqIHNlY3RvcnMKKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDx1aW50NjRfdD4KKyAqCisgKiAgICAgIFRoZSBzaXplIG9mIHRo ZSBiYWNrZW5kIGRldmljZSwgZXhwcmVzc2VkIGluIHVuaXRzIG9mICJzZWN0b3Itc2l6ZSIuCisg KiAgICAgIFRoZSBwcm9kdWN0IG9mICJzZWN0b3Itc2l6ZSIgYW5kICJzZWN0b3JzIiBtdXN0IGFs c28gYmUgYW4gaW50ZWdlcgorICogICAgICBtdWx0aXBsZSBvZiAicGh5c2ljYWwtc2VjdG9yLXNp emUiLCBpZiB0aGF0IG5vZGUgaXMgcHJlc2VudC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBOb2RlcworICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1ZXN0 IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXZl bnQtY2hhbm5lbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAg ICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBldmVudCBjaGFubmVsIHVzZWQgdG8gc2lnbmFs IGFjdGl2aXR5CisgKiAgICAgIGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiByaW5nLXJlZgor ICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICogICAgICBOb3RlczogICAgICAg ICAgNgorICoKKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlz c2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCisgKiAgICAgIHRoZSBzb2xlIHBhZ2UgaW4gYSBz aW5nbGUgcGFnZSBzaXplZCByaW5nIGJ1ZmZlci4KKyAqCisgKiByaW5nLXJlZiV1CisgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKiAgICAgIE5vdGVzOiAgICAgICAgICA2Cisg KgorICogICAgICBGb3IgYSBmcm9udGVuZCBwcm92aWRpbmcgYSBtdWx0aS1wYWdlIHJpbmcsIGEg Im51bWJlciBvZiByaW5nIHBhZ2VzIgorICogICAgICBzaXplZCBsaXN0IG9mIG5vZGVzLCBlYWNo IGNvbnRhaW5pbmcgYSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nCisgKiAgICAgIHBlcm1p c3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcCB0aGUgcGFnZSBvZiB0aGUgcmluZyBsb2NhdGVk CisgKiAgICAgIGF0IHBhZ2UgaW5kZXggIiV1Ii4gIFBhZ2UgaW5kZXhlcyBhcmUgemVybyBiYXNl ZC4KKyAqCisgKiBwcm90b2NvbAorICogICAgICBWYWx1ZXM6ICAgICAgICAgc3RyaW5nIChYRU5f SU9fUFJPVE9fQUJJXyopCisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICBYRU5fSU9fUFJPVE9fQUJJ X05BVElWRQorICoKKyAqICAgICAgVGhlIG1hY2hpbmUgQUJJIHJ1bGVzIGdvdmVybmluZyB0aGUg Zm9ybWF0IG9mIGFsbCByaW5nIHJlcXVlc3QgYW5kCisgKiAgICAgIHJlc3BvbnNlIHN0cnVjdHVy ZXMuCisgKgorICogcmluZy1wYWdlLW9yZGVyCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dDMyX3Q+CisgKiAgICAgIERlZmF1bHQgVmFsdWU6ICAwCisgKiAgICAgIE1heGltdW0gVmFsdWU6 ICBNQVgoZmZzKG1heC1yaW5nLXBhZ2VzKSAtIDEsIG1heC1yaW5nLXBhZ2Utb3JkZXIpCisgKiAg ICAgIE5vdGVzOiAgICAgICAgICAxLCAzCisgKgorICogICAgICBUaGUgc2l6ZSBvZiB0aGUgZnJv bnRlbmQgYWxsb2NhdGVkIHJlcXVlc3QgcmluZyBidWZmZXIgaW4gdW5pdHMKKyAqICAgICAgb2Yg bGIobWFjaGluZSBwYWdlcykuIChlLmcuIDAgPT0gMSBwYWdlLCAxID0gMiBwYWdlcywgMiA9PSA0 IHBhZ2VzLAorICogICAgICBldGMuKS4KKyAqCisgKiBudW0tcmluZy1wYWdlcworICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICogICAgICBEZWZhdWx0IFZhbHVlOiAgMQorICog ICAgICBNYXhpbXVtIFZhbHVlOiAgTUFYKG1heC1yaW5nLXBhZ2VzLCgweDEgPDwgbWF4LXJpbmct cGFnZS1vcmRlcikpCisgKiAgICAgIE5vdGVzOiAgICAgICAgICBERVBSRUNBVEVELCAyLCAzCisg KgorICogICAgICBUaGUgc2l6ZSBvZiB0aGUgZnJvbnRlbmQgYWxsb2NhdGVkIHJlcXVlc3Qgcmlu ZyBidWZmZXIgaW4gdW5pdHMgb2YKKyAqICAgICAgbWFjaGluZSBwYWdlcy4gIFRoZSB2YWx1ZSBt dXN0IGJlIGEgcG93ZXIgb2YgMi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBGZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBm ZWF0dXJlLXBlcnNpc3RlbnQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDAvMSAoYm9vbGVhbikK KyAqICAgICAgRGVmYXVsdCBWYWx1ZTogIDAKKyAqICAgICAgTm90ZXM6IDcsIDgsIDkKKyAqCisg KiAgICAgIEEgdmFsdWUgb2YgIjEiIGluZGljYXRlcyB0aGF0IHRoZSBmcm9udGVuZCB3aWxsIHJl dXNlIHRoZSBzYW1lIGdyYW50cworICogICAgICBmb3IgYWxsIHRyYW5zYWN0aW9ucywgYWxsb3dp bmcgdGhlIGJhY2tlbmQgdG8gbWFwIHRoZW0gd2l0aCB3cml0ZQorICogICAgICBhY2Nlc3MgKGV2 ZW4gd2hlbiBpdCBzaG91bGQgYmUgcmVhZC1vbmx5KS4gSWYgdGhlIGZyb250ZW5kIGhpdHMgdGhl CisgKiAgICAgIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgcGVyc2lzdGVudGx5IG1hcHBlZCBn cmFudHMsIGl0IGNhbiBmYWxsYmFjaworICogICAgICB0byBub24gcGVyc2lzdGVudCBtb2RlLiBU aGlzIHdpbGwgY2F1c2UgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiwKKyAqICAgICAgc2luY2Ug dGhlIHRoZSBiYWNrZW5kIGRyaXZlciB3aWxsIHN0aWxsIHRyeSB0byBtYXAgdGhvc2UgZ3JhbnRz CisgKiAgICAgIHBlcnNpc3RlbnRseS4gU2luY2UgdGhlIHBlcnNpc3RlbnQgZ3JhbnRzIHByb3Rv Y29sIGlzIGNvbXBhdGlibGUgd2l0aAorICogICAgICB0aGUgcHJldmlvdXMgcHJvdG9jb2wsIGEg ZnJvbnRlbmQgZHJpdmVyIGNhbiBjaG9vc2UgdG8gd29yayBpbgorICogICAgICBwZXJzaXN0ZW50 IG1vZGUgZXZlbiB3aGVuIHRoZSBiYWNrZW5kIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKyAqCisgKiAg ICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZyb250ZW5kIGRyaXZlciBzdG9yZXMgdGhl IHBlcnNpc3RlbnRseQorICogICAgICBtYXBwZWQgZ3JhbnRzIGluIGEgTElGTyBxdWV1ZSwgc28g YSBzdWJzZXQgb2YgYWxsIHBlcnNpc3RlbnRseSBtYXBwZWQKKyAqICAgICAgZ3JhbnRzIGdldHMg dXNlZCBjb21tb25seS4gVGhpcyBpcyBkb25lIGluIGNhc2UgdGhlIGJhY2tlbmQgZHJpdmVyCisg KiAgICAgIGRlY2lkZXMgdG8gbGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBlcnNpc3RlbnRs eSBtYXBwZWQgZ3JhbnRzCisgKiAgICAgIHRvIGEgdmFsdWUgbGVzcyB0aGFuIFJJTkdfU0laRSAq IEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVC4KKyAqCisgKiBmZWF0dXJlLWxhcmdlLXNl Y3Rvci1zaXplCisgKiAgICAgIFZhbHVlczogICAgICAgICAwLzEgKGJvb2xlYW4pCisgKiAgICAg IERlZmF1bHQgVmFsdWU6ICAwCisgKgorICogICAgICBBIHZhbHVlIG9mICIxIiBpbmRpY2F0ZXMg dGhhdCB0aGUgZnJvbnRlbmQgd2lsbCBjb3JyZWN0bHkgc3VwcGx5IGFuZAorICogICAgICBpbnRl cnByZXQgYWxsIHNlY3Rvci1iYXNlZCBxdWFudGl0aWVzIGluIHRlcm1zIG9mIHRoZSAic2VjdG9y LXNpemUiCisgKiAgICAgIHZhbHVlIHN1cHBsaWVkIGluIHRoZSBiYWNrZW5kIGluZm8sIHdoYXRl dmVyIHRoYXQgbWF5IGJlIHNldCB0by4KKyAqICAgICAgSWYgdGhpcyBub2RlIGlzIG5vdCBwcmVz ZW50IG9yIGl0cyB2YWx1ZSBpcyAiMCIgdGhlbiBpdCBpcyBhc3N1bWVkCisgKiAgICAgIHRoYXQg dGhlIGZyb250ZW5kIHJlcXVpcmVzIHRoYXQgdGhlIGxvZ2ljYWwgYmxvY2sgc2l6ZSBpcyA1MTIg YXMgaXQKKyAqICAgICAgaXMgaGFyZGNvZGVkICh3aGljaCBpcyB0aGUgY2FzZSBpbiBzb21lIGZy b250ZW5kIGltcGxlbWVudGF0aW9ucykuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IFZpcnR1YWwgRGV2aWNlIFByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIGRldmljZS10eXBlCisgKiAgICAgIFZhbHVlczogICAgICAgICAiZGlzayIsICJjZHJvbSIs ICJmbG9wcHkiLCBldGMuCisgKgorICogdmlydHVhbC1kZXZpY2UKKyAqICAgICAgVmFsdWVzOiAg ICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIEEgdmFsdWUgaW5kaWNhdGluZyB0aGUgcGh5 c2ljYWwgZGV2aWNlIHRvIHZpcnR1YWxpemUgd2l0aGluIHRoZQorICogICAgICBmcm9udGVuZCdz IGRvbWFpbi4gIChlLmcuICJUaGUgZmlyc3QgQVRBIGRpc2siLCAiVGhlIHRoaXJkIFNDU0kKKyAq ICAgICAgZGlzayIsIGV0Yy4pCisgKgorICogICAgICBTZWUgZG9jcy9taXNjL3ZiZC1pbnRlcmZh Y2UudHh0IGZvciBkZXRhaWxzIG9uIHRoZSBmb3JtYXQgb2YgdGhpcworICogICAgICB2YWx1ZS4K KyAqCisgKiBOb3RlcworICogLS0tLS0KKyAqICgxKSBNdWx0aS1wYWdlIHJpbmcgYnVmZmVyIHNj aGVtZSBmaXJzdCBkZXZlbG9wZWQgaW4gdGhlIENpdHJpeCBYZW5TZXJ2ZXIKKyAqICAgICBQViBk cml2ZXJzLgorICogKDIpIE11bHRpLXBhZ2UgcmluZyBidWZmZXIgc2NoZW1lIGZpcnN0IHVzZWQg aW4gc29tZSBSZWRIYXQgZGlzdHJpYnV0aW9ucworICogICAgIGluY2x1ZGluZyBhIGRpc3RyaWJ1 dGlvbiBkZXBsb3llZCBvbiBjZXJ0YWluIG5vZGVzIG9mIHRoZSBBbWF6b24KKyAqICAgICBFQzIg Y2x1c3Rlci4KKyAqICgzKSBTdXBwb3J0IGZvciBtdWx0aS1wYWdlIHJpbmcgYnVmZmVycyB3YXMg aW1wbGVtZW50ZWQgaW5kZXBlbmRlbnRseSwKKyAqICAgICBpbiBzbGlnaHRseSBkaWZmZXJlbnQg Zm9ybXMsIGJ5IGJvdGggQ2l0cml4IGFuZCBSZWRIYXQvQW1hem9uLgorICogICAgIEZvciBmdWxs IGludGVyb3BlcmFiaWxpdHksIGJsb2NrIGZyb250IGFuZCBiYWNrZW5kcyBzaG91bGQgcHVibGlz aAorICogICAgIGlkZW50aWNhbCByaW5nIHBhcmFtZXRlcnMsIGFkanVzdGVkIGZvciB1bml0IGRp ZmZlcmVuY2VzLCB0byB0aGUKKyAqICAgICBYZW5TdG9yZSBub2RlcyB1c2VkIGluIGJvdGggc2No ZW1lcy4KKyAqICg0KSBEZXZpY2VzIHRoYXQgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkg bWF5IGludGVybmFsbHkgYWxsb2NhdGUgc3BhY2UKKyAqICAgICAoZGlzY2FyZGFibGUgZXh0ZW50 cykgaW4gdW5pdHMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gdGhlIGV4cG9ydGVkIGxvZ2ljYWwKKyAq ICAgICBibG9jayBzaXplLiBJZiB0aGUgYmFja2luZyBkZXZpY2UgaGFzIHN1Y2ggZGlzY2FyZGFi bGUgZXh0ZW50cyB0aGUKKyAqICAgICBiYWNrZW5kIHNob3VsZCBwcm92aWRlIGJvdGggZGlzY2Fy ZC1ncmFudWxhcml0eSBhbmQgZGlzY2FyZC1hbGlnbm1lbnQuCisgKiAgICAgUHJvdmlkaW5nIGp1 c3Qgb25lIG9mIHRoZSB0d28gbWF5IGJlIGNvbnNpZGVyZWQgYW4gZXJyb3IgYnkgdGhlIGZyb250 ZW5kLgorICogICAgIEJhY2tlbmRzIHN1cHBvcnRpbmcgZGlzY2FyZCBzaG91bGQgaW5jbHVkZSBk aXNjYXJkLWdyYW51bGFyaXR5IGFuZAorICogICAgIGRpc2NhcmQtYWxpZ25tZW50IGV2ZW4gaWYg aXQgc3VwcG9ydHMgZGlzY2FyZGluZyBpbmRpdmlkdWFsIHNlY3RvcnMuCisgKiAgICAgRnJvbnRl bmRzIHNob3VsZCBhc3N1bWUgZGlzY2FyZC1hbGlnbm1lbnQgPT0gMCBhbmQgZGlzY2FyZC1ncmFu dWxhcml0eQorICogICAgID09IHNlY3RvciBzaXplIGlmIHRoZXNlIGtleXMgYXJlIG1pc3Npbmcu CisgKiAoNSkgVGhlIGRpc2NhcmQtYWxpZ25tZW50IHBhcmFtZXRlciBhbGxvd3MgYSBwaHlzaWNh bCBkZXZpY2UgdG8gYmUKKyAqICAgICBwYXJ0aXRpb25lZCBpbnRvIHZpcnR1YWwgZGV2aWNlcyB0 aGF0IGRvIG5vdCBuZWNlc3NhcmlseSBiZWdpbiBvcgorICogICAgIGVuZCBvbiBhIGRpc2NhcmRh YmxlIGV4dGVudCBib3VuZGFyeS4KKyAqICg2KSBXaGVuIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUg cGFnZSBhbGxvY2F0ZWQgdG8gdGhlIHJlcXVlc3QgcmluZywKKyAqICAgICAncmluZy1yZWYnIGlz IHVzZWQgdG8gY29tbXVuaWNhdGUgdGhlIGdyYW50IHJlZmVyZW5jZSBmb3IgdGhpcworICogICAg IHBhZ2UgdG8gdGhlIGJhY2tlbmQuICBXaGVuIHVzaW5nIGEgbXVsdGktcGFnZSByaW5nLCB0aGUg J3JpbmctcmVmJworICogICAgIG5vZGUgaXMgbm90IGNyZWF0ZWQuICBJbnN0ZWFkICdyaW5nLXJl ZjAnIC0gJ3JpbmctcmVmTicgYXJlIHVzZWQuCisgKiAoNykgV2hlbiB1c2luZyBwZXJzaXN0ZW50 IGdyYW50cyBkYXRhIGhhcyB0byBiZSBjb3BpZWQgZnJvbS90byB0aGUgcGFnZQorICogICAgIHdo ZXJlIHRoZSBncmFudCBpcyBjdXJyZW50bHkgbWFwcGVkLiBUaGUgb3ZlcmhlYWQgb2YgZG9pbmcg dGhpcyBjb3B5CisgKiAgICAgaG93ZXZlciBkb2Vzbid0IHN1cHByZXNzIHRoZSBzcGVlZCBpbXBy b3ZlbWVudCBvZiBub3QgaGF2aW5nIHRvIHVubWFwCisgKiAgICAgdGhlIGdyYW50cy4KKyAqICg4 KSBUaGUgZnJvbnRlbmQgZHJpdmVyIGhhcyB0byBhbGxvdyB0aGUgYmFja2VuZCBkcml2ZXIgdG8g bWFwIGFsbCBncmFudHMKKyAqICAgICB3aXRoIHdyaXRlIGFjY2VzcywgZXZlbiB3aGVuIHRoZXkg c2hvdWxkIGJlIG1hcHBlZCByZWFkLW9ubHksIHNpbmNlCisgKiAgICAgZnVydGhlciByZXF1ZXN0 cyBtYXkgcmV1c2UgdGhlc2UgZ3JhbnRzIGFuZCByZXF1aXJlIHdyaXRlIHBlcm1pc3Npb25zLgor ICogKDkpIExpbnV4IGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgaGF2ZSBhIGxpbWl0IG9uIHRoZSBt YXhpbXVtIG51bWJlciBvZgorICogICAgIGdyYW50cyB0aGF0IGNhbiBiZSBwZXJzaXN0ZW50bHkg bWFwcGVkIGluIHRoZSBmcm9udGVuZCBkcml2ZXIsIGJ1dAorICogICAgIGR1ZSB0byB0aGUgZnJv bnRlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9uIGl0IHNob3VsZCBuZXZlciBiZSBiaWdnZXIKKyAq ICAgICB0aGFuIFJJTkdfU0laRSAqIEJMS0lGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVTVC4KKyAq KDEwKSBUaGUgZGlzY2FyZC1zZWN1cmUgcHJvcGVydHkgbWF5IGJlIHByZXNlbnQgYW5kIHdpbGwg YmUgc2V0IHRvIDEgaWYgdGhlCisgKiAgICAgYmFja2luZyBkZXZpY2Ugc3VwcG9ydHMgc2VjdXJl IGRpc2NhcmQuCisgKigxMSkgT25seSB1c2VkIGJ5IExpbnV4IGFuZCBOZXRCU0QuCisgKi8KKwor LyoKKyAqIE11bHRpcGxlIGhhcmR3YXJlIHF1ZXVlcy9yaW5nczoKKyAqIElmIHN1cHBvcnRlZCwg dGhlIGJhY2tlbmQgd2lsbCB3cml0ZSB0aGUga2V5ICJtdWx0aS1xdWV1ZS1tYXgtcXVldWVzIiB0 bworICogdGhlIGRpcmVjdG9yeSBmb3IgdGhhdCB2YmQsIGFuZCBzZXQgaXRzIHZhbHVlIHRvIHRo ZSBtYXhpbXVtIHN1cHBvcnRlZAorICogbnVtYmVyIG9mIHF1ZXVlcy4KKyAqIEZyb250ZW5kcyB0 aGF0IGFyZSBhd2FyZSBvZiB0aGlzIGZlYXR1cmUgYW5kIHdpc2ggdG8gdXNlIGl0IGNhbiB3cml0 ZSB0aGUKKyAqIGtleSAibXVsdGktcXVldWUtbnVtLXF1ZXVlcyIgd2l0aCB0aGUgbnVtYmVyIHRo ZXkgd2lzaCB0byB1c2UsIHdoaWNoIG11c3QgYmUKKyAqIGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQg bm8gbW9yZSB0aGFuIHRoZSB2YWx1ZSByZXBvcnRlZCBieSB0aGUgYmFja2VuZCBpbgorICogIm11 bHRpLXF1ZXVlLW1heC1xdWV1ZXMiLgorICoKKyAqIEZvciBmcm9udGVuZHMgcmVxdWVzdGluZyBq dXN0IG9uZSBxdWV1ZSwgdGhlIHVzdWFsIGV2ZW50LWNoYW5uZWwgYW5kCisgKiByaW5nLXJlZiBr ZXlzIGFyZSB3cml0dGVuIGFzIGJlZm9yZSwgc2ltcGxpZnlpbmcgdGhlIGJhY2tlbmQgcHJvY2Vz c2luZworICogdG8gYXZvaWQgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBhIGZyb250ZW5kIHRoYXQg ZG9lc24ndCB1bmRlcnN0YW5kIHRoZQorICogbXVsdGktcXVldWUgZmVhdHVyZSwgYW5kIG9uZSB0 aGF0IGRvZXMsIGJ1dCByZXF1ZXN0ZWQgb25seSBvbmUgcXVldWUuCisgKgorICogRnJvbnRlbmRz IHJlcXVlc3RpbmcgdHdvIG9yIG1vcmUgcXVldWVzIG11c3Qgbm90IHdyaXRlIHRoZSB0b3BsZXZl bAorICogZXZlbnQtY2hhbm5lbCBhbmQgcmluZy1yZWYga2V5cywgaW5zdGVhZCB3cml0aW5nIHRo b3NlIGtleXMgdW5kZXIgc3ViLWtleXMKKyAqIGhhdmluZyB0aGUgbmFtZSAicXVldWUtTiIgd2hl cmUgTiBpcyB0aGUgaW50ZWdlciBJRCBvZiB0aGUgcXVldWUvcmluZyBmb3IKKyAqIHdoaWNoIHRo b3NlIGtleXMgYmVsb25nLiBRdWV1ZXMgYXJlIGluZGV4ZWQgZnJvbSB6ZXJvLgorICogRm9yIGV4 YW1wbGUsIGEgZnJvbnRlbmQgd2l0aCB0d28gcXVldWVzIG11c3Qgd3JpdGUgdGhlIGZvbGxvd2lu ZyBzZXQgb2YKKyAqIHF1ZXVlLXJlbGF0ZWQga2V5czoKKyAqCisgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZiZC8wL211bHRpLXF1ZXVlLW51bS1xdWV1ZXMgPSAiMiIKKyAqIC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMCA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZiZC8wL3F1ZXVlLTAvcmluZy1yZWYgPSAiPHJpbmctcmVmIzA+IgorICogL2xvY2FsL2RvbWFp bi8xL2RldmljZS92YmQvMC9xdWV1ZS0wL2V2ZW50LWNoYW5uZWwgPSAiPGV2dGNobiMwPiIKKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMSA9ICIiCisgKiAvbG9jYWwvZG9t YWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEvcmluZy1yZWYgPSAiPHJpbmctcmVmIzE+IgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvMC9xdWV1ZS0xL2V2ZW50LWNoYW5uZWwgPSAiPGV2 dGNobiMxPiIKKyAqCisgKiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBtdWx0aXBsZSBxdWV1 ZXMvcmluZ3MgdG9nZXRoZXIgd2l0aAorICogZmVhdHVyZSBtdWx0aS1wYWdlIHJpbmcgYnVmZmVy LgorICogRm9yIGV4YW1wbGUsIGEgZnJvbnRlbmQgcmVxdWVzdHMgdHdvIHF1ZXVlcy9yaW5ncyBh bmQgdGhlIHNpemUgb2YgZWFjaCByaW5nCisgKiBidWZmZXIgaXMgdHdvIHBhZ2VzIG11c3Qgd3Jp dGUgdGhlIGZvbGxvd2luZyBzZXQgb2YgcmVsYXRlZCBrZXlzOgorICoKKyAqIC9sb2NhbC9kb21h aW4vMS9kZXZpY2UvdmJkLzAvbXVsdGktcXVldWUtbnVtLXF1ZXVlcyA9ICIyIgorICogL2xvY2Fs L2RvbWFpbi8xL2RldmljZS92YmQvMC9yaW5nLXBhZ2Utb3JkZXIgPSAiMSIKKyAqIC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMCA9ICIiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZiZC8wL3F1ZXVlLTAvcmluZy1yZWYwID0gIjxyaW5nLXJlZiMwPiIKKyAqIC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMC9yaW5nLXJlZjEgPSAiPHJpbmctcmVmIzE+Igor ICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvMC9xdWV1ZS0wL2V2ZW50LWNoYW5uZWwgPSAi PGV2dGNobiMwPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMSA9ICIi CisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZiZC8wL3F1ZXVlLTEvcmluZy1yZWYwID0gIjxy aW5nLXJlZiMyPiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmJkLzAvcXVldWUtMS9yaW5n LXJlZjEgPSAiPHJpbmctcmVmIzM+IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92YmQvMC9x dWV1ZS0xL2V2ZW50LWNoYW5uZWwgPSAiPGV2dGNobiMxPiIKKyAqCisgKi8KKworLyoKKyAqIFNU QVRFIERJQUdSQU1TCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RhcnR1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBm cm9udCBhbmQgYmFjayBub2RlcyB3aXRoIHN0YXRlIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLgor ICoKKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrCisgKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorICogWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgICAgICAgICAgICAgIFhl bmJ1c1N0YXRlSW5pdGlhbGlzaW5nCisgKiAgbyBRdWVyeSB2aXJ0dWFsIGRldmljZSAgICAgICAg ICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgaWRlbnRpZmljYXRpb24KKyAqICAgIHByb3Bl cnRpZXMuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLgorICogIG8gU2V0dXAgT1MgZGV2 aWNlIGluc3RhbmNlLiAgICAgICAgICBvIE9wZW4gYW5kIHZhbGlkYXRlIGJhY2tlbmQgZGV2aWNl LgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFB1Ymxpc2ggYmFj a2VuZCBmZWF0dXJlcyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRXYWl0CisgKgorICogbyBRdWVyeSBiYWNr ZW5kIGZlYXR1cmVzIGFuZAorICogICB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqIG8gQWxsb2Nh dGUgYW5kIGluaXRpYWxpemUgdGhlCisgKiAgIHJlcXVlc3QgcmluZy4KKyAqIG8gUHVibGlzaCB0 cmFuc3BvcnQgcGFyYW1ldGVycworICogICB0aGF0IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmluZwor ICogICB0aGlzIGNvbm5lY3Rpb24uCisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAg IHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2VkCisgKgorICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGZyb250ZW5kIHRy YW5zcG9ydCBwYXJhbWV0ZXJzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvIENvbm5lY3QgdG8gdGhlIHJlcXVlc3QgcmluZyBhbmQKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudCBjaGFubmVsLgorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvIFB1Ymxpc2ggYmFja2VuZCBkZXZpY2UgcHJvcGVy dGllcy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5i dXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICBvIFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIHByb3BlcnRp ZXMuCisgKiAgbyBGaW5hbGl6ZSBPUyB2aXJ0dWFsIGRldmljZQorICogICAgaW5zdGFuY2UuCisg KiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICBWCisg KiBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqIE5vdGU6IERyaXZlcnMgdGhhdCBkbyBub3Qg c3VwcG9ydCBhbnkgb3B0aW9uYWwgZmVhdHVyZXMsIG9yIHRoZSBuZWdvdGlhdGlvbgorICogICAg ICAgb2YgdHJhbnNwb3J0IHBhcmFtZXRlcnMsIGNhbiBza2lwIGNlcnRhaW4gc3RhdGVzIGluIHRo ZSBzdGF0ZSBtYWNoaW5lOgorICoKKyAqICAgICAgIG8gQSBmcm9udGVuZCBtYXkgdHJhbnNpdGlv biB0byBYZW5idXNTdGF0ZUluaXRpYWxpc2VkIHdpdGhvdXQKKyAqICAgICAgICAgd2FpdGluZyBm b3IgdGhlIGJhY2tlbmQgdG8gZW50ZXIgWGVuYnVzU3RhdGVJbml0V2FpdC4gIEluIHRoaXMKKyAq ICAgICAgICAgY2FzZSwgZGVmYXVsdCB0cmFuc3BvcnQgcGFyYW1ldGVycyBhcmUgaW4gZWZmZWN0 IGFuZCBhbnkKKyAqICAgICAgICAgdHJhbnNwb3J0IHBhcmFtZXRlcnMgcHVibGlzaGVkIGJ5IHRo ZSBmcm9udGVuZCBtdXN0IGNvbnRhaW4KKyAqICAgICAgICAgdGhlaXIgZGVmYXVsdCB2YWx1ZXMu CisgKgorICogICAgICAgbyBBIGJhY2tlbmQgbWF5IHRyYW5zaXRpb24gdG8gWGVuYnVzU3RhdGVJ bml0aWFsaXNlZCwgYnlwYXNzaW5nCisgKiAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQsIHdp dGhvdXQgd2FpdGluZyBmb3IgdGhlIGZyb250ZW5kIHRvIGZpcnN0CisgKiAgICAgICAgIGVudGVy IHRoZSBYZW5idXNTdGF0ZUluaXRpYWxpc2VkIHN0YXRlLiAgSW4gdGhpcyBjYXNlLCBkZWZhdWx0 CisgKiAgICAgICAgIHRyYW5zcG9ydCBwYXJhbWV0ZXJzIGFyZSBpbiBlZmZlY3QgYW5kIGFueSB0 cmFuc3BvcnQgcGFyYW1ldGVycworICogICAgICAgICBwdWJsaXNoZWQgYnkgdGhlIGJhY2tlbmQg bXVzdCBjb250YWluIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgorICoKKyAqICAgICAgIERyaXZlcnMg dGhhdCBzdXBwb3J0IG9wdGlvbmFsIGZlYXR1cmVzIGFuZC9vciB0cmFuc3BvcnQgcGFyYW1ldGVy CisgKiAgICAgICBuZWdvdGlhdGlvbiBtdXN0IHRvbGVyYXRlIHRoZXNlIGFkZGl0aW9uYWwgc3Rh dGUgdHJhbnNpdGlvbiBwYXRocy4KKyAqICAgICAgIEluIGdlbmVyYWwgdGhpcyBtZWFucyBwZXJm b3JtaW5nIHRoZSB3b3JrIG9mIGFueSBza2lwcGVkIHN0YXRlCisgKiAgICAgICB0cmFuc2l0aW9u LCBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwZXJmb3JtZWQsIGluIGFkZGl0aW9uIHRvIHRo ZQorICogICAgICAgd29yayBhc3NvY2lhdGVkIHdpdGggZW50cnkgaW50byB0aGUgY3VycmVudCBz dGF0ZS4KKyAqLworCisvKgorICogUkVRVUVTVCBDT0RFUy4KKyAqLworI2RlZmluZSBCTEtJRl9P UF9SRUFEICAgICAgICAgICAgICAwCisjZGVmaW5lIEJMS0lGX09QX1dSSVRFICAgICAgICAgICAg IDEKKy8qCisgKiBBbGwgd3JpdGVzIGlzc3VlZCBwcmlvciB0byBhIHJlcXVlc3Qgd2l0aCB0aGUg QkxLSUZfT1BfV1JJVEVfQkFSUklFUgorICogb3BlcmF0aW9uIGNvZGUgKCJiYXJyaWVyIHJlcXVl c3QiKSBtdXN0IGJlIGNvbXBsZXRlZCBwcmlvciB0byB0aGUKKyAqIGV4ZWN1dGlvbiBvZiB0aGUg YmFycmllciByZXF1ZXN0LiAgQWxsIHdyaXRlcyBpc3N1ZWQgYWZ0ZXIgdGhlIGJhcnJpZXIKKyAq IHJlcXVlc3QgbXVzdCBub3QgZXhlY3V0ZSB1bnRpbCBhZnRlciB0aGUgY29tcGxldGlvbiBvZiB0 aGUgYmFycmllciByZXF1ZXN0LgorICoKKyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWJhcnJp ZXIiIFhlbkJ1cyBub2RlIGRvY3VtZW50YXRpb24gYWJvdmUuCisgKi8KKyNkZWZpbmUgQkxLSUZf T1BfV1JJVEVfQkFSUklFUiAgICAgMgorLyoKKyAqIENvbW1pdCBhbnkgdW5jb21taXR0ZWQgY29u dGVudHMgb2YgdGhlIGJhY2tpbmcgZGV2aWNlJ3Mgdm9sYXRpbGUgY2FjaGUKKyAqIHRvIHN0YWJs ZSBzdG9yYWdlLgorICoKKyAqIE9wdGlvbmFsLiAgU2VlICJmZWF0dXJlLWZsdXNoLWNhY2hlIiBY ZW5CdXMgbm9kZSBkb2N1bWVudGF0aW9uIGFib3ZlLgorICovCisjZGVmaW5lIEJMS0lGX09QX0ZM VVNIX0RJU0tDQUNIRSAgIDMKKy8qCisgKiBVc2VkIGluIFNMRVMgc291cmNlcyBmb3IgZGV2aWNl IHNwZWNpZmljIGNvbW1hbmQgcGFja2V0CisgKiBjb250YWluZWQgd2l0aGluIHRoZSByZXF1ZXN0 LiBSZXNlcnZlZCBmb3IgdGhhdCBwdXJwb3NlLgorICovCisjZGVmaW5lIEJMS0lGX09QX1JFU0VS VkVEXzEgICAgICAgIDQKKy8qCisgKiBJbmRpY2F0ZSB0byB0aGUgYmFja2VuZCBkZXZpY2UgdGhh dCBhIHJlZ2lvbiBvZiBzdG9yYWdlIGlzIG5vIGxvbmdlciBpbgorICogdXNlLCBhbmQgbWF5IGJl IGRpc2NhcmRlZCBhdCBhbnkgdGltZSB3aXRob3V0IGltcGFjdCB0byB0aGUgY2xpZW50LiAgSWYK KyAqIHRoZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSBmbGFnIGlzIHNldCBvbiB0aGUgcmVxdWVzdCwg YWxsIGNvcGllcyBvZiB0aGUKKyAqIGRpc2NhcmRlZCByZWdpb24gb24gdGhlIGRldmljZSBtdXN0 IGJlIHJlbmRlcmVkIHVucmVjb3ZlcmFibGUgYmVmb3JlIHRoZQorICogY29tbWFuZCByZXR1cm5z LgorICoKKyAqIFRoaXMgb3BlcmF0aW9uIGlzIGFuYWxvZ291cyB0byBwZXJmb3JtaW5nIGEgdHJp bSAoQVRBKSBvciB1bmFtcCAoU0NTSSksCisgKiBjb21tYW5kIG9uIGEgbmF0aXZlIGRldmljZS4K KyAqCisgKiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRyaW0vdW5tYXAgb3BlcmF0aW9ucyBjYW4g YmUgZm91bmQgYXQ6CisgKiBodHRwOi8vdDEzLm9yZy9Eb2N1bWVudHMvVXBsb2FkZWREb2N1bWVu dHMvZG9jczIwMDgvCisgKiAgICAgZTA3MTU0cjYtRGF0YV9TZXRfTWFuYWdlbWVudF9Qcm9wb3Nh bF9mb3JfQVRBLUFDUzIuZG9jCisgKiBodHRwOi8vd3d3LnNlYWdhdGUuY29tL3N0YXRpY2ZpbGVz L3N1cHBvcnQvZGlzYy9tYW51YWxzLworICogICAgIEludGVyZmFjZSUyMG1hbnVhbHMvMTAwMjkz MDY4Yy5wZGYKKyAqCisgKiBPcHRpb25hbC4gIFNlZSAiZmVhdHVyZS1kaXNjYXJkIiwgImRpc2Nh cmQtYWxpZ25tZW50IiwKKyAqICJkaXNjYXJkLWdyYW51bGFyaXR5IiwgYW5kICJkaXNjYXJkLXNl Y3VyZSIgaW4gdGhlIFhlbkJ1cyBub2RlCisgKiBkb2N1bWVudGF0aW9uIGFib3ZlLgorICovCisj ZGVmaW5lIEJMS0lGX09QX0RJU0NBUkQgICAgICAgICAgIDUKKworLyoKKyAqIFJlY29nbml6ZWQg aWYgImZlYXR1cmUtbWF4LWluZGlyZWN0LXNlZ21lbnRzIiBpbiBwcmVzZW50IGluIHRoZSBiYWNr ZW5kCisgKiB4ZW5idXMgaW5mby4gVGhlICJmZWF0dXJlLW1heC1pbmRpcmVjdC1zZWdtZW50cyIg bm9kZSBjb250YWlucyB0aGUgbWF4aW11bQorICogbnVtYmVyIG9mIHNlZ21lbnRzIGFsbG93ZWQg YnkgdGhlIGJhY2tlbmQgcGVyIHJlcXVlc3QuIElmIHRoZSBub2RlIGlzCisgKiBwcmVzZW50LCB0 aGUgZnJvbnRlbmQgbWlnaHQgdXNlIGJsa2lmX3JlcXVlc3RfaW5kaXJlY3Qgc3RydWN0cyBpbiBv cmRlciB0bworICogaXNzdWUgcmVxdWVzdHMgd2l0aCBtb3JlIHRoYW4gQkxLSUZfTUFYX1NFR01F TlRTX1BFUl9SRVFVRVNUICgxMSkuIFRoZQorICogbWF4aW11bSBudW1iZXIgb2YgaW5kaXJlY3Qg c2VnbWVudHMgaXMgZml4ZWQgYnkgdGhlIGJhY2tlbmQsIGJ1dCB0aGUKKyAqIGZyb250ZW5kIGNh biBpc3N1ZSByZXF1ZXN0cyB3aXRoIGFueSBudW1iZXIgb2YgaW5kaXJlY3Qgc2VnbWVudHMgYXMg bG9uZyBhcworICogaXQncyBsZXNzIHRoYW4gdGhlIG51bWJlciBwcm92aWRlZCBieSB0aGUgYmFj a2VuZC4gVGhlIGluZGlyZWN0X2dyZWZzIGZpZWxkCisgKiBpbiBibGtpZl9yZXF1ZXN0X2luZGly ZWN0IHNob3VsZCBiZSBmaWxsZWQgYnkgdGhlIGZyb250ZW5kIHdpdGggdGhlCisgKiBncmFudCBy ZWZlcmVuY2VzIG9mIHRoZSBwYWdlcyB0aGF0IGFyZSBob2xkaW5nIHRoZSBpbmRpcmVjdCBzZWdt ZW50cy4KKyAqIFRoZXNlIHBhZ2VzIGFyZSBmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiBibGtpZl9y ZXF1ZXN0X3NlZ21lbnQgdGhhdCBob2xkIHRoZQorICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNl Z21lbnRzLiBUaGUgbnVtYmVyIG9mIGluZGlyZWN0IHBhZ2VzIHRvIHVzZSBpcworICogZGV0ZXJt aW5lZCBieSB0aGUgbnVtYmVyIG9mIHNlZ21lbnRzIGFuIGluZGlyZWN0IHJlcXVlc3QgY29udGFp bnMuIEV2ZXJ5CisgKiBpbmRpcmVjdCBwYWdlIGNhbiBjb250YWluIGEgbWF4aW11bSBvZgorICog KFBBR0VfU0laRSAvIHNpemVvZihzdHJ1Y3QgYmxraWZfcmVxdWVzdF9zZWdtZW50KSkgc2VnbWVu dHMsIHNvIHRvCisgKiBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBpbmRpcmVjdCBwYWdlcyB0byB1 c2Ugd2UgaGF2ZSB0byBkbworICogY2VpbChpbmRpcmVjdF9zZWdtZW50cyAvIChQQUdFX1NJWkUg LyBzaXplb2Yoc3RydWN0IGJsa2lmX3JlcXVlc3Rfc2VnbWVudCkpKS4KKyAqCisgKiBJZiBhIGJh Y2tlbmQgZG9lcyBub3QgcmVjb2duaXplIEJMS0lGX09QX0lORElSRUNULCBpdCBzaG91bGQgKm5v dCoKKyAqIGNyZWF0ZSB0aGUgImZlYXR1cmUtbWF4LWluZGlyZWN0LXNlZ21lbnRzIiBub2RlIQor ICovCisjZGVmaW5lIEJMS0lGX09QX0lORElSRUNUICAgICAgICAgIDYKKworLyoKKyAqIE1heGlt dW0gc2NhdHRlci9nYXRoZXIgc2VnbWVudHMgcGVyIHJlcXVlc3QuCisgKiBUaGlzIGlzIGNhcmVm dWxseSBjaG9zZW4gc28gdGhhdCBzaXplb2YoYmxraWZfcmluZ190KSA8PSBQQUdFX1NJWkUuCisg KiBOQi4gVGhpcyBjb3VsZCBiZSAxMiBpZiB0aGUgcmluZyBpbmRleGVzIHdlcmVuJ3Qgc3RvcmVk IGluIHRoZSBzYW1lIHBhZ2UuCisgKi8KKyNkZWZpbmUgQkxLSUZfTUFYX1NFR01FTlRTX1BFUl9S RVFVRVNUIDExCisKKy8qCisgKiBNYXhpbXVtIG51bWJlciBvZiBpbmRpcmVjdCBwYWdlcyB0byB1 c2UgcGVyIHJlcXVlc3QuCisgKi8KKyNkZWZpbmUgQkxLSUZfTUFYX0lORElSRUNUX1BBR0VTX1BF Ul9SRVFVRVNUIDgKKworLyoKKyAqIE5CLiAnZmlyc3Rfc2VjdCcgYW5kICdsYXN0X3NlY3QnIGlu IGJsa2lmX3JlcXVlc3Rfc2VnbWVudCwgYXMgd2VsbCBhcworICogJ3NlY3Rvcl9udW1iZXInIGlu IGJsa2lmX3JlcXVlc3QsIGJsa2lmX3JlcXVlc3RfZGlzY2FyZCBhbmQKKyAqIGJsa2lmX3JlcXVl c3RfaW5kaXJlY3QgYXJlIHNlY3Rvci1iYXNlZCBxdWFudGl0aWVzLiBTZWUgdGhlIGRlc2NyaXB0 aW9uCisgKiBvZiB0aGUgImZlYXR1cmUtbGFyZ2Utc2VjdG9yLXNpemUiIGZyb250ZW5kIHhlbmJ1 cyBub2RlIGFib3ZlIGZvcgorICogbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworc3RydWN0IGJsa2lm X3JlcXVlc3Rfc2VnbWVudCB7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZjsgICAgICAgIC8qIHJlZmVy ZW5jZSB0byBJL08gYnVmZmVyIGZyYW1lICAgICAgICAqLworICAgIC8qIEBmaXJzdF9zZWN0OiBm aXJzdCBzZWN0b3IgaW4gZnJhbWUgdG8gdHJhbnNmZXIgKGluY2x1c2l2ZSkuICAgKi8KKyAgICAv KiBAbGFzdF9zZWN0OiBsYXN0IHNlY3RvciBpbiBmcmFtZSB0byB0cmFuc2ZlciAoaW5jbHVzaXZl KS4gICAgICovCisgICAgdWludDhfdCAgICAgZmlyc3Rfc2VjdCwgbGFzdF9zZWN0OworfTsKKwor LyoKKyAqIFN0YXJ0aW5nIHJpbmcgZWxlbWVudCBmb3IgYW55IEkvTyByZXF1ZXN0LgorICovCitz dHJ1Y3QgYmxraWZfcmVxdWVzdCB7CisgICAgdWludDhfdCAgICAgICAgb3BlcmF0aW9uOyAgICAv KiBCTEtJRl9PUF8/Pz8gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICB1aW50OF90ICAg ICAgICBucl9zZWdtZW50czsgIC8qIG51bWJlciBvZiBzZWdtZW50cyAgICAgICAgICAgICAgICAg ICAqLworICAgIGJsa2lmX3ZkZXZfdCAgIGhhbmRsZTsgICAgICAgLyogb25seSBmb3IgcmVhZC93 cml0ZSByZXF1ZXN0cyAgICAgICAgICovCisgICAgdWludDY0X3QgICAgICAgaWQ7ICAgICAgICAg ICAvKiBwcml2YXRlIGd1ZXN0IHZhbHVlLCBlY2hvZWQgaW4gcmVzcCAgKi8KKyAgICBibGtpZl9z ZWN0b3JfdCBzZWN0b3JfbnVtYmVyOy8qIHN0YXJ0IHNlY3RvciBpZHggb24gZGlzayAoci93IG9u bHkpICAqLworICAgIHN0cnVjdCBibGtpZl9yZXF1ZXN0X3NlZ21lbnQgc2VnW0JMS0lGX01BWF9T RUdNRU5UU19QRVJfUkVRVUVTVF07Cit9OwordHlwZWRlZiBzdHJ1Y3QgYmxraWZfcmVxdWVzdCBi bGtpZl9yZXF1ZXN0X3Q7CisKKy8qCisgKiBDYXN0IHRvIHRoaXMgc3RydWN0dXJlIHdoZW4gYmxr aWZfcmVxdWVzdC5vcGVyYXRpb24gPT0gQkxLSUZfT1BfRElTQ0FSRAorICogc2l6ZW9mKHN0cnVj dCBibGtpZl9yZXF1ZXN0X2Rpc2NhcmQpIDw9IHNpemVvZihzdHJ1Y3QgYmxraWZfcmVxdWVzdCkK KyAqLworc3RydWN0IGJsa2lmX3JlcXVlc3RfZGlzY2FyZCB7CisgICAgdWludDhfdCAgICAgICAg b3BlcmF0aW9uOyAgICAvKiBCTEtJRl9PUF9ESVNDQVJEICAgICAgICAgICAgICAgICAgICAgKi8K KyAgICB1aW50OF90ICAgICAgICBmbGFnOyAgICAgICAgIC8qIEJMS0lGX0RJU0NBUkRfU0VDVVJF IG9yIHplcm8gICAgICAgICAqLworI2RlZmluZSBCTEtJRl9ESVNDQVJEX1NFQ1VSRSAoMTw8MCkg IC8qIGlnbm9yZWQgaWYgZGlzY2FyZC1zZWN1cmU9MCAgICAgICovCisgICAgYmxraWZfdmRldl90 ICAgaGFuZGxlOyAgICAgICAvKiBzYW1lIGFzIGZvciByZWFkL3dyaXRlIHJlcXVlc3RzICAgICAg Ki8KKyAgICB1aW50NjRfdCAgICAgICBpZDsgICAgICAgICAgIC8qIHByaXZhdGUgZ3Vlc3QgdmFs dWUsIGVjaG9lZCBpbiByZXNwICAqLworICAgIGJsa2lmX3NlY3Rvcl90IHNlY3Rvcl9udW1iZXI7 Lyogc3RhcnQgc2VjdG9yIGlkeCBvbiBkaXNrICAgICAgICAgICAgICovCisgICAgdWludDY0X3Qg ICAgICAgbnJfc2VjdG9yczsgICAvKiBudW1iZXIgb2YgY29udGlndW91cyBzZWN0b3JzIHRvIGRp c2NhcmQqLworfTsKK3R5cGVkZWYgc3RydWN0IGJsa2lmX3JlcXVlc3RfZGlzY2FyZCBibGtpZl9y ZXF1ZXN0X2Rpc2NhcmRfdDsKKworc3RydWN0IGJsa2lmX3JlcXVlc3RfaW5kaXJlY3QgeworICAg IHVpbnQ4X3QgICAgICAgIG9wZXJhdGlvbjsgICAgLyogQkxLSUZfT1BfSU5ESVJFQ1QgICAgICAg ICAgICAgICAgICAgICovCisgICAgdWludDhfdCAgICAgICAgaW5kaXJlY3Rfb3A7ICAvKiBCTEtJ Rl9PUF97UkVBRC9XUklURX0gICAgICAgICAgICAgICAgKi8KKyAgICB1aW50MTZfdCAgICAgICBu cl9zZWdtZW50czsgIC8qIG51bWJlciBvZiBzZWdtZW50cyAgICAgICAgICAgICAgICAgICAqLwor ICAgIHVpbnQ2NF90ICAgICAgIGlkOyAgICAgICAgICAgLyogcHJpdmF0ZSBndWVzdCB2YWx1ZSwg ZWNob2VkIGluIHJlc3AgICovCisgICAgYmxraWZfc2VjdG9yX3Qgc2VjdG9yX251bWJlcjsvKiBz dGFydCBzZWN0b3IgaWR4IG9uIGRpc2sgKHIvdyBvbmx5KSAgKi8KKyAgICBibGtpZl92ZGV2X3Qg ICBoYW5kbGU7ICAgICAgIC8qIHNhbWUgYXMgZm9yIHJlYWQvd3JpdGUgcmVxdWVzdHMgICAgICAq LworICAgIGdyYW50X3JlZl90ICAgIGluZGlyZWN0X2dyZWZzW0JMS0lGX01BWF9JTkRJUkVDVF9Q QUdFU19QRVJfUkVRVUVTVF07CisjaWZkZWYgX19pMzg2X18KKyAgICB1aW50NjRfdCAgICAgICBw YWQ7ICAgICAgICAgIC8qIE1ha2UgaXQgNjQgYnl0ZSBhbGlnbmVkIG9uIGkzODYgICAgICAqLwor I2VuZGlmCit9OwordHlwZWRlZiBzdHJ1Y3QgYmxraWZfcmVxdWVzdF9pbmRpcmVjdCBibGtpZl9y ZXF1ZXN0X2luZGlyZWN0X3Q7CisKK3N0cnVjdCBibGtpZl9yZXNwb25zZSB7CisgICAgdWludDY0 X3QgICAgICAgIGlkOyAgICAgICAgICAgICAgLyogY29waWVkIGZyb20gcmVxdWVzdCAqLworICAg IHVpbnQ4X3QgICAgICAgICBvcGVyYXRpb247ICAgICAgIC8qIGNvcGllZCBmcm9tIHJlcXVlc3Qg Ki8KKyAgICBpbnQxNl90ICAgICAgICAgc3RhdHVzOyAgICAgICAgICAvKiBCTEtJRl9SU1BfPz8/ ICAgICAgICovCit9OwordHlwZWRlZiBzdHJ1Y3QgYmxraWZfcmVzcG9uc2UgYmxraWZfcmVzcG9u c2VfdDsKKworLyoKKyAqIFNUQVRVUyBSRVRVUk4gQ09ERVMuCisgKi8KKyAvKiBPcGVyYXRpb24g bm90IHN1cHBvcnRlZCAob25seSBoYXBwZW5zIG9uIGJhcnJpZXIgd3JpdGVzKS4gKi8KKyNkZWZp bmUgQkxLSUZfUlNQX0VPUE5PVFNVUFAgIC0yCisgLyogT3BlcmF0aW9uIGZhaWxlZCBmb3Igc29t ZSB1bnNwZWNpZmllZCByZWFzb24gKC1FSU8pLiAqLworI2RlZmluZSBCTEtJRl9SU1BfRVJST1Ig ICAgICAgLTEKKyAvKiBPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gKi8KKyNkZWZp bmUgQkxLSUZfUlNQX09LQVkgICAgICAgICAwCisKKy8qCisgKiBHZW5lcmF0ZSBibGtpZiByaW5n IHN0cnVjdHVyZXMgYW5kIHR5cGVzLgorICovCitERUZJTkVfUklOR19UWVBFUyhibGtpZiwgc3Ry dWN0IGJsa2lmX3JlcXVlc3QsIHN0cnVjdCBibGtpZl9yZXNwb25zZSk7CisKKyNkZWZpbmUgVkRJ U0tfQ0RST00gICAgICAgIDB4MQorI2RlZmluZSBWRElTS19SRU1PVkFCTEUgICAgMHgyCisjZGVm aW5lIFZESVNLX1JFQURPTkxZICAgICAweDQKKworI2VuZGlmIC8qIFhFTl9QVUJMSUNfSU9fQkxL SUZfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody94ZW4vaW8vcmluZy5oIGIvaW5jbHVkZS9o dy94ZW4vaW50ZXJmYWNlL2lvL3JpbmcuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZy b20gaW5jbHVkZS9ody94ZW4vaW8vcmluZy5oCnJlbmFtZSB0byBpbmNsdWRlL2h3L3hlbi9pbnRl cmZhY2UvaW8vcmluZy5oCmRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8v dXNiaWYuaCBiL2luY2x1ZGUvaHcveGVuL2ludGVyZmFjZS9pby91c2JpZi5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmFlM2RjNzIwZmEKLS0tIC9kZXYvbnVsbAorKysg Yi9pbmNsdWRlL2h3L3hlbi9pbnRlcmZhY2UvaW8vdXNiaWYuaApAQCAtMCwwICsxLDI1NCBAQAor LyoKKyAqIHVzYmlmLmgKKyAqCisgKiBVU0IgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9T ZXMuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBGVUpJVFNVIExBQk9SQVRPUklFUyBMVEQu CisgKiBBdXRob3I6IE5vYm9ydSBJd2FtYXRzdSA8bl9pd2FtYXRzdUBqcC5mdWppdHN1LmNvbT4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKi8KKworI2lmbmRlZiBYRU5fUFVCTElDX0lPX1VTQklGX0gKKyNkZWZpbmUg WEVOX1BVQkxJQ19JT19VU0JJRl9ICisKKyNpbmNsdWRlICJyaW5nLmgiCisjaW5jbHVkZSAiLi4v Z3JhbnRfdGFibGUuaCIKKworLyoKKyAqIEZlYXR1cmUgYW5kIFBhcmFtZXRlciBOZWdvdGlhdGlv bgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBUaGUgdHdvIGhhbHZl cyBvZiBhIFhlbiBwdlVTQiBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4gdGhlIFhlblN0b3Jl IHRvCisgKiBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRp bmcgcGFyYW1ldGVycy4gVGhpcworICogc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdo aWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAqIGJhY2tlbmQgcG9ydGlv bnMgb2YgdGhlIFhlblN0b3JlLCBmb2xsb3dpbmcgdGhlIFhlbkJ1cyBjb252ZW50aW9uLgorICoK KyAqIEFueSBzcGVjaWZpZWQgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgaWYgdGhlIGNvcnJl c3BvbmRpbmcgWGVuQnVzIG5vZGUKKyAqIGlzIG5vdCBwcmVzZW50IGluIHRoZSBYZW5TdG9yZS4K KyAqCisgKiBYZW5TdG9yZSBub2RlcyBpbiBzZWN0aW9ucyBtYXJrZWQgIlBSSVZBVEUiIGFyZSBz b2xlbHkgZm9yIHVzZSBieSB0aGUKKyAqIGRyaXZlciBzaWRlIHdob3NlIFhlbkJ1cyB0cmVlIGNv bnRhaW5zIHRoZW0uCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCBEZXZpY2UgSWRlbnRpZmljYXRpb24g KFBSSVZBVEUpIC0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIG51bS1wb3J0cworICogICAgICBW YWx1ZXM6ICAgICAgICAgdW5zaWduZWQgWzEuLi4zMV0KKyAqCisgKiAgICAgIE51bWJlciBvZiBw b3J0cyBmb3IgdGhpcyAodmlydHVhbCkgVVNCIGhvc3QgY29ubmVjdG9yLgorICoKKyAqIHVzYi12 ZXIKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIHVuc2lnbmVkIFsxLi4uMl0KKyAqCisgKiAgICAg IFVTQiB2ZXJzaW9uIG9mIHRoaXMgaG9zdCBjb25uZWN0b3I6IDEgPSBVU0IgMS4xLCAyID0gVVNC IDIuMC4KKyAqCisgKiBwb3J0L1sxLi4uMzFdCisgKiAgICAgIFZhbHVlczogICAgICAgICBzdHJp bmcKKyAqCisgKiAgICAgIFBoeXNpY2FsIFVTQiBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBnaXZl biBwb3J0LCBlLmcuICIzLTEuNSIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVzdCBUcmFuc3Bv cnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGV2ZW50LWNoYW5u ZWwKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIHVuc2lnbmVkCisgKgorICogICAgICBUaGUgaWRl bnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkK KyAqICAgICAgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAqIHVyYi1yaW5nLXJlZgorICogICAg ICBWYWx1ZXM6ICAgICAgICAgdW5zaWduZWQKKyAqCisgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVm ZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAorICogICAg ICB0aGUgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgcmluZyBidWZmZXIuIFRoaXMg aXMgdGhlIHJpbmcKKyAqICAgICAgYnVmZmVyIGZvciB1cmIgcmVxdWVzdHMuCisgKgorICogY29u bi1yaW5nLXJlZgorICogICAgICBWYWx1ZXM6ICAgICAgICAgdW5zaWduZWQKKyAqCisgKiAgICAg IFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNr ZW5kIHRvIG1hcAorICogICAgICB0aGUgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQg cmluZyBidWZmZXIuIFRoaXMgaXMgdGhlIHJpbmcKKyAqICAgICAgYnVmZmVyIGZvciBjb25uZWN0 aW9uL2Rpc2Nvbm5lY3Rpb24gcmVxdWVzdHMuCisgKgorICogcHJvdG9jb2wKKyAqICAgICAgVmFs dWVzOiAgICAgICAgIHN0cmluZyAoWEVOX0lPX1BST1RPX0FCSV8qKQorICogICAgICBEZWZhdWx0 IFZhbHVlOiAgWEVOX0lPX1BST1RPX0FCSV9OQVRJVkUKKyAqCisgKiAgICAgIFRoZSBtYWNoaW5l IEFCSSBydWxlcyBnb3Zlcm5pbmcgdGhlIGZvcm1hdCBvZiBhbGwgcmluZyByZXF1ZXN0IGFuZAor ICogICAgICByZXNwb25zZSBzdHJ1Y3R1cmVzLgorICoKKyAqLworCitlbnVtIHVzYl9zcGVjX3Zl cnNpb24geworCVVTQl9WRVJfVU5LTk9XTiA9IDAsCisJVVNCX1ZFUl9VU0IxMSwKKwlVU0JfVkVS X1VTQjIwLAorCVVTQl9WRVJfVVNCMzAsCS8qIG5vdCBzdXBwb3J0ZWQgeWV0ICovCit9OworCisv KgorICogIFVTQiBwaXBlIGluIHVzYmlmX3JlcXVlc3QKKyAqCisgKiAgLSBwb3J0IG51bWJlcjoJ Yml0cyAwLTQKKyAqCQkJCShVU0JfTUFYQ0hJTERSRU4gaXMgMzEpCisgKgorICogIC0gb3BlcmF0 aW9uIGZsYWc6CWJpdCA1CisgKgkJCQkoMCA9IHN1Ym1pdCB1cmIsCisgKgkJCQkgMSA9IHVubGlu ayB1cmIpCisgKgorICogIC0gZGlyZWN0aW9uOgkJYml0IDcKKyAqCQkJCSgwID0gSG9zdC10by1E ZXZpY2UgW091dF0KKyAqCQkJCSAxID0gRGV2aWNlLXRvLUhvc3QgW0luXSkKKyAqCisgKiAgLSBk ZXZpY2UgYWRkcmVzczoJYml0cyA4LTE0CisgKgorICogIC0gZW5kcG9pbnQ6CQliaXRzIDE1LTE4 CisgKgorICogIC0gcGlwZSB0eXBlOgliaXRzIDMwLTMxCisgKgkJCQkoMDAgPSBpc29jaHJvbm91 cywgMDEgPSBpbnRlcnJ1cHQsCisgKgkJCQkgMTAgPSBjb250cm9sLCAxMSA9IGJ1bGspCisgKi8K KworI2RlZmluZSBVU0JJRl9QSVBFX1BPUlRfTUFTSwkweDAwMDAwMDFmCisjZGVmaW5lIFVTQklG X1BJUEVfVU5MSU5LCTB4MDAwMDAwMjAKKyNkZWZpbmUgVVNCSUZfUElQRV9ESVIJCTB4MDAwMDAw ODAKKyNkZWZpbmUgVVNCSUZfUElQRV9ERVZfTUFTSwkweDAwMDAwMDdmCisjZGVmaW5lIFVTQklG X1BJUEVfREVWX1NISUZUCTgKKyNkZWZpbmUgVVNCSUZfUElQRV9FUF9NQVNLCTB4MDAwMDAwMGYK KyNkZWZpbmUgVVNCSUZfUElQRV9FUF9TSElGVAkxNQorI2RlZmluZSBVU0JJRl9QSVBFX1RZUEVf TUFTSwkweDAwMDAwMDAzCisjZGVmaW5lIFVTQklGX1BJUEVfVFlQRV9TSElGVAkzMAorI2RlZmlu ZSBVU0JJRl9QSVBFX1RZUEVfSVNPQwkwCisjZGVmaW5lIFVTQklGX1BJUEVfVFlQRV9JTlQJMQor I2RlZmluZSBVU0JJRl9QSVBFX1RZUEVfQ1RSTAkyCisjZGVmaW5lIFVTQklGX1BJUEVfVFlQRV9C VUxLCTMKKworI2RlZmluZSB1c2JpZl9waXBlcG9ydG51bShwaXBlKQkJCSgocGlwZSkgJiBVU0JJ Rl9QSVBFX1BPUlRfTUFTSykKKyNkZWZpbmUgdXNiaWZfc2V0cG9ydG51bV9waXBlKHBpcGUsIHBv cnRudW0pCSgocGlwZSkgfCAocG9ydG51bSkpCisKKyNkZWZpbmUgdXNiaWZfcGlwZXVubGluayhw aXBlKQkJCSgocGlwZSkgJiBVU0JJRl9QSVBFX1VOTElOSykKKyNkZWZpbmUgdXNiaWZfcGlwZXN1 Ym1pdChwaXBlKQkJCSghdXNiaWZfcGlwZXVubGluayhwaXBlKSkKKyNkZWZpbmUgdXNiaWZfc2V0 dW5saW5rX3BpcGUocGlwZSkJCSgocGlwZSkgfCBVU0JJRl9QSVBFX1VOTElOSykKKworI2RlZmlu ZSB1c2JpZl9waXBlaW4ocGlwZSkJCQkoKHBpcGUpICYgVVNCSUZfUElQRV9ESVIpCisjZGVmaW5l IHVzYmlmX3BpcGVvdXQocGlwZSkJCQkoIXVzYmlmX3BpcGVpbihwaXBlKSkKKworI2RlZmluZSB1 c2JpZl9waXBlZGV2aWNlKHBpcGUpCQkJXAorCQkoKChwaXBlKSA+PiBVU0JJRl9QSVBFX0RFVl9T SElGVCkgJiBVU0JJRl9QSVBFX0RFVl9NQVNLKQorCisjZGVmaW5lIHVzYmlmX3BpcGVlbmRwb2lu dChwaXBlKQkJXAorCQkoKChwaXBlKSA+PiBVU0JJRl9QSVBFX0VQX1NISUZUKSAmIFVTQklGX1BJ UEVfRVBfTUFTSykKKworI2RlZmluZSB1c2JpZl9waXBldHlwZShwaXBlKQkJCVwKKwkJKCgocGlw ZSkgPj4gVVNCSUZfUElQRV9UWVBFX1NISUZUKSAmIFVTQklGX1BJUEVfVFlQRV9NQVNLKQorI2Rl ZmluZSB1c2JpZl9waXBlaXNvYyhwaXBlKQkodXNiaWZfcGlwZXR5cGUocGlwZSkgPT0gVVNCSUZf UElQRV9UWVBFX0lTT0MpCisjZGVmaW5lIHVzYmlmX3BpcGVpbnQocGlwZSkJKHVzYmlmX3BpcGV0 eXBlKHBpcGUpID09IFVTQklGX1BJUEVfVFlQRV9JTlQpCisjZGVmaW5lIHVzYmlmX3BpcGVjdHJs KHBpcGUpCSh1c2JpZl9waXBldHlwZShwaXBlKSA9PSBVU0JJRl9QSVBFX1RZUEVfQ1RSTCkKKyNk ZWZpbmUgdXNiaWZfcGlwZWJ1bGsocGlwZSkJKHVzYmlmX3BpcGV0eXBlKHBpcGUpID09IFVTQklG X1BJUEVfVFlQRV9CVUxLKQorCisjZGVmaW5lIFVTQklGX01BWF9TRUdNRU5UU19QRVJfUkVRVUVT VCAoMTYpCisjZGVmaW5lIFVTQklGX01BWF9QT1JUTlIJMzEKKyNkZWZpbmUgVVNCSUZfUklOR19T SVpFCTQwOTYKKworLyoKKyAqIFJJTkcgZm9yIHRyYW5zZmVycmluZyB1cmJzLgorICovCitzdHJ1 Y3QgdXNiaWZfcmVxdWVzdF9zZWdtZW50IHsKKwlncmFudF9yZWZfdCBncmVmOworCXVpbnQxNl90 IG9mZnNldDsKKwl1aW50MTZfdCBsZW5ndGg7Cit9OworCitzdHJ1Y3QgdXNiaWZfdXJiX3JlcXVl c3QgeworCXVpbnQxNl90IGlkOyAvKiByZXF1ZXN0IGlkICovCisJdWludDE2X3QgbnJfYnVmZmVy X3NlZ3M7IC8qIG51bWJlciBvZiB1cmItPnRyYW5zZmVyX2J1ZmZlciBzZWdtZW50cyAqLworCisJ LyogYmFzaWMgdXJiIHBhcmFtZXRlciAqLworCXVpbnQzMl90IHBpcGU7CisJdWludDE2X3QgdHJh bnNmZXJfZmxhZ3M7CisjZGVmaW5lIFVTQklGX1NIT1JUX05PVF9PSwkweDAwMDEKKwl1aW50MTZf dCBidWZmZXJfbGVuZ3RoOworCXVuaW9uIHsKKwkJdWludDhfdCBjdHJsWzhdOyAvKiBzZXR1cF9w YWNrZXQgKEN0cmwpICovCisKKwkJc3RydWN0IHsKKwkJCXVpbnQxNl90IGludGVydmFsOyAvKiBt YXhpbXVtICgxMDI0KjgpIGluIHVzYiBjb3JlICovCisJCQl1aW50MTZfdCBzdGFydF9mcmFtZTsg Lyogc3RhcnQgZnJhbWUgKi8KKwkJCXVpbnQxNl90IG51bWJlcl9vZl9wYWNrZXRzOyAvKiBudW1i ZXIgb2YgSVNPIHBhY2tldCAqLworCQkJdWludDE2X3QgbnJfZnJhbWVfZGVzY19zZWdzOyAvKiBu dW1iZXIgb2YgaXNvX2ZyYW1lX2Rlc2Mgc2VnbWVudHMgKi8KKwkJfSBpc29jOworCisJCXN0cnVj dCB7CisJCQl1aW50MTZfdCBpbnRlcnZhbDsgLyogbWF4aW11bSAoMTAyNCo4KSBpbiB1c2IgY29y ZSAqLworCQkJdWludDE2X3QgcGFkWzNdOworCQl9IGludHI7CisKKwkJc3RydWN0IHsKKwkJCXVp bnQxNl90IHVubGlua19pZDsgLyogdW5saW5rIHJlcXVlc3QgaWQgKi8KKwkJCXVpbnQxNl90IHBh ZFszXTsKKwkJfSB1bmxpbms7CisKKwl9IHU7CisKKwkvKiB1cmIgZGF0YSBzZWdtZW50cyAqLwor CXN0cnVjdCB1c2JpZl9yZXF1ZXN0X3NlZ21lbnQgc2VnW1VTQklGX01BWF9TRUdNRU5UU19QRVJf UkVRVUVTVF07Cit9OwordHlwZWRlZiBzdHJ1Y3QgdXNiaWZfdXJiX3JlcXVlc3QgdXNiaWZfdXJi X3JlcXVlc3RfdDsKKworc3RydWN0IHVzYmlmX3VyYl9yZXNwb25zZSB7CisJdWludDE2X3QgaWQ7 IC8qIHJlcXVlc3QgaWQgKi8KKwl1aW50MTZfdCBzdGFydF9mcmFtZTsgIC8qIHN0YXJ0IGZyYW1l IChJU08pICovCisJaW50MzJfdCBzdGF0dXM7IC8qIHN0YXR1cyAobm9uLUlTTykgKi8KKwlpbnQz Ml90IGFjdHVhbF9sZW5ndGg7IC8qIGFjdHVhbCB0cmFuc2ZlciBsZW5ndGggKi8KKwlpbnQzMl90 IGVycm9yX2NvdW50OyAvKiBudW1iZXIgb2YgSVNPIGVycm9ycyAqLworfTsKK3R5cGVkZWYgc3Ry dWN0IHVzYmlmX3VyYl9yZXNwb25zZSB1c2JpZl91cmJfcmVzcG9uc2VfdDsKKworREVGSU5FX1JJ TkdfVFlQRVModXNiaWZfdXJiLCBzdHJ1Y3QgdXNiaWZfdXJiX3JlcXVlc3QsIHN0cnVjdCB1c2Jp Zl91cmJfcmVzcG9uc2UpOworI2RlZmluZSBVU0JfVVJCX1JJTkdfU0laRSBfX0NPTlNUX1JJTkdf U0laRSh1c2JpZl91cmIsIFVTQklGX1JJTkdfU0laRSkKKworLyoKKyAqIFJJTkcgZm9yIG5vdGlm eWluZyBjb25uZWN0L2Rpc2Nvbm5lY3QgZXZlbnRzIHRvIGZyb250ZW5kCisgKi8KK3N0cnVjdCB1 c2JpZl9jb25uX3JlcXVlc3QgeworCXVpbnQxNl90IGlkOworfTsKK3R5cGVkZWYgc3RydWN0IHVz YmlmX2Nvbm5fcmVxdWVzdCB1c2JpZl9jb25uX3JlcXVlc3RfdDsKKworc3RydWN0IHVzYmlmX2Nv bm5fcmVzcG9uc2UgeworCXVpbnQxNl90IGlkOyAvKiByZXF1ZXN0IGlkICovCisJdWludDhfdCBw b3J0bnVtOyAvKiBwb3J0IG51bWJlciAqLworCXVpbnQ4X3Qgc3BlZWQ7IC8qIHVzYl9kZXZpY2Vf c3BlZWQgKi8KKyNkZWZpbmUgVVNCSUZfU1BFRURfTk9ORQkwCisjZGVmaW5lIFVTQklGX1NQRUVE X0xPVwkJMQorI2RlZmluZSBVU0JJRl9TUEVFRF9GVUxMCTIKKyNkZWZpbmUgVVNCSUZfU1BFRURf SElHSAkzCit9OwordHlwZWRlZiBzdHJ1Y3QgdXNiaWZfY29ubl9yZXNwb25zZSB1c2JpZl9jb25u X3Jlc3BvbnNlX3Q7CisKK0RFRklORV9SSU5HX1RZUEVTKHVzYmlmX2Nvbm4sIHN0cnVjdCB1c2Jp Zl9jb25uX3JlcXVlc3QsIHN0cnVjdCB1c2JpZl9jb25uX3Jlc3BvbnNlKTsKKyNkZWZpbmUgVVNC X0NPTk5fUklOR19TSVpFIF9fQ09OU1RfUklOR19TSVpFKHVzYmlmX2Nvbm4sIFVTQklGX1JJTkdf U0laRSkKKworI2VuZGlmIC8qIFhFTl9QVUJMSUNfSU9fVVNCSUZfSCAqLwotLSAKQW50aG9ueSBQ RVJBUkQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs