From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v18] xen/sndif: Add sound-device ABI Date: Mon, 20 Mar 2017 09:03:27 +0200 Message-ID: <1489993407-14323-2-git-send-email-andr2000@gmail.com> References: <1489993407-14323-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cprLx-0003w3-TD for xen-devel@lists.xenproject.org; Mon, 20 Mar 2017 07:03:42 +0000 Received: by mail-lf0-f68.google.com with SMTP id r36so9308133lfi.0 for ; Mon, 20 Mar 2017 00:03:39 -0700 (PDT) In-Reply-To: <1489993407-14323-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: lars.kurth@citrix.com, iurii.konovalenko@globallogic.com, vlad.babchuk@gmail.com, oleksandr.dmytryshyn@globallogic.com, Oleksandr Andrushchenko , julien.grall@arm.com, andrii.anisov@gmail.com, olekstysh@gmail.com, andr2000@gmail.com, al1img@gmail.com, Oleksandr Grytsov , joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKQWRkIEFCSSBmb3IgdGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWxpemVk CnNvdW5kIGRyaXZlciB0byBjb21tdW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIuCgpUaGUgQUJJIGFs bG93cyBpbXBsZW1lbnRpbmcgYXVkaW8gcGxheWJhY2sgYW5kIGNhcHR1cmUgYXMKd2VsbCBhcyB2 b2x1bWUgY29udHJvbCBhbmQgcG9zc2liaWxpdHkgdG8gbXV0ZS91bm11dGUKYXVkaW8gc291cmNl cy4KCk5vdGU6IGRlcGVuZGluZyBvbiB0aGUgdXNlLWNhc2UgYmFja2VuZCBjYW4gZXhwb3NlIG1v cmUgc291bmQKY2FyZHMgYW5kIFBDTSBkZXZpY2VzL3N0cmVhbXMgdGhhbiB0aGUgdW5kZXJseWlu ZyBIVyBwaHlzaWNhbGx5CmhhcyBieSBlbXBsb3lpbmcgU1cgbWl4ZXJzLCBjb25maWd1cmluZyB2 aXJ0dWFsIHNvdW5kIHN0cmVhbXMsCmNoYW5uZWxzIGV0Yy4gVGh1cywgYWxsb3dpbmcgZmluZSB0 dW5uZWQgY29uZmlndXJhdGlvbnMgcGVyCmZyb250ZW5kLgoKUmV2aWV3ZWQtYnk6IEtvbnJhZCBS emVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogT2xl a3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgpT aWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5j b20+ClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBEbXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5 c2h5bkBnbG9iYWxsb2dpYy5jb20+ClNpZ25lZC1vZmYtYnk6IEl1cmlpIEtvbm92YWxlbmtvIDxp dXJpaS5rb25vdmFsZW5rb0BnbG9iYWxsb2dpYy5jb20+CgotLS0KQ2hhbmdlcyBzaW5jZSB2MToK ICogcmVtb3ZlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkgZnJvbSBhbGwgc3RydWN0dXJl cyBkZWZpbml0aW9ucwoKQ2hhbmdlcyBzaW5jZSB2MjoKICogcmVtb3ZlZCBhbGwgQyBzdHJ1Y3R1 cmVzCiAqIGFkZGVkIHByb3RvY29sIGRlc2NyaXB0aW9uIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJh Y2tlbmQgZHJpdmVycwoKQ2hhbmdlcyBzaW5jZSB2MzoKICogZml4ZWQgc29tZSB0eXBvcwogKiBy ZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FUXyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0Yz Ml8qKgogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FUNjRfKiogdG8gWEVOU05EX1BD TV9GT1JNQVRfRjY0XyoqCiAqIGFkZGVkICdpZCcgZmllbGQgdG8gdGhlIHJlcXVlc3QgYW5kIHJl c3BvbnNlIHBhY2tldHMKICogcmVuYW1lZCAnc3RyZWFtX2lkJyB0byAnc3RyZWFtJyBpbiB0aGUg cGFja2V0cyBkZXNjcmlwdGlvbgogKiByZW5hbWVkICdwY21fZGF0YV9yYXRlJyB0byAncGNtX3Jh dGUnIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9uCiAqIHJlbmFtZWQgJ3BjbV9zdHJlYW1fdHlw ZScgdG8gJ3BjbV90eXBlJyBpbiB0aGUgcGFja2V0cyBkZXNjcmlwdGlvbgogKiByZW1vdmVkICdz dHJlYW1faWQnIGZpZWxkIGZyb20gdGhlIHJlc3BvbnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2Ug djQ6CiAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcgYmFjayB0byB0aGUgdG8gJ3N0cmVhbScgaW4gdGhl IHBhY2tldHMgZGVzY3JpcHRpb24KICogbW92ZWQgJ2lkJyBmaWVsZCB0byB0aGUgdXBwZXIgcG9z aXRpb24gaW4gdGhlIHJlc3BvbnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2UgdjU6CiAqIFNsaWdo dGx5IHJld29ya2VkIHJlcXVlc3QvcmVzcG9uc2UgcGFja2V0cwogKiBTaXplIG9mIHRoZSByZXF1 ZXN0L3Jlc3BvbnNlIHBhY2tldCBpcyBjaGFuZ2VkIHRvIHRoZSA2NCBieXRlcwogKiBOb3cgcGFy YW1ldGVycyBmb3IgdGhlIFhFTlNORF9PUF9TRVRfVk9MVU1FL1hFTlNORF9PUF9HRVRfVk9MVU1F IGFyZQogICBwYXNzZWQgdmlhIHNoYXJlZCBwYWdlCiAqIEFkZGVkIHBhcmFtZXRlcnMgZm9yIHRo ZSBYZW5CdXMgbm9kZXMgKG5vdyBlYWNoIHN0cmVhbSBjYW4gYmUgbWFwcGVkCiAgIHRvIHRoZSBk ZWZpbmVkIHNvdW5kIGRldmljZSBpbiB0aGUgYmFja2VuZCB1c2luZyB0aG9zZSBwYXJhbWV0ZXJz KQogKiBBZGRlZCBYZW5CdXMgc3RhdGUgZGlhZ3JhbXMgZGVzY3JpcHRpb24KCkNoYW5nZXMgc2lu Y2UgdjY6CiAqIFJld29ya2VkIHN0cmVhbXMgZGVzY3JpcHRpb24gIGluIHRoZSBCYWNrZW5kIFhl bkJ1cyBOb2RlcwoKQ2hhbmdlcyBzaW5jZSB2NzoKICogcmUtd29ya2VkIGJhY2tlbmQgZGV2aWNl IHBhcmFtZXRlcnMgdG8gYmUgbW9yZSBnZW5lcmljIGFuZCBmbGV4aWJsZQogKiBleHRlbmRlZCBm cm9udGVuZCBkZXZpY2UgcGFyYW1ldGVycwogKiBzbGlnaHRseSB1cGRhdGVkIHN0YXRlIG1hY2hp bmUgZGVzY3JpcHRpb24gYWRkZWQgbXV0ZS91bm11dGUgY29tbWFuZHMKICogYWRkZWQgY29uc3Rh bnRzIGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9uIHN0cmluZ3MKICAgKGZpZWxkcywgUENNIGZv cm1hdHMgZXRjLikKICogY2hhbmdlZCByZXF1ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZSBzaXplIGZy b20gNjQgb2N0ZXRzIHRvIDE2CiAqIGludHJvZHVjZWQgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlv biBpbnN0ZWFkIG9mCiAgIHN0YXRpYyBYRU5TTkRfTUFYX1BBR0VTX1BFUl9SRVFVRVNUCiAqIHJl LXdvcmtlZCBvcGVuIHJlcXVlc3QgdG8gYWxsb3cgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbgog KiByZS13b3JrZWQgcmVhZC93cml0ZS92b2x1bWUgcmVxdWVzdHMsIHNvIHRoZXkgZG9uJ3QgcGFz cyBncmVmczoKICAgYnVmZmVyIGZyb20gdGhlIG9wZW4gcmVxdWVzdCBpcyB1c2VkIGZvciB0aGVz ZSBvcGVyYXRpb25zIHRvIHBhc3MgZGF0YQogKiBzcGVjaWZpZWQgdHlwZSBvZiB0aGUgdm9sdW1l IHZhbHVlIHRvIGJlIGEgc2lnbmVkIHZhbHVlIGluIHN0ZXBzCiAgIG9mIDAuMDAxIGRCbSwgd2hp bGUgMCBiZWluZyAwZEJtLgogKiBhZGRlZCBMaW51eCBpbmNsdWRlIGZpbGUgd2l0aCBzdHJ1Y3R1 cmUgZGVmaW5pdGlvbnMKCkNoYW5nZXMgc2luY2Ugdjg6CiAqIGNoYW5nZWQgZnJvbnRlbmQtaWQg dG8gZnJvbnRlbmRfaWQKICogc2luZ2xlIHNvdW5kIGNhcmQgc3VwcG9ydCwgY29uZmlndXJlZCB3 aXRoIGJ1bmNoIG9mCiAgIGRldmljZXMvc3RyZWFtcwogKiBjbGFyaWZ1Y2F0aW9uIG1hZGUgb24g c2FtcGxlIHJhdGVzIGFuZCBmb3JtYXRzIGV4cHJlc3NlZCBhcwogICBkZWNpbWFscyB3L28gYW55 IHBhcnRpY3VsYXIgb3JkZXJpbmcKICogcHV0IGRlc2NyaXB0aW9uIG9mIG1pZ3JhdGlvbi9kaXNj b25uZWN0aW9uIHN0YXRlCiAqIHJlcGxhY2VkIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHRvIF9f cGFja2VkCiAqIGNoYW5nZWQgcGFkZGluZyBvZiByaW5nIHN0cnVjdHVyZXMgdG8gNjQgdG8gZml0 IGNhY2hlIGxpbmUKICogcmVtb3ZlZWQgI2lmZGVmIF9fS0VSTkVMCiAqIGV4cGxpY2l0bHkgc3Rh dGVkIHdoaWNoIGluZGljZXMgaW4gWGVuU3RvcmUgY29uZmlndXJhdGlvbgogICBhcmUgY29udGln dW91cwogKiBhZGRlZCBkZXNjcmlwdGlvbiB0byB3aGF0IGZyb250ZW5kJ3MgZGVmYXVsdHMgYXJl CiAqIG1hZGUgbmFtZXMgb2YgdmlydHVhbCBjYXJkL2RldmljZXMgb3B0aW9uYWwKICogcmVtb3Zl ZCBQQ01fRk9STUFUX1NQRUNJQUwKICogY2hhbmdlZCB2b2x1bWUgdW5pdHMgZnJvbSBkQm0gdG8g ZEIKCkNoYW5nZXMgc2luY2Ugdjk6CiAqIHJlbW92ZWQgc25kaWZfbGludXguaAogKiBtb3ZlZCBh bGwgc3RydWN0dXJlcyBmcm9tIHNuZGlmX2xpbnV4LmggdG8gc25kaWYuaAogKiBzdHJ1Y3R1cmVz IHBhZGRlZCB3aGVyZSBuZWVkZWQKICogZml4ZWQgSHogY29tbWVudAoKQ2hhbmdlcyBzaW5jZSB2 MTA6CiAqIGZpeGVkIHRhYnMgdG8gNCBzcGFjZXMgdG8gY29tcGx5IHdpdGggWGVuIGNvZGluZyBz dHlsZQogKiBhZGRlZCBwbGFjZWhvbGRlcnMgdG8gZW1wdHkgc3RydWN0dXJlcyAoQzg5IGNvbmNl cm4pCiAqIGFkZGVkIG1pc3NpbmcgaGVhZGVyIGluY2x1ZGVzCgpDaGFuZ2VzIHNpbmNlIHYxMToK ICogYWRkZWQgWEVOU05EX1JTUF9OT1RTVVBQIGVycm9yIGNvZGUKICogY2hhbmdlZCBncmVmWzBd IHRvIGdyZWZbMV0gd2l0aCBjb21tZW50CiAqIG1vZGlmaWVkIGNvbW1lbnRzIG9uIGVtcHR5IHN0 cnVjdHVyZXMKICogcmVtb3ZlZCAiX18iIGZyb20gbWVtYmVyIG5hbWVzCiAqIGZpeGVkIGluZGVu dGF0aW9uCiAqIGFkZGVkIHBhZGRpbmcgaW4gdW5pb24geGVuc25kX3Jlc3AKICogY2hhbmdlZCBf X1hFTl9QVUJMSUNfSU9fWEVOU05EX0hfXyB0byBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCgpD aGFuZ2VzIHNpbmNlIHYxMjoKICogY2hhbmdlZCBpbmRlbnRhdGlvbiBmb3IgZGVmaW5lcwogKiBt aXNzZWQgIjsiIGFmdGVyIGdyZWZbMV0KICogZG9jdW1lbnRhdGlvbiBjaGFuZ2VzCiAqIGNoYW5n ZWQgcmVxL3Jlc3Agc3RydWN0dXJlcwogKiBjaGFuZ2VkIHhlbnNuZF9wYWdlX2RpcmVjdG9yeSBz dHJ1Y3R1cmUKICogcGFzcyBidWZmZXIgc2l6ZSBpbiBvcGVuIHJlcXVlc3QKCkNoYW5nZXMgc2lu Y2UgdjEzOgogKiBub3RlIG9uIHVzYWdlIG9mIGdyYW50IHJlZiAwCiAqIGFsbCBwYWdlIHNpemVz IGFyZSBYRU5fUEFHRV9TSVpFCiAqIHBhZGRpbmcvcmVzZXJ2ZWQgY2xlYW51cC9maXhlcwogKiBy ZW1vdmVkIGVtcHR5IHN0cnVjdHVyZXMKCkNoYW5nZXMgc2luY2UgdjE0OgogKiB0dXJuIHBhZGRp bmcgaW50byByZXNlcnZlZAoKQ2hhbmdlcyBzaW5jZSB2MTU6CiAqIHByb3RvY29sIGRlc2NyaXB0 aW9uIHJld29ya2VkCiAqIGFkZGVkIG9mZnNldCB0byBibG9jayBub3RhdGlvbnMKICogdXNlZCAt WEVOX0VYWCBmb3Igc3RhdHVzIHJlcG9ydGluZwogKiBhZGRlZCBwcm90b2NvbCB2ZXJzaW9uaW5n CiAqIHJlbW92ZWQgc3RyZWFtX2lkeCBmcm9tIHRoZSBwYWNrZXQgc3RydWN0dXJlCiAqIGNoYW5n ZWQgeGVuc3RvcmUgcGF0aHMKCkNoYW5nZXMgc2luY2UgdjE2OgogKiB1cGRhdGVkIFhlblN0b3Jl IHBhdGggcGF0dGVybgogKiByZW1vdmVkIHVudXNlZCBYZW5TdG9yZSBoZWxwZXIgc3RyaW5nIGNv bnN0YW50cwogKiByZW5hbWVkIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHRvIGdyZWZfZGlyZWN0b3J5 CiAqIGFkZGVkIG9mZnNldC9sZW5ndGggdG8gdm9sdW1lLCBtdXRlLCB1bm11dGUKICogYWRkZWQg bm90ZSBvbiBhc3luYyB1c2UtY2FzZXMKICogc3RydWN0IHhlbnNuZF9yd19yZXEgaXMgbm93IHVz ZWQgZm9yIHJlYWQvd3JpdGUsCiAgIHZvbHVtZSBzZXQvZ2V0LCBtdXRlLCB1bm11dGUKCkNoYW5n ZXMgc2luY2UgdjE3OgogKiBhZGQgcmVjb3ZlcnkgZmxvdyBpbnRvIHN0YXRlIGRpYWdyYW1zIHNl Y3Rpb24KICogcmUtcG9zaXRpb24gc3RydWN0IHhlbnNuZF9yd19yZXEgaW4gdGhlIGRvY3VtZW50 CiAqIG1ha2UgYSBub3RlIG9uIGNvbW1vbiB1c2Ugb2YgeGVuc25kX3J3X3JlcSBmb3IKICAgcmVh ZC93cml0ZSwgdm9sdW1lIGdldC9zZXQsIG11dGUvdW5tdXRlCiAqIGFkZCBtaXNzaW5nIHN0cmlu ZyBjb25zdGFudHMgZm9yIFhlblN0b3JlICJ2ZXJzaW9ucyIKICAgYW5kICJ2ZXJzaW9uIiBmaWVs ZHMKICogYWRkIGVkaXRvcidzIGJsb2NrCi0tLQoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFu ZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgotLS0KIHhlbi9p bmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oIHwgODAzICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDgwMyBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmgKCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vc25kaWYuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9z bmRpZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzVjMTk3ODQw NmIzCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmgKQEAg LTAsMCArMSw4MDMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIHNuZGlmLmgKKyAqCisg KiBVbmlmaWVkIHNvdW5kLWRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KKyAqIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKyAqIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz CisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgR2xvYmFsTG9naWMgSW5j LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgRVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBB dXRob3JzOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29A ZXBhbS5jb20+CisgKiAgICAgICAgICBPbGVrc2FuZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRz b3ZAZXBhbS5jb20+CisgKiAgICAgICAgICBPbGVrc2FuZHIgRG15dHJ5c2h5biA8b2xla3NhbmRy LmRteXRyeXNoeW5AZ2xvYmFsbG9naWMuY29tPgorICogICAgICAgICAgSXVyaWkgS29ub3ZhbGVu a28gPGl1cmlpLmtvbm92YWxlbmtvQGdsb2JhbGxvZ2ljLmNvbT4KKyAqLworCisjaWZuZGVmIF9f WEVOX1BVQkxJQ19JT19TTkRJRl9IX18KKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX1NORElGX0hf XworCisjaW5jbHVkZSAicmluZy5oIgorI2luY2x1ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisKKy8q CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgIEZlYXR1cmUgYW5k IFBhcmFtZXRlciBOZWdvdGlhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZy b250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNl bmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbnNu ZF9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlkZWQg YnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKKyAqIHhlbnNuZF9yZXEgYXBw cm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVRVUVTVFMoKSku CisgKgorICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hlbiBlbnF1ZXVpbmcgYSBuZXcg cmVzcG9uc2UsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlv bmFsIG9uIHhlbnNuZF9yZXNwIChpLmUuLCB0aGUgZ2VuZXJpYworICogaG9sZC1vZmYgbWVjaGFu aXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZyb250ZW5kcyBtdXN0IHNldAorICog eGVuc25kX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19G T1JfUkVTUE9OU0VTKCkpLgorICoKKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0dWFs IHNvdW5kIGNhcmQgZHJpdmVyIHV0aWxpemUgbm9kZXMgd2l0aGluCisgKiBYZW5TdG9yZSB0byBj b21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFyYW1l dGVycy4KKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lk ZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAqIGJhY2tlbmQgcG9ydGlvbnMgb2YgWGVu U3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRpb24uCisgKgorICogQWxsIGRhdGEg aW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJp YworICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIGRlY2ltYWwuIEludGVnZXIgdmFsdWUgcmFuZ2Vz IGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3NlZCBhcyBmaXhlZCBzaXplZCBpbnRlZ2VyIHR5 cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVyc2lvbgorICogb2YgYSBwcm9wZXJseSBm b3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgorICoKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBj b25maWd1cmF0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogTm90ZTogZGVwZW5k aW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBvc2UgbW9yZSBzb3VuZCBjYXJkcyBh bmQKKyAqIFBDTSBkZXZpY2VzL3N0cmVhbXMgdGhhbiB0aGUgdW5kZXJseWluZyBIVyBwaHlzaWNh bGx5IGhhcyBieSBlbXBsb3lpbmcKKyAqIFNXIG1peGVycywgY29uZmlndXJpbmcgdmlydHVhbCBz b3VuZCBzdHJlYW1zLCBjaGFubmVscyBldGMuCisgKgorICogVGhpcyBpcyBhbiBleGFtcGxlIG9m IGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246CisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvMS8wL2Zyb250ZW5k LWlkID0gIjEiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzEvMC9mcm9udGVuZCA9 ICIvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMCIKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNr ZW5kL3ZzbmQvMS8wL3N0YXRlID0gIjQiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25k LzEvMC92ZXJzaW9ucyA9ICIxLDIiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRnJvbnRlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2JhY2tlbmQtaWQgPSAiMCIKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2JhY2tlbmQgPSAiL2xvY2FsL2RvbWFpbi8wL2JhY2tl bmQvdnNuZC8xLzAiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC9zdGF0ZSA9ICI0 IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvdmVyc2lvbiA9ICIxIgorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FyZCBjb25maWd1cmF0aW9uIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQv MC9zaG9ydC1uYW1lID0gIkNhcmQgc2hvcnQgbmFtZSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZp Y2UvdnNuZC8wL2xvbmctbmFtZSA9ICJDYXJkIGxvbmcgbmFtZSIKKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdnNuZC8wL3NhbXBsZS1yYXRlcyA9ICI4MDAwLDMyMDAwLDQ0MTAwLDQ4MDAwLDk2 MDAwIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvc2FtcGxlLWZvcm1hdHMgPSAi czgsdTgsczE2X2xlLHMxNl9iZSIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2J1 ZmZlci1zaXplID0gIjI2MjE0NCIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gUENNIGRldmljZSAwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC9uYW1lID0gIkdlbmVyYWwgYW5hbG9nIgor ICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC9jaGFubmVscy1tYXggPSAiNSIKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSAwLCBwbGF5YmFjayAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 c25kLzAvMC8wL3R5cGUgPSAicCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAv MC9zYW1wbGUtZm9ybWF0cyA9ICJzOCx1OCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNu ZC8wLzAvMC91bmlxdWUtaWQgPSAiMCIKKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8wLzAvcmluZy1yZWYgPSAiMzg2IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25k LzAvMC8wL2V2ZW50LWNoYW5uZWwgPSAiMTUiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gU3RyZWFtIDEsIGNhcHR1cmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAvMS90eXBlID0gImMiCisgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8wLzEvY2hhbm5lbHMtbWF4ID0gIjIiCisgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8wLzEvdW5pcXVlLWlkID0gIjEiCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC8xL3JpbmctcmVmID0gIjM4NCIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAvMS9ldmVudC1jaGFubmVsID0gIjEzIgorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQ00gZGV2aWNlIDEgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8xL25hbWUgPSAiSERNSS0wIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAv MS9zYW1wbGUtcmF0ZXMgPSAiODAwMCwzMjAwMCw0NDEwMCIKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBTdHJlYW0gMCwgY2FwdHVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMS8wL3R5cGUgPSAi YyIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzEvMC91bmlxdWUtaWQgPSAiMiIK KyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8xLzAvcmluZy1yZWYgPSAiMzg3 IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMS8wL2V2ZW50LWNoYW5uZWwgPSAi MTUxIgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQ00gZGV2aWNlIDIg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZzbmQvMC8yL25hbWUgPSAiU1BESUYiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSBTdHJlYW0gMCwgcGxheWJhY2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzIvMC90eXBlID0gInAiCisg KiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8yLzAvdW5pcXVlLWlkID0gIjMiCisgKgor ICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMi8wL3JpbmctcmVmID0gIjM4OSIKKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzIvMC9ldmVudC1jaGFubmVsID0gIjE1MiIK KyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCYWNrZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJzaW9ucworICogICAgICBWYWx1ZXM6ICAgICAg ICAgPHN0cmluZz4KKyAqCisgKiAgICAgIExpc3Qgb2YgWEVOU05EX0xJU1RfU0VQQVJBVE9SIHNl cGFyYXRlZCBwcm90b2NvbCB2ZXJzaW9ucyBzdXBwb3J0ZWQKKyAqICAgICAgYnkgdGhlIGJhY2tl bmQuIEZvciBleGFtcGxlICIxLDIsMyIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5vZGVzCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBB ZGRyZXNzaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRvbS1p ZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRG9tYWlu IGlkZW50aWZpZXIuCisgKgorICogZGV2LWlkCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dDE2X3Q+CisgKgorICogICAgICBEZXZpY2UgaWRlbnRpZmllci4KKyAqCisgKiBwY20tZGV2LWlk eAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ4X3Q+CisgKgorICogICAgICBaZXJvIGJh c2VkIGNvbnRpZ291cyBpbmRleCBvZiB0aGUgUENNIGRldmljZS4KKyAqCisgKiBzdHJlYW0taWR4 CisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDhfdD4KKyAqCisgKiAgICAgIFplcm8gYmFz ZWQgY29udGlnb3VzIGluZGV4IG9mIHRoZSBzdHJlYW0gb2YgdGhlIFBDTSBkZXZpY2UuCisgKgor ICogVGhlIGZvbGxvd2luZyBwYXR0ZXJuIGlzIHVzZWQgZm9yIGFkZHJlc3Npbmc6CisgKiAgIC9s b2NhbC9kb21haW4vPGRvbS1pZD4vZGV2aWNlL3ZzbmQvPGRldi1pZD4vPHBjbS1kZXYtaWR4Pi88 c3RyZWFtLWlkeD4vLi4uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm90 b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHZlcnNp b24KKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAgICBQcm90b2Nv bCB2ZXJzaW9uLCBjaG9zZW4gYW1vbmcgdGhlIG9uZXMgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5k LgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQQ00gc2V0dGluZ3MgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBFdmVyeSB2aXJ0dWFsaXplZCBz b3VuZCBmcm9udGVuZCBoYXMgYSBzZXQgb2YgUENNIGRldmljZXMgYW5kIHN0cmVhbXMsIGVhY2gK KyAqIGNvdWxkIGJlIGluZGl2aWR1YWxseSBjb25maWd1cmVkLiBQYXJ0IG9mIHRoZSBQQ00gY29u ZmlndXJhdGlvbiBjYW4gYmUKKyAqIGRlZmluZWQgYXQgaGlnaGVyIGxldmVsIG9mIHRoZSBoaWVy YXJjaHkgYW5kIGJlIGZ1bGx5IG9yIHBhcnRpYWxseSByZS11c2VkCisgKiBieSB0aGUgdW5kZXJs eWluZyBsYXllcnMuIFRoZXNlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGFyZToKKyAqICBvIG51bWJl ciBvZiBjaGFubmVscyAobWluL21heCkKKyAqICBvIHN1cHBvcnRlZCBzYW1wbGUgcmF0ZXMKKyAq ICBvIHN1cHBvcnRlZCBzYW1wbGUgZm9ybWF0cy4KKyAqIEUuZy4gb25lIGNhbiBkZWZpbmUgdGhl c2UgdmFsdWVzIGZvciB0aGUgd2hvbGUgY2FyZCwgZGV2aWNlIG9yIHN0cmVhbS4KKyAqIEV2ZXJ5 IHVuZGVybHlpbmcgbGF5ZXIgaW4gdHVybiBjYW4gcmUtZGVmaW5lIHNvbWUgb3IgYWxsIG9mIHRo ZW0gdG8gYmV0dGVyCisgKiBmaXQgaXRzIG5lZWRzLiBGb3IgZXhhbXBsZSwgY2FyZCBtYXkgZGVm aW5lIG51bWJlciBvZiBjaGFubmVscyB0byBiZQorICogaW4gWzE7IDhdIHJhbmdlLCBhbmQgc29t ZSBwYXJ0aWN1bGFyIHN0cmVhbSBtYXkgYmUgbGltaXRlZCB0byBbMTsgMl0gb25seS4KKyAqIFRo ZSBydWxlIGlzIHRoYXQgdGhlIHVuZGVybHlpbmcgbGF5ZXIgbXVzdCBiZSBhIHN1YnNldCBvZiB0 aGUgdXBwZXIgbGF5ZXIKKyAqIHJhbmdlLgorICoKKyAqIGNoYW5uZWxzLW1pbgorICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQ4X3Q+CisgKgorICogICAgICBUaGUgbWluaW11bSBhbW91bnQg b2YgY2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0ZWQsIFsxOyBjaGFubmVscy1tYXhdLgorICogICAg ICBPcHRpb25hbCwgaWYgbm90IHNldCBvciBvbWl0dGVkIGEgdmFsdWUgb2YgMSBpcyB1c2VkLgor ICoKKyAqIGNoYW5uZWxzLW1heAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ4X3Q+Cisg KgorICogICAgICBUaGUgbWF4aW11bSBhbW91bnQgb2YgY2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0 ZWQuCisgKiAgICAgIE11c3QgYmUgYXQgbGVhc3QgPGNoYW5uZWxzLW1pbj4uCisgKgorICogc2Ft cGxlLXJhdGVzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiB1aW50MzJfdD4KKyAq CisgKiAgICAgIExpc3Qgb2Ygc3VwcG9ydGVkIHNhbXBsZSByYXRlcyBzZXBhcmF0ZWQgYnkgWEVO U05EX0xJU1RfU0VQQVJBVE9SLgorICogICAgICBTYW1wbGUgcmF0ZXMgYXJlIGV4cHJlc3NlZCBh cyBhIGxpc3Qgb2YgZGVjaW1hbCB2YWx1ZXMgdy9vIGFueQorICogICAgICBvcmRlcmluZyByZXF1 aXJlbWVudC4KKyAqCisgKiBzYW1wbGUtZm9ybWF0cworICogICAgICBWYWx1ZXM6ICAgICAgICAg PGxpc3Qgb2YgWEVOU05EX1BDTV9GT1JNQVRfWFhYX1NUUj4KKyAqCisgKiAgICAgIExpc3Qgb2Yg c3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzIHNlcGFyYXRlZCBieSBYRU5TTkRfTElTVF9TRVBBUkFU T1IuCisgKiAgICAgIEl0ZW1zIG11c3Qgbm90IGV4Y2VlZCBYRU5TTkRfU0FNUExFX0ZPUk1BVF9N QVhfTEVOIGxlbmd0aC4KKyAqCisgKiBidWZmZXItc2l6ZQorICogICAgICBWYWx1ZXM6ICAgICAg ICAgPHVpbnQzMl90PgorICoKKyAqICAgICAgVGhlIG1heGltdW0gc2l6ZSBpbiBvY3RldHMgb2Yg dGhlIGJ1ZmZlciB0byBhbGxvY2F0ZSBwZXIgc3RyZWFtLgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gVmlydHVhbCBzb3VuZCBjYXJkIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqIHNob3J0LW5hbWUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxjaGFyWzMyXT4K KyAqCisgKiAgICAgIFNob3J0IG5hbWUgb2YgdGhlIHZpcnR1YWwgc291bmQgY2FyZC4gT3B0aW9u YWwuCisgKgorICogbG9uZy1uYW1lCisgKiAgICAgIFZhbHVlczogICAgICAgICA8Y2hhcls4MF0+ CisgKgorICogICAgICBMb25nIG5hbWUgb2YgdGhlIHZpcnR1YWwgc291bmQgY2FyZC4gT3B0aW9u YWwuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXZpY2Ugc2V0dGluZ3Mg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogbmFtZQorICogICAgICBWYWx1ZXM6 ICAgICAgICAgPGNoYXJbODBdPgorICoKKyAqICAgICAgTmFtZSBvZiB0aGUgc291bmQgZGV2aWNl IHdpdGhpbiB0aGUgdmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4KKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgorICogdHlwZQorICogICAgICBWYWx1ZXM6ICAgICAgICAgInAiLCAi YyIKKyAqCisgKiAgICAgIFN0cmVhbSB0eXBlOiAicCIgLSBwbGF5YmFjayBzdHJlYW0sICJjIiAt IGNhcHR1cmUgc3RyZWFtCisgKgorICogICAgICBJZiBib3RoIGNhcHR1cmUgYW5kIHBsYXliYWNr IGFyZSBuZWVkZWQgdGhlbiB0d28gc3RyZWFtcyBuZWVkIHRvIGJlCisgKiAgICAgIGRlZmluZWQg dW5kZXIgdGhlIHNhbWUgZGV2aWNlLgorICoKKyAqIHVuaXF1ZS1pZAorICogICAgICBWYWx1ZXM6 ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAgICAgQWZ0ZXIgc3RyZWFtIGluaXRpYWxpemF0 aW9uIGl0IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEICh3aXRoaW4gdGhlIGZyb250CisgKiAgICAg IGRyaXZlciksIHNvIGV2ZXJ5IHN0cmVhbSBvZiB0aGUgZnJvbnRlbmQgY2FuIGJlIGlkZW50aWZp ZWQgYnkgdGhlCisgKiAgICAgIGJhY2tlbmQgYnkgdGhpcyBJRC4gVGhpcyBpcyBub3QgZXF1YWwg dG8gc3RyZWFtLWlkeCBhcyB0aGUgbGF0ZXIgaXMKKyAqICAgICAgemVybyBiYXNlZCB3aXRoaW4g dGhlIGRldmljZSwgYnV0IHRoaXMgaW5kZXggaXMgY29udGlnb3VzIHdpdGhpbiB0aGUKKyAqICAg ICAgZHJpdmVyLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyZWFtIFJlcXVlc3QgVHJh bnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBldmVudC1jaGFu bmVsCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUg aWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNoYW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZp dHkKKyAqICAgICAgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAqIHJpbmctcmVmCisgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUgWGVuIGdyYW50IHJl ZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKKyAqICAg ICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCByaW5nIGJ1ZmZlci4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT VEFURSBESUFHUkFNUworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFRvb2wgc3RhY2sg Y3JlYXRlcyBmcm9udCBhbmQgYmFjayBzdGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKKyAq IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLgorICogVG9vbCBzdGFjayBjcmVhdGVzIGFuZCBzZXRz IHVwIGZyb250ZW5kIHNvdW5kIGNvbmZpZ3VyYXRpb24gbm9kZXMgcGVyIGRvbWFpbi4KKyAqCisg KiBGcm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFjaworICogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nICAgICAgICAgICAgICBYZW5idXNT dGF0ZUluaXRpYWxpc2luZworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvIFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIGlkZW50aWZpY2F0aW9uCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbyBPcGVuIGFuZCB2YWxpZGF0ZSBiYWNrZW5kIGRldmljZS4KKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUlu aXRXYWl0CisgKgorICogbyBRdWVyeSBmcm9udGVuZCBjb25maWd1cmF0aW9uCisgKiBvIEFsbG9j YXRlIGFuZCBpbml0aWFsaXplCisgKiAgIGV2ZW50IGNoYW5uZWxzIHBlciBjb25maWd1cmVkCisg KiAgIHBsYXliYWNrL2NhcHR1cmUgc3RyZWFtLgorICogbyBQdWJsaXNoIHRyYW5zcG9ydCBwYXJh bWV0ZXJzCisgKiAgIHRoYXQgd2lsbCBiZSBpbiBlZmZlY3QgZHVyaW5nCisgKiAgIHRoaXMgY29u bmVjdGlvbi4KKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgfAorICogICAgICAg ICAgICAgIFYKKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzZWQKKyAqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgZnJvbnRlbmQgdHJhbnNwb3J0IHBhcmFt ZXRlcnMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gQ29ubmVj dCB0byB0aGUgZXZlbnQgY2hhbm5lbHMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0ZWQKKyAqCisgKiAgbyBDcmVhdGUgYW5k IGluaXRpYWxpemUgT1MKKyAqICAgIHZpcnR1YWwgc291bmQgZGV2aWNlIGluc3RhbmNlcworICog ICAgYXMgcGVyIGNvbmZpZ3VyYXRpb24uCisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAg ICAgIHwKKyAqICAgICAgICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVua25vd24K KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3Nl ZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xv c2luZworICogbyBSZW1vdmUgdmlydHVhbCBzb3VuZCBkZXZpY2UKKyAqIG8gUmVtb3ZlIGV2ZW50 IGNoYW5uZWxzCisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIHwKKyAqICAgICAg ICAgICAgICBWCisgKiBYZW5idXNTdGF0ZUNsb3NlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBSZWNvdmVyeSBmbG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBJbiBjYXNlIG9mIGZyb250ZW5kIHVucmVjb3ZlcmFibGUgZXJyb3JzIGJhY2tl bmQgaGFuZGxlcyB0aGF0IGFzCisgKiBpZiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0 YXRlQ2xvc2VkIHN0YXRlLgorICoKKyAqIEluIGNhc2Ugb2YgYmFja2VuZCB1bnJlY292ZXJhYmxl IGVycm9ycyBmcm9udGVuZCB0cmllcyByZW1vdmluZworICogdGhlIHZpcnR1YWxpemVkIGRldmlj ZS4gSWYgdGhpcyBpcyBwb3NzaWJsZSBhdCB0aGUgbW9tZW50IG9mIGVycm9yLAorICogdGhlbiBm cm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nIHN0YXRlIGFuZCBp cyByZWFkeSBmb3IKKyAqIG5ldyBjb25uZWN0aW9uIHdpdGggYmFja2VuZC4gSWYgdGhlIHZpcnR1 YWxpemVkIGRldmljZSBpcyBzdGlsbCBpbiB1c2UgYW5kCisgKiBjYW5ub3QgYmUgcmVtb3ZlZCwg dGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBzdGF0 ZQorICogdW50aWwgZWl0aGVyIHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgcmVtb3ZlZCBvciBiYWNr ZW5kIGluaXRpYXRlcyBhIG5ldworICogY29ubmVjdGlvbi4gT24gdGhlIHZpcnR1YWxpemVkIGRl dmljZSByZW1vdmFsIGZyb250ZW5kIGdvZXMgaW50byB0aGUKKyAqIFhlbmJ1c1N0YXRlSW5pdGlh bGlzaW5nIHN0YXRlLgorICoKKyAqIE5vdGUgb24gWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0 YXRlIG9mIHRoZSBmcm9udGVuZDogaWYgYmFja2VuZCBoYXMKKyAqIHVucmVjb3ZlcmFibGUgZXJy b3JzIHRoZW4gZnJvbnRlbmQgY2Fubm90IHNlbmQgcmVxdWVzdHMgdG8gdGhlIGJhY2tlbmQKKyAq IGFuZCB0aHVzIGNhbm5vdCBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHZpcnR1YWxpemVk IGRldmljZSBhbnltb3JlLgorICogQWZ0ZXIgYmFja2VuZCBpcyBiYWNrIHRvIG5vcm1hbCB0aGUg dmlydHVhbGl6ZWQgZGV2aWNlIG1heSBzdGlsbCBob2xkIHNvbWUKKyAqIHN0YXRlOiBjb25maWd1 cmF0aW9uIGluIHVzZSwgYWxsb2NhdGVkIGJ1ZmZlcnMsIGNsaWVudCBhcHBsaWNhdGlvbiBzdGF0 ZSBldGMuCisgKiBTbywgaW4gbW9zdCBjYXNlcywgdGhpcyB3aWxsIHJlcXVpcmUgZnJvbnRlbmQg dG8gaW1wbGVtZW50IGNvbXBsZXggcmVjb3ZlcnkKKyAqIHJlY29ubmVjdCBsb2dpYy4gSW5zdGVh ZCwgYnkgZ29pbmcgaW50byBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUsCisgKiBmcm9u dGVuZCB3aWxsIG1ha2Ugc3VyZSBubyBuZXcgY2xpZW50cyBvZiB0aGUgdmlydHVhbGl6ZWQgZGV2 aWNlIGFyZQorICogYWNjZXB0ZWQsIGFsbG93IGV4aXN0aW5nIGNsaWVudChzKSB0byBleGl0IGdy YWNlZnVsbHkgYnkgc2lnbmFsaW5nIGVycm9yCisgKiBzdGF0ZSBldGMuCisgKiBPbmNlIGFsbCB0 aGUgY2xpZW50cyBhcmUgZ29uZSBmcm9udGVuZCBjYW4gcmVpbml0aWFsaXplIHRoZSB2aXJ0dWFs aXplZAorICogZGV2aWNlIGFuZCBnZXQgaW50byBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0 ZSBhZ2FpbiBzaWduYWxpbmcgdGhlCisgKiBiYWNrZW5kIHRoYXQgYSBuZXcgY29ubmVjdGlvbiBj YW4gYmUgbWFkZS4KKyAqCisgKiBUaGVyZSBhcmUgbXVsdGlwbGUgY29uZGl0aW9ucyBwb3NzaWJs ZSB1bmRlciB3aGljaCBmcm9udGVuZCB3aWxsIGdvIGZyb20KKyAqIFhlbmJ1c1N0YXRlUmVjb25m aWd1cmluZyBpbnRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLCBzb21lIG9mIHRoZW0gYXJlIE9T CisgKiBzcGVjaWZpYy4gRm9yIGV4YW1wbGU6CisgKiAxLiBUaGUgdW5kZXJseWluZyBPUyBmcmFt ZXdvcmsgbWF5IHByb3ZpZGUgY2FsbGJhY2tzIHRvIHNpZ25hbCB0aGF0IHRoZSBsYXN0CisgKiAg ICBjbGllbnQgb2YgdGhlIHZpcnR1YWxpemVkIGRldmljZSBoYXMgZ29uZSBhbmQgdGhlIGRldmlj ZSBjYW4gYmUgcmVtb3ZlZAorICogMi4gRnJvbnRlbmQgY2FuIHNjaGVkdWxlIGEgZGVmZXJyZWQg d29yayAodGltZXIvdGFza2xldC93b3JrcXVldWUpCisgKiAgICB0byBwZXJpb2RpY2FsbHkgY2hl Y2sgaWYgdGhpcyBpcyB0aGUgcmlnaHQgdGltZSB0byByZS10cnkgcmVtb3ZhbCBvZgorICogICAg dGhlIHZpcnR1YWxpemVkIGRldmljZS4KKyAqIDMuIEJ5IGFueSBvdGhlciBtZWFucy4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENN IEZPUk1BVFMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBYRU5TTkRfUENNX0ZPUk1B VF88Zm9ybWF0PltfPGVuZGlhbj5dCisgKgorICogZm9ybWF0OiA8Uy9VL0Y+PGJpdHM+IG9yIDxu YW1lPgorICogICAgIFMgLSBzaWduZWQsIFUgLSB1bnNpZ25lZCwgRiAtIGZsb2F0CisgKiAgICAg Yml0cyAtIDgsIDE2LCAyNCwgMzIKKyAqICAgICBuYW1lIC0gTVVfTEFXLCBHU00sIGV0Yy4KKyAq CisgKiBlbmRpYW46IDxMRS9CRT4sIG1heSBiZSBhYnNlbnQKKyAqICAgICBMRSAtIExpdHRsZSBl bmRpYW4sIEJFIC0gQmlnIGVuZGlhbgorICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1M4 ICAgICAgICAgICAgMAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VOCAgICAgICAgICAgIDEK KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzE2X0xFICAgICAgICAyCisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1MxNl9CRSAgICAgICAgMworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9V MTZfTEUgICAgICAgIDQKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0JFICAgICAgICA1 CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRSAgICAgICAgNgorI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9TMjRfQkUgICAgICAgIDcKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf VTI0X0xFICAgICAgICA4CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9CRSAgICAgICAg OQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfTEUgICAgICAgIDEwCisjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX1MzMl9CRSAgICAgICAgMTEKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfVTMyX0xFICAgICAgICAxMgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMzJfQkUgICAg ICAgIDEzCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRSAgICAgICAgMTQgLyogNC1i eXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X0YzMl9CRSAgICAgICAgMTUgLyogcmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAgICovCisj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9MRSAgICAgICAgMTYgLyogOC1ieXRlIGZsb2F0 LCBJRUVFLTc1NCA2NC1iaXQsICovCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9CRSAg ICAgICAgMTcgLyogcmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAgICovCisjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAxOAorI2RlZmluZSBYRU5TTkRfUENN X0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUgMTkKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf TVVfTEFXICAgICAgICAyMAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBVyAgICAgICAg IDIxCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lNQV9BRFBDTSAgICAgMjIKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfTVBFRyAgICAgICAgICAyMworI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9HU00gICAgICAgICAgIDI0CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVCBDT0RFUworICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICovCisjZGVmaW5lIFhFTlNORF9PUF9PUEVOICAgICAgICAgICAgICAgICAgMAor I2RlZmluZSBYRU5TTkRfT1BfQ0xPU0UgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWEVOU05E X09QX1JFQUQgICAgICAgICAgICAgICAgICAyCisjZGVmaW5lIFhFTlNORF9PUF9XUklURSAgICAg ICAgICAgICAgICAgMworI2RlZmluZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSAgICAgICAgICAgIDQK KyNkZWZpbmUgWEVOU05EX09QX0dFVF9WT0xVTUUgICAgICAgICAgICA1CisjZGVmaW5lIFhFTlNO RF9PUF9NVVRFICAgICAgICAgICAgICAgICAgNgorI2RlZmluZSBYRU5TTkRfT1BfVU5NVVRFICAg ICAgICAgICAgICAgIDcKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAg ICAgICAgWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJTkdTLCBIRUxQRVJTCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKi8KKyNkZWZpbmUgWEVOU05EX0RSSVZFUl9OQU1FICAgICAg ICAgICAgICAidnNuZCIKKworI2RlZmluZSBYRU5TTkRfTElTVF9TRVBBUkFUT1IgICAgICAgICAg ICIsIgorLyogRmllbGQgbmFtZXMgKi8KKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0JFX1ZFUlNJT05T ICAgICAgICAidmVyc2lvbnMiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9GRV9WRVJTSU9OICAgICAg ICAgInZlcnNpb24iCisjZGVmaW5lIFhFTlNORF9GSUVMRF9WQ0FSRF9TSE9SVF9OQU1FICAgInNo b3J0LW5hbWUiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9WQ0FSRF9MT05HX05BTUUgICAgImxvbmct bmFtZSIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1JJTkdfUkVGICAgICAgICAgICAicmluZy1yZWYi CisjZGVmaW5lIFhFTlNORF9GSUVMRF9FVlRfQ0hOTCAgICAgICAgICAgImV2ZW50LWNoYW5uZWwi CisjZGVmaW5lIFhFTlNORF9GSUVMRF9ERVZJQ0VfTkFNRSAgICAgICAgIm5hbWUiCisjZGVmaW5l IFhFTlNORF9GSUVMRF9UWVBFICAgICAgICAgICAgICAgInR5cGUiCisjZGVmaW5lIFhFTlNORF9G SUVMRF9TVFJFQU1fVU5JUVVFX0lEICAgInVuaXF1ZS1pZCIKKyNkZWZpbmUgWEVOU05EX0ZJRUxE X0NIQU5ORUxTX01JTiAgICAgICAiY2hhbm5lbHMtbWluIgorI2RlZmluZSBYRU5TTkRfRklFTERf Q0hBTk5FTFNfTUFYICAgICAgICJjaGFubmVscy1tYXgiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9T QU1QTEVfUkFURVMgICAgICAgInNhbXBsZS1yYXRlcyIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1NB TVBMRV9GT1JNQVRTICAgICAic2FtcGxlLWZvcm1hdHMiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9C VUZGRVJfU0laRSAgICAgICAgImJ1ZmZlci1zaXplIgorCisvKiBTdHJlYW0gdHlwZSBmaWVsZCB2 YWx1ZXMuICovCisjZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZQkFDSyAgICAgInAiCisj ZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFICAgICAgImMiCisvKiBTYW1wbGUgcmF0 ZSBtYXggc3RyaW5nIGxlbmd0aCAqLworI2RlZmluZSBYRU5TTkRfU0FNUExFX1JBVEVfTUFYX0xF TiAgICAgIDExCisvKiBTYW1wbGUgZm9ybWF0IGZpZWxkIHZhbHVlcyAqLworI2RlZmluZSBYRU5T TkRfU0FNUExFX0ZPUk1BVF9NQVhfTEVOICAgIDI0CisKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfUzhfU1RSICAgICAgICAiczgiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1U4X1NUUiAg ICAgICAgInU4IgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMTZfTEVfU1RSICAgICJzMTZf bGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRV9TVFIgICAgInMxNl9iZSIKKyNk ZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0xFX1NUUiAgICAidTE2X2xlIgorI2RlZmluZSBY RU5TTkRfUENNX0ZPUk1BVF9VMTZfQkVfU1RSICAgICJ1MTZfYmUiCisjZGVmaW5lIFhFTlNORF9Q Q01fRk9STUFUX1MyNF9MRV9TVFIgICAgInMyNF9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfUzI0X0JFX1NUUiAgICAiczI0X2JlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMjRf TEVfU1RSICAgICJ1MjRfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9CRV9TVFIg ICAgInUyNF9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xFX1NUUiAgICAiczMy X2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkVfU1RSICAgICJzMzJfYmUiCisj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UzMl9MRV9TVFIgICAgInUzMl9sZSIKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfVTMyX0JFX1NUUiAgICAidTMyX2JlIgorI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9GMzJfTEVfU1RSICAgICJmbG9hdF9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfRjMyX0JFX1NUUiAgICAiZmxvYXRfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X0Y2NF9MRV9TVFIgICAgImZsb2F0NjRfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2 NF9CRV9TVFIgICAgImZsb2F0NjRfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lFQzk1 OF9TVUJGUkFNRV9MRV9TVFIgImllYzk1OF9zdWJmcmFtZV9sZSIKKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiAiaWVjOTU4X3N1YmZyYW1lX2JlIgorI2Rl ZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9NVV9MQVdfU1RSICAgICJtdV9sYXciCisjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX0FfTEFXX1NUUiAgICAgImFfbGF3IgorI2RlZmluZSBYRU5TTkRfUENN X0ZPUk1BVF9JTUFfQURQQ01fU1RSICJpbWFfYWRwY20iCisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX01QRUdfU1RSICAgICAgIm1wZWciCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0dTTV9T VFIgICAgICAgImdzbSIKKworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBvbiBzdWNjZXNzIGFuZCAt WEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyAqIG8gdXNhZ2Ugb2YgZ3JhbnQgcmVmZXJlbmNlIDAgYXMgaW52YWxpZCBncmFudCByZWZl cmVuY2U6CisgKiAgIGdyYW50IHJlZmVyZW5jZSAwIGlzIHZhbGlkLCBidXQgbmV2ZXIgZXhwb3Nl ZCB0byBhIFBWIGRyaXZlciwKKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5 IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KKyAqIG8gYWxsIHJlZmVyZW5jZXMg aW4gdGhpcyBkb2N1bWVudCB0byBwYWdlIHNpemVzIG11c3QgYmUgdHJlYXRlZAorICogICBhcyBw YWdlcyBvZiBzaXplIFhFTl9QQUdFX1NJWkUgdW5sZXNzIG90aGVyd2lzZSBub3RlZC4KKyAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICBEZXNjcmlwdGlvbiBvZiB0aGUgcHJvdG9j b2wgYmV0d2VlbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXIKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEtdmlydHVhbCBzb3VuZCBkcml2 ZXIgY29tbXVuaWNhdGUgd2l0aAorICogZWFjaCBvdGhlciB1c2luZyBzaGFyZWQgcGFnZXMgYW5k IGV2ZW50IGNoYW5uZWxzLgorICogU2hhcmVkIHBhZ2UgY29udGFpbnMgYSByaW5nIHdpdGggcmVx dWVzdC9yZXNwb25zZSBwYWNrZXRzLgorICoKKyAqIFBhY2tldHMsIHVzZWQgZm9yIGlucHV0L291 dHB1dCBvcGVyYXRpb25zLCBlLmcuIHJlYWQvd3JpdGUsIHNldC9nZXQgdm9sdW1lLAorICogZXRj LiwgcHJvdmlkZSBvZmZzZXQvbGVuZ3RoIGZpZWxkcyBpbiBvcmRlciB0byBhbGxvdyBhc3luY2hy b25vdXMgcHJvdG9jb2wKKyAqIG9wZXJhdGlvbiB3aXRoIGJ1ZmZlciBzcGFjZSBzaGFyaW5nOiBw YXJ0IG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkIGF0CisgKiBYRU5TTkRfT1BfT1BFTiBjYW4gYmUg dXNlZCBmb3IgYXVkaW8gc2FtcGxlcyBhbmQgcGFydCwgZm9yIGV4YW1wbGUsCisgKiBmb3Igdm9s dW1lIGNvbnRyb2wuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJl cyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEFs bCByZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDMyIG9jdGV0cykKKyAqIEFs bCByZXF1ZXN0IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICogICAgICAgICAwICAgICAg ICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3Rl dAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAg fCAgICBvcGVyYXRpb24gICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiAgIGlkIC0gdWludDE2X3QsIHBy aXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQorICogICBvcGVyYXRpb24gLSB1 aW50OF90LCBvcGVyYXRpb24gY29kZSwgWEVOU05EX09QXz8/PworICoKKyAqIEZvciBhbGwgcGFj a2V0cyB3aGljaCB1c2Ugb2Zmc2V0IGFuZCBsZW5ndGg6CisgKiAgIG9mZnNldCAtIHVpbnQzMl90 LCByZWFkIG9yIHdyaXRlIGRhdGEgb2Zmc2V0IHdpdGhpbiB0aGUgc2hhcmVkIGJ1ZmZlciwKKyAq ICAgICBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiByZXF1ZXN0LCBvY3RldHMsCisgKiAgICAg WzA7IFhFTlNORF9PUF9PUEVOLmJ1ZmZlcl9zeiAtIDFdLgorICogICBsZW5ndGggLSB1aW50MzJf dCwgcmVhZCBvciB3cml0ZSBkYXRhIGxlbmd0aCwgb2N0ZXRzCisgKgorICogUmVxdWVzdCBvcGVu IC0gb3BlbiBhIFBDTSBzdHJlYW0gZm9yIHBsYXliYWNrIG9yIGNhcHR1cmU6CisgKgorICogICAg ICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAz ICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAg ICAgICAgICAgICAgfCBYRU5TTkRfT1BfT1BFTiB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwY21fcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgcGNtX2Zvcm1hdCAgICB8ICBwY21fY2hh bm5lbHMgIHwgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zeiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHBjbV9yYXRlIC0gdWludDMyX3QsIHN0cmVhbSBkYXRh IHJhdGUsIEh6CisgKiBwY21fZm9ybWF0IC0gdWludDhfdCwgWEVOU05EX1BDTV9GT1JNQVRfWFhY IHZhbHVlCisgKiBwY21fY2hhbm5lbHMgLSB1aW50OF90LCBudW1iZXIgb2YgY2hhbm5lbHMgb2Yg dGhpcyBzdHJlYW0sCisgKiAgIFtjaGFubmVscy1taW47IGNoYW5uZWxzLW1heF0KKyAqIGJ1ZmZl cl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0ZWQsIG9jdGV0cworICog Z3JlZl9kaXJlY3RvcnkgLSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IHNo YXJlZCBwYWdlCisgKiAgIGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBBdCBs ZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmIHNoYXJlZAorICogICBidWZmZXIgc2l6ZSAgKGJ1ZmZl cl9zeikgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhpcyBzaW5nbGUgcGFnZSwK KyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBtdXN0IGJlIHN1cHBsaWVkIChz ZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCisgKiAgIGJlbG93KQorICovCisKK3N0cnVjdCB4ZW5zbmRf b3Blbl9yZXEgeworICAgIHVpbnQzMl90IHBjbV9yYXRlOworICAgIHVpbnQ4X3QgcGNtX2Zvcm1h dDsKKyAgICB1aW50OF90IHBjbV9jaGFubmVsczsKKyAgICB1aW50MTZfdCByZXNlcnZlZDsKKyAg ICB1aW50MzJfdCBidWZmZXJfc3o7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnk7Cit9 OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIFhFTlNORF9PUF9PUEVOIGJ1ZmZlciBkZXNjcmlw dG9yIChncmVmX2RpcmVjdG9yeSBpbiB0aGUKKyAqICAgcmVxdWVzdCkgZW1wbG95cyBhIGxpc3Qg b2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRoZSBzaGFyZWQgZGF0YQorICogICBi dWZmZXI6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICBncmVmX2Rpcl9uZXh0X3BhZ2UgICAgICAgICAgICAgICAgICAgICAg ICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncmVmWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSo0 KzgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbTiAtIDFdICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBOKjQrOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogZ3JlZl9kaXJfbmV4 dF9wYWdlIC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJp bmcKKyAqICAgcGFnZSBkaXJlY3RvcnkuIE11c3QgYmUgMCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBw YWdlcyBpbiB0aGUgbGlzdC4KKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRv IGEgc2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgorICogICBhbGxvY2F0ZWQgYXQgWEVOU05EX09Q X09QRU4KKyAqCisgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUgd2hvbGUg cGFnZSBkaXJlY3RvcnkgaXMgbm90CisgKiBwYXNzZWQsIGJ1dCBpbnN0ZWFkIGNhbiBiZSBjYWxj dWxhdGVkIGFzOgorICogICBudW1fZ3JlZnNfdG90YWwgPSAoWEVOU05EX09QX09QRU4uYnVmZmVy X3N6ICsgWEVOX1BBR0VfU0laRSAtIDEpIC8KKyAqICAgICAgIFhFTl9QQUdFX1NJWkUKKyAqLwor CitzdHJ1Y3QgeGVuc25kX3BhZ2VfZGlyZWN0b3J5IHsKKyAgICBncmFudF9yZWZfdCBncmVmX2Rp cl9uZXh0X3BhZ2U7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3Ro ICovCit9OworCisvKgorICogIFJlcXVlc3QgY2xvc2UgLSBjbG9zZSBhbiBvcGVuZWQgcGNtIHN0 cmVhbToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgIGlkICAgICAgICAgICAgICAgIHwgWEVOU05EX09QX0NMT1NFfCAgICByZXNlcnZlZCAg ICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKgorICogUmVxdWVzdCByZWFkL3dyaXRlIC0gdXNlZCBmb3IgcmVh ZCAoZm9yIGNhcHR1cmUpIG9yIHdyaXRlIChmb3IgcGxheWJhY2spOgorICogICAgICAgICAwICAg ICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAg ICAgfCAgIG9wZXJhdGlvbiAgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0 aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBv cGVyYXRpb24gLSBYRU5TTkRfT1BfUkVBRCBmb3IgcmVhZCBvciBYRU5TTkRfT1BfV1JJVEUgZm9y IHdyaXRlCisgKi8KKworc3RydWN0IHhlbnNuZF9yd19yZXEgeworICAgIHVpbnQzMl90IG9mZnNl dDsKKyAgICB1aW50MzJfdCBsZW5ndGg7Cit9OworCisvKgorICogUmVxdWVzdCBzZXQvZ2V0IHZv bHVtZSAtIHNldC9nZXQgY2hhbm5lbHMnIHZvbHVtZSBvZiB0aGUgc3RyZWFtIGdpdmVuOgorICog ICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAg ICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQg ICAgICAgICAgICAgICAgfCAgIG9wZXJhdGlvbiAgICB8ICAgIHJlc2VydmVkICAgIHwgNAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIG9wZXJhdGlvbiAtIFhFTlNORF9PUF9TRVRf Vk9MVU1FIGZvciB2b2x1bWUgc2V0CisgKiAgIG9yIFhFTlNORF9PUF9HRVRfVk9MVU1FIGZvciB2 b2x1bWUgZ2V0CisgKiBCdWZmZXIgcGFzc2VkIHdpdGggWEVOU05EX09QX09QRU4gaXMgdXNlZCB0 byBleGNoYW5nZSB2b2x1bWUKKyAqIHZhbHVlczoKKyAqCisgKiAgICAgICAgIDAgICAgICAgICAg ICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxb MF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaGFubmVsW2ldICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSo0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2hhbm5lbFtOIC0gMV0gICAgICAgICAgICAgICAgICAgICAgICAg IHwgKE4tMSkqNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTiA9IFhFTlNORF9PUF9PUEVOLnBj bV9jaGFubmVscworICogaSAtIHVpbnQ4X3QsIGluZGV4IG9mIGEgY2hhbm5lbAorICogY2hhbm5l bFtpXSAtIHNpbnQzMl90LCB2b2x1bWUgb2YgaS10aCBjaGFubmVsCisgKiBWb2x1bWUgaXMgZXhw cmVzc2VkIGFzIGEgc2lnbmVkIHZhbHVlIGluIHN0ZXBzIG9mIDAuMDAxIGRCLAorICogd2hpbGUg MCBiZWluZyAwIGRCLgorICoKKyAqIFJlcXVlc3QgbXV0ZS91bm11dGUgLSBtdXRlL3VubXV0ZSBz dHJlYW06CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgb3BlcmF0aW9uICAgIHwgICAgcmVzZXJ2ZWQg ICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogb3BlcmF0aW9uIC0gWEVO U05EX09QX01VVEUgZm9yIG11dGUgb3IgWEVOU05EX09QX1VOTVVURSBmb3IgdW5tdXRlCisgKiBC dWZmZXIgcGFzc2VkIHdpdGggWEVOU05EX09QX09QRU4gaXMgdXNlZCB0byBleGNoYW5nZSBtdXRl L3VubXV0ZQorICogdmFsdWVzOgorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFswXSAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogKy9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u ZWxbaV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpKjQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogKy9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFubmVsW04gLSAxXSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoTi0xKSo0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBOID0gWEVOU05EX09QX09QRU4ucGNtX2NoYW5uZWxz CisgKiBpIC0gdWludDhfdCwgaW5kZXggb2YgYSBjaGFubmVsCisgKiBjaGFubmVsW2ldIC0gdWlu dDhfdCwgbm9uLXplcm8gaWYgaS10aCBjaGFubmVsIG5lZWRzIHRvIGJlIG11dGVkL3VubXV0ZWQK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOLkIuIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlICdzdHJ1Y3QgeGVuc25kX3J3 X3JlcScgaXMgYWxzbyB1c2VkIGZvciBYRU5TTkRfT1BfU0VUX1ZPTFVNRSwKKyAqIFhFTlNORF9P UF9HRVRfVk9MVU1FLCBYRU5TTkRfT1BfTVVURSwgWEVOU05EX09QX1VOTVVURS4KKyAqLworCisv KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlc3BvbnNlcyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhh dmUgdGhlIHNhbWUgbGVuZ3RoICgzMiBvY3RldHMpCisgKgorICogUmVzcG9uc2UgZm9yIGFsbCBy ZXF1ZXN0czoKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAy ICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgfCAgICByZXNlcnZl ZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICoKKyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0CisgKiBvcGVyYXRp b24gLSB1aW50OF90LCBYRU5TTkRfT1BfKiAtIGNvcGllZCBmcm9tIHJlcXVlc3QKKyAqIHN0YXR1 cyAtIGludDMyX3QsIHJlc3BvbnNlIHN0YXR1cywgemVybyBvbiBzdWNjZXNzIGFuZCAtWEVOX0VY WCBvbiBmYWlsdXJlCisgKi8KKworc3RydWN0IHhlbnNuZF9yZXEgeworICAgIHVpbnQxNl90IGlk OworICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNV07CisgICAg dW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuc25kX29wZW5fcmVxIG9wZW47CisgICAgICAgIHN0 cnVjdCB4ZW5zbmRfcndfcmVxIHJ3OworICAgICAgICB1aW50OF90IHJlc2VydmVkWzI0XTsKKyAg ICB9IG9wOworfTsKKworc3RydWN0IHhlbnNuZF9yZXNwIHsKKyAgICB1aW50MTZfdCBpZDsKKyAg ICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHJlc2VydmVkOworICAgIGludDMyX3Qg c3RhdHVzOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzI0XTsKK307CisKK0RFRklORV9SSU5HX1RZ UEVTKHhlbl9zbmRpZiwgc3RydWN0IHhlbnNuZF9yZXEsIHN0cnVjdCB4ZW5zbmRfcmVzcCk7CisK KyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fICovCisKKy8qCisgKiBMb2NhbCB2 YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2lj LW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAq IEVuZDoKKyAqLwotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK