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=-14.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable 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 9DDD0C433ED for ; Mon, 19 Apr 2021 14:07:55 +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 4B97C60698 for ; Mon, 19 Apr 2021 14:07:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4B97C60698 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 08BE36E33F; Mon, 19 Apr 2021 14:07:54 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F3D26E32A; Mon, 19 Apr 2021 14:07:52 +0000 (UTC) IronPort-SDR: wicS4meZhxvrwVlsDjWLSWK5K9fbg5BepCK+IZs1NlNfFEe5GMuLrlmkRRqGi0HJUCay0am5mi Db8szRB7yu9g== X-IronPort-AV: E=McAfee;i="6200,9189,9959"; a="193209023" X-IronPort-AV: E=Sophos;i="5.82,234,1613462400"; d="scan'208";a="193209023" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2021 07:07:51 -0700 IronPort-SDR: HARV6UXP/tA3eX09r5O2qeUqHgnMqnCoK00f879TjnJ5Lk8vUhgzq1fM50cqSZt7bIwRYklwbd CX7v4AXlKDDA== X-IronPort-AV: E=Sophos;i="5.82,234,1613462400"; d="scan'208";a="383747875" Received: from ongshuph-mobl.gar.corp.intel.com (HELO [10.214.164.79]) ([10.214.164.79]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Apr 2021 07:07:48 -0700 Subject: Re: [Intel-gfx] [PATCH 11/19] drm/i915: Update the helper to set correct mapping To: Matthew Auld , Matthew Auld References: <20210412090526.30547-1-matthew.auld@intel.com> <20210412090526.30547-12-matthew.auld@intel.com> <7bc2a663-fbc0-6486-341a-7dca980c2440@linux.intel.com> <9aca524c-3710-dfaa-bfec-aef76aee7b26@linux.intel.com> <55e16b78-d9ee-a0ad-5877-9901cf74669f@intel.com> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: <5701f034-3da9-55d2-e966-33afb7236b8b@linux.intel.com> Date: Mon, 19 Apr 2021 15:07:42 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <55e16b78-d9ee-a0ad-5877-9901cf74669f@intel.com> Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Intel Graphics Development , ML dri-devel Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDE5LzA0LzIwMjEgMTI6MzAsIE1hdHRoZXcgQXVsZCB3cm90ZToKPiBPbiAxNS8wNC8yMDIx IDEyOjA1LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4KPj4gT24gMTUvMDQvMjAyMSAxMDoyMywg TWF0dGhldyBBdWxkIHdyb3RlOgo+Pj4gT24gVGh1LCAxNSBBcHIgMjAyMSBhdCAwOToyMSwgVHZy dGtvIFVyc3VsaW4KPj4+IDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ Pj4+Cj4+Pj4KPj4+PiBPbiAxNC8wNC8yMDIxIDE3OjIwLCBNYXR0aGV3IEF1bGQgd3JvdGU6Cj4+ Pj4+IE9uIFdlZCwgMTQgQXByIDIwMjEgYXQgMTY6MjIsIFR2cnRrbyBVcnN1bGluCj4+Pj4+IDx0 dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+ PiBPbiAxMi8wNC8yMDIxIDEwOjA1LCBNYXR0aGV3IEF1bGQgd3JvdGU6Cj4+Pj4+Pj4gRnJvbTog VmVua2F0YSBTYW5kZWVwIERoYW5hbGFrb3RhIDx2ZW5rYXRhLnMuZGhhbmFsYWtvdGFAaW50ZWwu Y29tPgo+Pj4+Pj4+Cj4+Pj4+Pj4gRGV0ZXJtaW5lIHRoZSBwb3NzaWJsZSBjb2hlcmVudCBtYXAg dHlwZSBiYXNlZCBvbiBvYmplY3QgbG9jYXRpb24sCj4+Pj4+Pj4gYW5kIGlmIHRhcmdldCBoYXMg bGxjIG9yIGlmIHVzZXIgcmVxdWlyZXMgYW4gYWx3YXlzIGNvaGVyZW50Cj4+Pj4+Pj4gbWFwcGlu Zy4KPj4+Pj4+Pgo+Pj4+Pj4+IENjOiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5j b20+Cj4+Pj4+Pj4gQ2M6IENRIFRhbmcgPGNxLnRhbmdAaW50ZWwuY29tPgo+Pj4+Pj4+IFN1Z2dl c3RlZC1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+ Pj4+Pj4gU2lnbmVkLW9mZi1ieTogVmVua2F0YSBTYW5kZWVwIERoYW5hbGFrb3RhIAo+Pj4+Pj4+ IDx2ZW5rYXRhLnMuZGhhbmFsYWtvdGFAaW50ZWwuY29tPgo+Pj4+Pj4+IC0tLQo+Pj4+Pj4+IMKg wqDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuY8KgwqDCoCB8wqAg MyArKy0KPj4+Pj4+PiDCoMKgwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3BtLmPCoMKgwqAgfMKgIDIgKy0KPj4+Pj4+PiDCoMKgwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKysrLQo+Pj4+Pj4+IMKgwqDC oCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nLmPCoMKgwqDCoMKgwqDCoMKgIHzC oCA5ICsrKysrKy0tLQo+Pj4+Pj4+IMKgwqDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9jb250ZXh0LmPCoMKgIHzCoCAzICsrLQo+Pj4+Pj4+IMKgwqDCoCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYyB8wqAgNCArKy0tCj4+Pj4+Pj4gwqDCoMKg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jwqDCoMKgwqDCoMKgIHzCoCA0 ICsrKy0KPj4+Pj4+PiDCoMKgwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj LmPCoMKgwqDCoMKgwqAgfMKgIDQgKysrLQo+Pj4+Pj4+IMKgwqDCoCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9odWMuY8KgwqDCoMKgwqDCoCB8wqAgNCArKystCj4+Pj4+Pj4gwqDC oMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8IDExICsrKysrKysrKy0tCj4+Pj4+Pj4gwqDCoMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jIHzCoCA0ICsrLS0KPj4+Pj4+PiDCoMKgwqAgMTEgZmls ZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+Pj4+Pj4KPj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMgCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+ Pj4+Pj4+IGluZGV4IGVmZTkzNWY4MGMxYS4uYjc5NTY4ZDM3MGY1IDEwMDY0NAo+Pj4+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4+Pj4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4+Pj4+PiBAQCAt NjY0LDcgKzY2NCw4IEBAIHN0YXRpYyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgCj4+Pj4+ Pj4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYgKHJl dCkKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7Cj4+Pj4+ Pj4KPj4+Pj4+PiAtwqDCoMKgwqAgdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmos IEk5MTVfTUFQX1dCKTsKPj4+Pj4+PiArwqDCoMKgwqAgdmFkZHIgPSBpOTE1X2dlbV9vYmplY3Rf cGluX21hcChvYmosCj4+Pj4+Pj4gKyBpOTE1X2NvaGVyZW50X21hcF90eXBlKGVuZ2luZS0+aTkx NSwgb2JqLCB0cnVlKSk7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYgKElTX0VSUih2YWRkcikp IHsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gUFRSX0VSUih2 YWRkcik7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX3Vu cGluOwo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfcG0uYyAKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9wbS5jCj4+Pj4+Pj4gaW5kZXggN2M5YWY4NmZkYjFlLi40N2Y0Mzk3MDk1ZTUgMTAwNjQ0Cj4+ Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKPj4+ Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG0uYwo+Pj4+ Pj4+IEBAIC0yMyw3ICsyMyw3IEBAIHN0YXRpYyB2b2lkIGRiZ19wb2lzb25fY2Uoc3RydWN0IGlu dGVsX2NvbnRleHQgCj4+Pj4+Pj4gKmNlKQo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAg aWYgKGNlLT5zdGF0ZSkgewo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gY2UtPnN0YXRlLT5vYmo7Cj4+Pj4+Pj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgdHlwZSA9IGk5MTVfY29oZXJlbnRfbWFwX3R5 cGUoY2UtPmVuZ2luZS0+aTkxNSk7Cj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp bnQgdHlwZSA9IGk5MTVfY29oZXJlbnRfbWFwX3R5cGUoY2UtPmVuZ2luZS0+aTkxNSwgCj4+Pj4+ Pj4gb2JqLCB0cnVlKTsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9p ZCAqbWFwOwo+Pj4+Pj4+Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICghaTkxNV9nZW1fb2JqZWN0X3RyeWxvY2sob2JqKSkKPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+Pj4+Pj4+IGluZGV4IGU4Njg5N2NkZTk4NC4uYWFmZTJh NGRmNDk2IDEwMDY0NAo+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMK Pj4+Pj4+PiBAQCAtOTAzLDcgKzkwMyw5IEBAIGxyY19wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKCFpOTE1X3ZtYV9pc19w aW5uZWQoY2UtPnN0YXRlKSk7Cj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCAqdmFkZHIg PSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChjZS0+c3RhdGUtPm9iaiwKPj4+Pj4+PiAtIGk5MTVf Y29oZXJlbnRfbWFwX3R5cGUoY2UtPmVuZ2luZS0+aTkxNSkgfAo+Pj4+Pj4+ICsgaTkxNV9jb2hl cmVudF9tYXBfdHlwZShjZS0+ZW5naW5lLT5pOTE1LAo+Pj4+Pj4+ICsgY2UtPnN0YXRlLT5vYmos Cj4+Pj4+Pj4gKyBmYWxzZSkgfAo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEk5MTVf TUFQX09WRVJSSURFKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJf RVJSX09SX1pFUk8oKnZhZGRyKTsKPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfcmluZy5jIAo+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmluZy5jCj4+Pj4+Pj4gaW5kZXggYWVlMGE3N2M3N2UwLi4zY2Y2YzdlNjgxMDggMTAw NjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5jCj4+ Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZy5jCj4+Pj4+Pj4g QEAgLTUzLDkgKzUzLDEyIEBAIGludCBpbnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAq cmluZywgCj4+Pj4+Pj4gc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4+Pj4+Pj4KPj4+Pj4+ PiDCoMKgwqDCoMKgwqDCoCBpZiAoaTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUodm1hKSkK Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkciA9ICh2b2lkIF9fZm9y Y2UgKilpOTE1X3ZtYV9waW5faW9tYXAodm1hKTsKPj4+Pj4+PiAtwqDCoMKgwqAgZWxzZQo+Pj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5f bWFwKHZtYS0+b2JqLAo+Pj4+Pj4+IC0gaTkxNV9jb2hlcmVudF9tYXBfdHlwZSh2bWEtPnZtLT5p OTE1KSk7Cj4+Pj4+Pj4gK8KgwqDCoMKgIGVsc2Ugewo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaW50IHR5cGUgPSBpOTE1X2NvaGVyZW50X21hcF90eXBlKHZtYS0+dm0tPmk5MTUs IAo+Pj4+Pj4+IHZtYS0+b2JqLCBmYWxzZSk7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHZtYS0+b2JqLCB0 eXBlKTsKPj4+Pj4+PiArwqDCoMKgwqAgfQo+Pj4+Pj4+ICsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oCBpZiAoSVNfRVJSKGFkZHIpKSB7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IFBUUl9FUlIoYWRkcik7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdvdG8gZXJyX3Jpbmc7Cj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYyAKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+Pj4+Pj4+IGluZGV4IGI5YmRkMWQyMzI0My4uMjY2 ODViOTI3MTY5IDEwMDY0NAo+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2NvbnRleHQuYwo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2NvbnRleHQuYwo+Pj4+Pj4+IEBAIC04OCw3ICs4OCw4IEBAIHN0YXRpYyBpbnQgX19s aXZlX2NvbnRleHRfc2l6ZShzdHJ1Y3QgCj4+Pj4+Pj4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOwo+Pj4+Pj4+ Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcF91 bmxvY2tlZChjZS0+c3RhdGUtPm9iaiwKPj4+Pj4+PiAtIGk5MTVfY29oZXJlbnRfbWFwX3R5cGUo ZW5naW5lLT5pOTE1KSk7Cj4+Pj4+Pj4gKyBpOTE1X2NvaGVyZW50X21hcF90eXBlKGVuZ2luZS0+ aTkxNSwKPj4+Pj4+PiArIGNlLT5zdGF0ZS0+b2JqLCBmYWxzZSkpOwo+Pj4+Pj4+IMKgwqDCoMKg wqDCoMKgIGlmIChJU19FUlIodmFkZHIpKSB7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVyciA9IFBUUl9FUlIodmFkZHIpOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPj4+Pj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMgCj4+Pj4+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9oYW5nY2hlY2suYwo+Pj4+Pj4+IGlu ZGV4IDc0Njk4NTk3MWMzYS4uNWI2M2Q0ZGY4YzkzIDEwMDY0NAo+Pj4+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2hhbmdjaGVjay5jCj4+Pj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfaGFuZ2NoZWNrLmMKPj4+Pj4+PiBAQCAtNjks NyArNjksNyBAQCBzdGF0aWMgaW50IGhhbmdfaW5pdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IAo+ Pj4+Pj4+IGludGVsX2d0ICpndCkKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBoLT5zZXFubyA9IG1l bXNldCh2YWRkciwgMHhmZiwgUEFHRV9TSVpFKTsKPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoMKgwqDC oMKgIHZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXBfdW5sb2NrZWQoaC0+b2JqLAo+Pj4+ Pj4+IC0gaTkxNV9jb2hlcmVudF9tYXBfdHlwZShndC0+aTkxNSkpOwo+Pj4+Pj4+ICsgaTkxNV9j b2hlcmVudF9tYXBfdHlwZShndC0+aTkxNSwgaC0+b2JqLCBmYWxzZSkpOwo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgIGlmIChJU19FUlIodmFkZHIpKSB7Cj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGVyciA9IFBUUl9FUlIodmFkZHIpOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl91bnBpbl9od3M7Cj4+Pj4+Pj4gQEAgLTEzMCw3ICsx MzAsNyBAQCBoYW5nX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBoYW5nICpoLCBzdHJ1Y3QgCj4+Pj4+ Pj4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBFUlJfQ0FTVChvYmopOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIH0K Pj4+Pj4+Pgo+Pj4+Pj4+IC3CoMKgwqDCoCB2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw X3VubG9ja2VkKG9iaiwgCj4+Pj4+Pj4gaTkxNV9jb2hlcmVudF9tYXBfdHlwZShndC0+aTkxNSkp Owo+Pj4+Pj4+ICvCoMKgwqDCoCB2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwX3VubG9j a2VkKG9iaiwgCj4+Pj4+Pj4gaTkxNV9jb2hlcmVudF9tYXBfdHlwZShndC0+aTkxNSwgb2JqLCBm YWxzZSkpOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIodmFkZHIpKSB7Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaTkxNV92bV9wdXQodm0p Owo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9s cmMuYyAKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4+ Pj4+Pj4gaW5kZXggODVlN2RmNmE1MTIzLi5kOGY2NjIzNTI0ZTggMTAwNjQ0Cj4+Pj4+Pj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPj4+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+Pj4+Pj4+IEBAIC0xMjIxLDcg KzEyMjEsOSBAQCBzdGF0aWMgaW50IGNvbXBhcmVfaXNvbGF0aW9uKHN0cnVjdCAKPj4+Pj4+PiBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBscmMgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcF91bmxv Y2tlZChjZS0+c3RhdGUtPm9iaiwKPj4+Pj4+PiAtIGk5MTVfY29oZXJlbnRfbWFwX3R5cGUoZW5n aW5lLT5pOTE1KSk7Cj4+Pj4+Pj4gKyBpOTE1X2NvaGVyZW50X21hcF90eXBlKGVuZ2luZS0+aTkx NSwKPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAo+Pj4+Pj4+IGNlLT5zdGF0ZS0+b2JqLAo+Pj4+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCj4+Pj4+Pj4gZmFsc2UpKTsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpZiAoSVNf RVJSKGxyYykpIHsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyID0g UFRSX0VSUihscmMpOwo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3Rv IGVycl9CMTsKPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjLmMgCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWMuYwo+Pj4+Pj4+IGluZGV4IDc4MzA1YjJlYzg5ZC4uYWRhZTA0YzQ3YWFiIDEwMDY0NAo+Pj4+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4+Pj4+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4+Pj4+PiBAQCAt NjgyLDcgKzY4Miw5IEBAIGludCBpbnRlbF9ndWNfYWxsb2NhdGVfYW5kX21hcF92bWEoc3RydWN0 IAo+Pj4+Pj4+IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSwKPj4+Pj4+PiDCoMKgwqDCoMKgwqDC oCBpZiAoSVNfRVJSKHZtYSkpCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiBQVFJfRVJSKHZtYSk7Cj4+Pj4+Pj4KPj4+Pj4+PiAtwqDCoMKgwqAgdmFkZHIgPSBp OTE1X2dlbV9vYmplY3RfcGluX21hcF91bmxvY2tlZCh2bWEtPm9iaiwgCj4+Pj4+Pj4gSTkxNV9N QVBfV0IpOwo+Pj4+Pj4+ICvCoMKgwqDCoCB2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw X3VubG9ja2VkKHZtYS0+b2JqLAo+Pj4+Pj4+ICsgaTkxNV9jb2hlcmVudF9tYXBfdHlwZShndWNf dG9fZ3QoZ3VjKS0+aTkxNSwKPj4+Pj4+PiArIHZtYS0+b2JqLCB0cnVlKSk7Cj4+Pj4+Pj4gwqDC oMKgwqDCoMKgwqAgaWYgKElTX0VSUih2YWRkcikpIHsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJnZtYSwgMCk7Cj4+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKHZhZGRyKTsK Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVj LmMgCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwo+Pj4+ Pj4+IGluZGV4IDIxMjZkZDgxYWMzOC4uNTZkMjE0NGRjNmEwIDEwMDY0NAo+Pj4+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCj4+Pj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmMKPj4+Pj4+PiBAQCAtODIsNyArODIs OSBAQCBzdGF0aWMgaW50IGludGVsX2h1Y19yc2FfZGF0YV9jcmVhdGUoc3RydWN0IAo+Pj4+Pj4+ IGludGVsX2h1YyAqaHVjKQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIodm1hKSkK Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIodm1h KTsKPj4+Pj4+Pgo+Pj4+Pj4+IC3CoMKgwqDCoCB2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5f bWFwX3VubG9ja2VkKHZtYS0+b2JqLCAKPj4+Pj4+PiBJOTE1X01BUF9XQik7Cj4+Pj4+Pj4gK8Kg wqDCoMKgIHZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXBfdW5sb2NrZWQodm1hLT5vYmos Cj4+Pj4+Pj4gKyBpOTE1X2NvaGVyZW50X21hcF90eXBlKGd0LT5pOTE1LAo+Pj4+Pj4+ICsgdm1h LT5vYmosIHRydWUpKTsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKHZhZGRyKSkg ewo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpOTE1X3ZtYV91bnBpbl9h bmRfcmVsZWFzZSgmdm1hLCAwKTsKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIFBUUl9FUlIodmFkZHIpOwo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIAo+Pj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+Pj4+Pj4+IGluZGV4IDY5ZTQzYmY5MWExNS4uMmFiYmMwNjcxMmE0IDEwMDY0NAo+ Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+Pj4gQEAgLTc4LDYgKzc4LDcg QEAKPj4+Pj4+PiDCoMKgwqAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgi Cj4+Pj4+Pj4gwqDCoMKgICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fc2hyaW5rZXIuaCIKPj4+Pj4+ PiDCoMKgwqAgI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9zdG9sZW4uaCIKPj4+Pj4+PiArI2luY2x1 ZGUgImdlbS9pOTE1X2dlbV9sbWVtLmgiCj4+Pj4+Pj4KPj4+Pj4+PiDCoMKgwqAgI2luY2x1ZGUg Imd0L2ludGVsX2VuZ2luZS5oIgo+Pj4+Pj4+IMKgwqDCoCAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3Rf dHlwZXMuaCIKPj4+Pj4+PiBAQCAtMTkyMSw5ICsxOTIyLDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50 IAo+Pj4+Pj4+IGludGVsX2h3c19jc2Jfd3JpdGVfaW5kZXgoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4+Pj4+Pj4gwqDCoMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoCBzdGF0aWMg aW5saW5lIGVudW0gaTkxNV9tYXBfdHlwZQo+Pj4+Pj4+IC1pOTE1X2NvaGVyZW50X21hcF90eXBl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+Pj4+Pj4+ICtpOTE1X2NvaGVyZW50X21h cF90eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLCBib29sIAo+Pj4+Pj4+IGFsd2F5c19jb2hlcmVudCkKPj4+Pj4+PiDCoMKgwqAgewo+Pj4+ Pj4+IC3CoMKgwqDCoCByZXR1cm4gSEFTX0xMQyhpOTE1KSA/IEk5MTVfTUFQX1dCIDogSTkxNV9N QVBfV0M7Cj4+Pj4+Pj4gK8KgwqDCoMKgIGlmIChpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShvYmop KQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEk5MTVfTUFQX1dDOwo+ Pj4+Pj4+ICvCoMKgwqDCoCBpZiAoSEFTX0xMQyhpOTE1KSB8fCBhbHdheXNfY29oZXJlbnQpCj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gSTkxNV9NQVBfV0I7Cj4+Pj4+ Pj4gK8KgwqDCoMKgIGVsc2UKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBJOTE1X01BUF9XQzsKPj4+Pj4+Cj4+Pj4+PiBTZWVtcyB0aGlzIHBhdGNoIGlzIGRvaW5nIHR3 byB0aGluZ3MuCj4+Pj4+Pgo+Pj4+Pj4gRmlyc3QgaXQgaXMgYWRkaW5nIGxtZW0gc3VwcG9ydCB0 byB0aGlzIGhlbHBlciBieSBhbHdheXMgcmV0dXJuaW5nIFdDCj4+Pj4+PiBmb3IgbG1lbSBvYmpl Y3RzLgo+Pj4+Pj4KPj4+Pj4+IFNlY29uZGx5IGl0IGlzIGludHJvZHVjaW5nIGFuIGlkZWEgb2Yg ImFsd2F5cyBjb2hlcmVudCIgaW4gYSBoZWxwZXIKPj4+Pj4+IGNhbGxlZCBpOTE1X2NvaGVyZW50 X21hcF90eXBlLiBDb3VsZCBzb21lb25lIGV4cGxhaW4gd2hhdCBpcyAKPj4+Pj4+IGNvaGVyZW50 IHZzCj4+Pj4+PiBhbHdheXMgY29oZXJlbnQ/Cj4+Pj4+Pgo+Pj4+Pj4gQW5kIGFsc28sIHdoeSBp cyBhbHdheXMgY29oZXJlbnQgaGFwcHkgd2l0aCBXQj8gU291bmRzIGNvdW50ZXIgCj4+Pj4+PiBp bnR1aXRpdmUKPj4+Pj4+IHRvIG1lLgo+Pj4+Pgo+Pj4+PiBBbGwgdGhpcyBkb2VzIGlzIHRyeSB0 byBrZWVwIHRoZSBleGlzdGluZyBiZWhhdmlvdXIgaW50YWN0LCB3aGlsc3QKPj4+Pj4gYWxzbyBl bnN1cmluZyB0aGF0IGFsbCBsbWVtIG9iamVjdHMgYXJlIG1hcHBlZCB1c2luZyBvbmx5IFdDLCBu bwo+Pj4+PiBtYXR0ZXIgd2hhdC4gVGhlIGFsd2F5c19jb2hlcmVudD10cnVlIHRoaW5nIGlzIGZv ciB0aGUgZXhpc3RpbmcgcGxhY2VzCj4+Pj4+IHdoZXJlIHdlIHNvbWV0aW1lcyBtYXAgdGhlIG9i amVjdCB1c2luZyBXQiwgd2l0aG91dCBmaXJzdCBjb25zaWRlcmluZwo+Pj4+PiB3aGV0aGVyIHRo ZSBkZXZpY2UgaGFzIHRoZSBmYXN0IHNoYXJlZCBMTEMgdnMgc25vb3BpbmcuIFllcywgaXQncwo+ Pj4+PiBzbGlnaHRseSB1Z2x5IDopCj4+Pj4KPj4+PiBOb3QgZnVsbHkgZm9sbG93aW5nIC0gaWYg d2UgaGFkIHRvIHdyaXRlIGtlcm5lbGRvYyBmb3IgYWx3YXlzX2NvaGVyZW50Cj4+Pj4gaW5wdXQg YXJndW1lbnQgLSB3aGF0IGl0IHdvdWxkIHNheT8KPj4+Cj4+PiBAYWx3YXlzX2NvaGVyZW50IC0g SWYgdHJ1ZSB3ZSBzaG91bGQgYWx3YXlzIHRyeSB0byBtYXAgdGhlIG9iamVjdAo+Pj4gdXNpbmcg V0IuIElmIGZhbHNlIHdlIHNob3VsZCBvbmx5IG1hcCBhcyBXQiBpZiB0aGUgZGV2aWNlIHN1cHBv cnRzIHRoZQo+Pj4gZmFzdCBzaGFyZWQgTExDLCBpbiB0aGUgY2FzZSBvZiBzbm9vcGVkIGRldmlj ZXMgd2Ugd2lsbCBtYXAgdXNlIFdDLgo+Pj4gTm90ZSB0aGF0IElmIHRoZSByZXNvdXJjZSBpcyBs bWVtIHRoZW4gd2Ugd2lsbCBhbHdheXMgbWFwIGFzIFdDLAo+Pj4gcmVnYXJkbGVzcyBvZiB0aGUg dmFsdWUgb2YgYWx3YXlzX2NvaGVyZW50LCBzaW5jZSB0aGF0J3MgYWxsIHdlCj4+PiBjdXJyZW50 bHkgc3VwcG9ydC4KPj4+Cj4+PiBNYXliZSB0aGUgbmFtaW5nIGlzIHBvb3I/Cj4+Cj4+IE1heWJl IGp1c3QgY29uZnVzaW5nIHRvIG1lLCBub3Qgc3VyZSB5ZXQuCj4+Cj4+IFNvIGFsd2F5c19jb2hl cmVudCBpcyBub3QgYWJvdXQgaG93IHRoZSBjYWxsZXJzIHdhbnRzIHRvIHVzZSBpdCwgYnV0IAo+ PiBhYm91dCBwbGF0Zm9ybSBrbm93bGVkZ2U/IE9yIGEgcGVyZm9ybWFuY2UgY29uY2VybiBmb3Ig TExDIHZzIHNub29waW5nIAo+PiBjYXNlcz8gRG9lcyBXQiB3b3JrcyAoY29oZXJlbnRseSkgb24g c25vb3BpbmcgcGxhdGZvcm1zPwo+IAo+IFRoZSBhbHdheXNfY29oZXJlbnQ9dHJ1ZSBpcyBmb3Ig dGhlIGV4aXN0aW5nIGNhbGxlcnMgdGhhdCB3YW50IFdCLCAKPiByZWdhcmRsZXNzIG9mIExMQyB2 cyBzbm9vcGluZy4KPiAKPiBUaGUgb3RoZXIgY2FsbGVycyB1c2UgdGhlIGV4aXN0aW5nIGk5MTVf Y29oZXJlbnRfbWFwX3R5cGUoKSB3aGljaCBvbmx5IAo+IGdpdmVzIG91dCBXQiBmb3IgTExDIHBs YXRmb3Jtcy4KPiAKPiBBRkFJSywgTExDIHZzIHNub29waW5nIHNob3VsZCBvZmZlciB0aGUgc2Ft ZSBpbiB0ZXJtcyBvZiBjb2hlcmVuY3ksIGJ1dCAKPiBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSB0 aGUgc2hhcmVkIExMQyBpcyBtdWNoIGZhc3RlciwgYW5kIHNvIGZvciAKPiBzbm9vcGluZyBwbGF0 Zm9ybXMgd2UgY2hvb3NlIHRvIG5vdCBlbmFibGUgV0IgZXZlcnl3aGVyZS4KPiAKPiBPbiB0b3Ag b2YgdGhhdCB3ZSBub3cgaGF2ZSBsbWVtLCBidXQgZm9yIHRoYXQgd2Ugb25seSBhbGxvdyBXQy4g VGhpcyAKPiBwYXRjaCBqdXN0IHJvbGxzIGFsbCBvZiB0aGF0IGludG8gb25lIGhlbHBlciwgd2hp bGUga2VlcGluZyB0aGUgZXhpc3RpbmcgCj4gYmVoYXZpb3VyIHVuY2hhbmdlZC4KClRoYW5rcy4g QnV0IEkgYW0gc3RpbGwgc3RydWdnbGluZyB3aXRoIHRoZSBBUEkuIDooCgpJcyB0aGUgaW50cm9k dWN0aW9uIG9mIGFsd2F5c19jb2hlcmVudCBmbGFnIGluIHRoZSBjb250ZXh0IG9mIERHMSAKcmVx dWlyZWQgZXZlbj8gQUZBSUNUIGZvciBsbWVtIG9iamVjdHMgdGhlIGZsYWcgaXMgaWdub3JlZCBz byBubz8KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==