From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v7 01/24] docs: create Cache Allocation Technology (CAT) and Code and Data Prioritization (CDP) feature document Date: Mon, 13 Feb 2017 14:32:13 +0800 Message-ID: <1486967556-3702-2-git-send-email-yi.y.sun@linux.intel.com> References: <1486967556-3702-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cdAEl-0005yV-T5 for xen-devel@lists.xenproject.org; Mon, 13 Feb 2017 06:35:48 +0000 In-Reply-To: <1486967556-3702-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+Ci0tLQp2NzoKICAgIC0gY29ycmVjdCB0eXBvLgogICAgLSByZXBsYWNlIGFwcGxpY2F0 aW9uL1ZNIHRvIGRvbWFpbi4KICAgIC0gYW1lbmQgZGVzY3JpcHRpb24gb2YgYGZlYXRfbWFza2Ag dG8gbWFrZSBpdCBjbGVhcmVyLgogICAgLSB1cGRhdGUgcmV2aXNpb24uCiAgICAtIG90aGVyIG1p bm9yIGZpeGVzLgotLS0KIGRvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jIHwg NDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDQ1 NCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jcy9mZWF0dXJlcy9pbnRlbF9w c3JfY2F0X2NkcC5wYW5kb2MKCmRpZmYgLS1naXQgYS9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9j YXRfY2RwLnBhbmRvYyBiL2RvY3MvZmVhdHVyZXMvaW50ZWxfcHNyX2NhdF9jZHAucGFuZG9jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NzM2Y2MKLS0tIC9kZXYvbnVsbAor KysgYi9kb2NzL2ZlYXR1cmVzL2ludGVsX3Bzcl9jYXRfY2RwLnBhbmRvYwpAQCAtMCwwICsxLDQ1 NCBAQAorJSBJbnRlbCBDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgYW5kIENvZGUgYW5kIERh dGEgUHJpb3JpdGl6YXRpb24gRmVhdHVyZXMKKyUgUmV2aXNpb24gMS4wCisKK1xjbGVhcnBhZ2UK KworIyBCYXNpY3MKKworLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICBTdGF0dXM6ICoqVGVjaCBQcmV2 aWV3KioKKworQXJjaGl0ZWN0dXJlKHMpOiBJbnRlbCB4ODYKKworICAgQ29tcG9uZW50KHMpOiBI eXBlcnZpc29yLCB0b29sc3RhY2sKKworICAgICAgIEhhcmR3YXJlOiBMMyBDQVQ6IEhhc3dlbGwg YW5kIGJleW9uZCBDUFVzCisgICAgICAgICAgICAgICAgIENEUCAgIDogQnJvYWR3ZWxsIGFuZCBi ZXlvbmQgQ1BVcworICAgICAgICAgICAgICAgICBMMiBDQVQ6IEF0b20gY29kZW5hbWUgR29sZG1v bnQgYW5kIGJleW9uZCBDUFVzCistLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUZXJtaW5vbG9neQorCisqIENB VCAgICAgICAgIENhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9neQorKiBDQk0gICAgICAgICBDYXBh Y2l0eSBCaXRNYXNrcworKiBDRFAgICAgICAgICBDb2RlIGFuZCBEYXRhIFByaW9yaXRpemF0aW9u CisqIENPUy9DTE9TICAgIENsYXNzIG9mIFNlcnZpY2UKKyogTVNScyAgICAgICAgTWFjaGluZSBT cGVjaWZpYyBSZWdpc3RlcnMKKyogUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJl c291cmNlCisKKyMgT3ZlcnZpZXcKKworSW50ZWwgcHJvdmlkZXMgYSBzZXQgb2YgYWxsb2NhdGlv biBjYXBhYmlsaXRpZXMgaW5jbHVkaW5nIENhY2hlIEFsbG9jYXRhdGlvbgorVGVjaG5vbG9neSAo Q0FUKSBhbmQgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbiAoQ0RQKS4KKworQ0FUIGFsbG93 cyBhbiBPUyBvciBoeXBlcnZpc29yIHRvIGNvbnRyb2wgYWxsb2NhdGlvbiBvZiBhIENQVSdzIHNo YXJlZCBjYWNoZQorYmFzZWQgb24gYXBwbGljYXRpb24vZG9tYWluIHByaW9yaXR5IG9yIENsYXNz IG9mIFNlcnZpY2UgKENPUykuIEVhY2ggQ09TIGlzCitjb25maWd1cmVkIHVzaW5nIGNhcGFjaXR5 IGJpdG1hc2tzIChDQk1zKSB3aGljaCByZXByZXNlbnQgY2FjaGUgY2FwYWNpdHkgYW5kCitpbmRp Y2F0ZSB0aGUgZGVncmVlIG9mIG92ZXJsYXAgYW5kIGlzb2xhdGlvbiBiZXR3ZWVuIGNsYXNzZXMu IE9uY2UgQ0FUIGlzIGNvLQorbmZpZ3VyZWQsIHRoZSBwcm9jZXNzb3IgYWxsb3dzIGFjY2VzcyB0 byBwb3J0aW9ucyBvZiBjYWNoZSBhY2NvcmRpbmcgdG8gdGhlCitlc3RhYmxpc2hlZCBDT1MuIElu dGVsIFhlb24gcHJvY2Vzc29yIEU1IHY0IGZhbWlseSAoYW5kIHNvbWUgb3RoZXJzKSBpbnRyb2R1 Y2UKK2NhcGFiaWxpdGllcyB0byBjb25maWd1cmUgYW5kIG1ha2UgdXNlIG9mIHRoZSBDQVQgbWVj aGFuaXNtIG9uIHRoZSBMMyBjYWNoZS4KK0ludGVsIEdvbGRtb250IHByb2Nlc3NvciBwcm92aWRl cyBzdXBwb3J0IGZvciBjb250cm9sIG92ZXIgdGhlIEwyIGNhY2hlLgorCitDb2RlIGFuZCBEYXRh IFByaW9yaXRpemF0aW9uIChDRFApIFRlY2hub2xvZ3kgaXMgYW4gZXh0ZW5zaW9uIG9mIENBVC4g Q0RQCitlbmFibGVzIGlzb2xhdGlvbiBhbmQgc2VwYXJhdGUgcHJpb3JpdGl6YXRpb24gb2YgY29k ZSBhbmQgZGF0YSBmZXRjaGVzIHRvCit0aGUgTDMgY2FjaGUgaW4gYSBTVyBjb25maWd1cmFibGUg bWFubmVyLCB3aGljaCBjYW4gZW5hYmxlIHdvcmtsb2FkIHByaW9yaXQtCitpemF0aW9uIGFuZCB0 dW5pbmcgb2YgY2FjaGUgY2FwYWNpdHkgdG8gdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgd29y a2xvYWQuCitDRFAgZXh0ZW5kcyBDQVQgYnkgcHJvdmlkaW5nIHNlcGFyYXRlIGNvZGUgYW5kIGRh dGEgbWFza3MgcGVyIENsYXNzIG9mIFNlcnZpY2UKKyhDT1MpLiBXaGVuIFNXIGNvbmZpZ3VyZXMg dG8gZW5hYmxlIENEUCwgTDMgQ0FUIGlzIGRpc2FibGVkLgorCisjIFVzZXIgZGV0YWlscworCisq IEZlYXR1cmUgRW5hYmxpbmc6CisKKyAgQWRkICJwc3I9Y2F0IiB0byBib290IGxpbmUgcGFyYW1l dGVyIHRvIGVuYWJsZSBhbGwgc3VwcG9ydGVkIGxldmVsIENBVCBmZWF0dS0KKyAgcmVzLiBBZGQg InBzcj1jZHAiIHRvIGVuYWJsZSBMMyBDRFAgYnV0IGRpc2FibGVzIEwzIENBVCBieSBTVy4KKwor KiB4bCBpbnRlcmZhY2VzOgorCisgIDEuIGBwc3ItY2F0LXNob3cgW09QVElPTlNdIGRvbWFpbi1p ZGA6CisKKyAgICAgU2hvdyBMMiBDQVQgb3IgTDMgQ0FUL0NEUCBDQk0gb2YgdGhlIGRvbWFpbiBk ZXNpZ25hdGVkIGJ5IFhlbiBkb21haW4taWQuCisKKyAgICAgT3B0aW9uIGAtbGA6CisgICAgIGAt bDJgOiBTaG93IGNibSBmb3IgTDIgY2FjaGUuCisgICAgIGAtbDNgOiBTaG93IGNibSBmb3IgTDMg Y2FjaGUuCisKKyAgICAgSWYgYC1sWGAgaXMgc3BlY2lmaWVkIGFuZCBMWCBpcyBub3Qgc3VwcG9y dGVkLCBwcmludCBlcnJvci4KKyAgICAgSWYgbm8gYC1sYCBpcyBzcGVjaWZpZWQsIGxldmVsIDMg aXMgdGhlIGRlZmF1bHQgb3B0aW9uLgorCisgIDIuIGBwc3ItY2F0LXNldCBbT1BUSU9OU10gZG9t YWluLWlkIGNibWA6CisKKyAgICAgU2V0IEwyIENBVCBvciBMMyBDQVQvQ0RQIENCTSB0byB0aGUg ZG9tYWluIGRlc2lnbmF0ZWQgYnkgWGVuIGRvbWFpbi1pZC4KKworICAgICBPcHRpb24gYC1zYDog U3BlY2lmeSB0aGUgc29ja2V0IHRvIHByb2Nlc3MsIG90aGVyd2lzZSBhbGwgc29ja2V0cyBhcmUK KyAgICAgcHJvY2Vzc2VkLgorCisgICAgIE9wdGlvbiBgLWxgOgorICAgICBgLWwyYDogU3BlY2lm eSBjYm0gZm9yIEwyIGNhY2hlLgorICAgICBgLWwzYDogU3BlY2lmeSBjYm0gZm9yIEwzIGNhY2hl LgorCisgICAgIElmIGAtbFhgIGlzIHNwZWNpZmllZCBhbmQgTFggaXMgbm90IHN1cHBvcnRlZCwg cHJpbnQgZXJyb3IuCisgICAgIElmIG5vIGAtbGAgaXMgc3BlY2lmaWVkLCBsZXZlbCAzIGlzIHRo ZSBkZWZhdWx0IG9wdGlvbi4KKworICAgICBPcHRpb24gYC1jYCBvciBgLWRgOgorICAgICBgLWNg OiBTZXQgTDMgQ0RQIGNvZGUgY2JtLgorICAgICBgLWRgOiBTZXQgTDMgQ0RQIGRhdGEgY2JtLgor CisgIDMuIGBwc3ItaHdpbmZvIFtPUFRJT05TXWA6CisKKyAgICAgU2hvdyBDTVQgJiBMMiBDQVQg JiBMMyBDQVQvQ0RQIEhXIGluZm9ybWF0aW9uIG9uIGV2ZXJ5IHNvY2tldC4KKworICAgICBPcHRp b24gYC1tLCAtLWNtdGA6IFNob3cgQ2FjaGUgTW9uaXRvcmluZyBUZWNobm9sb2d5IChDTVQpIGhh cmR3YXJlIGluZm8uCisKKyAgICAgT3B0aW9uIGAtYSwgLS1jYXRgOiBTaG93IENBVC9DRFAgaGFy ZHdhcmUgaW5mby4KKworIyBUZWNobmljYWwgZGV0YWlscworCitMMyBDQVQvQ0RQIGFuZCBMMiBD QVQgYXJlIGFsbCBtZW1iZXJzIG9mIEludGVsIFBTUiBmZWF0dXJlcywgdGhleSBzaGFyZSB0aGUg YmFzZQorUFNSIGluZnJhc3RydWN0dXJlIGluIFhlbi4KKworIyMgSGFyZHdhcmUgcGVyc3BlY3Rp dmUKKworICBDQVQvQ0RQIGRlZmluZXMgYSByYW5nZSBvZiBNU1JzIHRvIGFzc2lnbiBkaWZmZXJl bnQgY2FjaGUgYWNjZXNzIHBhdHRlcm5zCisgIHdoaWNoIGFyZSBrbm93biBhcyBDQk1zLCBlYWNo IENCTSBpcyBhc3NvY2lhdGVkIHdpdGggYSBDT1MuCisKKyAgYGBgCisgIEUuZy4gTDIgQ0FUOgor ICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICAgICBJQTMyX1BRUl9BU1NPQyAgICAgICB8IE1TUiAocGVyIHNv Y2tldCkgICAgICAgICAgIHwgICAgQWRkcmVzcyAgICAgfAorICAgKy0tLS0rLS0tKy0tLS0tLS0r ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAg fCAgICB8Q09TfCAgICAgICB8ICAgICB8IElBMzJfTDJfUU9TX01BU0tfMCAgICAgICAgIHwgICAg IDB4RDEwICAgICAgfAorICAgKy0tLS0rLS0tKy0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIOKUlC0tLS0tLS0tLS0t LS0+IHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgfCAgLi4uICAgICAgICAgICB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUEzMl9MMl9RT1NfTUFT S19uICAgICAgICAgfCAweEQxMCtuIChuPDY0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIGBgYAor CisgIEwzIENBVC9DRFAgdXNlcyBhIHJhbmdlIG9mIE1TUnMgZnJvbSAweEM5MCB+IDB4QzkwK24g KG48MTI4KS4KKworICBMMiBDQVQgdXNlcyBhIHJhbmdlIG9mIE1TUnMgZnJvbSAweEQxMCB+IDB4 RDEwK24gKG48NjQpLCBmb2xsb3dpbmcgdGhlIEwzCisgIENBVC9DRFAgTVNScywgc2V0dGluZyBk aWZmZXJlbnQgTDIgY2FjaGUgYWNjZXNzaW5nIHBhdHRlcm5zIGZyb20gTDMgY2FjaGUgaXMKKyAg c3VwcG9ydGVkLgorCisgIEV2ZXJ5IE1TUiBzdG9yZXMgYSBDQk0gdmFsdWUuIEEgY2FwYWNpdHkg Yml0bWFzayAoQ0JNKSBwcm92aWRlcyBhIGhpbnQgdG8gdGhlCisgIGhhcmR3YXJlIGluZGljYXRp bmcgdGhlIGNhY2hlIHNwYWNlIGEgZG9tYWluIHNob3VsZCBiZSBsaW1pdGVkIHRvIGFzIHdlbGwg YXMKKyAgcHJvdmlkaW5nIGFuIGluZGljYXRpb24gb2Ygb3ZlcmxhcCBhbmQgaXNvbGF0aW9uIGlu IHRoZSBDQVQtY2FwYWJsZSBjYWNoZSBmcm9tCisgIG90aGVyIGRvbWFpbnMgY29udGVuZGluZyBm b3IgdGhlIGNhY2hlLgorCisgIFNhbXBsZSBjYWNoZSBjYXBhY2l0eSBiaXRtYXNrcyBmb3IgYSBi aXRsZW5ndGggb2YgOCBhcmUgc2hvd24gYmVsb3cuIFBsZWFzZQorICBub3RlIHRoYXQgYWxsIChh bmQgb25seSkgY29udGlndW91cyAnMScgY29tYmluYXRpb25zIGFyZSBhbGxvd2VkIChlLmcuIEZG RkZILAorICAwRkYwSCwgMDAzQ0gsIGV0Yy4pLgorCisgIGBgYAorICAgICAgICstLS0tKy0tLS0r LS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgICAgICAgfCBNNyB8IE02IHwgTTUgfCBN NCB8IE0zIHwgTTIgfCBNMSB8IE0wIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0t Ky0tLS0rLS0tLSstLS0tKworICBDT1MwIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwg QSAgfCBBICB8IERlZmF1bHQgQml0bWFzaworICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzEgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKworICBDT1MyIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8IEEgIHwgQSAgfCBBICB8Cisg ICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKworICAgICAg ICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgICAgICAgfCBNNyB8 IE02IHwgTTUgfCBNNCB8IE0zIHwgTTIgfCBNMSB8IE0wIHwKKyAgICAgICArLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MwIHwgQSAgfCBBICB8IEEgIHwgQSAg fCBBICB8IEEgIHwgQSAgfCBBICB8IE92ZXJsYXBwZWQgQml0bWFzaworICAgICAgICstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rCisgIENPUzEgfCAgICB8ICAgIHwgICAg fCAgICB8IEEgIHwgQSAgfCBBICB8IEEgIHwKKyAgICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSst LS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MyIHwgICAgfCAgICB8ICAgIHwgICAgfCAgICB8ICAg IHwgQSAgfCBBICB8CisgICAgICAgKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r LS0tLSsKKworICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0r CisgICAgICAgfCBNNyB8IE02IHwgTTUgfCBNNCB8IE0zIHwgTTIgfCBNMSB8IE0wIHwKKyAgICAg ICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MwIHwgQSAg fCBBICB8IEEgIHwgQSAgfCAgICB8ICAgIHwgICAgfCAgICB8IElzb2xhdGVkIEJpdG1hc2sKKyAg ICAgICArLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSstLS0tKworICBDT1MxIHwg ICAgfCAgICB8ICAgIHwgICAgfCBBICB8IEEgIHwgICAgfCAgICB8CisgICAgICAgKy0tLS0rLS0t LSstLS0tKy0tLS0rLS0tLSstLS0tKy0tLS0rLS0tLSsKKyAgQ09TMiB8ICAgIHwgICAgfCAgICB8 ICAgIHwgICAgfCAgICB8IEEgIHwgQSAgfAorICAgICAgICstLS0tKy0tLS0rLS0tLSstLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rCisgIGBgYAorCisgIFdlIGNhbiBnZXQgdGhlIENCTSBsZW5ndGgg dGhyb3VnaCBDUFVJRC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgQ0JNIGlzIGNhbGN1bC0KKyAgYXRl ZCBieSBgKDF1bGwgPDwgY2JtX2xlbikgLSAxYC4gVGhhdCBpcyBhIGZ1bGx5IG9wZW4gYml0bWFz aywgYWxsIG9uZXMgYml0bS0KKyAgYXNrLiBUaGUgQ09TWzBdIGFsd2F5cyBzdG9yZXMgdGhlIGRl ZmF1bHQgdmFsdWUgd2l0aG91dCBjaGFuZ2UuCisKKyAgVGhlcmUgaXMgYSBgSUEzMl9QUVJfQVNT T0NgIHJlZ2lzdGVyIHdoaWNoIHN0b3JlcyB0aGUgQ09TIElEIG9mIHRoZSBWQ1BVLiBIVworICBl bmZvcmNlcyBjYWNoZSBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBD Qk0uCisKKyMjIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBMMyBDQVQvQ0RQIGFuZCBMMiBDQVQK KworICBIVyBtYXkgc3VwcG9ydCBhbGwgZmVhdHVyZXMuIEJ5IGRlZmF1bHQsIENEUCBpcyBkaXNh YmxlZCBvbiB0aGUgcHJvY2Vzc29yLgorICBJZiB0aGUgTDMgQ0FUIE1TUnMgYXJlIHVzZWQgd2l0 aG91dCBlbmFibGluZyBDRFAsIHRoZSBwcm9jZXNzb3Igb3BlcmF0ZXMgaW4KKyAgYSB0cmFkaXRp b25hbCBDQVQtb25seSBtb2RlLiBXaGVuIENEUCBpcyBlbmFibGVkOgorICAqIHRoZSBDQVQgbWFz ayBNU1JzIGFyZSByZS1tYXBwZWQgaW50byBpbnRlcmxlYXZlZCBwYWlycyBvZiBtYXNrIE1TUnMg Zm9yCisgICAgZGF0YSBvciBjb2RlIGZldGNoZXMuCisgICogdGhlIHJhbmdlIG9mIENPUyBmb3Ig Q0FUIGlzIHJlLWluZGV4ZWQsIHdpdGggdGhlIGxvd2VyLWhhbGYgb2YgdGhlIENPUworICAgIHJh bmdlIGF2YWlsYWJsZSBmb3IgQ0RQLgorCisgIEwyIENBVCBpcyBpbmRlcGVuZGVudCBvZiBMMyBD QVQvQ0RQLCB3aGljaCBtZWFucyBMMiBDQVQgY2FuIGJlIGVuYWJsZWQgd2hpbGUKKyAgTDMgQ0FU L0NEUCBpcyBkaXNhYmxlZCwgb3IgTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQIGFyZSBib3RoIGVuYWJs ZWQuCisKKyAgQXMgYSByZXF1aXJlbWVudCwgdGhlIGJpdHMgb2YgQ0JNIG9mIENBVC9DRFAgbXVz dCBiZSBjb250aW51b3VzLgorCisgIE4uQi4gTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQIHNoYXJlIHRo ZSBzYW1lIENPUyBmaWVsZCBpbiB0aGUgc2FtZSBhc3NvY2lhdGUKKyAgcmVnaXN0ZXIgYElBMzJf UFFSX0FTU09DYCwgd2hpY2ggbWVhbnMgb25lIENPUyBpcyBhc3NvY2lhdGVkIHdpdGggYSBwYWly IG9mCisgIEwyIENBVCBDQk0gYW5kIEwzIENBVC9DRFAgQ0JNLgorCisgIEJlc2lkZXMsIHRoZSBt YXggQ09TIG9mIEwyIENBVCBtYXkgYmUgZGlmZmVyZW50IGZyb20gTDMgQ0FUL0NEUCAob3Igb3Ro ZXIKKyAgUFNSIGZlYXR1cmVzIGluIGZ1dHVyZSkuIEluIHNvbWUgY2FzZXMsIGEgZG9tYWluIGlz IHBlcm1pdHRlZCB0byBoYXZlIGEgQ09TCisgIHRoYXQgaXMgYmV5b25kIG9uZSAob3IgbW9yZSkg b2YgUFNSIGZlYXR1cmVzIGJ1dCB3aXRoaW4gdGhlIG90aGVycy4gRm9yCisgIGluc3RhbmNlLCBs ZXQncyBhc3N1bWUgdGhlIG1heCBDT1Mgb2YgTDIgQ0FUIGlzIDggYnV0IHRoZSBtYXggQ09TIG9m IEwzCisgIENBVCBpcyAxNiwgd2hlbiBhIGRvbWFpbiBpcyBhc3NpZ25lZCA5IGFzIENPUywgdGhl IEwzIENBVCBDQk0gYXNzb2NpYXRlZCB0bworICBDT1MgOSB3b3VsZCBiZSBlbmZvcmNlZCwgYnV0 IGZvciBMMiBDQVQsIHRoZSBIVyB3b3JrcyBhcyBkZWZhdWx0IHZhbHVlIGlzCisgIHNldCBzaW5j ZSBDT1MgOSBpcyBiZXlvbmQgdGhlIG1heCBDT1MgKDgpIG9mIEwyIENBVC4KKworIyMgRGVzaWdu IE92ZXJ2aWV3CisKKyogQ29yZSBDT1MvQ0JNIGFzc29jaWF0aW9uCisKKyAgV2hlbiBlbmZvcmNp bmcgQ0FUL0NEUCwgYWxsIGNvcmVzIG9mIGRvbWFpbnMgaGF2ZSB0aGUgc2FtZSBkZWZhdWx0IENP UyAoQ09TMCkKKyAgd2hpY2ggaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdWxseSBvcGVuIENCTSAo YWxsIG9uZXMgYml0bWFzaykgdG8gYWNjZXNzIGFsbAorICBjYWNoZS4gVGhlIGRlZmF1bHQgQ09T IGlzIHVzZWQgb25seSBpbiBoeXBlcnZpc29yIGFuZCBpcyB0cmFuc3BhcmVudCB0byB0b29sCisg IHN0YWNrIGFuZCB1c2VyLgorCisgIFN5c3RlbSBhZG1pbmlzdHJhdG9yIGNhbiBjaGFuZ2UgUFNS IGFsbG9jYXRpb24gcG9saWN5IGF0IHJ1bnRpbWUgYnkgdG9vbCBzdGFjay4KKyAgU2luY2UgTDIg Q0FUIHNoYXJlcyBDT1Mgd2l0aCBMMyBDQVQvQ0RQLCBhIENPUyBjb3JyZXNwb25kcyB0byBhIDIt dHVwbGUsIGxpa2UKKyAgW0wyIENCTSwgTDMgQ0JNXSB3aXRoIG9ubHktQ0FUIGVuYWJsZWQsIHdo ZW4gQ0RQIGlzIGVuYWJsZWQsIG9uZSBDT1MgY29ycmVzcG8tCisgIG5kcyB0byBhIDMtdHVwbGUs IGxpa2UgW0wyIENCTSwgTDMgQ29kZV9DQk0sIEwzIERhdGFfQ0JNXS4gSWYgbmVpdGhlciBMMyBD QVQKKyAgbm9yIEwzIENEUCBpcyBlbmFibGVkLCB0aGluZ3Mgd291bGQgYmUgZWFzaWVyLCBvbmUg Q09TIGNvcnJlc3BvbmRzIHRvIG9uZSBMMgorICBDQk0uCisKKyogVkNQVSBzY2hlZHVsZQorCisg IFdoZW4gY29udGV4dCBzd2l0Y2ggaGFwcGVucywgdGhlIENPUyBvZiBWQ1BVIGlzIHdyaXR0ZW4g dG8gcGVyLXRocmVhZCBNU1IKKyAgYElBMzJfUFFSX0FTU09DYCwgYW5kIHRoZW4gaGFyZHdhcmUg ZW5mb3JjZXMgY2FjaGUgYWxsb2NhdGlvbiBhY2NvcmRpbmcgdG8KKyAgdGhlIGNvcnJlc3BvbmRp bmcgQ0JNLgorCisqIE11bHRpLXNvY2tldHMKKworICBEaWZmZXJlbnQgc29ja2V0cyBtYXkgaGF2 ZSBkaWZmZXJlbnQgQ0FUL0NEUCBjYXBhYmlsaXR5IChlLmcuIG1heCBDT1MpIGFsdGgtCisgIG91 Z2ggaXQgaXMgY29uc2lzdGVudCBvbiB0aGUgc2FtZSBzb2NrZXQuIFNvIHRoZSBjYXBhYmlsaXR5 IG9mIHBlci1zb2NrZXQgQ0FULworICBDRFAgaXMgc3BlY2lmaWVkLgorCisgICdwc3ItY2F0LXNl dCcgY2FuIHNldCBDQk0gZm9yIG9uZSBkb21haW4gcGVyIHNvY2tldC4gT24gZWFjaCBzb2NrZXQs IHdlIG1haW4tCisgIHRhaW4gYSBDT1MgYXJyYXkgZm9yIGFsbCBkb21haW5zLiBPbmUgZG9tYWlu IHVzZXMgb25lIENPUyBhdCBvbmUgdGltZS4gT25lIENPUworICBzdG9yZXMgdGhlIENCTSBvZiB0 aGUgZG9tYWluIHRvIHdvcmsuIFNvLCB3aGVuIGEgVkNQVSBvZiB0aGUgZG9tYWluIGlzIG1pZ3Jh dC0KKyAgZWQgZnJvbSBzb2NrZXQgMSB0byBzb2NrZXQgMiwgaXQgZm9sbG93cyBjb25maWd1cmF0 aW9uIG9uIHNvY2tldCAyLgorCisgIEUuZy4gdXNlciBzZXRzIGRvbWFpbiAxIENCTSBvbiBzb2Nr ZXQgMSB0byAweDdmIHdoaWNoIHVzZXMgQ09TIDkgYnV0IHNldHMgZG8tCisgIG1haW4gMSBDQk0g b24gc29ja2V0IDIgdG8gMHgzZiB3aGljaCB1c2VzIENPUyA3LiBXaGVuIFZDUFUgb2YgdGhpcyBk b21haW4KKyAgaXMgbWlncmF0ZWQgZnJvbSBzb2NrZXQgMSB0byAyLCB0aGUgQ09TIElEIHVzZWQg aXMgNywgdGhhdCBtZWFucyAweDNmIGlzIHRoZQorICBDQk0gdG8gd29yayBmb3IgdGhpcyBkb21h aW4gMSBub3cuCisKKyMjIEltcGxlbWVudGF0aW9uIERlc2NyaXB0aW9uCisKKyogSHlwZXJ2aXNv ciBpbnRlcmZhY2VzOgorCisgIDEuIEJvb3QgbGluZSBwYXJhbWV0ZXIgInBzcj1jYXQiIGVuYWJs ZXMgTDIgQ0FUIGFuZCBMMyBDQVQgaWYgaGFyZHdhcmUgc3VwcG8tCisgICAgIHJ0ZWQuICJwc3I9 Y2RwIiBlbmFibGVzIENEUCBpZiBoYXJkd2FyZSBzdXBwb3J0ZWQuCisKKyAgMi4gU1lTQ1RMOgor ICAgICAgICAgIC0gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvOiBHZXQgTDMgQ0FUL0NE UCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAtIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5m bzogR2V0IEwyIENBVCBpbmZvcm1hdGlvbi4KKworICAzLiBET01DVEw6CisgICAgICAgICAgLSBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0NCTTogR2V0IEwzIENCTSBmb3IgYSBkb21haW4u CisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wzX0NCTTogU2V0IEwzIENC TSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wz X0NPREU6IEdldCBDRFAgQ29kZSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAgIC0gWEVOX0RP TUNUTF9QU1JfQ0FUX09QX1NFVF9MM19DT0RFOiBTZXQgQ0RQIENvZGUgQ0JNIGZvciBhIGRvbWFp bi4KKyAgICAgICAgICAtIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQTogR2V0IENE UCBEYXRhIENCTSBmb3IgYSBkb21haW4uCisgICAgICAgICAgLSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfU0VUX0wzX0RBVEE6IFNldCBDRFAgRGF0YSBDQk0gZm9yIGEgZG9tYWluLgorICAgICAgICAg IC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX0dFVF9MMl9DQk06IEdldCBMMiBDQk0gZm9yIGEgZG9t YWluLgorICAgICAgICAgIC0gWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MMl9DQk06IFNldCBM MiBDQk0gZm9yIGEgZG9tYWluLgorCisqIHhsIGludGVyZmFjZXM6CisKKyAgMS4gcHNyLWNhdC1z aG93IC1sWCBkb21haW4taWQKKyAgICAgICAgICBTaG93IExYIGNibSBmb3IgYSBkb21haW4uCisg ICAgICAgICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dldF9sM19pbmZvICAgIC8KKyAgICAgICAg ICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm8gICAgLworICAgICAgICAgICAgIFhF Tl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNICAvCisgICAgICAgICAgICAgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX0dFVF9MM19DT0RFIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfR0VUX0wzX0RBVEEgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9H RVRfTDJfQ0JNCisKKyAgMi4gcHNyLWNhdC1zZXQgLWxYIGRvbWFpbi1pZCBjYm0KKyAgICAgICAg ICBTZXQgTFggY2JtIGZvciBhIGRvbWFpbi4KKyAgICAgICAgICA9PiBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfU0VUX0wzX0NCTSAgLworICAgICAgICAgICAgIFhFTl9ET01DVExfUFNSX0NBVF9PUF9T RVRfTDNfQ09ERSAvCisgICAgICAgICAgICAgWEVOX0RPTUNUTF9QU1JfQ0FUX09QX1NFVF9MM19E QVRBIC8KKyAgICAgICAgICAgICBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTQorCisg IDMuIHBzci1od2luZm8KKyAgICAgICAgICBTaG93IFBTUiBIVyBpbmZvcm1hdGlvbiwgaW5jbHVk aW5nIEwzIENBVC9DRFAvTDIgQ0FUCisgICAgICAgICAgPT4gWEVOX1NZU0NUTF9QU1JfQ0FUX2dl dF9sM19pbmZvIC8KKyAgICAgICAgICAgICBYRU5fU1lTQ1RMX1BTUl9DQVRfZ2V0X2wyX2luZm8K KworKiBLZXkgZGF0YSBzdHJ1Y3R1cmU6CisKKyAgIDEuIEZlYXR1cmUgSFcgaW5mbworCisgICAg ICBgYGAKKyAgICAgIHN0cnVjdCBwc3JfY2F0X2h3X2luZm8geworICAgICAgICAgIHVuc2lnbmVk IGludCBjYm1fbGVuOworICAgICAgICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OworICAgICAgfTsK KyAgICAgIGBgYAorCisgICAgICAtIE1lbWJlciBgY2JtX2xlbmAKKworICAgICAgICBgY2JtX2xl bmAgaXMgb25lIG9mIHRoZSBoYXJkd2FyZSBpbmZvIG9mIENBVC4gSXQgbWVhbnMgdGhlIG1heCBu dW1iZXIKKyAgICAgICAgb2YgYml0cyB0byBzZXQuCisKKyAgICAgIC0gTWVtYmVyIGBjb3NfbWF4 YAorCisgICAgICAgIGBjb3NfbWF4YCBpcyBvbmUgb2YgdGhlIGhhcmR3YXJlIGluZm8gb2YgQ0FU LiBJdCBtZWFucyB0aGUgbWF4IG51bWJlcgorICAgICAgICBvZiBDT1MgcmVnaXN0ZXJzLgorCisg ICAyLiBGZWF0dXJlIGxpc3Qgbm9kZQorCisgICAgICBgYGAKKyAgICAgIHN0cnVjdCBmZWF0X25v ZGUgeworICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0dXJlOworICAgICAgICAgIHN0 cnVjdCBmZWF0X29wcyBvcHM7CisgICAgICAgICAgc3RydWN0IHBzcl9jYXRfaHdfaW5mbyBpbmZv OworICAgICAgICAgIHVpbnQ2NF90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVHX05VTV07CisgICAg ICAgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworICAgICAgfTsKKyAgICAgIGBgYAorCisgICAg ICBXaGVuIGEgUFNSIGVuZm9yY2VtZW50IGZlYXR1cmUgaXMgZW5hYmxlZCwgaXQgd2lsbCBiZSBh ZGRlZCBpbnRvIGEKKyAgICAgIGZlYXR1cmUgbGlzdC4gVGhlIGhlYWQgb2YgdGhlIGxpc3QgaXMg Y3JlYXRlZCBpbiBwc3IgaW5pdGlhbGl6YXRpb24uCisKKyAgICAgIC0gTWVtYmVyIGBmZWF0dXJl YAorCisgICAgICAgIGBmZWF0dXJlYCBpcyBhbiBpbnRlZ2VyIG51bWJlciwgdG8gaW5kaWNhdGUg d2hpY2ggZmVhdHVyZSB0aGUgbGlzdCBlbnRyeQorICAgICAgICBjb3JyZXNwb25kcyB0by4KKwor ICAgICAgLSBNZW1iZXIgYG9wc2AKKworICAgICAgICBgb3BzYCBtYWludGFpbnMgYSBjYWxsYmFj ayBmdW5jdGlvbiBsaXN0IG9mIHRoZSBmZWF0dXJlLiBJdCB3aWxsIGJlIGludHJvZHVjZWQKKyAg ICAgICAgaW4gZGV0YWlscyBsYXRlciBhdCBbRmVhdHVyZSBvcGVyYXRpb24gZnVuY3Rpb25zIHN0 cnVjdHVyZV0uCisKKyAgICAgIC0gTWVtYmVyIGBpbmZvYAorCisgICAgICAgIGBpbmZvYCBtYWlu dGFpbnMgdGhlIGZlYXR1cmUgSFcgaW5mb3JtYXRpb24gd2hpY2ggYXJlIHByb3ZpZGVkIHRvIHBz cl9od2luZm8KKyAgICAgICAgY29tbWFuZC4KKworICAgICAgLSBNZW1iZXIgYGNvc19yZWdfdmFs YAorCisgICAgICAgIGBjb3NfcmVnX3ZhbGAgaXMgYW4gYXJyYXkgdG8gbWFpbnRhaW4gdGhlIHZh bHVlIHNldCBpbiBhbGwgQ09TIHJlZ2lzdGVycyBvZgorICAgICAgICB0aGUgZmVhdHVyZS4gVGhl IGFycmF5IGlzIGluZGV4ZWQgYnkgQ09TIElELgorCisgICAzLiBQZXItc29ja2V0IFBTUiBmZWF0 dXJlcyBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKKworICAgICAgYGBgCisgICAgICBzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQgZmVhdF9tYXNrOworICAgICAg ICAgIHVuc2lnbmVkIGludCBucl9mZWF0OworICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgZmVh dF9saXN0OworICAgICAgICAgIHVuc2lnbmVkIGludCBjb3NfcmVmW01BWF9DT1NfUkVHX05VTV07 CisgICAgICAgICAgc3BpbmxvY2tfdCByZWZfbG9jazsKKyAgICAgIH07CisgICAgICBgYGAKKwor ICAgICAgV2UgY29sbGVjdCBhbGwgUFNSIGFsbG9jYXRpb24gZmVhdHVyZXMgaW5mb3JtYXRpb24g b2YgYSBzb2NrZXQgaW4gdGhpcworICAgICAgYHN0cnVjdCBwc3Jfc29ja2V0X2luZm9gLgorCisg ICAgICAtIE1lbWJlciBgZmVhdF9tYXNrYAorCisgICAgICAgIGBmZWF0X21hc2tgIGlzIGEgYml0 bWFwLCB0byBpbmRpY2F0ZSB3aGljaCBmZWF0dXJlIGlzIGVuYWJsZWQgb24gY3VycmVudAorICAg ICAgICBzb2NrZXQuIFNlZSB2YWx1ZXMgZGVmaW5lZCBpbiAnZW51bSBwc3JfZmVhdF90eXBlJy4g RS5nLgorCisgICAgICAgIGJpdCAwOiBMMyBDQVQgc3RhdHVzLgorICAgICAgICBiaXQgMTogTDMg Q0RQIHN0YXR1cy4KKyAgICAgICAgYml0IDI6IEwyIENBVCBzdGF0dXMuCisKKyAgICAgIC0gTWVt YmVyIGBucl9mZWF0YAorCisgICAgICAgIGBucl9mZWF0YCBtZWFucyB0aGUgbnVtYmVyIG9mIFBT UiBmZWF0dXJlcyBlbmFibGVkLgorCisgICAgICAtIE1lbWJlciBgY29zX3JlZmAKKworICAgICAg ICBgY29zX3JlZmAgaXMgYW4gYXJyYXkgd2hpY2ggbWFpbnRhaW5zIHRoZSByZWZlcmVuY2Ugb2Yg b25lIENPUy4gSXQgbWFwcworICAgICAgICB0byBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19OVU1d IGluIGBzdHJ1Y3QgZmVhdF9ub2RlYC4gSWYgb25lIENPUyBpcworICAgICAgICB1c2VkIGJ5IG9u ZSBkb21haW4sIHRoZSBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSB3aWxsIGluY3JlYXNlIGJ5IG9u ZS4gSWYKKyAgICAgICAgYSBkb21haW4gcmVsZWFzZXMgdGhlIENPUywgdGhlIHJlZmVyZW5jZSB3 aWxsIGRlY3JlYXNlIGJ5IG9uZS4gVGhlIGFycmF5CisgICAgICAgIGlzIGluZGV4ZWQgYnkgQ09T IElELgorCisgICA0LiBGZWF0dXJlIG9wZXJhdGlvbiBmdW5jdGlvbnMgc3RydWN0dXJlCisKKyAg ICAgIGBgYAorICAgICAgc3RydWN0IGZlYXRfb3BzIHsKKyAgICAgICAgICB1bnNpZ25lZCBpbnQg KCpnZXRfY29zX21heCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7CisgICAgICAgICAg aW50ICgqZ2V0X2ZlYXRfaW5mbykoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVpbnQzMl90IGFycmF5 X2xlbik7CisgICAgICAgICAgaW50ICgqZ2V0X3ZhbCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdCwgdW5zaWduZWQgaW50IGNvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNi bV90eXBlIHR5cGUsIHVpbnQ2NF90ICp2YWwpOworICAgICAgICAgIHVuc2lnbmVkIGludCAoKmdl dF9jb3NfbnVtKShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0KTsKKyAgICAgICAgICBpbnQg KCpnZXRfb2xkX3ZhbCkodWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zKTsKKyAgICAgICAgICBpbnQgKCpzZXRfbmV3X3Zh bCkodWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCBvbGRfY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNibV90 eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pOworICAg ICAgICAgIGludCAoKmNvbXBhcmVfdmFsKShjb25zdCB1aW50NjRfdCB2YWxbXSwgY29uc3Qgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGNvcywgYm9vbCAqZm91bmQpOworICAgICAgICAgIHVuc2lnbmVkIGludCAoKmZpdHNf Y29zX21heCkoY29uc3QgdWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvcyk7CisgICAgICAgICAg aW50ICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29zLCBjb25zdCB1aW50NjRfdCB2YWxbXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQpOworICAg ICAgfTsKKyAgICAgIGBgYAorCisgICAgICBXZSBhYnN0cmFjdCBhYm92ZSBjYWxsYmFjayBmdW5j dGlvbnMgdG8gZW5jYXBzdWxhdGUgdGhlIGZlYXR1cmUgc3BlY2lmaWMKKyAgICAgIGJlaGF2aW9y cyBpbnRvIHRoZW0uIFRoZW4sIGl0IGlzIGVhc3kgdG8gYWRkIGEgbmV3IGZlYXR1cmUuIFdlIGp1 c3QgbmVlZDoKKyAgICAgICAgICAxKSBJbXBsZW1lbnQgc3VjaCBvcHMgYW5kIGNhbGxiYWNrIGZ1 bmN0aW9ucyBmb3IgZXZlcnkgZmVhdHVyZS4KKyAgICAgICAgICAyKSBSZWdpc3RlciB0aGUgb3Bz IGludG8gYHN0cnVjdCBmZWF0X25vZGVgLgorICAgICAgICAgIDMpIEFkZCB0aGUgZmVhdHVyZSBp bnRvIGZlYXR1cmUgbGlzdCBkdXJpbmcgQ1BVIGluaXRpYWxpemF0aW9uLgorCisjIExpbWl0YXRp b25zCisKK0NBVC9DRFAgY2FuIG9ubHkgd29yayBvbiBIVyB3aGljaCBlbmFibGVzIGl0KGNoZWNr IGJ5IENQVUlEKS4gU28gZmFyLCB0aGVyZSBpcworbm8gSFcgd2hpY2ggZW5hYmxlcyBib3RoIEwy IENBVCBhbmQgTDMgQ0FUL0NEUC4gQnV0IFNXIGltcGxlbWVudGF0aW9uIGhhcyBjb25zLQoraWRl cmVkIHN1Y2ggc2NlbmFyaW8gdG8gZW5hYmxlIGJvdGggTDIgQ0FUIGFuZCBMMyBDQVQvQ0RQLgor CisjIFRlc3RpbmcKKworV2UgY2FuIGV4ZWN1dGUgYWJvdmUgeGwgY29tbWFuZHMgdG8gdmVyaWZ5 IEwyIENBVCBhbmQgTDMgQ0FUL0NEUCBvbiBkaWZmZXJlbnQKK0hXcyBzdXBwb3J0IHRoZW0uCisK K0ZvciBleGFtcGxlOgorICAgIHJvb3RAOn4kIHhsIHBzci1od2luZm8gLS1jYXQKKyAgICBDYWNo ZSBBbGxvY2F0aW9uIFRlY2hub2xvZ3kgKENBVCk6IEwyCisgICAgU29ja2V0IElEICAgICAgIDog MAorICAgIE1heGltdW0gQ09TICAgICA6IDMKKyAgICBDQk0gbGVuZ3RoICAgICAgOiA4CisgICAg RGVmYXVsdCBDQk0gICAgIDogMHhmZgorCisgICAgcm9vdEA6fiQgeGwgcHNyLWNhdC1jYm0tc2V0 IC1sMiAxIDB4N2YKKworICAgIHJvb3RAOn4kIHhsIHBzci1jYXQtc2hvdyAtbDIgMQorICAgIFNv Y2tldCBJRCAgICAgICA6IDAKKyAgICBEZWZhdWx0IENCTSAgICAgOiAweGZmCisgICAgICAgSUQg ICAgICAgICAgICAgICAgICAgICBOQU1FICAgICAgICAgICAgIENCTQorICAgICAgICAxICAgICAg ICAgICAgICAgICB1YnVudHUxNCAgICAgICAgICAgIDB4N2YKKworIyBBcmVhcyBmb3IgaW1wcm92 ZW1lbnQKKworTi9BCisKKyMgS25vd24gaXNzdWVzCisKK04vQQorCisjIFJlZmVyZW5jZXMKKwor IklOVEVMwq4gUkVTT1VSQ0UgRElSRUNUT1IgVEVDSE5PTE9HWSAoSU5URUzCriBSRFQpIEFMTE9D QVRJT04gRkVBVFVSRVMiIFtJbnRlbMKuIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3 YXJlIERldmVsb3BlciBNYW51YWxzLCB2b2wzXShodHRwOi8vd3d3LmludGVsLmNvbS9jb250ZW50 L3d3dy91cy9lbi9wcm9jZXNzb3JzL2FyY2hpdGVjdHVyZXMtc29mdHdhcmUtZGV2ZWxvcGVyLW1h bnVhbHMuaHRtbCkKKworIyBIaXN0b3J5CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZSAgICAgICBS ZXZpc2lvbiBWZXJzaW9uICBOb3RlcworLS0tLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyMDE2LTA4LTEyIDEuMCAg ICAgIFhlbiA0LjkgIERlc2lnbiBkb2N1bWVudCB3cml0dGVuCisyMDE3LTAyLTEzIDEuNiAgICAg IFhlbiA0LjkgIERlc2lnbiBkb2N1bWVudCB3cml0dGVuCistLS0tLS0tLS0tIC0tLS0tLS0tIC0t LS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gCjEu OS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu LWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3Rz Lnhlbi5vcmcveGVuLWRldmVsCg==