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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76963C433EF for ; Wed, 13 Oct 2021 09:46:46 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (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 A035E60F21 for ; Wed, 13 Oct 2021 09:46:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A035E60F21 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-275-EcEc_S4hMoq0vDtfwRbccQ-1; Wed, 13 Oct 2021 05:46:41 -0400 X-MC-Unique: EcEc_S4hMoq0vDtfwRbccQ-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0C1A48BD960; Wed, 13 Oct 2021 09:46:38 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E4BDF60C5F; Wed, 13 Oct 2021 09:46:37 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 07C341806D00; Wed, 13 Oct 2021 09:46:37 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 19D9in2O015794 for ; Wed, 13 Oct 2021 05:44:49 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5D2C9404727A; Wed, 13 Oct 2021 09:44:49 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5902B4047272 for ; Wed, 13 Oct 2021 09:44:49 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 390A9899ECD for ; Wed, 13 Oct 2021 09:44:49 +0000 (UTC) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-aMmxzEx2Mzuzmv77x1t3Kw-1; Wed, 13 Oct 2021 05:44:47 -0400 X-MC-Unique: aMmxzEx2Mzuzmv77x1t3Kw-1 Received: from dggeme762-chm.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4HTnZQ1sD3zbn3P; Wed, 13 Oct 2021 17:40:14 +0800 (CST) Received: from [10.67.110.176] (10.67.110.176) by dggeme762-chm.china.huawei.com (10.3.19.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.8; Wed, 13 Oct 2021 17:44:42 +0800 Subject: Re: [PATCH -next] audit: return early if the rule has a lower priority To: Dan Carpenter , , Richard Guy Briggs , , References: <202110130344.odiZFWOO-lkp@intel.com> From: cuigaosheng Message-ID: <2346b716-b705-47cd-e884-244b59342f82@huawei.com> Date: Wed, 13 Oct 2021 17:44:41 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: <202110130344.odiZFWOO-lkp@intel.com> X-Originating-IP: [10.67.110.176] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To dggeme762-chm.china.huawei.com (10.3.19.108) X-CFilter-Loop: Reflected X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 19D9in2O015794 X-loop: linux-audit@redhat.com Cc: kbuild-all@lists.01.org, lkp@intel.com, xiujianfeng@huawei.com, linux-kernel@vger.kernel.org, wangweiyang2@huawei.com, linux-audit@redhat.com X-BeenThere: linux-audit@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Linux Audit Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=linux-audit-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" SSBoYXZlIHJlc3VibWl0dGVkIGEgcGF0Y2ggdG8gZml4IHRoZSBpc3N1ZSwgdGhhbmtzIGZvciB5 b3VyIGFkdmljZS4KCmh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1h dWRpdC9saXN0Lz9zZXJpZXM9NTYyNTA3IAo8aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9w cm9qZWN0L2xpbnV4LWF1ZGl0L2xpc3QvP3Nlcmllcz01NjI1MDc+CgpDaGVlcnMsCgrlnKggMjAy MS8xMC8xMyAxNToxNiwgRGFuIENhcnBlbnRlciDlhpnpgZM6Cj4gWyBJdCdzIEdhb3NoZW5nJ3Mg cGF0Y2ggd2hpY2ggdHJpZ2dlcnMgdGhlIHdhcm5pbmcgYnV0IEkgdGhpbmsgaXQncwo+ICAgIGFj dHVhbGx5IHRoZSBkZXJlZmVyZW5jZSB3aGljaCBzaG91bGQgYmUgY2hhbmdlZC4gIEkndmUgYWRk ZWQgUmljaGFyZAo+ICAgIHRvIHRoZSBDQyBsaXN0LiAtZGFuIF0KPgo+IEhpIEdhb3NoZW5nLAo+ Cj4gdXJsOiAgICBodHRwczovL2dpdGh1Yi5jb20vMGRheS1jaS9saW51eC9jb21taXRzL0dhb3No ZW5nLUN1aS9hdWRpdC1yZXR1cm4tZWFybHktaWYtdGhlLXJ1bGUtaGFzLWEtbG93ZXItcHJpb3Jp dHkvMjAyMTEwMTItMDkzMTAyCj4gYmFzZTogICAgZDMxMzRlYjVkZTg1NDZhMjE0YzAyOGZiNzE5 NWU3NjRiODlkYTdkNAo+IGNvbmZpZzogeDg2XzY0LXJhbmRjb25maWctbTAwMS0yMDIxMTAxMiAo YXR0YWNoZWQgYXMgLmNvbmZpZykKPiBjb21waWxlcjogZ2NjLTkgKERlYmlhbiA5LjMuMC0yMikg OS4zLjAKPgo+IElmIHlvdSBmaXggdGhlIGlzc3VlLCBraW5kbHkgYWRkIGZvbGxvd2luZyB0YWcg YXMgYXBwcm9wcmlhdGUKPiBSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgPGxrcEBpbnRl bC5jb20+Cj4gUmVwb3J0ZWQtYnk6IERhbiBDYXJwZW50ZXIgPGRhbi5jYXJwZW50ZXJAb3JhY2xl LmNvbT4KPgo+IHNtYXRjaCB3YXJuaW5nczoKPiBrZXJuZWwvYXVkaXRzYy5jOjY1MyBhdWRpdF9m aWx0ZXJfcnVsZXMoKSBlcnJvcjogd2UgcHJldmlvdXNseSBhc3N1bWVkICdjdHgnIGNvdWxkIGJl IG51bGwgKHNlZSBsaW5lIDQ3MykKPgo+IHZpbSArL2N0eCArNjUzIGtlcm5lbC9hdWRpdHNjLmMK Pgo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA0NjEgIHN0 YXRpYyBpbnQgYXVkaXRfZmlsdGVyX3J1bGVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLAo+IDkz MzE1ZWQ2ZGQxMmRhIEFteSBHcmlmZmlzICAgICAgICAyMDA2LTAyLTA3ICA0NjIgIAkJCSAgICAg IHN0cnVjdCBhdWRpdF9rcnVsZSAqcnVsZSwKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxk cyAgICAgMjAwNS0wNC0xNiAgNDYzICAJCQkgICAgICBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqY3R4 LAo+IGYzNjhjMDdkNzIxNGE3IEFteSBHcmlmZmlzICAgICAgICAyMDA2LTA0LTA3ICA0NjQgIAkJ CSAgICAgIHN0cnVjdCBhdWRpdF9uYW1lcyAqbmFtZSwKPiBmNTYyOTg4MzUwMzYxYiBUb255IEpv bmVzICAgICAgICAgMjAxMS0wNC0yNyAgNDY1ICAJCQkgICAgICBlbnVtIGF1ZGl0X3N0YXRlICpz dGF0ZSwKPiBmNTYyOTg4MzUwMzYxYiBUb255IEpvbmVzICAgICAgICAgMjAxMS0wNC0yNyAgNDY2 ICAJCQkgICAgICBib29sIHRhc2tfY3JlYXRpb24pCj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9y dmFsZHMgICAgIDIwMDUtMDQtMTYgIDQ2NyAgewo+IGY1NjI5ODgzNTAzNjFiIFRvbnkgSm9uZXMg ICAgICAgICAyMDExLTA0LTI3ICA0NjggIAljb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZDsKPiA1MTk1 ZDhlMjE3YTc4NiBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNDY5ICAJaW50IGksIG5l ZWRfc2lkID0gMTsKPiAzZGM3ZTMxNTNlZGRmYyBEYXJyZWwgR29lZGRlbCAgICAgMjAwNi0wMy0x MCAgNDcwICAJdTMyIHNpZDsKPiA4ZmFlNDc3MDU2ODVmYyBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAx Ni0xMS0yMCAgNDcxICAJdW5zaWduZWQgaW50IHNlc3Npb25pZDsKPiAzZGM3ZTMxNTNlZGRmYyBE YXJyZWwgR29lZGRlbCAgICAgMjAwNi0wMy0xMCAgNDcyCj4gMDQ2YThlNDZlZWZiOWQgR2Fvc2hl bmcgQ3VpICAgICAgIDIwMjEtMTAtMTIgQDQ3MyAgCWlmIChjdHggJiYgcnVsZS0+cHJpbyA8PSBj dHgtPnByaW8pCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5eXgo+IENoZWNrZWQgaGVyZS4KPgo+IDA0NmE4ZTQ2ZWVmYjlkIEdh b3NoZW5nIEN1aSAgICAgICAyMDIxLTEwLTEyICA0NzQgIAkJcmV0dXJuIDA7Cj4gMDQ2YThlNDZl ZWZiOWQgR2Fvc2hlbmcgQ3VpICAgICAgIDIwMjEtMTAtMTIgIDQ3NQo+IGY1NjI5ODgzNTAzNjFi IFRvbnkgSm9uZXMgICAgICAgICAyMDExLTA0LTI3ICA0NzYgIAljcmVkID0gcmN1X2RlcmVmZXJl bmNlX2NoZWNrKHRzay0+Y3JlZCwgdHNrID09IGN1cnJlbnQgfHwgdGFza19jcmVhdGlvbik7Cj4g ZjU2Mjk4ODM1MDM2MWIgVG9ueSBKb25lcyAgICAgICAgIDIwMTEtMDQtMjcgIDQ3Nwo+IF4xZGEx NzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA0NzggIAlmb3IgKGkgPSAw OyBpIDwgcnVsZS0+ZmllbGRfY291bnQ7IGkrKykgewo+IDkzMzE1ZWQ2ZGQxMmRhIEFteSBHcmlm ZmlzICAgICAgICAyMDA2LTAyLTA3ICA0NzkgIAkJc3RydWN0IGF1ZGl0X2ZpZWxkICpmID0gJnJ1 bGUtPmZpZWxkc1tpXTsKPiA1MTk1ZDhlMjE3YTc4NiBFcmljIFBhcmlzICAgICAgICAgMjAxMi0w MS0wMyAgNDgwICAJCXN0cnVjdCBhdWRpdF9uYW1lcyAqbjsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51 cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNDgxICAJCWludCByZXN1bHQgPSAwOwo+IGYxZGM0 ODY3ZmY0MWI3IFJpY2hhcmQgR3V5IEJyaWdncyAyMDEzLTEyLTExICA0ODIgIAkJcGlkX3QgcGlk Owo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA0ODMKPiA5 MzMxNWVkNmRkMTJkYSBBbXkgR3JpZmZpcyAgICAgICAgMjAwNi0wMi0wNyAgNDg0ICAJCXN3aXRj aCAoZi0+dHlwZSkgewo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0 LTE2ICA0ODUgIAkJY2FzZSBBVURJVF9QSUQ6Cj4gZmEyYmVhMmY1Y2NhNWIgUGF1bCBNb29yZSAg ICAgICAgIDIwMTYtMDgtMzAgIDQ4NiAgCQkJcGlkID0gdGFza190Z2lkX25yKHRzayk7Cj4gZjFk YzQ4NjdmZjQxYjcgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTMtMTItMTEgIDQ4NyAgCQkJcmVzdWx0 ID0gYXVkaXRfY29tcGFyYXRvcihwaWQsIGYtPm9wLCBmLT52YWwpOwo+IF4xZGExNzdlNGMzZjQx IExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA0ODggIAkJCWJyZWFrOwo+IDNjNjYyNTFl NTczMjE5IEFsIFZpcm8gICAgICAgICAgICAyMDA2LTA1LTA2ICA0ODkgIAkJY2FzZSBBVURJVF9Q UElEOgo+IDQxOWM1OGYxMWZiNzMyIEFsZXhhbmRlciBWaXJvICAgICAyMDA2LTA5LTI5ICA0OTAg IAkJCWlmIChjdHgpIHsKPiA0MTljNThmMTFmYjczMiBBbGV4YW5kZXIgVmlybyAgICAgMjAwNi0w OS0yOSAgNDkxICAJCQkJaWYgKCFjdHgtPnBwaWQpCj4gYzkyY2RlYjQ1ZWVhMzggUmljaGFyZCBH dXkgQnJpZ2dzIDIwMTMtMTItMTAgIDQ5MiAgCQkJCQljdHgtPnBwaWQgPSB0YXNrX3BwaWRfbnIo dHNrKTsKPiAzYzY2MjUxZTU3MzIxOSBBbCBWaXJvICAgICAgICAgICAgMjAwNi0wNS0wNiAgNDkz ICAJCQkJcmVzdWx0ID0gYXVkaXRfY29tcGFyYXRvcihjdHgtPnBwaWQsIGYtPm9wLCBmLT52YWwp Owo+IDQxOWM1OGYxMWZiNzMyIEFsZXhhbmRlciBWaXJvICAgICAyMDA2LTA5LTI5ICA0OTQgIAkJ CX0KPiAzYzY2MjUxZTU3MzIxOSBBbCBWaXJvICAgICAgICAgICAgMjAwNi0wNS0wNiAgNDk1ICAJ CQlicmVhazsKPiAzNGQ5OWFmNTJhZDQwYiBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxNS0wOC0wNSAg NDk2ICAJCWNhc2UgQVVESVRfRVhFOgo+IDM0ZDk5YWY1MmFkNDBiIFJpY2hhcmQgR3V5IEJyaWdn cyAyMDE1LTA4LTA1ICA0OTcgIAkJCXJlc3VsdCA9IGF1ZGl0X2V4ZV9jb21wYXJlKHRzaywgcnVs ZS0+ZXhlKTsKPiAyM2JjYzQ4MGRhYzIwNCBPbmRyZWogTW9zbsOhxI1layAgICAyMDE4LTA0LTA5 ICA0OTggIAkJCWlmIChmLT5vcCA9PSBBdWRpdF9ub3RfZXF1YWwpCj4gMjNiY2M0ODBkYWMyMDQg T25kcmVqIE1vc27DocSNZWsgICAgMjAxOC0wNC0wOSAgNDk5ICAJCQkJcmVzdWx0ID0gIXJlc3Vs dDsKPiAzNGQ5OWFmNTJhZDQwYiBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxNS0wOC0wNSAgNTAwICAJ CQlicmVhazsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAg NTAxICAJCWNhc2UgQVVESVRfVUlEOgo+IGNhNTdlYzBmMDBjM2YxIEVyaWMgVy4gQmllZGVybWFu ICAyMDEyLTA5LTExICA1MDIgIAkJCXJlc3VsdCA9IGF1ZGl0X3VpZF9jb21wYXJhdG9yKGNyZWQt PnVpZCwgZi0+b3AsIGYtPnVpZCk7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAg IDIwMDUtMDQtMTYgIDUwMyAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFs ZHMgICAgIDIwMDUtMDQtMTYgIDUwNCAgCQljYXNlIEFVRElUX0VVSUQ6Cj4gY2E1N2VjMGYwMGMz ZjEgRXJpYyBXLiBCaWVkZXJtYW4gIDIwMTItMDktMTEgIDUwNSAgCQkJcmVzdWx0ID0gYXVkaXRf dWlkX2NvbXBhcmF0b3IoY3JlZC0+ZXVpZCwgZi0+b3AsIGYtPnVpZCk7Cj4gXjFkYTE3N2U0YzNm NDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDUwNiAgCQkJYnJlYWs7Cj4gXjFkYTE3 N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDUwNyAgCQljYXNlIEFVRElU X1NVSUQ6Cj4gY2E1N2VjMGYwMGMzZjEgRXJpYyBXLiBCaWVkZXJtYW4gIDIwMTItMDktMTEgIDUw OCAgCQkJcmVzdWx0ID0gYXVkaXRfdWlkX2NvbXBhcmF0b3IoY3JlZC0+c3VpZCwgZi0+b3AsIGYt PnVpZCk7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDUw OSAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQt MTYgIDUxMCAgCQljYXNlIEFVRElUX0ZTVUlEOgo+IGNhNTdlYzBmMDBjM2YxIEVyaWMgVy4gQmll ZGVybWFuICAyMDEyLTA5LTExICA1MTEgIAkJCXJlc3VsdCA9IGF1ZGl0X3VpZF9jb21wYXJhdG9y KGNyZWQtPmZzdWlkLCBmLT5vcCwgZi0+dWlkKTsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2 YWxkcyAgICAgMjAwNS0wNC0xNiAgNTEyICAJCQlicmVhazsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51 cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTEzICAJCWNhc2UgQVVESVRfR0lEOgo+IGNhNTdl YzBmMDBjM2YxIEVyaWMgVy4gQmllZGVybWFuICAyMDEyLTA5LTExICA1MTQgIAkJCXJlc3VsdCA9 IGF1ZGl0X2dpZF9jb21wYXJhdG9yKGNyZWQtPmdpZCwgZi0+b3AsIGYtPmdpZCk7Cj4gMzdlZWJl MzljOTczMWEgTWF0dmVqY2hpa292IElseWEgIDIwMTEtMTItMTMgIDUxNSAgCQkJaWYgKGYtPm9w ID09IEF1ZGl0X2VxdWFsKSB7Cj4gMzdlZWJlMzljOTczMWEgTWF0dmVqY2hpa292IElseWEgIDIw MTEtMTItMTMgIDUxNiAgCQkJCWlmICghcmVzdWx0KQo+IGFmODVkMTc3MmUzMWZlIE9uZHJlaiBN b3Nuw6HEjWVrICAgIDIwMTgtMDYtMDUgIDUxNyAgCQkJCQlyZXN1bHQgPSBncm91cHNfc2VhcmNo KGNyZWQtPmdyb3VwX2luZm8sIGYtPmdpZCk7Cj4gMzdlZWJlMzljOTczMWEgTWF0dmVqY2hpa292 IElseWEgIDIwMTEtMTItMTMgIDUxOCAgCQkJfSBlbHNlIGlmIChmLT5vcCA9PSBBdWRpdF9ub3Rf ZXF1YWwpIHsKPiAzN2VlYmUzOWM5NzMxYSBNYXR2ZWpjaGlrb3YgSWx5YSAgMjAxMS0xMi0xMyAg NTE5ICAJCQkJaWYgKHJlc3VsdCkKPiBhZjg1ZDE3NzJlMzFmZSBPbmRyZWogTW9zbsOhxI1layAg ICAyMDE4LTA2LTA1ICA1MjAgIAkJCQkJcmVzdWx0ID0gIWdyb3Vwc19zZWFyY2goY3JlZC0+Z3Jv dXBfaW5mbywgZi0+Z2lkKTsKPiAzN2VlYmUzOWM5NzMxYSBNYXR2ZWpjaGlrb3YgSWx5YSAgMjAx MS0xMi0xMyAgNTIxICAJCQl9Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIw MDUtMDQtMTYgIDUyMiAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMg ICAgIDIwMDUtMDQtMTYgIDUyMyAgCQljYXNlIEFVRElUX0VHSUQ6Cj4gY2E1N2VjMGYwMGMzZjEg RXJpYyBXLiBCaWVkZXJtYW4gIDIwMTItMDktMTEgIDUyNCAgCQkJcmVzdWx0ID0gYXVkaXRfZ2lk X2NvbXBhcmF0b3IoY3JlZC0+ZWdpZCwgZi0+b3AsIGYtPmdpZCk7Cj4gMzdlZWJlMzljOTczMWEg TWF0dmVqY2hpa292IElseWEgIDIwMTEtMTItMTMgIDUyNSAgCQkJaWYgKGYtPm9wID09IEF1ZGl0 X2VxdWFsKSB7Cj4gMzdlZWJlMzljOTczMWEgTWF0dmVqY2hpa292IElseWEgIDIwMTEtMTItMTMg IDUyNiAgCQkJCWlmICghcmVzdWx0KQo+IGFmODVkMTc3MmUzMWZlIE9uZHJlaiBNb3Nuw6HEjWVr ICAgIDIwMTgtMDYtMDUgIDUyNyAgCQkJCQlyZXN1bHQgPSBncm91cHNfc2VhcmNoKGNyZWQtPmdy b3VwX2luZm8sIGYtPmdpZCk7Cj4gMzdlZWJlMzljOTczMWEgTWF0dmVqY2hpa292IElseWEgIDIw MTEtMTItMTMgIDUyOCAgCQkJfSBlbHNlIGlmIChmLT5vcCA9PSBBdWRpdF9ub3RfZXF1YWwpIHsK PiAzN2VlYmUzOWM5NzMxYSBNYXR2ZWpjaGlrb3YgSWx5YSAgMjAxMS0xMi0xMyAgNTI5ICAJCQkJ aWYgKHJlc3VsdCkKPiBhZjg1ZDE3NzJlMzFmZSBPbmRyZWogTW9zbsOhxI1layAgICAyMDE4LTA2 LTA1ICA1MzAgIAkJCQkJcmVzdWx0ID0gIWdyb3Vwc19zZWFyY2goY3JlZC0+Z3JvdXBfaW5mbywg Zi0+Z2lkKTsKPiAzN2VlYmUzOWM5NzMxYSBNYXR2ZWpjaGlrb3YgSWx5YSAgMjAxMS0xMi0xMyAg NTMxICAJCQl9Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYg IDUzMiAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUt MDQtMTYgIDUzMyAgCQljYXNlIEFVRElUX1NHSUQ6Cj4gY2E1N2VjMGYwMGMzZjEgRXJpYyBXLiBC aWVkZXJtYW4gIDIwMTItMDktMTEgIDUzNCAgCQkJcmVzdWx0ID0gYXVkaXRfZ2lkX2NvbXBhcmF0 b3IoY3JlZC0+c2dpZCwgZi0+b3AsIGYtPmdpZCk7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9y dmFsZHMgICAgIDIwMDUtMDQtMTYgIDUzNSAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGlu dXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDUzNiAgCQljYXNlIEFVRElUX0ZTR0lEOgo+IGNh NTdlYzBmMDBjM2YxIEVyaWMgVy4gQmllZGVybWFuICAyMDEyLTA5LTExICA1MzcgIAkJCXJlc3Vs dCA9IGF1ZGl0X2dpZF9jb21wYXJhdG9yKGNyZWQtPmZzZ2lkLCBmLT5vcCwgZi0+Z2lkKTsKPiBe MWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTM4ICAJCQlicmVh azsKPiA4ZmFlNDc3MDU2ODVmYyBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxNi0xMS0yMCAgNTM5ICAJ CWNhc2UgQVVESVRfU0VTU0lPTklEOgo+IDViNzEzODg2NjNjMDkyIE9uZHJlaiBNb3Nuw6HEjWVr ICAgIDIwMTgtMDUtMTcgIDU0MCAgCQkJc2Vzc2lvbmlkID0gYXVkaXRfZ2V0X3Nlc3Npb25pZCh0 c2spOwo+IDhmYWU0NzcwNTY4NWZjIFJpY2hhcmQgR3V5IEJyaWdncyAyMDE2LTExLTIwICA1NDEg IAkJCXJlc3VsdCA9IGF1ZGl0X2NvbXBhcmF0b3Ioc2Vzc2lvbmlkLCBmLT5vcCwgZi0+dmFsKTsK PiA4ZmFlNDc3MDU2ODVmYyBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxNi0xMS0yMCAgNTQyICAJCQli cmVhazsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTQz ICAJCWNhc2UgQVVESVRfUEVSUzoKPiA5MzMxNWVkNmRkMTJkYSBBbXkgR3JpZmZpcyAgICAgICAg MjAwNi0wMi0wNyAgNTQ0ICAJCQlyZXN1bHQgPSBhdWRpdF9jb21wYXJhdG9yKHRzay0+cGVyc29u YWxpdHksIGYtPm9wLCBmLT52YWwpOwo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAg ICAyMDA1LTA0LTE2ICA1NDUgIAkJCWJyZWFrOwo+IDJmZDZmNThiYTZlZmM4IERhdmlkIFdvb2Ro b3VzZSAgICAyMDA1LTA0LTI5ICA1NDYgIAkJY2FzZSBBVURJVF9BUkNIOgo+IDJmZDZmNThiYTZl ZmM4IERhdmlkIFdvb2Rob3VzZSAgICAyMDA1LTA0LTI5ICA1NDcgIAkJCWlmIChjdHgpCj4gOTMz MTVlZDZkZDEyZGEgQW15IEdyaWZmaXMgICAgICAgIDIwMDYtMDItMDcgIDU0OCAgCQkJCXJlc3Vs dCA9IGF1ZGl0X2NvbXBhcmF0b3IoY3R4LT5hcmNoLCBmLT5vcCwgZi0+dmFsKTsKPiAyZmQ2ZjU4 YmE2ZWZjOCBEYXZpZCBXb29kaG91c2UgICAgMjAwNS0wNC0yOSAgNTQ5ICAJCQlicmVhazsKPiBe MWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTUwCj4gXjFkYTE3 N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDU1MSAgCQljYXNlIEFVRElU X0VYSVQ6Cj4gYmE1OWVhZTcyMzg1NzIgQWxleCBTaGkgICAgICAgICAgIDIwMjAtMTEtMDYgIDU1 MiAgCQkJaWYgKGN0eCAmJiBjdHgtPnJldHVybl92YWxpZCAhPSBBVURJVFNDX0lOVkFMSUQpCj4g OTMzMTVlZDZkZDEyZGEgQW15IEdyaWZmaXMgICAgICAgIDIwMDYtMDItMDcgIDU1MyAgCQkJCXJl c3VsdCA9IGF1ZGl0X2NvbXBhcmF0b3IoY3R4LT5yZXR1cm5fY29kZSwgZi0+b3AsIGYtPnZhbCk7 Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDU1NCAgCQkJ YnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDU1 NSAgCQljYXNlIEFVRElUX1NVQ0NFU1M6Cj4gYmE1OWVhZTcyMzg1NzIgQWxleCBTaGkgICAgICAg ICAgIDIwMjAtMTEtMDYgIDU1NiAgCQkJaWYgKGN0eCAmJiBjdHgtPnJldHVybl92YWxpZCAhPSBB VURJVFNDX0lOVkFMSUQpIHsKPiA5MzMxNWVkNmRkMTJkYSBBbXkgR3JpZmZpcyAgICAgICAgMjAw Ni0wMi0wNyAgNTU3ICAJCQkJaWYgKGYtPnZhbCkKPiA5MzMxNWVkNmRkMTJkYSBBbXkgR3JpZmZp cyAgICAgICAgMjAwNi0wMi0wNyAgNTU4ICAJCQkJCXJlc3VsdCA9IGF1ZGl0X2NvbXBhcmF0b3Io Y3R4LT5yZXR1cm5fdmFsaWQsIGYtPm9wLCBBVURJVFNDX1NVQ0NFU1MpOwo+IGIwMWYyY2MxYzM3 YWMzIERhdmlkIFdvb2Rob3VzZSAgICAyMDA1LTA4LTI3ICA1NTkgIAkJCQllbHNlCj4gOTMzMTVl ZDZkZDEyZGEgQW15IEdyaWZmaXMgICAgICAgIDIwMDYtMDItMDcgIDU2MCAgCQkJCQlyZXN1bHQg PSBhdWRpdF9jb21wYXJhdG9yKGN0eC0+cmV0dXJuX3ZhbGlkLCBmLT5vcCwgQVVESVRTQ19GQUlM VVJFKTsKPiBiMDFmMmNjMWMzN2FjMyBEYXZpZCBXb29kaG91c2UgICAgMjAwNS0wOC0yNyAgNTYx ICAJCQl9Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDU2 MiAgCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQt MTYgIDU2MyAgCQljYXNlIEFVRElUX0RFVk1BSk9SOgo+IDE2YzE3NGJkOTVjYjA3IEVyaWMgUGFy aXMgICAgICAgICAyMDEyLTAxLTAzICA1NjQgIAkJCWlmIChuYW1lKSB7Cj4gMTZjMTc0YmQ5NWNi MDcgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDU2NSAgCQkJCWlmIChhdWRpdF9jb21w YXJhdG9yKE1BSk9SKG5hbWUtPmRldiksIGYtPm9wLCBmLT52YWwpIHx8Cj4gMTZjMTc0YmQ5NWNi MDcgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDU2NiAgCQkJCSAgICBhdWRpdF9jb21w YXJhdG9yKE1BSk9SKG5hbWUtPnJkZXYpLCBmLT5vcCwgZi0+dmFsKSkKPiAxNmMxNzRiZDk1Y2Iw NyBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNTY3ICAJCQkJCSsrcmVzdWx0Owo+IDE2 YzE3NGJkOTVjYjA3IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA1NjggIAkJCX0gZWxz ZSBpZiAoY3R4KSB7Cj4gNTE5NWQ4ZTIxN2E3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEt MDMgIDU2OSAgCQkJCWxpc3RfZm9yX2VhY2hfZW50cnkobiwgJmN0eC0+bmFtZXNfbGlzdCwgbGlz dCkgewo+IDE2YzE3NGJkOTVjYjA3IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA1NzAg IAkJCQkJaWYgKGF1ZGl0X2NvbXBhcmF0b3IoTUFKT1Iobi0+ZGV2KSwgZi0+b3AsIGYtPnZhbCkg fHwKPiAxNmMxNzRiZDk1Y2IwNyBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNTcxICAJ CQkJCSAgICBhdWRpdF9jb21wYXJhdG9yKE1BSk9SKG4tPnJkZXYpLCBmLT5vcCwgZi0+dmFsKSkg ewo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA1NzIgIAkJ CQkJCSsrcmVzdWx0Owo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0 LTE2ICA1NzMgIAkJCQkJCWJyZWFrOwo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAg ICAyMDA1LTA0LTE2ICA1NzQgIAkJCQkJfQo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRz ICAgICAyMDA1LTA0LTE2ICA1NzUgIAkJCQl9Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFs ZHMgICAgIDIwMDUtMDQtMTYgIDU3NiAgCQkJfQo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZh bGRzICAgICAyMDA1LTA0LTE2ICA1NzcgIAkJCWJyZWFrOwo+IF4xZGExNzdlNGMzZjQxIExpbnVz IFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA1NzggIAkJY2FzZSBBVURJVF9ERVZNSU5PUjoKPiAx NmMxNzRiZDk1Y2IwNyBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNTc5ICAJCQlpZiAo bmFtZSkgewo+IDE2YzE3NGJkOTVjYjA3IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA1 ODAgIAkJCQlpZiAoYXVkaXRfY29tcGFyYXRvcihNSU5PUihuYW1lLT5kZXYpLCBmLT5vcCwgZi0+ dmFsKSB8fAo+IDE2YzE3NGJkOTVjYjA3IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA1 ODEgIAkJCQkgICAgYXVkaXRfY29tcGFyYXRvcihNSU5PUihuYW1lLT5yZGV2KSwgZi0+b3AsIGYt PnZhbCkpCj4gMTZjMTc0YmQ5NWNiMDcgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDU4 MiAgCQkJCQkrK3Jlc3VsdDsKPiAxNmMxNzRiZDk1Y2IwNyBFcmljIFBhcmlzICAgICAgICAgMjAx Mi0wMS0wMyAgNTgzICAJCQl9IGVsc2UgaWYgKGN0eCkgewo+IDUxOTVkOGUyMTdhNzg2IEVyaWMg UGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA1ODQgIAkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG4s ICZjdHgtPm5hbWVzX2xpc3QsIGxpc3QpIHsKPiAxNmMxNzRiZDk1Y2IwNyBFcmljIFBhcmlzICAg ICAgICAgMjAxMi0wMS0wMyAgNTg1ICAJCQkJCWlmIChhdWRpdF9jb21wYXJhdG9yKE1JTk9SKG4t PmRldiksIGYtPm9wLCBmLT52YWwpIHx8Cj4gMTZjMTc0YmQ5NWNiMDcgRXJpYyBQYXJpcyAgICAg ICAgIDIwMTItMDEtMDMgIDU4NiAgCQkJCQkgICAgYXVkaXRfY29tcGFyYXRvcihNSU5PUihuLT5y ZGV2KSwgZi0+b3AsIGYtPnZhbCkpIHsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAg ICAgMjAwNS0wNC0xNiAgNTg3ICAJCQkJCQkrK3Jlc3VsdDsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51 cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTg4ICAJCQkJCQlicmVhazsKPiBeMWRhMTc3ZTRj M2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTg5ICAJCQkJCX0KPiBeMWRhMTc3 ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTkwICAJCQkJfQo+IF4xZGEx NzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA1OTEgIAkJCX0KPiBeMWRh MTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTkyICAJCQlicmVhazsK PiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNTkzICAJCWNh c2UgQVVESVRfSU5PREU6Cj4gZjM2OGMwN2Q3MjE0YTcgQW15IEdyaWZmaXMgICAgICAgIDIwMDYt MDQtMDcgIDU5NCAgCQkJaWYgKG5hbWUpCj4gZGI1MTBmYzVjZDliOWQgUmljaGFyZCBHdXkgQnJp Z2dzIDIwMTMtMDctMDQgIDU5NSAgCQkJCXJlc3VsdCA9IGF1ZGl0X2NvbXBhcmF0b3IobmFtZS0+ aW5vLCBmLT5vcCwgZi0+dmFsKTsKPiBmMzY4YzA3ZDcyMTRhNyBBbXkgR3JpZmZpcyAgICAgICAg MjAwNi0wNC0wNyAgNTk2ICAJCQllbHNlIGlmIChjdHgpIHsKPiA1MTk1ZDhlMjE3YTc4NiBFcmlj IFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNTk3ICAJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShu LCAmY3R4LT5uYW1lc19saXN0LCBsaXN0KSB7Cj4gNTE5NWQ4ZTIxN2E3ODYgRXJpYyBQYXJpcyAg ICAgICAgIDIwMTItMDEtMDMgIDU5OCAgCQkJCQlpZiAoYXVkaXRfY29tcGFyYXRvcihuLT5pbm8s IGYtPm9wLCBmLT52YWwpKSB7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIw MDUtMDQtMTYgIDU5OSAgCQkJCQkJKytyZXN1bHQ7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9y dmFsZHMgICAgIDIwMDUtMDQtMTYgIDYwMCAgCQkJCQkJYnJlYWs7Cj4gXjFkYTE3N2U0YzNmNDEg TGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDYwMSAgCQkJCQl9Cj4gXjFkYTE3N2U0YzNm NDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDYwMiAgCQkJCX0KPiBeMWRhMTc3ZTRj M2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNjAzICAJCQl9Cj4gXjFkYTE3N2U0 YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDYwNCAgCQkJYnJlYWs7Cj4gZWZh ZmZkNmU0NDE3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYwNSAgCQljYXNlIEFV RElUX09CSl9VSUQ6Cj4gZWZhZmZkNmU0NDE3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEt MDMgIDYwNiAgCQkJaWYgKG5hbWUpIHsKPiBjYTU3ZWMwZjAwYzNmMSBFcmljIFcuIEJpZWRlcm1h biAgMjAxMi0wOS0xMSAgNjA3ICAJCQkJcmVzdWx0ID0gYXVkaXRfdWlkX2NvbXBhcmF0b3IobmFt ZS0+dWlkLCBmLT5vcCwgZi0+dWlkKTsKPiBlZmFmZmQ2ZTQ0MTc4NiBFcmljIFBhcmlzICAgICAg ICAgMjAxMi0wMS0wMyAgNjA4ICAJCQl9IGVsc2UgaWYgKGN0eCkgewo+IGVmYWZmZDZlNDQxNzg2 IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA2MDkgIAkJCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG4sICZjdHgtPm5hbWVzX2xpc3QsIGxpc3QpIHsKPiBjYTU3ZWMwZjAwYzNmMSBFcmljIFcu IEJpZWRlcm1hbiAgMjAxMi0wOS0xMSAgNjEwICAJCQkJCWlmIChhdWRpdF91aWRfY29tcGFyYXRv cihuLT51aWQsIGYtPm9wLCBmLT51aWQpKSB7Cj4gZWZhZmZkNmU0NDE3ODYgRXJpYyBQYXJpcyAg ICAgICAgIDIwMTItMDEtMDMgIDYxMSAgCQkJCQkJKytyZXN1bHQ7Cj4gZWZhZmZkNmU0NDE3ODYg RXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYxMiAgCQkJCQkJYnJlYWs7Cj4gZWZhZmZk NmU0NDE3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYxMyAgCQkJCQl9Cj4gZWZh ZmZkNmU0NDE3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYxNCAgCQkJCX0KPiBl ZmFmZmQ2ZTQ0MTc4NiBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNjE1ICAJCQl9Cj4g ZWZhZmZkNmU0NDE3ODYgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYxNiAgCQkJYnJl YWs7Cj4gNTRkMzIxOGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYxNyAg CQljYXNlIEFVRElUX09CSl9HSUQ6Cj4gNTRkMzIxOGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAg IDIwMTItMDEtMDMgIDYxOCAgCQkJaWYgKG5hbWUpIHsKPiBjYTU3ZWMwZjAwYzNmMSBFcmljIFcu IEJpZWRlcm1hbiAgMjAxMi0wOS0xMSAgNjE5ICAJCQkJcmVzdWx0ID0gYXVkaXRfZ2lkX2NvbXBh cmF0b3IobmFtZS0+Z2lkLCBmLT5vcCwgZi0+Z2lkKTsKPiA1NGQzMjE4YjMxYWVlNSBFcmljIFBh cmlzICAgICAgICAgMjAxMi0wMS0wMyAgNjIwICAJCQl9IGVsc2UgaWYgKGN0eCkgewo+IDU0ZDMy MThiMzFhZWU1IEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA2MjEgIAkJCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KG4sICZjdHgtPm5hbWVzX2xpc3QsIGxpc3QpIHsKPiBjYTU3ZWMwZjAwYzNm MSBFcmljIFcuIEJpZWRlcm1hbiAgMjAxMi0wOS0xMSAgNjIyICAJCQkJCWlmIChhdWRpdF9naWRf Y29tcGFyYXRvcihuLT5naWQsIGYtPm9wLCBmLT5naWQpKSB7Cj4gNTRkMzIxOGIzMWFlZTUgRXJp YyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYyMyAgCQkJCQkJKytyZXN1bHQ7Cj4gNTRkMzIx OGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYyNCAgCQkJCQkJYnJlYWs7 Cj4gNTRkMzIxOGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYyNSAgCQkJ CQl9Cj4gNTRkMzIxOGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYyNiAg CQkJCX0KPiA1NGQzMjE4YjMxYWVlNSBFcmljIFBhcmlzICAgICAgICAgMjAxMi0wMS0wMyAgNjI3 ICAJCQl9Cj4gNTRkMzIxOGIzMWFlZTUgRXJpYyBQYXJpcyAgICAgICAgIDIwMTItMDEtMDMgIDYy OCAgCQkJYnJlYWs7Cj4gZjM2OGMwN2Q3MjE0YTcgQW15IEdyaWZmaXMgICAgICAgIDIwMDYtMDQt MDcgIDYyOSAgCQljYXNlIEFVRElUX1dBVENIOgo+IDAyMjNmYWQzYzk4YTk1IFJpY2hhcmQgR3V5 IEJyaWdncyAyMDE5LTA1LTIyICA2MzAgIAkJCWlmIChuYW1lKSB7Cj4gMDIyM2ZhZDNjOThhOTUg UmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDUtMjIgIDYzMSAgCQkJCXJlc3VsdCA9IGF1ZGl0X3dh dGNoX2NvbXBhcmUocnVsZS0+d2F0Y2gsCj4gMDIyM2ZhZDNjOThhOTUgUmljaGFyZCBHdXkgQnJp Z2dzIDIwMTktMDUtMjIgIDYzMiAgCQkJCQkJCSAgICAgbmFtZS0+aW5vLAo+IDAyMjNmYWQzYzk4 YTk1IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1LTIyICA2MzMgIAkJCQkJCQkgICAgIG5hbWUt PmRldik7Cj4gMDIyM2ZhZDNjOThhOTUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDUtMjIgIDYz NCAgCQkJCWlmIChmLT5vcCA9PSBBdWRpdF9ub3RfZXF1YWwpCj4gMDIyM2ZhZDNjOThhOTUgUmlj aGFyZCBHdXkgQnJpZ2dzIDIwMTktMDUtMjIgIDYzNSAgCQkJCQlyZXN1bHQgPSAhcmVzdWx0Owo+ IDAyMjNmYWQzYzk4YTk1IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1LTIyICA2MzYgIAkJCX0K PiBmMzY4YzA3ZDcyMTRhNyBBbXkgR3JpZmZpcyAgICAgICAgMjAwNi0wNC0wNyAgNjM3ICAJCQli cmVhazsKPiA3NGMzY2JlMzNiYzA3NyBBbCBWaXJvICAgICAgICAgICAgMjAwNy0wNy0yMiAgNjM4 ICAJCWNhc2UgQVVESVRfRElSOgo+IDAyMjNmYWQzYzk4YTk1IFJpY2hhcmQgR3V5IEJyaWdncyAy MDE5LTA1LTIyICA2MzkgIAkJCWlmIChjdHgpIHsKPiA3NGMzY2JlMzNiYzA3NyBBbCBWaXJvICAg ICAgICAgICAgMjAwNy0wNy0yMiAgNjQwICAJCQkJcmVzdWx0ID0gbWF0Y2hfdHJlZV9yZWZzKGN0 eCwgcnVsZS0+dHJlZSk7Cj4gMDIyM2ZhZDNjOThhOTUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTkt MDUtMjIgIDY0MSAgCQkJCWlmIChmLT5vcCA9PSBBdWRpdF9ub3RfZXF1YWwpCj4gMDIyM2ZhZDNj OThhOTUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDUtMjIgIDY0MiAgCQkJCQlyZXN1bHQgPSAh cmVzdWx0Owo+IDAyMjNmYWQzYzk4YTk1IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1LTIyICA2 NDMgIAkJCX0KPiA3NGMzY2JlMzNiYzA3NyBBbCBWaXJvICAgICAgICAgICAgMjAwNy0wNy0yMiAg NjQ0ICAJCQlicmVhazsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0w NC0xNiAgNjQ1ICAJCWNhc2UgQVVESVRfTE9HSU5VSUQ6Cj4gMzhmODA1OTA0ODZlMzggUmljaGFy ZCBHdXkgQnJpZ2dzIDIwMTgtMDUtMTYgIDY0NiAgCQkJcmVzdWx0ID0gYXVkaXRfdWlkX2NvbXBh cmF0b3IoYXVkaXRfZ2V0X2xvZ2ludWlkKHRzayksCj4gMzhmODA1OTA0ODZlMzggUmljaGFyZCBH dXkgQnJpZ2dzIDIwMTgtMDUtMTYgIDY0NyAgCQkJCQkJICAgICAgZi0+b3AsIGYtPnVpZCk7Cj4g XjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDY0OCAgCQkJYnJl YWs7Cj4gNzgwYTc2NTRjZWU4ZDYgRXJpYyBXLiBCaWVkZXJtYW4gIDIwMTMtMDQtMDkgIDY0OSAg CQljYXNlIEFVRElUX0xPR0lOVUlEX1NFVDoKPiA3ODBhNzY1NGNlZThkNiBFcmljIFcuIEJpZWRl cm1hbiAgMjAxMy0wNC0wOSAgNjUwICAJCQlyZXN1bHQgPSBhdWRpdF9jb21wYXJhdG9yKGF1ZGl0 X2xvZ2ludWlkX3NldCh0c2spLCBmLT5vcCwgZi0+dmFsKTsKPiA3ODBhNzY1NGNlZThkNiBFcmlj IFcuIEJpZWRlcm1hbiAgMjAxMy0wNC0wOSAgNjUxICAJCQlicmVhazsKPiBiZjM2MTIzMWMyOTVk OSBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxOS0wNS0wOSAgNjUyICAJCWNhc2UgQVVESVRfU0FERFJf RkFNOgo+IGJmMzYxMjMxYzI5NWQ5IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1LTA5IEA2NTMg IAkJCWlmIChjdHgtPnNvY2thZGRyKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5e Xgo+IEV2ZXJ5d2hlcmUgZWxzZSBjaGVja3MgaWYgImN0eCIgaXMgTlVMTCBiZWZvcmUgZGVyZWZl cmVuY2luZyBpdC4KPgo+IGJmMzYxMjMxYzI5NWQ5IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1 LTA5ICA2NTQgIAkJCQlyZXN1bHQgPSBhdWRpdF9jb21wYXJhdG9yKGN0eC0+c29ja2FkZHItPnNz X2ZhbWlseSwKPiBiZjM2MTIzMWMyOTVkOSBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxOS0wNS0wOSAg NjU1ICAJCQkJCQkJICBmLT5vcCwgZi0+dmFsKTsKPiBiZjM2MTIzMWMyOTVkOSBSaWNoYXJkIEd1 eSBCcmlnZ3MgMjAxOS0wNS0wOSAgNjU2ICAJCQlicmVhazsKPiAzYTZiOWY4NWM2NDFhMyBEYXJy ZWwgR29lZGRlbCAgICAgMjAwNi0wNi0yOSAgNjU3ICAJCWNhc2UgQVVESVRfU1VCSl9VU0VSOgo+ IDNhNmI5Zjg1YzY0MWEzIERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2LTI5ICA2NTggIAkJY2Fz ZSBBVURJVF9TVUJKX1JPTEU6Cj4gM2E2YjlmODVjNjQxYTMgRGFycmVsIEdvZWRkZWwgICAgIDIw MDYtMDYtMjkgIDY1OSAgCQljYXNlIEFVRElUX1NVQkpfVFlQRToKPiAzYTZiOWY4NWM2NDFhMyBE YXJyZWwgR29lZGRlbCAgICAgMjAwNi0wNi0yOSAgNjYwICAJCWNhc2UgQVVESVRfU1VCSl9TRU46 Cj4gM2E2YjlmODVjNjQxYTMgRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDYtMjkgIDY2MSAgCQlj YXNlIEFVRElUX1NVQkpfQ0xSOgo+IDNkYzdlMzE1M2VkZGZjIERhcnJlbCBHb2VkZGVsICAgICAy MDA2LTAzLTEwICA2NjIgIAkJCS8qIE5PVEU6IHRoaXMgbWF5IHJldHVybiBuZWdhdGl2ZSB2YWx1 ZXMgaW5kaWNhdGluZwo+IDNkYzdlMzE1M2VkZGZjIERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTAz LTEwICA2NjMgIAkJCSAgIGEgdGVtcG9yYXJ5IGVycm9yLiAgV2Ugc2ltcGx5IHRyZWF0IHRoaXMg YXMgYQo+IDNkYzdlMzE1M2VkZGZjIERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTAzLTEwICA2NjQg IAkJCSAgIG1hdGNoIGZvciBub3cgdG8gYXZvaWQgbG9zaW5nIGluZm9ybWF0aW9uIHRoYXQKPiAz ZGM3ZTMxNTNlZGRmYyBEYXJyZWwgR29lZGRlbCAgICAgMjAwNi0wMy0xMCAgNjY1ICAJCQkgICBt YXkgYmUgd2FudGVkLiAgIEFuIGVycm9yIG1lc3NhZ2Ugd2lsbCBhbHNvIGJlCj4gM2RjN2UzMTUz ZWRkZmMgRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDMtMTAgIDY2NiAgCQkJICAgbG9nZ2VkIHVw b24gZXJyb3IgKi8KPiAwNDMwNWU0YWZmOGIwNSBBaG1lZCBTLiBEYXJ3aXNoICAgMjAwOC0wNC0x OSAgNjY3ICAJCQlpZiAoZi0+bHNtX3J1bGUpIHsKPiAyYWQzMTJkMjA5M2FlNSBTdGV2ZSBHcnVi YiAgICAgICAgMjAwNi0wNC0xMSAgNjY4ICAJCQkJaWYgKG5lZWRfc2lkKSB7Cj4gNGViZDc2NTFi ZmM4OTkgUGF1bCBNb29yZSAgICAgICAgIDIwMjEtMDItMTkgIDY2OSAgCQkJCQlzZWN1cml0eV90 YXNrX2dldHNlY2lkX3N1YmoodHNrLCAmc2lkKTsKPiAyYWQzMTJkMjA5M2FlNSBTdGV2ZSBHcnVi YiAgICAgICAgMjAwNi0wNC0xMSAgNjcwICAJCQkJCW5lZWRfc2lkID0gMDsKPiAyYWQzMTJkMjA5 M2FlNSBTdGV2ZSBHcnViYiAgICAgICAgMjAwNi0wNC0xMSAgNjcxICAJCQkJfQo+IGQ3YTk2ZjNh MWFlMjc5IEFobWVkIFMuIERhcndpc2ggICAyMDA4LTAzLTAxICA2NzIgIAkJCQlyZXN1bHQgPSBz ZWN1cml0eV9hdWRpdF9ydWxlX21hdGNoKHNpZCwgZi0+dHlwZSwKPiAzZGM3ZTMxNTNlZGRmYyBE YXJyZWwgR29lZGRlbCAgICAgMjAwNi0wMy0xMCAgNjczICAJCQkJCQkJCSAgIGYtPm9wLAo+IDkw NDYyYTViZDMwYzZlIFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTAxLTMxICA2NzQgIAkJCQkJCQkJ ICAgZi0+bHNtX3J1bGUpOwo+IDJhZDMxMmQyMDkzYWU1IFN0ZXZlIEdydWJiICAgICAgICAyMDA2 LTA0LTExICA2NzUgIAkJCX0KPiAzZGM3ZTMxNTNlZGRmYyBEYXJyZWwgR29lZGRlbCAgICAgMjAw Ni0wMy0xMCAgNjc2ICAJCQlicmVhazsKPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAg ICAgMjAwNi0wNi0yOSAgNjc3ICAJCWNhc2UgQVVESVRfT0JKX1VTRVI6Cj4gNmU1YTJkMWQzMjU5 NjggRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDYtMjkgIDY3OCAgCQljYXNlIEFVRElUX09CSl9S T0xFOgo+IDZlNWEyZDFkMzI1OTY4IERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2LTI5ICA2Nzkg IAkJY2FzZSBBVURJVF9PQkpfVFlQRToKPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAg ICAgMjAwNi0wNi0yOSAgNjgwICAJCWNhc2UgQVVESVRfT0JKX0xFVl9MT1c6Cj4gNmU1YTJkMWQz MjU5NjggRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDYtMjkgIDY4MSAgCQljYXNlIEFVRElUX09C Sl9MRVZfSElHSDoKPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAgICAgMjAwNi0wNi0y OSAgNjgyICAJCQkvKiBUaGUgYWJvdmUgbm90ZSBmb3IgQVVESVRfU1VCSl9VU0VSLi4uQVVESVRf U1VCSl9DTFIKPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAgICAgMjAwNi0wNi0yOSAg NjgzICAJCQkgICBhbHNvIGFwcGxpZXMgaGVyZSAqLwo+IDA0MzA1ZTRhZmY4YjA1IEFobWVkIFMu IERhcndpc2ggICAyMDA4LTA0LTE5ICA2ODQgIAkJCWlmIChmLT5sc21fcnVsZSkgewo+IDZlNWEy ZDFkMzI1OTY4IERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2LTI5ICA2ODUgIAkJCQkvKiBGaW5k IGZpbGVzIHRoYXQgbWF0Y2ggKi8KPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAgICAg MjAwNi0wNi0yOSAgNjg2ICAJCQkJaWYgKG5hbWUpIHsKPiBkN2E5NmYzYTFhZTI3OSBBaG1lZCBT LiBEYXJ3aXNoICAgMjAwOC0wMy0wMSAgNjg3ICAJCQkJCXJlc3VsdCA9IHNlY3VyaXR5X2F1ZGl0 X3J1bGVfbWF0Y2goCj4gOTA0NjJhNWJkMzBjNmUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDEt MzEgIDY4OCAgCQkJCQkJCQluYW1lLT5vc2lkLAo+IDkwNDYyYTViZDMwYzZlIFJpY2hhcmQgR3V5 IEJyaWdncyAyMDE5LTAxLTMxICA2ODkgIAkJCQkJCQkJZi0+dHlwZSwKPiA5MDQ2MmE1YmQzMGM2 ZSBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxOS0wMS0zMSAgNjkwICAJCQkJCQkJCWYtPm9wLAo+IDkw NDYyYTViZDMwYzZlIFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTAxLTMxICA2OTEgIAkJCQkJCQkJ Zi0+bHNtX3J1bGUpOwo+IDZlNWEyZDFkMzI1OTY4IERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2 LTI5ICA2OTIgIAkJCQl9IGVsc2UgaWYgKGN0eCkgewo+IDUxOTVkOGUyMTdhNzg2IEVyaWMgUGFy aXMgICAgICAgICAyMDEyLTAxLTAzICA2OTMgIAkJCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShuLCAm Y3R4LT5uYW1lc19saXN0LCBsaXN0KSB7Cj4gOTA0NjJhNWJkMzBjNmUgUmljaGFyZCBHdXkgQnJp Z2dzIDIwMTktMDEtMzEgIDY5NCAgCQkJCQkJaWYgKHNlY3VyaXR5X2F1ZGl0X3J1bGVfbWF0Y2go Cj4gOTA0NjJhNWJkMzBjNmUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDEtMzEgIDY5NSAgCQkJ CQkJCQluLT5vc2lkLAo+IDkwNDYyYTViZDMwYzZlIFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTAx LTMxICA2OTYgIAkJCQkJCQkJZi0+dHlwZSwKPiA5MDQ2MmE1YmQzMGM2ZSBSaWNoYXJkIEd1eSBC cmlnZ3MgMjAxOS0wMS0zMSAgNjk3ICAJCQkJCQkJCWYtPm9wLAo+IDkwNDYyYTViZDMwYzZlIFJp Y2hhcmQgR3V5IEJyaWdncyAyMDE5LTAxLTMxICA2OTggIAkJCQkJCQkJZi0+bHNtX3J1bGUpKSB7 Cj4gNmU1YTJkMWQzMjU5NjggRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDYtMjkgIDY5OSAgCQkJ CQkJCSsrcmVzdWx0Owo+IDZlNWEyZDFkMzI1OTY4IERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2 LTI5ICA3MDAgIAkJCQkJCQlicmVhazsKPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwgR29lZGRlbCAg ICAgMjAwNi0wNi0yOSAgNzAxICAJCQkJCQl9Cj4gNmU1YTJkMWQzMjU5NjggRGFycmVsIEdvZWRk ZWwgICAgIDIwMDYtMDYtMjkgIDcwMiAgCQkJCQl9Cj4gNmU1YTJkMWQzMjU5NjggRGFycmVsIEdv ZWRkZWwgICAgIDIwMDYtMDYtMjkgIDcwMyAgCQkJCX0KPiA2ZTVhMmQxZDMyNTk2OCBEYXJyZWwg R29lZGRlbCAgICAgMjAwNi0wNi0yOSAgNzA0ICAJCQkJLyogRmluZCBpcGMgb2JqZWN0cyB0aGF0 IG1hdGNoICovCj4gYTMzZTY3NTEwMDNjNWEgQWwgVmlybyAgICAgICAgICAgIDIwMDgtMTItMTAg IDcwNSAgCQkJCWlmICghY3R4IHx8IGN0eC0+dHlwZSAhPSBBVURJVF9JUEMpCj4gNmU1YTJkMWQz MjU5NjggRGFycmVsIEdvZWRkZWwgICAgIDIwMDYtMDYtMjkgIDcwNiAgCQkJCQlicmVhazsKPiBh MzNlNjc1MTAwM2M1YSBBbCBWaXJvICAgICAgICAgICAgMjAwOC0xMi0xMCAgNzA3ICAJCQkJaWYg KHNlY3VyaXR5X2F1ZGl0X3J1bGVfbWF0Y2goY3R4LT5pcGMub3NpZCwKPiBhMzNlNjc1MTAwM2M1 YSBBbCBWaXJvICAgICAgICAgICAgMjAwOC0xMi0xMCAgNzA4ICAJCQkJCQkJICAgICAgZi0+dHlw ZSwgZi0+b3AsCj4gOTA0NjJhNWJkMzBjNmUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDEtMzEg IDcwOSAgCQkJCQkJCSAgICAgIGYtPmxzbV9ydWxlKSkKPiBhMzNlNjc1MTAwM2M1YSBBbCBWaXJv ICAgICAgICAgICAgMjAwOC0xMi0xMCAgNzEwICAJCQkJCSsrcmVzdWx0Owo+IDZlNWEyZDFkMzI1 OTY4IERhcnJlbCBHb2VkZGVsICAgICAyMDA2LTA2LTI5ICA3MTEgIAkJCX0KPiA2ZTVhMmQxZDMy NTk2OCBEYXJyZWwgR29lZGRlbCAgICAgMjAwNi0wNi0yOSAgNzEyICAJCQlicmVhazsKPiBeMWRh MTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNzEzICAJCWNhc2UgQVVE SVRfQVJHMDoKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAg NzE0ICAJCWNhc2UgQVVESVRfQVJHMToKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAg ICAgMjAwNS0wNC0xNiAgNzE1ICAJCWNhc2UgQVVESVRfQVJHMjoKPiBeMWRhMTc3ZTRjM2Y0MSBM aW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNzE2ICAJCWNhc2UgQVVESVRfQVJHMzoKPiBe MWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAgMjAwNS0wNC0xNiAgNzE3ICAJCQlpZiAo Y3R4KQo+IDkzMzE1ZWQ2ZGQxMmRhIEFteSBHcmlmZmlzICAgICAgICAyMDA2LTAyLTA3ICA3MTgg IAkJCQlyZXN1bHQgPSBhdWRpdF9jb21wYXJhdG9yKGN0eC0+YXJndltmLT50eXBlLUFVRElUX0FS RzBdLCBmLT5vcCwgZi0+dmFsKTsKPiBeMWRhMTc3ZTRjM2Y0MSBMaW51cyBUb3J2YWxkcyAgICAg MjAwNS0wNC0xNiAgNzE5ICAJCQlicmVhazsKPiA1YWRjOGE2YWRjOTFjNCBBbXkgR3JpZmZpcyAg ICAgICAgMjAwNi0wNi0xNCAgNzIwICAJCWNhc2UgQVVESVRfRklMVEVSS0VZOgo+IDVhZGM4YTZh ZGM5MWM0IEFteSBHcmlmZmlzICAgICAgICAyMDA2LTA2LTE0ICA3MjEgIAkJCS8qIGlnbm9yZSB0 aGlzIGZpZWxkIGZvciBmaWx0ZXJpbmcgKi8KPiA1YWRjOGE2YWRjOTFjNCBBbXkgR3JpZmZpcyAg ICAgICAgMjAwNi0wNi0xNCAgNzIyICAJCQlyZXN1bHQgPSAxOwo+IDVhZGM4YTZhZGM5MWM0IEFt eSBHcmlmZmlzICAgICAgICAyMDA2LTA2LTE0ICA3MjMgIAkJCWJyZWFrOwo+IDU1NjY5YmZhMTQx YjQ4IEFsIFZpcm8gICAgICAgICAgICAyMDA2LTA4LTMxICA3MjQgIAkJY2FzZSBBVURJVF9QRVJN Ogo+IDU1NjY5YmZhMTQxYjQ4IEFsIFZpcm8gICAgICAgICAgICAyMDA2LTA4LTMxICA3MjUgIAkJ CXJlc3VsdCA9IGF1ZGl0X21hdGNoX3Blcm0oY3R4LCBmLT52YWwpOwo+IDAyMjNmYWQzYzk4YTk1 IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1LTIyICA3MjYgIAkJCWlmIChmLT5vcCA9PSBBdWRp dF9ub3RfZXF1YWwpCj4gMDIyM2ZhZDNjOThhOTUgUmljaGFyZCBHdXkgQnJpZ2dzIDIwMTktMDUt MjIgIDcyNyAgCQkJCXJlc3VsdCA9ICFyZXN1bHQ7Cj4gNTU2NjliZmExNDFiNDggQWwgVmlybyAg ICAgICAgICAgIDIwMDYtMDgtMzEgIDcyOCAgCQkJYnJlYWs7Cj4gOGI2N2RjYTk0MjA0NzQgQWwg VmlybyAgICAgICAgICAgIDIwMDgtMDQtMjggIDcyOSAgCQljYXNlIEFVRElUX0ZJTEVUWVBFOgo+ IDhiNjdkY2E5NDIwNDc0IEFsIFZpcm8gICAgICAgICAgICAyMDA4LTA0LTI4ICA3MzAgIAkJCXJl c3VsdCA9IGF1ZGl0X21hdGNoX2ZpbGV0eXBlKGN0eCwgZi0+dmFsKTsKPiAwMjIzZmFkM2M5OGE5 NSBSaWNoYXJkIEd1eSBCcmlnZ3MgMjAxOS0wNS0yMiAgNzMxICAJCQlpZiAoZi0+b3AgPT0gQXVk aXRfbm90X2VxdWFsKQo+IDAyMjNmYWQzYzk4YTk1IFJpY2hhcmQgR3V5IEJyaWdncyAyMDE5LTA1 LTIyICA3MzIgIAkJCQlyZXN1bHQgPSAhcmVzdWx0Owo+IDhiNjdkY2E5NDIwNDc0IEFsIFZpcm8g ICAgICAgICAgICAyMDA4LTA0LTI4ICA3MzMgIAkJCWJyZWFrOwo+IDAyZDg2YTU2OGM2ZDJkIEVy aWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA3MzQgIAkJY2FzZSBBVURJVF9GSUVMRF9DT01Q QVJFOgo+IDAyZDg2YTU2OGM2ZDJkIEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA3MzUg IAkJCXJlc3VsdCA9IGF1ZGl0X2ZpZWxkX2NvbXBhcmUodHNrLCBjcmVkLCBmLCBjdHgsIG5hbWUp Owo+IDAyZDg2YTU2OGM2ZDJkIEVyaWMgUGFyaXMgICAgICAgICAyMDEyLTAxLTAzICA3MzYgIAkJ CWJyZWFrOwo+IF4xZGExNzdlNGMzZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA3 MzcgIAkJfQo+IGY1NjI5ODgzNTAzNjFiIFRvbnkgSm9uZXMgICAgICAgICAyMDExLTA0LTI3ICA3 MzggIAkJaWYgKCFyZXN1bHQpCj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFsZHMgICAgIDIw MDUtMDQtMTYgIDczOSAgCQkJcmV0dXJuIDA7Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMgVG9ydmFs ZHMgICAgIDIwMDUtMDQtMTYgIDc0MCAgCX0KPiAwNTkwYjkzMzVhMWM3MiBBbCBWaXJvICAgICAg ICAgICAgMjAwOC0xMi0xNCAgNzQxCj4gMDU5MGI5MzM1YTFjNzIgQWwgVmlybyAgICAgICAgICAg IDIwMDgtMTItMTQgIDc0MiAgCWlmIChjdHgpIHsKPiAwNTkwYjkzMzVhMWM3MiBBbCBWaXJvICAg ICAgICAgICAgMjAwOC0xMi0xNCAgNzQzICAJCWlmIChydWxlLT5maWx0ZXJrZXkpIHsKPiAwNTkw YjkzMzVhMWM3MiBBbCBWaXJvICAgICAgICAgICAgMjAwOC0xMi0xNCAgNzQ0ICAJCQlrZnJlZShj dHgtPmZpbHRlcmtleSk7Cj4gNWFkYzhhNmFkYzkxYzQgQW15IEdyaWZmaXMgICAgICAgIDIwMDYt MDYtMTQgIDc0NSAgCQkJY3R4LT5maWx0ZXJrZXkgPSBrc3RyZHVwKHJ1bGUtPmZpbHRlcmtleSwg R0ZQX0FUT01JQyk7Cj4gMDU5MGI5MzM1YTFjNzIgQWwgVmlybyAgICAgICAgICAgIDIwMDgtMTIt MTQgIDc0NiAgCQl9Cj4gMDU5MGI5MzM1YTFjNzIgQWwgVmlybyAgICAgICAgICAgIDIwMDgtMTIt MTQgIDc0NyAgCQljdHgtPnByaW8gPSBydWxlLT5wcmlvOwo+IDA1OTBiOTMzNWExYzcyIEFsIFZp cm8gICAgICAgICAgICAyMDA4LTEyLTE0ICA3NDggIAl9Cj4gXjFkYTE3N2U0YzNmNDEgTGludXMg VG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDc0OSAgCXN3aXRjaCAocnVsZS0+YWN0aW9uKSB7Cj4g NjZiMTJhYmM4NDZkMzEgUGF1bCBNb29yZSAgICAgICAgIDIwMTYtMDYtMTYgIDc1MCAgCWNhc2Ug QVVESVRfTkVWRVI6Cj4gNjE5ZWQ1OGFjNGUyZmIgU2VyZ2V5IE5hemFyb3YgICAgIDIwMjEtMDYt MDggIDc1MSAgCQkqc3RhdGUgPSBBVURJVF9TVEFURV9ESVNBQkxFRDsKPiA2NmIxMmFiYzg0NmQz MSBQYXVsIE1vb3JlICAgICAgICAgMjAxNi0wNi0xNiAgNzUyICAJCWJyZWFrOwo+IDY2YjEyYWJj ODQ2ZDMxIFBhdWwgTW9vcmUgICAgICAgICAyMDE2LTA2LTE2ICA3NTMgIAljYXNlIEFVRElUX0FM V0FZUzoKPiA2MTllZDU4YWM0ZTJmYiBTZXJnZXkgTmF6YXJvdiAgICAgMjAyMS0wNi0wOCAgNzU0 ICAJCSpzdGF0ZSA9IEFVRElUX1NUQVRFX1JFQ09SRDsKPiA2NmIxMmFiYzg0NmQzMSBQYXVsIE1v b3JlICAgICAgICAgMjAxNi0wNi0xNiAgNzU1ICAJCWJyZWFrOwo+IF4xZGExNzdlNGMzZjQxIExp bnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA3NTYgIAl9Cj4gXjFkYTE3N2U0YzNmNDEgTGlu dXMgVG9ydmFsZHMgICAgIDIwMDUtMDQtMTYgIDc1NyAgCXJldHVybiAxOwo+IF4xZGExNzdlNGMz ZjQxIExpbnVzIFRvcnZhbGRzICAgICAyMDA1LTA0LTE2ICA3NTggIH0KPgo+IC0tLQo+IDAtREFZ IENJIEtlcm5lbCBUZXN0IFNlcnZpY2UsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cHM6Ly9saXN0 cy4wMS5vcmcvaHlwZXJraXR0eS9saXN0L2tidWlsZC1hbGxAbGlzdHMuMDEub3JnCj4KPiAuCgoK LS0KTGludXgtYXVkaXQgbWFpbGluZyBsaXN0CkxpbnV4LWF1ZGl0QHJlZGhhdC5jb20KaHR0cHM6 Ly9saXN0bWFuLnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9saW51eC1hdWRpdA==