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=-13.8 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,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 5EA25C433DB for ; Mon, 22 Feb 2021 21:01:20 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 C5FF464E15 for ; Mon, 22 Feb 2021 21:01:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C5FF464E15 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date:To:From: Subject:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=+n9ggeJp2zFcKbTfbXv5KU0pWDLdCaeaRJKjvo3ss4o=; b=wM18CuA01S2TJgudhX6u9t4lp Iio8CrA5LBp0OyYrtfxYXU0/MDU7y/fxg5CajMjVaXbKeiRLKW24c4/FcG/GRNr2MB4u/ZGKcxZ60 bws+1AbQkHuXEfnkipi6K/Fkp9/PlP1pp8I/zhqxJiGf7Ss1LQ7Phsw11JvHOcNqhHFqwW5sccBvh W29tP9jXA6DhHrPM+qrmHFw2VuhZWsWS1jKT74xjzvxZLc5QwGQVoXctYDN4Iv3g8zMuYhorX7tM6 N0pau63x6So1MDCgYTxDJNZRhaFP7txpD+C/UD6S4wyp/IqEsjIo9adGmuYKguzzwum+N8Cyinrpf dhwLo7DLQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEIKN-0000tB-1l; Mon, 22 Feb 2021 21:01:11 +0000 Received: from mail-qk1-x735.google.com ([2607:f8b0:4864:20::735]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEIKH-0000sI-0j for linux-rockchip@lists.infradead.org; Mon, 22 Feb 2021 21:01:10 +0000 Received: by mail-qk1-x735.google.com with SMTP id 81so14130235qkf.4 for ; Mon, 22 Feb 2021 13:01:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=6K4/mBbSnPNCHknLHCRkmYyf35khcBGrazvAgUyZabU=; b=VVFlCwNES6gwNIdwJYWODbJwOMnhphuU/6E+kkEz+xDrsdoDQVpW9qrg5TQrqjVjq+ lZsL50F1Zw560UsvX7wxVWfXyAfF6cD7C13WxEgYTCpNr2QCz0po87hpaZmuuHY/56H6 p4bDT2yEroCpOTp+upvlS8QbV0Jo4MSjWBxCmAHixEPSOWyQwSHkFdORBjyCJ4sZoEbn cOfxtkW/lnAlI0M+jwJWMkUgr85Sb2wM0CNFH8COwwNN0e+6DswEF4TkQxm1VOpPNGmC j86sNAAGecq5EzYd0mIPUay0vl3a8lVWqV7M9iE33iUUzuk7bFA1qMwIi/y0EVMZdkze 9tsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=6K4/mBbSnPNCHknLHCRkmYyf35khcBGrazvAgUyZabU=; b=TDSLLMU9K1GgpYk+2UHQ/SIXp4uU0vyoIKxx9N9fGyYtyV91qIVuUlzbVIQMwZHGil w/pNhkCqgobmGHgTdn/cgb158iOwsFGbL188hUy/AXKIE9v45IMH64XQjX80rytyL/tY GoYhNLfI4PBNgAhdEegjVM6FiErn3l8gEhG20oWhqfgnesFAt4S5AzMifBxG4IQWW0NM kvQzMr/MM2Kbp1FuzNlau+CTtPLL+AUEajzF5GkDkru1YLVIcXNKc3jF83+YsesUZOgg PDh6zWdUS6EFReFKp5ATTeyqiSlondpw/YrHJJAYcb68+hkU/SJIiifVF9zgMapYaw47 nKUw== X-Gm-Message-State: AOAM531q43BP2Z8Tr7tp9DibqbYcli485r5XJAl1nFEbW94XHM8w1qHL 44gw6mXvPTIo3vAon3BSJB4qQQ== X-Google-Smtp-Source: ABdhPJyQXk5WKFLWx7/fyHp5v6hn4IRjh7aA3KcsJBq0KxfHE5OWvIzGZ8hCCzPrkuNDVYE7WhEnJQ== X-Received: by 2002:a37:dd7:: with SMTP id 206mr22652012qkn.306.1614027660325; Mon, 22 Feb 2021 13:01:00 -0800 (PST) Received: from nicolas-tpx395.lan (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id l65sm5468928qkf.113.2021.02.22.13.00.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Feb 2021 13:00:59 -0800 (PST) Message-ID: <7ab687c91b971219efb510aeb3ac9792ba8081dc.camel@ndufresne.ca> Subject: Re: [PATCH v5 2/3] media: uapi: Add VP9 stateless decoder controls From: Nicolas Dufresne To: Adrian Ratiu , linux-media@vger.kernel.org Date: Mon, 22 Feb 2021 16:00:56 -0500 In-Reply-To: <20201102190551.1223389-3-adrian.ratiu@collabora.com> References: <20201102190551.1223389-1-adrian.ratiu@collabora.com> <20201102190551.1223389-3-adrian.ratiu@collabora.com> User-Agent: Evolution 3.38.3 (3.38.3-1.fc33) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210222_160105_291070_C6659510 X-CRM114-Status: GOOD ( 34.52 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kernel@collabora.com, Jonas Karlman , linux-kernel@vger.kernel.org, Andrzej Pietrasiewicz , linux-rockchip@lists.infradead.org, Boris Brezillon , Laurent Pinchart , Hans Verkuil , Mauro Carvalho Chehab , Ezequiel Garcia , Daniel Almeida Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgQWxsLAoKTGUgbHVuZGkgMDIgbm92ZW1icmUgMjAyMCDDoCAyMTowNSArMDIwMCwgQWRyaWFu IFJhdGl1IGEgw6ljcml0wqA6Cj4gRnJvbTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxs b25AY29sbGFib3JhLmNvbT4KPiAKPiBBZGQgdGhlIFZQOSBzdGF0ZWxlc3MgZGVjb2RlciBjb250 cm9scyBwbHVzIHRoZSBkb2N1bWVudGF0aW9uIHRoYXQgZ29lcwo+IHdpdGggaXQuCj4gCj4gU2ln bmVkLW9mZi1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AY29sbGFib3JhLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBFemVxdWllbCBHYXJjaWEgPGV6ZXF1aWVsQGNvbGxhYm9yYS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogQWRyaWFuIFJhdGl1IDxhZHJpYW4ucmF0aXVAY29sbGFib3Jh LmNvbT4KPiAtLS0KPiDCoC4uLi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9iaWJsaW8ucnN0wqDC oMKgwqDCoMKgwqAgfMKgIDEwICsKPiDCoC4uLi9tZWRpYS92NGwvZXh0LWN0cmxzLWNvZGVjLnJz dMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDU1MCArKysrKysrKysrKysrKysrKysKPiDCoGRy aXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMuY8KgwqDCoMKgwqDCoMKgwqDCoCB8IDIz OSArKysrKysrKwo+IMKgZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKgaW5jbHVkZS9tZWRpYS92NGwyLWN0cmxzLmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA1ICsKPiDCoGluY2x1ZGUv bWVkaWEvdnA5LWN0cmxzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwgNDg2ICsrKysrKysrKysrKysrKysKPiDCoDYgZmlsZXMgY2hhbmdlZCwgMTI5MSBpbnNlcnRp b25zKCspCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9tZWRpYS92cDktY3RybHMuaAo+ IAo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2Jp Ymxpby5yc3QKPiBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvYmlibGlv LnJzdAo+IGluZGV4IDc4NjliNmY2ZmY3Mi4uNmI0YTgzYjA1M2Y1IDEwMDY0NAo+IC0tLSBhL0Rv Y3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvYmlibGlvLnJzdAo+ICsrKyBiL0Rv Y3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvYmlibGlvLnJzdAo+IEBAIC00MDcs MyArNDA3LDEzIEBAIFZQOAo+IMKgOnRpdGxlOsKgwqDCoMKgIFJGQyA2Mzg2OiAiVlA4IERhdGEg Rm9ybWF0IGFuZCBEZWNvZGluZyBHdWlkZSIKPiDCoAo+IMKgOmF1dGhvcjrCoMKgwqAgSi4gQmFu a29za2kgZXQgYWwuCj4gKwo+ICsuLiBfdnA5Ogo+ICsKPiArVlA5Cj4gKz09PQo+ICsKPiArCj4g Kzp0aXRsZTrCoMKgwqDCoCBWUDkgQml0c3RyZWFtICYgRGVjb2RpbmcgUHJvY2VzcyBTcGVjaWZp Y2F0aW9uCj4gKwo+ICs6YXV0aG9yOsKgwqDCoCBBZHJpYW4gR3JhbmdlIChHb29nbGUpLCBQZXRl ciBkZSBSaXZheiAoQXJnb24gRGVzaWduKSwgSm9uYXRoYW4KPiBIdW50IChBcmdvbiBEZXNpZ24p Cj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0 LWN0cmxzLWNvZGVjLnJzdAo+IGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0 bC9leHQtY3RybHMtY29kZWMucnN0Cj4gaW5kZXggY2U3MjhjNzU3ZWFmLi40NTY0ODhmMmI1Y2Eg MTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9leHQt Y3RybHMtY29kZWMucnN0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlh L3Y0bC9leHQtY3RybHMtY29kZWMucnN0Cj4gQEAgLTI3MzAsNiArMjczMCw1NTYgQEAgZW51bSB2 NGwyX21wZWdfdmlkZW9faDI2NF9oaWVyYXJjaGljYWxfY29kaW5nX3R5cGUgLQo+IMKgwqDCoMKg wqDCoCAtIGBgcGFkZGluZ1szXWBgCj4gwqDCoMKgwqDCoMKgIC0gQXBwbGljYXRpb25zIGFuZCBk cml2ZXJzIG11c3Qgc2V0IHRoaXMgdG8gemVyby4KPiDCoAo+ICsuLiBfdjRsMi1tcGVnLXZwOToK PiArCj4gK2BgVjRMMl9DSURfTVBFR19WSURFT19WUDlfRlJBTUVfQ09OVEVYVCgwLi4zKSAoc3Ry dWN0KWBgCj4gK8KgwqDCoCBTdG9yZXMgVlA5IHByb2JhYmlsaXRpZXMgYXR0YWNoZWQgdG8gYSBz cGVjaWZpYyBmcmFtZSBjb250ZXh0LiBUaGUgVlA5Cj4gK8KgwqDCoCBzcGVjaWZpY2F0aW9uIGFs bG93cyB1c2luZyBhIG1heGltdW0gb2YgNCBjb250ZXh0cy4gRWFjaCBmcmFtZSBiZWluZwo+ICvC oMKgwqAgZGVjb2RlZCByZWZlcnMgdG8gb25lIG9mIHRob3NlIGNvbnRleHQuIFNlZSBzZWN0aW9u ICc3LjEuMiBSZWZyZXNoCj4gK8KgwqDCoCBwcm9icyBzZW1hbnRpY3MnIHNlY3Rpb24gb2YgOnJl ZjpgdnA5YCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZXNlCj4gK8KgwqDCoCBjb250ZXh0cy4K PiArCj4gK8KgwqDCoCBUaGlzIGNvbnRyb2wgaXMgYmktZGlyZWN0aW9uYWw6Cj4gKwo+ICvCoMKg wqAgKiBhbGwgNCBjb250ZXh0cyBtdXN0IGJlIGluaXRpYWxpemVkIGJ5IHVzZXJzcGFjZSBqdXN0 IGFmdGVyIHRoZQo+ICvCoMKgwqDCoMKgIHN0cmVhbSBpcyBzdGFydGVkIGFuZCBiZWZvcmUgdGhl IGZpcnN0IGRlY29kaW5nIHJlcXVlc3QgaXMgc3VibWl0dGVkLgo+ICvCoMKgwqAgKiB0aGUgcmVm ZXJlbmNlZCBjb250ZXh0IG1pZ2h0IGJlIHJlYWQgYnkgdGhlIGtlcm5lbCB3aGVuIGEgZGVjb2Rp bmcKPiArwqDCoMKgwqDCoCByZXF1ZXN0IGlzIHN1Ym1pdHRlZCwgYW5kIHdpbGwgYmUgdXBkYXRl ZCBhZnRlciB0aGUgZGVjb2RlciBpcyBkb25lCj4gK8KgwqDCoMKgwqAgZGVjb2RpbmcgdGhlIGZy YW1lIGlmIHRoZSBgVjRMMl9WUDlfRlJBTUVfRkxBR19SRUZSRVNIX0ZSQU1FX0NUWGAgZmxhZwo+ ICvCoMKgwqDCoMKgIGlzIHNldC4KPiArwqDCoMKgICogY29udGV4dHMgd2lsbCBiZSByZWFkIGJh Y2sgYnkgdXNlciBzcGFjZSBiZWZvcmUgZWFjaCBkZWNvZGluZyByZXF1ZXN0Cj4gK8KgwqDCoMKg wqAgdG8gcmV0cmlldmUgdGhlIHVwZGF0ZWQgcHJvYmFiaWxpdGllcy4KPiArwqDCoMKgICogdXNl cnNwYWNlIHdpbGwgcmUtaW5pdGlhbGl6ZSB0aGUgY29udGV4dCB0byB0aGVpciBkZWZhdWx0IHZh bHVlcyB3aGVuCj4gK8KgwqDCoMKgwqAgYSByZXNldCBjb250ZXh0IGlzIHJlcXVpcmVkLgoKV2Ug YXJlIGN1cnJlbnRseSBkZWJhdGluZyB0aGlzIGluL291dCBjb250cm9scy4gV2UgaGF2ZSBpZGVu dGlmaWVkIHRoYXQgdGhpcwpjb250cm9scyByZXF1aXJlcyBhIGxvY2svc3RlcCBkZWNvZGluZyBm bG93LgoKICByZXF1ZXN0KCksIHdhaXQoKSwgcmVhZF9jdGwoKSwgLi4uCgpPdGhlcndpc2UgdGhl IHJlYWRpbmcgb2YgdGhlIGNvbnRyb2wgd291bGQgYmVjb21lIHJhY3ksIGFuZCBpbiBmYWN0LCB5 b3UgY2FuJ3QKcmVhbGx5IHF1ZXVlIGFueSBuZXcgcmVxdWVzdCwgc2luY2UgdGhlIHJlcXVlc3Qg ZGVwZW5kcyBvbiBoYXZpbmcgdGhlCnByb2JhYmlsaXRpZXMgdXBkYXRlZCBmcm9tIHRoZSBjb3Vu dHMvc3RhdHMgcmVzdWx0aW5nIG9mIHRoZSBkZWNvZGluZyBwcm9jZXNzLgpXZSBiZWxpZXZlIHRo aXMgbWVjaGFuaXNtIHdpbGwgaGF2ZSBhIG5lZ2F0aXZlIGltcGFjdCBvbiB0aGUgcGVyZm9ybWFu Y2UuIFdlCmFscmVhZHkgc2hvd2VkIHZpc2libGUgZnJhbWVyYXRlIGdhaW4gYnkga2VlcGluZyB0 aGUgT1VUUFVUIGZpbGxlZCB3aXRoIFJLVkRFQwpILjI2NC4KCkxldCdzIHNoYXJlIGEgYml0IG1v cmUgZGV0YWlscyBhYm91dCB0aGlzIGNvbnRyb2wuIEl0IGlzIGltcG9ydGFudCB0byBtZW50aW9u CnRoYXQgdGhpcyBjb250cm9sIGRvZXMgbm90IGV4aXN0IGluIGFueSBvdGhlciBzdGF0ZWxlc3Mg QVBJIChWQS1WQVBJIGFuZCBEWFZBIGF0CmxlYXN0KS4gRWFjaCBWUDkgZnJhbWVzIGhhdmUgdHdv IGhlYWRlcnMsIHRoZSB1bmNvbXByZXNzZWQgYW5kIHRoZSBjb21wcmVzc2VkCmhlYWRlcnMuIFRo ZSBjb21wcmVzc2VkIGhlYWRlcnMgaXMgbW9zdGx5IGZvcm1lZCBieSB0aGUgcHJvYmFiaWxpdHkg dXBkYXRlcy4KRWZmZWN0aXZlbHkgb25lIG9mIHRoZSBjb21wcmVzc2lvbiBtZXRob2QgaW4gVlA5 IGlzIHRvIHVzZSBwcm9iYWJpbGl0aWVzIHRvCmNvbXByZXNzIGZ1cnRoZXIgdGhlIGJpdHN0cmVh bSB2YWx1ZXMuIEFzIHRoZSBwcm9iYWJpbGl0aWVzIHRha2Ugc3BhY2UgdG8gc3RvcmUsCnRoZXNl IGFyZSBhbHNvIGNvbXByZXNzZWQgYW5kIGV4cHJlc3NlZCBhcyBkZWx0YXMgb3ZlciBjb21wdXRl ZCBzdGF0aXN0aWNzCmR1cmluZyB0aGUgZGVjb2RpbmcgcHJvY2VzcyAodGhlIGRlY29kZXIgY291 bnRzIHRoZSBvY2N1cmVuY2Ugb2Ygc3BlY2lmaWMgdmFsdWVzCmZvciBzcGVjaWZpYyBmaWVsZCku CgpJdCBvdXIgY2FzZSwgdGhlIEhXIGRvZXMgbm90IHBhcnNlIHRoZSBjb21wcmVzc2VkIGhlYWRl cnMuIFRoaXMgbWVhbnMgdGhlIENQVQpuZWVkcyB0byBiZSBpbnZvbHZlZCB0byB1cGRhdGUgdGhl IHByb2JhYmlsaXRpZXMuIEFzIHBlciBjaHJvbWl1bSBjb2RlLCBpdCBsb29rcwpsaWtlIG5vdCBh bGwgQ2hyb21lT1MgSFcgZHJpdmVyIG5lZWRlZCB0aGF0IGNvbnRyb2w6CgpodHRwczovL2Nocm9t aXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjLysvbWFzdGVyL21lZGlhL2dwdS92NGwy L3Y0bDJfdnA5X2FjY2VsZXJhdG9yX2xlZ2FjeS5jYyMxOTAKCldoYXQgd2UnZCBsaWtlIHRvIGF0 dGVtcHQsIGlzIHRvIHRyeSBhbmQgdHVybiB0aGlzIENPREVDIEFQSSBpbiBhIHdheSBzbyB3ZSBv bmx5CnB1c2ggd29yayB0byB0aGUgZGVjb2RlciwgcmF0aGVyIHRoZW4gZG9pbmcgcHVzaCAvIHB1 bGwuIEFzIGEgUG9DIHdlJ2xsIHRyeSBhbmQKcGFyc2UgdGhlIGNvbXByZXNzZWQgaGVhZGVycywg c28gdGhhdCB0aGUgaGFuZGxpbmcgb2YgcHJvYmFiaWxpdGllcyB3aWxsCmVudGlyZWx5IGJlIGlu c2lkZSB0aGUga2VybmVsLiBXZSBkb24ndCBrbm93IHlldCBob3cgbXVjaCBwYXJzaW5nIHRoaXMg d2lsbApyZXByZXNlbnQuIElmIHRoYXQgZmVlbHMgdG9vIHJpc2t5IChwYXJzaW5nIHZhcmlhYmxl IGxlbmd0aCBjb2RpbmcgaXMgbm90IHRoZQptb3N0IHRlbXB0aW5nIHRoaW5nIHRvIGRvIGluIGEg a2VybmVsKSwgd2UnbGwgaGF2ZSB0byB0cnkgYW5kIGZpbmQgc29tZSBoeWJyaWQKc29sdXRpb24u IE9uZSB0aGluZyB3ZSBzZWVtIHRvIG9ic2VydmUgaXMgdGhhdCB0aGUgcGFyc2luZyBvZiB0aGUg Y29tcHJlc3NlZApoZWFkZXJzIGlzIG5vdCBzdHJpY3RseSBkZXBlbmRlbnQgb24gaGF2aW5nIHRo ZSB1cGRhdGVkIHByb2JhYmlsaXRpZXMuIFNvIHdlIG1heQphbHNvIHRyeSB0byBzdG9yZSB0aGUg cHJvYmFiaWxpdHkgdXBkYXRlcyBpbiBvcmRlciB0byBkZWZmZXIgdGhlIHVwZGF0ZSBvZiB0aGUK cHJvYmFiaWxpdGllcyB0aGF0IHdvdWxkIHN0YXkgc3RvcmVkIGluIHRoZSBrZXJuZWwuCgpOb3Rl IHRoYXQgcGFyc2luZyB0aGUgY29tcHJlc3NlZCBoZWFkZXIgbWF5IGhhdmUgc29tZSBpbXBhY3Qg b24gdGhlIGFiaWxpdHkgdG8KY2FycnkgZW5jcnlwdGVkIChha2EgRFJNKSBjb250ZW50LiBJdCB3 b3VsZCBiZSB2ZXJ5IG5pY2UgaWYgc29tZW9uZSB3aXRoCmtub3dsZWRnZSB3b3VsZCBwcm92aWRl IHVzIHBvaW50ZXJzIGlmIHRoZSBjb21wcmVzc2VkIGhlYWRlcnMgaXMgaW5jbHVkZWQgaW4gdGhl CmVuY3J5cHRlZCBwYXJ0IGZvciBWUDkuCgpyZWdhcmRzLApOaWNvbGFzCgoKPiArCj4gK8KgwqDC oCAuLiBub3RlOjoKPiArCj4gK8KgwqDCoMKgwqDCoCBUaGlzIGNvbXBvdW5kIGNvbnRyb2wgaXMg bm90IHlldCBwYXJ0IG9mIHRoZSBwdWJsaWMga2VybmVsIEFQSSBhbmQKPiArwqDCoMKgwqDCoMKg IGl0IGlzIGV4cGVjdGVkIHRvIGNoYW5nZS4KPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfY3RybF92 cDlfZnJhbWVfY3R4Cj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFi dWxhcmNvbHVtbnM6OiB8cHs1LjhjbX18cHs0LjhjbX18cHs2LjZjbX18Cj4gKwo+ICsuLiBmbGF0 LXRhYmxlOjogc3RydWN0IHY0bDJfY3RybF92cDlfZnJhbWVfY3R4Cj4gK8KgwqDCoCA6aGVhZGVy LXJvd3M6wqAgMAo+ICvCoMKgwqAgOnN0dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrC oMKgwqDCoMKgwqAgMSAxIDIKPiArCj4gK8KgwqDCoCAqIC0gc3RydWN0IDpjOnR5cGU6YHY0bDJf dnA5X3Byb2JhYmlsaXRpZXNgCj4gK8KgwqDCoMKgwqAgLSBgYHByb2JzYGAKPiArwqDCoMKgwqDC oCAtIFN0cnVjdHVyZSB3aXRoIFZQOSBwcm9iYWJpbGl0aWVzIGF0dGFjaGVkIHRvIHRoZSBjb250 ZXh0Lgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfcHJvYmFiaWxpdGllcwo+ICsKPiArLi4g Y3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MS41Y219 fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IHN0cnVjdCB2NGwyX3Zw OV9wcm9iYWJpbGl0aWVzCj4gK8KgwqDCoCA6aGVhZGVyLXJvd3M6wqAgMAo+ICvCoMKgwqAgOnN0 dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrCoMKgwqDCoMKgwqAgMSAxIDIKPiArCj4g K8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGB0eDhbMl1bMV1gYAo+ICvCoMKgwqDC oMKgIC0gVFggOHg4IHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDC oMKgIC0gYGB0eDE2WzJdWzJdYGAKPiArwqDCoMKgwqDCoCAtIFRYIDE2eDE2IHByb2JhYmlsaXRp ZXMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGB0eDMyWzJdWzNdYGAKPiAr wqDCoMKgwqDCoCAtIFRYIDMyeDMyIHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0gX191OAo+ ICvCoMKgwqDCoMKgIC0gYGBjb2VmWzRdWzJdWzJdWzZdWzZdWzNdYGAKPiArwqDCoMKgwqDCoCAt IENvZWZmaWNpZW50IHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDC oMKgIC0gYGBza2lwWzNdYGAKPiArwqDCoMKgwqDCoCAtIFNraXAgcHJvYmFiaWxpdGllcy4KPiAr wqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYGludGVyX21vZGVbN11bM11gYAo+ICvC oMKgwqDCoMKgIC0gSW50ZXIgcHJlZGljdGlvbiBtb2RlIHByb2JhYmlsaXRpZXMuCj4gK8KgwqDC oCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBpbnRlcnBfZmlsdGVyWzRdWzJdYGAKPiArwqDC oMKgwqDCoCAtIEludGVycG9sYXRpb24gZmlsdGVyIHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAq IC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBpc19pbnRlcls0XWBgCj4gK8KgwqDCoMKgwqAgLSBJ cyBpbnRlci1ibG9jayBwcm9iYWJpbGl0aWVzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKg wqDCoCAtIGBgY29tcF9tb2RlWzVdYGAKPiArwqDCoMKgwqDCoCAtIENvbXBvdW5kIHByZWRpY3Rp b24gbW9kZSBwcm9iYWJpbGl0aWVzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAt IGBgc2luZ2xlX3JlZls1XVsyXWBgCj4gK8KgwqDCoMKgwqAgLSBTaW5nbGUgcmVmZXJlbmNlIHBy b2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBjb21wX21v ZGVbNV1gYAo+ICvCoMKgwqDCoMKgIC0gQ29tcG91bmQgcmVmZXJlbmNlIHByb2JhYmlsaXRpZXMu Cj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGB5X21vZGVbNF1bOV1gYAo+ICvC oMKgwqDCoMKgIC0gWSBwcmVkaWN0aW9uIG1vZGUgcHJvYmFiaWxpdGllcy4KPiArwqDCoMKgICog LSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYHV2X21vZGVbMTBdWzldYGAKPiArwqDCoMKgwqDCoCAt IFVWIHByZWRpY3Rpb24gbW9kZSBwcm9iYWJpbGl0aWVzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiAr wqDCoMKgwqDCoCAtIGBgcGFydGl0aW9uWzE2XVszXWBgCj4gK8KgwqDCoMKgwqAgLSBQYXJ0aXRp b24gcHJvYmFiaWxpdGllcy4KPiArwqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYG12 LmpvaW50WzNdYGAKPiArwqDCoMKgwqDCoCAtIE1vdGlvbiB2ZWN0b3Igam9pbnQgcHJvYmFiaWxp dGllcy4KPiArwqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYG12LnNpZ25bMl1gYAo+ ICvCoMKgwqDCoMKgIC0gTW90aW9uIHZlY3RvciBzaWduIHByb2JhYmlsaXRpZXMuCj4gK8KgwqDC oCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBtdi5jbGFzc1syXVsxMF1gYAo+ICvCoMKgwqDC oMKgIC0gTW90aW9uIHZlY3RvciBjbGFzcyBwcm9iYWJpbGl0aWVzLgo+ICvCoMKgwqAgKiAtIF9f dTgKPiArwqDCoMKgwqDCoCAtIGBgbXYuY2xhc3MwX2JpdFsyXWBgCj4gK8KgwqDCoMKgwqAgLSBN b3Rpb24gdmVjdG9yIGNsYXNzMCBiaXQgcHJvYmFiaWxpdGllcy4KPiArwqDCoMKgICogLSBfX3U4 Cj4gK8KgwqDCoMKgwqAgLSBgYG12LmJpdHNbMl1bMTBdYGAKPiArwqDCoMKgwqDCoCAtIE1vdGlv biB2ZWN0b3IgYml0cyBwcm9iYWJpbGl0aWVzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKg wqDCoCAtIGBgbXYuY2xhc3MwX2ZyWzJdWzJdWzNdYGAKPiArwqDCoMKgwqDCoCAtIE1vdGlvbiB2 ZWN0b3IgY2xhc3MwIGZyYWN0aW9uYWwgYml0IHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0g X191OAo+ICvCoMKgwqDCoMKgIC0gYGBtdi5mclsyXVszXWBgCj4gK8KgwqDCoMKgwqAgLSBNb3Rp b24gdmVjdG9yIGZyYWN0aW9uYWwgYml0IHByb2JhYmlsaXRpZXMuCj4gK8KgwqDCoCAqIC0gX191 OAo+ICvCoMKgwqDCoMKgIC0gYGBtdi5jbGFzczBfaHBbMl1gYAo+ICvCoMKgwqDCoMKgIC0gTW90 aW9uIHZlY3RvciBjbGFzczAgaGlnaCBwcmVjaXNpb24gZnJhY3Rpb25hbCBiaXQgcHJvYmFiaWxp dGllcy4KPiArwqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYG12LmhwWzJdYGAKPiAr wqDCoMKgwqDCoCAtIE1vdGlvbiB2ZWN0b3IgaGlnaCBwcmVjaXNpb24gZnJhY3Rpb25hbCBiaXQg cHJvYmFiaWxpdGllcy4KPiArCj4gK2BgVjRMMl9DSURfTVBFR19WSURFT19WUDlfRlJBTUVfREVD T0RFX1BBUkFNUyAoc3RydWN0KWBgCj4gK8KgwqDCoCBTcGVjaWZpZXMgdGhlIGZyYW1lIHBhcmFt ZXRlcnMgZm9yIHRoZSBhc3NvY2lhdGVkIFZQOSBmcmFtZSBkZWNvZGUKPiByZXF1ZXN0Lgo+ICvC oMKgwqAgVGhpcyBpbmNsdWRlcyB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgZm9yIGNvbmZpZ3Vy aW5nIGEgc3RhdGVsZXNzCj4gaGFyZHdhcmUKPiArwqDCoMKgIGRlY29kaW5nIHBpcGVsaW5lIGZv ciBWUDkuIFRoZSBiaXRzdHJlYW0gcGFyYW1ldGVycyBhcmUgZGVmaW5lZCBhY2NvcmRpbmcKPiAr wqDCoMKgIHRvIDpyZWY6YHZwOWAuCj4gKwo+ICvCoMKgwqAgLi4gbm90ZTo6Cj4gKwo+ICvCoMKg wqDCoMKgwqAgVGhpcyBjb21wb3VuZCBjb250cm9sIGlzIG5vdCB5ZXQgcGFydCBvZiB0aGUgcHVi bGljIGtlcm5lbCBBUEkgYW5kCj4gK8KgwqDCoMKgwqDCoCBpdCBpcyBleHBlY3RlZCB0byBjaGFu Z2UuCj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX2N0cmxfdnA5X2ZyYW1lX2RlY29kZV9wYXJhbXMK PiArCj4gKy4uIGNzc2NsYXNzOjogbG9uZ3RhYmxlCj4gKwo+ICsuLiB0YWJ1bGFyY29sdW1uczo6 IHxwezEuNWNtfXxwezYuM2NtfXxwezkuNGNtfXwKPiArCj4gKy4uIGZsYXQtdGFibGU6OiBzdHJ1 Y3QgdjRsMl9jdHJsX3ZwOV9mcmFtZV9kZWNvZGVfcGFyYW1zCj4gK8KgwqDCoCA6aGVhZGVyLXJv d3M6wqAgMAo+ICvCoMKgwqAgOnN0dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrCoMKg wqDCoMKgwqAgMSAxIDIKPiArCj4gK8KgwqDCoCAqIC0gX191MzIKPiArwqDCoMKgwqDCoCAtIGBg ZmxhZ3NgYAo+ICvCoMKgwqDCoMKgIC0gQ29tYmluYXRpb24gb2YgVjRMMl9WUDlfRlJBTUVfRkxB R18qIGZsYWdzLiBTZWUKPiArwqDCoMKgwqDCoMKgwqAgOmM6dHlwZTpgdjRsMl92cDlfZnJhbWVf ZmxhZ3NgLgo+ICvCoMKgwqAgKiAtIF9fdTE2Cj4gK8KgwqDCoMKgwqAgLSBgYGNvbXByZXNzZWRf aGVhZGVyX3NpemVgYAo+ICvCoMKgwqDCoMKgIC0gQ29tcHJlc3NlZCBoZWFkZXIgc2l6ZSBpbiBi eXRlcy4KPiArwqDCoMKgICogLSBfX3UxNgo+ICvCoMKgwqDCoMKgIC0gYGB1bmNvbXByZXNzZWRf aGVhZGVyX3NpemVgYAo+ICvCoMKgwqDCoMKgIC0gVW5jb21wcmVzc2VkIGhlYWRlciBzaXplIGlu IGJ5dGVzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgcHJvZmlsZWBgCj4g K8KgwqDCoMKgwqAgLSBWUDkgcHJvZmlsZS4gQ2FuIGJlIDAsIDEsIDIgb3IgMy4KPiArwqDCoMKg ICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYHJlc2V0X2ZyYW1lX2NvbnRleHRgYAo+ICvCoMKg wqDCoMKgIC0gRnJhbWUgY29udGV4dCB0aGF0IHNob3VsZCBiZSB1c2VkL3VwZGF0ZWQgd2hlbiBk ZWNvZGluZyB0aGUgZnJhbWUuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBi aXRfZGVwdGhgYAo+ICvCoMKgwqDCoMKgIC0gQ29tcG9uZW50IGRlcHRoIGluIGJpdHMuIE11c3Qg YmUgOCBmb3IgcHJvZmlsZSAwIGFuZCAxLiBNdXN0IDEwIG9yIDEyCj4gK8KgwqDCoMKgwqDCoMKg IGZvciBwcm9maWxlIDIgYW5kIDMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0g YGBpbnRlcnBvbGF0aW9uX2ZpbHRlcmBgCj4gK8KgwqDCoMKgwqAgLSBTcGVjaWZpZXMgdGhlIGZp bHRlciBzZWxlY3Rpb24gdXNlZCBmb3IgcGVyZm9ybWluZyBpbnRlciBwcmVkaWN0aW9uLgo+IFNl ZQo+ICvCoMKgwqDCoMKgwqDCoCA6Yzp0eXBlOmB2NGwyX3ZwOV9pbnRlcnBvbGF0aW9uX2ZpbHRl cmAuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGB0aWxlX2NvbHNfbG9nMmBg Cj4gK8KgwqDCoMKgwqAgLSBTcGVjaWZpZXMgdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgdGhlIHdp ZHRoIG9mIGVhY2ggdGlsZSAod2hlcmUgdGhlCj4gK8KgwqDCoMKgwqDCoMKgIHdpZHRoIGlzIG1l YXN1cmVkIGluIHVuaXRzIG9mIDh4OCBibG9ja3MpLiBTaGFsbCBiZSBsZXNzIHRoYW4gb3IKPiBl cXVhbAo+ICvCoMKgwqDCoMKgwqDCoCB0byA2Lgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKg wqDCoCAtIGBgdGlsZV9yb3dzX2xvZzJgYAo+ICvCoMKgwqDCoMKgIC0gU3BlY2lmaWVzIHRoZSBi YXNlIDIgbG9nYXJpdGhtIG9mIHRoZSBoZWlnaHQgb2YgZWFjaCB0aWxlICh3aGVyZSB0aGUKPiAr wqDCoMKgwqDCoMKgwqAgaGVpZ2h0IGlzIG1lYXN1cmVkIGluIHVuaXRzIG9mIDh4OCBibG9ja3Mp Cj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGB0eF9tb2RlYGAKPiArwqDCoMKg wqDCoCAtIFNwZWNpZmllcyB0aGUgVFggbW9kZS4gU2VlIDpjOnR5cGU6YHY0bDJfdnA5X3R4X21v ZGVgLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgcmVmZXJlbmNlX21vZGVg YAo+ICvCoMKgwqDCoMKgIC0gU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGludGVyIHByZWRpY3Rpb24g dG8gYmUgdXNlZC4gU2VlCj4gK8KgwqDCoMKgwqDCoMKgIDpjOnR5cGU6YHY0bDJfdnA5X3JlZmVy ZW5jZV9tb2RlYC4KPiArwqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYHBhZGRpbmdb N11gYAo+ICvCoMKgwqDCoMKgIC0gTmVlZGVkIHRvIG1ha2UgdGhpcyBzdHJ1Y3QgNjQgYml0IGFs aWduZWQuIFNoYWxsIGJlIGZpbGxlZCB3aXRoCj4gemVyb2VzLgo+ICvCoMKgwqAgKiAtIF9fdTE2 Cj4gK8KgwqDCoMKgwqAgLSBgYGZyYW1lX3dpZHRoX21pbnVzXzFgYAo+ICvCoMKgwqDCoMKgIC0g QWRkIDEgdG8gZ2V0IHRoZSBmcmFtZSB3aWR0aCBleHByZXNzZWQgaW4gcGl4ZWxzLgo+ICvCoMKg wqAgKiAtIF9fdTE2Cj4gK8KgwqDCoMKgwqAgLSBgYGZyYW1lX2hlaWdodF9taW51c18xYGAKPiAr wqDCoMKgwqDCoCAtIEFkZCAxIHRvIGdldCB0aGUgZnJhbWUgaGVpZ2h0IGV4cHJlc3NlZCBpbiBw aXhlbHMuCj4gK8KgwqDCoCAqIC0gX191MTYKPiArwqDCoMKgwqDCoCAtIGBgZnJhbWVfd2lkdGhf bWludXNfMWBgCj4gK8KgwqDCoMKgwqAgLSBBZGQgMSB0byBnZXQgdGhlIGV4cGVjdGVkIHJlbmRl ciB3aWR0aCBleHByZXNzZWQgaW4gcGl4ZWxzLiBUaGlzIGlzCj4gK8KgwqDCoMKgwqDCoMKgIG5v dCB1c2VkIGR1cmluZyB0aGUgZGVjb2RpbmcgcHJvY2VzcyBidXQgbWlnaHQgYmUgdXNlZCBieSBI VyBzY2FsZXJzCj4gdG8KPiArwqDCoMKgwqDCoMKgwqAgcHJlcGFyZSBhIGZyYW1lIHRoYXQncyBy ZWFkeSBmb3Igc2Nhbm91dC4KPiArwqDCoMKgICogLSBfX3UxNgo+ICvCoMKgwqDCoMKgIC0gZnJh bWVfaGVpZ2h0X21pbnVzXzEKPiArwqDCoMKgwqDCoCAtIEFkZCAxIHRvIGdldCB0aGUgZXhwZWN0 ZWQgcmVuZGVyIGhlaWdodCBleHByZXNzZWQgaW4gcGl4ZWxzLiBUaGlzIGlzCj4gK8KgwqDCoMKg wqDCoMKgIG5vdCB1c2VkIGR1cmluZyB0aGUgZGVjb2RpbmcgcHJvY2VzcyBidXQgbWlnaHQgYmUg dXNlZCBieSBIVyBzY2FsZXJzCj4gdG8KPiArwqDCoMKgwqDCoMKgwqAgcHJlcGFyZSBhIGZyYW1l IHRoYXQncyByZWFkeSBmb3Igc2Nhbm91dC4KPiArwqDCoMKgICogLSBfX3U2NAo+ICvCoMKgwqDC oMKgIC0gYGByZWZzWzNdYGAKPiArwqDCoMKgwqDCoCAtIEFycmF5IG9mIHJlZmVyZW5jZSBmcmFt ZSB0aW1lc3RhbXBzLgo+ICvCoMKgwqAgKiAtIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX3ZwOV9sb29w X2ZpbHRlcmAKPiArwqDCoMKgwqDCoCAtIGBgbGZgYAo+ICvCoMKgwqDCoMKgIC0gTG9vcCBmaWx0 ZXIgcGFyYW1ldGVycy4gU2VlIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX3ZwOV9sb29wX2ZpbHRlcmAu Cj4gK8KgwqDCoCAqIC0gc3RydWN0IDpjOnR5cGU6YHY0bDJfdnA5X3F1YW50aXphdGlvbmAKPiAr wqDCoMKgwqDCoCAtIGBgcXVhbnRgYAo+ICvCoMKgwqDCoMKgIC0gUXVhbnRpemF0aW9uIHBhcmFt ZXRlcnMuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9xdWFudGl6YXRpb25gLgo+ICvCoMKgwqAgKiAt IHN0cnVjdCA6Yzp0eXBlOmB2NGwyX3ZwOV9zZWdtZW50YXRpb25gCj4gK8KgwqDCoMKgwqAgLSBg YHNlZ2BgCj4gK8KgwqDCoMKgwqAgLSBTZWdtZW50YXRpb24gcGFyYW1ldGVycy4gU2VlIDpjOnR5 cGU6YHY0bDJfdnA5X3NlZ21lbnRhdGlvbmAuCj4gK8KgwqDCoCAqIC0gc3RydWN0IDpjOnR5cGU6 YHY0bDJfdnA5X3Byb2JhYmlsaXRpZXNgCj4gK8KgwqDCoMKgwqAgLSBgYHByb2JzYGAKPiArwqDC oMKgwqDCoCAtIFByb2JhYmlsaXRpZXMuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9wcm9iYWJpbGl0 aWVzYC4KPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X2ZyYW1lX2ZsYWdzCj4gKwo+ICsuLiBj c3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18 cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9m cmFtZV9mbGFncwo+ICvCoMKgwqAgOmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpzdHViLWNv bHVtbnM6IDAKPiArwqDCoMKgIDp3aWR0aHM6wqDCoMKgwqDCoMKgIDEgMgo+ICsKPiArwqDCoMKg ICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZMQUdfS0VZX0ZSQU1FYGAKPiArwqDCoMKgwqDCoCAtIFRo ZSBmcmFtZSBpcyBhIGtleSBmcmFtZS4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZM QUdfU0hPV19GUkFNRWBgCj4gK8KgwqDCoMKgwqAgLSBUaGUgZnJhbWUgc2hvdWxkIGJlIGRpc3Bs YXllZC4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZMQUdfRVJST1JfUkVTSUxJRU5U YGAKPiArwqDCoMKgwqDCoCAtIFRoZSBkZWNvZGluZyBzaG91bGQgYmUgZXJyb3IgcmVzaWxpZW50 Lgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfRlJBTUVfRkxBR19JTlRSQV9PTkxZYGAKPiArwqDC oMKgwqDCoCAtIFRoZSBmcmFtZSBkb2VzIG5vdCByZWZlcmVuY2Ugb3RoZXIgZnJhbWVzLgo+ICvC oMKgwqAgKiAtIGBgVjRMMl9WUDlfRlJBTUVfRkxBR19BTExPV19ISUdIX1BSRUNfTVZgYAo+ICvC oMKgwqDCoMKgIC0gdGhlIGZyYW1lIG1pZ2h0IGNhbiBoaWdoIHByZWNpc2lvbiBtb3Rpb24gdmVj dG9ycy4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUkVGUkVTSF9GUkFNRV9D VFhgYAo+ICvCoMKgwqDCoMKgIC0gRnJhbWUgY29udGV4dCBzaG91bGQgYmUgdXBkYXRlZCBhZnRl ciBkZWNvZGluZy4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUEFSQUxMRUxf REVDX01PREVgYAo+ICvCoMKgwqDCoMKgIC0gUGFyYWxsZWwgZGVjb2RpbmcgaXMgdXNlZC4KPiAr wqDCoMKgICogLSBgYFY0TDJfVlA5X0ZSQU1FX0ZMQUdfWF9TVUJTQU1QTElOR2BgCj4gK8KgwqDC oMKgwqAgLSBWZXJ0aWNhbCBzdWJzYW1wbGluZyBpcyBlbmFibGVkLgo+ICvCoMKgwqAgKiAtIGBg VjRMMl9WUDlfRlJBTUVfRkxBR19ZX1NVQlNBTVBMSU5HYGAKPiArwqDCoMKgwqDCoCAtIEhvcml6 b250YWwgc3Vic2FtcGxpbmcgaXMgZW5hYmxlZC4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0ZS QU1FX0ZMQUdfQ09MT1JfUkFOR0VfRlVMTF9TV0lOR2BgCj4gK8KgwqDCoMKgwqAgLSBUaGUgZnVs bCBVViByYW5nZSBpcyB1c2VkLgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfcmVmX2lkCj4g Kwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8 cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2 NGwyX3ZwOV9yZWZfaWQKPiArwqDCoMKgIDpoZWFkZXItcm93czrCoCAwCj4gK8KgwqDCoCA6c3R1 Yi1jb2x1bW5zOiAwCj4gK8KgwqDCoCA6d2lkdGhzOsKgwqDCoMKgwqDCoCAxIDIKPiArCj4gK8Kg wqDCoCAqIC0gYGBWNEwyX1JFRl9JRF9MQVNUYGAKPiArwqDCoMKgwqDCoCAtIExhc3QgcmVmZXJl bmNlIGZyYW1lLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9SRUZfSURfR09MREVOYGAKPiArwqDCoMKg wqDCoCAtIEdvbGRlbiByZWZlcmVuY2UgZnJhbWUuCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1JFRl9J RF9BTFRSRUZgYAo+ICvCoMKgwqDCoMKgIC0gQWx0ZXJuYXRpdmUgcmVmZXJlbmNlIGZyYW1lLgo+ ICvCoMKgwqAgKiAtIGBgVjRMMl9SRUZfSURfQ05UYGAKPiArwqDCoMKgwqDCoCAtIE51bWJlciBv ZiByZWZlcmVuY2UgZnJhbWVzLgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfdHhfbW9kZQo+ ICsKPiArLi4gY3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjog fHB7MS41Y219fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IGVudW0g djRsMl92cDlfdHhfbW9kZQo+ICvCoMKgwqAgOmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpz dHViLWNvbHVtbnM6IDAKPiArwqDCoMKgIDp3aWR0aHM6wqDCoMKgwqDCoMKgIDEgMgo+ICsKPiAr wqDCoMKgICogLSBgYFY0TDJfVlA5X1RYX01PREVfT05MWV80WDRgYAo+ICvCoMKgwqDCoMKgIC0g VHJhbnNmb3JtIHNpemUgaXMgNHg0Lgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfVFhfTU9ERV9B TExPV184WDhgYAo+ICvCoMKgwqDCoMKgIC0gVHJhbnNmb3JtIHNpemUgY2FuIGJlIHVwIHRvIDh4 OC4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X1RYX01PREVfQUxMT1dfMTZYMTZgYAo+ICvCoMKg wqDCoMKgIC0gVHJhbnNmb3JtIHNpemUgY2FuIGJlIHVwIHRvIDE2eDE2Lgo+ICvCoMKgwqAgKiAt IGBgVjRMMl9WUDlfVFhfTU9ERV9BTExPV18zMlgzMmBgCj4gK8KgwqDCoMKgwqAgLSB0cmFuc2Zv cm0gc2l6ZSBjYW4gYmUgdXAgdG8gMzJ4MzIuCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9UWF9N T0RFX1NFTEVDVGBgCj4gK8KgwqDCoMKgwqAgLSBCaXRzdHJlYW0gY29udGFpbnMgdHJhbnNmb3Jt IHNpemUgZm9yIGVhY2ggYmxvY2suCj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX3ZwOV9yZWZlcmVu Y2VfbW9kZQo+ICsKPiArLi4gY3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRhYnVsYXJj b2x1bW5zOjogfHB7MS41Y219fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiArLi4gZmxhdC10YWJs ZTo6IGVudW0gdjRsMl92cDlfcmVmZXJlbmNlX21vZGUKPiArwqDCoMKgIDpoZWFkZXItcm93czrC oCAwCj4gK8KgwqDCoCA6c3R1Yi1jb2x1bW5zOiAwCj4gK8KgwqDCoCA6d2lkdGhzOsKgwqDCoMKg wqDCoCAxIDIKPiArCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9SRUZfTU9ERV9TSU5HTEVgYAo+ ICvCoMKgwqDCoMKgIC0gSW5kaWNhdGVzIHRoYXQgYWxsIHRoZSBpbnRlciBibG9ja3MgdXNlIG9u bHkgYSBzaW5nbGUgcmVmZXJlbmNlIGZyYW1lCj4gK8KgwqDCoMKgwqDCoMKgIHRvIGdlbmVyYXRl IG1vdGlvbiBjb21wZW5zYXRlZCBwcmVkaWN0aW9uLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlf UkVGX01PREVfQ09NUE9VTkRgYAo+ICvCoMKgwqDCoMKgIC0gUmVxdWlyZXMgYWxsIHRoZSBpbnRl ciBibG9ja3MgdG8gdXNlIGNvbXBvdW5kIG1vZGUuIFNpbmdsZSByZWZlcmVuY2UKPiArwqDCoMKg wqDCoMKgwqAgZnJhbWUgcHJlZGljdGlvbiBpcyBub3QgYWxsb3dlZC4KPiArwqDCoMKgICogLSBg YFY0TDJfVlA5X1JFRl9NT0RFX1NFTEVDVGBgCj4gK8KgwqDCoMKgwqAgLSBBbGxvd3MgZWFjaCBp bmRpdmlkdWFsIGludGVyIGJsb2NrIHRvIHNlbGVjdCBiZXR3ZWVuIHNpbmdsZSBhbmQKPiArwqDC oMKgwqDCoMKgwqAgY29tcG91bmQgcHJlZGljdGlvbiBtb2Rlcy4KPiArCj4gKy4uIGM6dHlwZTo6 IHY0bDJfdnA5X2ludGVycG9sYXRpb25fZmlsdGVyCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0 YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRj bX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9pbnRlcnBvbGF0aW9uX2Zp bHRlcgo+ICvCoMKgwqAgOmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpzdHViLWNvbHVtbnM6 IDAKPiArwqDCoMKgIDp3aWR0aHM6wqDCoMKgwqDCoMKgIDEgMgo+ICsKPiArwqDCoMKgICogLSBg YFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfOFRBUGBgCj4gK8KgwqDCoMKgwqAgLSBIZWlnaHQgdGFw IGZpbHRlci4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfOFRBUF9TTU9P VEhgYAo+ICvCoMKgwqDCoMKgIC0gSGVpZ2h0IHRhcCBzbW9vdGggZmlsdGVyLgo+ICvCoMKgwqAg KiAtIGBgVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl84VEFQX1NIQVJQYGAKPiArwqDCoMKgwqDCoCAt IEhlaWdodCB0YXAgc2hhcnAgZmlsdGVyLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfSU5URVJQ X0ZJTFRFUl9CSUxJTkVBUmBgCj4gK8KgwqDCoMKgwqAgLSBCaWxpbmVhciBmaWx0ZXIuCj4gK8Kg wqDCoCAqIC0gYGBWNEwyX1ZQOV9JTlRFUlBfRklMVEVSX1NXSVRDSEFCTEVgYAo+ICvCoMKgwqDC oMKgIC0gRmlsdGVyIHNlbGVjdGlvbiBpcyBzaWduYWxlZCBhdCB0aGUgYmxvY2sgbGV2ZWwuCj4g Kwo+ICsuLiBjOnR5cGU6OiB2NGwyX3ZwOV9yZXNldF9mcmFtZV9jb250ZXh0Cj4gKwo+ICsuLiBj c3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18 cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9y ZXNldF9mcmFtZV9jb250ZXh0Cj4gK8KgwqDCoCA6aGVhZGVyLXJvd3M6wqAgMAo+ICvCoMKgwqAg OnN0dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrCoMKgwqDCoMKgwqAgMSAyCj4gKwo+ ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX05PTkVgYAo+ICvCoMKgwqDC oMKgIC0gRG8gbm90IHJlc2V0IGFueSBmcmFtZSBjb250ZXh0Lgo+ICvCoMKgwqAgKiAtIGBgVjRM Ml9WUDlfUkVTRVRfRlJBTUVfQ1RYX1NQRUNgYAo+ICvCoMKgwqDCoMKgIC0gUmVzZXQgdGhlIGZy YW1lIGNvbnRleHQgcG9pbnRlZCBieQo+ICvCoMKgwqDCoMKgwqDCoCA6Yzp0eXBlOmB2NGwyX2N0 cmxfdnA5X2ZyYW1lX2RlY29kZV9wYXJhbXNgLmZyYW1lX2NvbnRleHRfaWR4Lgo+ICvCoMKgwqAg KiAtIGBgVjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX0FMTGBgCj4gK8KgwqDCoMKgwqAgLSBSZXNl dCBhbGwgZnJhbWUgY29udGV4dHMuCj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX3ZwOV9pbnRyYV9w cmVkaWN0aW9uX21vZGUKPiArCj4gKy4uIGNzc2NsYXNzOjogbG9uZ3RhYmxlCj4gKwo+ICsuLiB0 YWJ1bGFyY29sdW1uczo6IHxwezEuNWNtfXxwezYuM2NtfXxwezkuNGNtfXwKPiArCj4gKy4uIGZs YXQtdGFibGU6OiBlbnVtIHY0bDJfdnA5X2ludHJhX3ByZWRpY3Rpb25fbW9kZQo+ICvCoMKgwqAg OmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpzdHViLWNvbHVtbnM6IDAKPiArwqDCoMKgIDp3 aWR0aHM6wqDCoMKgwqDCoMKgIDEgMgo+ICsKPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0lOVFJB X1BSRURfRENgYAo+ICvCoMKgwqDCoMKgIC0gREMgaW50cmEgcHJlZGljdGlvbi4KPiArwqDCoMKg ICogLSBgYFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9WYGAKPiArwqDCoMKgwqDCoCAtIFZlcnRp Y2FsIGludHJhIHByZWRpY3Rpb24uCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9JTlRSQV9QUkVE X01PREVfSGBgCj4gK8KgwqDCoMKgwqAgLSBIb3Jpem9udGFsIGludHJhIHByZWRpY3Rpb24uCj4g K8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfRDQ1YGAKPiArwqDCoMKgwqDC oCAtIEQ0NSBpbnRyYSBwcmVkaWN0aW9uLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfSU5UUkFf UFJFRF9NT0RFX0QxMzVgYAo+ICvCoMKgwqDCoMKgIC0gRDEzNSBpbnRyYSBwcmVkaWN0aW9uLgo+ ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QxMTdgYAo+ICvCoMKgwqDC oMKgIC0gRDExNyBpbnRyYSBwcmVkaWN0aW9uLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfSU5U UkFfUFJFRF9NT0RFX0QxNTNgYAo+ICvCoMKgwqDCoMKgIC0gRDE1MyBpbnRyYSBwcmVkaWN0aW9u Lgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QyMDdgYAo+ICvCoMKg wqDCoMKgIC0gRDIwNyBpbnRyYSBwcmVkaWN0aW9uLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlf SU5UUkFfUFJFRF9NT0RFX0Q2M2BgCj4gK8KgwqDCoMKgwqAgLSBENjMgaW50cmEgcHJlZGljdGlv bi4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9UTWBgCj4gK8KgwqDC oMKgwqAgLSBUcnVlIG1vdGlvbiBpbnRyYSBwcmVkaWN0aW9uLgo+ICsKPiArLi4gYzp0eXBlOjog djRsMl92cDlfc2VnbWVudGF0aW9uCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsK PiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ ICsuLiBmbGF0LXRhYmxlOjogc3RydWN0IHY0bDJfdnA5X3NlZ21lbnRhdGlvbgo+ICvCoMKgwqAg OmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpzdHViLWNvbHVtbnM6IDAKPiArwqDCoMKgIDp3 aWR0aHM6wqDCoMKgwqDCoMKgIDEgMSAyCj4gKwo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKg wqDCoCAtIGBgZmxhZ3NgYAo+ICvCoMKgwqDCoMKgIC0gQ29tYmluYXRpb24gb2YgVjRMMl9WUDlf U0VHTUVOVEFUSU9OX0ZMQUdfKiBmbGFncy4gU2VlCj4gK8KgwqDCoMKgwqDCoMKgIDpjOnR5cGU6 YHY0bDJfdnA5X3NlZ21lbnRhdGlvbl9mbGFnc2AuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKg wqDCoMKgIC0gYGB0cmVlX3Byb2JzWzddYGAKPiArwqDCoMKgwqDCoCAtIFNwZWNpZmllcyB0aGUg cHJvYmFiaWxpdHkgdmFsdWVzIHRvIGJlIHVzZWQgd2hlbiBkZWNvZGluZyBhIFNlZ21lbnQtCj4g SUQuCj4gK8KgwqDCoMKgwqDCoMKgIFNlZSAnNS4xNS4gU2VnbWVudGF0aW9uIG1hcCcgc2VjdGlv biBvZiA6cmVmOmB2cDlgIGZvciBtb3JlIGRldGFpbHMuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvC oMKgwqDCoMKgIC0gYGBwcmVkX3Byb2JbM11gYAo+ICvCoMKgwqDCoMKgIC0gU3BlY2lmaWVzIHRo ZSBwcm9iYWJpbGl0eSB2YWx1ZXMgdG8gYmUgdXNlZCB3aGVuIGRlY29kaW5nIGEKPiArwqDCoMKg wqDCoMKgwqAgUHJlZGljdGVkLVNlZ21lbnQtSUQuIFNlZSAnNi40LjE0LiBHZXQgc2VnbWVudCBp ZCBzeW50YXgnCj4gK8KgwqDCoMKgwqDCoMKgIHNlY3Rpb24gb2YgOnJlZjpgdnA5YCBmb3IgbW9y ZSBkZXRhaWxzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgcGFkZGluZ1s1 XWBgCj4gK8KgwqDCoMKgwqAgLSBVc2VkIHRvIGFsaWduIHRoaXMgc3RydWN0IG9uIDY0IGJpdC4g U2hhbGwgYmUgZmlsbGVkIHdpdGggemVyb2VzLgo+ICvCoMKgwqAgKiAtIF9fdTgKPiArwqDCoMKg wqDCoCAtIGBgZmVhdHVyZV9lbmFibGVkWzhdYGAKPiArwqDCoMKgwqDCoCAtIEJpdG1hc2sgZGVm aW5pbmcgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgaW4gZWFjaCBzZWdtZW50Lgo+ICvCoMKg wqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgZmVhdHVyZV9kYXRhWzhdWzRdYGAKPiArwqDC oMKgwqDCoCAtIERhdGEgYXR0YWNoZWQgdG8gZWFjaCBmZWF0dXJlLiBEYXRhIGVudHJ5IGlzIG9u bHkgdmFsaWQgaWYgdGhlCj4gZmVhdHVyZQo+ICvCoMKgwqDCoMKgwqDCoCBpcyBlbmFibGVkLgo+ ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfc2VnbWVudF9mZWF0dXJlCj4gKwo+ICsuLiBjc3Nj bGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2 LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9zZWdt ZW50X2ZlYXR1cmUKPiArwqDCoMKgIDpoZWFkZXItcm93czrCoCAwCj4gK8KgwqDCoCA6c3R1Yi1j b2x1bW5zOiAwCj4gK8KgwqDCoCA6d2lkdGhzOsKgwqDCoMKgwqDCoCAxIDIKPiArCj4gK8KgwqDC oCAqIC0gYGBWNEwyX1ZQOV9TRUdNRU5UX0ZFQVRVUkVfUVBfREVMVEFgYAo+ICvCoMKgwqDCoMKg IC0gUVAgZGVsdGEgc2VnbWVudCBmZWF0dXJlLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfU0VH TUVOVF9GRUFUVVJFX0xGYGAKPiArwqDCoMKgwqDCoCAtIExvb3AgZmlsdGVyIHNlZ21lbnQgZmVh dHVyZS4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9SRUZfRlJBTUVg YAo+ICvCoMKgwqDCoMKgIC0gUmVmZXJlbmNlIGZyYW1lIHNlZ21lbnQgZmVhdHVyZS4KPiArwqDC oMKgICogLSBgYFY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9TS0lQYGAKPiArwqDCoMKgwqDCoCAt IFNraXAgc2VnbWVudCBmZWF0dXJlLgo+ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfU0VHTUVOVF9G RUFUVVJFX0NOVGBgCj4gK8KgwqDCoMKgwqAgLSBOdW1iZXIgb2Ygc2VnbWVudCBmZWF0dXJlcy4K PiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X3NlZ21lbnRhdGlvbl9mbGFncwo+ICsKPiArLi4g Y3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MS41Y219 fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IGVudW0gdjRsMl92cDlf c2VnbWVudGF0aW9uX2ZsYWdzCj4gK8KgwqDCoCA6aGVhZGVyLXJvd3M6wqAgMAo+ICvCoMKgwqAg OnN0dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrCoMKgwqDCoMKgwqAgMSAyCj4gKwo+ ICvCoMKgwqAgKiAtIGBgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfRU5BQkxFRGBgCj4gK8Kg wqDCoMKgwqAgLSBJbmRpY2F0ZXMgdGhhdCB0aGlzIGZyYW1lIG1ha2VzIHVzZSBvZiB0aGUgc2Vn bWVudGF0aW9uIHRvb2wuCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxB R19VUERBVEVfTUFQYGAKPiArwqDCoMKgwqDCoCAtIEluZGljYXRlcyB0aGF0IHRoZSBzZWdtZW50 YXRpb24gbWFwIHNob3VsZCBiZSB1cGRhdGVkIGR1cmluZyB0aGUKPiArwqDCoMKgwqDCoMKgwqAg ZGVjb2Rpbmcgb2YgdGhpcyBmcmFtZS4KPiArwqDCoMKgICogLSBgYFY0TDJfVlA5X1NFR01FTlRB VElPTl9GTEFHX1RFTVBPUkFMX1VQREFURWBgCj4gK8KgwqDCoMKgwqAgLSBJbmRpY2F0ZXMgdGhh dCB0aGUgdXBkYXRlcyB0byB0aGUgc2VnbWVudGF0aW9uIG1hcCBhcmUgY29kZWQKPiArwqDCoMKg wqDCoMKgwqAgcmVsYXRpdmUgdG8gdGhlIGV4aXN0aW5nIHNlZ21lbnRhdGlvbiBtYXAuCj4gK8Kg wqDCoCAqIC0gYGBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVfREFUQWBgCj4gK8Kg wqDCoMKgwqAgLSBJbmRpY2F0ZXMgdGhhdCBuZXcgcGFyYW1ldGVycyBhcmUgYWJvdXQgdG8gYmUg c3BlY2lmaWVkIGZvciBlYWNoCj4gK8KgwqDCoMKgwqDCoMKgIHNlZ21lbnQuCj4gK8KgwqDCoCAq IC0gYGBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19BQlNfT1JfREVMVEFfVVBEQVRFYGAKPiAr wqDCoMKgwqDCoCAtIEluZGljYXRlcyB0aGF0IHRoZSBzZWdtZW50YXRpb24gcGFyYW1ldGVycyBy ZXByZXNlbnQgdGhlIGFjdHVhbAo+IHZhbHVlcwo+ICvCoMKgwqDCoMKgwqDCoCB0byBiZSB1c2Vk Lgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfcXVhbnRpemF0aW9uCj4gKwo+ICsuLiBjc3Nj bGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2 LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogc3RydWN0IHY0bDJfdnA5X3F1 YW50aXphdGlvbgo+ICvCoMKgwqAgOmhlYWRlci1yb3dzOsKgIDAKPiArwqDCoMKgIDpzdHViLWNv bHVtbnM6IDAKPiArwqDCoMKgIDp3aWR0aHM6wqDCoMKgwqDCoMKgIDEgMSAyCj4gKwo+ICvCoMKg wqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgYmFzZV9xX2lkeGBgCj4gK8KgwqDCoMKgwqAg LSBJbmRpY2F0ZXMgdGhlIGJhc2UgZnJhbWUgcWluZGV4Lgo+ICvCoMKgwqAgKiAtIF9fczgKPiAr wqDCoMKgwqDCoCAtIGBgZGVsdGFfcV95X2RjYGAKPiArwqDCoMKgwqDCoCAtIEluZGljYXRlcyB0 aGUgWSBEQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeC4KPiArwqDCoMKgICogLSBf X3M4Cj4gK8KgwqDCoMKgwqAgLSBgYGRlbHRhX3FfdXZfZGNgYAo+ICvCoMKgwqDCoMKgIC0gSW5k aWNhdGVzIHRoZSBVViBEQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeC4KPiArwqDC oMKgICogLSBfX3M4Cj4gK8KgwqDCoMKgwqAgLSBgYGRlbHRhX3FfdXZfYWNgYAo+ICvCoMKgwqDC oMKgIC0gSW5kaWNhdGVzIHRoZSBVViBBQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lk eC4KPiArwqDCoMKgICogLSBfX3U4Cj4gK8KgwqDCoMKgwqAgLSBgYHBhZGRpbmdbNF1gYAo+ICvC oMKgwqDCoMKgIC0gUGFkZGluZyBieXRlcyB1c2VkIHRvIGFsaWduIHRoaXMgc3RydWN0IG9uIDY0 IGJpdC4gTXVzdCBiZSBzZXQgdG8gMC4KPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X2xvb3Bf ZmlsdGVyCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNv bHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxl Ojogc3RydWN0IHY0bDJfdnA5X2xvb3BfZmlsdGVyCj4gK8KgwqDCoCA6aGVhZGVyLXJvd3M6wqAg MAo+ICvCoMKgwqAgOnN0dWItY29sdW1uczogMAo+ICvCoMKgwqAgOndpZHRoczrCoMKgwqDCoMKg wqAgMSAxIDIKPiArCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBmbGFnc2Bg Cj4gK8KgwqDCoMKgwqAgLSBDb21iaW5hdGlvbiBvZiBWNEwyX1ZQOV9MT09QX0ZJTFRFUl9GTEFH XyogZmxhZ3MuCj4gK8KgwqDCoMKgwqDCoMKgIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9sb29wX2Zp bHRlcl9mbGFnc2AuCj4gK8KgwqDCoCAqIC0gX191OAo+ICvCoMKgwqDCoMKgIC0gYGBsZXZlbGBg Cj4gK8KgwqDCoMKgwqAgLSBJbmRpY2F0ZXMgdGhlIGxvb3AgZmlsdGVyIHN0cmVuZ3RoLgo+ICvC oMKgwqAgKiAtIF9fdTgKPiArwqDCoMKgwqDCoCAtIGBgc2hhcnBuZXNzYGAKPiArwqDCoMKgwqDC oCAtIEluZGljYXRlcyB0aGUgc2hhcnBuZXNzIGxldmVsLgo+ICvCoMKgwqAgKiAtIF9fczgKPiAr wqDCoMKgwqDCoCAtIGBgcmVmX2RlbHRhc1s0XWBgCj4gK8KgwqDCoMKgwqAgLSBDb250YWlucyB0 aGUgYWRqdXN0bWVudCBuZWVkZWQgZm9yIHRoZSBmaWx0ZXIgbGV2ZWwgYmFzZWQgb24gdGhlCj4g Y2hvc2VuCj4gK8KgwqDCoMKgwqDCoMKgIHJlZmVyZW5jZSBmcmFtZS4KPiArwqDCoMKgICogLSBf X3M4Cj4gK8KgwqDCoMKgwqAgLSBgYG1vZGVfZGVsdGFzWzJdYGAKPiArwqDCoMKgwqDCoCAtIENv bnRhaW5zIHRoZSBhZGp1c3RtZW50IG5lZWRlZCBmb3IgdGhlIGZpbHRlciBsZXZlbCBiYXNlZCBv biB0aGUKPiBjaG9zZW4KPiArwqDCoMKgwqDCoMKgwqAgbW9kZQo+ICvCoMKgwqAgKiAtIF9fdTgK PiArwqDCoMKgwqDCoCAtIGBgbGV2ZWxfbG9va3VwWzhdWzRdWzJdYGAKPiArwqDCoMKgwqDCoCAt IExldmVsIGxvb2t1cCB0YWJsZS4KPiArCj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX3ZwOV9sb29w X2ZpbHRlcl9mbGFncwo+ICsKPiArLi4gY3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRh YnVsYXJjb2x1bW5zOjogfHB7MS41Y219fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiArLi4gZmxh dC10YWJsZTo6IGVudW0gdjRsMl92cDlfbG9vcF9maWx0ZXJfZmxhZ3MKPiArwqDCoMKgIDpoZWFk ZXItcm93czrCoCAwCj4gK8KgwqDCoCA6c3R1Yi1jb2x1bW5zOiAwCj4gK8KgwqDCoCA6d2lkdGhz OsKgwqDCoMKgwqDCoCAxIDIKPiArCj4gK8KgwqDCoCAqIC0gYGBWNEwyX1ZQOV9MT09QX0ZJTFRF Ul9GTEFHX0RFTFRBX0VOQUJMRURgYAo+ICvCoMKgwqDCoMKgIC0gV2hlbiBzZXQsIHRoZSBmaWx0 ZXIgbGV2ZWwgZGVwZW5kcyBvbiB0aGUgbW9kZSBhbmQgcmVmZXJlbmNlIGZyYW1lCj4gdXNlZAo+ ICvCoMKgwqDCoMKgwqDCoCB0byBwcmVkaWN0IGEgYmxvY2suCj4gK8KgwqDCoCAqIC0gYGBWNEwy X1ZQOV9MT09QX0ZJTFRFUl9GTEFHX0RFTFRBX1VQREFURWBgCj4gK8KgwqDCoMKgwqAgLSBXaGVu IHNldCwgdGhlIGJpdHN0cmVhbSBjb250YWlucyBhZGRpdGlvbmFsIHN5bnRheCBlbGVtZW50cyB0 aGF0Cj4gK8KgwqDCoMKgwqDCoMKgIHNwZWNpZnkgd2hpY2ggbW9kZSBhbmQgcmVmZXJlbmNlIGZy YW1lIGRlbHRhcyBhcmUgdG8gYmUgdXBkYXRlZC4KPiArCj4gwqAuLiByYXc6OiBsYXRleAo+IMKg Cj4gwqDCoMKgwqAgXG5vcm1hbHNpemUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1jdHJscy5jIGIvZHJpdmVycy9tZWRpYS92NGwyLQo+IGNvcmUvdjRsMi1jdHJs cy5jCj4gaW5kZXggYmQ3ZjMzMGM5NDFjLi5hODhlOTYyYWM4YTEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS92 NGwyLWNvcmUvdjRsMi1jdHJscy5jCj4gQEAgLTk3MSw2ICs5NzEsMTEgQEAgY29uc3QgY2hhciAq djRsMl9jdHJsX2dldF9uYW1lKHUzMiBpZCkKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NJ RF9NUEVHX1ZJREVPX1ZQOV9QUk9GSUxFOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuICJWUDkKPiBQcm9maWxlIjsKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX1ZQOV9MRVZFTDrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gIlZQOQo+IExldmVsIjsKPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBW NEwyX0NJRF9NUEVHX1ZJREVPX1ZQOF9GUkFNRV9IRUFERVI6wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAiVlA4Cj4gRnJhbWUgSGVhZGVyIjsKPiArwqDCoMKgwqDCoMKgwqBjYXNl IFY0TDJfQ0lEX01QRUdfVklERU9fVlA5X0ZSQU1FX0RFQ09ERV9QQVJBTVM6wqDCoMKgwqDCoMKg wqByZXR1cm4gIlZQOQo+IEZyYW1lIERlY29kZSBQYXJhbWV0ZXJzIjsKPiArwqDCoMKgwqDCoMKg wqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fVlA5X0ZSQU1FX0NPTlRFWFQoMCk6wqDCoMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gIlZQOQo+IEZyYW1lIENvbnRleHQgMCI7Cj4gK8KgwqDCoMKgwqDC oMKgY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX1ZQOV9GUkFNRV9DT05URVhUKDEpOsKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuICJWUDkKPiBGcmFtZSBDb250ZXh0IDEiOwo+ICvCoMKgwqDCoMKg wqDCoGNhc2UgVjRMMl9DSURfTVBFR19WSURFT19WUDlfRlJBTUVfQ09OVEVYVCgyKTrCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAiVlA5Cj4gRnJhbWUgQ29udGV4dCAyIjsKPiArwqDCoMKgwqDC oMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fVlA5X0ZSQU1FX0NPTlRFWFQoMyk6wqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gIlZQOQo+IEZyYW1lIENvbnRleHQgMyI7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgLyogSEVWQyBjb250cm9scyAqLwo+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0 TDJfQ0lEX01QRUdfVklERU9fSEVWQ19JX0ZSQU1FX1FQOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAiSEVWQwo+IEktRnJhbWUgUVAgVmFsdWUiOwo+IEBAIC0xNDUyLDYgKzE0 NTcsMTUgQEAgdm9pZCB2NGwyX2N0cmxfZmlsbCh1MzIgaWQsIGNvbnN0IGNoYXIgKipuYW1lLCBl bnVtCj4gdjRsMl9jdHJsX3R5cGUgKnR5cGUsCj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9D SURfTVBFR19WSURFT19WUDhfRlJBTUVfSEVBREVSOgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9WUDhfRlJBTUVfSEVBREVSOwo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBW NEwyX0NJRF9NUEVHX1ZJREVPX1ZQOV9GUkFNRV9ERUNPREVfUEFSQU1TOgo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAqdHlwZSA9IFY0TDJfQ1RSTF9UWVBFX1ZQOV9GUkFNRV9ERUNP REVfUEFSQU1TOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiArwqDC oMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fVlA5X0ZSQU1FX0NPTlRFWFQoMCk6 Cj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX1ZQOV9GUkFNRV9DT05U RVhUKDEpOgo+ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DSURfTVBFR19WSURFT19WUDlfRlJB TUVfQ09OVEVYVCgyKToKPiArwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9f VlA5X0ZSQU1FX0NPTlRFWFQoMyk6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCp0 eXBlID0gVjRMMl9DVFJMX1RZUEVfVlA5X0ZSQU1FX0NPTlRFWFQ7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01Q RUdfVklERU9fSEVWQ19TUFM6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqdHlw ZSA9IFY0TDJfQ1RSTF9UWVBFX0hFVkNfU1BTOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgYnJlYWs7Cj4gQEAgLTE3NTQsNiArMTc2OCwyMTkgQEAgc3RhdGljIHZvaWQgc3RkX2xv Zyhjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQo+IMKgwqDCoMKgwqDCoMKgwqAwO8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiDCoH0pCj4g wqAKPiArc3RhdGljIGludAo+ICt2YWxpZGF0ZV92cDlfbGZfcGFyYW1zKHN0cnVjdCB2NGwyX3Zw OV9sb29wX2ZpbHRlciAqbGYpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgaSwg aiwgazsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGxmLT5mbGFncyAmCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIH4oVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9FTkFCTEVEIHwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfVlA5X0xPT1BfRklMVEVSX0ZMQUdfREVMVEFf VVBEQVRFKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKgICogVjRMMl9WUDlfTE9P UF9GSUxURVJfRkxBR19ERUxUQV9FTkFCTEVEIGltcGxpZXMKPiArwqDCoMKgwqDCoMKgwqAgKiBW NEwyX1ZQOV9MT09QX0ZJTFRFUl9GTEFHX0RFTFRBX1VQREFURS4KPiArwqDCoMKgwqDCoMKgwqAg Ki8KPiArwqDCoMKgwqDCoMKgwqBpZiAobGYtPmZsYWdzICYgVjRMMl9WUDlfTE9PUF9GSUxURVJf RkxBR19ERUxUQV9VUERBVEUgJiYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgIShsZi0+ZmxhZ3Mg JiBWNEwyX1ZQOV9MT09QX0ZJTFRFUl9GTEFHX0RFTFRBX0VOQUJMRUQpKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg LyogVGhhdCBhbGwgdmFsdWVzIGFyZSBpbiB0aGUgYWNjZXB0ZWQgcmFuZ2UuICovCj4gK8KgwqDC oMKgwqDCoMKgaWYgKGxmLT5sZXZlbCA+IEdFTk1BU0soNSwgMCkpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAo bGYtPnNoYXJwbmVzcyA+IEdFTk1BU0soMiwgMCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShsZi0+cmVmX2RlbHRhcyk7IGkrKykgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAobGYtPnJlZl9kZWx0YXNbaV0gPCAtNjMgfHwgbGYtPnJlZl9kZWx0 YXNbaV0gPiA2MykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobGYtPm1vZGVfZGVsdGFzKTsgaSsrKSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChsZi0+bW9kZV9kZWx0YXNbaV0gPCAt NjMgfHwgbGYtPm1vZGVfZGVsdGFzW2ldID4gNjMpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArwqDCoMKgwqDCoMKgwqB9 Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxmLT5sZXZl bF9sb29rdXApOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChq ID0gMDsgaiA8IEFSUkFZX1NJWkUobGYtPmxldmVsX2xvb2t1cFswXSk7IGorKykgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChrID0gMDsgayA8 IEFSUkFZX1NJWkUobGYtPmxldmVsX2xvb2t1cFswXVswXSk7Cj4gaysrKSB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KGxmLT5sZXZlbF9sb29rdXBbaV1bal1ba10gPiA2MykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDC oMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50Cj4gK3ZhbGlkYXRlX3ZwOV9xdWFudF9wYXJhbXMoc3RydWN0IHY0bDJfdnA5X3F1YW50aXph dGlvbiAqcXVhbnQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBpZiAocXVhbnQtPmRlbHRhX3FfeV9k YyA8IC0xNSB8fCBxdWFudC0+ZGVsdGFfcV95X2RjID4gMTUgfHwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgcXVhbnQtPmRlbHRhX3FfdXZfZGMgPCAtMTUgfHwgcXVhbnQtPmRlbHRhX3FfdXZfZGMg PiAxNSB8fAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBxdWFudC0+ZGVsdGFfcV91dl9hYyA8IC0x NSB8fCBxdWFudC0+ZGVsdGFfcV91dl9hYyA+IDE1KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgbWVtc2V0KHF1YW50 LT5wYWRkaW5nLCAwLCBzaXplb2YocXVhbnQtPnBhZGRpbmcpKTsKPiArwqDCoMKgwqDCoMKgwqBy ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICt2YWxpZGF0ZV92cDlfc2VnX3BhcmFt cyhzdHJ1Y3QgdjRsMl92cDlfc2VnbWVudGF0aW9uICpzZWcpCj4gK3sKPiArwqDCoMKgwqDCoMKg wqB1bnNpZ25lZCBpbnQgaSwgajsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKHNlZy0+ZmxhZ3Mg Jgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB+KFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFHX0VO QUJMRUQgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfU0VHTUVOVEFUSU9O X0ZMQUdfVVBEQVRFX01BUCB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWNEwyX1ZQOV9T RUdNRU5UQVRJT05fRkxBR19URU1QT1JBTF9VUERBVEUgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX0RBVEEgfAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfQUJTX09SX0RFTFRB X1VQREFURSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFM Owo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKgo+ICvCoMKgwqDCoMKgwqDCoCAqIFY0TDJfVlA5X1NF R01FTlRBVElPTl9GTEFHX1VQREFURV9NQVAgYW5kCj4gK8KgwqDCoMKgwqDCoMKgICogVjRMMl9W UDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX0RBVEEgaW1wbHkKPiArwqDCoMKgwqDCoMKgwqAg KiBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19FTkFCTEVELgo+ICvCoMKgwqDCoMKgwqDCoCAq Lwo+ICvCoMKgwqDCoMKgwqDCoGlmICgoc2VnLT5mbGFncyAmCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFHX1VQREFURV9NQVAgfAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX0RBVEEp KSAmJgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAhKHNlZy0+ZmxhZ3MgJiBWNEwyX1ZQOV9TRUdN RU5UQVRJT05fRkxBR19FTkFCTEVEKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qCj4gK8KgwqDCoMKgwqDCoMKg ICogVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVEVNUE9SQUxfVVBEQVRFIGltcGxpZXMKPiAr wqDCoMKgwqDCoMKgwqAgKiBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVfTUFQLgo+ ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzZWctPmZsYWdzICYgVjRM Ml9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVEVNUE9SQUxfVVBEQVRFICYmCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgICEoc2VnLT5mbGFncyAmIFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFHX1VQREFU RV9NQVApKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsK PiArCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBWNEwyX1ZQOV9TRUdN RU5UQVRJT05fRkxBR19BQlNfT1JfREVMVEFfVVBEQVRFIGltcGxpZXMKPiArwqDCoMKgwqDCoMKg wqAgKiBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVfREFUQS4KPiArwqDCoMKgwqDC oMKgwqAgKi8KPiArwqDCoMKgwqDCoMKgwqBpZiAoc2VnLT5mbGFncyAmIFY0TDJfVlA5X1NFR01F TlRBVElPTl9GTEFHX0FCU19PUl9ERUxUQV9VUERBVEUgJiYKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgIShzZWctPmZsYWdzICYgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX0RBVEEp KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4g K8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2VnLT5mZWF0dXJlX2Vu YWJsZWQpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNlZy0+ ZmVhdHVyZV9lbmFibGVkW2ldICYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIH4oVjRMMl9WUDlfU0VHTUVOVF9GRUFUVVJFX1FQX0RFTFRBIHwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWNEwyX1ZQOV9TRUdNRU5UX0ZFQVRVUkVfTEYg fAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfVlA5X1NF R01FTlRfRkVBVFVSRV9SRUZfRlJBTUUgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9TS0lQKSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICvC oMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoc2VnLT5mZWF0dXJlX2RhdGEpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29uc3QgaW50IHJhbmdlW10gPSB7MjU1LCA2MywgMywgMH07Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShzZWct PmZlYXR1cmVfZGF0YVtqXSk7IGorKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKHNlZy0+ZmVhdHVyZV9kYXRhW2ldW2pdIDwgLXJhbmdlW2pd IHx8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc2VnLT5mZWF0dXJlX2RhdGFbaV1bal0gPiByYW5nZVtqXSkKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJ TlZBTDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDC oH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgbWVtc2V0KHNlZy0+cGFkZGluZywgMCwgc2l6ZW9mKHNl Zy0+cGFkZGluZykpOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50Cj4gK3ZhbGlkYXRlX3ZwOV9mcmFtZV9kZWNvZGVfcGFyYW1zKHN0cnVjdCB2NGwyX2N0 cmxfdnA5X2ZyYW1lX2RlY29kZV9wYXJhbXMKPiAqZGVjX3BhcmFtcykKPiArewo+ICvCoMKgwqDC oMKgwqDCoGludCByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIE1ha2Ugc3VyZSB3ZSdyZSBu b3QgcGFzc2VkIGludmFsaWQgZmxhZ3MuICovCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGRlY19wYXJh bXMtPmZsYWdzICYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfihWNEwyX1ZQOV9GUkFNRV9GTEFH X0tFWV9GUkFNRSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWNEwyX1ZQOV9GUkFNRV9G TEFHX1NIT1dfRlJBTUUgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfRlJB TUVfRkxBR19FUlJPUl9SRVNJTElFTlQgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRM Ml9WUDlfRlJBTUVfRkxBR19JTlRSQV9PTkxZIHwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFY0TDJfVlA5X0ZSQU1FX0ZMQUdfQUxMT1dfSElHSF9QUkVDX01WIHwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUkVGUkVTSF9GUkFNRV9DVFggfAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfRlJBTUVfRkxBR19QQVJBTExFTF9ERUNf TU9ERSB8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWNEwyX1ZQOV9GUkFNRV9GTEFHX1hf U1VCU0FNUExJTkcgfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVjRMMl9WUDlfRlJBTUVf RkxBR19ZX1NVQlNBTVBMSU5HIHwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfVlA5 X0ZSQU1FX0ZMQUdfQ09MT1JfUkFOR0VfRlVMTF9TV0lORykpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKgo+ICvC oMKgwqDCoMKgwqDCoCAqIFRoZSByZWZyZXNoIGNvbnRleHQgYW5kIGVycm9yIHJlc2lsaWVudCBm bGFncyBhcmUgbXV0dWFsbHkKPiBleGNsdXNpdmUuCj4gK8KgwqDCoMKgwqDCoMKgICogU2FtZSBn b2VzIGZvciBwYXJhbGxlbCBkZWNvZGluZyBhbmQgZXJyb3IgcmVzaWxpZW50IG1vZGVzLgo+ICvC oMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmIChkZWNfcGFyYW1zLT5mbGFncyAm IFY0TDJfVlA5X0ZSQU1FX0ZMQUdfRVJST1JfUkVTSUxJRU5UICYmCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGRlY19wYXJhbXMtPmZsYWdzICYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKFY0TDJf VlA5X0ZSQU1FX0ZMQUdfUkVGUkVTSF9GUkFNRV9DVFggfAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUEFSQUxMRUxfREVDX01PREUpKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKg aWYgKGRlY19wYXJhbXMtPnByb2ZpbGUgPiBWNEwyX1ZQOV9QUk9GSUxFX01BWCkKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoGlmIChkZWNfcGFyYW1zLT5yZXNldF9mcmFtZV9jb250ZXh0ID4gVjRMMl9WUDlfUkVTRVRf RlJBTUVfQ1RYX0FMTCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChkZWNfcGFyYW1zLT5mcmFtZV9jb250ZXh0 X2lkeCA+PSBWNEwyX1ZQOV9OVU1fRlJBTUVfQ1RYKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyoKPiArwqDCoMKg wqDCoMKgwqAgKiBQcm9maWxlcyAwIGFuZCAxIG9ubHkgc3VwcG9ydCA4LWJpdCBkZXB0aCwgcHJv ZmlsZXMgMiBhbmQgMyBvbmx5IDEwCj4gK8KgwqDCoMKgwqDCoMKgICogYW5kIDEyIGJpdCBkZXB0 aHMuCj4gK8KgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgaWYgKChkZWNfcGFyYW1z LT5wcm9maWxlIDwgMiAmJiBkZWNfcGFyYW1zLT5iaXRfZGVwdGggIT0gOCkgfHwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgKGRlY19wYXJhbXMtPnByb2ZpbGUgPj0gMiAmJgo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChkZWNfcGFyYW1zLT5iaXRfZGVwdGggIT0gMTAgJiYgZGVjX3BhcmFtcy0+ Yml0X2RlcHRoICE9IDEyKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBQcm9maWxlIDAgYW5kIDIgb25seSBh Y2NlcHQgWVVWIDQ6MjowLiAqLwo+ICvCoMKgwqDCoMKgwqDCoGlmICgoZGVjX3BhcmFtcy0+cHJv ZmlsZSA9PSAwIHx8IGRlY19wYXJhbXMtPnByb2ZpbGUgPT0gMikgJiYKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgKCEoZGVjX3BhcmFtcy0+ZmxhZ3MgJiBWNEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VC U0FNUExJTkcpIHx8Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIShkZWNfcGFyYW1zLT5mbGFn cyAmIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfWV9TVUJTQU1QTElORykpKQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyog UHJvZmlsZSAxIGFuZCAzIG9ubHkgYWNjZXB0IFlVViA0OjI6MiwgNDo0OjAgYW5kIDQ6NDo0LiAq Lwo+ICvCoMKgwqDCoMKgwqDCoGlmICgoZGVjX3BhcmFtcy0+cHJvZmlsZSA9PSAxIHx8IGRlY19w YXJhbXMtPnByb2ZpbGUgPT0gMykgJiYKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKChkZWNfcGFy YW1zLT5mbGFncyAmIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfWF9TVUJTQU1QTElORykgJiYKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAoZGVjX3BhcmFtcy0+ZmxhZ3MgJiBWNEwyX1ZQOV9GUkFNRV9G TEFHX1lfU1VCU0FNUExJTkcpKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChkZWNfcGFyYW1zLT5pbnRlcnBv bGF0aW9uX2ZpbHRlciA+Cj4gVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl9TV0lUQ0hBQkxFKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDC oMKgwqDCoMKgLyoKPiArwqDCoMKgwqDCoMKgwqAgKiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHRp bGVfY29sc19sb2cyIHNoYWxsIGJlIGxlc3MgdGhhbiBvciBlcXVhbAo+ICvCoMKgwqDCoMKgwqDC oCAqIHRvIDYuCj4gK8KgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGRlY19w YXJhbXMtPnRpbGVfY29sc19sb2cyID4gNikKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChkZWNfcGFyYW1zLT50 eF9tb2RlID4gVjRMMl9WUDlfVFhfTU9ERV9TRUxFQ1QpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoZGVjX3Bh cmFtcy0+cmVmZXJlbmNlX21vZGUgPiBWNEwyX1ZQOV9SRUZfTU9ERV9TRUxFQ1QpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSB2YWxpZGF0ZV92cDlfbGZfcGFyYW1zKCZkZWNfcGFyYW1zLT5sZik7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gdmFsaWRhdGVfdnA5X3F1YW50X3Bh cmFtcygmZGVjX3BhcmFtcy0+cXVhbnQpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoHJldCA9IHZhbGlkYXRlX3ZwOV9zZWdfcGFyYW1zKCZkZWNfcGFyYW1zLT5zZWcpOwo+ICvC oMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoG1lbXNldChkZWNfcGFyYW1zLT5wYWRkaW5n LCAwLCBzaXplb2YoZGVjX3BhcmFtcy0+cGFkZGluZykpOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVy biAwOwo+ICt9Cj4gKwo+IMKgLyogVmFsaWRhdGUgYSBuZXcgY29udHJvbCAqLwo+IMKgCj4gwqAj ZGVmaW5lIHplcm9fcGFkZGluZyhzKSBcCj4gQEAgLTE4NzEsNiArMjA5OCwxMiBAQCBzdGF0aWMg aW50IHN0ZF92YWxpZGF0ZV9jb21wb3VuZChjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsCj4gKmN0cmws IHUzMiBpZHgsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB6ZXJvX3BhZGRpbmco cF92cDhfZnJhbWVfaGVhZGVyLT5jb2Rlcl9zdGF0ZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiDCoAo+ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DVFJMX1RZ UEVfVlA5X0ZSQU1FX0RFQ09ERV9QQVJBTVM6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiB2YWxpZGF0ZV92cDlfZnJhbWVfZGVjb2RlX3BhcmFtcyhwKTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NUUkxfVFlQRV9WUDlfRlJBTUVfQ09OVEVYVDoKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqBj YXNlIFY0TDJfQ1RSTF9UWVBFX0hFVkNfU1BTOgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcF9oZXZjX3NwcyA9IHA7Cj4gwqAKPiBAQCAtMjYxNyw2ICsyODUwLDEyIEBAIHN0YXRp YyBzdHJ1Y3QgdjRsMl9jdHJsICp2NGwyX2N0cmxfbmV3KHN0cnVjdAo+IHY0bDJfY3RybF9oYW5k bGVyICpoZGwsCj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DVFJMX1RZUEVfVlA4X0ZSQU1F X0hFQURFUjoKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsZW1fc2l6ZSA9IHNp emVvZihzdHJ1Y3QgdjRsMl9jdHJsX3ZwOF9mcmFtZV9oZWFkZXIpOwo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NUUkxf VFlQRV9WUDlfRlJBTUVfQ09OVEVYVDoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lX2N0eCk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ICvCoMKgwqDCoMKgwqDCoGNhc2Ug VjRMMl9DVFJMX1RZUEVfVlA5X0ZSQU1FX0RFQ09ERV9QQVJBTVM6Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9m cmFtZV9kZWNvZGVfcGFyYW1zKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7Cj4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DVFJMX1RZUEVfSEVWQ19TUFM6Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHY0 bDJfY3RybF9oZXZjX3Nwcyk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVh azsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jIGIv ZHJpdmVycy9tZWRpYS92NGwyLQo+IGNvcmUvdjRsMi1pb2N0bC5jCj4gaW5kZXggZWVmZjM5OGZi ZGNjLi4yNzU5NTA1NGVlYTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUv djRsMi1pb2N0bC5jCj4gKysrIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5j Cj4gQEAgLTE0MjcsNiArMTQyNyw3IEBAIHN0YXRpYyB2b2lkIHY0bF9maWxsX2ZtdGRlc2Moc3Ry dWN0IHY0bDJfZm10ZGVzYyAqZm10KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2FzZSBWNEwyX1BJWF9GTVRfVlA4OsKgwqDCoMKgwqDCoMKgwqDCoMKgZGVzY3IgPSAiVlA4Ijsg YnJlYWs7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfUElYX0ZN VF9WUDhfRlJBTUU6wqDCoMKgIGRlc2NyID0gIlZQOCBGcmFtZSI7IGJyZWFrOwo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX1BJWF9GTVRfVlA5OsKgwqDCoMKgwqDC oMKgwqDCoMKgZGVzY3IgPSAiVlA5IjsgYnJlYWs7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGNhc2UgVjRMMl9QSVhfRk1UX1ZQOV9GUkFNRTrCoMKgwqAgZGVzY3IgPSAiVlA5IEZy YW1lIjsgYnJlYWs7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJf UElYX0ZNVF9IRVZDOsKgwqDCoMKgwqDCoMKgwqDCoGRlc2NyID0gIkhFVkMiOyBicmVhazsgLyog YWthCj4gSC4yNjUgKi8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRM Ml9QSVhfRk1UX0hFVkNfU0xJQ0U6wqDCoMKgZGVzY3IgPSAiSEVWQyBQYXJzZWQgU2xpY2UKPiBE YXRhIjsgYnJlYWs7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJf UElYX0ZNVF9GV0hUOsKgwqDCoMKgwqDCoMKgwqDCoGRlc2NyID0gIkZXSFQiOyBicmVhazsgLyog dXNlZAo+IGluIHZpY29kZWMgKi8KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS92NGwyLWN0 cmxzLmggYi9pbmNsdWRlL21lZGlhL3Y0bDItY3RybHMuaAo+IGluZGV4IGNiMjVmMzQ1ZTlhZC4u ZmIyOTlkODNkZjZiIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1jdHJscy5oCj4g KysrIGIvaW5jbHVkZS9tZWRpYS92NGwyLWN0cmxzLmgKPiBAQCAtMjEsNiArMjEsNyBAQAo+IMKg I2luY2x1ZGUgPG1lZGlhL2Z3aHQtY3RybHMuaD4KPiDCoCNpbmNsdWRlIDxtZWRpYS9oMjY0LWN0 cmxzLmg+Cj4gwqAjaW5jbHVkZSA8bWVkaWEvdnA4LWN0cmxzLmg+Cj4gKyNpbmNsdWRlIDxtZWRp YS92cDktY3RybHMuaD4KPiDCoCNpbmNsdWRlIDxtZWRpYS9oZXZjLWN0cmxzLmg+Cj4gwqAKPiDC oC8qIGZvcndhcmQgcmVmZXJlbmNlcyAqLwo+IEBAIC01Myw2ICs1NCw4IEBAIHN0cnVjdCB2aWRl b19kZXZpY2U7Cj4gwqAgKiBAcF9oMjY0X2RlY29kZV9wYXJhbXM6wqDCoMKgwqDCoMKgUG9pbnRl ciB0byBhIHN0cnVjdAo+IHY0bDJfY3RybF9oMjY0X2RlY29kZV9wYXJhbXMuCj4gwqAgKiBAcF9o MjY0X3ByZWRfd2VpZ2h0czrCoMKgwqDCoMKgwqDCoFBvaW50ZXIgdG8gYSBzdHJ1Y3QKPiB2NGwy X2N0cmxfaDI2NF9wcmVkX3dlaWdodHMuCj4gwqAgKiBAcF92cDhfZnJhbWVfaGVhZGVyOsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgUG9pbnRlciB0byBhIFZQOCBmcmFtZSBoZWFkZXIK PiBzdHJ1Y3R1cmUuCj4gKyAqIEBwX3ZwOV9mcmFtZV9jdHg6wqDCoMKgwqDCoMKgwqDCoMKgwqDC oFBvaW50ZXIgdG8gYSBWUDkgZnJhbWUgY29udGV4dCBzdHJ1Y3R1cmUuCj4gKyAqIEBwX3ZwOV9m cmFtZV9kZWNvZGVfcGFyYW1zOsKgUG9pbnRlciB0byBhIFZQOSBmcmFtZSBwYXJhbXMgc3RydWN0 dXJlLgo+IMKgICogQHBfaGV2Y19zcHM6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgUG9pbnRlciB0byBhbiBIRVZDIHNlcXVlbmNlIHBhcmFtZXRlcgo+IHNl dCBzdHJ1Y3R1cmUuCj4gwqAgKiBAcF9oZXZjX3BwczrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBQb2ludGVyIHRvIGFuIEhFVkMgcGljdHVyZSBwYXJhbWV0 ZXIKPiBzZXQgc3RydWN0dXJlLgo+IMKgICogQHBfaGV2Y19zbGljZV9wYXJhbXM6wqDCoMKgwqDC oMKgwqBQb2ludGVyIHRvIGFuIEhFVkMgc2xpY2UgcGFyYW1ldGVycyBzdHJ1Y3R1cmUuCj4gQEAg LTgwLDYgKzgzLDggQEAgdW5pb24gdjRsMl9jdHJsX3B0ciB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnBfaGV2Y19zcHM7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHMgKnBfaGV2Y19wcHM7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0 cnVjdCB2NGwyX2N0cmxfaGV2Y19zbGljZV9wYXJhbXMgKnBfaGV2Y19zbGljZV9wYXJhbXM7Cj4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfY3RybF92cDlfZnJhbWVfY3R4ICpwX3ZwOV9mcmFt ZV9jdHg7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfY3RybF92cDlfZnJhbWVfZGVjb2Rl X3BhcmFtcyAqcF92cDlfZnJhbWVfZGVjb2RlX3BhcmFtczsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfYXJlYSAqcF9hcmVhOwo+IMKgwqDCoMKgwqDCoMKgwqB2b2lkICpwOwo+IMKgwqDC oMKgwqDCoMKgwqBjb25zdCB2b2lkICpwX2NvbnN0Owo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL21l ZGlhL3ZwOS1jdHJscy5oIGIvaW5jbHVkZS9tZWRpYS92cDktY3RybHMuaAo+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hMTRmZmZiM2FkNjEKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvaW5jbHVkZS9tZWRpYS92cDktY3RybHMuaAo+IEBAIC0wLDAgKzEsNDg2IEBA Cj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4gKy8qCj4gKyAqIFRo ZXNlIGFyZSB0aGUgVlA5IHN0YXRlIGNvbnRyb2xzIGZvciB1c2Ugd2l0aCBzdGF0ZWxlc3MgVlA5 Cj4gKyAqIGNvZGVjIGRyaXZlcnMuCj4gKyAqCj4gKyAqIEl0IHR1cm5zIG91dCB0aGF0IHRoZXNl IHN0cnVjdHMgYXJlIG5vdCBzdGFibGUgeWV0IGFuZCB3aWxsIHVuZGVyZ28KPiArICogbW9yZSBj aGFuZ2VzLiBTbyBrZWVwIHRoZW0gcHJpdmF0ZSB1bnRpbCB0aGV5IGFyZSBzdGFibGUgYW5kIHJl YWR5IHRvCj4gKyAqIGJlY29tZSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBwdWJsaWMgQVBJLgo+ICsg Ki8KPiArCj4gKyNpZm5kZWYgX1ZQOV9DVFJMU19IXwo+ICsjZGVmaW5lIF9WUDlfQ1RSTFNfSF8K PiArCj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsKPiArI2RlZmluZSBWNEwyX1BJWF9G TVRfVlA5X0ZSQU1FIHY0bDJfZm91cmNjKCdWJywgJ1AnLCAnOScsICdGJykKPiArCj4gKyNkZWZp bmUgVjRMMl9DSURfTVBFR19WSURFT19WUDlfRlJBTUVfQ09OVEVYVChpKcKgwqDCoMKgwqDCoMKg KFY0TDJfQ0lEX01QRUdfQkFTRSArCj4gNDAwMCArIChpKSkKPiArI2RlZmluZSBWNEwyX0NJRF9N UEVHX1ZJREVPX1ZQOV9GUkFNRV9ERUNPREVfUEFSQU1TwqDCoMKgwqAoVjRMMl9DSURfTVBFR19C QVNFICsKPiA0MDA0KQo+ICsjZGVmaW5lIFY0TDJfQ1RSTF9UWVBFX1ZQOV9GUkFNRV9DT05URVhU wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHg0MDAKPiArI2RlZmluZSBWNEwyX0NUUkxf VFlQRV9WUDlfRlJBTUVfREVDT0RFX1BBUkFNU8KgwqDCoMKgwqDCoMKgwqDCoDB4NDA0Cj4gKwo+ ICsvKioKPiArICogZW51bSB2NGwyX3ZwOV9sb29wX2ZpbHRlcl9mbGFncyAtIFZQOSBsb29wIGZp bHRlciBmbGFncwo+ICsgKgo+ICsgKiBAVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9F TkFCTEVEOiB0aGUgZmlsdGVyIGxldmVsIGRlcGVuZHMgb24KPiArICrCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHRoZSBtb2RlIGFuZCByZWZlcmVuY2UgZnJhbWUgdXNlZAo+ICsgKsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdG8gcHJlZGljdCBhIGJsb2NrCj4gKyAqIEBWNEwyX1ZQOV9MT09Q X0ZJTFRFUl9GTEFHX0RFTFRBX1VQREFURTogdGhlIGJpdHN0cmVhbSBjb250YWlucyBhZGRpdGlv bmFsCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3ludGF4IGVsZW1lbnRzIHRoYXQgc3Bl Y2lmeSB3aGljaAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1vZGUgYW5kIHJlZmVyZW5j ZSBmcmFtZSBkZWx0YXMKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhcmUgdG8gYmUgdXBk YXRlZAo+ICsgKgo+ICsgKiBUaG9zZSBhcmUgdGhlIGZsYWdzIHlvdSBzaG91bGQgcGFzcyB0byAm djRsMl92cDlfbG9vcF9maWx0ZXIuZmxhZ3MuIFNlZQo+ICsgKiBzZWN0aW9uICc3LjIuOCBMb29w IGZpbHRlciBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZQo+ICsg KiBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9sb29wX2ZpbHRlcl9mbGFncyB7Cj4g K8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9FTkFCTEVEID0g MSA8PCAwLAo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X0xPT1BfRklMVEVSX0ZMQUdfREVMVEFf VVBEQVRFID0gMSA8PCAxLAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB2NGwyX3ZwOV9s b29wX2ZpbHRlciAtIFZQOSBsb29wIGZpbHRlciBwYXJhbWV0ZXJzCj4gKyAqCj4gKyAqIEBmbGFn czogY29tYmluYXRpb24gb2YgVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR18qIGZsYWdzCj4gKyAq IEBsZXZlbDogaW5kaWNhdGVzIHRoZSBsb29wIGZpbHRlciBzdHJlbmd0aAo+ICsgKiBAc2hhcnBu ZXNzOiBpbmRpY2F0ZXMgdGhlIHNoYXJwbmVzcyBsZXZlbAo+ICsgKiBAcmVmX2RlbHRhczogY29u dGFpbnMgdGhlIGFkanVzdG1lbnQgbmVlZGVkIGZvciB0aGUgZmlsdGVyIGxldmVsIGJhc2VkIG9u Cj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aGUgY2hvc2VuIHJlZmVyZW5jZSBmcmFt ZQo+ICsgKiBAbW9kZV9kZWx0YXM6IGNvbnRhaW5zIHRoZSBhZGp1c3RtZW50IG5lZWRlZCBmb3Ig dGhlIGZpbHRlciBsZXZlbCBiYXNlZCBvbgo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHRoZSBjaG9zZW4gbW9kZQo+ICsgKiBAbGV2ZWxfbG9va3VwOiBsZXZlbCBsb29rdXAgdGFibGUK PiArICoKPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYWxsIGxvb3AgZmlsdGVyIHJlbGF0 ZWQgcGFyYW1ldGVycy4gU2VlIHNlY3Rpb25zCj4gKyAqICc3LjIuOCBMb29wIGZpbHRlciBzZW1h bnRpY3MnIGFuZCAnOC44LjEgTG9vcCBmaWx0ZXIgZnJhbWUgaW5pdCBwcm9jZXNzJwo+ICsgKiBv ZiB0aGUgVlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gK3N0cnVj dCB2NGwyX3ZwOV9sb29wX2ZpbHRlciB7Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBmbGFnczsKPiAr wqDCoMKgwqDCoMKgwqBfX3U4IGxldmVsOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggc2hhcnBuZXNz Owo+ICvCoMKgwqDCoMKgwqDCoF9fczggcmVmX2RlbHRhc1s0XTsKPiArwqDCoMKgwqDCoMKgwqBf X3M4IG1vZGVfZGVsdGFzWzJdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggbGV2ZWxfbG9va3VwWzhd WzRdWzJdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggcGFkZGluZzsKPiArfTsKPiArCj4gKy8qKgo+ ICsgKiBzdHJ1Y3QgdjRsMl92cDlfcXVhbnRpemF0aW9uIC0gVlA5IHF1YW50aXphdGlvbiBwYXJh bWV0ZXJzCj4gKyAqCj4gKyAqIEBiYXNlX3FfaWR4OiBpbmRpY2F0ZXMgdGhlIGJhc2UgZnJhbWUg cWluZGV4Cj4gKyAqIEBkZWx0YV9xX3lfZGM6IGluZGljYXRlcyB0aGUgWSBEQyBxdWFudGl6ZXIg cmVsYXRpdmUgdG8gYmFzZV9xX2lkeAo+ICsgKiBAZGVsdGFfcV91dl9kYzogaW5kaWNhdGVzIHRo ZSBVViBEQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeAo+ICsgKiBAZGVsdGFfcV91 dl9hYyBpbmRpY2F0ZXMgdGhlIFVWIEFDIHF1YW50aXplciByZWxhdGl2ZSB0byBiYXNlX3FfaWR4 Cj4gKyAqIEBwYWRkaW5nOiBwYWRkaW5nIGJ5dGVzIHRvIGFsaWduIHRoaW5ncyBvbiA2NCBiaXRz LiBNdXN0IGJlIHNldCB0byAwCj4gKyAqCj4gKyAqIEVuY29kZXMgdGhlIHF1YW50aXphdGlvbiBw YXJhbWV0ZXJzLiBTZWUgc2VjdGlvbiAnNy4yLjkgUXVhbnRpemF0aW9uCj4gcGFyYW1zCj4gKyAq IHN5bnRheCcgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Lwo+ICtzdHJ1Y3QgdjRsMl92cDlfcXVhbnRpemF0aW9uIHsKPiArwqDCoMKgwqDCoMKgwqBfX3U4 IGJhc2VfcV9pZHg7Cj4gK8KgwqDCoMKgwqDCoMKgX19zOCBkZWx0YV9xX3lfZGM7Cj4gK8KgwqDC oMKgwqDCoMKgX19zOCBkZWx0YV9xX3V2X2RjOwo+ICvCoMKgwqDCoMKgwqDCoF9fczggZGVsdGFf cV91dl9hYzsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IHBhZGRpbmdbNF07Cj4gK307Cj4gKwo+ICsv KioKPiArICogZW51bSB2NGwyX3ZwOV9zZWdtZW50YXRpb25fZmxhZ3MgLSBWUDkgc2VnbWVudGF0 aW9uIGZsYWdzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19FTkFCTEVE OiBpbmRpY2F0ZXMgdGhhdCB0aGlzIGZyYW1lIG1ha2VzIHVzZQo+IG9mCj4gKyAqwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0aGUgc2VnbWVudGF0aW9uIHRvb2wKPiArICogQFY0TDJfVlA5X1NFR01FTlRBVElP Tl9GTEFHX1VQREFURV9NQVA6IGluZGljYXRlcyB0aGF0IHRoZSBzZWdtZW50YXRpb24KPiBtYXAK PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2hvdWxkIGJlIHVwZGF0ZWQgZHVyaW5nIHRoZQo+ ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWNvZGluZyBvZiB0aGlzIGZyYW1lCj4gKyAqIEBW NEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19URU1QT1JBTF9VUERBVEU6IGluZGljYXRlcyB0aGF0 IHRoZSB1cGRhdGVzIHRvCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGhl IHNlZ21lbnRhdGlvbiBtYXAgYXJlIGNvZGVkCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmVsYXRpdmUgdG8gdGhlIGV4aXN0aW5nCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgc2VnbWVudGF0aW9uIG1hcAo+ICsgKiBAVjRMMl9WUDlfU0VHTUVOVEFU SU9OX0ZMQUdfVVBEQVRFX0RBVEE6IGluZGljYXRlcyB0aGF0IG5ldyBwYXJhbWV0ZXJzIGFyZQo+ ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFib3V0IHRvIGJlIHNwZWNpZmllZCBmb3IgZWFj aAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNlZ21lbnQKPiArICogQFY0TDJfVlA5X1NF R01FTlRBVElPTl9GTEFHX0FCU19PUl9ERUxUQV9VUERBVEU6IGluZGljYXRlcyB0aGF0IHRoZQo+ ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWdtZW50YXRpb24g cGFyYW1ldGVycwo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXByZXNlbnQgdGhlIGFjdHVhbAo+IHZhbHVlcwo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0byBiZSB1c2VkCj4gKyAqCj4gKyAqIFRob3NlIGFyZSB0aGUgZmxh Z3MgeW91IHNob3VsZCBwYXNzIHRvICZ2NGwyX3ZwOV9zZWdtZW50YXRpb24uZmxhZ3MuIFNlZQo+ ICsgKiBzZWN0aW9uICc3LjIuMTAgU2VnbWVudGF0aW9uIHBhcmFtcyBzeW50YXgnIG9mIHRoZSBW UDkgc3BlY2lmaWNhdGlvbiBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2 NGwyX3ZwOV9zZWdtZW50YXRpb25fZmxhZ3Mgewo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X1NF R01FTlRBVElPTl9GTEFHX0VOQUJMRUQgPSAxIDw8IDAsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9W UDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX01BUCA9IDEgPDwgMSwKPiArwqDCoMKgwqDCoMKg wqBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19URU1QT1JBTF9VUERBVEUgPSAxIDw8IDIsCj4g K8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX0RBVEEgPSAx IDw8IDMsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfQUJTX09S X0RFTFRBX1VQREFURSA9IDEgPDwgNCwKPiArfTsKPiArCj4gKyNkZWZpbmUgVjRMMl9WUDlfU0VH TUVOVF9GRUFUVVJFX0VOQUJMRUQoaWQpwqDCoMKgKDEgPDwgKGlkKSkKPiArI2RlZmluZSBWNEwy X1ZQOV9TRUdNRU5UX0ZFQVRVUkVfRU5BQkxFRF9NQVNLwqDCoDB4Zgo+ICsKPiArLyoqCj4gKyAq IGVudW0gdjRsMl92cDlfc2VnbWVudF9mZWF0dXJlIC0gVlA5IHNlZ21lbnQgZmVhdHVyZSBJRHMK PiArICoKPiArICogQFY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9RUF9ERUxUQTogUVAgZGVsdGEg c2VnbWVudCBmZWF0dXJlCj4gKyAqIEBWNEwyX1ZQOV9TRUdNRU5UX0ZFQVRVUkVfTEY6IGxvb3Ag ZmlsdGVyIHNlZ21lbnQgZmVhdHVyZQo+ICsgKiBAVjRMMl9WUDlfU0VHTUVOVF9GRUFUVVJFX1JF Rl9GUkFNRTogcmVmZXJlbmNlIGZyYW1lIHNlZ21lbnQgZmVhdHVyZQo+ICsgKiBAVjRMMl9WUDlf U0VHTUVOVF9GRUFUVVJFX1NLSVA6IHNraXAgc2VnbWVudCBmZWF0dXJlCj4gKyAqIEBWNEwyX1ZQ OV9TRUdNRU5UX0ZFQVRVUkVfQ05UOiBudW1iZXIgb2Ygc2VnbWVudCBmZWF0dXJlcwo+ICsgKgo+ ICsgKiBTZWdtZW50IGZlYXR1cmUgSURzLiBTZWUgc2VjdGlvbiAnNy4yLjEwIFNlZ21lbnRhdGlv biBwYXJhbXMgc3ludGF4JyBvZgo+IHRoZQo+ICsgKiBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9y ZSBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9zZWdtZW50X2ZlYXR1cmUgewo+ICvC oMKgwqDCoMKgwqDCoFY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9RUF9ERUxUQSwKPiArwqDCoMKg wqDCoMKgwqBWNEwyX1ZQOV9TRUdNRU5UX0ZFQVRVUkVfTEYsCj4gK8KgwqDCoMKgwqDCoMKgVjRM Ml9WUDlfU0VHTUVOVF9GRUFUVVJFX1JFRl9GUkFNRSwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQ OV9TRUdNRU5UX0ZFQVRVUkVfU0tJUCwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9TRUdNRU5U X0ZFQVRVUkVfQ05ULAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB2NGwyX3ZwOV9zZWdt ZW50YXRpb24gLSBWUDkgc2VnbWVudGF0aW9uIHBhcmFtZXRlcnMKPiArICoKPiArICogQGZsYWdz OiBjb21iaW5hdGlvbiBvZiBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR18qIGZsYWdzCj4gKyAq IEB0cmVlX3Byb2JzOiBzcGVjaWZpZXMgdGhlIHByb2JhYmlsaXR5IHZhbHVlcyB0byBiZSB1c2Vk IHdoZW4KPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWNvZGluZyBhIFNlZ21lbnQt SUQuIFNlZSAnNS4xNS4gU2VnbWVudGF0aW9uIG1hcCcKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzZWN0aW9uIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKiBAcHJlZF9wcm9iOiBzcGVjaWZpZXMgdGhlIHByb2JhYmlsaXR5IHZhbHVlcyB0byBi ZSB1c2VkIHdoZW4gZGVjb2RpbmcgYQo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUHJlZGlj dGVkLVNlZ21lbnQtSUQuIFNlZSAnNi40LjE0LiBHZXQgc2VnbWVudCBpZCBzeW50YXgnCj4gKyAq wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWN0aW9uIG9mIDpyZWY6YHZwOWAgZm9yIG1vcmUgZGV0 YWlscy4uCj4gKyAqIEBwYWRkaW5nOiBwYWRkaW5nIHVzZWQgdG8gbWFrZSB0aGluZ3MgYWxpZ25l ZCBvbiA2NCBiaXRzLiBTaGFsbCBiZSB6ZXJvCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgIGZpbGxl ZAo+ICsgKiBAZmVhdHVyZV9lbmFibGVkOiBiaXRtYXNrIGRlZmluaW5nIHdoaWNoIGZlYXR1cmVz IGFyZSBlbmFibGVkIGluIGVhY2gKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHNlZ21lbnQKPiArICogQGZlYXR1cmVfZGF0YTogZGF0YSBhdHRhY2hlZCB0byBlYWNoIGZl YXR1cmUuIERhdGEgZW50cnkgaXMgb25seSB2YWxpZCBpZgo+ICsgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZAo+ICsgKgo+ICsgKiBFbmNvZGVzIHRo ZSBxdWFudGl6YXRpb24gcGFyYW1ldGVycy4gU2VlIHNlY3Rpb24gJzcuMi4xMCBTZWdtZW50YXRp b24KPiArICogcGFyYW1zIHN5bnRheCcgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvciBtb3Jl IGRldGFpbHMuCj4gKyAqLwo+ICtzdHJ1Y3QgdjRsMl92cDlfc2VnbWVudGF0aW9uIHsKPiArwqDC oMKgwqDCoMKgwqBfX3U4IGZsYWdzOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggdHJlZV9wcm9ic1s3 XTsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IHByZWRfcHJvYnNbM107Cj4gK8KgwqDCoMKgwqDCoMKg X191OCBwYWRkaW5nWzVdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggZmVhdHVyZV9lbmFibGVkWzhd Owo+ICvCoMKgwqDCoMKgwqDCoF9fczE2IGZlYXR1cmVfZGF0YVs4XVs0XTsKPiArfTsKPiArCj4g Ky8qKgo+ICsgKiBlbnVtIHY0bDJfdnA5X2ludHJhX3ByZWRpY3Rpb25fbW9kZSAtIFZQOSBJbnRy YSBwcmVkaWN0aW9uIG1vZGVzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9JTlRSQV9QUkVEX0RDOiBE QyBpbnRyYSBwcmVkaWN0aW9uCj4gKyAqIEBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfVjogdmVy dGljYWwgaW50cmEgcHJlZGljdGlvbgo+ICsgKiBAVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0g6 IGhvcml6b250YWwgaW50cmEgcHJlZGljdGlvbgo+ICsgKiBAVjRMMl9WUDlfSU5UUkFfUFJFRF9N T0RFX0Q0NTogRDQ1IGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lOVFJBX1BSRURf TU9ERV9EMTM1OiBEMTM1IGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lOVFJBX1BS RURfTU9ERV9EMTE3OiBEMTE3IGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lOVFJB X1BSRURfTU9ERV9EMTUzOiBEMTUzIGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lO VFJBX1BSRURfTU9ERV9EMjA3OiBEMjA3IGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5 X0lOVFJBX1BSRURfTU9ERV9ENjM6IEQ2MyBpbnRyYSBwcmVkaWN0aW9uCj4gKyAqIEBWNEwyX1ZQ OV9JTlRSQV9QUkVEX01PREVfVE06IFRydWUgTW90aW9uIGludHJhIHByZWRpY3Rpb24KPiArICoK PiArICogU2VlIHNlY3Rpb24gJzcuNC41IEludHJhIGZyYW1lIG1vZGUgaW5mbyBzZW1hbnRpY3Mn IGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICtlbnVtIHY0bDJfdnA5X2ludHJhX3ByZWRpY3Rp b25fbW9kZSB7Cj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0RDLAo+ ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9WLAo+ICvCoMKgwqDCoMKg wqDCoFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9ILAo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5 X0lOVFJBX1BSRURfTU9ERV9ENDUsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5UUkFfUFJF RF9NT0RFX0QxMzUsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0Qx MTcsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QxNTMsCj4gK8Kg wqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QyMDcsCj4gK8KgwqDCoMKgwqDC oMKgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0Q2MywKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQ OV9JTlRSQV9QUkVEX01PREVfVE0sCj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IHY0bDJf dnA5X212X3Byb2JhYmlsaXRpZXMgLSBWUDkgTW90aW9uIHZlY3RvciBwcm9iYWJpbGl0aWVzCj4g KyAqIEBqb2ludDogbW90aW9uIHZlY3RvciBqb2ludCBwcm9iYWJpbGl0aWVzCj4gKyAqIEBzaWdu OiBtb3Rpb24gdmVjdG9yIHNpZ24gcHJvYmFiaWxpdGllcwo+ICsgKiBAY2xhc3M6IG1vdGlvbiB2 ZWN0b3IgY2xhc3MgcHJvYmFiaWxpdGllcwo+ICsgKiBAY2xhc3MwX2JpdDogbW90aW9uIHZlY3Rv ciBjbGFzczAgYml0IHByb2JhYmlsaXRpZXMKPiArICogQGJpdHM6IG1vdGlvbiB2ZWN0b3IgYml0 cyBwcm9iYWJpbGl0aWVzCj4gKyAqIEBjbGFzczBfZnI6IG1vdGlvbiB2ZWN0b3IgY2xhc3MwIGZy YWN0aW9uYWwgYml0IHByb2JhYmlsaXRpZXMKPiArICogQGZyOiBtb3Rpb24gdmVjdG9yIGZyYWN0 aW9uYWwgYml0IHByb2JhYmlsaXRpZXMKPiArICogQGNsYXNzMF9ocDogbW90aW9uIHZlY3RvciBj bGFzczAgaGlnaCBwcmVjaXNpb24gZnJhY3Rpb25hbCBiaXQKPiBwcm9iYWJpbGl0aWVzCj4gKyAq IEBocDogbW90aW9uIHZlY3RvciBoaWdoIHByZWNpc2lvbiBmcmFjdGlvbmFsIGJpdCBwcm9iYWJp bGl0aWVzCj4gKyAqLwo+ICtzdHJ1Y3QgdjRsMl92cDlfbXZfcHJvYmFiaWxpdGllcyB7Cj4gK8Kg wqDCoMKgwqDCoMKgX191OCBqb2ludFszXTsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IHNpZ25bMl07 Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBjbGFzc1syXVsxMF07Cj4gK8KgwqDCoMKgwqDCoMKgX191 OCBjbGFzczBfYml0WzJdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggYml0c1syXVsxMF07Cj4gK8Kg wqDCoMKgwqDCoMKgX191OCBjbGFzczBfZnJbMl1bMl1bM107Cj4gK8KgwqDCoMKgwqDCoMKgX191 OCBmclsyXVszXTsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IGNsYXNzMF9ocFsyXTsKPiArwqDCoMKg wqDCoMKgwqBfX3U4IGhwWzJdOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB2NGwyX3Zw OV9wcm9iYWJpbGl0aWVzIC0gVlA5IFByb2JhYmlsaXRpZXMKPiArICoKPiArICogQHR4ODogVFgg OHg4IHByb2JhYmlsaXRpZXMKPiArICogQHR4MTY6IFRYIDE2eDE2IHByb2JhYmlsaXRpZXMKPiAr ICogQHR4MzI6IFRYIDMyeDMyIHByb2JhYmlsaXRpZXMKPiArICogQGNvZWY6IGNvZWZmaWNpZW50 IHByb2JhYmlsaXRpZXMKPiArICogQHNraXA6IHNraXAgcHJvYmFiaWxpdGllcwo+ICsgKiBAaW50 ZXJfbW9kZTogaW50ZXIgbW9kZSBwcm9iYWJpbGl0aWVzCj4gKyAqIEBpbnRlcnBfZmlsdGVyOiBp bnRlcnBvbGF0aW9uIGZpbHRlciBwcm9iYWJpbGl0aWVzCj4gKyAqIEBpc19pbnRlcjogaXMgaW50 ZXItYmxvY2sgcHJvYmFiaWxpdGllcwo+ICsgKiBAY29tcF9tb2RlOiBjb21wb3VuZCBwcmVkaWN0 aW9uIG1vZGUgcHJvYmFiaWxpdGllcwo+ICsgKiBAc2luZ2xlX3JlZjogc2luZ2xlIHJlZiBwcm9i YWJpbGl0aWVzCj4gKyAqIEBjb21wX3JlZjogY29tcG91bmQgcmVmIHByb2JhYmlsaXRpZXMKPiAr ICogQHlfbW9kZTogWSBwcmVkaWN0aW9uIG1vZGUgcHJvYmFiaWxpdGllcwo+ICsgKiBAdXZfbW9k ZTogVVYgcHJlZGljdGlvbiBtb2RlIHByb2JhYmlsaXRpZXMKPiArICogQHBhcnRpdGlvbjogcGFy dGl0aW9uIHByb2JhYmlsaXRpZXMKPiArICogQG12OiBtb3Rpb24gdmVjdG9yIHByb2JhYmlsaXRp ZXMKPiArICoKPiArICogU3RydWN0dXJlIGNvbnRhaW5pbmcgbW9zdCBWUDkgcHJvYmFiaWxpdGll cy4gU2VlIHRoZSBWUDkgc3BlY2lmaWNhdGlvbgo+ICsgKiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsg Ki8KPiArc3RydWN0IHY0bDJfdnA5X3Byb2JhYmlsaXRpZXMgewo+ICvCoMKgwqDCoMKgwqDCoF9f dTggdHg4WzJdWzFdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggdHgxNlsyXVsyXTsKPiArwqDCoMKg wqDCoMKgwqBfX3U4IHR4MzJbMl1bM107Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBjb2VmWzRdWzJd WzJdWzZdWzZdWzNdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggc2tpcFszXTsKPiArwqDCoMKgwqDC oMKgwqBfX3U4IGludGVyX21vZGVbN11bM107Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBpbnRlcnBf ZmlsdGVyWzRdWzJdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggaXNfaW50ZXJbNF07Cj4gK8KgwqDC oMKgwqDCoMKgX191OCBjb21wX21vZGVbNV07Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBzaW5nbGVf cmVmWzVdWzJdOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggY29tcF9yZWZbNV07Cj4gK8KgwqDCoMKg wqDCoMKgX191OCB5X21vZGVbNF1bOV07Cj4gK8KgwqDCoMKgwqDCoMKgX191OCB1dl9tb2RlWzEw XVs5XTsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IHBhcnRpdGlvblsxNl1bM107Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoHN0cnVjdCB2NGwyX3ZwOV9tdl9wcm9iYWJpbGl0aWVzIG12Owo+ICt9Owo+ICsK PiArLyoqCj4gKyAqIGVudW0gdjRsMl92cDlfcmVzZXRfZnJhbWVfY29udGV4dCAtIFZhbGlkIHZh bHVlcyBmb3IKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAm djRsMl9jdHJsX3ZwOV9mcmFtZV9kZWNvZGVfcGFyYW1zLQo+ID5yZXNldF9mcmFtZV9jb250ZXh0 Cj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfTk9ORTogZG9uJ3QgcmVzZXQg YW55IGZyYW1lIGNvbnRleHQKPiArICogQFY0TDJfVlA5X1JFU0VUX0ZSQU1FX0NUWF9TUEVDOiBy ZXNldCB0aGUgZnJhbWUgY29udGV4dCBwb2ludGVkIGJ5Cj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJnY0bDJfY3RybF92cDlfZnJhbWVfZGVjb2RlX3BhcmFt cy5mcmFtZV9jb250ZXh0X2lkeAo+ICsgKiBAVjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX0FMTDog cmVzZXQgYWxsIGZyYW1lIGNvbnRleHRzCj4gKyAqCj4gKyAqIFNlZSBzZWN0aW9uICc3LjIgVW5j b21wcmVzc2VkIGhlYWRlciBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbgo+ICsg KiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9yZXNldF9mcmFtZV9j b250ZXh0IHsKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfTk9ORSwK PiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfU1BFQywKPiArwqDCoMKg wqDCoMKgwqBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfQUxMLAo+ICt9Owo+ICsKPiArLyoqCj4g KyAqIGVudW0gdjRsMl92cDlfaW50ZXJwb2xhdGlvbl9maWx0ZXIgLSBWUDkgaW50ZXJwb2xhdGlv biBmaWx0ZXIgdHlwZXMKPiArICoKPiArICogQFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfOFRBUDog aGVpZ2h0IHRhcCBmaWx0ZXIKPiArICogQFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfOFRBUF9TTU9P VEg6IGhlaWdodCB0YXAgc21vb3RoIGZpbHRlcgo+ICsgKiBAVjRMMl9WUDlfSU5URVJQX0ZJTFRF Ul84VEFQX1NIQVJQOiBoZWlnaHQgdGFwIHNoYXJwIGZpbHRlcgo+ICsgKiBAVjRMMl9WUDlfSU5U RVJQX0ZJTFRFUl9CSUxJTkVBUjogYmlsaW5lYXIgZmlsdGVyCj4gKyAqIEBWNEwyX1ZQOV9JTlRF UlBfRklMVEVSX1NXSVRDSEFCTEU6IGZpbHRlciBzZWxlY3Rpb24gaXMgc2lnbmFsZWQgYXQgdGhl Cj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBibG9jayBsZXZlbAo+ICsgKgo+ICsgKiBTZWUgc2VjdGlvbiAn Ny4yLjcgSW50ZXJwb2xhdGlvbiBmaWx0ZXIgc2VtYW50aWNzJyBvZiB0aGUgVlA5Cj4gc3BlY2lm aWNhdGlvbgo+ICsgKiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9p bnRlcnBvbGF0aW9uX2ZpbHRlciB7Cj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5URVJQX0ZJ TFRFUl84VEFQLAo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfOFRBUF9T TU9PVEgsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl84VEFQX1NIQVJQ LAo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfQklMSU5FQVIsCj4gK8Kg wqDCoMKgwqDCoMKgVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl9TV0lUQ0hBQkxFLAo+ICt9Owo+ICsK PiArLyoqCj4gKyAqIGVudW0gdjRsMl92cDlfcmVmZXJlbmNlX21vZGUgLSBWUDkgcmVmZXJlbmNl IG1vZGVzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9SRUZfTU9ERV9TSU5HTEU6IGluZGljYXRlcyB0 aGF0IGFsbCB0aGUgaW50ZXIgYmxvY2tzIHVzZSBvbmx5IGEKPiArICrCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpbmdsZSByZWZlcmVuY2UgZnJh bWUgdG8gZ2VuZXJhdGUgbW90aW9uCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb21wZW5zYXRlZCBwcmVkaWN0aW9uCj4gKyAqIEBWNEwy X1ZQOV9SRUZfTU9ERV9DT01QT1VORDogcmVxdWlyZXMgYWxsIHRoZSBpbnRlciBibG9ja3MgdG8g dXNlIGNvbXBvdW5kCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoG1vZGUuIFNpbmdsZSByZWZlcmVuY2UgZnJhbWUgcHJlZGljdGlv biBpcyBub3QKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYWxsb3dlZAo+ICsgKiBAVjRMMl9WUDlfUkVGX01PREVfU0VMRUNUOiBh bGxvd3MgZWFjaCBpbmRpdmlkdWFsIGludGVyIGJsb2NrIHRvIHNlbGVjdAo+ICsgKsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmV0d2VlbiBzaW5n bGUgYW5kIGNvbXBvdW5kIHByZWRpY3Rpb24gbW9kZXMKPiArICoKPiArICogU2VlIHNlY3Rpb24g JzcuMy42IEZyYW1lIHJlZmVyZW5jZSBtb2RlIHNlbWFudGljcycgb2YgdGhlIFZQOQo+IHNwZWNp ZmljYXRpb24KPiArICogZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gK2VudW0gdjRsMl92cDlf cmVmZXJlbmNlX21vZGUgewo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X1JFRl9NT0RFX1NJTkdM RSwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9SRUZfTU9ERV9DT01QT1VORCwKPiArwqDCoMKg wqDCoMKgwqBWNEwyX1ZQOV9SRUZfTU9ERV9TRUxFQ1QsCj4gK307Cj4gKwo+ICsvKioKPiArICog ZW51bSB2NGwyX3ZwOV90eF9tb2RlIC0gVlA5IFRYIG1vZGVzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQ OV9UWF9NT0RFX09OTFlfNFg0OiB0cmFuc2Zvcm0gc2l6ZSBpcyA0eDQKPiArICogQFY0TDJfVlA5 X1RYX01PREVfQUxMT1dfOFg4OiB0cmFuc2Zvcm0gc2l6ZSBjYW4gYmUgdXAgdG8gOHg4Cj4gKyAq IEBWNEwyX1ZQOV9UWF9NT0RFX0FMTE9XXzE2WDE2OiB0cmFuc2Zvcm0gc2l6ZSBjYW4gYmUgdXAg dG8gMTZ4MTYKPiArICogQFY0TDJfVlA5X1RYX01PREVfQUxMT1dfMzJYMzI6IHRyYW5zZm9ybSBz aXplIGNhbiBiZSB1cCB0byAzMngzMgo+ICsgKiBAVjRMMl9WUDlfVFhfTU9ERV9TRUxFQ1Q6IGJp dHN0cmVhbSBjb250YWlucyB0cmFuc2Zvcm0gc2l6ZSBmb3IgZWFjaCBibG9jawo+ICsgKgo+ICsg KiBTZWUgc2VjdGlvbiAnNy4zLjEgVHggbW9kZSBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lm aWNhdGlvbiBmb3IgbW9yZQo+ICsgKiBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV90 eF9tb2RlIHsKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9UWF9NT0RFX09OTFlfNFg0LAo+ICvC oMKgwqDCoMKgwqDCoFY0TDJfVlA5X1RYX01PREVfQUxMT1dfOFg4LAo+ICvCoMKgwqDCoMKgwqDC oFY0TDJfVlA5X1RYX01PREVfQUxMT1dfMTZYMTYsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlf VFhfTU9ERV9BTExPV18zMlgzMiwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9UWF9NT0RFX1NF TEVDVCwKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBlbnVtIHY0bDJfdnA5X3JlZl9pZCAtIFZQOSBS ZWZlcmVuY2UgZnJhbWUgSURzCj4gKyAqCj4gKyAqIEBWNEwyX1JFRl9JRF9MQVNUOiBsYXN0IHJl ZmVyZW5jZSBmcmFtZQo+ICsgKiBAVjRMMl9SRUZfSURfR09MREVOOiBnb2xkZW4gcmVmZXJlbmNl IGZyYW1lCj4gKyAqIEBWNEwyX1JFRl9JRF9BTFRSRUY6IGFsdGVybmF0aXZlIHJlZmVyZW5jZSBm cmFtZQo+ICsgKiBAVjRMMl9SRUZfSURfQ05UOiBudW1iZXIgb2YgcmVmZXJlbmNlIGZyYW1lcwo+ ICsgKgo+ICsgKiBTZWUgc2VjdGlvbiAnNy40LjEyIFJlZiBmcmFtZXMgc2VtYW50aWNzJyBvZiB0 aGUgVlA5IHNwZWNpZmljYXRpb24gZm9yCj4gbW9yZQo+ICsgKiBkZXRhaWxzLgo+ICsgKi8KPiAr ZW51bSB2NGwyX3ZwOV9yZWZfaWQgewo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfUkVGX0lEX0xBU1Qs Cj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9SRUZfSURfR09MREVOLAo+ICvCoMKgwqDCoMKgwqDCoFY0 TDJfUkVGX0lEX0FMVFJFRiwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1JFRl9JRF9DTlQsCj4gK307 Cj4gKwo+ICsvKioKPiArICogZW51bSB2NGwyX3ZwOV9mcmFtZV9mbGFncyAtIFZQOSBmcmFtZSBm bGFncwo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxBR19LRVlfRlJBTUU6IHRoZSBmcmFtZSBpcyBh IGtleSBmcmFtZQo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxBR19TSE9XX0ZSQU1FOiB0aGUgZnJh bWUgc2hvdWxkIGJlIGRpc3BsYXllZAo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxBR19FUlJPUl9S RVNJTElFTlQ6IHRoZSBkZWNvZGluZyBzaG91bGQgYmUgZXJyb3IKPiByZXNpbGllbnQKPiArICog QFY0TDJfVlA5X0ZSQU1FX0ZMQUdfSU5UUkFfT05MWTogdGhlIGZyYW1lIGRvZXMgbm90IHJlZmVy ZW5jZSBvdGhlciBmcmFtZXMKPiArICogQFY0TDJfVlA5X0ZSQU1FX0ZMQUdfQUxMT1dfSElHSF9Q UkVDX01WOiB0aGUgZnJhbWUgbWlnaHQgY2FuIGhpZ2gKPiBwcmVjaXNpb24KPiArICrCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtb3Rpb24gdmVjdG9ycwo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxB R19SRUZSRVNIX0ZSQU1FX0NUWDogZnJhbWUgY29udGV4dCBzaG91bGQgYmUgdXBkYXRlZAo+ICsg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZnRlciBkZWNvZGluZwo+ICsgKiBAVjRMMl9WUDlfRlJB TUVfRkxBR19QQVJBTExFTF9ERUNfTU9ERTogcGFyYWxsZWwgZGVjb2RpbmcgaXMgdXNlZAo+ICsg KiBAVjRMMl9WUDlfRlJBTUVfRkxBR19YX1NVQlNBTVBMSU5HOiB2ZXJ0aWNhbCBzdWJzYW1wbGlu ZyBpcyBlbmFibGVkCj4gKyAqIEBWNEwyX1ZQOV9GUkFNRV9GTEFHX1lfU1VCU0FNUExJTkc6IGhv cml6b250YWwgc3Vic2FtcGxpbmcgaXMgZW5hYmxlZAo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxB R19DT0xPUl9SQU5HRV9GVUxMX1NXSU5HOiBmdWxsIFVWIHJhbmdlIGlzIHVzZWQKPiArICoKPiAr ICogQ2hlY2sgdGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ ICtlbnVtIHY0bDJfdnA5X2ZyYW1lX2ZsYWdzIHsKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9G UkFNRV9GTEFHX0tFWV9GUkFNRSA9IDEgPDwgMCwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9G UkFNRV9GTEFHX1NIT1dfRlJBTUUgPSAxIDw8IDEsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlf RlJBTUVfRkxBR19FUlJPUl9SRVNJTElFTlQgPSAxIDw8IDIsCj4gK8KgwqDCoMKgwqDCoMKgVjRM Ml9WUDlfRlJBTUVfRkxBR19JTlRSQV9PTkxZID0gMSA8PCAzLAo+ICvCoMKgwqDCoMKgwqDCoFY0 TDJfVlA5X0ZSQU1FX0ZMQUdfQUxMT1dfSElHSF9QUkVDX01WID0gMSA8PCA0LAo+ICvCoMKgwqDC oMKgwqDCoFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUkVGUkVTSF9GUkFNRV9DVFggPSAxIDw8IDUsCj4g K8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfRlJBTUVfRkxBR19QQVJBTExFTF9ERUNfTU9ERSA9IDEg PDwgNiwKPiArwqDCoMKgwqDCoMKgwqBWNEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VCU0FNUExJTkcg PSAxIDw8IDcsCj4gK8KgwqDCoMKgwqDCoMKgVjRMMl9WUDlfRlJBTUVfRkxBR19ZX1NVQlNBTVBM SU5HID0gMSA8PCA4LAo+ICvCoMKgwqDCoMKgwqDCoFY0TDJfVlA5X0ZSQU1FX0ZMQUdfQ09MT1Jf UkFOR0VfRlVMTF9TV0lORyA9IDEgPDwgOSwKPiArfTsKPiArCj4gKyNkZWZpbmUgVjRMMl9WUDlf UFJPRklMRV9NQVjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMwo+ICsKPiArLyoqCj4gKyAqIHN0cnVj dCB2NGwyX2N0cmxfdnA5X2ZyYW1lX2RlY29kZV9wYXJhbXMgLSBWUDkgZnJhbWUgZGVjb2Rpbmcg Y29udHJvbAo+ICsgKgo+ICsgKiBAZmxhZ3M6IGNvbWJpbmF0aW9uIG9mIFY0TDJfVlA5X0ZSQU1F X0ZMQUdfKiBmbGFncwo+ICsgKiBAY29tcHJlc3NlZF9oZWFkZXJfc2l6ZTogY29tcHJlc3NlZCBo ZWFkZXIgc2l6ZSBpbiBieXRlcwo+ICsgKiBAdW5jb21wcmVzc2VkX2hlYWRlcl9zaXplOiB1bmNv bXByZXNzZWQgaGVhZGVyIHNpemUgaW4gYnl0ZXMKPiArICogQHByb2ZpbGU6IFZQOSBwcm9maWxl LiBDYW4gYmUgMCwgMSwgMiBvciAzCj4gKyAqIEByZXNldF9mcmFtZV9jb250ZXh0OiBzcGVjaWZp ZXMgd2hldGhlciB0aGUgZnJhbWUgY29udGV4dCBzaG91bGQgYmUgcmVzZXQKPiArICrCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdG8gZGVmYXVsdCB2YWx1ZXMuIFNl ZSAmdjRsMl92cDlfcmVzZXRfZnJhbWVfY29udGV4dAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgbW9yZSBkZXRhaWxzCj4gKyAqIEBmcmFtZV9jb250 ZXh0X2lkeDogZnJhbWUgY29udGV4dCB0aGF0IHNob3VsZCBiZSB1c2VkL3VwZGF0ZWQKPiArICog QGJpdF9kZXB0aDogYml0cyBwZXIgY29tcG9uZW50cy4gQ2FuIGJlIDgsIDEwIG9yIDEyLiBOb3Rl IHRoYXQgbm90IGFsbAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJvZmlsZXMgc3VwcG9y dCAxMCBhbmQvb3IgMTIgYml0cyBkZXB0aHMKPiArICogQGludGVycG9sYXRpb25fZmlsdGVyOiBz cGVjaWZpZXMgdGhlIGZpbHRlciBzZWxlY3Rpb24gdXNlZCBmb3IgcGVyZm9ybWluZwo+ICsgKsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVyIHByZWRpY3Rp b24uIFNlZSAmdjRsMl92cDlfaW50ZXJwb2xhdGlvbl9maWx0ZXIKPiArICrCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgbW9yZSBkZXRhaWxzCj4gKyAqIEB0 aWxlX2NvbHNfbG9nMjogc3BlY2lmaWVzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIHRoZSB3aWR0 aCBvZiBlYWNoIHRpbGUKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAod2hl cmUgdGhlIHdpZHRoIGlzIG1lYXN1cmVkIGluIHVuaXRzIG9mIDh4OCBibG9ja3MpLgo+ICsgKsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNoYWxsIGJlIGxlc3MgdGhhbiBvciBlcXVh bCB0byA2Cj4gKyAqIEB0aWxlX3Jvd3NfbG9nMjogc3BlY2lmaWVzIHRoZSBiYXNlIDIgbG9nYXJp dGhtIG9mIHRoZSBoZWlnaHQgb2YgZWFjaCB0aWxlCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKHdoZXJlIHRoZSBoZWlnaHQgaXMgbWVhc3VyZWQgaW4gdW5pdHMgb2YgOHg4 IGJsb2NrcykKPiArICogQHR4X21vZGU6IHNwZWNpZmllcyB0aGUgVFggbW9kZS4gU2VlICZ2NGwy X3ZwOV90eF9tb2RlIGZvciBtb3JlIGRldGFpbHMKPiArICogQHJlZmVyZW5jZV9tb2RlOiBzcGVj aWZpZXMgdGhlIHR5cGUgb2YgaW50ZXIgcHJlZGljdGlvbiB0byBiZSB1c2VkLiBTZWUKPiArICrC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdjRsMl92cDlfcmVmZXJlbmNlX21vZGUg Zm9yIG1vcmUgZGV0YWlscwo+ICsgKiBAcGFkZGluZzogbmVlZGVkIHRvIG1ha2UgdGhpcyBzdHJ1 Y3QgNjQgYml0IGFsaWduZWQuIFNoYWxsIGJlIGZpbGxlZCB3aXRoCj4gKyAqwqDCoMKgwqDCoMKg wqDCoMKgIHplcm9zCj4gKyAqIEBmcmFtZV93aWR0aF9taW51c18xOiBhZGQgMSB0byBpdCBhbmQg eW91J2xsIGdldCB0aGUgZnJhbWUgd2lkdGggZXhwcmVzc2VkCj4gKyAqwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGluIHBpeGVscwo+ICsgKiBAZnJhbWVfaGVpZ2h0 X21pbnVzXzE6IGFkZCAxIHRvIGl0IGFuZCB5b3UnbGwgZ2V0IHRoZSBmcmFtZSBoZWlnaHQKPiBl eHByZXNzZWQKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpbiBwaXhlbHMKPiArICogQGZyYW1lX3dpZHRoX21pbnVzXzE6IGFkZCAxIHRvIGl0IGFuZCB5 b3UnbGwgZ2V0IHRoZSBleHBlY3RlZCByZW5kZXIgd2lkdGgKPiArICrCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhwcmVzc2VkIGluIHBpeGVscy4gVGhpcyBpcyBu b3QgdXNlZCBkdXJpbmcgdGhlCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRlY29kaW5nIHByb2Nlc3MgYnV0IG1pZ2h0IGJlIHVzZWQgYnkgSFcgc2NhbGVy cyB0bwo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwcmVw YXJlIGEgZnJhbWUgdGhhdCdzIHJlYWR5IGZvciBzY2Fub3V0Cj4gKyAqIEBmcmFtZV9oZWlnaHRf bWludXNfMTogYWRkIDEgdG8gaXQgYW5kIHlvdSdsbCBnZXQgdGhlIGV4cGVjdGVkIHJlbmRlcgo+ IGhlaWdodAo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl eHByZXNzZWQgaW4gcGl4ZWxzLiBUaGlzIGlzIG5vdCB1c2VkIGR1cmluZyB0aGUKPiArICrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVjb2RpbmcgcHJvY2VzcyBi dXQgbWlnaHQgYmUgdXNlZCBieSBIVyBzY2FsZXJzIHRvCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByZXBhcmUgYSBmcmFtZSB0aGF0J3MgcmVhZHkgZm9y IHNjYW5vdXQKPiArICogQHJlZnM6IGFycmF5IG9mIHJlZiBmcmFtZXMgdGltZXN0YW1wcy4gU2Vl ICZ2NGwyX3ZwOV9yZWZfaWQgZm9yIG1vcmUKPiBkZXRhaWxzCj4gKyAqIEBsZjogbG9vcCBmaWx0 ZXIgcGFyYW1ldGVycy4gU2VlICZ2NGwyX3ZwOV9sb29wX2ZpbHRlciBmb3IgbW9yZSBkZXRhaWxz Cj4gKyAqIEBxdWFudDogcXVhbnRpemF0aW9uIHBhcmFtZXRlcnMuIFNlZSAmdjRsMl92cDlfcXVh bnRpemF0aW9uIGZvciBtb3JlCj4gZGV0YWlscwo+ICsgKiBAc2VnOiBzZWdtZW50YXRpb24gcGFy YW1ldGVycy4gU2VlICZ2NGwyX3ZwOV9zZWdtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscwo+ICsg KiBAcHJvYnM6IHByb2JhYmlsaXRpZXMuIFNlZSAmdjRsMl92cDlfcHJvYmFiaWxpdGllcyBmb3Ig bW9yZSBkZXRhaWxzCj4gKyAqLwo+ICtzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9mcmFtZV9kZWNvZGVf cGFyYW1zIHsKPiArwqDCoMKgwqDCoMKgwqBfX3UzMiBmbGFnczsKPiArwqDCoMKgwqDCoMKgwqBf X3UxNiBjb21wcmVzc2VkX2hlYWRlcl9zaXplOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTE2IHVuY29t cHJlc3NlZF9oZWFkZXJfc2l6ZTsKPiArwqDCoMKgwqDCoMKgwqBfX3U4IHByb2ZpbGU7Cj4gK8Kg wqDCoMKgwqDCoMKgX191OCByZXNldF9mcmFtZV9jb250ZXh0Owo+ICvCoMKgwqDCoMKgwqDCoF9f dTggZnJhbWVfY29udGV4dF9pZHg7Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBiaXRfZGVwdGg7Cj4g K8KgwqDCoMKgwqDCoMKgX191OCBpbnRlcnBvbGF0aW9uX2ZpbHRlcjsKPiArwqDCoMKgwqDCoMKg wqBfX3U4IHRpbGVfY29sc19sb2cyOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTggdGlsZV9yb3dzX2xv ZzI7Cj4gK8KgwqDCoMKgwqDCoMKgX191OCB0eF9tb2RlOwo+ICvCoMKgwqDCoMKgwqDCoF9fdTgg cmVmZXJlbmNlX21vZGU7Cj4gK8KgwqDCoMKgwqDCoMKgX191OCBwYWRkaW5nWzddOwo+ICvCoMKg wqDCoMKgwqDCoF9fdTE2IGZyYW1lX3dpZHRoX21pbnVzXzE7Cj4gK8KgwqDCoMKgwqDCoMKgX191 MTYgZnJhbWVfaGVpZ2h0X21pbnVzXzE7Cj4gK8KgwqDCoMKgwqDCoMKgX191MTYgcmVuZGVyX3dp ZHRoX21pbnVzXzE7Cj4gK8KgwqDCoMKgwqDCoMKgX191MTYgcmVuZGVyX2hlaWdodF9taW51c18x Owo+ICvCoMKgwqDCoMKgwqDCoF9fdTY0IHJlZnNbVjRMMl9SRUZfSURfQ05UXTsKPiArwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgdjRsMl92cDlfbG9vcF9maWx0ZXIgbGY7Cj4gK8KgwqDCoMKgwqDCoMKg c3RydWN0IHY0bDJfdnA5X3F1YW50aXphdGlvbiBxdWFudDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgdjRsMl92cDlfc2VnbWVudGF0aW9uIHNlZzsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRs Ml92cDlfcHJvYmFiaWxpdGllcyBwcm9iczsKPiArfTsKPiArCj4gKyNkZWZpbmUgVjRMMl9WUDlf TlVNX0ZSQU1FX0NUWMKgNAo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCB2NGwyX2N0cmxfdnA5X2Zy YW1lX2N0eCAtIFZQOSBmcmFtZSBjb250ZXh0IGNvbnRyb2wKPiArICoKPiArICogQHByb2JzOiBW UDkgcHJvYmFiaWxpdGllcwo+ICsgKgo+ICsgKiBUaGlzIGNvbnRyb2wgaXMgYWNjZXNzZWQgaW4g Ym90aCBkaXJlY3Rpb24uIFRoZSB1c2VyIHNob3VsZCBpbml0aWFsaXplIHRoZQo+ICsgKiA0IGNv bnRleHRzIHdpdGggZGVmYXVsdCB2YWx1ZXMganVzdCBhZnRlciBzdGFydGluZyB0aGUgc3RyZWFt LiBUaGVuIGJlZm9yZQo+ICsgKiBkZWNvZGluZyBhIGZyYW1lIGl0IHNob3VsZCBxdWVyeSB0aGUg Y3VycmVudCBmcmFtZSBjb250ZXh0ICh0aGUgb25lIHBhc3NlZAo+ICsgKiB0aHJvdWdoICZ2NGwy X2N0cmxfdnA5X2ZyYW1lX2RlY29kZV9wYXJhbXMuZnJhbWVfY29udGV4dF9pZHgpIHRvCj4gaW5p dGlhbGl6ZQo+ICsgKiAmdjRsMl9jdHJsX3ZwOV9mcmFtZV9kZWNvZGVfcGFyYW1zLnByb2JzLiBU aGUgcHJvYnMgYXJlIHRoZW4gYWRqdXN0ZWQKPiBiYXNlZAo+ICsgKiBvbiB0aGUgYml0c3RyZWFt IGluZm8gYW5kIHBhc3NlZCB0byB0aGUga2VybmVsLiBUaGUgY29kZWMgc2hvdWxkIHVwZGF0ZQo+ ICsgKiB0aGUgZnJhbWUgY29udGV4dCBhZnRlciB0aGUgZnJhbWUgaGFzIGJlZW4gZGVjb2RlZCwg c28gdGhhdCBuZXh0IHRpbWUKPiArICogdXNlcnNwYWNlIHF1ZXJ5IHRoaXMgY29udGV4dCBpdCBj b250YWlucyB0aGUgdXBkYXRlZCBwcm9iYWJpbGl0aWVzLgo+ICsgKi8KPiArc3RydWN0IHY0bDJf Y3RybF92cDlfZnJhbWVfY3R4IHsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl92cDlfcHJv YmFiaWxpdGllcyBwcm9iczsKPiArfTsKPiArCj4gKyNlbmRpZiAvKiBfVlA5X0NUUkxTX0hfICov CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4 LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2No aXAK