From owner-freebsd-ports-bugs@FreeBSD.ORG Mon Nov 1 15:10:09 2010 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B55D106567A for ; Mon, 1 Nov 2010 15:10:09 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 71BC48FC18 for ; Mon, 1 Nov 2010 15:10:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id oA1FA9Z2072616 for ; Mon, 1 Nov 2010 15:10:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id oA1FA9Zu072615; Mon, 1 Nov 2010 15:10:09 GMT (envelope-from gnats) Date: Mon, 1 Nov 2010 15:10:09 GMT Message-Id: <201011011510.oA1FA9Zu072615@freefall.freebsd.org> To: freebsd-ports-bugs@FreeBSD.org From: Alex Deiter Cc: Subject: Re: ports/151744: New port net/appkonference, a high-performance Asterisk voice/video conferencing plugin X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Alex Deiter List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Nov 2010 15:10:09 -0000 The following reply was made to PR ports/151744; it has been noted by GNATS. From: Alex Deiter To: bug-followup@FreeBSD.org, alex.deiter@gmail.com Cc: Subject: Re: ports/151744: New port net/appkonference, a high-performance Asterisk voice/video conferencing plugin Date: Mon, 1 Nov 2010 17:35:15 +0300 --20cf30549daf7a8c210493feb76d Content-Type: text/plain; charset=UTF-8 Hi, New version for net/appkonference. Changes: - sync with GIT version - new patch for BigBlueButton compability -- Alex Deiter --20cf30549daf7a8c210493feb76d Content-Type: text/plain; charset=US-ASCII; name="appkonference.shar.txt" Content-Disposition: attachment; filename="appkonference.shar.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gfzg1qyg0 IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUgYW55 dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50ZXJpbmcg InNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQg ZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBlcm1p c3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJYXBwa29uZmVyZW5jZQojCWFw cGtvbmZlcmVuY2UvZmlsZXMKIwlhcHBrb25mZXJlbmNlL2ZpbGVzL3BhdGNoLWJpZ2JsdWVidXR0 b24KIwlhcHBrb25mZXJlbmNlL3BrZy1kZXNjcgojCWFwcGtvbmZlcmVuY2UvZGlzdGluZm8KIwlh cHBrb25mZXJlbmNlL01ha2VmaWxlCiMKZWNobyBjIC0gYXBwa29uZmVyZW5jZQpta2RpciAtcCBh cHBrb25mZXJlbmNlID4gL2Rldi9udWxsIDI+JjEKZWNobyBjIC0gYXBwa29uZmVyZW5jZS9maWxl cwpta2RpciAtcCBhcHBrb25mZXJlbmNlL2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4IC0g YXBwa29uZmVyZW5jZS9maWxlcy9wYXRjaC1iaWdibHVlYnV0dG9uCnNlZCAncy9eWC8vJyA+YXBw a29uZmVyZW5jZS9maWxlcy9wYXRjaC1iaWdibHVlYnV0dG9uIDw8ICcxMGQwNTY0MDY5ODkzYzdl NTBiNGQ2Y2EzM2JhMTY5NCcKWC0tLSAuL0NIQU5HRVMub3JpZwkyMDEwLTA4LTE4IDE0OjU2OjIz LjAwMDAwMDAwMCArMDAwMApYKysrIC4vQ0hBTkdFUwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAw MDAwMCArMDAwMApYQEAgLTE1NSwyNCArMTU1LDMgQEAKWCBDaGFuZ2VkIHByZXByb2Nlc3NvciBm bGFnLCBBUFBfS09ORkVSRU5DRV9ERUJVRywgc28gdGhhdCBkZWJ1ZyBsb2dnaW5nIGlzClggZW5h YmxlZCBvbmx5IGlmIGl0J3MgZGVmaW5lZC4gVG8gZW5hYmxlIGRlYnVnIGxvZ2dpbmc6IGVkaXQg dGhlIE1ha2VmaWxlIG9yClggc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmU6IG1ha2UgQVBQX0tP TkZFUkVOQ0VfREVCVUc9MS4KWC0KWC1SZW1vdmVkIGNoYW5uZWwgYW5kIGNvbmZlcmVuY2UgbmFt ZSBzdHJpbmdzIGZyb20gdGhlIG1lbWJlciBjb250cm9sIGJsb2NrLiBUaGUKWC1mb3JtZXIgY2Fu IGJlIHJlZmVyZW5jZWQgdmlhIHRoZSBjaGFubmVsIHBvaW50ZXIgaW4gdGhlIG1lbWJlciBjb250 cm9sIGJsb2NrLgpYLVRoZSBsYXR0ZXIgY2FuIGJlIHJlZmVyZW5jZWQgdmlhIGEgcG9pbnRlciB0 byBjb25mZXJlbmNlIGNvbnRyb2wgYmxvY2sgd2hpY2gKWC13YXMgYWRkZWQgdG8gdGhlIG1lbWJl ciBjb250b2wgYmxvY2sgZm9yIHRoaXMgcHVycG9zZS4KWC0KWC1DaGFuZ2VkIHRoZSBjb25mZXJl bmNlIHN0YXRlIGV2ZW50IGltcGxlbWVudGF0aW9uIHNvIHRoYXQgc3BlYWtpbmcvc2lsZW50Clgt bm90aWZpY2F0aW9ucyBhcmUgZ2VuZXJhdGVkIGluIHRoZSBtZW1iZXIgdGhyZWFkLiBUaGUgYWR2 YW50YWdlIG9mIHRoaXMKWC1hcHByb2FjaCBpcyB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSB0aGUg Y29uZmVyZW5jZSB0aHJlYWQgdG8gcGVyaW9kaWNhbGx5Clgtc2NhbiB0aGUgbWVtYmVyIGxpc3Qg Zm9yIG1lbWJlciBzdGF0ZSBjaGFuZ2VzLgpYLQpYLUNoYW5nZWQgIngiIG9wdGlvbiBzbyB0aGF0 IGFsbCBtZW1iZXJzIGFyZSBraWNrZWQgYW5kIHRoZSBjb25mZXJlbmNlIGVuZHMgd2hlbgpYLXRo ZSBsYXN0IG1vZGVyYXRvciBsZWF2ZXMgdGhlIGNvbmZlcmVuY2UuClgtClgtQWRkZWQgYSBNYWtl ZmlsZSB2YXJpYWJsZSBBQ19VU0VfU1BFRVguIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHVuZGVmaW5l ZCwgdGhhdApYLWlzLCB0aGUgU1BFRVggY29kZWMgaXMgbm90IGF2YWlsYWJsZS4KWC0KWC1DaGFu Z2VkIHRoZSBmb3JtYXQgb2YgdGhlIGNvbmZlcmVuY2UgbGlzdCBjb21tYW5kLiBTcGVjaWZpY2Fs bHksIHJlbW92ZWQgdGhlClgtYnVja2V0IGZpZWxkIGFuZCBhZGRlZCBhIGR1cmF0aW9uIGZpZWxk LiBUaGUgZHVyYXRpb24gZmllbGQgaW5kaWNhdGVzIGVpdGhlcgpYLXRoZSBjb25mZXJlbmNlIGVs YXBzZWQgdGltZSB3aGVuIGNvbmZlcmVuY2VzIGFyZSBsaXN0ZWQgb3IgdGhlIG1lbWJlciBlbGFw c2VkClgtdGltZSB3aGVuIG1lbWJlcnMgYXJlIGxpc3RlZC4KWC0tLSAuL0RpYWxwbGFuLnR4dC5v cmlnCTIwMTAtMDgtMTAgMjA6MDM6NTQuMDAwMDAwMDAwICswMDAwClgrKysgLi9EaWFscGxhbi50 eHQJMjAxMC0xMS0wMSAxNzowNzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0xOSw5ICsxOSwxMCBA QApYIAknVicgOiBlbmFibGUgc3BlZXggcHJlcHJvY2Vzc2luZyBWb2ljZSBBY3Rpdml0eSBEZXRl Y3Rpb24gClggCSdEJyA6IGVuYWJsZSBzcGVleCBwcmVwcm9jZXNzaW5nIERlLW5vaXNlClggCSdB JyA6IGVuYWJsZSBzcGVleCBwcmVwcm9jZXNzaW5nIEF1dG9tYXRpYyBHYWluIENvbnRyb2wKWC0J J1QnIDogdGVsZXBob25lLCBzbyBzcGVleCBwcmVwcm9jZXNzaW5nIHNob3VsZCBiZSBlbmFibGVk ClgrCSdUJyA6IG1lbWJlciBjb25uZWN0cyB0aHJvdWdoIFphcHRlbCwgc28gc3BlZXggcHJlcHJv Y2Vzc2luZyBzaG91bGQgYmUgZW5hYmxlZApYIApYIAlEVE1GIG9wdGlvbnM6ClgrCSdzJyA6IGFs bG93cyBEVE1GIGZ1bmN0aW9ucyBsaWtlIG11dGluZywgZXRjIChzYW1lIGFzIE1lZXRNZSBtZW51 OiAqMSA9IG11dGUvdW5tdXRlLCBldGMpClggCSdYJyA6IGVuYWJsZSBEVE1GIHN3aXRjaDogdmlk ZW8gY2FuIGJlIHN3aXRjaGVkIGJ5IHVzZXJzIHVzaW5nIERUTUYuIERvIG5vdCB1c2Ugd2l0aCAn UycuClggCSdSJyA6IGVuYWJsZSBEVE1GIHJlbGF5OiBEVE1GIHRvbmVzIGdlbmVyYXRlIGEgbWFu YWdlciBldmVudApYIAlJZiBuZWl0aGVyICdYJyBub3IgJ1InIGFyZSBwcmVzZW50LCBEVE1GIHRv bmVzIHdpbGwgYmUgZm9yd2FyZGVkIHRvIGFsbCBtZW1iZXJzIGluIHRoZSBjb25mZXJlbmNlClhA QCAtMzcsOSArMzgsMTUgQEAKWCAJTWlzY2VsbGFuZW91czoKWCAJJ3QnIDogbWVtYmVyIGFjY2Vw dHMgdGV4dCBiYXNlZCBjb250cm9sIG1lc3NhZ2VzLiAgVGhlIG1lc3NhZ2VzIGFyZSBkZXNjcmli ZWQgaW4gYSBzZXBhcmF0ZSBkb2N1bWVudApYIAknTicgOiBBc3N1bWUgdGhhdCB0aGUgbWVtYmVy IHN0YXJ0cyBvZmYgd2l0aCBjYW1lcmEgZGlzYWJsZWQuClgtCSd4JyA6IHdoZW4gdGhlIGxhc3Qg bW9kZXJhdG9yIGxlYXZlcywgYWxsIGNvbmZlcmVlcyBhcmUga2lja2VkIGFuZCBjb25mZXJlbmNl IGVuZHMuClgrCSd4JyA6IGlmIGEgbW9kZXJhdG9yIGxlYXZlcywgYWxsIGNvbmZlcmVlcyBhcmUg a2lja2VkIGFuZCBjb25mZXJlbmNlIGVuZHMuClggCSdhJyA6IFYgKyBUClggCSdIJyA6IHBsYXkg bXVzaWMgb24gaG9sZCBpZiBvbmx5IG9uZSBtZW1iZXIgaW4gY29uZmVyZW5jZQpYKwkndycgOiBw bGF5IG11c2ljIG9uIGhvbGQgZm9yIGFsbCBtZW1iZXJzIG9mIHRoZSBjb25mZXJlbmNlIHVudGls IGEgbWFya2VkIG1vZGVyYXRvciAobWFya2VkIHdpdGggJ00nIGZsYWcpIGpvaW5zClgrCSdyJyA6 IHJlY29yZCB0aGUgY29uZmVyZW5jZS4gIGl0IHdpbGwgYmUgcmVjb3JkZWQgdG8gS09ORkVSRU5D RV9SRUNPUkRJTkdGSUxFIHdpdGggdGhlIGZvcm1hdCBLT05GRVJFTkNFX1JFQ09SRElOR0ZPUk1B VApYKwkJZGVmYXVsdCBmb3IgS09ORkVSRU5DRV9SRUNPUkRJTkdGSUxFIGlzOiBrb25mZXJlbmNl LXtjb25mZXJlbmNlLW5hbWV9LXttZW1iZXItdW5pcXVlaWR9ClgrCQlkZWZhdWx0IGZvciBLT05G RVJFTkNFX1JFQ09SRElOR0ZPUk1BVCBpczogd2F2ClgrCSduJyA6IGRvIG5vdCBjcmVhdGUgbmV3 IGNvbmZlcmVuY2UsIG9ubHkgam9pbiBleGlzdGluZyBvbmVzLgpYKwkJaWYgY29uZmVyZW5jZSBk b2VzIG5vdCBleGlzdCBLT05GRVJFTkNFIGlzIHNldCB0byBOT1RGT1VORApYIApYIAlGdXR1cmUg ZGV2ZWxvcG1lbnQgKHRoZXNlIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0KToKWCAJPwpYQEAgLTU3 LDYgKzY0LDcgQEAKWCAJbWF4X3VzZXJzPTxpbnQ+IDogTGltaXQgY29uZmVyZW5jZSBwYXJ0aWNp cGFudHMgdG8gbWF4X3VzZXJzClggCXR5cGU9PHN0cmluZz46IFR5cGUgaWRlbnRpZmllcgpYIAlz cHk9PHN0cmluZz46IENoYW5uZWwgbmFtZSB0byBzcHkKWCsJd2VsY29tZV9wcm9tcHQ9PHN0cmlu Zz46IEZpbGUgdG8gcGxheWJhY2sgYWZ0ZXIgYSBzdWNjZXNzZnVsIGpvaW4gKFBJTiB2ZXJpZmll ZCksIGJ1dCBiZWZvcmUgY29ubmVjdGluZyBjb25mZXJlbmNlIGF1ZGlvClggClggCTMuIEV4YW1w bGVzClggClgtLS0gLi9jbGkuYy5vcmlnCTIwMTAtMDgtMTggMTY6MTI6NDEuMDAwMDAwMDAwICsw MDAwClgrKysgLi9jbGkuYwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAg LTkxLDcgKzkxLDcgQEAKWCAJaWYgKCBhcmdjIDwgMiApClggCQlyZXR1cm4gU0hPV1VTQUdFIDsK WCAKWC0JYXN0X2NsaSggZmQsICJhcHBfa29uZmVyZW5jZSByZWxlYXNlICVzXG4iLCBSRUxFQVNF KSA7ClgrCWFzdF9jbGkoIGZkLCAiYXBwX2tvbmZlcmVuY2UgcmV2aXNpb24gJXNcbiIsIFJFVklT SU9OKSA7ClggClggCXJldHVybiBTVUNDRVNTIDsKWCB9ClhAQCAtNTMyLDcgKzUzMiw3IEBAClgg CSAgICByZXR1cm4gRkFJTFVSRTsKWCAJfQpYIApYLQltZW1iZXItPm11dGVfYXVkaW8gPSAxOwpY KwltZW1iZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCAKWCAJaWYgKCAhLS1t ZW1iZXItPnVzZV9jb3VudCAmJiBtZW1iZXItPmRlbGV0ZV9mbGFnICkKWCAJCWFzdF9jb25kX3Np Z25hbCAoICZtZW1iZXItPmRlbGV0ZV92YXIgKSA7ClhAQCAtNTQxLDcgKzU0MSwxMSBAQApYIAlt YW5hZ2VyX2V2ZW50KApYIAkJRVZFTlRfRkxBR19DQUxMLApYIAkJIkNvbmZlcmVuY2VNZW1iZXJN dXRlIiwKWCsJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJIk1lbWJlcklkOiAlZFxyXG4i ClggCQkiQ2hhbm5lbDogJXNcclxuIiwKWCsJCW1lbWJlci0+Y29uZl9uYW1lLApYKwkJbWVtYmVy LT5pZCwKWCAJCWNoYW5uZWwKWCAJKSA7ClggClhAQCAtNzQ1LDcgKzc0OSw3IEBAClggCSAgICBy ZXR1cm4gRkFJTFVSRTsKWCAJfQpYIApYLQltZW1iZXItPm11dGVfYXVkaW8gPSAwOwpYKwltZW1i ZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCAKWCAJaWYgKCAhLS1tZW1iZXIt PnVzZV9jb3VudCAmJiBtZW1iZXItPmRlbGV0ZV9mbGFnICkKWCAJCWFzdF9jb25kX3NpZ25hbCAo ICZtZW1iZXItPmRlbGV0ZV92YXIgKSA7ClhAQCAtNzUzLDggKzc1NywxMiBAQApYIApYIAltYW5h Z2VyX2V2ZW50KApYIAkJRVZFTlRfRkxBR19DQUxMLApYLQkJIkNvbmZlcmVuY2VNZW1iZXJVbm11 dGUiLApYKwkJIkNvbmZlcmVuY2VNZW1iZXJVbm11dGUiClgrCQkiQ29uZmVyZW5jZU5hbWU6ICVz XHJcbiIKWCsJCSJNZW1iZXJJZDogJWRcclxuIgpYIAkJIkNoYW5uZWw6ICVzXHJcbiIsClgrCQlt ZW1iZXItPmNvbmZfbmFtZSwKWCsJCW1lbWJlci0+aWQsClggCQljaGFubmVsClggCSkgOwpYIApY LS0tIC4vTWFrZWZpbGUub3JpZwkyMDEwLTA4LTE4IDE2OjAyOjM4LjAwMDAwMDAwMCArMDAwMApY KysrIC4vTWFrZWZpbGUJMjAxMC0xMS0wMSAxNzoxMDoxNS4wMDAwMDAwMDAgKzAwMDAKWEBAIC0x OCwxMSArMTgsMTEgQEAKWCAjClggClggSU5TVEFMTF9QUkVGSVggOj0KWC1JTlNUQUxMX01PRFVM RVNfRElSIDo9ICQoSU5TVEFMTF9QUkVGSVgpL3Vzci9saWIvYXN0ZXJpc2svbW9kdWxlcwpYK0lO U1RBTExfTU9EVUxFU19ESVIgOj0gJChJTlNUQUxMX1BSRUZJWCkvJHtMT0NBTEJBU0V9L2xpYi9h c3Rlcmlzay9tb2R1bGVzClggClgtQVNURVJJU0tfSU5DTFVERV9ESVIgPz0gLi4vYXN0ZXJpc2sv aW5jbHVkZQpYK0FTVEVSSVNLX0lOQ0xVREVfRElSID89ICR7TE9DQUxCQVNFfS9pbmNsdWRlClgg ClgtUkVMRUFTRSA9IDEuNQpYK1JFVklTSU9OID0gMDEuMTEuMjAxMApYIApYICMgdHVybiBhcHBf a29uZmVyZW5jZSBkZWJ1Z2dpbmcgb24gb3Igb2ZmICggMCA9PSBPRkYsIDEgPT0gT04gKQpYIEFQ UF9LT05GRVJFTkNFX0RFQlVHID89IDAKWEBAIC02Nyw3ICs2Nyw3IEBAClggREVCVUcgOj0gLWcK WCAKWCBDRkxBR1MgPSAtcGlwZSAtV2FsbCAtV21pc3NpbmctcHJvdG90eXBlcyAtV21pc3Npbmct ZGVjbGFyYXRpb25zIC1NRCAtTVAgJChERUJVRykKWC1DUFBGTEFHUyA9ICQoSU5DTFVERSkgLURf UkVFTlRSQU5UIC1EX0dOVV9TT1VSQ0UgLURSRUxFQVNFPVwiJChSRUxFQVNFKVwiClgrQ1BQRkxB R1MgPSAkKElOQ0xVREUpIC1EX1JFRU5UUkFOVCAtRF9HTlVfU09VUkNFIC1EUkVWSVNJT049XCIk KFJFVklTSU9OKVwiClggI0NGTEFHUyArPSAtTzIKWCAjQ0ZMQUdTICs9IC1PMyAtbWFyY2g9cGVu dGl1bTMgLW1zc2UgLW1mcG1hdGg9c3NlLDM4NyAtZmZhc3QtbWF0aApYICMgUEVSRjogYmVsb3cg aXMgMTAlIGZhc3RlciB0aGFuIC1PMiBvciAtTzMgYWxvbmUuClhAQCAtODMsMTAgKzgzLDE2IEBA ClggQ1BQRkxBR1MgKz0gLURDUllQVE8KWCBDUFBGTEFHUyArPSAtRENIQU5ORUxfVEFCTEVfU0la RT0kKENIQU5ORUxfVEFCTEVfU0laRSkKWCBDUFBGTEFHUyArPSAtRENPTkZFUkVOQ0VfVEFCTEVf U0laRT0kKENPTkZFUkVOQ0VfVEFCTEVfU0laRSkKWC1DUFBGTEFHUyArPSAtRE9ORU1JWFRIUkVB RApYKyMgTk9URTogSW4gQXN0ZXJpc2tBdWRpb0tvbmYsIHdlIGRpc2FibGUgdGhlIE9ORU1JWFRI UkVBRCAiZmVhdHVyZSIKWCsjICAgSXQgY29uZmxpY3RzIHdpdGggdGhlIHJlY29yZGluZyBmZWF0 dXJlIHdlIGFkZGVkIHNpbmNlIHRoZSBmb3JrIG9mIGFwcF9rb25mZXJlbmNlClgrIyAgIElmIHlv dSBoYXZlIHRoZSBzaW5nbGUgbWl4aW5nIHRocmVhZCBlbmFibGVkLCBzdGFydCBvbmUgY29uZmVy ZW5jZSByZWNvcmRpbmcsIGFuZApYKyMgICBvbmUgbm90IHJlY29yZGluZywgQXN0ZXJpc2sgZGll cy4gIFRoZSByZWNvcmRpbmcgZmVhdHVyZSBjb3VsZCBiZSB1cGRhdGVkIHRvIHdvcmsKWCsjICAg d2l0aCB0aGUgc2luZ2xlIG1peGluZyB0aHJlYWQsIGJ1dCB3ZSB3YW50IHRvIHRha2UgYWR2YW50 YWdlIG9mIG11bHRpLWNvcmUKWCsjICAgcHJvY2Vzc29ycywgc28gd2UganVzdCBkaXNhYmxlIHRo ZSBzaW5nbGUgdGhyZWFkIHNldHRpbmcgaGVyZToKWCsjQ1BQRkxBR1MgKz0gLURPTkVNSVhUSFJF QUQKWCAKWCAjClgtIyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBHLjcyOUEgc3VwcG9ydCAo bmVlZCB0byBoYXZlIHRoZSBhY3R1YWwgY29kZWMgaW5zdGFsbGVkKQpYKyMgVW5jb21tZW50IHRo aXMgaWYgeW91IHdhbnQgRy43MjlBIHN1cHBvcnQgKG5lZWQgdG8gaGF2ZSB0aGUgYWN0dWFsIGNv ZGVjIGluc3RhbGxlZApYICMKWCAjIENQUEZMQUdTICs9IC1EQUNfVVNFX0c3MjlBClggClhAQCAt OTYsOSArMTAyLDkgQEAKWCAjIENQUEZMQUdTICs9IC1EQUNfVVNFX0c3MjIKWCAKWCAjClgtIyBV bmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBTUEVFWCBzdXBwb3J0IChuZWVkIHRvIGhhdmUgdGhl IGFjdHVhbCBjb2RlYyBpbnN0YWxsZWQpClgrIyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBT cGVleCBXaWRlYmFuZCBzdXBwb3J0IChyZXF1aXJlcyBhc3RlcmlzayAxLjggb3IgYmFja3BvcnQg cGF0Y2gpClggIwpYLSMgQ1BQRkxBR1MgKz0gLURBQ19VU0VfU1BFRVgKWCsjIENQUEZMQUdTICs9 IC1EQUNfVVNFX1NQRUVYMTYKWCAKWCBpZmVxICgkKEFQUF9LT05GRVJFTkNFX0RFQlVHKSwgMSkK WCBDUFBGTEFHUyArPSAtREFQUF9LT05GRVJFTkNFX0RFQlVHClhAQCAtMTU3LDEyICsxNjMsMTMg QEAKWCAJJChSTSkgJChUQVJHRVQpClggClggJChUQVJHRVQpOiAkKE9CSlMpClgtCSQoQ0MpIC1w ZyAkKFNPTElOSykgLW8gJEAgJChPQkpTKQpYKwkkKENDKSAkKFNPTElOSykgLW8gJEAgJChPQkpT KQpYIApYIHZhZF90ZXN0OiB2YWRfdGVzdC5vIGxpYnNwZWV4L3ByZXByb2Nlc3MubyBsaWJzcGVl eC9taXNjLm8gbGlic3BlZXgvc21hbGxmdC5vClggCSQoQ0MpICQoUFJPRklMRSkgLW8gJEAgJF4g LWxtClggClggaW5zdGFsbDoKWCsJJChJTlNUQUxMKSAtZCAkKElOU1RBTExfTU9EVUxFU19ESVIp ClggCSQoSU5TVEFMTCkgLW0gNzU1ICQoVEFSR0VUKSAkKElOU1RBTExfTU9EVUxFU19ESVIpClgg ClggClgtLS0gLi9hcHBfY29uZmVyZW5jZS5jLm9yaWcJMjAxMC0wOC0xOCAxNjoxNjo0Ni4wMDAw MDAwMDAgKzAwMDAKWCsrKyAuL2FwcF9jb25mZXJlbmNlLmMJMjAxMC0xMS0wMSAxNzowNzo0NC4w MDAwMDAwMDAgKzAwMDAKWEBAIC0yNywxNCArMjcsMTQgQEAKWCAKWCAjaW5jbHVkZSAiYXN0ZXJp c2suaCIKWCAKWC0vLyBTVk4gcmVsZWFzZSBudW1iZXIsIHByb3ZpZGVkIGJ5IG1ha2UKWC0jaWZu ZGVmIFJFTEVBU0UKWC0jZGVmaW5lIFJFTEVBU0UgInVua25vd24iClgrLy8gU1ZOIHJldmlzaW9u IG51bWJlciwgcHJvdmlkZWQgYnkgbWFrZQpYKyNpZm5kZWYgUkVWSVNJT04KWCsjZGVmaW5lIFJF VklTSU9OICJ1bmtub3duIgpYICNlbmRpZgpYIApYLXN0YXRpYyBjaGFyICpyZWxlYXNlID0gUkVM RUFTRTsKWCtzdGF0aWMgY2hhciAqcmV2aXNpb24gPSBSRVZJU0lPTjsKWCAKWC1BU1RFUklTS19G SUxFX1ZFUlNJT04oX19GSUxFX18sIFJFTEVBU0UpClgrQVNURVJJU0tfRklMRV9WRVJTSU9OKF9f RklMRV9fLCBSRVZJU0lPTikKWCAKWCAjaW5jbHVkZSAiYXBwX2NvbmZlcmVuY2UuaCIKWCAjaW5j bHVkZSAiY29tbW9uLmgiClhAQCAtNTksNyArNTksMTMgQEAKWCBzdGF0aWMgY2hhciAqc3lub3Bz aXMyID0gIkNoYW5uZWwgSW5kZXBlbmRlbnQgQ29uZmVyZW5jZSBDb3VudCI7Clggc3RhdGljIGNo YXIgKmRlc2NyaXAyID0gIkNoYW5uZWwgSW5kZXBlbmRlbnQgQ29uZmVyZW5jZSBDb3VudCBBcHBs aWNhdGlvbiI7ClggClgtc3RhdGljIGludCBhcHBfa29uZmVyZW5jZV9tYWluKHN0cnVjdCBhc3Rf Y2hhbm5lbCogY2hhbiwgdm9pZCogZGF0YSkKWCsjaWYgQVNURVJJU0tfVkVSU0lPTl9OVU0gPj0g MTA4MDAKWCt0eXBlZGVmIGNvbnN0IGNoYXIgKmFzdF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXI7Clgr I2Vsc2UKWCt0eXBlZGVmIHZvaWQgKmFzdF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXI7ClgrI2VuZGlm ClgrClgrc3RhdGljIGludCBhcHBfa29uZmVyZW5jZV9tYWluKHN0cnVjdCBhc3RfY2hhbm5lbCog Y2hhbiwgYXN0X2FwcGxpY2F0aW9uX3BhcmFtZXRlciBkYXRhKQpYIHsKWCAJaW50IHJlcyA7Clgg CXN0cnVjdCBhc3RfbW9kdWxlX3VzZXIgKnUgOwpYQEAgLTY3LDE0ICs3MywxNCBAQApYIAl1ID0g YXN0X21vZHVsZV91c2VyX2FkZChjaGFuKTsKWCAKWCAJLy8gY2FsbCBtZW1iZXIgdGhyZWFkIGZ1 bmN0aW9uClgtCXJlcyA9IG1lbWJlcl9leGVjKCBjaGFuLCBkYXRhICkgOwpYKwlyZXMgPSBtZW1i ZXJfZXhlYyhjaGFuLCAoY29uc3QgY2hhciopIGRhdGEpOwpYIApYIAlhc3RfbW9kdWxlX3VzZXJf cmVtb3ZlKHUpOwpYIApYIAlyZXR1cm4gcmVzIDsKWCB9ClggClgtc3RhdGljIGludCBhcHBfa29u ZmVyZW5jZWNvdW50X21haW4oc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCB2b2lkKiBkYXRhKQpY K3N0YXRpYyBpbnQgYXBwX2tvbmZlcmVuY2Vjb3VudF9tYWluKHN0cnVjdCBhc3RfY2hhbm5lbCog Y2hhbiwgYXN0X2FwcGxpY2F0aW9uX3BhcmFtZXRlciBkYXRhKQpYIHsKWCAJaW50IHJlcyA7Clgg CXN0cnVjdCBhc3RfbW9kdWxlX3VzZXIgKnUgOwpYQEAgLTgyLDcgKzg4LDcgQEAKWCAJdSA9IGFz dF9tb2R1bGVfdXNlcl9hZGQoY2hhbik7ClggClggCS8vIGNhbGwgY291bnQgdGhyZWFkIGZ1bmN0 aW9uClgtCXJlcyA9IGNvdW50X2V4ZWMoIGNoYW4sIGRhdGEgKSA7ClgrCXJlcyA9IGNvdW50X2V4 ZWMoY2hhbiwgKGNvbnN0IGNoYXIgKikgZGF0YSk7ClggClggCWFzdF9tb2R1bGVfdXNlcl9yZW1v dmUodSk7ClggClhAQCAtMTEyLDcgKzExOCw3IEBAClggewpYIAlpbnQgcmVzID0gMDsKWCAKWC0J YXN0X2xvZyggTE9HX05PVElDRSwgIkxvYWRpbmcgYXBwX2tvbmZlcmVuY2UgbW9kdWxlLCByZWxl YXNlPSVzXG4iLCByZWxlYXNlKSA7ClgrCWFzdF9sb2coIExPR19OT1RJQ0UsICJMb2FkaW5nIGFw cF9rb25mZXJlbmNlIG1vZHVsZSwgcmV2aXNpb249JXNcbiIsIHJldmlzaW9uKSA7ClggClggCWlu aXRfY29uZmVyZW5jZSgpIDsKWCAKWC0tLSAuL2FwcF9jb25mZXJlbmNlLmgub3JpZwkyMDEwLTA4 LTE3IDE4OjE2OjM1LjAwMDAwMDAwMCArMDAwMApYKysrIC4vYXBwX2NvbmZlcmVuY2UuaAkyMDEw LTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAgLTk0LDUzICs5NCwyMSBAQApYIC8v ICNkZWZpbmUgREVCVUdfT1VUUFVUX1BDTQpYIApYIC8vClgtLy8gISEhIFRIRVNFIENPTlNUQU5U UyBTSE9VTEQgQkUgQ0xFQU5FRCBVUCBBTkQgQ0xBUklGSUVEICEhIQpYKy8vIERlZmluZXMgcmVs YXRlZCB0byB0aGUgYXVkaW8gZm9ybWF0IGluIHdoaWNoIHRoZSBtaXhpbmcgaGFwcGVucy4KWCsv LyAoU2lnbmVkLCAxNi1iaXQgbGluZWFyLCA4IGtIeiBvciAxNiBrSHopClggLy8KWC0KWC0vLwpY LS8vIHNhbXBsZSBpbmZvcm1hdGlvbiBmb3IgQVNUX0ZPUk1BVF9TTElORUFSIGZvcm1hdApYLS8v ClgtClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLSNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JBVEUg ODAwMApYKyNpZiBkZWZpbmVkKEFDX1VTRV9HNzIyKSB8fCBkZWZpbmVkKEFDX1VTRV9TUEVFWDE2 KQpYKyNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JBVEUJCTE2MDAwCS8qIEh6ICovClgrI2RlZmlu ZSBBU1RfQ09ORl9GT1JNQVQJCQlBU1RfRk9STUFUX1NMSU5FQVIxNgpYICNlbHNlClgtI2RlZmlu ZSBBU1RfQ09ORl9TQU1QTEVfUkFURSAxNjAwMApYKyNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1JB VEUJCTgwMDAJLyogSHogKi8KWCsjZGVmaW5lIEFTVF9DT05GX0ZPUk1BVAkJCUFTVF9GT1JNQVRf U0xJTkVBUgpYICNlbmRpZgpYLSNkZWZpbmUgQVNUX0NPTkZfU0FNUExFX1NJWkUgMTYKWC0jZGVm aW5lIEFTVF9DT05GX0ZSQU1FX0lOVEVSVkFMIDIwClgtLy9uZWlscyNkZWZpbmUgQVNUX0NPTkZf RlJBTUVfSU5URVJWQUwgMzAKWC0KWC0vLwpYLS8vIHNvLCBzaW5jZSB3ZSBjeWNsZSBhcHByb3hp bWF0ZWx5IGV2ZXJ5IDIwbXMsClgtLy8gd2UgY2FuIGNvbXB1dGUgdGhlIGZvbGxvd2luZyB2YWx1 ZXM6ClgtLy8KWC0vLyAxNjAgc2FtcGxlcyBwZXIgMjAgbXMgZnJhbWUgLW9yLQpYLS8vICggODAw MCBzYW1wbGVzLXBlci1zZWNvbmQgKiAoIDIwIG1zIC8gMTAwMCBtcy1wZXItc2Vjb25kICkgKSA9 IDE2MCBzYW1wbGVzClgtLy8KWC0vLyAzMjAgYnl0ZXMgKCAyNTYwIGJpdHMgKSBvZiBkYXRhICAy MCBtcyBmcmFtZSAtb3ItClgtLy8gKCAxNjAgc2FtcGxlcyAqIDE2IGJpdHMtcGVyLXNhbXBsZSAv IDggYml0cy1wZXItYnl0ZSApID0gMzIwIGJ5dGVzClgtLy8KWC0KWC0jaWZuZGVmCUFDX1VTRV9H NzIyClgtLy8gMTYwIHNhbXBsZXMgMTYtYml0IHNpZ25lZCBsaW5lYXIKWC0jZGVmaW5lIEFTVF9D T05GX0JMT0NLX1NBTVBMRVMgMTYwClgtI2Vsc2UKWC0jZGVmaW5lIEFTVF9DT05GX0JMT0NLX1NB TVBMRVMgMzIwClgtI2VuZGlmClgtClgtLy8gMiBieXRlcyBwZXIgc2FtcGxlICggaS5lLiAxNi1i aXQgKQpYLSNkZWZpbmUgQVNUX0NPTkZfQllURVNfUEVSX1NBTVBMRSAyClgtClgtI2lmbmRlZglB Q19VU0VfRzcyMgpYLS8vIDMyMCBieXRlcyBmb3IgZWFjaCAxNjAgc2FtcGxlIGZyYW1lIG9mIDE2 LWJpdCBhdWRpbwpYLSNkZWZpbmUgQVNUX0NPTkZfRlJBTUVfREFUQV9TSVpFIDMyMApYLSNlbHNl ClgtI2RlZmluZSBBU1RfQ09ORl9GUkFNRV9EQVRBX1NJWkUgNjQwClgtI2VuZGlmClgtClgtLy8g MTAwMCBtcy1wZXItc2Vjb25kIC8gMjAgbXMtcGVyLWZyYW1lID0gNTAgZnJhbWVzLXBlci1zZWNv bmQKWC0jZGVmaW5lIEFTVF9DT05GX0ZSQU1FU19QRVJfU0VDT05EICggMTAwMCAvIEFTVF9DT05G X0ZSQU1FX0lOVEVSVkFMICkKWCsjZGVmaW5lIEFTVF9DT05GX0ZSQU1FX0lOVEVSVkFMCQkyMAkv KiBtcyAqLwpYIApYKyNkZWZpbmUgQVNUX0NPTkZfQkxPQ0tfU0FNUExFUwkJKEFTVF9DT05GX1NB TVBMRV9SQVRFICogQVNUX0NPTkZfRlJBTUVfSU5URVJWQUwgLyAxMDAwKQpYKyNkZWZpbmUgQVNU X0NPTkZfRlJBTUVfREFUQV9TSVpFCShBU1RfQ09ORl9CTE9DS19TQU1QTEVTICogMikKWCsjZGVm aW5lIEFTVF9DT05GX0ZSQU1FU19QRVJfU0VDT05ECSgxMDAwIC8gQVNUX0NPTkZfRlJBTUVfSU5U RVJWQUwpClggClggLy8KWCAvLyBidWZmZXIgYW5kIHF1ZXVlIHZhbHVlcwpYQEAgLTIyOSwxNSAr MTk3LDE2IEBAClggCQlBQ19VTEFXX0lOREVYLApYIAkJQUNfQUxBV19JTkRFWCwKWCAJCUFDX0dT TV9JTkRFWCwKWC0jaWZkZWYJQUNfVVNFX1NQRUVYClggCQlBQ19TUEVFWF9JTkRFWCwKWC0jZW5k aWYKWCAjaWZkZWYJQUNfVVNFX0c3MjlBClggCQlBQ19HNzI5QV9JTkRFWCwKWCAjZW5kaWYKWCAj aWZkZWYJQUNfVVNFX0c3MjIKWCAJCUFDX0c3MjJfSU5ERVgsClggI2VuZGlmClgrI2lmZGVmCUFD X1VTRV9TUEVFWDE2ClgrCQlBQ19TUEVFWDE2X0lOREVYLApYKyNlbmRpZgpYIAkJQUNfU1VQUE9S VEVEX0ZPUk1BVFMKWCAJCX0gOwpYIApYLS0tIC4vY29tbW9uLmgub3JpZwkyMDA5LTA5LTE3IDE1 OjIxOjU5LjAwMDAwMDAwMCArMDAwMApYKysrIC4vY29tbW9uLmgJMjAxMC0xMS0wMSAxNzowNzo0 NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0zMiwxNiArMzIsMTEgQEAKWCAjZGVmaW5lIF9BUFBfQ09O Rl9DT01NT05fSApYIApYICNpbmNsdWRlIDxhc3Rlcmlzay90aW1lLmg+ClgrI2luY2x1ZGUgPGFz dGVyaXNrL3ZlcnNpb24uaD4KWCAKWCAvLyB0eXBlZGVmIGluY2x1ZGVzClggI2luY2x1ZGUgImNv bmZfZnJhbWUuaCIKWCAKWC0vLyBmdW5jdGlvbiBpbmNsdWRlc2VlClgtLy8jaW5jbHVkZSAibWVt YmVyLmgiClgtI2luY2x1ZGUgImNvbmZlcmVuY2UuaCIKWC0jaW5jbHVkZSAiZnJhbWUuaCIKWC0j aW5jbHVkZSAiY2xpLmgiClgtClggLyogVXRpbGl0eSBmdW5jdGlvbnMgKi8KWCAKWCAvKiBMT0cg dGhlIHRpbWUgdGFrZW4gdG8gZXhlY3V0ZSBhIGZ1bmN0aW9uIChsaWtlIGxvY2sgYWNxdWlzaXRp b24gKi8KWEBAIC02NSw0ICs2MCw0NiBAQApYIApYIGNvbnN0IGNoYXIgKmFyZ3VtZW50X2RlbGlt aXRlciA7ClggClgrLy8gaGVscGVyIG1hY3JvcyBhbmQgZnVuY3Rpb25zIHRvIG1ha2UgYnVpbGRp bmcgZm9yIGRpZmZlcmVudCBhc3RlcmlzawpYKy8vIHZlcnNpb25zIGVhc2llcgpYKyNpZiBBU1RF UklTS19WRVJTSU9OX05VTSA+PSAxMDgwMApYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNTX0lO VChmKQkoKGYpLT5zdWJjbGFzcy5pbnRlZ2VyKQpYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNT X0NPREVDKGYpCSgoZiktPnN1YmNsYXNzLmNvZGVjKQpYKyNkZWZpbmUgQVNUX0ZNVF9GT1JNQVRf VAkJIiVsbHUiClgrClgrc3RhdGljIGlubGluZSBjb25zdCBjaGFyICphc3RfY2hhbm5lbF9jYWxs ZXJpZF9udW1iZXIoc3RydWN0IGFzdF9jaGFubmVsICpjaGFuKQpYK3sKWCsJcmV0dXJuIFNfQ09S KGNoYW4tPmNhbGxlci5pZC5udW1iZXIudmFsaWQsClgrCQkgICAgIGNoYW4tPmNhbGxlci5pZC5u dW1iZXIuc3RyLCAiPHVua25vd24+Iik7ClgrfQpYKwpYK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hh ciAqYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShzdHJ1Y3QgYXN0X2NoYW5uZWwgKmNoYW4pClgr ewpYKwlyZXR1cm4gU19DT1IoY2hhbi0+Y2FsbGVyLmlkLm5hbWUudmFsaWQsClgrCQkgICAgIGNo YW4tPmNhbGxlci5pZC5uYW1lLnN0ciwgIjx1bmtub3duPiIpOwpYK30KWCsjZWxzZQpYK3R5cGVk ZWYgdW5zaWduZWQgaW50IGZvcm1hdF90OwpYKwpYKyNkZWZpbmUgQVNUX0ZSQU1FX1NVQkNMQVNT X0lOVChmKQkoKGYpLT5zdWJjbGFzcykKWCsjZGVmaW5lIEFTVF9GUkFNRV9TVUJDTEFTU19DT0RF QyhmKQkoKGYpLT5zdWJjbGFzcykKWCsjZGVmaW5lIEFTVF9GTVRfRk9STUFUX1QJCSIldSIKWCsK WCtzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmFzdF9jaGFubmVsX2NhbGxlcmlkX251bWJlcihz dHJ1Y3QgYXN0X2NoYW5uZWwgKmNoYW4pClgrewpYKwlyZXR1cm4gY2hhbi0+Y2lkLmNpZF9udW0g PyBjaGFuLT5jaWQuY2lkX251bSA6ICJ1bmtub3duIjsKWCt9ClgrClgrc3RhdGljIGlubGluZSBj b25zdCBjaGFyICphc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKHN0cnVjdCBhc3RfY2hhbm5lbCAq Y2hhbikKWCt7ClgrCXJldHVybiBjaGFuLT5jaWQuY2lkX25hbWUgPyBjaGFuLT5jaWQuY2lkX25h bWUgOiAidW5rbm93biI7ClgrfQpYKyNlbmRpZgpYKwpYKy8vIGZ1bmN0aW9uIGluY2x1ZGVzZWUK WCsvLyNpbmNsdWRlICJtZW1iZXIuaCIKWCsjaW5jbHVkZSAiY29uZmVyZW5jZS5oIgpYKyNpbmNs dWRlICJmcmFtZS5oIgpYKyNpbmNsdWRlICJjbGkuaCIKWCsKWCAjZW5kaWYKWC0tLSAuL2NvbmZf ZnJhbWUuaC5vcmlnCTIwMTAtMDgtMTcgMTQ6NTg6MDcuMDAwMDAwMDAwICswMDAwClgrKysgLi9j b25mX2ZyYW1lLmgJMjAxMC0xMS0wMSAxNzowNzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC01Myw2 ICs1Myw5IEBAClggCS8vIHBvaW50ZXIgdG8gdGhlIGZyYW1lJ3Mgb3duZXIKWCAJc3RydWN0IGFz dF9jb25mX21lbWJlciogbWVtYmVyIDsgLy8gd2hvIHNlbnQgdGhpcyBmcmFtZQpYIApYKwkvLyBm cmFtZSBvd25lcidzIHNweSBwYXJ0bmVyClgrCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIHNweV9w YXJ0bmVyIDsgLy8gc3B5ZXIgKG9yIHNweWVlKSB0byByZWNlaXZlIGZyYW1lClgrClggCS8vIGZy YW1lIG1ldGEgZGF0YQpYIC8vCXN0cnVjdCB0aW1ldmFsIHRpbWVzdGFtcCA7ClggLy8JdW5zaWdu ZWQgbG9uZyBjeWNsZWlkIDsKWC0tLSAuL2NvbmZlcmVuY2UuYy5vcmlnCTIwMTAtMDgtMTggMTQ6 NTY6MjMuMDAwMDAwMDAwICswMDAwClgrKysgLi9jb25mZXJlbmNlLmMJMjAxMC0xMS0wMSAxNzow Nzo0NC4wMDAwMDAwMDAgKzAwMDAKWEBAIC0yOSwxNCArMjksMTcgQEAKWCAgKi8KWCAKWCAjaW5j bHVkZSAiYXN0ZXJpc2svYXV0b2NvbmZpZy5oIgpYKyNpbmNsdWRlICJhc3Rlcmlzay92ZXJzaW9u LmgiClggI2luY2x1ZGUgImNvbmZlcmVuY2UuaCIKWCAjaW5jbHVkZSAiYXN0ZXJpc2svdXRpbHMu aCIKWCsjaW5jbHVkZSAiYXN0ZXJpc2svZmlsZS5oIgpYIApYICNpbmNsdWRlICJhc3Rlcmlzay9h cHAuaCIKWCAjaW5jbHVkZSAiYXN0ZXJpc2svc2F5LmgiClggClggI2luY2x1ZGUgImFzdGVyaXNr L211c2ljb25ob2xkLmgiClggClgrClggLy8KWCAvLyBzdGF0aWMgdmFyaWFibGVzClggLy8KWEBA IC02NCw2ICs2Nyw3IEBAClggc3RhdGljIGludCB1cGRhdGVfbWVtYmVyX2Jyb2FkY2FzdGluZyhz dHJ1Y3QgYXN0X2NvbmZlcmVuY2UgKmNvbmYsIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJl ciwgc3RydWN0IGNvbmZfZnJhbWUgKmNmciwgc3RydWN0IHRpbWV2YWwgdGltZSk7ClggI2VuZGlm ClggClgrClggLy8KWCAvLyBtYWluIGNvbmZlcmVuY2UgZnVuY3Rpb24KWCAvLwpYQEAgLTg2LDYg KzkwLDggQEAKWCAJc3RydWN0IGFzdF9jb25mX21lbWJlciAqZHRtZl9zb3VyY2VfbWVtYmVyOwpY ICNlbmRpZgpYIAlzdHJ1Y3QgY29uZl9mcmFtZSAqc3Bva2VuX2ZyYW1lcywgKnNlbmRfZnJhbWVz OwpYKwlzdHJ1Y3QgYXN0X2ZpbGVzdHJlYW0gKnMgPSBOVUxMOwpYKwljb25zdCBjaGFyICpyZWNm aWxlID0gTlVMTDsKWCAKWCAJLy8gY291bnQgbnVtYmVyIG9mIHNwZWFrZXJzLCBudW1iZXIgb2Yg bGlzdGVuZXJzClggCWludCBzcGVha2VyX2NvdW50IDsKWEBAIC05NCwxMyArMTAwLDkgQEAKWCAJ Ly9ERUJVRygiRW50ZXIgY29uZmVyZW5jZV9leGVjXG4iKSA7ClggClggCS8vIHRpbWVyIHRpbWVz dGFtcHMKWC0jaWZkZWYJVklERU8KWCAJc3RydWN0IHRpbWV2YWwgYmFzZSwgY3Vyciwgbm90aWZ5 IDsKWCAJYmFzZSA9IG5vdGlmeSA9IGFzdF90dm5vdygpOwpYLSNlbHNlClgtCXN0cnVjdCB0aW1l dmFsIGJhc2UsIGN1cnIgOwpYLQliYXNlID0gYXN0X3R2bm93KCk7ClgtI2VuZGlmClgrClggCS8v IGhvbGRzIGRpZmZlcmVuY2VzIG9mIGN1cnIgYW5kIGJhc2UKWCAJbG9uZyB0aW1lX2RpZmYgPSAw IDsKWCAJbG9uZyB0aW1lX3NsZWVwID0gMCA7ClhAQCAtMjg2LDYgKzI4OCwyMSBAQApYIAkJCXNw ZWFrZXJfY291bnQgPSAwIDsKWCAJCQlsaXN0ZW5lcl9jb3VudCA9IDAgOwpYIApYKwkJCWlmIChj b25mLT5yZWNmaWxlICE9IHJlY2ZpbGUpClgrCQkJewpYKwkJCQlyZWNmaWxlID0gY29uZi0+cmVj ZmlsZTsKWCsJCQkJaWYgKHMpClgrCQkJCQlhc3RfY2xvc2VzdHJlYW0ocyk7ClgrCQkJCXMgPSBh c3Rfd3JpdGVmaWxlKGNvbmYtPnJlY2ZpbGUsIGNvbmYtPnJlY2Zvcm1hdCwgTlVMTCwKWCsJCQkJ CQkgIE9fQ1JFQVR8T19UUlVOQ3xPX1dST05MWSwgMCwgMDY0NCk7ClgrCQkJCWlmIChzKQpYKwkJ CQkJYXN0X2xvZyhMT0dfTk9USUNFLCAiUmVjb3JkaW5nIGNvbmZlcmVuY2UgdG8gJXMgaW4gZm9y bWF0ICVzXG4iLApYKwkJCQkJCWNvbmYtPnJlY2ZpbGUsIGNvbmYtPnJlY2Zvcm1hdCk7ClgrCQkJ fQpYKwpYKwkJCWlmIChzKQpYKwkJCQlsaXN0ZW5lcl9jb3VudCsrOwpYKwpYIAkJCS8vIGdldCBs aXN0IG9mIGNvbmZlcmVuY2UgbWVtYmVycwpYIAkJCW1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3Qg OwpYIApYQEAgLTM0MSw2ICszNTgsMjIgQEAKWCAJCQl7ClggCQkJCW1lbWJlcl9wcm9jZXNzX291 dGdvaW5nX2ZyYW1lcyhjb25mLCBtZW1iZXIsIHNlbmRfZnJhbWVzKTsKWCAJCQl9ClgrClgrCQkJ aWYgKHMpClgrCQkJewpYKwkJCQljb25mX2ZyYW1lICpmOwpYKwkJCQlpbnQgZm91bmQgPSAwOwpY KwpYKwkJCQlmb3IgKGYgPSBzZW5kX2ZyYW1lczsgZiAhPSBOVUxMOyBmID0gZi0+bmV4dCkKWCsJ CQkJewpYKwkJCQkJaWYgKGYtPm1lbWJlciAhPSBOVUxMKQpYKwkJCQkJCWNvbnRpbnVlOwpYKwkJ CQkJYXN0X3dyaXRlc3RyZWFtKHMsIGYtPmZyKTsKWCsJCQkJCWZvdW5kID0gMTsKWCsJCQkJfQpY KwkJCQlpZiAoKCFmb3VuZCkgJiYgKGYgPSBnZXRfc2lsZW50X2ZyYW1lKCkpICE9IE5VTEwpClgr CQkJCQlhc3Rfd3JpdGVzdHJlYW0ocywgZi0+Y29udmVydGVkW0FDX1NMSU5FQVJfSU5ERVhdKTsK WCsJCQl9ClggI2lmZGVmCVZJREVPClggCQkJLy8tLS0tLS0tLy8KWCAJCQkvLyBWSURFTyAvLwpY QEAgLTUxNSwxNiArNTQ4LDI2IEBAClggCQkJCXNlbmRfZnJhbWVzID0gZGVsZXRlX2NvbmZfZnJh bWUoIHNlbmRfZnJhbWVzICkgOwpYIAkJCX0KWCAKWC0jaWZkZWYJVklERU8KWCsJCQkvLwpYKwkJ CS8vIG5vdGlmeSB0aGUgbWFuYWdlciBvZiBzdGF0ZSBjaGFuZ2VzIGV2ZXJ5IDEwMCBtaWxsaXNl Y29uZHMKWCsJCQkvLyB3ZSBwaWdneWJhY2sgb24gdGhpcyBmb3IgVkFEIHN3aXRjaGluZyBsb2dp YwpYKwkJCS8vClgrClggCQkJaWYgKCAoIGFzdF90dmRpZmZfbXMoY3Vyciwgbm90aWZ5KSAvIEFT VF9DT05GX05PVElGSUNBVElPTl9TTEVFUCApID49IDEgKQpYIAkJCXsKWCsjaWZkZWYJVklERU8K WCAJCQkJLy8gRG8gVkFEIHN3aXRjaGluZyBsb2dpYwpYKwkJCQkvLyBXZSBuZWVkIHRvIGRvIHRo aXMgaGVyZSBzaW5jZSBzZW5kX3N0YXRlX2NoYW5nZV9ub3RpZmljYXRpb25zClgrCQkJCS8vIHJl c2V0cyB0aGUgZmxhZ3MKWCAJCQkJaWYgKCAhY29uZi0+dmlkZW9fbG9ja2VkICkKWCAJCQkJCWRv X1ZBRF9zd2l0Y2hpbmcoY29uZik7ClgrI2VuZGlmClgrCQkJCS8vIHNlbmQgdGhlIG5vdGlmaWNh dGlvbnMKWCsJCQkJc2VuZF9zdGF0ZV9jaGFuZ2Vfbm90aWZpY2F0aW9ucyggY29uZi0+bWVtYmVy bGlzdCApIDsKWCsKWCAJCQkJLy8gaW5jcmVtZW50IHRoZSBub3RpZmljYXRpb24gdGltZXIgYmFz ZQpYIAkJCQlhZGRfbWlsbGlzZWNvbmRzKCAmbm90aWZ5LCBBU1RfQ09ORl9OT1RJRklDQVRJT05f U0xFRVAgKSA7ClggCQkJfQpYLSNlbmRpZgpYIApYIAkJCS8vIHJlbGVhc2UgY29uZmVyZW5jZSBs b2NrClggCQkJYXN0X3J3bG9ja191bmxvY2soICZjb25mLT5sb2NrICkgOwpYQEAgLTU0Niw2ICs1 ODksOSBAQApYIAkvLyBleGl0IHRoZSBjb25mZXJlbmNlIHRocmVhZApYIAkvLwpYIApYKwlpZiAo cykKWCsJCWFzdF9jbG9zZXN0cmVhbShzKTsKWCsKWCAJREVCVUcoIkV4aXQgY29uZmVyZW5jZV9l eGVjXG4iKSA7ClggClggCS8vIGV4aXQgdGhlIHRocmVhZApYQEAgLTU3NywzNCArNjIzLDM5IEBA ClggCWFyZ3VtZW50X2RlbGltaXRlciA9ICggIXN0cmNtcChQQUNLQUdFX1ZFUlNJT04sIjEuNCIp ID8gInwiIDogIiwiICkgOwpYIH0KWCAKWC1zdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGpvaW5fY29u ZmVyZW5jZSggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjaGFyKiBjb25mX25hbWUs IGNoYXIqIG1heF91c2Vyc19mbGFnICkKWCtzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGpvaW5fY29u ZmVyZW5jZSggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjb25zdCBjaGFyKiByZWNm aWxlLCBjb25zdCBjaGFyICpyZWNmb3JtYXQgKQpYIHsKWCAJc3RydWN0IGFzdF9jb25mZXJlbmNl KiBjb25mID0gTlVMTCA7ClggClggCS8vIGFjcXVpcmUgdGhlIGNvbmZlcmVuY2UgbGlzdCBsb2Nr ClggCWFzdF9tdXRleF9sb2NrKCZjb25mbGlzdF9sb2NrKTsKWCAKWC0KWC0KWCAJLy8gbG9vayBm b3IgYW4gZXhpc3RpbmcgY29uZmVyZW5jZQpYIAlERUJVRygiYXR0ZW1wdGluZyB0byBmaW5kIHJl cXVlc3RlZCBjb25mZXJlbmNlXG4iKSA7ClgtCWNvbmYgPSBmaW5kX2NvbmYoIGNvbmZfbmFtZSAp IDsKWCsJY29uZiA9IGZpbmRfY29uZiggbWVtYmVyLT5jb25mX25hbWUgKSA7ClggClggCS8vIHVu YWJsZSB0byBmaW5kIGFuIGV4aXN0aW5nIGNvbmZlcmVuY2UsIHRyeSB0byBjcmVhdGUgb25lClgg CWlmICggY29uZiA9PSBOVUxMICkKWCAJewpYLQkJLy8gY3JlYXRlIGEgbmV3IGNvbmZlcmVuY2UK WC0JCURFQlVHKCJhdHRlbXB0aW5nIHRvIGNyZWF0ZSByZXF1ZXN0ZWQgY29uZmVyZW5jZVxuIikg OwpYKwkJaWYgKCBtZW1iZXItPm5vX2NyZWF0ZV9mbGFnICkKWCsJCXsKWCsJCQlERUJVRygiY29u ZmVyZW5jZSBub3QgZm91bmQsIGFuZCBjcmVhdGUgb2YgbmV3IGNvbmZlcmVuY2Ugbm90IGFsbG93 ZWRcbiIpIDsKWCsJCQlwYnhfYnVpbHRpbl9zZXR2YXJfaGVscGVyKG1lbWJlci0+Y2hhbiwgIktP TkZFUkVOQ0UiLCAiTk9URk9VTkQiKTsKWCsJCX0KWCsJCWVsc2UKWCsJCXsKWCsJCQkvLyBjcmVh dGUgYSBuZXcgY29uZmVyZW5jZQpYKwkJCURFQlVHKCJhdHRlbXB0aW5nIHRvIGNyZWF0ZSByZXF1 ZXN0ZWQgY29uZmVyZW5jZVxuIikgOwpYIApYLQkJLy8gY3JlYXRlIHRoZSBuZXcgY29uZmVyZW5j ZSB3aXRoIG9uZSBtZW1iZXIKWC0JCWNvbmYgPSBjcmVhdGVfY29uZiggY29uZl9uYW1lLCBtZW1i ZXIgKSA7ClgrCQkJLy8gY3JlYXRlIHRoZSBuZXcgY29uZmVyZW5jZSB3aXRoIG9uZSBtZW1iZXIK WCsJCQljb25mID0gY3JlYXRlX2NvbmYoIG1lbWJlci0+Y29uZl9uYW1lLCBtZW1iZXIgKSA7Clgg ClgtCQkvLyByZXR1cm4gYW4gZXJyb3IgaWYgY3JlYXRlX2NvbmYoKSBmYWlsZWQKWC0JCS8vIG90 aGVyd2lzZSBzZXQgdGhlIG1lbWJlcidzIHBvaW50ZXIgdG8gaXRzIGNvbmZlcmVuY2UKWC0JCWlm ICggY29uZiA9PSBOVUxMICkKWC0JCQlhc3RfbG9nKCBMT0dfRVJST1IsICJ1bmFibGUgdG8gZmlu ZCBvciBjcmVhdGUgcmVxdWVzdGVkIGNvbmZlcmVuY2VcbiIgKSA7ClgtCQllbHNlClgtCQkJbWVt YmVyLT5jb25mID0gY29uZiA7ClgrCQkJLy8gcmV0dXJuIGFuIGVycm9yIGlmIGNyZWF0ZV9jb25m KCkgZmFpbGVkClgrCQkJaWYgKCBjb25mID09IE5VTEwgKSB7ClgrCQkJCWFzdF9sb2coIExPR19F UlJPUiwgInVuYWJsZSB0byBmaW5kIG9yIGNyZWF0ZSByZXF1ZXN0ZWQgY29uZmVyZW5jZVxuIiAp IDsKWCsJCQkJcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihtZW1iZXItPmNoYW4sICJLT05GRVJF TkNFIiwgIk5PUkVTT1VSQ0VTIik7ClgrCQkJfQpYKwkJfQpYIAl9ClggCWVsc2UKWCAJewpYQEAg LTYxOCwxMSArNjY5LDE2IEBAClggCQkJYWRkX21lbWJlciggbWVtYmVyLCBjb25mICkgOwpYIAkJ fSBlbHNlIHsKWCAJCQlwYnhfYnVpbHRpbl9zZXR2YXJfaGVscGVyKG1lbWJlci0+Y2hhbiwgIktP TkZFUkVOQ0UiLCAiTUFYVVNFUlMiKTsKWC0JCQkqbWF4X3VzZXJzX2ZsYWcgPSAxOwpYIAkJCWNv bmYgPSBOVUxMOwpYIAkJfQpYIAl9ClggClgrCWlmIChjb25mICYmIHJlY2ZpbGUgJiYgIWNvbmYt PnJlY2ZpbGUpClgrCXsKWCsJCWNvbmYtPnJlY2ZpbGUgPSBzdHJkdXAocmVjZmlsZSk7ClgrCQlj b25mLT5yZWNmb3JtYXQgPSBzdHJkdXAocmVjZm9ybWF0KTsKWCsJfQpYKwpYIAkvLyByZWxlYXNl IHRoZSBjb25mZXJlbmNlIGxpc3QgbG9jawpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZjb25mbGlzdF9s b2NrKTsKWCAKWEBAIC02NjgsNiArNzI0LDggQEAKWCAJLy8gaW5pdGlhbGl6ZSBjb25mZXJlbmNl ClggCS8vClggClgrCWNvbmYtPnJlY2ZpbGUgPSBOVUxMOwpYKwljb25mLT5yZWNmb3JtYXQgPSBO VUxMOwpYIAljb25mLT5uZXh0ID0gTlVMTCA7ClggCWNvbmYtPnByZXYgPSBOVUxMIDsKWCAJY29u Zi0+bWVtYmVybGlzdCA9IE5VTEwgOwpYQEAgLTcwOSwyOSArNzY3LDE4IEBAClggClggCS8vIGJ1 aWxkIHRyYW5zbGF0aW9uIHBhdGhzClggCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU0xJ TkVBUl9JTkRFWCBdID0gTlVMTCA7ClgtI2lmbmRlZiBBQ19VU0VfRzcyMgpYLQljb25mLT5mcm9t X3NsaW5lYXJfcGF0aHNbIEFDX1VMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3Bh dGgoIEFTVF9GT1JNQVRfVUxBVywgQVNUX0ZPUk1BVF9TTElORUFSICkgOwpYLQljb25mLT5mcm9t X3NsaW5lYXJfcGF0aHNbIEFDX0FMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3Bh dGgoIEFTVF9GT1JNQVRfQUxBVywgQVNUX0ZPUk1BVF9TTElORUFSICkgOwpYLQljb25mLT5mcm9t X3NsaW5lYXJfcGF0aHNbIEFDX0dTTV9JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3JfYnVpbGRfcGF0 aCggQVNUX0ZPUk1BVF9HU00sIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jaWZkZWYJQUNfVVNF X1NQRUVYClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5ERVggXSA9IGFz dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9GT1JNQVRfU0xJ TkVBUiApIDsKWC0jZW5kaWYKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19VTEFXX0lO REVYIF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX1VMQVcsIEFTVF9D T05GX0ZPUk1BVCApIDsKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19BTEFXX0lOREVY IF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX0FMQVcsIEFTVF9DT05G X0ZPUk1BVCApIDsKWCsJY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HU01fSU5ERVggXSA9 IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfR1NNLCBBU1RfQ09ORl9GT1JN QVQgKSA7ClgrCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5ERVggXSA9IGFz dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9DT05GX0ZPUk1B VCApIDsKWCAjaWZkZWYgQUNfVVNFX0c3MjlBClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sg QUNfRzcyOUFfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRf RzcyOUEsIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jZW5kaWYKWC0jZWxzZQpYLQljb25mLT5m cm9tX3NsaW5lYXJfcGF0aHNbIEFDX1VMQVdfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxk X3BhdGgoIEFTVF9GT1JNQVRfVUxBVywgQVNUX0ZPUk1BVF9TTElORUFSMTYgKSA7ClgtCWNvbmYt PmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfQUxBV19JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3JfYnVp bGRfcGF0aCggQVNUX0ZPUk1BVF9BTEFXLCBBU1RfRk9STUFUX1NMSU5FQVIxNiApIDsKWC0JY29u Zi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HU01fSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1 aWxkX3BhdGgoIEFTVF9GT1JNQVRfR1NNLCBBU1RfRk9STUFUX1NMSU5FQVIxNiApIDsKWC0jaWZk ZWYJQUNfVVNFX1NQRUVYClgtCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVhfSU5E RVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfU1BFRVgsIEFTVF9G T1JNQVRfU0xJTkVBUjE2ICkgOwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyOUEKWC0JY29u Zi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBBQ19HNzI5QV9JTkRFWCBdID0gYXN0X3RyYW5zbGF0b3Jf YnVpbGRfcGF0aCggQVNUX0ZPUk1BVF9HNzI5QSwgQVNUX0ZPUk1BVF9TTElORUFSMTYgKSA7Clgr CWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfRzcyOUFfSU5ERVggXSA9IGFzdF90cmFuc2xh dG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRfRzcyOUEsIEFTVF9DT05GX0ZPUk1BVCApIDsKWCAj ZW5kaWYKWCAjaWZkZWYgQUNfVVNFX0c3MjIKWC0JY29uZi0+ZnJvbV9zbGluZWFyX3BhdGhzWyBB Q19HNzIyX0lOREVYIF0gPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX0c3 MjIsIEFTVF9GT1JNQVRfU0xJTkVBUjE2ICkgOwpYKwljb25mLT5mcm9tX3NsaW5lYXJfcGF0aHNb IEFDX0c3MjJfSU5ERVggXSA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9GT1JNQVRf RzcyMiwgQVNUX0NPTkZfRk9STUFUKSA7ClggI2VuZGlmClgrI2lmZGVmIEFDX1VTRV9TUEVFWDE2 ClgrCWNvbmYtPmZyb21fc2xpbmVhcl9wYXRoc1sgQUNfU1BFRVgxNl9JTkRFWCBdID0gYXN0X3Ry YW5zbGF0b3JfYnVpbGRfcGF0aCggQVNUX0ZPUk1BVF9TUEVFWDE2LCBBU1RfQ09ORl9GT1JNQVQp IDsKWCAjZW5kaWYKWCAKWCAJLy8KWEBAIC04NTMsNiArOTAwLDEyIEBAClggClggCWlmICggY29u ZiA9PSBjb25mbGlzdCApClggCQljb25mbGlzdCA9IGNvbmZfdGVtcCA7ClgrCQkKWCsKWCsJaWYg KGNvbmYtPnJlY2ZpbGUpClgrCQlmcmVlKGNvbmYtPnJlY2ZpbGUpOwpYKwlpZiAoY29uZi0+cmVj Zm9ybWF0KQpYKwkJZnJlZShjb25mLT5yZWNmb3JtYXQpOwpYIApYIAlmcmVlKCBjb25mICkgOwpY IApYQEAgLTk1Nyw2ICsxMDEwLDMzIEBAClggCS8vIHVwZGF0ZSBjb25mZXJlbmNlIHN0YXRzClgg CWNvbmYtPm1lbWJlcmNvdW50Kys7ClggClgrCWlmICggbWVtYmVyLT53YWl0X2Zvcl9tb2RlcmF0 b3JfZmxhZyA9PSAxICkKWCsJewpYKwkJaWYgKCAhbWVtYmVyLT5pc21vZGVyYXRvciAmJiBjb25m LT5zdGF0cy5tb2RlcmF0b3JzID09IDAgKQpYKwkJewpYKwkJCS8vIG5vIG1vZGVyYXRvciBpbiB0 aGUgY29uZmVyZW5jZSB5ZXQgLSBzdGFydCBtdXNpYyBvbiBob2xkClgrCQkJYXN0X2xvZyggTE9H X05PVElDRSwgIm5vIG1vZGVyYXRvciBpbiB0aGUgY29uZmVyZW5jZSB5ZXQgLSBzdGFydCBtdXNp YyBvbiBob2xkXG4iICkgOwpYKwkJCWFzdF9tdXRleF9sb2NrKCAmbWVtYmVyLT5sb2NrICkgOwpY KwkJCW1lbWJlci0+bW9oX2ZsYWcgPSAxIDsKWCsJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVy LT5sb2NrICkgOwpYKwkJfQpYKwkJZWxzZSBpZiAoIG1lbWJlci0+aXNtb2RlcmF0b3IgJiYgY29u Zi0+bWVtYmVyY291bnQgPiAxICkKWCsJCXsKWCsJCQkvLyBtb2RlcmF0b3Igam9pbmluZyAtIHN0 b3AgbXVzaWMgb24gaG9sZApYKwkJCWFzdF9sb2coIExPR19OT1RJQ0UsICJtb2RlcmF0b3Igam9p bmluZyAtIHN0b3AgbXVzaWMgb24gaG9sZFxuIiApOwpYKwkJCXN0cnVjdCBhc3RfY29uZl9tZW1i ZXIgKmN1cnJtZW1iZXI7ClgrCQkJZm9yICggY3Vycm1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3Qg OyBjdXJybWVtYmVyICE9IE5VTEwgOyBjdXJybWVtYmVyID0gY3Vycm1lbWJlci0+bmV4dCApClgr CQkJewpYKwkJCQlhc3RfbG9nKCBMT0dfTk9USUNFLCAic3RvcCBNT0ggZm9yIGNoYW5uZWw6ICVz XG4iLCBjdXJybWVtYmVyLT5jaGFuLT5uYW1lICk7ClgrCQkJCWFzdF9tdXRleF9sb2NrKCAmY3Vy cm1lbWJlci0+bG9jayApIDsKWCsJCQkJY3Vycm1lbWJlci0+bW9oX2ZsYWcgPSAwIDsKWCsJCQkJ Y3Vycm1lbWJlci0+cmVhZHlfZm9yX291dGdvaW5nID0gMTsKWCsJCQkJYXN0X21vaF9zdG9wKGN1 cnJtZW1iZXItPmNoYW4pOwpYKwkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmY3Vycm1lbWJlci0+bG9j ayApIDsKWCsJCQl9ClgrCQl9ClgrCX0KWCsKWCAJaWYgKCBtZW1iZXItPmhvbGRfZmxhZyA9PSAx ICkKWCAJewpYIAkJaWYgICggY29uZi0+bWVtYmVyY291bnQgPT0gMSApClhAQCAtOTcwLDcgKzEw NTAsNyBAQApYIAkJCWFzdF9tdXRleF9sb2NrKCAmY29uZi0+bWVtYmVybGlzdC0+bG9jayApIDsK WCAJCQljb25mLT5tZW1iZXJsaXN0LT5tb2hfZmxhZyA9IDAgOwpYIAkJCWNvbmYtPm1lbWJlcmxp c3QtPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDE7ClgtCQkJY29uZi0+bWVtYmVybGlzdC0+bW9oX3N0 b3AgPSAxOwpYKwkJCWFzdF9tb2hfc3RvcChjb25mLT5tZW1iZXJsaXN0LT5jaGFuKTsKWCAJCQlh c3RfbXV0ZXhfdW5sb2NrKCAmY29uZi0+bWVtYmVybGlzdC0+bG9jayApIDsKWCAJCX0KWCAJfQpY QEAgLTEwNjEsNyArMTE0MSw3IEBAClggCXJldHVybiA7ClggfQpYIApYLXZvaWQgcmVtb3ZlX21l bWJlciggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBzdHJ1Y3QgYXN0X2NvbmZlcmVu Y2UqIGNvbmYsIGNoYXIqIGNvbmZfbmFtZSApClgrdm9pZCByZW1vdmVfbWVtYmVyKCBzdHJ1Y3Qg YXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIHN0cnVjdCBhc3RfY29uZmVyZW5jZSogY29uZiApClgg ewpYIAlpbnQgbWVtYmVyY291bnQgOwpYIAlzaG9ydCBtb2RlcmF0b3JzIDsKWEBAIC0xMDg4LDcg KzExNjgsNyBAQApYIApYIAlhc3Rfcndsb2NrX3dybG9jayggJmNvbmYtPmxvY2sgKTsKWCAKWC0J aWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYmIG1lbWJlci0+a2lja19jb25mZXJlZXMgJiYgY29u Zi0+c3RhdHMubW9kZXJhdG9ycyA9PSAxICkKWCsJaWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYm IG1lbWJlci0+a2lja19jb25mZXJlZXMgKQpYIAkJY29uZi0+a2lja19mbGFnID0gMSA7ClggClgg I2lmZGVmCVZJREVPClhAQCAtMTEzOSw3ICsxMjE5LDcgQEAKWCAJCQkJLy8gbG9nIHNvbWUgYWNj b3VudGluZyBpbmZvcm1hdGlvbgpYIAkJCQkvLwpYIApYLQkJCQlERUJVRygibWVtYmVyIGFjY291 bnRpbmcsIGNoYW5uZWwgPT4gJXMsIHRlID0+ICVsZCwgZmkgPT4gJWxkLCBmaWQgPT4gJWxkLCBm byA9PiAlbGQsIGZvZCA9PiAlbGQsIHR0ID0+ICVsZFxuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBt ZW1iZXItPnRpbWVfZW50ZXJlZC50dl9zZWMsIG1lbWJlci0+ZnJhbWVzX2luLCBtZW1iZXItPmZy YW1lc19pbl9kcm9wcGVkLCBtZW1iZXItPmZyYW1lc19vdXQsIG1lbWJlci0+ZnJhbWVzX291dF9k cm9wcGVkLCB0dCkgOwpYKwkJCQlERUJVRygibWVtYmVyIGFjY291bnRpbmcsIGNoYW5uZWwgPT4g JXMsIHRlID0+ICVsZCwgZmkgPT4gJWxkLCBmaWQgPT4gJWxkLCBmbyA9PiAlbGQsIGZvZCA9PiAl bGQsIHR0ID0+ICVsZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+dGltZV9lbnRl cmVkLnR2X3NlYywgbWVtYmVyLT5mcmFtZXNfaW4sIG1lbWJlci0+ZnJhbWVzX2luX2Ryb3BwZWQs IG1lbWJlci0+ZnJhbWVzX291dCwgbWVtYmVyLT5mcmFtZXNfb3V0X2Ryb3BwZWQsIHR0KSA7Clgg CQkJfQpYICNlbmRpZgpYIAkJCS8vClhAQCAtMTE3MSw2ICsxMjUxLDIwIEBAClggClggCQkJLy8g dXBkYXRlIG1vZGVyYXRvciBjb3VudApYIAkJCW1vZGVyYXRvcnMgPSAoIW1lbWJlci0+aXNtb2Rl cmF0b3IgPyBjb25mLT5zdGF0cy5tb2RlcmF0b3JzIDogLS1jb25mLT5zdGF0cy5tb2RlcmF0b3Jz ICk7ClgrClgrCQkJaWYgKCBtZW1iZXItPmlzbW9kZXJhdG9yICYmIG1lbWJlci0+d2FpdF9mb3Jf bW9kZXJhdG9yX2ZsYWcgPT0gMSAmJiBtb2RlcmF0b3JzID09IDAgJiYgbWVtYmVyY291bnQgPiAw ICkKWCsJCQl7ClgrCQkJCWFzdF9sb2coIExPR19OT1RJQ0UsICJNb2RlcmF0b3IgbGVmdCAtIHBs YXlpbmcgTU9IIHVudGlsIGhlIHJldHVybnNcbiIpOwpYKwkJCQlzdHJ1Y3QgYXN0X2NvbmZfbWVt YmVyICpjdXJybWVtYmVyOwpYKwkJCQlmb3IgKCBjdXJybWVtYmVyID0gY29uZi0+bWVtYmVybGlz dCA7IGN1cnJtZW1iZXIgIT0gTlVMTCA7IGN1cnJtZW1iZXIgPSBjdXJybWVtYmVyLT5uZXh0ICkK WCsJCQkJewpYKwkJCQkJYXN0X2xvZyggTE9HX05PVElDRSwgInN0YXJ0IE1PSCBmb3IgY2hhbm5l bDogJXNcbiIsIGN1cnJtZW1iZXItPmNoYW4tPm5hbWUgKTsKWCsJCQkJCWFzdF9tdXRleF9sb2Nr KCAmY3Vycm1lbWJlci0+bG9jayApIDsKWCsJCQkJCWN1cnJtZW1iZXItPm1vaF9mbGFnID0gMTsK WCsJCQkJCWN1cnJtZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDE7ClgrCQkJCQlhc3RfbXV0 ZXhfdW5sb2NrKCAmY3Vycm1lbWJlci0+bG9jayApIDsKWCsJCQkJfQpYKwkJCX0KWCAjaWZkZWYJ VklERU8KWCAJCQkvLyBDaGVjayBpZiBtZW1iZXIgaXMgdGhlIGRlZmF1bHQgb3IgY3VycmVudCB2 aWRlbyBzb3VyY2UKWCAJCQlpZiAoIGNvbmYtPmN1cnJlbnRfdmlkZW9fc291cmNlX2lkID09IG1l bWJlci0+aWQgKQpYQEAgLTExOTMsNyArMTI4Nyw3IEBAClggCQkJCQkiQ29uZmVyZW5jZVZpZGVv QnJvYWRjYXN0T2ZmIiwKWCAJCQkJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNc clxuIiwKWCAJCQkJCWNvbmYtPm5hbWUsClgtCQkJCQltZW1iZXItPmNoYW4tPm5hbWUKWCsJCQkJ CW1lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJCQkpOwpYIAkJCX0KWCAKWEBAIC0xMjM5LDE0ICsx MzMzLDE0IEBAClggCQkiRHVyYXRpb246ICVsZFxyXG4iClggCQkiTW9kZXJhdG9yczogJWRcclxu IgpYIAkJIkNvdW50OiAlZFxyXG4iLApYLQkJY29uZl9uYW1lLApYKwkJbWVtYmVyLT5jb25mX25h bWUsClggCQltZW1iZXItPnR5cGUsClgtCQltZW1iZXItPmNoYW4tPnVuaXF1ZWlkLApYKwkJbWVt YmVyLT51bmlxdWVpZCwKWCAJCW1lbWJlci0+aWQsClggCQltZW1iZXItPmZsYWdzLApYLQkJbWVt YmVyLT5jaGFuLT5uYW1lLApYLQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX251bSA/IG1lbWJlci0+ Y2hhbi0+Y2lkLmNpZF9udW0gOiAidW5rbm93biIsClgtCQltZW1iZXItPmNoYW4tPmNpZC5jaWRf bmFtZSA/IG1lbWJlci0+Y2hhbi0+Y2lkLmNpZF9uYW1lOiAidW5rbm93biIsClgrCQltZW1iZXIt PmNoYW5uZWxfbmFtZSwKWCsJCWFzdF9jaGFubmVsX2NhbGxlcmlkX251bWJlcihtZW1iZXItPmNo YW4pLApYKwkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShtZW1iZXItPmNoYW4pLApYIAkJdHQs ClggCQltb2RlcmF0b3JzLApYIAkJbWVtYmVyY291bnQKWEBAIC0xMjc2LDcgKzEzNzAsNyBAQApY IAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJ ewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgbmFtZSAp ID09IDAgKQpYKwkJaWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSks IG5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkJLy8gbG9jayBjb25mZXJlbmNlClggCQkJLy8g YXN0X211dGV4X2xvY2soICYoY29uZi0+bG9jaykgKSA7ClhAQCAtMTMxMiw5ICsxNDA2LDYgQEAK WCAKWCBpbnQgc2hvd19jb25mZXJlbmNlX3N0YXRzICggaW50IGZkICkKWCB7ClgtCWludCBkdXJh dGlvbjsKWC0JY2hhciBkdXJhdGlvbl9zdHJbMTBdOwpYLQpYICAgICAgICAgLy8gbm8gY29uZmVy ZW5jZXMgZXhpc3QKWCAJaWYgKCBjb25mbGlzdCA9PSBOVUxMICkKWCAJewpYQEAgLTEzMjcsMTQg KzE0MTgsMTQgQEAKWCAKWCAJc3RydWN0IGFzdF9jb25mZXJlbmNlICpjb25mID0gY29uZmxpc3Qg OwpYIApYLQlhc3RfY2xpKCBmZCwgIiUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBz XG4iLCAiTmFtZSIsICJNZW1iZXJzIiwgIlZvbHVtZSIsICJEdXJhdGlvbiIgKSA7ClgrCWFzdF9j bGkoIGZkLCAiJS0yMC4yMHMgJS0yMC4yMHMgJS0yMC4yMHMgJS0yMC4yMHNcbiIsICJOYW1lIiwg Ik1lbWJlcnMiLCAiVm9sdW1lIiwgIkJ1Y2tldCIgKSA7ClggClggCS8vIGxvb3AgdGhyb3VnaCBj b25mIGxpc3QKWCAJd2hpbGUgKCBjb25mICE9IE5VTEwgKQpYIAl7ClgtCQlkdXJhdGlvbiA9IChp bnQpKGFzdF90dmRpZmZfbXMoYXN0X3R2bm93KCksY29uZi0+c3RhdHMudGltZV9lbnRlcmVkKSAv IDEwMDApOwpYLQkJc25wcmludGYoZHVyYXRpb25fc3RyLCAxMCwgIiUwMmQ6JTAyZDolMDJkIiwg IGR1cmF0aW9uIC8gMzYwMCwgKGR1cmF0aW9uICUgMzYwMCkgLyA2MCwgZHVyYXRpb24gJSA2MCk7 ClgtCQlhc3RfY2xpKCBmZCwgIiUtMjAuMjBzICUtMjBkICUtMjBkICUtMjAuMjBzXG4iLCBjb25m LT5uYW1lLCBjb25mLT5tZW1iZXJjb3VudCwgY29uZi0+dm9sdW1lLCBkdXJhdGlvbl9zdHIgKSA7 ClgrCQlhc3RfY2xpKGZkLCAiJS0yMC4yMHMgJS0yMGQgJS0yMGQgJS0yMGRcbiIsClgrCQkJY29u Zi0+bmFtZSwgY29uZi0+bWVtYmVyY291bnQsIGNvbmYtPnZvbHVtZSwKWCsJCQkoaW50KShjb25m LT5idWNrZXQgLSBjb25mZXJlbmNlX3RhYmxlKSApIDsKWCAJCWNvbmYgPSBjb25mLT5uZXh0IDsK WCAJfQpYIApYQEAgLTEzNDksOCArMTQ0MCw2IEBAClggCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIg Km1lbWJlcjsKWCAJY2hhciB2b2x1bWVfc3RyWzEwXTsKWCAJY2hhciBzcHlfc3RyWzEwXTsKWC0J aW50IGR1cmF0aW9uOwpYLQljaGFyIGR1cmF0aW9uX3N0clsxMF07ClggClggICAgICAgICAvLyBu byBjb25mZXJlbmNlcyBleGlzdApYIAlpZiAoIGNvbmZsaXN0ID09IE5VTEwgKQpYQEAgLTEzNjcs MTYgKzE0NTYsMTYgQEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNv bmYgIT0gTlVMTCApClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29u Zi0+bmFtZSksIG5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAoIChjb25zdCBjaGFy KikmKGNvbmYtPm5hbWUpLCBuYW1lLCA4MCApID09IDAgKQpYIAkJewpYIAkJCS8vIGFjcXVpcmUg Y29uZmVyZW5jZSBsb2NrClggCQkJYXN0X3J3bG9ja19yZGxvY2soJmNvbmYtPmxvY2spOwpYIApY IAkJCS8vIGFzdF9jbGkoZmQsICJDaGF0IG1vZGUgaXMgJXNcbiIsIGNvbmYtPmNoYXRfbW9kZV9v biA/ICJPTiIgOiAiT0ZGIik7ClggI2lmZGVmCVZJREVPClgtCQkJYXN0X2NsaSggZmQsICIlLTIw LjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIw cyAlLTgwLjIwc1xuIiwgIlVzZXIgIyIsICJGbGFncyIsICJBdWRpbyIsICJWb2x1bWUiLCAiRHJp dmVyICMiLCAiRHVyYXRpb24iLCAiU3B5IiwgIkNoYW5uZWwiKTsKWCsJCQlhc3RfY2xpKCBmZCwg IiUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUt MjAuMjBzXG4iLCAiVXNlciAjIiwgIkNhbGxlcklETmFtZSIsICJDYWxsZXJJRCIsICJBdWRpbyIs ICJVbmlxdWVJRCIsICJDb25mZXJlbmNlIE5hbWUiLCAiQ2hhbm5lbCIpOwpYICNlbHNlClgtCQkJ YXN0X2NsaSggZmQsICIlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIw cyAlLTIwLjIwcyAlLTgwLjIwc1xuIiwgIlVzZXIgIyIsICJGbGFncyIsICJBdWRpbyIsICJWb2x1 bWUiLCAiRHVyYXRpb24iLCAiU3B5IiwgIkNoYW5uZWwiKTsKWCsJCQlhc3RfY2xpKCBmZCwgIiUt MjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAu MjBzXG4iLCAiVXNlciAjIiwgIkNhbGxlcklETmFtZSIsICJDYWxsZXJJRCIsICJBdWRpbyIsICJV bmlxdWVJRCIsICJDb25mZXJlbmNlIE5hbWUiLCAiQ2hhbm5lbCIpOwpYICNlbmRpZgpYIAkJCS8v IGRvIHRoZSBiaXoKWCAJCQltZW1iZXIgPSBjb25mLT5tZW1iZXJsaXN0IDsKWEBAIC0xMzg3LDIw ICsxNDc2LDM0IEBAClggCQkJCQlzbnByaW50ZihzcHlfc3RyLCAxMCwgIiVkIiwgbWVtYmVyLT5z cHlfcGFydG5lci0+aWQpOwpYIAkJCQllbHNlClggCQkJCQlzdHJjcHkoc3B5X3N0ciAsICIqIik7 ClgtCQkJCWR1cmF0aW9uID0gKGludCkoYXN0X3R2ZGlmZl9tcyhhc3RfdHZub3coKSxtZW1iZXIt PnRpbWVfZW50ZXJlZCkgLyAxMDAwKTsKWC0JCQkJc25wcmludGYoZHVyYXRpb25fc3RyLCAxMCwg IiUwMmQ6JTAyZDolMDJkIiwgIGR1cmF0aW9uIC8gMzYwMCwgKGR1cmF0aW9uICUgMzYwMCkgLyA2 MCwgZHVyYXRpb24gJSA2MCk7ClggI2lmZGVmCVZJREVPClggCQkJCWlmICggbWVtYmVyLT5kcml2 ZW5fbWVtYmVyID09IE5VTEwgKQpYIAkJCQl7ClgtCQkJCQlhc3RfY2xpKCBmZCwgIiUtMjBkICUt MjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtODBz XG4iLApYLQkJCQkJbWVtYmVyLT5pZCwgbWVtYmVyLT5mbGFncywgKG1lbWJlci0+bXV0ZV9hdWRp byA9PSAwID8gIlVubXV0ZWQiIDogIk11dGVkIiksIHZvbHVtZV9zdHIsICIqIiwgZHVyYXRpb25f c3RyLCBzcHlfc3RyLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJYXN0X2NsaSggZmQsICJN ZW1iZXJJZDogJS0yMGQgQ0lETmFtZTogJS0yMC4yMHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0y MC4yMHMgVW5pcXVlSUQ6ICUtMjAuMjBzIENvbmZOYW1lOiAlLTIwLjIwcyBDaGFubmVsOiAlLTgw c1xuIiwKWCsJCQkJCQltZW1iZXItPmlkLApYKwkJCQkJCWFzdF9jaGFubmVsX2NhbGxlcmlkX25h bWUobWVtYmVyLT5jaGFuKSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVt YmVyLT5jaGFuKSwKWCsJCQkJCQkobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAgPyAiRmFsc2UiIDog IlRydWUiKSwKWCsJCQkJCQltZW1iZXItPnVuaXF1ZWlkLCBtZW1iZXItPmNvbmZfbmFtZSwgbWVt YmVyLT5jaGFubmVsX25hbWUpOwpYIAkJCQl9IGVsc2UgewpYLQkJCQkJYXN0X2NsaSggZmQsICIl LTIwZCAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwLjIwcyAlLTIwZCAgJS0yMC4yMHMgJS0yMC4yMHMg JS04MHNcbiIsIG1lbWJlci0+aWQsIG1lbWJlci0+ZmxhZ3MsClgtCQkJCQkobWVtYmVyLT5tdXRl X2F1ZGlvID09IDAgPyAiVW5tdXRlZCIgOiAiTXV0ZWQiKSwgdm9sdW1lX3N0ciwgbWVtYmVyLT5k cml2ZW5fbWVtYmVyLT5pZCwgZHVyYXRpb25fc3RyLCBzcHlfc3RyLCBtZW1iZXItPmNoYW4tPm5h bWUpOwpYKwkJCQkJYXN0X2NsaSggZmQsICJNZW1iZXJJZDogJS0yMGQgQ0lETmFtZTogJS0yMC4y MHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0yMC4yMHMgVW5pcXVlSUQ6ICUtMjAuMjBzIENvbmZO YW1lOiAlLTIwLjIwcyBTcGVha2luZzogJXMgQ2hhbm5lbDogJS04MHNcbiIsClgrCQkJCQkJbWVt YmVyLT5pZCwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hhbiks ClgrCQkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJlci0+Y2hhbiksClgrCQkJ CQkJKG1lbWJlci0+bXV0ZV9hdWRpbyA9PSAwID8gIkZhbHNlIiA6ICJUcnVlIiksClgrCQkJCQkJ bWVtYmVyLT51bmlxdWVpZCwgbWVtYmVyLT5jb25mX25hbWUsClgrCQkJCQkJKCggbWVtYmVyLT5z cGVha2luZ19zdGF0ZSA9PSAxICkgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCsJCQkJCQltZW1iZXIt PmNoYW5uZWxfbmFtZSk7ClggCQkJCX0KWCAjZWxzZQpYLQkJCQlhc3RfY2xpKCBmZCwgIiUtMjBk ICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtMjAuMjBzICUtODBzXG4iLApY LQkJCQltZW1iZXItPmlkLCBtZW1iZXItPmZsYWdzLCAobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAg PyAiVW5tdXRlZCIgOiAiTXV0ZWQiKSwgdm9sdW1lX3N0ciwgZHVyYXRpb25fc3RyICwgc3B5X3N0 ciwgbWVtYmVyLT5jaGFuLT5uYW1lKTsKWCsJCQkJYXN0X2NsaSggZmQsICJNZW1iZXJJZDogJS0y MGQgQ0lETmFtZTogJS0yMC4yMHMgQ0lEOiAlLTIwLjIwcyBNdXRlZDogJS0yMC4yMHMgVW5pcXVl SUQ6ICUtMjAuMjBzIENvbmZOYW1lOiAlLTIwLjIwcyBTcGVha2luZzogJXMgQ2hhbm5lbDogJS04 MHNcbiIsClgrCQkJCQltZW1iZXItPmlkLApYKwkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFt ZShtZW1iZXItPmNoYW4pLApYKwkJCQkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJl ci0+Y2hhbiksClgrCQkJCQkobWVtYmVyLT5tdXRlX2F1ZGlvID09IDAgPyAiRmFsc2UiIDogIlRy dWUiKSwKWCsJCQkJCW1lbWJlci0+dW5pcXVlaWQsIG1lbWJlci0+Y29uZl9uYW1lLApYKwkJCQkJ KCggbWVtYmVyLT5zcGVha2luZ19zdGF0ZSA9PSAxICkgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCsJ CQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAjZW5kaWYKWCAJCQkJbWVtYmVyID0gbWVtYmVy LT5uZXh0OwpYIAkJCX0KWEBAIC0xNDQ2LDcgKzE1NDksNyBAQApYIAkvLyBsb29wIHRocm91Z2gg Y29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNl Y21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgY29uZmZpbHRlciApID09IDAgKQpYKwkJ aWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZmaWx0ZXIs IDgwICkgPT0gMCApClggCQl7ClggCQkJLy8gZG8gdGhlIGJpegpYIAkJCW1lbWJlciA9IGNvbmYt Pm1lbWJlcmxpc3QgOwpYQEAgLTE0NjgsOSArMTU3MSw5IEBAClggCQkJCQkJIlxyXG4iLApYIAkJ CQkJCWNvbmYtPm5hbWUsClggCQkJCQkJbWVtYmVyLT5pZCwKWC0JCQkJCQltZW1iZXItPmNoYW4t Pm5hbWUsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX251bSA/IG1lbWJlci0+Y2hhbi0+ Y2lkLmNpZF9udW0gOiAidW5rbm93biIsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX25h bWUgPyBtZW1iZXItPmNoYW4tPmNpZC5jaWRfbmFtZSA6ICJ1bmtub3duIiwKWCsJCQkJCQltZW1i ZXItPmNoYW5uZWxfbmFtZSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVt YmVyLT5jaGFuKSwKWCsJCQkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hh biksClggCQkJCQkJbWVtYmVyLT5tdXRlX2F1ZGlvID8gIllFUyIgOiAiTk8iLApYICNpZmRlZglW SURFTwpYIAkJCQkJCW1lbWJlci0+bXV0ZV92aWRlbyA/ICJZRVMiIDogIk5PIiwKWEBAIC0xNTQ0 LDcgKzE2NDcsNyBAQApYIAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29u ZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hhciopJihjb25m LT5uYW1lKSwgY29uZm5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAoIChjb25zdCBj aGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSwgODAgKSA9PSAwICkKWCAJCXsKWCAJCSAgICAg ICAgLy8gZG8gdGhlIGJpegpYIAkJCWFzdF9yd2xvY2tfcmRsb2NrKCAmY29uZi0+bG9jayApIDsK WEBAIC0xNjM3LDcgKzE3NDAsNyBAQApYIAkvLyBsb29wIHRocm91Z2ggY29uZiBsaXN0ClggCXdo aWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJjYXNlY21wKCAoY29uc3QgY2hh ciopJihjb25mLT5uYW1lKSwgY29uZm5hbWUgKSA9PSAwICkKWCsJCWlmICggc3RybmNhc2VjbXAo IChjb25zdCBjaGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSwgODAgKSA9PSAwICkKWCAJCXsK WCAJCSAgICAgICAgLy8gZG8gdGhlIGJpegpYIAkJCWFzdF9yd2xvY2tfcmRsb2NrKCAmY29uZi0+ bG9jayApIDsKWEBAIC0xNjQ3LDEzICsxNzUwLDE3IEBAClggCQkJICAgIGlmIChtZW1iZXItPmlk ID09IHVzZXJfaWQpClggCQkJICAgICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jayggJm1l bWJlci0+bG9jayApIDsKWC0JCQkJICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCsJCQkJ ICAgICAgbWVtYmVyLT5tdXRlZCA9IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7ClggCQkJCSAgICAg IGFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClggCQkJCQltYW5hZ2VyX2V2ZW50 KApYIAkJCQkJCUVWRU5UX0ZMQUdfQ0FMTCwKWCAJCQkJCQkiQ29uZmVyZW5jZU1lbWJlck11dGUi LApYKwkJCQkJCSJDb25mZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJCQkJCSJNZW1iZXJJZDogJWRc clxuIgpYIAkJCQkJCSJDaGFubmVsOiAlc1xyXG4iLApYLQkJCQkJCW1lbWJlci0+Y2hhbi0+bmFt ZQpYKyAgICAgICAgICAgICAgICAJCQkJbWVtYmVyLT5jb25mX25hbWUsClgrICAgICAgICAgICAg ICAgIAkJCQltZW1iZXItPmlkLApYKwkJCQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJCQkp IDsKWCAJCQkJICAgICAgcmVzID0gMTsKWCAJCQkgICAgICB9ClhAQCAtMTY5Miw3ICsxNzk5LDcg QEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNvbmYgIT0gTlVMTCAp ClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNv bmZuYW1lICkgPT0gMCApClgrCQlpZiAoIHN0cm5jYXNlY21wKCAoY29uc3QgY2hhciopJihjb25m LT5uYW1lKSwgY29uZm5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkgICAgICAgIC8vIGRvIHRo ZSBiaXoKWCAJCQlhc3Rfcndsb2NrX3JkbG9jayggJmNvbmYtPmxvY2sgKSA7ClhAQCAtMTcwMiw3 ICsxODA5LDcgQEAKWCAJCQkgICAgaWYgKCAhbWVtYmVyLT5pc21vZGVyYXRvciApClggCQkJICAg ICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jayggJm1lbWJlci0+bG9jayApIDsKWC0JCQkJ ICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMTsKWCsJCQkJICAgICAgbWVtYmVyLT5tdXRlZCA9 IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7ClggCQkJCSAgICAgIGFzdF9tdXRleF91bmxvY2soICZt ZW1iZXItPmxvY2sgKSA7ClggCQkJCSAgICAgIHJlcyA9IDE7ClggCQkJICAgICAgfQpYQEAgLTE3 NDgsNyArMTg1NSw3IEBAClggCS8vIGxvb3AgdGhyb3VnaCBjb25mIGxpc3QKWCAJd2hpbGUgKCBj b25mICE9IE5VTEwgKQpYIAl7ClgtCQlpZiAoIHN0cmNhc2VjbXAoIChjb25zdCBjaGFyKikmKGNv bmYtPm5hbWUpLCBjb25mbmFtZSApID09IDAgKQpYKwkJaWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0 IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lLCA4MCApID09IDAgKQpYIAkJewpYIAkJICAg ICAgICAvLyBkbyB0aGUgYml6ClggCQkJYXN0X3J3bG9ja19yZGxvY2soICZjb25mLT5sb2NrICkg OwpYQEAgLTE3NTgsMTMgKzE4NjUsMTcgQEAKWCAJCQkgICAgaWYgKG1lbWJlci0+aWQgPT0gdXNl cl9pZCkKWCAJCQkgICAgICB7ClggCQkJCSAgICAgIGFzdF9tdXRleF9sb2NrKCAmbWVtYmVyLT5s b2NrICkgOwpYLQkJCQkgICAgICBtZW1iZXItPm11dGVfYXVkaW8gPSAwOwpYKwkJCQkgICAgICBt ZW1iZXItPm11dGVkID0gbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCAJCQkJICAgICAgYXN0X211 dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApIDsKWCAJCQkJCW1hbmFnZXJfZXZlbnQoClggCQkJ CQkJRVZFTlRfRkxBR19DQUxMLApYIAkJCQkJCSJDb25mZXJlbmNlTWVtYmVyVW5tdXRlIiwKWCsJ CQkJCQkiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbiIKWCsJCQkJCQkiTWVtYmVySWQ6ICVkXHJcbiIK WCAJCQkJCQkiQ2hhbm5lbDogJXNcclxuIiwKWC0JCQkJCQltZW1iZXItPmNoYW4tPm5hbWUKWCsJ CQkJCQltZW1iZXItPmNvbmZfbmFtZSwKWCsJCQkJCQltZW1iZXItPmlkLApYKwkJCQkJCW1lbWJl ci0+Y2hhbm5lbF9uYW1lClggCQkJCQkpIDsKWCAJCQkJICAgICAgcmVzID0gMTsKWCAJCQkgICAg ICB9ClhAQCAtMTgwMyw3ICsxOTE0LDcgQEAKWCAJLy8gbG9vcCB0aHJvdWdoIGNvbmYgbGlzdApY IAl3aGlsZSAoIGNvbmYgIT0gTlVMTCApClggCXsKWC0JCWlmICggc3RyY2FzZWNtcCggKGNvbnN0 IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lICkgPT0gMCApClgrCQlpZiAoIHN0cm5jYXNl Y21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgY29uZm5hbWUsIDgwICkgPT0gMCApClgg CQl7ClggCQkgICAgICAgIC8vIGRvIHRoZSBiaXoKWCAJCQlhc3Rfcndsb2NrX3JkbG9jayggJmNv bmYtPmxvY2sgKSA7ClhAQCAtMTgxMyw3ICsxOTI0LDcgQEAKWCAJCQkgICAgaWYgKCAhbWVtYmVy LT5pc21vZGVyYXRvciApClggCQkJICAgICAgewpYIAkJCQkgICAgICBhc3RfbXV0ZXhfbG9jaygg Jm1lbWJlci0+bG9jayApIDsKWC0JCQkJICAgICAgbWVtYmVyLT5tdXRlX2F1ZGlvID0gMDsKWCsJ CQkJICAgICAgbWVtYmVyLT5tdXRlZCA9IG1lbWJlci0+bXV0ZV9hdWRpbyA9IDA7ClggCQkJCSAg ICAgIGFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClggCQkJCSAgICAgIHJlcyA9 IDE7ClggCQkJICAgICAgfQpYQEAgLTE4NTksNyArMTk3MCw3IEBAClggCS8vIGxvb3AgdGhyb3Vn aCBjb25mIGxpc3QKWCAJd2hpbGUgKCBjb25mICE9IE5VTEwgKQpYIAl7ClgtCQlpZiAoIHN0cmNh c2VjbXAoIChjb25zdCBjaGFyKikmKGNvbmYtPm5hbWUpLCBjb25mbmFtZSApID09IDAgKQpYKwkJ aWYgKCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lLCA4 MCApID09IDAgKQpYIAkJewpYIAkJICAgICAgICAvLyBkbyB0aGUgYml6ClggCQkJYXN0X3J3bG9j a19yZGxvY2soICZjb25mLT5sb2NrICkgOwpYQEAgLTE5MTMsMTQgKzIwMjQsMTQgQEAKWCAJLy8g bG9vcCB0aHJvdWdoIGNvbmYgbGlzdApYIAl3aGlsZSAoIGNvbmYgIT0gTlVMTCApClggCXsKWC0J CWlmICggc3RyY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIGNvbmZuYW1lICkg PT0gMCApClgrCQlpZiAoIHN0cm5jYXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwg Y29uZm5hbWUsIDgwICkgPT0gMCApClggCQl7ClggCQkgICAgICAgIC8vIGRvIHRoZSBiaXoKWCAJ CQlhc3Rfcndsb2NrX3JkbG9jayggJmNvbmYtPmxvY2sgKSA7ClggCQkgICAgICAgIG1lbWJlciA9 IGNvbmYtPm1lbWJlcmxpc3QgOwpYIAkJCXdoaWxlIChtZW1iZXIgIT0gTlVMTCkKWCAJCQl7Clgt CQkJCWlmIChzdHJjYXNlY21wKCBtZW1iZXItPmNoYW4tPm5hbWUsIHN0cmVhbWNoYW4gKSA9PSAw KQpYKwkJCQlpZiAoc3RybmNhc2VjbXAoIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBzdHJlYW1jaGFu LCA4MCApID09IDApClggCQkJCXsKWCAJCQkJCXN0cmVhbV9pZCA9IG1lbWJlci0+aWQ7ClggCQkJ CX0KWEBAIC0xOTM0LDcgKzIwNDUsNyBAQApYIAkJCQltZW1iZXIgPSBjb25mLT5tZW1iZXJsaXN0 IDsKWCAJCQkJd2hpbGUgKG1lbWJlciAhPSBOVUxMKQpYIAkJCQl7ClgtCQkJCQlpZiAoc3RyY2Fz ZWNtcCggbWVtYmVyLT5jaGFuLT5uYW1lLCB1c2VyY2hhbiApID09IDApClgrCQkJCQlpZiAoc3Ry bmNhc2VjbXAoIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCB1c2VyY2hhbiwgODAgKSA9PSAwKQpYIAkJ CQkJewpYIAkJCQkJCS8vIHN3aXRjaCB0aGUgdmlkZW8KWCAJCQkJCQlhc3RfbXV0ZXhfbG9jaygg Jm1lbWJlci0+bG9jayApIDsKWEBAIC0yMDE4LDcgKzIxMjksNyBAQApYIAkvLyBsb29wIHRocm91 Z2ggY29uZiBsaXN0ClggCXdoaWxlICggY29uZiAhPSBOVUxMICkKWCAJewpYLQkJaWYgKCBzdHJj YXNlY21wKCAoY29uc3QgY2hhciopJihjb25mLT5uYW1lKSwgbmFtZSApID09IDAgKQpYKwkJaWYg KCBzdHJuY2FzZWNtcCggKGNvbnN0IGNoYXIqKSYoY29uZi0+bmFtZSksIG5hbWUsIDgwICkgPT0g MCApClggCQl7ClggCQkJLy8gY29weSBzdGF0cyBmb3IgZm91bmQgY29uZmVyZW5jZQpYIAkJCSpz dGF0cyA9IGNvbmYtPnN0YXRzIDsKWEBAIC0yMDQyLDcgKzIxNTMsNyBAQApYIAlBU1RfTElTVF9M T0NLICggYnVja2V0ICkgOwpYIApYIAlBU1RfTElTVF9UUkFWRVJTRSAoIGJ1Y2tldCwgbWVtYmVy LCBoYXNoX2VudHJ5ICkKWC0JCWlmICghc3RyY21wIChtZW1iZXItPmNoYW4tPm5hbWUsIGNoYW4p ICkgewpYKwkJaWYgKCFzdHJjbXAgKG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBjaGFuKSApIHsKWCAJ CQlhc3RfbXV0ZXhfbG9jayAoJm1lbWJlci0+bG9jaykgOwpYIAkJCW1lbWJlci0+dXNlX2NvdW50 KysgOwpYIAkJCWJyZWFrIDsKWEBAIC0yMTk1LDcgKzIzMDYsNyBAQApYIAkJCQkJY29uZi0+dmlk ZW9fbG9ja2VkID0gMTsKWCAJCQkJCXJlcyA9IDE7ClggClgtCQkJCQltYW5hZ2VyX2V2ZW50KEVW RU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VMb2NrIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5D aGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJ bWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlTG9jayIsICJDb25mZXJl bmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwgbWVtYmVyLT5jaGFu bmVsX25hbWUpOwpYIAkJCQkJYnJlYWs7ClggCQkJCX0KWCAJCQl9ClhAQCAtMjIzNiwxMyArMjM0 NywxMyBAQApYIApYIAkJCWZvciAoIG1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3QgOyBtZW1iZXIg IT0gTlVMTCA7IG1lbWJlciA9IG1lbWJlci0+bmV4dCApClggCQkJewpYLQkJCQlpZiAoIHN0cmNt cChjaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09IDAgJiYgIW1lbWJlci0+bXV0ZV92aWRl byApClgrCQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA9PSAw ICYmICFtZW1iZXItPm11dGVfdmlkZW8gKQpYIAkJCQl7ClggCQkJCQlkb192aWRlb19zd2l0Y2hp bmcoY29uZiwgbWVtYmVyLT5pZCwgMCk7ClggCQkJCQljb25mLT52aWRlb19sb2NrZWQgPSAxOwpY IAkJCQkJcmVzID0gMTsKWCAKWC0JCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAi Q29uZmVyZW5jZUxvY2siLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIs IGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbi0+bmFtZSk7ClgrCQkJCQltYW5hZ2VyX2V2ZW50KEVW RU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VMb2NrIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5D aGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJ CQlicmVhazsKWCAJCQkJfQpYIAkJCX0KWEBAIC0yMzMzLDcgKzI0NDQsNyBAQApYIAkJCQkJCWNv bmYtPmRlZmF1bHRfdmlkZW9fc291cmNlX2lkID0gbWVtYmVyX2lkOwpYIAkJCQkJCXJlcyA9IDE7 ClggClgtCQkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlRGVm YXVsdCIsICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFt ZSwgbWVtYmVyLT5jaGFuLT5uYW1lKTsKWCsJCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdf Q0FMTCwgIkNvbmZlcmVuY2VEZWZhdWx0IiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVs OiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJCQkJYnJl YWs7ClggCQkJCQl9ClggCQkJCX0KWEBAIC0yMzc4LDcgKzI0ODksNyBAQApYIAkJCXsKWCAJCQkJ Ly8gV2UgZG8gbm90IGFsbG93IHZpZGVvIG11dGVkIG1lbWJlcnMgb3IgbWVtYmVycyB0aGF0IGRv IG5vdCBzdXBwb3J0ClggCQkJCS8vIFZBRCBzd2l0Y2hpbmcgdG8gYmVjb21lIGRlZmF1bHRzClgt CQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbi0+bmFtZSkgPT0gMCAmJgpYKwkJ CQlpZiAoIHN0cmNtcChjaGFubmVsLCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgPT0gMCAmJgpYIAkJ CQkgICAgICFtZW1iZXItPm11dGVfdmlkZW8gJiYKWCAJCQkJICAgICBtZW1iZXItPnZhZF9zd2l0 Y2gKWCAJCQkJICAgKQpYQEAgLTIzODYsNyArMjQ5Nyw3IEBAClggCQkJCQljb25mLT5kZWZhdWx0 X3ZpZGVvX3NvdXJjZV9pZCA9IG1lbWJlci0+aWQ7ClggCQkJCQlyZXMgPSAxOwpYIApYLQkJCQkJ bWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlRGVmYXVsdCIsICJDb25m ZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwgbWVtYmVyLT5j aGFuLT5uYW1lKTsKWCsJCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAiQ29uZmVy ZW5jZURlZmF1bHQiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNv bmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAJCQkJCWJyZWFrOwpYIAkJCQl9Clgg CQkJfQpYQEAgLTI0MzYsNyArMjU0Nyw3IEBAClggCQkJCQkvLyByZWxlYXNlIG1lbWJlciBtdXRl eApYIAkJCQkJYXN0X211dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApOwpYIApYLQkJCQkJbWFu YWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJlbmNlVmlkZW9NdXRlIiwgIkNvbmZl cmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBjb25mLT5uYW1lLCBtZW1iZXItPmNo YW4tPm5hbWUpOwpYKwkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFHX0NBTEwsICJDb25mZXJl bmNlVmlkZW9NdXRlIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBj b25mLT5uYW1lLCBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggClggCQkJCQlpZiAoIG1lbWJlci0+ aWQgPT0gY29uZi0+Y3VycmVudF92aWRlb19zb3VyY2VfaWQgKQpYIAkJCQkJewpYQEAgLTI0OTQs NyArMjYwNSw3IEBAClggCQkJCQkvLyByZWxlYXNlIG1lbWJlciBtdXRleApYIAkJCQkJYXN0X211 dGV4X3VubG9jayggJm1lbWJlci0+bG9jayApOwpYIApYLQkJCQkJbWFuYWdlcl9ldmVudChFVkVO VF9GTEFHX0NBTEwsICJDb25mZXJlbmNlVmlkZW9Vbm11dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVz XHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbi0+bmFtZSk7Clgr CQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VWaWRlb1VubXV0 ZSIsICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwgY29uZi0+bmFtZSwg bWVtYmVyLT5jaGFubmVsX25hbWUpOwpYIApYIAkJCQkJcmVzID0gMTsKWCAJCQkJCWJyZWFrOwpY QEAgLTI1MzcsNyArMjY0OCw3IEBAClggClggCQkJZm9yICggbWVtYmVyID0gY29uZi0+bWVtYmVy bGlzdCA7IG1lbWJlciAhPSBOVUxMIDsgbWVtYmVyID0gbWVtYmVyLT5uZXh0ICkKWCAJCQl7Clgt CQkJCWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbi0+bmFtZSkgPT0gMCApClgrCQkJ CWlmICggc3RyY21wKGNoYW5uZWwsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA9PSAwICkKWCAJCQkJ ewpYIAkJCQkJLy8gYWNxdWlyZSBtZW1iZXIgbXV0ZXgKWCAJCQkJCWFzdF9tdXRleF9sb2NrKCAm bWVtYmVyLT5sb2NrICk7ClhAQCAtMjU0Nyw3ICsyNjU4LDcgQEAKWCAJCQkJCS8vIHJlbGVhc2Ug bWVtYmVyIG11dGV4ClggCQkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVyLT5sb2NrICk7Clgg ClgtCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FMTCwgIkNvbmZlcmVuY2VWaWRlb011 dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUs IG1lbWJlci0+Y2hhbi0+bmFtZSk7ClgrCQkJCQltYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FM TCwgIkNvbmZlcmVuY2VWaWRlb011dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6 ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAKWCAJCQkJCWlm ICggbWVtYmVyLT5pZCA9PSBjb25mLT5jdXJyZW50X3ZpZGVvX3NvdXJjZV9pZCApClggCQkJCQl7 ClhAQCAtMjU5NSw3ICsyNzA2LDcgQEAKWCAKWCAJCQlmb3IgKCBtZW1iZXIgPSBjb25mLT5tZW1i ZXJsaXN0IDsgbWVtYmVyICE9IE5VTEwgOyBtZW1iZXIgPSBtZW1iZXItPm5leHQgKQpYIAkJCXsK WC0JCQkJaWYgKCBzdHJjbXAoY2hhbm5lbCwgbWVtYmVyLT5jaGFuLT5uYW1lKSA9PSAwICkKWCsJ CQkJaWYgKCBzdHJjbXAoY2hhbm5lbCwgbWVtYmVyLT5jaGFubmVsX25hbWUpID09IDAgKQpYIAkJ CQl7ClggCQkJCQkvLyBhY3F1aXJlIG1lbWJlciBtdXRleApYIAkJCQkJYXN0X211dGV4X2xvY2so ICZtZW1iZXItPmxvY2sgKTsKWEBAIC0yNjA1LDcgKzI3MTYsNyBAQApYIAkJCQkJLy8gcmVsZWFz ZSBtZW1iZXIgbXV0ZXgKWCAJCQkJCWFzdF9tdXRleF91bmxvY2soICZtZW1iZXItPmxvY2sgKTsK WCAKWC0JCQkJCW1hbmFnZXJfZXZlbnQoRVZFTlRfRkxBR19DQUxMLCAiQ29uZmVyZW5jZVZpZGVv VW5tdXRlIiwgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLCBjb25mLT5u YW1lLCBtZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCQkJbWFuYWdlcl9ldmVudChFVkVOVF9GTEFH X0NBTEwsICJDb25mZXJlbmNlVmlkZW9Vbm11dGUiLCAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNo YW5uZWw6ICVzXHJcbiIsIGNvbmYtPm5hbWUsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAKWCAJ CQkJCXJlcyA9IDE7ClggCQkJCQlicmVhazsKWEBAIC0yNjk0LDcgKzI4MDUsNyBAQApYIApYIAkJ CWZvciAoIG1lbWJlciA9IGNvbmYtPm1lbWJlcmxpc3QgOyBtZW1iZXIgIT0gTlVMTCA7IG1lbWJl ciA9IG1lbWJlci0+bmV4dCApClggCQkJewpYLQkJCQlpZiAoIHN0cmNtcChtZW1iZXItPmNoYW4t Pm5hbWUsIGNoYW5uZWwpID09IDAgKQpYKwkJCQlpZiAoIHN0cmNtcChtZW1iZXItPmNoYW5uZWxf bmFtZSwgY2hhbm5lbCkgPT0gMCApClggCQkJCXsKWCAJCQkJCXJlcyA9IHNlbmRfdGV4dF9tZXNz YWdlX3RvX21lbWJlcihtZW1iZXIsIHRleHQpID09IDA7ClggCQkJCQlicmVhazsKWEBAIC0yODgx LDkgKzI5OTIsOSBAQApYIAkJCWRzdCA9IE5VTEw7ClggCQkJZm9yICggbWVtYmVyID0gY29uZi0+ bWVtYmVybGlzdCA7IG1lbWJlciAhPSBOVUxMIDsgbWVtYmVyID0gbWVtYmVyLT5uZXh0ICkKWCAJ CQl7ClgtCQkJCWlmICggc3RyY21wKHNyY19jaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09 IDAgKQpYKwkJCQlpZiAoIHN0cmNtcChzcmNfY2hhbm5lbCwgbWVtYmVyLT5jaGFubmVsX25hbWUp ID09IDAgKQpYIAkJCQkJc3JjID0gbWVtYmVyOwpYLQkJCQlpZiAoIGRzdF9jaGFubmVsICE9IE5V TEwgJiYgc3RyY21wKGRzdF9jaGFubmVsLCBtZW1iZXItPmNoYW4tPm5hbWUpID09IDAgKQpYKwkJ CQlpZiAoIGRzdF9jaGFubmVsICE9IE5VTEwgJiYgc3RyY21wKGRzdF9jaGFubmVsLCBtZW1iZXIt PmNoYW5uZWxfbmFtZSkgPT0gMCApClggCQkJCQlkc3QgPSBtZW1iZXI7ClggCQkJfQpYIAkJCWlm ICggc3JjICE9IE5VTEwgKQpYQEAgLTI5NjksNyArMzA4MCw3IEBAClggCQkJIkNvbmZlcmVuY2VW aWRlb1N3aXRjaCIsClggCQkJIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4i LApYIAkJCWNvbmYtPm5hbWUsClgtCQkJbmV3X21lbWJlciA9PSBOVUxMID8gImVtcHR5IiA6IG5l d19tZW1iZXItPmNoYW4tPm5hbWUKWCsJCQluZXdfbWVtYmVyID09IE5VTEwgPyAiZW1wdHkiIDog bmV3X21lbWJlci0+Y2hhbm5lbF9uYW1lClggCQkJKTsKWCAKWCAJCWNvbmYtPmN1cnJlbnRfdmlk ZW9fc291cmNlX2lkID0gbmV3X2lkOwpYQEAgLTMwNDMsOSArMzE1NCw2IEBAClggCQlzb3VuZC0+ c3RvcHBlZCA9IDE7ClggCQlzb3VuZCA9IG5leHQ7ClggCX0KWC0KWC0JCW1lbWJlci0+bXV0ZWQg PSAwOwpYLQpYIAlpZiAoICEtLW1lbWJlci0+dXNlX2NvdW50ICYmIG1lbWJlci0+ZGVsZXRlX2Zs YWcgKQpYIAkJYXN0X2NvbmRfc2lnbmFsICggJm1lbWJlci0+ZGVsZXRlX3ZhciApIDsKWCAJYXN0 X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2NrKTsKWEBAIC0zMDY2LDcgKzMxNzQsNyBAQApYIAkJ cmV0dXJuIDA7ClggCX0gZWxzZSBpZiAoIW1lbWJlci0+bm9yZWN2X2F1ZGlvICYmICFtZW1iZXIt Pm1vaF9mbGFnKQpYIAl7ClgtCQltZW1iZXItPm1vaF9mbGFnID0gbWVtYmVyLT5tdXRlZCA9IDE7 ClgrCQltZW1iZXItPm1vaF9mbGFnID0gMTsKWCAJfQpYIApYIAlpZiAoICEtLW1lbWJlci0+dXNl X2NvdW50ICYmIG1lbWJlci0+ZGVsZXRlX2ZsYWcgKQpYQEAgLTMwODksNyArMzE5Nyw3IEBAClgg CQlyZXR1cm4gMDsKWCAJfSBlbHNlIGlmICghbWVtYmVyLT5ub3JlY3ZfYXVkaW8gJiYgbWVtYmVy LT5tb2hfZmxhZykKWCAJewpYLQkJbWVtYmVyLT5tb2hfc3RvcCA9IDE7ClgrCQlhc3RfbW9oX3N0 b3AobWVtYmVyLT5jaGFuKTsKWCAKWCAJCW1lbWJlci0+bW9oX2ZsYWcgPSBtZW1iZXItPm11dGVk ID0gMDsKWCAJCW1lbWJlci0+cmVhZHlfZm9yX291dGdvaW5nID0gMTsKWEBAIC0zMTkzLDcgKzMz MDEsNyBAQApYIAkJCQkiQ29uZmVyZW5jZVZpZGVvQnJvYWRjYXN0T2ZmIiwKWCAJCQkJIkNvbmZl cmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCQljb25mLT5uYW1lLApYLQkJ CQltZW1iZXItPmNoYW4tPm5hbWUKWCsJCQkJbWVtYmVyLT5jaGFubmVsX25hbWUKWCAJCQkJKTsK WCAJfSBlbHNlIGlmICggY2ZyICE9IE5VTEwgKQpYIAl7ClhAQCAtMzIwNSw3ICszMzEzLDcgQEAK WCAJCQkJIkNvbmZlcmVuY2VWaWRlb0Jyb2FkY2FzdE9uIiwKWCAJCQkJIkNvbmZlcmVuY2VOYW1l OiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCQljb25mLT5uYW1lLApYLQkJCQltZW1iZXIt PmNoYW4tPm5hbWUKWCsJCQkJbWVtYmVyLT5jaGFubmVsX25hbWUKWCAJCQkJKTsKWCAJCX0KWCAJ fQpYQEAgLTMyMjgsNyArMzMzNiw3IEBAClggCXJldHVybiBoOwpYIH0KWCAKWC1pbnQgY291bnRf ZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCB2b2lkKiBkYXRhICkKWCtpbnQgY291bnRf ZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkKWCB7Clgg CWludCByZXMgPSAwOwpYIAlzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UgKmNvbmY7ClgtLS0gLi9jb25m ZXJlbmNlLmgub3JpZwkyMDEwLTA3LTI4IDIwOjQ0OjQ5LjAwMDAwMDAwMCArMDAwMApYKysrIC4v Y29uZmVyZW5jZS5oCTIwMTAtMTEtMDEgMTc6MDc6NDQuMDAwMDAwMDAwICswMDAwClhAQCAtMzks MTIgKzM5LDYgQEAKWCAjaW5jbHVkZSAiY29tbW9uLmgiClggClggLy8KWC0vLyBkZWZpbmVzClgt Ly8KWC0KWC0jZGVmaW5lIENPTkZfTkFNRV9MRU4gODAKWC0KWC0vLwpYIC8vIHN0cnVjdCBkZWNs YXJhdGlvbnMKWCAvLwpYIApYQEAgLTU3LDcgKzUxLDcgQEAKWCB0eXBlZGVmIHN0cnVjdCBhc3Rf Y29uZmVyZW5jZV9zdGF0cwpYIHsKWCAJLy8gY29uZmVyZW5jZSBuYW1lICggY29waWVkIGZvciBl YXNlIG9mIHVzZSApClgtCWNoYXIgbmFtZVtDT05GX05BTUVfTEVOICsgMV0gOwpYKwljaGFyIG5h bWVbMTI4XSA7ClggClggCS8vIHR5cGUgb2YgY29ubmVjdGlvbgpYIAl1bnNpZ25lZCBzaG9ydCBw aG9uZSA7ClhAQCAtODEsNyArNzUsMTEgQEAKWCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UKWCB7Clgg CS8vIGNvbmZlcmVuY2UgbmFtZQpYLQljaGFyIG5hbWVbQ09ORl9OQU1FX0xFTiArIDFdIDsKWCsJ Y2hhciBuYW1lWzEyOF0gOwpYKwpYKwkvLyByZWNvcmRpbmcKWCsJY2hhciAqcmVjZmlsZTsKWCsJ Y2hhciAqcmVjZm9ybWF0OwpYIApYIAkvLyBjb25mZXJlbmNlIHZvbHVtZQpYIAlpbnQgdm9sdW1l OwpYQEAgLTE1Nyw5ICsxNTUsOSBAQApYIApYIGludCBoYXNoKCBjb25zdCBjaGFyICpjaGFubmVs X25hbWUgKSA7ClggClgtaW50IGNvdW50X2V4ZWMoIHN0cnVjdCBhc3RfY2hhbm5lbCogY2hhbiwg dm9pZCogZGF0YSApIDsKWCtpbnQgY291bnRfZXhlYyggc3RydWN0IGFzdF9jaGFubmVsKiBjaGFu LCBjb25zdCBjaGFyICpkYXRhICkgOwpYIApYLXN0cnVjdCBhc3RfY29uZmVyZW5jZSogam9pbl9j b25mZXJlbmNlKCBzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIGNoYXIqIGNvbmZfbmFt ZSwgY2hhciogbWF4X3VzZXJzX2ZsYWcgKSA7Clgrc3RydWN0IGFzdF9jb25mZXJlbmNlKiBqb2lu X2NvbmZlcmVuY2UoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciwgY29uc3QgY2hhciog cmVjZmlsZSwgY29uc3QgY2hhciogcmVjZm9ybWF0ICkgOwpYIApYIGludCBlbmRfY29uZmVyZW5j ZSggY29uc3QgY2hhciAqbmFtZSwgaW50IGhhbmd1cCApIDsKWCAKWEBAIC0xNzAsNyArMTY4LDcg QEAKWCBpbnQgcXVldWVfZnJhbWVfZm9yX3NwZWFrZXIoIHN0cnVjdCBhc3RfY29uZmVyZW5jZSog Y29uZiwgc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyLCBjb25mX2ZyYW1lKiBmcmFtZSAp IDsKWCBpbnQgcXVldWVfc2lsZW50X2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGNvbmYs IHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciApIDsKWCAKWC12b2lkIHJlbW92ZV9tZW1i ZXIoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciwgc3RydWN0IGFzdF9jb25mZXJlbmNl KiBjb25mLCBjaGFyKiBjb25mX25hbWUgKSA7Clgrdm9pZCByZW1vdmVfbWVtYmVyKCBzdHJ1Y3Qg YXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIsIHN0cnVjdCBhc3RfY29uZmVyZW5jZSogY29uZiApIDsK WCAKWCAjaWZkZWYJVEVYVApYIGludCBzZW5kX3RleHRfbWVzc2FnZV90b19tZW1iZXIoc3RydWN0 IGFzdF9jb25mX21lbWJlciAqbWVtYmVyLCBjb25zdCBjaGFyICp0ZXh0KTsKWC0tLSAuL2ZyYW1l LmMub3JpZwkyMDEwLTA4LTE3IDE0OjU4OjA3LjAwMDAwMDAwMCArMDAwMApYKysrIC4vZnJhbWUu YwkyMDEwLTExLTAxIDE3OjA3OjQ0LjAwMDAwMDAwMCArMDAwMApYQEAgLTEwMiw0MyArMTAyLDI2 IEBAClggCWZyYW1lc19pbi0+Y29udmVydGVkWyBmcmFtZXNfaW4tPm1lbWJlci0+cmVhZF9mb3Jt YXRfaW5kZXggXSA9IGFzdF9mcmR1cCggZnJhbWVzX2luLT5mciApIDsKWCAKWCAJLy8gY29udmVy dCBmcmFtZSB0byBzbGluZWFyLCBpZiB3ZSBoYXZlIGEgcGF0aApYLQlpZiAoIShmcmFtZXNfaW4t PmZyID0gY29udmVydF9mcmFtZV90b19zbGluZWFyKCBmcmFtZXNfaW4tPm1lbWJlci0+dG9fc2xp bmVhciwgZnJhbWVzX2luLT5mcikpKQpYLQl7ClgtCQlhc3RfbG9nKCBMT0dfV0FSTklORywgIm1p eF9zaW5nbGVfc3BlYWtlcjogdW5hYmxlIHRvIGNvbnZlcnQgZnJhbWUgdG8gc2xpbmVhclxuIiAp IDsKWC0JCXJldHVybiBmcmFtZXNfaW4gOwpYLQl9ClgrCWZyYW1lc19pbi0+ZnIgPSBjb252ZXJ0 X2ZyYW1lX3RvX3NsaW5lYXIoClgrCQlmcmFtZXNfaW4tPm1lbWJlci0+dG9fc2xpbmVhciwKWCsJ CWZyYW1lc19pbi0+ZnIKWCsJKSA7ClggClggCWlmICggKGZyYW1lc19pbi0+bWVtYmVyLT50YWxr X3ZvbHVtZSAhPSAwKSB8fCAodm9sdW1lICE9IDApICkKWCAJewpYIAkJYXN0X2ZyYW1lX2FkanVz dF92b2x1bWUoZnJhbWVzX2luLT5mciwgZnJhbWVzX2luLT5tZW1iZXItPnRhbGtfdm9sdW1lICsg dm9sdW1lKTsKWCAJfQpYIApYLQlpZiAoIWZyYW1lc19pbi0+bWVtYmVyLT5zcHlfcGFydG5lcikK WCsJaWYgKCBmcmFtZXNfaW4tPm1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lID09IE5VTEwgKQpY IAl7ClgtCQkvLyBzcGVha2VyIGlzIG5laXRoZXIgYSBzcHllZSBub3IgYSBzcHllcgpYKwkJLy8g c2V0IGZyYW1lJ3Mgc3B5IHBhcnRuZXIKWCsJCWZyYW1lc19pbi0+c3B5X3BhcnRuZXIgPSBmcmFt ZXNfaW4tPm1lbWJlci0+c3B5X3BhcnRuZXIgOwpYKwpYIAkJLy8gc2V0IHRoZSBmcmFtZSdzIG1l bWJlciB0byBudWxsICggaS5lLiBhbGwgbGlzdGVuZXJzICkKWCAJCWZyYW1lc19pbi0+bWVtYmVy ID0gTlVMTCA7ClggCX0KWCAJZWxzZQpYLQl7ClgtCQkvLyBzcGVha2VyIGlzIGVpdGhlciBhIHNw eWVlIG9yIGEgc3B5ZXIKWC0JCWlmICggZnJhbWVzX2luLT5tZW1iZXItPnNweWVlX2NoYW5uZWxf bmFtZSA9PSBOVUxMICkKWC0JCXsKWC0JCQljb25mX2ZyYW1lICpzcHlfZnJhbWUgPSBjb3B5X2Nv bmZfZnJhbWUoZnJhbWVzX2luKTsKWC0KWC0JCQlpZiAoIHNweV9mcmFtZSAhPSAwICkKWC0JCQl7 ClgtCQkJCWZyYW1lc19pbi0+bmV4dCA9IHNweV9mcmFtZTsKWC0JCQkJc3B5X2ZyYW1lLT5wcmV2 ID0gZnJhbWVzX2luOwpYLQpYLQkJCQlzcHlfZnJhbWUtPm1lbWJlciA9IGZyYW1lc19pbi0+bWVt YmVyLT5zcHlfcGFydG5lcjsKWC0JCQl9ClgtClgtCQkJZnJhbWVzX2luLT5tZW1iZXIgPSBOVUxM IDsKWC0JCX0KWC0JCWVsc2UKWC0JCQlmcmFtZXNfaW4tPm1lbWJlciA9IGZyYW1lc19pbi0+bWVt YmVyLT5zcHlfcGFydG5lciA7ClgtCX0KWCsJCWZyYW1lc19pbi0+bWVtYmVyID0gZnJhbWVzX2lu LT5tZW1iZXItPnNweV9wYXJ0bmVyIDsKWCAKWCAJcmV0dXJuIGZyYW1lc19pbiA7ClggfQpYQEAg LTI0NCwxOCArMjI3LDIxIEBAClggCQllbHNlClggCQl7ClggCQkJLy9ERUJVRygiY29udmVydGlu ZyBmcmFtZSB0byBzbGluZWFyLCBjaGFubmVsID0+ICVzXG4iLCBjZl9zcG9rZW4tPm1lbWJlci0+ Y2hhbm5lbF9uYW1lKSA7ClgtCQkJaWYgKCAhKGNmX3Nwb2tlbi0+ZnIgPSBjb252ZXJ0X2ZyYW1l X3RvX3NsaW5lYXIoIGNmX3Nwb2tlbi0+bWVtYmVyLT50b19zbGluZWFyLCBjZl9zcG9rZW4tPmZy KSkgKQpYLQkJCXsKWC0JCQkJYXN0X2xvZyggTE9HX1dBUk5JTkcsICJtaXhfbXVsdGlwbGVfc3Bl YWtlcnM6IHVuYWJsZSB0byBjb252ZXJ0IGZyYW1lIHRvIHNsaW5lYXJcbiIgKSA7ClgtCQkJCWNv bnRpbnVlOwpYLQkJCX0KWCsJCQljZl9zcG9rZW4tPmZyID0gY29udmVydF9mcmFtZV90b19zbGlu ZWFyKApYKwkJCQljZl9zcG9rZW4tPm1lbWJlci0+dG9fc2xpbmVhciwKWCsJCQkJY2Zfc3Bva2Vu LT5mcgpYKwkJCSkgOwpYIApYIAkJCWlmICgoIGNmX3Nwb2tlbi0+bWVtYmVyLT50YWxrX3ZvbHVt ZSAhPSAwICkgfHwgKHZvbHVtZSAhPSAwKSkKWCAJCQl7ClggCQkJCWFzdF9mcmFtZV9hZGp1c3Rf dm9sdW1lKGNmX3Nwb2tlbi0+ZnIsIGNmX3Nwb2tlbi0+bWVtYmVyLT50YWxrX3ZvbHVtZSArIHZv bHVtZSk7ClggCQkJfQpYIApYLQkJCWlmICggY2Zfc3Bva2VuLT5tZW1iZXItPnNweWVlX2NoYW5u ZWxfbmFtZSA9PSBOVUxMICkKWCsJCQlpZiAoIGNmX3Nwb2tlbi0+ZnIgPT0gTlVMTCApClgrCQkJ ewpYKwkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byBjb252ZXJ0IGZyYW1lIHRv IHNsaW5lYXJcbiIgKSA7ClgrCQkJfQpYKwkJCWVsc2UgaWYgKCBjZl9zcG9rZW4tPm1lbWJlci0+ c3B5ZWVfY2hhbm5lbF9uYW1lID09IE5VTEwgKQpYIAkJCXsKWCAJCQkJLy8gY3JlYXRlIG5ldyBj b25mIGZyYW1lIHdpdGggbGFzdCBmcmFtZSBhcyAnbmV4dCcKWCAJCQkJY2Zfc2VuZEZyYW1lcyA9 IGNyZWF0ZV9jb25mX2ZyYW1lKCBjZl9zcG9rZW4tPm1lbWJlciwgY2Zfc2VuZEZyYW1lcywgTlVM TCApIDsKWEBAIC0zOTcsMTEgKzM4Myw3IEBAClggCS8vIHdlIGRvbid0IG5lZWQgdG8gZHVwbGlj YXRlIHRoaXMgZnJhbWUgc2luY2UKWCAJLy8gdGhlIG5vcm1hbCB0cmFuc2xhdGlvbiB3b3VsZCBm cmVlIGl0IGFueXdheSwgc28KWCAJLy8gd2UnbGwganVzdCBwcmV0ZW5kIHdlIGZyZWUnZCBhbmQg bWFsbG9jJ2QgYSBuZXcgb25lLgpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JaWYgKCBmci0+c3Vi Y2xhc3MgPT0gQVNUX0ZPUk1BVF9TTElORUFSICkKWC0jZWxzZQpYLQlpZiAoIGZyLT5zdWJjbGFz cyA9PSBBU1RfRk9STUFUX1NMSU5FQVIxNiApClgtI2VuZGlmClgrCWlmICggQVNUX0ZSQU1FX1NV QkNMQVNTX0NPREVDKGZyKSA9PSBBU1RfQ09ORl9GT1JNQVQgKQpYIAkJcmV0dXJuIGZyIDsKWCAK WCAJLy8gY2hlY2sgZm9yIG51bGwgdHJhbnNsYXRvciAoIGFmdGVyIHdlJ3ZlIGNoZWNrZWQgdGhh dCB3ZSBuZWVkIHRvIHRyYW5zbGF0ZSApClhAQCAtNDMyLDExICs0MTQsNyBAQApYIAl9ClggClgg CS8vIGlmIHRoZSBmcmFtZSBpcyBub3Qgc2xpbmVhciwgcmV0dXJuIGFuIGVycm9yClgtI2lmbmRl ZglBQ19VU0VfRzcyMgpYLQlpZiAoIGZyLT5zdWJjbGFzcyAhPSBBU1RfRk9STUFUX1NMSU5FQVIg KQpYLSNlbHNlClgtCWlmICggZnItPnN1YmNsYXNzICE9IEFTVF9GT1JNQVRfU0xJTkVBUjE2ICkK WC0jZW5kaWYKWCsJaWYgKCBBU1RfRlJBTUVfU1VCQ0xBU1NfQ09ERUMoZnIpICE9IEFTVF9DT05G X0ZPUk1BVCApClggCXsKWCAJCWFzdF9sb2coIExPR19FUlJPUiwgInVuYWJsZSB0byB0cmFuc2xh dGUgbm9uLXNsaW5lYXIgZnJhbWVcbiIgKSA7ClggCQlyZXR1cm4gTlVMTCA7ClhAQCAtNTQwLDYg KzUxOCw4IEBAClggCWNmLT5tZW1iZXIgPSBtZW1iZXIgOwpYIAkvLyBjZi0+cHJpb3JpdHkgPSAw IDsKWCAKWCsJY2YtPnNweV9wYXJ0bmVyID0gTlVMTCA7ClgrClggCWNmLT5wcmV2ID0gTlVMTCA7 ClggCWNmLT5uZXh0ID0gbmV4dCA7ClggClhAQCAtNjQ2LDExICs2MjYsNyBAQApYIAl9ClggClgg CWYtPmZyYW1ldHlwZSA9IEFTVF9GUkFNRV9WT0lDRSA7ClgtI2lmbmRlZglBQ19VU0VfRzcyMgpY LQlmLT5zdWJjbGFzcyA9IEFTVF9GT1JNQVRfU0xJTkVBUiA7ClgtI2Vsc2UKWC0JZi0+c3ViY2xh c3MgPSBBU1RfRk9STUFUX1NMSU5FQVIxNiA7ClgtI2VuZGlmClgrCUFTVF9GUkFNRV9TVUJDTEFT U19DT0RFQyhmKSA9IEFTVF9DT05GX0ZPUk1BVCA7ClggCWYtPnNhbXBsZXMgPSBBU1RfQ09ORl9C TE9DS19TQU1QTEVTIDsKWCAJZi0+b2Zmc2V0ID0gQVNUX0ZSSUVORExZX09GRlNFVCA7ClggCWYt Pm1hbGxvY2QgPSBBU1RfTUFMTE9DRF9IRFIgfCBBU1RfTUFMTE9DRF9EQVRBIDsKWC0tLSAuL21l bWJlci5jLm9yaWcJMjAxMC0wOC0xNyAxODoxNjozNS4wMDAwMDAwMDAgKzAwMDAKWCsrKyAuL21l bWJlci5jCTIwMTAtMTEtMDEgMTc6MDc6NDQuMDAwMDAwMDAwICswMDAwClhAQCAtODcsNiArODcs NzggQEAKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmbWVtYmVyLT5sb2NrICkgOwpYIAkJfQpYICNl bmRpZgpYKwpYKwkJaWYgKG1lbWJlci0+ZHRtZl9zdGFyX21lbnUpClgrCQl7ClgrCQkJYXN0X211 dGV4X2xvY2soICZtZW1iZXItPmxvY2sgKSA7ClgrCQkJaWYgKEFTVF9GUkFNRV9TVUJDTEFTU19J TlQoZikgPT0gJyonKQpYKwkJCXsKWCsJCQkJbWVtYmVyLT5zdGFyX3ByZXNzZWQgPSAxOwpYKwkJ CQlERUJVRyggInN0YXIgd2FzIHByZXNzZWRcbiIgKTsKWCsJCQl9ClgrCQkJZWxzZQpYKwkJCXsK WCsJCQkJLy8gcmVzZXQgdGhpcyBpbW1lZGlhdGVseSBzbyB0aGF0IGZ1bmN0aW9ucyB0aGF0IGFs bG93IHJlcGVhdCBwcmVzc2VzICg0LCA2LCBldGMpIGNhbiByZXNldCBpdCB0byBzdGFyX3ByZXNz ZWQgPSAxClgrCQkJCXNob3J0IG1lbnUgPSBtZW1iZXItPnN0YXJfcHJlc3NlZDsKWCsJCQkJbWVt YmVyLT5zdGFyX3ByZXNzZWQgPSAwOwpYKwkJCQlpZiAobWVudSkKWCsJCQkJewpYKwkJCQkJc3dp dGNoIChBU1RfRlJBTUVfU1VCQ0xBU1NfSU5UKGYpKSB7ClgrCQkJCQljYXNlICcxJyA6ClgrCQkJ CQkJaWYgKG1lbWJlci0+bXV0ZV9hdWRpbyA9PSAwKQpYKwkJCQkJCXsKWCsJCQkJCQkJREVCVUco ICJtdXRpbmcgbWVtYmVyXG4iICk7ClgrCQkJCQkJCW1lbWJlci0+bXV0ZV9hdWRpbyA9IDE7Clgr CQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJCQkJCQkJYXN0X21vaF9zdG9wKG1lbWJl ci0+Y2hhbik7ClgrCQkJCQkJCWlmICghYXN0X3N0cmVhbWZpbGUobWVtYmVyLT5jaGFuLCAiY29u Zi1tdXRlZCIsIG1lbWJlci0+Y2hhbi0+bGFuZ3VhZ2UpKQpYKwkJCQkJCQkJYXN0X3dhaXRzdHJl YW0obWVtYmVyLT5jaGFuLCAiIik7ClgrCQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJ CQkJCQkJYXN0X21vaF9zdGFydChtZW1iZXItPmNoYW4sIE5VTEwsIE5VTEwpOwpYKwkJCQkJCX0K WCsJCQkJCQllbHNlIGlmIChtZW1iZXItPm11dGVfYXVkaW8gPT0gMSkKWCsJCQkJCQl7ClgrCQkJ CQkJCURFQlVHKCAidW5tdXRpbmcgbWVtYmVyXG4iICk7ClgrCQkJCQkJCW1lbWJlci0+bXV0ZV9h dWRpbyA9IDA7ClgrCQkJCQkJCWlmIChtZW1iZXItPm1vaF9mbGFnKQpYKwkJCQkJCQkJYXN0X21v aF9zdG9wKG1lbWJlci0+Y2hhbik7ClgrCQkJCQkJCWlmICghYXN0X3N0cmVhbWZpbGUobWVtYmVy LT5jaGFuLCAiY29uZi11bm11dGVkIiwgbWVtYmVyLT5jaGFuLT5sYW5ndWFnZSkpClgrCQkJCQkJ CQlhc3Rfd2FpdHN0cmVhbShtZW1iZXItPmNoYW4sICIiKTsKWCsJCQkJCQkJaWYgKG1lbWJlci0+ bW9oX2ZsYWcpClgrCQkJCQkJCQlhc3RfbW9oX3N0YXJ0KG1lbWJlci0+Y2hhbiwgTlVMTCwgTlVM TCk7ClgrCQkJCQkJfQpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnMicgOgpYKwkJCQkJCURF QlVHKCAibm90IGltcGxlbWVudGVkOiBsb2NrL3VubG9jayBjb25mZXJlbmNlXG4iICk7ClgrCQkJ CQkJYnJlYWs7ClgrCQkJCQljYXNlICczJyA6ClgrCQkJCQkJREVCVUcoICJub3QgaW1wbGVtZW50 ZWQ6IGVqZWN0IGxhc3QgdXNlciB0aGF0IGpvaW5lZCBjb25mZXJlbmNlXG4iICk7ClgrCQkJCQkJ YnJlYWs7ClgrCQkJCQljYXNlICc0JyA6ClgrCQkJCQkJREVCVUcoICJub3QgaW1wbGVtZW50ZWQ6 IGxvd2VyIHZvbHVtZVxuIiApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnNicgOgpYKwkJ CQkJCURFQlVHKCAibm90IGltcGxlbWVudGVkOiByYWlzZSB2b2x1bWVcbiIgKTsKWCsJCQkJCQli cmVhazsKWCsJCQkJCWNhc2UgJzgnIDoKWCsJCQkJCQkvLyB0aGlzIGlzIGEgbm8tb3AgLSBhbGxv d3Mgc3Rhcl9wcmVzc2VkIHRvIGJlIHJlc2V0IHRvIHplcm8gdG8gc3RvcCB2b2x1bWUgYWRqdXN0 bWVudApYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnNycgOgpYKwkJCQkJCW1lbWJlci0+bGlz dGVuX3ZvbHVtZS0tOwpYKwkJCQkJCW1lbWJlci0+c3Rhcl9wcmVzc2VkID0gMTsKWCsJCQkJCQlE RUJVRyggImxvd2VyIG15IHZvbHVtZSAobm93OiAlZClcbiIsIG1lbWJlci0+bGlzdGVuX3ZvbHVt ZSApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJY2FzZSAnOScgOgpYKwkJCQkJCW1lbWJlci0+bGlz dGVuX3ZvbHVtZSsrOwpYKwkJCQkJCW1lbWJlci0+c3Rhcl9wcmVzc2VkID0gMTsKWCsJCQkJCQlE RUJVRyggInJhaXNlIG15IHZvbHVtZSAobm93OiAlZClcbiIsIG1lbWJlci0+bGlzdGVuX3ZvbHVt ZSApOwpYKwkJCQkJCWJyZWFrOwpYKwkJCQkJfQpYKwkJCQl9ClgrCQkJfQpYKwkJCWFzdF9tdXRl eF91bmxvY2soICZtZW1iZXItPmxvY2sgKSA7ClgrCQl9ClgrClggCQlpZiAobWVtYmVyLT5kdG1m X3JlbGF5KQpYIAkJewpYIAkJCS8vIG91dHB1dCB0byBtYW5hZ2VyLi4uClhAQCAtMTA1LDExICsx NzcsMTEgQEAKWCAJCQkJIk11dGU6ICVkXHJcbiIsClggCQkJCWNvbmYtPm5hbWUsClggCQkJCW1l bWJlci0+dHlwZSwKWC0JCQkJbWVtYmVyLT5jaGFuLT51bmlxdWVpZCwKWC0JCQkJbWVtYmVyLT5j aGFuLT5uYW1lLApYLQkJCQltZW1iZXItPmNoYW4tPmNpZC5jaWRfbnVtID8gbWVtYmVyLT5jaGFu LT5jaWQuY2lkX251bSA6ICJ1bmtub3duIiwKWC0JCQkJbWVtYmVyLT5jaGFuLT5jaWQuY2lkX25h bWUgPyBtZW1iZXItPmNoYW4tPmNpZC5jaWRfbmFtZSA6ICJ1bmtub3duIiwKWC0JCQkJZi0+c3Vi Y2xhc3MsClgrCQkJCW1lbWJlci0+dW5pcXVlaWQsClgrCQkJCW1lbWJlci0+Y2hhbm5lbF9uYW1l LApYKwkJCQlhc3RfY2hhbm5lbF9jYWxsZXJpZF9udW1iZXIobWVtYmVyLT5jaGFuKSwKWCsJCQkJ YXN0X2NoYW5uZWxfY2FsbGVyaWRfbmFtZShtZW1iZXItPmNoYW4pLApYKwkJCQlBU1RfRlJBTUVf U1VCQ0xBU1NfSU5UKGYpLApYIAkJCQljb25mLT5tZW1iZXJjb3VudCwKWCAJCQkJbWVtYmVyLT5m bGFncywKWCAJCQkJbWVtYmVyLT5tdXRlX2F1ZGlvClhAQCAtMTc4LDcgKzI1MCw4IEBAClggI2Vu ZGlmClggCWlmICgoZi0+ZnJhbWV0eXBlID09IEFTVF9GUkFNRV9WT0lDRQpYIAkJCSYmIChtZW1i ZXItPm11dGVfYXVkaW8gPT0gMQpYLQkJCQl8fCBtZW1iZXItPm11dGVkID09IDEpClgrCQkJCXx8 IChtZW1iZXItPnNvdW5kcSAhPSBOVUxMICYmIG1lbWJlci0+bXV0ZWQgPT0gMSkKWCsJCQkJKQpY IAkJCSkKWCAjaWZkZWYJVklERU8KWCAJCXx8IChmLT5mcmFtZXR5cGUgPT0gQVNUX0ZSQU1FX1ZJ REVPClhAQCAtMjA2LDExICsyNzksNyBAQApYIAkJLy8KWCAJCWlmICgKWCAJCQltZW1iZXItPmRz cCAhPSBOVUxMClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQkJCSYmIGYtPnN1YmNsYXNzID09IEFT VF9GT1JNQVRfU0xJTkVBUgpYLSNlbHNlClgtCQkJJiYgZi0+c3ViY2xhc3MgPT0gQVNUX0ZPUk1B VF9TTElORUFSMTYKWC0jZW5kaWYKWCsJCQkmJiBBU1RfRlJBTUVfU1VCQ0xBU1NfQ09ERUMoZikg PT0gQVNUX0NPTkZfRk9STUFUClggCQkJJiYgZi0+ZGF0YWxlbiA9PSBBU1RfQ09ORl9GUkFNRV9E QVRBX1NJWkUKWCAJCQkpClggCQl7ClhAQCAtMjI5LDE4ICsyOTgsNyBAQApYIAkJCQkJLy9ERUJV RygiaWdub3JlX3NwZWV4X2NvdW50ID0+ICVkXG4iLCBtZW1iZXItPmlnbm9yZV9zcGVleF9jb3Vu dCkgOwpYIApYIAkJCQkJLy8gc2tpcCBzcGVleF9wcmVwcm9jZXNzKCksIGFuZCBkZWNyZW1lbnQg Y291bnRlcgpYLQkJCQkJaWYgKCEtLW1lbWJlci0+aWdub3JlX3NwZWV4X2NvdW50ICkgewpYLQkJ CQkJCW1hbmFnZXJfZXZlbnQoClgtCQkJCQkJCUVWRU5UX0ZMQUdfQ0FMTCwKWC0JCQkJCQkJIkNv bmZlcmVuY2VTdGF0ZSIsClgtCQkJCQkJCSJDaGFubmVsOiAlc1xyXG4iClgtCQkJCQkJCSJGbGFn czogJXNcclxuIgpYLQkJCQkJCQkiU3RhdGU6ICVzXHJcbiIsClgtCQkJCQkJCW1lbWJlci0+Y2hh bi0+bmFtZSwKWC0JCQkJCQkJbWVtYmVyLT5mbGFncywKWC0JCQkJCQkJInNpbGVudCIKWC0JCQkJ CQkpIDsKWC0JCQkJCX0KWCsJCQkJCS0tbWVtYmVyLT5pZ25vcmVfc3BlZXhfY291bnQgOwpYIAkJ CQl9ClggCQkJCWVsc2UKWCAJCQkJewpYQEAgLTI1MCwxOCArMzA4LDYgQEAKWCAJCQl9ClggCQkJ ZWxzZQpYIAkJCXsKWC0JCQkJaWYgKCFtZW1iZXItPmlnbm9yZV9zcGVleF9jb3VudCkgewpYLQkJ CQkJbWFuYWdlcl9ldmVudCgKWC0JCQkJCQlFVkVOVF9GTEFHX0NBTEwsClgtCQkJCQkJIkNvbmZl cmVuY2VTdGF0ZSIsClgtCQkJCQkJIkNoYW5uZWw6ICVzXHJcbiIKWC0JCQkJCQkiRmxhZ3M6ICVz XHJcbiIKWC0JCQkJCQkiU3RhdGU6ICVzXHJcbiIsClgtCQkJCQkJbWVtYmVyLT5jaGFuLT5uYW1l LApYLQkJCQkJCW1lbWJlci0+ZmxhZ3MsClgtCQkJCQkJInNwZWFraW5nIgpYLQkJCQkJKSA7Clgt CQkJCX0KWCAJCQkJLy8gdm9pY2UgZGV0ZWN0ZWQsIHJlc2V0IHNraXAgY291bnQKWCAJCQkJbWVt YmVyLT5pZ25vcmVfc3BlZXhfY291bnQgPSBBU1RfQ09ORl9TS0lQX1NQRUVYX1BSRVBST0NFU1Mg OwpYIAkJCX0KWEBAIC0yODgsNyArMzM0LDcgQEAKWCAjZW5kaWYKWCAJZWxzZSBpZiAoClggCQlm LT5mcmFtZXR5cGUgPT0gQVNUX0ZSQU1FX0NPTlRST0wKWC0JCSYmIGYtPnN1YmNsYXNzID09IEFT VF9DT05UUk9MX0hBTkdVUApYKwkJJiYgQVNUX0ZSQU1FX1NVQkNMQVNTX0lOVChmKSA9PSBBU1Rf Q09OVFJPTF9IQU5HVVAKWCAJCSkKWCAJewpYIAkJLy8gaGFuZ3VwIHJlY2VpdmVkClhAQCAtMzI4 LDcgKzM3NCw3IEBAClggCQkJICAgICAgICAgICAgICAiQ29uZmVyZW5jZUNhbWVyYURpc2FibGVk IiwKWCAJCQkgICAgICAgICAgICAgICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNc clxuIiwKWCAJCQkgICAgICAgICAgICAgIGNvbmYtPm5hbWUsClgtCQkJICAgICAgICAgICAgICBt ZW1iZXItPmNoYW4tPm5hbWUpOwpYKwkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFubmVsX25h bWUpOwpYIAkJCW1lbWJlci0+bm9fY2FtZXJhID0gMTsKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCZt ZW1iZXItPmxvY2spOwpYIAkJfSBlbHNlIGlmICggc3RybmNtcChDQVNUREFUQTJQVFIoZi0+ZGF0 YSwgY2hhciksIEFTVF9DT05GX0NPTlRST0xfQ0FNRVJBX0VOQUJMRUQsIHN0cmxlbihBU1RfQ09O Rl9DT05UUk9MX0NBTUVSQV9FTkFCTEVEKSkgPT0gMCApClhAQCAtMzM4LDcgKzM4NCw3IEBAClgg CQkJICAgICAgICAgICAgICAiQ29uZmVyZW5jZUNhbWVyYUVuYWJsZWQiLApYIAkJCSAgICAgICAg ICAgICAgIkNvbmZlcmVuY2VOYW1lOiAlc1xyXG5DaGFubmVsOiAlc1xyXG4iLApYIAkJCSAgICAg ICAgICAgICAgY29uZi0+bmFtZSwKWC0JCQkgICAgICAgICAgICAgIG1lbWJlci0+Y2hhbi0+bmFt ZSk7ClgrCQkJICAgICAgICAgICAgICBtZW1iZXItPmNoYW5uZWxfbmFtZSk7ClggCQkJbWVtYmVy LT5ub19jYW1lcmEgPSAwOwpYIAkJCWFzdF9tdXRleF91bmxvY2soJm1lbWJlci0+bG9jayk7Clgg CQl9IGVsc2UgaWYgKCBzdHJuY21wKENBU1REQVRBMlBUUihmLT5kYXRhLCBjaGFyKSwgQVNUX0NP TkZfQ09OVFJPTF9TVE9QX1ZJREVPX1RSQU5TTUlULCBzdHJsZW4oQVNUX0NPTkZfQ09OVFJPTF9T VE9QX1ZJREVPX1RSQU5TTUlUKSkgPT0gMCApClhAQCAtMzQ4LDcgKzM5NCw3IEBAClggCQkJICAg ICAgICAgICAgICAiQ29uZmVyZW5jZVN0b3BWaWRlb1RyYW5zbWl0IiwKWCAJCQkgICAgICAgICAg ICAgICJDb25mZXJlbmNlTmFtZTogJXNcclxuQ2hhbm5lbDogJXNcclxuIiwKWCAJCQkgICAgICAg ICAgICAgIGNvbmYtPm5hbWUsClgtCQkJICAgICAgICAgICAgICBtZW1iZXItPmNoYW4tPm5hbWUp OwpYKwkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFubmVsX25hbWUpOwpYIAkJCW1lbWJlci0+ bm9yZWN2X3ZpZGVvID0gMTsKWCAJCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpY IAkJfSBlbHNlIGlmICggc3RybmNtcChDQVNUREFUQTJQVFIoZi0+ZGF0YSwgY2hhciksIEFTVF9D T05GX0NPTlRST0xfU1RBUlRfVklERU9fVFJBTlNNSVQsIHN0cmxlbihBU1RfQ09ORl9DT05UUk9M X1NUQVJUX1ZJREVPX1RSQU5TTUlUKSkgPT0gMCApClhAQCAtMzU4LDcgKzQwNCw3IEBAClggCQkJ ICAgICAgICAgICAgICAiQ29uZmVyZW5jZVN0YXJ0VmlkZW9UcmFuc21pdCIsClggCQkJICAgICAg ICAgICAgICAiQ29uZmVyZW5jZU5hbWU6ICVzXHJcbkNoYW5uZWw6ICVzXHJcbiIsClggCQkJICAg ICAgICAgICAgICBjb25mLT5uYW1lLApYLQkJCSAgICAgICAgICAgICAgbWVtYmVyLT5jaGFuLT5u YW1lKTsKWCsJCQkgICAgICAgICAgICAgIG1lbWJlci0+Y2hhbm5lbF9uYW1lKTsKWCAJCQltZW1i ZXItPm5vcmVjdl92aWRlbyA9IDA7ClggCQkJYXN0X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2Nr KTsKWCAJCX0KWEBAIC00MDgsOSArNDU0LDEzIEBAClggCQltYW5hZ2VyX2V2ZW50KApYIAkJCUVW RU5UX0ZMQUdfQ0FMTCwKWCAJCQkiQ29uZmVyZW5jZVNvdW5kQ29tcGxldGUiLApYKwkJCSJDb25m ZXJlbmNlTmFtZTogJXNcclxuIgpYKwkJCSJNZW1iZXJJZDogJWRcclxuIgpYIAkJCSJDaGFubmVs OiAlc1xyXG4iClggCQkJIlNvdW5kOiAlc1xyXG4iLApYLQkJCW1lbWJlci0+Y2hhbi0+bmFtZSwK WCsJCQltZW1iZXItPmNvbmZfbmFtZSwKWCsJCQltZW1iZXItPmlkLApYKwkJCW1lbWJlci0+Y2hh bm5lbF9uYW1lLApYIAkJCXRvYm9vdC0+bmFtZQpYIAkJKTsKWCAJfQpYQEAgLTQyMSwxNCArNDcx LDEyIEBAClggCWZyZWUodG9ib290KTsKWCAJaWYobWVtYmVyLT5zb3VuZHEpIGdvdG8gYWdhaW47 ClggClgtCW1lbWJlci0+bXV0ZWQgPSAwOwpYLQpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXIt PmxvY2spOwpYIApYIAkvLyBpZiB3ZSBnZXQgaGVyZSwgd2UndmUgZ290dGVuIHRvIHRoZSBlbmQg b2YgdGhlIHF1ZXVlOyByZXNldCB3cml0ZSBmb3JtYXQKWCAJaWYgKCBhc3Rfc2V0X3dyaXRlX2Zv cm1hdCggbWVtYmVyLT5jaGFuLCBtZW1iZXItPndyaXRlX2Zvcm1hdCApIDwgMCApClggCXsKWC0J CWFzdF9sb2coIExPR19FUlJPUiwgInVuYWJsZSB0byBzZXQgd3JpdGUgZm9ybWF0IHRvICVkXG4i LApYKwkJYXN0X2xvZyggTE9HX0VSUk9SLCAidW5hYmxlIHRvIHNldCB3cml0ZSBmb3JtYXQgdG8g IiBBU1RfRk1UX0ZPUk1BVF9UICJcbiIsClggCQkgICAgbWVtYmVyLT53cml0ZV9mb3JtYXQgKSA7 ClggCX0KWCAgICAgfSBlbHNlIHsKWEBAIC00NzQsNiArNTIyLDcgQEAKWCAJCQl9ClggCQl9IGVs c2UgewpYIAkJCWlmIChtZW1iZXItPm1vaF9mbGFnKSB7ClgrCQkJCW1lbWJlci0+bXV0ZWQgPSAx OwpYIAkJCQltZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9IDA7ClggCQkJCWRlbGV0ZV9jb25m X2ZyYW1lKCBjZiApIDsKWCAJCQkJYXN0X21vaF9zdGFydChtZW1iZXItPmNoYW4sIE5VTEwsIE5V TEwpOwpYQEAgLTUxMiw3ICs1NjEsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGUoIG1lbWJlci0+Y2hh biwgZiApICE9IDAgKQpYIAkJewpYIAkJCS8vIGxvZyAnZHJvcHBlZCcgb3V0Z29pbmcgZnJhbWUK WC0JCQlERUJVRygidW5hYmxlIHRvIHdyaXRlIHZvaWNlIGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5u ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8g d3JpdGUgdm9pY2UgZnJhbWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5j aGFubmVsX25hbWUpIDsKWCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdv aW5nIGZyYW1lcwpYIAkJCW1lbWJlci0+ZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTU0Nyw3 ICs1OTYsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGVfdmlkZW8oIG1lbWJlci0+Y2hhbiwgZiApICE9 IDEgKQpYIAkJewpYIAkJCS8vIGxvZyAnZHJvcHBlZCcgb3V0Z29pbmcgZnJhbWUKWC0JCQlERUJV RygidW5hYmxlIHRvIHdyaXRlIHZpZGVvIGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNc biIsIG1lbWJlci0+Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8gd3JpdGUgdmlk ZW8gZnJhbWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25h bWUpIDsKWCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1l cwpYIAkJCW1lbWJlci0+dmlkZW9fZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTU3NSw3ICs2 MjQsNyBAQApYIAkJaWYgKCBhc3Rfd3JpdGUoIG1lbWJlci0+Y2hhbiwgY2YtPmZyICkgIT0gMCAp ClggCQl7ClggCQkJLy8gbG9nICdkcm9wcGVkJyBvdXRnb2luZyBmcmFtZQpYLQkJCURFQlVHKCJ1 bmFibGUgdG8gd3JpdGUgZHRtZiBmcmFtZSB0byBjaGFubmVsLCBjaGFubmVsID0+ICVzXG4iLCBt ZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJCQlERUJVRygidW5hYmxlIHRvIHdyaXRlIGR0bWYgZnJh bWUgdG8gY2hhbm5lbCwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsK WCAKWCAJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJ CW1lbWJlci0+ZHRtZl9mcmFtZXNfb3V0X2Ryb3BwZWQrKyA7ClhAQCAtNjAzLDcgKzY1Miw3IEBA ClggCQlpZiAoIGFzdF93cml0ZSggbWVtYmVyLT5jaGFuLCBjZi0+ZnIgKSAhPSAwICkKWCAJCXsK WCAJCQkvLyBsb2cgJ2Ryb3BwZWQnIG91dGdvaW5nIGZyYW1lClgtCQkJREVCVUcoInVuYWJsZSB0 byB3cml0ZSB0ZXh0IGZyYW1lIHRvIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNcbiIsIG1lbWJlci0+ Y2hhbi0+bmFtZSkgOwpYKwkJCURFQlVHKCJ1bmFibGUgdG8gd3JpdGUgdGV4dCBmcmFtZSB0byBj aGFubmVsLCBjaGFubmVsID0+ICVzXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgOwpYIApYIAkJ CS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29pbmcgZnJhbWVzClggCQkJbWVtYmVy LT50ZXh0X2ZyYW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC02MjUsMTQgKzY3NCwxNSBAQApYIC8v IG1haW4gbWVtYmVyIHRocmVhZCBmdW5jdGlvbgpYIC8vClggClgtaW50IG1lbWJlcl9leGVjKCBz dHJ1Y3QgYXN0X2NoYW5uZWwqIGNoYW4sIHZvaWQqIGRhdGEgKQpYK2ludCBtZW1iZXJfZXhlYygg c3RydWN0IGFzdF9jaGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkKWCB7ClggLy8Jc3Ry dWN0IHRpbWV2YWwgc3RhcnQsIGVuZCA7ClggLy8Jc3RhcnQgPSBhc3RfdHZub3coKTsKWCAKWCAJ c3RydWN0IGFzdF9jb25mZXJlbmNlICpjb25mIDsKWC0JY2hhciBjb25mX25hbWVbQ09ORl9OQU1F X0xFTiArIDFdICA9IHsgMCB9OwpYIAlzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyICptZW1iZXIgOwpY Kwljb25zdCBjaGFyICpyZWNmaWxlID0gTlVMTCwgKnJlY2Zvcm1hdCA9IE5VTEw7ClgrCWNoYXIg cmVjZGVmYXVsdGZpbGVbQVNUX01BWF9FWFRFTlNJT05dOwpYIApYIAlzdHJ1Y3QgYXN0X2ZyYW1l ICpmIDsgLy8gZnJhbWUgcmVjZWl2ZWQgZnJvbSBhc3RfcmVhZCgpClggClhAQCAtNjYxLDcgKzcx MSw3IEBAClggClggCS8vREVCVUcoImNyZWF0aW5nIG5ldyBtZW1iZXIsIGlkID0+ICVzLCBmbGFn cyA9PiAlcywgcCA9PiAlc1xuIiwgaWQsIGZsYWdzLCBwcmlvcml0eSkgOwpYIApYLQltZW1iZXIg PSBjcmVhdGVfbWVtYmVyKCBjaGFuLCAoY29uc3QgY2hhciopKCBkYXRhICksIGNvbmZfbmFtZSAp IDsgLy8gZmxhZ3MsIGF0b2koIHByaW9yaXR5ICkgKSA7ClgrCW1lbWJlciA9IGNyZWF0ZV9tZW1i ZXIoIGNoYW4sIChjb25zdCBjaGFyKikoIGRhdGEgKSApIDsgLy8gZmxhZ3MsIGF0b2koIHByaW9y aXR5ICkgKSA7ClggClggCS8vIHVuYWJsZSB0byBjcmVhdGUgbWVtYmVyLCByZXR1cm4gYW4gZXJy b3IKWCAJaWYgKCBtZW1iZXIgPT0gTlVMTCApClhAQCAtNjkyLDE3ICs3NDIsMzIgQEAKWCAJfQpY IApYIAkvLwpYLQkvLyBzZXR1cCBhIGNvbmZlcmVuY2UgZm9yIHRoZSBuZXcgbWVtYmVyClgrCS8v IHJlY29yZGluZwpYIAkvLwpYKwlpZiAobWVtYmVyLT5yZWNvcmRfZmxhZykKWCsJewpYKwkJcmVj ZmlsZSA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hhbiwgIktPTkZFUkVOQ0VfUkVDT1JE SU5HRklMRSIpOwpYKwkJaWYgKCFyZWNmaWxlKSB7ClgrCQkJc25wcmludGYocmVjZGVmYXVsdGZp bGUsIHNpemVvZihyZWNkZWZhdWx0ZmlsZSksClgrCQkJCSAia29uZmVyZW5jZS0lcy0lcyIsIG1l bWJlci0+Y29uZl9uYW1lLCBtZW1iZXItPnVuaXF1ZWlkKTsKWCsJCQlyZWNmaWxlID0gcmVjZGVm YXVsdGZpbGU7ClgrCQl9ClggClgtCWNoYXIgbWF4X3VzZXJzX2ZsYWcgPSAwIDsKWC0JY29uZiA9 IGpvaW5fY29uZmVyZW5jZSggbWVtYmVyLCBjb25mX25hbWUsICZtYXhfdXNlcnNfZmxhZyApIDsK WCsJCXJlY2Zvcm1hdCA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hhbiwgIktPTkZFUkVO Q0VfUkVDT1JESU5HRk9STUFUIik7ClgrCQlpZiAoIXJlY2Zvcm1hdCkKWCsJCQlyZWNmb3JtYXQg PSAid2F2IjsKWCsJfQpYIApYKwkvLwpYKwkvLyBzZXR1cCBhIGNvbmZlcmVuY2UgZm9yIHRoZSBu ZXcgbWVtYmVyClgrCS8vClgrClgrCWNvbmYgPSBqb2luX2NvbmZlcmVuY2UoIG1lbWJlciwgcmVj ZmlsZSwgcmVjZm9ybWF0ICkgOwpYIAlpZiAoIGNvbmYgPT0gTlVMTCApClggCXsKWC0JCWFzdF9s b2coIExPR19OT1RJQ0UsICJ1bmFibGUgdG8gc2V0dXAgbWVtYmVyIGNvbmZlcmVuY2UgJXM6IG1h eF91c2Vyc19mbGFnIGlzICVkXG4iLCBjb25mX25hbWUsIG1heF91c2Vyc19mbGFnICkgOwpYKwkJ YXN0X2xvZyggTE9HX05PVElDRSwgInVuYWJsZSB0byBzZXR1cCBtZW1iZXIgY29uZmVyZW5jZSAl c1xuIiwgbWVtYmVyLT5jb25mX25hbWUpIDsKWCAJCWRlbGV0ZV9tZW1iZXIoIG1lbWJlcikgOwpY LQkJcmV0dXJuIChtYXhfdXNlcnNfZmxhZyA/IDAgOiAtMSApIDsKWCsJCXJldHVybiAwOwpYIAl9 ClggClggCS8vClhAQCAtNzE4LDcgKzc4Myw3IEBAClggCQkJc3B5ZWUtPnNweV9wYXJ0bmVyID0g bWVtYmVyOwpYIAkJCWFzdF9tdXRleF91bmxvY2soICZzcHllZS0+bG9jayApIDsKWCAKWC0JCQkv L0RFQlVHKCJTdGFydCBzcHllciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFt ZSwgbWVtYmVyLT5zcHllZV9jaGFubmVsX25hbWUpIDsKWCsJCQkvL0RFQlVHKCJTdGFydCBzcHll ciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVl X2NoYW5uZWxfbmFtZSkgOwpYIAkJfSBlbHNlClggCQl7ClggCQkJaWYgKCBzcHllZSAhPSBOVUxM ICkgewpYQEAgLTcyNyw4ICs3OTIsOCBAQApYIAkJCQlhc3RfbXV0ZXhfdW5sb2NrKCAmc3B5ZWUt PmxvY2sgKSA7ClggCQkJfQpYIAkJCXBieF9idWlsdGluX3NldHZhcl9oZWxwZXIobWVtYmVyLT5j aGFuLCAiS09ORkVSRU5DRSIsICJTUFlGQUlMRUQiICk7ClgtCQkJLy9ERUJVRygiRmFpbGVkIHRv IHN0YXJ0IHNweWVyICVzLCBzcHllZSBpcyAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBtZW1i ZXItPnNweWVlX2NoYW5uZWxfbmFtZSkgOwpYLQkJCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29u ZiwgY29uZl9uYW1lICkgOwpYKwkJCS8vREVCVUcoIkZhaWxlZCB0byBzdGFydCBzcHllciAlcywg c3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVlX2NoYW5u ZWxfbmFtZSkgOwpYKwkJCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29uZiApIDsKWCAJCQlyZXR1 cm4gMCA7ClggCQl9ClggCX0gClhAQCAtNzUzLDI2ICs4MTgsNDkgQEAKWCAJCSJDaGFubmVsOiAl c1xyXG4iClggCQkiQ2FsbGVySUQ6ICVzXHJcbiIKWCAJCSJDYWxsZXJJRE5hbWU6ICVzXHJcbiIK WCsJCSJNdXRlZDogJXNcclxuIgpYKwkJIlNwZWFraW5nOiAlc1xyXG4iClggCQkiTW9kZXJhdG9y czogJWRcclxuIgpYIAkJIkNvdW50OiAlZFxyXG4iLApYIAkJY29uZi0+bmFtZSwKWCAJCW1lbWJl ci0+dHlwZSwKWC0JCW1lbWJlci0+Y2hhbi0+dW5pcXVlaWQsClgrCQltZW1iZXItPnVuaXF1ZWlk LApYIAkJbWVtYmVyLT5pZCwKWCAJCW1lbWJlci0+ZmxhZ3MsClgtCQltZW1iZXItPmNoYW4tPm5h bWUsClgtCQltZW1iZXItPmNoYW4tPmNpZC5jaWRfbnVtID8gbWVtYmVyLT5jaGFuLT5jaWQuY2lk X251bSA6ICJ1bmtub3duIiwKWC0JCW1lbWJlci0+Y2hhbi0+Y2lkLmNpZF9uYW1lID8gbWVtYmVy LT5jaGFuLT5jaWQuY2lkX25hbWU6ICJ1bmtub3duIiwKWCsJCW1lbWJlci0+Y2hhbm5lbF9uYW1l LApYKwkJYXN0X2NoYW5uZWxfY2FsbGVyaWRfbnVtYmVyKG1lbWJlci0+Y2hhbiksClgrCQlhc3Rf Y2hhbm5lbF9jYWxsZXJpZF9uYW1lKG1lbWJlci0+Y2hhbiksClgrCQkobWVtYmVyLT5tdXRlX2F1 ZGlvID09IDAgPyAiRmFsc2UiIDogIlRydWUiKSwKWCsJCShtZW1iZXItPnNwZWFraW5nX3N0YXRl ID09IDEgPyAiVHJ1ZSIgOiAiRmFsc2UiKSwKWCAJCWNvbmYtPnN0YXRzLm1vZGVyYXRvcnMsClgg CQljb25mLT5tZW1iZXJjb3VudApYIAkpIDsKWCAKWCAJLy8KWCsJLy8gcGxheSB3ZWxjb21lIHBy b21wdApYKwkvLwpYKwlpZiAobWVtYmVyLT53ZWxjb21lX3Byb21wdCkgewpYKwkJYXN0X3N0b3Bz dHJlYW0oY2hhbik7ClgrCQlyZXMgPSBhc3Rfc3RyZWFtZmlsZShjaGFuLCBtZW1iZXItPndlbGNv bWVfcHJvbXB0LCBjaGFuLT5sYW5ndWFnZSk7ClgrCQlpZiAoIXJlcykgewpYKwkJCXJlcyA9IGFz dF93YWl0c3RyZWFtKGNoYW4sICIiKTsKWCsJCQlhc3Rfc3RvcHN0cmVhbShjaGFuKTsKWCsJCX0g ZWxzZSB7ClgrCQkJYXN0X2xvZyhMT0dfV0FSTklORywgIkZhaWxlZCB0byBwbGF5IHdlbGNvbWUg cHJvbXB0ICclcycgb24gY2hhbm5lbCAnJXMnIiwKWCsJCQkJbWVtYmVyLT53ZWxjb21lX3Byb21w dCwgY2hhbi0+bmFtZSk7ClgrCQl9ClgrCX0KWCsKWCsJLy8KWCAJLy8gcHJvY2VzcyBsb29wIGZv ciBuZXcgbWVtYmVyICggdGhpcyBydW5zIGluIGl0J3Mgb3duIHRocmVhZCApClggCS8vClggClgg CURFQlVHKCJiZWdpbiBtZW1iZXIgZXZlbnQgbG9vcCwgY2hhbm5lbCA9PiAlc1xuIiwgY2hhbi0+ bmFtZSkgOwpYIApYKwkvLyB0aW1lciB0aW1lc3RhbXBzClgrCXN0cnVjdCB0aW1ldmFsIGJhc2Us IGN1cnIgOwpYKwliYXNlID0gYXN0X3R2bm93KCk7ClgrClggCS8vIHRlbGwgY29uZmVyZW5jZV9l eGVjIHdlJ3JlIHJlYWR5IGZvciBmcmFtZXMKWCAJbWVtYmVyLT5yZWFkeV9mb3Jfb3V0Z29pbmcg PSAxIDsKWCAJd2hpbGUgKCA0MiA9PSA0MiApClhAQCAtODA4LDcgKzg5Niw3IEBAClggCQkJLy8g bm8gZnJhbWUgaGFzIGFycml2ZWQgeWV0ClggCQkJLy8gYXN0X2xvZyggTE9HX05PVElDRSwgIm5v IGZyYW1lIGF2YWlsYWJsZSBmcm9tIGNoYW5uZWwsIGNoYW5uZWwgPT4gJXNcbiIsIGNoYW4tPm5h bWUgKSA7ClggCQl9ClgtCQllbHNlIGlmICggbGVmdCA+IDAgKQpYKwkJZWxzZSBpZiAoIGxlZnQg PiAwICYmIGNoYW4tPmZkbm8gIT0gQVNUX0dFTkVSQVRPUl9GRCApClggCQl7ClggCQkJLy8gYSBm cmFtZSBoYXMgY29tZSBpbiBiZWZvcmUgdGhlIGxhdGVuY3kgdGltZW91dApYIAkJCS8vIHdhcyBy ZWFjaGVkLCBzbyB3ZSBwcm9jZXNzIHRoZSBmcmFtZQpYQEAgLTgzNiwxNiArOTI0LDE0IEBAClgg CQkJcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihtZW1iZXItPmNoYW4sICJLT05GRVJFTkNFIiwg IktJQ0tFRCIgKTsKWCAJCQlicmVhazsKWCAJCX0KWC0JCQpYLQkJaWYgKCBtZW1iZXItPm1vaF9z dG9wICkgewpYLQkJCWFzdF9tb2hfc3RvcChtZW1iZXItPmNoYW4pOwpYLQkJCW1lbWJlci0+bW9o X3N0b3AgPSAwOwpYLQkJfQpYIApYIAkJLy8tLS0tLS0tLS0tLS0tLS0tLS8vClggCQkvLyBPVVRH T0lORyBGUkFNRVMgLy8KWCAJCS8vLS0tLS0tLS0tLS0tLS0tLS0vLwpYIApYKwkJLy8gdXBkYXRl IHRoZSBjdXJyZW50IHRpbWVzdGFtcHMKWCsJCWN1cnIgPSBhc3RfdHZub3coKTsKWCsKWCAJCWlm ICggIXByb2Nlc3Nfb3V0Z29pbmcobWVtYmVyKSApClggCQkJLy8gYmFjayB0byBwcm9jZXNzIGlu Y29taW5nIGZyYW1lcwpYIAkJCWNvbnRpbnVlIDsKWEBAIC04ODIsMTAgKzk2OCwxMCBAQApYIApY IAkJYXN0X211dGV4X3VubG9jayAoICZzcHllZS0+bG9jayApIDsKWCAKWC0JCS8vREVCVUcoIkVu ZCBzcHllciAlcywgc3B5ZWUgaXMgJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5z cHllZV9jaGFubmVsX25hbWUpIDsKWCsJCS8vREVCVUcoIkVuZCBzcHllciAlcywgc3B5ZWUgaXMg JXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPnNweWVlX2NoYW5uZWxfbmFtZSkg OwpYIAl9ClggClgtCXJlbW92ZV9tZW1iZXIoIG1lbWJlciwgY29uZiwgY29uZl9uYW1lICkgOwpY KwlyZW1vdmVfbWVtYmVyKCBtZW1iZXIsIGNvbmYgKSA7ClggCXJldHVybiAwIDsKWCB9ClggClhA QCAtOTE0LDExICsxMDAwLDQ0IEBAClggICAgICByZXR1cm4gTlVMTDsKWCB9ClggI2VuZGlmClgr Clgrc3RhdGljIGludCBjb252ZXJ0X2Zvcm1hdF90b19pbmRleChmb3JtYXRfdCBmb3JtYXQpClgr ewpYKwlzd2l0Y2ggKCBmb3JtYXQgKQpYKwl7ClgrCWNhc2UgQVNUX0NPTkZfRk9STUFUOgpYKwkJ cmV0dXJuIEFDX1NMSU5FQVJfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9VTEFXOgpYKwkJcmV0 dXJuIEFDX1VMQVdfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9BTEFXOgpYKwkJcmV0dXJuIEFD X0FMQVdfSU5ERVg7ClgrCWNhc2UgQVNUX0ZPUk1BVF9HU006ClgrCQlyZXR1cm4gQUNfR1NNX0lO REVYOwpYKwljYXNlIEFTVF9GT1JNQVRfU1BFRVg6ClgrCQlyZXR1cm4gQUNfU1BFRVhfSU5ERVg7 ClgrI2lmZGVmIEFDX1VTRV9HNzI5QQpYKwljYXNlIEFTVF9GT1JNQVRfRzcyOUE6ClgrCQlyZXR1 cm4gQUNfRzcyOUFfSU5ERVg7ClgrI2VuZGlmClgrI2lmZGVmIEFDX1VTRV9HNzIyClgrCWNhc2Ug QVNUX0ZPUk1BVF9HNzIyOgpYKwkJcmV0dXJuIEFDX0c3MjJfSU5ERVg7ClgrI2VuZGlmClgrI2lm ZGVmIEFDX1VTRV9TUEVFWDE2ClgrCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDE2OgpYKwkJcmV0dXJu IEFDX1NQRUVYMTZfSU5ERVg7ClgrI2VuZGlmClgrCWRlZmF1bHQ6ClgrCQlicmVhazsKWCsJfQpY KwlyZXR1cm4gMDsKWCt9ClgrClggLy8KWCAvLyBtYW5hbmdlIG1lbWJlciBmdW5jdGlvbnMKWCAv LwpYIApYLXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIGNyZWF0ZV9tZW1iZXIoIHN0cnVjdCBhc3Rf Y2hhbm5lbCAqY2hhbiwgY29uc3QgY2hhciogZGF0YSwgY2hhciogY29uZl9uYW1lICkKWCtzdHJ1 Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1Y3QgYXN0X2NoYW5uZWwgKmNo YW4sIGNvbnN0IGNoYXIqIGRhdGEgKQpYIHsKWCAjaWZkZWYJQVBQX0tPTkZFUkVOQ0VfREVCVUcK WCAJLy8KWEBAIC05NTQsMjAgKzEwNzMsMjYgQEAKWCAKWCAJLy8gaW5pdGlhbGl6ZSBjdgpYIAlh c3RfY29uZF9pbml0KCAmbWVtYmVyLT5kZWxldGVfdmFyLCBOVUxMICkgOwpYKwkvLyBpbml0aWFs aXplIGZsYWcgYW5kIGNvdW50ClgrCW1lbWJlci0+ZGVsZXRlX2ZsYWcgPSBtZW1iZXItPnVzZV9j b3VudCA9IDAgOwpYIApYIAkvLyBEZWZhdWx0IHZhbHVlcyBmb3IgcGFyYW1ldGVycyB0aGF0IGNh biBnZXQgb3ZlcndyaXR0ZW4gYnkgZGlhbHBsYW4gYXJndW1lbnRzClggI2lmZGVmCVZJREVPClgg CW1lbWJlci0+dmlkZW9fc3RhcnRfdGltZW91dCA9IEFTVF9DT05GX1ZJREVPX1NUQVJUX1RJTUVP VVQ7ClggCW1lbWJlci0+dmlkZW9fc3RvcF90aW1lb3V0ID0gQVNUX0NPTkZfVklERU9fU1RPUF9U SU1FT1VUOwpYICNlbmRpZgpYKwltZW1iZXItPnByaW9yaXR5ID0gMDsKWCAJbWVtYmVyLT52YWRf cHJvYl9zdGFydCA9IEFTVF9DT05GX1BST0JfU1RBUlQ7ClggCW1lbWJlci0+dmFkX3Byb2JfY29u dGludWUgPSBBU1RfQ09ORl9QUk9CX0NPTlRJTlVFOwpYIAltZW1iZXItPm1heF91c2VycyA9IEFT VF9DT05GX01BWF9VU0VSUzsKWCsJbWVtYmVyLT50eXBlID0gTlVMTDsKWCsJbWVtYmVyLT5zcHll ZV9jaGFubmVsX25hbWUgPSBOVUxMOwpYKwltZW1iZXItPndlbGNvbWVfcHJvbXB0ID0gTlVMTDsK WCAKWCAJLy8KWCAJLy8gaW5pdGlhbGl6ZSBtZW1iZXIgd2l0aCBwYXNzZWQgZGF0YSB2YWx1ZXMK WCAJLy8KWC0JY2hhciBhcmdzdHJbMjU2XSA9IHsgMCB9OwpYKwljaGFyIGFyZ3N0clsyNTZdIDsK WCAKWCAJLy8gY29weSB0aGUgcGFzc2VkIGRhdGEKWCAJc3RybmNweSggYXJnc3RyLCBkYXRhLCBz aXplb2YoYXJnc3RyKSAtIDEgKSA7ClhAQCAtOTgxLDcgKzExMDYsOCBAQApYIAljaGFyICp0b2tl bjsKWCAJaWYgKCAoIHRva2VuID0gc3Ryc2VwKCAmc3RyaW5ncCwgYXJndW1lbnRfZGVsaW1pdGVy ICkgKSAhPSBOVUxMICkKWCAJewpYLQkJc3RybmNweSggY29uZl9uYW1lLCB0b2tlbiwgQ09ORl9O QU1FX0xFTiApIDsKWCsJCW1lbWJlci0+Y29uZl9uYW1lID0gbWFsbG9jKCBzdHJsZW4oIHRva2Vu ICkgKyAxICkgOwpYKwkJc3RyY3B5KCBtZW1iZXItPmNvbmZfbmFtZSwgdG9rZW4gKSA7ClggCX0K WCAJZWxzZQpYIAl7ClhAQCAtMTAxNSw2ICsxMTQxLDcgQEAKWCAJCXN0YXRpYyBjb25zdCBjaGFy IGFyZ19tYXhfdXNlcnNbXSA9ICJtYXhfdXNlcnMiOwpYIAkJc3RhdGljIGNvbnN0IGNoYXIgYXJn X2NvbmZfdHlwZVtdID0gInR5cGUiOwpYIAkJc3RhdGljIGNvbnN0IGNoYXIgYXJnX2NoYW5zcHlb XSA9ICJzcHkiOwpYKwkJc3RhdGljIGNvbnN0IGNoYXIgYXJnX3dlbGNvbWVwcm9tcHRbXSA9ICJ3 ZWxjb21lX3Byb21wdCI7ClggClggCQljaGFyICp2YWx1ZSA9IHRva2VuOwpYIAkJY29uc3QgY2hh ciAqa2V5ID0gc3Ryc2VwKCZ2YWx1ZSwgIj0iKTsKWEBAIC0xMDYwLDYgKzExODcsMTEgQEAKWCAJ CQltZW1iZXItPnNweWVlX2NoYW5uZWxfbmFtZSA9IG1hbGxvYyggc3RybGVuKCB2YWx1ZSApICsg MSApIDsKWCAJCQlzdHJjcHkoIG1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lLCB2YWx1ZSApIDsK WCAJCQlERUJVRygic3B5ZWUgY2hhbm5lbCBuYW1lIGlzICVzXG4iLCBtZW1iZXItPnNweWVlX2No YW5uZWxfbmFtZSkgOwpYKwkJfSBlbHNlIGlmICggc3RybmNhc2VjbXAoa2V5LCBhcmdfd2VsY29t ZXByb21wdCwgc2l6ZW9mKGFyZ193ZWxjb21lcHJvbXB0KSAtIDEpID09IDAgKQpYKwkJewpYKwkJ CW1lbWJlci0+d2VsY29tZV9wcm9tcHQgPSBtYWxsb2MoIHN0cmxlbiggdmFsdWUgKSArIDEgKSA7 ClgrCQkJc3RyY3B5KCBtZW1iZXItPndlbGNvbWVfcHJvbXB0LCB2YWx1ZSApIDsKWCsJCQlERUJV Rygid2VsY29tZSBwcm9tcHQgaXMgJXNcbiIsIG1lbWJlci0+d2VsY29tZV9wcm9tcHQpIDsKWCAJ CX0gZWxzZQpYIAkJewpYIAkJCWFzdF9sb2coTE9HX1dBUk5JTkcsICJ1bmtub3duIHBhcmFtZXRl ciAlcyB3aXRoIHZhbHVlICVzXG4iLCBrZXksIHZhbHVlKSA7ClhAQCAtMTA3Myw2ICsxMjA1LDE0 IEBAClggCS8vIGtlZXAgcG9pbnRlciB0byBtZW1iZXIncyBjaGFubmVsClggCW1lbWJlci0+Y2hh biA9IGNoYW4gOwpYIApYKwkvLyBjb3B5IHRoZSBjaGFubmVsIG5hbWUKWCsJbWVtYmVyLT5jaGFu bmVsX25hbWUgPSBtYWxsb2MoIHN0cmxlbiggY2hhbi0+bmFtZSApICsgMSApIDsKWCsJc3RyY3B5 KCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgY2hhbi0+bmFtZSApIDsKWCsKWCsJLy8gY29weSB0aGUg dW5pcXVlaWQKWCsJbWVtYmVyLT51bmlxdWVpZCA9IG1hbGxvYyggc3RybGVuKCBjaGFuLT51bmlx dWVpZCApICsgMSApIDsKWCsJc3RyY3B5KCBtZW1iZXItPnVuaXF1ZWlkLCBjaGFuLT51bmlxdWVp ZCApIDsKWCsKWCAJLy8gc2V0IGRlZmF1bHQgaWYgbm8gdHlwZSBwYXJhbWV0ZXIKWCAJaWYgKCFt ZW1iZXItPnR5cGUpIHsKWCAJCW1lbWJlci0+dHlwZSA9IG1hbGxvYyggc3RybGVuKCBBU1RfQ09O Rl9UWVBFX0RFRkFVTFQgKSArIDEgKSA7ClhAQCAtMTA4MCw5ICsxMjIwLDUzIEBAClggCQlERUJV RygidHlwZSA9ICVzXG4iLCBtZW1iZXItPnR5cGUpIDsKWCAJfQpYIApYKwkvLyBzcHlfcGFydG5l ciBkZWZhdWx0IGlzIE5VTEwKWCsJbWVtYmVyLT5zcHlfcGFydG5lciA9IE5VTEw7ClgrClgrCS8v ICggZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBwYXNzZWQgZmxhZ3MgKQpYKwltZW1iZXIt Pm11dGVfYXVkaW8gPSAwOwpYKyNpZmRlZglWSURFTwpYKwltZW1iZXItPm11dGVfdmlkZW8gPSAw OwpYKyNlbmRpZgpYKwltZW1iZXItPnRhbGtfdm9sdW1lID0gMDsKWCsJbWVtYmVyLT5saXN0ZW5f dm9sdW1lID0gMDsKWCsJbWVtYmVyLT5ub3JlY3ZfYXVkaW8gPSAwOwpYKyNpZmRlZglWSURFTwpY KwltZW1iZXItPm5vcmVjdl92aWRlbyA9IDA7ClgrCW1lbWJlci0+bm9fY2FtZXJhID0gMDsKWCsj ZW5kaWYKWCsJLy8gbW9kZXJhdG9yPwpYKwltZW1iZXItPmlzbW9kZXJhdG9yID0gMDsKWCsJbWVt YmVyLT5raWNrX2NvbmZlcmVlcyA9IDA7ClgrClgrCS8vIHJlYWR5IGZsYWcKWCsJbWVtYmVyLT5y ZWFkeV9mb3Jfb3V0Z29pbmcgPSAwIDsKWCsKWCsJLy8gaW5jb21pbmcgZnJhbWUgcXVldWUKWCsJ bWVtYmVyLT5pbkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPmluRnJhbWVzVGFpbCA9IE5VTEwg OwpYKwltZW1iZXItPmluRnJhbWVzQ291bnQgPSAwIDsKWCsjaWZkZWYJVklERU8KWCsJbWVtYmVy LT5pblZpZGVvRnJhbWVzID0gTlVMTCA7ClgrCW1lbWJlci0+aW5WaWRlb0ZyYW1lc1RhaWwgPSBO VUxMIDsKWCsJbWVtYmVyLT5pblZpZGVvRnJhbWVzQ291bnQgPSAwIDsKWCsjZW5kaWYKWCsjaWZk ZWYJRFRNRgpYKwltZW1iZXItPmluRFRNRkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPmluRFRN RkZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCA9IDAgOwpY KyNlbmRpZgpYKyNpZmRlZglURVhUClgrCW1lbWJlci0+aW5UZXh0RnJhbWVzID0gTlVMTCA7Clgr CW1lbWJlci0+aW5UZXh0RnJhbWVzVGFpbCA9IE5VTEwgOwpYKwltZW1iZXItPmluVGV4dEZyYW1l c0NvdW50ID0gMCA7ClgrI2VuZGlmClggI2lmZGVmCVZJREVPClggCW1lbWJlci0+Y29uZmVyZW5j ZSA9IDE7IC8vIHdlIGhhdmUgc3dpdGNoZWQgcmVxX2lkClgrCW1lbWJlci0+ZHRtZl9zd2l0Y2gg PSAwOyAvLyBubyBkdG1mIHN3aXRjaCBieSBkZWZhdWx0ClggI2VuZGlmClgrCW1lbWJlci0+ZHRt Zl9yZWxheSA9IDA7IC8vIG5vIGR0bWYgcmVsYXkgYnkgZGVmYXVsdApYKwltZW1iZXItPmR0bWZf c3Rhcl9tZW51ID0gMDsgLy8gbm8gZHRtZiBzdGFyIG1lbnUgYnkgZGVmYXVsdApYIApYIAkvLyBz dGFydCBvZiBkYXkgdmlkZW8gaWRzClggI2lmZGVmCVZJREVPClhAQCAtMTA5MCwyMyArMTI3NCwx MTMgQEAKWCAjZW5kaWYKWCAJbWVtYmVyLT5pZCA9IC0xOwpYIApYKwltZW1iZXItPmZpcnN0X2Zy YW1lX3JlY2VpdmVkID0gMDsgLy8gY2F1c2UgYSBGSVIgYWZ0ZXIgTkFUIGRlbGF5ClgrClgrCS8v IGxhc3QgZnJhbWUgY2FjaGluZwpYKwltZW1iZXItPmluRnJhbWVzUmVwZWF0TGFzdCA9IDAgOwpY KwltZW1iZXItPmluRnJhbWVzTGFzdCA9IE5VTEwgOwpYKwltZW1iZXItPm9rYXlUb0NhY2hlTGFz dCA9IDAgOwpYKwpYKwkvLyBvdXRnb2luZyBmcmFtZSBxdWV1ZQpYKwltZW1iZXItPm91dEZyYW1l cyA9IE5VTEwgOwpYKwltZW1iZXItPm91dEZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5v dXRGcmFtZXNDb3VudCA9IDAgOwpYKyNpZmRlZglWSURFTwpYKwltZW1iZXItPm91dFZpZGVvRnJh bWVzID0gTlVMTCA7ClgrCW1lbWJlci0+b3V0VmlkZW9GcmFtZXNUYWlsID0gTlVMTCA7ClgrCW1l bWJlci0+b3V0VmlkZW9GcmFtZXNDb3VudCA9IDAgOwpYKyNlbmRpZgpYKyNpZmRlZglEVE1GClgr CW1lbWJlci0+b3V0RFRNRkZyYW1lcyA9IE5VTEwgOwpYKwltZW1iZXItPm91dERUTUZGcmFtZXNU YWlsID0gTlVMTCA7ClgrCW1lbWJlci0+b3V0RFRNRkZyYW1lc0NvdW50ID0gMCA7ClgrI2VuZGlm ClgrI2lmZGVmCVRFWFQKWCsJbWVtYmVyLT5vdXRUZXh0RnJhbWVzID0gTlVMTCA7ClgrCW1lbWJl ci0+b3V0VGV4dEZyYW1lc1RhaWwgPSBOVUxMIDsKWCsJbWVtYmVyLT5vdXRUZXh0RnJhbWVzQ291 bnQgPSAwIDsKWCsjZW5kaWYKWCAJLy8gKCBub3QgY3VycmVudGx5IHVzZWQgKQpYIAkvLyBtZW1i ZXItPnNhbXBsZXNwZXJmcmFtZSA9IEFTVF9DT05GX0JMT0NLX1NBTVBMRVMgOwpYIApYKwkvLyB1 c2VkIGZvciBkZXRlcm1pbmluZyBuZWVkIHRvIG1peCBmcmFtZXMKWCsJLy8gYW5kIGZvciBtYW5h Z2VtZW50IGludGVyZmFjZSBub3RpZmljYXRpb24KWCsJLy8gYW5kIGZvciBWQUQgYmFzZWQgdmlk ZW8gc3dpdGNoaW5nClgrCW1lbWJlci0+c3BlYWtpbmdfc3RhdGVfbm90aWZ5ID0gMCA7ClgrCW1l bWJlci0+c3BlYWtpbmdfc3RhdGUgPSAwIDsKWCsJbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0 ZSA9IDA7ClgrCW1lbWJlci0+bGFzdF9zdGF0ZV9jaGFuZ2UgPSAoc3RydWN0IHRpbWV2YWwpezAs IDB9OwpYKwltZW1iZXItPnNwZWFrZXJfY291bnQgPSAwOwpYKyNpZmRlZglWSURFTwpYKwltZW1i ZXItPmRyaXZlbl9tZW1iZXIgPSBOVUxMOwpYKwpYKwltZW1iZXItPnZpZGVvX2Jyb2FkY2FzdF9h Y3RpdmUgPSAwOwpYKwltZW1iZXItPmxhc3RfdmlkZW9fZnJhbWVfdGltZSA9IChzdHJ1Y3QgdGlt ZXZhbCl7MCwgMH07ClgrClgrCW1lbWJlci0+dmlkZW9fc3RhcnRlZCA9IDA7ClgrI2VuZGlmClgr CS8vIGxpbmtlZC1saXN0IHBvaW50ZXJzClgrCW1lbWJlci0+bmV4dCA9IE5VTEwgOwpYKyNpZm5k ZWYJVklERU8KWCsJbWVtYmVyLT5wcmV2ID0gTlVMTCA7ClgrI2VuZGlmClgrCW1lbWJlci0+YnVj a2V0ID0gTlVMTCA7ClgrCS8vIGFjY291bnQgZGF0YQpYKwltZW1iZXItPmZyYW1lc19pbiA9IDAg OwpYKwltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+ZnJhbWVzX291 dCA9IDAgOwpYKwltZW1iZXItPmZyYW1lc19vdXRfZHJvcHBlZCA9IDAgOwpYKyNpZmRlZglWSURF TwpYKwltZW1iZXItPnZpZGVvX2ZyYW1lc19pbiA9IDAgOwpYKwltZW1iZXItPnZpZGVvX2ZyYW1l c19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+dmlkZW9fZnJhbWVzX291dCA9IDAgOwpYKwlt ZW1iZXItPnZpZGVvX2ZyYW1lc19vdXRfZHJvcHBlZCA9IDAgOwpYKyNlbmRpZgpYKyNpZmRlZglE VE1GClgrCW1lbWJlci0+ZHRtZl9mcmFtZXNfaW4gPSAwIDsKWCsJbWVtYmVyLT5kdG1mX2ZyYW1l c19pbl9kcm9wcGVkID0gMCA7ClgrCW1lbWJlci0+ZHRtZl9mcmFtZXNfb3V0ID0gMCA7ClgrCW1l bWJlci0+ZHRtZl9mcmFtZXNfb3V0X2Ryb3BwZWQgPSAwIDsKWCsjZW5kaWYKWCsjaWZkZWYJVEVY VApYKwltZW1iZXItPnRleHRfZnJhbWVzX2luID0gMCA7ClgrCW1lbWJlci0+dGV4dF9mcmFtZXNf aW5fZHJvcHBlZCA9IDAgOwpYKwltZW1iZXItPnRleHRfZnJhbWVzX291dCA9IDAgOwpYKwltZW1i ZXItPnRleHRfZnJhbWVzX291dF9kcm9wcGVkID0gMCA7ClgrI2VuZGlmClgrCS8vIGZvciBjb3Vu dGluZyBzZXF1ZW50aWFsbHkgZHJvcHBlZCBmcmFtZXMKWCsJbWVtYmVyLT5zZXF1ZW50aWFsX2Ry b3BzID0gMCA7ClgrCW1lbWJlci0+c2luY2VfZHJvcHBlZCA9IDAgOwpYKwpYKwkvLyBmbGFncwpY KwltZW1iZXItPmtpY2tfZmxhZyA9IDA7ClgrClggCS8vIHJlY29yZCBzdGFydCB0aW1lClggCS8v IGluaXQgZHJvcHBlZCBmcmFtZSB0aW1lc3RhbXBzClggCS8vIGluaXQgc3RhdGUgY2hhbmdlIHRp bWVzdGFtcApYIAltZW1iZXItPnRpbWVfZW50ZXJlZCA9ClggCQltZW1iZXItPmxhc3RfaW5fZHJv cHBlZCA9ClggCQltZW1iZXItPmxhc3Rfb3V0X2Ryb3BwZWQgPQpYLSNpZmRlZglWSURFTwpYLQkJ bWVtYmVyLT5sYXN0X3N0YXRlX2NoYW5nZSA9ClgtI2VuZGlmClgtCQlhc3RfdHZub3coKTsKWCsJ CW1lbWJlci0+bGFzdF9zdGF0ZV9jaGFuZ2UgPSBhc3RfdHZub3coKTsKWCsKWCAJLy8KWCAJLy8g cGFyc2UgcGFzc2VkIGZsYWdzClggCS8vClggClgrCS8vIHNpbGVuY2UgZGV0ZWN0aW9uIGZsYWdz IHcvIGRlZmF1bHRzClgrCW1lbWJlci0+dmFkX2ZsYWcgPSAwIDsKWCsJbWVtYmVyLT5kZW5vaXNl X2ZsYWcgPSAwIDsKWCsJbWVtYmVyLT5hZ2NfZmxhZyA9IDAgOwpYKwpYKwkvLyBpcyB0aGlzIG1l bWJlciB1c2luZyB0aGUgdGVsZXBob25lPwpYKwltZW1iZXItPnZpYV90ZWxlcGhvbmUgPSAwIDsK WCsKWCsJLy8gbW9oIGlmIG9ubHkgbWVtYmVyIGZsYWcKWCsJbWVtYmVyLT5ob2xkX2ZsYWcgPSAw IDsKWCsJbWVtYmVyLT53YWl0X2Zvcl9tb2RlcmF0b3JfZmxhZyA9IDAgOwpYKwkKWCsJbWVtYmVy LT5zdGFyX3ByZXNzZWQgPSAwOwpYKwpYIAkvLyB0ZW1wIHBvaW50ZXIgdG8gZmxhZ3Mgc3RyaW5n ClggCWNoYXIqIGZsYWdzID0gbWVtYmVyLT5mbGFncyA7ClggClhAQCAtMTEzMiw3ICsxNDA2LDcg QEAKWCAJCWVsc2UKWCAjZW5kaWYKWCAJCXsKWC0JCQkvLyBhbGxvd2VkIGZsYWdzIGFyZSBDLCBj LCBMLCBsLCBWLCBELCBBLCBDLCBYLCBSLCBULCB0LCBNLCBTLCB6LCBvLCBGLCBIClgrCQkJLy8g YWxsb3dlZCBmbGFncyBhcmUgQywgYywgTCwgbCwgViwgRCwgQSwgQywgWCwgciwgUiwgVCwgdCwg TSwgUywgeiwgbywgRiwgSCwgbgpYIAkJCS8vIG11dGUvbm9fcmVjdiBvcHRpb25zClggCQkJc3dp dGNoICggZmxhZ3NbaV0gKQpYIAkJCXsKWEBAIC0xMTUwLDcgKzE0MjQsNyBAQApYIAkJCWNhc2Ug J2wnOgpYIAkJCQltZW1iZXItPm5vcmVjdl9hdWRpbyA9IDE7ClggCQkJCWJyZWFrOwpYLSNpZiAo IFNJTERFVCA9PSAyICkKWCsKWCAJCQkJLy8gc3BlZXggcHJlcHJvY2Vzc2luZyBvcHRpb25zClgg CQkJY2FzZSAnVic6ClggCQkJCW1lbWJlci0+dmFkX2ZsYWcgPSAxIDsKWEBAIC0xMTYxLDcgKzE0 MzUsNyBAQApYIAkJCWNhc2UgJ0EnOgpYIAkJCQltZW1iZXItPmFnY19mbGFnID0gMSA7ClggCQkJ CWJyZWFrIDsKWC0jZW5kaWYKWCsKWCAJCQkJLy8gZHRtZi9tb2RlcmF0b3IvdmlkZW8gc3dpdGNo aW5nIG9wdGlvbnMKWCAjaWZkZWYJVklERU8KWCAJCQljYXNlICdYJzoKWEBAIC0xMTcxLDYgKzE0 NDUsMTIgQEAKWCAJCQljYXNlICdSJzoKWCAJCQkJbWVtYmVyLT5kdG1mX3JlbGF5ID0gMTsKWCAJ CQkJYnJlYWs7ClgrCQkJY2FzZSAncic6ClgrCQkJCW1lbWJlci0+cmVjb3JkX2ZsYWcgPSAxOwpY KwkJCQlicmVhazsKWCsJCQljYXNlICdzJzoKWCsJCQkJbWVtYmVyLT5kdG1mX3N0YXJfbWVudSA9 IDE7ClgrCQkJCWJyZWFrOwpYICNpZmRlZglWSURFTwpYIAkJCWNhc2UgJ1MnOgpYIAkJCQltZW1i ZXItPnZhZF9zd2l0Y2ggPSAxOwpYQEAgLTExODIsNiArMTQ2Miw5IEBAClggCQkJY2FzZSAnTSc6 ClggCQkJCW1lbWJlci0+aXNtb2RlcmF0b3IgPSAxOwpYIAkJCQlicmVhazsKWCsJCQljYXNlICdu JzoKWCsJCQkJbWVtYmVyLT5ub19jcmVhdGVfZmxhZyA9IDE7ClgrCQkJCWJyZWFrOwpYICNpZmRl ZglWSURFTwpYIAkJCWNhc2UgJ04nOgpYIAkJCQltZW1iZXItPm5vX2NhbWVyYSA9IDE7ClhAQCAt MTIwMywyNCArMTQ4NiwzMSBAQApYIAkJCWNhc2UgJ3gnOgpYIAkJCQltZW1iZXItPmtpY2tfY29u ZmVyZWVzID0gMTsKWCAJCQkJYnJlYWs7ClgtI2lmICggU0lMREVUID09IDIgKQpYKwpYIAkJCQkv L1RlbGVwaG9uZSBjb25uZWN0aW9uClggCQkJY2FzZSAnYSc6ClggCQkJCW1lbWJlci0+dmFkX2Zs YWcgPSAxIDsKWCAJCQljYXNlICdUJzoKWCAJCQkJbWVtYmVyLT52aWFfdGVsZXBob25lID0gMTsK WCAJCQkJYnJlYWs7ClgtI2VuZGlmClgrClggCQkJY2FzZSAnSCc6ClggCQkJCW1lbWJlci0+aG9s ZF9mbGFnID0gMTsKWCAJCQkJYnJlYWs7ClggClgrCQkJY2FzZSAndyc6ClgrCQkJCW1lbWJlci0+ d2FpdF9mb3JfbW9kZXJhdG9yX2ZsYWcgPSAxOwpYKwkJCQlicmVhazsKWCsKWCAJCQlkZWZhdWx0 OgpYIAkJCQlicmVhayA7ClggCQkJfQpYIAkJfQpYIAl9ClggClgrCS8vIHNldCB0aGUgZHNwIHRv IG51bGwgc28gc2lsZW5jZSBkZXRlY3Rpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdApYKwltZW1i ZXItPmRzcCA9IE5VTEwgOwpYKwpYICNpZiAoIFNJTERFVCA9PSAyICkKWCAJLy8KWCAJLy8gY29u ZmlndXJlIHNpbGVuY2UgZGV0ZWN0aW9uIGFuZCBwcmVwcm9jZXNzaW5nClhAQCAtMTI1OCwxNiAr MTU0OCw5IEBAClggClggCS8vIHNldCBtZW1iZXIncyBhdWRpbyBmb3JtYXRzLCB0YWtpbmcgZHNw IHByZXByb2Nlc3NpbmcgaW50byBhY2NvdW50ClggCS8vICggY2hhbi0+bmF0aXZlZm9ybWF0cywg QVNUX0ZPUk1BVF9TTElORUFSLCBBU1RfRk9STUFUX1VMQVcsIEFTVF9GT1JNQVRfR1NNICkKWC0j aWYgKCBTSUxERVQgPT0gMiApClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQltZW1iZXItPnJlYWRf Zm9ybWF0ID0gKCBtZW1iZXItPmRzcCA9PSBOVUxMICkgPyBjaGFuLT5uYXRpdmVmb3JtYXRzIDog QVNUX0ZPUk1BVF9TTElORUFSIDsKWC0jZWxzZQpYLQltZW1iZXItPnJlYWRfZm9ybWF0ID0gKCBt ZW1iZXItPmRzcCA9PSBOVUxMICkgPyBjaGFuLT5uYXRpdmVmb3JtYXRzIDogQVNUX0ZPUk1BVF9T TElORUFSMTYgOwpYLSNlbmRpZgpYLSNlbHNlClgtCW1lbWJlci0+cmVhZF9mb3JtYXQgPSBjaGFu LT5uYXRpdmVmb3JtYXRzIDsKWC0jZW5kaWYKWCsJbWVtYmVyLT5yZWFkX2Zvcm1hdCA9ICggbWVt YmVyLT5kc3AgPT0gTlVMTCApID8gY2hhbi0+bmF0aXZlZm9ybWF0cyA6IEFTVF9DT05GX0ZPUk1B VCA7ClggCW1lbWJlci0+d3JpdGVfZm9ybWF0ID0gY2hhbi0+bmF0aXZlZm9ybWF0czsKWCsKWCAJ Ly8gMS4yIG9yIDEuMysKWCAjaWZkZWYgQVNUX0ZPUk1BVF9BVURJT19NQVNLClggClhAQCAtMTI3 NiwxMDAgKzE1NTksMTkgQEAKWCAjZW5kaWYKWCAKWCAJLy90cmFuc2xhdGlvbiBwYXRocyAoIGFz dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoKSByZXR1cm5zIG51bGwgaWYgZm9ybWF0cyBtYXRjaCAp ClgtI2lmbmRlZglBQ19VU0VfRzcyMgpYLQltZW1iZXItPnRvX3NsaW5lYXIgPSBhc3RfdHJhbnNs YXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFUX1NMSU5FQVIsIG1lbWJlci0+cmVhZF9mb3JtYXQg KSA7ClgtCW1lbWJlci0+ZnJvbV9zbGluZWFyID0gYXN0X3RyYW5zbGF0b3JfYnVpbGRfcGF0aCgg bWVtYmVyLT53cml0ZV9mb3JtYXQsIEFTVF9GT1JNQVRfU0xJTkVBUiApIDsKWC0jZWxzZQpYLQlt ZW1iZXItPnRvX3NsaW5lYXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBBU1RfRk9STUFU X1NMSU5FQVIxNiwgbWVtYmVyLT5yZWFkX2Zvcm1hdCApIDsKWC0JbWVtYmVyLT5mcm9tX3NsaW5l YXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9wYXRoKCBtZW1iZXItPndyaXRlX2Zvcm1hdCwgQVNU X0ZPUk1BVF9TTElORUFSMTYgKSA7ClgtI2VuZGlmClgrCW1lbWJlci0+dG9fc2xpbmVhciA9IGFz dF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIEFTVF9DT05GX0ZPUk1BVCwgbWVtYmVyLT5yZWFkX2Zv cm1hdCApIDsKWCsJbWVtYmVyLT5mcm9tX3NsaW5lYXIgPSBhc3RfdHJhbnNsYXRvcl9idWlsZF9w YXRoKCBtZW1iZXItPndyaXRlX2Zvcm1hdCwgQVNUX0NPTkZfRk9STUFUICkgOwpYIApYIAkvLyBp bmRleCBmb3IgY29udmVydGVkX2ZyYW1lcyBhcnJheQpYLQlzd2l0Y2ggKCBtZW1iZXItPndyaXRl X2Zvcm1hdCApClgtCXsKWC0jaWZuZGVmCUFDX1VTRV9HNzIyClgtCQljYXNlIEFTVF9GT1JNQVRf U0xJTkVBUjoKWC0jZWxzZQpYLQkJY2FzZSBBU1RfRk9STUFUX1NMSU5FQVIxNjoKWC0jZW5kaWYK WC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX1NMSU5FQVJfSU5ERVggOwpYLQkJ CWJyZWFrIDsKWC0KWC0JCWNhc2UgQVNUX0ZPUk1BVF9VTEFXOgpYLQkJCW1lbWJlci0+d3JpdGVf Zm9ybWF0X2luZGV4ID0gQUNfVUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkgICAgICAg IGNhc2UgQVNUX0ZPUk1BVF9BTEFXOgpYLQkJCW1lbWJlci0+d3JpdGVfZm9ybWF0X2luZGV4ID0g QUNfQUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkJY2FzZSBBU1RfRk9STUFUX0dTTToK WC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX0dTTV9JTkRFWCA7ClgtCQkJYnJl YWsgOwpYLSNpZmRlZglBQ19VU0VfU1BFRVgKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDoKWC0J CQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX1NQRUVYX0lOREVYOwpYLQkJCWJyZWFr OwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyOUEKWC0JCWNhc2UgQVNUX0ZPUk1BVF9HNzI5 QToKWC0JCQltZW1iZXItPndyaXRlX2Zvcm1hdF9pbmRleCA9IEFDX0c3MjlBX0lOREVYOwpYLQkJ CWJyZWFrOwpYLSNlbmRpZgpYLSNpZmRlZiBBQ19VU0VfRzcyMgpYLQkJY2FzZSBBU1RfRk9STUFU X0c3MjI6ClgtCQkJbWVtYmVyLT53cml0ZV9mb3JtYXRfaW5kZXggPSBBQ19HNzIyX0lOREVYOwpY LQkJCWJyZWFrOwpYLSNlbmRpZgpYLQkJZGVmYXVsdDoKWC0JCQlicmVhazsKWC0JfQpYLQpYLQkv LyBpbmRleCBmb3IgY29udmVydGVkX2ZyYW1lcyBhcnJheQpYLQlzd2l0Y2ggKCBtZW1iZXItPnJl YWRfZm9ybWF0ICkKWC0JewpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1B VF9TTElORUFSOgpYLSNlbHNlClgtCQljYXNlIEFTVF9GT1JNQVRfU0xJTkVBUjE2OgpYLSNlbmRp ZgpYLQkJCW1lbWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19TTElORUFSX0lOREVYIDsKWC0J CQlicmVhayA7ClgtClgtCQljYXNlIEFTVF9GT1JNQVRfVUxBVzoKWC0JCQltZW1iZXItPnJlYWRf Zm9ybWF0X2luZGV4ID0gQUNfVUxBV19JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLQpYLQkJY2FzZSBB U1RfRk9STUFUX0FMQVc6ClgtCQkJbWVtYmVyLT5yZWFkX2Zvcm1hdF9pbmRleCA9IEFDX0FMQVdf SU5ERVggOwpYLQkJCWJyZWFrIDsKWC0KWC0JCWNhc2UgQVNUX0ZPUk1BVF9HU006ClgtCQkJbWVt YmVyLT5yZWFkX2Zvcm1hdF9pbmRleCA9IEFDX0dTTV9JTkRFWCA7ClgtCQkJYnJlYWsgOwpYLSNp ZmRlZglBQ19VU0VfU1BFRVgKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TUEVFWDoKWC0JCQltZW1iZXIt PnJlYWRfZm9ybWF0X2luZGV4ID0gQUNfU1BFRVhfSU5ERVg7ClgtCQkJYnJlYWs7ClgtI2VuZGlm ClgtI2lmZGVmIEFDX1VTRV9HNzI5QQpYLQkJY2FzZSBBU1RfRk9STUFUX0c3MjlBOgpYLQkJCW1l bWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19HNzI5QV9JTkRFWDsKWC0JCQlicmVhazsKWC0j ZW5kaWYKWC0jaWZkZWYgQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1BVF9HNzIyOgpYLQkJ CW1lbWJlci0+cmVhZF9mb3JtYXRfaW5kZXggPSBBQ19HNzIyX0lOREVYOwpYLQkJCWJyZWFrOwpY LSNlbmRpZgpYLQkJZGVmYXVsdDoKWC0JCQlicmVhazsKWC0JfQpYKwltZW1iZXItPndyaXRlX2Zv cm1hdF9pbmRleCA9IGNvbnZlcnRfZm9ybWF0X3RvX2luZGV4KCBtZW1iZXItPndyaXRlX2Zvcm1h dCApOwpYKwltZW1iZXItPnJlYWRfZm9ybWF0X2luZGV4ID0gY29udmVydF9mb3JtYXRfdG9faW5k ZXgoIG1lbWJlci0+cmVhZF9mb3JtYXQgKTsKWCAKWCAJLy8gc21vb3RoZXIgZGVmYXVsdHMuClgt CW1lbWJlci0+c21vb3RoX211bHRpcGxlID0gMTsKWCsJbWVtYmVyLT5zbW9vdGhfbXVsdGlwbGUg PTE7ClggCW1lbWJlci0+c21vb3RoX3NpemVfaW4gPSAtMTsKWCAJbWVtYmVyLT5zbW9vdGhfc2l6 ZV9vdXQgPSAtMTsKWCsJbWVtYmVyLT5pblNtb290aGVyPSBOVUxMOwpYKwltZW1iZXItPm91dFBh Y2tlcj0gTlVMTDsKWCAKWCAJc3dpdGNoIChtZW1iZXItPnJlYWRfZm9ybWF0KXsKWCAJCS8qIHRo ZXNlIGFzc3VtcHRpb25zIG1heSBiZSBpbmNvcnJlY3QgKi8KWEBAIC0xMzkyLDE4ICsxNTk0LDEy IEBAClggCQkJbWVtYmVyLT5zbW9vdGhfc2l6ZV9pbiAgPSAzOTsgIC8vIGJ5dGVzClggCQkJbWVt YmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAxNjA7IC8vIHNhbXBsZXMKWCAJCQkqLwpYLQkJCWJyZWFr OwpYLSNlbmRpZgpYLSNpZm5kZWYJQUNfVVNFX0c3MjIKWC0JCWNhc2UgQVNUX0ZPUk1BVF9TTElO RUFSOgpYLQkJCW1lbWJlci0+c21vb3RoX3NpemVfaW4gID0gMzIwOyAvL2J5dGVzClgtCQkJbWVt YmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAxNjA7IC8vc2FtcGxlcwpYLSNlbHNlClgtCQljYXNlIEFT VF9GT1JNQVRfU0xJTkVBUjE2OgpYLQkJCW1lbWJlci0+c21vb3RoX3NpemVfaW4gID0gNjQwOyAv L2J5dGVzClgtCQkJbWVtYmVyLT5zbW9vdGhfc2l6ZV9vdXQgPSAzMjA7IC8vc2FtcGxlcwpYICNl bmRpZgpYIAkJCWJyZWFrOwpYKwkJY2FzZSBBU1RfQ09ORl9GT1JNQVQ6ClgrCQkJbWVtYmVyLT5z bW9vdGhfc2l6ZV9pbiAgPSBBU1RfQ09ORl9GUkFNRV9EQVRBX1NJWkU7IC8vYnl0ZXMKWCsJCQlt ZW1iZXItPnNtb290aF9zaXplX291dCA9IEFTVF9DT05GX0JMT0NLX1NBTVBMRVM7IC8vc2FtcGxl cwpYKwkJCWJyZWFrOwpYICNpZmRlZiBBQ19VU0VfRzcyMgpYIAkJY2FzZSBBU1RfRk9STUFUX0c3 MjI6ClggCQkJLyoKWEBAIC0xNDExLDcgKzE2MDcsOCBAQApYIAkJCWJyZWFrOwpYICNlbmRpZgpY IAkJZGVmYXVsdDoKWC0JCQlicmVhazsKWCsJCQltZW1iZXItPmluU21vb3RoZXIgPSBOVUxMOyAv L2Rvbid0IHVzZSBzbW9vdGhlciBmb3IgdGhpcyB0eXBlLgpYKwkJCS8vREVCVUcoInNtb290aGVy IGlzIE5VTEwgZm9yIG1lbWJlci0+cmVhZF9mb3JtYXQgPT4gJWRcbiIsIG1lbWJlci0+cmVhZF9m b3JtYXQpIDsKWCAJfQpYIApYIAlpZiAobWVtYmVyLT5zbW9vdGhfc2l6ZV9pbiA+IDApewpYQEAg LTE0NjYsNyArMTY2Myw3IEBAClggCWlmICggbWVtYmVyLT5mbGFncyAhPSBOVUxMICkKWCAJewpY IAkJLy8gISEhIERFQlVHSU5HICEhIQpYLQkJREVCVUcoImZyZWVpbmcgbWVtYmVyIGZsYWdzLCBu YW1lID0+ICVzXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJCURFQlVHKCJmcmVlaW5nIG1l bWJlciBmbGFncywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsKWCAJCWZy ZWUoIG1lbWJlci0+ZmxhZ3MgKSA7ClggCX0KWCAKWEBAIC0xNDc3LDcgKzE2NzQsNyBAQApYIAlj b25mX2ZyYW1lKiBjZiA7ClggClggCS8vICEhISBERUJVR0lORyAhISEKWC0JREVCVUcoImRlbGV0 aW5nIG1lbWJlciBpbnB1dCBmcmFtZXMsIG5hbWUgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFt ZSkgOwpYKwlERUJVRygiZGVsZXRpbmcgbWVtYmVyIGlucHV0IGZyYW1lcywgbmFtZSA9PiAlc1xu IiwgbWVtYmVyLT5jaGFubmVsX25hbWUpIDsKWCAKWCAJLy8gaW5jb21pbmcgZnJhbWVzClggCWNm ID0gbWVtYmVyLT5pbkZyYW1lcyA7ClhAQCAtMTUwMSw3ICsxNjk4LDcgQEAKWCAJfQpYICNlbmRp ZgpYIAkvLyAhISEgREVCVUdJTkcgISEhClgtCURFQlVHKCJkZWxldGluZyBtZW1iZXIgb3V0cHV0 IGZyYW1lcywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lKSA7ClgrCURFQlVHKCJk ZWxldGluZyBtZW1iZXIgb3V0cHV0IGZyYW1lcywgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFu bmVsX25hbWUpIDsKWCAKWCAJLy8gb3V0Z29pbmcgZnJhbWVzClggCWNmID0gbWVtYmVyLT5vdXRG cmFtZXMgOwpYQEAgLTE1MjgsMTMgKzE3MjUsMTMgQEAKWCAJaWYgKCBtZW1iZXItPmRzcCAhPSBO VUxMICkKWCAJewpYIAkJLy8gISEhIERFQlVHSU5HICEhIQpYLQkJREVCVUcoImRlc3Ryb3lpbmcg bWVtYmVyIHByZXByb2Nlc3NvciwgbmFtZSA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5uYW1lKSA7 ClgrCQlERUJVRygiZGVzdHJveWluZyBtZW1iZXIgcHJlcHJvY2Vzc29yLCBuYW1lID0+ICVzXG4i LCBtZW1iZXItPmNoYW5uZWxfbmFtZSkgOwpYIAkJc3BlZXhfcHJlcHJvY2Vzc19zdGF0ZV9kZXN0 cm95KCBtZW1iZXItPmRzcCApIDsKWCAJfQpYICNlbmRpZgpYIApYIAkvLyAhISEgREVCVUdJTkcg ISEhClgtCURFQlVHKCJmcmVlaW5nIG1lbWJlciB0cmFuc2xhdG9yIHBhdGhzLCBuYW1lID0+ICVz XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUpIDsKWCsJREVCVUcoImZyZWVpbmcgbWVtYmVyIHRyYW5z bGF0b3IgcGF0aHMsIG5hbWUgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lKSA7ClggClgg CS8vIGZyZWUgdGhlIG1peGluZyB0cmFuc2xhdG9ycwpYIAlhc3RfdHJhbnNsYXRvcl9mcmVlX3Bh dGgoIG1lbWJlci0+dG9fc2xpbmVhciApIDsKWEBAIC0xNTQ0LDEyICsxNzQxLDI3IEBAClggCS8v IG1lbWJlciBzbyB3ZSBjYW4gcmV0dXJuIGl0ClggCXN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG5t ID0gbWVtYmVyLT5uZXh0IDsKWCAKWCsJLy8gISEhIERFQlVHSU5HICEhIQpYKwlERUJVRygiZnJl ZWluZyBtZW1iZXIgY2hhbm5lbCBuYW1lLCBuYW1lID0+ICVzXG4iLCBtZW1iZXItPmNoYW5uZWxf bmFtZSkgOwpYKwpYKwkvLyBmcmVlIHRoZSBtZW1iZXIncyBjb3B5IGZvciB0aGUgY2hhbm5lbCBu YW1lClgrCWZyZWUoIG1lbWJlci0+Y2hhbm5lbF9uYW1lICkgOwpYKwpYKwkvLyBmcmVlIHRoZSBt ZW1iZXIncyBjb3B5IG9mIHRoZSB1bmlxdWVpZApYKwlmcmVlKCBtZW1iZXItPnVuaXF1ZWlkICkg OwpYKwpYKwkvLyBmcmVlIHRoZSBtZW1iZXIncyBjb3B5IG9mIHRoZSBjb25mZXJlbmNlIG5hbWUK WCsJZnJlZShtZW1iZXItPmNvbmZfbmFtZSk7ClgrClggCS8vIGZyZWUgdGhlIG1lbWJlcidzIGNv cHkgb2YgdGhlIGNvbmZlcmVuY2UgdHlwZQpYIAlmcmVlKG1lbWJlci0+dHlwZSk7ClggClggCS8v IGZyZWUgdGhlIG1lbWJlcidzIGNvcHkgb2YgdGhlIHNweWVlIGNoYW5uZWwgbmFtZQpYIAlmcmVl KG1lbWJlci0+c3B5ZWVfY2hhbm5lbF9uYW1lKTsKWCAKWCsJLy8gZnJlZSB0aGUgd2VsY29tZSBw cm9tcHQKWCsJZnJlZShtZW1iZXItPndlbGNvbWVfcHJvbXB0KTsKWCsKWCAJLy8gY2xlYXIgYWxs IHNvdW5kcwpYIAlzdHJ1Y3QgYXN0X2NvbmZfc291bmRxICpzb3VuZCA9IG1lbWJlci0+c291bmRx OwpYIAlzdHJ1Y3QgYXN0X2NvbmZfc291bmRxICpuZXh0OwpYQEAgLTE2ODgsOSArMTkwMCw3IEBA ClggClggY29uZl9mcmFtZSogZ2V0X2luY29taW5nX2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZfbWVt YmVyICptZW1iZXIgKQpYIHsKWC0jaWZkZWYgQVNUX0NPTkZfQ0FDSEVfTEFTVF9GUkFNRQpYIAlj b25mX2ZyYW1lICpjZl9yZXN1bHQ7ClgtI2VuZGlmClggI2lmZGVmCUFQUF9LT05GRVJFTkNFX0RF QlVHClggCS8vClggCS8vIHNhbml0eSBjaGVja3MKWEBAIC0xNzM3LDcgKzE5NDcsNyBAQApYIAkJ fQpYIAkJZWxzZQpYIAkJewpYLQkJCURFQlVHKCJyZXBlYXRpbmcgY2FjaGVkIGZyYW1lLCBjaGFu bmVsID0+ICVzLCBpbkZyYW1lc1JlcGVhdExhc3QgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFt ZSwgbWVtYmVyLT5pbkZyYW1lc1JlcGVhdExhc3QpIDsKWCsJCQlERUJVRygicmVwZWF0aW5nIGNh Y2hlZCBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5GcmFtZXNSZXBlYXRMYXN0ID0+ICVkXG4iLCBt ZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5pbkZyYW1lc1JlcGVhdExhc3QpIDsKWCAKWCAJ CQkvLyBpbmNyZW1lbnQgY291bnRlcgpYIAkJCW1lbWJlci0+aW5GcmFtZXNSZXBlYXRMYXN0Kysg OwpYQEAgLTE3NTAsNyArMTk2MCw3IEBAClggCX0KWCAJZWxzZSBpZiAoIG1lbWJlci0+b2theVRv Q2FjaGVMYXN0ID09IDAgJiYgbWVtYmVyLT5pbkZyYW1lc0NvdW50ID49IDMgKQpYIAl7ClgtCQlE RUJVRygiZW5hYmxpbmcgY2FjaGVkIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAl ZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1l c0NvdW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygiZW5hYmxpbmcgY2Fj aGVkIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRc biIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1lbWJlci0+ b3V0RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIHR1cm4gb24gJ29rYXkgdG8gY2FjaGUnIGZsYWcK WCAJCW1lbWJlci0+b2theVRvQ2FjaGVMYXN0ID0gMSA7ClhAQCAtMTg1MSw3ICsyMDYxLDcgQEAK WCAJLy8gV2UgaGF2ZSB0byBkcm9wIGlmIHRoZSBxdWV1ZSBpcyBmdWxsIQpYIAlpZiAoIG1lbWJl ci0+aW5WaWRlb0ZyYW1lc0NvdW50ID49IEFTVF9DT05GX01BWF9WSURFT19RVUVVRSApClggCXsK WC0JCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgaW5jb21pbmcgVklERU8gZnJhbWUsIGNoYW5uZWwg PT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFuLT5u YW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0Nv dW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIGluY29taW5nIFZJREVPIGZyYW1lLCBj aGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+ Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRl b0ZyYW1lc0NvdW50KSA7ClggCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpYIAkJ cmV0dXJuIC0xIDsKWCAJfQpYQEAgLTE5MjMsNyArMjEzMyw3IEBAClggCS8vIFdlIGhhdmUgdG8g ZHJvcCBpZiB0aGUgcXVldWUgaXMgZnVsbCEKWCAJaWYgKCBtZW1iZXItPmluRFRNRkZyYW1lc0Nv dW50ID49IEFTVF9DT05GX01BWF9EVE1GX1FVRVVFICkKWCAJewpYLQkJREVCVUcoInVuYWJsZSB0 byBxdWV1ZSBpbmNvbWluZyBEVE1GIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAl ZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkRUTUZG cmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVzQ291bnQpIDsKWCsJCURFQlVHKCJ1bmFi bGUgdG8gcXVldWUgaW5jb21pbmcgRFRNRiBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcg PT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5p bkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVzQ291bnQpIDsKWCAJCWFzdF9t dXRleF91bmxvY2soJm1lbWJlci0+bG9jayk7ClggCQlyZXR1cm4gLTEgOwpYIAl9ClhAQCAtMjAx Miw3ICsyMjIyLDcgQEAKWCAJCQkJLy8gY291bnQgc2VxdWVudGlhbCBkcm9wcwpYIAkJCQltZW1i ZXItPnNlcXVlbnRpYWxfZHJvcHMrKyA7ClggClgtCQkJCURFQlVHKCJkcm9wcGluZyBmcmFtZSBm cm9tIGlucHV0IGJ1ZmZlciwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91dGdvaW5n ID0+ICVkXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5GcmFtZXNDb3VudCwgbWVt YmVyLT5vdXRGcmFtZXNDb3VudCkgOwpYKwkJCQlERUJVRygiZHJvcHBpbmcgZnJhbWUgZnJvbSBp bnB1dCBidWZmZXIsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAl ZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+aW5GcmFtZXNDb3VudCwgbWVtYmVy LT5vdXRGcmFtZXNDb3VudCkgOwpYIApYIAkJCQkvLyBhY2NvdW50aW5nOiBjb3VudCBkcm9wcGVk IGluY29taW5nIGZyYW1lcwpYIAkJCQltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkKysgOwpYQEAg LTIwMjgsNyArMjIzOCw3IEBAClggLyoKWCAJCQllbHNlClggCQkJewpYLQkJCQlERUJVRygiaW5w dXQgYnVmZmVyIGxhcmdlciB0aGFuIGRyb3AgdGhyZXNob2xkLCBjaGFubmVsID0+ICVzLCBpbmNv bWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVy LT5pbkZyYW1lc0NvdW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQkJCURFQlVHKCJp bnB1dCBidWZmZXIgbGFyZ2VyIHRoYW4gZHJvcCB0aHJlc2hvbGQsIGNoYW5uZWwgPT4gJXMsIGlu Y29taW5nID0+ICVkLCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1l bWJlci0+aW5GcmFtZXNDb3VudCwgbWVtYmVyLT5vdXRGcmFtZXNDb3VudCkgOwpYIAkJCX0KWCAq LwpYIAkJfQpYQEAgLTIwNDQsNyArMjI1NCw3IEBAClggCQkvLyBjb3VudCBzZXF1ZW50aWFsIGRy b3BzClggCQltZW1iZXItPnNlcXVlbnRpYWxfZHJvcHMrKyA7ClggClgtCQlERUJVRygidW5hYmxl IHRvIHF1ZXVlIGluY29taW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwg b3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1lc0Nv dW50LCBtZW1iZXItPm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVl IGluY29taW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcg PT4gJWRcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1l bWJlci0+b3V0RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3Bw ZWQgaW5jb21pbmcgZnJhbWVzClggCQltZW1iZXItPmZyYW1lc19pbl9kcm9wcGVkKysgOwpYQEAg LTIyMTksNyArMjQyOSw3IEBAClggCS8vClggCWlmICggbWVtYmVyLT5vdXRGcmFtZXNDb3VudCA+ PSBBU1RfQ09ORl9NQVhfUVVFVUUgKQpYIAl7ClgtCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIG91 dGdvaW5nIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4g JWRcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSwgbWVtYmVyLT5pbkZyYW1lc0NvdW50LCBtZW1iZXIt Pm91dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1ZXVlIG91dGdvaW5nIGZy YW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1l bWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluRnJhbWVzQ291bnQsIG1lbWJlci0+b3V0RnJh bWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29pbmcg ZnJhbWVzClggCQltZW1iZXItPmZyYW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC0yMzg2LDcgKzI1 OTYsNyBAQApYIAkvLwpYIAlpZiAoIG1lbWJlci0+b3V0VmlkZW9GcmFtZXNDb3VudCA+PSBBU1Rf Q09ORl9NQVhfVklERU9fUVVFVUUpClggCXsKWC0JCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgb3V0 Z29pbmcgVklERU8gZnJhbWUsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVkLCBvdXRnb2lu ZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFuLT5uYW1lLCBtZW1iZXItPmluVmlkZW9GcmFtZXNDb3Vu dCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRvIHF1 ZXVlIG91dGdvaW5nIFZJREVPIGZyYW1lLCBjaGFubmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwg b3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lLCBtZW1iZXItPmluVmlkZW9G cmFtZXNDb3VudCwgbWVtYmVyLT5vdXRWaWRlb0ZyYW1lc0NvdW50KSA7ClggClggCQkvLyBhY2Nv dW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJbWVtYmVyLT52aWRlb19m cmFtZXNfb3V0X2Ryb3BwZWQrKyA7ClhAQCAtMjU3Myw3ICsyNzgzLDcgQEAKWCAJLy8KWCAJaWYg KCBtZW1iZXItPm91dERUTUZGcmFtZXNDb3VudCA+PSBBU1RfQ09ORl9NQVhfRFRNRl9RVUVVRSkK WCAJewpYLQkJREVCVUcoInVuYWJsZSB0byBxdWV1ZSBvdXRnb2luZyBEVE1GIGZyYW1lLCBjaGFu bmVsID0+ICVzLCBpbmNvbWluZyA9PiAlZCwgb3V0Z29pbmcgPT4gJWRcbiIsIG1lbWJlci0+Y2hh bi0+bmFtZSwgbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1GRnJhbWVz Q291bnQpIDsKWCsJCURFQlVHKCJ1bmFibGUgdG8gcXVldWUgb3V0Z29pbmcgRFRNRiBmcmFtZSwg Y2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXIt PmNoYW5uZWxfbmFtZSwgbWVtYmVyLT5pbkRUTUZGcmFtZXNDb3VudCwgbWVtYmVyLT5vdXREVE1G RnJhbWVzQ291bnQpIDsKWCAKWCAJCS8vIGFjY291bnRpbmc6IGNvdW50IGRyb3BwZWQgb3V0Z29p bmcgZnJhbWVzClggCQltZW1iZXItPmR0bWZfZnJhbWVzX291dF9kcm9wcGVkKysgOwpYQEAgLTI2 NTAsNyArMjg2MCw3IEBAClggCS8vClggCWlmICggbWVtYmVyLT5vdXRUZXh0RnJhbWVzQ291bnQg Pj0gQVNUX0NPTkZfTUFYX1RFWFRfUVVFVUUpClggCXsKWC0JCURFQlVHKCJ1bmFibGUgdG8gcXVl dWUgb3V0Z29pbmcgdGV4dCBmcmFtZSwgY2hhbm5lbCA9PiAlcywgaW5jb21pbmcgPT4gJWQsIG91 dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5UZXh0RnJhbWVz Q291bnQsIG1lbWJlci0+b3V0VGV4dEZyYW1lc0NvdW50KSA7ClgrCQlERUJVRygidW5hYmxlIHRv IHF1ZXVlIG91dGdvaW5nIHRleHQgZnJhbWUsIGNoYW5uZWwgPT4gJXMsIGluY29taW5nID0+ICVk LCBvdXRnb2luZyA9PiAlZFxuIiwgbWVtYmVyLT5jaGFubmVsX25hbWUsIG1lbWJlci0+aW5UZXh0 RnJhbWVzQ291bnQsIG1lbWJlci0+b3V0VGV4dEZyYW1lc0NvdW50KSA7ClggClggCQkvLyBhY2Nv dW50aW5nOiBjb3VudCBkcm9wcGVkIG91dGdvaW5nIGZyYW1lcwpYIAkJbWVtYmVyLT50ZXh0X2Zy YW1lc19vdXRfZHJvcHBlZCsrIDsKWEBAIC0yNzAwLDYgKzI5MTAsNDcgQEAKWCAjZW5kaWYKWCAK WCAvLwpYKy8vIG1hbmFnZXIgZnVuY3Rpb25zClgrLy8KWCsKWCt2b2lkIHNlbmRfc3RhdGVfY2hh bmdlX25vdGlmaWNhdGlvbnMoIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIqIG1lbWJlciApClgrewpY KwkvL0RFQlVHKCJzZW5kaW5nIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb25cbiIpIDsKWCsKWCsJ Ly8gbG9vcCB0aHJvdWdoIGxpc3Qgb2YgbWVtYmVycywgc2VuZGluZyBzdGF0ZSBjaGFuZ2VzClgr CXdoaWxlICggbWVtYmVyICE9IE5VTEwgKQpYKwl7ClgrCQkvLyBoYXMgdGhlIHN0YXRlIGNoYW5n ZWQgc2luY2UgbGFzdCB0aW1lIHRocm91Z2ggdGhpcyBsb29wPwpYKwkJaWYgKCBtZW1iZXItPnNw ZWFraW5nX3N0YXRlX25vdGlmeSApClgrCQl7ClgrCQkJbWFuYWdlcl9ldmVudCgKWCsJCQkJRVZF TlRfRkxBR19DQUxMLApYKwkJCQkiQ29uZmVyZW5jZVN0YXRlIiwKWCsJCQkJIkNvbmZlcmVuY2VO YW1lOiAlc1xyXG4iClgrCQkJCSJNZW1iZXJJZDogJWRcclxuIgpYKwkJCQkiQ2hhbm5lbDogJXNc clxuIgpYKwkJCQkiRmxhZ3M6ICVzXHJcbiIKWCsJCQkJIlN0YXRlOiAlc1xyXG4iLApYKwkJCQlt ZW1iZXItPmNvbmZfbmFtZSwKWCsJCQkJbWVtYmVyLT5pZCwKWCsJCQkJbWVtYmVyLT5jaGFubmVs X25hbWUsClgrCQkJCW1lbWJlci0+ZmxhZ3MsClgrCQkJCSggKCBtZW1iZXItPnNwZWFraW5nX3N0 YXRlID09IDEgKSA/ICJzcGVha2luZyIgOiAic2lsZW50IiApClgrCQkJKSA7ClgrClgrCQkJREVC VUcoIm1lbWJlciBzdGF0ZSBjaGFuZ2VkLCBjaGFubmVsID0+ICVzLCBzdGF0ZSA9PiAlZCwgaW5j b21pbmcgPT4gJWQsIG91dGdvaW5nID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVt YmVyLT5zcGVha2luZ19zdGF0ZSwgbWVtYmVyLT5pbkZyYW1lc0NvdW50LCBtZW1iZXItPm91dEZy YW1lc0NvdW50KSA7ClgrClgrCQkJbWVtYmVyLT5zcGVha2luZ19zdGF0ZV9ub3RpZnkgPSAwOwpY KwkJfQpYKwpYKwkJLy8gbW92ZSB0aGUgcG9pbnRlciB0byB0aGUgbmV4dCBtZW1iZXIKWCsJCW1l bWJlciA9IG1lbWJlci0+bmV4dCA7ClgrCX0KWCsKWCsJcmV0dXJuIDsKWCt9ClgrClgrLy8KWCAv LyBhc3RfcGFja2VyLCBhZGFwdGVkIGZyb20gYXN0X3Ntb290aGVyClggLy8gcGFjayBtdWx0aXBs ZSBmcmFtZXMgdG9nZXRoZXIgaW50byBvbmUgcGFja2V0IG9uIHRoZSB3aXJlLgpYIC8vClhAQCAt MjcxMCw4ICsyOTYxLDggQEAKWCBzdHJ1Y3QgYXN0X3BhY2tlciB7ClggCWludCBmcmFtZXNpemU7 IC8vIG51bWJlciBvZiBmcmFtZXMgcGVyIHBhY2tldCBvbiB0aGUgd2lyZS4KWCAJaW50IHNpemU7 ClgrCWZvcm1hdF90IGZvcm1hdDsKWCAJaW50IHBhY2tldF9pbmRleDsKWC0JaW50IGZvcm1hdDsK WCAJaW50IHJlYWRkYXRhOwpYIAlpbnQgb3B0aW1pemFibGVzdHJlYW07ClggCWludCBmbGFnczsK WEBAIC0yNzYzLDEwICszMDE0LDEyIEBAClggCQlyZXR1cm4gLTE7ClggCX0KWCAJaWYgKCFzLT5m b3JtYXQpIHsKWC0JCXMtPmZvcm1hdCA9IGYtPnN1YmNsYXNzOwpYKwkJcy0+Zm9ybWF0ID0gQVNU X0ZSQU1FX1NVQkNMQVNTX0NPREVDKGYpOwpYIAkJcy0+c2FtcGxlcz0wOwpYLQl9IGVsc2UgaWYg KHMtPmZvcm1hdCAhPSBmLT5zdWJjbGFzcykgewpYLQkJYXN0X2xvZyhMT0dfV0FSTklORywgIlBh Y2tlciB3YXMgd29ya2luZyBvbiAlZCBmb3JtYXQgZnJhbWVzLCBub3cgdHJ5aW5nIHRvIGZlZWQg JWQ/XG4iLCBzLT5mb3JtYXQsIGYtPnN1YmNsYXNzKTsKWCsJfSBlbHNlIGlmIChzLT5mb3JtYXQg IT0gQVNUX0ZSQU1FX1NVQkNMQVNTX0NPREVDKGYpKSB7ClgrCQlhc3RfbG9nKExPR19XQVJOSU5H LCAiUGFja2VyIHdhcyB3b3JraW5nIG9uICIgQVNUX0ZNVF9GT1JNQVRfVCAiIGZvcm1hdCBmcmFt ZXMsICIKWCsJCQkJICAgICAibm93IHRyeWluZyB0byBmZWVkICIgQVNUX0ZNVF9GT1JNQVRfVCAi P1xuIiwKWCsJCQlzLT5mb3JtYXQsIEFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQyhmKSk7ClggCQly ZXR1cm4gLTE7ClggCX0KWCAJaWYgKHMtPmxlbiArIGYtPmRhdGFsZW4gPiBQQUNLRVJfU0laRSkg ewpYQEAgLTI4MTUsNyArMzA2OCw3IEBAClggCQlsZW4gPSBzLT5sZW47ClggCS8qIE1ha2UgZnJh bWUgKi8KWCAJcy0+Zi5mcmFtZXR5cGUgPSBBU1RfRlJBTUVfVk9JQ0U7ClgtCXMtPmYuc3ViY2xh c3MgPSBzLT5mb3JtYXQ7ClgrCUFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQygmcy0+ZikgPSBzLT5m b3JtYXQ7ClggCVNFVERBVEEyUFRSKHMtPmYuZGF0YSwgcy0+ZnJhbWVkYXRhICsgQVNUX0ZSSUVO RExZX09GRlNFVCk7ClggCXMtPmYub2Zmc2V0ID0gQVNUX0ZSSUVORExZX09GRlNFVDsKWCAJcy0+ Zi5kYXRhbGVuID0gbGVuOwpYQEAgLTI4OTYsMTAgKzMxNDksMTQgQEAKWCAKWCAJZm9yICggOyBm cmFtZSAhPSBOVUxMIDsgZnJhbWUgPSBmcmFtZS0+bmV4dCApClggCXsKWC0JCS8vIGxvb2sgZm9y IHRoZSBsaXN0ZW5lcidzIGZyYW1lClgtCQlpZiAoIGZyYW1lLT5tZW1iZXIgIT0gTlVMTCApClgr CQkvLyB3ZSdyZSBsb29raW5nIGZvciBhIG51bGwgb3IgbWF0Y2hpbmcgbWVtYmVyClgrCQlpZiAo IGZyYW1lLT5tZW1iZXIgIT0gTlVMTCAmJiBmcmFtZS0+bWVtYmVyICE9IG1lbWJlciApClggCQkJ Y29udGludWUgOwpYIApYKwkJLy8gaWYgdGhpcyBtZW1iZXIgaXMgYSBzcHllciwgb25seSBxdWV1 ZSBmcmFtZXMgZnJvbSB0aGUgc3B5ZWUKWCsJCWlmICggKCBtZW1iZXItPnNweWVlX2NoYW5uZWxf bmFtZSAhPSBOVUxMICYmIGZyYW1lLT5tZW1iZXIgPT0gTlVMTCApClgrCQkJJiYgKCBmcmFtZS0+ c3B5X3BhcnRuZXIgPT0gTlVMTCB8fCBmcmFtZS0+c3B5X3BhcnRuZXIgIT0gbWVtYmVyICkgKQpY KwkJCWNvbnRpbnVlIDsKWCAjaWZkZWYJQVBQX0tPTkZFUkVOQ0VfREVCVUcKWCAJCWlmICggZnJh bWUtPmZyID09IE5VTEwgKQpYIAkJewpYQEAgLTI5MDgsNyArMzE2NSw3IEBAClggCQl9ClggI2Vu ZGlmClggCQkvLyBmaXJzdCwgdHJ5IGZvciBhIHByZS1jb252ZXJ0ZWQgZnJhbWUKWC0JCXFmID0g KG1lbWJlci0+bGlzdGVuX3ZvbHVtZSA9PSAwID8gZnJhbWUtPmNvbnZlcnRlZFttZW1iZXItPndy aXRlX2Zvcm1hdF9pbmRleF0gOiAwKTsKWCsJCXFmID0gKG1lbWJlci0+bGlzdGVuX3ZvbHVtZSA9 PSAwICYmIG1lbWJlci0+c3B5X3BhcnRuZXIgPT0gTlVMTD8gZnJhbWUtPmNvbnZlcnRlZFsgbWVt YmVyLT53cml0ZV9mb3JtYXRfaW5kZXggXSA6IDApOwpYIApYIAkJLy8gY29udmVydCAoIGFuZCBz dG9yZSApIHRoZSBmcmFtZQpYIAkJaWYgKCBxZiA9PSBOVUxMICkKWEBAIC0yOTUzLDcgKzMyMTAs NyBAQApYIAkJCQkvL3FmID0gTlVMTCA7ClggCQkJfQpYIApYLQkJCWlmICggbWVtYmVyLT5saXN0 ZW5fdm9sdW1lICE9IDAgKQpYKwkJCWlmIChtZW1iZXItPmxpc3Rlbl92b2x1bWUgIT0gMCB8fCBt ZW1iZXItPnNweV9wYXJ0bmVyICE9IE5VTEwpClggCQkJewpYIAkJCQkvLyBmcmVlIGZyYW1lICgg dGhlIHRyYW5zbGF0b3IncyBjb3B5ICkKWCAJCQkJYXN0X2ZyZnJlZSggcWYgKSA7ClhAQCAtMjk2 MSw3ICszMjE4LDcgQEAKWCAJCX0KWCAJCWVsc2UKWCAJCXsKWC0JCQlhc3RfbG9nKCBMT0dfV0FS TklORywgInVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgbGlzdGVuZXIgZnJhbWUsIGNoYW5u ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbi0+bmFtZSApIDsKWCsJCQlhc3RfbG9nKCBMT0dfV0FS TklORywgInVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgbGlzdGVuZXIgZnJhbWUsIGNoYW5u ZWwgPT4gJXNcbiIsIG1lbWJlci0+Y2hhbm5lbF9uYW1lICkgOwpYIAkJfQpYIApYIAkJLy8gc2V0 IGZvdW5kIGZsYWcKWEBAIC0zMDI5LDcgKzMyODYsOCBAQApYIAkJLy8gc2hvcnQtY3V0IHBvaW50 ZXIgdG8gdGhlIGFzdF9mcmFtZQpYIAkJcWYgPSBmcmFtZS0+ZnIgOwpYIApYLQkJaWYgKCAocWYt PnN1YmNsYXNzID09IG1lbWJlci0+d3JpdGVfZm9ybWF0KSAmJiAobWVtYmVyLT5saXN0ZW5fdm9s dW1lID09IDApICkKWCsJCWlmICggKEFTVF9GUkFNRV9TVUJDTEFTU19DT0RFQyhxZikgPT0gbWVt YmVyLT53cml0ZV9mb3JtYXQpICYmClgrCQkgICAgIChtZW1iZXItPmxpc3Rlbl92b2x1bWUgPT0g MCkgKQpYIAkJewpYIAkJCS8vIGZyYW1lIGlzIGFscmVhZHkgaW4gY29ycmVjdCBmb3JtYXQsIHNv IGp1c3QgcXVldWUgaXQKWCAKWEBAIC0zMDYxLDcgKzMzMTksNyBAQApYIAkJCX0KWCAJCQllbHNl ClggCQkJewpYLQkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byB0cmFuc2xhdGUg b3V0Z29pbmcgc3BlYWtlciBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFuLT5u YW1lICkgOwpYKwkJCQlhc3RfbG9nKCBMT0dfV0FSTklORywgInVuYWJsZSB0byB0cmFuc2xhdGUg b3V0Z29pbmcgc3BlYWtlciBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwgbWVtYmVyLT5jaGFubmVs X25hbWUgKSA7ClggCQkJfQpYIAkJfQpYIApYQEAgLTMxMzEsMTEgKzMzODksOCBAQApYIAkJLy8g dHJhbnNsYXRvcnMgc2VlbSB0byBiZSBzaW5nbGUtcHVycG9zZSwgaS5lLiB0aGV5ClggCQkvLyBj YW4ndCBiZSB1c2VkIHNpbXVsdGFuZW91c2x5IGZvciBtdWx0aXBsZSBhdWRpbyBzdHJlYW1zClgg CQkvLwpYLSNpZm5kZWYgQUNfVVNFX0c3MjIKWC0JCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0cmFu cyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBBU1Rf Rk9STUFUX1NMSU5FQVIgKSA7ClgtI2Vsc2UKWC0JCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0cmFu cyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBBU1Rf Rk9STUFUX1NMSU5FQVIxNiApIDsKWC0jZW5kaWYKWCsJCXN0cnVjdCBhc3RfdHJhbnNfcHZ0KiB0 cmFucyA9IGFzdF90cmFuc2xhdG9yX2J1aWxkX3BhdGgoIG1lbWJlci0+d3JpdGVfZm9ybWF0LCBB U1RfQ09ORl9GT1JNQVQgKSA7ClgrClggCQlpZiAoIHRyYW5zICE9IE5VTEwgKQpYIAkJewpYIAkJ CS8vIGF0dGVtcHQgKCBmaXZlIHRpbWVzICkgdG8gZ2V0IGEgc2lsZW50IGZyYW1lClhAQCAtMzE3 Miw3ICszNDI3LDcgQEAKWCAJfQpYIAllbHNlClggCXsKWC0JCWFzdF9sb2coIExPR19FUlJPUiwg InVuYWJsZSB0byB0cmFuc2xhdGUgb3V0Z29pbmcgc2lsZW50IGZyYW1lLCBjaGFubmVsID0+ICVz XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUgKSA7ClgrCQlhc3RfbG9nKCBMT0dfRVJST1IsICJ1bmFi bGUgdG8gdHJhbnNsYXRlIG91dGdvaW5nIHNpbGVudCBmcmFtZSwgY2hhbm5lbCA9PiAlc1xuIiwg bWVtYmVyLT5jaGFubmVsX25hbWUgKSA7ClggCX0KWCAKWCAJcmV0dXJuIDAgOwpYQEAgLTMxODcs NTIgKzM0NDIsMzIgQEAKWCAJYXN0X211dGV4X2xvY2soJm1lbWJlci0+bG9jayk7ClggClggCS8v IHNraXAgbWVtYmVycyB0aGF0IGFyZSBub3QgcmVhZHkKWC0JLy8gc2tpcCBubyByZWNlaXZlIGF1 ZGlvIGNsaWVudHMKWC0JaWYgKCBtZW1iZXItPnJlYWR5X2Zvcl9vdXRnb2luZyA9PSAwIHx8IG1l bWJlci0+bm9yZWN2X2F1ZGlvID09IDEgKQpYKwlpZiAoIG1lbWJlci0+cmVhZHlfZm9yX291dGdv aW5nID09IDAgKQpYIAl7ClggCQlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXItPmxvY2spOwpYIAkJ cmV0dXJuIDsKWCAJfQpYIApYLQlpZiAoIG1lbWJlci0+c3B5X3BhcnRuZXIgPT0gMCApClgrCS8v IHNraXAgbm8gcmVjZWl2ZSBhdWRpbyBjbGllbnRzClgrCWlmICggbWVtYmVyLT5ub3JlY3ZfYXVk aW8gKQpYIAl7ClgtCQkvLyBuZWl0aGVyIGEgc3B5ZXIgbm9yIGEgc3B5ZWUKWC0JCWlmICggbWVt YmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAwICkgClgtCQl7ClgtCQkJLy8gcXVldWUgbGlz dGVuZXIgZnJhbWUKWC0JCQlxdWV1ZV9mcmFtZV9mb3JfbGlzdGVuZXIoIGNvbmYsIG1lbWJlciwg c2VuZF9mcmFtZXMgKSA7ClgtCQl9ClgtCQllbHNlClgtCQl7ClgtCQkJLy8gcXVldWUgc3BlYWtl ciBmcmFtZQpYLQkJCXF1ZXVlX2ZyYW1lX2Zvcl9zcGVha2VyKCBjb25mLCBtZW1iZXIsIHNlbmRf ZnJhbWVzICkgOwpYLQkJfQpYKwkJYXN0X211dGV4X3VubG9jaygmbWVtYmVyLT5sb2NrKTsKWCsJ CXJldHVybjsKWCsJfQpYKwpYKwlpZiAoIG1lbWJlci0+bG9jYWxfc3BlYWtpbmdfc3RhdGUgPT0g MCApClgrCXsKWCsJCS8vIHF1ZXVlIGxpc3RlbmVyIGZyYW1lClgrCQlxdWV1ZV9mcmFtZV9mb3Jf bGlzdGVuZXIoIGNvbmYsIG1lbWJlciwgc2VuZF9mcmFtZXMgKSA7ClggCX0KWCAJZWxzZQpYIAl7 ClgtCQkvLyBlaXRoZXIgYSBzcHllciBvciBhIHNweWVlClgtCQlpZiAoIG1lbWJlci0+c3B5ZWVf Y2hhbm5lbF9uYW1lICE9IE5VTEwgKQpYLQkJewpYLQkJCS8vIHNweWVyIC0tIGFsd2F5cyB1c2Ug bWVtYmVyIHRyYW5zbGF0b3IKWC0JCQlxdWV1ZV9mcmFtZV9mb3Jfc3BlYWtlciggY29uZiwgbWVt YmVyLCBzZW5kX2ZyYW1lcyApIDsKWC0JCX0KWC0JCWVsc2UKWC0JCXsKWC0JCQkvLyBzcHllZSAt LSB1c2UgbWVtYmVyIHRyYW5zbGF0b3IgaWYgc3B5ZWUgc3BlYWtpbmcgb3Igc3B5ZXIgd2hpc3Bl cmluZyB0byBzcHllZQpYLQkJCWlmICggbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAx IHx8IG1lbWJlci0+c3B5X3BhcnRuZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID09IDEgKQpYLQkJ CXsKWC0JCQkJcXVldWVfZnJhbWVfZm9yX3NwZWFrZXIoIGNvbmYsIG1lbWJlciwgc2VuZF9mcmFt ZXMgKSA7ClgtCQkJfQpYLQkJCWVsc2UKWC0JCQl7ClgtCQkJCXF1ZXVlX2ZyYW1lX2Zvcl9saXN0 ZW5lciggY29uZiwgbWVtYmVyLCBzZW5kX2ZyYW1lcyApIDsKWC0JCQl9ClgtCQl9ClgrCQkvLyBx dWV1ZSBzcGVha2VyIGZyYW1lClgrCQlxdWV1ZV9mcmFtZV9mb3Jfc3BlYWtlciggY29uZiwgbWVt YmVyLCBzZW5kX2ZyYW1lcyApIDsKWCAJfQpYLQpYIAlhc3RfbXV0ZXhfdW5sb2NrKCZtZW1iZXIt PmxvY2spOwpYIH0KWC0jaWZkZWYJVklERU8KWCsKWCAvLyBGdW5jdGlvbnMgdGhhdCB3aWxsIGlu Y3JlYXNlIGFuZCBkZWNyZWFzZSBzcGVha2VyX2NvdW50IGluIGEgc2VjdXJlIHdheSwgbG9ja2lu ZyB0aGUgbWVtYmVyIG11dGV4IGlmIHJlcXVpcmVkClggLy8gV2lsbCBhbHNvIHNldCBzcGVha2lu Z19zdGF0ZSBmbGFnLgpYIC8vIFJldHVybnMgdGhlIHByZXZpb3VzIHNwZWFraW5nIHN0YXRlClhA QCAtMzI4OSw3ICszNTI0LDcgQEAKWCAKWCAJcmV0dXJuIG9sZF9zdGF0ZTsKWCB9ClgtI2VuZGlm ClgrClggdm9pZCBtZW1iZXJfcHJvY2Vzc19zcG9rZW5fZnJhbWVzKHN0cnVjdCBhc3RfY29uZmVy ZW5jZSogY29uZiwKWCAJCQkJIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJlciwKWCAJCQkJ IHN0cnVjdCBjb25mX2ZyYW1lICoqc3Bva2VuX2ZyYW1lcywKWEBAIC0zMzEyLDcgKzM1NDcsNyBA QApYIAkJJiYgbWVtYmVyLT5pbkZyYW1lc05lZWRlZCA+IDAKWCAJCSkKWCAJewpYLQkJREVCVUco ImNoYW5uZWwgPT4gJXMsIGluRnJhbWVzTmVlZGVkID0+ICVkLCBpbkZyYW1lc0NvdW50ID0+ICVk XG4iLCBtZW1iZXItPmNoYW4tPm5hbWUsIG1lbWJlci0+aW5GcmFtZXNOZWVkZWQsIG1lbWJlci0+ aW5GcmFtZXNDb3VudCkgOwpYKwkJREVCVUcoImNoYW5uZWwgPT4gJXMsIGluRnJhbWVzTmVlZGVk ID0+ICVkLCBpbkZyYW1lc0NvdW50ID0+ICVkXG4iLCBtZW1iZXItPmNoYW5uZWxfbmFtZSwgbWVt YmVyLT5pbkZyYW1lc05lZWRlZCwgbWVtYmVyLT5pbkZyYW1lc0NvdW50KSA7ClggCX0KWCAjZW5k aWYKWCAJLy8gbm9uLWxpc3RlbmVyIG1lbWJlciBzaG91bGQgaGF2ZSBmcmFtZXMsClhAQCAtMzMy NywxNCArMzU2MiwxNSBAQApYIAkJLy8gZGVjcmVtZW50IG9ubHkgb24gc3RhdGUgdHJhbnNpdGlv bnMKWCAJCWlmICggbWVtYmVyLT5sb2NhbF9zcGVha2luZ19zdGF0ZSA9PSAxICkKWCAJCXsKWC0J CQltZW1iZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID0gMDsKWC0jaWZkZWYJVklERU8KWCAJCQlk ZWNyZW1lbnRfc3BlYWtlcl9jb3VudChtZW1iZXIsIDApOwpYKwkJCW1lbWJlci0+bG9jYWxfc3Bl YWtpbmdfc3RhdGUgPSAwOwpYIAkJCS8vIElmIHdlJ3JlIGRyaXZpbmcgYW5vdGhlciBtZW1iZXIs IGRlY3JlbWVudCBpdHMgc3BlYWtlciBjb3VudCBhcyB3ZWxsClgrI2lmZGVmCVZJREVPClggCQkJ aWYgKCBtZW1iZXItPmRyaXZlbl9tZW1iZXIgIT0gTlVMTCApClggCQkJCWRlY3JlbWVudF9zcGVh a2VyX2NvdW50KG1lbWJlci0+ZHJpdmVuX21lbWJlciwgMSk7ClggI2VuZGlmClggCQl9ClgrClgg CQkvLyBjb3VudCB0aGUgbGlzdGVuZXJzClggCQkoKmxpc3RlbmVyX2NvdW50KSsrIDsKWCAJfQpY QEAgLTMzNTAsMTkgKzM1ODYsMjEgQEAKWCAKWCAJCS8vIHBvaW50IHRoZSBsaXN0IGF0IHRoZSBu ZXcgZnJhbWUKWCAJCSpzcG9rZW5fZnJhbWVzID0gY2ZyIDsKWCsKWCAJCS8vIEluY3JlbWVudCBz cGVha2VyIGNvdW50IGZvciB1cyBhbmQgZm9yIGRyaXZlbiBtZW1iZXJzClggCQkvLyBUaGlzIGhh cHBlbnMgb25seSBvbiB0aGUgZmlyc3QgcmVjZWl2ZWQgZnJhbWUsIHNpbmNlIHdlIHdhbnQgdG8K WCAJCS8vIGluY3JlbWVudCBvbmx5IG9uIHN0YXRlIHRyYW5zaXRpb25zClggCQlpZiAoIG1lbWJl ci0+bG9jYWxfc3BlYWtpbmdfc3RhdGUgPT0gMCApClggCQl7ClgrCQkJaW5jcmVtZW50X3NwZWFr ZXJfY291bnQobWVtYmVyLCAwKTsKWCAJCQltZW1iZXItPmxvY2FsX3NwZWFraW5nX3N0YXRlID0g MTsKWCAjaWZkZWYJVklERU8KWC0JCQlpbmNyZW1lbnRfc3BlYWtlcl9jb3VudChtZW1iZXIsIDAp OwpYIAkJCS8vIElmIHdlJ3JlIGRyaXZpbmcgYW5vdGhlciBtZW1iZXIsIGluY3JlbWVudCBpdHMg c3BlYWtlciBjb3VudCBhcyB3ZWxsClggCQkJaWYgKCBtZW1iZXItPmRyaXZlbl9tZW1iZXIgIT0g TlVMTCApClggCQkJCWluY3JlbWVudF9zcGVha2VyX2NvdW50KG1lbWJlci0+ZHJpdmVuX21lbWJl ciwgMSk7ClggI2VuZGlmClggCQl9ClgrClggCQkvLyBjb3VudCB0aGUgc3BlYWtlcnMKWCAJCSgq c3BlYWtlcl9jb3VudCkrKyA7ClggCX0KWC0tLSAuL21lbWJlci5oLm9yaWcJMjAxMC0wOC0xMCAy MDowMzo1NC4wMDAwMDAwMDAgKzAwMDAKWCsrKyAuL21lbWJlci5oCTIwMTAtMTEtMDEgMTc6MDc6 NDQuMDAwMDAwMDAwICswMDAwClhAQCAtNTUsNyArNTUsOSBAQApYIAlhc3RfbXV0ZXhfdCBsb2Nr IDsgLy8gbWVtYmVyIGRhdGEgbXV0ZXgKWCAKWCAJc3RydWN0IGFzdF9jaGFubmVsKiBjaGFuIDsg Ly8gbWVtYmVyJ3MgY2hhbm5lbApYLQlzdHJ1Y3QgYXN0X2NvbmZlcmVuY2UqIGNvbmYgOyAvLyBt ZW1iZXIncyBjb25mZXJlbmNlClgrCWNoYXIqIGNoYW5uZWxfbmFtZSA7IC8vIG1lbWJlcidzIGNo YW5uZWwgbmFtZQpYKwpYKwljaGFyKiB1bmlxdWVpZCA7ICAvLyBtZW1iZXIncyB1bmlxdWVpZApY IApYIAlhc3RfY29uZF90IGRlbGV0ZV92YXIgOyAvLyBkZWxldGUgY3YKWCAJY2hhciBkZWxldGVf ZmxhZyA7IC8vIGRlbGV0ZSBmbGFnClhAQCAtNjUsMTUgKzY3LDE3IEBAClggCWludCBwcmlvcml0 eSA7CS8vIGhpZ2hlc3QgcHJpb3JpdHkgZ2V0cyB0aGUgY2hhbm5lbApYIAljaGFyKiBmbGFncyA7 CS8vIHJhdyBtZW1iZXItdHlwZSBmbGFncwpYIAljaGFyICp0eXBlIDsJCS8vIGNvbmZlcmVuY2Ug dHlwZQpYKwljaGFyKiBjb25mX25hbWUgOwkJLy8gbmFtZSBvZiB0aGUgY29uZmVyZW5jZSB0aGF0 IG93biB0aGlzIG1lbWJlcgpYIAljaGFyICpzcHllZV9jaGFubmVsX25hbWUgOyAvLyBzcHllZSAg Y2hhbm5lbCBuYW1lClgrCWNoYXIgKndlbGNvbWVfcHJvbXB0IDsKWCAJaW50IG1heF91c2VycyA7 IC8vIHplcm8gb3IgbWF4IHVzZXJzIGZvciB0aGlzIGNvbmZlcmVuY2UKWC0jaWYgKCBTSUxERVQg PT0gMiApClgrClggCS8vIHZvaWNlIGZsYWdzClggCWludCB2YWRfZmxhZzsKWCAJaW50IGRlbm9p c2VfZmxhZzsKWCAJaW50IGFnY19mbGFnOwpYIAlpbnQgdmlhX3RlbGVwaG9uZTsKWC0jZW5kaWYK WCsKWCAJLy8gdmlkZW8gY29uZmVyZW5jZSBwYXJhbXMKWCAJaW50IGlkOwpYICNpZmRlZglWSURF TwpYQEAgLTkwLDEzICs5NCwyNCBAQApYIAlpbnQgdGFsa192b2x1bWU7ClggCWludCBsaXN0ZW5f dm9sdW1lOwpYIApYLQkvLyBtb2ggZmxhZ3MKWCsJLy8gbXVzaWMgb24gaG9sZCBmbGFnClggCWNo YXIgbW9oX2ZsYWc7ClgtCWNoYXIgbW9oX3N0b3A7ClggClggCS8vIGhvbGQgb3B0aW9uIGZsYWcK WCAJY2hhciBob2xkX2ZsYWc7ClggClgrCS8vIHJlY29yZGluZyB3YW50ZWQgZmxhZwpYKwljaGFy IHJlY29yZF9mbGFnOwpYKwpYKwkvLyB3YWl0IG9wdGlvbiBmbGFnClgrCWNoYXIgd2FpdF9mb3Jf bW9kZXJhdG9yX2ZsYWc7ClgrClgrCS8vIGNyZWF0aW9uIG9mIG5ldyBjb25mZXJlbmNlIG5vdCBh bGxvd2VkClgrCWNoYXIgbm9fY3JlYXRlX2ZsYWc7ClgrClgrCS8vIHRlbXAgZmxhZyBmb3Igd2hl biBzdGFyIGlzIHByZXNzZWQKWCsJY2hhciBzdGFyX3ByZXNzZWQ7ClgrClggCS8vIHRoaXMgbWVt YmVyIHdpbGwgbm90IGhlYXIvc2VlClggCWludCBub3JlY3ZfYXVkaW87ClggI2lmZGVmCVZJREVP ClhAQCAtMTQ3LDEyICsxNjIsMTIgQEAKWCAjaWZkZWYJVklERU8KWCAJdW5zaWduZWQgaW50IGlu VmlkZW9GcmFtZXNOZWVkZWQgOwpYICNlbmRpZgpYLSNpZmRlZglBU1RfQ09ORl9DQUNIRV9MQVNU X0ZSQU1FClgrClggCS8vIHVzZWQgd2hlbiBjYWNoaW5nIGxhc3QgZnJhbWUKWCAJY29uZl9mcmFt ZSogaW5GcmFtZXNMYXN0IDsKWCAJdW5zaWduZWQgaW50IGluRnJhbWVzUmVwZWF0TGFzdCA7Clgg CXVuc2lnbmVkIHNob3J0IG9rYXlUb0NhY2hlTGFzdCA7ClgtI2VuZGlmClgrClggCS8vIExMIG91 dHB1dCBmcmFtZSBxdWV1ZQpYIAljb25mX2ZyYW1lKiBvdXRGcmFtZXMgOwpYIAljb25mX2ZyYW1l KiBvdXRGcmFtZXNUYWlsIDsKWEBAIC0xODYsNiArMjAxLDggQEAKWCAjZW5kaWYKWCAJLy8gcmVs YXkgZHRtZiB0byBtYW5hZ2VyPwpYIAlzaG9ydCBkdG1mX3JlbGF5OwpYKwkvLyBhbGxvdyAic3Rh ciIgZHRtZiBtZW51PwpYKwlzaG9ydCBkdG1mX3N0YXJfbWVudTsKWCAJLy8gaW5pdGlhbCBuYXQg ZGVsYXkgZmxhZwpYIAlzaG9ydCBmaXJzdF9mcmFtZV9yZWNlaXZlZDsKWCAjaWZkZWYJVEVYVApY QEAgLTIxMywxMyArMjMwLDExIEBAClggCS8vIHVzZWQgZm9yIGRldGVybWluaW5nIG5lZWQgdG8g bWl4IGZyYW1lcwpYIAkvLyBhbmQgZm9yIG1hbmFnZW1lbnQgaW50ZXJmYWNlIG5vdGlmaWNhdGlv bgpYIAkvLyBhbmQgZm9yIFZBRCBiYXNlZCB2aWRlbyBzd2l0Y2hpbmcKWC0jaWZkZWYJVklERU8K WCAJc2hvcnQgc3BlYWtpbmdfc3RhdGVfbm90aWZ5IDsKWCAJc2hvcnQgc3BlYWtpbmdfc3RhdGUg OyAvLyBUaGlzIGZsYWcgd2lsbCBiZSB0cnVlIGlmIHRoaXMgbWVtYmVyIG9yIGFueSBvZiBpdHMg ZHJpdmVycyBpcyBzcGVha2luZwpYKwlzaG9ydCBsb2NhbF9zcGVha2luZ19zdGF0ZTsgLy8gVGhp cyBmbGFnIHdpbGwgYmUgdHJ1ZSBvbmx5IGlmIHRoaXMgbWVtYmVyIGlzIHNwZWFraW5nClggCXN0 cnVjdCB0aW1ldmFsIGxhc3Rfc3RhdGVfY2hhbmdlOwpYIAlpbnQgc3BlYWtlcl9jb3VudDsgLy8g TnVtYmVyIG9mIGRyaXZlcnMgKGluY2x1ZGluZyB0aGlzIG1lbWJlcikgdGhhdCBhcmUgc3BlYWtp bmcKWC0jZW5kaWYKWC0Jc2hvcnQgbG9jYWxfc3BlYWtpbmdfc3RhdGU7IC8vIFRoaXMgZmxhZyB3 aWxsIGJlIHRydWUgb25seSBpZiB0aGlzIG1lbWJlciBpcyBzcGVha2luZwpYIApYICNpZmRlZglW SURFTwpYIAkvLyBTdHVmZiB1c2VkIHRvIGRldGVybWluZSB2aWRlbyBicm9hZGNhc3Qgc3RhdGUK WEBAIC0yODcsMTEgKzMwMiwxNCBAQApYIAlTcGVleFByZXByb2Nlc3NTdGF0ZSAqZHNwIDsKWCAg ICAgICAgIC8vIG51bWJlciBvZiBmcmFtZXMgdG8gaWdub3JlIHNwZWV4X3ByZXByb2Nlc3MoKQpY IAlpbnQgaWdub3JlX3NwZWV4X2NvdW50OwpYKyNlbHNlClgrCS8vIHBsYWNlaG9sZGVyIHdoZW4g cHJlcHJvY2Vzc2luZyBpcyBub3QgZW5hYmxlZApYKwl2b2lkKiBkc3AgOwpYICNlbmRpZgpYIApY IAkvLyBhdWRpbyBmb3JtYXQgdGhpcyBtZW1iZXIgaXMgdXNpbmcKWC0JaW50IHdyaXRlX2Zvcm1h dCA7ClgtCWludCByZWFkX2Zvcm1hdCA7ClgrCWZvcm1hdF90IHdyaXRlX2Zvcm1hdCA7ClgrCWZv cm1hdF90IHJlYWRfZm9ybWF0IDsKWCAKWCAJaW50IHdyaXRlX2Zvcm1hdF9pbmRleCA7ClggCWlu dCByZWFkX2Zvcm1hdF9pbmRleCA7ClhAQCAtMzE4LDExICszMzYsMTEgQEAKWCAvLyBmdW5jdGlv biBkZWNsYXJhdGlvbnMKWCAvLwpYIApYLWludCBtZW1iZXJfZXhlYyggc3RydWN0IGFzdF9jaGFu bmVsKiBjaGFuLCB2b2lkKiBkYXRhICkgOwpYK2ludCBtZW1iZXJfZXhlYyggc3RydWN0IGFzdF9j aGFubmVsKiBjaGFuLCBjb25zdCBjaGFyKiBkYXRhICkgOwpYIApYIHN0cnVjdCBhc3RfY29uZl9t ZW1iZXIqIGNoZWNrX2FjdGl2ZV92aWRlbyggaW50IGlkLCBzdHJ1Y3QgYXN0X2NvbmZlcmVuY2Ug KmNvbmYgKTsKWCAKWC1zdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1 Y3QgYXN0X2NoYW5uZWwqIGNoYW4sIGNvbnN0IGNoYXIqIGRhdGEsIGNoYXIqIGNvbmZfbmFtZSAp IDsKWCtzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBjcmVhdGVfbWVtYmVyKCBzdHJ1Y3QgYXN0X2No YW5uZWwqIGNoYW4sIGNvbnN0IGNoYXIqIGRhdGEgKSA7Clggc3RydWN0IGFzdF9jb25mX21lbWJl ciogZGVsZXRlX21lbWJlciggc3RydWN0IGFzdF9jb25mX21lbWJlciogbWVtYmVyICkgOwpYIApY IC8vIGluY29taW5nIHF1ZXVlClhAQCAtMzYxLDEwICszNzksMTIgQEAKWCAjaWZkZWYJVEVYVApY IGNvbmZfZnJhbWUqIGdldF9vdXRnb2luZ190ZXh0X2ZyYW1lKCBzdHJ1Y3QgYXN0X2NvbmZfbWVt YmVyKiBtZW1iZXIgKSA7ClggI2VuZGlmClgtI2lmZGVmCVZJREVPClgrClgrdm9pZCBzZW5kX3N0 YXRlX2NoYW5nZV9ub3RpZmljYXRpb25zKCBzdHJ1Y3QgYXN0X2NvbmZfbWVtYmVyKiBtZW1iZXIg KSA7ClgrClggaW50IGluY3JlbWVudF9zcGVha2VyX2NvdW50KHN0cnVjdCBhc3RfY29uZl9tZW1i ZXIgKm1lbWJlciwgaW50IGxvY2spOwpYIGludCBkZWNyZW1lbnRfc3BlYWtlcl9jb3VudChzdHJ1 Y3QgYXN0X2NvbmZfbWVtYmVyICptZW1iZXIsIGludCBsb2NrKTsKWC0jZW5kaWYKWCsKWCB2b2lk IG1lbWJlcl9wcm9jZXNzX3Nwb2tlbl9mcmFtZXMoc3RydWN0IGFzdF9jb25mZXJlbmNlKiBjb25m LApYIAkJCQkgIHN0cnVjdCBhc3RfY29uZl9tZW1iZXIgKm1lbWJlciwKWCAJCQkJICBzdHJ1Y3Qg Y29uZl9mcmFtZSAqKnNwb2tlbl9mcmFtZXMsCjEwZDA1NjQwNjk4OTNjN2U1MGI0ZDZjYTMzYmEx Njk0CmVjaG8geCAtIGFwcGtvbmZlcmVuY2UvcGtnLWRlc2NyCnNlZCAncy9eWC8vJyA+YXBwa29u ZmVyZW5jZS9wa2ctZGVzY3IgPDwgJ2VmNTc2YTRkMzk0NWQ0Y2ZjZjI0NDMwYWU4MWRlNzcwJwpY QXBwX2tvbmZlcmVuY2UgaXMgYSBjaGFubmVsLWluZGVwZW5kZW50IGNvbmZlcmVuY2UgYXBwbGlj YXRpb24uClhJdCBmZWF0dXJlcyBlZmZpY2llbnQgYXVkaW8gbWl4aW5nIGFsZ29yaXRobXMgYXMg d2VsbCBhcyB2aWRlbyBzZWxlY3Rpb24KWHN1cHBvcnQgYmFzZWQgb24gVkFELCBEVE1GIG9yIENM SS4gClgKWFdXVzogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hcHBrb25mZXJlbmNl LwplZjU3NmE0ZDM5NDVkNGNmY2YyNDQzMGFlODFkZTc3MAplY2hvIHggLSBhcHBrb25mZXJlbmNl L2Rpc3RpbmZvCnNlZCAncy9eWC8vJyA+YXBwa29uZmVyZW5jZS9kaXN0aW5mbyA8PCAnZWE1MWUz NTBhYWQ1MzJiYjZhNTAwNWU4MGVjZTJlODAnClhNRDUgKGFwcGtvbmZlcmVuY2UtMS41LnRhci5n eikgPSAzYTExNmE3MWEwOGYyM2NlZjUxMGZhMGI0N2Q3MDVjYgpYU0hBMjU2IChhcHBrb25mZXJl bmNlLTEuNS50YXIuZ3opID0gNjQ3MGNjMzhiMDdhMTRiMjc5OTNiYzFlNmE1YzYzNjk0M2FlMzZl N2UyMzg1YTNlMTM2YjNiYzU1YTg3YWYyNwpYU0laRSAoYXBwa29uZmVyZW5jZS0xLjUudGFyLmd6 KSA9IDE4Njg4MgplYTUxZTM1MGFhZDUzMmJiNmE1MDA1ZTgwZWNlMmU4MAplY2hvIHggLSBhcHBr b25mZXJlbmNlL01ha2VmaWxlCnNlZCAncy9eWC8vJyA+YXBwa29uZmVyZW5jZS9NYWtlZmlsZSA8 PCAnYjg2MzE4MDA4NmM0M2M0NmE2MjU2NTQ5MjNhZjdlMjMnClgjIE5ldyBwb3J0cyBjb2xsZWN0 aW9uIG1ha2VmaWxlIGZvcjoJbmV0L2FwcGtvbmZlcmVuY2UKWCMgRGF0ZSBjcmVhdGVkOgkJCQkx OSBPY3RvYmVyIDIwMTAKWCMgV2hvbToJCQkJCUFsZXggRGVpdGVyIDxBbGV4LkRlaXRlckBHbWFp bC5DT00+ClgjClgjICRGcmVlQlNEJApYIwpYClhQT1JUTkFNRT0JYXBwa29uZmVyZW5jZQpYUE9S VFZFUlNJT049CTEuNQpYQ0FURUdPUklFUz0JbmV0ClhNQVNURVJfU0lURVM9CVNGClgKWE1BSU5U QUlORVI9CWFsZXguZGVpdGVyQGdtYWlsLmNvbQpYQ09NTUVOVD0JSGlnaC1wZXJmb3JtYW5jZSBB c3RlcmlzayB2b2ljZS92aWRlbyBjb25mZXJlbmNpbmcgcGx1Z2luClgKWEJVSUxEX0RFUEVORFM9 ICBhc3Rlcmlzazoke1BPUlRTRElSfS9uZXQvYXN0ZXJpc2sKWFJVTl9ERVBFTkRTPSAgICBhc3Rl cmlzazoke1BPUlRTRElSfS9uZXQvYXN0ZXJpc2sKWApYVVNFX0dNQUtFPQl5ZXMKWE1BS0VfRU5W PQlMT0NBTEJBU0U9JHtMT0NBTEJBU0V9ClhXUktTUkM9CQkke1dSS0RJUn0vJHtQT1JUTkFNRX0v a29uZmVyZW5jZQpYClhQTElTVF9GSUxFUz0JbGliL2FzdGVyaXNrL21vZHVsZXMvYXBwX2tvbmZl cmVuY2Uuc28KWApYLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgpiODYzMTgwMDg2YzQzYzQ2YTYyNTY1 NDkyM2FmN2UyMwpleGl0Cgo= --20cf30549daf7a8c210493feb76d--