Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756793AbaGDLFS (ORCPT ); Fri, 4 Jul 2014 07:05:18 -0400 Received: from relay-s04-hub001.domainlocalhost.com ([74.115.207.100]:40719 "EHLO relay-S04-HUB001.domainlocalhost.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752566AbaGDLFQ (ORCPT ); Fri, 4 Jul 2014 07:05:16 -0400 Content-Type: multipart/mixed; boundary="_000_77BC725C9062764F874D79F51E1F1A8F4C90DD9ES04MBX0104s04lo_" From: Dudley Du To: "Dmitry Torokhov (dmitry.torokhov@gmail.com)" CC: Alan Stern , Benson Leung , Patrik Fimml , "Rafael J. Wysocki" , "linux-kernel@vger.kernel.org" , "linux-input@vger.kernel.org" , Dudley Du Subject: [PATCH v3 6/14] input: cyapa: add gen3 trackpad device basic functions support Thread-Topic: [PATCH v3 6/14] input: cyapa: add gen3 trackpad device basic functions support Thread-Index: Ac+XdfRmjGiL+yOGSZGv1NJlD2oXcw== Date: Fri, 4 Jul 2014 11:05:13 +0000 Message-ID: <77BC725C9062764F874D79F51E1F1A8F4C90DD9E@S04-MBX01-04.s04.local> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: <77BC725C9062764F874D79F51E1F1A8F4C90DD9E@S04-MBX01-04.s04.local> x-originating-ip: [10.30.12.145] MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --_000_77BC725C9062764F874D79F51E1F1A8F4C90DD9ES04MBX0104s04lo_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QmFzZWQgb24gdGhlIGN5YXBhIGNvcmUsIGFkZCB0aGUgZ2VuMyB0cmFja3BhZCBkZXZpY2UncyBi YXNpYyBmdW5jdGlvbnMNCnN1cHBvcnRlZCwgc28gZ2VuMyB0cmFja3BhZCBkZXZpY2UgY2FuIHdv cmsgd2l0aCBrZXJuZWwgaW5wdXQgc3lzdGVtLg0KVGhlIGJhc2ljIGZ1bmN0aW9uIGlzIGFic29s dXRlbHkgc2FtZSBhcyBwcmV2aW91cyBjeWFwYSBkcml2ZXIgb25seQ0Kc3VwcG9ydCBnZW4zIHRy YWNrcGFkIGRldmljZS4NClRFU1Q9dGVzdCBvbiBDaHJvbWVib29rcy4NCg0KU2lnbmVkLW9mZi1i eTogRHVkbGV5IER1IDxkdWRsQGN5cHJlc3MuY29tPg0KLS0tDQogZHJpdmVycy9pbnB1dC9tb3Vz ZS9NYWtlZmlsZSAgICAgfCAgICAyICstDQogZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5jICAg ICAgfCAgIDk2ICsrKystDQogZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5oICAgICAgfCAgICAx ICsNCiBkcml2ZXJzL2lucHV0L21vdXNlL2N5YXBhX2dlbjMuYyB8ICA3MTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCiA0IGZpbGVzIGNoYW5nZWQsIDgxNSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lucHV0 L21vdXNlL2N5YXBhX2dlbjMuYw0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZS9N YWtlZmlsZSBiL2RyaXZlcnMvaW5wdXQvbW91c2UvTWFrZWZpbGUNCmluZGV4IDg2MDhlYjcuLjYz YjQyZTAgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL01ha2VmaWxlDQorKysgYi9k cml2ZXJzL2lucHV0L21vdXNlL01ha2VmaWxlDQpAQCAtMzUsNCArMzUsNCBAQCBwc21vdXNlLSQo Q09ORklHX01PVVNFX1BTMl9UUkFDS1BPSU5UKSAgICAgICAgKz0gdHJhY2twb2ludC5vDQogcHNt b3VzZS0kKENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQpICAgKz0gdG91Y2hraXRfcHMyLm8NCiBw c21vdXNlLSQoQ09ORklHX01PVVNFX1BTMl9DWVBSRVNTKSAgICArPSBjeXByZXNzX3BzMi5vDQoN Ci1jeWFwYXRwLXkgOj0gY3lhcGEubw0KK2N5YXBhdHAteSA6PSBjeWFwYS5vIGN5YXBhX2dlbjMu bw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvY3lhcGEuYyBiL2RyaXZlcnMvaW5w dXQvbW91c2UvY3lhcGEuYw0KaW5kZXggOGM0NDFjYy4uY2FhMGE0OCAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvaW5wdXQvbW91c2UvY3lhcGEuYw0KKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFw YS5jDQpAQCAtMTk3LDYgKzE5NywxNSBAQCBzc2l6ZV90IGN5YXBhX2kyY193cml0ZShzdHJ1Y3Qg Y3lhcGEgKmN5YXBhLCB1OCByZWcsDQoNCiB2b2lkIGN5YXBhX2RlZmF1bHRfaXJxX2hhbmRsZXIo c3RydWN0IGN5YXBhICpjeWFwYSkNCiB7DQorICAgICAgIGJvb2wgY29udDsNCisNCisgICAgICAg LyogaW50ZXJydXB0IHRyaWdnZXJyZWQgYnkgY29tbWFuZCByZXNwb25zZSBpbiBkZXRlY3Rpbmcu ICovDQorICAgICAgIGNvbnQgPSB0cnVlOw0KKyAgICAgICBpZiAoY3lhcGFfZ2VuM19vcHMuaXJx X2NtZF9oYW5kbGVyKQ0KKyAgICAgICAgICAgICAgIGNvbnQgPSBjeWFwYV9nZW4zX29wcy5pcnFf Y21kX2hhbmRsZXIoY3lhcGEpOw0KKyAgICAgICBpZiAoIWNvbnQpDQorICAgICAgICAgICAgICAg cmV0dXJuOw0KKw0KICAgICAgICAvKiBkbyByZWRldGVjdGluZyB3aGVuIGRldmljZSBzdGF0ZXMg aXMgc3RpbGwgdW5rbm93biBhbmQNCiAgICAgICAgICogaW50ZXJydXB0IGVudmVudCBpcyByZWNl aXZlZCBmcm9tIGRldmljZS4gKi8NCiAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFfZGV0ZWN0 X2FzeW5jLCBjeWFwYSk7DQpAQCAtMzMzLDYgKzM0Miw5IEBAIHN0YXRpYyBpbnQgY3lhcGFfY2hl Y2tfaXNfb3BlcmF0aW9uYWwoc3RydWN0IGN5YXBhICpjeWFwYSkNCiAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KDQogICAgICAgIHN3aXRjaCAoY3lhcGEtPmdlbikgew0KKyAgICAgICBjYXNl IENZQVBBX0dFTjM6DQorICAgICAgICAgICAgICAgY3lhcGEtPm9wcyA9ICZjeWFwYV9nZW4zX29w czsNCisgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAg ICAgICBjeWFwYS0+b3BzID0gJmN5YXBhX2RlZmF1bHRfb3BzOw0KICAgICAgICAgICAgICAgIGN5 YXBhLT5nZW4gPSBDWUFQQV9HRU5fVU5LTk9XTjsNCkBAIC0zOTcsOSArNDA5LDg1IEBAIG91dDoN CiAgKi8NCiBzdGF0aWMgaW50IGN5YXBhX2dldF9zdGF0ZShzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0K IHsNCisgICAgICAgaW50IHJldDsNCisgICAgICAgdTggc3RhdHVzW0JMX1NUQVRVU19TSVpFXTsN CisgICAgICAgdTggY21kWzMyXTsNCisgICAgICAgLyogVGhlIGkyYyBhZGRyZXNzIG9mIGdlbjQg YW5kIGdlbjUgdHJhY2twYWQgZGV2aWNlIG11c3QgYmUgZXZlbi4gKi8NCisgICAgICAgYm9vbCBl dmVuX2FkZHIgPSAoKGN5YXBhLT5jbGllbnQtPmFkZHIgJiAweDAwMDEpID09IDApOw0KKyAgICAg ICBib29sIHNtYnVzID0gZmFsc2U7DQorICAgICAgIGludCByZXRyaWVzID0gMjsNCisNCiAgICAg ICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfTk9fREVWSUNFOw0KDQotICAgICAgIHJldHVy biAtRU5PREVWOw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBHZXQgdHJhY2twYWQgc3RhdHVzIGJ5 IHJlYWRpbmcgMyByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSAwLg0KKyAgICAgICAgKiBJZiB0aGUg ZGV2aWNlIGlzIGluIHRoZSBib290bG9hZGVyLCB0aGlzIHdpbGwgYmUgQkxfSEVBRC4NCisgICAg ICAgICogSWYgdGhlIGRldmljZSBpcyBpbiBvcGVyYXRpb24gbW9kZSwgdGhpcyB3aWxsIGJlIHRo ZSBEQVRBIHJlZ3MuDQorICAgICAgICAqDQorICAgICAgICAqLw0KKyAgICAgICByZXQgPSBjeWFw YV9pMmNfcmVnX3JlYWRfYmxvY2soY3lhcGEsIEJMX0hFQURfT0ZGU0VULCBCTF9TVEFUVVNfU0la RSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyk7DQorDQor ICAgICAgIC8qDQorICAgICAgICAqIE9uIHNtYnVzIHN5c3RlbXMgaW4gT1AgbW9kZSwgdGhlIGky Y19yZWdfcmVhZCB3aWxsIGZhaWwgd2l0aA0KKyAgICAgICAgKiAtRVRJTUVET1VULiAgSW4gdGhp cyBjYXNlLCB0cnkgYWdhaW4gdXNpbmcgdGhlIHNtYnVzIGVxdWl2YWxlbnQNCisgICAgICAgICog Y29tbWFuZC4gIFRoaXMgc2hvdWxkIHJldHVybiBhIEJMX0hFQUQgaW5kaWNhdGluZyBDWUFQQV9T VEFURV9PUC4NCisgICAgICAgICovDQorICAgICAgIGlmIChjeWFwYS0+c21idXMgJiYgKHJldCA9 PSAtRVRJTUVET1VUIHx8IHJldCA9PSAtRU5YSU8pKSB7DQorICAgICAgICAgICAgICAgaWYgKCFl dmVuX2FkZHIpDQorICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9yZWFkX2Jsb2Nr KGN5YXBhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENZQVBBX0NN RF9CTF9TVEFUVVMsIHN0YXR1cyk7DQorICAgICAgICAgICAgICAgc21idXMgPSB0cnVlOw0KKyAg ICAgICB9DQorICAgICAgIGlmIChyZXQgIT0gQkxfU1RBVFVTX1NJWkUpDQorICAgICAgICAgICAg ICAgZ290byBlcnJvcjsNCisNCisgICAgICAgLyoNCisgICAgICAgICogZGV0ZWN0IHRyYWNrcGFk IHByb3RvY29sIGJhc2VkIG9uIGNoYXJhY3Jpc3RpYyByZWdpc3RlcnMgYW5kIGJpdHMuDQorICAg ICAgICAqLw0KKyAgICAgICBkbyB7DQorICAgICAgICAgICAgICAgY3lhcGEtPnN0YXR1c1tSRUdf T1BfU1RBVFVTXSA9IHN0YXR1c1tSRUdfT1BfU1RBVFVTXTsNCisgICAgICAgICAgICAgICBjeWFw YS0+c3RhdHVzW1JFR19CTF9TVEFUVVNdID0gc3RhdHVzW1JFR19CTF9TVEFUVVNdOw0KKyAgICAg ICAgICAgICAgIGN5YXBhLT5zdGF0dXNbUkVHX0JMX0VSUk9SXSA9IHN0YXR1c1tSRUdfQkxfRVJS T1JdOw0KKw0KKyAgICAgICAgICAgICAgIGlmIChjeWFwYS0+Z2VuID09IENZQVBBX0dFTl9VTktO T1dOIHx8DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5YXBhLT5nZW4gPT0gQ1lB UEFfR0VOMykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfZ2VuM19vcHMu c3RhdGVfcGFyc2UoY3lhcGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzLCBCTF9TVEFUVVNfU0laRSk7DQorICAgICAgICAgICAgICAgICAgICAgICBpZiAo cmV0ID09IDApDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X2RldGVj dGVkOw0KKyAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAvKg0KKyAgICAgICAg ICAgICAgICAqIGNhbm5vdCBkZXRlY3QgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBiYXNlZCBvbiBj dXJyZW50DQorICAgICAgICAgICAgICAgICogY2hhcmF0ZXJpc3RpYyByZWdpc3RlcnMgYW5kIGJp dHMuDQorICAgICAgICAgICAgICAgICogU28gd3JpdGUgZXJyb3IgY29tbWFuZCB0byBkbyBmdXJ0 aGVyIGRldGVjdGlvbi4NCisgICAgICAgICAgICAgICAgKiB0aGlzIG1ldGhvZCBvbmx5IHZhbGlk IG9uIEkyQyBidXMuDQorICAgICAgICAgICAgICAgICogZm9yIHNtYnVzIGludGVyZmFjZSwgaXQg d29uJ3QgaGF2ZSBvdmVyd3JpdGUgaXNzdWUuDQorICAgICAgICAgICAgICAgICovDQorICAgICAg ICAgICAgICAgaWYgKCFzbWJ1cykgew0KKyAgICAgICAgICAgICAgICAgICAgICAgY21kWzBdID0g MHgwMDsNCisgICAgICAgICAgICAgICAgICAgICAgIGNtZFsxXSA9IDB4MDA7DQorICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSBjeWFwYV9pMmNfd3JpdGUoY3lhcGEsIDAsIDIsIGNtZCk7DQor ICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnb3RvIGVycm9yOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgbXNsZWVwKDUw KTsNCisNCisgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGN5YXBhX2kyY19yZWFkKGN5YXBh LCBCTF9IRUFEX09GRlNFVCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCTF9TVEFUVVNfU0laRSwgc3RhdHVzKTsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChy ZXQgIT0gQkxfU1RBVFVTX1NJWkUpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdv dG8gZXJyb3I7DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICB9IHdoaWxlICgtLXJldHJpZXMg PiAwICYmICFzbWJ1cyk7DQorDQorICAgICAgIGdvdG8gZXJyb3I7DQorDQorb3V0X2RldGVjdGVk Og0KKyAgICAgICByZXR1cm4gMDsNCisNCitlcnJvcjoNCisgICAgICAgcmV0dXJuIChyZXQgPCAw KSA/IHJldCA6IC1FQUdBSU47DQogfQ0KDQogLyoNCkBAIC0xMTAxLDExICsxMTg5LDE3IEBAIHN0 YXRpYyB2b2lkIGN5YXBhX2RldGVjdF9hbmRfc3RhcnQodm9pZCAqZGF0YSwgYXN5bmNfY29va2ll X3QgY29va2llKQ0KDQogc3RhdGljIGludCBjeWFwYV90cF9tb2R1bGVzX2luaXQoc3RydWN0IGN5 YXBhICpjeWFwYSkNCiB7DQorICAgICAgIGlmIChjeWFwYV9nZW4zX29wcy5pbml0aWFsaXplKQ0K KyAgICAgICAgICAgICAgIHJldHVybiBjeWFwYV9nZW4zX29wcy5pbml0aWFsaXplKGN5YXBhKTsN CisNCiAgICAgICAgcmV0dXJuIDA7DQogfQ0KDQogc3RhdGljIGludCBjeWFwYV90cF9tb2R1bGVz X3VuaW5pdChzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KIHsNCisgICAgICAgaWYgKGN5YXBhX2dlbjNf b3BzLnVuaW5pdGlhbGl6ZSkNCisgICAgICAgICAgICAgICByZXR1cm4gY3lhcGFfZ2VuM19vcHMu dW5pbml0aWFsaXplKGN5YXBhKTsNCisNCiAgICAgICAgcmV0dXJuIDA7DQogfQ0KDQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYS5oIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9j eWFwYS5oDQppbmRleCAwZWM3NmQ5Li5iY2I3YzE2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbnB1 dC9tb3VzZS9jeWFwYS5oDQorKysgYi9kcml2ZXJzL2lucHV0L21vdXNlL2N5YXBhLmgNCkBAIC0z MDMsNSArMzAzLDYgQEAgdTE2IGN5YXBhX3B3cl9jbWRfdG9fc2xlZXBfdGltZSh1OCBwd3JfbW9k ZSk7DQoNCg0KIGV4dGVybiBjb25zdCBjaGFyIHVuaXF1ZV9zdHJbXTsNCitleHRlcm4gY29uc3Qg c3RydWN0IGN5YXBhX2Rldl9vcHMgY3lhcGFfZ2VuM19vcHM7DQoNCiAjZW5kaWYNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL2N5YXBhX2dlbjMuYyBiL2RyaXZlcnMvaW5wdXQvbW91 c2UvY3lhcGFfZ2VuMy5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMC4uZDE0 MmFjMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS9jeWFwYV9nZW4z LmMNCkBAIC0wLDAgKzEsNzE4IEBADQorLyoNCisgKiBDeXByZXNzIEFQQSB0cmFja3BhZCB3aXRo IEkyQyBpbnRlcmZhY2UNCisgKg0KKyAqIEF1dGhvcjogRHVkbGV5IER1IDxkdWRsQGN5cHJlc3Mu Y29tPg0KKyAqIEZ1cnRoZXIgY2xlYW51cCBhbmQgcmVzdHJ1Y3R1cmluZyBieToNCisgKiAgIERh bmllbCBLdXJ0eiA8ZGprdXJ0ekBjaHJvbWl1bS5vcmc+DQorICogICBCZW5zb24gTGV1bmcgPGJs ZXVuZ0BjaHJvbWl1bS5vcmc+DQorICoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBDeXBy ZXNzIFNlbWljb25kdWN0b3IsIEluYy4NCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBHb29n bGUsIEluYy4NCisgKg0KKyAqIFRoaXMgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQg Y29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZS4gIFNlZSB0 aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIGFyY2hpdmUgZm9y DQorICogbW9yZSBkZXRhaWxzLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0K KyNpbmNsdWRlIDxsaW51eC9pMmMuaD4NCisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4NCisjaW5j bHVkZSA8bGludXgvaW5wdXQvbXQuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisjaW5jbHVkZSAiY3lhcGEuaCINCisNCisNCisjZGVmaW5l IEdFTjNfTUFYX0ZJTkdFUlMgNQ0KKyNkZWZpbmUgR0VOM19GSU5HRVJfTlVNKHgpICgoKHgpID4+ IDQpICYgMHgwNykNCisNCisjZGVmaW5lIEJMS19IRUFEX0JZVEVTIDMyDQorDQorLyogTWFjcm8g Zm9yIHJlZ2lzdGVyIG1hcCBncm91cCBvZmZzZXQuICovDQorI2RlZmluZSBQUk9EVUNUX0lEX1NJ WkUgIDE2DQorI2RlZmluZSBRVUVSWV9EQVRBX1NJWkUgIDI3DQorI2RlZmluZSBSRUdfUFJPVE9D T0xfR0VOX1FVRVJZX09GRlNFVCAgMjANCisNCisjZGVmaW5lIFJFR19PRkZTRVRfREFUQV9CQVNF ICAgICAweDAwMDANCisjZGVmaW5lIFJFR19PRkZTRVRfQ09NTUFORF9CQVNFICAweDAwMjgNCisj ZGVmaW5lIFJFR19PRkZTRVRfUVVFUllfQkFTRSAgICAweDAwMmENCisNCisjZGVmaW5lIENZQVBB X09GRlNFVF9TT0ZUX1JFU0VUICBSRUdfT0ZGU0VUX0NPTU1BTkRfQkFTRQ0KKyNkZWZpbmUgT1Bf UkVDQUxJQlJBVElPTl9NQVNLICAgIDB4ODANCisjZGVmaW5lIE9QX1JFUE9SVF9CQVNFTElORV9N QVNLICAweDQwDQorI2RlZmluZSBSRUdfT0ZGU0VUX01BWF9CQVNFTElORSAgMHgwMDI2DQorI2Rl ZmluZSBSRUdfT0ZGU0VUX01JTl9CQVNFTElORSAgMHgwMDI3DQorDQorI2RlZmluZSBSRUdfT0ZG U0VUX1BPV0VSX01PREUgKFJFR19PRkZTRVRfQ09NTUFORF9CQVNFICsgMSkNCisjZGVmaW5lIFNF VF9QT1dFUl9NT0RFX0RFTEFZICAgMTAwMDAgIC8qIHVuaXQ6IHVzICovDQorI2RlZmluZSBTRVRf UE9XRVJfTU9ERV9UUklFUyAgIDUNCisNCisvKg0KKyAqIENZQVBBIHRyYWNrcGFkIGRldmljZSBz dGF0ZXMuDQorICogVXNlZCBpbiByZWdpc3RlciAweDAwLCBiaXQxLTAsIERldmljZVN0YXR1cyBm aWVsZC4NCisgKiBPdGhlciB2YWx1ZXMgaW5kaWNhdGUgZGV2aWNlIGlzIGluIGFuIGFibm9ybWFs IHN0YXRlIGFuZCBtdXN0IGJlIHJlc2V0Lg0KKyAqLw0KKyNkZWZpbmUgQ1lBUEFfREVWX05PUk1B TCAgMHgwMw0KKyNkZWZpbmUgQ1lBUEFfREVWX0JVU1kgICAgMHgwMQ0KKw0KKyNkZWZpbmUgQ1lB UEFfRldfQkxPQ0tfU0laRSAgICA2NA0KKyNkZWZpbmUgQ1lBUEFfRldfUkVBRF9TSVpFICAgICAx Ng0KKyNkZWZpbmUgQ1lBUEFfRldfSERSX1NUQVJUICAgICAweDA3ODANCisjZGVmaW5lIENZQVBB X0ZXX0hEUl9CTE9DS19DT1VOVCAgMg0KKyNkZWZpbmUgQ1lBUEFfRldfSERSX0JMT0NLX1NUQVJU ICAoQ1lBUEFfRldfSERSX1NUQVJUIC8gQ1lBUEFfRldfQkxPQ0tfU0laRSkNCisjZGVmaW5lIENZ QVBBX0ZXX0hEUl9TSVpFICAgICAgICAoQ1lBUEFfRldfSERSX0JMT0NLX0NPVU5UICogXA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENZQVBBX0ZXX0JMT0NLX1NJWkUp DQorI2RlZmluZSBDWUFQQV9GV19EQVRBX1NUQVJUICAgIDB4MDgwMA0KKyNkZWZpbmUgQ1lBUEFf RldfREFUQV9CTE9DS19DT1VOVCAgNDgwDQorI2RlZmluZSBDWUFQQV9GV19EQVRBX0JMT0NLX1NU QVJUICAoQ1lBUEFfRldfREFUQV9TVEFSVCAvIENZQVBBX0ZXX0JMT0NLX1NJWkUpDQorI2RlZmlu ZSBDWUFQQV9GV19EQVRBX1NJWkUgICAgIChDWUFQQV9GV19EQVRBX0JMT0NLX0NPVU5UICogXA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1lBUEFfRldfQkxPQ0tfU0laRSkNCisj ZGVmaW5lIENZQVBBX0ZXX1NJWkUgICAgICAgICAgKENZQVBBX0ZXX0hEUl9TSVpFICsgQ1lBUEFf RldfREFUQV9TSVpFKQ0KKyNkZWZpbmUgQ1lBUEFfQ01EX0xFTiAgICAgICAgICAxNg0KKw0KKw0K K3N0cnVjdCBjeWFwYV90b3VjaCB7DQorICAgICAgIC8qDQorICAgICAgICAqIGhpZ2ggYml0cyBv ciB4L3kgcG9zaXRpb24gdmFsdWUNCisgICAgICAgICogYml0IDcgLSA0OiBoaWdoIDQgYml0cyBv ZiB4IHBvc2l0aW9uIHZhbHVlDQorICAgICAgICAqIGJpdCAzIC0gMDogaGlnaCA0IGJpdHMgb2Yg eSBwb3NpdGlvbiB2YWx1ZQ0KKyAgICAgICAgKi8NCisgICAgICAgdTggeHlfaGk7DQorICAgICAg IHU4IHhfbG87ICAvKiBsb3cgOCBiaXRzIG9mIHggcG9zaXRpb24gdmFsdWUuICovDQorICAgICAg IHU4IHlfbG87ICAvKiBsb3cgOCBiaXRzIG9mIHkgcG9zaXRpb24gdmFsdWUuICovDQorICAgICAg IHU4IHByZXNzdXJlOw0KKyAgICAgICAvKiBpZCByYW5nZSBpcyAxIC0gMTUuICBJdCBpcyBpbmNy ZW1lbnRlZCB3aXRoIGV2ZXJ5IG5ldyB0b3VjaC4gKi8NCisgICAgICAgdTggaWQ7DQorfSBfX3Bh Y2tlZDsNCisNCitzdHJ1Y3QgY3lhcGFfcmVnX2RhdGEgew0KKyAgICAgICAvKg0KKyAgICAgICAg KiBiaXQgMCAtIDE6IGRldmljZSBzdGF0dXMNCisgICAgICAgICogYml0IDMgLSAyOiBwb3dlciBt b2RlDQorICAgICAgICAqIGJpdCA2IC0gNDogcmVzZXJ2ZWQNCisgICAgICAgICogYml0IDc6IGlu dGVycnVwdCB2YWxpZCBiaXQNCisgICAgICAgICovDQorICAgICAgIHU4IGRldmljZV9zdGF0dXM7 DQorICAgICAgIC8qDQorICAgICAgICAqIGJpdCA3IC0gNDogbnVtYmVyIG9mIGZpbmdlcnMgY3Vy cmVudGx5IHRvdWNoaW5nIHBhZA0KKyAgICAgICAgKiBiaXQgMzogdmFsaWQgZGF0YSBjaGVjayBi aXQNCisgICAgICAgICogYml0IDI6IG1pZGRsZSBtZWNoYW5pc20gYnV0dG9uIHN0YXRlIGlmIGV4 aXN0cw0KKyAgICAgICAgKiBiaXQgMTogcmlnaHQgbWVjaGFuaXNtIGJ1dHRvbiBzdGF0ZSBpZiBl eGlzdHMNCisgICAgICAgICogYml0IDA6IGxlZnQgbWVjaGFuaXNtIGJ1dHRvbiBzdGF0ZSBpZiBl eGlzdHMNCisgICAgICAgICovDQorICAgICAgIHU4IGZpbmdlcl9idG47DQorICAgICAgIC8qIENZ QVBBIHJlcG9ydHMgdXAgdG8gNSB0b3VjaGVzIHBlciBwYWNrZXQuICovDQorICAgICAgIHN0cnVj dCBjeWFwYV90b3VjaCB0b3VjaGVzWzVdOw0KK30gX19wYWNrZWQ7DQorDQorc3RhdGljIGNvbnN0 IHU4IGJsX2FjdGl2YXRlW10gPSB7IDB4MDAsIDB4ZmYsIDB4MzgsIDB4MDAsIDB4MDEsIDB4MDIs IDB4MDMsDQorICAgICAgICAgICAgICAgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNyB9Ow0KK3N0YXRp YyBjb25zdCB1OCBibF9kZWFjdGl2YXRlW10gPSB7IDB4MDAsIDB4ZmYsIDB4M2IsIDB4MDAsIDB4 MDEsIDB4MDIsIDB4MDMsDQorICAgICAgICAgICAgICAgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNyB9 Ow0KK3N0YXRpYyBjb25zdCB1OCBibF9leGl0W10gPSB7IDB4MDAsIDB4ZmYsIDB4YTUsIDB4MDAs IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsDQorICAgICAgICAgICAgICAgMHgwNSwgMHgwNiwgMHgw NyB9Ow0KKw0KKw0KKyAvKiBmb3IgYnl0ZSByZWFkL3dyaXRlIGNvbW1hbmQgKi8NCisjZGVmaW5l IENNRF9SRVNFVCAgICAgIDANCisjZGVmaW5lIENNRF9QT1dFUl9NT0RFIDENCisjZGVmaW5lIENN RF9ERVZfU1RBVFVTIDINCisjZGVmaW5lIENNRF9SRVBPUlRfTUFYX0JBU0VMSU5FIDMNCisjZGVm aW5lIENNRF9SRVBPUlRfTUlOX0JBU0VMSU5FIDQNCisjZGVmaW5lIFNNQlVTX0JZVEVfQ01EKGNt ZCkgKCgoY21kKSAmIDB4M2YpIDw8IDEpDQorI2RlZmluZSBDWUFQQV9TTUJVU19SRVNFVCAgICAg ICAgIFNNQlVTX0JZVEVfQ01EKENNRF9SRVNFVCkNCisjZGVmaW5lIENZQVBBX1NNQlVTX1BPV0VS X01PREUgICAgU01CVVNfQllURV9DTUQoQ01EX1BPV0VSX01PREUpDQorI2RlZmluZSBDWUFQQV9T TUJVU19ERVZfU1RBVFVTICAgIFNNQlVTX0JZVEVfQ01EKENNRF9ERVZfU1RBVFVTKQ0KKyNkZWZp bmUgQ1lBUEFfU01CVVNfTUFYX0JBU0VMSU5FICBTTUJVU19CWVRFX0NNRChDTURfUkVQT1JUX01B WF9CQVNFTElORSkNCisjZGVmaW5lIENZQVBBX1NNQlVTX01JTl9CQVNFTElORSAgU01CVVNfQllU RV9DTUQoQ01EX1JFUE9SVF9NSU5fQkFTRUxJTkUpDQorDQorIC8qIGZvciBncm91cCByZWdpc3Rl cnMgcmVhZC93cml0ZSBjb21tYW5kICovDQorI2RlZmluZSBSRUdfR1JPVVBfREFUQSAwDQorI2Rl ZmluZSBSRUdfR1JPVVBfQ01EIDINCisjZGVmaW5lIFJFR19HUk9VUF9RVUVSWSAzDQorI2RlZmlu ZSBTTUJVU19HUk9VUF9DTUQoZ3JwKSAoMHg4MCB8ICgoKGdycCkgJiAweDA3KSA8PCAzKSkNCisj ZGVmaW5lIENZQVBBX1NNQlVTX0dST1VQX0RBVEEgIFNNQlVTX0dST1VQX0NNRChSRUdfR1JPVVBf REFUQSkNCisjZGVmaW5lIENZQVBBX1NNQlVTX0dST1VQX0NNRCAgIFNNQlVTX0dST1VQX0NNRChS RUdfR1JPVVBfQ01EKQ0KKyNkZWZpbmUgQ1lBUEFfU01CVVNfR1JPVVBfUVVFUlkgICAgICAgICBT TUJVU19HUk9VUF9DTUQoUkVHX0dST1VQX1FVRVJZKQ0KKw0KKyAvKiBmb3IgcmVnaXN0ZXIgYmxv Y2sgcmVhZC93cml0ZSBjb21tYW5kICovDQorI2RlZmluZSBDTURfQkxfU1RBVFVTIDANCisjZGVm aW5lIENNRF9CTF9IRUFEIDENCisjZGVmaW5lIENNRF9CTF9DTUQgMg0KKyNkZWZpbmUgQ01EX0JM X0RBVEEgMw0KKyNkZWZpbmUgQ01EX0JMX0FMTCA0DQorI2RlZmluZSBDTURfQkxLX1BST0RVQ1Rf SUQgNQ0KKyNkZWZpbmUgQ01EX0JMS19IRUFEIDYNCisjZGVmaW5lIFNNQlVTX0JMT0NLX0NNRChj bWQpICgweGMwIHwgKCgoY21kKSAmIDB4MWYpIDw8IDEpKQ0KKw0KKy8qIHJlZ2lzdGVyIGJsb2Nr IHJlYWQvd3JpdGUgY29tbWFuZCBpbiBib290bG9hZGVyIG1vZGUgKi8NCisjZGVmaW5lIENZQVBB X1NNQlVTX0JMX1NUQVRVUyAgU01CVVNfQkxPQ0tfQ01EKENNRF9CTF9TVEFUVVMpDQorI2RlZmlu ZSBDWUFQQV9TTUJVU19CTF9IRUFEICAgIFNNQlVTX0JMT0NLX0NNRChDTURfQkxfSEVBRCkNCisj ZGVmaW5lIENZQVBBX1NNQlVTX0JMX0NNRCAgICAgU01CVVNfQkxPQ0tfQ01EKENNRF9CTF9DTUQp DQorI2RlZmluZSBDWUFQQV9TTUJVU19CTF9EQVRBICAgIFNNQlVTX0JMT0NLX0NNRChDTURfQkxf REFUQSkNCisjZGVmaW5lIENZQVBBX1NNQlVTX0JMX0FMTCAgICAgU01CVVNfQkxPQ0tfQ01EKENN RF9CTF9BTEwpDQorDQorLyogcmVnaXN0ZXIgYmxvY2sgcmVhZC93cml0ZSBjb21tYW5kIGluIG9w ZXJhdGlvbmFsIG1vZGUgKi8NCisjZGVmaW5lIENZQVBBX1NNQlVTX0JMS19QUk9EVUNUX0lEIFNN QlVTX0JMT0NLX0NNRChDTURfQkxLX1BST0RVQ1RfSUQpDQorI2RlZmluZSBDWUFQQV9TTUJVU19C TEtfSEVBRCBTTUJVU19CTE9DS19DTUQoQ01EX0JMS19IRUFEKQ0KKw0KKyAvKiBmb3IgYnl0ZSBy ZWFkL3dyaXRlIGNvbW1hbmQgKi8NCisjZGVmaW5lIENNRF9SRVNFVCAwDQorI2RlZmluZSBDTURf UE9XRVJfTU9ERSAxDQorI2RlZmluZSBDTURfREVWX1NUQVRVUyAyDQorI2RlZmluZSBDTURfUkVQ T1JUX01BWF9CQVNFTElORSAzDQorI2RlZmluZSBDTURfUkVQT1JUX01JTl9CQVNFTElORSA0DQor I2RlZmluZSBTTUJVU19CWVRFX0NNRChjbWQpICgoKGNtZCkgJiAweDNmKSA8PCAxKQ0KKyNkZWZp bmUgQ1lBUEFfU01CVVNfUkVTRVQgICAgICAgICBTTUJVU19CWVRFX0NNRChDTURfUkVTRVQpDQor I2RlZmluZSBDWUFQQV9TTUJVU19QT1dFUl9NT0RFICAgIFNNQlVTX0JZVEVfQ01EKENNRF9QT1dF Ul9NT0RFKQ0KKyNkZWZpbmUgQ1lBUEFfU01CVVNfREVWX1NUQVRVUyAgICBTTUJVU19CWVRFX0NN RChDTURfREVWX1NUQVRVUykNCisjZGVmaW5lIENZQVBBX1NNQlVTX01BWF9CQVNFTElORSAgU01C VVNfQllURV9DTUQoQ01EX1JFUE9SVF9NQVhfQkFTRUxJTkUpDQorI2RlZmluZSBDWUFQQV9TTUJV U19NSU5fQkFTRUxJTkUgIFNNQlVTX0JZVEVfQ01EKENNRF9SRVBPUlRfTUlOX0JBU0VMSU5FKQ0K Kw0KKyAvKiBmb3IgZ3JvdXAgcmVnaXN0ZXJzIHJlYWQvd3JpdGUgY29tbWFuZCAqLw0KKyNkZWZp bmUgUkVHX0dST1VQX0RBVEEgIDANCisjZGVmaW5lIFJFR19HUk9VUF9DTUQgICAyDQorI2RlZmlu ZSBSRUdfR1JPVVBfUVVFUlkgMw0KKyNkZWZpbmUgU01CVVNfR1JPVVBfQ01EKGdycCkgKDB4ODAg fCAoKChncnApICYgMHgwNykgPDwgMykpDQorI2RlZmluZSBDWUFQQV9TTUJVU19HUk9VUF9EQVRB ICBTTUJVU19HUk9VUF9DTUQoUkVHX0dST1VQX0RBVEEpDQorI2RlZmluZSBDWUFQQV9TTUJVU19H Uk9VUF9DTUQgICBTTUJVU19HUk9VUF9DTUQoUkVHX0dST1VQX0NNRCkNCisjZGVmaW5lIENZQVBB X1NNQlVTX0dST1VQX1FVRVJZIFNNQlVTX0dST1VQX0NNRChSRUdfR1JPVVBfUVVFUlkpDQorDQor IC8qIGZvciByZWdpc3RlciBibG9jayByZWFkL3dyaXRlIGNvbW1hbmQgKi8NCisjZGVmaW5lIENN RF9CTF9TVEFUVVMgICAgICAgICAgMA0KKyNkZWZpbmUgQ01EX0JMX0hFQUQgICAgICAgICAgICAx DQorI2RlZmluZSBDTURfQkxfQ01EICAgICAgICAgICAgIDINCisjZGVmaW5lIENNRF9CTF9EQVRB ICAgICAgICAgICAgMw0KKyNkZWZpbmUgQ01EX0JMX0FMTCAgICAgICAgICAgICA0DQorI2RlZmlu ZSBDTURfQkxLX1BST0RVQ1RfSUQgICAgIDUNCisjZGVmaW5lIENNRF9CTEtfSEVBRCAgICAgICAg ICAgNg0KKyNkZWZpbmUgU01CVVNfQkxPQ0tfQ01EKGNtZCkgKDB4YzAgfCAoKChjbWQpICYgMHgx ZikgPDwgMSkpDQorDQorLyogcmVnaXN0ZXIgYmxvY2sgcmVhZC93cml0ZSBjb21tYW5kIGluIGJv b3Rsb2FkZXIgbW9kZSAqLw0KKyNkZWZpbmUgQ1lBUEFfU01CVVNfQkxfU1RBVFVTIFNNQlVTX0JM T0NLX0NNRChDTURfQkxfU1RBVFVTKQ0KKyNkZWZpbmUgQ1lBUEFfU01CVVNfQkxfSEVBRCAgIFNN QlVTX0JMT0NLX0NNRChDTURfQkxfSEVBRCkNCisjZGVmaW5lIENZQVBBX1NNQlVTX0JMX0NNRCAg ICBTTUJVU19CTE9DS19DTUQoQ01EX0JMX0NNRCkNCisjZGVmaW5lIENZQVBBX1NNQlVTX0JMX0RB VEEgICBTTUJVU19CTE9DS19DTUQoQ01EX0JMX0RBVEEpDQorI2RlZmluZSBDWUFQQV9TTUJVU19C TF9BTEwgICAgU01CVVNfQkxPQ0tfQ01EKENNRF9CTF9BTEwpDQorDQorLyogcmVnaXN0ZXIgYmxv Y2sgcmVhZC93cml0ZSBjb21tYW5kIGluIG9wZXJhdGlvbmFsIG1vZGUgKi8NCisjZGVmaW5lIENZ QVBBX1NNQlVTX0JMS19QUk9EVUNUX0lEIFNNQlVTX0JMT0NLX0NNRChDTURfQkxLX1BST0RVQ1Rf SUQpDQorI2RlZmluZSBDWUFQQV9TTUJVU19CTEtfSEVBRCAgICAgICBTTUJVU19CTE9DS19DTUQo Q01EX0JMS19IRUFEKQ0KKw0KK3N0cnVjdCBjeWFwYV9jbWRfbGVuIHsNCisgICAgICAgdTggY21k Ow0KKyAgICAgICB1OCBsZW47DQorfTsNCisNCisvKiBtYXBzIGdlbmVyaWMgQ1lBUEFfQ01EXyog Y29kZSB0byB0aGUgSTJDIGVxdWl2YWxlbnQgKi8NCitzdGF0aWMgY29uc3Qgc3RydWN0IGN5YXBh X2NtZF9sZW4gY3lhcGFfaTJjX2NtZHNbXSA9IHsNCisgICAgICAgeyBDWUFQQV9PRkZTRVRfU09G VF9SRVNFVCwgMSB9LCAgICAgICAgIC8qIENZQVBBX0NNRF9TT0ZUX1JFU0VUICovDQorICAgICAg IHsgUkVHX09GRlNFVF9DT01NQU5EX0JBU0UgKyAxLCAxIH0sICAgICAvKiBDWUFQQV9DTURfUE9X RVJfTU9ERSAqLw0KKyAgICAgICB7IFJFR19PRkZTRVRfREFUQV9CQVNFLCAxIH0sICAgICAgICAg ICAgLyogQ1lBUEFfQ01EX0RFVl9TVEFUVVMgKi8NCisgICAgICAgeyBSRUdfT0ZGU0VUX0RBVEFf QkFTRSwgc2l6ZW9mKHN0cnVjdCBjeWFwYV9yZWdfZGF0YSkgfSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENZQVBBX0NNRF9HUk9VUF9EQVRBICov DQorICAgICAgIHsgUkVHX09GRlNFVF9DT01NQU5EX0JBU0UsIDAgfSwgICAgICAgICAvKiBDWUFQ QV9DTURfR1JPVVBfQ01EICovDQorICAgICAgIHsgUkVHX09GRlNFVF9RVUVSWV9CQVNFLCBRVUVS WV9EQVRBX1NJWkUgfSwgLyogQ1lBUEFfQ01EX0dST1VQX1FVRVJZICovDQorICAgICAgIHsgQkxf SEVBRF9PRkZTRVQsIDMgfSwgICAgICAgICAgICAgICAgICAvKiBDWUFQQV9DTURfQkxfU1RBVFVT ICovDQorICAgICAgIHsgQkxfSEVBRF9PRkZTRVQsIDE2IH0sICAgICAgICAgICAgICAgICAvKiBD WUFQQV9DTURfQkxfSEVBRCAqLw0KKyAgICAgICB7IEJMX0hFQURfT0ZGU0VULCAxNiB9LCAgICAg ICAgICAgICAgICAgLyogQ1lBUEFfQ01EX0JMX0NNRCAqLw0KKyAgICAgICB7IEJMX0RBVEFfT0ZG U0VULCAxNiB9LCAgICAgICAgICAgICAgICAgLyogQ1lBUEFfQ01EX0JMX0RBVEEgKi8NCisgICAg ICAgeyBCTF9IRUFEX09GRlNFVCwgMzIgfSwgICAgICAgICAgICAgICAgIC8qIENZQVBBX0NNRF9C TF9BTEwgKi8NCisgICAgICAgeyBSRUdfT0ZGU0VUX1FVRVJZX0JBU0UsIFBST0RVQ1RfSURfU0la RSB9LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog Q1lBUEFfQ01EX0JMS19QUk9EVUNUX0lEICovDQorICAgICAgIHsgUkVHX09GRlNFVF9EQVRBX0JB U0UsIDMyIH0sICAgICAgICAgICAvKiBDWUFQQV9DTURfQkxLX0hFQUQgKi8NCisgICAgICAgeyBS RUdfT0ZGU0VUX01BWF9CQVNFTElORSwgMSB9LCAgICAgICAgIC8qIENZQVBBX0NNRF9NQVhfQkFT RUxJTkUgKi8NCisgICAgICAgeyBSRUdfT0ZGU0VUX01JTl9CQVNFTElORSwgMSB9LCAgICAgICAg IC8qIENZQVBBX0NNRF9NSU5fQkFTRUxJTkUgKi8NCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY3lhcGFfY21kX2xlbiBjeWFwYV9zbWJ1c19jbWRzW10gPSB7DQorICAgICAgIHsgQ1lBUEFf U01CVVNfUkVTRVQsIDEgfSwgICAgICAgICAgICAgICAvKiBDWUFQQV9DTURfU09GVF9SRVNFVCAq Lw0KKyAgICAgICB7IENZQVBBX1NNQlVTX1BPV0VSX01PREUsIDEgfSwgICAgICAgICAgLyogQ1lB UEFfQ01EX1BPV0VSX01PREUgKi8NCisgICAgICAgeyBDWUFQQV9TTUJVU19ERVZfU1RBVFVTLCAx IH0sICAgICAgICAgIC8qIENZQVBBX0NNRF9ERVZfU1RBVFVTICovDQorICAgICAgIHsgQ1lBUEFf U01CVVNfR1JPVVBfREFUQSwgc2l6ZW9mKHN0cnVjdCBjeWFwYV9yZWdfZGF0YSkgfSwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENZQVBBX0NNRF9H Uk9VUF9EQVRBICovDQorICAgICAgIHsgQ1lBUEFfU01CVVNfR1JPVVBfQ01ELCAyIH0sICAgICAg ICAgICAvKiBDWUFQQV9DTURfR1JPVVBfQ01EICovDQorICAgICAgIHsgQ1lBUEFfU01CVVNfR1JP VVBfUVVFUlksIFFVRVJZX0RBVEFfU0laRSB9LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogQ1lBUEFfQ01EX0dST1VQX1FVRVJZICovDQorICAgICAg IHsgQ1lBUEFfU01CVVNfQkxfU1RBVFVTLCAzIH0sICAgICAgICAgICAvKiBDWUFQQV9DTURfQkxf U1RBVFVTICovDQorICAgICAgIHsgQ1lBUEFfU01CVVNfQkxfSEVBRCwgMTYgfSwgICAgICAgICAg ICAvKiBDWUFQQV9DTURfQkxfSEVBRCAqLw0KKyAgICAgICB7IENZQVBBX1NNQlVTX0JMX0NNRCwg MTYgfSwgICAgICAgICAgICAgLyogQ1lBUEFfQ01EX0JMX0NNRCAqLw0KKyAgICAgICB7IENZQVBB X1NNQlVTX0JMX0RBVEEsIDE2IH0sICAgICAgICAgICAgLyogQ1lBUEFfQ01EX0JMX0RBVEEgKi8N CisgICAgICAgeyBDWUFQQV9TTUJVU19CTF9BTEwsIDMyIH0sICAgICAgICAgICAgIC8qIENZQVBB X0NNRF9CTF9BTEwgKi8NCisgICAgICAgeyBDWUFQQV9TTUJVU19CTEtfUFJPRFVDVF9JRCwgUFJP RFVDVF9JRF9TSVpFIH0sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBDWUFQQV9DTURfQkxLX1BST0RVQ1RfSUQgKi8NCisgICAgICAgeyBDWUFQQV9T TUJVU19CTEtfSEVBRCwgMTYgfSwgICAgICAgICAgIC8qIENZQVBBX0NNRF9CTEtfSEVBRCAqLw0K KyAgICAgICB7IENZQVBBX1NNQlVTX01BWF9CQVNFTElORSwgMSB9LCAgICAgICAgLyogQ1lBUEFf Q01EX01BWF9CQVNFTElORSAqLw0KKyAgICAgICB7IENZQVBBX1NNQlVTX01JTl9CQVNFTElORSwg MSB9LCAgICAgICAgLyogQ1lBUEFfQ01EX01JTl9CQVNFTElORSAqLw0KK307DQorDQorDQorLyoN CisgKiBjeWFwYV9zbWJ1c19yZWFkX2Jsb2NrIC0gcGVyZm9ybSBzbWJ1cyBibG9jayByZWFkIGNv bW1hbmQNCisgKiBAY3lhcGEgIC0gcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSBvZiB0aGUgZHJpdmVy DQorICogQGNtZCAgICAtIHRoZSBwcm9wZXJseSBlbmNvZGVkIHNtYnVzIGNvbW1hbmQNCisgKiBA bGVuICAgIC0gZXhwZWN0ZWQgbGVuZ3RoIG9mIHNtYnVzIGNvbW1hbmQgcmVzdWx0DQorICogQHZh bHVlcyAtIGJ1ZmZlciB0byBzdG9yZSBzbWJ1cyBjb21tYW5kIHJlc3VsdA0KKyAqDQorICogUmV0 dXJucyBuZWdhdGl2ZSBlcnJubywgZWxzZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uDQor ICoNCisgKiBOb3RlOg0KKyAqIEluIHRyYWNrcGFkIGRldmljZSwgdGhlIG1lbW9yeSBibG9jayBh bGxvY2F0ZWQgZm9yIEkyQyByZWdpc3RlciBtYXANCisgKiBpcyAyNTYgYnl0ZXMsIHNvIHRoZSBt YXggcmVhZCBibG9jayBmb3IgSTJDIGJ1cyBpcyAyNTYgYnl0ZXMuDQorICovDQorc3NpemVfdCBj eWFwYV9zbWJ1c19yZWFkX2Jsb2NrKHN0cnVjdCBjeWFwYSAqY3lhcGEsIHU4IGNtZCwgc2l6ZV90 IGxlbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggKnZhbHVlcykN Cit7DQorICAgICAgIHNzaXplX3QgcmV0Ow0KKyAgICAgICB1OCBpbmRleDsNCisgICAgICAgdTgg c21idXNfY21kOw0KKyAgICAgICB1OCAqYnVmOw0KKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAq Y2xpZW50ID0gY3lhcGEtPmNsaWVudDsNCisNCisgICAgICAgaWYgKCEoU01CVVNfQllURV9CTE9D S19DTURfTUFTSyAmIGNtZCkpDQorICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorDQor ICAgICAgIGlmIChTTUJVU19HUk9VUF9CTE9DS19DTURfTUFTSyAmIGNtZCkgew0KKyAgICAgICAg ICAgICAgIC8qIHJlYWQgc3BlY2lmaWMgYmxvY2sgcmVnaXN0ZXJzIGNvbW1hbmQuICovDQorICAg ICAgICAgICAgICAgc21idXNfY21kID0gU01CVVNfRU5DT0RFX1JXKGNtZCwgU01CVVNfUkVBRCk7 DQorICAgICAgICAgICAgICAgcmV0ID0gaTJjX3NtYnVzX3JlYWRfYmxvY2tfZGF0YShjbGllbnQs IHNtYnVzX2NtZCwgdmFsdWVzKTsNCisgICAgICAgICAgICAgICBnb3RvIG91dDsNCisgICAgICAg fQ0KKw0KKyAgICAgICByZXQgPSAwOw0KKyAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggKiBJ MkNfU01CVVNfQkxPQ0tfTUFYIDwgbGVuOyBpbmRleCsrKSB7DQorICAgICAgICAgICAgICAgc21i dXNfY21kID0gU01CVVNfRU5DT0RFX0lEWChjbWQsIGluZGV4KTsNCisgICAgICAgICAgICAgICBz bWJ1c19jbWQgPSBTTUJVU19FTkNPREVfUlcoc21idXNfY21kLCBTTUJVU19SRUFEKTsNCisgICAg ICAgICAgICAgICBidWYgPSB2YWx1ZXMgKyBJMkNfU01CVVNfQkxPQ0tfTUFYICogaW5kZXg7DQor ICAgICAgICAgICAgICAgcmV0ID0gaTJjX3NtYnVzX3JlYWRfYmxvY2tfZGF0YShjbGllbnQsIHNt YnVzX2NtZCwgYnVmKTsNCisgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gb3V0Ow0KKyAgICAgICB9DQorDQorb3V0Og0KKyAgICAgICByZXR1 cm4gcmV0ID4gMCA/IGxlbiA6IHJldDsNCit9DQorDQorczMyIGN5YXBhX3JlYWRfYnl0ZShzdHJ1 Y3QgY3lhcGEgKmN5YXBhLCB1OCBjbWRfaWR4KQ0KK3sNCisgICAgICAgdTggY21kOw0KKw0KKyAg ICAgICBpZiAoY3lhcGEtPnNtYnVzKSB7DQorICAgICAgICAgICAgICAgY21kID0gY3lhcGFfc21i dXNfY21kc1tjbWRfaWR4XS5jbWQ7DQorICAgICAgICAgICAgICAgY21kID0gU01CVVNfRU5DT0RF X1JXKGNtZCwgU01CVVNfUkVBRCk7DQorICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAg Y21kID0gY3lhcGFfaTJjX2NtZHNbY21kX2lkeF0uY21kOw0KKyAgICAgICB9DQorICAgICAgIHJl dHVybiBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY3lhcGEtPmNsaWVudCwgY21kKTsNCit9DQor DQorczMyIGN5YXBhX3dyaXRlX2J5dGUoc3RydWN0IGN5YXBhICpjeWFwYSwgdTggY21kX2lkeCwg dTggdmFsdWUpDQorew0KKyAgICAgICB1OCBjbWQ7DQorDQorICAgICAgIGlmIChjeWFwYS0+c21i dXMpIHsNCisgICAgICAgICAgICAgICBjbWQgPSBjeWFwYV9zbWJ1c19jbWRzW2NtZF9pZHhdLmNt ZDsNCisgICAgICAgICAgICAgICBjbWQgPSBTTUJVU19FTkNPREVfUlcoY21kLCBTTUJVU19XUklU RSk7DQorICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgY21kID0gY3lhcGFfaTJjX2Nt ZHNbY21kX2lkeF0uY21kOw0KKyAgICAgICB9DQorICAgICAgIHJldHVybiBpMmNfc21idXNfd3Jp dGVfYnl0ZV9kYXRhKGN5YXBhLT5jbGllbnQsIGNtZCwgdmFsdWUpOw0KK30NCisNCitzc2l6ZV90 IGN5YXBhX3JlYWRfYmxvY2soc3RydWN0IGN5YXBhICpjeWFwYSwgdTggY21kX2lkeCwgdTggKnZh bHVlcykNCit7DQorICAgICAgIHU4IGNtZDsNCisgICAgICAgc2l6ZV90IGxlbjsNCisNCisgICAg ICAgaWYgKGN5YXBhLT5zbWJ1cykgew0KKyAgICAgICAgICAgICAgIGNtZCA9IGN5YXBhX3NtYnVz X2NtZHNbY21kX2lkeF0uY21kOw0KKyAgICAgICAgICAgICAgIGxlbiA9IGN5YXBhX3NtYnVzX2Nt ZHNbY21kX2lkeF0ubGVuOw0KKyAgICAgICAgICAgICAgIHJldHVybiBjeWFwYV9zbWJ1c19yZWFk X2Jsb2NrKGN5YXBhLCBjbWQsIGxlbiwgdmFsdWVzKTsNCisgICAgICAgfSBlbHNlIHsNCisgICAg ICAgICAgICAgICBjbWQgPSBjeWFwYV9pMmNfY21kc1tjbWRfaWR4XS5jbWQ7DQorICAgICAgICAg ICAgICAgbGVuID0gY3lhcGFfaTJjX2NtZHNbY21kX2lkeF0ubGVuOw0KKyAgICAgICAgICAgICAg IHJldHVybiBjeWFwYV9pMmNfcmVnX3JlYWRfYmxvY2soY3lhcGEsIGNtZCwgbGVuLCB2YWx1ZXMp Ow0KKyAgICAgICB9DQorfQ0KKw0KKy8qDQorICogRGV0ZXJtaW5lIHRoZSBHZW4zIHRyYWNrcGFk IGRldmljZSdzIGN1cnJlbnQgb3BlcmF0aW5nIHN0YXRlLg0KKyAqDQorICovDQorc3RhdGljIGlu dCBjeWFwYV9nZW4zX3N0YXRlX3BhcnNlKHN0cnVjdCBjeWFwYSAqY3lhcGEsIHU4ICpyZWdfZGF0 YSwgaW50IGxlbikNCit7DQorICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZQVBBX1NUQVRFX05PX0RF VklDRTsNCisNCisgICAgICAgLyogUGFyc2UgYmFzZWQgb24gR2VuMyBjaGFyYWN0ZXJpc3RpYyBy ZWdpc3RlcnMgYW5kIGJpdHMgKi8NCisgICAgICAgaWYgKHJlZ19kYXRhW1JFR19CTF9GSUxFXSA9 PSBCTF9GSUxFICYmDQorICAgICAgICAgICAgICAgcmVnX2RhdGFbUkVHX0JMX0VSUk9SXSA9PSBC TF9FUlJPUl9OT19FUlJfSURMRSAmJg0KKyAgICAgICAgICAgICAgIChyZWdfZGF0YVtSRUdfQkxf U1RBVFVTXSA9PQ0KKyAgICAgICAgICAgICAgICAgICAgICAgKEJMX1NUQVRVU19SVU5OSU5HIHwg QkxfU1RBVFVTX0NTVU1fVkFMSUQpIHx8DQorICAgICAgICAgICAgICAgICAgICAgICByZWdfZGF0 YVtSRUdfQkxfU1RBVFVTXSA9PSBCTF9TVEFUVVNfUlVOTklORykpIHsNCisgICAgICAgICAgICAg ICAvKiBub3JtYWwgc3RhdGUgYWZ0ZXIgcG93ZXIgb24gb3IgcmVzZXQsDQorICAgICAgICAgICAg ICAgICogUkVHX0JMX1NUQVRVUyA9PSAweDExLCBmaXJtd2FyZSBpbWFnZSBjaGVja3N1bSBpcyB2 YWxpZC4NCisgICAgICAgICAgICAgICAgKiBSRUdfQkxfU1RBVFVTID09IDB4MTAsIGZpcm13YXJl IGltYWdlIGNoZWNrc3VtIGlzIGludmFsaWQuICovDQorICAgICAgICAgICAgICAgY3lhcGEtPmdl biA9IENZQVBBX0dFTjM7DQorICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RB VEVfQkxfSURMRTsNCisgICAgICAgfSBlbHNlIGlmIChyZWdfZGF0YVtSRUdfQkxfRklMRV0gPT0g QkxfRklMRSAmJg0KKyAgICAgICAgICAgICAgIChyZWdfZGF0YVtSRUdfQkxfU1RBVFVTXSAmIEJM X1NUQVRVU19SVU5OSU5HKSA9PQ0KKyAgICAgICAgICAgICAgICAgICAgICAgQkxfU1RBVFVTX1JV Tk5JTkcpIHsNCisgICAgICAgICAgICAgICBjeWFwYS0+Z2VuID0gQ1lBUEFfR0VOMzsNCisgICAg ICAgICAgICAgICBpZiAocmVnX2RhdGFbUkVHX0JMX1NUQVRVU10gJiBCTF9TVEFUVVNfQlVTWSkg ew0KKyAgICAgICAgICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfQkxf QlVTWTsNCisgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAg aWYgKChyZWdfZGF0YVtSRUdfQkxfRVJST1JdICYgQkxfRVJST1JfQk9PVExPQURJTkcpID09DQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxfRVJST1JfQk9PVExPQURJ TkcpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9IENZQVBB X1NUQVRFX0JMX0FDVElWRTsNCisgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfQkxfSURM RTsNCisgICAgICAgICAgICAgICB9DQorICAgICAgIH0gZWxzZSBpZiAoKHJlZ19kYXRhW1JFR19P UF9TVEFUVVNdICYgT1BfU1RBVFVTX1NSQykgJiYNCisgICAgICAgICAgICAgICAgICAgICAgIChy ZWdfZGF0YVtSRUdfT1BfREFUQTFdICYgT1BfREFUQV9WQUxJRCkpIHsNCisgICAgICAgICAgICAg ICAvKiBub3JtYWwgc3RhdGUgd2hlbiBydW5uaW5nIGluIG9wZXJhaXRvbmFsIG1vZGUsDQorICAg ICAgICAgICAgICAgICogbWF5IGFsc28gbm90IGluIGZ1bGwgcG93ZXIgc3RhdGUgb3INCisgICAg ICAgICAgICAgICAgKiBidXN5aW5nIGluIGNvbW1hbmQgcHJvY2Vzcy4gKi8NCisgICAgICAgICAg ICAgICBpZiAoR0VOM19GSU5HRVJfTlVNKHJlZ19kYXRhW1JFR19PUF9EQVRBMV0pIDw9DQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFTjNfTUFYX0ZJTkdFUlMpIHsNCisgICAgICAg ICAgICAgICAgICAgICAgIC8qIGZpbmdlciBudW1iZXIgZGF0YSBpcyB2YWxpZC4gKi8NCisgICAg ICAgICAgICAgICAgICAgICAgIGN5YXBhLT5nZW4gPSBDWUFQQV9HRU4zOw0KKyAgICAgICAgICAg ICAgICAgICAgICAgY3lhcGEtPnN0YXRlID0gQ1lBUEFfU1RBVEVfT1A7DQorICAgICAgICAgICAg ICAgfQ0KKyAgICAgICB9IGVsc2UgaWYgKHJlZ19kYXRhW1JFR19PUF9TVEFUVVNdID09IDB4MEMg JiYNCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ19kYXRhW1JFR19PUF9EQVRBMV0gPT0gMHgw OCkgew0KKyAgICAgICAgICAgICAgIC8qIE9wIHN0YXRlIHdoZW4gZmlyc3QgdHdvIHJlZ2lzdGVy cyBvdmVyd3JpdHRlbiB3aXRoIDB4MDAgKi8NCisgICAgICAgICAgICAgICBjeWFwYS0+Z2VuID0g Q1lBUEFfR0VOMzsNCisgICAgICAgICAgICAgICBjeWFwYS0+c3RhdGUgPSBDWUFQQV9TVEFURV9P UDsNCisgICAgICAgfSBlbHNlIGlmIChyZWdfZGF0YVtSRUdfQkxfU1RBVFVTXSAmDQorICAgICAg ICAgICAgICAgICAgICAgICAoQkxfU1RBVFVTX1JVTk5JTkcgfCBCTF9TVEFUVVNfQlVTWSkpIHsN CisgICAgICAgICAgICAgICBjeWFwYS0+Z2VuID0gQ1lBUEFfR0VOMzsNCisgICAgICAgICAgICAg ICBjeWFwYS0+c3RhdGUgPSBDWUFQQV9TVEFURV9CTF9CVVNZOw0KKyAgICAgICB9DQorDQorICAg ICAgIGlmIChjeWFwYS0+Z2VuID09IENZQVBBX0dFTjMgJiYgKGN5YXBhLT5zdGF0ZSA9PSBDWUFQ QV9TVEFURV9PUCB8fA0KKyAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9PSBDWUFQQV9TVEFU RV9CTF9JRExFIHx8DQorICAgICAgICAgICAgICAgY3lhcGEtPnN0YXRlID09IENZQVBBX1NUQVRF X0JMX0FDVElWRSB8fA0KKyAgICAgICAgICAgICAgIGN5YXBhLT5zdGF0ZSA9PSBDWUFQQV9TVEFU RV9CTF9CVVNZKSkNCisgICAgICAgICAgICAgICByZXR1cm4gMDsNCisNCisgICAgICAgcmV0dXJu IC1FQUdBSU47DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3lhcGFfZ2VuM19ibF9kZWFjdGl2YXRlKHN0 cnVjdCBjeWFwYSAqY3lhcGEpDQorew0KKyAgICAgICBpbnQgcmV0Ow0KKw0KKyAgICAgICByZXQg PSBjeWFwYV9pMmNfcmVnX3dyaXRlX2Jsb2NrKGN5YXBhLCAwLCBzaXplb2YoYmxfZGVhY3RpdmF0 ZSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxfZGVhY3RpdmF0 ZSk7DQorICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQor DQorICAgICAgIC8qIHdhaXQgZm9yIGJvb3Rsb2FkZXIgdG8gc3dpdGNoIHRvIGlkbGUgc3RhdGU7 IHNob3VsZCB0YWtlIDwgMTAwbXMgKi8NCisgICAgICAgbXNsZWVwKDEwMCk7DQorICAgICAgIHJl dCA9IGN5YXBhX3BvbGxfc3RhdGUoY3lhcGEsIDUwMCk7DQorICAgICAgIGlmIChyZXQgPCAwKQ0K KyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQorICAgICAgIGlmIChjeWFwYS0+c3RhdGUgIT0g Q1lBUEFfU1RBVEVfQkxfSURMRSkNCisgICAgICAgICAgICAgICByZXR1cm4gLUVBR0FJTjsNCisg ICAgICAgcmV0dXJuIDA7DQorfQ0KKw0KKy8qDQorICogRXhpdCBib290bG9hZGVyDQorICoNCisg KiBTZW5kIGJsX2V4aXQgY29tbWFuZCwgdGhlbiB3YWl0IDUwIC0gMTAwIG1zIHRvIGxldCBkZXZp Y2UgdHJhbnNpdGlvbiB0bw0KKyAqIG9wZXJhdGlvbmFsIG1vZGUuICBJZiB0aGlzIGlzIHRoZSBm aXJzdCB0aW1lIHRoZSBkZXZpY2UncyBmaXJtd2FyZSBpcw0KKyAqIHJ1bm5pbmcsIGl0IGNhbiB0 YWtlIHVwIHRvIDIgc2Vjb25kcyB0byBjYWxpYnJhdGUgaXRzIHNlbnNvcnMuICBTbywgcG9sbA0K KyAqIHRoZSBkZXZpY2UncyBuZXcgc3RhdGUgZm9yIHVwIHRvIDIgc2Vjb25kcy4NCisgKg0KKyAq IFJldHVybnM6DQorICogICAtRUlPICAgIGZhaWx1cmUgd2hpbGUgcmVhZGluZyBmcm9tIGRldmlj ZQ0KKyAqICAgLUVBR0FJTiBkZXZpY2UgaXMgc3R1Y2sgaW4gYm9vdGxvYWRlciwgYi9jIGl0IGhh cyBpbnZhbGlkIGZpcm13YXJlDQorICogICAwICAgICAgIGRldmljZSBpcyBzdXBwb3J0ZWQgYW5k IGluIG9wZXJhdGlvbmFsIG1vZGUNCisgKi8NCitzdGF0aWMgaW50IGN5YXBhX2dlbjNfYmxfZXhp dChzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KK3sNCisgICAgICAgaW50IHJldDsNCisNCisgICAgICAg cmV0ID0gY3lhcGFfaTJjX3JlZ193cml0ZV9ibG9jayhjeWFwYSwgMCwgc2l6ZW9mKGJsX2V4aXQp LCBibF9leGl0KTsNCisgICAgICAgaWYgKHJldCA8IDApDQorICAgICAgICAgICAgICAgcmV0dXJu IHJldDsNCisNCisgICAgICAgLyoNCisgICAgICAgICogV2FpdCBmb3IgYm9vdGxvYWRlciB0byBl eGl0LCBhbmQgb3BlcmF0aW9uIG1vZGUgdG8gc3RhcnQuDQorICAgICAgICAqIE5vcm1hbGx5LCB0 aGlzIHRha2VzIGF0IGxlYXN0IDUwIG1zLg0KKyAgICAgICAgKi8NCisgICAgICAgdXNsZWVwX3Jh bmdlKDUwMDAwLCAxMDAwMDApOw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBJbiBhZGRpdGlvbiwg d2hlbiBhIGRldmljZSBib290cyBmb3IgdGhlIGZpcnN0IHRpbWUgYWZ0ZXIgYmVpbmcNCisgICAg ICAgICogdXBkYXRlZCB0byBuZXcgZmlybXdhcmUsIGl0IG11c3QgZmlyc3QgY2FsaWJyYXRlIGl0 cyBzZW5zb3JzLCB3aGljaA0KKyAgICAgICAgKiBjYW4gdGFrZSB1cCB0byBhbiBhZGRpdGlvbmFs IDIgc2Vjb25kcy4gSWYgdGhlIGRldmljZSBwb3dlciBpcw0KKyAgICAgICAgKiBydW5uaW5nIGxv dywgdGhpcyBtYXkgdGFrZSBldmVuIGxvbmdlci4NCisgICAgICAgICovDQorICAgICAgIHJldCA9 IGN5YXBhX3BvbGxfc3RhdGUoY3lhcGEsIDQwMDApOw0KKyAgICAgICBpZiAocmV0IDwgMCkNCisg ICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICAgICBpZiAoY3lhcGEtPnN0YXRlICE9IENZ QVBBX1NUQVRFX09QKQ0KKyAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOw0KKw0KKyAgICAg ICByZXR1cm4gMDsNCit9DQorDQorLyoNCisgKiBjeWFwYV9nZXRfd2FpdF90aW1lX2Zvcl9wd3Jf Y21kDQorICoNCisgKiBDb21wdXRlIHRoZSBhbW91bnQgb2YgdGltZSB3ZSBuZWVkIHRvIHdhaXQg YWZ0ZXIgdXBkYXRpbmcgdGhlIHRvdWNocGFkDQorICogcG93ZXIgbW9kZS4gVGhlIHRvdWNocGFk IG5lZWRzIHRvIGNvbnN1bWUgdGhlIGluY29taW5nIHBvd2VyIG1vZGUgc2V0DQorICogY29tbWFu ZCBhdCB0aGUgY3VycmVudCBjbG9jayByYXRlLg0KKyAqLw0KKw0KK3N0YXRpYyB1MTYgY3lhcGFf Z2V0X3dhaXRfdGltZV9mb3JfcHdyX2NtZCh1OCBwd3JfbW9kZSkNCit7DQorICAgICAgIHN3aXRj aCAocHdyX21vZGUpIHsNCisgICAgICAgY2FzZSBQV1JfTU9ERV9GVUxMX0FDVElWRTogcmV0dXJu IDIwOw0KKyAgICAgICBjYXNlIFBXUl9NT0RFX0JUTl9PTkxZOiByZXR1cm4gMjA7DQorICAgICAg IGNhc2UgUFdSX01PREVfT0ZGOiByZXR1cm4gMjA7DQorICAgICAgIGRlZmF1bHQ6IHJldHVybiBj eWFwYV9wd3JfY21kX3RvX3NsZWVwX3RpbWUocHdyX21vZGUpICsgNTA7DQorICAgICAgIH0NCit9 DQorDQorLyoNCisgKiBTZXQgZGV2aWNlIHBvd2VyIG1vZGUNCisgKg0KKyAqIFdyaXRlIHRvIHRo ZSBmaWVsZCB0byBjb25maWd1cmUgcG93ZXIgc3RhdGUuIFBvd2VyIHN0YXRlcyBpbmNsdWRlIDoN CisgKiAgIEZ1bGwgOiBNYXggc2NhbnMgYW5kIHJlcG9ydCByYXRlLg0KKyAqICAgSWRsZSA6IFJl cG9ydCByYXRlIHNldCBieSB1c2VyIHNwZWNpZmllZCB0aW1lLg0KKyAqICAgQnV0dG9uT25seSA6 IE5vIHNjYW5zIGZvciBmaW5nZXJzLiBXaGVuIHRoZSBidXR0b24gaXMgdHJpZ2dlcmVkLA0KKyAq ICAgICBhIHNsYXZlIGludGVycnVwdCBpcyBhc3NlcnRlZCB0byBub3RpZnkgaG9zdCB0byB3YWtl IHVwLg0KKyAqICAgT2ZmIDogT25seSBhd2FrZSBmb3IgaTJjIGNvbW1hbmRzIGZyb20gaG9zdC4g Tm8gZnVuY3Rpb24gZm9yIGJ1dHRvbg0KKyAqICAgICBvciB0b3VjaCBzZW5zb3JzLg0KKyAqDQor ICogVGhlIHBvd2VyX21vZGUgY29tbWFuZCBzaG91bGQgY29uZm9ybSB0byB0aGUgZm9sbG93aW5n IDoNCisgKiAgIEZ1bGwgOiAweDNmDQorICogICBJZGxlIDogQ29uZmlndXJhYmxlIGZyb20gMjAg dG8gMTAwMG1zLiBTZWUgbm90ZSBiZWxvdyBmb3INCisgKiAgICAgY3lhcGFfc2xlZXBfdGltZV90 b19wd3JfY21kIGFuZCBjeWFwYV9wd3JfY21kX3RvX3NsZWVwX3RpbWUNCisgKiAgIEJ1dHRvbk9u bHkgOiAweDAxDQorICogICBPZmYgOiAweDAwDQorICoNCisgKiBEZXZpY2UgcG93ZXIgbW9kZSBj YW4gb25seSBiZSBzZXQgd2hlbiBkZXZpY2UgaXMgaW4gb3BlcmF0aW9uYWwgbW9kZS4NCisgKi8N CitzdGF0aWMgaW50IGN5YXBhX2dlbjNfc2V0X3Bvd2VyX21vZGUoc3RydWN0IGN5YXBhICpjeWFw YSwgdTggcG93ZXJfbW9kZSwNCisgICAgICAgICAgICAgICB1MTYgYWx3YXlzX3VudXNlZCkNCit7 DQorICAgICAgIGludCByZXQ7DQorICAgICAgIHU4IHBvd2VyOw0KKyAgICAgICBpbnQgdHJpZXMg PSBTRVRfUE9XRVJfTU9ERV9UUklFUzsNCisgICAgICAgdTE2IHNsZWVwX3RpbWU7DQorDQorICAg ICAgIGFsd2F5c191bnVzZWQgPSAwOw0KKyAgICAgICBpZiAoY3lhcGEtPnN0YXRlICE9IENZQVBB X1NUQVRFX09QKQ0KKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KKw0KKyAgICAgICB3aGlsZSAo dHJ1ZSkgew0KKyAgICAgICAgICAgICAgIHJldCA9IGN5YXBhX3JlYWRfYnl0ZShjeWFwYSwgQ1lB UEFfQ01EX1BPV0VSX01PREUpOw0KKyAgICAgICAgICAgICAgIGlmIChyZXQgPj0gMCB8fCAtLXRy aWVzIDwgMSkNCisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAg IHVzbGVlcF9yYW5nZShTRVRfUE9XRVJfTU9ERV9ERUxBWSwgMiAqIFNFVF9QT1dFUl9NT0RFX0RF TEFZKTsNCisgICAgICAgfQ0KKyAgICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Ow0KKw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBSZXR1cm4gZWFybHkgaWYgdGhl IHBvd2VyIG1vZGUgdG8gc2V0IGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50DQorICAgICAgICAq IG9uZS4NCisgICAgICAgICovDQorICAgICAgIGlmICgocmV0ICYgUFdSX01PREVfTUFTSykgPT0g cG93ZXJfbW9kZSkNCisgICAgICAgICAgICAgICByZXR1cm4gMDsNCisNCisgICAgICAgc2xlZXBf dGltZSA9IGN5YXBhX2dldF93YWl0X3RpbWVfZm9yX3B3cl9jbWQocmV0ICYgUFdSX01PREVfTUFT Syk7DQorICAgICAgIHBvd2VyID0gcmV0Ow0KKyAgICAgICBwb3dlciAmPSB+UFdSX01PREVfTUFT SzsNCisgICAgICAgcG93ZXIgfD0gcG93ZXJfbW9kZSAmIFBXUl9NT0RFX01BU0s7DQorICAgICAg IHdoaWxlICh0cnVlKSB7DQorICAgICAgICAgICAgICAgcmV0ID0gY3lhcGFfd3JpdGVfYnl0ZShj eWFwYSwgQ1lBUEFfQ01EX1BPV0VSX01PREUsIHBvd2VyKTsNCisgICAgICAgICAgICAgICBpZiAo IXJldCB8fCAtLXRyaWVzIDwgMSkNCisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAg ICAgICAgICAgICAgIHVzbGVlcF9yYW5nZShTRVRfUE9XRVJfTU9ERV9ERUxBWSwgMiAqIFNFVF9Q T1dFUl9NT0RFX0RFTEFZKTsNCisgICAgICAgfQ0KKw0KKyAgICAgICAvKg0KKyAgICAgICAgKiBX YWl0IGZvciB0aGUgbmV3bHkgc2V0IHBvd2VyIGNvbW1hbmQgdG8gZ28gaW4gYXQgdGhlIHByZXZp b3VzDQorICAgICAgICAqIGNsb2NrIHNwZWVkIChzY2FucmF0ZSkgdXNlZCBieSB0aGUgdG91Y2hw YWQgZmlybXdhcmUuIE5vdA0KKyAgICAgICAgKiBkb2luZyBzbyBiZWZvcmUgaXNzdWluZyB0aGUg bmV4dCBjb21tYW5kIG1heSByZXN1bHQgaW4gZXJyb3JzDQorICAgICAgICAqIGRlcGVuZGluZyBv biB0aGUgY29tbWFuZCdzIGNvbnRlbnQuDQorICAgICAgICAqLw0KKyAgICAgICBtc2xlZXAoc2xl ZXBfdGltZSk7DQorICAgICAgIHJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY3lhcGFf Z2VuM19nZXRfcXVlcnlfZGF0YShzdHJ1Y3QgY3lhcGEgKmN5YXBhKQ0KK3sNCisgICAgICAgdTgg cXVlcnlfZGF0YVtRVUVSWV9EQVRBX1NJWkVdOw0KKyAgICAgICBpbnQgcmV0Ow0KKw0KKyAgICAg ICBpZiAoY3lhcGEtPnN0YXRlICE9IENZQVBBX1NUQVRFX09QKQ0KKyAgICAgICAgICAgICAgIHJl dHVybiAtRUJVU1k7DQorDQorICAgICAgIHJldCA9IGN5YXBhX3JlYWRfYmxvY2soY3lhcGEsIENZ QVBBX0NNRF9HUk9VUF9RVUVSWSwgcXVlcnlfZGF0YSk7DQorICAgICAgIGlmIChyZXQgIT0gUVVF UllfREFUQV9TSVpFKQ0KKyAgICAgICAgICAgICAgIHJldHVybiAocmV0IDwgMCkgPyByZXQgOiAt RUlPOw0KKw0KKyAgICAgICBtZW1jcHkoJmN5YXBhLT5wcm9kdWN0X2lkWzBdLCAmcXVlcnlfZGF0 YVswXSwgNSk7DQorICAgICAgIGN5YXBhLT5wcm9kdWN0X2lkWzVdID0gJy0nOw0KKyAgICAgICBt ZW1jcHkoJmN5YXBhLT5wcm9kdWN0X2lkWzZdLCAmcXVlcnlfZGF0YVs1XSwgNik7DQorICAgICAg IGN5YXBhLT5wcm9kdWN0X2lkWzEyXSA9ICctJzsNCisgICAgICAgbWVtY3B5KCZjeWFwYS0+cHJv ZHVjdF9pZFsxM10sICZxdWVyeV9kYXRhWzExXSwgMik7DQorICAgICAgIGN5YXBhLT5wcm9kdWN0 X2lkWzE1XSA9ICdcMCc7DQorDQorICAgICAgIGN5YXBhLT5md19tYWpfdmVyID0gcXVlcnlfZGF0 YVsxNV07DQorICAgICAgIGN5YXBhLT5md19taW5fdmVyID0gcXVlcnlfZGF0YVsxNl07DQorDQor ICAgICAgIGN5YXBhLT5idG5fY2FwYWJpbGl0eSA9IHF1ZXJ5X2RhdGFbMTldICYgQ0FQQUJJTElU WV9CVE5fTUFTSzsNCisNCisgICAgICAgY3lhcGEtPmdlbiA9IHF1ZXJ5X2RhdGFbMjBdICYgMHgw ZjsNCisNCisgICAgICAgY3lhcGEtPm1heF9hYnNfeCA9ICgocXVlcnlfZGF0YVsyMV0gJiAweGYw KSA8PCA0KSB8IHF1ZXJ5X2RhdGFbMjJdOw0KKyAgICAgICBjeWFwYS0+bWF4X2Fic195ID0gKChx dWVyeV9kYXRhWzIxXSAmIDB4MGYpIDw8IDgpIHwgcXVlcnlfZGF0YVsyM107DQorDQorICAgICAg IGN5YXBhLT5waHlzaWNhbF9zaXplX3ggPQ0KKyAgICAgICAgICAgICAgICgocXVlcnlfZGF0YVsy NF0gJiAweGYwKSA8PCA0KSB8IHF1ZXJ5X2RhdGFbMjVdOw0KKyAgICAgICBjeWFwYS0+cGh5c2lj YWxfc2l6ZV95ID0NCisgICAgICAgICAgICAgICAoKHF1ZXJ5X2RhdGFbMjRdICYgMHgwZikgPDwg OCkgfCBxdWVyeV9kYXRhWzI2XTsNCisNCisgICAgICAgY3lhcGEtPm1heF96ID0gMjU1Ow0KKw0K KyAgICAgICByZXR1cm4gMDsNCit9DQorDQorLyoNCisgKiBDaGVjayBpZiBkZXZpY2UgaXMgb3Bl cmF0aW9uYWwuDQorICoNCisgKiBBbiBvcGVyYXRpb25hbCBkZXZpY2UgaXMgcmVzcG9uZGluZywg aGFzIGV4aXRlZCBib290bG9hZGVyLCBhbmQgaGFzDQorICogZmlybXdhcmUgc3VwcG9ydGVkIGJ5 IHRoaXMgZHJpdmVyLg0KKyAqDQorICogUmV0dXJuczoNCisgKiAgIC1FQlVTWSAgbm8gZGV2aWNl IG9yIGluIGJvb3Rsb2FkZXINCisgKiAgIC1FSU8gICAgZmFpbHVyZSB3aGlsZSByZWFkaW5nIGZy b20gZGV2aWNlDQorICogICAtRUFHQUlOIGRldmljZSBpcyBzdGlsbCBpbiBib290bG9hZGVyDQor ICogICAgICAgICAgIGlmIC0+c3RhdGUgPSBDWUFQQV9TVEFURV9CTF9JRExFLCBkZXZpY2UgaGFz IGludmFsaWQgZmlybXdhcmUNCisgKiAgIC1FSU5WQUwgZGV2aWNlIGlzIGluIG9wZXJhdGlvbmFs IG1vZGUsIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyDQorICogICAwICAgICAgIGRl dmljZSBpcyBzdXBwb3J0ZWQNCisgKi8NCitzdGF0aWMgaW50IGN5YXBhX2dlbjNfZG9fb3BlcmF0 aW9uYWxfY2hlY2soc3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldiA9ICZjeWFwYS0+Y2xpZW50LT5kZXY7DQorICAgICAgIGludCByZXQ7DQorDQorICAg ICAgIHN3aXRjaCAoY3lhcGEtPnN0YXRlKSB7DQorICAgICAgIGNhc2UgQ1lBUEFfU1RBVEVfQkxf QUNUSVZFOg0KKyAgICAgICAgICAgICAgIHJldCA9IGN5YXBhX2dlbjNfYmxfZGVhY3RpdmF0ZShj eWFwYSk7DQorICAgICAgICAgICAgICAgaWYgKHJldCkgew0KKyAgICAgICAgICAgICAgICAgICAg ICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYmxfZGVhY3RpdmF0ZS4gJWRcbiIsIHJldCk7DQor ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgICAgIH0NCisN CisgICAgICAgLyogRmFsbHRocm91Z2ggc3RhdGUgKi8NCisgICAgICAgY2FzZSBDWUFQQV9TVEFU RV9CTF9JRExFOg0KKyAgICAgICAgICAgICAgIHJldCA9IGN5YXBhX2dlbjNfYmxfZXhpdChjeWFw YSk7DQorICAgICAgICAgICAgICAgaWYgKHJldCkgew0KKyAgICAgICAgICAgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJmYWlsZWQgdG8gYmxfZXhpdC4gJWRcbiIsIHJldCk7DQorICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICAgICAgICAgICAgIH0NCisNCisgICAgICAg LyogRmFsbHRocm91Z2ggc3RhdGUgKi8NCisgICAgICAgY2FzZSBDWUFQQV9TVEFURV9PUDoNCisg ICAgICAgICAgICAgICAvKg0KKyAgICAgICAgICAgICAgICAqIFJlYWRpbmcgcXVlcnkgZGF0YSBi ZWZvcmUgZ29pbmcgYmFjayB0byB0aGUgZnVsbCBtb2RlDQorICAgICAgICAgICAgICAgICogbWF5 IGNhdXNlIHByb2JsZW1zLCBzbyB3ZSBzZXQgdGhlIHBvd2VyIG1vZGUgZmlyc3QgaGVyZS4NCisg ICAgICAgICAgICAgICAgKi8NCisgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9nZW4zX3NldF9w b3dlcl9tb2RlKGN5YXBhLCBQV1JfTU9ERV9GVUxMX0FDVElWRSwgMCk7DQorICAgICAgICAgICAg ICAgaWYgKHJldCkNCisgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiJXM6IHNl dCBmdWxsIHBvd2VyIG1vZGUgZmFpbGVkLCAoJWQpXG4iLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBfX2Z1bmNfXywgcmV0KTsNCisgICAgICAgICAgICAgICByZXQgPSBjeWFwYV9n ZW4zX2dldF9xdWVyeV9kYXRhKGN5YXBhKTsNCisgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkN CisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQorDQorICAgICAgICAgICAgICAg Lyogb25seSBzdXBwb3J0IGZpcm13YXJlIHByb3RvY29sIGdlbjMgKi8NCisgICAgICAgICAgICAg ICBpZiAoY3lhcGEtPmdlbiAhPSBDWUFQQV9HRU4zKSB7DQorICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGRldiwgInVuc3VwcG9ydGVkIHByb3RvY29sIHZlcnNpb24gKCVkKSIsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5YXBhLT5nZW4pOw0KKyAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQorICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAg ICAgICAgIC8qIG9ubHkgc3VwcG9ydCBwcm9kdWN0IElEIHN0YXJ0aW5nIHdpdGggQ1lUUkEgKi8N CisgICAgICAgICAgICAgICBpZiAobWVtY21wKGN5YXBhLT5wcm9kdWN0X2lkLCB1bmlxdWVfc3Ry LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4odW5pcXVlX3N0cikpICE9 IDApIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAidW5zdXBwb3J0ZWQg cHJvZHVjdCBJRCAoJXMpXG4iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjeWFw YS0+cHJvZHVjdF9pZCk7DQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsN CisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgcmV0dXJuIDA7DQorDQorICAgICAg IGRlZmF1bHQ6DQorICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87DQorICAgICAgIH0NCisgICAg ICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGN5YXBhX2dlbjNfaXJxX2hhbmRsZXIo c3RydWN0IGN5YXBhICpjeWFwYSkNCit7DQorICAgICAgIHN0cnVjdCBpbnB1dF9kZXYgKmlucHV0 ID0gY3lhcGEtPmlucHV0Ow0KKyAgICAgICBzdHJ1Y3QgY3lhcGFfcmVnX2RhdGEgZGF0YTsNCisg ICAgICAgaW50IGk7DQorICAgICAgIGludCByZXQ7DQorICAgICAgIGludCBudW1fZmluZ2VyczsN CisNCisgICAgICAgaWYgKCFpbnB1dCkNCisgICAgICAgICAgICAgICByZXR1cm47DQorDQorICAg ICAgIHJldCA9IGN5YXBhX3JlYWRfYmxvY2soY3lhcGEsIENZQVBBX0NNRF9HUk9VUF9EQVRBLCAo dTggKikmZGF0YSk7DQorICAgICAgIGlmIChyZXQgIT0gc2l6ZW9mKGRhdGEpKSB7DQorICAgICAg ICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFfZGV0ZWN0X2FzeW5jLCBjeWFwYSk7DQorICAg ICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICB9DQorDQorICAgICAgIGlmICgoZGF0YS5kZXZp Y2Vfc3RhdHVzICYgT1BfU1RBVFVTX1NSQykgIT0gT1BfU1RBVFVTX1NSQyB8fA0KKyAgICAgICAg ICAgKGRhdGEuZGV2aWNlX3N0YXR1cyAmIE9QX1NUQVRVU19ERVYpICE9IENZQVBBX0RFVl9OT1JN QUwgfHwNCisgICAgICAgICAgIChkYXRhLmZpbmdlcl9idG4gJiBPUF9EQVRBX1ZBTElEKSAhPSBP UF9EQVRBX1ZBTElEKSB7DQorICAgICAgICAgICAgICAgYXN5bmNfc2NoZWR1bGUoY3lhcGFfZGV0 ZWN0X2FzeW5jLCBjeWFwYSk7DQorICAgICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICB9DQor DQorICAgICAgIG51bV9maW5nZXJzID0gKGRhdGEuZmluZ2VyX2J0biA+PiA0KSAmIDB4MGY7DQor ICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZmluZ2VyczsgaSsrKSB7DQorICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGN5YXBhX3RvdWNoICp0b3VjaCA9ICZkYXRhLnRvdWNoZXNbaV07DQor ICAgICAgICAgICAgICAgLyogTm90ZTogdG91Y2gtPmlkIHJhbmdlIGlzIDEgdG8gMTU7IHNsb3Rz IGFyZSAwIHRvIDE0LiAqLw0KKyAgICAgICAgICAgICAgIGludCBzbG90ID0gdG91Y2gtPmlkIC0g MTsNCisNCisgICAgICAgICAgICAgICBpbnB1dF9tdF9zbG90KGlucHV0LCBzbG90KTsNCisgICAg ICAgICAgICAgICBpbnB1dF9tdF9yZXBvcnRfc2xvdF9zdGF0ZShpbnB1dCwgTVRfVE9PTF9GSU5H RVIsIHRydWUpOw0KKyAgICAgICAgICAgICAgIGlucHV0X3JlcG9ydF9hYnMoaW5wdXQsIEFCU19N VF9QT1NJVElPTl9YLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh0b3VjaC0+ eHlfaGkgJiAweGYwKSA8PCA0KSB8IHRvdWNoLT54X2xvKTsNCisgICAgICAgICAgICAgICBpbnB1 dF9yZXBvcnRfYWJzKGlucHV0LCBBQlNfTVRfUE9TSVRJT05fWSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICgodG91Y2gtPnh5X2hpICYgMHgwZikgPDwgOCkgfCB0b3VjaC0+eV9s byk7DQorICAgICAgICAgICAgICAgaW5wdXRfcmVwb3J0X2FicyhpbnB1dCwgQUJTX01UX1BSRVNT VVJFLCB0b3VjaC0+cHJlc3N1cmUpOw0KKyAgICAgICB9DQorDQorICAgICAgIGlucHV0X210X3N5 bmNfZnJhbWUoaW5wdXQpOw0KKw0KKyAgICAgICBpZiAoY3lhcGEtPmJ0bl9jYXBhYmlsaXR5ICYg Q0FQQUJJTElUWV9MRUZUX0JUTl9NQVNLKQ0KKyAgICAgICAgICAgICAgIGlucHV0X3JlcG9ydF9r ZXkoaW5wdXQsIEJUTl9MRUZULA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEo ZGF0YS5maW5nZXJfYnRuICYgT1BfREFUQV9MRUZUX0JUTikpOw0KKyAgICAgICBpZiAoY3lhcGEt PmJ0bl9jYXBhYmlsaXR5ICYgQ0FQQUJJTElUWV9NSURETEVfQlROX01BU0spDQorICAgICAgICAg ICAgICAgaW5wdXRfcmVwb3J0X2tleShpbnB1dCwgQlROX01JRERMRSwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICEhKGRhdGEuZmluZ2VyX2J0biAmIE9QX0RBVEFfTUlERExFX0JU TikpOw0KKyAgICAgICBpZiAoY3lhcGEtPmJ0bl9jYXBhYmlsaXR5ICYgQ0FQQUJJTElUWV9SSUdI VF9CVE5fTUFTSykNCisgICAgICAgICAgICAgICBpbnB1dF9yZXBvcnRfa2V5KGlucHV0LCBCVE5f UklHSFQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIShkYXRhLmZpbmdlcl9i dG4gJiBPUF9EQVRBX1JJR0hUX0JUTikpOw0KKyAgICAgICBpbnB1dF9zeW5jKGlucHV0KTsNCit9 DQorDQorY29uc3Qgc3RydWN0IGN5YXBhX2Rldl9vcHMgY3lhcGFfZ2VuM19vcHMgPSB7DQorICAg ICAgIC5zdGF0ZV9wYXJzZSA9IGN5YXBhX2dlbjNfc3RhdGVfcGFyc2UsDQorICAgICAgIC5vcGVy YXRpb25hbF9jaGVjayA9IGN5YXBhX2dlbjNfZG9fb3BlcmF0aW9uYWxfY2hlY2ssDQorDQorICAg ICAgIC5pcnFfaGFuZGxlciA9IGN5YXBhX2dlbjNfaXJxX2hhbmRsZXIsDQorDQorICAgICAgIC5z ZXRfcG93ZXJfbW9kZSA9IGN5YXBhX2dlbjNfc2V0X3Bvd2VyX21vZGUsDQorfTsNCi0tDQoxLjcu OS41DQoNClRoaXMgbWVzc2FnZSBhbmQgYW55IGF0dGFjaG1lbnRzIG1heSBjb250YWluIEN5cHJl c3MgKG9yIGl0cyBzdWJzaWRpYXJpZXMpIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbi4gSWYgaXQg aGFzIGJlZW4gcmVjZWl2ZWQgaW4gZXJyb3IsIHBsZWFzZSBhZHZpc2UgdGhlIHNlbmRlciBhbmQg aW1tZWRpYXRlbHkgZGVsZXRlIHRoaXMgbWVzc2FnZS4NCg== --_000_77BC725C9062764F874D79F51E1F1A8F4C90DD9ES04MBX0104s04lo_ Content-Disposition: attachment; filename="winmail.dat" Content-Transfer-Encoding: base64 Content-Type: application/ms-tnef; name="winmail.dat" eJ8+IpQTAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEJgAEAIQAAADAwM0E4OUFD MzBCMzNDNDVBNkE4NDY0MkNEQjVBM0FGADkHAQ2ABAACAAAAAgACAAEFgAMADgAAAN4HBwAEAAsA BQANAAUAEgEBIIADAA4AAADeBwcABAALAAUADQAFABIBAQiABwAYAAAASVBNLk1pY3Jvc29mdCBN YWlsLk5vdGUAMQgBBIABAE8AAABbUEFUQ0ggdjMgNi8xNF0gaW5wdXQ6IGN5YXBhOiBhZGQgZ2Vu MyB0cmFja3BhZCBkZXZpY2UgYmFzaWMgZnVuY3Rpb25zIHN1cHBvcnQA9RoBA5AGABg8AABKAAAA AgF/AAEAAABCAAAAPDc3QkM3MjVDOTA2Mjc2NEY4NzRENzlGNTFFMUYxQThGNEM5MEREOUVAUzA0 LU1CWDAxLTA0LnMwNC5sb2NhbD4AAAALAB8OAQAAAAIBCRABAAAA5S8AAOEvAABomgAATFpGdQ7h Bh5hAApmYmlkBAAAY2PAcGcxMjUyAP4DQ/B0ZXh0AfcCpAPjAgAEY2gKwHNldDAg7wdtAoMAUBFN MgqABrQCgJZ9CoAIyDsJYjE5DsC/CcMWcgoyFnECgBViKgmwcwnwBJBhdAWyDlADYHOibwGAIEV4 EcFuGDBdBlJ2BJAXtgIQcgDAdH0IUG4aMRAgBcAFoBtkZJogA1IgECIXslx2CJDkd2sLgGQ1HVME 8AdADRdwMApxF/Jia21rBnMBkAAgIEJNX0LgRUdJTn0K/AHxC/G9H7BhEgAcYAIgHMBoGeA4Y3lh CrAb0QlwLCDcYWQcYCIyGDEzHMAYcDxjawqwHGABAB1gY2U6JwQgYiGwDlAccHVuWGN0aQIgDgBs C4Bl4QqAc3VwcAkRCYAjEF8ZICOvJLIb0AORdwWwa6Uo4GkiMCBrBJFlAyBJC4BwdQVAc3kfYGX0 bS4mFVQiQSUsKfAEIE8BoBkgCkAQIGx5JyBh9weAIyAEIHAJcB1gCGAEIP0idGQFEBoxIfEtICYc J1/DJLIqx0VTVD0QIB9gqSHyQ2gDYWUG4G8fUCMqxiYVU2lnGFBkLQEZMGYtYnk6IEQcdWQecC0w NYAgPGRdNZFAInAt0QQQLgWgbTo+JhUtN7AmFS61cy8NKgMvBGAuMGUvTWFdKZBmAxAZ4DoifDoi MvwgKzffOOoiczbwOiM6Y7w5NjrQPgE6/zwPLilw3TooMTrQPl8/bl8wYj0R8TpxNzE4PfNEn0Wv QWY+NBxwOfEuQRmjJwE4MR41KfESAAAgJdIoKymfIxA6wAEAHnBI5C0pQWZ9BQBlGIAZ4ARiQSAe oDZ+NEdAQe9C/TO8DeABICBtN7BnKVAjIC9MHzl6Yj9PvzlqJhUdsRAwSEA2MAI4M0A3Li42M2L8 NDIKYEuVN0hPn1KfJkJPPgFRj1dvJkJAQE8wMzQ1LEdAK1uDW0FwcwE5Qy0kKENPTkYASUdfTU9V U0UAX1BTMl9UUkGQQ0tQTyAgVCk9NCk6ICs9I/VvC4B0Lh5vQWZcb115XYBDSEs+SV6jX0IIYBHA HaB0Xx1gsDJgH2EvXeFDWVD6UjIwU16zX0E2hWPbN0bRInN0cC0tMDpnMjzi/WQmK2kfaiEiZEN0 ZCZO/19MXzzVWP88elN8Y0vgMQxjY1SwHlBhMGE0/0RAVV9uD3D/WJ91X04GW0L5FnA3LD3heaJI YVtBBBAwaXplXwVAQyRpMlhjX3cFEBAgKB9gcrNjcHsVICoicyMQdURAyQlwZywzvCB2X9AcYCND JAEBYXVsY8BpcuxxXxmhNaFyfC8ikUpX/lwAAHaFXsUzUQMgG+EdAPN2doK9Lyop8RuhgPAFMX8k ADSgGDCGIBxRNUAb0W3/A4EcYDaxJrBIoSnxJIEQIGslsRnALnzwL4K9g/Ign19SClCEN17FBpAg KEMoFF9vZLAugBJjbWT/gEZKVoMmXsaKZYxfjWuMRPYpix+MISGD8o4/XsUJcL50CHATMIRNXsaF sWQnQP8JcYi2KOAiQIiCKGMfYTJxHyxiH2ADEAMgJZBrbm/+dwOggGGWfXzwhdkJ8Bow/4qBLHEJ cCTQLuEcZTFFiUjrXsYhsHkloF8E8CJANjD3HnCMRYikX5/DIxCSHFtDy6MQedIzVQAsOXpzmVH/ JVFf4WwVoDEkMHuAZ7CQ0P8YYiXRB0CAz4HalJ+VopVyN4Q2ln0D4XQRwIw1LT4/GDFesIKfHlCI QWZgQVCAQV9HRU4zOpQf74oFq8SQ0YqhJpAskn5exvpiSvFrhDZexn+VrnaoLn+v/39psYm1f6vH iqGt11+AVU5LTk9XTqJbA3mxo8ArNDA5LDj/emMIYLTpnrikHxgwY8CZQ/+mb4Hfi1uKgamZgyZ9 gZlCIS4wW0JMXzJAQVTDXZDFsElaRV3D/0RA8Y2BWzMyxn+FsStCe5H/IyI2siHwbYAYMUdAh6IY MdtIcCe+bS4wBUBiGeAkoH8J8Ik/g4XM4qFwyeGKoSg9q6ZjJiCc4awAzvMmIKQweB6gMDFesD1f UO4wkm+Do2TAYi4xX1B/sP5sEgCSf8OUCIGwgheglf8/thuZQ7qHxcJdsLuAX0TgRVZJQ0WpzXSA qMv6La5AT9khyC8YELHdhcD+RxIQI/jFJIciSvEN4JhR/zCQfbEEABuhmcIfgZhCHIP2MCrG3WlJ bYAiMihFLHH3iHEiMjNRdAkAIzAEkCMQPyIwLHED8JoRzLHFkUhF/EFE4b/iz+PTpbdLQ+UN9SIy RMXgQX2iM5fdaOuPf4lulYGP93uSfbHvkSMwXz0CYG8kMIxEIxDl9V9P9EZGXaBU8OPFyX3mrv4/ 9F+q1cUz0ajb7+yfIE/PA6DTBCpk49NPUOlnyXN/75flZH+wAxEpQvfv21FU0ElNRURdgFTNIOeA LyISLHGtguUBci0wYWc/C3F9cCugmFEiMtMEZXH+dS7gHmEQoPzPh1b+gStA9ZmyaAhgbIfCqUMi sOX1/ynxDeAeUJgz2Dr6QOt/7Z/XjBfXkdMTJtDAKO6jX1AP/eg6YEDgCmdOWElP/imsX47Ik3PO p5QPqD+P6J/v7w8/E/8U263UQ03xYH/FlycR9e307tMVit8U0Vz3IEAIPwpTIV9QxZwPLxTV/mfk gGwAhhEi4PZP91+beP+hFCP4LdAfETcA5aGtkcrw/zLBR8EnwXvgmeGkYOAoytL+YilQ628H/5eC DL/Wz8VD72aQZaD6QMW1XRlxKs8r0v8XrynvLHbFlywNMDgtny6vwTE5RVJST1IwzzUV/x+vDV+r mtFSur8LcTePPF/7uZ85+TMMn0BP7puQh5lD/2PQ4OCtoBKPRH9Fj/Wn8e7/F59JPhv20WNIX0wf Hri9kf+hBZfQSE8af06vIM9MfQLR/yXwmnBt4CJlh2KaQAWTJFH/I2/BENsgl8ABv1M6JJKcMfck /yYPV89TbAB70x9Eh1f7HyEokWbbIOfBzyCIpSRQd1rfm3jlI23D0APwJDJsj2tQAXF/ASRRSTJD 5bD3AQBfb5t4Zl1B0wScE/ww155wodBt0XckUCdt4CSQ33dw6MB3cVy04FBzGcBjL38nDzf/k4LT Az9PbL/HozDfLALQ4k6fbP/H0DFuP2+v90Efe4l9FTCh0KOgx6JIP/9JTxwESw95bx6vUD98n3zz w/ngAZBlcCg10Zl8H/9yr+7d0HDwj/GUfz+E34W7//INFy+FvxufHK+Ib4z/er8/jA8av5AzmHH8 UORAKC36LdUWPtDQChJrVX6vjd//k59N2q5+qSVxeNXWXROXj0upNIpjPNGBID9BYzrh21FBR0FJ u7eQWLh201InvEIxMdEgLJ/Qo2Aln9A4vRAxN6PZdm9/YlG3Vl7yzuAFcMBC4PAoOaGDKmTfAIKx rZB5btP7MF1wb2vVUF9UoqSCx4vGvo+/lnRwX/pxt/D/yhCB0FUQoyDAv8HPCG9B+/WoEmliMXql R4xO2vWrf/+shnTUk4+uDXF3ne+mT6da/1UBqC+pP6pPq1+2VKyvrb9/rs+6u7CPsZ+yr54rBYBm zw5QkhBZ0MyQYS/QkAFg1VoRL/oQcJbQL/pwAQDkZS+3oy5o5bDD78T5M9ZVBWFleNDQlzA3NgBk OS4uYmNiNxBjMTYgn+AwNjT+NNoGkhDDz8a/v+LMsMWvg8t/n2UzMDMsNaBAt89yyUCg4XXJMaHU cFywd6RQbfCkwG+i0H4ipMBp8WFgKHU4VZDRIfpyiCf/nh3IIFoBJGEkUODAJHMAIO9VEAFAQwC2 wVsySNSrtsqdoiF2QnJBzdM9ICNCQN/DIcK/ym/E2UIjLrTgzP/33a/AJZ5Ad15AkcL6cslch8f1 42TIwGQxNDIi8E4yycne0OgQL24EEGx/zE/fL+A/n4N1UJLQoFAsPjegcKDRv6ZSKWDwQ3n/VaCS gFowOjEiyPyCYqNldzvqmOqZQZbQYZCaUCBE/HVkAZD/sO+AnBCnsO+gXkC3oOtj3pBdgD7qmUbN XmVjAZBaUHVwWkPrcee208FABdJieZpoYPCNMK5EWlCScPwQS15hevARLGpr9ZLwcGiVgG1p6HVt Ll1AZ/E6hqFCQLJzJFFMZVUABfA8EjBf+JL2b+3vFdDY8HlZQGdSaFSgKEOcUDKf8DHKLfxhNOs3 U2X5oNUR76ewtwBdQGYASaQwZ/j7b9H8dTIgR6RwZ6fQ/l496plUYSLhk2ExZ8Biav8ikyig8iFh AF0QfgBaQ/3CH76h1SFNwA5QBHJHTlXPANBCQF0QYjAgUAPQniD74NbrAky00PghZ+CNMP2AVwSR BIHhk0MrcFmdQEf/tPEEY12gCjHbQFmw/hJiAP8GA2ExJKAkgOaRZMLqmaeQd1mwIlIKsGxjGWmI v6YjL+MA8nDvkFzwPJ4hdXjx5RFsYXnFgPE3D/6B4f8RTxJZzaITLxQ9xMAVHxBJz6eUF18QWH4Q YWIZb+IB+iLFNSKTrhuHVFDhkJ5AAwDQPxFfTUFYX0bjCfE1IFMgNR4vHzIftKJfBoBNKHicUCgi cHUiQT6SsDScUJMAcUE3F7uHIE6C4EuDBEJZVDpFIBAz5FZ/J1IgIE2/7CCVgGTDWbYKkfLQZ5WA e/LBBgBmQ1AXQGl5HqZQgTVARFVDVF9Jg0BPR/KNMMkwIE5RVTUgWZxfRIswOlArhDI3IE7zNLIq 0VRPCbA1ADpyLQR7g2Qt8TAjry7Jg2QtVEL+QYOQjTNxQslwMc8y2AmwOk0fcE4lkTPTcUIyON80 vzLYLQQzxjdDYTFPHrX7PqQzBVODYCswMsAw0zW/DzbEIE4JwD0hQ0FMSWRCUoswSU8wIB9wUxpL NBQ4NK9AE1BPUmcrMDPCQIBORUEVcUA0/0HfMskfckOGNyUr/0W6nUBfRp4uJ0evMthDMFch0U27 KvArsCg9rzbFjEAxu4fPHqZMjC1QQ7BBWY0xyWHvyXCNMCcxVQF0nNBlQSm/8VA+VFJJJeGNMCA3 6f//6wM8Iuv42LEIUbSDkoD+qn5VCJBiYAoxKAdxQmYAYtfcYPyQdVFEWFNTh9PhgfX1UGT+qk/y I2Ih1gBlUv3bQGNY0Vg2YTEKMQUQBQB8Ym4n0CiQ9WBYswUDbftlQKTQYglA63EpcQ5PO35dTUBW IfBDQB9wTDQzM7tiz2PXQotQUXJxMjFKn+k7q0ZXJaBML7AlQCuE/40wyZBoD2kWMsCDMWn2K995 aOlIRCHgixFDUDQGN89Bz24caZQJsFVOMPJv//9xD27m/CBuP57waP+LmnMvv26zbIaNMXVMccpS MFx8MP+7r31vfjp2r3e/aOktZG8G32dBb9Bv74GMccs0b9+ET/90n4Hddo+AP4b/bGiI7Xtf/3xv kQ9+/4sfaJ55unUvK5JPkGCMn5OfPAVDTWxQTP8hUJFobQhnjtfrBEC28MWQ/7iP6nmRZVIwDED7 4FsyBeHH8lAQ0O/QcG9zBZNd9POfH1syIDfPUCLw72CgM3/84KCEuaDjQKFPol//4DP9o5Ewo9+h L6X+YreRZdJxOHh5XwxA1oerSV9s/G87UgOtgOFw0oCkb6k1/ymaq0ir8K2PqF+vr6tX62PtwUBl rD4nMWnzEQUQ3lClA4Ixo5ExNQixSf/g/19zJ4D9kL3gWqDsddjA5rB/79DhUp2Ds8+rk7bQv5h9 /CBf0QDsIVnwv56crCgB+9igYLBhnd+e76MG6UC3sd/vYFhJxPDA76b3Mu9gqMD+dyhi0vHDj6Mz yUCjo2Gy+nLmoGTF/6M072DtI9gA/nD/4F4BttFbQchPur/psH9YRNYhXEK1r8DfoyvlYG3/YYDy UAYBHtHeUObA2EDyAPvrcO0wbO/QnYPz0uxRzz+/pvTvYMp0v2MMMAsga8rPd6L3xSH9oGTvoWEg CyBo+fUhc230AO8QBEAK0GCU+9tQuYB4KDHDf6MkwoH/pL/YX9lv2n/CEu9gCYBm3C8f3T/eT8wf 6bDRpF9idP5uzh9XNutwqMDyEATw8sHtBEE1uiReQXBasbzjKYuPkWWcv6Bg55VbNV28D/+9H74j YLAHcAVCYVHNEfjwHl8ncAWgXgBaoFtdID49v6Fa1WdAKUDwcjM4L/By8FT8cPEzMvEzMyxXj/+R ZGdBNPEzNfEzNv/xM6OA7EDs9+4P7xBfAO8//fBMYvE/8k/zX/Rv9X/uPu3hwXT4L/DDYf00+f/7 Af/8lPs//Ef9P5s/A7YnMSfCnGJ5YMG1MNNgL3fb4Ptgwe5wbSiQYQFirzwAmhH/PTU0Ewn/mhFM yWd3CnpkIv1u8VRm0HKPCuVDM0ZrZR/nEPpJamqPU01mwSWjmfJwKGNtZCJTFwMjMjPyZiKwPDxP H5mGFhQLOf+RYRYdCvcYnxmqTMkbHxwj/0zIHM8Zqg85H08cIw84IU//GapGbCP/ER9DwiXPJttJ a88ofxOvKpsHXmdynZDnIJ9aVtIACK8Jv0WFR1JyMH9AII6iC980uZoBD980uVG+VR7AZvASfxYU NwcoMXDmcBcxQaIgfBdCO8MX0vNvsBgzMykq3yJaNQk6v/80zD3vPv83U0BfQWmaAUJf/0NvOUUa zEVPOSYv7wfWWlf97wBv1fEyfzOPDsVxwA9m+zW/UIVIbDEN31B2N29QSf81Yzm/UIVkoGSwFQ9Q hGnQolA1EERVQxGASVTQ/jVYn1mlUuNtHxYVcdQW1+1nQGM8VReHMRgmS78H4U9NT05fuIDB8G9v 0oBv/9NgxYVPXyI8UMhdr1CLRr//Zo1S4yPIaG5S4mnPZo1EhP9sL2jmRo9u30AFcF9o5kIf/3Lv WCR0X2jIWEFg32HvYv/9ZARv6BH+4eEAs4BlD3bv/13yWft4z1mvdk+ALmvDgd//W+l6bwffTn+E DwsHUW8M//+NDw8fjy8prxJPE18Ub10f/xaPF5+Tjxm/Gs8b35m/Hf//Hw8gHyEvIj8jTyRfaW+i //8nj6Ufkj8qvyvPqM+p3y7//4g/MR8yL4q/OD90BYzvNsz/BCCQ7zi/lh863zvvPP+r//8/H0Av QT92P8AfRG/CP3Hv/8RvukjGH0rfsR9M/3xvtF//UC+klAuPUh8EKo7vVEkEKv+431YKBCm671fZ BCqWD4Lf/3AUWs9b2wQoXK9dv17PX9//en97j87vZB9+z8ivUMiGX/9pD+rPay/s721f7y9vffEv /3GP819zrPVPda/3X3fN+V//ed/mX+dvfQ9+H/sfgD+BT/+CX4NvBE+Fi5vrBv+H34jiIQCQcnVj dM+AeWGIcGFfmIFfbGXpQMxce4in1tR1OM+A5MCaOw+vIA9BEPdcfRJYa/+4z8Bws1BnD1AAsGk+ Y6NFjfKJQM+QA4F0bwUWEGiJ0EkyQyBl8HF1aXYDMA9QDoADuK8AkALhFPDPkG4AkCAOPyMPQg6k aTJjDvJzWzhdID0Pfxtho0VPRr5GnZGFUB0QkoCdcyzVEP0bYH0eINbWiTEVGB2IA6lHHBg2wh0V Q09NqJBO61ChrfEgiRAxHiofK445/yCvIbw1Yq3THi4e/qQZJd8DJu8n9nNpemVvZqYoGPsAUV9k AuBhmLD/HmERDTCfMa8pL5AQNQkrD/8hvyLHHiDkQB5vM3xv8jSvHzW8uoMoBTu0J8NTSVr/oCA3 kjhfumY5zxyBUrUdBf0eIDMojjf/UKo/T0BfHiH+NkGfQr9StkRvRX9Gj0ef/1RJSW9KdCfDSy9M P0MrNF/7Si9BFjJQv1HPeBVTXzrf/zvnBdg9Fy+/XS9eP1bPBZ3/WE8sHyf2VZ9fn0kfYh+SjP8e Lx86qJtmb2d9rblpH2orP626A7gS7xgPGR8aJnNt+GJ1cxrfG++a6yhfbx//H+92n57/oAF4nyRf JW98H/+jzX4fKY9D/4FPwJ0tjy6f/1wfi5+Mr4QPM++GL8S/oXD/bmBkD44vTg+QX8mMPF+Kb/+Z f5qPks8+T5TPd2zsR0Fv/1b/hW+eX/A6UH+hP0j/o3//9FmlT6ZPTe+of/hqqj+rX/9S761v/Ilj 37A/V9+ybwVP/wZQWt+Yf7uvvL+0/2AvrK//t68Mpq8/vj9l/8C/glNoX/9uuGofcH/Fr8a2bb/I T2/vf3D//1v/qBEHFbF1CQFCXwkA5C0gArFmb3Jt33OQdWIA2eim0jlADqPb0L/UUehgFxDogYoS c5V1AFD1ApBmFkNk19EAsNZ75MCfvZLUUBZS18AComx5FsD+bhXS6RDU9NYP1xAPQtsDvGV4ArBz 4NxxD0FnFlCH2SLcqwExc3VsdNZ6nRcRdeDg1EF1cGZmALF/FiEAkNSwFgDf/+EL0jlS1mXY4XNg IAjgZwLh2dAVFsBy5lBvbmBlbHNzFgEWYW51dWAAsdkxYp55AcAUcAGSAcBuLuTPqdKiTm8BwDrS OUkaIL1zsGEBENdgAlADgHYU4KZlbmAWUm1lA2By3AD/AOQDMNQB2AECUNShFoMAV+8UQdI5AICS MDWvYOjDiHH7FjQCIHjVpADk7ubVEvDa9+mZF5iIkl8OhtNOiPvagP8Oo25gEJSIdPYhD0G63/s/ +72aEJEq4fQNKA+e9dbvYN50EP8QoAJwA4B4AA8QoP91VwGP/SHigQNOc6UaowjAzxdDBmV2IA6j LT4GZNCPRb2VadlAKCEouFVZZFRFtjFPQ8SwyWRT6EsgJhCyKf23/A3/0evmQdRARcowVrPwCE8J Wb+ROgrfC+J2P8M61bNz3uHfCcBzEdVW74Tc5y7Kb72X53VXdhG4VEVOIpCAcHsA3Fco+UN35sJw KQNODSn/dhEGItNOigMZ0AZziHF1Zm9V4P1VGu+9lWfrAPHAb951///QYA6fHAowA07zEv4oATMk wwEk68LvMLhHESKZyaEgPN9CJuUrKxJP9xePGJ+5YVgZ1AEzH/8q3/8YvxnAHukaPy4/4nJ2EeH1 /wCAJ48okfCxAU8bvxzPHd9/HunigTJvvZYJwjgSKMAw/wwvIJ8hryK/0bRAAes4DUslOBI+JsAg P99CIDr//8tBP3LAtEGJdtPC6NH3v/H4yV9pZC2w/c8AiQMa/w8fCeAHdXVTKa+9mC+0dP/5SZVd LgMfT54Y7zGPQF7/54ROr0+/dEEGI1FvVl9Cn/8Nwzh+6NE5tQeKePAL4kUv/0Y/dEHpIvYQR89I 30ng+PP/4fNKD0sfTC9NP05PWH9Qbx9af2sPU59Ur7OCV1JJ/wqgVj9XT28fWW9tr1uPXJ//Xaxi +F8fYCUfdWCfYar16//3H2QPZRv9T2bfZ+z+5vmn/2g/aU9qX3SfbH92n26fvZX/3jKLb4x5hso3 Lw3D9l+ARP/4pflD+gIfj3MfkR+Kz3ZP/40Pjh+ZT5Bfm2+SfAYi72G/k6+Uv5XPQSp+D9IbROYg re/AbaXx2VNH+hAz7B7+J9zh2PDZAAah27Lmwd9w/wWh2AHpn/UMqqEU0TZA9jbuZ6gRj4Cqol/X YBXQY4/9+LcqoSLYQi1S+eODXwB3T4i2qqIHQcZlVEEKoU6ET18ssFZJQ0WG/23NuFCukuJwYeew 3zBv813AqANjaK6Q7EDvse+R9xTRFWjkImLpQPOwFp89BBWwlFtV8EcQ8V9GSXhMRV0HQAdQvJUL sCannq8NRrvsRVIQsFK9Bv/AY7TCwGEs0b2vEzm7v7RyPwpQvQLCf8MNxMdV4FVOYk7KMEcgfL1C x8VDcFNVTV8OUSzgiXB8/nzFn76PxC/FNMjJyDUMEH+XXxNq51DUwO5AqoTuMGbx77Jwb3foYl3A 7vHg0T/mIPo/Ezbl8cSavRIweNwxMVVwFMDREHeukNggXmnkEK3QuEHe8Gvg8G1/8MLh8UnQqujT 39Tv1fEw/9Y/10o2QNgEum+YaAeErdH1s+dHLHAznp+yv7PPvJH/wgKjn5b1u4+8n8Ivwz/Mn//n UAvAzf/PEMV/7Z7rb88ff+Gf37/v/7sv6j/rSgpBWf/vv/gf4i/jPPbS8t+Wf/t/PfN/KPSPwGXr Q8E0Qk/8T1QREFYQ7E8DbwR/7nQ/AY89vwgP+O/5/+bwQUP4VElW5E8Mvv0SC98PD38JPwpP5A/8 LORv5Xj/vE/OUPWJFsc1EFJD9xDoL8vGjxX+RPqwQTEXVRuib8m19x/QL9E3d9xwQ9F1/G5uqlI2 QKnkYxC30NExvG1vqODTP9lo0SB5udAf/SA/4NDwsTAgkWZ1bH/RQNIkEOTSsCHf2XePsXkxIFVj b23RILnxcHL7odCjYHPdnzxs8pLnAciAv8BgtMDJkBqfG6QdEDwCz98ubwUEKtM14SsVUx0fMe+v ttLbcKpg0lFu3MBi0lH/OcLXyCj/Ng/xb/J/OT8QP/+z/BbAOJ8TrxS/Go/NOtsQfDBDGH9Cryvf G7RBNDjzMO8eK09wH1rbcbmAqEDmdyPguUhvdtJQYvJjcNVdwHdjEGhBUjA1Dzaf/zevSz86Tztf 5F8/D/T/ASD/Th/Gr8e/9i5Fr07vTQ9ZH/9PLxEv+w+kTrqviKZa81s6/0GhiJhd9FBeyi9c72S/ Efj/Zh9nL2g/Cwpp72r/bA9e+DdYwG4Pn7swtW+frC1F+EFHQchwfW9+eazfreLvgEB7YKFwryBp oyCqwK7f/69xsY9hmK1BoBFzv5+onLs/oSJJ4q5gobvbQYZSb2b6KHkrKSHPg7+ErIHcW/77UtSx MDzbAHG/n6x9H7ZLz9uwSnDbYNKxYm8kEKHA/6GA0lEhINFQSmG4UI1CNNDLnIDRVDvRUGhvJIC3 sJ2w0GtSsIgQ2zAwbbpfxwUAj/CcgGVwKI/Bho/ffsrSICSQrhSiBjWRv4d/74iPiZ9hb12KIXBf wgKWvz90z3Xbcs92P6XfpuJFeO+MMYyoqv+m4lO4ELoBeTD+ZaKyJ/XbUKfBSkGMIpTAf54gj7KR IY1CsVCxMCGgdv94AFKwehC54IFgd/C30SEgn6H5IMOo4iFVNPAgSRWw/6ZA3PKngdxwSFbcAKhh q/HtqBQnkADbeHOh+SAVsPG3eFG54I9EdUeQjVEy0VC73IC30GSng6/AoWBiqjF/UrG6Qf0wqLDS sCjRpNBv39tQk6Kh+azboYB30VWMYpewXdhYoepSmENzOqH5UwUAdaBJTwUCZiEAbH+YYEfyuiBS sP/AjQAgUmb/KIDXsKgUuL11w6gG3PFJQJ16MGsggoyo21BiL3gR+XzwaGHdB9tnuLtK4AUE971p sFDSIHKOoChQKDIglv+qWaH4Sxd3z3jWpWJ5/3sP/3wfik+SX39PgF+BaKVigqD/pSaU/5YPnK+Y L8u/MwHSzv0jUFeML40zpWLbUCgyqge/IXONQwAgw0C22CLnTh8D/Gx5piKrso9hkAAAEKfB/7/Q psOP8NsfkC8nUJFSzcD7KDBa8CiUwUrQr3CnMeFx99D/1l+icUkgoI0AuxCo4v+vcB/DNFCoFYyi rYG1savt7GFmSVEnMGUzUeNvsEG/NCHDYY1RtQKtpq9zbSdQv9fBSHOxj7KS5TLGcGjof/+vvq/R 5LYfMbZIqySs9iS17645IucgFs6Ad9zFI3KPU/+oIFsBzoAzYt5/34+S75P7/jTiD9Hf0u/T//rP mh9lS//8T51fddz3j5/foO+h+Xh21nTOACEBX6yCX9fh+RBhSeBfY21ktu+iYkPZKABwdV4Rq+Jh IYAgIP/LAIGgrHQk4LTx6eSmk+fE3+mTIFKr4iEgyEBoySAKSfsktarEVA9ZDXOxNKkAwvC/rKUB sCfxIFIQuLDBdAe69ygF3ZGr4mP98FMQxrLOgh9I8I6RttlLF8W9dTE24whfCW0odTgksAnxIYL3 yU9Rx42FKBxnWO+vsVKhRFBXK3BNT0RfAEbUVUxtVjr9tjJzqCBPESFSQlROQHBOTFnHIk8jXyEl T0ZGJV8B6Peq4LoAjxB0KBf4xQn0GxD+b5Pg4LOsgh75omCm4F+f/waIBo+h26Tgp/cQuApfomL+ V84ijUKr5FKA6fOw8a2g3me6QvJEXePxQFA1qL/i7RcgddphuKxGjxCqoCgQ+E1heLUwr8HdcaUB UxD3wyIXfj0hSY4yKBC4MDoHvxTChaD1IOCQNcLZsGNiIG80cI8xrJE6nEIL4BGwbvxPbtygONHc QDk11+KtoNv2ArLBV0giq+JiPzOro/3OIGf2EcNggri5QoTwyMC9kUBhSbDK0tigyDBwywD/q4G/ 0D0h6dbYQGIg9SCO8M9Ikg3isCM6nE9mYjA44P0/g2FHE9fizZGlpq2Bu3L3RpLxQD/xZvPweYGp Adfj/z8zQy3mog+SslcyT6JiEXL/8kMckxWnjuU08txRM+f5MQ/0cPQiN784wjB4M2bvOq840Qug NRRheSCsAbty/yigjULh0t5RpNENYdhA5hH/NID0cNfSQy3NNCvYK5IJ5T/DgyrPK9g+Xz9nVKAw MdtHn19jME6fomJEMU6vs/+pAD+h6CA8k+VTvWjD36rh/xffxh94tRTR+RFQRsgPzvN/HDJQN4K/ 4CYaAewQppB57HNf8/A9EWQc78pf364/a7X+b8rxQoHdYc0QU0VAVF9QT1dFJGVU8FJJRVNxHxoB K9gD7/+E9W47zQEtX/9vAH8BjwT/93efhPO6hChqYR9/ffzNBxu64seAefmofERDTUQvdIn6j4JG +5Y+edEgfPp8A2Atc9SPoX0vgh3sQH2D0GuGL+Av4TF0XSSgTPxBWa9wsLCkwY4PjxCGH/8vCPsv /D/9T9TP4s/W6bg0//WArfA/oXsBq+IUKdqSk0H9q7VzDGDnoavEFqWXb2PRL2a59u96mZMjJiQ4 TUH0U0uBUD3NEFAok69+P/+V7x40K+fNBxqfG6egT6FRX+JO8kTNEHDvqtYmzRB+96Crq6/yU3yh qqju4k6Ar/+in8yezhWEL4U86wDyQ6nv/YcqIczSiH+4f4qfuE+Mv/+Nz47fj++Q/6R/lu/XD1Jj v+pBP6E8oqykFbYz8WfvsPtlkRY1cM3Q5eAMgPK/7sH/FzM9YT3RakDu4exSsvB5gz884Q9K6ndL Epx/EJBkb//0Iu0QZCHX4WVCEwAPBi/Q/nhokRXF9QIW0BMAKhBlgv9EwU5Rzx8psdmwXAD0ItoR +xZjSgQnuuA08bWQc6Cd3/+e71fg4LJqQCvnwr+VLy7vF2ffaOanEnGy0HJ5X33psWFqT/nxbw9x it94W3RRVXTAWcCwfMB8gUn4WkVdeg9wvZ8Pey98P8O9rwK8QlVTWeZPtD8Hg6YXMrYPX0dST1X8 UF/j07fA33jaf5L26NHP493p79sckycgP/hTOOAZA3BJT+w/2PZlbWPwcHkoJugFyeARIGqBQF9p ZFswXbfAJhvjKfrCNfGv+a9bNV1x7eEnLSfCzvkv+jc2N/rd/kC3wDb8HwBPWzEuMv5f/28D/jP6 3TExPfrRMgK/Bv8E0P5EXFxOMAVoCa/oI2Z3r/Bh/GpfRGCrMgh6/kAJnw34P/SADr8E0AFgDG8K LGJ09xHAY6DvUGKyYMawzVAPDBY5BQCggEPvsUJJTPxJVOQQJNKxCxO/6CNpEe8O/FdAFvJfgWYY bwos0nD8eF9WoHlAOSDt8KAgGrqrCTAbk2b2sTyTcDSy8P+6YBq6BPAQDx2cFeIevxukvSAjOCCO CCAcDwotaG5w594QePBpUGl6taAecfRv+7PkI9w0H68aqw/vKD8pQ/8V4SnPKt8r6CUvGwUTDyIf 7R4Beu3hLfA1NQ+jf9xP9ze2xVnBUENBYMux58Fk+PdlyU6PT5NBZaxk+NMBrKB71WO3wGibodIA tYHNIW//RjBY0O6Qr0C3wFESQbFPOe/ORqXQR2CsoHJCI81SmuG+ZLVwEeE+D0+TmIRzU1z/69Sz 4FhgZOZMAWWRQmhIPev3gLPiZsagbNuwZUCyRB+DwtWCVvNk9Eg9QUdB/ElOZOngILJgZmBKX1mJ B+dn6Fbo7EJMX0lE3ky3sWT1QbIwwHZ48PqQw843Sy5OVkFMZO9l+/23wGJewElx8xBE30XlXev/ iFCz5E/ZWpZm392/aPXQMP5fZcmoYDwy4B/hL6UrYnT9WBUqWBHt4Qbmy4C6wHOg3+hQWBHxv+Xv pRx3xrDN4D/n7LL/FIGboFhgU81BQ/BUSVZFSCj0/6aJ3wH/7sDfwIPQZXBGEOiR5/QJj6+HLWvv dX9YAl/ToShYEX23wCJMcswRyOFxS87AJfFecFxuIrfAdEJyj29Pz9uveu06P8TYIEZAINNA8mjT wHVnavDodNhfbR//VIVuv2/PcNhB8nIfcy90P/+Jj3Zfd21B8nj/iS97H3wv/30/fk9/X4BvgX/p V4NvxO//jr5Hkk1033PVEN/h0LbJEL3VgmJxkMvAyOHV8mbTMH9ZhJivxgfSwsxgzPHJ0W/77sAG gHO3wNCRrzDHs8mj/6yzsAPOQWJgQaCvQM6wnZ//1++O34UNx8GoIK+37xawd/hGVUxuNrfA9rCQ b4ft96nPih+LKSVIEMeznQOhWvt3k7fAKI0AY5CNMqu/sh/JpQNfX50AbmOzgI1v/6T/cHvfPYZ/ qm/2VrhftQ//27+6n5MmQADHklqURDj6Ef/I4NbQQDC2oqQvqqsZ6ejX8EdFTjOIz8Xfiu2zsP9a iMCnEeEo4NXBsIKw/8r//xl/uD+7f+t2V7PNP5F/0C/3vr+/w/oVIFSwlFJa0JqCx2qxavDvkFRS QcF/qqt5BnJtcOf2+hjw4LOwaX/fcSkwYnDKD9uvZNegEG76KNoIKcTQ6NH2scT/xg/vxx/IKdTW sIBzsL/kX8vf//oJzS/OP89P54/Ra+hfOU7v69yh0ExwnRB0lw/o3/eY7+s/7M85z189dpvwQkC2 SflWUHFfQbBDMKAQrgBib3djf2SPaKFwWhBxYWZAKr/7g4UWUyD7g+ou+EpfQPDeZwjDmxNnv2jB aQAfaM3xAfludW2zkJqByUHtv/3CqSH7g7p/vAsEz7V//yI/QsBxMcDgYkCnxcQ0Q00CRMSAUk9V UF9EJZagQbBhdThHgCkmn5si5z+5xsQBKUJvZotgrw4C3q+1KENwebPBc2IB/9TQoBBrFHFhQiDZ kRJjtAB/t+8Hnwip8m8OXyPBmyIu/1gU2mGUgJ+QLDGW4JZzSTC5lnBSQ95DGwsgkHwVD+8x8Rm/ GsyokFbeQ8Q0IFHgX05PUk1X4R0PHhi7BFRxMHRYwBrjDSJfV9H/4vAb1iSaEN8R7xL/FA8mrz8W Lxc/GE8ECjdBIz8+PnwgNCZQMyQqnpuRawBpP2ZR9FDYELoxBBrYECsr/yZf5YlAAKIx/nuckGVg avA+KjeUZmEeYzeTQQBbadZdKp+TCE5CgGWuoDeTX/0BQkA/wARxWHIxnIIx6jUzUHNCoHRF0MBi XND9POI0jODWn4fXaME9UmZRvTuYLTywCM8/L/uibabw/z1SMvD7kqBRPWEqj0MfD4AfWrJEEx8T cgBEdU1UX2hUT09UkEZPoMSQUj+0APhRa9BFP0MrR0VhYjJzRGZBQiAwSNFQT4RTSW5wT05fWOOv 608/HeYoO5V4t3BbYDFDWmbekTy6QDEhfDuGeL5fC2BKH0svTD9NTFlOP99Yj1BfUWcxkFITOFJ5 t3APU09UX1VvTSZSRVNT/lVgQEmxO6Sf0Dkwv5APgN9cvy1/AehDtigiZjww2GDfRGRhyBh/awck AV+V0KfwXmJ3oIZAn1AkQEPEUUKiSSUAVFlfg0BGSODMQlROACGgU0sG713f8UeBa2V5RGZqQmny V4/zb0+1JSEhL+8kSGn23jDvDk9nn2ivabJN4vCDMWo//2tPbF9taHa0bk98T3BvcX8/lmB2uHMv dD91T2mUUkn8R0hqL3u/eS9tWYPTe0//iU99b35/lmCD14BP+3Up0p9ln2LvNm8pMq3Ab3AfcO+2 SZKCD9A03y5IA6cAwGDvn6GmDJUIiE4ukoCLkPYxeb9AYWyCQJzQnGG2K2T+b5JxmG2IR5P+94ml /PeJv5t/lHem66X/pwmfSH1mBgQtLZ9VMS43LjnsLjWfVZ9VVFGAH3DYYP1hcGE8YffRp0G/cEgg SBDvKHDYYEAgprFhv3CREUgQ+4hw1iB5YUMeQDLB1fAfcNe/kF8gPABpwGBpOTA0sP+REcAQo1BA IKqwwRCIcDKxt6iQmJI+YEnYMNXwIPfAuR9wYmXD0Q+AHvBpyTDf9rCpIeERv9C0AHAowCnA/acx ZB7QlYHWAMCAoND34POdkadSaW3YYKqh4jC/YV+jUCjA4jCvwaaoLp9VfQZ9n6CzcAAAAB8AQgAB AAAAFAAAAEQAdQBkAGwAZQB5ACAARAB1AAAAHwBlAAEAAAAiAAAAZAB1AGQAbABAAGMAeQBwAHIA ZQBzAHMALgBjAG8AbQAAAAAAHwBkAAEAAAAKAAAAUwBNAFQAUAAAAAAAAgFBAAEAAABYAAAAAAAA AIErH6S+oxAZnW4A3QEPVAIAAACARAB1AGQAbABlAHkAIABEAHUAAABTAE0AVABQAAAAZAB1AGQA bABAAGMAeQBwAHIAZQBzAHMALgBjAG8AbQAAAB8AAl0BAAAAIgAAAGQAdQBkAGwAQABjAHkAcABy AGUAcwBzAC4AYwBvAG0AAAAAAB8A5V8BAAAAKgAAAHMAaQBwADoAZAB1AGQAbABAAGMAeQBwAHIA ZQBzAHMALgBjAG8AbQAAAAAAHwAaDAEAAAAUAAAARAB1AGQAbABlAHkAIABEAHUAAAAfAB8MAQAA ACIAAABkAHUAZABsAEAAYwB5AHAAcgBlAHMAcwAuAGMAbwBtAAAAAAAfAB4MAQAAAAoAAABTAE0A VABQAAAAAAACARkMAQAAAFgAAAAAAAAAgSsfpL6jEBmdbgDdAQ9UAgAAAIBEAHUAZABsAGUAeQAg AEQAdQAAAFMATQBUAFAAAABkAHUAZABsAEAAYwB5AHAAcgBlAHMAcwAuAGMAbwBtAAAAHwABXQEA AAAiAAAAZAB1AGQAbABAAGMAeQBwAHIAZQBzAHMALgBjAG8AbQAAAAAAHwD4PwEAAAAUAAAARAB1 AGQAbABlAHkAIABEAHUAAAAfACNAAQAAACIAAABkAHUAZABsAEAAYwB5AHAAcgBlAHMAcwAuAGMA bwBtAAAAAAAfACJAAQAAAAoAAABTAE0AVABQAAAAAAACAfk/AQAAAFgAAAAAAAAAgSsfpL6jEBmd bgDdAQ9UAgAAAIBEAHUAZABsAGUAeQAgAEQAdQAAAFMATQBUAFAAAABkAHUAZABsAEAAYwB5AHAA cgBlAHMAcwAuAGMAbwBtAAAAHwAJXQEAAAAiAAAAZAB1AGQAbABAAGMAeQBwAHIAZQBzAHMALgBj AG8AbQAAAAAAHwAxQAEAAAACAAAAAAAAAAsAQDoBAAAAHwAwQAEAAAACAAAAAAAAAB8AGgABAAAA EgAAAEkAUABNAC4ATgBvAHQAZQAAAAAAAwDxPwQIAAALAEA6AQAAAAMA/T+oAwAAAgELMAEAAAAQ AAAAADqJrDCzPEWmqEZCzbWjrwMAFwABAAAAQAA5AIA69dN3l88BQAAIMMINRNR3l88BCwApAAAA AAALACMAAAAAAB8AAICGAwIAAAAAAMAAAAAAAABGAQAAAB4AAABhAGMAYwBlAHAAdABsAGEAbgBn AHUAYQBnAGUAAAAAAAEAAAAaAAAAegBoAC0AQwBOACwAIABlAG4ALQBVAFMAAAAAAAsAAIAIIAYA AAAAAMAAAAAAAABGAAAAAAaFAAAAAAAAHwA3AAEAAACeAAAAWwBQAEEAVABDAEgAIAB2ADMAIAA2 AC8AMQA0AF0AIABpAG4AcAB1AHQAOgAgAGMAeQBhAHAAYQA6ACAAYQBkAGQAIABnAGUAbgAzACAA dAByAGEAYwBrAHAAYQBkACAAZABlAHYAaQBjAGUAIABiAGEAcwBpAGMAIABmAHUAbgBjAHQAaQBv AG4AcwAgAHMAdQBwAHAAbwByAHQAAAAAAB8APQABAAAAAgAAAAAAAAADADYAAAAAAAIBcQABAAAA FgAAAAHPl3X0Zoxoi/sjhkmRr9TSZQ9qF3MAAB8AcAABAAAAngAAAFsAUABBAFQAQwBIACAAdgAz ACAANgAvADEANABdACAAaQBuAHAAdQB0ADoAIABjAHkAYQBwAGEAOgAgAGEAZABkACAAZwBlAG4A MwAgAHQAcgBhAGMAawBwAGEAZAAgAGQAZQB2AGkAYwBlACAAYgBhAHMAaQBjACAAZgB1AG4AYwB0 AGkAbwBuAHMAIABzAHUAcABwAG8AcgB0AAAAAAAfADUQAQAAAIQAAAA8ADcANwBCAEMANwAyADUA QwA5ADAANgAyADcANgA0AEYAOAA3ADQARAA3ADkARgA1ADEARQAxAEYAMQBBADgARgA0AEMAOQAw AEQARAA5AEUAQABTADAANAAtAE0AQgBYADAAMQAtADAANAAuAHMAMAA0AC4AbABvAGMAYQBsAD4A AAADAN4/6f0AAAsAAIAIIAYAAAAAAMAAAAAAAABGAAAAAAOFAAAAAAAAAwAAgAggBgAAAAAAwAAA AAAAAEYAAAAAAYUAAAAAAAADAACAAyAGAAAAAADAAAAAAAAARgAAAAABgQAAAAAAAAMAgBD///// BQAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAAoEAAAAAAAAAAAAACwAAgAMgBgAAAAAAwAAAAAAAAEYA AAAAHIEAAAAAAABAAAcw1EiZ0neXzwELAAIAAQAAAAMAJgAAAAAAAgEQMAEAAABGAAAAAAAAALEf oTkwIFFGnbSlcN7Qn9QHAHe8clyQYnZPh0159R4fGo8AAACZPBsAALqnPu7L1/dAo3bvNfxhWYkA GIP8w5kAAAAAHwD6PwEAAAAUAAAARAB1AGQAbABlAHkAIABEAHUAAAADAAlZAQAAAAMAAIAIIAYA AAAAAMAAAAAAAABGAAAAABCFAAAAAAAAHwAAgB+k6zOoei5Cvnt54amOVLMBAAAAOAAAAEMAbwBu AHYAZQByAHMAYQB0AGkAbwBuAEkAbgBkAGUAeABUAHIAYQBjAGsAaQBuAGcARQB4AAAAAQAAALoA AABJAEkAPQAwADEAQwBGADkANwA3ADUARgA0ADYANgA4AEMANgA4ADgAQgBGAEIAMgAzADgANgA0 ADkAOQAxAEEARgBEADQARAAyADYANQAwAEYANgBBADEANwA3ADMAOwBWAGUAcgBzAGkAbwBuAD0A VgBlAHIAcwBpAG8AbgAgADEANAAuADMAIAAoAEIAdQBpAGwAZAAgADEANwA0AC4AMAApACwAIABT AHQAYQBnAGUAPQBIADQAAAAAAAMAAIADIAYAAAAAAMAAAAAAAABGAAAAABOBAAABAAAAAwAAgAMg BgAAAAAAwAAAAAAAAEYAAAAAI4EAAP///38DAACAAyAGAAAAAADAAAAAAAAARgAAAAAQgQAAAAAA AAMAAIADIAYAAAAAAMAAAAAAAABGAAAAABGBAAAAAAAACwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAA JIEAAAAAAAALAACAAyAGAAAAAADAAAAAAAAARgAAAAAsgQAAAAAAAAMAAIADIAYAAAAAAMAAAAAA AABGAAAAACmBAAAAAAAAAwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAKoEAAAAAAAAfAACAAyAGAAAA AADAAAAAAAAARgAAAAAngQAAAQAAAAIAAAAAAAAAAwAAgAMgBgAAAAAAwAAAAAAAAEYAAAAAEoEA AAEAAAAfAACAAyAGAAAAAADAAAAAAAAARgAAAAAhgQAAAQAAAAIAAAAAAAAACwAAgAMgBgAAAAAA wAAAAAAAAEYAAAAAA4EAAAAAAAALAACAAyAGAAAAAADAAAAAAAAARgAAAAAmgQAAAAAAAAsAAIAI IAYAAAAAAMAAAAAAAABGAAAAAA6FAAAAAAAAAwAAgAggBgAAAAAAwAAAAAAAAEYAAAAAGIUAAAAA AAALAACACCAGAAAAAADAAAAAAAAARgAAAACChQAAAAAAAAMADTT9PwAAHwAAgIYDAgAAAAAAwAAA AAAAAEYBAAAAIAAAAHgALQBtAHMALQBoAGEAcwAtAGEAdAB0AGEAYwBoAAAAAQAAAAIAAAAAAAAA HwAAgIYDAgAAAAAAwAAAAAAAAEYBAAAAIgAAAHgALQBvAHIAaQBnAGkAbgBhAHQAaQBuAGcALQBp AHAAAAAAAAEAAAAeAAAAWwAxADAALgAzADAALgAxADIALgAxADQANQBdAAAAAAAmLQ== --_000_77BC725C9062764F874D79F51E1F1A8F4C90DD9ES04MBX0104s04lo_-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/