From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-x22c.google.com ([2a00:1450:400c:c09::22c]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aqylk-0007DM-Kf for barebox@lists.infradead.org; Fri, 15 Apr 2016 08:06:42 +0000 Received: by mail-wm0-x22c.google.com with SMTP id u206so20527395wme.1 for ; Fri, 15 Apr 2016 01:06:03 -0700 (PDT) From: Raphael Poggi Date: Fri, 15 Apr 2016 10:05:25 +0200 Message-Id: <1460707525-16590-1-git-send-email-poggi.raph@gmail.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [RFC] arch: add minimal aarch64 support To: barebox@lists.infradead.org Cc: Raphael Poggi VGhpcyBjb21taXQgYWRkIG1pbmltYWwgc3VwcG9ydCBmb3IgYWFyY2g2NC9hcm02NCBhcmNoaXRl Y3R1cmUuCgpUaGUgbWFpbiBjdXJyZW50IGxpbWl0YXRpb25zIGFyZToKCS0gTU1VIG5vdCBpbXBs ZW1lbnRlZAoJLSBiYXJlYm94IHJ1bm5pbmcgYXQgRUwxCgktIGJhcmVib3ggZW52IG5vdCB3b3Jr aW5nCgktIG9ubHkgdGVzdCBvbiBxZW11CgpTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIFBvZ2dpIDxw b2dnaS5yYXBoQGdtYWlsLmNvbT4KLS0tCiBhcmNoL2FybTY0L0tjb25maWcgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDE0MCArKysrKysrCiBhcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwOSArKysrKwogYXJjaC9hcm02NC9ib2FyZHMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgfCAgIDIgKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9LY29uZmln ICAgICAgICAgICAgICAgfCAgIDggKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9NYWtlZmlsZSAg ICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvY29uZmlnICAg ICAgICAgICAgfCAgMzggKysKIGFyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvaW5pdC5jICAgICAgICAg ICAgICAgIHwgIDUyICsrKwogYXJjaC9hcm02NC9ib2FyZHMvdmlydC9sb3dsZXZlbC5jICAgICAg ICAgICAgfCAgMTggKwogYXJjaC9hcm02NC9jb25maWdzL3ZpcnRfZGVmY29uZmlnICAgICAgICAg ICAgfCAgNTMgKysrCiBhcmNoL2FybTY0L2NwdS9LY29uZmlnICAgICAgICAgICAgICAgICAgICAg ICB8ICA1NCArKysKIGFyY2gvYXJtNjQvY3B1L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAg IHwgIDMwICsrCiBhcmNoL2FybTY0L2NwdS9jYWNoZS1hcm12OC5TICAgICAgICAgICAgICAgICB8 IDE2OCArKysrKysrKwogYXJjaC9hcm02NC9jcHUvY2FjaGUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAxMTAgKysrKysrCiBhcmNoL2FybTY0L2NwdS9jcHUuYyAgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwNiArKysrKwogYXJjaC9hcm02NC9jcHUvY3B1aW5mby5jICAgICAgICAgICAgICAg ICAgICAgfCAyMTEgKysrKysrKysrKwogYXJjaC9hcm02NC9jcHUvZW50cnkuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgMzggKysKIGFyY2gvYXJtNjQvY3B1L2VudHJ5LmggICAgICAgICAgICAg ICAgICAgICAgIHwgIDE4ICsKIGFyY2gvYXJtNjQvY3B1L2V4Y2VwdGlvbnMuUyAgICAgICAgICAg ICAgICAgIHwgMTI3ICsrKysrKwogYXJjaC9hcm02NC9jcHUvaW50ZXJydXB0cy5jICAgICAgICAg ICAgICAgICAgfCAxNjIgKysrKysrKysKIGFyY2gvYXJtNjQvY3B1L2xvd2xldmVsLlMgICAgICAg ICAgICAgICAgICAgIHwgIDQ5ICsrKwogYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5LmMgICAgICAg ICAgICAgICAgICAgfCAgNTMgKysrCiBhcmNoL2FybTY0L2NwdS9tbXUtZWFybHkuaCAgICAgICAg ICAgICAgICAgICB8ICAgNiArCiBhcmNoL2FybTY0L2NwdS9tbXUuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8IDQ5MiArKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9hcm02NC9jcHUvbW11 LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKwogYXJjaC9hcm02NC9jcHUvbW11aW5m by5jICAgICAgICAgICAgICAgICAgICAgfCAxMDQgKysrKysKIGFyY2gvYXJtNjQvY3B1L25vLW1t dS5jICAgICAgICAgICAgICAgICAgICAgIHwgIDYxICsrKwogYXJjaC9hcm02NC9jcHUvc3RhcnQt cGJsLmMgICAgICAgICAgICAgICAgICAgfCAxMDIgKysrKysKIGFyY2gvYXJtNjQvY3B1L3N0YXJ0 LmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjQ3ICsrKysrKysrKysrKwogYXJjaC9hcm02NC9j cHUvdW5jb21wcmVzcy5jICAgICAgICAgICAgICAgICAgfCAxMTEgKysrKysrCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2FybWxpbnV4LmggICAgICAgICAgICB8ICA0MyArKwogYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9hc3NlbWJsZXIuaCAgICAgICAgICAgfCAxMTYgKysrKysrCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2JhcmVib3gtYXJtLWhlYWQuaCAgICB8ICA2NSArKysKIGFyY2gvYXJtNjQv aW5jbHVkZS9hc20vYmFyZWJveC1hcm0uaCAgICAgICAgIHwgMTY1ICsrKysrKysrCiBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2JhcmVib3guaCAgICAgICAgICAgICB8ICAxMiArCiBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2JpdG9wcy5oICAgICAgICAgICAgICB8ICA0OCArKysKIGFyY2gvYXJtNjQv aW5jbHVkZS9hc20vYml0c3BlcmxvbmcuaCAgICAgICAgIHwgICAxICsKIGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vYnl0ZW9yZGVyLmggICAgICAgICAgIHwgIDMyICsrCiBhcmNoL2FybTY0L2luY2x1 ZGUvYXNtL2NhY2hlLWwyeDAuaCAgICAgICAgICB8IDEwMSArKysrKwogYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9jYWNoZS5oICAgICAgICAgICAgICAgfCAgMTYgKwogYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9jb21tb24uaCAgICAgICAgICAgICAgfCAgNDggKysrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2NwdXR5cGUuaCAgICAgICAgICAgICB8IDEwMCArKysrKwogYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9kZWJ1Z19sbF9wbDAxMS5oICAgICAgfCAgMjUgKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9h c20vZG1hLmggICAgICAgICAgICAgICAgIHwgIDQ2ICsrKwogYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9lbGYuaCAgICAgICAgICAgICAgICAgfCAxMTkgKysrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2VycmF0YS5oICAgICAgICAgICAgICB8ICA3OSArKysrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2dpYy5oICAgICAgICAgICAgICAgICB8IDEyOCArKysrKysKIGFyY2gvYXJtNjQvaW5jbHVk ZS9hc20vaGFyZHdhcmUvYXJtX3RpbWVyLmggIHwgIDM4ICsrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2hhcmR3YXJlL3NwODEwLmggICAgICB8ICA2OCArKysrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2lvLmggICAgICAgICAgICAgICAgICB8ICA4NyArKysrCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL2xpbmthZ2UuaCAgICAgICAgICAgICB8ICAxMSArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNt L21lbW9yeS5oICAgICAgICAgICAgICB8ICAxOSArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL21t dS5oICAgICAgICAgICAgICAgICB8ICA2NSArKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW9k dWxlLmggICAgICAgICAgICAgIHwgIDEzICsKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJs ZS5oICAgICAgICAgICAgIHwgIDkwICsrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Bvc2l4 X3R5cGVzLmggICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oICAgICAgICAgICB8IDEzMSArKysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRyYWNl LmggICAgICAgICAgICAgIHwgIDM0ICsrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlY3Rpb25z LmggICAgICAgICAgICB8ICAzNCArKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZW1paG9zdGlu Zy5oICAgICAgICAgfCAgMTkgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZXR1cC5oICAgICAg ICAgICAgICAgfCAyMTYgKysrKysrKysrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdGFja3Ry YWNlLmggICAgICAgICAgfCAgMTYgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdHJpbmcuaCAg ICAgICAgICAgICAgfCAgMTMgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zd2FiLmggICAgICAg ICAgICAgICAgfCAgNjkgKysrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXN0ZW0uaCAgICAg ICAgICAgICAgfCAxMjUgKysrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3RlbV9pbmZv LmggICAgICAgICB8IDE5NCArKysrKysrKysKIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHlwZXMu aCAgICAgICAgICAgICAgIHwgIDU0ICsrKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bmFsaWdu ZWQuaCAgICAgICAgICAgfCAgMTkgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bmlmaWVkLmgg ICAgICAgICAgICAgfCAxMjcgKysrKysrCiBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Vud2luZC5o ICAgICAgICAgICAgICB8ICA1MSArKysKIGFyY2gvYXJtNjQvbGliL01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICAgIHwgIDE2ICsKIGFyY2gvYXJtNjQvbGliL2FybWxpbnV4LmMgICAgICAgICAg ICAgICAgICAgIHwgMjc1ICsrKysrKysrKysrKysKIGFyY2gvYXJtNjQvbGliL2FzbS1vZmZzZXRz LmMgICAgICAgICAgICAgICAgIHwgIDE2ICsKIGFyY2gvYXJtNjQvbGliL2JhcmVib3gubGRzICAg ICAgICAgICAgICAgICAgIHwgMTI1ICsrKysrKwogYXJjaC9hcm02NC9saWIvYmFyZWJveC5sZHMu UyAgICAgICAgICAgICAgICAgfCAxMjUgKysrKysrCiBhcmNoL2FybTY0L2xpYi9ib290bS5jICAg ICAgICAgICAgICAgICAgICAgICB8IDU3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysKIGFy Y2gvYXJtNjQvbGliL2Jvb3R1LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ0ICsrKwogYXJj aC9hcm02NC9saWIvYm9vdHouYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMzYgKysrKysrKwog YXJjaC9hcm02NC9saWIvY29weV90ZW1wbGF0ZS5TICAgICAgICAgICAgICAgfCAxOTIgKysrKysr KysrCiBhcmNoL2FybTY0L2xpYi9kaXYwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyNyAr KwogYXJjaC9hcm02NC9saWIvbWVtY3B5LlMgICAgICAgICAgICAgICAgICAgICAgfCAgNzQgKysr KwogYXJjaC9hcm02NC9saWIvbWVtc2V0LlMgICAgICAgICAgICAgICAgICAgICAgfCAyMTUgKysr KysrKysrKwogYXJjaC9hcm02NC9saWIvbW9kdWxlLmMgICAgICAgICAgICAgICAgICAgICAgfCAg OTggKysrKysKIGFyY2gvYXJtNjQvbGliL3BibC5sZHMuUyAgICAgICAgICAgICAgICAgICAgIHwg IDk2ICsrKysrCiBhcmNoL2FybTY0L2xpYi9ydW50aW1lLW9mZnNldC5TICAgICAgICAgICAgICB8 ICA1MiArKysKIGFyY2gvYXJtNjQvbGliL3Vud2luZC5jICAgICAgICAgICAgICAgICAgICAgIHwg MzQ5ICsrKysrKysrKysrKysrKysKIGFyY2gvYXJtNjQvbWFjaC12aXJ0L0tjb25maWcgICAgICAg ICAgICAgICAgIHwgIDE1ICsKIGFyY2gvYXJtNjQvbWFjaC12aXJ0L01ha2VmaWxlICAgICAgICAg ICAgICAgIHwgICAxICsKIGFyY2gvYXJtNjQvbWFjaC12aXJ0L2RldmljZXMuYyAgICAgICAgICAg ICAgIHwgIDMwICsrCiBhcmNoL2FybTY0L21hY2gtdmlydC9pbmNsdWRlL21hY2gvZGVidWdfbGwu aCB8ICAyNCArKwogYXJjaC9hcm02NC9tYWNoLXZpcnQvaW5jbHVkZS9tYWNoL2RldmljZXMuaCAg fCAgMTMgKwogYXJjaC9hcm02NC9tYWNoLXZpcnQvcmVzZXQuYyAgICAgICAgICAgICAgICAgfCAg MjQgKysKIGFyY2gvYXJtNjQvcGJsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgIHwgIDU4 ICsrKwogYXJjaC9hcm02NC9wYmwvcGlnZ3kuZ3ppcC5TICAgICAgICAgICAgICAgICAgfCAgIDYg KwogYXJjaC9hcm02NC9wYmwvcGlnZ3kubHo0LlMgICAgICAgICAgICAgICAgICAgfCAgIDYgKwog YXJjaC9hcm02NC9wYmwvcGlnZ3kubHpvLlMgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogYXJj aC9hcm02NC9wYmwvcGlnZ3kuc2hpcHBlZC5TICAgICAgICAgICAgICAgfCAgIDYgKwogYXJjaC9h cm02NC9wYmwvcGlnZ3kueHprZXJuLlMgICAgICAgICAgICAgICAgfCAgIDYgKwogOTcgZmlsZXMg Y2hhbmdlZCwgNzkzMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9NYWtlZmlsZQogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvYm9hcmRzL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9ib2FyZHMvdmlydC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJj aC9hcm02NC9ib2FyZHMvdmlydC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt NjQvYm9hcmRzL3ZpcnQvZW52L2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQv Ym9hcmRzL3ZpcnQvaW5pdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9ib2FyZHMv dmlydC9sb3dsZXZlbC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jb25maWdzL3Zp cnRfZGVmY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvS2NvbmZpZwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAx MDA2NDQgYXJjaC9hcm02NC9jcHUvY2FjaGUtYXJtdjguUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gvYXJtNjQvY3B1L2NhY2hlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NwdS9j cHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L2NwdWluZm8uYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L2VudHJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBh cmNoL2FybTY0L2NwdS9lbnRyeS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUv ZXhjZXB0aW9ucy5TCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvaW50ZXJydXB0 cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvbG93bGV2ZWwuUwogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L21tdS1lYXJseS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2NwdS9tbXUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L21tdS5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9jcHUvbW11aW5mby5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgYXJjaC9hcm02NC9jcHUvbm8tbW11LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2NwdS9zdGFydC1wYmwuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvY3B1L3N0 YXJ0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2NwdS91bmNvbXByZXNzLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FybWxpbnV4LmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2Fzc2VtYmxlci5oCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS1oZWFkLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JhcmVib3gtYXJtLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JhcmVib3guaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYml0b3BzLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JpdHNwZXJsb25nLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZS1sMngwLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBh cmNoL2FybTY0L2luY2x1ZGUvYXNtL2NvbW1vbi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9jcHV0eXBlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2RlYnVnX2xsX3BsMDExLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2RtYS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9lbGYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20v ZXJyYXRhLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2dpYy5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9oYXJkd2FyZS9hcm1f dGltZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaGFyZHdh cmUvc3A4MTAuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vaW8u aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbGlua2FnZS5oCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tZW1vcnkuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11LmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVsZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9wdHJhY2UuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQv aW5jbHVkZS9hc20vc2VjdGlvbnMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vc2VtaWhvc3RpbmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5j bHVkZS9hc20vc2V0dXAuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9h c20vc3RhY2t0cmFjZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9zdHJpbmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3dh Yi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXN0ZW0uaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3lzdGVtX2luZm8uaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHlwZXMuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdW5hbGlnbmVkLmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuaWZpZWQuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdW53aW5kLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybTY0L2xpYi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQv bGliL2FybWxpbnV4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi9hc20tb2Zm c2V0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvYmFyZWJveC5sZHMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi9iYXJlYm94Lmxkcy5TCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvYm9vdG0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gv YXJtNjQvbGliL2Jvb3R1LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L2xpYi9ib290 ei5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvY29weV90ZW1wbGF0ZS5TCiBj cmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvZGl2MC5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgYXJjaC9hcm02NC9saWIvbWVtY3B5LlMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0 L2xpYi9tZW1zZXQuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbGliL21vZHVsZS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvcGJsLmxkcy5TCiBjcmVhdGUgbW9k ZSAxMDA2NDQgYXJjaC9hcm02NC9saWIvcnVudGltZS1vZmZzZXQuUwogY3JlYXRlIG1vZGUgMTAw NjQ0IGFyY2gvYXJtNjQvbGliL3Vud2luZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02 NC9tYWNoLXZpcnQvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvbWFjaC12 aXJ0L01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9tYWNoLXZpcnQvZGV2 aWNlcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9tYWNoLXZpcnQvaW5jbHVkZS9t YWNoL2RlYnVnX2xsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybTY0L21hY2gtdmlydC9p bmNsdWRlL21hY2gvZGV2aWNlcy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9tYWNo LXZpcnQvcmVzZXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvcGJsL01ha2VmaWxl CiBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm02NC9wYmwvcGlnZ3kuZ3ppcC5TCiBjcmVhdGUg bW9kZSAxMDA2NDQgYXJjaC9hcm02NC9wYmwvcGlnZ3kubHo0LlMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBhcmNoL2FybTY0L3BibC9waWdneS5sem8uUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt NjQvcGJsL3BpZ2d5LnNoaXBwZWQuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJtNjQvcGJs L3BpZ2d5Lnh6a2Vybi5TCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9h cm02NC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMTA0MDQK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L0tjb25maWcKQEAgLTAsMCArMSwxNDAgQEAK K2NvbmZpZyBBUk0KKwlib29sCisJc2VsZWN0IEhBU19LQUxMU1lNUworCXNlbGVjdCBIQVNfTU9E VUxFUworCXNlbGVjdCBIQVNfRE1BCisJc2VsZWN0IEhBU19DQUNIRQorCXNlbGVjdCBIQVZFX0NP TkZJR1VSQUJMRV9URVhUX0JBU0UKKwlzZWxlY3QgSEFWRV9QQkxfSU1BR0UKKwlzZWxlY3QgSEFW RV9JTUFHRV9DT01QUkVTU0lPTgorCWRlZmF1bHQgeQorCitjb25maWcgQVJNX0xJTlVYCisJYm9v bAorCWRlZmF1bHQgeQorCWRlcGVuZHMgb24gQ01EX0JPT1RaIHx8IENNRF9CT09UVSB8fCBCT09U TQorCitjb25maWcgSEFWRV9NQUNIX0FSTV9IRUFECisJYm9vbAorCitjb25maWcgQVJNX1VTRV9D T01QUkVTU0VEX0RUQgorCWJvb2wKKwlzZWxlY3QgVU5DT01QUkVTUworCXNlbGVjdCBMWk9fREVD T01QUkVTUworCittZW51ICJTeXN0ZW0gVHlwZSIKKworY29uZmlnIEJVSUxUSU5fRFRCCisJYm9v bCAibGluayBhIERUQiBpbnRvIHRoZSBiYXJlYm94IGltYWdlIgorCWRlcGVuZHMgb24gT0ZUUkVF CisJZGVwZW5kcyBvbiAhSEFWRV9QQkxfTVVMVElfSU1BR0VTCisKK2NvbmZpZyBCVUlMVElOX0RU Ql9OQU1FCisJc3RyaW5nICJEVEIgdG8gYnVpbGQgaW50byB0aGUgYmFyZWJveCBpbWFnZSIKKwlk ZXBlbmRzIG9uIEJVSUxUSU5fRFRCCisJZGVmYXVsdCAiY2Fub24tYTExMDAiIGlmIE1BQ0hfQ0FO T05fQTExMDAKKwlkZWZhdWx0ICJpbXg1MS1nZW5lc2ktZWZpa2Etc2IiIGlmIE1BQ0hfRUZJS0Ff TVhfU01BUlRCT09LCisJZGVmYXVsdCAidmVyc2F0aWxlLXBiIiBpZiBBUkNIX1ZFUlNBVElMRV9Q QgorCWRlZmF1bHQgInZpcnQycmVhbCIgaWYgTUFDSF9WSVJUMlJFQUwKKwlkZWZhdWx0ICJtb2R1 bGUtbWI3NzA3IiBpZiBNQUNIX01CNzcwNworCitjaG9pY2UKKwlwcm9tcHQgIkFSTSBzeXN0ZW0g dHlwZSIKKworY29uZmlnIEFSQ0hfVklSVAorCWJvb2wgIkFSTSBRRU1VIHZpcnQgYm9hcmRzIgor CXNlbGVjdCBIQVNfREVCVUdfTEwKKwlzZWxlY3QgQ1BVX1Y4CisJc2VsZWN0IFNZU19TVVBQT1JU U182NEJJVF9LRVJORUwKKwlzZWxlY3QgQVJNX0FNQkEKKwlzZWxlY3QgSEFWRV9DT05GSUdVUkFC TEVfTUVNT1JZX0xBWU9VVAorCitlbmRjaG9pY2UKKworc291cmNlIGFyY2gvYXJtNjQvY3B1L0tj b25maWcKK3NvdXJjZSBhcmNoL2FybTY0L21hY2gtdmlydC9LY29uZmlnCisKK2NvbmZpZyBBUk1f QVNNX1VOSUZJRUQKKwlib29sCisKK2NvbmZpZyBBRUFCSQorCWJvb2wgIlVzZSB0aGUgQVJNIEVB QkkgdG8gY29tcGlsZSBiYXJlYm94IgorCWhlbHAKKwkgIFRoaXMgb3B0aW9uIGFsbG93cyBmb3Ig YmFyZWJveCB0byBiZSBjb21waWxlZCB1c2luZyB0aGUgbGF0ZXN0CisJICBBUk0gQUJJIChha2Eg RUFCSSkuCisKKwkgIFRvIHVzZSB0aGlzIHlvdSBuZWVkIEdDQyB2ZXJzaW9uIDQuMC4wIG9yIGxh dGVyLgorCitjb25maWcgQVJNX0JPQVJEX0FQUEVORF9BVEFHCisJYm9vbCAiTGV0IGJvYXJkIHNw ZWNpZmljIGNvZGUgdG8gYWRkIEFUQUdzIHRvIGJlIHBhc3NlZCB0byB0aGUga2VybmVsIgorCWRl cGVuZHMgb24gQVJNX0xJTlVYCisJaGVscAorCSAgVGhpcyBvcHRpb24gaXMgcHVyZWx5IHRvIHN0 YXJ0IHNvbWUgdmVuZG9yIHByb3ZpZGVkIGtlcm5lbHMuCisJICAqKiBETyBOT1QgVVNFIEZPUiBZ T1VSIE9XTiBERVNJR05TISAqKgorCitlbmRtZW51CisKK2Nob2ljZQorCXByb21wdCAiQmFyZWJv eCBjb2RlIG1vZGVsIgorCWhlbHAKKwkgIFlvdSBzaG91bGQgb25seSBzZWxlY3QgdGhpcyBvcHRp b24gaWYgeW91IGhhdmUgYSB3b3JrbG9hZCB0aGF0CisJICBhY3R1YWxseSBiZW5lZml0cyBmcm9t IDY0LWJpdCBwcm9jZXNzaW5nIG9yIGlmIHlvdXIgbWFjaGluZSBoYXMKKwkgIGxhcmdlIG1lbW9y eS4gWW91IHdpbGwgb25seSBiZSBwcmVzZW50ZWQgYSBzaW5nbGUgb3B0aW9uIGluIHRoaXMKKwkg IG1lbnUgaWYgeW91ciBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBib3RoIDMyLWJpdCBhbmQgNjQt Yml0IG1vZGVzLgorCitjb25maWcgMzJCSVQKKwlib29sICIzMi1iaXQgYmFyZWJveCIKKwlkZXBl bmRzIG9uIENQVV9TVVBQT1JUU18zMkJJVF9LRVJORUwgJiYgU1lTX1NVUFBPUlRTXzMyQklUX0tF Uk5FTAorCWhlbHAKKwkgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBidWlsZCBh IDMyLWJpdCBiYXJlYm94LgorCitjb25maWcgNjRCSVQKKwlib29sICI2NC1iaXQgYmFyZWJveCIK KwlkZXBlbmRzIG9uIENQVV9TVVBQT1JUU182NEJJVF9LRVJORUwgJiYgU1lTX1NVUFBPUlRTXzY0 QklUX0tFUk5FTAorCXNlbGVjdCBBUkNIX0RNQV9BRERSX1RfNjRCSVQKKwloZWxwCisJICBTZWxl Y3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gYnVpbGQgYSA2NC1iaXQgYmFyZWJveC4KKwor ZW5kY2hvaWNlCisKK21lbnUgIkFSTSBzcGVjaWZpYyBzZXR0aW5ncyIKKworY29uZmlnIEFSTV9P UFRJTVpFRF9TVFJJTkdfRlVOQ1RJT05TCisJYm9vbCAidXNlIGFzc2VtYmxlciBvcHRpbWl6ZWQg c3RyaW5nIGZ1bmN0aW9ucyIKKwloZWxwCisJICBTYXkgeWVzIGhlcmUgdG8gdXNlIGFzc2VtYmxl ciBvcHRpbWl6ZWQgbWVtY3B5IC8gbWVtc2V0IGZ1bmN0aW9ucy4KKwkgIFRoZXNlIGZ1bmN0aW9u cyB3b3JrIG11Y2ggZmFzdGVyIHRoYW4gdGhlIG5vcm1hbCB2ZXJzaW9ucyBidXQKKwkgIGluY3Jl YXNlIHlvdXIgYmluYXJ5IHNpemUuCisKK2NvbmZpZyBBUk1fRVhDRVBUSU9OUworCWJvb2wgImVu YWJsZSBhcm0gZXhjZXB0aW9uIGhhbmRsaW5nIHN1cHBvcnQiCisJZGVmYXVsdCB5CisKK2NvbmZp ZyBBUk1fVU5XSU5ECisJYm9vbCAiZW5hYmxlIHN0YWNrIHVud2luZGluZyBzdXBwb3J0IgorCWRl cGVuZHMgb24gQUVBQkkKKwloZWxwCisJICBUaGlzIG9wdGlvbiBlbmFibGVzIHN0YWNrIHVud2lu ZGluZyBzdXBwb3J0IGluIGJhcmVib3gKKwkgIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBhdXRvbWF0 aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUKKwkgIGNvbXBpbGVyLiBUaGUgcmVzdWx0aW5nIGtlcm5l bCBpbWFnZSBpcyBzbGlnaHRseSBiaWdnZXIgYnV0CisJICB0aGUgcGVyZm9ybWFuY2UgaXMgbm90 IGFmZmVjdGVkLiBDdXJyZW50bHksIHRoaXMgZmVhdHVyZQorCSAgb25seSB3b3JrcyB3aXRoIEVB QkkgY29tcGlsZXJzLiBJZiB1bnN1cmUgc2F5IFkuCisKK2NvbmZpZyBBUk1fU0VNSUhPU1RJTkcK Kwlib29sICJlbmFibGUgQVJNIHNlbWlob3N0aW5nIHN1cHBvcnQiCisJaGVscAorCSAgVGhpcyBv cHRpb24gZW5hYmxlcyBBUk0gc2VtaWhvc3Rpbmcgc3VwcG9ydCBpbiBiYXJlYm94LiBBUk0KKwkg IHNlbWlob3N0aW5nIGlzIGEgY29tbXVuaWNhdGlvbiBkaXNjaXBsaW5lIHRoYXQgYWxsb3dzIGNv ZGUKKwkgIHJ1bm5pbmcgb24gdGFyZ2V0IEFSTSBjcHUgcGVyZm9ybSBzeXN0ZW0gY2FsbHMgYW5k IGFjY2VzcworCSAgdGhlIGRhdGEgb24gdGhlIGhvc3QgY29tcHV0ZXIgY29ubmVjdGVkIHRvIHRo ZSB0YXJnZXQgdmlhCisJICBkZWJ1Z2dpbmcgY2hhbm5lbCAoSlRBRywgU1dEKS4gSWYgdW5zdXJl IHNheSBOCisKK2VuZG1lbnUKKworc291cmNlIGNvbW1vbi9LY29uZmlnCitzb3VyY2UgY29tbWFu ZHMvS2NvbmZpZworc291cmNlIG5ldC9LY29uZmlnCitzb3VyY2UgZHJpdmVycy9LY29uZmlnCitz b3VyY2UgZnMvS2NvbmZpZworc291cmNlIGxpYi9LY29uZmlnCitzb3VyY2UgY3J5cHRvL0tjb25m aWcKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvTWFrZWZpbGUgYi9hcmNoL2FybTY0L01ha2VmaWxl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YTkwYzQKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL2FybTY0L01ha2VmaWxlCkBAIC0wLDAgKzEsMTA5IEBACisKK0NQUEZMQUdT CSs9IC1EX19BUk1fXyAtZm5vLXN0cmljdC1hbGlhc2luZworQ1BQRkxBR1MJKz0kKGNhbGwgY2Mt b3B0aW9uLC1tYWFyY2g2NCwpCisKK2lmZXEgKCQoQ09ORklHX0NQVV9CSUdfRU5ESUFOKSx5KQor Q1BQRkxBR1MJKz0gLW1iaWctZW5kaWFuCitBUwkJKz0gLUVCCitMRAkJKz0gLUVCCitlbHNlCitD UFBGTEFHUwkrPSAtbWxpdHRsZS1lbmRpYW4KK0FTCQkrPSAtRUwKK0xECQkrPSAtRUwKK2VuZGlm CisKKyMgVGhpcyBzZWxlY3RzIHdoaWNoIGluc3RydWN0aW9uIHNldCBpcyB1c2VkLgorIyBOb3Rl IHRoYXQgR0NDIGRvZXMgbm90IG51bWVyaWNhbGx5IGRlZmluZSBhbiBhcmNoaXRlY3R1cmUgdmVy c2lvbgorIyBtYWNybywgYnV0IGluc3RlYWQgZGVmaW5lcyBhIHdob2xlIHNlcmllcyBvZiBtYWNy b3Mgd2hpY2ggbWFrZXMKKyMgdGVzdGluZyBmb3IgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgb3Ig bGF0ZXIgcmF0aGVyIGltcG9zc2libGUuCithcmNoLSQoQ09ORklHX0NQVV82NHY4KQkJOj0gLURf X0xJTlVYX0FSTV9BUkNIX189OCAkKGNhbGwgY2Mtb3B0aW9uLC1tYXJjaD1hcm12OC1hKQorCitD RkxBR1NfQUJJCTo9LW1hYmk9bHA2NAorCitpZmVxICgkKENPTkZJR19BUk1fVU5XSU5EKSx5KQor Q0ZMQUdTX0FCSQkrPS1mdW53aW5kLXRhYmxlcworZW5kaWYKKworQ1BQRkxBR1MgKz0gJChDRkxB R1NfQUJJKSAkKGFyY2gteSkgJCh0dW5lLXkpIAorCitBRkxBR1MgICArPSAtaW5jbHVkZSBhc20v dW5pZmllZC5oCisKKyMgTWFjaGluZSBkaXJlY3RvcnkgbmFtZS4gIFRoaXMgbGlzdCBpcyBzb3J0 ZWQgYWxwaGFudW1lcmljYWxseQorIyBieSBDT05GSUdfKiBtYWNybyBuYW1lLgorbWFjaGluZS0k KENPTkZJR19BUkNIX1ZJUlQpCQk6PSB2aXJ0CisKKworbWFjaGRpcnMgOj0gJChwYXRzdWJzdCAl LGFyY2gvYXJtNjQvbWFjaC0lLywkKG1hY2hpbmUteSkpCisKK2lmZXEgKCQoS0JVSUxEX1NSQyks KQorQ1BQRkxBR1MgKz0gJChwYXRzdWJzdCAlLC1JJWluY2x1ZGUsJChtYWNoZGlycykpCitlbHNl CitDUFBGTEFHUyArPSAkKHBhdHN1YnN0ICUsLUkkKHNyY3RyZWUpLyVpbmNsdWRlLCQobWFjaGRp cnMpKQorZW5kaWYKKworVEVYVF9CQVNFID0gJChDT05GSUdfVEVYVF9CQVNFKQorCitDUFBGTEFH UyArPSAtRFRFWFRfQkFTRT0kKFRFWFRfQkFTRSkKKworIyBBZGQgY2xlYW51cCBmbGFncworQ1BQ RkxBR1MgKz0gLWZkYXRhLXNlY3Rpb25zIC1mZnVuY3Rpb24tc2VjdGlvbnMKK0xERkxBR1NfYmFy ZWJveCArPSAtLWdjLXNlY3Rpb25zCisKK2lmZGVmIENPTkZJR19SRUxPQ0FUQUJMRQorTERGTEFH U19iYXJlYm94ICs9IC1waWUKK2Vsc2UKK0xERkxBR1NfYmFyZWJveCArPSAtc3RhdGljCitlbmRp ZgorCitpZmRlZiBDT05GSUdfSU1BR0VfQ09NUFJFU1NJT04KK0tCVUlMRF9CSU5BUlkgOj0gYXJj aC9hcm02NC9wYmwvemJhcmVib3guYmluCitlbHNlCitLQlVJTERfQklOQVJZIDo9IGJhcmVib3gu YmluCitlbmRpZgorCitiYXJlYm94Lm5ldHg6ICQoS0JVSUxEX0JJTkFSWSkKKwkkKFEpc2NyaXB0 cy9nZW5fbmV0eF9pbWFnZSAtaSAkPCAtbyBiYXJlYm94Lm5ldHgJCVwKKwkJLS1zZHJhbWN0cmw9 JChDT05GSUdfTkVUWF9TRFJBTV9DVFJMKQkJCVwKKwkJLS1zZHJhbXRpbWN0cmw9JChDT05GSUdf TkVUWF9TRFJBTV9USU1JTkdfQ1RSTCkJCVwKKwkJLS1tZW1jdHJsPSQoQ09ORklHX05FVFhfTUVN X0NUUkwpCQkJXAorCQktLWVudHJ5cG9pbnQ9JChDT05GSUdfVEVYVF9CQVNFKQkJCVwKKwkJLS1j b29raWU9JChDT05GSUdfTkVUWF9DT09LSUUpOworCitpZmVxICgkKG1hY2hpbmUteSksbmV0eCkK K0tCVUlMRF9JTUFHRSA6PSBiYXJlYm94Lm5ldHgKK2VuZGlmCisKK2JhcmVib3guczVwOiAkKEtC VUlMRF9CSU5BUlkpCisJJChRKXNjcmlwdHMvczVwX2Nrc3VtICQ8IGJhcmVib3guczVwCisKK2Jv YXJkZGlyID0gJChzcmN0cmVlKS9hcmNoL2FybTY0L2JvYXJkcworCitwYmwgOj0gYXJjaC9hcm02 NC9wYmwKKyQocGJsKS96YmFyZWJveC5TICQocGJsKS96YmFyZWJveC5iaW4gJChwYmwpL3piYXJl Ym94OiBiYXJlYm94LmJpbiBGT1JDRQorCSQoUSkkKE1BS0UpICQoYnVpbGQpPSQocGJsKSAkQAor CithcmNoY2xlYW46CisJJChNQUtFKSAkKGNsZWFuKT0kKHBibCkKKworS0JVSUxEX0lNQUdFID89 ICQoS0JVSUxEX0JJTkFSWSkKKworaWZuZXEgKCQoYm9hcmQteSksKQorQk9BUkQgOj0gYXJjaC9h cm02NC9ib2FyZHMvJChib2FyZC15KS8KK2Vsc2UKK0JPQVJEIDo9CitlbmRpZgorCitpZm5lcSAo JChtYWNoaW5lLXkpLCkKK01BQ0ggOj0gYXJjaC9hcm02NC9tYWNoLSQobWFjaGluZS15KS8KK2Vs c2UKK01BQ0ggOj0KK2VuZGlmCisKK2NvbW1vbi15ICs9ICQoQk9BUkQpIGFyY2gvYXJtNjQvYm9h cmRzLyAkKE1BQ0gpCitjb21tb24teSArPSBhcmNoL2FybTY0L2xpYi8gYXJjaC9hcm02NC9jcHUv CisKK2xkcy15CTo9IGFyY2gvYXJtNjQvbGliL2JhcmVib3gubGRzCisKK2NvbW1vbi0gKz0gJChw YXRzdWJzdCAlLGFyY2gvYXJtNjQvYm9hcmRzLyUvLCQoYm9hcmQtKSkKKworQ0xFQU5fRklMRVMg Kz0gaW5jbHVkZS9nZW5lcmF0ZWQvbWFjaC10eXBlcy5oIGFyY2gvYXJtNjQvbGliL2JhcmVib3gu bGRzIGJhcmVib3gtZmxhc2gtaW1hZ2UKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9hcmRzL01h a2VmaWxlIGIvYXJjaC9hcm02NC9ib2FyZHMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMjIwN2MwNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvYm9h cmRzL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAorIyBrZWVwIHNvcnRlZCBieSBDT05GSUdfKiBt YWNybyBuYW1lLgorb2JqLSQoQ09ORklHX01BQ0hfVklSVCkJCQkrPSB2aXJ0LwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9LY29uZmlnIGIvYXJjaC9hcm02NC9ib2FyZHMvdmly dC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMzkxMjcKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L0tjb25maWcKQEAgLTAsMCAr MSw4IEBACisKK2lmIE1BQ0hfVklSVAorCitjb25maWcgQVJDSF9URVhUX0JBU0UKKwloZXgKKwlk ZWZhdWx0IDB4NDAwMDAwMDAKKworZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9hcmRz L3ZpcnQvTWFrZWZpbGUgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L01ha2VmaWxlCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMWZkNWIKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2JvYXJkcy92aXJ0L01ha2VmaWxlCkBAIC0wLDAgKzEsMyBAQAorb2JqLXkgKz0g aW5pdC5vCisKK2x3bC15ICs9IGxvd2xldmVsLm8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9h cmRzL3ZpcnQvZW52L2NvbmZpZyBiL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52L2NvbmZpZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzBhYmRhCi0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9hcm02NC9ib2FyZHMvdmlydC9lbnYvY29uZmlnCkBAIC0wLDAgKzEsMzggQEAK KyMhL2Jpbi9zaAorCisjIHVzZSAnZGhjcCcgdG8gZG8gZGhjcCBpbiBiYXJlYm94IGFuZCBpbiBr ZXJuZWwKKyMgdXNlICdub25lJyBpZiB5b3Ugd2FudCB0byBza2lwIGtlcm5lbCBpcCBhdXRvY29u ZmlndXJhdGlvbgoraXA9ZGhjcAorZ2xvYmFsLmRoY3AudmVuZG9yX2lkPWJhcmVib3gtJHtnbG9i YWwuaG9zdG5hbWV9CisKKyMgb3Igc2V0IHlvdXIgbmV0d29ya2luZyBwYXJhbWV0ZXJzIGhlcmUK KyNldGgwLmlwYWRkcj1hLmIuYy5kCisjZXRoMC5uZXRtYXNrPWEuYi5jLmQKKyNldGgwLmdhdGV3 YXk9YS5iLmMuZAorI2V0aDAuc2VydmVyaXA9YS5iLmMuZAorCisjIGNhbiBiZSBlaXRoZXIgJ25m cycsICd0ZnRwJyBvciAnbm9yJwora2VybmVsX2xvYz10ZnRwCisjIGNhbiBiZSBlaXRoZXIgJ25l dCcsICdub3InIG9yICdpbml0cmQnCityb290ZnNfbG9jPWluaXRyZAorCisjIGNhbiBiZSBlaXRo ZXIgJ2pmZnMyJyBvciAndWJpZnMnCityb290ZnNfdHlwZT11Ymlmcworcm9vdGZzaW1hZ2U9cm9v dC4kcm9vdGZzX3R5cGUKKwora2VybmVsaW1hZ2U9ekltYWdlCisja2VybmVsaW1hZ2U9dUltYWdl Cisja2VybmVsaW1hZ2U9SW1hZ2UKKyNrZXJuZWxpbWFnZT1JbWFnZS5sem8KKworbmZzcm9vdD0i JGV0aDAuc2VydmVyaXA6L29wdC93b3JrL2J1c3lib3gvYXJtOS9yb290ZnNfYXJtIgorCitub3Jf cGFydHM9IjI1NmsoYmFyZWJveClybyw2NGsoYmFyZWJveGVudiksMTUzNmsoa2VybmVsKSwtKHJv b3QpIgorcm9vdGZzX210ZGJsb2NrX25vcj0zCisKK2F1dG9ib290X3RpbWVvdXQ9MworCitib290 YXJncz0iY29uc29sZT10dHlBTUEwLDExNTIwMG44IENPTlNPTEU9L2Rldi90dHlBTUEwIgorCisj IHNldCBhIGZhbmN5IHByb21wdCAoaWYgc3VwcG9ydCBpcyBjb21waWxlZCBpbikKK1BTMT0iXGVb MTszMW1bYmFyZWJveEBcaF06XHdcZVswbVxuIyAiCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jv YXJkcy92aXJ0L2luaXQuYyBiL2FyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvaW5pdC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYTQxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2JvYXJkcy92aXJ0L2luaXQuYwpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w eXJpZ2h0IChDKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4KKyAq CisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGlu aXQuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtX2lu Zm8uaD4KKyNpbmNsdWRlIDxtYWNoL2RldmljZXMuaD4KKyNpbmNsdWRlIDxlbnZpcm9ubWVudC5o PgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8aW8uaD4KKyNpbmNsdWRlIDxn bG9iYWx2YXIuaD4KKworc3RhdGljIGludCB2aXJ0X21lbV9pbml0KHZvaWQpCit7CisJdmlydF9h ZGRfZGRyYW0oU1pfMjU2TSk7CisKKwlhZGRfY2ZpX2ZsYXNoX2RldmljZSgwLCAweDAwMDAwMDAw LCBTWl80TSwgMCk7CisKKwlkZXZmc19hZGRfcGFydGl0aW9uKCJub3IwIiwgMHgwMDAwMCwgMHg0 MDAwMCwgREVWRlNfUEFSVElUSU9OX0ZJWEVELCAic2VsZjAiKTsKKwlkZXZmc19hZGRfcGFydGl0 aW9uKCJub3IwIiwgMHg0MDAwMCwgMHgyMDAwMCwgREVWRlNfUEFSVElUSU9OX0ZJWEVELCAiZW52 MCIpOworCisJcmV0dXJuIDA7Cit9CittZW1faW5pdGNhbGwodmlydF9tZW1faW5pdCk7CisKK3N0 YXRpYyBpbnQgdmlydF9jb25zb2xlX2luaXQodm9pZCkKK3sKKwl2aXJ0X3JlZ2lzdGVyX3VhcnQo MCk7CisKKwlyZXR1cm4gMDsKK30KK2NvbnNvbGVfaW5pdGNhbGwodmlydF9jb25zb2xlX2luaXQp OworCitzdGF0aWMgaW50IHZpcnRfY29yZV9pbml0KHZvaWQpCit7CisJY2hhciAqaG9zdG5hbWUg PSAidmlydCI7CisKKwlpZiAoY3B1X2lzX2NvcnRleF9hNTMoKSkKKwkJaG9zdG5hbWUgPSAidmly dC1hNTMiOworCWVsc2UgaWYgKGNwdV9pc19jb3J0ZXhfYTU3KCkpCisJCWhvc3RuYW1lID0gInZp cnQtYTU3IjsKKworCWJhcmVib3hfc2V0X21vZGVsKCJBUk0gUUVNVSB2aXJ0Iik7CisJYmFyZWJv eF9zZXRfaG9zdG5hbWUoaG9zdG5hbWUpOworCisJcmV0dXJuIDA7Cit9Citwb3N0Y29yZV9pbml0 Y2FsbCh2aXJ0X2NvcmVfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2JvYXJkcy92aXJ0 L2xvd2xldmVsLmMgYi9hcmNoL2FybTY0L2JvYXJkcy92aXJ0L2xvd2xldmVsLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI2MjEyMQotLS0gL2Rldi9udWxsCisrKyBiL2Fy Y2gvYXJtNjQvYm9hcmRzL3ZpcnQvbG93bGV2ZWwuYwpAQCAtMCwwICsxLDE4IEBACisvKgorICog Q29weXJpZ2h0IChDKSAyMDEzIEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFn bmlvQGpjcm9zb2Z0LmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNv bW1vbi5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gt YXJtLWhlYWQuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNpbmNsdWRlIDxhc20v c3lzdGVtX2luZm8uaD4KKwordm9pZCBiYXJlYm94X2FybV9yZXNldF92ZWN0b3Iodm9pZCkKK3sK Kwlhcm1fY3B1X2xvd2xldmVsX2luaXQoKTsKKworCWJhcmVib3hfYXJtX2VudHJ5KDB4NDAwMDAw MDAsIFNaXzUxMk0sIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jb25maWdzL3Zp cnRfZGVmY29uZmlnIGIvYXJjaC9hcm02NC9jb25maWdzL3ZpcnRfZGVmY29uZmlnCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZDc4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2NvbmZpZ3MvdmlydF9kZWZjb25maWcKQEAgLTAsMCArMSw1MyBAQAorQ09ORklH X0FFQUJJPXkKK0NPTkZJR19BUk1fT1BUSU1aRURfU1RSSU5HX0ZVTkNUSU9OUz15CitDT05GSUdf QkFSRUJPWF9NQVhfSU1BR0VfU0laRT0weDA1MDAwMDAwCitDT05GSUdfQkFSRUJPWF9NQVhfQkFS RV9JTklUX1NJWkU9MHgwMTAwMDAwMAorQ09ORklHX01FTU9SWV9MQVlPVVRfRklYRUQ9eQorQ09O RklHX1NUQUNLX0JBU0U9MHg2MDAwMDAwMAorQ09ORklHX01BTExPQ19CQVNFPTB4NTAwMDAwMDAK K0NPTkZJR19QUk9NUFQ9InZpcnQ6ICIKK0NPTkZJR19IVVNIX0ZBTkNZX1BST01QVD15CitDT05G SUdfQ01ETElORV9FRElUSU5HPXkKK0NPTkZJR19BVVRPX0NPTVBMRVRFPXkKK0NPTkZJR19NRU5V PXkKK0NPTkZJR19QQVNTV09SRD15CitDT05GSUdfUEFSVElUSU9OPXkKK0NPTkZJR19ERUZBVUxU X0VOVklST05NRU5UX0dFTkVSSUNfTkVXPXkKK0NPTkZJR19ERUZBVUxUX0VOVklST05NRU5UX1BB VEg9ImFyY2gvYXJtNjQvYm9hcmRzL3ZpcnQvZW52IgorQ09ORklHX0RFQlVHX0lORk89eQorIyBD T05GSUdfQ01EX0FSTV9DUFVJTkZPIGlzIG5vdCBzZXQKK0NPTkZJR19MT05HSEVMUD15CisjIENP TkZJR19DTURfQk9PVE0gaXMgbm90IHNldAorIyBDT05GSUdfQ01EX0JPT1RVIGlzIG5vdCBzZXQK KyMgQ09ORklHX0NNRF9NT1VOVCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfVU1PVU5UIGlzIG5v dCBzZXQKKyMgQ09ORklHX0NNRF9DQVQgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX0NEIGlzIG5v dCBzZXQKKyMgQ09ORklHX0NNRF9DUCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfTFMgaXMgbm90 IHNldAorIyBDT05GSUdfQ01EX01LRElSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NNRF9QV0QgaXMg bm90IHNldAorIyBDT05GSUdfQ01EX1JNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NNRF9STURJUiBp cyBub3Qgc2V0CisjIENPTkZJR19DTURfRkFMU0UgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX1RF U1QgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX1RSVUUgaXMgbm90IHNldAorIyBDT05GSUdfQ01E X0NMRUFSIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NNRF9FQ0hPIGlzIG5vdCBzZXQKK0NPTkZJR19D TURfQ1JDPXkKK0NPTkZJR19DTURfQ1JDX0NNUD15CisjIENPTkZJR19DTURfTUQgaXMgbm90IHNl dAorIyBDT05GSUdfQ01EX01FTUNNUCBpcyBub3Qgc2V0CisjIENPTkZJR19DTURfTUVNQ1BZIGlz IG5vdCBzZXQKKyMgQ09ORklHX0NNRF9NRU1TRVQgaXMgbm90IHNldAorIyBDT05GSUdfQ01EX01X IGlzIG5vdCBzZXQKK0NPTkZJR19TRVJJQUxfQU1CQV9QTDAxMT15CisjIENPTkZJR19TUEkgaXMg bm90IHNldAorQ09ORklHX01URD15CitDT05GSUdfRFJJVkVSX0NGST15CitDT05GSUdfRFJJVkVS X0NGSV9CQU5LX1dJRFRIXzg9eQorQ09ORklHX0NGSV9CVUZGRVJfV1JJVEU9eQorQ09ORklHX05B TkQ9eQorIyBDT05GSUdfRlNfUkFNRlMgaXMgbm90IHNldAorQ09ORklHX0RJR0VTVF9TSEExX0dF TkVSSUM9eQorQ09ORklHX0RJR0VTVF9TSEEyNTZfR0VORVJJQz15CmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2NwdS9LY29uZmlnIGIvYXJjaC9hcm02NC9jcHUvS2NvbmZpZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQ2NGE0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm02NC9jcHUvS2NvbmZpZwpAQCAtMCwwICsxLDU0IEBACitjb21tZW50ICJQcm9jZXNzb3IgVHlw ZSIKKworY29uZmlnIENQVV82NAorCWJvb2wKKwlkZWZhdWx0IHkKKworIyBTZWxlY3QgQ1BVIHR5 cGVzIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlIHNlbGVjdGVkLiBUaGlzIHNlbGVjdHMK KyMgd2hpY2ggQ1BVcyB3ZSBzdXBwb3J0IGluIHRoZSBrZXJuZWwgaW1hZ2UsIGFuZCB0aGUgY29t cGlsZXIgaW5zdHJ1Y3Rpb24KKyMgb3B0aW1pc2VyIGJlaGF2aW91ci4KKworIyBBUk12OAorY29u ZmlnIENQVV9WOAorCWJvb2wKKwlzZWxlY3QgQ1BVXzY0djgKKwlzZWxlY3QgQ1BVX1NVUFBPUlRT XzY0QklUX0tFUk5FTAorCitjb25maWcgQ1BVXzY0djgKKwlib29sCisKK2NvbW1lbnQgInByb2Nl c3NvciBmZWF0dXJlcyIKKworY29uZmlnIEFSQ0hfU1VQUE9SVFNfQklHX0VORElBTgorCWJvb2wK KworY29uZmlnIENQVV9CSUdfRU5ESUFOCisJYm9vbCAiQnVpbGQgYmlnLWVuZGlhbiBrZXJuZWwi CisJZGVwZW5kcyBvbiBBUkNIX1NVUFBPUlRTX0JJR19FTkRJQU4KKwloZWxwCisJICBTYXkgWSBp ZiB5b3UgcGxhbiBvbiBydW5uaW5nIGEga2VybmVsIGluIGJpZy1lbmRpYW4gbW9kZS4KKwkgIE5v dGUgdGhhdCB5b3VyIGJvYXJkIG11c3QgYmUgcHJvcGVybHkgYnVpbHQgYW5kIHlvdXIgYm9hcmQK KwkgIHBvcnQgbXVzdCBwcm9wZXJseSBlbmFibGUgYW55IGJpZy1lbmRpYW4gcmVsYXRlZCBmZWF0 dXJlcworCSAgb2YgeW91ciBjaGlwc2V0L2JvYXJkL3Byb2Nlc3Nvci4KKworY29uZmlnIEJPT1Rf RU5ESUFOTkVTU19TV0lUQ0gKKwlib29sICJTdXBwb3J0IHN3aXRjaGluZyBvZiBMaW51eCBrZXJu ZWwgZW5kaWFubmVzcyIKKwloZWxwCisJICBTYXkgWSBoZXJlIGlmIHlvdSBuZWVkIHRvIHN3aXRj aCBDUFUgZW5kaWFubmVzcyBiZWZvcmUgcnVubmluZworCSAgTGludXgga2VybmVsLCBlLmcuIGlm IHlvdSB3YW50IGJpZy1lbmRpYW4gQmFyZWJveCB0byBydW4KKwkgIGxpdHRsZS1lbmRpYW4gTGlu dXguCisKKwkgIEN1cnJlbnRseSBpbXBsZW1lbnRlZCBvbmx5IGJ5ICJib290eiIgY29tbWFuZC4K KworY29uZmlnIFNZU19TVVBQT1JUU18zMkJJVF9LRVJORUwKKwlib29sCisKK2NvbmZpZyBTWVNf U1VQUE9SVFNfNjRCSVRfS0VSTkVMCisJYm9vbAorCitjb25maWcgQ1BVX1NVUFBPUlRTXzMyQklU X0tFUk5FTAorCWJvb2wKKworY29uZmlnIENQVV9TVVBQT1JUU182NEJJVF9LRVJORUwKKwlib29s CisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L01ha2VmaWxlIGIvYXJjaC9hcm02NC9jcHUv TWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwMDA5ZAotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L01ha2VmaWxlCkBAIC0wLDAgKzEsMzAgQEAK K29iai15ICs9IGNwdS5vCitvYmotJChDT05GSUdfQVJNX0VYQ0VQVElPTlMpICs9IGV4Y2VwdGlv bnMubworb2JqLSQoQ09ORklHX0FSTV9FWENFUFRJT05TKSArPSBpbnRlcnJ1cHRzLm8KK29iai15 ICs9IHN0YXJ0Lm8gZW50cnkubworCisjCisjIEFueSB2YXJpYW50cyBjYW4gYmUgY2FsbGVkIGFz IHN0YXJ0LWFybXh5ei5TCisjCitvYmotJChDT05GSUdfQ01EX0FSTV9DUFVJTkZPKSArPSBjcHVp bmZvLm8KK29iai0kKENPTkZJR19DTURfQVJNX01NVUlORk8pICs9IG1tdWluZm8ubworb2JqLSQo Q09ORklHX01NVSkgKz0gbW11Lm8gY2FjaGUubyBtbXUtZWFybHkubworcGJsLSQoQ09ORklHX01N VSkgKz0gbW11LWVhcmx5Lm8KKworaWZlcSAoJChDT05GSUdfTU1VKSwpCisjb2JqLXkgKz0gbm8t bW11Lm8KK2VuZGlmCisKK0FGTEFHU19jYWNoZS1hcm12OC5vICAgICAgIDo9LVdhLC1tYXJjaD1h cm12OC1hCitvYmotJChDT05GSUdfQ1BVXzY0djgpICs9IGNhY2hlLWFybXY4Lm8KK0FGTEFHU19w YmwtY2FjaGUtYXJtdjgubyAgICAgICA6PS1XYSwtbWFyY2g9YXJtdjgtYQorcGJsLSQoQ09ORklH X0NQVV82NHY4KSArPSBjYWNoZS1hcm12OC5vCisKK3BibC15ICs9IHNldHVwYy5vIGVudHJ5Lm8K K3BibC0kKENPTkZJR19QQkxfU0lOR0xFX0lNQUdFKSArPSBzdGFydC1wYmwubworcGJsLSQoQ09O RklHX1BCTF9NVUxUSV9JTUFHRVMpICs9IHVuY29tcHJlc3MubworCitvYmoteSArPSBjYWNoZS5v CitwYmwteSArPSBjYWNoZS5vCisKK2x3bC15ICs9IGxvd2xldmVsLm8KZGlmZiAtLWdpdCBhL2Fy Y2gvYXJtNjQvY3B1L2NhY2hlLWFybXY4LlMgYi9hcmNoL2FybTY0L2NwdS9jYWNoZS1hcm12OC5T Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjJmODEKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL2FybTY0L2NwdS9jYWNoZS1hcm12OC5TCkBAIC0wLDAgKzEsMTY4IEBACisv KgorICogKEMpIENvcHlyaWdodCAyMDEzCisgKiBEYXZpZCBGZW5nIDxmZW5naHVhQHBoeXRpdW0u Y29tLmNuPgorICoKKyAqIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBzYW1wbGUgY29kZSBmcm9tIEFS TXY4IEFSTS4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjoJR1BMLTIuMCsKKyAqLwor CisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorI2luY2x1 ZGUgPGluaXQuaD4KKworLyoKKyAqIHZvaWQgdjhfZmx1c2hfZGNhY2hlX2xldmVsKGxldmVsKQor ICoKKyAqIGNsZWFuIGFuZCBpbnZhbGlkYXRlIG9uZSBsZXZlbCBjYWNoZS4KKyAqCisgKiB4MDog Y2FjaGUgbGV2ZWwKKyAqIHgxOiAwIGZsdXNoICYgaW52YWxpZGF0ZSwgMSBpbnZhbGlkYXRlIG9u bHkKKyAqIHgyfng5OiBjbG9iYmVyZWQKKyAqLworLnNlY3Rpb24gLnRleHQudjhfZmx1c2hfZGNh Y2hlX2xldmVsCitFTlRSWSh2OF9mbHVzaF9kY2FjaGVfbGV2ZWwpCisJbHNsCXgxMiwgeDAsICMx CisJbXNyCWNzc2Vscl9lbDEsIHgxMgkJLyogc2VsZWN0IGNhY2hlIGxldmVsICovCisJaXNiCQkJ CS8qIHN5bmMgY2hhbmdlIG9mIGNzc2lkcl9lbDEgKi8KKwltcnMJeDYsIGNjc2lkcl9lbDEJCS8q IHJlYWQgdGhlIG5ldyBjc3NpZHJfZWwxICovCisJYW5kCXgyLCB4NiwgIzcJCS8qIHgyIDwtIGxv ZzIoY2FjaGUgbGluZSBzaXplKS00ICovCisJYWRkCXgyLCB4MiwgIzQJCS8qIHgyIDwtIGxvZzIo Y2FjaGUgbGluZSBzaXplKSAqLworCW1vdgl4MywgIzB4M2ZmCisJYW5kCXgzLCB4MywgeDYsIGxz ciAjMwkvKiB4MyA8LSBtYXggbnVtYmVyIG9mICN3YXlzICovCisJY2x6CXc1LCB3MwkJCS8qIGJp dCBwb3NpdGlvbiBvZiAjd2F5cyAqLworCW1vdgl4NCwgIzB4N2ZmZgorCWFuZAl4NCwgeDQsIHg2 LCBsc3IgIzEzCS8qIHg0IDwtIG1heCBudW1iZXIgb2YgI3NldHMgKi8KKwkvKiB4MTIgPC0gY2Fj aGUgbGV2ZWwgPDwgMSAqLworCS8qIHgyIDwtIGxpbmUgbGVuZ3RoIG9mZnNldCAqLworCS8qIHgz IDwtIG51bWJlciBvZiBjYWNoZSB3YXlzIC0gMSAqLworCS8qIHg0IDwtIG51bWJlciBvZiBjYWNo ZSBzZXRzIC0gMSAqLworCS8qIHg1IDwtIGJpdCBwb3NpdGlvbiBvZiAjd2F5cyAqLworCitsb29w X3NldDoKKwltb3YJeDYsIHgzCQkJLyogeDYgPC0gd29ya2luZyBjb3B5IG9mICN3YXlzICovCits b29wX3dheToKKwlsc2wJeDcsIHg2LCB4NQorCW9ycgl4OSwgeDEyLCB4NwkJLyogbWFwIHdheSBh bmQgbGV2ZWwgdG8gY2lzdyB2YWx1ZSAqLworCWxzbAl4NywgeDQsIHgyCisJb3JyCXg5LCB4OSwg eDcJCS8qIG1hcCBzZXQgbnVtYmVyIHRvIGNpc3cgdmFsdWUgKi8KKwl0YnoJdzEsICMwLCAxZgor CWRjCWlzdywgeDkKKwliCTJmCisxOglkYwljaXN3LCB4OQkJLyogY2xlYW4gJiBpbnZhbGlkYXRl IGJ5IHNldC93YXkgKi8KKzI6CXN1YnMJeDYsIHg2LCAjMQkJLyogZGVjcmVtZW50IHRoZSB3YXkg Ki8KKwliLmdlCWxvb3Bfd2F5CisJc3Vicwl4NCwgeDQsICMxCQkvKiBkZWNyZW1lbnQgdGhlIHNl dCAqLworCWIuZ2UJbG9vcF9zZXQKKworCXJldAorRU5EUFJPQyh2OF9mbHVzaF9kY2FjaGVfbGV2 ZWwpCisKKy8qCisgKiB2b2lkIHY4X2ZsdXNoX2RjYWNoZV9hbGwoaW50IGludmFsaWRhdGVfb25s eSkKKyAqCisgKiB4MDogMCBmbHVzaCAmIGludmFsaWRhdGUsIDEgaW52YWxpZGF0ZSBvbmx5Cisg KgorICogY2xlYW4gYW5kIGludmFsaWRhdGUgYWxsIGRhdGEgY2FjaGUgYnkgU0VUL1dBWS4KKyAq LworLnNlY3Rpb24gLnRleHQudjhfZGNhY2hlX2FsbAorRU5UUlkodjhfZGNhY2hlX2FsbCkKKwlt b3YJeDEsIHgwCisJZHNiCXN5CisJbXJzCXgxMCwgY2xpZHJfZWwxCQkvKiByZWFkIGNsaWRyX2Vs MSAqLworCWxzcgl4MTEsIHgxMCwgIzI0CisJYW5kCXgxMSwgeDExLCAjMHg3CQkvKiB4MTEgPC0g bG9jICovCisJY2J6CXgxMSwgZmluaXNoZWQJCS8qIGlmIGxvYyBpcyAwLCBleGl0ICovCisJbW92 CXgxNSwgeDMwCisJbW92CXgwLCAjMAkJCS8qIHN0YXJ0IGZsdXNoIGF0IGNhY2hlIGxldmVsIDAg Ki8KKwkvKiB4MCAgPC0gY2FjaGUgbGV2ZWwgKi8KKwkvKiB4MTAgPC0gY2xpZHJfZWwxICovCisJ LyogeDExIDwtIGxvYyAqLworCS8qIHgxNSA8LSByZXR1cm4gYWRkcmVzcyAqLworCitsb29wX2xl dmVsOgorCWxzbAl4MTIsIHgwLCAjMQorCWFkZAl4MTIsIHgxMiwgeDAJCS8qIHgwIDwtIHRyaXBs ZWQgY2FjaGUgbGV2ZWwgKi8KKwlsc3IJeDEyLCB4MTAsIHgxMgorCWFuZAl4MTIsIHgxMiwgIzcJ CS8qIHgxMiA8LSBjYWNoZSB0eXBlICovCisJY21wCXgxMiwgIzIKKwliLmx0CXNraXAJCQkvKiBz a2lwIGlmIG5vIGNhY2hlIG9yIGljYWNoZSAqLworCWJsCXY4X2ZsdXNoX2RjYWNoZV9sZXZlbAkv KiB4MSA9IDAgZmx1c2gsIDEgaW52YWxpZGF0ZSAqLworc2tpcDoKKwlhZGQJeDAsIHgwLCAjMQkJ LyogaW5jcmVtZW50IGNhY2hlIGxldmVsICovCisJY21wCXgxMSwgeDAKKwliLmd0CWxvb3BfbGV2 ZWwKKworCW1vdgl4MCwgIzAKKwltc3IJY3NzZWxyX2VsMSwgeDAJCS8qIHJlc3RvcmUgY3NzZWxy X2VsMSAqLworCWRzYglzeQorCWlzYgorCW1vdgl4MzAsIHgxNQorCitmaW5pc2hlZDoKKwlyZXQK K0VORFBST0ModjhfZGNhY2hlX2FsbCkKKworLnNlY3Rpb24gLnRleHQudjhfZmx1c2hfZGNhY2hl X2FsbAorRU5UUlkodjhfZmx1c2hfZGNhY2hlX2FsbCkKKwltb3YJeDE2LCB4MzAKKwltb3YJeDAs ICMwCisJYmwJdjhfZGNhY2hlX2FsbAorCW1vdgl4MzAsIHgxNgorCXJldAorRU5EUFJPQyh2OF9m bHVzaF9kY2FjaGVfYWxsKQorCisuc2VjdGlvbiAudGV4dC52OF9pbnZhbGlkYXRlX2RjYWNoZV9h bGwKK0VOVFJZKHY4X2ludmFsaWRhdGVfZGNhY2hlX2FsbCkKKwltb3YJeDE2LCB4MzAKKwltb3YJ eDAsICMweDEKKwlibAl2OF9kY2FjaGVfYWxsCisJbW92CXgzMCwgeDE2CisJcmV0CitFTkRQUk9D KHY4X2ludmFsaWRhdGVfZGNhY2hlX2FsbCkKKworLyoKKyAqIHZvaWQgdjhfZmx1c2hfZGNhY2hl X3JhbmdlKHN0YXJ0LCBlbmQpCisgKgorICogY2xlYW4gJiBpbnZhbGlkYXRlIGRhdGEgY2FjaGUg aW4gdGhlIHJhbmdlCisgKgorICogeDA6IHN0YXJ0IGFkZHJlc3MKKyAqIHgxOiBlbmQgYWRkcmVz cworICovCisuc2VjdGlvbiAudGV4dC52OF9mbHVzaF9kY2FjaGVfcmFuZ2UKK0VOVFJZKHY4X2Zs dXNoX2RjYWNoZV9yYW5nZSkKKwltcnMJeDMsIGN0cl9lbDAKKwlsc3IJeDMsIHgzLCAjMTYKKwlh bmQJeDMsIHgzLCAjMHhmCisJbW92CXgyLCAjNAorCWxzbAl4MiwgeDIsIHgzCQkvKiBjYWNoZSBs aW5lIHNpemUgKi8KKworCS8qIHgyIDwtIG1pbmltYWwgY2FjaGUgbGluZSBzaXplIGluIGNhY2hl IHN5c3RlbSAqLworCXN1Ygl4MywgeDIsICMxCisJYmljCXgwLCB4MCwgeDMKKzE6CWRjCWNpdmFj LCB4MAkvKiBjbGVhbiAmIGludmFsaWRhdGUgZGF0YSBvciB1bmlmaWVkIGNhY2hlICovCisJYWRk CXgwLCB4MCwgeDIKKwljbXAJeDAsIHgxCisJYi5sbwkxYgorCWRzYglzeQorCXJldAorRU5EUFJP Qyh2OF9mbHVzaF9kY2FjaGVfcmFuZ2UpCisKKy8qCisgKiB2b2lkIHY4X2ludmFsaWRhdGVfaWNh Y2hlX2FsbCh2b2lkKQorICoKKyAqIGludmFsaWRhdGUgYWxsIHRsYiBlbnRyaWVzLgorICovCisu c2VjdGlvbiAudGV4dC52OF9pbnZhbGlkYXRlX2ljYWNoZV9hbGwKK0VOVFJZKHY4X2ludmFsaWRh dGVfaWNhY2hlX2FsbCkKKwlpYwlpYWxsdWlzCisJaXNiCXN5CisJcmV0CitFTkRQUk9DKHY4X2lu dmFsaWRhdGVfaWNhY2hlX2FsbCkKKworLnNlY3Rpb24gLnRleHQudjhfZmx1c2hfbDNfY2FjaGUK K0VOVFJZKHY4X2ZsdXNoX2wzX2NhY2hlKQorCW1vdgl4MCwgIzAJCQkvKiByZXR1cm4gc3RhdHVz IGFzIHN1Y2Nlc3MgKi8KKwlyZXQKK0VORFBST0ModjhfZmx1c2hfbDNfY2FjaGUpCisJLndlYWsJ djhfZmx1c2hfbDNfY2FjaGUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L2NhY2hlLmMgYi9h cmNoL2FybTY0L2NwdS9jYWNoZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu Ljg0NjVjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9jYWNoZS5jCkBAIC0w LDAgKzEsMTEwIEBACisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2lu Y2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRlIDxhc20vY2FjaGUuaD4KKyNpbmNsdWRlIDxhc20v c3lzdGVtX2luZm8uaD4KKworc3RydWN0IGNhY2hlX2ZucyB7CisJdm9pZCAoKmRtYV9jbGVhbl9y YW5nZSkodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOworCXZvaWQgKCpk bWFfZmx1c2hfcmFuZ2UpKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsK Kwl2b2lkICgqZG1hX2ludl9yYW5nZSkodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9u ZyBlbmQpOworCXZvaWQgKCptbXVfY2FjaGVfb24pKHZvaWQpOworCXZvaWQgKCptbXVfY2FjaGVf b2ZmKSh2b2lkKTsKKwl2b2lkICgqbW11X2NhY2hlX2ZsdXNoKSh2b2lkKTsKK307CisKK3N0cnVj dCBjYWNoZV9mbnMgKmNhY2hlX2ZuczsKKworI2RlZmluZSBERUZJTkVfQ1BVX0ZOUyhhcmNoKSBc CisJdm9pZCBhcmNoIyNfZG1hX2NsZWFuX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln bmVkIGxvbmcgZW5kKTsJXAorCXZvaWQgYXJjaCMjX2RtYV9mbHVzaF9yYW5nZSh1bnNpZ25lZCBs b25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7CVwKKwl2b2lkIGFyY2gjI19kbWFfaW52X3Jh bmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsJXAorCXZvaWQgYXJj aCMjX21tdV9jYWNoZV9vbih2b2lkKTsJCQkJCQlcCisJdm9pZCBhcmNoIyNfbW11X2NhY2hlX29m Zih2b2lkKTsJCQkJCVwKKwl2b2lkIGFyY2gjI19tbXVfY2FjaGVfZmx1c2godm9pZCk7CQkJCQlc CisJCQkJCQkJCQkJXAorCXN0YXRpYyBzdHJ1Y3QgY2FjaGVfZm5zIF9fbWF5YmVfdW51c2VkIGNh Y2hlX2Zuc19hcm0jI2FyY2ggPSB7CQlcCisJCS5kbWFfY2xlYW5fcmFuZ2UgPSBhcmNoIyNfZG1h X2NsZWFuX3JhbmdlLAkJCVwKKwkJLmRtYV9mbHVzaF9yYW5nZSA9IGFyY2gjI19kbWFfZmx1c2hf cmFuZ2UsCQkJXAorCQkuZG1hX2ludl9yYW5nZSA9IGFyY2gjI19kbWFfaW52X3JhbmdlLAkJCQlc CisJCS5tbXVfY2FjaGVfb24gPSBhcmNoIyNfbW11X2NhY2hlX29uLAkJCQlcCisJCS5tbXVfY2Fj aGVfb2ZmID0gYXJjaCMjX21tdV9jYWNoZV9vZmYsCQkJCVwKKwkJLm1tdV9jYWNoZV9mbHVzaCA9 IGFyY2gjI19tbXVfY2FjaGVfZmx1c2gsCQkJXAorCX07CisKK0RFRklORV9DUFVfRk5TKHY4KQor Cit2b2lkIF9fZG1hX2NsZWFuX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxv bmcgZW5kKQoreworCWlmIChjYWNoZV9mbnMpCisJCWNhY2hlX2Zucy0+ZG1hX2NsZWFuX3Jhbmdl KHN0YXJ0LCBlbmQpOworfQorCit2b2lkIF9fZG1hX2ZsdXNoX3JhbmdlKHVuc2lnbmVkIGxvbmcg c3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQoreworCWlmIChjYWNoZV9mbnMpCisJCWNhY2hlX2Zu cy0+ZG1hX2ZsdXNoX3JhbmdlKHN0YXJ0LCBlbmQpOworfQorCit2b2lkIF9fZG1hX2ludl9yYW5n ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlpZiAoY2FjaGVf Zm5zKQorCQljYWNoZV9mbnMtPmRtYV9pbnZfcmFuZ2Uoc3RhcnQsIGVuZCk7Cit9CisKK3ZvaWQg X19tbXVfY2FjaGVfb24odm9pZCkKK3sKKwlpZiAoY2FjaGVfZm5zKQorCQljYWNoZV9mbnMtPm1t dV9jYWNoZV9vbigpOworfQorCit2b2lkIF9fbW11X2NhY2hlX29mZih2b2lkKQoreworCWlmIChj YWNoZV9mbnMpCisJCWNhY2hlX2Zucy0+bW11X2NhY2hlX29mZigpOworfQorCit2b2lkIF9fbW11 X2NhY2hlX2ZsdXNoKHZvaWQpCit7CisJaWYgKGNhY2hlX2ZucykKKwkJY2FjaGVfZm5zLT5tbXVf Y2FjaGVfZmx1c2goKTsKKwlpZiAob3V0ZXJfY2FjaGUuZmx1c2hfYWxsKQorCQlvdXRlcl9jYWNo ZS5mbHVzaF9hbGwoKTsKK30KKworaW50IGFybV9zZXRfY2FjaGVfZnVuY3Rpb25zKHZvaWQpCit7 CisJc3dpdGNoIChjcHVfYXJjaGl0ZWN0dXJlKCkpIHsKKwljYXNlIENQVV9BUkNIX0FSTXY4Ogor CQljYWNoZV9mbnMgPSAmY2FjaGVfZm5zX2FybXY4OworCQlicmVhazsKKwlkZWZhdWx0OgorCQl3 aGlsZSgxKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEVhcmx5IGZ1bmN0aW9uIHRv IGZsdXNoIHRoZSBjYWNoZXMuIFRoaXMgaXMgZm9yIHVzZSB3aGVuIHRoZQorICogQyBlbnZpcm9u bWVudCBpcyBub3QgeWV0IGZ1bGx5IGluaXRpYWxpemVkLgorICovCit2b2lkIGFybV9lYXJseV9t bXVfY2FjaGVfZmx1c2godm9pZCkKK3sKKwlzd2l0Y2ggKGFybV9lYXJseV9nZXRfY3B1X2FyY2hp dGVjdHVyZSgpKSB7CisJY2FzZSBDUFVfQVJDSF9BUk12ODoKKy8vCQl2N19tbXVfY2FjaGVfZmx1 c2goKTsKKwkJcmV0dXJuOworCX0KK30KKworLy92b2lkIHY3X21tdV9jYWNoZV9pbnZhbGlkYXRl KHZvaWQpOworCit2b2lkIGFybV9lYXJseV9tbXVfY2FjaGVfaW52YWxpZGF0ZSh2b2lkKQorewor CXN3aXRjaCAoYXJtX2Vhcmx5X2dldF9jcHVfYXJjaGl0ZWN0dXJlKCkpIHsKKwljYXNlIENQVV9B UkNIX0FSTXY4OgorLy8JCXY3X21tdV9jYWNoZV9pbnZhbGlkYXRlKCk7CisJCXJldHVybjsKKwl9 Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9jcHUuYyBiL2FyY2gvYXJtNjQvY3B1L2Nw dS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMjdlNzIKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9jcHUuYwpAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAq IGNwdS5jIC0gQSBmZXcgaGVscGVyIGZ1bmN0aW9ucyBmb3IgQVJNCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDA3IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJv bml4CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRy aWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy CisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKy8qKgorICogQGZpbGUKKyAqIEBicmllZiBBIGZl dyBoZWxwZXIgZnVuY3Rpb25zIGZvciBBUk0KKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+Cisj aW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxjYWNoZS5o PgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVk ZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL21lbW9yeV9sYXlvdXQuaD4K KyNpbmNsdWRlIDxhc20vY3B1dHlwZS5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorI2luY2x1 ZGUgPGFzbS9wdHJhY2UuaD4KKworI2luY2x1ZGUgIm1tdS5oIgorCisvKioKKyAqIEVuYWJsZSBw cm9jZXNzb3IncyBpbnN0cnVjdGlvbiBjYWNoZQorICovCit2b2lkIGljYWNoZV9lbmFibGUodm9p ZCkKK3sKKwl2OF9pbnZhbGlkYXRlX2ljYWNoZV9hbGwoKTsKKwlzZXRfc2N0bHIoZ2V0X3NjdGxy KCkgfCBDUl9JKTsKK30KKworLyoqCisgKiBEaXNhYmxlIHByb2Nlc3NvcidzIGluc3RydWN0aW9u IGNhY2hlCisgKi8KK3ZvaWQgaWNhY2hlX2Rpc2FibGUodm9pZCkKK3sKKwlzZXRfc2N0bHIoZ2V0 X3NjdGxyKCkgJiB+Q1JfSSk7Cit9CisKKy8qKgorICogRGV0ZWN0IHByb2Nlc3NvcidzIGN1cnJl bnQgaW5zdHJ1Y3Rpb24gY2FjaGUgc3RhdHVzCisgKiBAcmV0dXJuIDA9ZGlzYWJsZWQsIDE9ZW5h YmxlZAorICovCitpbnQgaWNhY2hlX3N0YXR1cyh2b2lkKQoreworCXJldHVybiAoZ2V0X3NjdGxy KCkgJiBDUl9JKSAhPSAwOworfQorCisvKgorICogU29DIGxpa2UgdGhlIHV4NTAwIGhhdmUgdGhl IGwyeDAgYWx3YXlzIGVuYWJsZQorICogd2l0aCBvciB3aXRob3V0IE1NVSBlbmFibGUKKyAqLwor c3RydWN0IG91dGVyX2NhY2hlX2ZucyBvdXRlcl9jYWNoZTsKKworLyoKKyAqIENsZWFuIGFuZCBp bnZhbGlkZSBjYWNoZXMsIGRpc2FibGUgTU1VCisgKi8KK3ZvaWQgbW11X2Rpc2FibGUodm9pZCkK K3sKKwlfX21tdV9jYWNoZV9mbHVzaCgpOworCWlmIChvdXRlcl9jYWNoZS5kaXNhYmxlKSB7CisJ CW91dGVyX2NhY2hlLmZsdXNoX2FsbCgpOworCQlvdXRlcl9jYWNoZS5kaXNhYmxlKCk7CisJfQor CV9fbW11X2NhY2hlX29mZigpOworfQorCisvKioKKyAqIERpc2FibGUgTU1VIGFuZCBELWNhY2hl LCBmbHVzaCBjYWNoZXMKKyAqIEByZXR1cm4gMCAoYWx3YXlzKQorICoKKyAqIFRoaXMgZnVuY3Rp b24gaXMgY2FsbGVkIGJ5IHNodXRkb3duX2JhcmVib3ggdG8gZ2V0IGEgY2xlYW4KKyAqIG1lbW9y eS9jYWNoZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQgYXJjaF9zaHV0ZG93bih2b2lkKQorewor CW1tdV9kaXNhYmxlKCk7CisJZmx1c2hfaWNhY2hlKCk7Cit9CithcmNoc2h1dGRvd25fZXhpdGNh bGwoYXJjaF9zaHV0ZG93bik7CisKK2V4dGVybiB1bnNpZ25lZCBsb25nIGFybV9zdGFja190b3A7 CisKK3N0YXRpYyBpbnQgYXJtX3JlcXVlc3Rfc3RhY2sodm9pZCkKK3sKKwlpZiAoIXJlcXVlc3Rf c2RyYW1fcmVnaW9uKCJzdGFjayIsIGFybV9zdGFja190b3AgLSBTVEFDS19TSVpFLCBTVEFDS19T SVpFKSkKKwkJcHJfZXJyKCJFcnJvcjogQ2Fubm90IHJlcXVlc3QgU0RSQU0gcmVnaW9uIGZvciBz dGFja1xuIik7CisKKwlyZXR1cm4gMDsKK30KK2NvcmVkZXZpY2VfaW5pdGNhbGwoYXJtX3JlcXVl c3Rfc3RhY2spOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvY3B1aW5mby5jIGIvYXJjaC9h cm02NC9jcHUvY3B1aW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIz MDYxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9jcHVpbmZvLmMKQEAgLTAs MCArMSwyMTEgQEAKKy8qCisgKiBjcHVpbmZvLmMgLSBTaG93IGluZm9ybWF0aW9uIGFib3V0IGNw MTUgcmVnaXN0ZXJzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA5IFNhc2NoYSBIYXVlciA8cy5o YXVlckBwZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKgorICogU2VlIGZpbGUgQ1JFRElU UyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3Qu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisK KyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8Y29t cGxldGUuaD4KKworI2RlZmluZSBDUFVfQVJDSF9VTktOT1dOCTAKKyNkZWZpbmUgQ1BVX0FSQ0hf QVJNdjgJCTEwCisKKyNkZWZpbmUgQVJNX0NQVV9QQVJUX0NPUlRFWF9BNTMJICAgIDB4RDAzNAor I2RlZmluZSBBUk1fQ1BVX1BBUlRfQ09SVEVYX0E1NwkgICAgMHhEMDcwCisKK3N0YXRpYyB2b2lk IGRlY29kZV9jYWNoZSh1bnNpZ25lZCBsb25nIHNpemUpCit7CisJaW50IGxpbmVsZW4gPSAxIDw8 ICgoc2l6ZSAmIDB4MykgKyAzKTsKKwlpbnQgbXVsdCA9IDIgKyAoKHNpemUgPj4gMikgJiAxKTsK KwlpbnQgY2FjaGVfc2l6ZSA9IG11bHQgPDwgKCgoc2l6ZSA+PiA2KSAmIDB4NykgKyA4KTsKKwor CWlmICgoKHNpemUgPj4gMikgJiAweGYpID09IDEpCisJCXByaW50Zigibm8gY2FjaGVcbiIpOwor CWVsc2UKKwkJcHJpbnRmKCIlZCBieXRlcyAobGluZWxlbiA9ICVkKVxuIiwgY2FjaGVfc2l6ZSwg bGluZWxlbik7Cit9CisKK3N0YXRpYyBjaGFyICpjcmJpdHNbXSA9IHsiTSIsICJBIiwgIkMiLCAi VyIsICJQIiwgIkQiLCAiTCIsICJCIiwgIlMiLCAiUiIsCisJIkYiLCAiWiIsICJJIiwgIlYiLCAi UlIiLCAiTDQiLCAiRFQiLCAiIiwgIklUIiwgIlNUIiwgIiIsICJGSSIsICJVIiwgIlhQIiwKKwki VkUiLCAiRUUiLCAiTDIiLCAiIiwgIlRSRSIsICJBRkUiLCAiVEUifTsKKworc3RhdGljIGludCBk b19jcHVpbmZvKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgbG9uZyBtYWlu aWQsIGNhY2hlLCBjcjsKKwljaGFyICphcmNoaXRlY3R1cmUsICppbXBsZW1lbnRlcjsKKwlpbnQg aTsKKwlpbnQgY3B1X2FyY2g7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJIm1ycwklMCwg bWlkcl9lbDFcbiIKKwkJOiAiPXIiIChtYWluaWQpCisJCToKKwkJOiAibWVtb3J5Iik7CisKKy8v CV9fYXNtX18gX192b2xhdGlsZV9fKAorLy8JCSJtcmMgICAgcDE1LCAwLCAlMCwgYzAsIGMwLCAx ICAgQCByZWFkIGNvbnRyb2wgcmVnXG4iCisvLwkJOiAiPXIiIChjYWNoZSkKKy8vCQk6CisvLwkJ OiAibWVtb3J5Iik7CisvLworLy8JX19hc21fXyBfX3ZvbGF0aWxlX18oCisvLwkJIm1yYyAgICBw MTUsIDAsICUwLCBjMSwgYzAsIDAgICBAIHJlYWQgY29udHJvbCByZWdcbiIKKy8vCQkJOiAiPXIi IChjcikKKy8vCQkJOgorLy8JCQk6ICJtZW1vcnkiKTsKKworCXN3aXRjaCAobWFpbmlkID4+IDI0 KSB7CisJY2FzZSAweDQxOgorCQlpbXBsZW1lbnRlciA9ICJBUk0iOworCQlicmVhazsKKwljYXNl IDB4NDQ6CisJCWltcGxlbWVudGVyID0gIkRpZ2l0YWwgRXF1aXBtZW50IENvcnAuIjsKKwkJYnJl YWs7CisJY2FzZSAweDQwOgorCQlpbXBsZW1lbnRlciA9ICJNb3Rvcm9sYSAtIEZyZWVzY2FsZSBT ZW1pY29uZHVjdG9yIEluYy4iOworCQlicmVhazsKKwljYXNlIDB4NTY6CisJCWltcGxlbWVudGVy ID0gIk1hcnZlbGwgU2VtaWNvbmR1Y3RvciBJbmMuIjsKKwkJYnJlYWs7CisJY2FzZSAweDY5Ogor CQlpbXBsZW1lbnRlciA9ICJJbnRlbCBDb3JwLiI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWlt cGxlbWVudGVyID0gIlVua25vd24iOworCX0KKworCWlmICgobWFpbmlkICYgMHgwMDA4ZjAwMCkg PT0gMCkgeworCQljcHVfYXJjaCA9IENQVV9BUkNIX1VOS05PV047CisJfSBlbHNlIGlmICgobWFp bmlkICYgMHgwMDA4ZjAwMCkgPT0gMHgwMDAwNzAwMCkgeworCQljcHVfYXJjaCA9IChtYWluaWQg JiAoMSA8PCAyMykpID8gQ1BVX0FSQ0hfQVJNdjRUIDogQ1BVX0FSQ0hfQVJNdjM7CisJfSBlbHNl IGlmICgobWFpbmlkICYgMHgwMDA4MDAwMCkgPT0gMHgwMDAwMDAwMCkgeworCQljcHVfYXJjaCA9 IChtYWluaWQgPj4gMTYpICYgNzsKKwkJaWYgKGNwdV9hcmNoKQorCQkJY3B1X2FyY2ggKz0gQ1BV X0FSQ0hfQVJNdjM7CisJfSBlbHNlIGlmICgobWFpbmlkICYgMHgwMDBmMDAwMCkgPT0gMHgwMDBm MDAwMCkgeworCQl1bnNpZ25lZCBpbnQgbW1mcjA7CisKKwkJLyogUmV2aXNlZCBDUFVJRCBmb3Jt YXQuIFJlYWQgdGhlIE1lbW9yeSBNb2RlbCBGZWF0dXJlCisJCSAqIFJlZ2lzdGVyIDAgYW5kIGNo ZWNrIGZvciBWTVNBdjcgb3IgUE1TQXY3ICovCisvLwkJYXNtKCJtcmMJcDE1LCAwLCAlMCwgYzAs IGMxLCA0IgorLy8JCSAgICA6ICI9ciIgKG1tZnIwKSk7CisJCWlmICgobW1mcjAgJiAweDAwMDAw MDBmKSA+PSAweDAwMDAwMDAzIHx8CisJCSAgICAobW1mcjAgJiAweDAwMDAwMGYwKSA+PSAweDAw MDAwMDMwKQorCQkJY3B1X2FyY2ggPSBDUFVfQVJDSF9BUk12NzsKKwkJZWxzZSBpZiAoKG1tZnIw ICYgMHgwMDAwMDAwZikgPT0gMHgwMDAwMDAwMiB8fAorCQkJIChtbWZyMCAmIDB4MDAwMDAwZjAp ID09IDB4MDAwMDAwMjApCisJCQljcHVfYXJjaCA9IENQVV9BUkNIX0FSTXY2OworCQllbHNlCisJ CQljcHVfYXJjaCA9IENQVV9BUkNIX1VOS05PV047CisJfSBlbHNlCisJCWNwdV9hcmNoID0gQ1BV X0FSQ0hfVU5LTk9XTjsKKworCXN3aXRjaCAoY3B1X2FyY2gpIHsKKwljYXNlIENQVV9BUkNIX0FS TXYzOgorCQlhcmNoaXRlY3R1cmUgPSAidjMiOworCQlicmVhazsKKwljYXNlIENQVV9BUkNIX0FS TXY0OgorCQlhcmNoaXRlY3R1cmUgPSAidjQiOworCQlicmVhazsKKwljYXNlIENQVV9BUkNIX0FS TXY0VDoKKwkJYXJjaGl0ZWN0dXJlID0gInY0VCI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hf QVJNdjU6CisJCWFyY2hpdGVjdHVyZSA9ICJ2NSI7CisJCWJyZWFrOworCWNhc2UgQ1BVX0FSQ0hf QVJNdjVUOgorCQlhcmNoaXRlY3R1cmUgPSAidjVUIjsKKwkJYnJlYWs7CisJY2FzZSBDUFVfQVJD SF9BUk12NVRFOgorCQlhcmNoaXRlY3R1cmUgPSAidjVURSI7CisJCWJyZWFrOworCWNhc2UgQ1BV X0FSQ0hfQVJNdjVURUo6CisJCWFyY2hpdGVjdHVyZSA9ICJ2NVRFSiI7CisJCWJyZWFrOworCWNh c2UgQ1BVX0FSQ0hfQVJNdjY6CisJCWFyY2hpdGVjdHVyZSA9ICJ2NiI7CisJCWJyZWFrOworCWNh c2UgQ1BVX0FSQ0hfQVJNdjc6CisJCWFyY2hpdGVjdHVyZSA9ICJ2NyI7CisJCWJyZWFrOworCWNh c2UgQ1BVX0FSQ0hfQVJNdjg6CisJCWFyY2hpdGVjdHVyZSA9ICJ2OCI7CisJCWJyZWFrOworCWNh c2UgQ1BVX0FSQ0hfVU5LTk9XTjoKKwlkZWZhdWx0OgorCQlhcmNoaXRlY3R1cmUgPSAiVW5rbm93 biI7CisJfQorCisJcHJpbnRmKCJpbXBsZW1lbnRlcjogJXNcbmFyY2hpdGVjdHVyZTogJXNcbiIs CisJCQlpbXBsZW1lbnRlciwgYXJjaGl0ZWN0dXJlKTsKKworCWlmIChjcHVfYXJjaCA9PSBDUFVf QVJDSF9BUk12NykgeworCQl1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yOworCQljaGFyICpwYXJ0 OworCQltYWpvciA9IChtYWluaWQgPj4gMjApICYgMHhmOworCQltaW5vciA9IG1haW5pZCAmIDB4 ZjsKKwkJc3dpdGNoIChtYWluaWQgJiAweGZmZjApIHsKKwkJY2FzZSBBUk1fQ1BVX1BBUlRfQ09S VEVYX0E1OgorCQkJcGFydCA9ICJDb3J0ZXgtQTUiOworCQkJYnJlYWs7CisJCWNhc2UgQVJNX0NQ VV9QQVJUX0NPUlRFWF9BNzoKKwkJCXBhcnQgPSAiQ29ydGV4LUE3IjsKKwkJCWJyZWFrOworCQlj YXNlIEFSTV9DUFVfUEFSVF9DT1JURVhfQTg6CisJCQlwYXJ0ID0gIkNvcnRleC1BOCI7CisJCQli cmVhazsKKwkJY2FzZSBBUk1fQ1BVX1BBUlRfQ09SVEVYX0E5OgorCQkJcGFydCA9ICJDb3J0ZXgt QTkiOworCQkJYnJlYWs7CisJCWNhc2UgQVJNX0NQVV9QQVJUX0NPUlRFWF9BMTU6CisJCQlwYXJ0 ID0gIkNvcnRleC1BMTUiOworCQkJYnJlYWs7CisJCWNhc2UgQVJNX0NQVV9QQVJUX0NPUlRFWF9B NTM6CisJCQlwYXJ0ID0gIkNvcnRleC1BNTMiOworCQlkZWZhdWx0OgorCQkJcGFydCA9ICJ1bmtu b3duIjsKKwkJfQorCQlwcmludGYoImNvcmU6ICVzIHIldXAldVxuIiwgcGFydCwgbWFqb3IsIG1p bm9yKTsKKwl9CisKKy8vCWlmIChjYWNoZSAmICgxIDw8IDI0KSkgeworLy8JCS8qIHNlcGFyYXRl IEkvRCBjYWNoZSAqLworLy8JCXByaW50ZigiSS1jYWNoZTogIik7CisvLwkJZGVjb2RlX2NhY2hl KGNhY2hlICYgMHhmZmYpOworLy8JCXByaW50ZigiRC1jYWNoZTogIik7CisvLwkJZGVjb2RlX2Nh Y2hlKChjYWNoZSA+PiAxMikgJiAweGZmZik7CisvLwl9IGVsc2UgeworLy8JCS8qIHVuaWZpZWQg SS9EIGNhY2hlICovCisvLwkJcHJpbnRmKCJjYWNoZTogIik7CisvLwkJZGVjb2RlX2NhY2hlKGNh Y2hlICYgMHhmZmYpOworLy8JfQorCisvLwlwcmludGYoIkNvbnRyb2wgcmVnaXN0ZXI6ICIpOwor Ly8JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3JiaXRzKTsgaSsrKQorLy8JCWlmIChjciAm ICgxIDw8IGkpKQorLy8JCQlwcmludGYoIiVzICIsIGNyYml0c1tpXSk7CisvLwlwcmludGYoIlxu Iik7CisKKwlyZXR1cm4gMDsKK30KKworQkFSRUJPWF9DTURfU1RBUlQoY3B1aW5mbykKKwkuY21k ICAgICAgICAgICAgPSBkb19jcHVpbmZvLAorCUJBUkVCT1hfQ01EX0RFU0MoInNob3cgaW5mbyBh Ym91dCBDUFUiKQorCUJBUkVCT1hfQ01EX0dST1VQKENNRF9HUlBfSU5GTykKKwlCQVJFQk9YX0NN RF9DT01QTEVURShlbXB0eV9jb21wbGV0ZSkKK0JBUkVCT1hfQ01EX0VORAorCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2NwdS9lbnRyeS5jIGIvYXJjaC9hcm02NC9jcHUvZW50cnkuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDI5ZjA5Ci0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm02NC9jcHUvZW50cnkuYwpAQCAtMCwwICsxLDM4IEBACisjaW5jbHVkZSA8dHlwZXMu aD4KKworI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorCisjaW5jbHVkZSAiZW50cnkuaCIKKworLyoK KyAqIE1haW4gQVJNIGVudHJ5IHBvaW50LiBDYWxsIHRoaXMgd2l0aCB0aGUgbWVtb3J5IHJlZ2lv biB5b3UgY2FuCisgKiBzcGFyZSBmb3IgYmFyZWJveC4gVGhpcyBkb2Vzbid0IG5lY2Vzc2FyaWx5 IGhhdmUgdG8gYmUgdGhlIGZ1bGwKKyAqIFNEUkFNLiBUaGUgY3VycmVudGx5IHJ1bm5pbmcgYmlu YXJ5IGNhbiBiZSBpbnNpZGUgb3Igb3V0c2lkZSBvZgorICogdGhpcyByZWdpb24uIFRFWFRfQkFT RSBjYW4gYmUgaW5zaWRlIG9yIG91dHNpZGUgb2YgdGhpcworICogcmVnaW9uLiBib2FyZGRhdGEg d2lsbCBiZSBwcmVzZXJ2ZWQgYW5kIGNhbiBiZSBhY2Nlc3NlZCBsYXRlciB3aXRoCisgKiBiYXJl Ym94X2FybV9ib2FyZGRhdGEoKS4KKyAqCisgKiAtPiBtZW1iYXNlICsgbWVtc2l6ZQorICogICBT VEFDS19TSVpFICAgICAgICAgICAgICAtIHN0YWNrCisgKiAgIDE2S2lCLCBhbGlnbmVkIHRvIDE2 S2lCIC0gRmlyc3QgbGV2ZWwgcGFnZSB0YWJsZSBpZiBlYXJseSBNTVUgc3VwcG9ydAorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQKKyAqICAgMTI4S2lCICAgICAgICAg ICAgICAgICAgLSBlYXJseSBtZW1vcnkgc3BhY2UKKyAqIC0+IG1heGltdW0gZW5kIG9mIGJhcmVi b3ggYmluYXJ5CisgKgorICogVXN1YWxseSBhIFRFWFRfQkFTRSBvZiAxTWlCIGJlbG93IHlvdXIg bG93ZXN0IHBvc3NpYmxlIGVuZCBvZiBtZW1vcnkgc2hvdWxkCisgKiBiZSBmaW5lLgorICovCisK K3ZvaWQgX19ub3JldHVybiBiYXJlYm94X2FybV9lbnRyeSh1bnNpZ25lZCBsb25nIG1lbWJhc2Us CisJCQkJCSAgdW5zaWduZWQgbG9uZyBtZW1zaXplLCB2b2lkICpib2FyZGRhdGEpCit7CisJYXJt X3NldHVwX3N0YWNrKG1lbWJhc2UgKyBtZW1zaXplIC0gMTYpOworCWFybV9lYXJseV9tbXVfY2Fj aGVfaW52YWxpZGF0ZSgpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BCTF9NVUxUSV9JTUFH RVMpKQorCQliYXJlYm94X211bHRpX3BibF9zdGFydChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRh dGEpOworCWVsc2UgaWYgKElTX0VOQUJMRUQoQ09ORklHX1BCTF9TSU5HTEVfSU1BR0UpKQorCQli YXJlYm94X3NpbmdsZV9wYmxfc3RhcnQobWVtYmFzZSwgbWVtc2l6ZSwgYm9hcmRkYXRhKTsKKwll bHNlCisJCWJhcmVib3hfbm9uX3BibF9zdGFydChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRhdGEp OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvZW50cnkuaCBiL2FyY2gvYXJtNjQvY3B1 L2VudHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAxNjNhMwotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L2VudHJ5LmgKQEAgLTAsMCArMSwxOCBAQAor I2lmbmRlZiBfX0VOVFJZX0hfXworI2RlZmluZSBfX0VOVFJZX0hfXworCisjaW5jbHVkZSA8Y29t bW9uLmg+CisKK3ZvaWQgX19ub3JldHVybiBiYXJlYm94X25vbl9wYmxfc3RhcnQodW5zaWduZWQg bG9uZyBtZW1iYXNlLAorCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbWVtc2l6ZSwKKwkJCQkgICAg ICB2b2lkICpib2FyZGRhdGEpOworCit2b2lkIF9fbm9yZXR1cm4gYmFyZWJveF9tdWx0aV9wYmxf c3RhcnQodW5zaWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCQl1bnNpZ25lZCBsb25nIG1lbXNpemUs CisJCQkJCXZvaWQgKmJvYXJkZGF0YSk7CisKK3ZvaWQgX19ub3JldHVybiBiYXJlYm94X3Npbmds ZV9wYmxfc3RhcnQodW5zaWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCQkgdW5zaWduZWQgbG9uZyBt ZW1zaXplLAorCQkJCQkgdm9pZCAqYm9hcmRkYXRhKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2NwdS9leGNlcHRpb25zLlMgYi9hcmNoL2FybTY0L2NwdS9leGNlcHRpb25zLlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgxMjAyNQotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvY3B1L2V4Y2VwdGlvbnMuUwpAQCAtMCwwICsxLDEyNyBAQAorLyoK KyAqIChDKSBDb3B5cmlnaHQgMjAxMworICogRGF2aWQgRmVuZyA8ZmVuZ2h1YUBwaHl0aXVtLmNv bS5jbj4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjoJR1BMLTIuMCsKKyAqLworCisj aW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGxp bnV4L2xpbmthZ2UuaD4KKworLyoKKyAqIEVudGVyIEV4Y2VwdGlvbi4KKyAqIFRoaXMgd2lsbCBz YXZlIHRoZSBwcm9jZXNzb3Igc3RhdGUgdGhhdCBpcyBFTFIvWDB+WDMwCisgKiB0byB0aGUgc3Rh Y2sgZnJhbWUuCisgKi8KKy5tYWNybwlleGNlcHRpb25fZW50cnkKKwlzdHAJeDI5LCB4MzAsIFtz cCwgIy0xNl0hCisJc3RwCXgyNywgeDI4LCBbc3AsICMtMTZdIQorCXN0cAl4MjUsIHgyNiwgW3Nw LCAjLTE2XSEKKwlzdHAJeDIzLCB4MjQsIFtzcCwgIy0xNl0hCisJc3RwCXgyMSwgeDIyLCBbc3As ICMtMTZdIQorCXN0cAl4MTksIHgyMCwgW3NwLCAjLTE2XSEKKwlzdHAJeDE3LCB4MTgsIFtzcCwg Iy0xNl0hCisJc3RwCXgxNSwgeDE2LCBbc3AsICMtMTZdIQorCXN0cAl4MTMsIHgxNCwgW3NwLCAj LTE2XSEKKwlzdHAJeDExLCB4MTIsIFtzcCwgIy0xNl0hCisJc3RwCXg5LCB4MTAsIFtzcCwgIy0x Nl0hCisJc3RwCXg3LCB4OCwgW3NwLCAjLTE2XSEKKwlzdHAJeDUsIHg2LCBbc3AsICMtMTZdIQor CXN0cAl4MywgeDQsIFtzcCwgIy0xNl0hCisJc3RwCXgxLCB4MiwgW3NwLCAjLTE2XSEKKworCS8q IENvdWxkIGJlIHJ1bm5pbmcgYXQgRUwzL0VMMi9FTDEgKi8KKwltcnMJeDExLCBDdXJyZW50RUwK KwljbXAJeDExLCAjMHhDCQkvKiBDaGVjayBFTDMgc3RhdGUgKi8KKwliLmVxCTFmCisJY21wCXgx MSwgIzB4OAkJLyogQ2hlY2sgRUwyIHN0YXRlICovCisJYi5lcQkyZgorCWNtcAl4MTEsICMweDQJ CS8qIENoZWNrIEVMMSBzdGF0ZSAqLworCWIuZXEJM2YKKzM6CW1ycwl4MSwgZXNyX2VsMworCW1y cwl4MiwgZWxyX2VsMworCWIJMGYKKzI6CW1ycwl4MSwgZXNyX2VsMgorCW1ycwl4MiwgZWxyX2Vs MgorCWIJMGYKKzE6CW1ycwl4MSwgZXNyX2VsMQorCW1ycwl4MiwgZWxyX2VsMQorMDoKKwlzdHAJ eDIsIHgwLCBbc3AsICMtMTZdIQorCW1vdgl4MCwgc3AKKy5lbmRtCisKKy8qCisgKiBFeGNlcHRp b24gdmVjdG9ycy4KKyAqLworCS5hbGlnbgkxMQorCS5nbG9ibAl2ZWN0b3JzCit2ZWN0b3JzOgor CS5hbGlnbgk3CisJYglfZG9fYmFkX3N5bmMJLyogQ3VycmVudCBFTCBTeW5jaHJvbm91cyBUaHJl YWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9fYmFkX2lycQkvKiBDdXJyZW50IEVMIElSUSBUaHJl YWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9fYmFkX2ZpcQkvKiBDdXJyZW50IEVMIEZJUSBUaHJl YWQgKi8KKworCS5hbGlnbgk3CisJYglfZG9fYmFkX2Vycm9yCS8qIEN1cnJlbnQgRUwgRXJyb3Ig VGhyZWFkICovCisKKwkuYWxpZ24JNworCWIJX2RvX3N5bmMJLyogQ3VycmVudCBFTCBTeW5jaHJv bm91cyBIYW5kbGVyICovCisKKwkuYWxpZ24JNworCWIJX2RvX2lycQkJLyogQ3VycmVudCBFTCBJ UlEgSGFuZGxlciAqLworCisJLmFsaWduCTcKKwliCV9kb19maXEJCS8qIEN1cnJlbnQgRUwgRklR IEhhbmRsZXIgKi8KKworCS5hbGlnbgk3CisJYglfZG9fZXJyb3IJLyogQ3VycmVudCBFTCBFcnJv ciBIYW5kbGVyICovCisKKworX2RvX2JhZF9zeW5jOgorCWV4Y2VwdGlvbl9lbnRyeQorCWJsCWRv X2JhZF9zeW5jCisKK19kb19iYWRfaXJxOgorCWV4Y2VwdGlvbl9lbnRyeQorCWJsCWRvX2JhZF9p cnEKKworX2RvX2JhZF9maXE6CisJZXhjZXB0aW9uX2VudHJ5CisJYmwJZG9fYmFkX2ZpcQorCitf ZG9fYmFkX2Vycm9yOgorCWV4Y2VwdGlvbl9lbnRyeQorCWJsCWRvX2JhZF9lcnJvcgorCitfZG9f c3luYzoKKwlleGNlcHRpb25fZW50cnkKKwlibAlkb19zeW5jCisKK19kb19pcnE6CisJZXhjZXB0 aW9uX2VudHJ5CisJYmwJZG9faXJxCisKK19kb19maXE6CisJZXhjZXB0aW9uX2VudHJ5CisJYmwJ ZG9fZmlxCisKK19kb19lcnJvcjoKKwlleGNlcHRpb25fZW50cnkKKwlibAlkb19lcnJvcgorCisu c2VjdGlvbiAuZGF0YQorLmFsaWduIDQKKy5nbG9iYWwgYXJtX2lnbm9yZV9kYXRhX2Fib3J0Cith cm1faWdub3JlX2RhdGFfYWJvcnQ6Cisud29yZCAwIC8qIFdoZW4gIT0gMCBkYXRhIGFib3J0cyBh cmUgaWdub3JlZCAqLworLmdsb2JhbCBhcm1fZGF0YV9hYm9ydF9vY2N1cnJlZAorYXJtX2RhdGFf YWJvcnRfb2NjdXJyZWQ6Cisud29yZCAwIC8qIHNldCAhPSAwIGJ5IHRoZSBkYXRhIGFib3J0IGhh bmRsZXIgKi8KK2Fib3J0X3N0YWNrOgorLnNwYWNlIDgKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv Y3B1L2ludGVycnVwdHMuYyBiL2FyY2gvYXJtNjQvY3B1L2ludGVycnVwdHMuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmY1YjRiCi0tLSAvZGV2L251bGwKKysrIGIvYXJj aC9hcm02NC9jcHUvaW50ZXJydXB0cy5jCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogaW50ZXJy dXB0cy5jIC0gSW50ZXJydXB0IFN1cHBvcnQgUm91dGluZXMKKyAqCisgKiBDb3B5cmlnaHQgKGMp IDIwMDcgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgK KyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0 ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAq IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKy8qKgorICogQGZpbGUKKyAqIEBicmllZiBJbnRl cnJ1cHQgU3VwcG9ydCBSb3V0aW5lcworICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNs dWRlIDxhYm9ydC5oPgorI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vdW53 aW5kLmg+CisKK3N0YXRpYyB2b2lkIF9fbm9yZXR1cm4gZG9fZXhjZXB0aW9uKHN0cnVjdCBwdF9y ZWdzICpwdF9yZWdzKQoreworCXBhbmljKCIiKTsKK30KKworLyoqCisgKiBUaGUgQ1BVIHJ1bnMg aW50byBhbiB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24uIFRoYXQgcmVhbGx5IHNob3VsZCBub3QgaGFw cGVuIQorICogQHBhcmFtW2luXSBwdF9yZWdzIFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhl IGFjY2lkZW50IGhhcHBlbnMKKyAqLwordm9pZCBkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24gKHN0 cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXByaW50ZiAoInVuZGVmaW5lZCBpbnN0cnVjdGlv blxuIik7CisJZG9fZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0 Y2hlcyBhIHNvZnR3YXJlIGludGVycnVwdAorICogQHBhcmFtW2luXSBwdF9yZWdzIFJlZ2lzdGVy IHNldCBjb250ZW50IHdoZW4gdGhlIGludGVycnVwdCBoYXBwZW5zCisgKgorICogVGhlcmUgaXMg bm8gZnVuY3Rpb24gYmVoaW5kIHRoaXMgZmVhdHVyZS4gU28gd2hhdCB0byBkbyBlbHNlIHRoYW4K KyAqIGEgcmVzZXQ/CisgKi8KK3ZvaWQgZG9fc29mdHdhcmVfaW50ZXJydXB0IChzdHJ1Y3QgcHRf cmVncyAqcHRfcmVncykKK3sKKwlwcmludGYgKCJzb2Z0d2FyZSBpbnRlcnJ1cHRcbiIpOworCWRv X2V4Y2VwdGlvbihwdF9yZWdzKTsKK30KKworLyoqCisgKiBUaGUgQ1BVIGNhdGNoZXMgYSBwcmVm ZXRjaCBhYm9ydC4gVGhhdCByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4hCisgKiBAcGFyYW1baW5d IHB0X3JlZ3MgUmVnaXN0ZXIgc2V0IGNvbnRlbnQgd2hlbiB0aGUgYWNjaWRlbnQgaGFwcGVucwor ICoKKyAqIGluc3RydWN0aW9uIGZldGNoIGZyb20gYW4gdW5tYXBwZWQgYXJlYQorICovCit2b2lk IGRvX3ByZWZldGNoX2Fib3J0IChzdHJ1Y3QgcHRfcmVncyAqcHRfcmVncykKK3sKKwlwcmludGYg KCJwcmVmZXRjaCBhYm9ydFxuIik7CisJZG9fZXhjZXB0aW9uKHB0X3JlZ3MpOworfQorCisvKioK KyAqIFRoZSBDUFUgY2F0Y2hlcyBhIGRhdGEgYWJvcnQuIFRoYXQgcmVhbGx5IHNob3VsZCBub3Qg aGFwcGVuIQorICogQHBhcmFtW2luXSBwdF9yZWdzIFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4g dGhlIGFjY2lkZW50IGhhcHBlbnMKKyAqCisgKiBkYXRhIGZldGNoIGZyb20gYW4gdW5tYXBwZWQg YXJlYQorICovCit2b2lkIGRvX2RhdGFfYWJvcnQgKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQor eworCXUzMiBmYXI7CisKKwlwcmludGYoInVuYWJsZSB0byBoYW5kbGUgJXMgYXQgYWRkcmVzcyAw eCUwOHhcbiIsCisJCQlmYXIgPCBQQUdFX1NJWkUgPyAiTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNl IiA6CisJCQkicGFnaW5nIHJlcXVlc3QiLCBmYXIpOworCisJZG9fZXhjZXB0aW9uKHB0X3JlZ3Mp OworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0Y2hlcyBhIGZhc3QgaW50ZXJydXB0IHJlcXVlc3Qu CisgKiBAcGFyYW1baW5dIHB0X3JlZ3MgUmVnaXN0ZXIgc2V0IGNvbnRlbnQgd2hlbiB0aGUgaW50 ZXJydXB0IGhhcHBlbnMKKyAqCisgKiBXZSBuZXZlciBlbmFibGUgRklRcywgc28gdGhpcyBzaG91 bGQgbm90IGhhcHBlbgorICovCit2b2lkIGRvX2ZpcSAoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3Mp Cit7CisJcHJpbnRmICgiZmFzdCBpbnRlcnJ1cHQgcmVxdWVzdFxuIik7CisJZG9fZXhjZXB0aW9u KHB0X3JlZ3MpOworfQorCisvKioKKyAqIFRoZSBDUFUgY2F0Y2hlcyBhIHJlZ3VsYXIgaW50ZXJy dXB0LgorICogQHBhcmFtW2luXSBwdF9yZWdzIFJlZ2lzdGVyIHNldCBjb250ZW50IHdoZW4gdGhl IGludGVycnVwdCBoYXBwZW5zCisgKgorICogV2UgbmV2ZXIgZW5hYmxlIGludGVycnVwdHMsIHNv IHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4KKyAqLwordm9pZCBkb19pcnEgKHN0cnVjdCBwdF9yZWdz ICpwdF9yZWdzKQoreworCXByaW50ZiAoImludGVycnVwdCByZXF1ZXN0XG4iKTsKKwlkb19leGNl cHRpb24ocHRfcmVncyk7Cit9CisKK3ZvaWQgZG9fYmFkX3N5bmMoc3RydWN0IHB0X3JlZ3MgKnB0 X3JlZ3MpCit7CisJcHJpbnRmKCJiYWQgc3luY1xuIik7CisJZG9fZXhjZXB0aW9uKHB0X3JlZ3Mp OworfQorCit2b2lkIGRvX2JhZF9pcnEoc3RydWN0IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJp bnRmKCJiYWQgaXJxXG4iKTsKKwlkb19leGNlcHRpb24ocHRfcmVncyk7Cit9CisKK3ZvaWQgZG9f YmFkX2ZpcShzdHJ1Y3QgcHRfcmVncyAqcHRfcmVncykKK3sKKwlwcmludGYoImJhZCBmaXFcbiIp OworCWRvX2V4Y2VwdGlvbihwdF9yZWdzKTsKK30KKwordm9pZCBkb19iYWRfZXJyb3Ioc3RydWN0 IHB0X3JlZ3MgKnB0X3JlZ3MpCit7CisJcHJpbnRmKCJiYWQgZXJyb3JcbiIpOworCWRvX2V4Y2Vw dGlvbihwdF9yZWdzKTsKK30KKwordm9pZCBkb19zeW5jKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdz KQoreworCXByaW50Zigic3luYyBleGNlcHRpb25cbiIpOworCWRvX2V4Y2VwdGlvbihwdF9yZWdz KTsKK30KKworCit2b2lkIGRvX2Vycm9yKHN0cnVjdCBwdF9yZWdzICpwdF9yZWdzKQoreworCXBy aW50ZigiZXJyb3IgZXhjZXB0aW9uXG4iKTsKKwlkb19leGNlcHRpb24ocHRfcmVncyk7Cit9CisK K2V4dGVybiB2b2xhdGlsZSBpbnQgYXJtX2lnbm9yZV9kYXRhX2Fib3J0OworZXh0ZXJuIHZvbGF0 aWxlIGludCBhcm1fZGF0YV9hYm9ydF9vY2N1cnJlZDsKKwordm9pZCBkYXRhX2Fib3J0X21hc2so dm9pZCkKK3sKKwlhcm1fZGF0YV9hYm9ydF9vY2N1cnJlZCA9IDA7CisJYXJtX2lnbm9yZV9kYXRh X2Fib3J0ID0gMTsKK30KKworaW50IGRhdGFfYWJvcnRfdW5tYXNrKHZvaWQpCit7CisJYXJtX2ln bm9yZV9kYXRhX2Fib3J0ID0gMDsKKworCXJldHVybiBhcm1fZGF0YV9hYm9ydF9vY2N1cnJlZCAh PSAwOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvbG93bGV2ZWwuUyBiL2FyY2gvYXJt NjQvY3B1L2xvd2xldmVsLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdk NmVjZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L2xvd2xldmVsLlMKQEAgLTAs MCArMSw0OSBAQAorI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KKyNpbmNsdWRlIDxpbml0Lmg+ CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9naWMuaD4KKyNpbmNsdWRl IDxhc20tZ2VuZXJpYy9tZW1vcnlfbGF5b3V0Lmg+CisKKy5zZWN0aW9uICIudGV4dF9iYXJlX2lu aXRfIiwiYXgiCisKK0VOVFJZKGFybV9jcHVfbG93bGV2ZWxfaW5pdCkKKwlhZHIJeDAsIHZlY3Rv cnMKKwltcnMJeDEsIEN1cnJlbnRFTAorCWNtcAl4MSwgIzB4QwkJLyogQ2hlY2sgRUwzIHN0YXRl ICovCisJYi5lcQkxZgorCWNtcAl4MSwgIzB4OAkJLyogQ2hlY2sgRUwyIHN0YXRlICovCisJYi5l cQkyZgorCWNtcAl4MSwgIzB4NAkJLyogQ2hlY2sgRUwxIHN0YXRlICovCisJYi5lcQkzZgorCisx OgorCW1zcgl2YmFyX2VsMywgeDAKKwltb3YJeDAsICMxCQkJLyogTm9uLVNlY3VyZSBFTDAvMSAq LworCW9ycgl4MCwgeDAsICMoMSA8PCAxMCkJLyogNjQtYml0IEVMMiAqLworCW1zcglzY3JfZWwz LCB4MAorCW1zcgljcHRyX2VsMywgeHpyCisJYglkb25lCisKKzI6CisJbXNyCXZiYXJfZWwyLCB4 MAorCW1vdgl4MCwgIzB4MzNmZgkJLyogRW5hYmxlIEZQL1NJTUQgKi8KKwltc3IJY3B0cl9lbDIs IHgwCisJYglkb25lCisJCisKKzM6CisJbXNyCXZiYXJfZWwxLCB4MAorCW1vdgl4MCwgIygzIDw8 IDIwKQkJLyogRW5hYmxlIEZQL1NJTUQgKi8KKwltc3IJY3BhY3JfZWwxLCB4MAorCWIJZG9uZQor Citkb25lOgorCWxkcgl4MSwgPVNUQUNLX0JBU0UKKwltb3YJc3AsIHgxCisJbW92ICAgICB4Mjks ICMwCisJc3RwICAgICB4MjksIHgyOSwgW3NwLCAjLTE2XSEKKwltb3YgICAgIHgyOSwgc3AKKwor CXJldAorCitFTkRQUk9DKGFybV9jcHVfbG93bGV2ZWxfaW5pdCkKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvY3B1L21tdS1lYXJseS5jIGIvYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0ZDMxNgotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtNjQvY3B1L21tdS1lYXJseS5jCkBAIC0wLDAgKzEsNTMgQEAKKyNpbmNsdWRlIDxj b21tb24uaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNs dWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4KKyNpbmNsdWRlIDxh c20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CisKKyNpbmNsdWRlICJtbXUuaCIK Kworc3RhdGljIHVpbnQzMl90ICp0dGI7CisKK3N0YXRpYyB2b2lkIGNyZWF0ZV9zZWN0aW9ucyh1 bnNpZ25lZCBsb25nIGFkZHIsIGludCBzaXplX20sIHVuc2lnbmVkIGludCBmbGFncykKK3sKKwlp bnQgaTsKKworCWFkZHIgPj49IDIwOworCisJZm9yIChpID0gc2l6ZV9tOyBpID4gMDsgaS0tLCBh ZGRyKyspCisJCXR0YlthZGRyXSA9IChhZGRyIDw8IDIwKSB8IGZsYWdzOworfQorCitzdGF0aWMg dm9pZCBtYXBfY2FjaGFibGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXpl KQoreworCXN0YXJ0ICY9IH4oU1pfMU0gLSAxKTsKKwlzaXplID0gKHNpemUgKyAoU1pfMU0gLSAx KSkgJiB+KFNaXzFNIC0gMSk7CisKKwljcmVhdGVfc2VjdGlvbnMoc3RhcnQsIHNpemUgPj4gMjAs IFBNRF9TRUNUX0FQX1dSSVRFIHwKKwkJCVBNRF9TRUNUX0FQX1JFQUQgfCBQTURfVFlQRV9TRUNU IHwgUE1EX1NFQ1RfV0IpOworfQorCit2b2lkIG1tdV9lYXJseV9lbmFibGUodWludDMyX3QgbWVt YmFzZSwgdWludDMyX3QgbWVtc2l6ZSwgdWludDMyX3QgX3R0YikKK3sKKwlpbnQgaTsKKworCXR0 YiA9ICh1aW50MzJfdCAqKV90dGI7CisKKwlhcm1fc2V0X2NhY2hlX2Z1bmN0aW9ucygpOworCisJ LyogU2V0IHRoZSB0dGIgcmVnaXN0ZXIgKi8KKwlhc20gdm9sYXRpbGUgKCJtY3IgIHAxNSwwLCUw LGMyLGMwLDAiIDogOiAiciIodHRiKSAvKjoqLyk7CisKKwkvKiBTZXQgdGhlIERvbWFpbiBBY2Nl c3MgQ29udHJvbCBSZWdpc3RlciAqLworCWkgPSAweDM7CisJYXNtIHZvbGF0aWxlICgibWNyICBw MTUsMCwlMCxjMyxjMCwwIiA6IDogInIiKGkpIC8qOiovKTsKKworCWNyZWF0ZV9zZWN0aW9ucygw LCA0MDk2LCBQTURfU0VDVF9BUF9XUklURSB8CisJCQlQTURfU0VDVF9BUF9SRUFEIHwgUE1EX1RZ UEVfU0VDVCk7CisKKwltYXBfY2FjaGFibGUobWVtYmFzZSwgbWVtc2l6ZSk7CisKKwlfX21tdV9j YWNoZV9vbigpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5LmggYi9h cmNoL2FybTY0L2NwdS9tbXUtZWFybHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hZjIxZjUyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvbW11LWVhcmx5 LmgKQEAgLTAsMCArMSw2IEBACisjaWZuZGVmIF9fQVJNX0NQVV9NTVVfRUFSTFlfSAorI2RlZmlu ZSBfX0FSTV9DUFVfTU1VX0VBUkxZX0gKKwordm9pZCBtbXVfZWFybHlfZW5hYmxlKHVpbnQzMl90 IG1lbWJhc2UsIHVpbnQzMl90IG1lbXNpemUsIHVpbnQzMl90IHR0Yik7CisKKyNlbmRpZiAvKiBf X0FSTV9DUFVfTU1VX0VBUkxZX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L21tdS5j IGIvYXJjaC9hcm02NC9jcHUvbW11LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYmM1MzI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L21tdS5jCkBAIC0w LDAgKzEsNDkyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMgU2FzY2hhIEhhdWVy IDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisgKiBTZWUgZmlsZSBD UkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJv amVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg KgorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkJIm1tdTogIiBmbXQKKworI2luY2x1ZGUgPGNv bW1vbi5oPgorI2luY2x1ZGUgPGRtYS1kaXIuaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVk ZSA8bW11Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgor I2luY2x1ZGUgPGFzbS9tZW1vcnkuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNp bmNsdWRlIDxhc20vc3lzdGVtLmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CisjaW5jbHVkZSA8 bWVtb3J5Lmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbV9pbmZvLmg+CisKKyNpbmNsdWRlICJtbXUu aCIKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgKnR0YjsKKworc3RhdGljIHZvaWQgY3JlYXRlX3Nl Y3Rpb25zKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5zaWduZWQgbG9uZyBwaHlzLCBpbnQgc2l6ZV9t LAorCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJaW50IGk7CisKKwlwaHlzID4+PSAyMDsKKwl2 aXJ0ID4+PSAyMDsKKworCWZvciAoaSA9IHNpemVfbTsgaSA+IDA7IGktLSwgdmlydCsrLCBwaHlz KyspCisJCXR0Ylt2aXJ0XSA9IChwaHlzIDw8IDIwKSB8IGZsYWdzOworCisJX19tbXVfY2FjaGVf Zmx1c2goKTsKK30KKworLyoKKyAqIERvIGl0IHRoZSBzaW1wbGUgd2F5IGZvciBub3cgYW5kIGlu dmFsaWRhdGUgdGhlIGVudGlyZQorICogdGxiCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB0bGJf aW52YWxpZGF0ZSh2b2lkKQoreworCWFzbSB2b2xhdGlsZSAoCisJCSJtb3YJcjAsICMwXG4iCisJ CSJtY3IJcDE1LCAwLCByMCwgYzcsIGMxMCwgNDsJQCBkcmFpbiB3cml0ZSBidWZmZXJcbiIKKwkJ Im1jcglwMTUsIDAsIHIwLCBjOCwgYzYsIDA7ICBAIGludmFsaWRhdGUgRCBUTEJzXG4iCisJCSJt Y3IJcDE1LCAwLCByMCwgYzgsIGM1LCAwOyAgQCBpbnZhbGlkYXRlIEkgVExCc1xuIgorCQk6CisJ CToKKwkJOiAicjAiCisJKTsKK30KKworI2RlZmluZSBQVEVfRkxBR1NfQ0FDSEVEX1Y3IChQVEVf RVhUX1RFWCgxKSB8IFBURV9CVUZGRVJBQkxFIHwgUFRFX0NBQ0hFQUJMRSkKKyNkZWZpbmUgUFRF X0ZMQUdTX1dDX1Y3IFBURV9FWFRfVEVYKDEpCisjZGVmaW5lIFBURV9GTEFHU19VTkNBQ0hFRF9W NyAoMCkKKyNkZWZpbmUgUFRFX0ZMQUdTX0NBQ0hFRF9WNCAoUFRFX1NNQUxMX0FQX1VOT19TUlcg fCBQVEVfQlVGRkVSQUJMRSB8IFBURV9DQUNIRUFCTEUpCisjZGVmaW5lIFBURV9GTEFHU19VTkNB Q0hFRF9WNCBQVEVfU01BTExfQVBfVU5PX1NSVworCisvKgorICogUFRFIGZsYWdzIHRvIHNldCBj YWNoZWQgYW5kIHVuY2FjaGVkIGFyZWFzLgorICogVGhpcyB3aWxsIGJlIGRldGVybWluZWQgYXQg cnVudGltZS4KKyAqLworc3RhdGljIHVpbnQzMl90IHB0ZV9mbGFnc19jYWNoZWQ7CitzdGF0aWMg dWludDMyX3QgcHRlX2ZsYWdzX3djOworc3RhdGljIHVpbnQzMl90IHB0ZV9mbGFnc191bmNhY2hl ZDsKKworI2RlZmluZSBQVEVfTUFTSyAoKDEgPDwgMTIpIC0gMSkKKworc3RhdGljIHZvaWQgYXJt X21tdV9ub3RfaW5pdGlhbGl6ZWRfZXJyb3Iodm9pZCkKK3sKKwkvKgorCSAqIFRoaXMgbWVhbnM6 CisJICogLSBvbmUgb2YgdGhlIE1NVSBmdW5jdGlvbnMgbGlrZSBkbWFfYWxsb2NfY29oZXJlbnQK KwkgKiAgIG9yIHJlbWFwX3JhbmdlIGlzIGNhbGxlZCB0b28gZWFybHksIGJlZm9yZSB0aGUgTU1V IGlzIGluaXRpYWxpemVkCisJICogLSBPciB0aGUgTU1VIGluaXRpYWxpemF0aW9uIGhhcyBmYWls ZWQgZWFybGllcgorCSAqLworCXBhbmljKCJNTVUgbm90IGluaXRpYWxpemVkXG4iKTsKK30KKwor LyoKKyAqIENyZWF0ZSBhIHNlY29uZCBsZXZlbCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgdGhlIGdp dmVuIHZpcnR1YWwgYWRkcmVzcy4KKyAqIFdlIGluaXRpYWxseSBjcmVhdGUgYSBmbGF0IHVuY2Fj aGVkIG1hcHBpbmcgb24gaXQuCisgKiBOb3QgeWV0IGV4cG9ydGVkLCBidXQgbWF5IGJlIGxhdGVy IGlmIHNvbWVvbmUgZmluZHMgdXNlIGZvciBpdC4KKyAqLworc3RhdGljIHUzMiAqYXJtX2NyZWF0 ZV9wdGUodW5zaWduZWQgbG9uZyB2aXJ0KQoreworCXUzMiAqdGFibGU7CisJaW50IGk7CisKKwl0 YWJsZSA9IG1lbWFsaWduKDB4NDAwLCAweDQwMCk7CisKKwlpZiAoIXR0YikKKwkJYXJtX21tdV9u b3RfaW5pdGlhbGl6ZWRfZXJyb3IoKTsKKworCXR0Ylt2aXJ0ID4+IDIwXSA9ICh1bnNpZ25lZCBs b25nKXRhYmxlIHwgUE1EX1RZUEVfVEFCTEU7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKysp IHsKKwkJdGFibGVbaV0gPSB2aXJ0IHwgUFRFX1RZUEVfU01BTEwgfCBwdGVfZmxhZ3NfdW5jYWNo ZWQ7CisJCXZpcnQgKz0gUEFHRV9TSVpFOworCX0KKworCXJldHVybiB0YWJsZTsKK30KKworc3Rh dGljIHUzMiAqZmluZF9wdGUodW5zaWduZWQgbG9uZyBhZHIpCit7CisJdTMyICp0YWJsZTsKKwor CWlmICghdHRiKQorCQlhcm1fbW11X25vdF9pbml0aWFsaXplZF9lcnJvcigpOworCisJaWYgKCh0 dGJbYWRyID4+IDIwXSAmIFBNRF9UWVBFX01BU0spICE9IFBNRF9UWVBFX1RBQkxFKSB7CisJCXN0 cnVjdCBtZW1vcnlfYmFuayAqYmFuazsKKwkJaW50IGkgPSAwOworCisJCS8qCisJCSAqIFRoaXMg c2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBwYWdlIG1hcHBlZCBtZW1vcnkgaW5zaWRlIG91cgor CQkgKiBtZW1vcnkgYmFua3MuIEl0J3MgYSBidWcgdG8gY2FsbCBpdCB3aXRoIHNlY3Rpb24gbWFw cGVkIG1lbW9yeQorCQkgKiBsb2NhdGlvbnMuCisJCSAqLworCQlwcl9jcml0KCIlczogVFRCIGZv ciBhZGRyZXNzIDB4JTA4bHggaXMgbm90IG9mIHR5cGUgdGFibGVcbiIsCisJCQkJX19mdW5jX18s IGFkcik7CisJCXByX2NyaXQoIk1lbW9yeSBiYW5rczpcbiIpOworCQlmb3JfZWFjaF9tZW1vcnlf YmFuayhiYW5rKQorCQkJcHJfY3JpdCgiIyVkIDB4JTA4bHggLSAweCUwOGx4XG4iLCBpLCBiYW5r LT5zdGFydCwKKwkJCQkJYmFuay0+c3RhcnQgKyBiYW5rLT5zaXplIC0gMSk7CisJCUJVRygpOwor CX0KKworCS8qIGZpbmQgdGhlIGNvYXJzZSBwYWdlIHRhYmxlIGJhc2UgYWRkcmVzcyAqLworCXRh YmxlID0gKHUzMiAqKSh0dGJbYWRyID4+IDIwXSAmIH4weDNmZik7CisKKwkvKiBmaW5kIHNlY29u ZCBsZXZlbCBkZXNjcmlwdG9yICovCisJcmV0dXJuICZ0YWJsZVsoYWRyID4+IFBBR0VfU0hJRlQp ICYgMHhmZl07Cit9CisKK3N0YXRpYyB2b2lkIGRtYV9mbHVzaF9yYW5nZSh1bnNpZ25lZCBsb25n IHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKK3sKKwlfX2RtYV9mbHVzaF9yYW5nZShzdGFydCwg ZW5kKTsKKwlpZiAob3V0ZXJfY2FjaGUuZmx1c2hfcmFuZ2UpCisJCW91dGVyX2NhY2hlLmZsdXNo X3JhbmdlKHN0YXJ0LCBlbmQpOworfQorCitzdGF0aWMgdm9pZCBkbWFfaW52X3JhbmdlKHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQoreworCWlmIChvdXRlcl9jYWNoZS5p bnZfcmFuZ2UpCisJCW91dGVyX2NhY2hlLmludl9yYW5nZShzdGFydCwgZW5kKTsKKwlfX2RtYV9p bnZfcmFuZ2Uoc3RhcnQsIGVuZCk7Cit9CisKK3N0YXRpYyBpbnQgX19yZW1hcF9yYW5nZSh2b2lk ICpfc3RhcnQsIHNpemVfdCBzaXplLCB1MzIgcHRlX2ZsYWdzKQoreworCXVuc2lnbmVkIGxvbmcg c3RhcnQgPSAodW5zaWduZWQgbG9uZylfc3RhcnQ7CisJdTMyICpwOworCWludCBudW1lbnRyaWVz LCBpOworCisJbnVtZW50cmllcyA9IHNpemUgPj4gUEFHRV9TSElGVDsKKwlwID0gZmluZF9wdGUo c3RhcnQpOworCisJZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgeworCQlwW2ldICY9 IH5QVEVfTUFTSzsKKwkJcFtpXSB8PSBwdGVfZmxhZ3MgfCBQVEVfVFlQRV9TTUFMTDsKKwl9CisK KwlkbWFfZmx1c2hfcmFuZ2UoKHVuc2lnbmVkIGxvbmcpcCwKKwkJCSh1bnNpZ25lZCBsb25nKXAg KyBudW1lbnRyaWVzICogc2l6ZW9mKHUzMikpOworCisJdGxiX2ludmFsaWRhdGUoKTsKKworCXJl dHVybiAwOworfQorCitpbnQgYXJjaF9yZW1hcF9yYW5nZSh2b2lkICpzdGFydCwgc2l6ZV90IHNp emUsIHVuc2lnbmVkIGZsYWdzKQoreworCXUzMiBwdGVfZmxhZ3M7CisKKwlzd2l0Y2ggKGZsYWdz KSB7CisJY2FzZSBNQVBfQ0FDSEVEOgorCQlwdGVfZmxhZ3MgPSBwdGVfZmxhZ3NfY2FjaGVkOwor CQlicmVhazsKKwljYXNlIE1BUF9VTkNBQ0hFRDoKKwkJcHRlX2ZsYWdzID0gcHRlX2ZsYWdzX3Vu Y2FjaGVkOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwly ZXR1cm4gX19yZW1hcF9yYW5nZShzdGFydCwgc2l6ZSwgcHRlX2ZsYWdzKTsKK30KKwordm9pZCAq bWFwX2lvX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgcGh5cywgdm9pZCAqX3N0YXJ0LCBzaXplX3Qg c2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpX3N0YXJ0LCBz ZWM7CisKKwlwaHlzID4+PSAyMDsKKwlmb3IgKHNlYyA9IHN0YXJ0OyBzZWMgPCBzdGFydCArIHNp emU7IHNlYyArPSAoMSA8PCAyMCkpCisJCXR0YltzZWMgPj4gMjBdID0gKHBoeXMrKyA8PCAyMCkg fCBQTURfU0VDVF9ERUZfVU5DQUNIRUQ7CisKKwlkbWFfZmx1c2hfcmFuZ2UoKHVuc2lnbmVkIGxv bmcpdHRiLCAodW5zaWduZWQgbG9uZyl0dGIgKyAweDQwMDApOworCXRsYl9pbnZhbGlkYXRlKCk7 CisJcmV0dXJuIF9zdGFydDsKK30KKworLyoKKyAqIHJlbWFwIHRoZSBtZW1vcnkgYmFuayBkZXNj cmliZWQgYnkgbWVtIGNhY2hhYmxlIGFuZAorICogYnVmZmVyYWJsZQorICovCitzdGF0aWMgaW50 IGFybV9tbXVfcmVtYXBfc2RyYW0oc3RydWN0IG1lbW9yeV9iYW5rICpiYW5rKQoreworCXVuc2ln bmVkIGxvbmcgcGh5cyA9ICh1bnNpZ25lZCBsb25nKWJhbmstPnN0YXJ0OworCXVuc2lnbmVkIGxv bmcgdHRiX3N0YXJ0ID0gcGh5cyA+PiAyMDsKKwl1bnNpZ25lZCBsb25nIHR0Yl9lbmQgPSAocGh5 cyA+PiAyMCkgKyAoYmFuay0+c2l6ZSA+PiAyMCk7CisJdW5zaWduZWQgbG9uZyBudW1fcHRlcyA9 IGJhbmstPnNpemUgPj4gMTI7CisJaW50IGksIHB0ZTsKKwl1MzIgKnB0ZXM7CisKKwlwcl9kZWJ1 ZygicmVtYXBwaW5nIFNEUkFNIGZyb20gMHglMDhseCAoc2l6ZSAweCUwOGx4KVxuIiwKKwkJCXBo eXMsIGJhbmstPnNpemUpOworCisJLyoKKwkgKiBXZSByZXBsYWNlIGVhY2ggMU1pQiBzZWN0aW9u IGluIHRoaXMgcmFuZ2Ugd2l0aCBzZWNvbmQgbGV2ZWwgcGFnZQorCSAqIHRhYmxlcywgdGhlcmVm b3JlIHdlIG11c3QgaGF2ZSAxTWliIGFsaWdtZW50IGhlcmUuCisJICovCisJaWYgKChwaHlzICYg KFNaXzFNIC0gMSkpIHx8IChiYW5rLT5zaXplICYgKFNaXzFNIC0gMSkpKQorCQlyZXR1cm4gLUVJ TlZBTDsKKworCXB0ZXMgPSB4bWVtYWxpZ24oUEFHRV9TSVpFLCBudW1fcHRlcyAqIHNpemVvZih1 MzIpKTsKKworCXByX2RlYnVnKCJwdGVzOiAweCVwIHR0Yl9zdGFydDogMHglMDhseCB0dGJfZW5k OiAweCUwOGx4XG4iLAorCQkJcHRlcywgdHRiX3N0YXJ0LCB0dGJfZW5kKTsKKworCWZvciAoaSA9 IDA7IGkgPCBudW1fcHRlczsgaSsrKSB7CisJCXB0ZXNbaV0gPSAocGh5cyArIGkgKiBQQUdFX1NJ WkUpIHwgUFRFX1RZUEVfU01BTEwgfAorCQkJcHRlX2ZsYWdzX2NhY2hlZDsKKwl9CisKKwlwdGUg PSAwOworCisJZm9yIChpID0gdHRiX3N0YXJ0OyBpIDwgdHRiX2VuZDsgaSsrKSB7CisJCXR0Yltp XSA9ICh1bnNpZ25lZCBsb25nKSgmcHRlc1twdGVdKSB8IFBNRF9UWVBFX1RBQkxFIHwKKwkJCSgw IDw8IDQpOworCQlwdGUgKz0gMjU2OworCX0KKworCWRtYV9mbHVzaF9yYW5nZSgodW5zaWduZWQg bG9uZyl0dGIsICh1bnNpZ25lZCBsb25nKXR0YiArIDB4NDAwMCk7CisJZG1hX2ZsdXNoX3Jhbmdl KCh1bnNpZ25lZCBsb25nKXB0ZXMsCisJCQkodW5zaWduZWQgbG9uZylwdGVzICsgbnVtX3B0ZXMg KiBzaXplb2YodTMyKSk7CisKKwl0bGJfaW52YWxpZGF0ZSgpOworCisJcmV0dXJuIDA7Cit9Cisv KgorICogV2UgaGF2ZSA4IGV4Y2VwdGlvbiB2ZWN0b3JzIGFuZCB0aGUgdGFibGUgY29uc2lzdHMg b2YgYWJzb2x1dGUKKyAqIGp1bXBzLCBzbyB3ZSBuZWVkIDggKiA0IGJ5dGVzIGZvciB0aGUgaW5z dHJ1Y3Rpb25zIGFuZCBhbm90aGVyCisgKiA4ICogNCBieXRlcyBmb3IgdGhlIGFkZHJlc3Nlcy4K KyAqLworI2RlZmluZSBBUk1fVkVDVE9SU19TSVpFCShzaXplb2YodTMyKSAqIDggKiAyKQorCisv KgorICogTWFwIHZlY3RvcnMgYW5kIHplcm8gcGFnZQorICovCitzdGF0aWMgdm9pZCB2ZWN0b3Jz X2luaXQodm9pZCkKK3sKKwl1MzIgKmV4YywgKnplcm8gPSBOVUxMOworCXZvaWQgKnZlY3RvcnM7 CisJdTMyIGNyOworCisJY3IgPSBnZXRfY3IoKTsKKwljciB8PSBDUl9WOworCXNldF9jcihjcik7 CisJY3IgPSBnZXRfY3IoKTsKKworCWlmIChjciAmIENSX1YpIHsKKwkJLyoKKwkJICogSWYgd2Ug Y2FuIHVzZSBoaWdoIHZlY3RvcnMsIGNyZWF0ZSB0aGUgc2Vjb25kIGxldmVsCisJCSAqIHBhZ2Ug dGFibGUgZm9yIHRoZSBoaWdoIHZlY3RvcnMgYW5kIHplcm8gcGFnZQorCQkgKi8KKwkJZXhjID0g YXJtX2NyZWF0ZV9wdGUoMHhmZmYwMDAwMCk7CisJCXplcm8gPSBhcm1fY3JlYXRlX3B0ZSgweDAp OworCisJCS8qIFNldCB0aGUgemVybyBwYWdlIHRvIGZhdWx0aW5nICovCisJCXplcm9bMF0gPSAw OworCX0gZWxzZSB7CisJCS8qCisJCSAqIE90aGVyd2lzZSBtYXAgdGhlIHZlY3RvcnMgdG8gdGhl IHplcm8gcGFnZS4gV2UgaGF2ZSB0bworCQkgKiBsaXZlIHdpdGhvdXQgYmVpbmcgYWJsZSB0byBj YXRjaCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzCisJCSAqLworCQlleGMgPSBhcm1fY3JlYXRl X3B0ZSgweDApOworCisJCWlmIChjcHVfYXJjaGl0ZWN0dXJlKCkgPj0gQ1BVX0FSQ0hfQVJNdjcp IHsKKwkJCS8qCisJCQkgKiBBUk12NyBDUFVzIGFsbG93IHRvIHJlbWFwIGxvdyB2ZWN0b3JzIGZy b20KKwkJCSAqIDB4MCB0byBhbiBhcmJpdHJhcnkgYWRkcmVzcyB1c2luZyBWQkFSCisJCQkgKiBy ZWdpc3Rlciwgc28gbGV0J3MgbWFrZSBzdXJlIHdlIGhhdmUgaXQKKwkJCSAqIHBvaW50aW5nIHRv IHRoZSBjb3JyZWN0IGFkZHJlc3MKKwkJCSAqLworCQkJc2V0X3ZiYXIoMHgwKTsKKwkJfQorCX0K KworCWFybV9maXh1cF92ZWN0b3JzKCk7CisKKwl2ZWN0b3JzID0geG1lbWFsaWduKFBBR0VfU0la RSwgUEFHRV9TSVpFKTsKKwltZW1zZXQodmVjdG9ycywgMCwgUEFHRV9TSVpFKTsKKwltZW1jcHko dmVjdG9ycywgX19leGNlcHRpb25zX3N0YXJ0LCBfX2V4Y2VwdGlvbnNfc3RvcCAtIF9fZXhjZXB0 aW9uc19zdGFydCk7CisKKwlpZiAoY3IgJiBDUl9WKQorCQlleGNbMjU2IC0gMTZdID0gKHUzMil2 ZWN0b3JzIHwgUFRFX1RZUEVfU01BTEwgfAorCQkJcHRlX2ZsYWdzX2NhY2hlZDsKKwllbHNlCisJ CWV4Y1swXSA9ICh1MzIpdmVjdG9ycyB8IFBURV9UWVBFX1NNQUxMIHwgcHRlX2ZsYWdzX2NhY2hl ZDsKK30KKworLyoKKyAqIFByZXBhcmUgTU1VIGZvciB1c2FnZSBlbmFibGUgaXQuCisgKi8KK3N0 YXRpYyBpbnQgbW11X2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgbWVtb3J5X2JhbmsgKmJhbms7CisJ aW50IGk7CisKKwlpZiAobGlzdF9lbXB0eSgmbWVtb3J5X2JhbmtzKSkKKwkJLyoKKwkJICogSWYg eW91IHNlZSB0aGlzIGl0IG1lYW5zIHlvdSBoYXZlIG5vIG1lbW9yeSByZWdpc3RlcmVkLgorCQkg KiBUaGlzIGNhbiBiZSBkb25lIGVpdGhlciB3aXRoIGFybV9hZGRfbWVtX2RldmljZSgpIGluIGFu CisJCSAqIGluaXRjYWxsIHByaW9yIHRvIG1tdV9pbml0Y2FsbCBvciB2aWEgZGV2aWNldHJlZSBp biB0aGUKKwkJICogbWVtb3J5IG5vZGUuCisJCSAqLworCQlwYW5pYygiTU1VOiBObyBtZW1vcnkg YmFuayBmb3VuZCEgQ2Fubm90IGNvbnRpbnVlXG4iKTsKKworCWFybV9zZXRfY2FjaGVfZnVuY3Rp b25zKCk7CisKKwlpZiAoY3B1X2FyY2hpdGVjdHVyZSgpID49IENQVV9BUkNIX0FSTXY3KSB7CisJ CXB0ZV9mbGFnc19jYWNoZWQgPSBQVEVfRkxBR1NfQ0FDSEVEX1Y3OworCQlwdGVfZmxhZ3Nfd2Mg PSBQVEVfRkxBR1NfV0NfVjc7CisJCXB0ZV9mbGFnc191bmNhY2hlZCA9IFBURV9GTEFHU19VTkNB Q0hFRF9WNzsKKwl9IGVsc2UgeworCQlwdGVfZmxhZ3NfY2FjaGVkID0gUFRFX0ZMQUdTX0NBQ0hF RF9WNDsKKwkJcHRlX2ZsYWdzX3djID0gUFRFX0ZMQUdTX1VOQ0FDSEVEX1Y0OworCQlwdGVfZmxh Z3NfdW5jYWNoZWQgPSBQVEVfRkxBR1NfVU5DQUNIRURfVjQ7CisJfQorCisJaWYgKGdldF9jcigp ICYgQ1JfTSkgeworCQkvKgorCQkgKiBFYXJseSBNTVUgY29kZSBoYXMgYWxyZWFkeSBlbmFibGVk IHRoZSBNTVUuIFdlIGFzc3VtZSBhCisJCSAqIGZsYXQgMToxIHNlY3Rpb24gbWFwcGluZyBpbiB0 aGlzIGNhc2UuCisJCSAqLworCQlhc20gdm9sYXRpbGUgKCJtcmMgIHAxNSwwLCUwLGMyLGMwLDAi IDogIj1yIih0dGIpKTsKKworCQkvKiBDbGVhciB1bnByZWRpY3RhYmxlIGJpdHMgWzEzOjBdICov CisJCXR0YiA9ICh1bnNpZ25lZCBsb25nICopKCh1bnNpZ25lZCBsb25nKXR0YiAmIH4weDNmZmYp OworCisJCWlmICghcmVxdWVzdF9zZHJhbV9yZWdpb24oInR0YiIsICh1bnNpZ25lZCBsb25nKXR0 YiwgU1pfMTZLKSkKKwkJCS8qCisJCQkgKiBUaGlzIGNhbiBtZWFuIHRoYXQ6CisJCQkgKiAtIHRo ZSBlYXJseSBNTVUgY29kZSBoYXMgcHV0IHRoZSB0dGIgaW50byBhIHBsYWNlCisJCQkgKiAgIHdo aWNoIHdlIGRvbid0IGhhdmUgaW5zaWRlIG91ciBhdmFpbGFibGUgbWVtb3J5CisJCQkgKiAtIFNv bWVib2R5IGVsc2UgaGFzIG9jY3VwaWVkIHRoZSB0dGIgcmVnaW9uIHdoaWNoIG1lYW5zCisJCQkg KiAgIHRoZSB0dGIgd2lsbCBnZXQgY29ycnVwdGVkLgorCQkJICovCisJCQlwcl9jcml0KCJDcml0 aWNhbCBFcnJvcjogQ2FuJ3QgcmVxdWVzdCBTRFJBTSByZWdpb24gZm9yIHR0YiBhdCAlcFxuIiwK KwkJCQkJdHRiKTsKKwl9IGVsc2UgeworCQl0dGIgPSBtZW1hbGlnbigweDEwMDAwLCAweDQwMDAp OworCX0KKworCXByX2RlYnVnKCJ0dGI6IDB4JXBcbiIsIHR0Yik7CisKKwkvKiBTZXQgdGhlIHR0 YiByZWdpc3RlciAqLworCWFzbSB2b2xhdGlsZSAoIm1jciAgcDE1LDAsJTAsYzIsYzAsMCIgOiA6 ICJyIih0dGIpIC8qOiovKTsKKworCS8qIFNldCB0aGUgRG9tYWluIEFjY2VzcyBDb250cm9sIFJl Z2lzdGVyICovCisJaSA9IDB4MzsKKwlhc20gdm9sYXRpbGUgKCJtY3IgIHAxNSwwLCUwLGMzLGMw LDAiIDogOiAiciIoaSkgLyo6Ki8pOworCisJLyogY3JlYXRlIGEgZmxhdCBtYXBwaW5nIHVzaW5n IDFNaUIgc2VjdGlvbnMgKi8KKwljcmVhdGVfc2VjdGlvbnMoMCwgMCwgUEFHRV9TSVpFLCBQTURf U0VDVF9BUF9XUklURSB8IFBNRF9TRUNUX0FQX1JFQUQgfAorCQkJUE1EX1RZUEVfU0VDVCk7CisK Kwl2ZWN0b3JzX2luaXQoKTsKKworCS8qCisJICogRmlyc3QgcmVtYXAgc2RyYW0gY2FjaGVkIHVz aW5nIHNlY3Rpb25zLgorCSAqIFRoaXMgaXMgdG8gc3BlZWQgdXAgdGhlIGdlbmVyYXRpb24gb2Yg Mm5kIGxldmVsIHBhZ2UgdGFibGVzCisJICogYmVsb3cKKwkgKi8KKwlmb3JfZWFjaF9tZW1vcnlf YmFuayhiYW5rKQorCQljcmVhdGVfc2VjdGlvbnMoYmFuay0+c3RhcnQsIGJhbmstPnN0YXJ0LCBi YW5rLT5zaXplID4+IDIwLAorCQkJCVBNRF9TRUNUX0RFRl9DQUNIRUQpOworCisJX19tbXVfY2Fj aGVfb24oKTsKKworCS8qCisJICogTm93IHRoYXQgd2UgaGF2ZSB0aGUgTU1VIGFuZCBjYWNoZXMg b24gcmVtYXAgc2RyYW0gYWdhaW4gdXNpbmcKKwkgKiBwYWdlIHRhYmxlcworCSAqLworCWZvcl9l YWNoX21lbW9yeV9iYW5rKGJhbmspCisJCWFybV9tbXVfcmVtYXBfc2RyYW0oYmFuayk7CisKKwly ZXR1cm4gMDsKK30KK21tdV9pbml0Y2FsbChtbXVfaW5pdCk7CisKK3ZvaWQgKmRtYV9hbGxvY19j b2hlcmVudChzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSkKK3sKKwl2b2lkICpy ZXQ7CisKKwlzaXplID0gUEFHRV9BTElHTihzaXplKTsKKwlyZXQgPSB4bWVtYWxpZ24oUEFHRV9T SVpFLCBzaXplKTsKKwlpZiAoZG1hX2hhbmRsZSkKKwkJKmRtYV9oYW5kbGUgPSAoZG1hX2FkZHJf dClyZXQ7CisKKwlkbWFfaW52X3JhbmdlKCh1bnNpZ25lZCBsb25nKXJldCwgKHVuc2lnbmVkIGxv bmcpcmV0ICsgc2l6ZSk7CisKKwlfX3JlbWFwX3JhbmdlKHJldCwgc2l6ZSwgcHRlX2ZsYWdzX3Vu Y2FjaGVkKTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgKmRtYV9hbGxvY193cml0ZWNvbWJp bmUoc2l6ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpCit7CisJdm9pZCAqcmV0Owor CisJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CisJcmV0ID0geG1lbWFsaWduKFBBR0VfU0laRSwg c2l6ZSk7CisJaWYgKGRtYV9oYW5kbGUpCisJCSpkbWFfaGFuZGxlID0gKGRtYV9hZGRyX3QpcmV0 OworCisJZG1hX2ludl9yYW5nZSgodW5zaWduZWQgbG9uZylyZXQsICh1bnNpZ25lZCBsb25nKXJl dCArIHNpemUpOworCisJX19yZW1hcF9yYW5nZShyZXQsIHNpemUsIHB0ZV9mbGFnc193Yyk7CisK KwlyZXR1cm4gcmV0OworfQorCit1bnNpZ25lZCBsb25nIHZpcnRfdG9fcGh5cyh2b2xhdGlsZSB2 b2lkICp2aXJ0KQoreworCXJldHVybiAodW5zaWduZWQgbG9uZyl2aXJ0OworfQorCit2b2lkICpw aHlzX3RvX3ZpcnQodW5zaWduZWQgbG9uZyBwaHlzKQoreworCXJldHVybiAodm9pZCAqKXBoeXM7 Cit9CisKK3ZvaWQgZG1hX2ZyZWVfY29oZXJlbnQodm9pZCAqbWVtLCBkbWFfYWRkcl90IGRtYV9o YW5kbGUsIHNpemVfdCBzaXplKQoreworCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOworCV9fcmVt YXBfcmFuZ2UobWVtLCBzaXplLCBwdGVfZmxhZ3NfY2FjaGVkKTsKKworCWZyZWUobWVtKTsKK30K Kwordm9pZCBkbWFfc3luY19zaW5nbGVfZm9yX2NwdSh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHNp emVfdCBzaXplLAorCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpCit7CisJaWYg KGRpciAhPSBETUFfVE9fREVWSUNFKSB7CisJCWlmIChvdXRlcl9jYWNoZS5pbnZfcmFuZ2UpCisJ CQlvdXRlcl9jYWNoZS5pbnZfcmFuZ2UoYWRkcmVzcywgYWRkcmVzcyArIHNpemUpOworCQlfX2Rt YV9pbnZfcmFuZ2UoYWRkcmVzcywgYWRkcmVzcyArIHNpemUpOworCX0KK30KKwordm9pZCBkbWFf c3luY19zaW5nbGVfZm9yX2RldmljZSh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHNpemVfdCBzaXpl LAorCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcikKK3sKKwlpZiAoZGlyID09IERNQV9G Uk9NX0RFVklDRSkgeworCQlfX2RtYV9pbnZfcmFuZ2UoYWRkcmVzcywgYWRkcmVzcyArIHNpemUp OworCQlpZiAob3V0ZXJfY2FjaGUuaW52X3JhbmdlKQorCQkJb3V0ZXJfY2FjaGUuaW52X3Jhbmdl KGFkZHJlc3MsIGFkZHJlc3MgKyBzaXplKTsKKwl9IGVsc2UgeworCQlfX2RtYV9jbGVhbl9yYW5n ZShhZGRyZXNzLCBhZGRyZXNzICsgc2l6ZSk7CisJCWlmIChvdXRlcl9jYWNoZS5jbGVhbl9yYW5n ZSkKKwkJCW91dGVyX2NhY2hlLmNsZWFuX3JhbmdlKGFkZHJlc3MsIGFkZHJlc3MgKyBzaXplKTsK Kwl9Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2NwdS9tbXUuaCBiL2FyY2gvYXJtNjQvY3B1 L21tdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZWJjODAKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2NwdS9tbXUuaApAQCAtMCwwICsxLDE0IEBACisjaWZu ZGVmIF9fQVJNX01NVV9ICisjZGVmaW5lIF9fQVJNX01NVV9ICisKKyNpZmRlZiBDT05GSUdfTU1V Cit2b2lkIF9fbW11X2NhY2hlX29uKHZvaWQpOwordm9pZCBfX21tdV9jYWNoZV9vZmYodm9pZCk7 Cit2b2lkIF9fbW11X2NhY2hlX2ZsdXNoKHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9p ZCBfX21tdV9jYWNoZV9vbih2b2lkKSB7fQorc3RhdGljIGlubGluZSB2b2lkIF9fbW11X2NhY2hl X29mZih2b2lkKSB7fQorc3RhdGljIGlubGluZSB2b2lkIF9fbW11X2NhY2hlX2ZsdXNoKHZvaWQp IHt9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fQVJNX01NVV9IICovCmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2NwdS9tbXVpbmZvLmMgYi9hcmNoL2FybTY0L2NwdS9tbXVpbmZvLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdlYzc2YwotLS0gL2Rldi9udWxsCisrKyBiL2Fy Y2gvYXJtNjQvY3B1L21tdWluZm8uYwpAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIG1tdWluZm8u YyAtIFNob3cgTU1VL2NhY2hlIGluZm9ybWF0aW9uIGZyb20gY3AxNSByZWdpc3RlcnMKKyAqCisg KiBDb3B5cmlnaHQgKGMpIEphbiBMdWViYmUgPGoubHVlYmJlQHBlbmd1dHJvbml4LmRlPiwgUGVu Z3V0cm9uaXgKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8g Y29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4K KyNpbmNsdWRlIDxjb21tYW5kLmg+CisKK3N0YXRpYyBjaGFyICppbm5lcl9hdHRyW10gPSB7CisJ IjBiMDAwIE5vbi1jYWNoZWFibGUiLAorCSIwYjAwMSBTdHJvbmdseS1vcmRlcmVkIiwKKwkiMGIw MTAgKHJlc2VydmVkKSIsCisJIjBiMDExIERldmljZSIsCisJIjBiMTAwIChyZXNlcnZlZCkiLAor CSIwYjEwMSBXcml0ZS1CYWNrLCBXcml0ZS1BbGxvY2F0ZSIsCisJIjBiMTEwIFdyaXRlLVRocm91 Z2giLAorCSIwYjExMSBXcml0ZS1CYWNrLCBubyBXcml0ZS1BbGxvY2F0ZSIsCit9OworCitzdGF0 aWMgY2hhciAqb3V0ZXJfYXR0cltdID0geworCSIwYjAwIE5vbi1jYWNoZWFibGUiLAorCSIwYjAx IFdyaXRlLUJhY2ssIFdyaXRlLUFsbG9jYXRlIiwKKwkiMGIxMCBXcml0ZS1UaHJvdWdoLCBubyBX cml0ZS1BbGxvY2F0ZSIsCisJIjBiMTEgV3JpdGUtQmFjaywgbm8gV3JpdGUtQWxsb2NhdGUiLAor fTsKKworc3RhdGljIHZvaWQgZGVjb2RlX3Bhcih1bnNpZ25lZCBsb25nIHBhcikKK3sKKwlwcmlu dGYoIiAgUGh5c2ljYWwgQWRkcmVzcyBbMzE6MTJdOiAweCUwOGx4XG4iLCBwYXIgJiAweEZGRkZG MDAwKTsKKwlwcmludGYoIiAgUmVzZXJ2ZWQgWzExXTogICAgICAgICAgICAweCVseFxuIiwgKHBh ciA+PiAxMSkgJiAweDEpOworCXByaW50ZigiICBOb3QgT3V0ZXIgU2hhcmVhYmxlIFsxMF06IDB4 JWx4XG4iLCAocGFyID4+IDEwKSAmIDB4MSk7CisJcHJpbnRmKCIgIE5vbi1TZWN1cmUgWzldOiAg ICAgICAgICAgMHglbHhcbiIsIChwYXIgPj4gOSkgJiAweDEpOworCXByaW50ZigiICBJbXBsLiBk ZWYuIFs4XTogICAgICAgICAgIDB4JWx4XG4iLCAocGFyID4+IDgpICYgMHgxKTsKKwlwcmludGYo IiAgU2hhcmVhYmxlIFs3XTogICAgICAgICAgICAweCVseFxuIiwgKHBhciA+PiA3KSAmIDB4MSk7 CisJcHJpbnRmKCIgIElubmVyIG1lbS4gYXR0ci4gWzY6NF06ICAgMHglbHggKCVzKVxuIiwgKHBh ciA+PiA0KSAmIDB4NywKKwkJaW5uZXJfYXR0clsocGFyID4+IDQpICYgMHg3XSk7CisJcHJpbnRm KCIgIE91dGVyIG1lbS4gYXR0ci4gWzM6Ml06ICAgMHglbHggKCVzKVxuIiwgKHBhciA+PiAyKSAm IDB4MywKKwkJb3V0ZXJfYXR0clsocGFyID4+IDIpICYgMHgzXSk7CisJcHJpbnRmKCIgIFN1cGVy U2VjdGlvbiBbMV06ICAgICAgICAgMHglbHhcbiIsIChwYXIgPj4gMSkgJiAweDEpOworCXByaW50 ZigiICBGYWlsdXJlIFswXTogICAgICAgICAgICAgIDB4JWx4XG4iLCAocGFyID4+IDApICYgMHgx KTsKK30KKworc3RhdGljIGludCBkb19tbXVpbmZvKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7 CisJdW5zaWduZWQgbG9uZyBhZGRyID0gMCwgcHJpdl9yZWFkLCBwcml2X3dyaXRlOworCisJaWYg KGFyZ2MgPCAyKQorCQlyZXR1cm4gQ09NTUFORF9FUlJPUl9VU0FHRTsKKworCWFkZHIgPSBzdHJ0 b3VsX3N1ZmZpeChhcmd2WzFdLCBOVUxMLCAwKTsKKworCV9fYXNtX18gX192b2xhdGlsZV9fKAor CQkibWNyICAgIHAxNSwgMCwgJTAsIGM3LCBjOCwgMCAgIEAgd3JpdGUgVkEgdG8gUEEgdHJhbnNs YXRpb24gKHByaXYgcmVhZClcbiIKKwkJOgorCQk6ICJyIiAoYWRkcikKKwkJOiAibWVtb3J5Iik7 CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKwkJIm1yYyAgICBwMTUsIDAsICUwLCBjNywgYzQs IDAgICBAIHJlYWQgUEFSXG4iCisJCTogIj1yIiAocHJpdl9yZWFkKQorCQk6CisJCTogIm1lbW9y eSIpOworCisJX19hc21fXyBfX3ZvbGF0aWxlX18oCisJCSJtY3IgICAgcDE1LCAwLCAlMCwgYzcs IGM4LCAxICAgQCB3cml0ZSBWQSB0byBQQSB0cmFuc2xhdGlvbiAocHJpdiB3cml0ZSlcbiIKKwkJ OgorCQk6ICJyIiAoYWRkcikKKwkJOiAibWVtb3J5Iik7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVf XygKKwkJIm1yYyAgICBwMTUsIDAsICUwLCBjNywgYzQsIDAgICBAIHJlYWQgUEFSXG4iCisJCTog Ij1yIiAocHJpdl93cml0ZSkKKwkJOgorCQk6ICJtZW1vcnkiKTsKKworCXByaW50ZigiUEFSIHJl c3VsdCBmb3IgMHglMDhseDogXG4iLCBhZGRyKTsKKwlwcmludGYoIiBwcml2aWxlZ2VkIHJlYWQ6 IDB4JTA4bHhcbiIsIHByaXZfcmVhZCk7CisJZGVjb2RlX3Bhcihwcml2X3JlYWQpOworCXByaW50 ZigiIHByaXZpbGVnZWQgd3JpdGU6IDB4JTA4bHhcbiIsIHByaXZfd3JpdGUpOworCWRlY29kZV9w YXIocHJpdl93cml0ZSk7CisKKwlyZXR1cm4gMDsKK30KKworQkFSRUJPWF9DTURfU1RBUlQobW11 aW5mbykKKwkuY21kICAgICAgICAgICAgPSBkb19tbXVpbmZvLAorCUJBUkVCT1hfQ01EX0RFU0Mo InNob3cgTU1VL2NhY2hlIGluZm9ybWF0aW9uIG9mIGFuIGFkZHJlc3MiKQorCUJBUkVCT1hfQ01E X09QVFMoIkFERFJFU1MiKQorCUJBUkVCT1hfQ01EX0dST1VQKENNRF9HUlBfSU5GTykKK0JBUkVC T1hfQ01EX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9jcHUvbm8tbW11LmMgYi9hcmNoL2Fy bTY0L2NwdS9uby1tbXUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTU5 NTA5Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9jcHUvbm8tbW11LmMKQEAgLTAsMCAr MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBab2RpYWMgSW5mbGlnaHQgSW5ub3Zh dGlvbgorICogQXV0aG9yOiBBbmRyZXkgU21pcm5vdiA8YW5kcmV3LnNtaXJub3ZAZ21haWwuY29t PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg Ki8KKworI2RlZmluZSBwcl9mbXQoZm10KQkibm9tbXU6ICIgZm10CisKKyNpbmNsdWRlIDxjb21t b24uaD4KKyNpbmNsdWRlIDxkbWEtZGlyLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUg PG1tdS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNp bmNsdWRlIDxhc20vbWVtb3J5Lmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gtYXJtLmg+CisjaW5j bHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorI2luY2x1ZGUgPG1l bW9yeS5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW1faW5mby5oPgorI2luY2x1ZGUgPGRlYnVnX2xs Lmg+CisKKworI2RlZmluZSBfX2V4Y2VwdGlvbnNfc2l6ZSAoX19leGNlcHRpb25zX3N0b3AgLSBf X2V4Y2VwdGlvbnNfc3RhcnQpCisKK3N0YXRpYyBpbnQgbm9tbXVfdjhfdmVjdG9yc19pbml0KHZv aWQpCit7CisJdm9pZCAqdmVjdG9yczsKKwl1MzIgY3I7CisKKwlpZiAoY3B1X2FyY2hpdGVjdHVy ZSgpIDwgQ1BVX0FSQ0hfQVJNdjgpCisJCXJldHVybiAwOworCisvLwkvKgorLy8JICogSGlnaCB2 ZWN0b3JzIGNhbm5vdCBiZSByZS1tYXBwZWQsIHNvIHdlIGhhdmUgdG8gdXNlIG5vcm1hbAorLy8J ICogdmVjdG9ycworLy8JICovCisvLwljciA9IGdldF9jcigpOworLy8JY3IgJj0gfkNSX1Y7Cisv LwlzZXRfY3IoY3IpOworLy8KKy8vCWFybV9maXh1cF92ZWN0b3JzKCk7CisvLworLy8JdmVjdG9y cyA9IHhtZW1hbGlnbihQQUdFX1NJWkUsIFBBR0VfU0laRSk7CisvLwltZW1zZXQodmVjdG9ycywg MCwgUEFHRV9TSVpFKTsKKy8vCW1lbWNweSh2ZWN0b3JzLCBfX2V4Y2VwdGlvbnNfc3RhcnQsIF9f ZXhjZXB0aW9uc19zaXplKTsKKy8vCisvLwlzZXRfdmJhcigodW5zaWduZWQgaW50KXZlY3RvcnMp OworCisJcmV0dXJuIDA7Cit9CittbXVfaW5pdGNhbGwobm9tbXVfdjhfdmVjdG9yc19pbml0KTsK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvY3B1L3N0YXJ0LXBibC5jIGIvYXJjaC9hcm02NC9jcHUv c3RhcnQtcGJsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyM2VkYwot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvY3B1L3N0YXJ0LXBibC5jCkBAIC0wLDAgKzEs MTAyIEBACisvKgorICogc3RhcnQtcGJsLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAx MiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+LCBQZW5ndXRyb25peAorICog Q29weXJpZ2h0IChjKSAyMDEyIEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFn bmlvakBqY3Jvc29mdC5jb20+CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBw ZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyCisgKiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaW5jbHVkZSA8 Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+Cisj aW5jbHVkZSA8cGJsLmg+CisjaW5jbHVkZSA8YXNtL2JhcmVib3gtYXJtLmg+CisjaW5jbHVkZSA8 YXNtL2JhcmVib3gtYXJtLWhlYWQuaD4KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9tZW1vcnlfbGF5 b3V0Lmg+CisjaW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+CisjaW5jbHVkZSA8YXNtL3BndGFibGUu aD4KKyNpbmNsdWRlIDxhc20vY2FjaGUuaD4KKworI2luY2x1ZGUgIm1tdS1lYXJseS5oIgorCit1 bnNpZ25lZCBsb25nIGZyZWVfbWVtX3B0cjsKK3Vuc2lnbmVkIGxvbmcgZnJlZV9tZW1fZW5kX3B0 cjsKKworLyoKKyAqIEZpcnN0IGluc3RydWN0aW9ucyBpbiB0aGUgcGJsIGltYWdlCisgKi8KK3Zv aWQgX19uYWtlZCBfX3NlY3Rpb24oLnRleHRfaGVhZF9lbnRyeSkgcGJsX3N0YXJ0KHZvaWQpCit7 CisJYmFyZWJveF9hcm1faGVhZCgpOworfQorCitleHRlcm4gdm9pZCAqaW5wdXRfZGF0YTsKK2V4 dGVybiB2b2lkICppbnB1dF9kYXRhX2VuZDsKKworX19ub3JldHVybiB2b2lkIGJhcmVib3hfc2lu Z2xlX3BibF9zdGFydCh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCXVuc2lnbmVkIGxvbmcgbWVt c2l6ZSwgdm9pZCAqYm9hcmRkYXRhKQoreworCXVpbnQzMl90IG9mZnNldDsKKwl1aW50MzJfdCBw Z19zdGFydCwgcGdfZW5kLCBwZ19sZW47CisJdm9pZCBfX25vcmV0dXJuICgqYmFyZWJveCkodW5z aWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKKwl1aW50MzJfdCBlbmRtZW0gPSBt ZW1iYXNlICsgbWVtc2l6ZTsKKwl1bnNpZ25lZCBsb25nIGJhcmVib3hfYmFzZTsKKworCWlmIChJ U19FTkFCTEVEKENPTkZJR19QQkxfUkVMT0NBVEFCTEUpKQorCQlyZWxvY2F0ZV90b19jdXJyZW50 X2FkcigpOworCisJLyogR2V0IG9mZnNldCBiZXR3ZWVuIGxpbmtlZCBhZGRyZXNzIGFuZCBydW50 aW1lIGFkZHJlc3MgKi8KKwlvZmZzZXQgPSBnZXRfcnVudGltZV9vZmZzZXQoKTsKKworCXBnX3N0 YXJ0ID0gKHVpbnQzMl90KSZpbnB1dF9kYXRhIC0gb2Zmc2V0OworCXBnX2VuZCA9ICh1aW50MzJf dCkmaW5wdXRfZGF0YV9lbmQgLSBvZmZzZXQ7CisJcGdfbGVuID0gcGdfZW5kIC0gcGdfc3RhcnQ7 CisKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVMT0NBVEFCTEUpKQorCQliYXJlYm94X2Jhc2Ug PSBhcm1fbWVtX2JhcmVib3hfaW1hZ2UobWVtYmFzZSwgZW5kbWVtLCBwZ19sZW4pOworCWVsc2UK KwkJYmFyZWJveF9iYXNlID0gVEVYVF9CQVNFOworCisJaWYgKG9mZnNldCAmJiAoSVNfRU5BQkxF RChDT05GSUdfUEJMX0ZPUkNFX1BJR0dZREFUQV9DT1BZKSB8fAorCQkJCXJlZ2lvbl9vdmVybGFw KHBnX3N0YXJ0LCBwZ19sZW4sIGJhcmVib3hfYmFzZSwgcGdfbGVuICogNCkpKSB7CisJCS8qCisJ CSAqIGNvcHkgcGlnZ3lkYXRhIGJpbmFyeSB0byBpdHMgbGluayBhZGRyZXNzCisJCSAqLworCQlt ZW1jcHkoJmlucHV0X2RhdGEsICh2b2lkICopcGdfc3RhcnQsIHBnX2xlbik7CisJCXBnX3N0YXJ0 ID0gKHVpbnQzMl90KSZpbnB1dF9kYXRhOworCX0KKworCXNldHVwX2MoKTsKKworCWlmIChJU19F TkFCTEVEKENPTkZJR19NTVVfRUFSTFkpKSB7CisJCXVuc2lnbmVkIGxvbmcgdHRiID0gYXJtX21l bV90dGIobWVtYmFzZSwgZW5kbWVtKTsKKwkJbW11X2Vhcmx5X2VuYWJsZShtZW1iYXNlLCBtZW1z aXplLCB0dGIpOworCX0KKworCWZyZWVfbWVtX3B0ciA9IGFybV9tZW1fZWFybHlfbWFsbG9jKG1l bWJhc2UsIGVuZG1lbSk7CisJZnJlZV9tZW1fZW5kX3B0ciA9IGFybV9tZW1fZWFybHlfbWFsbG9j X2VuZChtZW1iYXNlLCBlbmRtZW0pOworCisJcGJsX2JhcmVib3hfdW5jb21wcmVzcygodm9pZCop YmFyZWJveF9iYXNlLCAodm9pZCAqKXBnX3N0YXJ0LCBwZ19sZW4pOworCisJYXJtX2Vhcmx5X21t dV9jYWNoZV9mbHVzaCgpOworCWZsdXNoX2ljYWNoZSgpOworCisJaWYgKElTX0VOQUJMRUQoQ09O RklHX1RIVU1CMl9CQVJFQk9YKSkKKwkJYmFyZWJveCA9ICh2b2lkICopKGJhcmVib3hfYmFzZSAr IDEpOworCWVsc2UKKwkJYmFyZWJveCA9ICh2b2lkICopYmFyZWJveF9iYXNlOworCisJYmFyZWJv eChtZW1iYXNlLCBtZW1zaXplLCBib2FyZGRhdGEpOworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9jcHUvc3RhcnQuYyBiL2FyY2gvYXJtNjQvY3B1L3N0YXJ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZTRhNDhlMwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQv Y3B1L3N0YXJ0LmMKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAg U2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPiwgUGVuZ3V0cm9uaXgKKyAqCisg KiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8g dGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICovCisjZGVmaW5lIHByX2ZtdChmbXQpICJzdGFydC5jOiAiIGZtdAor CisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8aW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4 L3NpemVzLmg+CisjaW5jbHVkZSA8b2YuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0uaD4K KyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0taGVhZC5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmlj L21lbW9yeV9sYXlvdXQuaD4KKyNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KKyNpbmNsdWRlIDxh c20vdW5hbGlnbmVkLmg+CisjaW5jbHVkZSA8YXNtL2NhY2hlLmg+CisjaW5jbHVkZSA8bWVtb3J5 Lmg+CisjaW5jbHVkZSA8dW5jb21wcmVzcy5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorCisjaW5j bHVkZSA8ZGVidWdfbGwuaD4KKyNpbmNsdWRlICJtbXUtZWFybHkuaCIKKwordW5zaWduZWQgbG9u ZyBhcm1fc3RhY2tfdG9wOworc3RhdGljIHVuc2lnbmVkIGxvbmcgYXJtX2hlYWRfYm90dG9tOwor c3RhdGljIHVuc2lnbmVkIGxvbmcgYXJtX2JhcmVib3hfc2l6ZTsKK3N0YXRpYyB2b2lkICpiYXJl Ym94X2JvYXJkZGF0YTsKKworc3RhdGljIGJvb2wgYmxvYl9pc19mZHQoY29uc3Qgdm9pZCAqYmxv YikKK3sKKwlyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKGJsb2IpID09IEZEVF9NQUdJQzsKK30K Kworc3RhdGljIGJvb2wgYmxvYl9pc19jb21wcmVzc2VkX2ZkdChjb25zdCB2b2lkICpibG9iKQor eworCWNvbnN0IHN0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGFfY29tcHJlc3NlZF9kdGIgKmR0 YiA9IGJsb2I7CisKKwlyZXR1cm4gZHRiLT5tYWdpYyA9PSBCQVJFQk9YX0FSTV9CT0FSRERBVEFf Q09NUFJFU1NFRF9EVEJfTUFHSUM7Cit9CisKK3N0YXRpYyBib29sIGJsb2JfaXNfYXJtX2JvYXJk ZGF0YShjb25zdCB2b2lkICpibG9iKQoreworCWNvbnN0IHN0cnVjdCBiYXJlYm94X2FybV9ib2Fy ZGRhdGEgKmJkID0gYmxvYjsKKworCXJldHVybiBiZC0+bWFnaWMgPT0gQkFSRUJPWF9BUk1fQk9B UkREQVRBX01BR0lDOworfQorCit1MzIgYmFyZWJveF9hcm1fbWFjaGluZSh2b2lkKQoreworCWlm IChiYXJlYm94X2JvYXJkZGF0YSAmJiBibG9iX2lzX2FybV9ib2FyZGRhdGEoYmFyZWJveF9ib2Fy ZGRhdGEpKSB7CisJCWNvbnN0IHN0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGEgKmJkID0gYmFy ZWJveF9ib2FyZGRhdGE7CisJCXJldHVybiBiZC0+bWFjaGluZTsKKwl9IGVsc2UgeworCQlyZXR1 cm4gMDsKKwl9Cit9CisKK3ZvaWQgKmJhcmVib3hfYXJtX2Jvb3RfZHRiKHZvaWQpCit7CisJdm9p ZCAqZHRiOworCXZvaWQgKmRhdGE7CisJaW50IHJldDsKKwlzdHJ1Y3QgYmFyZWJveF9hcm1fYm9h cmRkYXRhX2NvbXByZXNzZWRfZHRiICpjb21wcmVzc2VkX2R0YjsKKworCWlmIChiYXJlYm94X2Jv YXJkZGF0YSAmJiBibG9iX2lzX2ZkdChiYXJlYm94X2JvYXJkZGF0YSkpIHsKKwkJcHJfZGVidWco IiVzOiB1c2luZyBiYXJlYm94X2JvYXJkZGF0YVxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gYmFy ZWJveF9ib2FyZGRhdGE7CisJfQorCisJaWYgKCFJU19FTkFCTEVEKENPTkZJR19BUk1fVVNFX0NP TVBSRVNTRURfRFRCKSB8fCAhYmFyZWJveF9ib2FyZGRhdGEKKwkJCXx8ICFibG9iX2lzX2NvbXBy ZXNzZWRfZmR0KGJhcmVib3hfYm9hcmRkYXRhKSkKKwkJcmV0dXJuIE5VTEw7CisKKwljb21wcmVz c2VkX2R0YiA9IGJhcmVib3hfYm9hcmRkYXRhOworCisJcHJfZGVidWcoIiVzOiB1c2luZyBjb21w cmVzc2VkX2R0YlxuIiwgX19mdW5jX18pOworCisJZHRiID0gbWFsbG9jKGNvbXByZXNzZWRfZHRi LT5kYXRhbGVuX3VuY29tcHJlc3NlZCk7CisJaWYgKCFkdGIpCisJCXJldHVybiBOVUxMOworCisJ ZGF0YSA9IGNvbXByZXNzZWRfZHRiICsgMTsKKworCXJldCA9IHVuY29tcHJlc3MoZGF0YSwgY29t cHJlc3NlZF9kdGItPmRhdGFsZW4sIE5VTEwsIE5VTEwsCisJCQlkdGIsIE5VTEwsIE5VTEwpOwor CWlmIChyZXQpIHsKKwkJcHJfZXJyKCJ1bmNvbXByZXNzaW5nIGR0YiBmYWlsZWRcbiIpOworCQlm cmVlKGR0Yik7CisJCXJldHVybiBOVUxMOworCX0KKworCWJhcmVib3hfYm9hcmRkYXRhID0gZHRi OworCisJcmV0dXJuIGJhcmVib3hfYm9hcmRkYXRhOworfQorCitzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcgYXJtX21lbV9ib2FyZGRhdGEodW5zaWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCQkg ICAgICB1bnNpZ25lZCBsb25nIGVuZG1lbSwKKwkJCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXpl KQoreworCXVuc2lnbmVkIGxvbmcgbWVtOworCisJbWVtID0gYXJtX21lbV9iYXJlYm94X2ltYWdl KG1lbWJhc2UsIGVuZG1lbSwgYmFyZWJveF9pbWFnZV9zaXplKTsKKwltZW0gLT0gQUxJR04oc2l6 ZSwgNjQpOworCisJcmV0dXJuIG1lbTsKK30KKwordW5zaWduZWQgbG9uZyBhcm1fbWVtX3JhbW9v cHNfZ2V0KHZvaWQpCit7CisJcmV0dXJuIGFybV9tZW1fcmFtb29wcygwLCBhcm1fc3RhY2tfdG9w KTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGFybV9tZW1fcmFtb29wc19nZXQpOworCitzdGF0aWMg aW50IGJhcmVib3hfbWVtb3J5X2FyZWFzX2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHN0 YXJ0ID0gYXJtX2hlYWRfYm90dG9tOworCXVuc2lnbmVkIGxvbmcgc2l6ZSA9IGFybV9tZW1fYmFy ZWJveF9pbWFnZSgwLCBhcm1fc3RhY2tfdG9wLAorCQkJCQkJICAgYXJtX2JhcmVib3hfc2l6ZSkg LQorCQkJICAgICBhcm1faGVhZF9ib3R0b207CisJcmVxdWVzdF9zZHJhbV9yZWdpb24oImJvYXJk IGRhdGEiLCBzdGFydCwgc2l6ZSk7CisKKwlyZXR1cm4gMDsKK30KK2RldmljZV9pbml0Y2FsbChi YXJlYm94X21lbW9yeV9hcmVhc19pbml0KTsKKworX19ub3JldHVybiB2b2lkIGJhcmVib3hfbm9u X3BibF9zdGFydCh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCXVuc2lnbmVkIGxvbmcgbWVtc2l6 ZSwgdm9pZCAqYm9hcmRkYXRhKQoreworCXVuc2lnbmVkIGxvbmcgZW5kbWVtID0gbWVtYmFzZSAr IG1lbXNpemU7CisJdW5zaWduZWQgbG9uZyBtYWxsb2Nfc3RhcnQsIG1hbGxvY19lbmQ7CisJdW5z aWduZWQgbG9uZyBiYXJlYm94X3NpemUgPSBiYXJlYm94X2ltYWdlX3NpemUgKworCQkoKHVuc2ln bmVkIGxvbmcpJl9fYnNzX3N0b3AgLSAodW5zaWduZWQgbG9uZykmX19ic3Nfc3RhcnQpOworCisJ aWYgKElTX0VOQUJMRUQoQ09ORklHX1JFTE9DQVRBQkxFKSkgeworCQl1bnNpZ25lZCBsb25nIGJh cmVib3hfYmFzZSA9IGFybV9tZW1fYmFyZWJveF9pbWFnZShtZW1iYXNlLAorCQkJCQkJCQkgICBl bmRtZW0sCisJCQkJCQkJCSAgIGJhcmVib3hfc2l6ZSk7CisJCXJlbG9jYXRlX3RvX2FkcihiYXJl Ym94X2Jhc2UpOworCX0KKworLy8Jc2V0dXBfYygpOworCisJYmFycmllcigpOworCisJcHJfZGVi dWcoIm1lbW9yeSBhdCAweCUwOGx4LCBzaXplIDB4JTA4bHhcbiIsIG1lbWJhc2UsIG1lbXNpemUp OworCisJYXJtX3N0YWNrX3RvcCA9IGVuZG1lbTsKKwlhcm1fYmFyZWJveF9zaXplID0gYmFyZWJv eF9zaXplOworCWFybV9oZWFkX2JvdHRvbSA9IGFybV9tZW1fYmFyZWJveF9pbWFnZShtZW1iYXNl LCBlbmRtZW0sCisJCQkJCQlhcm1fYmFyZWJveF9zaXplKTsKKworCWlmIChJU19FTkFCTEVEKENP TkZJR19NTVVfRUFSTFkpKSB7CisJCXVuc2lnbmVkIGxvbmcgdHRiID0gYXJtX21lbV90dGIobWVt YmFzZSwgZW5kbWVtKTsKKworCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUEJMX0lNQUdFKSkgewor CQkJYXJtX3NldF9jYWNoZV9mdW5jdGlvbnMoKTsKKwkJfSBlbHNlIHsKKwkJCXByX2RlYnVnKCJl bmFibGluZyBNTVUsIHR0YiBAIDB4JTA4bHhcbiIsIHR0Yik7CisJCQlhcm1fZWFybHlfbW11X2Nh Y2hlX2ludmFsaWRhdGUoKTsKKwkJCW1tdV9lYXJseV9lbmFibGUobWVtYmFzZSwgbWVtc2l6ZSwg dHRiKTsKKwkJfQorCX0KKworCWlmIChib2FyZGRhdGEpIHsKKwkJdWludDMyX3QgdG90YWxzaXpl ID0gMDsKKwkJY29uc3QgY2hhciAqbmFtZTsKKworCQlpZiAoYmxvYl9pc19mZHQoYm9hcmRkYXRh KSkgeworCQkJdG90YWxzaXplID0gZ2V0X3VuYWxpZ25lZF9iZTMyKGJvYXJkZGF0YSArIDQpOwor CQkJbmFtZSA9ICJEVEIiOworCQl9IGVsc2UgaWYgKGJsb2JfaXNfY29tcHJlc3NlZF9mZHQoYm9h cmRkYXRhKSkgeworCQkJc3RydWN0IGJhcmVib3hfYXJtX2JvYXJkZGF0YV9jb21wcmVzc2VkX2R0 YiAqYmQgPSBib2FyZGRhdGE7CisJCQl0b3RhbHNpemUgPSBiZC0+ZGF0YWxlbiArIHNpemVvZigq YmQpOworCQkJbmFtZSA9ICJDb21wcmVzc2VkIERUQiI7CisJCX0gZWxzZSBpZiAoYmxvYl9pc19h cm1fYm9hcmRkYXRhKGJvYXJkZGF0YSkpIHsKKwkJCXRvdGFsc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg YmFyZWJveF9hcm1fYm9hcmRkYXRhKTsKKwkJCW5hbWUgPSAibWFjaGluZSB0eXBlIjsKKwkJfQor CisJCWlmICh0b3RhbHNpemUpIHsKKwkJCXVuc2lnbmVkIGxvbmcgbWVtID0gYXJtX21lbV9ib2Fy ZGRhdGEobWVtYmFzZSwgZW5kbWVtLAorCQkJCQkJCSAgICAgIHRvdGFsc2l6ZSk7CisJCQlwcl9k ZWJ1ZygiZm91bmQgJXMgaW4gYm9hcmRkYXRhLCBjb3B5aW5nIHRvIDB4JWx1XG4iLAorCQkJCSBu YW1lLCBtZW0pOworCQkJYmFyZWJveF9ib2FyZGRhdGEgPSBtZW1jcHkoKHZvaWQgKiltZW0sIGJv YXJkZGF0YSwKKwkJCQkJCSAgIHRvdGFsc2l6ZSk7CisJCQlhcm1faGVhZF9ib3R0b20gPSBtZW07 CisJCX0KKwl9CisKKwltYWxsb2NfZW5kID0gYXJtX2hlYWRfYm90dG9tOworCisJLyoKKwkgKiBN YXhpbXVtIG1hbGxvYyBzcGFjZSBpcyB0aGUgS2NvbmZpZyB2YWx1ZSBpZiBnaXZlbgorCSAqIG9y IDFHQi4KKwkgKi8KKwlpZiAoTUFMTE9DX1NJWkUgPiAwKSB7CisJCW1hbGxvY19zdGFydCA9IG1h bGxvY19lbmQgLSBNQUxMT0NfU0laRTsKKwkJaWYgKG1hbGxvY19zdGFydCA8IG1lbWJhc2UpCisJ CQltYWxsb2Nfc3RhcnQgPSBtZW1iYXNlOworCX0gZWxzZSB7CisJCW1hbGxvY19zdGFydCA9IG1h bGxvY19lbmQgLSAobWFsbG9jX2VuZCAtIG1lbWJhc2UpIC8gMjsKKwkJaWYgKG1hbGxvY19lbmQg LSBtYWxsb2Nfc3RhcnQgPiBTWl8xRykKKwkJCW1hbGxvY19zdGFydCA9IG1hbGxvY19lbmQgLSBT Wl8xRzsKKwl9CisKKwlwcl9kZWJ1ZygiaW5pdGlhbGl6aW5nIG1hbGxvYyBwb29sIGF0IDB4JTA4 bHggKHNpemUgMHglMDhseClcbiIsCisJCQltYWxsb2Nfc3RhcnQsIG1hbGxvY19lbmQgLSBtYWxs b2Nfc3RhcnQpOworCisJbWVtX21hbGxvY19pbml0KCh2b2lkICopbWFsbG9jX3N0YXJ0LCAodm9p ZCAqKW1hbGxvY19lbmQgLSAxKTsKKworCXByX2RlYnVnKCJzdGFydGluZyBiYXJlYm94Li4uXG4i KTsKKworCXN0YXJ0X2JhcmVib3goKTsKK30KKworI2lmbmRlZiBDT05GSUdfUEJMX0lNQUdFCisK K3ZvaWQgX19zZWN0aW9uKC50ZXh0X2VudHJ5KSBzdGFydCh2b2lkKQoreworCWJhcmVib3hfYXJt X2hlYWQoKTsKK30KKworI2Vsc2UKKy8qCisgKiBGaXJzdCBmdW5jdGlvbiBpbiB0aGUgdW5jb21w cmVzc2VkIGltYWdlLiBXZSBnZXQgaGVyZSBmcm9tCisgKiB0aGUgcGJsLiBUaGUgc3RhY2sgYWxy ZWFkeSBoYXMgYmVlbiBzZXQgdXAgYnkgdGhlIHBibC4KKyAqLwordm9pZCBfX3NlY3Rpb24oLnRl eHRfZW50cnkpIHN0YXJ0KHVuc2lnbmVkIGxvbmcgbWVtYmFzZSwKKwkJdW5zaWduZWQgbG9uZyBt ZW1zaXplLCB2b2lkICpib2FyZGRhdGEpCit7CisJYmFyZWJveF9ub25fcGJsX3N0YXJ0KG1lbWJh c2UsIG1lbXNpemUsIGJvYXJkZGF0YSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvY3B1L3VuY29tcHJlc3MuYyBiL2FyY2gvYXJtNjQvY3B1L3VuY29tcHJlc3MuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmNjZTZiCi0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm02NC9jcHUvdW5jb21wcmVzcy5jCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogdW5j b21wcmVzcy5jIC0gdW5jb21wcmVzc29yIGNvZGUgZm9yIHNlbGYgZXh0cmFjaW5nIHBibCBpbWFn ZQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIFNhc2NoYSBIYXVlciA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT4sIFBlbmd1dHJvbml4CisgKiBDb3B5cmlnaHQgKGMpIDIwMTIgSmVhbi1D aHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KKyAqCisg KiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8g dGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIKKyAqIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICovCisjZGVmaW5lIHByX2ZtdChmbXQpICJ1bmNvbXByZXNzLmM6ICIg Zm10CisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpbml0Lmg+CisjaW5jbHVkZSA8 bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxwYmwuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1h cm0uaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0taGVhZC5oPgorI2luY2x1ZGUgPGFzbS1n ZW5lcmljL21lbW9yeV9sYXlvdXQuaD4KKyNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KKyNpbmNs dWRlIDxhc20vcGd0YWJsZS5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgorCisjaW5jbHVkZSA8 ZGVidWdfbGwuaD4KKworI2luY2x1ZGUgIm1tdS1lYXJseS5oIgorCit1bnNpZ25lZCBsb25nIGZy ZWVfbWVtX3B0cjsKK3Vuc2lnbmVkIGxvbmcgZnJlZV9tZW1fZW5kX3B0cjsKKworc3RhdGljIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3VzZWRfXykpCisJX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18o Ii5pbWFnZV9lbmQiKSkpCisJX19pbWFnZV9lbmRfZHVtbXkgPSAweGRlYWRiZWVmOworCit2b2lk IF9fbm9yZXR1cm4gYmFyZWJveF9tdWx0aV9wYmxfc3RhcnQodW5zaWduZWQgbG9uZyBtZW1iYXNl LAorCQl1bnNpZ25lZCBsb25nIG1lbXNpemUsIHZvaWQgKmJvYXJkZGF0YSkKK3sKKwl1aW50MzJf dCBwZ19sZW47CisJdm9pZCBfX25vcmV0dXJuICgqYmFyZWJveCkodW5zaWduZWQgbG9uZywgdW5z aWduZWQgbG9uZywgdm9pZCAqKTsKKwl1aW50MzJfdCBlbmRtZW0gPSBtZW1iYXNlICsgbWVtc2l6 ZTsKKwl1bnNpZ25lZCBsb25nIGJhcmVib3hfYmFzZTsKKwl1aW50MzJfdCAqaW1hZ2VfZW5kOwor CXZvaWQgKnBnX3N0YXJ0OworCXVuc2lnbmVkIGxvbmcgcGMgPSBnZXRfcGMoKTsKKworCWltYWdl X2VuZCA9ICh2b2lkICopbGRfdmFyKF9faW1hZ2VfZW5kKSAtIGdldF9ydW50aW1lX29mZnNldCgp OworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BCTF9SRUxPQ0FUQUJMRSkpIHsKKwkJLyoKKwkJ ICogSWYgd2UgcnVuIGZyb20gaW5zaWRlIHRoZSBtZW1vcnkganVzdCByZWxvY2F0ZSB0aGUgYmlu YXJ5CisJCSAqIHRvIHRoZSBjdXJyZW50IGFkZHJlc3MuIE90aGVyd2lzZSBpdCBtYXkgYmUgYSBy ZWFkb25seSBsb2NhdGlvbi4KKwkJICogQ29weSBhbmQgcmVsb2NhdGUgdG8gdGhlIHN0YXJ0IG9m IHRoZSBtZW1vcnkgaW4gdGhpcyBjYXNlLgorCQkgKi8KKwkJaWYgKHBjID4gbWVtYmFzZSAmJiBw YyA8IG1lbWJhc2UgKyBtZW1zaXplKQorCQkJcmVsb2NhdGVfdG9fY3VycmVudF9hZHIoKTsKKwkJ ZWxzZQorCQkJcmVsb2NhdGVfdG9fYWRyKG1lbWJhc2UpOworCX0KKworCS8qCisJICogaW1hZ2Vf ZW5kIGlzIHRoZSBmaXJzdCBsb2NhdGlvbiBhZnRlciB0aGUgZXhlY3V0YWJsZS4gSXQgY29udGFp bnMKKwkgKiB0aGUgc2l6ZSBvZiB0aGUgYXBwZW5kZWQgY29tcHJlc3NlZCBiaW5hcnkgZm9sbG93 ZWQgYnkgdGhlIGJpbmFyeS4KKwkgKi8KKwlwZ19zdGFydCA9IGltYWdlX2VuZCArIDE7CisJcGdf bGVuID0gKihpbWFnZV9lbmQpOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JFTE9DQVRBQkxF KSkKKwkJYmFyZWJveF9iYXNlID0gYXJtX21lbV9iYXJlYm94X2ltYWdlKG1lbWJhc2UsIGVuZG1l bSwKKwkJCQkJCSAgICAgcGdfbGVuKTsKKwllbHNlCisJCWJhcmVib3hfYmFzZSA9IFRFWFRfQkFT RTsKKworCXNldHVwX2MoKTsKKworCXByX2RlYnVnKCJtZW1vcnkgYXQgMHglMDhseCwgc2l6ZSAw eCUwOGx4XG4iLCBtZW1iYXNlLCBtZW1zaXplKTsKKworCWlmIChJU19FTkFCTEVEKENPTkZJR19N TVVfRUFSTFkpKSB7CisJCXVuc2lnbmVkIGxvbmcgdHRiID0gYXJtX21lbV90dGIobWVtYmFzZSwg ZW5kbWVtKTsKKwkJcHJfZGVidWcoImVuYWJsaW5nIE1NVSwgdHRiIEAgMHglMDhseFxuIiwgdHRi KTsKKwkJbW11X2Vhcmx5X2VuYWJsZShtZW1iYXNlLCBtZW1zaXplLCB0dGIpOworCX0KKworCWZy ZWVfbWVtX3B0ciA9IGFybV9tZW1fZWFybHlfbWFsbG9jKG1lbWJhc2UsIGVuZG1lbSk7CisJZnJl ZV9tZW1fZW5kX3B0ciA9IGFybV9tZW1fZWFybHlfbWFsbG9jX2VuZChtZW1iYXNlLCBlbmRtZW0p OworCisJcHJfZGVidWcoInVuY29tcHJlc3NpbmcgYmFyZWJveCBiaW5hcnkgYXQgMHglcCAoc2l6 ZSAweCUwOHgpIHRvIDB4JTA4bHhcbiIsCisJCQlwZ19zdGFydCwgcGdfbGVuLCBiYXJlYm94X2Jh c2UpOworCisJcGJsX2JhcmVib3hfdW5jb21wcmVzcygodm9pZCopYmFyZWJveF9iYXNlLCBwZ19z dGFydCwgcGdfbGVuKTsKKworCWFybV9lYXJseV9tbXVfY2FjaGVfZmx1c2goKTsKKwlmbHVzaF9p Y2FjaGUoKTsKKworCWlmIChJU19FTkFCTEVEKENPTkZJR19USFVNQjJfQkFSRUJPWCkpCisJCWJh cmVib3ggPSAodm9pZCAqKShiYXJlYm94X2Jhc2UgKyAxKTsKKwllbHNlCisJCWJhcmVib3ggPSAo dm9pZCAqKWJhcmVib3hfYmFzZTsKKworCXByX2RlYnVnKCJqdW1waW5nIHRvIHVuY29tcHJlc3Nl ZCBpbWFnZSBhdCAweCVwXG4iLCBiYXJlYm94KTsKKworCWJhcmVib3gobWVtYmFzZSwgbWVtc2l6 ZSwgYm9hcmRkYXRhKTsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXJt bGludXguaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXJtbGludXguaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQ3OWZiCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9hcm1saW51eC5oCkBAIC0wLDAgKzEsNDMgQEAKKyNpZm5kZWYgX19B UkNIX0FSTUxJTlVYX0gKKyNkZWZpbmUgX19BUkNIX0FSTUxJTlVYX0gKKworI2luY2x1ZGUgPGFz bS9tZW1vcnkuaD4KKyNpbmNsdWRlIDxhc20vc2V0dXAuaD4KKworI2lmIGRlZmluZWQgQ09ORklH X0FSTV9MSU5VWAordm9pZCBhcm1saW51eF9zZXRfYm9vdHBhcmFtcyh2b2lkICpwYXJhbXMpOwor dm9pZCBhcm1saW51eF9zZXRfYXJjaGl0ZWN0dXJlKGludCBhcmNoaXRlY3R1cmUpOwordm9pZCBh cm1saW51eF9zZXRfcmV2aXNpb24odW5zaWduZWQgaW50KTsKK3ZvaWQgYXJtbGludXhfc2V0X3Nl cmlhbCh1NjQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcm1saW51eF9zZXRfYm9vdHBh cmFtcyh2b2lkICpwYXJhbXMpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhcm1saW51eF9z ZXRfYXJjaGl0ZWN0dXJlKGludCBhcmNoaXRlY3R1cmUpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUg dm9pZCBhcm1saW51eF9zZXRfcmV2aXNpb24odW5zaWduZWQgaW50IHJldikKK3sKK30KKworc3Rh dGljIGlubGluZSB2b2lkIGFybWxpbnV4X3NldF9zZXJpYWwodTY0IHNlcmlhbCkKK3sKK30KKyNl bmRpZgorCisjaWYgZGVmaW5lZCBDT05GSUdfQVJNX0JPQVJEX0FQUEVORF9BVEFHCit2b2lkIGFy bWxpbnV4X3NldF9hdGFnX2FwcGVuZGVyKHN0cnVjdCB0YWcgKigqKShzdHJ1Y3QgdGFnICopKTsK KyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgYXJtbGludXhfc2V0X2F0YWdfYXBwZW5kZXIoc3Ry dWN0IHRhZyAqKCpmdW5jKShzdHJ1Y3QgdGFnICopKQoreworfQorI2VuZGlmCisKK3N0cnVjdCBp bWFnZV9kYXRhOworCit2b2lkIHN0YXJ0X2xpbnV4KHZvaWQgKmFkciwgaW50IHN3YXAsIHVuc2ln bmVkIGxvbmcgaW5pdHJkX2FkZHJlc3MsCisJCXVuc2lnbmVkIGxvbmcgaW5pdHJkX3NpemUsIHZv aWQgKm9mdHJlZSk7CisKKyNlbmRpZiAvKiBfX0FSQ0hfQVJNTElOVVhfSCAqLwpkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9hc3NlbWJsZXIuaCBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vYXNzZW1ibGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEx NmU0OAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXNzZW1ibGVy LmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiAgYXJjaC9hcm0vaW5jbHVkZS9hc20vYXNzZW1i bGVyLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAgUnVzc2VsbCBLaW5nCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIGFybSBhcmNoaXRl Y3R1cmUgc3BlY2lmaWMgZGVmaW5lcworICogIGZvciB0aGUgZGlmZmVyZW50IHByb2Nlc3NvcnMu CisgKgorICogIERvIG5vdCBpbmNsdWRlIGFueSBDIGRlY2xhcmF0aW9ucyBpbiB0aGlzIGZpbGUg LSBpdCBpcyBpbmNsdWRlZCBieQorICogIGFzc2VtYmxlciBzb3VyY2UuCisgKi8KKyNpZm5kZWYg X19BU1NFTUJMWV9fCisjZXJyb3IgIk9ubHkgaW5jbHVkZSB0aGlzIGZyb20gYXNzZW1ibHkgY29k ZSIKKyNlbmRpZgorCisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorCisvKgorICogRW5kaWFuIGlu ZGVwZW5kZW50IG1hY3JvcyBmb3Igc2hpZnRpbmcgYnl0ZXMgd2l0aGluIHJlZ2lzdGVycy4KKyAq LworI2lmbmRlZiBfX0FSTUVCX18KKyNkZWZpbmUgcHVsbCAgICAgICAgICAgIGxzcgorI2RlZmlu ZSBwdXNoICAgICAgICAgICAgbHNsCisjZGVmaW5lIGdldF9ieXRlXzAgICAgICBsc2wgIzAKKyNk ZWZpbmUgZ2V0X2J5dGVfMQlsc3IgIzgKKyNkZWZpbmUgZ2V0X2J5dGVfMglsc3IgIzE2CisjZGVm aW5lIGdldF9ieXRlXzMJbHNyICMyNAorI2RlZmluZSBwdXRfYnl0ZV8wICAgICAgbHNsICMwCisj ZGVmaW5lIHB1dF9ieXRlXzEJbHNsICM4CisjZGVmaW5lIHB1dF9ieXRlXzIJbHNsICMxNgorI2Rl ZmluZSBwdXRfYnl0ZV8zCWxzbCAjMjQKKyNlbHNlCisjZGVmaW5lIHB1bGwgICAgICAgICAgICBs c2wKKyNkZWZpbmUgcHVzaCAgICAgICAgICAgIGxzcgorI2RlZmluZSBnZXRfYnl0ZV8wCWxzciAj MjQKKyNkZWZpbmUgZ2V0X2J5dGVfMQlsc3IgIzE2CisjZGVmaW5lIGdldF9ieXRlXzIJbHNyICM4 CisjZGVmaW5lIGdldF9ieXRlXzMgICAgICBsc2wgIzAKKyNkZWZpbmUgcHV0X2J5dGVfMAlsc2wg IzI0CisjZGVmaW5lIHB1dF9ieXRlXzEJbHNsICMxNgorI2RlZmluZSBwdXRfYnl0ZV8yCWxzbCAj OAorI2RlZmluZSBwdXRfYnl0ZV8zICAgICAgbHNsICMwCisjZW5kaWYKKworLyoKKyAqIERhdGEg cHJlbG9hZCBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQKKyAqLworI2lmIF9fTElO VVhfQVJNX0FSQ0hfXyA+PSA1CisjZGVmaW5lIFBMRChjb2RlLi4uKQljb2RlCisjZWxzZQorI2Rl ZmluZSBQTEQoY29kZS4uLikKKyNlbmRpZgorCisvKgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBl bmFibGUgY29kZSB0byBjYWNoZWxpbmUgYWxpZ24gdGhlIGRlc3RpbmF0aW9uCisgKiBwb2ludGVy IHdoZW4gYnVsayB3cml0aW5nIHRvIG1lbW9yeS4gIEV4cGVyaW1lbnRzIG9uIFN0cm9uZ0FSTSBh bmQKKyAqIFhTY2FsZSBkaWRuJ3Qgc2hvdyB0aGlzIGEgd29ydGh3aGlsZSB0aGluZyB0byBkbyB3 aGVuIHRoZSBjYWNoZSBpcyBub3QKKyAqIHNldCB0byB3cml0ZS1hbGxvY2F0ZSAodGhpcyB3b3Vs ZCBuZWVkIGZ1cnRoZXIgdGVzdGluZyBvbiBYU2NhbGUgd2hlbiBXQQorICogaXMgdXNlZCkuCisg KgorICogT24gRmVyb2Nlb24gdGhlcmUgaXMgbXVjaCB0byBnYWluIGhvd2V2ZXIsIHJlZ2FyZGxl c3Mgb2YgY2FjaGUgbW9kZS4KKyAqLworI2lmZGVmIENPTkZJR19DUFVfRkVST0NFT04KKyNkZWZp bmUgQ0FMR04oY29kZS4uLikgY29kZQorI2Vsc2UKKyNkZWZpbmUgQ0FMR04oY29kZS4uLikKKyNl bmRpZgorCisvKgorICogRW5hYmxlIGFuZCBkaXNhYmxlIGludGVycnVwdHMKKyAqLworI2lmIF9f TElOVVhfQVJNX0FSQ0hfXyA+PSA2CisJLm1hY3JvCWRpc2FibGVfaXJxCisJY3BzaWQJaQorCS5l bmRtCisKKwkubWFjcm8JZW5hYmxlX2lycQorCWNwc2llCWkKKwkuZW5kbQorI2Vsc2UKKwkubWFj cm8JZGlzYWJsZV9pcnEKKwltc3IJY3Bzcl9jLCAjUFNSX0lfQklUIHwgU1ZDX01PREUKKwkuZW5k bQorCisJLm1hY3JvCWVuYWJsZV9pcnEKKwltc3IJY3Bzcl9jLCAjU1ZDX01PREUKKwkuZW5kbQor I2VuZGlmCisKKy8qCisgKiBTYXZlIHRoZSBjdXJyZW50IElSUSBzdGF0ZSBhbmQgZGlzYWJsZSBJ UlFzLiAgTm90ZSB0aGF0IHRoaXMgbWFjcm8KKyAqIGFzc3VtZXMgRklRcyBhcmUgZW5hYmxlZCwg YW5kIHRoYXQgdGhlIHByb2Nlc3NvciBpcyBpbiBTVkMgbW9kZS4KKyAqLworCS5tYWNybwlzYXZl X2FuZF9kaXNhYmxlX2lycXMsIG9sZGNwc3IKKwltcnMJXG9sZGNwc3IsIGNwc3IKKwlkaXNhYmxl X2lycQorCS5lbmRtCisKKy8qCisgKiBSZXN0b3JlIGludGVycnVwdCBzdGF0ZSBwcmV2aW91c2x5 IHN0b3JlZCBpbiBhIHJlZ2lzdGVyLiAgV2UgZG9uJ3QKKyAqIGd1YXJhbnRlZSB0aGF0IHRoaXMg d2lsbCBwcmVzZXJ2ZSB0aGUgZmxhZ3MuCisgKi8KKwkubWFjcm8JcmVzdG9yZV9pcnFzLCBvbGRj cHNyCisJbXNyCWNwc3JfYywgXG9sZGNwc3IKKwkuZW5kbQorCisjZGVmaW5lIFVTRVIoeC4uLikJ CQkJXAorOTk5OToJeDsJCQkJCVwKKwkuc2VjdGlvbiBfX2V4X3RhYmxlLCJhIjsJCVwKKwkuYWxp Z24JMzsJCQkJXAorCS5sb25nCTk5OTliLDkwMDFmOwkJCVwKKwkucHJldmlvdXMKZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJveC1hcm0taGVhZC5oIGIvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9iYXJlYm94LWFybS1oZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMGEyZWI2YgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vYmFyZWJveC1hcm0taGVhZC5oCkBAIC0wLDAgKzEsNjUgQEAKKyNpZm5kZWYgX19BU01f QVJNX0hFQURfSAorI2RlZmluZSBfX0FTTV9BUk1fSEVBRF9ICisKKyNpbmNsdWRlIDxhc20vc3lz dGVtLmg+CisKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisKK3ZvaWQgYXJtX2NwdV9sb3dsZXZlbF9p bml0KHZvaWQpOworCisvKgorICogMzIgYnl0ZXMgYXQgdGhpcyBvZmZzZXQgaXMgcmVzZXJ2ZWQg aW4gdGhlIGJhcmVib3ggaGVhZCBmb3IgYm9hcmQvU29DCisgKiB1c2FnZQorICovCisjZGVmaW5l IEFSTV9IRUFEX1NQQVJFX09GUwkweDMwCisjZGVmaW5lIEFSTV9IRUFEX1NQQVJFX01BUktFUgkw eDU1NTU1NTU1CisKKyNpZmRlZiBDT05GSUdfSEFWRV9NQUNIX0FSTV9IRUFECisjaW5jbHVkZSA8 bWFjaC9iYXJlYm94LWFybS1oZWFkLmg+CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIF9fYmFy ZWJveF9hcm1faGVhZCh2b2lkKQoreworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKyNpZmRlZiBD T05GSUdfVEhVTUIyX0JBUkVCT1gKKwkJIi5hcm1cbiIKKwkJImFkciByOSwgMWYgKyAxXG4iCisJ CSJieCByOVxuIgorCQkiLnRodW1iXG4iCisJCSIxOlxuIgorCQkiYmwgMmZcbiIKKwkJIi5yZXB0 IDEwXG4iCisJCSIxOiBiIDFiXG4iCisJCSIuZW5kclxuIgorI2Vsc2UKKwkJImIgMmZcbiIKKwkJ IjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIK KwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKwkJIjE6IGIgMWJcbiIKKyNlbmRpZgorCQki LmFzY2l6IFwiYmFyZWJveFwiXG4iCisJCSIud29yZCBfdGV4dFxuIgkJCQkvKiB0ZXh0IGJhc2Uu IElmIGNvcGllZCB0aGVyZSwKKwkJCQkJCQkgKiBiYXJlYm94IGNhbiBza2lwIHJlbG9jYXRpb24K KwkJCQkJCQkgKi8KKwkJIi53b3JkIF9iYXJlYm94X2ltYWdlX3NpemVcbiIJCS8qIGltYWdlIHNp emUgdG8gY29weSAqLworCQkiLnJlcHQgOFxuIgorCQkiLndvcmQgMHg1NTU1NTU1NVxuIgorCQki LmVuZHJcbiIKKwkJIjI6XG4iCisJKTsKK30KK3N0YXRpYyBpbmxpbmUgdm9pZCBiYXJlYm94X2Fy bV9oZWFkKHZvaWQpCit7CisJX19iYXJlYm94X2FybV9oZWFkKCk7CisJX19hc21fXyBfX3ZvbGF0 aWxlX18gKAorCQkiYiBiYXJlYm94X2FybV9yZXNldF92ZWN0b3JcbiIKKwkpOworfQorI2VuZGlm CisKKyNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9fQVNNX0FSTV9IRUFE X0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJveC1hcm0uaCBi L2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYmFyZWJveC1hcm0uaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi42NzEzMzI2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9iYXJlYm94LWFybS5oCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogKEMpIENv cHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxp bm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiAo QykgQ29weXJpZ2h0IDIwMDIKKyAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3 dy5lbGlub3MuY29tPgorICogQWxleCBadWVwa2UgPGF6dUBzeXNnby5kZT4KKyAqCisgKiBTZWUg ZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwor ICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICovCisKKyNpZm5kZWYgX0JBUkVCT1hfQVJNX0hfCisjZGVmaW5l IF9CQVJFQk9YX0FSTV9IXworCisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxh c20tZ2VuZXJpYy9tZW1vcnlfbGF5b3V0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cisj aW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgorI2lu Y2x1ZGUgPGFzbS9iYXJlYm94LWFybS1oZWFkLmg+CisKKy8qIGNwdS8uLi4vY3B1LmMgKi8KK2lu dAljbGVhbnVwX2JlZm9yZV9saW51eCh2b2lkKTsKKworLyogYXJjaC88YXJjaD5ib2FyZChzKS8u Li4vLi4uICovCitpbnQJYm9hcmRfaW5pdCh2b2lkKTsKK2ludAlkcmFtX2luaXQgKHZvaWQpOwor CitleHRlcm4gY2hhciBfX2V4Y2VwdGlvbnNfc3RhcnRbXSwgX19leGNlcHRpb25zX3N0b3BbXTsK Kwordm9pZCBib2FyZF9pbml0X2xvd2xldmVsKHZvaWQpOwordWludDMyX3QgZ2V0X3J1bnRpbWVf b2Zmc2V0KHZvaWQpOworCit2b2lkIHNldHVwX2Modm9pZCk7Cit2b2lkIHJlbG9jYXRlX3RvX2N1 cnJlbnRfYWRyKHZvaWQpOwordm9pZCByZWxvY2F0ZV90b19hZHIodW5zaWduZWQgbG9uZyB0YXJn ZXQpOwordm9pZCBfX25vcmV0dXJuIGJhcmVib3hfYXJtX2VudHJ5KHVuc2lnbmVkIGxvbmcgbWVt YmFzZSwgdW5zaWduZWQgbG9uZyBtZW1zaXplLCB2b2lkICpib2FyZGRhdGEpOworCitzdHJ1Y3Qg YmFyZWJveF9hcm1fYm9hcmRkYXRhIHsKKyNkZWZpbmUgQkFSRUJPWF9BUk1fQk9BUkREQVRBX01B R0lDCTB4YWJlNzQyYzMKKwl1MzIgbWFnaWM7CisJdTMyIG1hY2hpbmU7IC8qIG1hY2hpbmUgbnVt YmVyIHRvIHBhc3MgdG8gYmFyZWJveC4gVGhpcyBtYXkgb3IgbWF5CisJCSAgICAgICogbm90IGJl IGEgQVJNIG1hY2hpbmUgbnVtYmVyIHJlZ2lzdGVyZWQgb24gYXJtLmxpbnV4Lm9yZy51ay4KKwkJ ICAgICAgKiBJdCBtdXN0IG9ubHkgYmUgdW5pcXVlIGFjcm9zcyBiYXJlYm94LiBQbGVhc2UgdXNl IGEgbnVtYmVyCisJCSAgICAgICogdGhhdCBkbyBub3QgcG90aWVudGlhbGx5IGNsYXNoZXMgd2l0 aCByZWdpc3RlcmVkIG1hY2hpbmVzLAorCQkgICAgICAqIGkuZS4gdXNlIGEgbnVtYmVyID4gMHgx MDAwMC4KKwkJICAgICAgKi8KK307CisKKy8qCisgKiBDcmVhdGUgYSBib2FyZGRhdGEgc3RydWN0 IGF0IGdpdmVuIGFkZHJlc3MuIFN1aXRhYmxlIHRvIGJlIHBhc3NlZAorICogYXMgYm9hcmRkYXRh IHRvIGJhcmVib3hfYXJtX2VudHJ5KCkuIFRoZSBtYWNoaW5lIGNhbiBiZSByZXRyaWV2ZWQKKyAq IGxhdGVyIHdpdGggYmFyZWJveF9hcm1fbWFjaGluZSgpLgorICovCitzdGF0aWMgaW5saW5lIHZv aWQgYm9hcmRkYXRhX2NyZWF0ZSh2b2lkICphZHIsIHUzMiBtYWNoaW5lKQoreworCXN0cnVjdCBi YXJlYm94X2FybV9ib2FyZGRhdGEgKmJkID0gYWRyOworCisJYmQtPm1hZ2ljID0gQkFSRUJPWF9B Uk1fQk9BUkREQVRBX01BR0lDOworCWJkLT5tYWNoaW5lID0gbWFjaGluZTsKK30KKwordTMyIGJh cmVib3hfYXJtX21hY2hpbmUodm9pZCk7CisKK3N0cnVjdCBiYXJlYm94X2FybV9ib2FyZGRhdGFf Y29tcHJlc3NlZF9kdGIgeworI2RlZmluZSBCQVJFQk9YX0FSTV9CT0FSRERBVEFfQ09NUFJFU1NF RF9EVEJfTUFHSUMgMHg3YjY2YmNiZAorCXUzMiBtYWdpYzsKKwl1MzIgZGF0YWxlbjsKKwl1MzIg ZGF0YWxlbl91bmNvbXByZXNzZWQ7Cit9OworCitzdHJ1Y3QgYmFyZWJveF9hcm1fYm9hcmRkYXRh ICpiYXJlYm94X2FybV9nZXRfYm9hcmRkYXRhKHZvaWQpOworCisjaWYgZGVmaW5lZChDT05GSUdf UkVMT0NBVEFCTEUpICYmIGRlZmluZWQoQ09ORklHX0FSTV9FWENFUFRJT05TKQordm9pZCBhcm1f Zml4dXBfdmVjdG9ycyh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgYXJtX2ZpeHVw X3ZlY3RvcnModm9pZCkKK3sKK30KKyNlbmRpZgorCit2b2lkICpiYXJlYm94X2FybV9ib290X2R0 Yih2b2lkKTsKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGFybV9tZW1fc3RhY2sodW5z aWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgZW5kbWVtKQoreworCXJl dHVybiBlbmRtZW0gLSBTVEFDS19TSVpFOworfQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxv bmcgYXJtX21lbV90dGIodW5zaWduZWQgbG9uZyBtZW1iYXNlLAorCQkJCQl1bnNpZ25lZCBsb25n IGVuZG1lbSkKK3sKKwllbmRtZW0gPSBhcm1fbWVtX3N0YWNrKG1lbWJhc2UsIGVuZG1lbSk7CisJ ZW5kbWVtICY9IH4oU1pfMTZLIC0gMSk7CisJZW5kbWVtIC09IFNaXzE2SzsKKworCXJldHVybiBl bmRtZW07Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBhcm1fbWVtX2Vhcmx5X21h bGxvYyh1bnNpZ25lZCBsb25nIG1lbWJhc2UsCisJCQkJCQkgdW5zaWduZWQgbG9uZyBlbmRtZW0p Cit7CisJcmV0dXJuIGFybV9tZW1fdHRiKG1lbWJhc2UsIGVuZG1lbSkgLSBTWl8xMjhLOworfQor CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgYXJtX21lbV9lYXJseV9tYWxsb2NfZW5kKHVu c2lnbmVkIGxvbmcgbWVtYmFzZSwKKwkJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBlbmRtZW0pCit7 CisJcmV0dXJuIGFybV9tZW1fdHRiKG1lbWJhc2UsIGVuZG1lbSk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBhcm1fbWVtX3JhbW9vcHModW5zaWduZWQgbG9uZyBtZW1iYXNlLAor CQkJCQkgICAgdW5zaWduZWQgbG9uZyBlbmRtZW0pCit7CisJZW5kbWVtID0gYXJtX21lbV90dGIo bWVtYmFzZSwgZW5kbWVtKTsKKyNpZmRlZiBDT05GSUdfRlNfUFNUT1JFX1JBTU9PUFMKKwllbmRt ZW0gLT0gQ09ORklHX0ZTX1BTVE9SRV9SQU1PT1BTX1NJWkU7CisJZW5kbWVtICY9IH4oU1pfNEsg LSAxKTsgLyogQWxpZ24gdG8gNEsgKi8KKyNlbmRpZgorCisJcmV0dXJuIGVuZG1lbTsKK30KKwor c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGFybV9tZW1fYmFyZWJveF9pbWFnZSh1bnNpZ25l ZCBsb25nIG1lbWJhc2UsCisJCQkJCQkgIHVuc2lnbmVkIGxvbmcgZW5kbWVtLAorCQkJCQkJICB1 bnNpZ25lZCBsb25nIHNpemUpCit7CisJZW5kbWVtID0gYXJtX21lbV9yYW1vb3BzKG1lbWJhc2Us IGVuZG1lbSk7CisKKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfUkVMT0NBVEFCTEUpKSB7CisJCWVu ZG1lbSAtPSBzaXplOworCQllbmRtZW0gJj0gfihTWl8xTSAtIDEpOworCX0KKworCXJldHVybiBl bmRtZW07Cit9CisKKyNkZWZpbmUgRU5UUllfRlVOQ1RJT04obmFtZSwgYXJnMCwgYXJnMSwgYXJn MikJCQkJXAorCXN0YXRpYyB2b2lkIF9fIyNuYW1lKHVpbnQzMl90LCB1aW50MzJfdCwgdWludDMy X3QpOwkJXAorCQkJCQkJCQkJXAorCXZvaWQgX19uYWtlZCBfX3NlY3Rpb24oLnRleHRfaGVhZF9l bnRyeV8jI25hbWUpCW5hbWUJCVwKKwkJCQkodWludDMyX3QgcjAsIHVpbnQzMl90IHIxLCB1aW50 MzJfdCByMikJXAorCQl7CQkJCQkJCVwKKwkJCV9fYmFyZWJveF9hcm1faGVhZCgpOwkJCQlcCisJ CQlfXyMjbmFtZShyMCwgcjEsIHIyKTsJCQkJXAorCQl9CQkJCQkJCVwKKwkJc3RhdGljIHZvaWQg X19uYWtlZCBub2lubGluZSBfXyMjbmFtZQkJCVwKKwkJCSh1aW50MzJfdCBhcmcwLCB1aW50MzJf dCBhcmcxLCB1aW50MzJfdCBhcmcyKQorCisKKworI2VuZGlmCS8qIF9CQVJFQk9YX0FSTV9IXyAq LwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9iYXJlYm94LmggYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2JhcmVib3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zMWE4ZTE1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9i YXJlYm94LmgKQEAgLTAsMCArMSwxMiBAQAorI2lmbmRlZiBfQkFSRUJPWF9IXworI2RlZmluZSBf QkFSRUJPWF9IXwkxCisKKyNpZmRlZiBDT05GSUdfQVJNX1VOV0lORAorI2RlZmluZSBBUkNIX0hB U19TVEFDS19EVU1QCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19BUk1fRVhDRVBUSU9OUworI2Rl ZmluZSBBUkNIX0hBU19EQVRBX0FCT1JUX01BU0sKKyNlbmRpZgorCisjZW5kaWYJLyogX0JBUkVC T1hfSF8gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYml0b3BzLmggYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL2JpdG9wcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmFjODVhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL2JpdG9wcy5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg QVJNIEx0ZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisjaWZuZGVmIF9fQVNNX0JJ VE9QU19ICisjZGVmaW5lIF9fQVNNX0JJVE9QU19ICisKKyNpbmNsdWRlIDxsaW51eC9jb21waWxl ci5oPgorCisjaWZuZGVmIF9MSU5VWF9CSVRPUFNfSAorI2Vycm9yIG9ubHkgPGxpbnV4L2JpdG9w cy5oPiBjYW4gYmUgaW5jbHVkZWQgZGlyZWN0bHkKKyNlbmRpZgorCisvKgorICogTGl0dGxlIGVu ZGlhbiBhc3NlbWJseSBhdG9taWMgYml0b3BzLgorICovCitleHRlcm4gdm9pZCBzZXRfYml0KGlu dCBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqcCk7CitleHRlcm4gdm9pZCBjbGVhcl9iaXQo aW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKTsKK2V4dGVybiB2b2lkIGNoYW5nZV9i aXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKTsKK2V4dGVybiBpbnQgdGVzdF9h bmRfc2V0X2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKnApOworZXh0ZXJuIGlu dCB0ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICpwKTsK K2V4dGVybiBpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdChpbnQgbnIsIHZvbGF0aWxlIHVuc2lnbmVk IGxvbmcgKnApOworCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL19fZmZzLmg+CisjaW5j bHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL2Zmcy5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL2Jp dG9wcy9fX2Zscy5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL2JpdG9wcy9mbHMuaD4KKworI2lu Y2x1ZGUgPGFzbS1nZW5lcmljL2JpdG9wcy9mZnouaD4KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9i aXRvcHMvZmxzNjQuaD4KKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oPgorCisj aW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0b3BzL2h3ZWlnaHQuaD4KKworI2luY2x1ZGUgPGFzbS1n ZW5lcmljL2JpdG9wcy9vcHMuaD4KKworI2VuZGlmIC8qIF9fQVNNX0JJVE9QU19IICovCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2JpdHNwZXJsb25nLmggYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2JpdHNwZXJsb25nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNmRjMGJiMAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20v Yml0c3BlcmxvbmcuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvYml0c3Bl cmxvbmcuaD4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgg Yi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2J5dGVvcmRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmMzNDg5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2J5dGVvcmRlci5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiAgbGludXgvaW5j bHVkZS9hc20tYXJtL2J5dGVvcmRlci5oCisgKgorICogQVJNIEVuZGlhbi1uZXNzLiAgSW4gbGl0 dGxlIGVuZGlhbiBtb2RlLCB0aGUgZGF0YSBidXMgaXMgY29ubmVjdGVkIHN1Y2gKKyAqIHRoYXQg Ynl0ZSBhY2Nlc3NlcyBhcHBlYXIgYXM6CisgKiAgMCA9IGQwLi4uZDcsIDEgPSBkOC4uLmQxNSwg MiA9IGQxNi4uLmQyMywgMyA9IGQyNC4uLmQzMQorICogYW5kIHdvcmQgYWNjZXNzZXMgKGRhdGEg b3IgaW5zdHJ1Y3Rpb24pIGFwcGVhciBhczoKKyAqICBkMC4uLmQzMQorICoKKyAqIFdoZW4gaW4g YmlnIGVuZGlhbiBtb2RlLCBieXRlIGFjY2Vzc2VzIGFwcGVhciBhczoKKyAqICAwID0gZDI0Li4u ZDMxLCAxID0gZDE2Li4uZDIzLCAyID0gZDguLi5kMTUsIDMgPSBkMC4uLmQ3CisgKiBhbmQgd29y ZCBhY2Nlc3NlcyAoZGF0YSBvciBpbnN0cnVjdGlvbikgYXBwZWFyIGFzOgorICogIGQwLi4uZDMx CisgKi8KKyNpZm5kZWYgX19BU01fQVJNX0JZVEVPUkRFUl9ICisjZGVmaW5lIF9fQVNNX0FSTV9C WVRFT1JERVJfSAorCisKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworI2lmICFkZWZpbmVkKF9f U1RSSUNUX0FOU0lfXykgfHwgZGVmaW5lZChfX0tFUk5FTF9fKQorIyAgZGVmaW5lIF9fQllURU9S REVSX0hBU19VNjRfXworIyAgZGVmaW5lIF9fU1dBQl82NF9USFJVXzMyX18KKyNlbmRpZgorCisj aWZkZWYgX19BUk1FQl9fCisjaW5jbHVkZSA8bGludXgvYnl0ZW9yZGVyL2JpZ19lbmRpYW4uaD4K KyNlbHNlCisjaW5jbHVkZSA8bGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaD4KKyNlbmRp ZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUtbDJ4 MC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZS1sMngwLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzZGQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vY2FjaGUtbDJ4MC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogYXJj aC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvY2FjaGUtbDJ4MC5oCisgKgorICogQ29weXJpZ2h0 IChDKSAyMDA3IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisg KiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaWZuZGVmIF9fQVNNX0FSTV9IQVJEV0FSRV9MMlgw X0gKKyNkZWZpbmUgX19BU01fQVJNX0hBUkRXQVJFX0wyWDBfSAorCisjZGVmaW5lIEwyWDBfQ0FD SEVfSUQJCQkweDAwMAorI2RlZmluZSBMMlgwX0NBQ0hFX1RZUEUJCQkweDAwNAorI2RlZmluZSBM MlgwX0NUUkwJCQkweDEwMAorI2RlZmluZSBMMlgwX0FVWF9DVFJMCQkJMHgxMDQKKyNkZWZpbmUg TDJYMF9UQUdfTEFURU5DWV9DVFJMCQkweDEwOAorI2RlZmluZSBMMlgwX0RBVEFfTEFURU5DWV9D VFJMCQkweDEwQworI2RlZmluZSBMMlgwX0VWRU5UX0NOVF9DVFJMCQkweDIwMAorI2RlZmluZSBM MlgwX0VWRU5UX0NOVDFfQ0ZHCQkweDIwNAorI2RlZmluZSBMMlgwX0VWRU5UX0NOVDBfQ0ZHCQkw eDIwOAorI2RlZmluZSBMMlgwX0VWRU5UX0NOVDFfVkFMCQkweDIwQworI2RlZmluZSBMMlgwX0VW RU5UX0NOVDBfVkFMCQkweDIxMAorI2RlZmluZSBMMlgwX0lOVFJfTUFTSwkJCTB4MjE0CisjZGVm aW5lIEwyWDBfTUFTS0VEX0lOVFJfU1RBVAkJMHgyMTgKKyNkZWZpbmUgTDJYMF9SQVdfSU5UUl9T VEFUCQkweDIxQworI2RlZmluZSBMMlgwX0lOVFJfQ0xFQVIJCQkweDIyMAorI2RlZmluZSBMMlgw X0NBQ0hFX1NZTkMJCQkweDczMAorI2RlZmluZSBMMlgwX0RVTU1ZX1JFRwkJCTB4NzQwCisjZGVm aW5lIEwyWDBfSU5WX0xJTkVfUEEJCTB4NzcwCisjZGVmaW5lIEwyWDBfSU5WX1dBWQkJCTB4NzdD CisjZGVmaW5lIEwyWDBfQ0xFQU5fTElORV9QQQkJMHg3QjAKKyNkZWZpbmUgTDJYMF9DTEVBTl9M SU5FX0lEWAkJMHg3QjgKKyNkZWZpbmUgTDJYMF9DTEVBTl9XQVkJCQkweDdCQworI2RlZmluZSBM MlgwX0NMRUFOX0lOVl9MSU5FX1BBCQkweDdGMAorI2RlZmluZSBMMlgwX0NMRUFOX0lOVl9MSU5F X0lEWAkJMHg3RjgKKyNkZWZpbmUgTDJYMF9DTEVBTl9JTlZfV0FZCQkweDdGQworLyoKKyAqIFRo ZSBsb2NrZG93biByZWdpc3RlcnMgcmVwZWF0IDggdGltZXMgZm9yIEwzMTAsIHRoZSBMMjEwIGhh cyBvbmx5IG9uZQorICogRCBhbmQgb25lIEkgbG9ja2Rvd24gcmVnaXN0ZXIgYXQgMHgwOTAwIGFu ZCAweDA5MDQuCisgKi8KKyNkZWZpbmUgTDJYMF9MT0NLRE9XTl9XQVlfRF9CQVNFCTB4OTAwCisj ZGVmaW5lIEwyWDBfTE9DS0RPV05fV0FZX0lfQkFTRQkweDkwNAorI2RlZmluZSBMMlgwX0xPQ0tE T1dOX1NUUklERQkJMHgwOAorI2RlZmluZSBMMlgwX0FERFJfRklMVEVSX1NUQVJUCQkweEMwMAor I2RlZmluZSBMMlgwX0FERFJfRklMVEVSX0VORAkJMHhDMDQKKyNkZWZpbmUgTDJYMF9URVNUX09Q RVJBVElPTgkJMHhGMDAKKyNkZWZpbmUgTDJYMF9MSU5FX0RBVEEJCQkweEYxMAorI2RlZmluZSBM MlgwX0xJTkVfVEFHCQkJMHhGMzAKKyNkZWZpbmUgTDJYMF9ERUJVR19DVFJMCQkJMHhGNDAKKyNk ZWZpbmUgTDJYMF9QUkVGRVRDSF9DVFJMCQkweEY2MAorI2RlZmluZSBMMlgwX1BPV0VSX0NUUkwJ CQkweEY4MAorI2RlZmluZSAgIEwyWDBfRFlOQU1JQ19DTEtfR0FUSU5HX0VOCSgxIDw8IDEpCisj ZGVmaW5lICAgTDJYMF9TVE5EQllfTU9ERV9FTgkJKDEgPDwgMCkKKworLyogUmVnaXN0ZXJzIHNo aWZ0cyBhbmQgbWFza3MgKi8KKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9QQVJUX01BU0sJCSgweGYg PDwgNikKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9QQVJUX0wyMTAJCSgxIDw8IDYpCisjZGVmaW5l IEwyWDBfQ0FDSEVfSURfUEFSVF9MMzEwCQkoMyA8PCA2KQorI2RlZmluZSBMMlgwX0NBQ0hFX0lE X1JUTF9NQVNLICAgICAgICAgIDB4M2YKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9SVExfUjBQMCAg ICAgICAgICAweDAKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9SVExfUjFQMCAgICAgICAgICAweDIK KyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9SVExfUjJQMCAgICAgICAgICAweDQKKyNkZWZpbmUgTDJY MF9DQUNIRV9JRF9SVExfUjNQMCAgICAgICAgICAweDUKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9S VExfUjNQMSAgICAgICAgICAweDYKKyNkZWZpbmUgTDJYMF9DQUNIRV9JRF9SVExfUjNQMiAgICAg ICAgICAweDgKKworI2RlZmluZSBMMlgwX0FVWF9DVFJMX01BU0sJCQkweGMwMDAwZmZmCisjZGVm aW5lIEwyWDBfQVVYX0NUUkxfREFUQV9SRF9MQVRFTkNZX1NISUZUCTAKKyNkZWZpbmUgTDJYMF9B VVhfQ1RSTF9EQVRBX1JEX0xBVEVOQ1lfTUFTSwkweDcKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9E QVRBX1dSX0xBVEVOQ1lfU0hJRlQJMworI2RlZmluZSBMMlgwX0FVWF9DVFJMX0RBVEFfV1JfTEFU RU5DWV9NQVNLCSgweDcgPDwgMykKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9UQUdfTEFURU5DWV9T SElGVAkJNgorI2RlZmluZSBMMlgwX0FVWF9DVFJMX1RBR19MQVRFTkNZX01BU0sJCSgweDcgPDwg NikKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9ESVJUWV9MQVRFTkNZX1NISUZUCTkKKyNkZWZpbmUg TDJYMF9BVVhfQ1RSTF9ESVJUWV9MQVRFTkNZX01BU0sJKDB4NyA8PCA5KQorI2RlZmluZSBMMlgw X0FVWF9DVFJMX0FTU09DSUFUSVZJVFlfU0hJRlQJMTYKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9X QVlfU0laRV9TSElGVAkJMTcKKyNkZWZpbmUgTDJYMF9BVVhfQ1RSTF9XQVlfU0laRV9NQVNLCQko MHg3IDw8IDE3KQorI2RlZmluZSBMMlgwX0FVWF9DVFJMX1NIQVJFX09WRVJSSURFX1NISUZUCTIy CisjZGVmaW5lIEwyWDBfQVVYX0NUUkxfTlNfTE9DS0RPV05fU0hJRlQJCTI2CisjZGVmaW5lIEwy WDBfQVVYX0NUUkxfTlNfSU5UX0NUUkxfU0hJRlQJCTI3CisjZGVmaW5lIEwyWDBfQVVYX0NUUkxf REFUQV9QUkVGRVRDSF9TSElGVAkyOAorI2RlZmluZSBMMlgwX0FVWF9DVFJMX0lOU1RSX1BSRUZF VENIX1NISUZUCTI5CisjZGVmaW5lIEwyWDBfQVVYX0NUUkxfRUFSTFlfQlJFU1BfU0hJRlQJCTMw CisKKyNkZWZpbmUgTDJYMF9MQVRFTkNZX0NUUkxfU0VUVVBfU0hJRlQJMAorI2RlZmluZSBMMlgw X0xBVEVOQ1lfQ1RSTF9SRF9TSElGVAk0CisjZGVmaW5lIEwyWDBfTEFURU5DWV9DVFJMX1dSX1NI SUZUCTgKKworI2RlZmluZSBMMlgwX0FERFJfRklMVEVSX0VOCQkxCisKKworI2VuZGlmCmRpZmYg LS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlLmggYi9hcmNoL2FybTY0L2luY2x1 ZGUvYXNtL2NhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE1MjRm MwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vY2FjaGUuaApAQCAt MCwwICsxLDE2IEBACisjaWZuZGVmIF9fQVNNX0NBQ0hFX0gKKyNkZWZpbmUgX19BU01fQ0FDSEVf SAorCitleHRlcm4gdm9pZCB2OF9pbnZhbGlkYXRlX2ljYWNoZV9hbGwodm9pZCk7CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBmbHVzaF9pY2FjaGUodm9pZCkKK3sKKwl2OF9pbnZhbGlkYXRlX2ljYWNo ZV9hbGwoKTsKK30KKworaW50IGFybV9zZXRfY2FjaGVfZnVuY3Rpb25zKHZvaWQpOworCit2b2lk IGFybV9lYXJseV9tbXVfY2FjaGVfZmx1c2godm9pZCk7Cit2b2lkIGFybV9lYXJseV9tbXVfY2Fj aGVfaW52YWxpZGF0ZSh2b2lkKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL2NvbW1vbi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jb21tb24uaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2FlNjE5Ci0tLSAvZGV2L251bGwKKysr IGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jb21tb24uaApAQCAtMCwwICsxLDQ4IEBACisjaWZu ZGVmIF9fQVNNX0FSTV9DT01NT05fSAorI2RlZmluZSBfX0FTTV9BUk1fQ09NTU9OX0gKKworc3Rh dGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9wYyh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcg cGM7CisKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyAgICAgICAgICAgICAgICAibW92ICAgICUw LCBwY1xuIgorICAgICAgICAgICAgICAgIDogIj1yIiAocGMpCisgICAgICAgICAgICAgICAgOgor ICAgICAgICAgICAgICAgIDogIm1lbW9yeSIpOworCisJcmV0dXJuIHBjOworfQorCitzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X2xyKHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyBscjsK KworCV9fYXNtX18gX192b2xhdGlsZV9fKAorICAgICAgICAgICAgICAgICJtb3YgICAgJTAsIGxy XG4iCisgICAgICAgICAgICAgICAgOiAiPXIiIChscikKKyAgICAgICAgICAgICAgICA6CisgICAg ICAgICAgICAgICAgOiAibWVtb3J5Iik7CisKKwlyZXR1cm4gbHI7Cit9CisKK3N0YXRpYyBpbmxp bmUgdW5zaWduZWQgbG9uZyBnZXRfc3Aodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIHNwOworCisJ X19hc21fXyBfX3ZvbGF0aWxlX18oCisgICAgICAgICAgICAgICAgIm1vdiAgICAlMCwgc3BcbiIK KyAgICAgICAgICAgICAgICA6ICI9ciIgKHNwKQorICAgICAgICAgICAgICAgIDoKKyAgICAgICAg ICAgICAgICA6ICJtZW1vcnkiKTsKKworCXJldHVybiBzcDsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGFybV9zZXR1cF9zdGFjayh1bnNpZ25lZCBsb25nIHRvcCkKK3sKKwlfX2FzbV9fIF9fdm9s YXRpbGVfXygibW92IHNwLCAlMCIgOiA6ICJyIih0b3ApKTsKK30KKworI2VuZGlmIC8qIF9fQVNN X0FSTV9DT01NT05fSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jcHV0 eXBlLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NwdXR5cGUuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mMzk5MzliCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9jcHV0eXBlLmgKQEAgLTAsMCArMSwxMDAgQEAKKyNpZm5kZWYgX19BU01f QVJNX0NQVVRZUEVfSAorI2RlZmluZSBfX0FTTV9BUk1fQ1BVVFlQRV9ICisKKyNpbmNsdWRlIDxs aW51eC9zdHJpbmdpZnkuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworI2RlZmluZSBD UFVJRF9JRAkwCisjZGVmaW5lIENQVUlEX0NBQ0hFVFlQRQkxCisjZGVmaW5lIENQVUlEX1RDTQky CisjZGVmaW5lIENQVUlEX1RMQlRZUEUJMworI2RlZmluZSBDUFVJRF9NUElEUgk1CisKKyNkZWZp bmUgQ1BVSURfRVhUX1BGUjAJImMxLCAwIgorI2RlZmluZSBDUFVJRF9FWFRfUEZSMQkiYzEsIDEi CisjZGVmaW5lIENQVUlEX0VYVF9ERlIwCSJjMSwgMiIKKyNkZWZpbmUgQ1BVSURfRVhUX0FGUjAJ ImMxLCAzIgorI2RlZmluZSBDUFVJRF9FWFRfTU1GUjAJImMxLCA0IgorI2RlZmluZSBDUFVJRF9F WFRfTU1GUjEJImMxLCA1IgorI2RlZmluZSBDUFVJRF9FWFRfTU1GUjIJImMxLCA2IgorI2RlZmlu ZSBDUFVJRF9FWFRfTU1GUjMJImMxLCA3IgorI2RlZmluZSBDUFVJRF9FWFRfSVNBUjAJImMyLCAw IgorI2RlZmluZSBDUFVJRF9FWFRfSVNBUjEJImMyLCAxIgorI2RlZmluZSBDUFVJRF9FWFRfSVNB UjIJImMyLCAyIgorI2RlZmluZSBDUFVJRF9FWFRfSVNBUjMJImMyLCAzIgorI2RlZmluZSBDUFVJ RF9FWFRfSVNBUjQJImMyLCA0IgorI2RlZmluZSBDUFVJRF9FWFRfSVNBUjUJImMyLCA1IgorCitl eHRlcm4gdW5zaWduZWQgaW50IHByb2Nlc3Nvcl9pZDsKKworI2RlZmluZSByZWFkX2NwdWlkKHJl ZykJCQkJCQkJXAorCSh7CQkJCQkJCQlcCisJCXVuc2lnbmVkIGludCBfX3ZhbDsJCQkJCVwKKwkJ YXNtKCJtcmMJcDE1LCAwLCAlMCwgYzAsIGMwLCAiIF9fc3RyaW5naWZ5KHJlZykJXAorCQkgICAg OiAiPXIiIChfX3ZhbCkJCQkJCVwKKwkJICAgIDoJCQkJCQkJXAorCQkgICAgOiAiY2MiKTsJCQkJ CQlcCisJCV9fdmFsOwkJCQkJCQlcCisJfSkKKyNkZWZpbmUgcmVhZF9jcHVpZF9leHQoZXh0X3Jl ZykJCQkJCQlcCisJKHsJCQkJCQkJCVwKKwkJdW5zaWduZWQgaW50IF9fdmFsOwkJCQkJXAorCQlh c20oIm1yYwlwMTUsIDAsICUwLCBjMCwgIiBleHRfcmVnCQlcCisJCSAgICA6ICI9ciIgKF9fdmFs KQkJCQkJXAorCQkgICAgOgkJCQkJCQlcCisJCSAgICA6ICJjYyIpOwkJCQkJCVwKKwkJX192YWw7 CQkJCQkJCVwKKwl9KQorCisvKgorICogVGhlIENQVSBJRCBuZXZlciBjaGFuZ2VzIGF0IHJ1biB0 aW1lLCBzbyB3ZSBtaWdodCBhcyB3ZWxsIHRlbGwgdGhlCisgKiBjb21waWxlciB0aGF0IGl0J3Mg Y29uc3RhbnQuICBVc2UgdGhpcyBmdW5jdGlvbiB0byByZWFkIHRoZSBDUFUgSUQKKyAqIHJhdGhl ciB0aGFuIGRpcmVjdGx5IHJlYWRpbmcgcHJvY2Vzc29yX2lkIG9yIHJlYWRfY3B1aWQoKSBkaXJl Y3RseS4KKyAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfY29uc3Rf XyByZWFkX2NwdWlkX2lkKHZvaWQpCit7CisJcmV0dXJuIHJlYWRfY3B1aWQoQ1BVSURfSUQpOwor fQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfX2F0dHJpYnV0ZV9jb25zdF9fIHJlYWRf Y3B1aWRfY2FjaGV0eXBlKHZvaWQpCit7CisJcmV0dXJuIHJlYWRfY3B1aWQoQ1BVSURfQ0FDSEVU WVBFKTsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfY29uc3Rf XyByZWFkX2NwdWlkX3RjbXN0YXR1cyh2b2lkKQoreworCXJldHVybiByZWFkX2NwdWlkKENQVUlE X1RDTSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX2NvbnN0 X18gcmVhZF9jcHVpZF9tcGlkcih2b2lkKQoreworCXJldHVybiByZWFkX2NwdWlkKENQVUlEX01Q SURSKTsKK30KKworLyoKKyAqIEludGVsJ3MgWFNjYWxlMyBjb3JlIHN1cHBvcnRzIHNvbWUgdjYg ZmVhdHVyZXMgKHN1cGVyc2VjdGlvbnMsIEwyKQorICogYnV0IGFkdmVydGlzZXMgaXRzZWxmIGFz IHY1IGFzIGl0IGRvZXMgbm90IHN1cHBvcnQgdGhlIHY2IElTQS4gIEZvcgorICogdGhpcyByZWFz b24sIHdlIG5lZWQgYSB3YXkgdG8gZXhwbGljaXRseSB0ZXN0IGZvciB0aGlzIHR5cGUgb2YgQ1BV LgorICovCisjaWZuZGVmIENPTkZJR19DUFVfWFNDMworI2RlZmluZSBjcHVfaXNfeHNjMygpCTAK KyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBjcHVfaXNfeHNjMyh2b2lkKQoreworCXVuc2lnbmVk IGludCBpZDsKKwlpZCA9IHJlYWRfY3B1aWRfaWQoKSAmIDB4ZmZmZmUwMDA7CisJLyogSXQgY292 ZXJzIGJvdGggSW50ZWwgSUQgYW5kIE1hcnZlbGwgSUQgKi8KKwlpZiAoKGlkID09IDB4NjkwNTYw MDApIHx8IChpZCA9PSAweDU2MDU2MDAwKSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKK30K KyNlbmRpZgorCisjaWYgIWRlZmluZWQoQ09ORklHX0NQVV9YU0NBTEUpICYmICFkZWZpbmVkKENP TkZJR19DUFVfWFNDMykKKyNkZWZpbmUJY3B1X2lzX3hzY2FsZSgpCTAKKyNlbHNlCisjZGVmaW5l CWNwdV9pc194c2NhbGUoKQkxCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2RlYnVnX2xsX3BsMDExLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2RlYnVnX2xsX3BsMDExLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIw MTVhMwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZGVidWdfbGxf cGwwMTEuaApAQCAtMCwwICsxLDI1IEBACisjaWZuZGVmIF9fSU5DTFVERV9BUk1fQVNNX0RFQlVH X0xMX1BMMDExX0hfXworI2RlZmluZSBfX0lOQ0xVREVfQVJNX0FTTV9ERUJVR19MTF9QTDAxMV9I X18KKworI2lmbmRlZiBERUJVR19MTF9VQVJUX0FERFIKKyNlcnJvciBERUJVR19MTF9VQVJUX0FE RFIgaXMgdW5kZWZpbmVkIQorI2VuZGlmCisKKyNpbmNsdWRlIDxpby5oPgorI2luY2x1ZGUgPGxp bnV4L2FtYmEvc2VyaWFsLmg+CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBQVVRDX0xMKGNoYXIgYykK K3sKKwkvKiBXYWl0IHVudGlsIHRoZXJlIGlzIHNwYWNlIGluIHRoZSBGSUZPICovCisJd2hpbGUg KHJlYWRsKERFQlVHX0xMX1VBUlRfQUREUiArIFVBUlQwMXhfRlIpICYgVUFSVDAxeF9GUl9UWEZG KQorCQk7CisKKwkvKiBTZW5kIHRoZSBjaGFyYWN0ZXIgKi8KKwl3cml0ZWwoYywgREVCVUdfTExf VUFSVF9BRERSICsgVUFSVDAxeF9EUik7CisKKwkvKiBXYWl0IHRvIG1ha2Ugc3VyZSBpdCBoaXRz IHRoZSBsaW5lLCBpbiBjYXNlIHdlIGRpZSB0b28gc29vbi4gKi8KKwl3aGlsZSAocmVhZGwoREVC VUdfTExfVUFSVF9BRERSICsgVUFSVDAxeF9GUikgJiBVQVJUMDF4X0ZSX1RYRkYpCisJCTsKK30K KworI2VuZGlmIC8qIF9fSU5DTFVERV9BUk1fQVNNX0RFQlVHX0xMX1BMMDExX0hfXyAqLwpkaWZm IC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9kbWEuaCBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vZG1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhMmVkZgot LS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZG1hLmgKQEAgLTAsMCAr MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBieSBNYXJjIEtsZWluZS1CdWRkZSA8 bWtsQHBlbmd1dHJvbml4LmRlPgorICoKKyAqIFRoaXMgZmlsZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgR1BMdjIKKyAqCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorCisjZGVmaW5lIGRtYV9h bGxvYyBkbWFfYWxsb2MKK3N0YXRpYyBpbmxpbmUgdm9pZCAqZG1hX2FsbG9jKHNpemVfdCBzaXpl KQoreworCXJldHVybiB4bWVtYWxpZ24oNjQsIEFMSUdOKHNpemUsIDY0KSk7Cit9CisKKyNpZm5k ZWYgQ09ORklHX01NVQorc3RhdGljIGlubGluZSB2b2lkICpkbWFfYWxsb2NfY29oZXJlbnQoc2l6 ZV90IHNpemUsIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpCit7CisJdm9pZCAqcmV0ID0geG1lbWFs aWduKDQwOTYsIHNpemUpOworCWlmIChkbWFfaGFuZGxlKQorCQkqZG1hX2hhbmRsZSA9IChkbWFf YWRkcl90KXJldDsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqZG1h X2FsbG9jX3dyaXRlY29tYmluZShzaXplX3Qgc2l6ZSwgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSkK K3sKKwlyZXR1cm4gZG1hX2FsbG9jX2NvaGVyZW50KHNpemUsIGRtYV9oYW5kbGUpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgZG1hX2ZyZWVfY29oZXJlbnQodm9pZCAqbWVtLCBkbWFfYWRkcl90 IGRtYV9oYW5kbGUsCisJCQkJICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlmcmVlKG1lbSk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCBkbWFfc3luY19zaW5nbGVfZm9yX2NwdSh1bnNpZ25lZCBsb25n IGFkZHJlc3MsIHNpemVfdCBzaXplLAorCQkJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBk aXIpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkbWFfc3luY19zaW5nbGVfZm9yX2Rldmlj ZSh1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHNpemVfdCBzaXplLAorCQkJCQkgICAgICBlbnVtIGRt YV9kYXRhX2RpcmVjdGlvbiBkaXIpCit7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNGViYjAKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VsZi5oCkBAIC0wLDAgKzEsMTE5IEBACisjaWZuZGVm IF9fQVNNQVJNX0VMRl9ICisjZGVmaW5lIF9fQVNNQVJNX0VMRl9ICisKKy8vI2luY2x1ZGUgPGFz bS9od2NhcC5oPgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworLyoKKyAqIEVMRiByZWdpc3RlciBk ZWZpbml0aW9ucy4uCisgKi8KKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisvLyNpbmNsdWRlIDxh c20vdXNlci5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKK3R5cGVkZWYg dW5zaWduZWQgbG9uZyBlbGZfZnJlZ190WzNdOworCisjZGVmaW5lIEVMRl9OR1JFRyAoc2l6ZW9m IChzdHJ1Y3QgcHRfcmVncykgLyBzaXplb2YoZWxmX2dyZWdfdCkpCit0eXBlZGVmIGVsZl9ncmVn X3QgZWxmX2dyZWdzZXRfdFtFTEZfTkdSRUddOworCit0eXBlZGVmIHN0cnVjdCB1c2VyX2ZwIGVs Zl9mcHJlZ3NldF90OworI2VuZGlmCisKKyNkZWZpbmUgRU1fQVJNCTQwCisjZGVmaW5lIEVGX0FS TV9BUENTMjYgMHgwOAorI2RlZmluZSBFRl9BUk1fU09GVF9GTE9BVCAweDIwMAorI2RlZmluZSBF Rl9BUk1fRUFCSV9NQVNLIDB4RkYwMDAwMDAKKworI2RlZmluZSBSX0FSTV9OT05FCTAKKyNkZWZp bmUgUl9BUk1fUEMyNAkxCisjZGVmaW5lIFJfQVJNX0FCUzMyCTIKKyNkZWZpbmUgUl9BUk1fQ0FM TAkyOAorI2RlZmluZSBSX0FSTV9KVU1QMjQJMjkKKworLyoKKyAqIFRoZXNlIGFyZSB1c2VkIHRv IHNldCBwYXJhbWV0ZXJzIGluIHRoZSBjb3JlIGR1bXBzLgorICovCisjZGVmaW5lIEVMRl9DTEFT UwlFTEZDTEFTUzMyCisjaWZkZWYgX19BUk1FQl9fCisjZGVmaW5lIEVMRl9EQVRBCUVMRkRBVEEy TVNCCisjZWxzZQorI2RlZmluZSBFTEZfREFUQQlFTEZEQVRBMkxTQgorI2VuZGlmCisjZGVmaW5l IEVMRl9BUkNICUVNX0FSTQorCisjaWZkZWYgX19LRVJORUxfXworI2lmbmRlZiBfX0FTU0VNQkxZ X18KKy8qCisgKiBUaGlzIHlpZWxkcyBhIHN0cmluZyB0aGF0IGxkLnNvIHdpbGwgdXNlIHRvIGxv YWQgaW1wbGVtZW50YXRpb24KKyAqIHNwZWNpZmljIGxpYnJhcmllcyBmb3Igb3B0aW1pemF0aW9u LiAgVGhpcyBpcyBtb3JlIHNwZWNpZmljIGluCisgKiBpbnRlbnQgdGhhbiBwb2tpbmcgYXQgdW5h bWUgb3IgL3Byb2MvY3B1aW5mby4KKyAqCisgKiBGb3Igbm93IHdlIGp1c3QgcHJvdmlkZSBhIGZh aXJseSBnZW5lcmFsIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUKKyAqIHByb2Nlc3NvciBmYW1p bHkuICBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBzcGVjaWZpYyBsYXRlciBpZiBzb21lb25lCisg KiBpbXBsZW1lbnRlZCBvcHRpbWlzYXRpb25zIHRoYXQgcmVxdWlyZSBpdC4gIDI2LWJpdCBDUFVz IGdpdmUgeW91CisgKiAidjFsIiBmb3IgQVJNMiAobm8gU1dQKSBhbmQgInYybCIgZm9yIGFueXRo aW5nIGVsc2UgKEFSTTEgaXNuJ3QKKyAqIHN1cHBvcnRlZCkuICAzMi1iaXQgQ1BVcyBnaXZlIHlv dSAidjNbbGJdIiBmb3IgYW55dGhpbmcgYmFzZWQgb24gYW4KKyAqIEFSTTYgb3IgQVJNNyBjb3Jl IGFuZCAiYXJtdjRbbGJdIiBmb3IgYW55dGhpbmcgYmFzZWQgb24gYSBTdHJvbmdBUk0tMQorICog Y29yZS4KKyAqLworI2RlZmluZSBFTEZfUExBVEZPUk1fU0laRSA4CisjZGVmaW5lIEVMRl9QTEFU Rk9STQkoZWxmX3BsYXRmb3JtKQorCitleHRlcm4gY2hhciBlbGZfcGxhdGZvcm1bXTsKKyNlbmRp ZgorCisvKgorICogVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSB3ZSBkb24ndCBsb2FkIHNvbWV0aGlu ZyBmb3IgdGhlIHdyb25nIGFyY2hpdGVjdHVyZS4KKyAqLworI2RlZmluZSBlbGZfY2hlY2tfYXJj aCh4KSAoKHgpLT5lX21hY2hpbmUgPT0gRU1fQVJNICYmIEVMRl9QUk9DX09LKHgpKQorCisvKgor ICogMzItYml0IGNvZGUgaXMgYWx3YXlzIE9LLiAgU29tZSBjcHVzIGNhbiBkbyAyNi1iaXQsIHNv bWUgY2FuJ3QuCisgKi8KKyNkZWZpbmUgRUxGX1BST0NfT0soeCkJKEVMRl9USFVNQl9PSyh4KSAm JiBFTEZfMjZCSVRfT0soeCkpCisKKyNkZWZpbmUgRUxGX1RIVU1CX09LKHgpIFwKKwkoKGVsZl9o d2NhcCAmIEhXQ0FQX1RIVU1CICYmICgoeCktPmVfZW50cnkgJiAxKSA9PSAxKSB8fCBcCisJICgo eCktPmVfZW50cnkgJiAzKSA9PSAwKQorCisjZGVmaW5lIEVMRl8yNkJJVF9PSyh4KSBcCisJKChl bGZfaHdjYXAgJiBIV0NBUF8yNkJJVCAmJiAoeCktPmVfZmxhZ3MgJiBFRl9BUk1fQVBDUzI2KSB8 fCBcCisJICAoKHgpLT5lX2ZsYWdzICYgRUZfQVJNX0FQQ1MyNikgPT0gMCkKKworI2RlZmluZSBV U0VfRUxGX0NPUkVfRFVNUAorI2RlZmluZSBFTEZfRVhFQ19QQUdFU0laRQk0MDk2CisKKy8qIFRo aXMgaXMgdGhlIGxvY2F0aW9uIHRoYXQgYW4gRVRfRFlOIHByb2dyYW0gaXMgbG9hZGVkIGlmIGV4 ZWMnZWQuICBUeXBpY2FsCisgICB1c2Ugb2YgdGhpcyBpcyB0byBpbnZva2UgIi4vbGQuc28gc29t ZXByb2ciIHRvIHRlc3Qgb3V0IGEgbmV3IHZlcnNpb24gb2YKKyAgIHRoZSBsb2FkZXIuICBXZSBu ZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIG91dCBvZiB0aGUgd2F5IG9mIHRoZSBwcm9ncmFt CisgICB0aGF0IGl0IHdpbGwgImV4ZWMiLCBhbmQgdGhhdCB0aGVyZSBpcyBzdWZmaWNpZW50IHJv b20gZm9yIHRoZSBicmsuICAqLworCisjZGVmaW5lIEVMRl9FVF9EWU5fQkFTRQkoMiAqIFRBU0tf U0laRSAvIDMpCisKKy8qIFdoZW4gdGhlIHByb2dyYW0gc3RhcnRzLCBhMSBjb250YWlucyBhIHBv aW50ZXIgdG8gYSBmdW5jdGlvbiB0byBiZSAKKyAgIHJlZ2lzdGVyZWQgd2l0aCBhdGV4aXQsIGFz IHBlciB0aGUgU1ZSNCBBQkkuICBBIHZhbHVlIG9mIDAgbWVhbnMgd2UgCisgICBoYXZlIG5vIHN1 Y2ggaGFuZGxlci4gICovCisjZGVmaW5lIEVMRl9QTEFUX0lOSVQoX3IsIGxvYWRfYWRkcikJKF9y KS0+QVJNX3IwID0gMAorCisvKgorICogU2luY2UgdGhlIEZQQSBjb3Byb2Nlc3NvciB1c2VzIENQ MSBhbmQgQ1AyLCBhbmQgaVdNTVh0IHVzZXMgQ1AwCisgKiBhbmQgQ1AxLCB3ZSBvbmx5IGVuYWJs ZSBhY2Nlc3MgdG8gdGhlIGlXTU1YdCBjb3Byb2Nlc3NvciBpZiB0aGUKKyAqIGJpbmFyeSBpcyBF QUJJIG9yIHNvZnRmbG9hdCAoYW5kIHRodXMsIGd1YXJhbnRlZWQgbm90IHRvIHVzZQorICogRlBB IGluc3RydWN0aW9ucy4pCisgKi8KKyNkZWZpbmUgU0VUX1BFUlNPTkFMSVRZKGV4LCBpYmNzMikJ CQkJCVwKKwlkbyB7CQkJCQkJCQlcCisJCWlmICgoZXgpLmVfZmxhZ3MgJiBFRl9BUk1fQVBDUzI2 KSB7CQkJXAorCQkJc2V0X3BlcnNvbmFsaXR5KFBFUl9MSU5VWCk7CQkJXAorCQl9IGVsc2UgewkJ CQkJCVwKKwkJCXNldF9wZXJzb25hbGl0eShQRVJfTElOVVhfMzJCSVQpOwkJXAorCQkJaWYgKGVs Zl9od2NhcCAmIEhXQ0FQX0lXTU1YVCAmJiAoZXgpLmVfZmxhZ3MgJiAoRUZfQVJNX0VBQklfTUFT SyB8IEVGX0FSTV9TT0ZUX0ZMT0FUKSkgXAorCQkJCXNldF90aHJlYWRfZmxhZyhUSUZfVVNJTkdf SVdNTVhUKTsJXAorCQkJZWxzZQkJCQkJCVwKKwkJCQljbGVhcl90aHJlYWRfZmxhZyhUSUZfVVNJ TkdfSVdNTVhUKTsJXAorCQl9CQkJCQkJCVwKKwl9IHdoaWxlICgwKQorCisjZW5kaWYKKworI2Vu ZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2VycmF0YS5oIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9lcnJhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi45NTI1ODIzCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9l cnJhdGEuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEx1Y2Fz IFN0YWNoLCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICog dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgZW5hYmxlX2Fy bV9lcnJhdGFfNzA5NzE4X3dhcih2b2lkKQoreworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkJ Im1yYwlwMTUsIDAsIHIwLCBjMTAsIGMyLCAwXG4iCisJCSJiaWMJcjAsICMzIDw8IDE2XG4iCisJ CSJtY3IJcDE1LCAwLCByMCwgYzEwLCBjMiwgMFxuIgorCQkibXJjCXAxNSwgMCwgcjAsIGMxLCBj MCwgMFxuIgorCQkib3JyCXIwLCByMCwgIzEgPDwgMjhcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBj MSwgYzAsIDBcbiIKKwkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZW5hYmxlX2FybV9lcnJh dGFfNzE2MDQ0X3dhcih2b2lkKQoreworCV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkJIm1yYwlw MTUsIDAsIHIwLCBjMSwgYzAsIDBcbiIKKwkJIm9ycglyMCwgcjAsICMxIDw8IDExXG4iCisJCSJt Y3IJcDE1LCAwLCByMCwgYzEsIGMwLCAwXG4iCisJKTsKK30KKworc3RhdGljIGlubGluZSB2b2lk IGVuYWJsZV9hcm1fZXJyYXRhXzc0MjIzMF93YXIodm9pZCkKK3sKKwlfX2FzbV9fIF9fdm9sYXRp bGVfXyAoCisJCSJtcmMJcDE1LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCQkib3JyCXIwLCByMCwg IzEgPDwgNFxuIgorCQkibWNyCXAxNSwgMCwgcjAsIGMxNSwgYzAsIDFcbiIKKwkpOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgZW5hYmxlX2FybV9lcnJhdGFfNzQzNjIyX3dhcih2b2lkKQorewor CV9fYXNtX18gX192b2xhdGlsZV9fICgKKwkJIm1yYwlwMTUsIDAsIHIwLCBjMTUsIGMwLCAxXG4i CisJCSJvcnIJcjAsIHIwLCAjMSA8PCA2XG4iCisJCSJtY3IJcDE1LCAwLCByMCwgYzE1LCBjMCwg MVxuIgorCSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFibGVfYXJtX2VycmF0YV83NTE0 NzJfd2FyKHZvaWQpCit7CisJX19hc21fXyBfX3ZvbGF0aWxlX18gKAorCQkibXJjCXAxNSwgMCwg cjAsIGMxNSwgYzAsIDFcbiIKKwkJIm9ycglyMCwgcjAsICMxIDw8IDExXG4iCisJCSJtY3IJcDE1 LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBlbmFi bGVfYXJtX2VycmF0YV83NjEzMjBfd2FyKHZvaWQpCit7CisJX19hc21fXyBfX3ZvbGF0aWxlX18g KAorCQkibXJjCXAxNSwgMCwgcjAsIGMxNSwgYzAsIDFcbiIKKwkJIm9ycglyMCwgcjAsICMxIDw8 IDIxXG4iCisJCSJtY3IJcDE1LCAwLCByMCwgYzE1LCBjMCwgMVxuIgorCSk7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBlbmFibGVfYXJtX2VycmF0YV83OTQwNzJfd2FyKHZvaWQpCit7CisJX19h c21fXyBfX3ZvbGF0aWxlX18gKAorCQkibXJjCXAxNSwgMCwgcjAsIGMxNSwgYzAsIDFcbiIKKwkJ Im9ycglyMCwgcjAsICMxIDw8IDRcbiIKKwkJIm1jcglwMTUsIDAsIHIwLCBjMTUsIGMwLCAxXG4i CisJKTsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vZ2ljLmggYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL2dpYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM3YzE3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2dp Yy5oCkBAIC0wLDAgKzEsMTI4IEBACisjaWZuZGVmIF9fR0lDX0hfXworI2RlZmluZSBfX0dJQ19I X18KKworLyogR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciBEZWZpbml0aW9ucyAqLworLy8j aWZkZWYgQ09ORklHX0dJQ1YzCisvLyNkZWZpbmUgR0lDRF9CQVNFICAgICAgICAgICAgICAgICAg ICAgICAoMHgyZjAwMDAwMCkKKy8vI2RlZmluZSBHSUNSX0JBU0UgICAgICAgICAgICAgICAgICAg ICAgICgweDJmMTAwMDAwKQorLy8jZWxzZQorCisvLyNpZiBkZWZpbmVkKENPTkZJR19UQVJHRVRf VkVYUFJFU1M2NF9CQVNFX0ZWUCkgfHwgXAorICAgICAgICBkZWZpbmVkKENPTkZJR19UQVJHRVRf VkVYUFJFU1M2NF9CQVNFX0ZWUF9EUkFNKQorLy8jZGVmaW5lIEdJQ0RfQkFTRSAgICAgICAgICAg ICAgICAgICAgICAgKDB4MmYwMDAwMDApCisvLyNkZWZpbmUgR0lDQ19CQVNFICAgICAgICAgICAg ICAgICAgICAgICAoMHgyYzAwMDAwMCkKKy8vI2VsaWYgQ09ORklHX1RBUkdFVF9WRVhQUkVTUzY0 X0pVTk8KKyNkZWZpbmUgR0lDX0RJU1RfQkFTRSAgICAgICAgICAgICAgICAgICAgICAgKDB4MkMw MTAwMDApCisjZGVmaW5lIEdJQ19DUFVfQkFTRSAgICAgICAgICAgICAgICAgICAgICAgKDB4MkMw MmYwMDApCisvLyNlbHNlCisvLyNlcnJvciAiVW5rbm93biBib2FyZCB2YXJpYW50IgorLy8jZW5k aWYKKy8vI2VuZGlmIC8qICFDT05GSUdfR0lDVjMgKi8KKworLyogUmVnaXN0ZXIgb2Zmc2V0cyBm b3IgdGhlIEFSTSBnZW5lcmljIGludGVycnVwdCBjb250cm9sbGVyIChHSUMpICovCisKKyNkZWZp bmUgR0lDX0RJU1RfT0ZGU0VUCQkweDEwMDAKKyNkZWZpbmUgR0lDX0NQVV9PRkZTRVRfQTkJMHgw MTAwCisjZGVmaW5lIEdJQ19DUFVfT0ZGU0VUX0ExNQkweDIwMDAKKworLyogRGlzdHJpYnV0b3Ig UmVnaXN0ZXJzICovCisjZGVmaW5lIEdJQ0RfQ1RMUgkJMHgwMDAwCisjZGVmaW5lIEdJQ0RfVFlQ RVIJCTB4MDAwNAorI2RlZmluZSBHSUNEX0lJRFIJCTB4MDAwOAorI2RlZmluZSBHSUNEX1NUQVRV U1IJCTB4MDAxMAorI2RlZmluZSBHSUNEX1NFVFNQSV9OU1IJCTB4MDA0MAorI2RlZmluZSBHSUNE X0NMUlNQSV9OU1IJCTB4MDA0OAorI2RlZmluZSBHSUNEX1NFVFNQSV9TUgkJMHgwMDUwCisjZGVm aW5lIEdJQ0RfQ0xSU1BJX1NSCQkweDAwNTgKKyNkZWZpbmUgR0lDRF9TRUlSCQkweDAwNjgKKyNk ZWZpbmUgR0lDRF9JR1JPVVBSbgkJMHgwMDgwCisjZGVmaW5lIEdJQ0RfSVNFTkFCTEVSbgkJMHgw MTAwCisjZGVmaW5lIEdJQ0RfSUNFTkFCTEVSbgkJMHgwMTgwCisjZGVmaW5lIEdJQ0RfSVNQRU5E Um4JCTB4MDIwMAorI2RlZmluZSBHSUNEX0lDUEVORFJuCQkweDAyODAKKyNkZWZpbmUgR0lDRF9J U0FDVElWRVJuCQkweDAzMDAKKyNkZWZpbmUgR0lDRF9JQ0FDVElWRVJuCQkweDAzODAKKyNkZWZp bmUgR0lDRF9JUFJJT1JJVFlSbgkweDA0MDAKKyNkZWZpbmUgR0lDRF9JVEFSR0VUU1JuCQkweDA4 MDAKKyNkZWZpbmUgR0lDRF9JQ0ZHUgkJMHgwYzAwCisjZGVmaW5lIEdJQ0RfSUdST1VQTU9EUm4J MHgwZDAwCisjZGVmaW5lIEdJQ0RfTlNBQ1JuCQkweDBlMDAKKyNkZWZpbmUgR0lDRF9TR0lSCQkw eDBmMDAKKyNkZWZpbmUgR0lDRF9DUEVORFNHSVJuCQkweDBmMTAKKyNkZWZpbmUgR0lDRF9TUEVO RFNHSVJuCQkweDBmMjAKKyNkZWZpbmUgR0lDRF9JUk9VVEVSbgkJMHg2MDAwCisKKy8qIENwdSBJ bnRlcmZhY2UgTWVtb3J5IE1hcHBlZCBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgR0lDQ19DVExSCQkw eDAwMDAKKyNkZWZpbmUgR0lDQ19QTVIJCTB4MDAwNAorI2RlZmluZSBHSUNDX0JQUgkJMHgwMDA4 CisjZGVmaW5lIEdJQ0NfSUFSCQkweDAwMEMKKyNkZWZpbmUgR0lDQ19FT0lSCQkweDAwMTAKKyNk ZWZpbmUgR0lDQ19SUFIJCTB4MDAxNAorI2RlZmluZSBHSUNDX0hQUElSCQkweDAwMTgKKyNkZWZp bmUgR0lDQ19BQlBSCQkweDAwMWMKKyNkZWZpbmUgR0lDQ19BSUFSCQkweDAwMjAKKyNkZWZpbmUg R0lDQ19BRU9JUgkJMHgwMDI0CisjZGVmaW5lIEdJQ0NfQUhQUElSCQkweDAwMjgKKyNkZWZpbmUg R0lDQ19BUFJuCQkweDAwZDAKKyNkZWZpbmUgR0lDQ19OU0FQUm4JCTB4MDBlMAorI2RlZmluZSBH SUNDX0lJRFIJCTB4MDBmYworI2RlZmluZSBHSUNDX0RJUgkJMHgxMDAwCisKKy8qIFJlRGlzdHJp YnV0b3IgUmVnaXN0ZXJzIGZvciBDb250cm9sIGFuZCBQaHlzaWNhbCBMUElzICovCisjZGVmaW5l IEdJQ1JfQ1RMUgkJMHgwMDAwCisjZGVmaW5lIEdJQ1JfSUlEUgkJMHgwMDA0CisjZGVmaW5lIEdJ Q1JfVFlQRVIJCTB4MDAwOAorI2RlZmluZSBHSUNSX1NUQVRVU1IJCTB4MDAxMAorI2RlZmluZSBH SUNSX1dBS0VSCQkweDAwMTQKKyNkZWZpbmUgR0lDUl9TRVRMUElSCQkweDAwNDAKKyNkZWZpbmUg R0lDUl9DTFJMUElSCQkweDAwNDgKKyNkZWZpbmUgR0lDUl9TRUlSCQkweDAwNjgKKyNkZWZpbmUg R0lDUl9QUk9QQkFTRVIJCTB4MDA3MAorI2RlZmluZSBHSUNSX1BFTkRCQVNFUgkJMHgwMDc4Cisj ZGVmaW5lIEdJQ1JfSU5WTFBJUgkJMHgwMGEwCisjZGVmaW5lIEdJQ1JfSU5WQUxMUgkJMHgwMGIw CisjZGVmaW5lIEdJQ1JfU1lOQ1IJCTB4MDBjMAorI2RlZmluZSBHSUNSX01PVkxQSVIJCTB4MDEw MAorI2RlZmluZSBHSUNSX01PVkFMTFIJCTB4MDExMAorCisvKiBSZURpc3RyaWJ1dG9yIFJlZ2lz dGVycyBmb3IgU0dJcyBhbmQgUFBJcyAqLworI2RlZmluZSBHSUNSX0lHUk9VUFJuCQkweDAwODAK KyNkZWZpbmUgR0lDUl9JU0VOQUJMRVJuCQkweDAxMDAKKyNkZWZpbmUgR0lDUl9JQ0VOQUJMRVJu CQkweDAxODAKKyNkZWZpbmUgR0lDUl9JU1BFTkRSbgkJMHgwMjAwCisjZGVmaW5lIEdJQ1JfSUNQ RU5EUm4JCTB4MDI4MAorI2RlZmluZSBHSUNSX0lTQUNUSVZFUm4JCTB4MDMwMAorI2RlZmluZSBH SUNSX0lDQUNUSVZFUm4JCTB4MDM4MAorI2RlZmluZSBHSUNSX0lQUklPUklUWVJuCTB4MDQwMAor I2RlZmluZSBHSUNSX0lDRkdSMAkJMHgwYzAwCisjZGVmaW5lIEdJQ1JfSUNGR1IxCQkweDBjMDQK KyNkZWZpbmUgR0lDUl9JR1JPVVBNT0RSbgkweDBkMDAKKyNkZWZpbmUgR0lDUl9OU0FDUm4JCTB4 MGUwMAorCisvKiBDcHUgSW50ZXJmYWNlIFN5c3RlbSBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgSUND X0lBUjBfRUwxCQlTM18wX0MxMl9DOF8wCisjZGVmaW5lIElDQ19JQVIxX0VMMQkJUzNfMF9DMTJf QzEyXzAKKyNkZWZpbmUgSUNDX0VPSVIwX0VMMQkJUzNfMF9DMTJfQzhfMQorI2RlZmluZSBJQ0Nf RU9JUjFfRUwxCQlTM18wX0MxMl9DMTJfMQorI2RlZmluZSBJQ0NfSFBQSVIwX0VMMQkJUzNfMF9D MTJfQzhfMgorI2RlZmluZSBJQ0NfSFBQSVIxX0VMMQkJUzNfMF9DMTJfQzEyXzIKKyNkZWZpbmUg SUNDX0JQUjBfRUwxCQlTM18wX0MxMl9DOF8zCisjZGVmaW5lIElDQ19CUFIxX0VMMQkJUzNfMF9D MTJfQzEyXzMKKyNkZWZpbmUgSUNDX0RJUl9FTDEJCVMzXzBfQzEyX0MxMV8xCisjZGVmaW5lIElD Q19QTVJfRUwxCQlTM18wX0M0X0M2XzAKKyNkZWZpbmUgSUNDX1JQUl9FTDEJCVMzXzBfQzEyX0Mx MV8zCisjZGVmaW5lIElDQ19DVExSX0VMMQkJUzNfMF9DMTJfQzEyXzQKKyNkZWZpbmUgSUNDX0NU TFJfRUwzCQlTM182X0MxMl9DMTJfNAorI2RlZmluZSBJQ0NfU1JFX0VMMQkJUzNfMF9DMTJfQzEy XzUKKyNkZWZpbmUgSUNDX1NSRV9FTDIJCVMzXzRfQzEyX0M5XzUKKyNkZWZpbmUgSUNDX1NSRV9F TDMJCVMzXzZfQzEyX0MxMl81CisjZGVmaW5lIElDQ19JR1JQRU4wX0VMMQkJUzNfMF9DMTJfQzEy XzYKKyNkZWZpbmUgSUNDX0lHUlBFTjFfRUwxCQlTM18wX0MxMl9DMTJfNworI2RlZmluZSBJQ0Nf SUdSUEVOMV9FTDMJCVMzXzZfQzEyX0MxMl83CisjZGVmaW5lIElDQ19TRUlFTl9FTDEJCVMzXzBf QzEyX0MxM18wCisjZGVmaW5lIElDQ19TR0kwUl9FTDEJCVMzXzBfQzEyX0MxMV83CisjZGVmaW5l IElDQ19TR0kxUl9FTDEJCVMzXzBfQzEyX0MxMV81CisjZGVmaW5lIElDQ19BU0dJMVJfRUwxCQlT M18wX0MxMl9DMTFfNgorCisjZW5kaWYgLyogX19HSUNfSF9fICovCmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL2hhcmR3YXJlL2FybV90aW1lci5oIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9oYXJkd2FyZS9hcm1fdGltZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi44YTU4MzkwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9oYXJkd2FyZS9hcm1fdGltZXIuaApAQCAtMCwwICsxLDM4IEBACisjaWZuZGVmIF9fQVNNX0FS TV9IQVJEV0FSRV9BUk1fVElNRVJfSAorI2RlZmluZSBfX0FTTV9BUk1fSEFSRFdBUkVfQVJNX1RJ TUVSX0gKKworLyoKKyAqIEZyb20gTGludXggdjIuNi4zNQorICogYXJjaC9hcm0vaW5jbHVkZS9h c20vaGFyZHdhcmUvYXJtX3RpbWVyLmgKKyAqCisgKiBBUk0gdGltZXIgaW1wbGVtZW50YXRpb24s IGZvdW5kIGluIEludGVncmF0b3IsIFZlcnNhdGlsZSBhbmQgUmVhbHZpZXcKKyAqIHBsYXRmb3Jt cy4gIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgYWxsIHJlZ2lzdGVycyBhbmQgYml0cyBpbiB0 aGVzZQorICogcmVnaXN0ZXJzLCBzbyB3ZSBtYXJrIHRoZW0gd2l0aCBBIGZvciBJbnRlZ3JhdG9y IEFQLCBDIGZvciBJbnRlZ3JhdG9yCisgKiBDUCwgViBmb3IgVmVyc2F0aWxlIGFuZCBSIGZvciBS ZWFsdmlldy4KKyAqCisgKiBJbnRlZ3JhdG9yIEFQIGhhcyAxNi1iaXQgdGltZXJzLCBJbnRlZ3Jh dG9yIENQLCBWZXJzYXRpbGUgYW5kIFJlYWx2aWV3CisgKiBjYW4gaGF2ZSAxNi1iaXQgb3IgMzIt Yml0IHNlbGVjdGFibGUgdmlhIGEgYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgorICoKKyAq IEV2ZXJ5IFNQODA0IGNvbnRhaW5zIHR3byBpZGVudGljYWwgdGltZXJzLgorICovCisjZGVmaW5l IFRJTUVSXzFfQkFTRQkweDAwCisjZGVmaW5lIFRJTUVSXzJfQkFTRQkweDIwCisKKyNkZWZpbmUg VElNRVJfTE9BRAkweDAwCQkJLyogQUNWUiBydyAqLworI2RlZmluZSBUSU1FUl9WQUxVRQkweDA0 CQkJLyogQUNWUiBybyAqLworI2RlZmluZSBUSU1FUl9DVFJMCTB4MDgJCQkvKiBBQ1ZSIHJ3ICov CisjZGVmaW5lIFRJTUVSX0NUUkxfT05FU0hPVAkoMSA8PCAwKQkvKiAgQ1ZSICovCisjZGVmaW5l IFRJTUVSX0NUUkxfMzJCSVQJKDEgPDwgMSkJLyogIENWUiAqLworI2RlZmluZSBUSU1FUl9DVFJM X0RJVjEJCSgwIDw8IDIpCS8qIEFDVlIgKi8KKyNkZWZpbmUgVElNRVJfQ1RSTF9ESVYxNgkoMSA8 PCAyKQkvKiBBQ1ZSICovCisjZGVmaW5lIFRJTUVSX0NUUkxfRElWMjU2CSgyIDw8IDIpCS8qIEFD VlIgKi8KKyNkZWZpbmUgVElNRVJfQ1RSTF9JRQkJKDEgPDwgNSkJLyogICBWUiAqLworI2RlZmlu ZSBUSU1FUl9DVFJMX1BFUklPRElDCSgxIDw8IDYpCS8qIEFDVlIgKi8KKyNkZWZpbmUgVElNRVJf Q1RSTF9FTkFCTEUJKDEgPDwgNykJLyogQUNWUiAqLworCisjZGVmaW5lIFRJTUVSX0lOVENMUgkw eDBjCQkJLyogQUNWUiB3byAqLworI2RlZmluZSBUSU1FUl9SSVMJMHgxMAkJCS8qICBDVlIgcm8g Ki8KKyNkZWZpbmUgVElNRVJfTUlTCTB4MTQJCQkvKiAgQ1ZSIHJvICovCisjZGVmaW5lIFRJTUVS X0JHTE9BRAkweDE4CQkJLyogIENWUiBydyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vaGFyZHdhcmUvc3A4MTAuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vaGFyZHdhcmUvc3A4MTAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z ZTM5OTZhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9oYXJkd2Fy ZS9zcDgxMC5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBhcmNoL2FybS9pbmNsdWRlL2FzbS9o YXJkd2FyZS9zcDgxMC5oCisgKgorICogQVJNIFByaW1lWHN5cyBTeXN0ZW0gQ29udHJvbGxlciBT UDgxMCBoZWFkZXIgZmlsZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBTVCBNaWNyb2VsZWN0 cm9uaWNzCisgKiBWaXJlc2ggS3VtYXIgPHZpcmVzaC5saW51eEBnbWFpbC5jb20+CisgKgorICog VGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJh cyBpcyIgd2l0aG91dCBhbnkKKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVyIGV4cHJl c3Mgb3IgaW1wbGllZC4KKyAqLworCisjaWZuZGVmIF9fQVNNX0FSTV9TUDgxMF9ICisjZGVmaW5l IF9fQVNNX0FSTV9TUDgxMF9ICisKKyNpbmNsdWRlIDxpby5oPgorCisvKiBzeXNjdGwgcmVnaXN0 ZXJzIG9mZnNldCAqLworI2RlZmluZSBTQ0NUUkwJCQkweDAwMAorI2RlZmluZSBTQ1NZU1NUQVQJ CTB4MDA0CisjZGVmaW5lIFNDSU1DVFJMCQkweDAwOAorI2RlZmluZSBTQ0lNU1RBVAkJMHgwMEMK KyNkZWZpbmUgU0NYVEFMQ1RSTAkJMHgwMTAKKyNkZWZpbmUgU0NQTExDVFJMCQkweDAxNAorI2Rl ZmluZSBTQ1BMTEZDVFJMCQkweDAxOAorI2RlZmluZSBTQ1BFUkNUUkwwCQkweDAxQworI2RlZmlu ZSBTQ1BFUkNUUkwxCQkweDAyMAorI2RlZmluZSBTQ1BFUkVOCQkJMHgwMjQKKyNkZWZpbmUgU0NQ RVJESVMJCTB4MDI4CisjZGVmaW5lIFNDUEVSQ0xLRU4JCTB4MDJDCisjZGVmaW5lIFNDUEVSU1RB VAkJMHgwMzAKKyNkZWZpbmUgU0NTWVNJRDAJCTB4RUUwCisjZGVmaW5lIFNDU1lTSUQxCQkweEVF NAorI2RlZmluZSBTQ1NZU0lEMgkJMHhFRTgKKyNkZWZpbmUgU0NTWVNJRDMJCTB4RUVDCisjZGVm aW5lIFNDSVRDUgkJCTB4RjAwCisjZGVmaW5lIFNDSVRJUjAJCQkweEYwNAorI2RlZmluZSBTQ0lU SVIxCQkJMHhGMDgKKyNkZWZpbmUgU0NJVE9SCQkJMHhGMEMKKyNkZWZpbmUgU0NDTlRDVFJMCQkw eEYxMAorI2RlZmluZSBTQ0NOVERBVEEJCTB4RjE0CisjZGVmaW5lIFNDQ05UU1RFUAkJMHhGMTgK KyNkZWZpbmUgU0NQRVJJUEhJRDAJCTB4RkUwCisjZGVmaW5lIFNDUEVSSVBISUQxCQkweEZFNAor I2RlZmluZSBTQ1BFUklQSElEMgkJMHhGRTgKKyNkZWZpbmUgU0NQRVJJUEhJRDMJCTB4RkVDCisj ZGVmaW5lIFNDUENFTExJRDAJCTB4RkYwCisjZGVmaW5lIFNDUENFTExJRDEJCTB4RkY0CisjZGVm aW5lIFNDUENFTExJRDIJCTB4RkY4CisjZGVmaW5lIFNDUENFTExJRDMJCTB4RkZDCisKKyNkZWZp bmUgU0NDVFJMX1RJTUVSRU4wU0VMX1JFRkNMSwkoMCA8PCAxNSkKKyNkZWZpbmUgU0NDVFJMX1RJ TUVSRU4wU0VMX1RJTUNMSwkoMSA8PCAxNSkKKworI2RlZmluZSBTQ0NUUkxfVElNRVJFTjFTRUxf UkVGQ0xLCSgwIDw8IDE3KQorI2RlZmluZSBTQ0NUUkxfVElNRVJFTjFTRUxfVElNQ0xLCSgxIDw8 IDE3KQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3lzY3RsX3NvZnRfcmVzZXQodm9pZCBfX2lvbWVt ICpiYXNlKQoreworCS8qIHN3aXRjaCB0byBzbG93IG1vZGUgKi8KKwl3cml0ZWwoMHgyLCBiYXNl ICsgU0NDVFJMKTsKKworCS8qIHdyaXRpbmcgYW55IHZhbHVlIHRvIFNDU1lTU1RBVCByZWcgd2ls bCByZXNldCBzeXN0ZW0gKi8KKwl3cml0ZWwoMCwgYmFzZSArIFNDU1lTU1RBVCk7Cit9CisKKyNl bmRpZgkvKiBfX0FTTV9BUk1fU1A4MTBfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9pby5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9pby5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYmYwOTMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL2lvLmgKQEAgLTAsMCArMSw4NyBAQAorI2lmbmRlZiBfX0FTTV9BUk1f SU9fSAorI2RlZmluZSBfX0FTTV9BUk1fSU9fSAorCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvaW8u aD4KKworI2RlZmluZQlJT19TUEFDRV9MSU1JVAkwCisKKy8qCisgKiBTdHJpbmcgdmVyc2lvbiBv ZiBJTyBtZW1vcnkgYWNjZXNzIG9wczoKKyAqLworZXh0ZXJuIHZvaWQgbWVtY3B5X2Zyb21pbyh2 b2lkICosIGNvbnN0IHZvbGF0aWxlIHZvaWQgX19pb21lbSAqLCBzaXplX3QpOworZXh0ZXJuIHZv aWQgbWVtY3B5X3RvaW8odm9sYXRpbGUgdm9pZCBfX2lvbWVtICosIGNvbnN0IHZvaWQgKiwgc2l6 ZV90KTsKK2V4dGVybiB2b2lkIG1lbXNldF9pbyh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKiwgaW50 LCBzaXplX3QpOworCisvKgorICogQ2xlYXIgYW5kIHNldCBiaXRzIGluIG9uZSBzaG90LiBUaGVz ZSBtYWNyb3MgY2FuIGJlIHVzZWQgdG8gY2xlYXIgYW5kCisgKiBzZXQgbXVsdGlwbGUgYml0cyBp biBhIHJlZ2lzdGVyIHVzaW5nIGEgc2luZ2xlIGNhbGwuIFRoZXNlIG1hY3JvcyBjYW4KKyAqIGFs c28gYmUgdXNlZCB0byBzZXQgYSBtdWx0aXBsZS1iaXQgYml0IHBhdHRlcm4gdXNpbmcgYSBtYXNr LCBieQorICogc3BlY2lmeWluZyB0aGUgbWFzayBpbiB0aGUgJ2NsZWFyJyBwYXJhbWV0ZXIgYW5k IHRoZSBuZXcgYml0IHBhdHRlcm4KKyAqIGluIHRoZSAnc2V0JyBwYXJhbWV0ZXIuCisgKi8KKwor I2RlZmluZSBvdXRfYXJjaCh0eXBlLGVuZGlhbixhLHYpCV9fcmF3X3dyaXRlIyN0eXBlKGNwdV90 b18jI2VuZGlhbih2KSxhKQorI2RlZmluZSBpbl9hcmNoKHR5cGUsZW5kaWFuLGEpCQllbmRpYW4j I190b19jcHUoX19yYXdfcmVhZCMjdHlwZShhKSkKKworI2RlZmluZSBvdXRfbGU2NChhLHYpCW91 dF9hcmNoKHEsbGU2NCxhLHYpCisjZGVmaW5lIG91dF9sZTMyKGEsdikJb3V0X2FyY2gobCxsZTMy LGEsdikKKyNkZWZpbmUgb3V0X2xlMTYoYSx2KQlvdXRfYXJjaCh3LGxlMTYsYSx2KQorCisjZGVm aW5lIGluX2xlNjQoYSkJaW5fYXJjaChxLGxlNjQsYSkKKyNkZWZpbmUgaW5fbGUzMihhKQlpbl9h cmNoKGwsbGUzMixhKQorI2RlZmluZSBpbl9sZTE2KGEpCWluX2FyY2godyxsZTE2LGEpCisKKyNk ZWZpbmUgb3V0X2JlMzIoYSx2KQlvdXRfYXJjaChsLGJlMzIsYSx2KQorI2RlZmluZSBvdXRfYmUx NihhLHYpCW91dF9hcmNoKHcsYmUxNixhLHYpCisKKyNkZWZpbmUgaW5fYmUzMihhKQlpbl9hcmNo KGwsYmUzMixhKQorI2RlZmluZSBpbl9iZTE2KGEpCWluX2FyY2godyxiZTE2LGEpCisKKyNkZWZp bmUgb3V0XzgoYSx2KQlfX3Jhd193cml0ZWIodixhKQorI2RlZmluZSBpbl84KGEpCQlfX3Jhd19y ZWFkYihhKQorCisjZGVmaW5lIGNscmJpdHModHlwZSwgYWRkciwgY2xlYXIpIFwKKwlvdXRfIyN0 eXBlKChhZGRyKSwgaW5fIyN0eXBlKGFkZHIpICYgfihjbGVhcikpCisKKyNkZWZpbmUgc2V0Yml0 cyh0eXBlLCBhZGRyLCBzZXQpIFwKKwlvdXRfIyN0eXBlKChhZGRyKSwgaW5fIyN0eXBlKGFkZHIp IHwgKHNldCkpCisKKyNkZWZpbmUgY2xyc2V0Yml0cyh0eXBlLCBhZGRyLCBjbGVhciwgc2V0KSBc CisJb3V0XyMjdHlwZSgoYWRkciksIChpbl8jI3R5cGUoYWRkcikgJiB+KGNsZWFyKSkgfCAoc2V0 KSkKKworI2RlZmluZSBjbHJiaXRzX2JlMzIoYWRkciwgY2xlYXIpIGNscmJpdHMoYmUzMiwgYWRk ciwgY2xlYXIpCisjZGVmaW5lIHNldGJpdHNfYmUzMihhZGRyLCBzZXQpIHNldGJpdHMoYmUzMiwg YWRkciwgc2V0KQorI2RlZmluZSBjbHJzZXRiaXRzX2JlMzIoYWRkciwgY2xlYXIsIHNldCkgY2xy c2V0Yml0cyhiZTMyLCBhZGRyLCBjbGVhciwgc2V0KQorCisjZGVmaW5lIGNscmJpdHNfbGUzMihh ZGRyLCBjbGVhcikgY2xyYml0cyhsZTMyLCBhZGRyLCBjbGVhcikKKyNkZWZpbmUgc2V0Yml0c19s ZTMyKGFkZHIsIHNldCkgc2V0Yml0cyhsZTMyLCBhZGRyLCBzZXQpCisjZGVmaW5lIGNscnNldGJp dHNfbGUzMihhZGRyLCBjbGVhciwgc2V0KSBjbHJzZXRiaXRzKGxlMzIsIGFkZHIsIGNsZWFyLCBz ZXQpCisKKyNkZWZpbmUgY2xyYml0c19iZTE2KGFkZHIsIGNsZWFyKSBjbHJiaXRzKGJlMTYsIGFk ZHIsIGNsZWFyKQorI2RlZmluZSBzZXRiaXRzX2JlMTYoYWRkciwgc2V0KSBzZXRiaXRzKGJlMTYs IGFkZHIsIHNldCkKKyNkZWZpbmUgY2xyc2V0Yml0c19iZTE2KGFkZHIsIGNsZWFyLCBzZXQpIGNs cnNldGJpdHMoYmUxNiwgYWRkciwgY2xlYXIsIHNldCkKKworI2RlZmluZSBjbHJiaXRzX2xlMTYo YWRkciwgY2xlYXIpIGNscmJpdHMobGUxNiwgYWRkciwgY2xlYXIpCisjZGVmaW5lIHNldGJpdHNf bGUxNihhZGRyLCBzZXQpIHNldGJpdHMobGUxNiwgYWRkciwgc2V0KQorI2RlZmluZSBjbHJzZXRi aXRzX2xlMTYoYWRkciwgY2xlYXIsIHNldCkgY2xyc2V0Yml0cyhsZTE2LCBhZGRyLCBjbGVhciwg c2V0KQorCisjZGVmaW5lIGNscmJpdHNfOChhZGRyLCBjbGVhcikgY2xyYml0cyg4LCBhZGRyLCBj bGVhcikKKyNkZWZpbmUgc2V0Yml0c184KGFkZHIsIHNldCkgc2V0Yml0cyg4LCBhZGRyLCBzZXQp CisjZGVmaW5lIGNscnNldGJpdHNfOChhZGRyLCBjbGVhciwgc2V0KSBjbHJzZXRiaXRzKDgsIGFk ZHIsIGNsZWFyLCBzZXQpCisKKyNpZmRlZiBDT05GSUdfTU1VCit2b2lkICpwaHlzX3RvX3ZpcnQo dW5zaWduZWQgbG9uZyBwaHlzKTsKK3Vuc2lnbmVkIGxvbmcgdmlydF90b19waHlzKHZvbGF0aWxl IHZvaWQgKnZpcnQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCAqcGh5c190b192aXJ0KHVu c2lnbmVkIGxvbmcgcGh5cykKK3sKKwlyZXR1cm4gKHZvaWQgKilwaHlzOworfQorCitzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgdmlydF90b19waHlzKHZvbGF0aWxlIHZvaWQgKm1lbSkKK3sK KwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbWVtOworfQorI2VuZGlmCisKKyNlbmRpZgkvKiBfX0FT TV9BUk1fSU9fSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9saW5rYWdl LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2xpbmthZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41YTI1NjMyCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9saW5rYWdlLmgKQEAgLTAsMCArMSwxMSBAQAorI2lmbmRlZiBfX0FTTV9MSU5L QUdFX0gKKyNkZWZpbmUgX19BU01fTElOS0FHRV9ICisKKyNkZWZpbmUgX19BTElHTiAuYWxpZ24g MAorI2RlZmluZSBfX0FMSUdOX1NUUiAiLmFsaWduIDAiCisKKyNkZWZpbmUgRU5EUFJPQyhuYW1l KSBcCisgIC50eXBlIG5hbWUsICVmdW5jdGlvbjsgXAorICBFTkQobmFtZSkKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21lbW9yeS5oIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 MjExNGQwCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tZW1vcnku aApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIF9fQVNNX0FSTV9NRU1PUllfSAorI2RlZmluZSBf X0FTTV9BUk1fTUVNT1JZX0gKKworI2luY2x1ZGUgPG1lbW9yeS5oPgorCisjaW5jbHVkZSA8bGlu dXgvY29uc3QuaD4KKy8qCisgKiBBbGxvdyBmb3IgY29uc3RhbnRzIGRlZmluZWQgaGVyZSB0byBi ZSB1c2VkIGZyb20gYXNzZW1ibHkgY29kZQorICogYnkgcHJlcGVuZGluZyB0aGUgVUwgc3VmZml4 IG9ubHkgd2l0aCBhY3R1YWwgQyBjb2RlIGNvbXBpbGF0aW9uLgorICovCisjZGVmaW5lIFVMKHgp IF9BQyh4LCBVTCkKKworc3RhdGljIGlubGluZSB2b2lkIGFybV9hZGRfbWVtX2RldmljZShjb25z dCBjaGFyKiBuYW1lLCByZXNvdXJjZV9zaXplX3Qgc3RhcnQsCisJCQkJICAgIHJlc291cmNlX3Np emVfdCBzaXplKQoreworCWJhcmVib3hfYWRkX21lbW9yeV9iYW5rKG5hbWUsIHN0YXJ0LCBzaXpl KTsKK30KKworI2VuZGlmCS8qIF9fQVNNX0FSTV9NRU1PUllfSCAqLwpkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9pbmNsdWRlL2FzbS9tbXUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11LmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlNjU0NAotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vbW11LmgKQEAgLTAsMCArMSw2NSBAQAorI2lm bmRlZiBfX0FTTV9NTVVfSAorI2RlZmluZSBfX0FTTV9NTVVfSAorCisjaW5jbHVkZSA8Y29tbW9u Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDx4 ZnVuY3MuaD4KKworI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CisKKyNkZWZpbmUgUE1EX1NFQ1Rf REVGX1VOQ0FDSEVEIChQTURfU0VDVF9BUF9XUklURSB8IFBNRF9TRUNUX0FQX1JFQUQgfCBQTURf VFlQRV9TRUNUKQorI2RlZmluZSBQTURfU0VDVF9ERUZfQ0FDSEVEIChQTURfU0VDVF9XQiB8IFBN RF9TRUNUX0RFRl9VTkNBQ0hFRCkKKworc3RydWN0IGFybV9tZW1vcnk7CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBtbXVfZW5hYmxlKHZvaWQpCit7Cit9Cit2b2lkIG1tdV9kaXNhYmxlKHZvaWQpOwor c3RhdGljIGlubGluZSB2b2lkIGFybV9jcmVhdGVfc2VjdGlvbih1bnNpZ25lZCBsb25nIHZpcnQs IHVuc2lnbmVkIGxvbmcgcGh5cywgaW50IHNpemVfbSwKKwkJdW5zaWduZWQgaW50IGZsYWdzKQor eworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2V0dXBfZG1hX2NvaGVyZW50KHVuc2lnbmVkIGxv bmcgb2Zmc2V0KQoreworfQorCisjaWZkZWYgQ09ORklHX01NVQorI2RlZmluZSBBUkNIX0hBU19S RU1BUAorI2RlZmluZSBNQVBfQVJDSF9ERUZBVUxUIE1BUF9DQUNIRUQKK2ludCBhcmNoX3JlbWFw X3JhbmdlKHZvaWQgKl9zdGFydCwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIGZsYWdzKTsKK3ZvaWQg Km1hcF9pb19zZWN0aW9ucyh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLCB2b2lkICpzdGFydCwgc2l6 ZV90IHNpemUpOworI2Vsc2UKKyNkZWZpbmUgTUFQX0FSQ0hfREVGQVVMVCBNQVBfVU5DQUNIRUQK K3N0YXRpYyBpbmxpbmUgdm9pZCAqbWFwX2lvX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgcGh5cywg dm9pZCAqc3RhcnQsIHNpemVfdCBzaXplKQoreworCXJldHVybiAodm9pZCAqKXBoeXM7Cit9CisK KyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NBQ0hFX0wyWDAKK3ZvaWQgX19pbml0IGwyeDBfaW5p dCh2b2lkIF9faW9tZW0gKmJhc2UsIF9fdTMyIGF1eF92YWwsIF9fdTMyIGF1eF9tYXNrKTsKKyNl bHNlCitzdGF0aWMgaW5saW5lIHZvaWQgX19pbml0IGwyeDBfaW5pdCh2b2lkIF9faW9tZW0gKmJh c2UsIF9fdTMyIGF1eF92YWwsIF9fdTMyIGF1eF9tYXNrKQoreworfQorI2VuZGlmCisKK3N0cnVj dCBvdXRlcl9jYWNoZV9mbnMgeworCXZvaWQgKCppbnZfcmFuZ2UpKHVuc2lnbmVkIGxvbmcsIHVu c2lnbmVkIGxvbmcpOworCXZvaWQgKCpjbGVhbl9yYW5nZSkodW5zaWduZWQgbG9uZywgdW5zaWdu ZWQgbG9uZyk7CisJdm9pZCAoKmZsdXNoX3JhbmdlKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs b25nKTsKKwl2b2lkICgqZmx1c2hfYWxsKSh2b2lkKTsKKwl2b2lkICgqZGlzYWJsZSkodm9pZCk7 Cit9OworCitleHRlcm4gc3RydWN0IG91dGVyX2NhY2hlX2ZucyBvdXRlcl9jYWNoZTsKKwordm9p ZCBfX2RtYV9jbGVhbl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKK3ZvaWQg X19kbWFfZmx1c2hfcmFuZ2UodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7Cit2b2lkIF9f ZG1hX2ludl9yYW5nZSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKworI2VuZGlmIC8q IF9fQVNNX01NVV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL21vZHVs ZS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41YjRkMWEzCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9p bmNsdWRlL2FzbS9tb2R1bGUuaApAQCAtMCwwICsxLDEzIEBACisjaWZuZGVmIF9BU01fQVJNX01P RFVMRV9ICisjZGVmaW5lIF9BU01fQVJNX01PRFVMRV9ICisKK3N0cnVjdCBtb2RfYXJjaF9zcGVj aWZpYworeworCWludCBmb287Cit9OworCisjZGVmaW5lIEVsZl9TaGRyCUVsZjMyX1NoZHIKKyNk ZWZpbmUgRWxmX1N5bQkJRWxmMzJfU3ltCisjZGVmaW5lIEVsZl9FaGRyCUVsZjMyX0VoZHIKKwor I2VuZGlmIC8qIF9BU01fQVJNX01PRFVMRV9IICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3BndGFibGUuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMTUyMWQKLS0tIC9kZXYvbnVsbAor KysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3BndGFibGUuaApAQCAtMCwwICsxLDkwIEBACisv KgorICogIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3BndGFibGUtaHdkZWYuaAorICoKKyAqICBDb3B5 cmlnaHQgKEMpIDE5OTUtMjAwMiBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICovCisjaWZuZGVmIF9BU01BUk1fUEdUQUJMRV9IV0RFRl9ICisjZGVmaW5lIF9BU01BUk1fUEdU QUJMRV9IV0RFRl9ICisKKy8qCisgKiBIYXJkd2FyZSBwYWdlIHRhYmxlIGRlZmluaXRpb25zLgor ICoKKyAqICsgTGV2ZWwgMSBkZXNjcmlwdG9yIChQTUQpCisgKiAgIC0gY29tbW9uCisgKi8KKyNk ZWZpbmUgUE1EX1RZUEVfTUFTSwkJKDMgPDwgMCkKKyNkZWZpbmUgUE1EX1RZUEVfRkFVTFQJCSgw IDw8IDApCisjZGVmaW5lIFBNRF9UWVBFX1RBQkxFCQkoMSA8PCAwKQorI2RlZmluZSBQTURfVFlQ RV9TRUNUCQkoMiA8PCAwKQorI2RlZmluZSBQTURfQklUNAkJKDEgPDwgNCkKKyNkZWZpbmUgUE1E X0RPTUFJTih4KQkJKCh4KSA8PCA1KQorI2RlZmluZSBQTURfUFJPVEVDVElPTgkJKDEgPDwgOSkJ LyogdjUgKi8KKy8qCisgKiAgIC0gc2VjdGlvbgorICovCisjZGVmaW5lIFBNRF9TRUNUX0JVRkZF UkFCTEUJKDEgPDwgMikKKyNkZWZpbmUgUE1EX1NFQ1RfQ0FDSEVBQkxFCSgxIDw8IDMpCisjZGVm aW5lIFBNRF9TRUNUX1hOCQkoMSA8PCA0KQkvKiB2NiAqLworI2RlZmluZSBQTURfU0VDVF9BUF9X UklURQkoMSA8PCAxMCkKKyNkZWZpbmUgUE1EX1NFQ1RfQVBfUkVBRAkoMSA8PCAxMSkKKyNkZWZp bmUgUE1EX1NFQ1RfVEVYKHgpCQkoKHgpIDw8IDEyKQkvKiB2NSAqLworI2RlZmluZSBQTURfU0VD VF9BUFgJCSgxIDw8IDE1KQkvKiB2NiAqLworI2RlZmluZSBQTURfU0VDVF9TCQkoMSA8PCAxNikJ LyogdjYgKi8KKyNkZWZpbmUgUE1EX1NFQ1RfbkcJCSgxIDw8IDE3KQkvKiB2NiAqLworI2RlZmlu ZSBQTURfU0VDVF9TVVBFUgkJKDEgPDwgMTgpCS8qIHY2ICovCisKKyNkZWZpbmUgUE1EX1NFQ1Rf VU5DQUNIRUQJKDApCisjZGVmaW5lIFBNRF9TRUNUX0JVRkZFUkVECShQTURfU0VDVF9CVUZGRVJB QkxFKQorI2RlZmluZSBQTURfU0VDVF9XVAkJKFBNRF9TRUNUX0NBQ0hFQUJMRSkKKyNkZWZpbmUg UE1EX1NFQ1RfV0IJCShQTURfU0VDVF9DQUNIRUFCTEUgfCBQTURfU0VDVF9CVUZGRVJBQkxFKQor I2RlZmluZSBQTURfU0VDVF9NSU5JQ0FDSEUJKFBNRF9TRUNUX1RFWCgxKSB8IFBNRF9TRUNUX0NB Q0hFQUJMRSkKKyNkZWZpbmUgUE1EX1NFQ1RfV0JXQQkJKFBNRF9TRUNUX1RFWCgxKSB8IFBNRF9T RUNUX0NBQ0hFQUJMRSB8IFBNRF9TRUNUX0JVRkZFUkFCTEUpCisjZGVmaW5lIFBNRF9TRUNUX05P TlNIQVJFRF9ERVYJKFBNRF9TRUNUX1RFWCgyKSkKKworLyoKKyAqICAgLSBjb2Fyc2UgdGFibGUg KG5vdCB1c2VkKQorICovCisKKy8qCisgKiArIExldmVsIDIgZGVzY3JpcHRvciAoUFRFKQorICog ICAtIGNvbW1vbgorICovCisjZGVmaW5lIFBURV9UWVBFX01BU0sJCSgzIDw8IDApCisjZGVmaW5l IFBURV9UWVBFX0ZBVUxUCQkoMCA8PCAwKQorI2RlZmluZSBQVEVfVFlQRV9MQVJHRQkJKDEgPDwg MCkKKyNkZWZpbmUgUFRFX1RZUEVfU01BTEwJCSgyIDw8IDApCisjZGVmaW5lIFBURV9UWVBFX0VY VAkJKDMgPDwgMCkJLyogdjUgKi8KKyNkZWZpbmUgUFRFX0JVRkZFUkFCTEUJCSgxIDw8IDIpCisj ZGVmaW5lIFBURV9DQUNIRUFCTEUJCSgxIDw8IDMpCisKKy8qCisgKiAgIC0gZXh0ZW5kZWQgc21h bGwgcGFnZS90aW55IHBhZ2UKKyAqLworI2RlZmluZSBQVEVfRVhUX1hOCQkoMSA8PCAwKQkvKiB2 NiAqLworI2RlZmluZSBQVEVfRVhUX0FQX01BU0sJCSgzIDw8IDQpCisjZGVmaW5lIFBURV9FWFRf QVAwCQkoMSA8PCA0KQorI2RlZmluZSBQVEVfRVhUX0FQMQkJKDIgPDwgNCkKKyNkZWZpbmUgUFRF X0VYVF9BUF9VTk9fU1JPCSgwIDw8IDQpCisjZGVmaW5lIFBURV9FWFRfQVBfVU5PX1NSVwkoUFRF X0VYVF9BUDApCisjZGVmaW5lIFBURV9FWFRfQVBfVVJPX1NSVwkoUFRFX0VYVF9BUDEpCisjZGVm aW5lIFBURV9FWFRfQVBfVVJXX1NSVwkoUFRFX0VYVF9BUDF8UFRFX0VYVF9BUDApCisjZGVmaW5l IFBURV9FWFRfVEVYKHgpCQkoKHgpIDw8IDYpCS8qIHY1ICovCisjZGVmaW5lIFBURV9FWFRfQVBY CQkoMSA8PCA5KQkvKiB2NiAqLworI2RlZmluZSBQVEVfRVhUX0NPSEVSRU5UCSgxIDw8IDkpCS8q IFhTY2FsZTMgKi8KKyNkZWZpbmUgUFRFX0VYVF9TSEFSRUQJCSgxIDw8IDEwKQkvKiB2NiAqLwor I2RlZmluZSBQVEVfRVhUX05HCQkoMSA8PCAxMSkJLyogdjYgKi8KKworLyoKKyAqICAgLSBzbWFs bCBwYWdlCisgKi8KKyNkZWZpbmUgUFRFX1NNQUxMX0FQX01BU0sJKDB4ZmYgPDwgNCkKKyNkZWZp bmUgUFRFX1NNQUxMX0FQX1VOT19TUk8JKDB4MDAgPDwgNCkKKyNkZWZpbmUgUFRFX1NNQUxMX0FQ X1VOT19TUlcJKDB4NTUgPDwgNCkKKyNkZWZpbmUgUFRFX1NNQUxMX0FQX1VST19TUlcJKDB4YWEg PDwgNCkKKyNkZWZpbmUgUFRFX1NNQUxMX0FQX1VSV19TUlcJKDB4ZmYgPDwgNCkKKworI2VuZGlm CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmggYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMjJjYWU2MgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vcG9zaXhfdHlwZXMuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8YXNtLWdlbmVyaWMv cG9zaXhfdHlwZXMuaD4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZGJhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogIGxp bnV4L2luY2x1ZGUvYXNtLWFybS9wcm9jZXNzb3IuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5 OTUtMjAwMiBSdXNzZWxsIEtpbmcKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAq IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5k ZWYgX19BU01fQVJNX1BST0NFU1NPUl9ICisjZGVmaW5lIF9fQVNNX0FSTV9QUk9DRVNTT1JfSAor CisvKgorICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBtYWNybyB0aGF0IHJldHVybnMgY3Vy cmVudAorICogaW5zdHJ1Y3Rpb24gcG9pbnRlciAoInByb2dyYW0gY291bnRlciIpLgorICovCisj ZGVmaW5lIGN1cnJlbnRfdGV4dF9hZGRyKCkgKHsgX19sYWJlbF9fIF9sOyBfbDogJiZfbDt9KQor CisjZGVmaW5lIEZQX1NJWkUgMzUKKworc3RydWN0IGZwX2hhcmRfc3RydWN0IHsKKwl1bnNpZ25l ZCBpbnQgc2F2ZVtGUF9TSVpFXTsJCS8qIGFzIHlldCB1bmRlZmluZWQgKi8KK307CisKK3N0cnVj dCBmcF9zb2Z0X3N0cnVjdCB7CisJdW5zaWduZWQgaW50IHNhdmVbRlBfU0laRV07CQkvKiB1bmRl ZmluZWQgaW5mb3JtYXRpb24gKi8KK307CisKK3VuaW9uIGZwX3N0YXRlIHsKKwlzdHJ1Y3QgZnBf aGFyZF9zdHJ1Y3QJaGFyZDsKKwlzdHJ1Y3QgZnBfc29mdF9zdHJ1Y3QJc29mdDsKK307CisKK3R5 cGVkZWYgdW5zaWduZWQgbG9uZyBtbV9zZWdtZW50X3Q7CQkvKiBkb21haW4gcmVnaXN0ZXIJKi8K KworI2lmZGVmIF9fS0VSTkVMX18KKworI2RlZmluZSBFSVNBX2J1cyAwCisjZGVmaW5lIE1DQV9i dXMgMAorI2RlZmluZSBNQ0FfYnVzX19pc19hX21hY3JvCisKKyNpbmNsdWRlIDxhc20vYXRvbWlj Lmg+CisjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorI2luY2x1ZGUgPGFzbS9wcm9jL3Byb2Nlc3Nv ci5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorCit1bmlvbiBkZWJ1Z19pbnNuIHsKKwl1MzIJ YXJtOworCXUxNgl0aHVtYjsKK307CisKK3N0cnVjdCBkZWJ1Z19lbnRyeSB7CisJdTMyCQkJYWRk cmVzczsKKwl1bmlvbiBkZWJ1Z19pbnNuCWluc247Cit9OworCitzdHJ1Y3QgZGVidWdfaW5mbyB7 CisJaW50CQkJbnNhdmVkOworCXN0cnVjdCBkZWJ1Z19lbnRyeQlicFsyXTsKK307CisKK3N0cnVj dCB0aHJlYWRfc3RydWN0IHsKKwlhdG9taWNfdAkJCXJlZmNvdW50OworCQkJCQkJCS8qIGZhdWx0 IGluZm8JICAqLworCXVuc2lnbmVkIGxvbmcJCQlhZGRyZXNzOworCXVuc2lnbmVkIGxvbmcJCQl0 cmFwX25vOworCXVuc2lnbmVkIGxvbmcJCQllcnJvcl9jb2RlOworCQkJCQkJCS8qIGZsb2F0aW5n IHBvaW50ICovCisJdW5pb24gZnBfc3RhdGUJCQlmcHN0YXRlOworCQkJCQkJCS8qIGRlYnVnZ2lu ZwkgICovCisJc3RydWN0IGRlYnVnX2luZm8JCWRlYnVnOworCQkJCQkJCS8qIGNvbnRleHQgaW5m bwkgICovCisJc3RydWN0IGNvbnRleHRfc2F2ZV9zdHJ1Y3QJKnNhdmU7CisJRVhUUkFfVEhSRUFE X1NUUlVDVAorfTsKKworI2RlZmluZSBJTklUX1RIUkVBRCAgewkJCQkJXAorCXJlZmNvdW50OglB VE9NSUNfSU5JVCgxKSwJCQlcCisJRVhUUkFfVEhSRUFEX1NUUlVDVF9JTklUCQkJXAorfQorCisv KgorICogUmV0dXJuIHNhdmVkIFBDIG9mIGEgYmxvY2tlZCB0aHJlYWQuCisgKi8KK3N0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZyB0aHJlYWRfc2F2ZWRfcGMoc3RydWN0IHRocmVhZF9zdHJ1Y3Qg KnQpCit7CisJcmV0dXJuIHQtPnNhdmUgPyBwY19wb2ludGVyKHQtPnNhdmUtPnBjKSA6IDA7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyB0aHJlYWRfc2F2ZWRfZnAoc3RydWN0IHRo cmVhZF9zdHJ1Y3QgKnQpCit7CisJcmV0dXJuIHQtPnNhdmUgPyB0LT5zYXZlLT5mcCA6IDA7Cit9 CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24sIGEgc3RyYW5nZSBDIHRoaW5nICovCitzdHJ1Y3Qg dGFza19zdHJ1Y3Q7CisKKy8qIEZyZWUgYWxsIHJlc291cmNlcyBoZWxkIGJ5IGEgdGhyZWFkLiAq LworZXh0ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOworCisv KiBDb3B5IGFuZCByZWxlYXNlIGFsbCBzZWdtZW50IGluZm8gYXNzb2NpYXRlZCB3aXRoIGEgVk0g Ki8KKyNkZWZpbmUgY29weV9zZWdtZW50cyh0c2ssIG1tKQkJZG8geyB9IHdoaWxlICgwKQorI2Rl ZmluZSByZWxlYXNlX3NlZ21lbnRzKG1tKQkJZG8geyB9IHdoaWxlICgwKQorCit1bnNpZ25lZCBs b25nIGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOworCisjZGVmaW5lIFRIUkVBRF9T SVpFCSg4MTkyKQorCitleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICphbGxvY190YXNrX3N0cnVj dCh2b2lkKTsKK2V4dGVybiB2b2lkIF9fZnJlZV90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1 Y3QgKik7CisjZGVmaW5lIGdldF90YXNrX3N0cnVjdChwKQlhdG9taWNfaW5jKCYocCktPnRocmVh ZC5yZWZjb3VudCkKKyNkZWZpbmUgZnJlZV90YXNrX3N0cnVjdChwKQkJCQkJXAorIGRvIHsJCQkJ CQkJCVwKKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmKHApLT50aHJlYWQucmVmY291bnQpKQkJ XAorCQlfX2ZyZWVfdGFza19zdHJ1Y3QoKHApKTsJCQlcCisgfSB3aGlsZSAoMCkKKworI2RlZmlu ZSBpbml0X3Rhc2sJKGluaXRfdGFza191bmlvbi50YXNrKQorI2RlZmluZSBpbml0X3N0YWNrCShp bml0X3Rhc2tfdW5pb24uc3RhY2spCisKKyNkZWZpbmUgY3B1X3JlbGF4KCkJYmFycmllcigpCisK Ky8qCisgKiBDcmVhdGUgYSBuZXcga2VybmVsIHRocmVhZAorICovCitleHRlcm4gaW50IGFyY2hf a2VybmVsX3RocmVhZChpbnQgKCpmbikodm9pZCAqKSwgdm9pZCAqYXJnLCB1bnNpZ25lZCBsb25n IGZsYWdzKTsKKworI2VuZGlmCisKKyNlbmRpZiAvKiBfX0FTTV9BUk1fUFJPQ0VTU09SX0ggKi8K ZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vcHRyYWNlLmggYi9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL3B0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjQ1MGI2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3B0cmFj ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiAgYXJjaC9hcm0vaW5jbHVkZS9hc20vcHRyYWNl LmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMgUnVzc2VsbCBLaW5nCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4KKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fUFRSQUNFX0gKKyNkZWZpbmUg X19BU01fQVJNX1BUUkFDRV9ICisKKyNkZWZpbmUgUFRSQUNFX0dFVFJFR1MJCTEyCisjZGVmaW5l IFBUUkFDRV9TRVRSRUdTCQkxMworI2RlZmluZSBQVFJBQ0VfR0VURlBSRUdTCTE0CisjZGVmaW5l IFBUUkFDRV9TRVRGUFJFR1MJMTUKKworI2RlZmluZSBQVFJBQ0VfU0VUT1BUSU9OUwkyMQorCisv KiBvcHRpb25zIHNldCB1c2luZyBQVFJBQ0VfU0VUT1BUSU9OUyAqLworI2RlZmluZSBQVFJBQ0Vf T19UUkFDRVNZU0dPT0QJMHgwMDAwMDAwMQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisvKiB0 aGlzIHN0cnVjdCBkZWZpbmVzIHRoZSB3YXkgdGhlIHJlZ2lzdGVycyBhcmUgc3RvcmVkIG9uIHRo ZQorICAgc3RhY2sgZHVyaW5nIGEgc3lzdGVtIGNhbGwuICovCisKK3N0cnVjdCBwdF9yZWdzIHsK Kwlsb25nIHVyZWdzWzMxXTsKK307CisKKyNlbmRpZgkvKiBfX0FTU0VNQkxZX18gKi8KKworI2Vu ZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmggYi9hcmNo L2FybTY0L2luY2x1ZGUvYXNtL3NlY3Rpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uOGM3YmM4YwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9h c20vc2VjdGlvbnMuaApAQCAtMCwwICsxLDM0IEBACisjaWZuZGVmIF9fQVNNX1NFQ1RJT05TX0gK KyNkZWZpbmUgX19BU01fU0VDVElPTlNfSAorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2luY2x1 ZGUgPGFzbS1nZW5lcmljL3NlY3Rpb25zLmg+CisKKy8qCisgKiBBY2Nlc3MgYSBsaW5rZXIgc3Vw cGxpZWQgdmFyaWFibGUuIFVzZSB0aGlzIGlmIHlvdXIgY29kZSBtaWdodCBub3QgYmUgcnVubmlu ZworICogYXQgdGhlIGFkZHJlc3MgaXQgaXMgbGlua2VkIGF0LgorICovCisjZGVmaW5lIGxkX3Zh cihuYW1lKSAoeyBcCisJdW5zaWduZWQgbG9uZyBfX2xkX3Zhcl8jI25hbWUodm9pZCk7IFwKKwlf X2xkX3Zhcl8jI25hbWUoKTsgXAorfSkKKworI2Vsc2UKKworLyoKKyAqIEFjY2VzcyBhIGxpbmtl ciBzdXBwbGllZCB2YXJpYWJsZSwgYXNzZW1ibGVyIG1hY3JvIHZlcnNpb24KKyAqLworLm1hY3Jv IGxkX3ZhciBuYW1lLCByZWcsIHNjcmF0Y2gKKwkxMDAwOgorCQlsZHIgXHJlZywgMTAwMWYKKwkJ bGRyIFxzY3JhdGNoLCA9MTAwMGIKKwkJYWRkIFxyZWcsIFxyZWcsIFxzY3JhdGNoCisJCWIgMTAw MmYKKwkxMDAxOgorCQkud29yZCBcbmFtZSAtIDEwMDBiCisJMTAwMjoKKy5lbmRtCisKKyNlbmRp ZgorCisjZW5kaWYgLyogX19BU01fU0VDVElPTlNfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02 NC9pbmNsdWRlL2FzbS9zZW1paG9zdGluZy5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZW1p aG9zdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NzhkYWQKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3NlbWlob3N0aW5nLmgKQEAg LTAsMCArMSwxOSBAQAorI2lmbmRlZiBfX0FTTV9BUk1fU0VNSUhPU1RJTkdfSAorI2RlZmluZSBf X0FTTV9BUk1fU0VNSUhPU1RJTkdfSAorCitpbnQgc2VtaWhvc3Rpbmdfb3Blbihjb25zdCBjaGFy ICpmbmFtZSwgaW50IGZsYWdzKTsKK2ludCBzZW1paG9zdGluZ19jbG9zZShpbnQgZmQpOworaW50 IHNlbWlob3N0aW5nX3dyaXRlYyhjaGFyIGMpOworaW50IHNlbWlob3N0aW5nX3dyaXRlMChjb25z dCBjaGFyICpzdHIpOworc3NpemVfdCBzZW1paG9zdGluZ193cml0ZShpbnQgZmQsIGNvbnN0IHZv aWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKK3NzaXplX3Qgc2VtaWhvc3RpbmdfcmVhZChpbnQgZmQs IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKK2ludCBzZW1paG9zdGluZ19yZWFkYyh2b2lkKTsK K2ludCBzZW1paG9zdGluZ19pc2F0dHkoaW50IGZkKTsKK2ludCBzZW1paG9zdGluZ19zZWVrKGlu dCBmZCwgbG9mZl90IHBvcyk7CitpbnQgc2VtaWhvc3RpbmdfZmxlbihpbnQgZmQpOworaW50IHNl bWlob3N0aW5nX3JlbW92ZShjb25zdCBjaGFyICpmbmFtZSk7CitpbnQgc2VtaWhvc3RpbmdfcmVu YW1lKGNvbnN0IGNoYXIgKmZuYW1lMSwgY29uc3QgY2hhciAqZm5hbWUyKTsKK2ludCBzZW1paG9z dGluZ19lcnJubyh2b2lkKTsKK2ludCBzZW1paG9zdGluZ19zeXN0ZW0oY29uc3QgY2hhciAqY29t bWFuZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZXR1 cC5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zZXR1cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjZjZTM1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2lu Y2x1ZGUvYXNtL3NldHVwLmgKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD KSAxOTk3LTE5OTkgUnVzc2VsbCBLaW5nCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz CisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAg U3RydWN0dXJlIHBhc3NlZCB0byBrZXJuZWwgdG8gdGVsbCBpdCBhYm91dCB0aGUKKyAqICBoYXJk d2FyZSBpdCdzIHJ1bm5pbmcgb24uICBTZWUgbGludXgvRG9jdW1lbnRhdGlvbi9hcm0vU2V0dXAK KyAqICBmb3IgbW9yZSBpbmZvLgorICovCisjaWZuZGVmIF9fQVNNQVJNX1NFVFVQX0gKKyNkZWZp bmUgX19BU01BUk1fU0VUVVBfSAorCisvKgorICogVXNhZ2U6CisgKiAgLSBkbyBub3QgZ28gYmxp bmRseSBhZGRpbmcgZmllbGRzLCBhZGQgdGhlbSBhdCB0aGUgZW5kCisgKiAgLSB3aGVuIGFkZGlu ZyBmaWVsZHMsIGRvbid0IHJlbHkgb24gdGhlIGFkZHJlc3MgdW50aWwKKyAqICAgIGEgcGF0Y2gg ZnJvbSBtZSBoYXMgYmVlbiByZWxlYXNlZAorICogIC0gdW51c2VkIGZpZWxkcyBzaG91bGQgYmUg emVybyAoZm9yIGZ1dHVyZSBleHBhbnNpb24pCisgKiAgLSB0aGlzIHN0cnVjdHVyZSBpcyByZWxh dGl2ZWx5IHNob3J0LWxpdmVkIC0gb25seQorICogICAgZ3VhcmFudGVlZCB0byBjb250YWluIHVz ZWZ1bCBkYXRhIGluIHNldHVwX2FyY2goKQorICovCisjZGVmaW5lIENPTU1BTkRfTElORV9TSVpF IDEwMjQKKworLyoKKyAqIFRoZSBuZXcgd2F5IG9mIHBhc3NpbmcgaW5mb3JtYXRpb246IGEgbGlz dCBvZiB0YWdnZWQgZW50cmllcworICovCisKKy8qIFRoZSBsaXN0IGVuZHMgd2l0aCBhbiBBVEFH X05PTkUgbm9kZS4gKi8KKyNkZWZpbmUgQVRBR19OT05FCTB4MDAwMDAwMDAKKworc3RydWN0IHRh Z19oZWFkZXIgeworCXUzMiBzaXplOworCXUzMiB0YWc7Cit9OworCisvKiBUaGUgbGlzdCBtdXN0 IHN0YXJ0IHdpdGggYW4gQVRBR19DT1JFIG5vZGUgKi8KKyNkZWZpbmUgQVRBR19DT1JFCTB4NTQ0 MTAwMDEKKworc3RydWN0IHRhZ19jb3JlIHsKKwl1MzIgZmxhZ3M7CQkvKiBiaXQgMCA9IHJlYWQt b25seSAqLworCXUzMiBwYWdlc2l6ZTsKKwl1MzIgcm9vdGRldjsKK307CisKKy8qIGl0IGlzIGFs bG93ZWQgdG8gaGF2ZSBtdWx0aXBsZSBBVEFHX01FTSBub2RlcyAqLworI2RlZmluZSBBVEFHX01F TQkweDU0NDEwMDAyCisKK3N0cnVjdCB0YWdfbWVtMzIgeworCXUzMglzaXplOworCXUzMglzdGFy dDsJLyogcGh5c2ljYWwgc3RhcnQgYWRkcmVzcyAqLworfTsKKworLyogVkdBIHRleHQgdHlwZSBk aXNwbGF5cyAqLworI2RlZmluZSBBVEFHX1ZJREVPVEVYVAkweDU0NDEwMDAzCisKK3N0cnVjdCB0 YWdfdmlkZW90ZXh0IHsKKwl1OAkJeDsKKwl1OAkJeTsKKwl1MTYJCXZpZGVvX3BhZ2U7CisJdTgJ CXZpZGVvX21vZGU7CisJdTgJCXZpZGVvX2NvbHM7CisJdTE2CQl2aWRlb19lZ2FfYng7CisJdTgJ CXZpZGVvX2xpbmVzOworCXU4CQl2aWRlb19pc3ZnYTsKKwl1MTYJCXZpZGVvX3BvaW50czsKK307 CisKKy8qIGRlc2NyaWJlcyBob3cgdGhlIHJhbWRpc2sgd2lsbCBiZSB1c2VkIGluIGtlcm5lbCAq LworI2RlZmluZSBBVEFHX1JBTURJU0sJMHg1NDQxMDAwNAorCitzdHJ1Y3QgdGFnX3JhbWRpc2sg eworCXUzMiBmbGFnczsJLyogYml0IDAgPSBsb2FkLCBiaXQgMSA9IHByb21wdCAqLworCXUzMiBz aXplOwkvKiBkZWNvbXByZXNzZWQgcmFtZGlzayBzaXplIGluIF9raWxvXyBieXRlcyAqLworCXUz MiBzdGFydDsJLyogc3RhcnRpbmcgYmxvY2sgb2YgZmxvcHB5LWJhc2VkIFJBTSBkaXNrIGltYWdl ICovCit9OworCisvKiBkZXNjcmliZXMgd2hlcmUgdGhlIGNvbXByZXNzZWQgcmFtZGlzayBpbWFn ZSBsaXZlcyAodmlydHVhbCBhZGRyZXNzKSAqLworLyoKKyAqIHRoaXMgb25lIGFjY2lkZW50YWxs eSB1c2VkIHZpcnR1YWwgYWRkcmVzc2VzIC0gYXMgc3VjaCwKKyAqIGl0cyBkZXByZWNpYXRlZC4K KyAqLworI2RlZmluZSBBVEFHX0lOSVRSRAkweDU0NDEwMDA1CisKKy8qIGRlc2NyaWJlcyB3aGVy ZSB0aGUgY29tcHJlc3NlZCByYW1kaXNrIGltYWdlIGxpdmVzIChwaHlzaWNhbCBhZGRyZXNzKSAq LworI2RlZmluZSBBVEFHX0lOSVRSRDIJMHg1NDQyMDAwNQorCitzdHJ1Y3QgdGFnX2luaXRyZCB7 CisJdTMyIHN0YXJ0OwkvKiBwaHlzaWNhbCBzdGFydCBhZGRyZXNzICovCisJdTMyIHNpemU7CS8q IHNpemUgb2YgY29tcHJlc3NlZCByYW1kaXNrIGltYWdlIGluIGJ5dGVzICovCit9OworCisvKiBi b2FyZCBzZXJpYWwgbnVtYmVyLiAiNjQgYml0cyBzaG91bGQgYmUgZW5vdWdoIGZvciBldmVyeWJv ZHkiICovCisjZGVmaW5lIEFUQUdfU0VSSUFMCTB4NTQ0MTAwMDYKKworc3RydWN0IHRhZ19zZXJp YWxuciB7CisJdTMyIGxvdzsKKwl1MzIgaGlnaDsKK307CisKKy8qIGJvYXJkIHJldmlzaW9uICov CisjZGVmaW5lIEFUQUdfUkVWSVNJT04JMHg1NDQxMDAwNworCitzdHJ1Y3QgdGFnX3JldmlzaW9u IHsKKwl1MzIgcmV2OworfTsKKworLyogaW5pdGlhbCB2YWx1ZXMgZm9yIHZlc2FmYi10eXBlIGZy YW1lYnVmZmVycy4gc2VlIHN0cnVjdCBzY3JlZW5faW5mbworICogaW4gaW5jbHVkZS9saW51eC90 dHkuaAorICovCisjZGVmaW5lIEFUQUdfVklERU9MRkIJMHg1NDQxMDAwOAorCitzdHJ1Y3QgdGFn X3ZpZGVvbGZiIHsKKwl1MTYJCWxmYl93aWR0aDsKKwl1MTYJCWxmYl9oZWlnaHQ7CisJdTE2CQls ZmJfZGVwdGg7CisJdTE2CQlsZmJfbGluZWxlbmd0aDsKKwl1MzIJCWxmYl9iYXNlOworCXUzMgkJ bGZiX3NpemU7CisJdTgJCXJlZF9zaXplOworCXU4CQlyZWRfcG9zOworCXU4CQlncmVlbl9zaXpl OworCXU4CQlncmVlbl9wb3M7CisJdTgJCWJsdWVfc2l6ZTsKKwl1OAkJYmx1ZV9wb3M7CisJdTgJ CXJzdmRfc2l6ZTsKKwl1OAkJcnN2ZF9wb3M7Cit9OworCisvKiBjb21tYW5kIGxpbmU6IFwwIHRl cm1pbmF0ZWQgc3RyaW5nICovCisjZGVmaW5lIEFUQUdfQ01ETElORQkweDU0NDEwMDA5CisKK3N0 cnVjdCB0YWdfY21kbGluZSB7CisJY2hhcgljbWRsaW5lWzFdOwkvKiB0aGlzIGlzIHRoZSBtaW5p bXVtIHNpemUgKi8KK307CisKKy8qIGFjb3JuIFJpc2NQQyBzcGVjaWZpYyBpbmZvcm1hdGlvbiAq LworI2RlZmluZSBBVEFHX0FDT1JOCTB4NDEwMDAxMDEKKworc3RydWN0IHRhZ19hY29ybiB7CisJ dTMyIG1lbWNfY29udHJvbF9yZWc7CisJdTMyIHZyYW1fcGFnZXM7CisJdTggc291bmRkZWZhdWx0 OworCXU4IGFkZnNkcml2ZXM7Cit9OworCisvKiBmb290YnJpZGdlIG1lbW9yeSBjbG9jaywgc2Vl IGFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS9hcmNoLmMgKi8KKyNkZWZpbmUgQVRBR19NRU1DTEsJ MHg0MTAwMDQwMgorCitzdHJ1Y3QgdGFnX21lbWNsayB7CisJdTMyIGZtZW1jbGs7Cit9OworCitz dHJ1Y3QgdGFnIHsKKwlzdHJ1Y3QgdGFnX2hlYWRlciBoZHI7CisJdW5pb24geworCQlzdHJ1Y3Qg dGFnX2NvcmUJCWNvcmU7CisJCXN0cnVjdCB0YWdfbWVtMzIJbWVtOworCQlzdHJ1Y3QgdGFnX3Zp ZGVvdGV4dAl2aWRlb3RleHQ7CisJCXN0cnVjdCB0YWdfcmFtZGlzawlyYW1kaXNrOworCQlzdHJ1 Y3QgdGFnX2luaXRyZAlpbml0cmQ7CisJCXN0cnVjdCB0YWdfc2VyaWFsbnIJc2VyaWFsbnI7CisJ CXN0cnVjdCB0YWdfcmV2aXNpb24JcmV2aXNpb247CisJCXN0cnVjdCB0YWdfdmlkZW9sZmIJdmlk ZW9sZmI7CisJCXN0cnVjdCB0YWdfY21kbGluZQljbWRsaW5lOworCisJCS8qCisJCSAqIEFjb3Ju IHNwZWNpZmljCisJCSAqLworCQlzdHJ1Y3QgdGFnX2Fjb3JuCWFjb3JuOworCisJCS8qCisJCSAq IERDMjEyODUgc3BlY2lmaWMKKwkJICovCisJCXN0cnVjdCB0YWdfbWVtY2xrCW1lbWNsazsKKwl9 IHU7Cit9OworCitzdHJ1Y3QgdGFndGFibGUgeworCXUzMiB0YWc7CisJaW50ICgqcGFyc2UpKGNv bnN0IHN0cnVjdCB0YWcgKik7Cit9OworCisjZGVmaW5lIF9fdGFnIF9fYXR0cmlidXRlX18oKHVu dXNlZCwgX19zZWN0aW9uX18oIi50YWdsaXN0IikpKQorI2RlZmluZSBfX3RhZ3RhYmxlKHRhZywg Zm4pIFwKK3N0YXRpYyBzdHJ1Y3QgdGFndGFibGUgX190YWd0YWJsZV8jI2ZuIF9fdGFnID0geyB0 YWcsIGZuIH0KKworI2RlZmluZSB0YWdfbWVtYmVyX3ByZXNlbnQodGFnLG1lbWJlcikJCQkJXAor CSgodW5zaWduZWQgbG9uZykoJigoc3RydWN0IHRhZyAqKTBMKS0+bWVtYmVyICsgMSkJXAorCQk8 PSAodGFnKS0+aGRyLnNpemUgKiA0KQorCisjZGVmaW5lIHRhZ19uZXh0KHQpCSgoc3RydWN0IHRh ZyAqKSgodTMyICopKHQpICsgKHQpLT5oZHIuc2l6ZSkpCisjZGVmaW5lIHRhZ19zaXplKHR5cGUp CSgoc2l6ZW9mKHN0cnVjdCB0YWdfaGVhZGVyKSArIHNpemVvZihzdHJ1Y3QgdHlwZSkpID4+IDIp CisKKyNkZWZpbmUgZm9yX2VhY2hfdGFnKHQsYmFzZSkJCVwKKwlmb3IgKHQgPSBiYXNlOyB0LT5o ZHIuc2l6ZTsgdCA9IHRhZ19uZXh0KHQpKQorCisvKgorICogTWVtb3J5IG1hcCBkZXNjcmlwdGlv bgorICovCisjZGVmaW5lIE5SX0JBTktTIDgKKworc3RydWN0IG1lbWluZm8geworCWludCBucl9i YW5rczsKKwl1bnNpZ25lZCBsb25nIGVuZDsKKwlzdHJ1Y3QgeworCQl1bnNpZ25lZCBsb25nIHN0 YXJ0OworCQl1bnNpZ25lZCBsb25nIHNpemU7CisJCWludCAgICAgICAgICAgbm9kZTsKKwl9IGJh bmtbTlJfQkFOS1NdOworfTsKKworZXh0ZXJuIHN0cnVjdCBtZW1pbmZvIG1lbWluZm87CisKKyNl bmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zdGFja3RyYWNlLmggYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3N0YWNrdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4xMGY3MGUxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9zdGFja3RyYWNlLmgKQEAgLTAsMCArMSwxNiBAQAorI2lmbmRlZiBfX0FTTV9TVEFD S1RSQUNFX0gKKyNkZWZpbmUgX19BU01fU1RBQ0tUUkFDRV9ICisKK3N0cnVjdCBzdGFja2ZyYW1l IHsKKwl1bnNpZ25lZCBsb25nIGZwOworCXVuc2lnbmVkIGxvbmcgc3A7CisJdW5zaWduZWQgbG9u ZyBscjsKKwl1bnNpZ25lZCBsb25nIHBjOworfTsKKworZXh0ZXJuIGludCB1bndpbmRfZnJhbWUo c3RydWN0IHN0YWNrZnJhbWUgKmZyYW1lKTsKK2V4dGVybiB2b2lkIHdhbGtfc3RhY2tmcmFtZShz dHJ1Y3Qgc3RhY2tmcmFtZSAqZnJhbWUsCisJCQkgICAgaW50ICgqZm4pKHN0cnVjdCBzdGFja2Zy YW1lICosIHZvaWQgKiksIHZvaWQgKmRhdGEpOworCisjZW5kaWYJLyogX19BU01fU1RBQ0tUUkFD RV9IICovCisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3RyaW5nLmggYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3N0cmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjQzNTY0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUv YXNtL3N0cmluZy5oCkBAIC0wLDAgKzEsMTMgQEAKKyNpZm5kZWYgX19BU01fQVJNX1NUUklOR19I CisjZGVmaW5lIF9fQVNNX0FSTV9TVFJJTkdfSAorCisjaWZkZWYgQ09ORklHX0FSTV9PUFRJTVpF RF9TVFJJTkdfRlVOQ1RJT05TCisKKyNkZWZpbmUgX19IQVZFX0FSQ0hfTUVNQ1BZCitleHRlcm4g dm9pZCAqbWVtY3B5KHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBfX2tlcm5lbF9zaXplX3QpOworI2Rl ZmluZSBfX0hBVkVfQVJDSF9NRU1TRVQKK2V4dGVybiB2b2lkICptZW1zZXQodm9pZCAqLCBpbnQs IF9fa2VybmVsX3NpemVfdCk7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gv YXJtNjQvaW5jbHVkZS9hc20vc3dhYi5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zd2FiLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk5N2FkMgotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vc3dhYi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8q CisgKiAgYXJjaC9hcm0vaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmgKKyAqCisgKiBBUk0gRW5kaWFu LW5lc3MuICBJbiBsaXR0bGUgZW5kaWFuIG1vZGUsIHRoZSBkYXRhIGJ1cyBpcyBjb25uZWN0ZWQg c3VjaAorICogdGhhdCBieXRlIGFjY2Vzc2VzIGFwcGVhciBhczoKKyAqICAwID0gZDAuLi5kNywg MSA9IGQ4Li4uZDE1LCAyID0gZDE2Li4uZDIzLCAzID0gZDI0Li4uZDMxCisgKiBhbmQgd29yZCBh Y2Nlc3NlcyAoZGF0YSBvciBpbnN0cnVjdGlvbikgYXBwZWFyIGFzOgorICogIGQwLi4uZDMxCisg KgorICogV2hlbiBpbiBiaWcgZW5kaWFuIG1vZGUsIGJ5dGUgYWNjZXNzZXMgYXBwZWFyIGFzOgor ICogIDAgPSBkMjQuLi5kMzEsIDEgPSBkMTYuLi5kMjMsIDIgPSBkOC4uLmQxNSwgMyA9IGQwLi4u ZDcKKyAqIGFuZCB3b3JkIGFjY2Vzc2VzIChkYXRhIG9yIGluc3RydWN0aW9uKSBhcHBlYXIgYXM6 CisgKiAgZDAuLi5kMzEKKyAqLworI2lmbmRlZiBfX0FTTV9BUk1fU1dBQl9ICisjZGVmaW5lIF9f QVNNX0FSTV9TV0FCX0gKKworI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CisjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KKworI2lmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykgfHwgZGVmaW5l ZChfX0tFUk5FTF9fKQorIyAgZGVmaW5lIF9fU1dBQl82NF9USFJVXzMyX18KKyNlbmRpZgorCisj aWYgZGVmaW5lZChfX0tFUk5FTF9fKSAmJiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgorCitzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX191MTYgX19hcmNoX3N3YWIxNihfX3UxNiB4 KQoreworCV9fYXNtX18gKCJyZXYxNiAlMCwgJTEiIDogIj1yIiAoeCkgOiAiciIgKHgpKTsKKwly ZXR1cm4geDsKK30KKyNkZWZpbmUgX19hcmNoX3N3YWIxNiBfX2FyY2hfc3dhYjE2CisKK3N0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfY29uc3RfXyBfX3UzMiBfX2FyY2hfc3dhYjMyKF9fdTMyIHgp Cit7CisJX19hc21fXyAoInJldiAlMCwgJTEiIDogIj1yIiAoeCkgOiAiciIgKHgpKTsKKwlyZXR1 cm4geDsKK30KKyNkZWZpbmUgX19hcmNoX3N3YWIzMiBfX2FyY2hfc3dhYjMyCisKKyNlbHNlCisK K3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfY29uc3RfXyBfX3UzMiBfX2FyY2hfc3dhYjMyKF9f dTMyIHgpCit7CisJX191MzIgdDsKKworI2lmbmRlZiBfX3RodW1iX18KKwlpZiAoIV9fYnVpbHRp bl9jb25zdGFudF9wKHgpKSB7CisJCS8qCisJCSAqIFRoZSBjb21waWxlciBuZWVkcyBhIGJpdCBv ZiBhIGhpbnQgaGVyZSB0byBhbHdheXMgZG8gdGhlCisJCSAqIHJpZ2h0IHRoaW5nIGFuZCBub3Qg c2NyZXcgaXQgdXAgdG8gZGlmZmVyZW50IGRlZ3JlZXMKKwkJICogZGVwZW5kaW5nIG9uIHRoZSBn Y2MgdmVyc2lvbi4KKwkJICovCisJCWFzbSAoImVvclx0JTAsICUxLCAlMSwgcm9yICMxNiIgOiAi PXIiICh0KSA6ICJyIiAoeCkpOworCX0gZWxzZQorI2VuZGlmCisJCXQgPSB4IF4gKCh4IDw8IDE2 KSB8ICh4ID4+IDE2KSk7IC8qIGVvciByMSxyMCxyMCxyb3IgIzE2ICovCisKKwl4ID0gKHggPDwg MjQpIHwgKHggPj4gOCk7CQkvKiBtb3YgcjAscjAscm9yICM4ICAgICAgKi8KKwl0ICY9IH4weDAw RkYwMDAwOwkJCS8qIGJpYyByMSxyMSwjMHgwMEZGMDAwMCAqLworCXggXj0gKHQgPj4gOCk7CQkJ CS8qIGVvciByMCxyMCxyMSxsc3IgIzggICAqLworCisJcmV0dXJuIHg7Cit9CisjZGVmaW5lIF9f YXJjaF9zd2FiMzIgX19hcmNoX3N3YWIzMgorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQg YS9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3N5c3RlbS5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2Fz bS9zeXN0ZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGY5YTcxCi0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXN0ZW0uaApAQCAtMCww ICsxLDEyNSBAQAorI2lmbmRlZiBfX0FTTV9BUk1fU1lTVEVNX0gKKyNkZWZpbmUgX19BU01fQVJN X1NZU1RFTV9ICisKKyNkZWZpbmUgaXNiKCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJpc2IiIDog OiA6ICJtZW1vcnkiKQorI2RlZmluZSBkc2IoKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImRzYiIg OiA6IDogIm1lbW9yeSIpCisjZGVmaW5lIGRtYigpIF9fYXNtX18gX192b2xhdGlsZV9fICgiZG1i IiA6IDogOiAibWVtb3J5IikKKworLyoKKyAqIFNDVExSX0VMMS9TQ1RMUl9FTDIvU0NUTFJfRUwz IGJpdHMgZGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBDUl9NCQkoMSA8PCAwKQkvKiBNTVUgZW5h YmxlCQkJKi8KKyNkZWZpbmUgQ1JfQQkJKDEgPDwgMSkJLyogQWxpZ25tZW50IGFib3J0IGVuYWJs ZQkqLworI2RlZmluZSBDUl9DCQkoMSA8PCAyKQkvKiBEY2FjaGUgZW5hYmxlCQkqLworI2RlZmlu ZSBDUl9TQQkJKDEgPDwgMykJLyogU3RhY2sgQWxpZ25tZW50IENoZWNrIEVuYWJsZQkqLworI2Rl ZmluZSBDUl9JCQkoMSA8PCAxMikJLyogSWNhY2hlIGVuYWJsZQkJKi8KKyNkZWZpbmUgQ1JfV1hO CQkoMSA8PCAxOSkJLyogV3JpdGUgUGVybWlzaW9uIEltcGx5IFhOCSovCisjZGVmaW5lIENSX0VF CQkoMSA8PCAyNSkJLyogRXhjZXB0aW9uIChCaWcpIEVuZGlhbgkqLworCisjaWZuZGVmIENPTkZJ R19TWVNfRlVMTF9WQQorI2RlZmluZSBQR1RBQkxFX1NJWkUJKDB4MTAwMDApCisjZWxzZQorI2Rl ZmluZSBQR1RBQkxFX1NJWkUJQ09ORklHX1NZU19QR1RBQkxFX1NJWkUKKyNlbmRpZgorCisvKiAy TUIgZ3JhbnVsYXJpdHkgKi8KKyNkZWZpbmUgTU1VX1NFQ1RJT05fU0hJRlQJMjEKKyNkZWZpbmUg TU1VX1NFQ1RJT05fU0laRQkoMSA8PCBNTVVfU0VDVElPTl9TSElGVCkKKworI2lmbmRlZiBfX0FT U0VNQkxZX18KKworZW51bSBkY2FjaGVfb3B0aW9uIHsKKwlEQ0FDSEVfT0ZGID0gMHgzLAorfTsK KworI2RlZmluZSB3ZmkoKQkJCQlcCisJKHthc20gdm9sYXRpbGUoCQkJXAorCSJ3ZmkiIDogOiA6 ICJtZW1vcnkiKTsJCVwKKwl9KQorCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjdXJyZW50 X2VsKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGVsOworCWFzbSB2b2xhdGlsZSgibXJzICUwLCBD dXJyZW50RUwiIDogIj1yIiAoZWwpIDogOiAiY2MiKTsKKwlyZXR1cm4gZWwgPj4gMjsKK30KKwor c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgZ2V0X3NjdGxyKHZvaWQpCit7CisJdW5zaWduZWQg aW50IGVsLCB2YWw7CisKKwllbCA9IGN1cnJlbnRfZWwoKTsKKwlpZiAoZWwgPT0gMSkKKwkJYXNt IHZvbGF0aWxlKCJtcnMgJTAsIHNjdGxyX2VsMSIgOiAiPXIiICh2YWwpIDogOiAiY2MiKTsKKwll bHNlIGlmIChlbCA9PSAyKQorCQlhc20gdm9sYXRpbGUoIm1ycyAlMCwgc2N0bHJfZWwyIiA6ICI9 ciIgKHZhbCkgOiA6ICJjYyIpOworCWVsc2UKKwkJYXNtIHZvbGF0aWxlKCJtcnMgJTAsIHNjdGxy X2VsMyIgOiAiPXIiICh2YWwpIDogOiAiY2MiKTsKKworCXJldHVybiB2YWw7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBzZXRfc2N0bHIodW5zaWduZWQgaW50IHZhbCkKK3sKKwl1bnNpZ25lZCBp bnQgZWw7CisKKwllbCA9IGN1cnJlbnRfZWwoKTsKKwlpZiAoZWwgPT0gMSkKKwkJYXNtIHZvbGF0 aWxlKCJtc3Igc2N0bHJfZWwxLCAlMCIgOiA6ICJyIiAodmFsKSA6ICJjYyIpOworCWVsc2UgaWYg KGVsID09IDIpCisJCWFzbSB2b2xhdGlsZSgibXNyIHNjdGxyX2VsMiwgJTAiIDogOiAiciIgKHZh bCkgOiAiY2MiKTsKKwllbHNlCisJCWFzbSB2b2xhdGlsZSgibXNyIHNjdGxyX2VsMywgJTAiIDog OiAiciIgKHZhbCkgOiAiY2MiKTsKKworCWFzbSB2b2xhdGlsZSgiaXNiIik7Cit9CisKK3N0YXRp YyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX21waWRyKHZvaWQpCit7CisJdW5zaWduZWQgbG9u ZyB2YWw7CisKKwlhc20gdm9sYXRpbGUoIm1ycyAlMCwgbXBpZHJfZWwxIiA6ICI9ciIgKHZhbCkp OworCisJcmV0dXJuIHZhbDsKK30KKworI2RlZmluZSBCU1BfQ09SRUlECTAKKwordm9pZCBfX2Fz bV9mbHVzaF9kY2FjaGVfYWxsKHZvaWQpOwordm9pZCBfX2FzbV9pbnZhbGlkYXRlX2RjYWNoZV9h bGwodm9pZCk7Cit2b2lkIF9fYXNtX2ZsdXNoX2RjYWNoZV9yYW5nZSh1NjQgc3RhcnQsIHU2NCBl bmQpOwordm9pZCBfX2FzbV9pbnZhbGlkYXRlX3RsYl9hbGwodm9pZCk7Cit2b2lkIF9fYXNtX2lu dmFsaWRhdGVfaWNhY2hlX2FsbCh2b2lkKTsKK2ludCBfX2FzbV9mbHVzaF9sM19jYWNoZSh2b2lk KTsKKwordm9pZCBhcm12OF9zd2l0Y2hfdG9fZWwyKHZvaWQpOwordm9pZCBhcm12OF9zd2l0Y2hf dG9fZWwxKHZvaWQpOwordm9pZCBnaWNfaW5pdCh2b2lkKTsKK3ZvaWQgZ2ljX3NlbmRfc2dpKHVu c2lnbmVkIGxvbmcgc2dpbm8pOwordm9pZCB3YWl0X2Zvcl93YWtldXAodm9pZCk7Cit2b2lkIHBy b3RlY3Rfc2VjdXJlX3JlZ2lvbih2b2lkKTsKK3ZvaWQgc21wX2tpY2tfYWxsX2NwdXModm9pZCk7 CisKK3ZvaWQgZmx1c2hfbDNfY2FjaGUodm9pZCk7CisKKy8qCisgKklzc3VlIGEgaHlwZXJ2aXNv ciBjYWxsIGluIGFjY29yZGFuY2Ugd2l0aCBBUk0gIlNNQyBDYWxsaW5nIGNvbnZlbnRpb24iLAor ICogREVOMDAyOEEKKyAqCisgKiBAYXJnczogaW5wdXQgYW5kIG91dHB1dCBhcmd1bWVudHMKKyAq CisgKi8KK3ZvaWQgaHZjX2NhbGwoc3RydWN0IHB0X3JlZ3MgKmFyZ3MpOworCisvKgorICpJc3N1 ZSBhIHNlY3VyZSBtb25pdG9yIGNhbGwgaW4gYWNjb3JkYW5jZSB3aXRoIEFSTSAiU01DIENhbGxp bmcgY29udmVudGlvbiIsCisgKiBERU4wMDI4QQorICoKKyAqIEBhcmdzOiBpbnB1dCBhbmQgb3V0 cHV0IGFyZ3VtZW50cworICoKKyAqLwordm9pZCBzbWNfY2FsbChzdHJ1Y3QgcHRfcmVncyAqYXJn cyk7CisKKyNlbmRpZgkvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9fQVNNX0FSTV9T WVNURU1fSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXN0ZW1faW5m by5oIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9zeXN0ZW1faW5mby5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OTVhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy bTY0L2luY2x1ZGUvYXNtL3N5c3RlbV9pbmZvLmgKQEAgLTAsMCArMSwxOTQgQEAKKyNpZm5kZWYg X19BU01fQVJNX1NZU1RFTV9JTkZPX0gKKyNkZWZpbmUgX19BU01fQVJNX1NZU1RFTV9JTkZPX0gK KworI2luY2x1ZGUgPGFzbS9jcHV0eXBlLmg+CisKKyNkZWZpbmUgQ1BVX0FSQ0hfVU5LTk9XTgkw CisjZGVmaW5lIENQVV9BUkNIX0FSTXYzCQkxCisjZGVmaW5lIENQVV9BUkNIX0FSTXY0CQkyCisj ZGVmaW5lIENQVV9BUkNIX0FSTXY0VAkJMworI2RlZmluZSBDUFVfQVJDSF9BUk12NQkJNAorI2Rl ZmluZSBDUFVfQVJDSF9BUk12NVQJCTUKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjVURQk2CisjZGVm aW5lIENQVV9BUkNIX0FSTXY1VEVKCTcKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjYJCTgKKyNkZWZp bmUgQ1BVX0FSQ0hfQVJNdjcJCTkKKyNkZWZpbmUgQ1BVX0FSQ0hfQVJNdjgJCTEwCisKKyNkZWZp bmUgQ1BVX0lTX0FSTTcyMAkJMHg0MTAwNzIwMAorI2RlZmluZSBDUFVfSVNfQVJNNzIwX01BU0sJ MHhmZjAwZmZmMAorCisjZGVmaW5lIENQVV9JU19BUk05MjAJCTB4NDEwMDkyMDAKKyNkZWZpbmUg Q1BVX0lTX0FSTTkyMF9NQVNLCTB4ZmYwMGZmZjAKKworI2RlZmluZSBDUFVfSVNfQVJNOTI2CQkw eDQxMDY5MjYwCisjZGVmaW5lIENQVV9JU19BUk05MjZfTUFTSwkweGZmMGZmZmYwCisKKyNkZWZp bmUgQ1BVX0lTX0FSTTExNzYJCTB4NDEwZmI3NjAKKyNkZWZpbmUgQ1BVX0lTX0FSTTExNzZfTUFT SwkweGZmMGZmZmYwCisKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BOAkweDQxMGZjMDgwCisjZGVm aW5lIENQVV9JU19DT1JURVhfQThfTUFTSwkweGZmMGZmZmYwCisKKyNkZWZpbmUgQ1BVX0lTX0NP UlRFWF9BNQkweDQxMGZjMDUwCisjZGVmaW5lIENQVV9JU19DT1JURVhfQTVfTUFTSwkweGZmMGZm ZmYwCisKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BOQkweDQxMGZjMDkwCisjZGVmaW5lIENQVV9J U19DT1JURVhfQTlfTUFTSwkweGZmMGZmZmYwCisKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BNwkw eDQxMGZjMDcwCisjZGVmaW5lIENQVV9JU19DT1JURVhfQTdfTUFTSwkweGZmMGZmZmYwCisKKyNk ZWZpbmUgQ1BVX0lTX0NPUlRFWF9BMTUJMHg0MTBmYzBmMAorI2RlZmluZSBDUFVfSVNfQ09SVEVY X0ExNV9NQVNLCTB4ZmYwZmZmZjAKKworI2RlZmluZSBDUFVfSVNfQ09SVEVYX0E1MwkweDQxMGZk MDM0CisjZGVmaW5lIENQVV9JU19DT1JURVhfQTUzX01BU0sJMHhmZjBmZmZmMAorCisjZGVmaW5l IENQVV9JU19DT1JURVhfQTU3CTB4NDExZmQwNzAKKyNkZWZpbmUgQ1BVX0lTX0NPUlRFWF9BNTdf TUFTSwkweGZmMGZmZmYwCisKKyNkZWZpbmUgQ1BVX0lTX1BYQTI1MAkJMHg2OTA1MjEwMAorI2Rl ZmluZSBDUFVfSVNfUFhBMjUwX01BU0sJMHhmZmZmZjdmMAorCisjZGVmaW5lIENQVV9JU19QWEEy NTUJCTB4NjkwNTJkMDAKKyNkZWZpbmUgQ1BVX0lTX1BYQTI1NV9NQVNLCTB4ZmZmZmZmZjAKKwor I2RlZmluZSBDUFVfSVNfUFhBMjcwCQkweDY5MDU0MTEwCisjZGVmaW5lIENQVV9JU19QWEEyNzBf TUFTSwkweGZmZmZmN2YwCisKKyNkZWZpbmUgY3B1X2lzX2FybShjb3JlKSAoKHJlYWRfY3B1aWRf aWQoKSAmIENQVV9JU18jI2NvcmUjI19NQVNLKSA9PSBDUFVfSVNfIyNjb3JlKQorCisjaWZkZWYg Q09ORklHX0NQVV8zMnY0VAorI2lmZGVmIEFSTV9BUkNICisjZGVmaW5lIEFSTV9NVUxUSUFSQ0gK KyNlbHNlCisjZGVmaW5lIEFSTV9BUkNIIENQVV9BUkNIX0FSTXY0VAorI2VuZGlmCisjZGVmaW5l IGNwdV9pc19hcm03MjAoKQljcHVfaXNfYXJtKEFSTTcyMCkKKyNkZWZpbmUgY3B1X2lzX2FybTky MCgpCWNwdV9pc19hcm0oQVJNOTIwKQorI2RlZmluZSBjcHVfaXNfcHhhMjUwKCkgY3B1X2lzX2Fy bShQWEEyNTApCisjZGVmaW5lIGNwdV9pc19weGEyNTUoKSBjcHVfaXNfYXJtKFBYQTI1NSkKKyNk ZWZpbmUgY3B1X2lzX3B4YTI3MCgpIGNwdV9pc19hcm0oUFhBMjcwKQorI2Vsc2UKKyNkZWZpbmUg Y3B1X2lzX2FybTcyMCgpICgwKQorI2RlZmluZSBjcHVfaXNfYXJtOTIwKCkgKDApCisjZGVmaW5l IGNwdV9pc19weGEyNTAoKSAoMCkKKyNkZWZpbmUgY3B1X2lzX3B4YTI1NSgpICgwKQorI2RlZmlu ZSBjcHVfaXNfcHhhMjcwKCkgKDApCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19DUFVfMzJ2NQor I2lmZGVmIEFSTV9BUkNICisjZGVmaW5lIEFSTV9NVUxUSUFSQ0gKKyNlbHNlCisjZGVmaW5lIEFS TV9BUkNIIENQVV9BUkNIX0FSTXY1CisjZW5kaWYKKyNkZWZpbmUgY3B1X2lzX2FybTkyNigpIGNw dV9pc19hcm0oQVJNOTI2KQorI2Vsc2UKKyNkZWZpbmUgY3B1X2lzX2FybTkyNigpICgwKQorI2Vu ZGlmCisKKyNpZmRlZiBDT05GSUdfQ1BVXzMydjYKKyNpZmRlZiBBUk1fQVJDSAorI2RlZmluZSBB Uk1fTVVMVElBUkNICisjZWxzZQorI2RlZmluZSBBUk1fQVJDSCBDUFVfQVJDSF9BUk12NgorI2Vu ZGlmCisjZGVmaW5lIGNwdV9pc19hcm0xMTc2KCkJY3B1X2lzX2FybShBUk0xMTc2KQorI2Vsc2UK KyNkZWZpbmUgY3B1X2lzX2FybTExNzYoKQkoMCkKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0NQ VV8zMnY3CisjaWZkZWYgQVJNX0FSQ0gKKyNkZWZpbmUgQVJNX01VTFRJQVJDSAorI2Vsc2UKKyNk ZWZpbmUgQVJNX0FSQ0ggQ1BVX0FSQ0hfQVJNdjcKKyNlbmRpZgorI2RlZmluZSBjcHVfaXNfY29y dGV4X2E4KCkgY3B1X2lzX2FybShDT1JURVhfQTgpCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTUo KSBjcHVfaXNfYXJtKENPUlRFWF9BNSkKKyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hOSgpIGNwdV9p c19hcm0oQ09SVEVYX0E5KQorI2RlZmluZSBjcHVfaXNfY29ydGV4X2E3KCkgY3B1X2lzX2FybShD T1JURVhfQTcpCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTE1KCkgY3B1X2lzX2FybShDT1JURVhf QTE1KQorI2Vsc2UKKyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hOCgpICgwKQorI2RlZmluZSBjcHVf aXNfY29ydGV4X2E1KCkgKDApCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTkoKSAoMCkKKyNkZWZp bmUgY3B1X2lzX2NvcnRleF9hNygpICgwKQorI2RlZmluZSBjcHVfaXNfY29ydGV4X2ExNSgpICgw KQorI2VuZGlmCisKKworI2lmZGVmIENPTkZJR19DUFVfNjR2OAorI2lmZGVmIEFSTV9BUkNICisj ZGVmaW5lIEFSTV9NVUxUSUFSQ0gKKyNlbHNlCisjZGVmaW5lIEFSTV9BUkNIIENQVV9BUkNIX0FS TXY4CisjZW5kaWYKKyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hNTMoKSBjcHVfaXNfYXJtKENPUlRF WF9BNTMpCisjZGVmaW5lIGNwdV9pc19jb3J0ZXhfYTU3KCkgY3B1X2lzX2FybShDT1JURVhfQTU3 KQorI2Vsc2UKKyNkZWZpbmUgY3B1X2lzX2NvcnRleF9hNTMoKSAoMCkKKyNkZWZpbmUgY3B1X2lz X2NvcnRleF9hNTcoKSAoMCkKKyNlbmRpZgorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworCisjaWZk ZWYgQVJNX01VTFRJQVJDSAorLyoKKyAqIEVhcmx5IHZlcnNpb24gdG8gZ2V0IHRoZSBBUk0gY3B1 IGFyY2hpdGVjdHVyZS4gT25seSBuZWVkZWQgZHVyaW5nCisgKiBlYXJseSBzdGFydHVwIHdoZW4g dGhlIEMgZW52aXJvbm1lbnQgaXMgbm90IHlldCBmdWxseSBpbml0aWFsaXplZC4KKyAqIE5vcm1h bGx5IHlvdSBzaG91bGQgdXNlIGNwdV9hcmNoaXRlY3R1cmUoKSBpbnN0ZWFkLgorICovCitzdGF0 aWMgaW5saW5lIGludCBhcm1fZWFybHlfZ2V0X2NwdV9hcmNoaXRlY3R1cmUodm9pZCkKK3sKKwlp bnQgY3B1X2FyY2g7CisKKy8vCWlmICgocmVhZF9jcHVpZF9pZCgpICYgMHgwMDA4ZjAwMCkgPT0g MCkgeworLy8JCWNwdV9hcmNoID0gQ1BVX0FSQ0hfVU5LTk9XTjsKKy8vCX0gZWxzZSBpZiAoKHJl YWRfY3B1aWRfaWQoKSAmIDB4MDAwOGYwMDApID09IDB4MDAwMDcwMDApIHsKKy8vCQljcHVfYXJj aCA9IChyZWFkX2NwdWlkX2lkKCkgJiAoMSA8PCAyMykpID8gQ1BVX0FSQ0hfQVJNdjRUIDogQ1BV X0FSQ0hfQVJNdjM7CisvLwl9IGVsc2UgaWYgKChyZWFkX2NwdWlkX2lkKCkgJiAweDAwMDgwMDAw KSA9PSAweDAwMDAwMDAwKSB7CisvLwkJY3B1X2FyY2ggPSAocmVhZF9jcHVpZF9pZCgpID4+IDE2 KSAmIDc7CisvLwkJaWYgKGNwdV9hcmNoKQorLy8JCQljcHVfYXJjaCArPSBDUFVfQVJDSF9BUk12 MzsKKy8vCX0gZWxzZSBpZiAoKHJlYWRfY3B1aWRfaWQoKSAmIDB4MDAwZjAwMDApID09IDB4MDAw ZjAwMDApIHsKKy8vCQl1bnNpZ25lZCBpbnQgbW1mcjA7CisvLworLy8JCS8qIFJldmlzZWQgQ1BV SUQgZm9ybWF0LiBSZWFkIHRoZSBNZW1vcnkgTW9kZWwgRmVhdHVyZQorLy8JCSAqIFJlZ2lzdGVy IDAgYW5kIGNoZWNrIGZvciBWTVNBdjcgb3IgUE1TQXY3ICovCisvLwkJYXNtKCJtcmMJcDE1LCAw LCAlMCwgYzAsIGMxLCA0IgorLy8JCSAgICA6ICI9ciIgKG1tZnIwKSk7CisvLwkJaWYgKChtbWZy MCAmIDB4MDAwMDAwMGYpID49IDB4MDAwMDAwMDMgfHwKKy8vCQkgICAgKG1tZnIwICYgMHgwMDAw MDBmMCkgPj0gMHgwMDAwMDAzMCkKKy8vCQkJY3B1X2FyY2ggPSBDUFVfQVJDSF9BUk12NzsKKy8v CQllbHNlIGlmICgobW1mcjAgJiAweDAwMDAwMDBmKSA9PSAweDAwMDAwMDAyIHx8CisvLwkJCSAo bW1mcjAgJiAweDAwMDAwMGYwKSA9PSAweDAwMDAwMDIwKQorLy8JCQljcHVfYXJjaCA9IENQVV9B UkNIX0FSTXY2OworLy8JCWVsc2UKKy8vCQkJY3B1X2FyY2ggPSBDUFVfQVJDSF9VTktOT1dOOwor Ly8JfSBlbHNlCisvLwkJY3B1X2FyY2ggPSBDUFVfQVJDSF9VTktOT1dOOworCisJY3B1X2FyY2gg PSBDUFVfQVJDSF9BUk12ODsKKworCXJldHVybiBjcHVfYXJjaDsKK30KKworZXh0ZXJuIGludCBf X3B1cmUgY3B1X2FyY2hpdGVjdHVyZSh2b2lkKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBf X3B1cmUgYXJtX2Vhcmx5X2dldF9jcHVfYXJjaGl0ZWN0dXJlKHZvaWQpCit7CisJcmV0dXJuIEFS TV9BUkNIOworfQorCitzdGF0aWMgaW5saW5lIGludCBfX3B1cmUgY3B1X2FyY2hpdGVjdHVyZSh2 b2lkKQoreworCXJldHVybiBBUk1fQVJDSDsKK30KKyNlbmRpZgorCisjZW5kaWYgLyogIV9fQVNT RU1CTFlfXyAqLworCisjZW5kaWYgLyogX19BU01fQVJNX1NZU1RFTV9JTkZPX0ggKi8KZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdHlwZXMuaCBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTdmNDdh Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS90eXBlcy5oCkBAIC0w LDAgKzEsNTQgQEAKKyNpZm5kZWYgX19BU01fQVJNX1RZUEVTX0gKKyNkZWZpbmUgX19BU01fQVJN X1RZUEVTX0gKKworI2lmbmRlZiBfX0FTU0VNQkxZX18KKwordHlwZWRlZiB1bnNpZ25lZCBzaG9y dCB1bW9kZV90OworCisvKgorICogX194eCBpcyBvazogaXQgZG9lc24ndCBwb2xsdXRlIHRoZSBQ T1NJWCBuYW1lc3BhY2UuIFVzZSB0aGVzZSBpbiB0aGUKKyAqIGhlYWRlciBmaWxlcyBleHBvcnRl ZCB0byB1c2VyIHNwYWNlCisgKi8KKwordHlwZWRlZiBfX3NpZ25lZF9fIGNoYXIgX19zODsKK3R5 cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OworCit0eXBlZGVmIF9fc2lnbmVkX18gc2hvcnQgX19z MTY7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OworCit0eXBlZGVmIF9fc2lnbmVkX18g aW50IF9fczMyOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CisKKyNpZiBkZWZpbmVkKF9f R05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pCit0eXBlZGVmIF9fc2lnbmVkX18g bG9uZyBsb25nIF9fczY0OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7CisjZW5k aWYKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisvKgorICogVGhlc2UgYXJlbid0IGV4 cG9ydGVkIG91dHNpZGUgdGhlIGtlcm5lbCB0byBhdm9pZCBuYW1lIHNwYWNlIGNsYXNoZXMKKyAq LworI2lmZGVmIF9fS0VSTkVMX18KKworI2luY2x1ZGUgPGFzbS9iaXRzcGVybG9uZy5oPgorCisj aWZuZGVmIF9fQVNTRU1CTFlfXworCit0eXBlZGVmIHNpZ25lZCBjaGFyIHM4OwordHlwZWRlZiB1 bnNpZ25lZCBjaGFyIHU4OworCit0eXBlZGVmIHNpZ25lZCBzaG9ydCBzMTY7Cit0eXBlZGVmIHVu c2lnbmVkIHNob3J0IHUxNjsKKwordHlwZWRlZiBzaWduZWQgaW50IHMzMjsKK3R5cGVkZWYgdW5z aWduZWQgaW50IHUzMjsKKwordHlwZWRlZiBzaWduZWQgbG9uZyBsb25nIHM2NDsKK3R5cGVkZWYg dW5zaWduZWQgbG9uZyBsb25nIHU2NDsKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisj ZW5kaWYgLyogX19LRVJORUxfXyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQv aW5jbHVkZS9hc20vdW5hbGlnbmVkLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuYWxpZ25l ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NTkzYTgKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuYWxpZ25lZC5oCkBAIC0wLDAgKzEs MTkgQEAKKyNpZm5kZWYgX0FTTV9BUk1fVU5BTElHTkVEX0gKKyNkZWZpbmUgX0FTTV9BUk1fVU5B TElHTkVEX0gKKworI2luY2x1ZGUgPGxpbnV4L3VuYWxpZ25lZC9sZV9ieXRlc2hpZnQuaD4KKyNp bmNsdWRlIDxsaW51eC91bmFsaWduZWQvYmVfYnl0ZXNoaWZ0Lmg+CisjaW5jbHVkZSA8bGludXgv dW5hbGlnbmVkL2dlbmVyaWMuaD4KKworLyoKKyAqIFNlbGVjdCBlbmRpYW5uZXNzCisgKi8KKyNp Zm5kZWYgX19BUk1FQl9fCisjZGVmaW5lIGdldF91bmFsaWduZWQJX19nZXRfdW5hbGlnbmVkX2xl CisjZGVmaW5lIHB1dF91bmFsaWduZWQJX19wdXRfdW5hbGlnbmVkX2xlCisjZWxzZQorI2RlZmlu ZSBnZXRfdW5hbGlnbmVkCV9fZ2V0X3VuYWxpZ25lZF9iZQorI2RlZmluZSBwdXRfdW5hbGlnbmVk CV9fcHV0X3VuYWxpZ25lZF9iZQorI2VuZGlmCisKKyNlbmRpZiAvKiBfQVNNX0FSTV9VTkFMSUdO RURfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bmlmaWVkLmggYi9h cmNoL2FybTY0L2luY2x1ZGUvYXNtL3VuaWZpZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xM2EyYmZmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS91bmlmaWVkLmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBpbmNsdWRlL2FzbS1hcm0v dW5pZmllZC5oIC0gVW5pZmllZCBBc3NlbWJsZXIgU3ludGF4IGhlbHBlciBtYWNyb3MKKyAqCisg KiBDb3B5cmlnaHQgKEMpIDIwMDggQVJNIExpbWl0ZWQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICovCisKKyNpZm5kZWYgX19BU01fVU5JRklF RF9ICisjZGVmaW5lIF9fQVNNX1VOSUZJRURfSAorCisjaWYgZGVmaW5lZChfX0FTU0VNQkxZX18p ICYmIGRlZmluZWQoQ09ORklHX0FSTV9BU01fVU5JRklFRCkKKwkuc3ludGF4IHVuaWZpZWQKKyNl bmRpZgorCisjaWZkZWYgQ09ORklHX1RIVU1CMl9CQVJFQk9YCisKKyNpZiBfX0dOVUNfXyA8IDQK KyNlcnJvciBUaHVtYi0yIGJhcmVib3ggcmVxdWlyZXMgZ2NjID49IDQKKyNlbmRpZgorCisvKiBU aGUgQ1BTUiBiaXQgZGVzY3JpYmluZyB0aGUgaW5zdHJ1Y3Rpb24gc2V0IChUaHVtYikgKi8KKyNk ZWZpbmUgUFNSX0lTRVRTVEFURQlQU1JfVF9CSVQKKworI2RlZmluZSBBUk0oeC4uLikKKyNkZWZp bmUgVEhVTUIoeC4uLikJeAorI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBXKGluc3RyKQlp bnN0ci53CisjZW5kaWYKKyNkZWZpbmUgQlNZTShzeW0pCXN5bSArIDEKKworI2Vsc2UJLyogIUNP TkZJR19USFVNQjJfQkFSRUJPWCAqLworCisvKiBUaGUgQ1BTUiBiaXQgZGVzY3JpYmluZyB0aGUg aW5zdHJ1Y3Rpb24gc2V0IChBUk0pICovCisjZGVmaW5lIFBTUl9JU0VUU1RBVEUJMAorCisjZGVm aW5lIEFSTSh4Li4uKQl4CisjZGVmaW5lIFRIVU1CKHguLi4pCisjaWZkZWYgX19BU1NFTUJMWV9f CisjZGVmaW5lIFcoaW5zdHIpCWluc3RyCisjZW5kaWYKKyNkZWZpbmUgQlNZTShzeW0pCXN5bQor CisjZW5kaWYJLyogQ09ORklHX1RIVU1CMl9CQVJFQk9YICovCisKKyNpZm5kZWYgQ09ORklHX0FS TV9BU01fVU5JRklFRAorCisvKgorICogSWYgdGhlIHVuaWZpZWQgYXNzZW1ibHkgc3ludGF4IGlz bid0IHVzZWQgKGluIEFSTSBtb2RlKSwgdGhlc2UKKyAqIG1hY3JvcyBleHBhbmQgdG8gYW4gZW1w dHkgc3RyaW5nCisgKi8KKyNpZmRlZiBfX0FTU0VNQkxZX18KKwkubWFjcm8JaXQsIGNvbmQKKwku ZW5kbQorCS5tYWNybwlpdHQsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdGUsIGNvbmQKKwkuZW5k bQorCS5tYWNybwlpdHR0LCBjb25kCisJLmVuZG0KKwkubWFjcm8JaXR0ZSwgY29uZAorCS5lbmRt CisJLm1hY3JvCWl0ZXQsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdGVlLCBjb25kCisJLmVuZG0K KwkubWFjcm8JaXR0dHQsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdHR0ZSwgY29uZAorCS5lbmRt CisJLm1hY3JvCWl0dGV0LCBjb25kCisJLmVuZG0KKwkubWFjcm8JaXR0ZWUsIGNvbmQKKwkuZW5k bQorCS5tYWNybwlpdGV0dCwgY29uZAorCS5lbmRtCisJLm1hY3JvCWl0ZXRlLCBjb25kCisJLmVu ZG0KKwkubWFjcm8JaXRlZXQsIGNvbmQKKwkuZW5kbQorCS5tYWNybwlpdGVlZSwgY29uZAorCS5l bmRtCisjZWxzZQkvKiAhX19BU1NFTUJMWV9fICovCitfX2FzbV9fKAorIgkubWFjcm8JaXQsIGNv bmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0dCwgY29uZFxuIgorIgkuZW5kbVxuIgorIgku bWFjcm8JaXRlLCBjb25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdHR0LCBjb25kXG4iCisi CS5lbmRtXG4iCisiCS5tYWNybwlpdHRlLCBjb25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlp dGV0LCBjb25kXG4iCisiCS5lbmRtXG4iCisiCS5tYWNybwlpdGVlLCBjb25kXG4iCisiCS5lbmRt XG4iCisiCS5tYWNybwlpdHR0dCwgY29uZFxuIgorIgkuZW5kbVxuIgorIgkubWFjcm8JaXR0dGUs IGNvbmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0dGV0LCBjb25kXG4iCisiCS5lbmRtXG4i CisiCS5tYWNybwlpdHRlZSwgY29uZFxuIgorIgkuZW5kbVxuIgorIgkubWFjcm8JaXRldHQsIGNv bmRcbiIKKyIJLmVuZG1cbiIKKyIJLm1hY3JvCWl0ZXRlLCBjb25kXG4iCisiCS5lbmRtXG4iCisi CS5tYWNybwlpdGVldCwgY29uZFxuIgorIgkuZW5kbVxuIgorIgkubWFjcm8JaXRlZWUsIGNvbmRc biIKKyIJLmVuZG1cbiIpOworI2VuZGlmCS8qIF9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYJLyog Q09ORklHX0FSTV9BU01fVU5JRklFRCAqLworCisjZW5kaWYJLyogIV9fQVNNX1VOSUZJRURfSCAq LwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91bndpbmQuaCBiL2FyY2gvYXJt NjQvaW5jbHVkZS9hc20vdW53aW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzExYWQzZAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vdW53 aW5kLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3Vud2lu ZC5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFSTSBMaW1pdGVkCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqLworCisjaWZuZGVmIF9f QVNNX1VOV0lORF9ICisjZGVmaW5lIF9fQVNNX1VOV0lORF9ICisKKyNpZm5kZWYgX19BU1NFTUJM WV9fCisKKy8qIFVud2luZCByZWFzb24gY29kZSBhY2NvcmRpbmcgdGhlIHRoZSBBUk0gRUFCSSBk b2N1bWVudHMgKi8KK2VudW0gdW53aW5kX3JlYXNvbl9jb2RlIHsKKwlVUkNfT0sgPSAwLAkJCS8q IG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ICovCisJVVJDX0NPTlRJTlVFX1VOV0lO RCA9IDgsCisJVVJDX0ZBSUxVUkUgPSA5CQkJLyogdW5zcGVjaWZpZWQgZmFpbHVyZSBvZiBzb21l IGtpbmQgKi8KK307CisKK3N0cnVjdCB1bndpbmRfaWR4IHsKKwl1bnNpZ25lZCBsb25nIGFkZHI7 CisJdW5zaWduZWQgbG9uZyBpbnNuOworfTsKKworc3RydWN0IHVud2luZF90YWJsZSB7CisJc3Ry dWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCB1bndpbmRfaWR4ICpzdGFydDsKKwlzdHJ1Y3Qg dW53aW5kX2lkeCAqc3RvcDsKKwl1bnNpZ25lZCBsb25nIGJlZ2luX2FkZHI7CisJdW5zaWduZWQg bG9uZyBlbmRfYWRkcjsKK307CisKK2V4dGVybiBzdHJ1Y3QgdW53aW5kX3RhYmxlICp1bndpbmRf dGFibGVfYWRkKHVuc2lnbmVkIGxvbmcgc3RhcnQsCisJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBz aXplLAorCQkJCQkgICAgIHVuc2lnbmVkIGxvbmcgdGV4dF9hZGRyLAorCQkJCQkgICAgIHVuc2ln bmVkIGxvbmcgdGV4dF9zaXplKTsKK2V4dGVybiB2b2lkIHVud2luZF90YWJsZV9kZWwoc3RydWN0 IHVud2luZF90YWJsZSAqdGFiKTsKK2V4dGVybiB2b2lkIHVud2luZF9iYWNrdHJhY2Uoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpOworCisjZW5kaWYJLyogIV9fQVNTRU1CTFlfXyAqLworCisjZW5kaWYJ LyogX19BU01fVU5XSU5EX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL01ha2VmaWxl IGIvYXJjaC9hcm02NC9saWIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNWI5ZDRhNQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL01ha2VmaWxl CkBAIC0wLDAgKzEsMTYgQEAKK29iai0kKENPTkZJR19BUk1fTElOVVgpCSs9IGFybWxpbnV4Lm8K K29iai0kKENPTkZJR19CT09UTSkJKz0gYm9vdG0ubworb2JqLSQoQ09ORklHX0NNRF9CT09UWikJ Kz0gYm9vdHoubworb2JqLSQoQ09ORklHX0NNRF9CT09UVSkJKz0gYm9vdHUubworb2JqLXkJKz0g ZGl2MC5vCitvYmoteQkrPSBydW50aW1lLW9mZnNldC5vCitwYmwteQkrPSBydW50aW1lLW9mZnNl dC5vCitvYmotJChDT05GSUdfQVJNX09QVElNWkVEX1NUUklOR19GVU5DVElPTlMpCSs9IG1lbWNw eS5vCitvYmotJChDT05GSUdfQVJNX09QVElNWkVEX1NUUklOR19GVU5DVElPTlMpCSs9IG1lbXNl dC5vCitvYmotJChDT05GSUdfQVJNX1VOV0lORCkgKz0gdW53aW5kLm8KK29iai0kKENPTkZJR19N T0RVTEVTKSArPSBtb2R1bGUubworZXh0cmEteSArPSBiYXJlYm94LmxkcworCitwYmwteQkrPSBs aWIxZnVuY3MubworcGJsLXkJKz0gYXNobGRpMy5vCitwYmwteQkrPSBkaXYwLm8KZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvbGliL2FybWxpbnV4LmMgYi9hcmNoL2FybTY0L2xpYi9hcm1saW51eC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYTIyOTIKLS0tIC9kZXYvbnVs bAorKysgYi9hcmNoL2FybTY0L2xpYi9hcm1saW51eC5jCkBAIC0wLDAgKzEsMjc1IEBACisvKgor ICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJI IDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4K KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgIEVyaWsgTW91dyAoSi5BLksuTW91d0BpdHMudHVk ZWxmdC5ubCkKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4JIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKi8KKworI2luY2x1ZGUgPGJvb3QuaD4KKyNpbmNsdWRlIDxjb21tb24uaD4K KyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8ZHJpdmVyLmg+CisjaW5jbHVkZSA8ZW52 aXJvbm1lbnQuaD4KKyNpbmNsdWRlIDxpbWFnZS5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNs dWRlIDxmcy5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDx4ZnVuY3MuaD4K KyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5v Lmg+CisjaW5jbHVkZSA8bWVtb3J5Lmg+CisjaW5jbHVkZSA8b2YuaD4KKyNpbmNsdWRlIDxtYWdp Y3Zhci5oPgorCisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGFzbS9zZXR1 cC5oPgorI2luY2x1ZGUgPGFzbS9iYXJlYm94LWFybS5oPgorI2luY2x1ZGUgPGFzbS9hcm1saW51 eC5oPgorI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KKworc3RhdGljIHN0cnVjdCB0YWcgKnBhcmFt czsKK3N0YXRpYyB2b2lkICphcm1saW51eF9ib290cGFyYW1zID0gTlVMTDsKKworc3RhdGljIGlu dCBhcm1saW51eF9hcmNoaXRlY3R1cmU7CitzdGF0aWMgdTMyIGFybWxpbnV4X3N5c3RlbV9yZXY7 CitzdGF0aWMgdTY0IGFybWxpbnV4X3N5c3RlbV9zZXJpYWw7CisKK0JBUkVCT1hfTUFHSUNWQVIo YXJtbGludXhfYXJjaGl0ZWN0dXJlLCAiQVJNIG1hY2hpbmUgSUQiKTsKK0JBUkVCT1hfTUFHSUNW QVIoYXJtbGludXhfc3lzdGVtX3JldiwgIkFSTSBzeXN0ZW0gcmV2aXNpb24iKTsKK0JBUkVCT1hf TUFHSUNWQVIoYXJtbGludXhfc3lzdGVtX3NlcmlhbCwgIkFSTSBzeXN0ZW0gc2VyaWFsIik7CisK K3ZvaWQgYXJtbGludXhfc2V0X2FyY2hpdGVjdHVyZShpbnQgYXJjaGl0ZWN0dXJlKQoreworCWV4 cG9ydF9lbnZfdWxsKCJhcm1saW51eF9hcmNoaXRlY3R1cmUiLCBhcmNoaXRlY3R1cmUpOworCWFy bWxpbnV4X2FyY2hpdGVjdHVyZSA9IGFyY2hpdGVjdHVyZTsKK30KKworaW50IGFybWxpbnV4X2dl dF9hcmNoaXRlY3R1cmUodm9pZCkKK3sKKwlnZXRlbnZfdWludCgiYXJtbGludXhfYXJjaGl0ZWN0 dXJlIiwgJmFybWxpbnV4X2FyY2hpdGVjdHVyZSk7CisKKwlyZXR1cm4gYXJtbGludXhfYXJjaGl0 ZWN0dXJlOworfQorCit2b2lkIGFybWxpbnV4X3NldF9yZXZpc2lvbih1bnNpZ25lZCBpbnQgcmV2 KQoreworCWV4cG9ydF9lbnZfdWxsKCJhcm1saW51eF9zeXN0ZW1fcmV2IiwgcmV2KTsKKwlhcm1s aW51eF9zeXN0ZW1fcmV2ID0gcmV2OworfQorCit1bnNpZ25lZCBpbnQgYXJtbGludXhfZ2V0X3Jl dmlzaW9uKHZvaWQpCit7CisJZ2V0ZW52X3VpbnQoImFybWxpbnV4X3N5c3RlbV9yZXYiLCAmYXJt bGludXhfc3lzdGVtX3Jldik7CisKKwlyZXR1cm4gYXJtbGludXhfc3lzdGVtX3JldjsKK30KKwor dm9pZCBhcm1saW51eF9zZXRfc2VyaWFsKHU2NCBzZXJpYWwpCit7CisJZXhwb3J0X2Vudl91bGwo ImFybWxpbnV4X3N5c3RlbV9zZXJpYWwiLCBzZXJpYWwpOworCWFybWxpbnV4X3N5c3RlbV9zZXJp YWwgPSBzZXJpYWw7Cit9CisKK3U2NCBhcm1saW51eF9nZXRfc2VyaWFsKHZvaWQpCit7CisJZ2V0 ZW52X3VsbCgiYXJtbGludXhfc3lzdGVtX3NlcmlhbCIsICZhcm1saW51eF9zeXN0ZW1fc2VyaWFs KTsKKworCXJldHVybiBhcm1saW51eF9zeXN0ZW1fc2VyaWFsOworfQorCit2b2lkIGFybWxpbnV4 X3NldF9ib290cGFyYW1zKHZvaWQgKnBhcmFtcykKK3sKKwlhcm1saW51eF9ib290cGFyYW1zID0g cGFyYW1zOworfQorCitzdGF0aWMgc3RydWN0IHRhZyAqYXJtbGludXhfZ2V0X2Jvb3RwYXJhbXMo dm9pZCkKK3sKKwlzdHJ1Y3QgbWVtb3J5X2JhbmsgKm1lbTsKKworCWlmIChhcm1saW51eF9ib290 cGFyYW1zKQorCQlyZXR1cm4gYXJtbGludXhfYm9vdHBhcmFtczsKKworCWZvcl9lYWNoX21lbW9y eV9iYW5rKG1lbSkKKwkJcmV0dXJuICh2b2lkICopbWVtLT5zdGFydCArIDB4MTAwOworCisJQlVH KCk7Cit9CisKKyNpZmRlZiBDT05GSUdfQVJNX0JPQVJEX0FQUEVORF9BVEFHCitzdGF0aWMgc3Ry dWN0IHRhZyAqKCphdGFnX2FwcGVuZGVyKShzdHJ1Y3QgdGFnICopOwordm9pZCBhcm1saW51eF9z ZXRfYXRhZ19hcHBlbmRlcihzdHJ1Y3QgdGFnICooKmZ1bmMpKHN0cnVjdCB0YWcgKikpCit7CisJ YXRhZ19hcHBlbmRlciA9IGZ1bmM7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgc2V0dXBfc3Rh cnRfdGFnKHZvaWQpCit7CisJcGFyYW1zID0gYXJtbGludXhfZ2V0X2Jvb3RwYXJhbXMoKTsKKwor CXBhcmFtcy0+aGRyLnRhZyA9IEFUQUdfQ09SRTsKKwlwYXJhbXMtPmhkci5zaXplID0gdGFnX3Np emUodGFnX2NvcmUpOworCisJcGFyYW1zLT51LmNvcmUuZmxhZ3MgPSAwOworCXBhcmFtcy0+dS5j b3JlLnBhZ2VzaXplID0gMDsKKwlwYXJhbXMtPnUuY29yZS5yb290ZGV2ID0gMDsKKworCXBhcmFt cyA9IHRhZ19uZXh0KHBhcmFtcyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX21lbW9yeV90YWdz KHZvaWQpCit7CisJc3RydWN0IG1lbW9yeV9iYW5rICpiYW5rOworCisJZm9yX2VhY2hfbWVtb3J5 X2JhbmsoYmFuaykgeworCQlwYXJhbXMtPmhkci50YWcgPSBBVEFHX01FTTsKKwkJcGFyYW1zLT5o ZHIuc2l6ZSA9IHRhZ19zaXplKHRhZ19tZW0zMik7CisKKwkJcGFyYW1zLT51Lm1lbS5zdGFydCA9 IGJhbmstPnN0YXJ0OworCQlwYXJhbXMtPnUubWVtLnNpemUgPSBiYW5rLT5zaXplOworCisJCXBh cmFtcyA9IHRhZ19uZXh0KHBhcmFtcyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzZXR1cF9jb21t YW5kbGluZV90YWcoY29uc3QgY2hhciAqY29tbWFuZGxpbmUsIGludCBzd2FwKQoreworCWNvbnN0 IGNoYXIgKnA7CisJc2l6ZV90IHdvcmRzOworCisJaWYgKCFjb21tYW5kbGluZSkKKwkJcmV0dXJu OworCisJLyogZWF0IGxlYWRpbmcgd2hpdGUgc3BhY2UgKi8KKwlmb3IgKHAgPSBjb21tYW5kbGlu ZTsgKnAgPT0gJyAnOyBwKyspIDsKKworCS8qCisJICogc2tpcCBub24tZXhpc3RlbnQgY29tbWFu ZCBsaW5lcyBzbyB0aGUga2VybmVsIHdpbGwgc3RpbGwKKwkgKiB1c2UgaXRzIGRlZmF1bHQgY29t bWFuZCBsaW5lLgorCSAqLworCWlmICgqcCA9PSAnXDAnKQorCQlyZXR1cm47CisKKwl3b3JkcyA9 IChzdHJsZW4ocCkgKyAxIC8qIE5VTCAqLyArIDMgLyogcm91bmQgdXAgKi8pID4+IDI7CisJcGFy YW1zLT5oZHIudGFnID0gQVRBR19DTURMSU5FOworCXBhcmFtcy0+aGRyLnNpemUgPSAoc2l6ZW9m KHN0cnVjdCB0YWdfaGVhZGVyKSA+PiAyKSArIHdvcmRzOworCisJc3RyY3B5KHBhcmFtcy0+dS5j bWRsaW5lLmNtZGxpbmUsIHApOworCisjaWZkZWYgQ09ORklHX0JPT1RfRU5ESUFOTkVTU19TV0lU Q0gKKwlpZiAoc3dhcCkgeworCQl1MzIgKmNtZCA9ICh1MzIgKilwYXJhbXMtPnUuY21kbGluZS5j bWRsaW5lOworCQl3aGlsZSAod29yZHMtLSkKKwkJCWNtZFt3b3Jkc10gPSBzd2FiMzIoY21kW3dv cmRzXSk7CisJfQorI2VuZGlmCisKKwlwYXJhbXMgPSB0YWdfbmV4dChwYXJhbXMpOworfQorCitz dGF0aWMgdm9pZCBzZXR1cF9yZXZpc2lvbl90YWcodm9pZCkKK3sKKwl1MzIgc3lzdGVtX3JldiA9 IGFybWxpbnV4X2dldF9yZXZpc2lvbigpOworCisJaWYgKHN5c3RlbV9yZXYpIHsKKwkJcGFyYW1z LT5oZHIudGFnID0gQVRBR19SRVZJU0lPTjsKKwkJcGFyYW1zLT5oZHIuc2l6ZSA9IHRhZ19zaXpl KHRhZ19yZXZpc2lvbik7CisKKwkJcGFyYW1zLT51LnJldmlzaW9uLnJldiA9IHN5c3RlbV9yZXY7 CisKKwkJcGFyYW1zID0gdGFnX25leHQocGFyYW1zKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNl dHVwX3NlcmlhbF90YWcodm9pZCkKK3sKKwl1NjQgc3lzdGVtX3NlcmlhbCA9IGFybWxpbnV4X2dl dF9zZXJpYWwoKTsKKworCWlmIChzeXN0ZW1fc2VyaWFsKSB7CisJCXBhcmFtcy0+aGRyLnRhZyA9 IEFUQUdfU0VSSUFMOworCQlwYXJhbXMtPmhkci5zaXplID0gdGFnX3NpemUodGFnX3NlcmlhbG5y KTsKKworCQlwYXJhbXMtPnUuc2VyaWFsbnIubG93ICA9IHN5c3RlbV9zZXJpYWwgJiAweGZmZmZm ZmZmOworCQlwYXJhbXMtPnUuc2VyaWFsbnIuaGlnaCA9IHN5c3RlbV9zZXJpYWwgPj4gMzI7CisK KwkJcGFyYW1zID0gdGFnX25leHQocGFyYW1zKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHNldHVw X2luaXRyZF90YWcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQorewor CS8qIGFuIEFUQUdfSU5JVFJEIG5vZGUgdGVsbHMgdGhlIGtlcm5lbCB3aGVyZSB0aGUgY29tcHJl c3NlZAorCSAqIHJhbWRpc2sgY2FuIGJlIGZvdW5kLiBBVEFHX1JESU1HIGlzIGEgYmV0dGVyIG5h bWUsIGFjdHVhbGx5LgorCSAqLworCXBhcmFtcy0+aGRyLnRhZyA9IEFUQUdfSU5JVFJEMjsKKwlw YXJhbXMtPmhkci5zaXplID0gdGFnX3NpemUodGFnX2luaXRyZCk7CisKKwlwYXJhbXMtPnUuaW5p dHJkLnN0YXJ0ID0gc3RhcnQ7CisJcGFyYW1zLT51LmluaXRyZC5zaXplID0gc2l6ZTsKKworCXBh cmFtcyA9IHRhZ19uZXh0KHBhcmFtcyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX2VuZF90YWcg KHZvaWQpCit7CisJcGFyYW1zLT5oZHIudGFnID0gQVRBR19OT05FOworCXBhcmFtcy0+aGRyLnNp emUgPSAwOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF90YWdzKHVuc2lnbmVkIGxvbmcgaW5pdHJk X2FkZHJlc3MsCisJCXVuc2lnbmVkIGxvbmcgaW5pdHJkX3NpemUsIGludCBzd2FwKQoreworCWNv bnN0IGNoYXIgKmNvbW1hbmRsaW5lID0gbGludXhfYm9vdGFyZ3NfZ2V0KCk7CisKKwlzZXR1cF9z dGFydF90YWcoKTsKKwlzZXR1cF9tZW1vcnlfdGFncygpOworCXNldHVwX2NvbW1hbmRsaW5lX3Rh Zyhjb21tYW5kbGluZSwgc3dhcCk7CisKKwlpZiAoaW5pdHJkX3NpemUpCisJCXNldHVwX2luaXRy ZF90YWcoaW5pdHJkX2FkZHJlc3MsIGluaXRyZF9zaXplKTsKKworCXNldHVwX3JldmlzaW9uX3Rh ZygpOworCXNldHVwX3NlcmlhbF90YWcoKTsKKyNpZmRlZiBDT05GSUdfQVJNX0JPQVJEX0FQUEVO RF9BVEFHCisJaWYgKGF0YWdfYXBwZW5kZXIgIT0gTlVMTCkKKwkJcGFyYW1zID0gYXRhZ19hcHBl bmRlcihwYXJhbXMpOworI2VuZGlmCisJc2V0dXBfZW5kX3RhZygpOworCisJcHJpbnRmKCJjb21t YW5kbGluZTogJXNcbiIKKwkgICAgICAgImFyY2hfbnVtYmVyOiAlZFxuIiwgY29tbWFuZGxpbmUs IGFybWxpbnV4X2dldF9hcmNoaXRlY3R1cmUoKSk7CisKK30KKwordm9pZCBzdGFydF9saW51eCh2 b2lkICphZHIsIGludCBzd2FwLCB1bnNpZ25lZCBsb25nIGluaXRyZF9hZGRyZXNzLAorCQl1bnNp Z25lZCBsb25nIGluaXRyZF9zaXplLCB2b2lkICpvZnRyZWUpCit7CisJdm9pZCAoKmtlcm5lbCko aW50IHplcm8sIGludCBhcmNoLCB2b2lkICpwYXJhbXMpID0gYWRyOworCXZvaWQgKnBhcmFtcyA9 IE5VTEw7CisJaW50IGFyY2hpdGVjdHVyZTsKKworCWlmIChvZnRyZWUpIHsKKwkJcHJfZGVidWco ImJvb3Rpbmcga2VybmVsIHdpdGggZGV2aWNldHJlZVxuIik7CisJCXBhcmFtcyA9IG9mdHJlZTsK Kwl9IGVsc2UgeworCQlzZXR1cF90YWdzKGluaXRyZF9hZGRyZXNzLCBpbml0cmRfc2l6ZSwgc3dh cCk7CisJCXBhcmFtcyA9IGFybWxpbnV4X2dldF9ib290cGFyYW1zKCk7CisJfQorCWFyY2hpdGVj dHVyZSA9IGFybWxpbnV4X2dldF9hcmNoaXRlY3R1cmUoKTsKKworCXNodXRkb3duX2JhcmVib3go KTsKKworCWtlcm5lbCgwLCBhcmNoaXRlY3R1cmUsIHBhcmFtcyk7Cit9CmRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2xpYi9hc20tb2Zmc2V0cy5jIGIvYXJjaC9hcm02NC9saWIvYXNtLW9mZnNldHMu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmY2ZDEyCi0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9hcm02NC9saWIvYXNtLW9mZnNldHMuYwpAQCAtMCwwICsxLDE2IEBACisv KgorICogR2VuZXJhdGUgZGVmaW5pdGlvbnMgbmVlZGVkIGJ5IGFzc2VtYmx5IGxhbmd1YWdlIG1v ZHVsZXMuCisgKiBUaGlzIGNvZGUgZ2VuZXJhdGVzIHJhdyBhc20gb3V0cHV0IHdoaWNoIGlzIHBv c3QtcHJvY2Vzc2VkIHRvIGV4dHJhY3QKKyAqIGFuZCBmb3JtYXQgdGhlIHJlcXVpcmVkIGRhdGEu CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgva2J1aWxkLmg+ CisKK2ludCBtYWluKHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2Fy bTY0L2xpYi9iYXJlYm94LmxkcyBiL2FyY2gvYXJtNjQvbGliL2JhcmVib3gubGRzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MjZmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L2xpYi9iYXJlYm94LmxkcwpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqCisgKiBB dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlOyBETyBOT1QgRURJVC4KKyAqIEJhcmVib3gvYXJt NjQgMjAxNi4wMi4wIENvbmZpZ3VyYXRpb24KKyAqCisgKi8KKy8qCisgKiBIZWxwZXIgbWFjcm9z IHRvIHVzZSBDT05GSUdfIG9wdGlvbnMgaW4gQyBleHByZXNzaW9ucy4gTm90ZSB0aGF0CisgKiB0 aGVzZSBvbmx5IHdvcmsgd2l0aCBib29sZWFuIGFuZCB0cmlzdGF0ZSBvcHRpb25zLgorICovCisv KgorICogR2V0dGluZyBzb21ldGhpbmcgdGhhdCB3b3JrcyBpbiBDIGFuZCBDUFAgZm9yIGFuIGFy ZyB0aGF0IG1heSBvciBtYXkKKyAqIG5vdCBiZSBkZWZpbmVkIGlzIHRyaWNreS4gIEhlcmUsIGlm IHdlIGhhdmUgIiNkZWZpbmUgQ09ORklHX0JPT0dFUiAxIgorICogd2UgbWF0Y2ggb24gdGhlIHBs YWNlaG9sZGVyIGRlZmluZSwgaW5zZXJ0IHRoZSAiMCwiIGZvciBhcmcxIGFuZCBnZW5lcmF0ZQor ICogdGhlIHRyaXBsZXQgKDAsIDEsIDApLiAgVGhlbiB0aGUgbGFzdCBzdGVwIGNoZXJyeSBwaWNr cyB0aGUgMm5kIGFyZyAoYSBvbmUpLgorICogV2hlbiBDT05GSUdfQk9PR0VSIGlzIG5vdCBkZWZp bmVkLCB3ZSBnZW5lcmF0ZSBhICguLi4gMSwgMCkgcGFpciwgYW5kIHdoZW4KKyAqIHRoZSBsYXN0 IHN0ZXAgY2hlcnJ5IHBpY2tzIHRoZSAybmQgYXJnLCB3ZSBnZXQgYSB6ZXJvLgorICovCisvKgor ICogSVNfRU5BQkxFRChDT05GSUdfRk9PKSBldmFsdWF0ZXMgdG8gMSBpZiBDT05GSUdfRk9PIGlz IHNldCB0byAneScgb3IgJ20nLAorICogMCBvdGhlcndpc2UuCisgKgorICovCisvKgorICogSVNf QlVJTFRJTihDT05GSUdfRk9PKSBldmFsdWF0ZXMgdG8gMSBpZiBDT05GSUdfRk9PIGlzIHNldCB0 byAneScsIDAKKyAqIG90aGVyd2lzZS4gRm9yIGJvb2xlYW4gb3B0aW9ucywgdGhpcyBpcyBlcXVp dmFsZW50IHRvCisgKiBJU19FTkFCTEVEKENPTkZJR19GT08pLgorICovCisvKgorICogSVNfTU9E VUxFKENPTkZJR19GT08pIGV2YWx1YXRlcyB0byAxIGlmIENPTkZJR19GT08gaXMgc2V0IHRvICdt JywgMAorICogb3RoZXJ3aXNlLgorICovCisvKgorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDQK KyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUu CisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1 dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m CisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqCisgKi8KKy8qCisgKiBBbGlnbiB0byBh IDMyIGJ5dGUgYm91bmRhcnkgZXF1YWwgdG8gdGhlCisgKiBhbGlnbm1lbnQgZ2NjIDQuNSB1c2Vz IGZvciBhIHN0cnVjdAorICovCisvKiBJbmRpcmVjdCBzdHJpbmdpZmljYXRpb24uICBEb2luZyB0 d28gbGV2ZWxzIGFsbG93cyB0aGUgcGFyYW1ldGVyIHRvIGJlIGEKKyAqIG1hY3JvIGl0c2VsZi4g IEZvciBleGFtcGxlLCBjb21waWxlIHdpdGggLURGT089YmFyLCBfX3N0cmluZ2lmeShGT08pCisg KiBjb252ZXJ0cyB0byAiYmFyIi4KKyAqLworLyogdXNlIDIgQVNTRVJUIGJlY2F1c2UgbGQgY2Fu IG5vdCBhY2NlcHQgJyJzaXplIiAiMTAiJyBmb3JtYXQgKi8KK09VVFBVVF9GT1JNQVQoImVsZjY0 LWxpdHRsZWFhcmNoNjQiLCAiZWxmNjQtbGl0dGxlYWFyY2g2NCIsICJlbGY2NC1saXR0bGVhYXJj aDY0IikKK09VVFBVVF9BUkNIKGFhcmNoNjQpCitFTlRSWShzdGFydCkKK1NFQ1RJT05TCit7Cisg LiA9IDB4NDAwMDAwMDA7CisKKyAuID0gQUxJR04oNCk7CisgLnRleHQgOgorIHsKKyAgX3N0ZXh0 ID0gLjsKKyAgX3RleHQgPSAuOworICAqKC50ZXh0X2VudHJ5KikKKyAgX19iYXJlX2luaXRfc3Rh cnQgPSAuOworICAqKC50ZXh0X2JhcmVfaW5pdCopCisgIF9fYmFyZV9pbml0X2VuZCA9IC47Cisg IF9fZXhjZXB0aW9uc19zdGFydCA9IC47CisgIEtFRVAoKigudGV4dF9leGNlcHRpb25zKikpCisg IF9fZXhjZXB0aW9uc19zdG9wID0gLjsKKyAgKigudGV4dCopCisgfQorIF9iYXJlYm94X2JhcmVf aW5pdF9zaXplID0gX19iYXJlX2luaXRfZW5kIC0gX3RleHQ7IEFTU0VSVChfYmFyZWJveF9iYXJl X2luaXRfc2l6ZSA8IDB4MDEwMDAwMDAsICJCYXJlYm94IGJhcmVfaW5pdCBzaXplID4gIikgQVNT RVJUKF9iYXJlYm94X2JhcmVfaW5pdF9zaXplIDwgMHgwMTAwMDAwMCwgIjB4MDEwMDAwMDAiKQor IC4gPSBBTElHTig0KTsKKyAucm9kYXRhIDogeyAqKC5yb2RhdGEqKSB9CisgX2V0ZXh0ID0gLjsg LyogRW5kIG9mIHRleHQgYW5kIHJvZGF0YSBzZWN0aW9uICovCisgX3NkYXRhID0gLjsKKyAuID0g QUxJR04oNCk7CisgLmRhdGEgOiB7ICooLmRhdGEqKSB9CisgLmJhcmVib3hfaW1kIDogeyBLRUVQ KCooLmJhcmVib3hfaW1kX3N0YXJ0KSkgS0VFUCgqKC5iYXJlYm94X2ltZF8xKikpICooLmJhcmVi b3hfaW1kXzAqKSBLRUVQKCooLmJhcmVib3hfaW1kX2VuZCkpIH0KKyAuID0gLjsKKyBfX2JhcmVi b3hfY21kX3N0YXJ0ID0gLjsKKyAuYmFyZWJveF9jbWQgOiB7IEtFRVAoKihTT1JUX0JZX05BTUUo LmJhcmVib3hfY21kKikpKSB9CisgX19iYXJlYm94X2NtZF9lbmQgPSAuOworIF9fYmFyZWJveF9t YWdpY3Zhcl9zdGFydCA9IC47CisgLmJhcmVib3hfbWFnaWN2YXIgOiB7IEtFRVAoKihTT1JUX0JZ X05BTUUoLmJhcmVib3hfbWFnaWN2YXIqKSkpIH0KKyBfX2JhcmVib3hfbWFnaWN2YXJfZW5kID0g LjsKKyBfX2JhcmVib3hfaW5pdGNhbGxzX3N0YXJ0ID0gLjsKKyAuYmFyZWJveF9pbml0Y2FsbHMg OiB7IEtFRVAoKiguaW5pdGNhbGwuMCkpIEtFRVAoKiguaW5pdGNhbGwuMSkpIEtFRVAoKiguaW5p dGNhbGwuMikpIEtFRVAoKiguaW5pdGNhbGwuMykpIEtFRVAoKiguaW5pdGNhbGwuNCkpIEtFRVAo KiguaW5pdGNhbGwuNSkpIEtFRVAoKiguaW5pdGNhbGwuNikpIEtFRVAoKiguaW5pdGNhbGwuNykp IEtFRVAoKiguaW5pdGNhbGwuOCkpIEtFRVAoKiguaW5pdGNhbGwuOSkpIEtFRVAoKiguaW5pdGNh bGwuMTApKSBLRUVQKCooLmluaXRjYWxsLjExKSkgS0VFUCgqKC5pbml0Y2FsbC4xMikpIEtFRVAo KiguaW5pdGNhbGwuMTMpKSBLRUVQKCooLmluaXRjYWxsLjE0KSkgfQorIF9fYmFyZWJveF9pbml0 Y2FsbHNfZW5kID0gLjsKKyBfX2JhcmVib3hfZXhpdGNhbGxzX3N0YXJ0ID0gLjsKKyAuYmFyZWJv eF9leGl0Y2FsbHMgOiB7IEtFRVAoKiguZXhpdGNhbGwuMCkpIEtFRVAoKiguZXhpdGNhbGwuMSkp IEtFRVAoKiguZXhpdGNhbGwuMikpIEtFRVAoKiguZXhpdGNhbGwuMykpIEtFRVAoKiguZXhpdGNh bGwuNCkpIEtFRVAoKiguZXhpdGNhbGwuNSkpIEtFRVAoKiguZXhpdGNhbGwuNikpIH0KKyBfX2Jh cmVib3hfZXhpdGNhbGxzX2VuZCA9IC47CisgX191c3ltdGFiX3N0YXJ0ID0gLjsKKyBfX3VzeW10 YWIgOiB7IEtFRVAoKihfX3VzeW10YWIpKSB9CisgX191c3ltdGFiX2VuZCA9IC47CisgLm9mdGFi bGVzIDogeyAuID0gQUxJR04oOCk7IF9fY2xrX29mX3RhYmxlX3N0YXJ0ID0gLjsgS0VFUCgqKC5f X2Nsa19vZl90YWJsZSkpOyBLRUVQKCooLl9fY2xrX29mX3RhYmxlX2VuZCkpOyBfX2Nsa19vZl90 YWJsZV9lbmQgPSAuOyB9CisgLmR0YiA6IHsgLiA9IEFMSUdOKDgpOyBfX2R0Yl9zdGFydCA9IC47 IEtFRVAoKiguZHRiLnJvZGF0YS4qKSk7IF9fZHRiX2VuZCA9IC47IH0KKyAucmVsLmR5biA6IHsK KyAgX19yZWxfZHluX3N0YXJ0ID0gLjsKKyAgKigucmVsKikKKyAgX19yZWxfZHluX2VuZCA9IC47 CisgfQorIC5keW5zeW0gOiB7CisgIF9fZHluc3ltX3N0YXJ0ID0gLjsKKyAgKiguZHluc3ltKQor ICBfX2R5bnN5bV9lbmQgPSAuOworIH0KKyBfZWRhdGEgPSAuOworIC4gPSBBTElHTig0KTsKKyBf X2Jzc19zdGFydCA9IC47CisgLmJzcyA6IHsgKiguYnNzKikgfQorIF9fYnNzX3N0b3AgPSAuOwor IF9lbmQgPSAuOworIF9iYXJlYm94X2ltYWdlX3NpemUgPSBfX2Jzc19zdGFydCAtIDB4NDAwMDAw MDA7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9iYXJlYm94Lmxkcy5TIGIvYXJjaC9h cm02NC9saWIvYmFyZWJveC5sZHMuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4yNDA2OTlmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9saWIvYmFyZWJveC5sZHMu UwpAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA0CisgKiBX b2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoK KyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0 byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICog dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKgorICovCisKKyNpbmNsdWRlIDxhc20tZ2VuZXJp Yy9iYXJlYm94Lmxkcy5oPgorCitPVVRQVVRfRk9STUFUKCJlbGY2NC1saXR0bGVhYXJjaDY0Iiwg ImVsZjY0LWxpdHRsZWFhcmNoNjQiLCAiZWxmNjQtbGl0dGxlYWFyY2g2NCIpCitPVVRQVVRfQVJD SChhYXJjaDY0KQorRU5UUlkoc3RhcnQpCitTRUNUSU9OUworeworI2lmZGVmIENPTkZJR19SRUxP Q0FUQUJMRQorCS4gPSAweDA7CisjZWxzZQorCS4gPSBURVhUX0JBU0U7CisjZW5kaWYKKworI2lm bmRlZiBDT05GSUdfUEJMX0lNQUdFCisJUFJFX0lNQUdFCisjZW5kaWYKKwkuID0gQUxJR04oNCk7 CisJLnRleHQgICAgICA6CisJeworCQlfc3RleHQgPSAuOworCQlfdGV4dCA9IC47CisJCSooLnRl eHRfZW50cnkqKQorCQlfX2JhcmVfaW5pdF9zdGFydCA9IC47CisJCSooLnRleHRfYmFyZV9pbml0 KikKKwkJX19iYXJlX2luaXRfZW5kID0gLjsKKwkJX19leGNlcHRpb25zX3N0YXJ0ID0gLjsKKwkJ S0VFUCgqKC50ZXh0X2V4Y2VwdGlvbnMqKSkKKwkJX19leGNlcHRpb25zX3N0b3AgPSAuOworCQkq KC50ZXh0KikKKwl9CisJQkFSRUJPWF9CQVJFX0lOSVRfU0laRQorCisJLiA9IEFMSUdOKDQpOwor CS5yb2RhdGEgOiB7ICooLnJvZGF0YSopIH0KKworI2lmZGVmIENPTkZJR19BUk1fVU5XSU5ECisJ LyoKKwkgKiBTdGFjayB1bndpbmRpbmcgdGFibGVzCisJICovCisJLiA9IEFMSUdOKDgpOworCS5B Uk0udW53aW5kX2lkeCA6IHsKKwkJX19zdGFydF91bndpbmRfaWR4ID0gLjsKKwkJKiguQVJNLmV4 aWR4KikKKwkJX19zdG9wX3Vud2luZF9pZHggPSAuOworCX0KKwkuQVJNLnVud2luZF90YWIgOiB7 CisJCV9fc3RhcnRfdW53aW5kX3RhYiA9IC47CisJCSooLkFSTS5leHRhYiopCisJCV9fc3RvcF91 bndpbmRfdGFiID0gLjsKKwl9CisjZW5kaWYKKwlfZXRleHQgPSAuOwkJCS8qIEVuZCBvZiB0ZXh0 IGFuZCByb2RhdGEgc2VjdGlvbiAqLworCV9zZGF0YSA9IC47CisKKwkuID0gQUxJR04oNCk7CisJ LmRhdGEgOiB7ICooLmRhdGEqKSB9CisKKwkuYmFyZWJveF9pbWQgOiB7IEJBUkVCT1hfSU1EIH0K KworCS4gPSAuOworCV9fYmFyZWJveF9jbWRfc3RhcnQgPSAuOworCS5iYXJlYm94X2NtZCA6IHsg QkFSRUJPWF9DTURTIH0KKwlfX2JhcmVib3hfY21kX2VuZCA9IC47CisKKwlfX2JhcmVib3hfbWFn aWN2YXJfc3RhcnQgPSAuOworCS5iYXJlYm94X21hZ2ljdmFyIDogeyBCQVJFQk9YX01BR0lDVkFS UyB9CisJX19iYXJlYm94X21hZ2ljdmFyX2VuZCA9IC47CisKKwlfX2JhcmVib3hfaW5pdGNhbGxz X3N0YXJ0ID0gLjsKKwkuYmFyZWJveF9pbml0Y2FsbHMgOiB7IElOSVRDQUxMUyB9CisJX19iYXJl Ym94X2luaXRjYWxsc19lbmQgPSAuOworCisJX19iYXJlYm94X2V4aXRjYWxsc19zdGFydCA9IC47 CisJLmJhcmVib3hfZXhpdGNhbGxzIDogeyBFWElUQ0FMTFMgfQorCV9fYmFyZWJveF9leGl0Y2Fs bHNfZW5kID0gLjsKKworCV9fdXN5bXRhYl9zdGFydCA9IC47CisJX191c3ltdGFiIDogeyBCQVJF Qk9YX1NZTVMgfQorCV9fdXN5bXRhYl9lbmQgPSAuOworCisJLm9mdGFibGVzIDogeyBCQVJFQk9Y X0NMS19UQUJMRSgpIH0KKworCS5kdGIgOiB7IEJBUkVCT1hfRFRCKCkgfQorCisJLnJlbC5keW4g OiB7CisJCV9fcmVsX2R5bl9zdGFydCA9IC47CisJCSooLnJlbCopCisJCV9fcmVsX2R5bl9lbmQg PSAuOworCX0KKworCS5keW5zeW0gOiB7CisJCV9fZHluc3ltX3N0YXJ0ID0gLjsKKwkJKiguZHlu c3ltKQorCQlfX2R5bnN5bV9lbmQgPSAuOworCX0KKworCV9lZGF0YSA9IC47CisKKwkuID0gQUxJ R04oNCk7CisJX19ic3Nfc3RhcnQgPSAuOworCS5ic3MgOiB7ICooLmJzcyopIH0KKwlfX2Jzc19z dG9wID0gLjsKKwlfZW5kID0gLjsKKwlfYmFyZWJveF9pbWFnZV9zaXplID0gX19ic3Nfc3RhcnQg LSBURVhUX0JBU0U7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9ib290bS5jIGIvYXJj aC9hcm02NC9saWIvYm9vdG0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x OTEzZDVmCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9saWIvYm9vdG0uYwpAQCAtMCww ICsxLDU3MiBAQAorI2luY2x1ZGUgPGJvb3QuaD4KKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNs dWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8ZHJpdmVyLmg+CisjaW5jbHVkZSA8ZW52aXJvbm1l bnQuaD4KKyNpbmNsdWRlIDxpbWFnZS5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxm cy5oPgorI2luY2x1ZGUgPGxpYmZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5j bHVkZSA8eGZ1bmNzLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4K KyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8 bGliYmIuaD4KKyNpbmNsdWRlIDxtYWdpY3Zhci5oPgorI2luY2x1ZGUgPGJpbmZtdC5oPgorI2lu Y2x1ZGUgPHJlc3RhcnQuaD4KKworI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKyNpbmNsdWRl IDxhc20vc2V0dXAuaD4KKyNpbmNsdWRlIDxhc20vYmFyZWJveC1hcm0uaD4KKyNpbmNsdWRlIDxh c20vYXJtbGludXguaD4KKyNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CisKKy8qCisgKiBzZHJhbV9z dGFydF9hbmRfc2l6ZSgpIC0gZGV0ZXJtaW5lIHBsYWNlIGZvciBwdXR0aW5nIHRoZSBrZXJuZWwv b2Z0cmVlL2luaXRyZAorICoKKyAqIEBzdGFydDoJcmV0dXJucyB0aGUgc3RhcnQgYWRkcmVzcyBv ZiB0aGUgZmlyc3QgUkFNIGJhbmsKKyAqIEBzaXplOglyZXR1cm5zIHRoZSB1c2FibGUgc3BhY2Ug YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlyc3QgUkFNIGJhbmsKKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIHJldHVybnMgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgZmlyc3QgUkFNIGJhbmsgYW5kIHRo ZSBmcmVlCisgKiBzcGFjZSBmb3VuZCB0aGVyZS4KKyAqCisgKiByZXR1cm46IDAgZm9yIHN1Y2Nl c3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisgKi8KK3N0YXRpYyBpbnQgc2RyYW1f c3RhcnRfYW5kX3NpemUodW5zaWduZWQgbG9uZyAqc3RhcnQsIHVuc2lnbmVkIGxvbmcgKnNpemUp Cit7CisJc3RydWN0IG1lbW9yeV9iYW5rICpiYW5rOworCXN0cnVjdCByZXNvdXJjZSAqcmVzOwor CisJLyoKKwkgKiBXZSB1c2UgdGhlIGZpcnN0IG1lbW9yeSBiYW5rIGZvciB0aGUga2VybmVsIGFu ZCBvdGhlciByZXNvdXJjZXMKKwkgKi8KKwliYW5rID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxs KCZtZW1vcnlfYmFua3MsIHN0cnVjdCBtZW1vcnlfYmFuaywKKwkJCWxpc3QpOworCWlmICghYmFu aykgeworCQlwcmludGYoImNhbm5vdCBmaW5kIGZpcnN0IG1lbW9yeSBiYW5rXG4iKTsKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJLyoKKwkgKiBJZiB0aGUgZmlyc3QgbWVtb3J5IGJhbmsgaGFz IGNoaWxkIHJlc291cmNlcyB3ZSBjYW4gdXNlIHRoZSBiYW5rIHVwCisJICogdG8gdGhlIGJlZ2lu bmluZyBvZiB0aGUgZmlyc3QgY2hpbGQgcmVzb3VyY2UsIG90aGVyd2lzZSB3ZSBjYW4gdXNlCisJ ICogdGhlIHdob2xlIGJhbmsuCisJICovCisJcmVzID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxs KCZiYW5rLT5yZXMtPmNoaWxkcmVuLCBzdHJ1Y3QgcmVzb3VyY2UsCisJCQlzaWJsaW5nKTsKKwlp ZiAocmVzKQorCQkqc2l6ZSA9IHJlcy0+c3RhcnQgLSBiYW5rLT5zdGFydDsKKwllbHNlCisJCSpz aXplID0gYmFuay0+c2l6ZTsKKworCSpzdGFydCA9IGJhbmstPnN0YXJ0OworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgX19kb19ib290bV9saW51eChzdHJ1Y3QgaW1hZ2VfZGF0YSAqZGF0 YSwgdW5zaWduZWQgbG9uZyBmcmVlX21lbSwgaW50IHN3YXApCit7CisJdW5zaWduZWQgbG9uZyBr ZXJuZWw7CisJdW5zaWduZWQgbG9uZyBpbml0cmRfc3RhcnQgPSAwLCBpbml0cmRfc2l6ZSA9IDAs IGluaXRyZF9lbmQgPSAwOworCWludCByZXQ7CisKKwlrZXJuZWwgPSBkYXRhLT5vc19yZXMtPnN0 YXJ0ICsgZGF0YS0+b3NfZW50cnk7CisKKwlpbml0cmRfc3RhcnQgPSBkYXRhLT5pbml0cmRfYWRk cmVzczsKKworCWlmIChpbml0cmRfc3RhcnQgPT0gVUlNQUdFX0lOVkFMSURfQUREUkVTUykgewor CQlpbml0cmRfc3RhcnQgPSBQQUdFX0FMSUdOKGZyZWVfbWVtKTsKKworCQlpZiAoYm9vdG1fdmVy Ym9zZShkYXRhKSkgeworCQkJcHJpbnRmKCJubyBpbml0cmQgbG9hZCBhZGRyZXNzLCBkZWZhdWx0 aW5nIHRvIDB4JTA4bHhcbiIsCisJCQkJaW5pdHJkX3N0YXJ0KTsKKwkJfQorCX0KKworCWlmIChi b290bV9oYXNfaW5pdHJkKGRhdGEpKSB7CisJCXJldCA9IGJvb3RtX2xvYWRfaW5pdHJkKGRhdGEs IGluaXRyZF9zdGFydCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCWlmIChk YXRhLT5pbml0cmRfcmVzKSB7CisJCWluaXRyZF9zdGFydCA9IGRhdGEtPmluaXRyZF9yZXMtPnN0 YXJ0OworCQlpbml0cmRfZW5kID0gZGF0YS0+aW5pdHJkX3Jlcy0+ZW5kOworCQlpbml0cmRfc2l6 ZSA9IHJlc291cmNlX3NpemUoZGF0YS0+aW5pdHJkX3Jlcyk7CisJCWZyZWVfbWVtID0gUEFHRV9B TElHTihpbml0cmRfZW5kKTsKKwl9CisKKwlyZXQgPSBib290bV9sb2FkX2RldmljZXRyZWUoZGF0 YSwgZnJlZV9tZW0pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAoYm9vdG1fdmVy Ym9zZShkYXRhKSkgeworCQlwcmludGYoIlxuU3RhcnRpbmcga2VybmVsIGF0IDB4JTA4bHgiLCBr ZXJuZWwpOworCQlpZiAoaW5pdHJkX3NpemUpCisJCQlwcmludGYoIiwgaW5pdHJkIGF0IDB4JTA4 bHgiLCBpbml0cmRfc3RhcnQpOworCQlpZiAoZGF0YS0+b2Z0cmVlKQorCQkJcHJpbnRmKCIsIG9m dHJlZSBhdCAweCVwIiwgZGF0YS0+b2Z0cmVlKTsKKwkJcHJpbnRmKCIuLi5cbiIpOworCX0KKwor CWlmIChkYXRhLT5kcnlydW4pCisJCXJldHVybiAwOworCisJc3RhcnRfbGludXgoKHZvaWQgKilr ZXJuZWwsIHN3YXAsIGluaXRyZF9zdGFydCwgaW5pdHJkX3NpemUsIGRhdGEtPm9mdHJlZSk7CisK KwlyZXN0YXJ0X21hY2hpbmUoKTsKKworCXJldHVybiAtRVJFU1RBUlRTWVM7Cit9CisKK3N0YXRp YyBpbnQgZG9fYm9vdG1fbGludXgoc3RydWN0IGltYWdlX2RhdGEgKmRhdGEpCit7CisJdW5zaWdu ZWQgbG9uZyBsb2FkX2FkZHJlc3MsIG1lbV9zdGFydCwgbWVtX3NpemUsIG1lbV9mcmVlOworCWlu dCByZXQ7CisKKwlyZXQgPSBzZHJhbV9zdGFydF9hbmRfc2l6ZSgmbWVtX3N0YXJ0LCAmbWVtX3Np emUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlsb2FkX2FkZHJlc3MgPSBkYXRhLT5v c19hZGRyZXNzOworCisJaWYgKGxvYWRfYWRkcmVzcyA9PSBVSU1BR0VfSU5WQUxJRF9BRERSRVNT KSB7CisJCS8qCisJCSAqIEp1c3QgdXNlIGEgY29uc2VydmF0aXZlIGRlZmF1bHQgb2YgNCB0aW1l cyB0aGUgc2l6ZSBvZiB0aGUKKwkJICogY29tcHJlc3NlZCBpbWFnZSwgdG8gYXZvaWQgdGhlIG5l ZWQgZm9yIHRoZSBrZXJuZWwgdG8KKwkJICogcmVsb2NhdGUgaXRzZWxmIGJlZm9yZSBkZWNvbXBy ZXNzaW9uLgorCQkgKi8KKwkJbG9hZF9hZGRyZXNzID0gbWVtX3N0YXJ0ICsgUEFHRV9BTElHTigK KwkJICAgICAgICAgICAgICAgYm9vdG1fZ2V0X29zX3NpemUoZGF0YSkgKiA0KTsKKwkJaWYgKGJv b3RtX3ZlcmJvc2UoZGF0YSkpCisJCQlwcmludGYoIm5vIE9TIGxvYWQgYWRkcmVzcywgZGVmYXVs dGluZyB0byAweCUwOGx4XG4iLAorCQkJCWxvYWRfYWRkcmVzcyk7CisJfQorCisJcmV0ID0gYm9v dG1fbG9hZF9vcyhkYXRhLCBsb2FkX2FkZHJlc3MpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwkvKgorCSAqIHB1dCBvZnRyZWUvaW5pdHJkIGNsb3NlIGJlaGluZCBjb21wcmVzc2VkIGtl cm5lbCBpbWFnZSB0byBhdm9pZAorCSAqIHBsYWNpbmcgaXQgb3V0c2lkZSBvZiB0aGUga2VybmVs cyBsb3dtZW0uCisJICovCisJbWVtX2ZyZWUgPSBQQUdFX0FMSUdOKGRhdGEtPm9zX3Jlcy0+ZW5k ICsgU1pfMU0pOworCisJcmV0dXJuIF9fZG9fYm9vdG1fbGludXgoZGF0YSwgbWVtX2ZyZWUsIDAp OworfQorCitzdGF0aWMgc3RydWN0IGltYWdlX2hhbmRsZXIgdWltYWdlX2hhbmRsZXIgPSB7CisJ Lm5hbWUgPSAiQVJNIExpbnV4IHVJbWFnZSIsCisJLmJvb3RtID0gZG9fYm9vdG1fbGludXgsCisJ LmZpbGV0eXBlID0gZmlsZXR5cGVfdWltYWdlLAorCS5paF9vcyA9IElIX09TX0xJTlVYLAorfTsK Kworc3RhdGljIHN0cnVjdCBpbWFnZV9oYW5kbGVyIHJhd2ltYWdlX2hhbmRsZXIgPSB7CisJLm5h bWUgPSAiQVJNIHJhdyBpbWFnZSIsCisJLmJvb3RtID0gZG9fYm9vdG1fbGludXgsCisJLmZpbGV0 eXBlID0gZmlsZXR5cGVfdW5rbm93biwKK307CisKK3N0cnVjdCB6aW1hZ2VfaGVhZGVyIHsKKwl1 MzIJdW51c2VkWzldOworCXUzMgltYWdpYzsKKwl1MzIJc3RhcnQ7CisJdTMyCWVuZDsKK307CisK KyNkZWZpbmUgWklNQUdFX01BR0lDIDB4MDE2RjI4MTgKKworc3RhdGljIGludCBkb19ib290el9s aW51eF9mZHQoaW50IGZkLCBzdHJ1Y3QgaW1hZ2VfZGF0YSAqZGF0YSkKK3sKKwlzdHJ1Y3QgZmR0 X2hlYWRlciBfX2hlYWRlciwgKmhlYWRlcjsKKwl2b2lkICpvZnRyZWU7CisJaW50IHJldDsKKwor CXUzMiBlbmQ7CisKKwlpZiAoZGF0YS0+b2Z0cmVlKQorCQlyZXR1cm4gLUVOWElPOworCisJaGVh ZGVyID0gJl9faGVhZGVyOworCXJldCA9IHJlYWQoZmQsIGhlYWRlciwgc2l6ZW9mKCpoZWFkZXIp KTsKKwlpZiAocmV0IDwgc2l6ZW9mKCpoZWFkZXIpKQorCQlyZXR1cm4gcmV0OworCisJaWYgKGZp bGVfZGV0ZWN0X3R5cGUoaGVhZGVyLCBzaXplb2YoKmhlYWRlcikpICE9IGZpbGV0eXBlX29mdHJl ZSkKKwkJcmV0dXJuIC1FTlhJTzsKKworCWVuZCA9IGJlMzJfdG9fY3B1KGhlYWRlci0+dG90YWxz aXplKTsKKworCW9mdHJlZSA9IG1hbGxvYyhlbmQgKyAweDgwMDApOworCWlmICghb2Z0cmVlKSB7 CisJCXBlcnJvcigiekltYWdlOiBvZnRyZWUgbWFsbG9jIik7CisJCXJldHVybiAtRU5PTUVNOwor CX0KKworCW1lbWNweShvZnRyZWUsIGhlYWRlciwgc2l6ZW9mKCpoZWFkZXIpKTsKKworCWVuZCAt PSBzaXplb2YoKmhlYWRlcik7CisKKwlyZXQgPSByZWFkX2Z1bGwoZmQsIG9mdHJlZSArIHNpemVv ZigqaGVhZGVyKSwgZW5kKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfZnJlZTsKKwlpZiAo cmV0IDwgZW5kKSB7CisJCXByaW50ZigicHJlbWF0dXJlIGVuZCBvZiBpbWFnZVxuIik7CisJCXJl dCA9IC1FSU87CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJaWYgKElTX0JVSUxUSU4oQ09ORklH X09GVFJFRSkpIHsKKwkJZGF0YS0+b2Zfcm9vdF9ub2RlID0gb2ZfdW5mbGF0dGVuX2R0YihvZnRy ZWUpOworCQlpZiAoIWRhdGEtPm9mX3Jvb3Rfbm9kZSkgeworCQkJcHJfZXJyKCJ1bmFibGUgdG8g dW5mbGF0dGVuIGRldmljZXRyZWVcbiIpOworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJy X2ZyZWU7CisJCX0KKwkJZnJlZShvZnRyZWUpOworCX0gZWxzZSB7CisJCWRhdGEtPm9mdHJlZSA9 IG9mdHJlZTsKKwl9CisKKwlwcl9pbmZvKCJ6SW1hZ2U6IGNvbmNhdGVuYXRlZCBvZnRyZWUgZGV0 ZWN0ZWRcbiIpOworCisJcmV0dXJuIDA7CisKK2Vycl9mcmVlOgorCWZyZWUob2Z0cmVlKTsKKwor CXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZG9fYm9vdHpfbGludXgoc3RydWN0IGltYWdl X2RhdGEgKmRhdGEpCit7CisJaW50IGZkLCByZXQsIHN3YXAgPSAwOworCXN0cnVjdCB6aW1hZ2Vf aGVhZGVyIF9faGVhZGVyLCAqaGVhZGVyOworCXZvaWQgKnppbWFnZTsKKwl1MzIgZW5kLCBzdGFy dDsKKwlzaXplX3QgaW1hZ2Vfc2l6ZTsKKwl1bnNpZ25lZCBsb25nIGxvYWRfYWRkcmVzcyA9IGRh dGEtPm9zX2FkZHJlc3M7CisJdW5zaWduZWQgbG9uZyBtZW1fc3RhcnQsIG1lbV9zaXplLCBtZW1f ZnJlZTsKKworCXJldCA9IHNkcmFtX3N0YXJ0X2FuZF9zaXplKCZtZW1fc3RhcnQsICZtZW1fc2l6 ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWZkID0gb3BlbihkYXRhLT5vc19maWxl LCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoIm9wZW4iKTsKKwkJcmV0dXJu IDE7CisJfQorCisJaGVhZGVyID0gJl9faGVhZGVyOworCXJldCA9IHJlYWQoZmQsIGhlYWRlciwg c2l6ZW9mKCpoZWFkZXIpKTsKKwlpZiAocmV0IDwgc2l6ZW9mKCpoZWFkZXIpKSB7CisJCXByaW50 ZigiY291bGQgbm90IHJlYWQgJXNcbiIsIGRhdGEtPm9zX2ZpbGUpOworCQlnb3RvIGVycl9vdXQ7 CisJfQorCisJc3dpdGNoIChoZWFkZXItPm1hZ2ljKSB7CisJY2FzZSBzd2FiMzIoWklNQUdFX01B R0lDKToKKwkJc3dhcCA9IDE7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgWklNQUdFX01B R0lDOgorCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGYoImludmFsaWQgbWFnaWMgMHglMDh4 XG4iLCBoZWFkZXItPm1hZ2ljKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBlcnJfb3V0Owor CX0KKworCWVuZCA9IGhlYWRlci0+ZW5kOworCXN0YXJ0ID0gaGVhZGVyLT5zdGFydDsKKworCWlm IChzd2FwKSB7CisJCWVuZCA9IHN3YWIzMihlbmQpOworCQlzdGFydCA9IHN3YWIzMihzdGFydCk7 CisJfQorCisJaW1hZ2Vfc2l6ZSA9IGVuZCAtIHN0YXJ0OworCisJaWYgKGxvYWRfYWRkcmVzcyA9 PSBVSU1BR0VfSU5WQUxJRF9BRERSRVNTKSB7CisJCS8qCisJCSAqIEp1c3QgdXNlIGEgY29uc2Vy dmF0aXZlIGRlZmF1bHQgb2YgNCB0aW1lcyB0aGUgc2l6ZSBvZiB0aGUKKwkJICogY29tcHJlc3Nl ZCBpbWFnZSwgdG8gYXZvaWQgdGhlIG5lZWQgZm9yIHRoZSBrZXJuZWwgdG8KKwkJICogcmVsb2Nh dGUgaXRzZWxmIGJlZm9yZSBkZWNvbXByZXNzaW9uLgorCQkgKi8KKwkJZGF0YS0+b3NfYWRkcmVz cyA9IG1lbV9zdGFydCArIFBBR0VfQUxJR04oaW1hZ2Vfc2l6ZSAqIDQpOworCisJCWxvYWRfYWRk cmVzcyA9IGRhdGEtPm9zX2FkZHJlc3M7CisJCWlmIChib290bV92ZXJib3NlKGRhdGEpKQorCQkJ cHJpbnRmKCJubyBPUyBsb2FkIGFkZHJlc3MsIGRlZmF1bHRpbmcgdG8gMHglMDhseFxuIiwKKwkJ CQlsb2FkX2FkZHJlc3MpOworCX0KKworCWRhdGEtPm9zX3JlcyA9IHJlcXVlc3Rfc2RyYW1fcmVn aW9uKCJ6aW1hZ2UiLCBsb2FkX2FkZHJlc3MsIGltYWdlX3NpemUpOworCWlmICghZGF0YS0+b3Nf cmVzKSB7CisJCXByX2VycigiYm9vdG0vekltYWdlOiBmYWlsZWQgdG8gcmVxdWVzdCBtZW1vcnkg YXQgMHglbHggdG8gMHglbHggKCVkKS5cbiIsCisJCSAgICAgICBsb2FkX2FkZHJlc3MsIGxvYWRf YWRkcmVzcyArIGltYWdlX3NpemUsIGltYWdlX3NpemUpOworCQlyZXQgPSAtRU5PTUVNOworCQln b3RvIGVycl9vdXQ7CisJfQorCisJemltYWdlID0gKHZvaWQgKilkYXRhLT5vc19yZXMtPnN0YXJ0 OworCisJbWVtY3B5KHppbWFnZSwgaGVhZGVyLCBzaXplb2YoKmhlYWRlcikpOworCisJcmV0ID0g cmVhZF9mdWxsKGZkLCB6aW1hZ2UgKyBzaXplb2YoKmhlYWRlciksCisJCQlpbWFnZV9zaXplIC0g c2l6ZW9mKCpoZWFkZXIpKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfb3V0OworCWlmIChy ZXQgPCBpbWFnZV9zaXplIC0gc2l6ZW9mKCpoZWFkZXIpKSB7CisJCXByaW50ZigicHJlbWF0dXJl IGVuZCBvZiBpbWFnZVxuIik7CisJCXJldCA9IC1FSU87CisJCWdvdG8gZXJyX291dDsKKwl9CisK KwlpZiAoc3dhcCkgeworCQl2b2lkICpwdHI7CisJCWZvciAocHRyID0gemltYWdlOyBwdHIgPCB6 aW1hZ2UgKyBlbmQ7IHB0ciArPSA0KQorCQkJKih1MzIgKilwdHIgPSBzd2FiMzIoKih1MzIgKilw dHIpOworCX0KKworCXJldCA9IGRvX2Jvb3R6X2xpbnV4X2ZkdChmZCwgZGF0YSk7CisJaWYgKHJl dCAmJiByZXQgIT0gLUVOWElPKQorCQlnb3RvIGVycl9vdXQ7CisKKwljbG9zZShmZCk7CisKKwkv KgorCSAqIHB1dCBvZnRyZWUvaW5pdHJkIGNsb3NlIGJlaGluZCBjb21wcmVzc2VkIGtlcm5lbCBp bWFnZSB0byBhdm9pZAorCSAqIHBsYWNpbmcgaXQgb3V0c2lkZSBvZiB0aGUga2VybmVscyBsb3dt ZW0uCisJICovCisJbWVtX2ZyZWUgPSBQQUdFX0FMSUdOKGRhdGEtPm9zX3Jlcy0+ZW5kICsgU1pf MU0pOworCisJcmV0dXJuIF9fZG9fYm9vdG1fbGludXgoZGF0YSwgbWVtX2ZyZWUsIHN3YXApOwor CitlcnJfb3V0OgorCWNsb3NlKGZkKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgaW1hZ2VfaGFuZGxlciB6aW1hZ2VfaGFuZGxlciA9IHsKKwkubmFtZSA9ICJBUk0gekltYWdl IiwKKwkuYm9vdG0gPSBkb19ib290el9saW51eCwKKwkuZmlsZXR5cGUgPSBmaWxldHlwZV9hcm1f emltYWdlLAorfTsKKworc3RhdGljIHN0cnVjdCBpbWFnZV9oYW5kbGVyIGJhcmVib3hfaGFuZGxl ciA9IHsKKwkubmFtZSA9ICJBUk0gYmFyZWJveCIsCisJLmJvb3RtID0gZG9fYm9vdG1fbGludXgs CisJLmZpbGV0eXBlID0gZmlsZXR5cGVfYXJtX2JhcmVib3gsCit9OworCisjaW5jbHVkZSA8YWlt YWdlLmg+CisKK3N0YXRpYyBpbnQgYWltYWdlX2xvYWRfcmVzb3VyY2UoaW50IGZkLCBzdHJ1Y3Qg cmVzb3VyY2UgKnIsIHZvaWQqIGJ1ZiwgaW50IHBzKQoreworCWludCByZXQ7CisJdm9pZCAqaW1h Z2UgPSAodm9pZCAqKXItPnN0YXJ0OworCXVuc2lnbmVkIHRvX3JlYWQgPSBwcyAtIHJlc291cmNl X3NpemUocikgJSBwczsKKworCXJldCA9IHJlYWRfZnVsbChmZCwgaW1hZ2UsIHJlc291cmNlX3Np emUocikpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gcmVhZF9mdWxs KGZkLCBidWYsIHRvX3JlYWQpOworCWlmIChyZXQgPCAwKQorCQlwcmludGYoImNvdWxkIG5vdCBy ZWFkIGR1bW15ICV1XG4iLCB0b19yZWFkKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQgZG9fYm9vdG1fYWltYWdlKHN0cnVjdCBpbWFnZV9kYXRhICpkYXRhKQoreworCXN0cnVjdCBy ZXNvdXJjZSAqc25kX3N0YWdlX3JlczsKKwlpbnQgZmQsIHJldDsKKwlzdHJ1Y3QgYW5kcm9pZF9o ZWFkZXIgX19oZWFkZXIsICpoZWFkZXI7CisJdm9pZCAqYnVmOworCWludCB0b19yZWFkOworCXN0 cnVjdCBhbmRyb2lkX2hlYWRlcl9jb21wICpjbXA7CisJdW5zaWduZWQgbG9uZyBtZW1fZnJlZTsK Kwl1bnNpZ25lZCBsb25nIG1lbV9zdGFydCwgbWVtX3NpemU7CisKKwlyZXQgPSBzZHJhbV9zdGFy dF9hbmRfc2l6ZSgmbWVtX3N0YXJ0LCAmbWVtX3NpemUpOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwlmZCA9IG9wZW4oZGF0YS0+b3NfZmlsZSwgT19SRE9OTFkpOworCWlmIChmZCA8IDAp IHsKKwkJcGVycm9yKCJvcGVuIik7CisJCXJldHVybiAxOworCX0KKworCWhlYWRlciA9ICZfX2hl YWRlcjsKKwlyZXQgPSByZWFkKGZkLCBoZWFkZXIsIHNpemVvZigqaGVhZGVyKSk7CisJaWYgKHJl dCA8IHNpemVvZigqaGVhZGVyKSkgeworCQlwcmludGYoImNvdWxkIG5vdCByZWFkICVzXG4iLCBk YXRhLT5vc19maWxlKTsKKwkJZ290byBlcnJfb3V0OworCX0KKworCXByaW50ZigiQW5kcm9pZCBJ bWFnZSBmb3IgJyVzJ1xuIiwgaGVhZGVyLT5uYW1lKTsKKworCS8qCisJICogQXMgb24gdGZ0cCB3 ZSBkbyBub3Qgc3VwcG9ydCBsc2VlayBhbmQgd2Ugd2lsbCBqdXN0IGhhdmUgdG8gc2VlaworCSAq IGZvciB0aGUgc2l6ZSBvZiBhIHBhZ2UgLSAxIG1heCBqdXN0IGJ1ZmZlciBpbnN0ZWFkIHRvIHJl YWQgdG8gZHVtbXkKKwkgKiBkYXRhCisJICovCisJYnVmID0geG1hbGxvYyhoZWFkZXItPnBhZ2Vf c2l6ZSk7CisKKwl0b19yZWFkID0gaGVhZGVyLT5wYWdlX3NpemUgLSBzaXplb2YoKmhlYWRlcik7 CisJcmV0ID0gcmVhZF9mdWxsKGZkLCBidWYsIHRvX3JlYWQpOworCWlmIChyZXQgPCAwKSB7CisJ CXByaW50ZigiY291bGQgbm90IHJlYWQgZHVtbXkgJWQgZnJvbSAlc1xuIiwgdG9fcmVhZCwgZGF0 YS0+b3NfZmlsZSk7CisJCWdvdG8gZXJyX291dDsKKwl9CisKKwljbXAgPSAmaGVhZGVyLT5rZXJu ZWw7CisJZGF0YS0+b3NfcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdpb24oImFrZXJuZWwiLCBjbXAt PmxvYWRfYWRkciwgY21wLT5zaXplKTsKKwlpZiAoIWRhdGEtPm9zX3JlcykgeworCQlwcl9lcnIo IkNhbm5vdCByZXF1ZXN0IHJlZ2lvbiAweCUwOHggLSAweCUwOHgsIHVzaW5nIGRlZmF1bHQgbG9h ZCBhZGRyZXNzXG4iLAorCQkJCWNtcC0+bG9hZF9hZGRyLCBjbXAtPnNpemUpOworCisJCWRhdGEt Pm9zX2FkZHJlc3MgPSBtZW1fc3RhcnQgKyBQQUdFX0FMSUdOKGNtcC0+c2l6ZSAqIDQpOworCQlk YXRhLT5vc19yZXMgPSByZXF1ZXN0X3NkcmFtX3JlZ2lvbigiYWtlcm5lbCIsIGRhdGEtPm9zX2Fk ZHJlc3MsIGNtcC0+c2l6ZSk7CisJCWlmICghZGF0YS0+b3NfcmVzKSB7CisJCQlwcl9lcnIoIkNh bm5vdCByZXF1ZXN0IHJlZ2lvbiAweCUwOHggLSAweCUwOHhcbiIsCisJCQkJCWNtcC0+bG9hZF9h ZGRyLCBjbXAtPnNpemUpOworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gZXJyX291dDsKKwkJ fQorCX0KKworCXJldCA9IGFpbWFnZV9sb2FkX3Jlc291cmNlKGZkLCBkYXRhLT5vc19yZXMsIGJ1 ZiwgaGVhZGVyLT5wYWdlX3NpemUpOworCWlmIChyZXQgPCAwKSB7CisJCXBlcnJvcigiY291bGQg bm90IHJlYWQga2VybmVsIik7CisJCWdvdG8gZXJyX291dDsKKwl9CisKKwkvKgorCSAqIGZhc3Ri b290IGFsd2F5cyBleHBlY3QgYSByYW1kaXNrCisJICogaW4gYmFyZWJveCB3ZSBjYW4gYmUgbGVz cyByZXN0cmljdGl2ZQorCSAqLworCWNtcCA9ICZoZWFkZXItPnJhbWRpc2s7CisJaWYgKGNtcC0+ c2l6ZSkgeworCQlkYXRhLT5pbml0cmRfcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdpb24oImFpbml0 cmQiLCBjbXAtPmxvYWRfYWRkciwgY21wLT5zaXplKTsKKwkJaWYgKCFkYXRhLT5pbml0cmRfcmVz KSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBlcnJfb3V0OworCQl9CisKKwkJcmV0ID0g YWltYWdlX2xvYWRfcmVzb3VyY2UoZmQsIGRhdGEtPmluaXRyZF9yZXMsIGJ1ZiwgaGVhZGVyLT5w YWdlX3NpemUpOworCQlpZiAocmV0IDwgMCkgeworCQkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBp bml0cmQiKTsKKwkJCWdvdG8gZXJyX291dDsKKwkJfQorCX0KKworCWlmICghZ2V0ZW52KCJhaW1h Z2Vfbm92ZXJ3cml0ZV9ib290YXJncyIpKQorCQlsaW51eF9ib290YXJnc19vdmVyd3JpdGUoaGVh ZGVyLT5jbWRsaW5lKTsKKworCWlmICghZ2V0ZW52KCJhaW1hZ2Vfbm92ZXJ3cml0ZV90YWdzIikp CisJCWFybWxpbnV4X3NldF9ib290cGFyYW1zKCh2b2lkKiloZWFkZXItPnRhZ3NfYWRkcik7CisK KwljbXAgPSAmaGVhZGVyLT5zZWNvbmRfc3RhZ2U7CisJaWYgKGNtcC0+c2l6ZSkgeworCQl2b2lk ICgqc2Vjb25kKSh2b2lkKTsKKworCQlzbmRfc3RhZ2VfcmVzID0gcmVxdWVzdF9zZHJhbV9yZWdp b24oImFzZWNvbmQiLCBjbXAtPmxvYWRfYWRkciwgY21wLT5zaXplKTsKKwkJaWYgKCFzbmRfc3Rh Z2VfcmVzKSB7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBlcnJfb3V0OworCQl9CisKKwkJ cmV0ID0gYWltYWdlX2xvYWRfcmVzb3VyY2UoZmQsIHNuZF9zdGFnZV9yZXMsIGJ1ZiwgaGVhZGVy LT5wYWdlX3NpemUpOworCQlpZiAocmV0IDwgMCkgeworCQkJcGVycm9yKCJjb3VsZCBub3QgcmVh ZCBpbml0cmQiKTsKKwkJCWdvdG8gZXJyX291dDsKKwkJfQorCisJCXNlY29uZCA9ICh2b2lkKilz bmRfc3RhZ2VfcmVzLT5zdGFydDsKKwkJc2h1dGRvd25fYmFyZWJveCgpOworCisJCXNlY29uZCgp OworCisJCXJlc3RhcnRfbWFjaGluZSgpOworCX0KKworCWNsb3NlKGZkKTsKKworCS8qCisJICog UHV0IGRldmljZXRyZWUgcmlnaHQgYWZ0ZXIgaW5pdHJkIGlmIHByZXNlbnQgb3IgYWZ0ZXIgdGhl IGtlcm5lbAorCSAqIGlmIG5vdC4KKwkgKi8KKwlpZiAoZGF0YS0+aW5pdHJkX3JlcykKKwkJbWVt X2ZyZWUgPSBQQUdFX0FMSUdOKGRhdGEtPmluaXRyZF9yZXMtPmVuZCk7CisJZWxzZQorCQltZW1f ZnJlZSA9IFBBR0VfQUxJR04oZGF0YS0+b3NfcmVzLT5lbmQgKyBTWl8xTSk7CisKKwlyZXR1cm4g X19kb19ib290bV9saW51eChkYXRhLCBtZW1fZnJlZSwgMCk7CisKK2Vycl9vdXQ6CisJbGludXhf Ym9vdGFyZ3Nfb3ZlcndyaXRlKE5VTEwpOworCWNsb3NlKGZkKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgaW1hZ2VfaGFuZGxlciBhaW1hZ2VfaGFuZGxlciA9IHsKKwkubmFt ZSA9ICJBUk0gQW5kcm9pZCBJbWFnZSIsCisJLmJvb3RtID0gZG9fYm9vdG1fYWltYWdlLAorCS5m aWxldHlwZSA9IGZpbGV0eXBlX2FpbWFnZSwKK307CisKKyNpZmRlZiBDT05GSUdfQ01EX0JPT1RN X0FJTUFHRQorQkFSRUJPWF9NQUdJQ1ZBUihhaW1hZ2Vfbm92ZXJ3cml0ZV9ib290YXJncywgIkRp c2FibGUgb3ZlcndyaXRlIG9mIHRoZSBib290YXJncyB3aXRoIHRoZSBvbmUgcHJlc2VudCBpbiBh aW1hZ2UiKTsKK0JBUkVCT1hfTUFHSUNWQVIoYWltYWdlX25vdmVyd3JpdGVfdGFncywgIkRpc2Fi bGUgb3ZlcndyaXRlIG9mIHRoZSB0YWdzIGFkZHIgd2l0aCB0aGUgb25lIHByZXNlbnQgaW4gYWlt YWdlIik7CisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBpbWFnZV9oYW5kbGVyIGFybV9maXRfaGFu ZGxlciA9IHsKKyAgICAgICAgLm5hbWUgPSAiRklUIGltYWdlIiwKKyAgICAgICAgLmJvb3RtID0g ZG9fYm9vdG1fbGludXgsCisgICAgICAgIC5maWxldHlwZSA9IGZpbGV0eXBlX29mdHJlZSwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYmluZm10X2hvb2sgYmluZm10X2FpbWFnZV9ob29rID0geworCS50 eXBlID0gZmlsZXR5cGVfYWltYWdlLAorCS5leGVjID0gImJvb3RtIiwKK307CisKK3N0YXRpYyBz dHJ1Y3QgYmluZm10X2hvb2sgYmluZm10X2FybV96aW1hZ2VfaG9vayA9IHsKKwkudHlwZSA9IGZp bGV0eXBlX2FybV96aW1hZ2UsCisJLmV4ZWMgPSAiYm9vdG0iLAorfTsKKworc3RhdGljIHN0cnVj dCBiaW5mbXRfaG9vayBiaW5mbXRfYmFyZWJveF9ob29rID0geworCS50eXBlID0gZmlsZXR5cGVf YXJtX2JhcmVib3gsCisJLmV4ZWMgPSAiYm9vdG0iLAorfTsKKworc3RhdGljIGludCBhcm1saW51 eF9yZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKHZvaWQpCit7CisJcmVnaXN0ZXJfaW1hZ2VfaGFuZGxl cigmYmFyZWJveF9oYW5kbGVyKTsKKwlyZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKCZ1aW1hZ2VfaGFu ZGxlcik7CisJcmVnaXN0ZXJfaW1hZ2VfaGFuZGxlcigmcmF3aW1hZ2VfaGFuZGxlcik7CisJcmVn aXN0ZXJfaW1hZ2VfaGFuZGxlcigmemltYWdlX2hhbmRsZXIpOworCWlmIChJU19CVUlMVElOKENP TkZJR19DTURfQk9PVE1fQUlNQUdFKSkgeworCQlyZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKCZhaW1h Z2VfaGFuZGxlcik7CisJCWJpbmZtdF9yZWdpc3RlcigmYmluZm10X2FpbWFnZV9ob29rKTsKKwl9 CisJaWYgKElTX0JVSUxUSU4oQ09ORklHX0NNRF9CT09UTV9GSVRJTUFHRSkpCisJICAgICAgICBy ZWdpc3Rlcl9pbWFnZV9oYW5kbGVyKCZhcm1fZml0X2hhbmRsZXIpOworCWJpbmZtdF9yZWdpc3Rl cigmYmluZm10X2FybV96aW1hZ2VfaG9vayk7CisJYmluZm10X3JlZ2lzdGVyKCZiaW5mbXRfYmFy ZWJveF9ob29rKTsKKworCXJldHVybiAwOworfQorbGF0ZV9pbml0Y2FsbChhcm1saW51eF9yZWdp c3Rlcl9pbWFnZV9oYW5kbGVyKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL2Jvb3R1LmMg Yi9hcmNoL2FybTY0L2xpYi9ib290dS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjE5MDA5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi9ib290dS5jCkBA IC0wLDAgKzEsNDQgQEAKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+ CisjaW5jbHVkZSA8ZnMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+ CisjaW5jbHVkZSA8b2YuaD4KKyNpbmNsdWRlIDxhc20vYXJtbGludXguaD4KKworc3RhdGljIGlu dCBkb19ib290dShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBmZDsKKwl2b2lkICpr ZXJuZWwgPSBOVUxMOworCXZvaWQgKm9mdHJlZSA9IE5VTEw7CisKKwlpZiAoYXJnYyAhPSAyKQor CQlyZXR1cm4gQ09NTUFORF9FUlJPUl9VU0FHRTsKKworCWZkID0gb3Blbihhcmd2WzFdLCBPX1JE T05MWSk7CisJaWYgKGZkID4gMCkKKwkJa2VybmVsID0gKHZvaWQgKiltZW1tYXAoZmQsIFBST1Rf UkVBRCk7CisKKwlpZiAoIWtlcm5lbCkKKwkJa2VybmVsID0gKHZvaWQgKilzaW1wbGVfc3RydG91 bChhcmd2WzFdLCBOVUxMLCAwKTsKKworI2lmZGVmIENPTkZJR19PRlRSRUUKKwlvZnRyZWUgPSBv Zl9nZXRfZml4ZWRfdHJlZShOVUxMKTsKKyNlbmRpZgorCisJc3RhcnRfbGludXgoa2VybmVsLCAw LCAwLCAwLCBvZnRyZWUpOworCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjb25zdCBfX21heWJl X3VudXNlZCBjaGFyIGNtZF9ib290dV9oZWxwW10gPQorIlVzYWdlOiBib290dSA8YWRkcmVzcz5c biI7CisKK0JBUkVCT1hfQ01EX1NUQVJUKGJvb3R1KQorCS5jbWQgICAgICAgICAgICA9IGRvX2Jv b3R1LAorCUJBUkVCT1hfQ01EX0RFU0MoImJvb3QgaW50byBhbHJlYWR5IGxvYWRlZCBMaW51eCBr ZXJuZWwiKQorCUJBUkVCT1hfQ01EX09QVFMoIkFERFJFU1MiKQorCUJBUkVCT1hfQ01EX0dST1VQ KENNRF9HUlBfQk9PVCkKKwlCQVJFQk9YX0NNRF9IRUxQKGNtZF9ib290dV9oZWxwKQorQkFSRUJP WF9DTURfRU5ECisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL2Jvb3R6LmMgYi9hcmNoL2Fy bTY0L2xpYi9ib290ei5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNjdj OWQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi9ib290ei5jCkBAIC0wLDAgKzEs MTM2IEBACisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8Y29tbWFuZC5oPgorI2luY2x1 ZGUgPGZzLmg+CisjaW5jbHVkZSA8b2YuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg PGVycm5vLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4K KyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8YXNtL2FybWxpbnV4Lmg+Cisj aW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL21lbW9yeV9sYXlv dXQuaD4KKyNpbmNsdWRlIDxtZW1vcnkuaD4KKworc3RydWN0IHppbWFnZV9oZWFkZXIgeworCXUz Mgl1bnVzZWRbOV07CisJdTMyCW1hZ2ljOworCXUzMglzdGFydDsKKwl1MzIJZW5kOworfTsKKwor I2RlZmluZSBaSU1BR0VfTUFHSUMgMHgwMTZGMjgxOAorCitzdGF0aWMgaW50IGRvX2Jvb3R6KGlu dCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IGZkLCByZXQsIHN3YXAgPSAwOworCXN0cnVj dCB6aW1hZ2VfaGVhZGVyIF9faGVhZGVyLCAqaGVhZGVyOworCXZvaWQgKnppbWFnZTsKKwl2b2lk ICpvZnRyZWUgPSBOVUxMOworCXUzMiBlbmQ7CisJaW50IHVzZW1hcCA9IDA7CisJc3RydWN0IG1l bW9yeV9iYW5rICpiYW5rID0gbGlzdF9maXJzdF9lbnRyeSgmbWVtb3J5X2JhbmtzLCBzdHJ1Y3Qg bWVtb3J5X2JhbmssIGxpc3QpOworCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gTlVMTDsKKworCWlm IChhcmdjICE9IDIpCisJCXJldHVybiBDT01NQU5EX0VSUk9SX1VTQUdFOworCisJZmQgPSBvcGVu KGFyZ3ZbMV0sIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKSB7CisJCXBlcnJvcigib3BlbiIpOwor CQlyZXR1cm4gMTsKKwl9CisKKwkvKgorCSAqIFdlIGNhbiBzYXZlIHRoZSBtZW1jcHkgb2YgdGhl IHpJbWFnZSBpZiBpdCBhbHJlYWR5IGlzIGluCisJICogdGhlIGZpcnN0IDEyOE1CIG9mIFNEUkFN LgorCSAqLworCXppbWFnZSA9IG1lbW1hcChmZCwgUFJPVF9SRUFEKTsKKwlpZiAoemltYWdlICYm ICh1bnNpZ25lZCBsb25nKXppbWFnZSAgPj0gYmFuay0+c3RhcnQgJiYKKwkJCSh1bnNpZ25lZCBs b25nKXppbWFnZSA8IGJhbmstPnN0YXJ0ICsgU1pfMTI4TSkgeworCQl1c2VtYXAgPSAxOworCQlo ZWFkZXIgPSB6aW1hZ2U7CisJfQorCisJaWYgKCF1c2VtYXApIHsKKwkJaGVhZGVyID0gJl9faGVh ZGVyOworCQlyZXQgPSByZWFkKGZkLCBoZWFkZXIsIHNpemVvZigqaGVhZGVyKSk7CisJCWlmIChy ZXQgPCBzaXplb2YoKmhlYWRlcikpIHsKKwkJCXByaW50ZigiY291bGQgbm90IHJlYWQgJXNcbiIs IGFyZ3ZbMV0pOworCQkJZ290byBlcnJfb3V0OworCQl9CisJfQorCisJc3dpdGNoIChoZWFkZXIt Pm1hZ2ljKSB7CisjaWZkZWYgQ09ORklHX0JPT1RfRU5ESUFOTkVTU19TV0lUQ0gKKwljYXNlIHN3 YWIzMihaSU1BR0VfTUFHSUMpOgorCQlzd2FwID0gMTsKKwkJLyogZmFsbCB0aHJvdWdoICovCisj ZW5kaWYKKwljYXNlIFpJTUFHRV9NQUdJQzoKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRm KCJpbnZhbGlkIG1hZ2ljIDB4JTA4eFxuIiwgaGVhZGVyLT5tYWdpYyk7CisJCWdvdG8gZXJyX291 dDsKKwl9CisKKwllbmQgPSBoZWFkZXItPmVuZDsKKworCWlmIChzd2FwKQorCQllbmQgPSBzd2Fi MzIoZW5kKTsKKworCWlmICghdXNlbWFwKSB7CisJCWlmIChiYW5rLT5zaXplIDw9IFNaXzEyOE0p IHsKKwkJCXppbWFnZSA9IHhtYWxsb2MoZW5kKTsKKwkJfSBlbHNlIHsKKwkJCXppbWFnZSA9ICh2 b2lkICopYmFuay0+c3RhcnQgKyBTWl84TTsKKwkJCXJlcyA9IHJlcXVlc3Rfc2RyYW1fcmVnaW9u KCJ6aW1hZ2UiLAorCQkJCQliYW5rLT5zdGFydCArIFNaXzhNLCBlbmQpOworCQkJaWYgKCFyZXMp IHsKKwkJCQlwcmludGYoImNhbid0IHJlcXVlc3QgcmVnaW9uIGZvciBrZXJuZWxcbiIpOworCQkJ CWdvdG8gZXJyX291dDE7CisJCQl9CisJCX0KKworCQltZW1jcHkoemltYWdlLCBoZWFkZXIsIHNp emVvZigqaGVhZGVyKSk7CisKKwkJcmV0ID0gcmVhZChmZCwgemltYWdlICsgc2l6ZW9mKCpoZWFk ZXIpLCBlbmQgLSBzaXplb2YoKmhlYWRlcikpOworCQlpZiAocmV0IDwgZW5kIC0gc2l6ZW9mKCpo ZWFkZXIpKSB7CisJCQlwcmludGYoImNvdWxkIG5vdCByZWFkICVzXG4iLCBhcmd2WzFdKTsKKwkJ CWdvdG8gZXJyX291dDI7CisJCX0KKwl9CisKKwlpZiAoc3dhcCkgeworCQl2b2lkICpwdHI7CisJ CWZvciAocHRyID0gemltYWdlOyBwdHIgPCB6aW1hZ2UgKyBlbmQ7IHB0ciArPSA0KQorCQkJKih1 MzIgKilwdHIgPSBzd2FiMzIoKih1MzIgKilwdHIpOworCX0KKworCXByaW50ZigibG9hZGVkIHpJ bWFnZSBmcm9tICVzIHdpdGggc2l6ZSAlZFxuIiwgYXJndlsxXSwgZW5kKTsKKyNpZmRlZiBDT05G SUdfT0ZUUkVFCisJb2Z0cmVlID0gb2ZfZ2V0X2ZpeGVkX3RyZWUoTlVMTCk7CisjZW5kaWYKKwor CXN0YXJ0X2xpbnV4KHppbWFnZSwgc3dhcCwgMCwgMCwgb2Z0cmVlKTsKKworCXJldHVybiAwOwor CitlcnJfb3V0MjoKKwlpZiAocmVzKQorCQlyZWxlYXNlX3NkcmFtX3JlZ2lvbihyZXMpOworZXJy X291dDE6CisJZnJlZSh6aW1hZ2UpOworZXJyX291dDoKKwljbG9zZShmZCk7CisKKwlyZXR1cm4g MTsKK30KKworQkFSRUJPWF9DTURfU1RBUlQoYm9vdHopCisJLmNtZCAgICAgICAgICAgID0gZG9f Ym9vdHosCisJQkFSRUJPWF9DTURfREVTQygiYm9vdCBMaW51eCB6SW1hZ2UiKQorCUJBUkVCT1hf Q01EX09QVFMoIkZJTEUiKQorCUJBUkVCT1hfQ01EX0dST1VQKENNRF9HUlBfQk9PVCkKK0JBUkVC T1hfQ01EX0VORAorCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9jb3B5X3RlbXBsYXRlLlMg Yi9hcmNoL2FybTY0L2xpYi9jb3B5X3RlbXBsYXRlLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uY2M5YTg0MgotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL2Nv cHlfdGVtcGxhdGUuUwpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx MyBBUk0gTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIExpbmFyby4KKyAqCisgKiBUaGlzIGNv ZGUgaXMgYmFzZWQgb24gZ2xpYmMgY29ydGV4IHN0cmluZ3Mgd29yayBvcmlnaW5hbGx5IGF1dGhv cmVkIGJ5IExpbmFybworICogYW5kIHJlLWxpY2Vuc2VkIHVuZGVyIEdQTHYyIGZvciB0aGUgTGlu dXgga2VybmVsLiBUaGUgb3JpZ2luYWwgY29kZSBjYW4KKyAqIGJlIGZvdW5kIEAKKyAqCisgKiBo dHRwOi8vYmF6YWFyLmxhdW5jaHBhZC5uZXQvfmxpbmFyby10b29sY2hhaW4tZGV2L2NvcnRleC1z dHJpbmdzL3RydW5rLworICogZmlsZXMvaGVhZDovc3JjL2FhcmNoNjQvCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAqLworCisKKy8qCisgKiBDb3B5IGEgYnVmZmVyIGZyb20gc3JjIHRvIGRl c3QgKGFsaWdubWVudCBoYW5kbGVkIGJ5IHRoZSBoYXJkd2FyZSkKKyAqCisgKiBQYXJhbWV0ZXJz OgorICoJeDAgLSBkZXN0CisgKgl4MSAtIHNyYworICoJeDIgLSBuCisgKiBSZXR1cm5zOgorICoJ eDAgLSBkZXN0CisgKi8KK2RzdGluCS5yZXEJeDAKK3NyYwkucmVxCXgxCitjb3VudAkucmVxCXgy Cit0bXAxCS5yZXEJeDMKK3RtcDF3CS5yZXEJdzMKK3RtcDIJLnJlcQl4NAordG1wMncJLnJlcQl3 NAorZHN0CS5yZXEJeDYKKworQV9sCS5yZXEJeDcKK0FfaAkucmVxCXg4CitCX2wJLnJlcQl4OQor Ql9oCS5yZXEJeDEwCitDX2wJLnJlcQl4MTEKK0NfaAkucmVxCXgxMgorRF9sCS5yZXEJeDEzCitE X2gJLnJlcQl4MTQKKworCW1vdglkc3QsIGRzdGluCisJY21wCWNvdW50LCAjMTYKKwkvKldoZW4g bWVtb3J5IGxlbmd0aCBpcyBsZXNzIHRoYW4gMTYsIHRoZSBhY2Nlc3NlZCBhcmUgbm90IGFsaWdu ZWQuKi8KKwliLmxvCS5MdGlueTE1CisKKwluZWcJdG1wMiwgc3JjCisJYW5kcwl0bXAyLCB0bXAy LCAjMTUvKiBCeXRlcyB0byByZWFjaCBhbGlnbm1lbnQuICovCisJYi5lcQkuTFNyY0FsaWduZWQK KwlzdWIJY291bnQsIGNvdW50LCB0bXAyCisJLyoKKwkqIENvcHkgdGhlIGxlYWRpbmcgbWVtb3J5 IGRhdGEgZnJvbSBzcmMgdG8gZHN0IGluIGFuIGluY3JlYXNpbmcKKwkqIGFkZHJlc3Mgb3JkZXIu QnkgdGhpcyB3YXksdGhlIHJpc2sgb2Ygb3ZlcndyaXR0aW5nIHRoZSBzb3VyY2UKKwkqIG1lbW9y eSBkYXRhIGlzIGVsaW1pbmF0ZWQgd2hlbiB0aGUgZGlzdGFuY2UgYmV0d2VlbiBzcmMgYW5kCisJ KiBkc3QgaXMgbGVzcyB0aGFuIDE2LiBUaGUgbWVtb3J5IGFjY2Vzc2VzIGhlcmUgYXJlIGFsaWdu bWVudC4KKwkqLworCXRiegl0bXAyLCAjMCwgMWYKKwlsZHJiMQl0bXAxdywgc3JjLCAjMQorCXN0 cmIxCXRtcDF3LCBkc3QsICMxCisxOgorCXRiegl0bXAyLCAjMSwgMmYKKwlsZHJoMQl0bXAxdywg c3JjLCAjMgorCXN0cmgxCXRtcDF3LCBkc3QsICMyCisyOgorCXRiegl0bXAyLCAjMiwgM2YKKwls ZHIxCXRtcDF3LCBzcmMsICM0CisJc3RyMQl0bXAxdywgZHN0LCAjNAorMzoKKwl0YnoJdG1wMiwg IzMsIC5MU3JjQWxpZ25lZAorCWxkcjEJdG1wMSwgc3JjLCAjOAorCXN0cjEJdG1wMSwgZHN0LCAj OAorCisuTFNyY0FsaWduZWQ6CisJY21wCWNvdW50LCAjNjQKKwliLmdlCS5MY3B5X292ZXI2NAor CS8qCisJKiBEZWFsIHdpdGggc21hbGwgY29waWVzIHF1aWNrbHkgYnkgZHJvcHBpbmcgc3RyYWln aHQgaW50byB0aGUKKwkqIGV4aXQgYmxvY2suCisJKi8KKy5MdGFpbDYzOgorCS8qCisJKiBDb3B5 IHVwIHRvIDQ4IGJ5dGVzIG9mIGRhdGEuIEF0IHRoaXMgcG9pbnQgd2Ugb25seSBuZWVkIHRoZQor CSogYm90dG9tIDYgYml0cyBvZiBjb3VudCB0byBiZSBhY2N1cmF0ZS4KKwkqLworCWFuZHMJdG1w MSwgY291bnQsICMweDMwCisJYi5lcQkuTHRpbnkxNQorCWNtcAl0bXAxdywgIzB4MjAKKwliLmVx CTFmCisJYi5sdAkyZgorCWxkcDEJQV9sLCBBX2gsIHNyYywgIzE2CisJc3RwMQlBX2wsIEFfaCwg ZHN0LCAjMTYKKzE6CisJbGRwMQlBX2wsIEFfaCwgc3JjLCAjMTYKKwlzdHAxCUFfbCwgQV9oLCBk c3QsICMxNgorMjoKKwlsZHAxCUFfbCwgQV9oLCBzcmMsICMxNgorCXN0cDEJQV9sLCBBX2gsIGRz dCwgIzE2CisuTHRpbnkxNToKKwkvKgorCSogUHJlZmVyIHRvIGJyZWFrIG9uZSBsZHAvc3RwIGlu dG8gc2V2ZXJhbCBsb2FkL3N0b3JlIHRvIGFjY2VzcworCSogbWVtb3J5IGluIGFuIGluY3JlYXNp bmcgYWRkcmVzcyBvcmRlcixyYXRoZXIgdGhhbiB0byBsb2FkL3N0b3JlIDE2CisJKiBieXRlcyBm cm9tIChzcmMtMTYpIHRvIChkc3QtMTYpIGFuZCB0byBiYWNrd2FyZCB0aGUgc3JjIHRvIGFsaWdu ZWQKKwkqIGFkZHJlc3Msd2hpY2ggd2F5IGlzIHVzZWQgaW4gb3JpZ2luYWwgY29ydGV4IG1lbWNw eS4gSWYga2VlcGluZworCSogdGhlIG9yaWdpbmFsIG1lbWNweSBwcm9jZXNzIGhlcmUsIG1lbW1v dmUgbmVlZCB0byBzYXRpc2Z5IHRoZQorCSogcHJlY29uZGl0aW9uIHRoYXQgc3JjIGFkZHJlc3Mg aXMgYXQgbGVhc3QgMTYgYnl0ZXMgYmlnZ2VyIHRoYW4gZHN0CisJKiBhZGRyZXNzLG90aGVyd2lz ZSBzb21lIHNvdXJjZSBkYXRhIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2hlbiBtZW1vdmUKKwkqIGNh bGwgbWVtY3B5IGRpcmVjdGx5LiBUbyBtYWtlIG1lbW1vdmUgc2ltcGxlciBhbmQgZGVjb3VwbGUg dGhlCisJKiBtZW1jcHkncyBkZXBlbmRlbmN5IG9uIG1lbW1vdmUsIHdpdGhkcmV3IHRoZSBvcmln aW5hbCBwcm9jZXNzLgorCSovCisJdGJ6CWNvdW50LCAjMywgMWYKKwlsZHIxCXRtcDEsIHNyYywg IzgKKwlzdHIxCXRtcDEsIGRzdCwgIzgKKzE6CisJdGJ6CWNvdW50LCAjMiwgMmYKKwlsZHIxCXRt cDF3LCBzcmMsICM0CisJc3RyMQl0bXAxdywgZHN0LCAjNAorMjoKKwl0YnoJY291bnQsICMxLCAz ZgorCWxkcmgxCXRtcDF3LCBzcmMsICMyCisJc3RyaDEJdG1wMXcsIGRzdCwgIzIKKzM6CisJdGJ6 CWNvdW50LCAjMCwgLkxleGl0ZnVuYworCWxkcmIxCXRtcDF3LCBzcmMsICMxCisJc3RyYjEJdG1w MXcsIGRzdCwgIzEKKworCWIJLkxleGl0ZnVuYworCisuTGNweV9vdmVyNjQ6CisJc3Vicwljb3Vu dCwgY291bnQsICMxMjgKKwliLmdlCS5MY3B5X2JvZHlfbGFyZ2UKKwkvKgorCSogTGVzcyB0aGFu IDEyOCBieXRlcyB0byBjb3B5LCBzbyBoYW5kbGUgNjQgaGVyZSBhbmQgdGhlbiBqdW1wCisJKiB0 byB0aGUgdGFpbC4KKwkqLworCWxkcDEJQV9sLCBBX2gsIHNyYywgIzE2CisJc3RwMQlBX2wsIEFf aCwgZHN0LCAjMTYKKwlsZHAxCUJfbCwgQl9oLCBzcmMsICMxNgorCWxkcDEJQ19sLCBDX2gsIHNy YywgIzE2CisJc3RwMQlCX2wsIEJfaCwgZHN0LCAjMTYKKwlzdHAxCUNfbCwgQ19oLCBkc3QsICMx NgorCWxkcDEJRF9sLCBEX2gsIHNyYywgIzE2CisJc3RwMQlEX2wsIERfaCwgZHN0LCAjMTYKKwor CXRzdAljb3VudCwgIzB4M2YKKwliLm5lCS5MdGFpbDYzCisJYgkuTGV4aXRmdW5jCisKKwkvKgor CSogQ3JpdGljYWwgbG9vcC4gIFN0YXJ0IGF0IGEgbmV3IGNhY2hlIGxpbmUgYm91bmRhcnkuICBB c3N1bWluZworCSogNjQgYnl0ZXMgcGVyIGxpbmUgdGhpcyBlbnN1cmVzIHRoZSBlbnRpcmUgbG9v cCBpcyBpbiBvbmUgbGluZS4KKwkqLworLkxjcHlfYm9keV9sYXJnZToKKwkvKiBwcmUtZ2V0IDY0 IGJ5dGVzIGRhdGEuICovCisJbGRwMQlBX2wsIEFfaCwgc3JjLCAjMTYKKwlsZHAxCUJfbCwgQl9o LCBzcmMsICMxNgorCWxkcDEJQ19sLCBDX2gsIHNyYywgIzE2CisJbGRwMQlEX2wsIERfaCwgc3Jj LCAjMTYKKzE6CisJLyoKKwkqIGludGVybGFjZSB0aGUgbG9hZCBvZiBuZXh0IDY0IGJ5dGVzIGRh dGEgYmxvY2sgd2l0aCBzdG9yZSBvZiB0aGUgbGFzdAorCSogbG9hZGVkIDY0IGJ5dGVzIGRhdGEu CisJKi8KKwlzdHAxCUFfbCwgQV9oLCBkc3QsICMxNgorCWxkcDEJQV9sLCBBX2gsIHNyYywgIzE2 CisJc3RwMQlCX2wsIEJfaCwgZHN0LCAjMTYKKwlsZHAxCUJfbCwgQl9oLCBzcmMsICMxNgorCXN0 cDEJQ19sLCBDX2gsIGRzdCwgIzE2CisJbGRwMQlDX2wsIENfaCwgc3JjLCAjMTYKKwlzdHAxCURf bCwgRF9oLCBkc3QsICMxNgorCWxkcDEJRF9sLCBEX2gsIHNyYywgIzE2CisJc3Vicwljb3VudCwg Y291bnQsICM2NAorCWIuZ2UJMWIKKwlzdHAxCUFfbCwgQV9oLCBkc3QsICMxNgorCXN0cDEJQl9s LCBCX2gsIGRzdCwgIzE2CisJc3RwMQlDX2wsIENfaCwgZHN0LCAjMTYKKwlzdHAxCURfbCwgRF9o LCBkc3QsICMxNgorCisJdHN0CWNvdW50LCAjMHgzZgorCWIubmUJLkx0YWlsNjMKKy5MZXhpdGZ1 bmM6CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi9kaXYwLmMgYi9hcmNoL2FybTY0L2xpYi9k aXYwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyY2I3MgotLS0gL2Rl di9udWxsCisrKyBiL2FyY2gvYXJtNjQvbGliL2RpdjAuYwpAQCAtMCwwICsxLDI3IEBACisvKgor ICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVu Z2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qg b2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8K KyNpbmNsdWRlIDxjb21tb24uaD4KKworZXh0ZXJuIHZvaWQgX19kaXYwKHZvaWQpOworCisvKiBS ZXBsYWNlbWVudCAoPWR1bW15KSBmb3IgR05VL0xpbnV4IGRpdmlzaW9uLWJ5IHplcm8gaGFuZGxl ciAqLwordm9pZCBfX2RpdjAgKHZvaWQpCit7CisJcGFuaWMoImRpdmlzaW9uIGJ5IHplcm9cbiIp OworfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIvbWVtY3B5LlMgYi9hcmNoL2FybTY0L2xp Yi9tZW1jcHkuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmVkMzE5Ci0t LSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9saWIvbWVtY3B5LlMKQEAgLTAsMCArMSw3NCBA QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBUk0gTHRkLgorICogQ29weXJpZ2h0IChDKSAy MDEzIExpbmFyby4KKyAqCisgKiBUaGlzIGNvZGUgaXMgYmFzZWQgb24gZ2xpYmMgY29ydGV4IHN0 cmluZ3Mgd29yayBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IExpbmFybworICogYW5kIHJlLWxpY2Vu c2VkIHVuZGVyIEdQTHYyIGZvciB0aGUgTGludXgga2VybmVsLiBUaGUgb3JpZ2luYWwgY29kZSBj YW4KKyAqIGJlIGZvdW5kIEAKKyAqCisgKiBodHRwOi8vYmF6YWFyLmxhdW5jaHBhZC5uZXQvfmxp bmFyby10b29sY2hhaW4tZGV2L2NvcnRleC1zdHJpbmdzL3RydW5rLworICogZmlsZXMvaGVhZDov c3JjL2FhcmNoNjQvCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8 bGludXgvbGlua2FnZS5oPgorI2luY2x1ZGUgPGFzbS9hc3NlbWJsZXIuaD4KKworLyoKKyAqIENv cHkgYSBidWZmZXIgZnJvbSBzcmMgdG8gZGVzdCAoYWxpZ25tZW50IGhhbmRsZWQgYnkgdGhlIGhh cmR3YXJlKQorICoKKyAqIFBhcmFtZXRlcnM6CisgKgl4MCAtIGRlc3QKKyAqCXgxIC0gc3JjCisg Kgl4MiAtIG4KKyAqIFJldHVybnM6CisgKgl4MCAtIGRlc3QKKyAqLworCS5tYWNybyBsZHJiMSBw dHIsIHJlZ0IsIHZhbAorCWxkcmIgIFxwdHIsIFtccmVnQl0sIFx2YWwKKwkuZW5kbQorCisJLm1h Y3JvIHN0cmIxIHB0ciwgcmVnQiwgdmFsCisJc3RyYiBccHRyLCBbXHJlZ0JdLCBcdmFsCisJLmVu ZG0KKworCS5tYWNybyBsZHJoMSBwdHIsIHJlZ0IsIHZhbAorCWxkcmggIFxwdHIsIFtccmVnQl0s IFx2YWwKKwkuZW5kbQorCisJLm1hY3JvIHN0cmgxIHB0ciwgcmVnQiwgdmFsCisJc3RyaCBccHRy LCBbXHJlZ0JdLCBcdmFsCisJLmVuZG0KKworCS5tYWNybyBsZHIxIHB0ciwgcmVnQiwgdmFsCisJ bGRyIFxwdHIsIFtccmVnQl0sIFx2YWwKKwkuZW5kbQorCisJLm1hY3JvIHN0cjEgcHRyLCByZWdC LCB2YWwKKwlzdHIgXHB0ciwgW1xyZWdCXSwgXHZhbAorCS5lbmRtCisKKwkubWFjcm8gbGRwMSBw dHIsIHJlZ0IsIHJlZ0MsIHZhbAorCWxkcCBccHRyLCBccmVnQiwgW1xyZWdDXSwgXHZhbAorCS5l bmRtCisKKwkubWFjcm8gc3RwMSBwdHIsIHJlZ0IsIHJlZ0MsIHZhbAorCXN0cCBccHRyLCBccmVn QiwgW1xyZWdDXSwgXHZhbAorCS5lbmRtCisKKwkud2VhayBtZW1jcHkKK0VOVFJZKG1lbWNweSkK KyNpbmNsdWRlICJjb3B5X3RlbXBsYXRlLlMiCisJcmV0CitFTkRQUk9DKG1lbWNweSkKZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvbGliL21lbXNldC5TIGIvYXJjaC9hcm02NC9saWIvbWVtc2V0LlMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwYTU0MAotLS0gL2Rldi9udWxs CisrKyBiL2FyY2gvYXJtNjQvbGliL21lbXNldC5TCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICog Q29weXJpZ2h0IChDKSAyMDEzIEFSTSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTGluYXJv LgorICoKKyAqIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBnbGliYyBjb3J0ZXggc3RyaW5ncyB3b3Jr IG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTGluYXJvCisgKiBhbmQgcmUtbGljZW5zZWQgdW5kZXIg R1BMdjIgZm9yIHRoZSBMaW51eCBrZXJuZWwuIFRoZSBvcmlnaW5hbCBjb2RlIGNhbgorICogYmUg Zm91bmQgQAorICoKKyAqIGh0dHA6Ly9iYXphYXIubGF1bmNocGFkLm5ldC9+bGluYXJvLXRvb2xj aGFpbi1kZXYvY29ydGV4LXN0cmluZ3MvdHJ1bmsvCisgKiBmaWxlcy9oZWFkOi9zcmMvYWFyY2g2 NC8KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxsaW51eC9saW5r YWdlLmg+CisjaW5jbHVkZSA8YXNtL2Fzc2VtYmxlci5oPgorCisvKgorICogRmlsbCBpbiB0aGUg YnVmZmVyIHdpdGggY2hhcmFjdGVyIGMgKGFsaWdubWVudCBoYW5kbGVkIGJ5IHRoZSBoYXJkd2Fy ZSkKKyAqCisgKiBQYXJhbWV0ZXJzOgorICoJeDAgLSBidWYKKyAqCXgxIC0gYworICoJeDIgLSBu CisgKiBSZXR1cm5zOgorICoJeDAgLSBidWYKKyAqLworCitkc3RpbgkJLnJlcQl4MAordmFsCQku cmVxCXcxCitjb3VudAkJLnJlcQl4MgordG1wMQkJLnJlcQl4MwordG1wMXcJCS5yZXEJdzMKK3Rt cDIJCS5yZXEJeDQKK3RtcDJ3CQkucmVxCXc0Cit6dmFfbGVuX3gJLnJlcQl4NQorenZhX2xlbgkJ LnJlcQl3NQorenZhX2JpdHNfeAkucmVxCXg2CisKK0FfbAkJLnJlcQl4NworQV9sdwkJLnJlcQl3 NworZHN0CQkucmVxCXg4Cit0bXAzdwkJLnJlcQl3OQordG1wMwkJLnJlcQl4OQorCisJLndlYWsg bWVtc2V0CitFTlRSWShtZW1zZXQpCisJbW92CWRzdCwgZHN0aW4JLyogUHJlc2VydmUgcmV0dXJu IHZhbHVlLiAgKi8KKwlhbmQJQV9sdywgdmFsLCAjMjU1CisJb3JyCUFfbHcsIEFfbHcsIEFfbHcs IGxzbCAjOAorCW9ycglBX2x3LCBBX2x3LCBBX2x3LCBsc2wgIzE2CisJb3JyCUFfbCwgQV9sLCBB X2wsIGxzbCAjMzIKKworCWNtcAljb3VudCwgIzE1CisJYi5oaQkuTG92ZXIxNl9wcm9jCisJLypB bGwgc3RvcmUgbWF5YmUgYXJlIG5vbi1hbGlnbmVkLi4qLworCXRiegljb3VudCwgIzMsIDFmCisJ c3RyCUFfbCwgW2RzdF0sICM4CisxOgorCXRiegljb3VudCwgIzIsIDJmCisJc3RyCUFfbHcsIFtk c3RdLCAjNAorMjoKKwl0YnoJY291bnQsICMxLCAzZgorCXN0cmgJQV9sdywgW2RzdF0sICMyCisz OgorCXRiegljb3VudCwgIzAsIDRmCisJc3RyYglBX2x3LCBbZHN0XQorNDoKKwlyZXQKKworLkxv dmVyMTZfcHJvYzoKKwkvKldoZXRoZXIgIHRoZSBzdGFydCBhZGRyZXNzIGlzIGFsaWduZWQgd2l0 aCAxNi4qLworCW5lZwl0bXAyLCBkc3QKKwlhbmRzCXRtcDIsIHRtcDIsICMxNQorCWIuZXEJLkxh bGlnbmVkCisvKgorKiBUaGUgY291bnQgaXMgbm90IGxlc3MgdGhhbiAxNiwgd2UgY2FuIHVzZSBz dHAgdG8gc3RvcmUgdGhlIHN0YXJ0IDE2IGJ5dGVzLAorKiB0aGVuIGFkanVzdCB0aGUgZHN0IGFs aWduZWQgd2l0aCAxNi5UaGlzIHByb2Nlc3Mgd2lsbCBtYWtlIHRoZSBjdXJyZW50CisqIG1lbW9y eSBhZGRyZXNzIGF0IGFsaWdubWVudCBib3VuZGFyeS4KKyovCisJc3RwCUFfbCwgQV9sLCBbZHN0 XSAvKm5vbi1hbGlnbmVkIHN0b3JlLi4qLworCS8qbWFrZSB0aGUgZHN0IGFsaWduZWQuLiovCisJ c3ViCWNvdW50LCBjb3VudCwgdG1wMgorCWFkZAlkc3QsIGRzdCwgdG1wMgorCisuTGFsaWduZWQ6 CisJY2J6CUFfbCwgLkx6ZXJvX21lbQorCisuTHRhaWxfbWF5YmVfbG9uZzoKKwljbXAJY291bnQs ICM2NAorCWIuZ2UJLkxub3Rfc2hvcnQKKy5MdGFpbDYzOgorCWFuZHMJdG1wMSwgY291bnQsICMw eDMwCisJYi5lcQkzZgorCWNtcAl0bXAxdywgIzB4MjAKKwliLmVxCTFmCisJYi5sdAkyZgorCXN0 cAlBX2wsIEFfbCwgW2RzdF0sICMxNgorMToKKwlzdHAJQV9sLCBBX2wsIFtkc3RdLCAjMTYKKzI6 CisJc3RwCUFfbCwgQV9sLCBbZHN0XSwgIzE2CisvKgorKiBUaGUgbGFzdCBzdG9yZSBsZW5ndGgg aXMgbGVzcyB0aGFuIDE2LHVzZSBzdHAgdG8gd3JpdGUgbGFzdCAxNiBieXRlcy4KKyogSXQgd2ls bCBsZWFkIHNvbWUgYnl0ZXMgd3JpdHRlbiB0d2ljZSBhbmQgdGhlIGFjY2VzcyBpcyBub24tYWxp Z25lZC4KKyovCiszOgorCWFuZHMJY291bnQsIGNvdW50LCAjMTUKKwljYnoJY291bnQsIDRmCisJ YWRkCWRzdCwgZHN0LCBjb3VudAorCXN0cAlBX2wsIEFfbCwgW2RzdCwgIy0xNl0JLyogUmVwZWF0 IHNvbWUvYWxsIG9mIGxhc3Qgc3RvcmUuICovCis0OgorCXJldAorCisJLyoKKwkqIENyaXRpY2Fs IGxvb3AuIFN0YXJ0IGF0IGEgbmV3IGNhY2hlIGxpbmUgYm91bmRhcnkuIEFzc3VtaW5nCisJKiA2 NCBieXRlcyBwZXIgbGluZSwgdGhpcyBlbnN1cmVzIHRoZSBlbnRpcmUgbG9vcCBpcyBpbiBvbmUg bGluZS4KKwkqLworLkxub3Rfc2hvcnQ6CisJc3ViCWRzdCwgZHN0LCAjMTYvKiBQcmUtYmlhcy4g ICovCisJc3ViCWNvdW50LCBjb3VudCwgIzY0CisxOgorCXN0cAlBX2wsIEFfbCwgW2RzdCwgIzE2 XQorCXN0cAlBX2wsIEFfbCwgW2RzdCwgIzMyXQorCXN0cAlBX2wsIEFfbCwgW2RzdCwgIzQ4XQor CXN0cAlBX2wsIEFfbCwgW2RzdCwgIzY0XSEKKwlzdWJzCWNvdW50LCBjb3VudCwgIzY0CisJYi5n ZQkxYgorCXRzdAljb3VudCwgIzB4M2YKKwlhZGQJZHN0LCBkc3QsICMxNgorCWIubmUJLkx0YWls NjMKKy5MZXhpdGZ1bmM6CisJcmV0CisKKwkvKgorCSogRm9yIHplcm9pbmcgbWVtb3J5LCBjaGVj ayB0byBzZWUgaWYgd2UgY2FuIHVzZSB0aGUgWlZBIGZlYXR1cmUgdG8KKwkqIHplcm8gZW50aXJl ICdjYWNoZScgbGluZXMuCisJKi8KKy5MemVyb19tZW06CisJY21wCWNvdW50LCAjNjMKKwliLmxl CS5MdGFpbDYzCisJLyoKKwkqIEZvciB6ZXJvaW5nIHNtYWxsIGFtb3VudHMgb2YgbWVtb3J5LCBp dCdzIG5vdCB3b3J0aCBzZXR0aW5nIHVwCisJKiB0aGUgbGluZS1jbGVhciBjb2RlLgorCSovCisJ Y21wCWNvdW50LCAjMTI4CisJYi5sdAkuTG5vdF9zaG9ydCAvKmNvdW50IGlzIGF0IGxlYXN0ICAx MjggYnl0ZXMqLworCisJbXJzCXRtcDEsIGRjemlkX2VsMAorCXRibnoJdG1wMSwgIzQsIC5Mbm90 X3Nob3J0CisJbW92CXRtcDN3LCAjNAorCWFuZAl6dmFfbGVuLCB0bXAxdywgIzE1CS8qIFNhZmV0 eTogb3RoZXIgYml0cyByZXNlcnZlZC4gICovCisJbHNsCXp2YV9sZW4sIHRtcDN3LCB6dmFfbGVu CisKKwlhbmRzCXRtcDN3LCB6dmFfbGVuLCAjNjMKKwkvKgorCSogZW5zdXJlIHRoZSB6dmFfbGVu IGlzIG5vdCBsZXNzIHRoYW4gNjQuCisJKiBJdCBpcyBub3QgbWVhbmluZ2Z1bCB0byB1c2UgWlZB IGlmIHRoZSBibG9jayBzaXplIGlzIGxlc3MgdGhhbiA2NC4KKwkqLworCWIubmUJLkxub3Rfc2hv cnQKKy5MemVyb19ieV9saW5lOgorCS8qCisJKiBDb21wdXRlIGhvdyBmYXIgd2UgbmVlZCB0byBn byB0byBiZWNvbWUgc3VpdGFibHkgYWxpZ25lZC4gV2UncmUKKwkqIGFscmVhZHkgYXQgcXVhZC13 b3JkIGFsaWdubWVudC4KKwkqLworCWNtcAljb3VudCwgenZhX2xlbl94CisJYi5sdAkuTG5vdF9z aG9ydAkJLyogTm90IGVub3VnaCB0byByZWFjaCBhbGlnbm1lbnQuICAqLworCXN1Ygl6dmFfYml0 c194LCB6dmFfbGVuX3gsICMxCisJbmVnCXRtcDIsIGRzdAorCWFuZHMJdG1wMiwgdG1wMiwgenZh X2JpdHNfeAorCWIuZXEJMmYJCQkvKiBBbHJlYWR5IGFsaWduZWQuICAqLworCS8qIE5vdCBhbGln bmVkLCBjaGVjayB0aGF0IHRoZXJlJ3MgZW5vdWdoIHRvIGNvcHkgYWZ0ZXIgYWxpZ25tZW50Liov CisJc3ViCXRtcDEsIGNvdW50LCB0bXAyCisJLyoKKwkqIGdyYW50ZWUgdGhlIHJlbWFpbiBsZW5n dGggdG8gYmUgWlZBIGlzIGJpZ2dlciB0aGFuIDY0LAorCSogYXZvaWQgdG8gbWFrZSB0aGUgMmYn cyBwcm9jZXNzIG92ZXIgbWVtIHJhbmdlLiovCisJY21wCXRtcDEsICM2NAorCWNjbXAJdG1wMSwg enZhX2xlbl94LCAjOCwgZ2UJLyogTlpDVj0wYjEwMDAgKi8KKwliLmx0CS5Mbm90X3Nob3J0CisJ LyoKKwkqIFdlIGtub3cgdGhhdCB0aGVyZSdzIGF0IGxlYXN0IDY0IGJ5dGVzIHRvIHplcm8gYW5k IHRoYXQgaXQncyBzYWZlCisJKiB0byBvdmVycnVuIGJ5IDY0IGJ5dGVzLgorCSovCisJbW92CWNv dW50LCB0bXAxCisxOgorCXN0cAlBX2wsIEFfbCwgW2RzdF0KKwlzdHAJQV9sLCBBX2wsIFtkc3Qs ICMxNl0KKwlzdHAJQV9sLCBBX2wsIFtkc3QsICMzMl0KKwlzdWJzCXRtcDIsIHRtcDIsICM2NAor CXN0cAlBX2wsIEFfbCwgW2RzdCwgIzQ4XQorCWFkZAlkc3QsIGRzdCwgIzY0CisJYi5nZQkxYgor CS8qIFdlJ3ZlIG92ZXJydW4gYSBiaXQsIHNvIGFkanVzdCBkc3QgZG93bndhcmRzLiovCisJYWRk CWRzdCwgZHN0LCB0bXAyCisyOgorCXN1Ygljb3VudCwgY291bnQsIHp2YV9sZW5feAorMzoKKwlk Ywl6dmEsIGRzdAorCWFkZAlkc3QsIGRzdCwgenZhX2xlbl94CisJc3Vicwljb3VudCwgY291bnQs IHp2YV9sZW5feAorCWIuZ2UJM2IKKwlhbmRzCWNvdW50LCBjb3VudCwgenZhX2JpdHNfeAorCWIu bmUJLkx0YWlsX21heWJlX2xvbmcKKwlyZXQKK0VORFBST0MobWVtc2V0KQpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9saWIvbW9kdWxlLmMgYi9hcmNoL2FybTY0L2xpYi9tb2R1bGUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTc5NjVkCi0tLSAvZGV2L251bGwKKysrIGIv YXJjaC9hcm02NC9saWIvbW9kdWxlLmMKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqICBsaW51eC9h cmNoL2FybS9rZXJuZWwvbW9kdWxlLmMKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyIFJ1c3Nl bGwgS2luZy4KKyAqICBNb2RpZmllZCBmb3Igbm9tbXUgYnkgSHlvayBTLiBDaG9pCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4KKyAqCisgKiBNb2R1bGUgYWxsb2NhdGlvbiBtZXRob2Qgc3VnZ2VzdGVk IGJ5IEFuZGkgS2xlZW4uCisgKi8KKworLy8jaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KKyNpbmNs dWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxlbGYuaD4KKyNpbmNsdWRlIDxtb2R1bGUuaD4KKyNp bmNsdWRlIDxlcnJuby5oPgorCitpbnQKK2FwcGx5X3JlbG9jYXRlKEVsZjMyX1NoZHIgKnNlY2hk cnMsIGNvbnN0IGNoYXIgKnN0cnRhYiwgdW5zaWduZWQgaW50IHN5bWluZGV4LAorCSAgICAgICB1 bnNpZ25lZCBpbnQgcmVsaW5kZXgsIHN0cnVjdCBtb2R1bGUgKm1vZHVsZSkKK3sKKwlFbGYzMl9T aGRyICpzeW1zZWMgPSBzZWNoZHJzICsgc3ltaW5kZXg7CisJRWxmMzJfU2hkciAqcmVsc2VjID0g c2VjaGRycyArIHJlbGluZGV4OworCUVsZjMyX1NoZHIgKmRzdHNlYyA9IHNlY2hkcnMgKyByZWxz ZWMtPnNoX2luZm87CisJRWxmMzJfUmVsICpyZWwgPSAodm9pZCAqKXJlbHNlYy0+c2hfYWRkcjsK Kwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCByZWxzZWMtPnNoX3NpemUgLyBz aXplb2YoRWxmMzJfUmVsKTsgaSsrLCByZWwrKykgeworCQl1bnNpZ25lZCBsb25nIGxvYzsKKwkJ RWxmMzJfU3ltICpzeW07CisJCXMzMiBvZmZzZXQ7CisKKwkJb2Zmc2V0ID0gRUxGMzJfUl9TWU0o cmVsLT5yX2luZm8pOworCQlpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiAoc3ltc2VjLT5zaF9z aXplIC8gc2l6ZW9mKEVsZjMyX1N5bSkpKSB7CisJCQlwcmludGYoIiVzOiBiYWQgcmVsb2NhdGlv biwgc2VjdGlvbiAldSByZWxvYyAldVxuIiwKKwkJCQltb2R1bGUtPm5hbWUsIHJlbGluZGV4LCBp KTsKKwkJCXJldHVybiAtRU5PRVhFQzsKKwkJfQorCisJCXN5bSA9ICgoRWxmMzJfU3ltICopc3lt c2VjLT5zaF9hZGRyKSArIG9mZnNldDsKKworCQlpZiAocmVsLT5yX29mZnNldCA8IDAgfHwgcmVs LT5yX29mZnNldCA+IGRzdHNlYy0+c2hfc2l6ZSAtIHNpemVvZih1MzIpKSB7CisJCQlwcmludGYo IiVzOiBvdXQgb2YgYm91bmRzIHJlbG9jYXRpb24sICIKKwkJCQkic2VjdGlvbiAldSByZWxvYyAl dSBvZmZzZXQgJWQgc2l6ZSAlZFxuIiwKKwkJCQltb2R1bGUtPm5hbWUsIHJlbGluZGV4LCBpLCBy ZWwtPnJfb2Zmc2V0LAorCQkJCWRzdHNlYy0+c2hfc2l6ZSk7CisJCQlyZXR1cm4gLUVOT0VYRUM7 CisJCX0KKworCQlsb2MgPSBkc3RzZWMtPnNoX2FkZHIgKyByZWwtPnJfb2Zmc2V0OworCisJCXN3 aXRjaCAoRUxGMzJfUl9UWVBFKHJlbC0+cl9pbmZvKSkgeworCQljYXNlIFJfQVJNX0FCUzMyOgor CQkJKih1MzIgKilsb2MgKz0gc3ltLT5zdF92YWx1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgUl9B Uk1fUEMyNDoKKwkJY2FzZSBSX0FSTV9DQUxMOgorCQljYXNlIFJfQVJNX0pVTVAyNDoKKwkJCW9m ZnNldCA9ICgqKHUzMiAqKWxvYyAmIDB4MDBmZmZmZmYpIDw8IDI7CisJCQlpZiAob2Zmc2V0ICYg MHgwMjAwMDAwMCkKKwkJCQlvZmZzZXQgLT0gMHgwNDAwMDAwMDsKKworCQkJb2Zmc2V0ICs9IHN5 bS0+c3RfdmFsdWUgLSBsb2M7CisJCQlpZiAob2Zmc2V0ICYgMyB8fAorCQkJICAgIG9mZnNldCA8 PSAoczMyKTB4ZmUwMDAwMDAgfHwKKwkJCSAgICBvZmZzZXQgPj0gKHMzMikweDAyMDAwMDAwKSB7 CisJCQkJcHJpbnRmKCIlczogcmVsb2NhdGlvbiBvdXQgb2YgcmFuZ2UsIHNlY3Rpb24gIgorCQkJ CSAgICAgICAiJXUgcmVsb2MgJXUgc3ltICclcydcbiIsIG1vZHVsZS0+bmFtZSwKKwkJCQkgICAg ICAgcmVsaW5kZXgsIGksIHN0cnRhYiArIHN5bS0+c3RfbmFtZSk7CisJCQkJcmV0dXJuIC1FTk9F WEVDOworCQkJfQorCisJCQlvZmZzZXQgPj49IDI7CisKKwkJCSoodTMyICopbG9jICY9IDB4ZmYw MDAwMDA7CisJCQkqKHUzMiAqKWxvYyB8PSBvZmZzZXQgJiAweDAwZmZmZmZmOworCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCXByaW50ZigiJXM6IHVua25vd24gcmVsb2NhdGlvbjogJXVcbiIs CisJCQkgICAgICAgbW9kdWxlLT5uYW1lLCBFTEYzMl9SX1RZUEUocmVsLT5yX2luZm8pKTsKKwkJ CXJldHVybiAtRU5PRVhFQzsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworaW50CithcHBseV9y ZWxvY2F0ZV9hZGQoRWxmMzJfU2hkciAqc2VjaGRycywgY29uc3QgY2hhciAqc3RydGFiLAorCQkg ICB1bnNpZ25lZCBpbnQgc3ltaW5kZXgsIHVuc2lnbmVkIGludCByZWxzZWMsIHN0cnVjdCBtb2R1 bGUgKm1vZHVsZSkKK3sKKwlwcmludGYoIm1vZHVsZSAlczogQUREIFJFTE9DQVRJT04gdW5zdXBw b3J0ZWRcbiIsCisJICAgICAgIG1vZHVsZS0+bmFtZSk7CisJcmV0dXJuIC1FTk9FWEVDOworfQpk aWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9saWIvcGJsLmxkcy5TIGIvYXJjaC9hcm02NC9saWIvcGJs Lmxkcy5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYmFmZjAKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi9wYmwubGRzLlMKQEAgLTAsMCArMSw5NiBAQAor LyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9u aXguZGU+LCBQZW5ndXRyb25peAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2Yg cGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKi8KKyNp bmNsdWRlIDxsaW51eC9zaXplcy5oPgorI2luY2x1ZGUgPGFzbS1nZW5lcmljL2JhcmVib3gubGRz Lmg+CisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvbWVtb3J5X2xheW91dC5oPgorCisjaWZkZWYgQ09O RklHX1BCTF9SRUxPQ0FUQUJMRQorI2RlZmluZSBCQVNFCTB4MAorI2Vsc2UKKyNkZWZpbmUgQkFT RQkoVEVYVF9CQVNFIC0gU1pfMk0pCisjZW5kaWYKKworT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0 dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iKQorT1VUUFVUX0FS Q0goYXJtKQorU0VDVElPTlMKK3sKKwkuID0gQkFTRTsKKworCVBSRV9JTUFHRQorCisJLiA9IEFM SUdOKDQpOworCS50ZXh0ICAgICAgOgorCXsKKwkJX3N0ZXh0ID0gLjsKKwkJX3RleHQgPSAuOwor CQkqKC50ZXh0X2hlYWRfZW50cnkqKQorCQlfX2JhcmVfaW5pdF9zdGFydCA9IC47CisJCSooLnRl eHRfYmFyZV9pbml0KikKKwkJX19iYXJlX2luaXRfZW5kID0gLjsKKwkJKigudGV4dCopCisJfQor CisJLyogRGlzY2FyZCB1bndpbmQgaWYgZW5hYmxlIGluIGJhcmVib3ggKi8KKwkvRElTQ0FSRC8g OiB7ICooLkFSTS5leCopIH0KKworCUJBUkVCT1hfQkFSRV9JTklUX1NJWkUKKwlCQVJFQk9YX1BC TF9TSVpFCisKKwkuID0gQUxJR04oNCk7CisJLnJvZGF0YSA6IHsgKigucm9kYXRhKikgfQorCisJ LmJhcmVib3hfaW1kIDogeyBCQVJFQk9YX0lNRCB9CisKKwlfZXRleHQgPSAuOwkJCS8qIEVuZCBv ZiB0ZXh0IGFuZCByb2RhdGEgc2VjdGlvbiAqLworCisJLiA9IEFMSUdOKDQpOworCS5kYXRhIDog eyAqKC5kYXRhKikgfQorCisJLnJlbC5keW4gOiB7CisJCV9fcmVsX2R5bl9zdGFydCA9IC47CisJ CSooLnJlbCopCisJCV9fcmVsX2R5bl9lbmQgPSAuOworCX0KKworCS5keW5zeW0gOiB7CisJCV9f ZHluc3ltX3N0YXJ0ID0gLjsKKwkJKiguZHluc3ltKQorCQlfX2R5bnN5bV9lbmQgPSAuOworCX0K KworCS4gPSBBTElHTig0KTsKKwlfX2Jzc19zdGFydCA9IC47CisJLmJzcyA6IHsgKiguYnNzKikg fQorCV9fYnNzX3N0b3AgPSAuOworCV9lbmQgPSAuOworCisJLiA9IEFMSUdOKDQpOworCV9fcGln Z3lkYXRhX3N0YXJ0ID0gLjsKKwkucGlnZ3lkYXRhIDogeworCQkqKC5waWdneWRhdGEpCisJfQor CV9fcGlnZ3lkYXRhX2VuZCA9IC47CisKKwkuID0gQUxJR04oNCk7CisJLmltYWdlX2VuZCA6IHsK KwkJS0VFUCgqKC5pbWFnZV9lbmQpKQorCX0KKwlfX2ltYWdlX2VuZCA9IC47CisJX2JhcmVib3hf aW1hZ2Vfc2l6ZSA9IF9faW1hZ2VfZW5kIC0gQkFTRTsKKwlfYmFyZWJveF9wYmxfc2l6ZSA9IF9f YnNzX3N0YXJ0IC0gQkFTRTsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbGliL3J1bnRpbWUt b2Zmc2V0LlMgYi9hcmNoL2FybTY0L2xpYi9ydW50aW1lLW9mZnNldC5TCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNjhiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2Fy bTY0L2xpYi9ydW50aW1lLW9mZnNldC5TCkBAIC0wLDAgKzEsNTIgQEAKKyNpbmNsdWRlIDxsaW51 eC9saW5rYWdlLmg+CisjaW5jbHVkZSA8YXNtL2Fzc2VtYmxlci5oPgorCisuc2VjdGlvbiAiLnRl eHRfYmFyZV9pbml0IiwiYXgiCisKKy8qCisgKiBHZXQgdGhlIG9mZnNldCBiZXR3ZWVuIHRoZSBs aW5rIGFkZHJlc3MgYW5kIHRoZSBhZGRyZXNzCisgKiB3ZSBhcmUgY3VycmVudGx5IHJ1bm5pbmcg YXQuCisgKi8KK0VOVFJZKGdldF9ydW50aW1lX29mZnNldCkKKzE6CWFkciB4MCwgMWIKKwlhZHIg eDEsIGdldF9ydW50aW1lX29mZnNldAorCXN1YnMgeDAsIHgxLCB4MAorCXN1YnMgeDAsIHgwLCAj MQorCXJldAorCitsaW5rYWRyOgorLndvcmQgZ2V0X3J1bnRpbWVfb2Zmc2V0CitFTkRQUk9DKGdl dF9ydW50aW1lX29mZnNldCkKKworLmdsb2JsIF9fbGRfdmFyX2Jhc2UKK19fbGRfdmFyX2Jhc2U6 CisKKy8qCisgKiBGdW5jdGlvbnMgdG8gY2FsY3VsYXRlIHNlbGVjdGVkIGxpbmtlciBzdXBwbGll ZCB2YXJpYWJsZXMgZHVyaW5nIHJ1bnRpbWUuCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgcmVsb2Nh dGFibGUgYmluYXJpZXMgd2hlbiB0aGUgbGlua2VyIHZhcmlhYmxlcyBhcmUKKyAqIG5lZWRlZCBi ZWZvcmUgZmlueGluZyB1cCB0aGUgcmVsb2NhdGlvbnMuCisgKi8KKy5tYWNybyBsZF92YXJfZW50 cnkgbmFtZQorCUVOVFJZKF9fbGRfdmFyX1xuYW1lKQorCQlsZHIgeDAsIF9fXG5hbWUKKwkJYiAx ZgorCV9fXG5hbWU6IC53b3JkIFxuYW1lIC0gX19sZF92YXJfYmFzZQorCUVORFBST0MoX19sZF92 YXJfXG5hbWUpCisuZW5kbQorCitsZF92YXJfZW50cnkgX3RleHQKK2xkX3Zhcl9lbnRyeSBfX3Jl bF9keW5fc3RhcnQKK2xkX3Zhcl9lbnRyeSBfX3JlbF9keW5fZW5kCitsZF92YXJfZW50cnkgX19k eW5zeW1fc3RhcnQKK2xkX3Zhcl9lbnRyeSBfX2R5bnN5bV9lbmQKK2xkX3Zhcl9lbnRyeSBfYmFy ZWJveF9pbWFnZV9zaXplCitsZF92YXJfZW50cnkgX19ic3Nfc3RhcnQKK2xkX3Zhcl9lbnRyeSBf X2Jzc19zdG9wCisjaWZkZWYgX19QQkxfXworbGRfdmFyX2VudHJ5IF9faW1hZ2VfZW5kCisjZW5k aWYKKworMToKKwlsZHIgeDEsID1fX2xkX3Zhcl9iYXNlCisJYWRkcyB4MCwgeDAsIHgxCisJcmV0 CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2xpYi91bndpbmQuYyBiL2FyY2gvYXJtNjQvbGliL3Vu d2luZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZGNhNWIKLS0tIC9k ZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L2xpYi91bndpbmQuYwpAQCAtMCwwICsxLDM0OSBAQAor I2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGluaXQuaD4KKyNpbmNsdWRlIDxhc20vc3Rh Y2t0cmFjZS5oPgorI2luY2x1ZGUgPGFzbS91bndpbmQuaD4KKyNpbmNsdWRlIDxhc20vc2VjdGlv bnMuaD4KKworLyogRHVtbXkgZnVuY3Rpb25zIHRvIGF2b2lkIGxpbmtlciBjb21wbGFpbnRzICov Cit2b2lkIF9fYWVhYmlfdW53aW5kX2NwcF9wcjAodm9pZCkKK3sKK307CitFWFBPUlRfU1lNQk9M KF9fYWVhYmlfdW53aW5kX2NwcF9wcjApOworCit2b2lkIF9fYWVhYmlfdW53aW5kX2NwcF9wcjEo dm9pZCkKK3sKK307CitFWFBPUlRfU1lNQk9MKF9fYWVhYmlfdW53aW5kX2NwcF9wcjEpOworCit2 b2lkIF9fYWVhYmlfdW53aW5kX2NwcF9wcjIodm9pZCkKK3sKK307CitFWFBPUlRfU1lNQk9MKF9f YWVhYmlfdW53aW5kX2NwcF9wcjIpOworCitzdHJ1Y3QgdW53aW5kX2N0cmxfYmxvY2sgeworCXVu c2lnbmVkIGxvbmcgdnJzWzE2XTsJCS8qIHZpcnR1YWwgcmVnaXN0ZXIgc2V0ICovCisJdW5zaWdu ZWQgbG9uZyAqaW5zbjsJCS8qIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb25zIHdv cmQgKi8KKwlpbnQgZW50cmllczsJCQkvKiBudW1iZXIgb2YgZW50cmllcyBsZWZ0IHRvIGludGVy cHJldCAqLworCWludCBieXRlOwkJCS8qIGN1cnJlbnQgYnl0ZSBudW1iZXIgaW4gdGhlIGluc3Ry dWN0aW9ucyB3b3JkICovCit9OworCitlbnVtIHJlZ3MgeworCUZQID0gMTEsCisJU1AgPSAxMywK KwlMUiA9IDE0LAorCVBDID0gMTUKK307CisKKyNkZWZpbmUgVEhSRUFEX1NJWkUgICAgICAgICAg ICAgICA4MTkyCisKK2V4dGVybiBzdHJ1Y3QgdW53aW5kX2lkeCBfX3N0YXJ0X3Vud2luZF9pZHhb XTsKK2V4dGVybiBzdHJ1Y3QgdW53aW5kX2lkeCBfX3N0b3BfdW53aW5kX2lkeFtdOworCisvKiBD b252ZXJ0IGEgcHJlbDMxIHN5bWJvbCB0byBhbiBhYnNvbHV0ZSBhZGRyZXNzICovCisjZGVmaW5l IHByZWwzMV90b19hZGRyKHB0cikJCQkJXAorKHsJCQkJCQkJXAorCS8qIHNpZ24tZXh0ZW5kIHRv IDMyIGJpdHMgKi8JCQlcCisJbG9uZyBvZmZzZXQgPSAoKChsb25nKSoocHRyKSkgPDwgMSkgPj4g MTsJXAorCSh1bnNpZ25lZCBsb25nKShwdHIpICsgb2Zmc2V0OwkJCVwKK30pCisKK3N0YXRpYyBp bmxpbmUgaW50IGlzX2tlcm5lbF90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkcikKK3sKKwlpZiAoKGFk ZHIgPj0gKHVuc2lnbmVkIGxvbmcpX3N0ZXh0ICYmIGFkZHIgPD0gKHVuc2lnbmVkIGxvbmcpX2V0 ZXh0KSkKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZHVtcF9iYWNrdHJhY2Vf ZW50cnkodW5zaWduZWQgbG9uZyB3aGVyZSwgdW5zaWduZWQgbG9uZyBmcm9tLCB1bnNpZ25lZCBs b25nIGZyYW1lKQoreworI2lmZGVmIENPTkZJR19LQUxMU1lNUworCXByaW50aygiWzwlMDhseD5d ICglcFMpIGZyb20gWzwlMDhseD5dICglcFMpXG4iLCB3aGVyZSwgKHZvaWQgKil3aGVyZSwgZnJv bSwgKHZvaWQgKilmcm9tKTsKKyNlbHNlCisJcHJpbnRrKCJGdW5jdGlvbiBlbnRlcmVkIGF0IFs8 JTA4bHg+XSBmcm9tIFs8JTA4bHg+XVxuIiwgd2hlcmUsIGZyb20pOworI2VuZGlmCit9CisKKy8q CisgKiBCaW5hcnkgc2VhcmNoIGluIHRoZSB1bndpbmQgaW5kZXguIFRoZSBlbnRyaWVzIGVudHJp ZXMgYXJlCisgKiBndWFyYW50ZWVkIHRvIGJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkg dGhlIGxpbmtlci4KKyAqLworc3RhdGljIHN0cnVjdCB1bndpbmRfaWR4ICpzZWFyY2hfaW5kZXgo dW5zaWduZWQgbG9uZyBhZGRyLAorCQkJCSAgICAgICBzdHJ1Y3QgdW53aW5kX2lkeCAqZmlyc3Qs CisJCQkJICAgICAgIHN0cnVjdCB1bndpbmRfaWR4ICpsYXN0KQoreworCXByX2RlYnVnKCIlcygl MDhseCwgJXAsICVwKVxuIiwgX19mdW5jX18sIGFkZHIsIGZpcnN0LCBsYXN0KTsKKworCWlmIChh ZGRyIDwgZmlyc3QtPmFkZHIpIHsKKwkJcHJfd2FybmluZygidW53aW5kOiBVbmtub3duIHN5bWJv bCBhZGRyZXNzICUwOGx4XG4iLCBhZGRyKTsKKwkJcmV0dXJuIE5VTEw7CisJfSBlbHNlIGlmIChh ZGRyID49IGxhc3QtPmFkZHIpCisJCXJldHVybiBsYXN0OworCisJd2hpbGUgKGZpcnN0IDwgbGFz dCAtIDEpIHsKKwkJc3RydWN0IHVud2luZF9pZHggKm1pZCA9IGZpcnN0ICsgKChsYXN0IC0gZmly c3QgKyAxKSA+PiAxKTsKKworCQlpZiAoYWRkciA8IG1pZC0+YWRkcikKKwkJCWxhc3QgPSBtaWQ7 CisJCWVsc2UKKwkJCWZpcnN0ID0gbWlkOworCX0KKworCXJldHVybiBmaXJzdDsKK30KKworc3Rh dGljIHN0cnVjdCB1bndpbmRfaWR4ICp1bndpbmRfZmluZF9pZHgodW5zaWduZWQgbG9uZyBhZGRy KQoreworCXN0cnVjdCB1bndpbmRfaWR4ICppZHggPSBOVUxMOworCisJcHJfZGVidWcoIiVzKCUw OGx4KVxuIiwgX19mdW5jX18sIGFkZHIpOworCisJaWYgKGlzX2tlcm5lbF90ZXh0KGFkZHIpKQor CQkvKiBtYWluIHVud2luZCB0YWJsZSAqLworCQlpZHggPSBzZWFyY2hfaW5kZXgoYWRkciwgX19z dGFydF91bndpbmRfaWR4LAorCQkJCSAgIF9fc3RvcF91bndpbmRfaWR4IC0gMSk7CisJZWxzZSB7 CisJCS8qIG1vZHVsZSB1bndpbmRpbmcgbm90IHN1cHBvcnRlZCAqLworCX0KKworCXByX2RlYnVn KCIlczogaWR4ID0gJXBcbiIsIF9fZnVuY19fLCBpZHgpOworCXJldHVybiBpZHg7Cit9CisKK3N0 YXRpYyB1bnNpZ25lZCBsb25nIHVud2luZF9nZXRfYnl0ZShzdHJ1Y3QgdW53aW5kX2N0cmxfYmxv Y2sgKmN0cmwpCit7CisJdW5zaWduZWQgbG9uZyByZXQ7CisKKwlpZiAoY3RybC0+ZW50cmllcyA8 PSAwKSB7CisJCXByX3dhcm5pbmcoInVud2luZDogQ29ycnVwdCB1bndpbmQgdGFibGVcbiIpOwor CQlyZXR1cm4gMDsKKwl9CisKKwlyZXQgPSAoKmN0cmwtPmluc24gPj4gKGN0cmwtPmJ5dGUgKiA4 KSkgJiAweGZmOworCisJaWYgKGN0cmwtPmJ5dGUgPT0gMCkgeworCQljdHJsLT5pbnNuKys7CisJ CWN0cmwtPmVudHJpZXMtLTsKKwkJY3RybC0+Ynl0ZSA9IDM7CisJfSBlbHNlCisJCWN0cmwtPmJ5 dGUtLTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBFeGVjdXRlIHRoZSBjdXJyZW50IHVu d2luZCBpbnN0cnVjdGlvbi4KKyAqLworc3RhdGljIGludCB1bndpbmRfZXhlY19pbnNuKHN0cnVj dCB1bndpbmRfY3RybF9ibG9jayAqY3RybCkKK3sKKwl1bnNpZ25lZCBsb25nIGluc24gPSB1bndp bmRfZ2V0X2J5dGUoY3RybCk7CisKKwlwcl9kZWJ1ZygiJXM6IGluc24gPSAlMDhseFxuIiwgX19m dW5jX18sIGluc24pOworCisJaWYgKChpbnNuICYgMHhjMCkgPT0gMHgwMCkKKwkJY3RybC0+dnJz W1NQXSArPSAoKGluc24gJiAweDNmKSA8PCAyKSArIDQ7CisJZWxzZSBpZiAoKGluc24gJiAweGMw KSA9PSAweDQwKQorCQljdHJsLT52cnNbU1BdIC09ICgoaW5zbiAmIDB4M2YpIDw8IDIpICsgNDsK KwllbHNlIGlmICgoaW5zbiAmIDB4ZjApID09IDB4ODApIHsKKwkJdW5zaWduZWQgbG9uZyBtYXNr OworCQl1bnNpZ25lZCBsb25nICp2c3AgPSAodW5zaWduZWQgbG9uZyAqKWN0cmwtPnZyc1tTUF07 CisJCWludCBsb2FkX3NwLCByZWcgPSA0OworCisJCWluc24gPSAoaW5zbiA8PCA4KSB8IHVud2lu ZF9nZXRfYnl0ZShjdHJsKTsKKwkJbWFzayA9IGluc24gJiAweDBmZmY7CisJCWlmIChtYXNrID09 IDApIHsKKwkJCXByX3dhcm5pbmcoInVud2luZDogJ1JlZnVzZSB0byB1bndpbmQnIGluc3RydWN0 aW9uICUwNGx4XG4iLAorCQkJCSAgIGluc24pOworCQkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKwkJ fQorCisJCS8qIHBvcCBSNC1SMTUgYWNjb3JkaW5nIHRvIG1hc2sgKi8KKwkJbG9hZF9zcCA9IG1h c2sgJiAoMSA8PCAoMTMgLSA0KSk7CisJCXdoaWxlIChtYXNrKSB7CisJCQlpZiAobWFzayAmIDEp CisJCQkJY3RybC0+dnJzW3JlZ10gPSAqdnNwKys7CisJCQltYXNrID4+PSAxOworCQkJcmVnKys7 CisJCX0KKwkJaWYgKCFsb2FkX3NwKQorCQkJY3RybC0+dnJzW1NQXSA9ICh1bnNpZ25lZCBsb25n KXZzcDsKKwl9IGVsc2UgaWYgKChpbnNuICYgMHhmMCkgPT0gMHg5MCAmJgorCQkgICAoaW5zbiAm IDB4MGQpICE9IDB4MGQpCisJCWN0cmwtPnZyc1tTUF0gPSBjdHJsLT52cnNbaW5zbiAmIDB4MGZd OworCWVsc2UgaWYgKChpbnNuICYgMHhmMCkgPT0gMHhhMCkgeworCQl1bnNpZ25lZCBsb25nICp2 c3AgPSAodW5zaWduZWQgbG9uZyAqKWN0cmwtPnZyc1tTUF07CisJCWludCByZWc7CisKKwkJLyog cG9wIFI0LVJbNCtiYmJdICovCisJCWZvciAocmVnID0gNDsgcmVnIDw9IDQgKyAoaW5zbiAmIDcp OyByZWcrKykKKwkJCWN0cmwtPnZyc1tyZWddID0gKnZzcCsrOworCQlpZiAoaW5zbiAmIDB4ODAp CisJCQljdHJsLT52cnNbMTRdID0gKnZzcCsrOworCQljdHJsLT52cnNbU1BdID0gKHVuc2lnbmVk IGxvbmcpdnNwOworCX0gZWxzZSBpZiAoaW5zbiA9PSAweGIwKSB7CisJCWlmIChjdHJsLT52cnNb UENdID09IDApCisJCQljdHJsLT52cnNbUENdID0gY3RybC0+dnJzW0xSXTsKKwkJLyogbm8gZnVy dGhlciBwcm9jZXNzaW5nICovCisJCWN0cmwtPmVudHJpZXMgPSAwOworCX0gZWxzZSBpZiAoaW5z biA9PSAweGIxKSB7CisJCXVuc2lnbmVkIGxvbmcgbWFzayA9IHVud2luZF9nZXRfYnl0ZShjdHJs KTsKKwkJdW5zaWduZWQgbG9uZyAqdnNwID0gKHVuc2lnbmVkIGxvbmcgKiljdHJsLT52cnNbU1Bd OworCQlpbnQgcmVnID0gMDsKKworCQlpZiAobWFzayA9PSAwIHx8IG1hc2sgJiAweGYwKSB7CisJ CQlwcl93YXJuaW5nKCJ1bndpbmQ6IFNwYXJlIGVuY29kaW5nICUwNGx4XG4iLAorCQkJICAgICAg IChpbnNuIDw8IDgpIHwgbWFzayk7CisJCQlyZXR1cm4gLVVSQ19GQUlMVVJFOworCQl9CisKKwkJ LyogcG9wIFIwLVIzIGFjY29yZGluZyB0byBtYXNrICovCisJCXdoaWxlIChtYXNrKSB7CisJCQlp ZiAobWFzayAmIDEpCisJCQkJY3RybC0+dnJzW3JlZ10gPSAqdnNwKys7CisJCQltYXNrID4+PSAx OworCQkJcmVnKys7CisJCX0KKwkJY3RybC0+dnJzW1NQXSA9ICh1bnNpZ25lZCBsb25nKXZzcDsK Kwl9IGVsc2UgaWYgKGluc24gPT0gMHhiMikgeworCQl1bnNpZ25lZCBsb25nIHVsZWIxMjggPSB1 bndpbmRfZ2V0X2J5dGUoY3RybCk7CisKKwkJY3RybC0+dnJzW1NQXSArPSAweDIwNCArICh1bGVi MTI4IDw8IDIpOworCX0gZWxzZSB7CisJCXByX3dhcm5pbmcoInVud2luZDogVW5oYW5kbGVkIGlu c3RydWN0aW9uICUwMmx4XG4iLCBpbnNuKTsKKwkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKwl9CisK Kwlwcl9kZWJ1ZygiJXM6IGZwID0gJTA4bHggc3AgPSAlMDhseCBsciA9ICUwOGx4IHBjID0gJTA4 bHhcbiIsIF9fZnVuY19fLAorCQkgY3RybC0+dnJzW0ZQXSwgY3RybC0+dnJzW1NQXSwgY3RybC0+ dnJzW0xSXSwgY3RybC0+dnJzW1BDXSk7CisKKwlyZXR1cm4gVVJDX09LOworfQorCisvKgorICog VW53aW5kIGEgc2luZ2xlIGZyYW1lIHN0YXJ0aW5nIHdpdGggKnNwIGZvciB0aGUgc3ltYm9sIGF0 ICpwYy4gSXQKKyAqIHVwZGF0ZXMgdGhlICpwYyBhbmQgKnNwIHdpdGggdGhlIG5ldyB2YWx1ZXMu CisgKi8KK2ludCB1bndpbmRfZnJhbWUoc3RydWN0IHN0YWNrZnJhbWUgKmZyYW1lKQoreworCXVu c2lnbmVkIGxvbmcgaGlnaCwgbG93OworCXN0cnVjdCB1bndpbmRfaWR4ICppZHg7CisJc3RydWN0 IHVud2luZF9jdHJsX2Jsb2NrIGN0cmw7CisKKwkvKiBvbmx5IGdvIHRvIGEgaGlnaGVyIGFkZHJl c3Mgb24gdGhlIHN0YWNrICovCisJbG93ID0gZnJhbWUtPnNwOworCWhpZ2ggPSBBTElHTihsb3cs IFRIUkVBRF9TSVpFKTsKKworCXByX2RlYnVnKCIlcyhwYyA9ICUwOGx4IGxyID0gJTA4bHggc3Ag PSAlMDhseClcbiIsIF9fZnVuY19fLAorCQkgZnJhbWUtPnBjLCBmcmFtZS0+bHIsIGZyYW1lLT5z cCk7CisKKwlpZiAoIWlzX2tlcm5lbF90ZXh0KGZyYW1lLT5wYykpCisJCXJldHVybiAtVVJDX0ZB SUxVUkU7CisKKwlpZHggPSB1bndpbmRfZmluZF9pZHgoZnJhbWUtPnBjKTsKKwlpZiAoIWlkeCkg eworCQlwcl93YXJuaW5nKCJ1bndpbmQ6IEluZGV4IG5vdCBmb3VuZCAlMDhseFxuIiwgZnJhbWUt PnBjKTsKKwkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKwl9CisKKwljdHJsLnZyc1tGUF0gPSBmcmFt ZS0+ZnA7CisJY3RybC52cnNbU1BdID0gZnJhbWUtPnNwOworCWN0cmwudnJzW0xSXSA9IGZyYW1l LT5scjsKKwljdHJsLnZyc1tQQ10gPSAwOworCisJaWYgKGlkeC0+aW5zbiA9PSAxKQorCQkvKiBj YW4ndCB1bndpbmQgKi8KKwkJcmV0dXJuIC1VUkNfRkFJTFVSRTsKKwllbHNlIGlmICgoaWR4LT5p bnNuICYgMHg4MDAwMDAwMCkgPT0gMCkKKwkJLyogcHJlbDMxIHRvIHRoZSB1bndpbmQgdGFibGUg Ki8KKwkJY3RybC5pbnNuID0gKHVuc2lnbmVkIGxvbmcgKilwcmVsMzFfdG9fYWRkcigmaWR4LT5p bnNuKTsKKwllbHNlIGlmICgoaWR4LT5pbnNuICYgMHhmZjAwMDAwMCkgPT0gMHg4MDAwMDAwMCkK KwkJLyogb25seSBwZXJzb25hbGl0eSByb3V0aW5lIDAgc3VwcG9ydGVkIGluIHRoZSBpbmRleCAq LworCQljdHJsLmluc24gPSAmaWR4LT5pbnNuOworCWVsc2UgeworCQlwcl93YXJuaW5nKCJ1bndp bmQ6IFVuc3VwcG9ydGVkIHBlcnNvbmFsaXR5IHJvdXRpbmUgJTA4bHggaW4gdGhlIGluZGV4IGF0 ICVwXG4iLAorCQkJICAgaWR4LT5pbnNuLCBpZHgpOworCQlyZXR1cm4gLVVSQ19GQUlMVVJFOwor CX0KKworCS8qIGNoZWNrIHRoZSBwZXJzb25hbGl0eSByb3V0aW5lICovCisJaWYgKCgqY3RybC5p bnNuICYgMHhmZjAwMDAwMCkgPT0gMHg4MDAwMDAwMCkgeworCQljdHJsLmJ5dGUgPSAyOworCQlj dHJsLmVudHJpZXMgPSAxOworCX0gZWxzZSBpZiAoKCpjdHJsLmluc24gJiAweGZmMDAwMDAwKSA9 PSAweDgxMDAwMDAwKSB7CisJCWN0cmwuYnl0ZSA9IDE7CisJCWN0cmwuZW50cmllcyA9IDEgKyAo KCpjdHJsLmluc24gJiAweDAwZmYwMDAwKSA+PiAxNik7CisJfSBlbHNlIHsKKwkJcHJfd2Fybmlu ZygidW53aW5kOiBVbnN1cHBvcnRlZCBwZXJzb25hbGl0eSByb3V0aW5lICUwOGx4IGF0ICVwXG4i LAorCQkJICAgKmN0cmwuaW5zbiwgY3RybC5pbnNuKTsKKwkJcmV0dXJuIC1VUkNfRkFJTFVSRTsK Kwl9CisKKwl3aGlsZSAoY3RybC5lbnRyaWVzID4gMCkgeworCQlpbnQgdXJjID0gdW53aW5kX2V4 ZWNfaW5zbigmY3RybCk7CisJCWlmICh1cmMgPCAwKQorCQkJcmV0dXJuIHVyYzsKKwkJaWYgKGN0 cmwudnJzW1NQXSA8IGxvdyB8fCBjdHJsLnZyc1tTUF0gPj0gaGlnaCkKKwkJCXJldHVybiAtVVJD X0ZBSUxVUkU7CisJfQorCisJaWYgKGN0cmwudnJzW1BDXSA9PSAwKQorCQljdHJsLnZyc1tQQ10g PSBjdHJsLnZyc1tMUl07CisKKwkvKiBjaGVjayBmb3IgaW5maW5pdGUgbG9vcCAqLworCWlmIChm cmFtZS0+cGMgPT0gY3RybC52cnNbUENdKQorCQlyZXR1cm4gLVVSQ19GQUlMVVJFOworCisJZnJh bWUtPmZwID0gY3RybC52cnNbRlBdOworCWZyYW1lLT5zcCA9IGN0cmwudnJzW1NQXTsKKwlmcmFt ZS0+bHIgPSBjdHJsLnZyc1tMUl07CisJZnJhbWUtPnBjID0gY3RybC52cnNbUENdOworCisJcmV0 dXJuIFVSQ19PSzsKK30KKwordm9pZCB1bndpbmRfYmFja3RyYWNlKHN0cnVjdCBwdF9yZWdzICpy ZWdzKQoreworCXN0cnVjdCBzdGFja2ZyYW1lIGZyYW1lOworCXJlZ2lzdGVyIHVuc2lnbmVkIGxv bmcgY3VycmVudF9zcCBhc20gKCJzcCIpOworCisJcHJfZGVidWcoIiVzXG4iLCBfX2Z1bmNfXyk7 CisKKwlpZiAocmVncykgeworCQlmcmFtZS5mcCA9IHJlZ3MtPkFSTV9mcDsKKwkJZnJhbWUuc3Ag PSByZWdzLT5BUk1fc3A7CisJCWZyYW1lLmxyID0gcmVncy0+QVJNX2xyOworCQkvKiBQQyBtaWdo dCBiZSBjb3JydXB0ZWQsIHVzZSBMUiBpbiB0aGF0IGNhc2UuICovCisJCWZyYW1lLnBjID0gaXNf a2VybmVsX3RleHQocmVncy0+QVJNX3BjKQorCQkJID8gcmVncy0+QVJNX3BjIDogcmVncy0+QVJN X2xyOworCX0gZWxzZSB7CisJCWZyYW1lLnNwID0gY3VycmVudF9zcDsKKwkJZnJhbWUubHIgPSAo dW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCk7CisJCWZyYW1lLnBjID0g KHVuc2lnbmVkIGxvbmcpdW53aW5kX2JhY2t0cmFjZTsKKwl9CisKKwl3aGlsZSAoMSkgeworCQlp bnQgdXJjOworCQl1bnNpZ25lZCBsb25nIHdoZXJlID0gZnJhbWUucGM7CisKKwkJdXJjID0gdW53 aW5kX2ZyYW1lKCZmcmFtZSk7CisJCWlmICh1cmMgPCAwKQorCQkJYnJlYWs7CisJCWR1bXBfYmFj a3RyYWNlX2VudHJ5KHdoZXJlLCBmcmFtZS5wYywgZnJhbWUuc3AgLSA0KTsKKwl9Cit9CisKK3Zv aWQgZHVtcF9zdGFjayh2b2lkKQoreworCXVud2luZF9iYWNrdHJhY2UoTlVMTCk7Cit9CisKK3N0 YXRpYyBpbnQgdW53aW5kX2luaXQodm9pZCkKK3sKKwlzdHJ1Y3QgdW53aW5kX2lkeCAqaWR4Owor CisJLyogQ29udmVydCB0aGUgc3ltYm9sIGFkZHJlc3NlcyB0byBhYnNvbHV0ZSB2YWx1ZXMgKi8K Kwlmb3IgKGlkeCA9IF9fc3RhcnRfdW53aW5kX2lkeDsgaWR4IDwgX19zdG9wX3Vud2luZF9pZHg7 IGlkeCsrKQorCQlpZHgtPmFkZHIgPSBwcmVsMzFfdG9fYWRkcigmaWR4LT5hZGRyKTsKKworCXJl dHVybiAwOworfQorY29yZV9pbml0Y2FsbCh1bndpbmRfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L21hY2gtdmlydC9LY29uZmlnIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQvS2NvbmZpZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQzNjA2Ci0tLSAvZGV2L251bGwK KysrIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQvS2NvbmZpZwpAQCAtMCwwICsxLDE1IEBACitpZiBB UkNIX1ZJUlQKKworY29uZmlnIEFSQ0hfVEVYVF9CQVNFCisJaGV4CisJZGVmYXVsdCAweDQwMDAw MDAwCisKK2Nob2ljZQorCXByb21wdCAiQVJNIEJvYXJkIHR5cGUiCisKK2NvbmZpZyBNQUNIX1ZJ UlQKKwlib29sICJBUk0gUUVNVSB2aXJ0IgorCitlbmRjaG9pY2UKKworZW5kaWYKZGlmZiAtLWdp dCBhL2FyY2gvYXJtNjQvbWFjaC12aXJ0L01ha2VmaWxlIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQv TWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY2MjMxMQotLS0g L2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvbWFjaC12aXJ0L01ha2VmaWxlCkBAIC0wLDAgKzEg QEAKK29iai15ICs9IGRldmljZXMubyByZXNldC5vCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21h Y2gtdmlydC9kZXZpY2VzLmMgYi9hcmNoL2FybTY0L21hY2gtdmlydC9kZXZpY2VzLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkxZjRiZgotLS0gL2Rldi9udWxsCisrKyBi L2FyY2gvYXJtNjQvbWFjaC12aXJ0L2RldmljZXMuYwpAQCAtMCwwICsxLDMwIEBACisvKgorICog Q29weXJpZ2h0IChDKSAyMDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4K KyAqCisgKiBHUEx2MiBvbmx5CisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUg PGxpbnV4L2FtYmEvYnVzLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPG1h Y2gvZGV2aWNlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9ydC5oPgorCit2b2lkIHZpcnRfYWRk X2RkcmFtKHUzMiBzaXplKQoreworCWFybV9hZGRfbWVtX2RldmljZSgicmFtMCIsIDB4NTAwMDAw MDAsIHNpemUpOworfQorCit2b2lkIHZpcnRfcmVnaXN0ZXJfdWFydCh1bnNpZ25lZCBpZCkKK3sK KwlyZXNvdXJjZV9zaXplX3Qgc3RhcnQ7CisKKwlzd2l0Y2ggKGlkKSB7CisJY2FzZSAwOgorCQlz dGFydCA9IDB4MDkwMDAwMDA7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsKKwl9CisJ YW1iYV9hcGJfZGV2aWNlX2FkZChOVUxMLCAidWFydC1wbDAxMSIsIGlkLCBzdGFydCwgNDA5Niwg TlVMTCwgMCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21hY2gtdmlydC9pbmNsdWRlL21h Y2gvZGVidWdfbGwuaCBiL2FyY2gvYXJtNjQvbWFjaC12aXJ0L2luY2x1ZGUvbWFjaC9kZWJ1Z19s bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YjA2OTIKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L21hY2gtdmlydC9pbmNsdWRlL21hY2gvZGVidWdfbGwuaApA QCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTMgSmVhbi1DaHJpc3RvcGhlIFBM QUdOSU9MLVZJTExBUkQgPHBsYWduaW9sQGpjcm9zb2Z0LmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5 CisgKi8KKworI2lmbmRlZiBfX01BQ0hfREVCVUdfTExfSF9fCisjZGVmaW5lICAgX19NQUNIX0RF QlVHX0xMX0hfXworCisjaW5jbHVkZSA8bGludXgvYW1iYS9zZXJpYWwuaD4KKyNpbmNsdWRlIDxp by5oPgorCisjZGVmaW5lIERFQlVHX0xMX1BIWVNfQkFTRQkJMHgxMDAwMDAwMAorI2RlZmluZSBE RUJVR19MTF9QSFlTX0JBU0VfUlMxCQkweDFjMDAwMDAwCisKKyNpZmRlZiBNUAorI2RlZmluZSBE RUJVR19MTF9VQVJUX0FERFIgREVCVUdfTExfUEhZU19CQVNFCisjZWxzZQorI2RlZmluZSBERUJV R19MTF9VQVJUX0FERFIgREVCVUdfTExfUEhZU19CQVNFX1JTMQorI2VuZGlmCisKKyNpbmNsdWRl IDxhc20vZGVidWdfbGxfcGwwMTEuaD4KKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0 L21hY2gtdmlydC9pbmNsdWRlL21hY2gvZGV2aWNlcy5oIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQv aW5jbHVkZS9tYWNoL2RldmljZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45ODcyYzYxCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9tYWNoLXZpcnQvaW5jbHVk ZS9tYWNoL2RldmljZXMuaApAQCAtMCwwICsxLDEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy MDE2IFJhcGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4KKyAqCisgKiBHUEx2MiBv bmx5CisgKi8KKworI2lmbmRlZiBfX0FTTV9BUkNIX0RFVklDRVNfSF9fCisjZGVmaW5lIF9fQVNN X0FSQ0hfREVWSUNFU19IX18KKwordm9pZCB2aXJ0X2FkZF9kZHJhbSh1MzIgc2l6ZSk7Cit2b2lk IHZpcnRfcmVnaXN0ZXJfdWFydCh1bnNpZ25lZCBpZCk7CisKKyNlbmRpZiAvKiBfX0FTTV9BUkNI X0RFVklDRVNfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21hY2gtdmlydC9yZXNldC5j IGIvYXJjaC9hcm02NC9tYWNoLXZpcnQvcmVzZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5mYjg5NWViCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9hcm02NC9tYWNoLXZp cnQvcmVzZXQuYwpAQCAtMCwwICsxLDI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFJh cGhhw6tsIFBvZ2dpIDxwb2dnaS5yYXBoQGdtYWlsLmNvbT4KKyAqCisgKiBHUEx2MiBvbmx5Cisg Ki8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8aW5p dC5oPgorI2luY2x1ZGUgPHJlc3RhcnQuaD4KKyNpbmNsdWRlIDxtYWNoL2RldmljZXMuaD4KKwor c3RhdGljIHZvaWQgdmlydF9yZXNldF9zb2Moc3RydWN0IHJlc3RhcnRfaGFuZGxlciAqcnN0KQor eworCWhhbmcoKTsKK30KKworc3RhdGljIGludCByZXN0YXJ0X3JlZ2lzdGVyX2ZlYXR1cmUodm9p ZCkKK3sKKwlyZXN0YXJ0X2hhbmRsZXJfcmVnaXN0ZXJfZm4odmlydF9yZXNldF9zb2MpOworCisJ cmV0dXJuIDA7Cit9Citjb3JlZGV2aWNlX2luaXRjYWxsKHJlc3RhcnRfcmVnaXN0ZXJfZmVhdHVy ZSk7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L3BibC9NYWtlZmlsZSBiL2FyY2gvYXJtNjQvcGJs L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZjM5ZGIKLS0t IC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L3BibC9NYWtlZmlsZQpAQCAtMCwwICsxLDU4IEBA CisKK3N1ZmZpeF8kKENPTkZJR19JTUFHRV9DT01QUkVTU0lPTl9HWklQKSA9IGd6aXAKK3N1ZmZp eF8kKENPTkZJR19JTUFHRV9DT01QUkVTU0lPTl9MWk8pCT0gbHpvCitzdWZmaXhfJChDT05GSUdf SU1BR0VfQ09NUFJFU1NJT05fTFo0KQk9IGx6NAorc3VmZml4XyQoQ09ORklHX0lNQUdFX0NPTVBS RVNTSU9OX1haS0VSTikJPSB4emtlcm4KK3N1ZmZpeF8kKENPTkZJR19JTUFHRV9DT01QUkVTU0lP Tl9OT05FKQk9IHNoaXBwZWQKKworT0JKQ09QWUZMQUdTX3piYXJlYm94LmJpbiA9IC1PIGJpbmFy eQorcGlnZ3lfbyA6PSBwaWdneS4kKHN1ZmZpeF95KS5vCisKK3RhcmdldHMgOj0gemJhcmVib3gu bGRzIHpiYXJlYm94IHpiYXJlYm94LmJpbiB6YmFyZWJveC5TIFwKKwkgICAkKHBpZ2d5X28pIHBp Z2d5LiQoc3VmZml4X3kpCisKKyMgTWFrZSBzdXJlIGZpbGVzIGFyZSByZW1vdmVkIGR1cmluZyBj bGVhbgorZXh0cmEteSAgICAgICArPSBwaWdneS5nemlwIHBpZ2d5Lmx6NCBwaWdneS5sem8gcGln Z3kubHptYSBwaWdneS54emtlcm4gcGlnZ3kuc2hpcHBlZCB6YmFyZWJveC5tYXAKKworaWZlcSAo JChDT05GSUdfQ1BVX0JJR19FTkRJQU4pLHkpCitGSVhfU0laRT0tYgorZWxzZQorRklYX1NJWkU9 CitlbmRpZgorCiskKG9iaikvemJhcmVib3guYmluOgkkKG9iaikvemJhcmVib3ggRk9SQ0UKKwkk KGNhbGwgaWZfY2hhbmdlZCxvYmpjb3B5KQorCSQoY2FsbCBjbWQsY2hlY2tfZmlsZV9zaXplLCRA LCQoQ09ORklHX0JBUkVCT1hfTUFYX0lNQUdFX1NJWkUpKQorCSQoUSkkKGtlY2hvKSAnICBCYXJl Ym94OiBmaXggc2l6ZScKKwkkKFEpJChvYmp0cmVlKS9zY3JpcHRzL2ZpeF9zaXplIC1pIC1mICQo b2JqdHJlZSkvJEAgJChGSVhfU0laRSkKKwkkKFEpJChrZWNobykgJyAgQmFyZWJveDogJEAgaXMg cmVhZHknCisKKyQob2JqKS96YmFyZWJveC5TOiAkKG9iaikvemJhcmVib3ggRk9SQ0UKKwkkKGNh bGwgaWZfY2hhbmdlZCxkaXNhc20pCisKK1BCTF9DUFBGTEFHUwkJKz0gLWZkYXRhLXNlY3Rpb25z IC1mZnVuY3Rpb24tc2VjdGlvbnMKK0xERkxBR1NfemJhcmVib3gJOj0gLU1hcCAkKG9iaikvemJh cmVib3gubWFwIC0tZ2Mtc2VjdGlvbnMKK2lmZGVmIENPTkZJR19QQkxfUkVMT0NBVEFCTEUKK0xE RkxBR1NfemJhcmVib3ggKz0gLXBpZQorZWxzZQorTERGTEFHU196YmFyZWJveCArPSAtc3RhdGlj CitlbmRpZgoremJhcmVib3gtY29tbW9uIDo9ICQoYmFyZWJveC1wYmwtY29tbW9uKSAkKG9iaikv JChwaWdneV9vKQoremJhcmVib3gtbGRzIDo9ICQob2JqKS96YmFyZWJveC5sZHMKKworJCh6YmFy ZWJveC1sZHMpOiAkKG9iaikvLi4vbGliL3BibC5sZHMuUyBGT1JDRQorCSQoY2FsbCBpZl9jaGFu Z2VkX2RlcCxjcHBfbGRzX1MpCisKK3F1aWV0X2NtZF96YmFyZWJveF9fID89IExEICAgICAgJEAK KyAgICAgIGNtZF96YmFyZWJveF9fID89ICQoTEQpICQoTERGTEFHUykgJChMREZMQUdTX3piYXJl Ym94KSAtbyAkQCBcCisgICAgICAtZSBwYmxfc3RhcnQgLVQgJCh6YmFyZWJveC1sZHMpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgLS1zdGFydC1ncm91cCAkKHpiYXJlYm94 LWNvbW1vbikgLS1lbmQtZ3JvdXAgICAgICAgICAgICAgICAgIFwKKyAgICAgICQoZmlsdGVyLW91 dCAkKHpiYXJlYm94LWxkcykgJCh6YmFyZWJveC1jb21tb24pIEZPUkNFICwkXikKKworJChvYmop L3piYXJlYm94OiAkKHpiYXJlYm94LWxkcykgJCh6YmFyZWJveC1jb21tb24pIEZPUkNFCisJJChj YWxsIGlmX2NoYW5nZWQsemJhcmVib3hfXykKKworJChvYmopL3BpZ2d5LiQoc3VmZml4X3kpOiAk KG9iaikvLi4vLi4vLi4vYmFyZWJveC5iaW4gRk9SQ0UKKwkkKGNhbGwgaWZfY2hhbmdlZCwkKHN1 ZmZpeF95KSkKKworJChvYmopLyQocGlnZ3lfbyk6ICQob2JqKS9waWdneS4kKHN1ZmZpeF95KSBG T1JDRQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9wYmwvcGlnZ3kuZ3ppcC5TIGIvYXJjaC9hcm02 NC9wYmwvcGlnZ3kuZ3ppcC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRh NjIzYzAKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybTY0L3BibC9waWdneS5nemlwLlMKQEAg LTAsMCArMSw2IEBACisJLnNlY3Rpb24gLnBpZ2d5ZGF0YSwjYWxsb2MKKwkuZ2xvYmwgIGlucHV0 X2RhdGEKK2lucHV0X2RhdGE6CisJLmluY2JpbiAiYXJjaC9hcm0vcGJsL3BpZ2d5Lmd6aXAiCisJ Lmdsb2JsICBpbnB1dF9kYXRhX2VuZAoraW5wdXRfZGF0YV9lbmQ6CmRpZmYgLS1naXQgYS9hcmNo L2FybTY0L3BibC9waWdneS5sejQuUyBiL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6NC5TCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOWIyNDYKLS0tIC9kZXYvbnVsbAorKysg Yi9hcmNoL2FybTY0L3BibC9waWdneS5sejQuUwpAQCAtMCwwICsxLDYgQEAKKwkuc2VjdGlvbiAu cGlnZ3lkYXRhLCNhbGxvYworCS5nbG9ibAlpbnB1dF9kYXRhCitpbnB1dF9kYXRhOgorCS5pbmNi aW4JImFyY2gvYXJtL3BibC9waWdneS5sejQiCisJLmdsb2JsCWlucHV0X2RhdGFfZW5kCitpbnB1 dF9kYXRhX2VuZDoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6by5TIGIvYXJj aC9hcm02NC9wYmwvcGlnZ3kubHpvLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZTA0ODRjNwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lmx6by5T CkBAIC0wLDAgKzEsNiBAQAorCS5zZWN0aW9uIC5waWdneWRhdGEsI2FsbG9jCisJLmdsb2JsCWlu cHV0X2RhdGEKK2lucHV0X2RhdGE6CisJLmluY2JpbgkiYXJjaC9hcm0vcGJsL3BpZ2d5Lmx6byIK KwkuZ2xvYmwJaW5wdXRfZGF0YV9lbmQKK2lucHV0X2RhdGFfZW5kOgpkaWZmIC0tZ2l0IGEvYXJj aC9hcm02NC9wYmwvcGlnZ3kuc2hpcHBlZC5TIGIvYXJjaC9hcm02NC9wYmwvcGlnZ3kuc2hpcHBl ZC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYzI1NjkKLS0tIC9kZXYv bnVsbAorKysgYi9hcmNoL2FybTY0L3BibC9waWdneS5zaGlwcGVkLlMKQEAgLTAsMCArMSw2IEBA CisJLnNlY3Rpb24gLnBpZ2d5ZGF0YSwjYWxsb2MKKwkuZ2xvYmwgIGlucHV0X2RhdGEKK2lucHV0 X2RhdGE6CisJLmluY2JpbiAiYXJjaC9hcm0vcGJsL3BpZ2d5LnNoaXBwZWQiCisJLmdsb2JsICBp bnB1dF9kYXRhX2VuZAoraW5wdXRfZGF0YV9lbmQ6CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L3Bi bC9waWdneS54emtlcm4uUyBiL2FyY2gvYXJtNjQvcGJsL3BpZ2d5Lnh6a2Vybi5TCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzAyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9h cmNoL2FybTY0L3BibC9waWdneS54emtlcm4uUwpAQCAtMCwwICsxLDYgQEAKKwkuc2VjdGlvbiAu cGlnZ3lkYXRhLCNhbGxvYworCS5nbG9ibAlpbnB1dF9kYXRhCitpbnB1dF9kYXRhOgorCS5pbmNi aW4JImFyY2gvYXJtL3BibC9waWdneS54emtlcm4iCisJLmdsb2JsCWlucHV0X2RhdGFfZW5kCitp bnB1dF9kYXRhX2VuZDoKLS0gCjIuMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KYmFyZWJveCBtYWlsaW5nIGxpc3QKYmFyZWJveEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYmFy ZWJveAo=