From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 01/24] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Wed, 8 Feb 2017 16:15:53 +0800 Message-ID: <1486541776-8406-2-git-send-email-yi.y.sun@linux.intel.com> References: <1486541776-8406-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cbNT5-0005hv-1o for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:19:11 +0000 In-Reply-To: <1486541776-8406-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBjcmVhdGVzIENBVCBhbmQgQ0RQIGZlYXR1cmUgZG9jdW1lbnQgaW4gZG9jL2Zl YXR1cmVzLy4gSXQgZGVzY3JpYmVzCmtleSBwb2ludHMgdG8gaW1wbGVtZW50IEwzIENBVC9DRFAg YW5kIEwyIENBVCB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlscyBpbgpJbnRlbCBTRE0gIklO VEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9DQVRJ T04gRkVBVFVSRVMiLgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRl bC5jb20+Ci0tLQp2NjoKICAgIC0gd3JpdGUgYSBuZXcgZmVhdHVyZSBkb2N1bWVudCB0byBjb3Zl ciBMMyBDQVQvQ0RQIGFuZCBMMiBDQVQuCiAgICAtIGFkanVzdCAnVGVybWlub2xvZ3knIHBvc2l0 aW9uIGluIGRvY3VtZW50LgogICAgLSBmaXggd29yZGluZ3MuCiAgICAtIGFkZCBTRE0gY2hhcHRl ciB0aXRsZSBpbiBjb21taXQgbWVzc2FnZS4KICAgIC0gYWRkIG1vcmUgZXhwbGFuYXRpb25zLgot LS0KIGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIHwgNDUzICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ1MyBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jcy9mZWF0dXJlcy9pbnRlbF9wc3JfY2F0X2NkcC5w YW5kb2MKCmRpZmYgLS1naXQgYS9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRv YyBiL2RvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViY2UyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Zl YXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYwpAQCAtMCwwICsxLDQ1MyBAQAorJSBJbnRl bCBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgYW5kIENvZGUgYW5kIERhdGEgUHJpb3JpdGl6 YXRpb24gRmVhdHVyZXMKKyUgUmV2aXNpb24gMS4wCisKK1xjbGVhcnBhZ2UKKworIyBCYXNpY3MK KworLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2aWV3KioKKworQXJj aGl0ZWN0dXJlKHMpOiBJbnRlbCB4ODYKKworICAgQ29tcG9uZW50KHMpOiBIeXBlcnZpc29yLCB0 b29sc3RhY2sKKworICAgICAgIEhhcmR3YXJlOiBMMyBDQVQ6IEhhc3dlbGwgYW5kIGJleW9uZCBD UFVzCisgICAgICAgICAgICAgICAgIENEUCAgIDogQnJvYWR3ZWxsIGFuZCBiZXlvbmQgQ1BVcwor ICAgICAgICAgICAgICAgICBMMiBDQVQ6IEF0b20gY29kZW5hbWUgR29sZG1vbnQgYW5kIGJleW9u ZCBDUFVzCistLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUZXJtaW5vbG9neQorCisqIENBVCAgICAgICAgIENh Y2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neQorKiBDQk0gICAgICAgICBDYXBhY2l0eSBCaXRNYXNr cworKiBDRFAgICAgICAgICBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9uCisqIENPUy9DTE9T ICAgIENsYXNzIG9mIFNlcnZpY2UKKyogTVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZpYyBSZWdp c3RlcnMKKyogUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNlCisKKyMg T3ZlcnZpZXcKKworSW50ZWwgcHJvdmlkZXMgYSBzZXQgb2YgYWxsb2NhdGlvbiBjYXBhYmlsaXRp ZXMgaW5jbHVkaW5nIENhY2hlIEFsbG9jYXRhdGlvbgorVGVjaG5vbG9neSAoQ0FUKSBhbmQgQ29k ZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKS4KKworQ0FUIGFsbG93cyBhbiBPUyBvciBo eXBlcnZpc29yIHRvIGNvbnRyb2wgYWxsb2NhdGlvbiBvZiBhIENQVSdzIHNoYXJlZCBjYWNoZQor YmFzZWQgb24gYXBwbGljYXRpb24gcHJpb3JpdHkgb3IgQ2xhc3Mgb2YgU2VydmljZSAoQ09TKS4g RWFjaCBDT1MgaXMgY29uZmlndXJlZAordXNpbmcgY2FwYWNpdHkgYml0bWFza3MgKENCTXMpIHdo aWNoIHJlcHJlc2VudCBjYWNoZSBjYXBhY2l0eSBhbmQgaW5kaWNhdGUgdGhlCitkZWdyZWUgb2Yg b3ZlcmxhcCBhbmQgaXNvbGF0aW9uIGJldHdlZW4gY2xhc3Nlcy4gT25jZSBDQVQgaXMgY29uZmln dXJlZCwgdGhlIHByLQorb2Nlc3NvciBhbGxvd3MgYWNjZXNzIHRvIHBvcnRpb25zIG9mIGNhY2hl IGFjY29yZGluZyB0byB0aGUgZXN0YWJsaXNoZWQgQ09TLgorSW50ZWwgWGVvbiBwcm9jZXNzb3Ig RTUgdjQgZmFtaWx5IChhbmQgc29tZSBvdGhlcnMpIGludHJvZHVjZSBjYXBhYmlsaXRpZXMgdG8K K2NvbmZpZ3VyZSBhbmQgbWFrZSB1c2Ugb2YgdGhlIENBVCBtZWNoYW5pc20gb24gdGhlIEwzIGNh Y2hlLiBJbnRlbCBHb2xkbW9udCBwcm8tCitjZXNzb3IgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY29u dHJvbCBvdmVyIHRoZSBMMiBjYWNoZS4KKworQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAo Q0RQKSBUZWNobm9sb2d5IGlzIGFuIGV4dGVuc2lvbiBvZiBDQVQuIENEUAorZW5hYmxlcyBpc29s b2F0aW9uIGFuZCBzZXBhcmF0ZSBwcmlvcml0aXphdGlvbiBvZiBjb2RlIGFuZCBkYXRhIGZldGNo ZXMgdG8KK3RoZSBMMyBjYWhjZSBpbiBhIFNXIGNvbmZpZ3VyYWJsZSBtYW5uZXIsIHdoaWNoIGNh biBlbmFibGUgd29ya2xvYWQgcHJpb3JpdC0KK2l6YXRpb24gYW5kIHR1bmluZyBvZiBjYWNoZSBj YXBhY2l0eSB0byB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSB3b3JrbG9hZC4KK0NEUCBleHRl bmRzIENBVCBieSBwcm92aWRpbmcgc2VwYXJhdGUgY29kZSBhbmQgZGF0YSBtYXNrcyBwZXIgQ2xh c3Mgb2YgU2VydmljZQorKENPUykuIFdoZW4gU1cgY29uZmlndXJlcyB0byBlbmFibGUgQ0RQLCBM MyBDQVQgaXMgZGlzYWJsZWQuCisKKyMgVXNlciBkZXRhaWxzCisKKyogRmVhdHVyZSBFbmFibGlu ZzoKKworICBBZGQgInBzcj1jYXQiIHRvIGJvb3QgbGluZSBwYXJhbWV0ZXIgdG8gZW5hYmxlIGFs bCBzdXBwb3J0ZWQgbGV2ZWwgQ0FUIGZlYXR1LQorICByZXMuIEFkZCAicHNyPWNkcCIgdG8gZW5h YmxlIEwzIENEUCBidXQgZGlzYWJsZXMgTDMgQ0FUIGJ5IFNXLgorCisqIHhsIGludGVyZmFjZXM6 CisKKyAgMS4gYHBzci1jYXQtc2hvdyBbT1BUSU9OU10gZG9tYWluLWlkYDoKKworICAgICBTaG93 IEwyIENBVCBvciBMMyBDQVQvQ0RQIENCTSBvZiB0aGUgZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVu IGRvbWFpbi1pZC4KKworICAgICBPcHRpb24gYC1sYDoKKyAgICAgYC1sMmA6IFNob3cgY2JtIGZv ciBMMiBjYWNoZS4KKyAgICAgYC1sM2A6IFNob3cgY2JtIGZvciBMMyBjYWNoZS4KKworICAgICBJ ZiBgLWxYYCBpcyBzcGVjaWZpZWQgYW5kIExYIGlzIG5vdCBzdXBwb3J0ZWQsIHByaW50IGVycm9y LgorICAgICBJZiBubyBgLWxgIGlzIHNwZWNpZmllZCwgbGV2ZWwgMyBpcyB0aGUgZGVmYXVsdCBv cHRpb24uCisKKyAgMi4gYHBzci1jYXQtc2V0IFtPUFRJT05TXSBkb21haW4taWQgY2JtYDoKKwor ICAgICBTZXQgTDIgQ0FUIG9yIEwzIENBVC9DRFAgQ0JNIHRvIHRoZSBkb21haW4gZGVzaWduYXRl ZCBieSBYZW4gZG9tYWluLWlkLgorCisgICAgIE9wdGlvbiBgLXNgOiBTcGVjaWZ5IHRoZSBzb2Nr ZXQgdG8gcHJvY2Vzcywgb3RoZXJ3aXNlIGFsbCBzb2NrZXRzIGFyZQorICAgICBwcm9jZXNzZWQu CisKKyAgICAgT3B0aW9uIGAtbGA6CisgICAgIGAtbDJgOiBTcGVjaWZ5IGNibSBmb3IgTDIgY2Fj aGUuCisgICAgIGAtbDNgOiBTcGVjaWZ5IGNibSBmb3IgTDMgY2FjaGUuCisKKyAgICAgSWYgYC1s WGAgaXMgc3BlY2lmaWVkIGFuZCBMWCBpcyBub3Qgc3VwcG9ydGVkLCBwcmludCBlcnJvci4KKyAg ICAgSWYgbm8gYC1sYCBpcyBzcGVjaWZpZWQsIGxldmVsIDMgaXMgdGhlIGRlZmF1bHQgb3B0aW9u LgorCisgICAgIE9wdGlvbiBgLWNgIG9yIGAtZGA6CisgICAgIGAtY2A6IFNldCBMMyBDRFAgY29k ZSBjYm0uCisgICAgIGAtZGA6IFNldCBMMyBDRFAgZGF0YSBjYm0uCisKKyAgMy4gYHBzci1od2lu Zm8gW09QVElPTlNdYDoKKworICAgICBTaG93IENNVCAmIEwyIENBVCAmIEwzIENBVC9DRFAgSFcg aW5mb3JtYXRpb24gb24gZXZlcnkgc29ja2V0LgorCisgICAgIE9wdGlvbiBgLW0sIC0tY210YDog U2hvdyBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kgKENNVCkgaGFyZHdhcmUgaW5mby4KKwor ICAgICBPcHRpb24gYC1hLCAtLWNhdGA6IFNob3cgQ0FUL0NEUCBoYXJkd2FyZSBpbmZvLgorCisj IFRlY2huaWNhbCBkZXRhaWxzCisKK0wzIENBVC9DRFAgYW5kIEwyIENBVCBhcmUgYWxsIG1lbWJl cnMgb2YgSW50ZWwgUFNSIGZlYXR1cmVzLCB0aGV5IHNoYXJlIHRoZSBiYXNlCitQU1IgaW5mcmFz dHJ1Y3R1cmUgaW4gWGVuLgorCisjIyBIYXJkd2FyZSBwZXJzcGVjdGl2ZQorCisgIENBVC9DRFAg ZGVmaW5lcyBhIHJhbmdlIG9mIE1TUnMgdG8gYXNzaWduIGRpZmZlcmVudCBjYWNoZSBhY2Nlc3Mg cGF0dGVybnMKKyAgd2hpY2ggYXJlIGtub3duIGFzIENCTXMsIGVhY2ggQ0JNIGlzIGFzc29jaWF0 ZWQgd2l0aCBhIENPUy4KKworICBgYGAKKyAgRS5nLiBMMiBDQVQ6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgICAgIElBMzJfUFFSX0FTU09DICAgICAgIHwgTVNSIChwZXIgc29ja2V0KSAgICAgICAgICAg fCAgICBBZGRyZXNzICAgICB8CisgICArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgIHxDT1N8ICAgICAg IHwgICAgIHwgSUEzMl9MMl9RT1NfTUFTS18wICAgICAgICAgfCAgICAgMHhEMTAgICAgICB8Cisg ICArLS0tLSstLS0rLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAg4pSULS0tLS0tLS0tLS0tLT4gfCAuLi4gICAgICAg ICAgICAgICAgICAgICAgICB8ICAuLi4gICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBJQTMyX0wyX1FPU19NQVNLX24gICAgICAgICB8IDB4 RDEwK24gKG48NjQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgYGBgCisKKyAgTDMgQ0FUL0NEUCB1 c2VzIGEgcmFuZ2Ugb2YgTVNScyBmcm9tIDB4QzkwIH4gMHhDOTArbiAobjwxMjgpLgorCisgIEwy IENBVCB1c2VzIGEgcmFuZ2Ugb2YgTVNScyBmcm9tIDB4RDEwIH4gMHhEMTArbiAobjw2NCksIGZv bGxvd2luZyB0aGUgTDMKKyAgQ0FUL0NEUCBNU1JzLCBzZXR0aW5nIGRpZmZlcmVudCBMMiBjYWNo ZSBhY2Nlc3NpbmcgcGF0dGVybnMgZnJvbSBMMyBjYWNoZSBpcworICBzdXBwb3J0ZWQuCisKKyAg RXZlcnkgTVNSIHN0b3JlcyBhIENCTSB2YWx1ZS4gQSBjYXBhY2l0eSBiaXRtYXNrIChDQk0pIHBy b3ZpZGVzIGEgaGludCB0byB0aGUKKyAgaGFyZHdhcmUgaW5kaWNhdGluZyB0aGUgY2FjaGUgc3Bh Y2UgYW4gYXBwbGljYXRpb24gc2hvdWxkIGJlIGxpbWl0ZWQgdG8gYXMKKyAgd2VsbCBhcyBwcm92 aWRpbmcgYW4gaW5kaWNhdGlvbiBvZiBvdmVybGFwIGFuZCBpc29sYXRpb24gaW4gdGhlIENBVC1j YXBhYmxlCisgIGNhY2hlIGZyb20gb3RoZXIgYXBwbGljYXRpb25zIGNvbnRlbmRpbmcgZm9yIHRo ZSBjYWNoZS4KKworICBTYW1wbGUgY2FjaGUgY2FwYWNpdHkgYml0bWFza3MgZm9yIGEgYml0bGVu Z3RoIG9mIDggYXJlIHNob3duIGJlbG93LiBQbGVhc2UKKyAgbm90ZSB0aGF0IGFsbCAoYW5kIG9u bHkpIGNvbnRpZ3VvdXMgJzEnIGNvbWJpbmF0aW9ucyBhcmUgYWxsb3dlZCAoZS5nLiBGRkZGSCwK KyAgMEZGMEgsIDAwM0NILCBldGMuKS4KKworICBgYGAKKyAgICAgICArLS0tLSstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBN MyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwg QSAgfCBEZWZhdWx0IEJpdG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKworICBDT1MxIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsK KyAgQ09TMiB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfAorICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisKKyAgICAgICArLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAgICAgIHwgTTcgfCBNNiB8 IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBPdmVybGFwcGVkIEJpdG1hc2sKKyAgICAgICArLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MxIHwgICAgfCAgICB8ICAgIHwgICAg fCBBICB8IEEgIHwgQSAgfCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8ICAgIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8IEEg IHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r CisKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICAg ICAgIHwgTTcgfCBNNiB8IE01IHwgTTQgfCBNMyB8IE0yIHwgTTEgfCBNMCB8CisgICAgICAgKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMCB8IEEgIHwgQSAg fCBBICB8IEEgIHwgICAgfCAgICB8ICAgIHwgICAgfCBJc29sYXRlZCBCaXRtYXNrCisgICAgICAg Ky0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMSB8ICAgIHwg ICAgfCAgICB8ICAgIHwgQSAgfCBBICB8ICAgIHwgICAgfAorICAgICAgICstLS0tKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzIgfCAgICB8ICAgIHwgICAgfCAgICB8 ICAgIHwgICAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKworICBgYGAKKworICBXZSBjYW4gZ2V0IHRoZSBDQk0gbGVuZ3RoIHRocm91 Z2ggQ1BVSUQuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIENCTSBpcyBjYWxjdWwtCisgIGF0ZWQgYnkg YCgxdWxsIDw8IGNibV9sZW4pIC0gMWAuIFRoYXQgaXMgYSBmdWxseSBvcGVuIGJpdG1hc2ssIGFs bCBvbmVzIGJpdG0tCisgIGFzay4gVGhlIENPU1swXSBhbHdheXMgc3RvcmVzIHRoZSBkZWZhdWx0 IHZhbHVlIHdpdGhvdXQgY2hhbmdlLgorCisgIFRoZXJlIGlzIGEgYElBMzJfUFFSX0FTU09DYCBy ZWdpc3RlciB3aGljaCBzdG9yZXMgdGhlIENPUyBJRCBvZiB0aGUgVkNQVS4gSFcKKyAgZW5mb3Jj ZXMgY2FjaGUgYWxsb2NhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ0JNLgor CisjIyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gTDMgQ0FUL0NEUCBhbmQgTDIgQ0FUCisKKyAg SFcgbWF5IHN1cHBvcnQgYWxsIGZlYXR1cmVzLiBCeSBkZWZhdWx0LCBDRFAgaXMgZGlzYWJsZWQg b24gdGhlIHByb2Nlc3Nvci4KKyAgSWYgdGhlIEwzIENBVCBNU1JzIGFyZSB1c2VkIHdpdGhvdXQg ZW5hYmxpbmcgQ0RQLCB0aGUgcHJvY2Vzc29yIG9wZXJhdGVzIGluCisgIGEgdHJhZGl0aW9uYWwg Q0FULW9ubHkgbW9kZS4gV2hlbiBDRFAgaXMgZW5hYmxlZCwKKyAgKiB0aGUgQ0FUIG1hc2sgTVNS cyBhcmUgcmUtbWFwcGVkIGludG8gaW50ZXJsZWF2ZWQgcGFpcnMgb2YgbWFzayBNU1JzIGZvcgor ICAgIGRhdGEgb3IgY29kZSBmZXRjaGVzLgorICAqIHRoZSByYW5nZSBvZiBDT1MgZm9yIENBVCBp cyByZS1pbmRleGVkLCB3aXRoIHRoZSBsb3dlci1oYWxmIG9mIHRoZSBDT1MKKyAgICByYW5nZSBh dmFpbGFibGUgZm9yIENEUC4KKworICBMMiBDQVQgaXMgaW5kZXBlbmRlbnQgb2YgTDMgQ0FUL0NE UCwgd2hpY2ggbWVhbnMgTDIgQ0FUIGNhbiBiZSBlbmFibGVkIHdoaWxlCisgIEwzIENBVC9DRFAg aXMgZGlzYWJsZWQsIG9yIEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBhcmUgYm90aCBlbmFibGVkLgor CisgIEFzIGEgcmVxdWlyZW1lbnQsIHRoZSBiaXRzIG9mIENCTSBvZiBDQVQvQ0RQIG11c3QgYmUg Y29udGludW91cy4KKworICBOLkIuIEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBzaGFyZSB0aGUgc2Ft ZSBDT1MgZmllbGQgaW4gdGhlIHNhbWUgYXNzb2NpYXRlCisgIHJlZ2lzdGVyIGBJQTMyX1BRUl9B U1NPQ2AsIHdoaWNoIG1lYW5zIG9uZSBDT1MgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcGFpciBvZgor ICBMMiBDQVQgQ0JNIGFuZCBMMyBDQVQvQ0RQIENCTS4KKworICBCZXNpZGVzLCB0aGUgbWF4IENP UyBvZiBMMiBDQVQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIEwzIENBVC9DRFAgKG9yIG90aGVyCisg IFBTUiBmZWF0dXJlcyBpbiBmdXR1cmUpLiBJbiBzb21lIGNhc2VzLCBhIFZNIGlzIHBlcm1pdHRl ZCB0byBoYXZlIGEgQ09TCisgIHRoYXQgaXMgYmV5b25kIG9uZSAob3IgbW9yZSkgb2YgUFNSIGZl YXR1cmVzIGJ1dCB3aXRoaW4gdGhlIG90aGVycy4gRm9yCisgIGluc3RhbmNlLCBsZXQncyBhc3N1 bWUgdGhlIG1heCBDT1Mgb2YgTDIgQ0FUIGlzIDggYnV0IHRoZSBtYXggQ09TIG9mIEwzCisgIENB VCBpcyAxNiwgd2hlbiBhIFZNIGlzIGFzc2lnbmVkIDkgYXMgQ09TLCB0aGUgTDMgQ0FUIENCTSBh c3NvY2lhdGVkIHRvCisgIENPUyA5IHdvdWxkIGJlIGVuZm9yY2VkLCBidXQgZm9yIEwyIENBVCwg dGhlIEhXIHdvcmtzIGFzIGRlZmF1bHQgdmFsdWUgaXMKKyAgc2V0IHNpbmNlIENPUyA5IGlzIGJl eW9uZCB0aGUgbWF4IENPUyAoOCkgb2YgTDIgQ0FULgorCisjIyBEZXNpZ24gT3ZlcnZpZXcKKwor KiBDb3JlIENPUy9DQk0gYXNzb2NpYXRpb24KKworICBXaGVuIGVuZm9yY2luZyBDQVQvQ0RQLCBh bGwgY29yZXMgb2YgZG9tYWlucyBoYXZlIHRoZSBzYW1lIGRlZmF1bHQgQ09TIChDT1MwKQorICB3 aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bGx5IG9wZW4gQ0JNIChhbGwgb25lcyBiaXRt YXNrKSB0byBhY2Nlc3MgYWxsCisgIGNhY2hlLiBUaGUgZGVmYXVsdCBDT1MgaXMgdXNlZCBvbmx5 IGluIGh5cGVydmlzb3IgYW5kIGlzIHRyYW5zcGFyZW50IHRvIHRvb2wKKyAgc3RhY2sgYW5kIHVz ZXIuCisKKyAgU3lzdGVtIGFkbWluaXN0cmF0b3IgY2FuIGNoYW5nZSBQU1IgYWxsb2NhdGlvbiBw b2xpY3kgYXQgcnVudGltZSBieSB0b29sIHN0YWNrLgorICBTaW5jZSBMMiBDQVQgc2hhcmVzIENP UyB3aXRoIEwzIENBVC9DRFAsIGEgQ09TIGNvcnJlc3BvbmRzIHRvIGEgMi10dXBsZSwgbGlrZQor ICBbTDIgQ0JNLCBMMyBDQk1dIHdpdGggb25seS1DQVQgZW5hYmxlZCwgd2hlbiBDRFAgaXMgZW5h YmxlZCwgb25lIENPUyBjb3JyZXNwby0KKyAgbmRzIHRvIGEgMy10dXBsZSwgbGlrZSBbTDIgQ0JN LCBMMyBDb2RlX0NCTSwgTDMgRGF0YV9DQk1dLiBJZiBuZWl0aGVyIEwzIENBVAorICBub3IgTDMg Q0RQIGlzIGVuYWJsZWQsIHRoaW5ncyB3b3VsZCBiZSBlYXNpZXIsIG9uZSBDT1MgY29ycmVzcG9u ZHMgdG8gb25lIEwyCisgIENCTS4KKworKiBWQ1BVIHNjaGVkdWxlCisKKyAgV2hlbiBjb250ZXh0 IHN3aXRjaCBoYXBwZW5zLCB0aGUgQ09TIG9mIFZDUFUgaXMgd3JpdHRlbiB0byBwZXItdGhyZWFk IE1TUgorICBgSUEzMl9QUVJfQVNTT0NgLCBhbmQgdGhlbiBoYXJkd2FyZSBlbmZvcmNlcyBjYWNo ZSBhbGxvY2F0aW9uIGFjY29yZGluZyB0bworICB0aGUgY29ycmVzcG9uZGluZyBDQk0uCisKKyog TXVsdGktc29ja2V0cworCisgIERpZmZlcmVudCBzb2NrZXRzIG1heSBoYXZlIGRpZmZlcmVudCBD QVQvQ0RQIGNhcGFiaWxpdHkgKGUuZy4gbWF4IENPUykgYWx0aC0KKyAgb3VnaCBpdCBpcyBjb25z aXN0ZW50IG9uIHRoZSBzYW1lIHNvY2tldC4gU28gdGhlIGNhcGFiaWxpdHkgb2YgcGVyLXNvY2tl dCBDQVQvCisgIENEUCBpcyBzcGVjaWZpZWQuCisKKyAgJ3Bzci1jYXQtc2V0JyBjYW4gc2V0IENC TSBmb3Igb25lIGRvbWFpbiBwZXIgc29ja2V0LiBPbiBlYWNoIHNvY2tldCwgd2UgbWFpbi0KKyAg dGFpbiBhIENPUyBhcnJheSBmb3IgYWxsIGRvbWFpbnMuIE9uZSBkb21haW4gdXNlcyBvbmUgQ09T IGF0IG9uZSB0aW1lLiBPbmUgQ09TCisgIHN0b3JlcyB0aGUgQ0JNIG9mIHRoZSBkb21haW4gdG8g d29yay4gU28sIHdoZW4gYSBWQ1BVIG9mIHRoZSBkb21haW4gaXMgbWlncmF0LQorICBlZCBmcm9t IHNvY2tldCAxIHRvIHNvY2tldCAyLCBpdCBmb2xsb3dzIGNvbmZpZ3VyYXRpb24gb24gc29ja2V0 IDIuCisKKyAgRS5nLiB1c2VyIHNldHMgZG9tYWluIDEgQ0JNIG9uIHNvY2tldCAxIHRvIDB4N2Yg d2hpY2ggdXNlcyBDT1MgOSBidXQgc2V0cyBkby0KKyAgbWFpbiAxIENCTSBvbiBzb2NrZXQgMiB0 byAweDNmIHdoaWNoIHVzZXMgQ09TIDcuIFdoZW4gVkNQVSBvZiB0aGlzIGRvbWFpbgorICBpcyBt aWdyYXRlZCBmcm9tIHNvY2tldCAxIHRvIDIsIHRoZSBDT1MgSUQgdXNlZCBpcyA3LCB0aGF0IG1l YW5zIDB4M2YgaXMgdGhlCisgIENCTSB0byB3b3JrIGZvciB0aGlzIGRvbWFpbiAxIG5vdy4KKwor IyMgSW1wbGVtZW50YXRpb24gRGVzY3JpcHRpb24KKworKiBIeXBlcnZpc29yIGludGVyZmFjZXM6 CisKKyAgMS4gQm9vdCBsaW5lIHBhcmFtZXRlciAicHNyPWNhdCIgZW5hYmxlcyBMMiBDQVQgYW5k IEwzIENBVCBpZiBoYXJkd2FyZSBzdXBwby0KKyAgICAgcnRlZC4gInBzcj1jZHAiIGVuYWJsZXMg Q0RQIGlmIGhhcmR3YXJlIHN1cHBvcnRlZC4KKworICAyLiBTWVNDVEw6CisgICAgICAgICAgLSBY RU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm86IEdldCBMMyBDQVQvQ0RQIGluZm9ybWF0aW9u LgorICAgICAgICAgIC0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvOiBHZXQgTDIgQ0FU IGluZm9ybWF0aW9uLgorCisgIDMuIERPTUNUTDoKKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNS X0NBVF9PUF9HRVRfTDNfQ0JNOiBHZXQgTDMgQ0JNIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICAt IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfQ0JNOiBTZXQgTDMgQ0JNIGZvciBhIGRvbWFp bi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ09ERTogR2V0IENE UCBDb2RlIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wzX0NPREU6IFNldCBDRFAgQ29kZSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAg IC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MM19EQVRBOiBHZXQgQ0RQIERhdGEgQ0JNIGZv ciBhIGRvbWFpbi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFU QTogU2V0IENEUCBEYXRhIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RM X1BTUl9DQVRfT1BfR0VUX0wyX0NCTTogR2V0IEwyIENCTSBmb3IgYSBkb21haW4uCisgICAgICAg ICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTTogU2V0IEwyIENCTSBmb3IgYSBk b21haW4uCisKKyogeGwgaW50ZXJmYWNlczoKKworICAxLiBwc3ItY2F0LXNob3cgLWxYIGRvbWFp bi1pZAorICAgICAgICAgIFNob3cgTFggY2JtIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICA9PiBY RU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gICAgLworICAgICAgICAgICAgIFhFTl9TWVND VExfUFNSX0NBVF9nZXRfbDJfaW5mbyAgICAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1Jf Q0FUX09QX0dFVF9MM19DQk0gIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1Bf R0VUX0wzX0NPREUgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNf REFUQSAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk0KKwor ICAyLiBwc3ItY2F0LXNldCAtbFggZG9tYWluLWlkIGNibQorICAgICAgICAgIFNldCBMWCBjYm0g Zm9yIGEgZG9tYWluLgorICAgICAgICAgID0+IFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDNf Q0JNICAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFIC8K KyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0RBVEEgLworICAgICAg ICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNCisKKyAgMy4gcHNyLWh3aW5m bworICAgICAgICAgIFNob3cgUFNSIEhXIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgTDMgQ0FUL0NE UC9MMiBDQVQKKyAgICAgICAgICA9PiBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wzX2luZm8gLwor ICAgICAgICAgICAgIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbworCisqIEtleSBkYXRh IHN0cnVjdHVyZToKKworICAgMS4gRmVhdHVyZSBIVyBpbmZvCisKKyAgICAgIGBgYAorICAgICAg c3RydWN0IHBzcl9jYXRfaHdfaW5mbyB7CisgICAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47 CisgICAgICAgICAgdW5zaWduZWQgaW50IGNvc19tYXg7CisgICAgICB9OworICAgICAgYGBgCisK KyAgICAgIC0gTWVtYmVyIGBjYm1fbGVuYAorCisgICAgICAgIGBjYm1fbGVuYCBpcyBvbmUgb2Yg dGhlIGhhcmR3YXJlIGluZm8gb2YgQ0FULiBJdCBtZWFucyB0aGUgbWF4IG51bWJlcgorICAgICAg ICBvZiBiaXRzIHRvIHNldC4KKworICAgICAgLSBNZW1iZXIgYGNvc19tYXhgCisKKyAgICAgICAg YGNvc19tYXhgIGlzIG9uZSBvZiB0aGUgaGFyZHdhcmUgaW5mbyBvZiBDQVQuIEl0IG1lYW5zIHRo ZSBtYXggbnVtYmVyCisgICAgICAgIG9mIENPUyByZWdpc3RlcnMuCisKKyAgIDIuIEZlYXR1cmUg bGlzdCBub2RlCisKKyAgICAgIGBgYAorICAgICAgc3RydWN0IGZlYXRfbm9kZSB7CisgICAgICAg ICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXR1cmU7CisgICAgICAgICAgc3RydWN0IGZlYXRfb3Bz IG9wczsKKyAgICAgICAgICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZvIGluZm87CisgICAgICAgICAg dWludDY0X3QgY29zX3JlZ192YWxbTUFYX0NPU19SRUdfTlVNXTsKKyAgICAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkIGxpc3Q7CisgICAgICB9OworICAgICAgYGBgCisKKyAgICAgIFdoZW4gYSBQU1Ig ZW5mb3JjZW1lbnQgZmVhdHVyZSBpcyBlbmFibGVkLCBpdCB3aWxsIGJlIGFkZGVkIGludG8gYQor ICAgICAgZmVhdHVyZSBsaXN0LiBUaGUgaGVhZCBvZiB0aGUgbGlzdCBpcyBjcmVhdGVkIGluIHBz ciBpbml0aWFsaXphdGlvbi4KKworICAgICAgLSBNZW1iZXIgYGZlYXR1cmVgCisKKyAgICAgICAg YGZlYXR1cmVgIGlzIGFuIGludGVnZXIgbnVtYmVyLCB0byBpbmRpY2F0ZSB3aGljaCBmZWF0dXJl IHRoZSBsaXN0IGVudHJ5CisgICAgICAgIGNvcnJlc3BvbmRzIHRvLgorCisgICAgICAtIE1lbWJl ciBgb3BzYAorCisgICAgICAgIGBvcHNgIG1haW50YWlucyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGxp c3Qgb2YgdGhlIGZlYXR1cmUuIEl0IHdpbGwgYmUgaW50cm9kdWNlZAorICAgICAgICBpbiBkZXRh aWxzIGxhdGVyIGF0IGA0LiBGZWF0dXJlIG9wZXJhdGlvbiBmdW5jdGlvbnMgc3RydWN0dXJlYC4K KworICAgICAgLSBNZW1iZXIgYGluZm9gCisKKyAgICAgICAgYGluZm9gIG1haW50YWlucyB0aGUg ZmVhdHVyZSBIVyBpbmZvcm1hdGlvbiB3aGljaCBhcmUgcHJvdmlkZWQgdG8gcHNyX2h3aW5mbwor ICAgICAgICBjb21tYW5kLgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZ192YWxgCisKKyAgICAg ICAgYGNvc19yZWdfdmFsYCBpcyBhbiBhcnJheSB0byBtYWludGFpbiB0aGUgdmFsdWUgc2V0IGlu IGFsbCBDT1MgcmVnaXN0ZXJzIG9mCisgICAgICAgIHRoZSBmZWF0dXJlLiBUaGUgYXJyYXkgaXMg aW5kZXhlZCBieSBDT1MgSUQuCisKKyAgIDMuIFBlci1zb2NrZXQgUFNSIGZlYXR1cmVzIGluZm9y bWF0aW9uIHN0cnVjdHVyZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2lu Zm8geworICAgICAgICAgIHVuc2lnbmVkIGludCBmZWF0X21hc2s7CisgICAgICAgICAgdW5zaWdu ZWQgaW50IG5yX2ZlYXQ7CisgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCBmZWF0X2xpc3Q7Cisg ICAgICAgICAgdW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfTlVNXTsKKyAgICAgICAg ICBzcGlubG9ja190IHJlZl9sb2NrOworICAgICAgfTsKKyAgICAgIGBgYAorCisgICAgICBXZSBj b2xsZWN0IGFsbCBQU1IgYWxsb2NhdGlvbiBmZWF0dXJlcyBpbmZvcm1hdGlvbiBvZiBhIHNvY2tl dCBpbiB0aGlzCisgICAgICBgc3RydWN0IHBzcl9zb2NrZXRfaW5mb2AuCisKKyAgICAgIC0gTWVt YmVyIGBmZWF0X21hc2tgCisKKyAgICAgICAgYGZlYXRfbWFza2AgaXMgYSBiaXRtYXAsIHRvIGlu ZGljYXRlIHdoaWNoIGZlYXR1cmUgaXMgZW5hYmxlZCBvbiBjdXJyZW50CisgICAgICAgIHNvY2tl dC4gV2UgZGVmaW5lIGBmZWF0X21hc2tgIGJpdG1hcCBhczoKKworICAgICAgICBiaXQgMDogTDMg Q0FUIHN0YXR1cy4KKyAgICAgICAgYml0IDE6IEwzIENEUCBzdGF0dXMuCisgICAgICAgIGJpdCAy OiBMMiBDQVQgc3RhdHVzLgorCisgICAgICAtIE1lbWJlciBgbnJfZmVhdGAKKworICAgICAgICBg bnJfZmVhdGAgbWVhbnMgdGhlIG51bWJlciBvZiBQU1IgZmVhdHVyZXMgZW5hYmxlZC4KKworICAg ICAgLSBNZW1iZXIgYGNvc19yZWZgCisKKyAgICAgICAgYGNvc19yZWZgIGlzIGFuIGFycmF5IHdo aWNoIG1haW50YWlucyB0aGUgcmVmZXJlbmNlIG9mIG9uZSBDT1MuIEl0IG1hcHMKKyAgICAgICAg dG8gY29zX3JlZ192YWxbTUFYX0NPU19SRUdfTlVNXSBpbiBgc3RydWN0IGZlYXRfbm9kZWAuIElm IG9uZSBDT1MgaXMKKyAgICAgICAgdXNlZCBieSBvbmUgZG9tYWluLCB0aGUgY29ycmVzcG9uZGlu ZyByZWZlcmVuY2Ugd2lsbCBpbmNyZWFzZSBieSBvbmUuIElmCisgICAgICAgIGEgZG9tYWluIHJl bGVhc2VzIHRoZSBDT1MsIHRoZSByZWZlcmVuY2Ugd2lsbCBkZWNyZWFzZSBieSBvbmUuIFRoZSBh cnJheQorICAgICAgICBpcyBpbmRleGVkIGJ5IENPUyBJRC4KKworICAgNC4gRmVhdHVyZSBvcGVy YXRpb24gZnVuY3Rpb25zIHN0cnVjdHVyZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBmZWF0 X29wcyB7CisgICAgICAgICAgdW5zaWduZWQgaW50ICgqZ2V0X2Nvc19tYXgpKGNvbnN0IHN0cnVj dCBmZWF0X25vZGUgKmZlYXQpOworICAgICAgICAgIGludCAoKmdldF9mZWF0X2luZm8pKGNvbnN0 IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgZGF0YVtdLCB1aW50MzJfdCBhcnJheV9sZW4pOworICAgICAgICAgIGludCAoKmdl dF92YWwpKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsIHVuc2lnbmVkIGludCBjb3MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLCB1aW50NjRfdCAqdmFs KTsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpnZXRfY29zX251bSkoY29uc3Qgc3RydWN0IGZl YXRfbm9kZSAqZmVhdCk7CisgICAgICAgICAgaW50ICgqZ2V0X29sZF92YWwpKHVpbnQ2NF90IHZh bFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2Rl ICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2Nv cyk7CisgICAgICAgICAgaW50ICgqc2V0X25ld192YWwpKHVpbnQ2NF90IHZhbFtdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX2NvcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBtKTsKKyAgICAgICAgICBpbnQgKCpjb21wYXJlX3ZhbCko Y29uc3QgdWludDY0X3QgdmFsW10sIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3MsIGJvb2wgKmZvdW5kKTsK KyAgICAgICAgICB1bnNpZ25lZCBpbnQgKCpmaXRzX2Nvc19tYXgpKGNvbnN0IHVpbnQ2NF90IHZh bFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBjb3MpOworICAgICAgICAgIGludCAoKndyaXRlX21zcikodW5zaWduZWQg aW50IGNvcywgY29uc3QgdWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0KTsKKyAgICAgIH07CisgICAgICBgYGAKKworICAgICAg V2UgYWJzdHJhY3QgYWJvdmUgY2FsbGJhY2sgZnVuY3Rpb25zIHRvIGVuY2Fwc3VsYXRlIHRoZSBm ZWF0dXJlIHNwZWNpZmljCisgICAgICBiZWhhdmlvcnMgaW50byB0aGVtLiBUaGVuLCBpdCBpcyBl YXN5IHRvIGFkZCBhIG5ldyBmZWF0dXJlLiBXZSBqdXN0IG5lZWQ6CisgICAgICAgICAgMSkgSW1w bGVtZW50IHN1Y2ggb3BzIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIGV2ZXJ5IGZlYXR1cmUu CisgICAgICAgICAgMikgUmVnaXN0ZXIgdGhlIG9wcyBpbnRvIGBzdHJ1Y3QgZmVhdF9ub2RlYC4K KyAgICAgICAgICAzKSBBZGQgdGhlIGZlYXR1cmUgaW50byBmZWF0dXJlIGxpc3QgZHVyaW5nIENQ VSBpbml0aWFsaXphdGlvbi4KKworIyBMaW1pdGF0aW9ucworCitDQVQvQ0RQIGNhbiBvbmx5IHdv cmsgb24gSFcgd2hpY2ggZW5hYmxlcyBpdChjaGVjayBieSBDUFVJRCkuIFNvIGZhciwgdGhlcmUg aXMKK25vIEhXIHdoaWNoIGVuYWJsZXMgYm90aCBMMiBDQVQgYW5kIEwzIENBVC9DRFAuIEJ1dCBT VyBpbXBsZW1lbnRhdGlvbiBoYXMgY29ucy0KK2lkZXJlZCBzdWNoIHNjZW5hcmlvIHRvIGVuYWJs ZSBib3RoIEwyIENBVCBhbmQgTDMgQ0FUL0NEUC4KKworIyBUZXN0aW5nCisKK1dlIGNhbiBleGVj dXRlIGFib3ZlIHhsIGNvbW1hbmRzIHRvIHZlcmlmeSBMMiBDQVQgYW5kIEwzIENBVC9DRFAgb24g ZGlmZmVyZW50CitIV3Mgc3VwcG9ydCB0aGVtLgorCitGb3IgZXhhbXBsZToKKyAgICByb290QDp+ JCB4bCBwc3ItaHdpbmZvIC0tY2F0CisgICAgQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5IChD QVQpOiBMMgorICAgIFNvY2tldCBJRCAgICAgICA6IDAKKyAgICBNYXhpbXVtIENPUyAgICAgOiAz CisgICAgQ0JNIGxlbmd0aCAgICAgIDogOAorICAgIERlZmF1bHQgQ0JNICAgICA6IDB4ZmYKKwor ICAgIHJvb3RAOn4kIHhsIHBzci1jYXQtY2JtLXNldCAtbDIgMSAweDdmCisKKyAgICByb290QDp+ JCB4bCBwc3ItY2F0LXNob3cgLWwyIDEKKyAgICBTb2NrZXQgSUQgICAgICAgOiAwCisgICAgRGVm YXVsdCBDQk0gICAgIDogMHhmZgorICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgTkFNRSAg ICAgICAgICAgICBDQk0KKyAgICAgICAgMSAgICAgICAgICAgICAgICAgdWJ1bnR1MTQgICAgICAg ICAgICAweDdmCisKKyMgQXJlYXMgZm9yIGltcHJvdmVtZW50CisKK04vQQorCisjIEtub3duIGlz c3VlcworCitOL0EKKworIyBSZWZlcmVuY2VzCisKKyJJTlRFTMKuIFJFU09VUkNFIERJUkVDVE9S IFRFQ0hOT0xPR1kgKElOVEVMwq4gUkRUKSBBTExPQ0FUSU9OIEZFQVRVUkVTIiBbSW50ZWzCriA2 NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXIgTWFudWFscywgdm9s M10oaHR0cDovL3d3dy5pbnRlbC5jb20vY29udGVudC93d3cvdXMvZW4vcHJvY2Vzc29ycy9hcmNo aXRlY3R1cmVzLXNvZnR3YXJlLWRldmVsb3Blci1tYW51YWxzLmh0bWwpCisKKyMgSGlzdG9yeQor CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0RhdGUgICAgICAgUmV2aXNpb24gVmVyc2lvbiAgTm90ZXMKKy0t LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorMjAxNi0wOC0xMiAxLjAgICAgICBYZW4gNC45ICBEZXNpZ24gZG9jdW1l bnQgd3JpdHRlbgorLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=