From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C082C433DF for ; Wed, 19 Aug 2020 21:14:47 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C5610207DE for ; Wed, 19 Aug 2020 21:14:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C5610207DE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 46AD66E830; Wed, 19 Aug 2020 21:14:46 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC6A86E82C for ; Wed, 19 Aug 2020 21:14:44 +0000 (UTC) IronPort-SDR: oyz8bA8ErFUmr1/sEUGv5Jl3QFjLsoxqG7yNoGVJw/L6C6uGUoop4HGJNUx9uNg9iBVLyvGS4P JvBOTL1XApvA== X-IronPort-AV: E=McAfee;i="6000,8403,9718"; a="152612720" X-IronPort-AV: E=Sophos;i="5.76,332,1592895600"; d="scan'208";a="152612720" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Aug 2020 14:14:44 -0700 IronPort-SDR: YlTXfvu9y1VX/YeaS9eZOrQQyRS7+f2syEZ0yneLBTUHIjffgaDKmt8LPorwjBy/E7lDmqLwvi c+5tXdIEcWdg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,332,1592895600"; d="scan'208";a="320624179" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga004.fm.intel.com with ESMTP; 19 Aug 2020 14:14:43 -0700 Received: from [10.249.158.66] (mwajdecz-mobl.ger.corp.intel.com [10.249.158.66]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 07JLEf0f026209; Wed, 19 Aug 2020 22:14:42 +0100 To: Daniele Ceraolo Spurio , John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org References: <20200807174637.375324-1-John.C.Harrison@Intel.com> <20200807174637.375324-2-John.C.Harrison@Intel.com> <49855416-a10a-d386-a1f7-bc2e8e76c91c@intel.com> From: Michal Wajdeczko Message-ID: <1d66e55c-4aac-e710-19bf-e5fd589ceaaf@intel.com> Date: Wed, 19 Aug 2020 23:14:41 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <49855416-a10a-d386-a1f7-bc2e8e76c91c@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/guc: Update to GuC v45.0.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiAxMS4wOC4yMDIwIDAzOjA0LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IAo+ IAo+IE9uIDgvNy8yMDIwIDEwOjQ2IEFNLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3Rl Ogo+PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Pgo+ PiBVcGRhdGUgdG8gdGhlIGxhdGVzdCBHdUMgZmlybXdhcmUuIFRoaXMgaW5jbHVkZXMgc29tZSBz aWduaWZpY2FudAo+PiBjaGFuZ2VzIHRvIHRoZSBpbnRlcmZhY2UuCj4gCj4gQSBoaWdoIGxldmVs IG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIHdvdWxkIGJlIG5pY2UgZm9yIGV4dHJhIGNsYXJpdHku IEEKPiBjb3VwbGUgb2YgZXhhbXBsZToKPiAKPiAtIEd1QyBub3cgcmVxdWlyZXMgYSBwcml2YXRl IG1lbW9yeSBhcmVhCj4gLSB5b3UncmUgZHJvcHBpbmcgdGhlIHByb2dyYW1taW5nIG9mIHRoZSBy ZWdfc3RhdGUgc3RydWN0LCBidXQgdGhhdCdzCj4gYWN0dWFsbHkgc3RpbGwgZGVmaW5lZCBpbiB0 aGUgc3RydWN0dXJlLCBzbyBJTU8gaXQncyB3b3J0aCBtZW50aW9uaW5nCj4gdGhhdCBpdCB3aWxs IGNvbWUgYmFjayB3aXRoIEd1QyBzdWJtaXNzaW9uLgo+IAo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBK b2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+PiBBdXRob3I6IERhbmll bGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+IEF1 dGhvcjogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4gQXV0aG9y OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVsLmNvbT4KPj4gQXV0aG9yOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4gQXV0aG9yOiBNaWNo ZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+PiBBdXRob3I6IE9zY2FyIE1h dGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4+IEF1dGhvcjogUm9kcmlnbyBWaXZpIDxyb2Ry aWdvLnZpdmlAaW50ZWwuY29tPgoKRm9yIHRoZSByZXZpZXcgcHJvY2VzcyBpdCB3b3VsZCBiZSBi ZXR0ZXIgdG8gaGF2ZSBpbmRpdmlkdWFsIHBhdGNoZXMKZnJvbSBlYWNoIGF1dGhvci4gV2UgY2Fu IHNxdWFzaCB0aGVtIGp1c3QgYmVmb3JlIG1lcmdlLgoKPj4gLS0tCj4+IMKgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jwqDCoMKgIHzCoMKgIDMgKy0KPj4gwqAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmPCoMKgwqDCoMKgwqAgfCAxMjUgKysr KysrKy0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5o wqDCoCB8IDIxNSArKysrKysrKysrKysrKysrKysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19hZHMuY8KgwqAgfCAxMTYgKysrKysrKystLQo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuY8KgwqDCoCB8wqAgMjEgKy0KPj4gwqAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaMKgIHwgMTEwICsrKyst LS0tLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5owqDC oCB8wqDCoCA1ICsKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncu Y8KgwqDCoMKgIHzCoCAyNyArKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfdWNfZncuaMKgwqDCoMKgIHzCoMKgIDIgKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF91Y19md19hYmkuaCB8wqDCoCA2ICstCj4+IMKgIDEwIGZpbGVzIGNoYW5nZWQs IDQ4NSBpbnNlcnRpb25zKCspLCAxNDUgZGVsZXRpb25zKC0pCj4+IMKgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWJpLmgKPj4KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4gaW5kZXggZWE0YmEy YWZlOWY5Li45Y2Q2MmQ2OGFiYzYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9jcy5jCj4+IEBAIC0zMDUsOCArMzA1LDkgQEAgc3RhdGljIGludCBpbnRlbF9l bmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwKPj4gZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQpCj4+IMKgwqDCoMKgwqAgZW5naW5lLT5pOTE1ID0gaTkxNTsKPj4gwqDCoMKgwqDCoCBlbmdp bmUtPmd0ID0gZ3Q7Cj4+IMKgwqDCoMKgwqAgZW5naW5lLT51bmNvcmUgPSBndC0+dW5jb3JlOwo+ PiAtwqDCoMKgIGVuZ2luZS0+aHdfaWQgPSBlbmdpbmUtPmd1Y19pZCA9IGluZm8tPmh3X2lkOwo+ PiDCoMKgwqDCoMKgIGVuZ2luZS0+bW1pb19iYXNlID0gX19lbmdpbmVfbW1pb19iYXNlKGk5MTUs IGluZm8tPm1taW9fYmFzZXMpOwo+PiArwqDCoMKgIGVuZ2luZS0+aHdfaWQgPSBpbmZvLT5od19p ZDsKPj4gK8KgwqDCoCBlbmdpbmUtPmd1Y19pZCA9IE1BS0VfR1VDX0lEKGluZm8tPmNsYXNzLCBp bmZvLT5pbnN0YW5jZSk7Cj4+IMKgIMKgwqDCoMKgwqAgZW5naW5lLT5jbGFzcyA9IGluZm8tPmNs YXNzOwo+PiDCoMKgwqDCoMKgIGVuZ2luZS0+aW5zdGFuY2UgPSBpbmZvLT5pbnN0YW5jZTsKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4gaW5kZXggODYxNjU3ODk3 YzBmLi44ZDMwZTFkN2Q4YTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Yy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Yy5jCj4+IEBAIC03LDYgKzcsNyBAQAo+PiDCoCAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfaXJx LmgiCj4+IMKgICNpbmNsdWRlICJndC9pbnRlbF9ndF9wbV9pcnEuaCIKPj4gwqAgI2luY2x1ZGUg ImludGVsX2d1Yy5oIgo+PiArI2luY2x1ZGUgImludGVsX2d1Y19hYmkuaCIKPj4gwqAgI2luY2x1 ZGUgImludGVsX2d1Y19hZHMuaCIKPj4gwqAgI2luY2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9u LmgiCj4+IMKgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+PiBAQCAtMjEzLDIzICsyMTQsNiBAQCBz dGF0aWMgdTMyIGd1Y19jdGxfZmVhdHVyZV9mbGFncyhzdHJ1Y3QgaW50ZWxfZ3VjCj4+ICpndWMp Cj4+IMKgwqDCoMKgwqAgcmV0dXJuIGZsYWdzOwo+PiDCoCB9Cj4+IMKgIC1zdGF0aWMgdTMyIGd1 Y19jdGxfY3R4aW5mb19mbGFncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+IC17Cj4+IC3CoMKg wqAgdTMyIGZsYWdzID0gMDsKPj4gLQo+PiAtwqDCoMKgIGlmIChpbnRlbF9ndWNfc3VibWlzc2lv bl9pc191c2VkKGd1YykpIHsKPj4gLcKgwqDCoMKgwqDCoMKgIHUzMiBjdHhudW0sIGJhc2U7Cj4+ IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGJhc2UgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3VjLCBn dWMtPnN0YWdlX2Rlc2NfcG9vbCk7Cj4+IC3CoMKgwqDCoMKgwqDCoCBjdHhudW0gPSBHVUNfTUFY X1NUQUdFX0RFU0NSSVBUT1JTIC8gMTY7Cj4+IC0KPj4gLcKgwqDCoMKgwqDCoMKgIGJhc2UgPj49 IFBBR0VfU0hJRlQ7Cj4+IC3CoMKgwqDCoMKgwqDCoCBmbGFncyB8PSAoYmFzZSA8PCBHVUNfQ1RM X0JBU0VfQUREUl9TSElGVCkgfAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY3R4bnVtIDw8 IEdVQ19DVExfQ1RYTlVNX0lOMTZfU0hJRlQpOwo+PiAtwqDCoMKgIH0KPj4gLcKgwqDCoCByZXR1 cm4gZmxhZ3M7Cj4+IC19Cj4+IC0KPj4gwqAgc3RhdGljIHUzMiBndWNfY3RsX2xvZ19wYXJhbXNf ZmxhZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoCB7Cj4+IMKgwqDCoMKgwqAgdTMyIG9m ZnNldCA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+bG9nLnZtYSkgPj4KPj4gUEFH RV9TSElGVDsKPj4gQEAgLTI5MSw3ICsyNzUsNiBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9wYXJh bXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoCDCoMKgwqDCoMKgIEJVSUxEX0JVR19PTihz aXplb2YoZ3VjLT5wYXJhbXMpICE9IEdVQ19DVExfTUFYX0RXT1JEUyAqCj4+IHNpemVvZih1MzIp KTsKPj4gwqAgLcKgwqDCoCBwYXJhbXNbR1VDX0NUTF9DVFhJTkZPXSA9IGd1Y19jdGxfY3R4aW5m b19mbGFncyhndWMpOwo+PiDCoMKgwqDCoMKgIHBhcmFtc1tHVUNfQ1RMX0xPR19QQVJBTVNdID0g Z3VjX2N0bF9sb2dfcGFyYW1zX2ZsYWdzKGd1Yyk7Cj4+IMKgwqDCoMKgwqAgcGFyYW1zW0dVQ19D VExfRkVBVFVSRV0gPSBndWNfY3RsX2ZlYXR1cmVfZmxhZ3MoZ3VjKTsKPj4gwqDCoMKgwqDCoCBw YXJhbXNbR1VDX0NUTF9ERUJVR10gPSBndWNfY3RsX2RlYnVnX2ZsYWdzKGd1Yyk7Cj4+IEBAIC00 MDAsMzIgKzM4Myw2NSBAQCB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKPj4gwqDCoMKgwqDCoCBpbnRlbF91Y19md19maW5pKCZndWMtPmZ3KTsKPj4gwqAgfQo+PiDC oCArc3RhdGljIGJvb2wgaXNfdmFsaWRfbW1pb19hY3Rpb24odTMyIGFjdGlvbikKPj4gK3sKPj4g K8KgwqDCoCByZXR1cm4gYWN0aW9uID09IEdVQ19BQ1RJT05fUkVHSVNURVJfQ1RCIHx8Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBhY3Rpb24gPT0gR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NUQjsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGludCBndWNfc3RhdHVzX3RvX2Vycm5vKHUzMiBzdGF0dXMp Cj4+ICt7Cj4+ICvCoMKgwqAgc3dpdGNoIChzdGF0dXMpIHsKPj4gK8KgwqDCoCBjYXNlIEdVQ19T VEFUVVNfVU5LTk9XTl9BQ1RJT046Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVPUE5PVFNV UFA7Cj4+ICvCoMKgwqAgY2FzZSBHVUNfU1RBVFVTX0lOVkFMSURfUEFSQU1TOgo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICvCoMKgwqAgY2FzZSBHVUNfU1RBVFVTX0lOVkFM SURfQUREUjoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxUOwo+PiArwqDCoMKgIGNh c2UgR1VDX1NUQVRVU19DVFhfTk9UX1JFR0lTVEVSRUQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVTUkNIOwo+PiArwqDCoMKgIGNhc2UgR1VDX1NUQVRVU19DVEJfRlVMTDoKPj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiAtRU5PU1BDOwo+PiArwqDCoMKgIGNhc2UgR1VDX1NUQVRVU19VTkFV VEhPUklaRURfUkVRVUVTVDoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUFDQ0VTOwo+PiAr wqDCoMKgIGNhc2UgR1VDX1NUQVRVU19HRU5FUklDX0ZBSUw6Cj4+ICvCoMKgwqAgZGVmYXVsdDoK Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5YSU87Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiAr Cj4+IMKgIC8qCj4+IMKgwqAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE1NSU8gYmFz ZWQgaG9zdCB0byBHdUMgaW50ZXJmYWNlLgo+PiDCoMKgICovCj4+IC1pbnQgaW50ZWxfZ3VjX3Nl bmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIKPj4g bGVuLAo+PiAraW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBj b25zdCB1MzIgKnJlcXVlc3QsCj4+IHUzMiBsZW4sCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHUzMiAqcmVzcG9uc2VfYnVmLCB1MzIgcmVzcG9uc2VfYnVmX3NpemUpCj4+IMKgIHsKPj4g K8KgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd1Y190b19ndChndWMpLT5p OTE1Owo+PiDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd1Y190b19n dChndWMpLT51bmNvcmU7Cj4+IC3CoMKgwqAgdTMyIHN0YXR1czsKPj4gK8KgwqDCoCB1MzIgYWN0 aW9uID0gRklFTERfR0VUKEdVQ19NTUlPX1JFUVVFU1RfQUNUSU9OLCAqcmVxdWVzdCk7Cj4+ICvC oMKgwqAgdTMyIHN1YmNvZGUgPSBGSUVMRF9HRVQoR1VDX01NSU9fUkVRVUVTVF9TVUJDT0RFLCAq cmVxdWVzdCk7Cj4+ICvCoMKgwqAgdTMyIG1hZ2ljID0gR1VDX01NSU9fTVNHX01BR0lDX0RFRkFV TFQ7Cj4+ICvCoMKgwqAgdTMyIGhlYWRlcjsKPj4gwqDCoMKgwqDCoCBpbnQgaTsKPj4gwqDCoMKg wqDCoCBpbnQgcmV0Owo+PiDCoCDCoMKgwqDCoMKgIEdFTV9CVUdfT04oIWxlbik7Cj4+IMKgwqDC oMKgwqAgR0VNX0JVR19PTihsZW4gPiBndWMtPnNlbmRfcmVncy5jb3VudCk7Cj4+IMKgIC3CoMKg wqAgLyogV2UgZXhwZWN0IG9ubHkgYWN0aW9uIGNvZGUgKi8KPj4gLcKgwqDCoCBHRU1fQlVHX09O KCphY3Rpb24gJiB+SU5URUxfR1VDX01TR19DT0RFX01BU0spOwo+PiArwqDCoMKgIC8qIFdlIGV4 cGVjdCB0byB1c2UgTU1JTyBvbmx5IGZvciBzcGVjaWFsIGFjdGlvbnMgKi8KPj4gK8KgwqDCoCBH RU1fQlVHX09OKCFpc192YWxpZF9tbWlvX2FjdGlvbihhY3Rpb24pKTsKPj4gwqAgLcKgwqDCoCAv KiBJZiBDVCBpcyBhdmFpbGFibGUsIHdlIGV4cGVjdCB0byB1c2UgTU1JTyBvbmx5IGR1cmluZwo+ PiBpbml0L2ZpbmkgKi8KPj4gLcKgwqDCoCBHRU1fQlVHX09OKCphY3Rpb24gIT0KPj4gSU5URUxf R1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIgJiYKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgICphY3Rpb24gIT0KPj4gSU5URUxfR1VDX0FDVElPTl9ERVJFR0lTVEVS X0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUik7Cj4+ICvCoMKgwqAgaGVhZGVyID0gRklFTERfUFJF UChHVUNfTU1JT19NU0dfVFlQRSwgR1VDX01NSU9fTVNHX1RZUEVfUkVRVUVTVCkgfAo+PiArwqDC oMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfTU1JT19NU0dfTUFHSUMsIG1hZ2ljKSB8Cj4+ICvC oMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19NTUlPX1JFUVVFU1RfU1VCQ09ERSwgc3ViY29k ZSkgfAo+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfTU1JT19SRVFVRVNUX0FDVElP TiwgYWN0aW9uKTsKPj4gwqAgwqDCoMKgwqDCoCBtdXRleF9sb2NrKCZndWMtPnNlbmRfbXV0ZXgp Owo+PiDCoMKgwqDCoMKgIGludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KHVuY29yZSwgZ3VjLT5z ZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4+IMKgIC3CoMKgwqAgZm9yIChpID0gMDsgaSA8IGxlbjsg aSsrKQo+PiAtwqDCoMKgwqDCoMKgwqAgaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3Nl bmRfcmVnKGd1YywgaSksIGFjdGlvbltpXSk7Cj4+ICvCoMKgwqAgaW50ZWxfdW5jb3JlX3dyaXRl KHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgMCksIGhlYWRlcik7Cj4+ICvCoMKgwqAgZm9yIChp ID0gMTsgaSA8IGxlbjsgaSsrKQo+PiArwqDCoMKgwqDCoMKgwqAgaW50ZWxfdW5jb3JlX3dyaXRl KHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSksIHJlcXVlc3RbaV0pOwo+PiDCoCDCoMKgwqDC oMKgIGludGVsX3VuY29yZV9wb3N0aW5nX3JlYWQodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBp IC0gMSkpOwo+PiDCoCBAQCAtNDM3LDE3ICs0NTMsNDUgQEAgaW50IGludGVsX2d1Y19zZW5kX21t aW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+PiBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwK Pj4gwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqAgcmV0ID0gX19pbnRlbF93YWl0X2Zvcl9y ZWdpc3Rlcl9mdyh1bmNvcmUsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBndWNfc2VuZF9yZWcoZ3VjLCAwKSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19NU0dfVFlQRV9NQVNLLAo+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSU5URUxfR1VDX01T R19UWVBFX1JFU1BPTlNFIDw8Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBJTlRFTF9HVUNfTVNHX1RZUEVfU0hJRlQsCj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxMCwgMTAsICZzdGF0dXMpOwo+PiAtwqDCoMKg IC8qIElmIEd1QyBleHBsaWNpdGx5IHJldHVybmVkIGFuIGVycm9yLCBjb252ZXJ0IGl0IHRvIC1F SU8gKi8KPj4gLcKgwqDCoCBpZiAoIXJldCAmJiAhSU5URUxfR1VDX01TR19JU19SRVNQT05TRV9T VUNDRVNTKHN0YXR1cykpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlPOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01NSU9fTVNHX09SSUdJ TiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxE X1BSRVAoR1VDX01NSU9fTVNHX09SSUdJTiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01NSU9fTVNHX09SSUdJTl9HVUMp LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTAsIDEw LCAmaGVhZGVyKTsKPj4gK8KgwqDCoCBpZiAodW5saWtlbHkocmV0KSkKPj4gK8KgwqDCoMKgwqDC oMKgIGdvdG8gb3V0Owo+PiDCoCAtwqDCoMKgIGlmIChyZXQpIHsKPj4gLcKgwqDCoMKgwqDCoMKg IERSTV9FUlJPUigiTU1JTzogR3VDIGFjdGlvbiAlI3ggZmFpbGVkIHdpdGggZXJyb3IgJWQgJSN4 XG4iLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWN0aW9uWzBdLCByZXQsIHN0YXR1 cyk7Cj4+ICvCoMKgwqAgaWYgKHVubGlrZWx5KEZJRUxEX0dFVChHVUNfTU1JT19NU0dfTUFHSUMs IGhlYWRlcikgIT0gbWFnaWMpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSAtRVNUQUxFOwo+ PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+IAo+IEkgdGhpbmsgd2Ug c2hvdWxkIG1vdmUgdGhpcyBhZnRlciB0aGUgY2hlY2sgZm9yIGJ1c3luZXNzLiBJSVJDIHRoZQo+ IHByb3RvY29sIHNheXMgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgR3VDIHRvIHN0b3AgYmVpbmcg YnVzeSBiZWZvcmUKPiBzZW5kaW5nIG1vcmUgbWVzc2FnZXMuIFRoYXQgd2F5IHlvdSBjYW4gYWxz byB1bmlmeSB0aGlzIHdpdGggdGhlIG90aGVyCj4gc2ltaWxhciBjaGVjayBiZWxvdy4KCmJ1dCBl YWNoIE1NSU8gbWVzc2FnZSBzaG91bGQgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGFuZCBwYXJ0IG9m IHRoYXQKaGFuZGxpbmcgaXMgYSBjaGVjayBvZiB0aGUgJ21hZ2ljJyBmaWVsZCwgc28gd2UgY2Fu J3Qgc2tpcCBpdCBoZXJlCgo+IAo+PiArCj4+ICvCoMKgwqAgaWYgKEZJRUxEX0dFVChHVUNfTU1J T19NU0dfVFlQRSwgaGVhZGVyKSA9PQo+PiBHVUNfTU1JT19NU0dfVFlQRV9CVVNZKSB7Cj4+ICsj ZGVmaW5lIGRvbmUgKHsgaGVhZGVyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBndWNfc2Vu ZF9yZWcoZ3VjLAo+PiAwKSk7IFwKPj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX0dFVChHVUNfTU1J T19NU0dfVFlQRSwgaGVhZGVyKSAhPQo+PiBHVUNfTU1JT19NU0dfVFlQRV9CVVNZOyB9KQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0ID0gd2FpdF9mb3IoZG9uZSwgMTAwMCk7Cj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAodW5saWtlbHkocmV0KSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBv dXQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoRklFTERfR0VUKEdVQ19NTUlPX01T R19PUklHSU4sIGhlYWRlcikgIT0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEdVQ19NTUlPX01TR19PUklHSU5fR1VDKSkgewo+IAo+IFRoaXMgY2hlY2sg b24gR1VDX01NSU9fTVNHX09SSUdJTiBpcyByZWR1bmRhbnQuIFdlIGFscmVhZHkgd2FpdGVkIGZv ciBpdAo+IHRvIGJlIEdVQ19NTUlPX01TR19PUklHSU5fR1VDIGR1cmluZyB0aGUgd2FpdCBhYm92 ZSBhbmQgd2UncmUgbm90Cj4gc2VuZGluZyBvdGhlciBtZXNzYWdlIGZyb20gaTkxNSB3aGlsZSB3 ZSdyZSB3YWl0aW5nIGZvciB0aGlzIG9uZSwgc28KPiB0aGF0IGZpZWxkIGNhbid0IGNoYW5nZS4K CmluIHRoZSB3YWl0IGFib3ZlIHdlIGFyZSB3YWl0aW5nIGZvciBtZXNzYWdlIGRpZmZlcmVudCB0 aGFuIEJVU1kgYW5kIHdlCmV4cGVjdCB0aGF0IHRoaXMgb3RoZXIgbWVzc2FnZSB3aWxsIGJlIGZy b20gdGhlIEd1QyAoYXMgdGhpcyBpcyBwYXJ0IG9mCnRoZSBwcm90b2NvbCkgYnV0IHdlIHNob3Vs ZCBzdGlsbCBjaGVjayB0aGF0IEd1QyBpcyBjb21wbGlhbnQKCj4gCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldCA9IC1FUFJPVE87Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g b3V0Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5 KEZJRUxEX0dFVChHVUNfTU1JT19NU0dfTUFHSUMsIGhlYWRlcikgIT0gbWFnaWMpKSB7Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FU1RBTEU7Cj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdvdG8gb3V0Owo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArI3VuZGVmIGRvbmUKPj4g K8KgwqDCoCB9Cj4+ICsKPj4gK8KgwqDCoCBpZiAoRklFTERfR0VUKEdVQ19NTUlPX01TR19UWVBF LCBoZWFkZXIpID09Cj4+IEdVQ19NTUlPX01TR19UWVBFX0VSUk9SKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoCB1MzIgc3RhdHVzID0gRklFTERfR0VUKEdVQ19NTUlPX0VSUk9SX1NUQVRVUywgaGVhZGVy KTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZ3VjX3N0YXR1c190b19lcnJubyhzdGF0 dXMpOwo+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqAgaWYgKEZJRUxEX0dFVChHVUNfTU1JT19NU0dfVFlQRSwgaGVhZGVyKSAhPQo+PiBHVUNf TU1JT19NU0dfVFlQRV9SRVNQT05TRSkgewo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVQUk9U TzsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+PiDCoMKgwqDCoMKgIH0KPj4gwqAg QEAgLTQ2MCwxMiArNTA0LDE3IEBAIGludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBpbnRl bF9ndWMgKmd1YywKPj4gY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCj4+IMKgwqDCoMKgwqAg fQo+PiDCoCDCoMKgwqDCoMKgIC8qIFVzZSBkYXRhIGZyb20gdGhlIEd1QyByZXNwb25zZSBhcyBv dXIgcmV0dXJuIHZhbHVlICovCj4+IC3CoMKgwqAgcmV0ID0gSU5URUxfR1VDX01TR19UT19EQVRB KHN0YXR1cyk7Cj4gCj4gSU5URUxfR1VDX01TR19UT19EQVRBIGlzIHN0aWxsIHVzZWQgaW4gaW50 ZWxfZ3VjX2N0LmMuIEVpdGhlciBzdGljayB0bwo+IHRoYXQgb3IgdXBkYXRlIHRoZSBvdGhlciB1 c2UtY2FzZSB0byB0aGUgbmV3IGRlZmluZS4KCnRoaXMgbmV3IGRlZmluZSBpcyBmb3IgTU1JTyBt ZXNzYWdlcywgY2hhbmdlcyB0byBDVEIgbWVzc2FnZXMgd2lsbApmb2xsb3cgc29vbgoKPiAKPj4g K8KgwqDCoCByZXQgPSBGSUVMRF9HRVQoR1VDX01NSU9fUkVTUE9OU0VfREFUQTAsIGhlYWRlcik7 Cj4+IMKgIMKgIG91dDoKPj4gwqDCoMKgwqDCoCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1 bmNvcmUsIGd1Yy0+c2VuZF9yZWdzLmZ3X2RvbWFpbnMpOwo+PiDCoMKgwqDCoMKgIG11dGV4X3Vu bG9jaygmZ3VjLT5zZW5kX211dGV4KTsKPj4gwqAgK8KgwqDCoCBpZiAodW5saWtlbHkocmV0IDwg MCkpCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKCZpOTE1LT5kcm0sCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICJHdUMgTU1JTyBhY3Rpb24gJSMwNnggZmFpbGVkIHdpdGggZXJyb3IgJWQg JSN4XG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqcmVxdWVzdCwgcmV0LCBoZWFkZXIp Owo+PiArCj4+IMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4gwqAgfQo+PiDCoCBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5oCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5oCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTUwNDM3ODhlMGFkCj4+IC0tLSAvZGV2L251bGwK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5oCj4+IEBA IC0wLDAgKzEsMjE1IEBACj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCj4+ ICsvKgo+PiArICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KPj4gKyAqLwo+ PiArCj4+ICsjaWZuZGVmIF9fSU5URUxfR1VDX0FCSV9IX18KPj4gKyNkZWZpbmUgX19JTlRFTF9H VUNfQUJJX0hfXwo+PiArCj4+ICsvKioKPj4gKyAqIERPQzogR3VDIE1NSU8gYmFzZWQgY29tbXVu aWNhdGlvbgo+PiArICoKPj4gKyAqIFRoZSBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24gYmV0d2Vl biBIb3N0IGFuZCBHdUMgcmVsaWVzIG9uIHNwZWNpYWwKPj4gKyAqIGhhcmR3YXJlIHJlZ2lzdGVy cyB3aGljaCBmb3JtYXQgY291bGQgYmUgZGVmaW5lZCBieSB0aGUgc29mdHdhcmUKPj4gKyAqIChz byBjYWxsZWQgc2NyYXRjaCByZWdpc3RlcnMpLgo+PiArICoKPj4gKyAqIEVhY2ggTU1JTyBiYXNl ZCBtZXNzYWdlLCBib3RoIEhvc3QgdG8gR3VDIChIMkcpIGFuZCBHdUMgdG8gSG9zdCAoRzJIKQo+ PiArICogbWVzc2FnZXMsIHdoaWNoIG1heGltdW0gbGVuZ3RoIGRlcGVuZHMgb24gbnVtYmVyIG9m IGF2YWlsYWJsZSBzY3JhdGNoCj4+ICsgKiByZWdpc3RlcnMsIGlzIGRpcmVjdGx5IHdyaXR0ZW4g aW50byB0aG9zZSBzY3JhdGNoIHJlZ2lzdGVycy4KPj4gKyAqCj4+ICsgKiBGb3IgR2VuOSssIHRo ZXJlIGFyZSAxNiBzb2Z0d2FyZSBzY3JhdGNoIHJlZ2lzdGVycyAweEMxODAtMHhDMUI4LAo+PiAr ICogYnV0IG5vIEgyRyBjb21tYW5kIHRha2VzIG1vcmUgdGhhbiA4IHBhcmFtZXRlcnMgYW5kIHRo ZSBHdUMgZmlybXdhcmUKPj4gKyAqIGl0c2VsZiB1c2VzIGFuIDgtZWxlbWVudCBhcnJheSB0byBz dG9yZSB0aGUgSDJHIG1lc3NhZ2UuCj4+ICsgKgo+PiArICogRm9yIEdlbjExKywgdGhlcmUgYXJl IGFkZGl0aW9uYWwgNCByZWdpc3RlcnMgMHgxOTAyNDAtMHgxOTAyNEMsIHdoaWNoCj4+ICsgKiBh cmUsIHJlZ2FyZGxlc3Mgb24gbG93ZXIgY291bnQsIHByZWZmZXJlZCBvdmVyIGxlZ2FjeSBvbmVz Lgo+PiArICoKPj4gKyAqIFRoZSBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24gaXMgbWFpbmx5IHVz ZWQgZHVyaW5nIGRyaXZlcgo+PiBpbml0aWFsaXphdGlvbgo+PiArICogcGhhc2UgdG8gc2V0dXAg dGhlIENUQiBiYXNlZCBjb21tdW5pY2F0aW9uIHRoYXQgd2lsbCBiZSB1c2VkCj4+IGFmdGVyd2Fy ZHMuCj4+ICsgKgo+PiArICogRGV0YWlscyBvZiB0aGUgbWVzc2FnZXMgZm9ybWF0cyBkZXBlbmQg b24gR3VDIGZpcm13YXJlIHZlcnNpb24KPj4gYmVpbmcgdXNlZAo+PiArICogYnkgdGhlIGhvc3Qg ZHJpdmVyLiBEb2N1bWVudGVkIGhlcmUgbWVzc2FnZXMgYXJlIGZvciBHdUMgNDUuMCBhbmQKPj4g bmV3ZXIuCj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSBHVUNfTUFYX01NSU9fTVNHX0xFTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgOAo+IAo+IEFyZSB3ZSBvayB3aXRoIG5vdCBoYXZpbmcgYW4gSU5U RUxfIHByZWZpeCB0byBhbGwgdGhlIGRlZmluZXM/IEknbSBub3QKPiBjb21wbGFpbmluZywgd2Ug dXN1YWxseSBzdGljayB3aXRoIHRoYXQgcHJlZml4IGJ1dCBJJ20gbm90IHN1cmUgaWYgaXQgaXMK PiBhbiBpcm9uIHJ1bGUgb3Igbm90LgoKZXhpc3RpbmcgZGVmaW5lcyBpbiBpbnRlbF9ndWNfZndp Zi5oIGhhdmUgIkdVQyIgYW5kICJJTlRFTF9HVUMiIChvcgpub25lKSBwcmVmaXhlcyBhbmQgYXQg dGhlIHNhbWUgdGltZSBhbG1vc3QgYWxsIHN0cnVjdHMgaGF2ZSAiZ3VjIgpwcmVmaXgsIHNvIHRo ZSBiZXN0IG9wdGlvbiBJTUhPIGlzIHRvIHN0aWNrIHdpdGgganVzdCBndWMvR1VDIHByZWZpeC4K Cj4gCj4+ICsKPj4gKy8qKgo+PiArICogRE9DOiBHdUMgTU1JTyBtZXNzYWdlIGZvcm1hdAo+PiAr ICoKPj4gKyAqIEJpdHMgb2YgdGhlIGZpcnN0IHNjcmF0Y2ggcmVnaXN0ZXIgYXJlIHRyZWF0ZWQg YXMgYSBtZXNzYWdlIGhlYWRlciwKPj4gKyAqIGFuZCBvdGhlciByZWdpc3RlcnMgdmFsdWVzIGFy ZSB1c2VkIHRvIGhvbGQgbWVzc2FnZSBwYXlsb2FkIChkYXRhKTo6Cj4+ICsgKgo+PiArICrCoMKg wqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Kwo+PiArICrCoMKgwqDCoMKgIHzCoCBTQ1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgwqDCoMKgwqAgfCAwIHwgMzE6 MjggfCBtZXNzYWdlIE9SSUdJTi9UWVBFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBtZXNzYWdlIE1B R0lDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfAo+PiArICrCoMKgwqDCoMKgIHzCoMKgIHzCoCAyMzowIHwgbWVzc2FnZSBEQVRBMCAoZGVw ZW5kcyBvbiBUWVBFKcKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCArLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4g KyAqwqDCoMKgwqDCoCB8IDEgfMKgIDMxOjAgfCBtZXNzYWdlIERBVEExIChkZXBlbmRzIG9uIFRZ UEUpwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHwuLi58wqDCoMKgwqDC oMKgIHwgbWVzc2FnZSBEQVRBMiAoZGVwZW5kcyBvbiBUWVBFKcKgwqDCoMKgwqDCoMKgwqDCoMKg IHwKPj4gKyAqwqDCoMKgwqDCoCB8IG4gfMKgwqDCoMKgwqDCoCB8IG1lc3NhZ2UgREFUQTMgKGRl cGVuZHMgb24gVFlQRSnCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+ ICsgKgo+PiArICogV2hlcmU6Cj4+ICsgKsKgIC0gKipUWVBFKiogaXMgYSA0YiBtZXNzYWdlIHR5 cGUgaWRlbnRpZmllci4KPj4gKyAqwqAgLSAqKk1BR0lDKiogaXMgYSA0YiBtZXNzYWdlIHNlcXVl bmNlIG51bWJlci4KPj4gKyAqwqDCoMKgIFRoZSBzYW1lIHNlcXVlbmNlIG51bWJlciBtdXN0IGJl IGluY2x1ZGVkIGluIGFsbCByZWxhdGVkIG1lc3NhZ2VzLgo+PiArICrCoMKgwqAgVGhpcyBmaWVs ZCBpcyB1c2VkIGZvciB0cmFja2luZyBhbmQgZGVidWcgcHVycG9zZXMuCj4gCj4gSSBkb24ndCB0 aGluayAibWFnaWMiIGlzIGEgY2xlYXIgZW5vdWdoIG5hbWUgZm9yIHRoZSByb2xlIG9mIHRoZSBm aWVsZC4KPiAiUmVxdWVzdCBpZCIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCB3b3VsZCBiZSBtb3Jl IGFwcHJvcHJpYXRlIElNTy4KCndlIGFyZSBmb2xsb3dpbmcgbmFtaW5nIGZyb20gR3VDIHNwZWMK Cj4gCj4+ICsgKsKgIC0gKipEQVRBMC4uMyoqIGJpdHMgcmVwcmVzZW50cyBtZXNzYWdlIHBheWxv YWQuCj4+ICsgKsKgwqDCoCBEZWZpbml0aW9ucyBvZiB0aGVzZSBiaXRzIGRlcGVuZHMgb24gbWVz c2FnZSAqKlRZUEUqKi4KPj4gKyAqCj4+ICsgKiBUaGUgTVNCIG9mIHRoZSBoZWFkZXIgYW5kICoq VFlQRSoqIGluZGljYXRlcyBvcmlnaW4gb2YgdGhlIG1lc3NhZ2U6Cj4+ICsgKsKgIC0gMCAtIG1l c3NhZ2UgZnJvbSB0aGUgSG9zdAo+PiArICrCoCAtIDEgLSBtZXNzYWdlIGZyb20gdGhlIEd1Qwo+ PiArICoKPj4gKyAqIEN1cnJlbnRseSBzdXBwb3J0ZWQgbWVzc2FnZSB0eXBlcyBhcmU6Cj4+ICsg KsKgIC0gMHgwIC0gKipSRVFVRVNUKiogLSByZXByZXNlbnRzIEhvc3QgcmVxdWVzdCBtZXNzYWdl IHRvIHRoZSBHdUMKPj4gKyAqwqAgLSAweEYgLSAqKlNVQ0NFU1MgUkVTUE9OU0UqKiAtIEd1QyBy ZXBseSBmb3IgdGhlIGVhcmxpZXIgcmVxdWVzdAo+PiArICrCoCAtIDB4RSAtICoqRVJST1IgUkVT UE9OU0UqKiAtIEd1QyBmYWlsdXJlIHJlcGx5IGZvciB0aGUgZWFybGllcgo+PiByZXF1ZXN0Cj4+ ICsgKsKgIC0gMHhCIC0gKipCVVNZKiogLSBHdUMgd2lsbCBiZSBwcm9jZXNzaW5nIHJlcXVlc3Qg Zm9yIHRoZSBsb25nZXIKPj4gdGltZQo+PiArICovCj4+ICsKPj4gKyNkZWZpbmUgR1VDX01NSU9f TVNHX09SSUdJTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4MSA8PCAzMSkKPj4gKyNkZWZpbmXC oMKgIEdVQ19NTUlPX01TR19PUklHSU5fSE9TVMKgwqDCoMKgwqDCoMKgIDB1Cj4+ICsjZGVmaW5l wqDCoCBHVUNfTU1JT19NU0dfT1JJR0lOX0dVQ8KgwqDCoMKgwqDCoMKgIDF1Cj4+ICsKPj4gKyNk ZWZpbmUgR1VDX01NSU9fTVNHX1RZUEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgweEYgPDwgMjgp Cj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1JT19NU0dfVFlQRV9SRVFVRVNUwqDCoMKgwqDCoMKgwqAg MHgwCj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1JT19NU0dfVFlQRV9SRVNQT05TRcKgwqDCoMKgwqDC oMKgIDB4Rgo+PiArI2RlZmluZcKgwqAgR1VDX01NSU9fTVNHX1RZUEVfRVJST1LCoMKgwqDCoMKg wqDCoCAweEUKPj4gKyNkZWZpbmXCoMKgIEdVQ19NTUlPX01TR19UWVBFX0JVU1nCoMKgwqDCoMKg wqDCoCAweEIKPj4gKwo+PiArI2RlZmluZSBHVUNfTU1JT19NU0dfTUFHSUPCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgweEYgPDwgMjQpCj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1JT19NU0dfTUFHSUNf REVGQVVMVMKgwqDCoMKgwqDCoMKgIDB1Cj4+ICsKPj4gKy8qKgo+PiArICogRE9DOiBHdUMgTU1J TyBIMkcgUkVRVUVTVAo+PiArICoKPj4gKyAqIFRoZSBNTUlPIEgyRyBSRVFVRVNUIG1lc3NhZ2Ug aXMgdXNlZCBieSB0aGUgSG9zdCB0byByZXF1ZXN0IHNvbWUKPj4gYWN0aW9uCj4+ICsgKiB0byBi ZSBwZXJmb3JtZWQgYnkgdGhlIEd1Qzo6Cj4+ICsgKgo+PiArICrCoMKgwqDCoMKgICs9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+PiArICrC oMKgwqDCoMKgIHzCoCBTQ1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ ICsgKsKgwqDCoMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0rCj4+ICsgKsKgwqDCoMKgwqAgfCAwIHwgMzE6MjggfCBtZXNzYWdlIFRZ UEUgPSAweDAgPSBSRVFVRVNUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKg wqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHzC oMKgIHwgMjM6MTYgfCByZXF1ZXN0IFNVQkNPREUgKGRlcGVuZHMgb24gQUNUSU9OKcKgwqDCoMKg wqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgfMKgwqAgfMKgIDE1OjAgfCByZXF1ZXN0IEFDVElPTiBj b2RlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrC oMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+PiArICrCoMKgwqDCoMKgIHwgMSB8wqAgMzE6MCB8IHJlcXVlc3QgREFUQTEg KGRlcGVuZHMgb24gQUNUSU9OL1NVQkNPREUpIHwKPj4gKyAqwqDCoMKgwqDCoCB8Li4ufMKgwqDC oMKgwqDCoCB8IHJlcXVlc3QgREFUQTIgKGRlcGVuZHMgb24gQUNUSU9OL1NVQkNPREUpIHwKPj4g KyAqwqDCoMKgwqDCoCB8IG4gfMKgIDMxOjAgfCByZXF1ZXN0IERBVEEzIChkZXBlbmRzIG9uIEFD VElPTi9TVUJDT0RFKSB8Cj4+ICsgKsKgwqDCoMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+ICsgKgo+PiArICogV2hlcmU6Cj4+ ICsgKsKgIC0gKipUWVBFKiogbXVzdCBiZSBzZXQgdG8gdmFsdWUgMHgwLgo+PiArICrCoCAtICoq TUFHSUMqKiBtZXNzYWdlIHNlcXVlbmNlIG51bWJlciBpcyBnZW5lcmF0ZWQgYnkgdGhlIGhvc3Qu Cj4+ICsgKsKgIC0gKipBQ1RJT04qKiByZXByZXNlbnRzIDE2YiByZXF1ZXN0IGFjdGlvbiBjb2Rl IHRoYXQgZGVmaW5lcyBib3RoCj4+ICsgKsKgwqDCoCBwdXJwb3NlIG9mIHRoZSByZXF1ZXN0IGFu ZCBmb3JtYXQgb2YgdGhlIHBhc3NlZCBwYXlsb2FkIGRhdGEuCj4+ICsgKsKgwqDCoCBMaXN0IG9m IHN1cHBvcnRlZCBjb2RlcyBkZXBlbmRzIG9uIEd1QyB2ZXJzaW9uIGFuZCBwbGFmb3JtLgo+PiAr ICrCoMKgwqAgQWN0aW9uIGNvZGUgY2FuJ3QgYmUgemVyby4KPj4gKyAqwqAgLSAqKlNVQkNPREUq KiBpcyBvcHRpb25hbCA4YiBkYXRhIHJlbGF0ZWQgdG8gdGhlICoqQUNUSU9OKiouCj4+ICsgKsKg wqDCoCBNQlogaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBieSBnaXZlbiAqKkFDVElPTioqLgo+ PiArICrCoCAtICoqREFUQTEuLjMqKiBhcmUgb3B0aW9uYWwgMzJiIHBheWxvYWQgZHdvcmRzIHJl bGF0ZWQgdG8KPj4gKipBQ1RJT04qKi4KPj4gKyAqwqDCoMKgIEZvcm1hdCBvZiBlYWNoIGR3b3Jk IGlzIGRlZmluZWQgYnkgc3BlY2lmaWMgKipBQ1RJT04qKi4KPj4gKyAqLwo+PiArCj4+ICsjZGVm aW5lIEdVQ19NTUlPX1JFUVVFU1RfU1VCQ09ERcKgwqDCoMKgwqDCoMKgICgweEZGIDw8IDE2KQo+ PiArI2RlZmluZSBHVUNfTU1JT19SRVFVRVNUX0FDVElPTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KDB4RkZGRiA8PCAwKQo+PiArI2RlZmluZcKgwqAgR1VDX0FDVElPTl9JTlZBTElEwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAweDAwMDAKPj4gKyNkZWZpbmXCoMKgIEdVQ19BQ1RJT05fUkVHSVNURVJf Q1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA1Cj4+ICsjZGVmaW5lwqDCoCBHVUNfQUNUSU9OX0RFUkVH SVNURVJfQ1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA2Cj4gCj4gVGhlc2UgYXJlIG5vdyBkZWZpbmVk IHR3aWNlIChvbmNlIGhlcmUgYW5kIG9uY2UgaW4gdGhlIGVudW0pLiBXZSBzaG91bGQKPiBwaWNr IG9uZSBmb3IgY29uc2lzdGVuY3kuCgp3ZSBjYW4gZHJvcCBvbGQgb25lcyBmcm9tIGludGVsX2d1 Y19md2lmLmgKCj4gCj4+ICsKPj4gKy8qKgo+PiArICogRE9DOiBHdUMgTU1JTyBHMkggU1VDQ0VT UyBSRVNQT05TRQo+PiArICoKPj4gKyAqIFRoZSBNTUlPIEcySCBTVUNDRVNTIFJFU1BPTlNFIG1l c3NhZ2UgaXMgdXNlZCBieSB0aGUgR3VDIHRvIHJlcGx5IHRvCj4+ICsgKiB0aGUgZWFybGllciBI MkcgcmVxdWVzdCBtZXNzYWdlLiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBpZiBubyBlcnJvcnMKPj4g KyAqIHdlcmUgZW5jb3VudGVyZWQgYnkgdGhlIEd1QyBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUg cmVxdWVzdDo6Cj4+ICsgKgo+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+PiArICrCoMKgwqDCoMKgIHzCoCBT Q1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAg Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0r Cj4+ICsgKsKgwqDCoMKgwqAgfCAwIHwgMzE6MjggfCBtZXNzYWdlIFRZUEUgPSAweEYgPSBTVUND RVNTIFJFU1BPTlNFwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBt ZXNzYWdlIE1BR0lDwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHzCoMKgIHzCoCAyMzowIHwgcmVzcG9uc2Ug REFUQTAgKGRlcGVuZHMgb24gQUNUSU9OL1NVQkNPREUpfAo+PiArICrCoMKgwqDCoMKgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiAr ICrCoMKgwqDCoMKgIHwgMSB8wqAgMzE6MCB8IHJlc3BvbnNlIERBVEExIChkZXBlbmRzIG9uIEFD VElPTi9TVUJDT0RFKXwKPj4gKyAqwqDCoMKgwqDCoCB8Li4ufMKgwqDCoMKgwqDCoCB8IHJlc3Bv bnNlIERBVEEyIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKXwKPj4gKyAqwqDCoMKgwqDCoCB8 IG4gfMKgIDMxOjAgfCByZXNwb25zZSBEQVRBMyAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSl8 Cj4+ICsgKsKgwqDCoMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0rCj4+ICsgKgo+PiArICogV2hlcmU6Cj4+ICsgKsKgIC0gKipUWVBF KiogbXVzdCBiZSBzZXQgdG8gdmFsdWUgMHhGLgo+PiArICrCoCAtICoqTUFHSUMqKiBtdXN0IG1h dGNoIHZhbHVlIHVzZWQgYnkgdGhlIGhvc3QgaW4gKipSRVFVRVNUKioKPj4gbWVzc2FnZS4KPj4g KyAqwqAgLSAqKkRBVEEqKiBpcyBvcHRpb25hbCBwYXlsb2FkIGRhdGEgcmVsYXRlZCB0byAqKkFD VElPTioqLgo+PiArICrCoMKgwqAgRm9ybWF0IGlzIGRlZmluZWQgYnkgZWFjaCAqKkFDVElPTioq IHNlcGFyYXRlbHkuCj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSBHVUNfTU1JT19SRVNQT05TRV9E QVRBMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4RkZGRkZGIDw8IDApCj4+ICsKPj4gKy8qKgo+ PiArICogRE9DOiBHdUMgTU1JTyBHMkggRVJST1IgUkVTUE9OU0UKPj4gKyAqCj4+ICsgKiBUaGUg TU1JTyBHMkggRVJST1IgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5IHRoZSBHdUMgdG8gcmVw bHkgdG8KPj4gKyAqIHRoZSBlYXJsaWVyIEgyRyByZXF1ZXN0IG1lc3NhZ2UuIFRoaXMgbWVzc2Fn ZSBpcyB1c2VkIGlmIHNvbWUgZXJyb3JzCj4+ICsgKiB3ZXJlIGVuY291bnRlcmVkIGJ5IHRoZSBH dUMgZHVyaW5nIHByb2Nlc3Npbmcgb2YgdGhlIHJlcXVlc3Q6Ogo+PiArICoKPj4gKyAqwqDCoMKg wqDCoCArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSsKPj4gKyAqwqDCoMKgwqDCoCB8wqAgU0NSQVRDSMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+PiArICrCoMKgwqDCoMKgIHwgMCB8IDMxOjI4 IHwgbWVzc2FnZSBUWVBFID0gMHhFID0gRVJST1IgUkVTUE9OU0XCoMKgwqDCoMKgwqAgfAo+PiAr ICrCoMKgwqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDC oMKgIHzCoMKgIHwgMjM6MTYgfCByZXNlcnZlZCBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCB8wqDC oCB8wqAgMTU6MCB8IHJlc3BvbnNlIFNUQVRVUyBmYWlsdXJlIGNvZGXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKsKgwqDCoMKgwqAgfCAxIHzCoCAz MTowIHwgcmVzZXJ2ZWQgTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgfC4uLnzCoMKgwqDCoMKgwqAg fCByZXNlcnZlZCBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCB8IG4gfMKgIDMxOjAgfCByZXNlcnZl ZCBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4gKyAqCj4+ICsgKiBXaGVyZToKPj4gKyAqwqAg LSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAweEUuCj4+ICsgKsKgIC0gKipNQUdJQyoq IG11c3QgbWF0Y2ggdmFsdWUgdXNlZCBieSB0aGUgaG9zdCBpbiAqKlJFUVVFU1QqKgo+PiBtZXNz YWdlLgo+PiArICrCoCAtICoqU1RBVFVTKiogcmVwcmVzZW50cyBub24temVybyBmYWlsdXJlIGNv ZGUuCj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSBHVUNfTU1JT19FUlJPUl9TVEFUVVPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICgweEZGRkYgPDwgMCkKPj4gKyNkZWZpbmXCoMKgIEdVQ19TVEFUVVNf VU5LTk9XTl9BQ1RJT07CoMKgwqDCoMKgwqDCoCAweDMwCj4+ICsjZGVmaW5lwqDCoCBHVUNfU1RB VFVTX0lOVkFMSURfUEFSQU1TwqDCoMKgwqDCoMKgwqAgMHg2MAo+PiArI2RlZmluZcKgwqAgR1VD X1NUQVRVU19JTlZBTElEX0FERFLCoMKgwqDCoMKgwqDCoCAweDgwCj4+ICsjZGVmaW5lwqDCoCBH VUNfU1RBVFVTX0NUWF9OT1RfUkVHSVNURVJFRMKgwqDCoMKgwqDCoMKgIDB4MTAwCj4+ICsjZGVm aW5lwqDCoCBHVUNfU1RBVFVTX05PX0xPQ0FMX01FTU9SWcKgwqDCoMKgwqDCoMKgIDB4MjAwCj4+ ICsjZGVmaW5lwqDCoCBHVUNfU1RBVFVTX05PX1ZJUlRVQUxJWkFUSU9OwqDCoMKgwqDCoMKgwqAg MHgzMDAKPj4gKyNkZWZpbmXCoMKgIEdVQ19TVEFUVVNfQ1RCX0ZVTEzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MzAxCj4+ICsjZGVmaW5lwqDCoCBHVUNfU1RBVFVTX1VOQVVUSE9SSVpFRF9SRVFV RVNUwqDCoMKgIDB4MzAyCj4+ICsjZGVmaW5lwqDCoCBHVUNfU1RBVFVTX0dFTkVSSUNfRkFJTMKg wqDCoMKgwqDCoMKgIDB4RjAwMAo+PiArCj4+ICsvKioKPj4gKyAqIERPQzogTU1JTyBHMkggQlVT WSBSRVNQT05TRQo+PiArICoKPj4gKyAqIFRoZSBNTUlPIEcySCBCVVNZIFJFU1BPTlNFIG1lc3Nh Z2UgaXMgdXNlZCBieSB0aGUgR3VDIHRvIHJlcGx5IHRvCj4+ICsgKiB0aGUgZWFybGllciBIMkcg cmVxdWVzdCBtZXNzYWdlLiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBpZiBwcm9jZXNzaW5nCj4+ICsg KiBvZiB0aGUgcmVxdWVzdCB3aWxsIHRha2UgbG9uZ2VyIHRpbWUgYW5kIGZpbmFsIFNVQ0NFU1Mv RVJST1IgcmVzcG9uc2UKPj4gKyAqIG1lc3NhZ2Ugd2lsbCBiZSBkZWxpdmVyZWQgbGF0ZXI6Ogo+ PiArICoKPj4gKyAqwqDCoMKgwqDCoCArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSsKPj4gKyAqwqDCoMKgwqDCoCB8wqAgU0NSQVRDSMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+PiArICrCoMKg wqDCoMKgIHwgMCB8IDMxOjI4IHwgbWVzc2FnZSBUWVBFID0gMHhCID0gQlVTWSBSRVNQT05TRcKg wqDCoMKgwqDCoMKgIHwKPj4gKyAqwqDCoMKgwqDCoCB8wqDCoCB8IDI3OjI0IHwgbWVzc2FnZSBN QUdJQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4gKyAqwqDCoMKgwqDCoCB8wqDCoCB8wqAgMjM6MCB8IHJlc2VydmVkIE1CWsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICrCoMKgwqDCoMKgIHwgMSB8wqAgMzE6MCB8IHJlc2VydmVk IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfAo+PiArICrCoMKgwqDCoMKgIHwuLi58wqDCoMKgwqDCoMKgIHwgcmVzZXJ2ZWQgTUJa wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+ICsgKsKgwqDCoMKgwqAgfCBuIHzCoCAzMTowIHwgcmVzZXJ2ZWQgTUJawqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsg KsKgwqDCoMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0rCj4+ICsgKgo+PiArICogV2hlcmU6Cj4+ICsgKsKgIC0gKipUWVBFKiogbXVz dCBiZSBzZXQgdG8gdmFsdWUgMHhCLgo+PiArICrCoCAtICoqTUFHSUMqKiBtdXN0IG1hdGNoIHZh bHVlIHVzZWQgYnkgdGhlIGhvc3QgaW4gKipSRVFVRVNUKioKPj4gbWVzc2FnZS4KPj4gKyAqwqAg LSBhbGwgb3RoZXIgYml0cyBhcmUgcmVzZXJ2ZWQgYXMgTUJaLgo+PiArICovCj4+ICsKPj4gKyNl bmRpZiAvKiBfX0lOVEVMX0dVQ19BQklfSF9fICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPj4gaW5kZXggZDQ0MDYxMDMzZjIzLi5lNjZjYmYxYmUz MjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19h ZHMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMK Pj4gQEAgLTEwLDExICsxMCw1MiBAQAo+PiDCoCDCoCAvKgo+PiDCoMKgICogVGhlIEFkZGl0aW9u YWwgRGF0YSBTdHJ1Y3QgKEFEUykgaGFzIHBvaW50ZXJzIGZvciBkaWZmZXJlbnQKPj4gYnVmZmVy cyB1c2VkIGJ5Cj4+IC0gKiB0aGUgR3VDLiBPbmUgc2luZ2xlIGdlbSBvYmplY3QgY29udGFpbnMg dGhlIEFEUyBzdHJ1Y3QgaXRzZWxmCj4+IChndWNfYWRzKSwgdGhlCj4+IC0gKiBzY2hlZHVsaW5n IHBvbGljaWVzIChndWNfcG9saWNpZXMpLCBhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEKPj4gY29s bGVjdGlvbiBvZgo+PiAtICogcmVnaXN0ZXIgc2V0cyAoZ3VjX21taW9fcmVnX3N0YXRlKSBhbmQg c29tZSBleHRyYSBwYWdlcyBmb3IgdGhlCj4+IEd1QyB0byBzYXZlCj4+IC0gKiBpdHMgaW50ZXJu YWwgc3RhdGUgZm9yIHNsZWVwLgo+PiArICogdGhlIEd1Qy4gT25lIHNpbmdsZSBnZW0gb2JqZWN0 IGNvbnRhaW5zIHRoZSBBRFMgc3RydWN0IGl0c2VsZgo+PiAoZ3VjX2FkcykgYW5kCj4+ICsgKiBh bGwgdGhlIGV4dHJhIGJ1ZmZlcnMgaW5kaXJlY3RseSBsaW5rZWQgdmlhIHRoZSBBRFMgc3RydWN0 J3MgZW50aXJlcy4KPj4gKyAqCj4+ICsgKiBMYXlvdXQgb2YgdGhlIEFEUyBibG9iIGFsbG9jYXRl ZCBmb3IgdGhlIEd1QzoKPj4gKyAqCj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPD09IGJhc2UKPj4gKyAqwqDCoMKgwqDCoCB8IGd1Y19h ZHPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfAo+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCj4+ICsgKsKgwqDCoMKgwqAgfCBndWNfcG9saWNpZXPCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqDCoMKgwqDCoCB8 IGd1Y19ndF9zeXN0ZW1faW5mb8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwKPj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwo+PiArICrCoMKgwqDCoMKgIHwgZ3VjX2NsaWVudHNfaW5mb8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqDCoMKgwqDCoCB8IGd1Y19jdF9w b29sX2VudHJ5W3NpemVdwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ICsgKsKgwqDC oMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqwqDC oMKgwqDCoCB8IHBhZGRpbmfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSA0SyBhbGlnbmVkCj4+ICsgKsKgwqDCoMKgwqAg fCBwcml2YXRlIGRhdGHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8Cj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKPj4gKyAqwqDCoMKgwqDCoCB8IHBhZGRpbmfCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+PiArICrCoMKgwqDC oMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSA0SyBhbGln bmVkCj4+IMKgwqAgKi8KPiAKPiBJIHRoaW5rIGl0IHdlIGNvdWxkIGV4cGFuZCB0aGUgY29tbWVu dCAob3IgYWRkIGEgbmV3IG9uZSkgdG8gbWFrZSBjbGVhcgo+IHRoYXQgdGhlIHByaXZhdGUgZGF0 YSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIF9fZ3VjX2Fkc19ibG9iIHRvIGtlZXAKPiB0aGluZ3Mg c2ltcGxlIHNpbmNlIGl0IGlzIHZhcmlhYmxlIGluIHNpemUsIGJ1dCBpdCBpcyBzdGlsbCBwYXJ0 IG9mIHRoZQo+IGFkc19ibG9icGFzc2VzIHRvIEd1Qy4KPiAKPj4gK3N0cnVjdCBfX2d1Y19hZHNf YmxvYiB7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19hZHMgYWRzOwo+PiArwqDCoMKgIHN0cnVjdCBn dWNfcG9saWNpZXMgcG9saWNpZXM7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5m byBzeXN0ZW1faW5mbzsKPj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2NsaWVudHNfaW5mbyBjbGllbnRz X2luZm87Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19jdF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VDX0NU X1BPT0xfU0laRV07Cj4+ICt9IF9fcGFja2VkOwo+PiArCj4+ICtzdGF0aWMgdTMyIGd1Y19hZHNf cHJpdmF0ZV9kYXRhX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiArewo+PiArwqDCoMKg IHJldHVybiBQQUdFX0FMSUdOKGd1Yy0+ZncucHJpdmF0ZV9kYXRhX3NpemUpOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4+ICt7Cj4+ICvCoMKgwqAgcmV0dXJuIFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVj dCBfX2d1Y19hZHNfYmxvYikpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdTMyIGd1Y19hZHNfYmxv Yl9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gK3sKPj4gK8KgwqDCoCByZXR1cm4gZ3Vj X2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1YykgKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z3VjX2Fkc19wcml2YXRlX2RhdGFfc2l6ZShndWMpOwo+PiArfQo+PiDCoCDCoCBzdGF0aWMgdm9p ZCBndWNfcG9saWN5X2luaXQoc3RydWN0IGd1Y19wb2xpY3kgKnBvbGljeSkKPj4gwqAgewo+PiBA QCAtNDgsMjMgKzg5LDMzIEBAIHN0YXRpYyB2b2lkIGd1Y19jdF9wb29sX2VudHJpZXNfaW5pdChz dHJ1Y3QKPj4gZ3VjX2N0X3Bvb2xfZW50cnkgKnBvb2wsIHUzMiBudW0pCj4+IMKgwqDCoMKgwqAg bWVtc2V0KHBvb2wsIDAsIG51bSAqIHNpemVvZigqcG9vbCkpOwo+PiDCoCB9Cj4+IMKgICtzdGF0 aWMgdm9pZCBndWNfbWFwcGluZ190YWJsZV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGd1Y19ndF9zeXN0ZW1f aW5mbyAqc3lzdGVtX2luZm8pCj4+ICt7Cj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGksIGo7Cj4+ ICvCoMKgwqAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+PiArwqDCoMKgIGVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+PiArCj4+ICvCoMKgwqAgLyogVGFibGUgbXVzdCBiZSBzZXQg dG8gaW52YWxpZCB2YWx1ZXMgZm9yIGVudHJpZXMgbm90IHVzZWQgKi8KPj4gK8KgwqDCoCBmb3Ig KGkgPSAwOyBpIDwgR1VDX01BWF9FTkdJTkVfQ0xBU1NFUzsgKytpKQo+PiArwqDCoMKgwqDCoMKg wqAgZm9yIChqID0gMDsgaiA8IEdVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTUzsgKytqKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzeXN0ZW1faW5mby0+bWFwcGluZ190YWJsZVtpXVtqXSA9 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01BWF9JTlNUQU5DRVNfUEVS X0NMQVNTOwo+PiArCj4+ICvCoMKgwqAgZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7 Cj4+ICvCoMKgwqDCoMKgwqDCoCB1OCBndWNfY2xhc3MgPSBlbmdpbmUtPmNsYXNzOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoCBzeXN0ZW1faW5mby0+bWFwcGluZ190YWJsZVtndWNfY2xhc3NdW2Vu Z2luZS0+aW5zdGFuY2VdCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gZW5naW5lLT5pbnN0 YW5jZTsKPj4gK8KgwqDCoCB9Cj4+ICt9Cj4+ICsKPj4gwqAgLyoKPj4gwqDCoCAqIFRoZSBmaXJz dCA4MCBkd29yZHMgb2YgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQsIGNvbnRhaW5pbmcgdGhl Cj4+IMKgwqAgKiBleGVjbGlzdHMgYW5kIHBwZ3R0IHJlZ2lzdGVycy4KPj4gwqDCoCAqLwo+PiDC oCAjZGVmaW5lIExSX0hXX0NPTlRFWFRfU0laRcKgwqDCoCAoODAgKiBzaXplb2YodTMyKSkKPj4g wqAgLS8qIFRoZSBhZHMgb2JqIGluY2x1ZGVzIHRoZSBzdHJ1Y3QgaXRzZWxmIGFuZCBidWZmZXJz IHBhc3NlZCB0byBHdUMgKi8KPj4gLXN0cnVjdCBfX2d1Y19hZHNfYmxvYiB7Cj4+IC3CoMKgwqAg c3RydWN0IGd1Y19hZHMgYWRzOwo+PiAtwqDCoMKgIHN0cnVjdCBndWNfcG9saWNpZXMgcG9saWNp ZXM7Cj4+IC3CoMKgwqAgc3RydWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSByZWdfc3RhdGU7Cj4+IC3C oMKgwqAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyBzeXN0ZW1faW5mbzsKPj4gLcKgwqDCoCBz dHJ1Y3QgZ3VjX2NsaWVudHNfaW5mbyBjbGllbnRzX2luZm87Cj4+IC3CoMKgwqAgc3RydWN0IGd1 Y19jdF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VDX0NUX1BPT0xfU0laRV07Cj4+IC3CoMKgwqAgdTgg cmVnX3N0YXRlX2J1ZmZlcltHVUNfUzNfU0FWRV9TUEFDRV9QQUdFUyAqIFBBR0VfU0laRV07Cj4+ IC19IF9fcGFja2VkOwo+PiAtCj4+IMKgIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBpbnRlbF9ndCAq Z3QgPSBndWNfdG9fZ3QoZ3VjKTsKPj4gQEAgLTEwNyw2ICsxNTgsMTYgQEAgc3RhdGljIHZvaWQg X19ndWNfYWRzX2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoMKgwqDCoMKgIGJsb2It PnN5c3RlbV9pbmZvLnZlYm94X2VuYWJsZV9tYXNrID0gVkVCT1hfTUFTSyhndCk7Cj4+IMKgwqDC oMKgwqAgYmxvYi0+c3lzdGVtX2luZm8udmRib3hfc2ZjX3N1cHBvcnRfbWFzayA9Cj4+IGd0LT5p bmZvLnZkYm94X3NmY19hY2Nlc3M7Cj4+IMKgICvCoMKgwqAgaWYgKElOVEVMX0dFTihndC0+aTkx NSkgPj0gMTIgJiYgIUlTX0RHRlgoZ3QtPmk5MTUpKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIg ZGlzdGRicmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTjEyX0RJU1RfREJTX1BP UFVMQVRFRCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBibG9iLT5zeXN0ZW1faW5mby5udW1fb2ZfZG9v cmJlbGxzX3Blcl9zcWlkaSA9Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgoZGlzdGRicmVn ID4+IEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJRElfU0hJRlQpICYKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJKSArIDE7Cj4+ICvCoMKgwqAgfQo+ PiArCj4+ICvCoMKgwqAgZ3VjX21hcHBpbmdfdGFibGVfaW5pdChndWNfdG9fZ3QoZ3VjKSwgJmJs b2ItPnN5c3RlbV9pbmZvKTsKPj4gKwo+PiDCoMKgwqDCoMKgIGJhc2UgPSBpbnRlbF9ndWNfZ2d0 dF9vZmZzZXQoZ3VjLCBndWMtPmFkc192bWEpOwo+PiDCoCDCoMKgwqDCoMKgIC8qIENsaWVudHMg aW5mb8KgICovCj4+IEBAIC0xMTgsMTEgKzE3OSwxMiBAQCBzdGF0aWMgdm9pZCBfX2d1Y19hZHNf aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+IMKgIMKgwqDCoMKgwqAgLyogQURTICovCj4+ IMKgwqDCoMKgwqAgYmxvYi0+YWRzLnNjaGVkdWxlcl9wb2xpY2llcyA9IGJhc2UgKyBwdHJfb2Zm c2V0KGJsb2IsIHBvbGljaWVzKTsKPj4gLcKgwqDCoCBibG9iLT5hZHMucmVnX3N0YXRlX2J1ZmZl ciA9IGJhc2UgKyBwdHJfb2Zmc2V0KGJsb2IsCj4+IHJlZ19zdGF0ZV9idWZmZXIpOwo+PiAtwqDC oMKgIGJsb2ItPmFkcy5yZWdfc3RhdGVfYWRkciA9IGJhc2UgKyBwdHJfb2Zmc2V0KGJsb2IsIHJl Z19zdGF0ZSk7Cj4+IMKgwqDCoMKgwqAgYmxvYi0+YWRzLmd0X3N5c3RlbV9pbmZvID0gYmFzZSAr IHB0cl9vZmZzZXQoYmxvYiwgc3lzdGVtX2luZm8pOwo+PiDCoMKgwqDCoMKgIGJsb2ItPmFkcy5j bGllbnRzX2luZm8gPSBiYXNlICsgcHRyX29mZnNldChibG9iLCBjbGllbnRzX2luZm8pOwo+PiDC oCArwqDCoMKgIC8qIFByaXZhdGUgRGF0YSAqLwo+PiArwqDCoMKgIGJsb2ItPmFkcy5wcml2YXRl X2RhdGEgPSBiYXNlICsgZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1Yyk7Cj4+ICsKPj4g wqDCoMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKGd1Yy0+YWRzX3ZtYS0+b2JqKTsK Pj4gwqAgfQo+PiDCoCBAQCAtMTM1LDE0ICsxOTcsMTUgQEAgc3RhdGljIHZvaWQgX19ndWNfYWRz X2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoMKgICovCj4+IMKgIGludCBpbnRlbF9n dWNfYWRzX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+IMKgIHsKPj4gLcKgwqDCoCBj b25zdCB1MzIgc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBfX2d1Y19hZHNfYmxvYikp Owo+PiArwqDCoMKgIHUzMiBzaXplOwo+PiDCoMKgwqDCoMKgIGludCByZXQ7Cj4+IMKgIMKgwqDC oMKgwqAgR0VNX0JVR19PTihndWMtPmFkc192bWEpOwo+PiDCoCArwqDCoMKgIHNpemUgPSBndWNf YWRzX2Jsb2Jfc2l6ZShndWMpOwo+PiArCj4+IMKgwqDCoMKgwqAgcmV0ID0gaW50ZWxfZ3VjX2Fs bG9jYXRlX2FuZF9tYXBfdm1hKGd1Yywgc2l6ZSwgJmd1Yy0+YWRzX3ZtYSwKPj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodm9pZCAqKikmZ3Vj LT5hZHNfYmxvYik7Cj4+IC0KPj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIHJldDsKPj4gwqAgQEAgLTE1Niw2ICsyMTksMTggQEAgdm9pZCBpbnRlbF9n dWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoMKgwqDCoMKgIGk5MTVf dm1hX3VucGluX2FuZF9yZWxlYXNlKCZndWMtPmFkc192bWEsIEk5MTVfVk1BX1JFTEVBU0VfTUFQ KTsKPj4gwqAgfQo+PiDCoCArdm9pZCBndWNfYWRzX3ByaXZhdGVfZGF0YV9yZXNldChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCj4+ICt7Cj4+ICvCoMKgwqAgdTMyIHNpemU7Cj4+ICsKPj4gK8KgwqDC oCBzaXplID0gZ3VjX2Fkc19wcml2YXRlX2RhdGFfc2l6ZShndWMpOwo+PiArwqDCoMKgIGlmICgh c2l6ZSkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gKwo+PiArwqDCoMKgIG1lbXNldCgo dm9pZCAqKWd1Yy0+YWRzX2Jsb2IgKyBndWNfYWRzX3ByaXZhdGVfZGF0YV9vZmZzZXQoZ3VjKSwg MCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemUpOwo+PiArfQo+PiArCj4+IMKgIC8qKgo+ PiDCoMKgICogaW50ZWxfZ3VjX2Fkc19yZXNldCgpIC0gcHJlcGFyZXMgR3VDIEFkZGl0aW9uYWwg RGF0YSBTdHJ1Y3QgZm9yCj4+IHJldXNlCj4+IMKgwqAgKiBAZ3VjOiBpbnRlbF9ndWMgc3RydWN0 Cj4+IEBAIC0xNjgsNSArMjQzLDggQEAgdm9pZCBpbnRlbF9ndWNfYWRzX3Jlc2V0KHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPj4gwqAgewo+PiDCoMKgwqDCoMKgIGlmICghZ3VjLT5hZHNfdm1hKQo+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArCj4+IMKgwqDCoMKgwqAgX19ndWNfYWRz X2luaXQoZ3VjKTsKPj4gKwo+PiArwqDCoMKgIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3Jlc2V0KGd1 Yyk7Cj4+IMKgIH0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19mdy5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3 LmMKPj4gaW5kZXggZDRhODdmNGM5NDIxLi4yMTJkZTBhOTM5YmYgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+IEBAIC03NCw4ICs3NCw5IEBAIHN0 YXRpYyBpbmxpbmUgYm9vbCBndWNfcmVhZHkoc3RydWN0IGludGVsX3VuY29yZQo+PiAqdW5jb3Jl LCB1MzIgKnN0YXR1cykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgICgodmFsICYgR1NfTUlBX0NPUkVf U1RBVEUpICYmICh1a192YWwgPT0KPj4gR1NfVUtFUk5FTF9MQVBJQ19ET05FKSk7Cj4+IMKgIH0K Pj4gwqAgLXN0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlKQo+PiArc3RhdGljIGludCBndWNfd2FpdF91Y29kZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ PiDCoCB7Cj4+ICvCoMKgwqAgc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29y ZTsKPiAKPiBUaGUgZ3Qgc2VlbXMgdG8gYmUgdXNlZCBvbmx5IGZvciBndC0+aTkxNSwgd2h5IG5v dCBqdXN0IHVzZSB1bmNvcmUtPmk5MTU/Cj4gCj4+IMKgwqDCoMKgwqAgdTMyIHN0YXR1czsKPj4g wqDCoMKgwqDCoCBpbnQgcmV0Owo+PiDCoCBAQCAtOTMsMTIgKzk0LDI0IEBAIHN0YXRpYyBpbnQg Z3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVsX3VuY29yZQo+PiAqdW5jb3JlKQo+PiDCoMKgwqDC oMKgIGlmICgoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA9PSBHU19CT09UUk9NX1JTQV9GQUlM RUQpIHsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiR3VDIGZpcm13YXJlIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IC1FTk9FWEVDOwo+PiAtwqDCoMKgIH0KPj4gLQo+PiArwqDCoMKgIH0gZWxzZQo+PiDCoMKgwqDC oMKgIGlmICgoc3RhdHVzICYgR1NfVUtFUk5FTF9NQVNLKSA9PSBHU19VS0VSTkVMX0VYQ0VQVElP Tikgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgZXhjZXB0 aW9uLiBFSVA6ICUjeFxuIiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVs X3VuY29yZV9yZWFkKHVuY29yZSwgU09GVF9TQ1JBVENIKDEzKSkpOwo+PiDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gLUVOWElPOwo+PiArwqDCoMKgIH0gZWxzZQo+PiArwqDCoMKgIGlmIChyZXQp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIGk5MTVfcHJvYmVfZXJyb3IoZ3QtPmk5MTUsICJHdUMgbG9h ZCBmYWlsZWQ6IHN0YXR1cyA9IDB4JTA4WFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0YXR1cyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpOTE1X3Byb2JlX2Vycm9yKGd0 LT5pOTE1LCAiR3VDIHN0YXR1czogUmVzZXQgPSAlZCwgIgo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIkJvb3RST00gPSAweCUwMlgsIFVLZXJuZWwgPSAweCUwMlgsICIKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJNSUEgPSAweCUwMlgsIEF1dGggPSAw eCUwMlhcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoc3RhdHVzID4+ IEdTX1JFU0VUX1NISUZUKSAmIDEsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA+PiBHU19CT09UUk9NX1NISUZULAo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0YXR1cyAmIEdTX1VLRVJORUxfTUFTSykg Pj4gR1NfVUtFUk5FTF9TSElGVCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IChzdGF0dXMgJiBHU19NSUFfTUFTSykgPj4gR1NfTUlBX1NISUZULAo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0YXR1cyAmIEdTX0FVVEhfU1RBVFVTX01BU0spID4+Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEdTX0FVVEhfU1RBVFVTX1NISUZUKTsKPiAKPiBuaXQ6IEkgdGhpbmsgdXNpbmcgdGhlIEZJ RUxEX0dFVCBtYWNybyBoZXJlIGFzIHdlbGwgY291bGQgbWFrZSB0aGluZ3MKPiBjbGVhbmVyCj4g Cj4+IMKgwqDCoMKgwqAgfQo+PiDCoCDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+IEBAIC0xMzks NyArMTUyLDcgQEAgaW50IGludGVsX2d1Y19md191cGxvYWQoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+PiDCoMKgwqDCoMKgIGlmIChyZXQpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsK Pj4gwqAgLcKgwqDCoCByZXQgPSBndWNfd2FpdF91Y29kZSh1bmNvcmUpOwo+PiArwqDCoMKgIHJl dCA9IGd1Y193YWl0X3Vjb2RlKGd0KTsKPj4gwqDCoMKgwqDCoCBpZiAocmV0KQo+PiDCoMKgwqDC oMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX2Z3aWYuaAo+PiBpbmRleCBhNmI3MzNjMTQ2YzkuLjc3ZTQ5ZDUzYmI1YyAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYu aAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCj4+ IEBAIC0yNyw3ICsyNyw3IEBACj4+IMKgICNkZWZpbmUgR1VDX01BWF9FTkdJTkVTX05VTcKgwqDC oMKgwqDCoMKgIChHVUNfVklERU9fRU5HSU5FMiArIDEpCj4+IMKgIMKgICNkZWZpbmUgR1VDX01B WF9FTkdJTkVfQ0xBU1NFU8KgwqDCoMKgwqDCoMKgIDUKPj4gLSNkZWZpbmUgR1VDX01BWF9JTlNU QU5DRVNfUEVSX0NMQVNTwqDCoMKgIDE2Cj4+ICsjZGVmaW5lIEdVQ19NQVhfSU5TVEFOQ0VTX1BF Ul9DTEFTU8KgwqDCoCAzMgo+PiDCoCDCoCAjZGVmaW5lIEdVQ19ET09SQkVMTF9JTlZBTElEwqDC oMKgwqDCoMKgwqAgMjU2Cj4+IMKgIEBAIC02MiwxMiArNjIsNyBAQAo+PiDCoCAjZGVmaW5lIEdV Q19TVEFHRV9ERVNDX0FUVFJfUENIwqDCoMKgwqDCoMKgwqAgQklUKDYpCj4+IMKgICNkZWZpbmUg R1VDX1NUQUdFX0RFU0NfQVRUUl9URVJNSU5BVEVEwqDCoMKgIEJJVCg3KQo+PiDCoCAtLyogTmV3 IEd1QyBjb250cm9sIGRhdGEgKi8KPj4gLSNkZWZpbmUgR1VDX0NUTF9DVFhJTkZPwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAwCj4+IC0jZGVmaW5lwqDCoCBHVUNfQ1RMX0NUWE5VTV9JTjE2X1NISUZU wqDCoMKgIDAKPj4gLSNkZWZpbmXCoMKgIEdVQ19DVExfQkFTRV9BRERSX1NISUZUwqDCoMKgIDEy Cj4+IC0KPj4gLSNkZWZpbmUgR1VDX0NUTF9MT0dfUEFSQU1TwqDCoMKgwqDCoMKgwqAgMQo+PiAr I2RlZmluZSBHVUNfQ1RMX0xPR19QQVJBTVPCoMKgwqDCoMKgwqDCoCAwCj4+IMKgICNkZWZpbmXC oMKgIEdVQ19MT0dfVkFMSUTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgxIDw8IDApCj4+IMKgICNk ZWZpbmXCoMKgIEdVQ19MT0dfTk9USUZZX09OX0hBTEZfRlVMTMKgwqDCoCAoMSA8PCAxKQo+PiDC oCAjZGVmaW5lwqDCoCBHVUNfTE9HX0FMTE9DX0lOX01FR0FCWVRFwqDCoMKgICgxIDw8IDMpCj4+ IEBAIC03OSwxMSArNzQsMTEgQEAKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0xPR19JU1JfTUFTS8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4NyA8PCBHVUNfTE9HX0lTUl9TSElGVCkKPj4gwqAgI2Rl ZmluZcKgwqAgR1VDX0xPR19CVUZfQUREUl9TSElGVMKgwqDCoCAxMgo+PiDCoCAtI2RlZmluZSBH VUNfQ1RMX1dBwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyCj4+IC0jZGVmaW5lIEdVQ19DVExfRkVB VFVSRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMwo+PiArI2RlZmluZSBHVUNfQ1RMX1dBwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAxCj4+ICsjZGVmaW5lIEdVQ19DVExfRkVBVFVSRcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMgo+PiDCoCAjZGVmaW5lwqDCoCBHVUNfQ1RMX0RJU0FCTEVfU0NIRURVTEVS wqDCoMKgICgxIDw8IDE0KQo+PiDCoCAtI2RlZmluZSBHVUNfQ1RMX0RFQlVHwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA0Cj4+ICsjZGVmaW5lIEdVQ19DVExfREVCVUfCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDMKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlTCoMKgwqAgMAo+ PiDCoCAjZGVmaW5lwqDCoCBHVUNfTE9HX1ZFUkJPU0lUWV9MT1fCoMKgwqDCoMKgwqDCoCAoMCA8 PCBHVUNfTE9HX1ZFUkJPU0lUWV9TSElGVCkKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0xPR19WRVJC T1NJVFlfTUVEwqDCoMKgwqDCoMKgwqAgKDEgPDwgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlQpCj4+ IEBAIC05NywxMiArOTIsMzEgQEAKPj4gwqAgI2RlZmluZcKgwqAgR1VDX0xPR19ESVNBQkxFRMKg wqDCoMKgwqDCoMKgICgxIDw8IDYpCj4+IMKgICNkZWZpbmXCoMKgIEdVQ19QUk9GSUxFX0VOQUJM RUTCoMKgwqDCoMKgwqDCoCAoMSA8PCA3KQo+PiDCoCAtI2RlZmluZSBHVUNfQ1RMX0FEU8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgNQo+PiArI2RlZmluZSBHVUNfQ1RMX0FEU8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgNAo+PiDCoCAjZGVmaW5lwqDCoCBHVUNfQURTX0FERFJfU0hJRlTCoMKgwqDCoMKg wqDCoCAxCj4+IMKgICNkZWZpbmXCoMKgIEdVQ19BRFNfQUREUl9NQVNLwqDCoMKgwqDCoMKgwqAg KDB4RkZGRkYgPDwgR1VDX0FEU19BRERSX1NISUZUKQo+PiDCoCDCoCAjZGVmaW5lIEdVQ19DVExf TUFYX0RXT1JEU8KgwqDCoMKgwqDCoMKgIChTT0ZUX1NDUkFUQ0hfQ09VTlQgLSAyKSAvKgo+PiBb MS4uMTRdICovCj4+IMKgICsvKgo+PiArICogVGhlIGNsYXNzIGdvZXMgaW4gYml0cyBbMC4uMl0g b2YgdGhlIEd1QyBJRCwgdGhlIGluc3RhbmNlIGluIGJpdHMKPj4gWzMuLjZdLgo+PiArICogQml0 IDcgY2FuIGJlIHVzZWQgZm9yIG9wZXJhdGlvbnMgdGhhdCBhcHBseSB0byBhbGwgZW5naW5lCj4+ IGNsYXNzZXMmaW5zdGFuY2VzLgo+PiArICovCj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVfQ0xBU1Nf U0hJRlTCoMKgwqDCoMKgwqDCoCAwCj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVfQ0xBU1NfTUFTS8Kg wqDCoMKgwqDCoMKgICgweDcgPDwgR1VDX0VOR0lORV9DTEFTU19TSElGVCkKPj4gKyNkZWZpbmUg R1VDX0VOR0lORV9JTlNUQU5DRV9TSElGVMKgwqDCoCAzCj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVf SU5TVEFOQ0VfTUFTS8KgwqDCoCAoMHhmIDw8IEdVQ19FTkdJTkVfSU5TVEFOQ0VfU0hJRlQpCj4+ ICsjZGVmaW5lIEdVQ19FTkdJTkVfQUxMX0lOU1RBTkNFU8KgwqDCoCAoMSA8PCA3KQo+PiArCj4+ ICsjZGVmaW5lIE1BS0VfR1VDX0lEKGNsYXNzLCBpbnN0YW5jZSkgXAo+PiArwqDCoMKgICgoKGNs YXNzKSA8PCBHVUNfRU5HSU5FX0NMQVNTX1NISUZUKSB8IFwKPj4gK8KgwqDCoMKgICgoaW5zdGFu Y2UpIDw8IEdVQ19FTkdJTkVfSU5TVEFOQ0VfU0hJRlQpKQo+PiArCj4+ICsjZGVmaW5lIEdVQ19J RF9UT19FTkdJTkVfQ0xBU1MoZ3VjX2lkKSBcCj4+ICvCoMKgwqAgKCgoZ3VjX2lkKSAmIEdVQ19F TkdJTkVfQ0xBU1NfTUFTSykgPj4gR1VDX0VOR0lORV9DTEFTU19TSElGVCkKPj4gKyNkZWZpbmUg R1VDX0lEX1RPX0VOR0lORV9JTlNUQU5DRShndWNfaWQpIFwKPj4gK8KgwqDCoCAoKChndWNfaWQp ICYgR1VDX0VOR0lORV9JTlNUQU5DRV9NQVNLKSA+PiBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZU KQo+PiArCj4+IMKgIC8qIFdvcmsgaXRlbSBmb3Igc3VibWl0dGluZyB3b3JrbG9hZHMgaW50byB3 b3JrIHF1ZXVlIG9mIEd1Qy4gKi8KPj4gwqAgc3RydWN0IGd1Y193cV9pdGVtIHsKPj4gwqDCoMKg wqDCoCB1MzIgaGVhZGVyOwo+PiBAQCAtMzM4LDcgKzM1Miw2IEBAIHN0cnVjdCBndWNfcG9saWNp ZXMgewo+PiDCoCAvKiBHdUMgTU1JTyByZWcgc3RhdGUgc3RydWN0ICovCj4+IMKgIMKgIC0jZGVm aW5lIEdVQ19SRUdTRVRfTUFYX1JFR0lTVEVSU8KgwqDCoCA2NAo+PiDCoCAjZGVmaW5lIEdVQ19T M19TQVZFX1NQQUNFX1BBR0VTwqDCoMKgwqDCoMKgwqAgMTAKPj4gwqAgwqAgc3RydWN0IGd1Y19t bWlvX3JlZyB7Cj4+IEBAIC0zNDgsMTYgKzM2MSwxNyBAQCBzdHJ1Y3QgZ3VjX21taW9fcmVnIHsK Pj4gwqAgI2RlZmluZSBHVUNfUkVHU0VUX01BU0tFRMKgwqDCoMKgwqDCoMKgICgxIDw8IDApCj4+ IMKgIH0gX19wYWNrZWQ7Cj4+IMKgIC1zdHJ1Y3QgZ3VjX21taW9fcmVnc2V0IHsKPj4gLcKgwqDC oCBzdHJ1Y3QgZ3VjX21taW9fcmVnIHJlZ2lzdGVyc1tHVUNfUkVHU0VUX01BWF9SRUdJU1RFUlNd Owo+PiAtwqDCoMKgIHUzMiB2YWx1ZXNfdmFsaWQ7Cj4+IC3CoMKgwqAgdTMyIG51bWJlcl9vZl9y ZWdpc3RlcnM7Cj4+IC19IF9fcGFja2VkOwo+PiAtCj4+IMKgIC8qIEd1QyByZWdpc3RlciBzZXRz ICovCj4+IC1zdHJ1Y3QgZ3VjX21taW9fcmVnX3N0YXRlIHsKPj4gLcKgwqDCoCBzdHJ1Y3QgZ3Vj X21taW9fcmVnc2V0Cj4+IGVuZ2luZV9yZWdbR1VDX01BWF9FTkdJTkVfQ0xBU1NFU11bR1VDX01B WF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4gLcKgwqDCoCB1MzIgcmVzZXJ2ZWRbOThdOwo+PiAr c3RydWN0IGd1Y19tbWlvX3JlZ19zZXQgewo+PiArwqDCoMKgIHUzMiBhZGRyZXNzOwo+PiArwqDC oMKgIHVuaW9uIHsKPj4gK8KgwqDCoMKgwqDCoMKgIHN0cnVjdCB7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHUzMiBjb3VudDoxNjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHJl c2VydmVkMToxMjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHJlc2VydmVkMjo0Owo+ PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBjb3VudF91MzI7Cj4+ ICvCoMKgwqAgfTsKPj4gwqAgfSBfX3BhY2tlZDsKPj4gwqAgwqAgLyogSFcgaW5mbyAqLwo+PiBA QCAtMzY5LDcgKzM4Myw5IEBAIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gewo+PiDCoMKgwqDC oMKgIHUzMiB2ZGJveF9lbmFibGVfbWFzazsKPj4gwqDCoMKgwqDCoCB1MzIgdmRib3hfc2ZjX3N1 cHBvcnRfbWFzazsKPj4gwqDCoMKgwqDCoCB1MzIgdmVib3hfZW5hYmxlX21hc2s7Cj4+IC3CoMKg wqAgdTMyIHJlc2VydmVkWzldOwo+PiArwqDCoMKgIHUzMiBudW1fb2ZfZG9vcmJlbGxzX3Blcl9z cWlkaTsKPj4gK8KgwqDCoCB1OAo+PiBtYXBwaW5nX3RhYmxlW0dVQ19NQVhfRU5HSU5FX0NMQVNT RVNdW0dVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTU107Cj4+ICvCoMKgwqAgdTMyIHJlc2VydmVk Mls4XTsKPj4gwqAgfSBfX3BhY2tlZDsKPj4gwqAgwqAgLyogQ2xpZW50cyBpbmZvICovCj4+IEBA IC0zOTAsMTUgKzQwNiwxNiBAQCBzdHJ1Y3QgZ3VjX2NsaWVudHNfaW5mbyB7Cj4+IMKgIMKgIC8q IEd1QyBBZGRpdGlvbmFsIERhdGEgU3RydWN0ICovCj4+IMKgIHN0cnVjdCBndWNfYWRzIHsKPj4g LcKgwqDCoCB1MzIgcmVnX3N0YXRlX2FkZHI7Cj4+IC3CoMKgwqAgdTMyIHJlZ19zdGF0ZV9idWZm ZXI7Cj4+ICvCoMKgwqAgc3RydWN0IGd1Y19tbWlvX3JlZ19zZXQKPj4gcmVnX3N0YXRlX2xpc3Rb R1VDX01BWF9FTkdJTkVfQ0xBU1NFU11bR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4g K8KgwqDCoCB1MzIgcmVzZXJ2ZWQwOwo+PiDCoMKgwqDCoMKgIHUzMiBzY2hlZHVsZXJfcG9saWNp ZXM7Cj4+IMKgwqDCoMKgwqAgdTMyIGd0X3N5c3RlbV9pbmZvOwo+PiDCoMKgwqDCoMKgIHUzMiBj bGllbnRzX2luZm87Cj4+IMKgwqDCoMKgwqAgdTMyIGNvbnRyb2xfZGF0YTsKPj4gwqDCoMKgwqDC oCB1MzIgZ29sZGVuX2NvbnRleHRfbHJjYVtHVUNfTUFYX0VOR0lORV9DTEFTU0VTXTsKPj4gwqDC oMKgwqDCoCB1MzIgZW5nX3N0YXRlX3NpemVbR1VDX01BWF9FTkdJTkVfQ0xBU1NFU107Cj4+IC3C oMKgwqAgdTMyIHJlc2VydmVkWzE2XTsKPj4gK8KgwqDCoCB1MzIgcHJpdmF0ZV9kYXRhOwo+PiAr wqDCoMKgIHUzMiByZXNlcnZlZFsxNV07Cj4+IMKgIH0gX19wYWNrZWQ7Cj4+IMKgIMKgIC8qIEd1 QyBsb2dnaW5nIHN0cnVjdHVyZXMgKi8KPj4gQEAgLTQ3NCw0OSArNDkxLDYgQEAgc3RydWN0IGd1 Y19zaGFyZWRfY3R4X2RhdGEgewo+PiDCoMKgwqDCoMKgIHN0cnVjdCBndWNfY3R4X3JlcG9ydCBw cmVlbXB0X2N0eF9yZXBvcnRbR1VDX01BWF9FTkdJTkVTX05VTV07Cj4+IMKgIH0gX19wYWNrZWQ7 Cj4+IMKgIC0vKioKPj4gLSAqIERPQzogTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uCj4+IC0gKgo+ PiAtICogVGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1QyB1 c2VzIHNvZnR3YXJlCj4+IHNjcmF0Y2gKPj4gLSAqIHJlZ2lzdGVycywgd2hlcmUgZmlyc3QgcmVn aXN0ZXIgaG9sZHMgZGF0YSB0cmVhdGVkIGFzIG1lc3NhZ2UgaGVhZGVyLAo+PiAtICogYW5kIG90 aGVyIHJlZ2lzdGVycyBhcmUgdXNlZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZC4KPj4gLSAqCj4+ IC0gKiBGb3IgR2VuOSssIEd1QyB1c2VzIHNvZnR3YXJlIHNjcmF0Y2ggcmVnaXN0ZXJzIDB4QzE4 MC0weEMxQjgsCj4+IC0gKiBidXQgbm8gSDJHIGNvbW1hbmQgdGFrZXMgbW9yZSB0aGFuIDggcGFy YW1ldGVycyBhbmQgdGhlIEd1QyBGVwo+PiAtICogaXRzZWxmIHVzZXMgYW4gOC1lbGVtZW50IGFy cmF5IHRvIHN0b3JlIHRoZSBIMkcgbWVzc2FnZS4KPj4gLSAqCj4+IC0gKsKgwqDCoMKgwqAgKy0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKwo+PiAtICrCoMKgwqDCoMKg IHzCoCBNTUlPWzBdwqAgfCBNTUlPWzFdIHzCoMKgIC4uLsKgwqAgfCBNTUlPW25dIHwKPj4gLSAq wqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCj4+ IC0gKsKgwqDCoMKgwqAgfCBoZWFkZXLCoMKgwqAgfMKgwqDCoMKgwqAgb3B0aW9uYWwgcGF5bG9h ZMKgwqDCoMKgwqDCoCB8Cj4+IC0gKsKgwqDCoMKgwqAgKz09PT09PSs9PT09Kz09PT09PT09PSs9 PT09PT09PT0rPT09PT09PT09Kwo+PiAtICrCoMKgwqDCoMKgIHwgMzE6Mjh8dHlwZXzCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwKPj4gLSAqwqDC oMKgwqDCoCArLS0tLS0tKy0tLS0rwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoCB8Cj4+IC0gKsKgwqDCoMKgwqAgfCAyNzoxNnxkYXRhfMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfAo+PiAtICrCoMKg wqDCoMKgICstLS0tLS0rLS0tLSvCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgIHwKPj4gLSAqwqDCoMKgwqDCoCB8wqAgMTU6MHxjb2RlfMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfAo+PiAtICrCoMKg wqDCoMKgICstLS0tLS0rLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPj4gLSAq Cj4+IC0gKiBUaGUgbWVzc2FnZSBoZWFkZXIgY29uc2lzdHMgb2Y6Cj4+IC0gKgo+PiAtICogLSAq KnR5cGUqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgdHlwZQo+PiAtICogLSAqKmNvZGUqKiwgaW5kaWNh dGVzIG1lc3NhZ2UgY29kZSwgaXMgc3BlY2lmaWMgZm9yICoqdHlwZSoqCj4+IC0gKiAtICoqZGF0 YSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSBkYXRhLCBvcHRpb25hbCwgZGVwZW5kcyBvbiAqKmNvZGUq Kgo+PiAtICoKPj4gLSAqIFRoZSBmb2xsb3dpbmcgbWVzc2FnZSAqKnR5cGVzKiogYXJlIHN1cHBv cnRlZDoKPj4gLSAqCj4+IC0gKiAtICoqUkVRVUVTVCoqLCBpbmRpY2F0ZXMgSG9zdC10by1HdUMg cmVxdWVzdCwgcmVxdWVzdGVkIEd1QyBhY3Rpb24KPj4gY29kZQo+PiAtICrCoMKgIG11c3QgYmUg cHJpb3ZpZGVkIGluICoqY29kZSoqIGZpZWxkLiBPcHRpb25hbCBhY3Rpb24gc3BlY2lmaWMKPj4g cGFyYW1ldGVycwo+PiAtICrCoMKgIGNhbiBiZSBwcm92aWRlZCBpbiByZW1haW5pbmcgcGF5bG9h ZCByZWdpc3RlcnMgb3IgKipkYXRhKiogZmllbGQuCj4+IC0gKgo+PiAtICogLSAqKlJFU1BPTlNF KiosIGluZGljYXRlcyBHdUMtdG8tSG9zdCByZXNwb25zZSBmcm9tIGVhcmxpZXIgR3VDCj4+IHJl cXVlc3QsCj4+IC0gKsKgwqAgYWN0aW9uIHJlc3BvbnNlIHN0YXR1cyB3aWxsIGJlIHByb3ZpZGVk IGluICoqY29kZSoqIGZpZWxkLiBPcHRpb25hbAo+PiAtICrCoMKgIHJlc3BvbnNlIGRhdGEgY2Fu IGJlIHJldHVybmVkIGluIHJlbWFpbmluZyBwYXlsb2FkIHJlZ2lzdGVycyBvcgo+PiAqKmRhdGEq Kgo+PiAtICrCoMKgIGZpZWxkLgo+PiAtICovCj4+IC0KPj4gLSNkZWZpbmUgR1VDX01BWF9NTUlP X01TR19MRU7CoMKgwqDCoMKgwqDCoCA4Cj4+IC0KPj4gwqAgI2RlZmluZSBJTlRFTF9HVUNfTVNH X1RZUEVfU0hJRlTCoMKgwqAgMjgKPj4gwqAgI2RlZmluZSBJTlRFTF9HVUNfTVNHX1RZUEVfTUFT S8KgwqDCoMKgwqDCoMKgICgweEYgPDwKPj4gSU5URUxfR1VDX01TR19UWVBFX1NISUZUKQo+PiDC oCAjZGVmaW5lIElOVEVMX0dVQ19NU0dfREFUQV9TSElGVMKgwqDCoCAxNgo+IAo+IFRoZXNlIEdV Q19NU0cgZGVmaW5lcyBhcmUgYWxzbyBkdXBsaWNhdGVkCgpUaGVzZSBhcmUgc3RpbGwgdXNlZCBi eSB0aGUgQ1RCIGFuZCB3ZSB3YW50IHRvIGtlZXAgQ1RCIGRlZmluaXRpb25zCnNlcGFyYXRlIGFz IHdlIHdpbGwgZG8gc29tZSByZWZhY3RvcmluZyB0aGVyZSB0b28uCgpNaWNoYWwKCj4gCj4gRGFu aWVsZQo+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjX3JlZy5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5o Cj4+IGluZGV4IDE5NDkzNDZlNzE0ZS4uYjM3ZmMyZmZhZWYyIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfcmVnLmgKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oCj4+IEBAIC0xMTgsNiArMTE4LDExIEBA IHN0cnVjdCBndWNfZG9vcmJlbGxfaW5mbyB7Cj4+IMKgICNkZWZpbmXCoMKgIEdFTjhfRFJCX1ZB TElEwqDCoMKgwqDCoMKgwqDCoMKgICgxPDwwKQo+PiDCoCAjZGVmaW5lIEdFTjhfRFJCUkVHVSh4 KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX01NSU8oMHgxMDAwICsgKHgpICogOCArIDQpCj4+IMKg ICsjZGVmaW5lIEdFTjEyX0RJU1RfREJTX1BPUFVMQVRFRMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4 ZDA4KQo+PiArI2RlZmluZcKgwqAgR0VOMTJfRE9PUkJFTExTX1BFUl9TUUlESV9TSElGVMKgwqDC oCAxNgo+PiArI2RlZmluZcKgwqAgR0VOMTJfRE9PUkJFTExTX1BFUl9TUUlEScKgwqDCoMKgwqDC oMKgICgweGZmKQo+PiArI2RlZmluZcKgwqAgR0VOMTJfU1FJRElTX0RPT1JCRUxMX0VYSVNUwqDC oMKgwqDCoMKgwqAgKDB4ZmZmZikKPj4gKwo+PiDCoCAjZGVmaW5lIERFX0dVQ1JNUsKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgX01NSU8oMHg0NDA1NCkKPj4gwqAgwqAgI2RlZmluZSBHVUNfQkNTX1JD U19JRVLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4QzU1MCkKPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jCj4+IGluZGV4IDU5YjI3YWJhMTVjNi4uZjdj YjBiMWYxYmE1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF91Y19mdy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3 LmMKPj4gQEAgLTQ0LDIzICs0NCwxOSBAQCB2b2lkIGludGVsX3VjX2Z3X2NoYW5nZV9zdGF0dXMo c3RydWN0IGludGVsX3VjX2Z3Cj4+ICp1Y19mdywKPj4gwqDCoCAqIExpc3Qgb2YgcmVxdWlyZWQg R3VDIGFuZCBIdUMgYmluYXJpZXMgcGVyLXBsYXRmb3JtLgo+PiDCoMKgICogTXVzdCBiZSBvcmRl cmVkIGJhc2VkIG9uIHBsYXRmb3JtICsgcmV2aWQsIGZyb20gbmV3ZXIgdG8gb2xkZXIuCj4+IMKg wqAgKgo+PiAtICogVEdMIDM1LjIgaXMgaW50ZXJmYWNlLWNvbXBhdGlibGUgd2l0aCAzMy4wIGZv ciBwcmV2aW91cyBHZW5zLiBUaGUKPj4gZGVsdGFzCj4+IC0gKiBiZXR3ZWVuIDMzLjAgYW5kIDM1 LjIgYXJlIG9ubHkgcmVsYXRlZCB0byBuZXcgYWRkaXRpb25zIHRvIHN1cHBvcnQKPj4gbmV3IEdl bjEyCj4+IC0gKiBmZWF0dXJlcy4KPj4gLSAqCj4+IMKgwqAgKiBOb3RlIHRoYXQgUktMIHVzZXMg dGhlIHNhbWUgZmlybXdhcmUgYXMgVEdMLgo+PiDCoMKgICovCj4+IMKgICNkZWZpbmUgSU5URUxf VUNfRklSTVdBUkVfREVGUyhmd19kZWYsIGd1Y19kZWYsIGh1Y19kZWYpIFwKPj4gLcKgwqDCoCBm d19kZWYoUk9DS0VUTEFLRSzCoCAwLCBndWNfZGVmKHRnbCwgMzUsIDIsIDApLCBodWNfZGVmKHRn bCzCoCA3LAo+PiAwLCAxMikpIFwKPj4gLcKgwqDCoCBmd19kZWYoVElHRVJMQUtFLMKgwqAgMCwg Z3VjX2RlZih0Z2wsIDM1LCAyLCAwKSwgaHVjX2RlZih0Z2wswqAgNywKPj4gMCwgMTIpKSBcCj4+ IC3CoMKgwqAgZndfZGVmKEVMS0hBUlRMQUtFLCAwLCBndWNfZGVmKGVobCwgMzMsIDAsIDQpLCBo dWNfZGVmKGVobCzCoCA5LAo+PiAwLCAwKSkgXAo+PiAtwqDCoMKgIGZ3X2RlZihJQ0VMQUtFLMKg wqDCoMKgIDAsIGd1Y19kZWYoaWNsLCAzMywgMCwgMCksIGh1Y19kZWYoaWNsLMKgIDksCj4+IDAs IDApKSBcCj4+IC3CoMKgwqAgZndfZGVmKENPTUVUTEFLRSzCoMKgIDUsIGd1Y19kZWYoY21sLCAz MywgMCwgMCksIGh1Y19kZWYoY21sLMKgIDQsCj4+IDAsIDApKSBcCj4+IC3CoMKgwqAgZndfZGVm KENPRkZFRUxBS0UswqAgMCwgZ3VjX2RlZihrYmwsIDMzLCAwLCAwKSwgaHVjX2RlZihrYmwswqAg NCwKPj4gMCwgMCkpIFwKPj4gLcKgwqDCoCBmd19kZWYoR0VNSU5JTEFLRSzCoCAwLCBndWNfZGVm KGdsaywgMzMsIDAsIDApLCBodWNfZGVmKGdsayzCoCA0LAo+PiAwLCAwKSkgXAo+PiAtwqDCoMKg IGZ3X2RlZihLQUJZTEFLRSzCoMKgwqAgMCwgZ3VjX2RlZihrYmwsIDMzLCAwLCAwKSwgaHVjX2Rl ZihrYmwswqAgNCwKPj4gMCwgMCkpIFwKPj4gLcKgwqDCoCBmd19kZWYoQlJPWFRPTizCoMKgwqDC oCAwLCBndWNfZGVmKGJ4dCwgMzMsIDAsIDApLCBodWNfZGVmKGJ4dCzCoCAyLAo+PiAwLCAwKSkg XAo+PiAtwqDCoMKgIGZ3X2RlZihTS1lMQUtFLMKgwqDCoMKgIDAsIGd1Y19kZWYoc2tsLCAzMywg MCwgMCksIGh1Y19kZWYoc2tsLMKgIDIsCj4+IDAsIDApKQo+PiArwqDCoMKgIGZ3X2RlZihST0NL RVRMQUtFLMKgIDAsIGd1Y19kZWYodGdsLCA0NSwgMCwgMCksIGh1Y19kZWYodGdsLMKgIDcsCj4+ IDAsIDEyKSkgXAo+PiArwqDCoMKgIGZ3X2RlZihUSUdFUkxBS0UswqDCoCAwLCBndWNfZGVmKHRn bCwgNDUsIDAsIDApLCBodWNfZGVmKHRnbCzCoCA3LAo+PiAwLCAxMikpIFwKPj4gK8KgwqDCoCBm d19kZWYoRUxLSEFSVExBS0UsIDAsIGd1Y19kZWYoZWhsLCA0NSwgMCwgMCksIGh1Y19kZWYoZWhs LMKgIDksCj4+IDAsIDApKSBcCj4+ICvCoMKgwqAgZndfZGVmKElDRUxBS0UswqDCoMKgwqAgMCwg Z3VjX2RlZihpY2wsIDQ1LCAwLCAwKSwgaHVjX2RlZihpY2wswqAgOSwKPj4gMCwgMCkpIFwKPj4g K8KgwqDCoCBmd19kZWYoQ09NRVRMQUtFLMKgwqAgNSwgZ3VjX2RlZihjbWwsIDQ1LCAwLCAwKSwg aHVjX2RlZihjbWwswqAgNCwKPj4gMCwgMCkpIFwKPj4gK8KgwqDCoCBmd19kZWYoQ09GRkVFTEFL RSzCoCAwLCBndWNfZGVmKGtibCwgNDUsIDAsIDApLCBodWNfZGVmKGtibCzCoCA0LAo+PiAwLCAw KSkgXAo+PiArwqDCoMKgIGZ3X2RlZihHRU1JTklMQUtFLMKgIDAsIGd1Y19kZWYoZ2xrLCA0NSwg MCwgMCksIGh1Y19kZWYoZ2xrLMKgIDQsCj4+IDAsIDApKSBcCj4+ICvCoMKgwqAgZndfZGVmKEtB QllMQUtFLMKgwqDCoCAwLCBndWNfZGVmKGtibCwgNDUsIDAsIDApLCBodWNfZGVmKGtibCzCoCA0 LAo+PiAwLCAwKSkgXAo+PiArwqDCoMKgIGZ3X2RlZihCUk9YVE9OLMKgwqDCoMKgIDAsIGd1Y19k ZWYoYnh0LCA0NSwgMCwgMCksIGh1Y19kZWYoYnh0LMKgIDIsCj4+IDAsIDApKSBcCj4+ICvCoMKg wqAgZndfZGVmKFNLWUxBS0UswqDCoMKgwqAgMCwgZ3VjX2RlZihza2wsIDQ1LCAwLCAwKSwgaHVj X2RlZihza2wswqAgMiwKPj4gMCwgMCkpCj4+IMKgIMKgICNkZWZpbmUgX19NQUtFX1VDX0ZXX1BB VEgocHJlZml4XywgbmFtZV8sIG1ham9yXywgbWlub3JfLCBwYXRjaF8pIFwKPj4gwqDCoMKgwqDC oCAiaTkxNS8iIFwKPj4gQEAgLTM3MSw2ICszNjcsOSBAQCBpbnQgaW50ZWxfdWNfZndfZmV0Y2go c3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDC oMKgwqDCoCB9Cj4+IMKgICvCoMKgwqAgaWYgKHVjX2Z3LT50eXBlID09IElOVEVMX1VDX0ZXX1RZ UEVfR1VDKQo+PiArwqDCoMKgwqDCoMKgwqAgdWNfZnctPnByaXZhdGVfZGF0YV9zaXplID0gY3Nz LT5wcml2YXRlX2RhdGFfc2l6ZTsKPj4gKwo+PiDCoMKgwqDCoMKgIG9iaiA9IGk5MTVfZ2VtX29i amVjdF9jcmVhdGVfc2htZW1fZnJvbV9kYXRhKGk5MTUsIGZ3LT5kYXRhLAo+PiBmdy0+c2l6ZSk7 Cj4+IMKgwqDCoMKgwqAgaWYgKElTX0VSUihvYmopKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBl cnIgPSBQVFJfRVJSKG9iaik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF91Y19mdy5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWNfZncuaAo+PiBpbmRleCAyM2QzYTQyM2FjMGYuLjk5YmIxZmUxYWY2NiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaAo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oCj4+IEBAIC04OCw2ICs4OCw4IEBA IHN0cnVjdCBpbnRlbF91Y19mdyB7Cj4+IMKgIMKgwqDCoMKgwqAgdTMyIHJzYV9zaXplOwo+PiDC oMKgwqDCoMKgIHUzMiB1Y29kZV9zaXplOwo+PiArCj4+ICvCoMKgwqAgdTMyIHByaXZhdGVfZGF0 YV9zaXplOwo+PiDCoCB9Owo+PiDCoCDCoCAjaWZkZWYgQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dV Qwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndf YWJpLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaAo+ PiBpbmRleCAwMjkyMTRjZGVkZDUuLmU0MWZmYzdhN2ZiYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmgKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmgKPj4gQEAgLTY5LDcgKzY5LDExIEBA IHN0cnVjdCB1Y19jc3NfaGVhZGVyIHsKPj4gwqAgI2RlZmluZSBDU1NfU1dfVkVSU0lPTl9VQ19N QUpPUsKgwqDCoMKgwqDCoMKgICgweEZGIDw8IDE2KQo+PiDCoCAjZGVmaW5lIENTU19TV19WRVJT SU9OX1VDX01JTk9SwqDCoMKgwqDCoMKgwqAgKDB4RkYgPDwgOCkKPj4gwqAgI2RlZmluZSBDU1Nf U1dfVkVSU0lPTl9VQ19QQVRDSMKgwqDCoMKgwqDCoMKgICgweEZGIDw8IDApCj4+IC3CoMKgwqAg dTMyIHJlc2VydmVkWzE0XTsKPj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQwWzEzXTsKPj4gK8KgwqDC oCB1bmlvbiB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgcHJpdmF0ZV9kYXRhX3NpemU7IC8qIG9u bHkgYXBwbGllcyB0byBHdUMgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZDE7Cj4+ ICvCoMKgwqAgfTsKPj4gwqDCoMKgwqDCoCB1MzIgaGVhZGVyX2luZm87Cj4+IMKgIH0gX19wYWNr ZWQ7Cj4+IMKgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCB1Y19jc3NfaGVhZGVyKSA9PSAx MjgpOwo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK