From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v2] displif: add ABI for para-virtual display Date: Fri, 27 Jan 2017 15:08:52 +0200 Message-ID: <1485522532-9399-2-git-send-email-andr2000@gmail.com> References: <1485522532-9399-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 1cX6H6-0007Wv-IH for xen-devel@lists.xenproject.org; Fri, 27 Jan 2017 13:09:08 +0000 Received: by mail-wm0-f68.google.com with SMTP id r126so58158502wmr.3 for ; Fri, 27 Jan 2017 05:09:06 -0800 (PST) In-Reply-To: <1485522532-9399-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: vlad.babchuk@gmail.com, Oleksandr Andrushchenko , andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmly dHVhbGl6ZWQKZGlzcGxheSBkcml2ZXIuCgpUaGlzIHByb3RvY29sIGFpbXMgdG8gcHJvdmlkZSBh IHVuaWZpZWQgcHJvdG9jb2wgd2hpY2ggZml0cyBtb3JlCnNvcGhpc3RpY2F0ZWQgdXNlLWNhc2Vz IHRoYW4gYSBmcmFtZWJ1ZmZlciBkZXZpY2UgY2FuIGhhbmRsZS4gQXQgdGhlCm1vbWVudCBiYXNp YyBmdW5jdGlvbmFsaXR5IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBpbnRlbnRpb24gdG8gZXh0ZW5k OgogIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZl cnMKICBvIGJ1ZmZlcnMgb2YgYXJiaXRyYXJ5IHNpemVzCiAgbyBiZXR0ZXIgY29uZmlndXJhdGlv biBvcHRpb25zIGluY2x1ZGluZyBtdWx0aXBsZSBkaXNwbGF5IHN1cHBvcnQKCk5vdGU6IGV4aXN0 aW5nIGZiaWYgY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBkaXNwbGlmIHJ1bm5pbmcgYXQgdGhl CnNhbWUgdGltZSwgZS5nLiBvbiBMaW51eCBvbmUgcHJvdmlkZXMgZnJhbWVidWZmZXIgYW5kIGFu b3RoZXIgRFJNL0tNUwoKRnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29s IG1heSBpbmNsdWRlOgogIG8gYWxsb3cgZGlzcGxheS9jb25uZWN0b3IgY2xvbmluZwogIG8gYWxs b3cgYWxsb2NhdGluZyBvYmplY3RzIG90aGVyIHRoYW4gZGlzcGxheSBidWZmZXJzCiAgbyBhZGQg cGxhbmVzL292ZXJsYXlzIHN1cHBvcnQKICBvIHN1cHBvcnQgc2NhbGluZwogIG8gc3VwcG9ydCBy b3RhdGlvbgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUmF0aW9uYWxlIGZvciBpbnRyb2R1Y2luZyB0aGlzIHByb3RvY29sIGluc3RlYWQgb2YKdXNp bmcgdGhlIGV4aXN0aW5nIGZiaWY6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CgoxLiBJbi9vdXQgZXZlbnQgc2l6ZXMKICBvIGZiaWYgLSA0MCBvY3Rl dHMKICBvIGRpc3BsaWYgLSA0MCBvY3RldHMKVGhpcyBpcyBvbmx5IHRoZSBpbml0aWFsIHZlcnNp b24gb2YgdGhlIGRpc3BsaWYgcHJvdG9jb2wKd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSBjb3VsZCBi ZSByZXF1ZXN0cyB3aGljaCB3aWxsIG5vdCBmaXQKKFdSVCBpbnRyb2R1Y2luZyBzb21lIEdQVSBy ZWxhdGVkIGZ1bmN0aW9uYWxpdHkKbGF0ZXIgb24pLiBJbiB0aGF0IGNhc2Ugd2UgY2Fubm90IGFs dGVyIGZiaWYgc2l6ZXMgYXMgd2UgbmVlZCB0bwpiZSBiYWNrd2FyZCBjb21wYXRpYmxlIGFuIHdp bGwgYmUgZm9yY2VkIHRvIGhhbmRsZSB0aG9zZQphcGFydCBvZiBmYmlmLgoKMi4gU2hhcmVkIHBh Z2UKRGlzcGxpZiBkb2Vzbid0IHVzZSBhbnl0aGluZyBsaWtlIHN0cnVjdCB4ZW5mYl9wYWdlLCBi dXQKREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0 cnVjdAp4ZW5kaXNwbF9yZXNwKSB3aGljaCBpcyBhIGJldHRlciBhbmQgbW9yZSBjb21tb24gd2F5 LgpPdXRwdXQgZXZlbnRzIHVzZSBhIHNoYXJlZCBwYWdlIHdoaWNoIG9ubHkgaGFzIGluX2NvbnMg YW5kIGluX3Byb2QKYW5kIGFsbCB0aGUgcmVzdCBpcyB1c2VkIGZvciBpbmNvbWluZyBldmVudHMu IEhlcmUgc3RydWN0IHhlbmZiX3BhZ2UKY291bGQgcHJvYmFibHkgYmUgdXNlZCBhcyBpcyBkZXNw aXRlIHRoZSBmYWN0IHRoYXQgaXQgb25seSBoYXMgYSBoYWxmCm9mIGEgcGFnZSBmb3IgaW5jb21p bmcgZXZlbnRzIHdoaWNoIGlzIG9ubHkgNTAgZXZlbnRzLiAoY29uc2lkZXIKc29tZXRoaW5nIGxp a2UgNjBIeiBkaXNwbGF5KQoKMy4gQW1vdW50IG9mIGNoYW5nZXMuCmZiaWYgb25seSBwcm92aWRl cyBYRU5GQl9UWVBFX1VQREFURSBhbmQgWEVORkJfVFlQRV9SRVNJWkUKZXZlbnRzLCBzbyBpdCBs b29rcyBsaWtlIGl0IGlzIGVhc2llciB0byBnZXQgZmIgc3VwcG9ydCBpbnRvIGRpc3BsaWYKdGhh biB2aWNlIHZlcnNhLiBkaXNwbGlmIGF0IHRoZSBtb21lbnQgaGFzIDYgcmVxdWVzdHMgYW5kIDEg ZXZlbnQsCm11bHRpcGxlIGNvbm5lY3RvciBzdXBwb3J0LCBldGMuCgpDaGFuZ2VzIHNpbmNlIGlu aXRpYWw6CiAqIERSTSBjaGFuZ2VkIHRvIERJU1BMLCBwcm90b2NvbCBtYWRlIGdlbmVyaWMKICog bWFqb3IgcmUtd29yayBhZGRyZXNzaW5nIGlzc3VlcyByYWlzZWQgZm9yIHNuZGlmCgpTaWduZWQt b2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+ClNp Z25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNo ZW5rb0BlcGFtLmNvbT4KLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oIHwgNzQ1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCA3NDUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1Ymxp Yy9pby9kaXNwbGlmLmgKCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxp Zi5oIGIveGVuL2luY2x1ZGUvcHVibGljL2lvL2Rpc3BsaWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjk4MzIxMjIzZTVjMgotLS0gL2Rldi9udWxsCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmgKQEAgLTAsMCArMSw3NDUgQEAKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqIGRpc3BsaWYuaAorICoKKyAqIFVuaWZpZWQgZGlzcGxheSBkZXZp Y2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICogZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp bmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIENv cHlyaWdodCAoQykgMjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogQXV0aG9yczog T2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29t PgorICogICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0u Y29tPgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCisjZGVmaW5l IF9fWEVOX1BVQkxJQ19JT19ESVNQTElGX0hfXworCisjaW5jbHVkZSAicmluZy5oIgorI2luY2x1 ZGUgIi4uL2dyYW50X3RhYmxlLmgiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBN YWluIGZlYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBwcm90b2NvbAorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogVGhpcyBwcm90b2NvbCBhaW1zIHRvIHByb3ZpZGUgYSB1bmlmaWVkIHByb3RvY29s IHdoaWNoIGZpdHMgbW9yZQorICogc29waGlzdGljYXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1l YnVmZmVyIGRldmljZSBjYW4gaGFuZGxlLiBBdCB0aGUKKyAqIG1vbWVudCBiYXNpYyBmdW5jdGlv bmFsaXR5IGlzIHN1cHBvcnRlZCB3aXRoIHRoZSBpbnRlbnRpb24gdG8gYmUgZXh0ZW5kZWQ6Cisg KiAgbyBtdWx0aXBsZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQvZGVzdHJveWVkIGZyYW1lYnVmZmVy cworICogIG8gYnVmZmVycyBvZiBhcmJpdHJhcnkgc2l6ZXMKKyAqICBvIGJ1ZmZlciBhbGxvY2F0 aW9uIGF0IGVpdGhlciBiYWNrIG9yIGZyb250IGVuZAorICogIG8gYmV0dGVyIGNvbmZpZ3VyYXRp b24gb3B0aW9ucyBpbmNsdWRpbmcgbXVsdGlwbGUgZGlzcGxheSBzdXBwb3J0CisgKgorICogTm90 ZTogZXhpc3RpbmcgZmJpZiBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIGRpc3BsaWYgcnVubmlu ZyBhdCB0aGUKKyAqIHNhbWUgdGltZSwgZS5nLiBvbiBMaW51eCBvbmUgcHJvdmlkZXMgZnJhbWVi dWZmZXIgYW5kIGFub3RoZXIgRFJNL0tNUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq IERpcmVjdGlvbiBvZiBpbXByb3ZlbWVudHMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEZ1 dHVyZSBleHRlbnNpb25zIHRvIHRoZSBleGlzdGluZyBwcm90b2NvbCBtYXkgaW5jbHVkZToKKyAq ICBvIGRpc3BsYXkvY29ubmVjdG9yIGNsb25pbmcKKyAqICBvIGFsbG9jYXRpb24gb2Ygb2JqZWN0 cyBvdGhlciB0aGFuIGRpc3BsYXkgYnVmZmVycworICogIG8gcGxhbmUvb3ZlcmxheSBzdXBwb3J0 CisgKiAgbyBzY2FsaW5nIHN1cHBvcnQKKyAqICBvIHJvdGF0aW9uIHN1cHBvcnQKKyAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgIEZlYXR1cmUgYW5kIFBhcmFt ZXRlciBOZWdvdGlhdGlvbgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEZyb250LT5i YWNrIG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcg YQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbmRpc3BsX3Jl cSAoaS5lLiwgdGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0 aGUgcmluZyBtYWNyb3MpLiBCYWNrZW5kcyBtdXN0IHNldAorICogeGVuZGlzcGxfcmVxIGFwcHJv cHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgor ICoKKyAqIEJhY2stPmZyb250IG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1aW5nIGEgbmV3IHJl c3BvbnNlLCBzZW5kaW5nIGEKKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25h bCBvbiB4ZW5kaXNwbF9yZXNwIChpLmUuLCB0aGUgZ2VuZXJpYworICogaG9sZC1vZmYgbWVjaGFu aXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZyb250ZW5kcyBtdXN0IHNldAorICog eGVuZGlzcGxfcmVzcCBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNL X0ZPUl9SRVNQT05TRVMoKSkuCisgKgorICogVGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1 YWwgZGlzcGxheSBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4KKyAqIFhlblN0b3JlIHRvIGNv bW11bmljYXRlIGNhcGFiaWxpdGllcyBhbmQgdG8gbmVnb3RpYXRlIG9wZXJhdGluZyBwYXJhbWV0 ZXJzLgorICogVGhpcyBzZWN0aW9uIGVudW1lcmF0ZXMgdGhlc2Ugbm9kZXMgd2hpY2ggcmVzaWRl IGluIHRoZSByZXNwZWN0aXZlIGZyb250IGFuZAorICogYmFja2VuZCBwb3J0aW9ucyBvZiBYZW5T dG9yZSwgZm9sbG93aW5nIHRoZSBYZW5CdXMgY29udmVudGlvbi4KKyAqCisgKiBBbGwgZGF0YSBp biBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gTm9kZXMgc3BlY2lmeWluZyBudW1lcmlj CisgKiB2YWx1ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4gSW50ZWdlciB2YWx1ZSByYW5nZXMg bGlzdGVkIGJlbG93IGFyZQorICogZXhwcmVzc2VkIGFzIGZpeGVkIHNpemVkIGludGVnZXIgdHlw ZXMgY2FwYWJsZSBvZiBzdG9yaW5nIHRoZSBjb252ZXJzaW9uCisgKiBvZiBhIHByb3Blcmx5IGZv cm1hdGVkIG5vZGUgc3RyaW5nLCB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uCisgKgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlIGNv bmZpZ3VyYXRpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBOb3RlOiBkZXBlbmRp bmcgb24gdGhlIHVzZS1jYXNlIGJhY2tlbmQgY2FuIGV4cG9zZSBtb3JlIGRpc3BsYXkgY29ubmVj dG9ycworICogdGhhbiB0aGUgdW5kZXJseWluZyBIVyBwaHlzaWNhbGx5IGhhcyBieSBlbXBsb3lp bmcgU1cgZ3JhcGhpY3MgY29tcG9zaXRvcnMKKyAqCisgKiBUaGlzIGlzIGFuIGV4YW1wbGUgb2Yg YmFja2VuZCBhbmQgZnJvbnRlbmQgY29uZmlndXJhdGlvbjoKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSBCYWNrZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC9mcm9udGVu ZC1pZCA9ICIxIgorICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC9mcm9udGVu ZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wIgorICogL2xvY2FsL2RvbWFpbi8w L2JhY2tlbmQvdmRpc3BsLzEvMC9zdGF0ZSA9ICI0IgorICogL2xvY2FsL2RvbWFpbi8wL2JhY2tl bmQvdmRpc3BsLzEvMC92ZXJzaW9ucyA9ICIxLDIiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2Vu ZC92ZGlzcGwvMS8wL2ZlYXR1cmVzID0gImJlX2FsbG9jIgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIEZyb250ZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2JhY2tlbmQtaWQg PSAiMCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvYmFja2VuZCA9ICIvbG9j YWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wIgorICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC9zdGF0ZSA9ICI0IgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwv MC92ZXJzaW9uID0gIjEiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0 b3IgMCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvY29ubmVjdG9yLTAvcmVzb2x1dGlvbiA9ICIxOTIw eDEwODAiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2Nvbm5lY3Rvci0wL2N0 cmwtcmluZy1yZWYgPSAiMjgzMiIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAv Y29ubmVjdG9yLTAvY3RybC1jaGFubmVsID0gIjE1IgorICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC9jb25uZWN0b3ItMC9ldmVudC1yaW5nLXJlZiA9ICIzODciCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2Nvbm5lY3Rvci0wL2V2ZW50LWNoYW5uZWwgPSAiMTYi CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3RvY29sIHZlcnNpb24gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdmVyc2lvbnMKKyAqICAgICAgVmFsdWVzOiAgICAg ICAgIDxzdHJpbmc+CisgKgorICogICAgICBMaXN0IG9mIFhFTkRJU1BMX0xJU1RfU0VQQVJBVE9S IHNlcGFyYXRlZCBwcm90b2NvbCB2ZXJzaW9ucyBzdXBwb3J0ZWQKKyAqICAgICAgYnkgdGhlIGJh Y2tlbmQuIEZvciBleGFtcGxlICIxLDIsMyIuCisgKgorICogZmVhdHVyZXMKKyAqICAgICAgVmFs dWVzOiAgICAgICAgIDxsaXN0IG9mIHN0cmluZ3M+CisgKgorICogICAgICBYRU5ESVNQTF9MSVNU X1NFUEFSQVRPUiBzZXBhcmF0ZWQgbGlzdCBvZiBmZWF0dXJlcworICogICAgICBYRU5ESVNQTF9G RUFUVVJFX0JFXz8/PyB0aGF0IHRoZSBiYWNrZW5kIHN1cHBvcnRzLgorICoKKyAqICAgICAgYmVf YWxsb2MKKyAqICAgICAgICAgICAgIEJhY2tlbmQgY2FuIGJlIGEgYnVmZmVyIHByb3ZpZGVyL2Fs bG9jYXRvciBkdXJpbmcKKyAqICAgICAgICAgICAgIFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFIG9w ZXJhdGlvbiAoc2VlIGJlbG93IGZvciBuZWdvdGlhdGlvbikuCisgKgorICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJvbnRlbmQgWGVuQnVzIE5v ZGVzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSBBZGRyZXNzaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIGNvbm4taWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50OF90PgorICoKKyAq ICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMgaW5kZXggb2YgdGhlIGNvbm5lY3RvciB3aXRoaW4g dGhlIGRyaXZlci4KKyAqICAgICAgL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC9jb25u ZWN0b3ItPGNvbm4taWQ+LworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJv dG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJz aW9uCisgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgorICoKKyAqICAgICAgUHJvdG9j b2wgdmVyc2lvbiwgY2hvc2VuIGFtb25nIHRoZSBvbmVzIHN1cHBvcnRlZCBieSB0aGUgYmFja2Vu ZC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciBzZXR0aW5n cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcmVzb2x1dGlvbgorICogICAg ICBWYWx1ZXM6ICAgICAgICAgPHdpZHRoLCB1aW50MzJfdD54PGhlaWdodCwgdWludDMyX3Q+Cisg KgorICogICAgICBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBjb25uZWN0b3IgaW4gcGl4ZWxzIHNl cGFyYXRlZCBieQorICogICAgICBYRU5ESVNQTF9SRVNPTFVUSU9OX1NFUEFSQVRPUi4KKyAqCisg Ki0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVy cyAtLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogY3RybC1jaGFubmVsCisgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUg WGVuIGNvbm5lY3RvcidzIGNvbnRyb2wgZXZlbnQgY2hhbm5lbAorICogICAgICB1c2VkIHRvIHNp Z25hbCBhY3Rpdml0eSBpbiB0aGUgcmluZyBidWZmZXIuCisgKgorICogY3RybC1yaW5nLXJlZgor ICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAgICAgVGhlIFhlbiBn cmFudCByZWZlcmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFw CisgKiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVjdG9yJ3Mg Y29udHJvbCByaW5nIGJ1ZmZlci4KKyAqCisgKiBldmVudC1jaGFubmVsCisgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUg WGVuIGNvbm5lY3RvcidzIGV2ZW50IGNoYW5uZWwKKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0 aXZpdHkgaW4gdGhlIHJpbmcgYnVmZmVyLgorICoKKyAqIGV2ZW50LXJpbmctcmVmCisgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludDMyX3Q+CisgKgorICogICAgICBUaGUgWGVuIGdyYW50IHJl ZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKKyAqICAg ICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25uZWN0b3IncyBldmVudCBy aW5nIGJ1ZmZlci4KKyAqLworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU1RBVEUgRElBR1JBTVMKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5kIGJhY2sgc3RhdGUgbm9k ZXMgd2l0aCBpbml0aWFsIHN0YXRlCisgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KKyAqIFRv b2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVuZCBkaXNwbGF5IGNvbmZpZ3VyYXRp b24KKyAqIG5vZGVzIHBlciBkb21haW4uCisgKgorICogRnJvbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJhY2sKKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAg ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBYZW5idXNTdGF0ZUlu aXRpYWxpc2luZyAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBp ZGVudGlmaWNhdGlvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGEuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBh bmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2UuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAorICoKKyAqIG8gUXVlcnkgZnJv bnRlbmQgY29uZmlndXJhdGlvbgorICogbyBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZQorICogICBl dmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAorICogICBjb25uZWN0b3IuCisgKiBvIFB1Ymxp c2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAqICAgdGhhdCB3aWxsIGJlIGluIGVmZmVjdCBkdXJp bmcKKyAqICAgdGhpcyBjb25uZWN0aW9uLgorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAg ICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVJbml0aWFsaXNlZAorICoK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVu ZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSBldmVudCBjaGFubmVscy4KKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoK KyAqICBvIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBPUworICogIHZpcnR1YWwgZGlzcGxheSBjb25u ZWN0b3JzCisgKiBhcyBwZXIgY29uZmlndXJhdGlvbi4KKyAqICAgICAgICAgICAgICB8CisgKiAg ICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIFYKKyAqIFhlbmJ1c1N0YXRlQ29ubmVjdGVk CisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRl VW5rbm93bgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0 YXRlQ2xvc2VkCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVz U3RhdGVDbG9zaW5nCisgKiBvIFJlbW92ZSB2aXJ0dWFsIGRpc3BsYXkgZGV2aWNlCisgKiBvIFJl bW92ZSBldmVudCBjaGFubmVscworICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8 CisgKiAgICAgICAgICAgICAgVgorICogWGVuYnVzU3RhdGVDbG9zZWQKKyAqCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVCBDT0RF UworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZf Q1JFQVRFICAgICAgIDAKKyNkZWZpbmUgWEVORElTUExfT1BfREJVRl9ERVNUUk9ZICAgICAgMQor I2RlZmluZSBYRU5ESVNQTF9PUF9GQl9BVFRBQ0ggICAgICAgICAyCisjZGVmaW5lIFhFTkRJU1BM X09QX0ZCX0RFVEFDSCAgICAgICAgIDMKKyNkZWZpbmUgWEVORElTUExfT1BfU0VUX0NPTkZJRyAg ICAgICAgNAorI2RlZmluZSBYRU5ESVNQTF9PUF9QR19GTElQICAgICAgICAgICA1CisKKy8qCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVWRU5UIENPREVTCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNkZWZpbmUgWEVORElT UExfRVZUX1BHX0ZMSVAgICAgICAgICAgMAorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1MsIEhF TFBFUlMKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5ESVNQTF9EUklW RVJfTkFNRSAgICAgICAgICAidmRpc3BsIgorCisjZGVmaW5lIFhFTkRJU1BMX0xJU1RfU0VQQVJB VE9SICAgICAgICIsIgorI2RlZmluZSBYRU5ESVNQTF9SRVNPTFVUSU9OX1NFUEFSQVRPUiAieCIK Ky8qIEZpZWxkIG5hbWVzICovCisjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0ZFQVRVUkVTICAgICAg ICJmZWF0dXJlcyIKKyNkZWZpbmUgWEVORElTUExfRklFTERfQ1RSTF9SSU5HX1JFRiAgImN0cmwt cmluZy1yZWYiCisjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0NUUkxfQ0hBTk5FTCAgICJjdHJsLWNo YW5uZWwiCisjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0VWVF9SSU5HX1JFRiAgICJldmVudC1yaW5n LXJlZiIKKyNkZWZpbmUgWEVORElTUExfRklFTERfRVZUX0NIQU5ORUwgICAgImV2ZW50LWNoYW5u ZWwiCisjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX1JFU09MVVRJT04gICAgICJyZXNvbHV0aW9uIgor CisjZGVmaW5lIFhFTkRJU1BMX0ZFQVRVUkVfQkVfQUxMT0MgICAgICJiZV9hbGxvYyIKKworLyog UGF0aCBlbnRyaWVzICovCisjZGVmaW5lIFhFTkRJU1BMX1BBVEhfQ09OTkVDVE9SX0ZNVCAgICJj b25uZWN0b3ItJWQiCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgU1RBVFVTIFJFVFVSTiBDT0RFUworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqIFN0YXR1cyByZXR1cm4gY29kZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIC1YRU5f RVhYIG9uIGZhaWx1cmUuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBc3N1bXB0aW9ucworICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogbyB1c2FnZSBvZiBncmFudCByZWZlcmVuY2UgMCBhcyBpbnZhbGlkIGdyYW50IHJlZmVyZW5j ZToKKyAqICAgZ3JhbnQgcmVmZXJlbmNlIDAgaXMgdmFsaWQsIGJ1dCBuZXZlciBleHBvc2VkIHRv IGEgUFYgZHJpdmVyLAorICogICBiZWNhdXNlIG9mIHRoZSBmYWN0IGl0IGlzIGFscmVhZHkgaW4g dXNlL3Jlc2VydmVkIGJ5IHRoZSBQViBjb25zb2xlLgorICogbyBhbGwgcmVmZXJlbmNlcyBpbiB0 aGlzIGRvY3VtZW50IHRvIHBhZ2Ugc2l6ZXMgbXVzdCBiZSB0cmVhdGVkCisgKiAgIGFzIHBhZ2Vz IG9mIHNpemUgWEVOX1BBR0VfU0laRSB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgorICoKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqICAgICAgIERlc2NyaXB0aW9uIG9mIHRoZSBwcm90b2NvbCBi ZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRyaXZlcgorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorICoKKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0dWFsIGRpc3BsYXkgZHJpdmVy IGNvbW11bmljYXRlIHdpdGgKKyAqIGVhY2ggb3RoZXIgdXNpbmcgc2hhcmVkIHBhZ2VzIGFuZCBl dmVudCBjaGFubmVscy4KKyAqIFNoYXJlZCBwYWdlIGNvbnRhaW5zIGEgcmluZyB3aXRoIHJlcXVl c3QvcmVzcG9uc2UgcGFja2V0cy4KKyAqCisgKiBBbGwgcmVzZXJ2ZWQgZmllbGRzIGluIHRoZSBz dHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgMC4KKyAqIERpc3BsYXkgYnVmZmVycydzIGNvb2tpZSBv ZiB2YWx1ZSAwIHRyZWF0ZWQgYXMgaW52YWxpZC4KKyAqIEZyYW1lYnVmZmVyJ3MgY29va2llIG9m IHZhbHVlIDAgdHJlYXRlZCBhcyBpbnZhbGlkLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBSZXF1ZXN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBBbGwgcmVxdWVzdHMvcmVzcG9uc2VzLCB3aGljaCBhcmUgbm90IGNvbm5lY3RvciBz cGVjaWZpYywgbXVzdCBiZSBzZW50IG92ZXIKKyAqIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVj dG9yIHdpdGggaW5kZXggMC4KKyAqCisgKiBGb3IgYWxsIHJlcXVlc3QvcmVzcG9uc2UvZXZlbnQg cGFja2V0cyB0aGF0IHVzZSBjb29raWVzOgorICogICBkYnVmX2Nvb2tpZSAtIHVpbnQ2NF90LCB1 bmlxdWUgdG8gZ3Vlc3QgZG9tYWluIHZhbHVlIHVzZWQgYnkgdGhlIGJhY2tlbmQKKyAqICAgICB0 byBtYXAgcmVtb3RlIGRpc3BsYXkgYnVmZmVyIHRvIGl0cyBsb2NhbCBvbmUKKyAqICAgZmJfY29v a2llIC0gdWludDY0X3QsIHVuaXF1ZSB0byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUg YmFja2VuZAorICogICAgIHRvIG1hcCByZW1vdGUgZnJhbWVidWZmZXIgdG8gaXRzIGxvY2FsIG9u ZQorICoKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDY0IG9j dGV0cykKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICogICAg ICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAz ICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAg ICAgICAgICAgICAgfCAgICBvcGVyYXRpb24gICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiAgIGlkIC0g dWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQorICogICBv cGVyYXRpb24gLSB1aW50OF90LCBvcGVyYXRpb24gY29kZSwgWEVORElTUExfT1BfPz8/CisgKgor ICogUmVxdWVzdCBkYnVmIGNyZWF0aW9uIC0gcmVxdWVzdCBjcmVhdGlvbiBvZiBhIGRpc3BsYXkg YnVmZmVyLgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0NSRUFURSB8ICAgcmVzZXJ2ZWQg ICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBsb3cgMzItYml0ICAg ICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICB8 IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl cl9zeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMzYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgIGdyZWZfZGlyZWN0b3J5X3N0YXJ0ICAgICAgICAgICAgICAgICAgICAgICB8IDQwCisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqCisgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNv bm5lY3RvciB3aXRoIGluZGV4IDAuCisgKgorICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4g cGl4ZWxzCisgKiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscworICogYnBwIC0g dWludDMyX3QsIGJpdHMgcGVyIHBpeGVsCisgKiBidWZmZXJfc3ogLSB1aW50MzJfdCwgYnVmZmVy IHNpemUgdG8gYmUgYWxsb2NhdGVkLCBvY3RldHMKKyAqIGZsYWdzIC0gdWludDMyX3QsIGZsYWdz IG9mIHRoZSBvcGVyYXRpb24KKyAqICAgbyBYRU5ESVNQTF9EQlVGX0ZMR19SRVFfQUxMT0MgLSBp ZiBzZXQsIHRoZW4gYmFja2VuZCBpcyByZXF1ZXN0ZWQKKyAqICAgICB0byBhbGxvY2F0ZSB0aGUg YnVmZmVyIHdpdGggdGhlIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW4gdGhpcyByZXF1ZXN0LgorICog ICAgIFBhZ2UgZGlyZWN0b3J5IGlzIGhhbmRsZWQgYXMgZm9sbG93czoKKyAqICAgICAgIEZyb250 ZW5kIG9uIHJlcXVlc3Q6CisgKiAgICAgICAgIG8gYWxsb2NhdGVzIHBhZ2VzIGZvciB0aGUgZGly ZWN0b3J5CisgKiAgICAgICAgIG8gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFnZXMgb2Yg dGhlIGRpcmVjdG9yeQorICogICAgICAgICBvIHNldHMgZ3JlZl9kaXJfbmV4dF9wYWdlIGZpZWxk cworICogICAgICAgQmFja2VuZCBvbiByZXNwb25zZToKKyAqICAgICAgICAgbyBncmFudHMgcGVy bWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgYnVmZmVyIGFsbG9jYXRlZAorICogICAgICAg ICBvIGZpbGxzIGluIHBhZ2UgZGlyZWN0b3J5IHdpdGggZ3JhbnQgcmVmZXJlbmNlcworICogZ3Jl Zl9kaXJlY3Rvcnlfc3RhcnQgLSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0 IHNoYXJlZCBwYWdlCisgKiAgIGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBB dCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmIHNoYXJlZAorICogICBidWZmZXIgc2l6ZSAgKGJ1 ZmZlcl9zeikgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhpcyBzaW5nbGUgcGFn ZSwKKyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBtdXN0IGJlIHN1cHBsaWVk IChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCisgKiAgIGJlbG93KQorICovCisKKyNkZWZpbmUgWEVO RElTUExfREJVRl9GTEdfUkVRX0FMTE9DICAgICAgIDB4MDAwMQorCitzdHJ1Y3QgeGVuZGlzcGxf ZGJ1Zl9jcmVhdGVfcmVxIHsKKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKKyAgICB1aW50MzJf dCB3aWR0aDsKKyAgICB1aW50MzJfdCBoZWlnaHQ7CisgICAgdWludDMyX3QgYnBwOworICAgIHVp bnQzMl90IGJ1ZmZlcl9zejsKKyAgICB1aW50MzJfdCBmbGFnczsKKyAgICBncmFudF9yZWZfdCBn cmVmX2RpcmVjdG9yeV9zdGFydDsKK307CisKKy8qCisgKiBTaGFyZWQgcGFnZSBmb3IgWEVORElT UExfT1BfREJVRl9DUkVBVEUgYnVmZmVyIGRlc2NyaXB0b3IgKGdyZWZfZGlyZWN0b3J5IGluCisg KiB0aGUgcmVxdWVzdCkgZW1wbG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBh Z2VzIG9mIHRoZSBzaGFyZWQKKyAqIGRhdGEgYnVmZmVyOgorICogICAgICAgICAwICAgICAgICAg ICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJfbmV4 dF9wYWdlICAgICAgICAgICAgICAgICAgICAgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbaV0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IGkqNCs4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBncmVmW04gLSAxXSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTio0KzgKKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKworICoKKyAqIGdyZWZfZGlyX25leHRfcGFnZSAtIGdyYW50X3JlZl90LCByZWZlcmVu Y2UgdG8gdGhlIG5leHQgcGFnZSBkZXNjcmliaW5nCisgKiAgIHBhZ2UgZGlyZWN0b3J5LiBNdXN0 IGJlIDAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMgaW4gdGhlIGxpc3QuCisgKiBncmVmW2ld IC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byBhIHNoYXJlZCBwYWdlIG9mIHRoZSBidWZmZXIK KyAqICAgYWxsb2NhdGVkIGF0IFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFCisgKgorICogTnVtYmVy IG9mIGdyYW50X3JlZl90IGVudHJpZXMgaW4gdGhlIHdob2xlIHBhZ2UgZGlyZWN0b3J5IGlzIG5v dAorICogcGFzc2VkLCBidXQgaW5zdGVhZCBjYW4gYmUgY2FsY3VsYXRlZCBhczoKKyAqICAgbnVt X2dyZWZzX3RvdGFsID0gKFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFLmJ1ZmZlcl9zeiArIFhFTl9Q QUdFX1NJWkUgLSAxKSAvCisgKiAgICAgICBYRU5fUEFHRV9TSVpFCisgKi8KKworc3RydWN0IHhl bmRpc3BsX3BhZ2VfZGlyZWN0b3J5IHsKKyAgICBncmFudF9yZWZfdCBncmVmX2Rpcl9uZXh0X3Bh Z2U7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCit9Owor CisvKgorICogUmVxdWVzdCBkYnVmIGRlc3RydWN0aW9uIC0gZGVzdHJveSBhIHByZXZpb3VzbHkg YWxsb2NhdGVkIGRpc3BsYXkgYnVmZmVyOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEg ICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0RF U1RST1l8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nv b2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAg ICAgICAgICAgICAgICAgICB8IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAy MAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBNdXN0IGJlIHNlbnQgb3Zl ciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRoIGluZGV4IDAuCisgKi8KKworc3Ry dWN0IHhlbmRpc3BsX2RidWZfZGVzdHJveV9yZXEgeworICAgIHVpbnQ2NF90IGRidWZfY29va2ll OworfTsKKworLyoKKyAqIFJlcXVlc3QgZnJhbWVidWZmZXIgYXR0YWNobWVudCAtIHJlcXVlc3Qg YXR0YWNobWVudCBvZiBhIGZyYW1lYnVmZmVyIHRvCisgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZGlz cGxheSBidWZmZXIuCisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAg ICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8IF9PUF9GQl9BVFRBQ0ggIHwgICByZXNl cnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGxvdyAzMi1i aXQgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAg ICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZi X2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQg ICAgICAgICAgICAgICAgICAgICAgfCAyNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMjgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMyCisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxfZm9ybWF0ICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAzNgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg NDAKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogTXVzdCBiZSBzZW50IG92 ZXIgY29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgorICoKKyAqIHdp ZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBpeGVscworICogaGVpZ2h0IC0gdWludDMyX3QsIGhl aWdodCBpbiBwaXhlbHMKKyAqIHBpeGVsX2Zvcm1hdCAtIHVpbnQzMl90LCBwaXhlbCBmb3JtYXQg b2YgdGhlIGZyYW1lYnVmZmVyLCBGT1VSQ0MgY29kZQorICovCisKK3N0cnVjdCB4ZW5kaXNwbF9m Yl9hdHRhY2hfcmVxIHsKKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKKyAgICB1aW50NjRfdCBm Yl9jb29raWU7CisgICAgdWludDMyX3Qgd2lkdGg7CisgICAgdWludDMyX3QgaGVpZ2h0OworICAg IHVpbnQzMl90IHBpeGVsX2Zvcm1hdDsKK307CisKKy8qCisgKiBSZXF1ZXN0IGZyYW1lYnVmZmVy IGRldGFjaCAtIGRldGFjaCBhIHByZXZpb3VzbHkKKyAqIGF0dGFjaGVkIGZyYW1lYnVmZmVyIGZy b20gdGhlIGRpc3BsYXkgYnVmZmVyIGluIHJlcXVlc3Q6CisgKiAgICAgICAgIDAgICAgICAgICAg ICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cisg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICBf T1BfRkJfREVUQUNIIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2ggMzIt Yml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIE11c3QgYmUg c2VudCBvdmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KKyAq LworCitzdHJ1Y3QgeGVuZGlzcGxfZmJfZGV0YWNoX3JlcSB7CisgICAgdWludDY0X3QgZmJfY29v a2llOworfTsKKworLyoKKyAqIFJlcXVlc3QgY29uZmlndXJhdGlvbiBzZXQvcmVzZXQgLSByZXF1 ZXN0IHRvIHNldCBvciByZXNldAorICogdGhlIGNvbmZpZ3VyYXRpb24vbW9kZSBvZiB0aGUgZGlz cGxheToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAg ICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX1NFVF9DT05GSUcgfCAgIHJlc2VydmVkICAg ICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0ICAgICAg ICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAx NgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdo dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnBwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDQwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0NAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDY0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBQYXNzIGFsbCB6ZXJvcyB0byByZXNl dCwgb3RoZXJ3aXNlIGNvbW1hbmQgaXMgdHJlYXRlZCBhcworICogY29uZmlndXJhdGlvbiBzZXQu CisgKiBJZiB0aGlzIGlzIGEgc2V0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdCB0aGVuIGZyYW1lYnVm ZmVyJ3MgY29va2llIHRlbGxzCisgKiB0aGUgZGlzcGxheSB3aGljaCBmcmFtZWJ1ZmZlci9kYnVm IG11c3QgYmUgZGlzcGxheWVkIHdoaWxlIGVuYWJsaW5nIGRpc3BsYXkKKyAqIChhcHBseWluZyBj b25maWd1cmF0aW9uKS4KKyAqCisgKiB4IC0gdWludDMyX3QsIHN0YXJ0aW5nIHBvc2l0aW9uIGlu IHBpeGVscyBieSBYIGF4aXMKKyAqIHkgLSB1aW50MzJfdCwgc3RhcnRpbmcgcG9zaXRpb24gaW4g cGl4ZWxzIGJ5IFkgYXhpcworICogd2lkdGggLSB1aW50MzJfdCwgd2lkdGggaW4gcGl4ZWxzCisg KiBoZWlnaHQgLSB1aW50MzJfdCwgaGVpZ2h0IGluIHBpeGVscworICogYnBwIC0gdWludDMyX3Qs IGJpdHMgcGVyIHBpeGVsCisgKi8KKworc3RydWN0IHhlbmRpc3BsX3NldF9jb25maWdfcmVxIHsK KyAgICB1aW50NjRfdCBmYl9jb29raWU7CisgICAgdWludDMyX3QgeDsKKyAgICB1aW50MzJfdCB5 OworICAgIHVpbnQzMl90IHdpZHRoOworICAgIHVpbnQzMl90IGhlaWdodDsKKyAgICB1aW50MzJf dCBicHA7Cit9OworCisvKgorICogUmVxdWVzdCBwYWdlIGZsaXAgLSByZXF1ZXN0IHRvIGZsaXAg YSBwYWdlIGlkZW50aWZpZWQgYnkgdGhlIGZyYW1lYnVmZmVyCisgKiBjb29raWU6CisgKiAgICAg ICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMg ICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAg ICAgICAgICAgICB8IF9PUF9QR19GTElQICAgIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAg ICAgfCAxMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJf Y29va2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv fAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwor ICovCisKK3N0cnVjdCB4ZW5kaXNwbF9wYWdlX2ZsaXBfcmVxIHsKKyAgICB1aW50NjRfdCBmYl9j b29raWU7Cit9OworCisvKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJl c3BvbnNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEFsbCByZXNw b25zZSBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMpCisgKgorICogQWxs IHJlc3BvbnNlIHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICogICAgICAgICAwICAgICAg ICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3Rl dAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAg fCAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA2NAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogaWQgLSB1aW50MTZfdCwgcHJpdmF0 ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGZyb20gcmVxdWVzdAorICogc3RhdHVzIC0gaW50MzJfdCwg cmVzcG9uc2Ugc3RhdHVzLCB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIC1YRU5fRVhYIG9uIGZhaWx1cmUK KyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2ZW50cyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogRXZlbnRzIGFyZSBzZW50IHZpYSBh IHNoYXJlZCBwYWdlIGFsbG9jYXRlZCBieSB0aGUgZnJvbnQgYW5kIHByb3BhZ2F0ZWQgYnkKKyAq ICAgZXZlbnQtY2hhbm5lbC9ldmVudC1yaW5nLXJlZiBYZW5TdG9yZSBlbnRyaWVzCisgKiBBbGwg ZXZlbnQgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQorICogQWxsIGV2 ZW50IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICogICAgICAgICAwICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICAg IHR5cGUgICAgICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogaWQgLSB1aW50MTZfdCwgZXZlbnQg aWQsIG1heSBiZSB1c2VkIGJ5IGZyb250CisgKiB0eXBlIC0gdWludDhfdCwgdHlwZSBvZiB0aGUg ZXZlbnQKKyAqCisgKgorICogUGFnZSBmbGlwIGNvbXBsZXRlIGV2ZW50IC0gZXZlbnQgZnJvbSBi YWNrIHRvIGZyb250IG9uIHBhZ2UgZmxpcCBjb21wbGV0ZWQ6CisgKiAgICAgICAgIDAgICAgICAg ICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8 ICAgX0VWVF9QR19GTElQIHwgICByZXNlcnZlZCAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCA4CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAxMgorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGhpZ2gg MzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTYKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDIwCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICovCisKK3N0cnVj dCB4ZW5kaXNwbF9wZ19mbGlwX2V2dCB7CisgICAgdWludDY0X3QgZmJfY29va2llOworfTsKKwor c3RydWN0IHhlbmRpc3BsX3JlcSB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCBvcGVy YXRpb247CisgICAgdWludDhfdCByZXNlcnZlZFs1XTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0 cnVjdCB4ZW5kaXNwbF9kYnVmX2NyZWF0ZV9yZXEgZGJ1Zl9jcmVhdGU7CisgICAgICAgIHN0cnVj dCB4ZW5kaXNwbF9kYnVmX2Rlc3Ryb3lfcmVxIGRidWZfZGVzdHJveTsKKyAgICAgICAgc3RydWN0 IHhlbmRpc3BsX2ZiX2F0dGFjaF9yZXEgZmJfYXR0YWNoOworICAgICAgICBzdHJ1Y3QgeGVuZGlz cGxfZmJfZGV0YWNoX3JlcSBmYl9kZXRhY2g7CisgICAgICAgIHN0cnVjdCB4ZW5kaXNwbF9zZXRf Y29uZmlnX3JlcSBzZXRfY29uZmlnOworICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfcGFnZV9mbGlw X3JlcSBwZ19mbGlwOworICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKKyAgICB9IG9wOwor fTsKKworc3RydWN0IHhlbmRpc3BsX3Jlc3AgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQ4 X3Qgb3BlcmF0aW9uOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CisgICAgaW50MzJfdCBzdGF0dXM7 CisgICAgdWludDhfdCByZXNlcnZlZDFbNTZdOworfTsKKworc3RydWN0IHhlbmRpc3BsX2V2dCB7 CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCB0eXBlOworICAgIHVpbnQ4X3QgcmVzZXJ2 ZWRbNV07CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxfcGdfZmxpcF9ldnQg cGdfZmxpcDsKKyAgICAgICAgdWludDhfdCByZXNlcnZlZFs1Nl07CisgICAgfSBvcDsKK307CisK K0RFRklORV9SSU5HX1RZUEVTKHhlbl9kaXNwbGlmLCBzdHJ1Y3QgeGVuZGlzcGxfcmVxLCBzdHJ1 Y3QgeGVuZGlzcGxfcmVzcCk7CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBCYWNr IHRvIGZyb250IGV2ZW50cyBkZWxpdmVyeQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSW4g b3JkZXIgdG8gZGVsaXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20gYmFjayB0byBmcm9udCBh IHNoYXJlZCBwYWdlIGlzCisgKiBhbGxvY2F0ZWQgYnkgZnJvbnQgYW5kIGl0cyBncmVmcyBwcm9w YWdhdGVkIHRvIGJhY2sgdmlhIFhlblN0b3JlIGVudHJpZXMKKyAqIChldmVudC1YWFgpLgorICog VGhpcyBwYWdlIGhhcyBhIGNvbW1vbiBoZWFkZXIgdXNlZCBieSBib3RoIGZyb250IGFuZCBiYWNr IHRvIHN5bmNocm9uaXplCisgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZlbnQncyByaW5nIGJ1ZmZl ciwgd2hpbGUgYmFjayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQorICogZXZlbnRzIGFuZCBmcm9u dCBiZWluZyBhIGNvbnN1bWVyLiBUaGUgcmVzdCBvZiB0aGUgcGFnZSBhZnRlciB0aGUgaGVhZGVy CisgKiBpcyB1c2VkIGZvciBldmVudCBwYWNrZXRzLgorICoKKyAqIFVwb24gcmVjZXB0aW9uIG9m IGFuIGV2ZW50KHMpIGZyb250IG1heSBjb25maXJtIGl0cyByZWNlcHRpb24KKyAqIGZvciBlaXRo ZXIgZWFjaCBldmVudCwgZ3JvdXAgb2YgZXZlbnRzIG9yIG5vbmUuCisgKi8KKworc3RydWN0IHhl bmRpc3BsX2V2ZW50X3BhZ2UgeworICAgIHVpbnQzMl90IGluX2NvbnM7CisgICAgdWludDMyX3Qg aW5fcHJvZDsKKyAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKK307CisKKyNkZWZpbmUgWEVORElT UExfRVZFTlRfUEFHRV9TSVpFIDQwOTYKKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19PRkZTIChz aXplb2Yoc3RydWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2UpKQorI2RlZmluZSBYRU5ESVNQTF9JTl9S SU5HX1NJWkUgKFhFTkRJU1BMX0VWRU5UX1BBR0VfU0laRSAtIFhFTkRJU1BMX0lOX1JJTkdfT0ZG UykKKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19MRU4gKFhFTkRJU1BMX0lOX1JJTkdfU0laRSAv IHNpemVvZihzdHJ1Y3QgeGVuZGlzcGxfZXZ0KSkKKyNkZWZpbmUgWEVORElTUExfSU5fUklORyhw YWdlKSBcCisJKChzdHJ1Y3QgeGVuZGlzcGxfZXZ0ICopKChjaGFyICopKHBhZ2UpICsgWEVORElT UExfSU5fUklOR19PRkZTKSkKKyNkZWZpbmUgWEVORElTUExfSU5fUklOR19SRUYocGFnZSwgaWR4 KSBcCisJKFhFTkRJU1BMX0lOX1JJTkcoKHBhZ2UpKVsoaWR4KSAlIFhFTkRJU1BMX0lOX1JJTkdf TEVOXSkKKworI2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19JT19ESVNQTElGX0hfXyAqLwotLSAKMi43 LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK