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=-15.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 5512AC433DB for ; Thu, 4 Mar 2021 12:42:16 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 EAE5364EE1 for ; Thu, 4 Mar 2021 12:42:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EAE5364EE1 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7CgQKmAZrA22cjaCI96P/nJHNDkUd4TGRDwBYzO2wJk=; b=ak1e3Sqm2Gh3WDMIFzwROWQPa ZeXC7EEgIu5vpyagv7ousHnEQsQRlml6kLbJtMY8gz571os3fp9WBQiYzYbzoOCOHCGwodfMw6wZZ qeGezp2s6kWtHLYIMxvlYo5fCdntr5K/ZqCoLwD3ONzRAge4pkJwJELTydhxyJVlo6C6W4cIHM5qs xNovewIvYvmMsAgSqJNnjO2JCRowhr2dKn1CVhDJgQWu2tFU6BroaJeqHJZkqwWbmN4riuHN1pki7 cutp6dP9/1CPpyiQsCcCWktLoF6PaQpSrNQFUJLhSbSRnFa4NQaMijKgIl6KTvkno5I6IpH7A/raI O2Mt6vfCA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lHnIn-008e7Y-Ew; Thu, 04 Mar 2021 12:42:04 +0000 Received: from mx2.suse.de ([195.135.220.15]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lHnIa-008e6P-Rl for linux-nvme@lists.infradead.org; Thu, 04 Mar 2021 12:41:53 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 053CEAE47; Thu, 4 Mar 2021 12:41:48 +0000 (UTC) Subject: Re: [PATCH v8 10/16] lpfc: vmid: Functions to manage vmids To: Muneendra , linux-block@vger.kernel.org, linux-scsi@vger.kernel.org, tj@kernel.org, linux-nvme@lists.infradead.org Cc: jsmart2021@gmail.com, emilne@redhat.com, mkumar@redhat.com, Gaurav Srivastava References: <1614835646-16217-1-git-send-email-muneendra.kumar@broadcom.com> <1614835646-16217-11-git-send-email-muneendra.kumar@broadcom.com> From: Hannes Reinecke Message-ID: <57930010-ab0a-0d95-210b-3b578fd649ff@suse.de> Date: Thu, 4 Mar 2021 13:41:47 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <1614835646-16217-11-git-send-email-muneendra.kumar@broadcom.com> Content-Language: en-US X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org T24gMy80LzIxIDY6MjcgQU0sIE11bmVlbmRyYSB3cm90ZToKPiBGcm9tOiBHYXVyYXYgU3JpdmFz dGF2YSA8Z2F1cmF2LnNyaXZhc3RhdmFAYnJvYWRjb20uY29tPgo+IAo+IFRoaXMgcGF0Y2ggY29u dGFpbnMgdGhlIHJvdXRpbmVzIHRvIHNhdmUsIHJldHJpZXZlIGFuZCByZW1vdmUgdGhlIHZtaWRz Cj4gZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUuIEEgaGFzaCB0YWJsZSBpcyB1c2VkIHRvIHNhdmUg dGhlIHZtaWRzIGFuZAo+IHRoZSBjb3JyZXNwb25kaW5nIFVVSURzIGFzc29jaWF0ZWQgd2l0aCB0 aGUgYXBwbGljYXRpb24vVk1zLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEdhdXJhdiBTcml2YXN0YXZh ICA8Z2F1cmF2LnNyaXZhc3RhdmFAYnJvYWRjb20uY29tPgo+IFNpZ25lZC1vZmYtYnk6IEphbWVz IFNtYXJ0IDxqc21hcnQyMDIxQGdtYWlsLmNvbT4KPiAKPiAtLS0KPiB2ODoKPiBBZGRlZCBjb3Jy ZWN0IHJldHVybiB2YWx1ZSBhbmQgZXJyb3IgY29kZXMKPiAKPiB2NzoKPiBObyBjaGFuZ2UKPiAK PiB2NjoKPiBBZGRlZCBGb3J3YXJkIGRlY2xhcmF0aW9ucyBhbmQgZnVuY3Rpb25zIHRvIHN0YXRp Ywo+IAo+IHY1Ogo+IENoYW5nZWQgUmV0dXJuIGNvZGUgdG8gbm9uLW51bWVyaWMvU3ltYm9sCj4g Cj4gdjQ6Cj4gTm8gY2hhbmdlCj4gCj4gdjM6Cj4gTm8gY2hhbmdlCj4gCj4gdjI6Cj4gUG9ydGVk IHRoZSBwYXRjaCBvbiB0b3Agb2YgNS4xMC9zY3NpLXF1ZXVlCj4gLS0tCj4gICBkcml2ZXJzL3Nj c2kvbHBmYy9scGZjX3Njc2kuYyB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gICAxIGZpbGUgY2hhbmdlZCwgMTQ4IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZj X3Njc2kuYwo+IGluZGV4IGU5NmU3NjdmYWEyYS4uYjcxNjAyODc4NTU5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2NzaS5jCj4gKysrIGIvZHJpdmVycy9zY3NpL2xwZmMv bHBmY19zY3NpLmMKPiBAQCAtMjgsNiArMjgsNyBAQAo+ICAgI2luY2x1ZGUgPGFzbS91bmFsaWdu ZWQuaD4KPiAgICNpbmNsdWRlIDxsaW51eC90MTAtcGkuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9j cmMtdDEwZGlmLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9ibGstY2dyb3VwLmg+Cj4gICAjaW5jbHVk ZSA8bmV0L2NoZWNrc3VtLmg+Cj4gICAKPiAgICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KPiBAQCAt ODYsNiArODcsMTQgQEAgc3RhdGljIHZvaWQKPiAgIGxwZmNfcmVsZWFzZV9zY3NpX2J1Zl9zMyhz dHJ1Y3QgbHBmY19oYmEgKnBoYmEsIHN0cnVjdCBscGZjX2lvX2J1ZiAqcHNiKTsKPiAgIHN0YXRp YyBpbnQKPiAgIGxwZmNfcHJvdF9ncm91cF90eXBlKHN0cnVjdCBscGZjX2hiYSAqcGhiYSwgc3Ry dWN0IHNjc2lfY21uZCAqc2MpOwo+ICtzdGF0aWMgaW50Cj4gK2xwZmNfcHV0X3ZtaWRfaW5faGFz aHRhYmxlKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9ydCwgdTMyIGhhc2gsCj4gKwkJCSAgIHN0cnVj dCBscGZjX3ZtaWQgKnZtcCk7Cj4gK3N0YXRpYyB2b2lkIGxwZmNfdm1pZF91cGRhdGVfZW50cnko c3RydWN0IGxwZmNfdnBvcnQgKnZwb3J0LCBzdHJ1Y3Qgc2NzaV9jbW5kCj4gKwkJCQkgICAqY21k LCBzdHJ1Y3QgbHBmY192bWlkICp2bXAsCj4gKwkJCQkgICB1bmlvbiBscGZjX3ZtaWRfaW9fdGFn ICp0YWcpOwo+ICtzdGF0aWMgdm9pZCBscGZjX3ZtaWRfYXNzaWduX2NzX2N0bChzdHJ1Y3QgbHBm Y192cG9ydCAqdnBvcnQsCj4gKwkJCQkgICAgc3RydWN0IGxwZmNfdm1pZCAqdm1pZCk7Cj4gICAK PiAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQKPiAgIGxwZmNfY21kX2Jsa3NpemUoc3RydWN0IHNj c2lfY21uZCAqc2MpCj4gQEAgLTUxMzEsNiArNTE0MCwxNDUgQEAgdm9pZCBscGZjX3BvbGxfdGlt ZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKPiAgIAl9Cj4gICB9Cj4gICAKPiArLyoKPiArICog bHBmY19nZXRfdm1pZF9mcm9tX2hhc3RhYmxlIC0gc2VhcmNoIHRoZSBVVUlEIGluIHRoZSBoYXNo IHRhYmxlCgpTaG91bGQgYmUgJ2xwZmNfZ2V0X3ZtaWRfZnJvbV9oYXNodGFibGUoKScuCgo+ICsg KiBAdnBvcnQ6IFRoZSB2aXJ0dWFsIHBvcnQgZm9yIHdoaWNoIHRoaXMgY2FsbCBpcyBiZWluZyBl eGVjdXRlZC4KPiArICogQGhhc2g6IGNhbGN1bGF0ZWQgaGFzaCB2YWx1ZQo+ICsgKiBAYnVmOiB1 dWlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgVkUKPiArICogUmV0dXJucyB0aGUgdm1pZCBlbnRyeSBh c3NvY2lhdGVkIHdpdGggdGhlIFVVSUQKPiArICogTWFrZSBzdXJlIHRvIGFjcXVpcmUgdGhlIGFw cHJvcHJpYXRlIGxvY2sgYmVmb3JlIGludm9raW5nIHRoaXMgcm91dGluZS4KPiArICovCj4gK3N0 cnVjdCBscGZjX3ZtaWQgKmxwZmNfZ2V0X3ZtaWRfZnJvbV9oYXN0YWJsZShzdHJ1Y3QgbHBmY192 cG9ydCAqdnBvcnQsCj4gKwkJCQkJICAgICAgdTMyIGhhc2gsIHU4ICpidWYpCj4gK3sKPiArCXN0 cnVjdCBscGZjX3ZtaWQgKnZtcDsKPiArCXUxNiBjb3VudCA9IDA7Cj4gKwo+ICsJd2hpbGUgKGNv dW50IDwgTFBGQ19WTUlEX0hBU0hfU0laRSkgewo+ICsJCXZtcCA9IHZwb3J0LT5oYXNoX3RhYmxl W2hhc2hdOwo+ICsJCWlmICh2bXApIHsKPiArCQkJaWYgKHN0cm5jbXAoJnZtcC0+aG9zdF92bWlk WzBdLCBidWYsIDE2KSA9PSAwKQo+ICsJCQkJcmV0dXJuIHZtcDsKPiArCQl9IGVsc2Ugewo+ICsJ CQlyZXR1cm4gTlVMTDsKPiArCQl9Cj4gKwkJLyogc2VhcmNoIHRoZSBuZXh0IGF2YWlsYWJsZSBz bG90IGFuZCBjb250aW51ZSB0aWxsIGVudHJ5ICovCj4gKwkJLyogaXMgZm91bmQgKi8KPiArCQlj b3VudCsrOwo+ICsJCWhhc2grKzsKPiArCj4gKwkJLyogb3IgdGhlIGVuZCBpcyByZWFjaGVkICov Cj4gKwkJaWYgKGhhc2ggPT0gTFBGQ19WTUlEX0hBU0hfU0laRSkKPiArCQkJaGFzaCA9IDA7Cj4g Kwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArLyoKPiArICogbHBmY19wdXRfdm1pZF9m cm9tX2hhc3RhYmxlIC0gcHV0IHRoZSBWTUlEIGluIHRoZSBoYXNoIHRhYmxlCj4gKyAqIEB2cG9y dDogVGhlIHZpcnR1YWwgcG9ydCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVk Lgo+ICsgKiBAaGFzaCAtIGNhbGN1bGF0ZWQgaGFzaCB2YWx1ZQo+ICsgKiBAdm1wOiBQb2ludGVy IHRvIGEgVk1JRCBlbnRyeSByZXByZXNlbnRpbmcgYSBWTSBzZW5kaW5nIElPCj4gKyAqCj4gKyAq IFRoaXMgcm91dGluZSB3aWxsIGluc2VydCB0aGUgbmV3bHkgYWNxdWlyZWQgdm1pZCBlbnRpdHkg aW4gdGhlIGhhc2ggdGFibGUuCj4gKyAqIE1ha2Ugc3VyZSB0byBhY3F1aXJlIHRoZSBhcHByb3By aWF0ZSBsb2NrIGJlZm9yZSBpbnZva2luZyB0aGlzIHJvdXRpbmUuCj4gKyAqLwo+ICtzdGF0aWMg aW50Cj4gK2xwZmNfcHV0X3ZtaWRfaW5faGFzaHRhYmxlKHN0cnVjdCBscGZjX3Zwb3J0ICp2cG9y dCwgdTMyIGhhc2gsCj4gKwkJCSAgIHN0cnVjdCBscGZjX3ZtaWQgKnZtcCkKPiArewo+ICsJaW50 IGNvdW50ID0gMDsKPiArCj4gKwl3aGlsZSAoY291bnQgPCBMUEZDX1ZNSURfSEFTSF9TSVpFKSB7 Cj4gKwkJaWYgKCF2cG9ydC0+aGFzaF90YWJsZVtoYXNoXSkgewo+ICsJCQl2cG9ydC0+aGFzaF90 YWJsZVtoYXNoXSA9IHZtcDsKPiArCQkJdm1wLT5oYXNoX2luZGV4ID0gaGFzaDsKPiArCQkJcmV0 dXJuIDA7Cj4gKwkJfQo+ICsJCS8qIGlmIHRoZSBzbG90IGlzIGFscmVhZHkgb2NjdXBpZWQsIGEg Y29sbGlzaW9uIGhhcyBvY2N1cnJlZC4gKi8KPiArCQkvKiBTdG9yZSBpbiB0aGUgbmV4dCBhdmFp bGFibGUgc2xvdCAqLwo+ICsJCWNvdW50Kys7Cj4gKwkJaGFzaCsrOwo+ICsJCS8qIHRhYmxlIGlz IGZ1bGwgKi8KPiArCQlpZiAoaGFzaCA9PSBMUEZDX1ZNSURfSEFTSF9TSVpFKQo+ICsJCQloYXNo ID0gMDsKPiArCX0KPiArCXJldHVybiAtRU5PTUVNOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBscGZj X3ZtaWRfaGFzaF9mbiAtIGNyZWF0ZXMgYSBoYXNoIHZhbHVlIG9mIHRoZSBVVUlECj4gKyAqIEB2 bWlkOiB1dWlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgVkUKPiArICogQGxlbjogbGVuZ3RoIG9mIHRo ZSB2bWlkIHN0cmluZwo+ICsgKiBSZXR1cm5zIHRoZSBjYWxjdWxhdGVkIGhhc2ggdmFsdWUKPiAr ICovCj4gK2ludCBscGZjX3ZtaWRfaGFzaF9mbihjb25zdCBjaGFyICp2bWlkLCBpbnQgbGVuKQo+ ICt7Cj4gKwlpbnQgYzsKPiArCWludCBoYXNoID0gMDsKPiArCj4gKwlpZiAobGVuID09IDApCj4g KwkJcmV0dXJuIDA7Cj4gKwl3aGlsZSAobGVuLS0pIHsKPiArCQljID0gKnZtaWQrKzsKPiArCQlp ZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCj4gKwkJCWMgKz0gJ2EnIC0gJ0EnOwo+ICsKPiArCQlo YXNoID0gKGhhc2ggKyAoYyA8PCBMUEZDX1ZNSURfSEFTSF9TSElGVCkgKwo+ICsJCQkoYyA+PiBM UEZDX1ZNSURfSEFTSF9TSElGVCkpICogMTk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGhhc2ggJiBM UEZDX1ZNSURfSEFTSF9NQVNLOwo+ICt9Cj4gKwoKQW55IHBhcnRpY3VsYXIgcmVhc29uIHdoeSB5 b3UgZGlkbid0IHVzZSBhIGdlbmVyaWMgaGFzaHRhYmxlIAppbXBsZW1lbnRhdGlvbiBoZXJlPwoo Y2YgaW5jbHVkZS9saW51eC9oYXNodGFibGUuaCkKCj4gKy8qCj4gKyAqIGxwZmNfdm1pZF91cGRh dGVfZW50cnkgLSB1cGRhdGUgdGhlIHZtaWQgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUKPiArICog QHZwb3J0OiBUaGUgdmlydHVhbCBwb3J0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhl Y3V0ZWQuCj4gKyAqIEBjbWQ6IGFkZHJlc3Mgb2Ygc2NzaSBjbW1kIGRlc2NyaXB0b3IKPiArICog QHZtcDogUG9pbnRlciB0byBhIFZNSUQgZW50cnkgcmVwcmVzZW50aW5nIGEgVk0gc2VuZGluZyBJ Two+ICsgKiBAdGFnOiBWTUlEIHRhZwo+ICsgKi8KPiArc3RhdGljIHZvaWQgbHBmY192bWlkX3Vw ZGF0ZV9lbnRyeShzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsIHN0cnVjdCBzY3NpX2NtbmQKPiAr CQkJCSAgICpjbWQsIHN0cnVjdCBscGZjX3ZtaWQgKnZtcCwKPiArCQkJCSAgIHVuaW9uIGxwZmNf dm1pZF9pb190YWcgKnRhZykKPiArewo+ICsJdTY0ICpsdGE7Cj4gKwo+ICsJaWYgKHZwb3J0LT52 bWlkX3ByaW9yaXR5X3RhZ2dpbmcpCj4gKwkJdGFnLT5jc19jdGxfdm1pZCA9IHZtcC0+dW4uY3Nf Y3RsX3ZtaWQ7Cj4gKwllbHNlCj4gKwkJdGFnLT5hcHBfaWQgPSB2bXAtPnVuLmFwcF9pZDsKPiAr Cj4gKwlpZiAoY21kLT5zY19kYXRhX2RpcmVjdGlvbiA9PSBETUFfVE9fREVWSUNFKQo+ICsJCXZt cC0+aW9fd3JfY250Kys7Cj4gKwllbHNlCj4gKwkJdm1wLT5pb19yZF9jbnQrKzsKPiArCj4gKwkv KiB1cGRhdGUgdGhlIGxhc3QgYWNjZXNzIHRpbWVzdGFtcCBpbiB0aGUgdGFibGUgKi8KPiArCWx0 YSA9IHBlcl9jcHVfcHRyKHZtcC0+bGFzdF9pb190aW1lLCByYXdfc21wX3Byb2Nlc3Nvcl9pZCgp KTsKPiArCSpsdGEgPSBqaWZmaWVzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBscGZjX3ZtaWRf YXNzaWduX2NzX2N0bChzdHJ1Y3QgbHBmY192cG9ydCAqdnBvcnQsCj4gKwkJCQkgICAgc3RydWN0 IGxwZmNfdm1pZCAqdm1pZCkKPiArewo+ICsJdTMyIGhhc2g7Cj4gKwlzdHJ1Y3QgbHBmY192bWlk ICpwdm1pZDsKPiArCj4gKwlpZiAodnBvcnQtPnBvcnRfdHlwZSA9PSBMUEZDX1BIWVNJQ0FMX1BP UlQpIHsKPiArCQl2bWlkLT51bi5jc19jdGxfdm1pZCA9IGxwZmNfdm1pZF9nZXRfY3NfY3RsKHZw b3J0KTsKPiArCX0gZWxzZSB7Cj4gKwkJaGFzaCA9IGxwZmNfdm1pZF9oYXNoX2ZuKHZtaWQtPmhv c3Rfdm1pZCwgdm1pZC0+dm1pZF9sZW4pOwo+ICsJCXB2bWlkID0KPiArCQkgICAgbHBmY19nZXRf dm1pZF9mcm9tX2hhc3RhYmxlKHZwb3J0LT5waGJhLT5wcG9ydCwgaGFzaCwKPiArCQkJCQkJdm1p ZC0+aG9zdF92bWlkKTsKPiArCQlpZiAocHZtaWQpCj4gKwkJCXZtaWQtPnVuLmNzX2N0bF92bWlk ID0gcHZtaWQtPnVuLmNzX2N0bF92bWlkOwo+ICsJCWVsc2UKPiArCQkJdm1pZC0+dW4uY3NfY3Rs X3ZtaWQgPSBscGZjX3ZtaWRfZ2V0X2NzX2N0bCh2cG9ydCk7Cj4gKwl9Cj4gK30KPiArCj4gICAv KioKPiAgICAqIGxwZmNfcXVldWVjb21tYW5kIC0gc2NzaV9ob3N0X3RlbXBsYXRlIHF1ZXVlY29t bWFuZCBlbnRyeSBwb2ludAo+ICAgICogQHNob3N0OiBrZXJuZWwgc2NzaSBob3N0IHBvaW50ZXIu Cj4gCkNoZWVycywKCkhhbm5lcwotLSAKRHIuIEhhbm5lcyBSZWluZWNrZSAgICAgICAgICAgICAg ICBLZXJuZWwgU3RvcmFnZSBBcmNoaXRlY3QKaGFyZUBzdXNlLmRlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKzQ5IDkxMSA3NDA1MyA2ODgKU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR21i SCwgTWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnCkhSQiAzNjgwOSAoQUcgTsO8cm5iZXJn KSwgR2VzY2jDpGZ0c2bDvGhyZXI6IEZlbGl4IEltZW5kw7ZyZmZlcgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbnZtZSBtYWlsaW5nIGxpc3QK TGludXgtbnZtZUBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3Jn L21haWxtYW4vbGlzdGluZm8vbGludXgtbnZtZQo=