From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.4 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,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96A35C4338F for ; Tue, 17 Aug 2021 17:51:55 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 5363B60FE6 for ; Tue, 17 Aug 2021 17:51:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5363B60FE6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc: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=X1BdIViu51vxuUFD7BnjZPKXFcJexURM/gzrcd8xfWI=; b=UMh/DiUlKdkg21 OxT8UsRsZJ7P1cehTirGv9zoxK/6FENx0xPxUTYl/UlsfBeJWu6Y7c12Rvft3/VloGpACc4tAQyBK 32Mjfq7ermrMdTOuRVwSgMsmSOb7x/ISfdwtaKl4A+be785rB9URR8ZnQuz/3fVS64c52BQKvPzVp 8anVutaGpq4Z35waO/J7fMBUPrCiOJP0KxsdGvLFTWlkgwVEyXrHvgygnkQf5KpzH6efdLaCB2SmI sZy/pLYjSRfp0PL20y9esUr7uVEL05CvVuaXCPpfYDvWLa2YYlmVvTDpNNUcDXf3P5/0Bf6iaxmTe cpy5jtKT6EhfmXB+cIpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mG3E2-003Abx-QR; Tue, 17 Aug 2021 17:50:10 +0000 Received: from bhuna.collabora.co.uk ([46.235.227.227]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mG3Du-003AZg-Db; Tue, 17 Aug 2021 17:50:08 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id AFD541F42897 Message-ID: <0fd8f0cfd231be2e11da218b0401e1b0e0a15cca.camel@collabora.com> Subject: Re: [PATCH v3 05/10] media: uapi: Add VP9 stateless decoder controls From: Nicolas Dufresne To: Andrzej Pietrasiewicz , linux-media@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-staging@lists.linux.dev Cc: Benjamin Gaignard , Boris Brezillon , Ezequiel Garcia , Fabio Estevam , Greg Kroah-Hartman , Hans Verkuil , Heiko Stuebner , Jernej Skrabec , Mauro Carvalho Chehab , NXP Linux Team , Pengutronix Kernel Team , Philipp Zabel , Sascha Hauer , Shawn Guo , kernel@collabora.com, Ezequiel Garcia , Adrian Ratiu , Daniel Almeida Date: Tue, 17 Aug 2021 13:49:48 -0400 In-Reply-To: <20210805144246.11998-6-andrzej.p@collabora.com> References: <20210805144246.11998-1-andrzej.p@collabora.com> <20210805144246.11998-6-andrzej.p@collabora.com> User-Agent: Evolution 3.40.3 (3.40.3-1.fc34) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210817_105002_905934_9AB0BBAF X-CRM114-Status: GOOD ( 34.49 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org TGUgamV1ZGkgMDUgYW/Du3QgMjAyMSDDoCAxNjo0MiArMDIwMCwgQW5kcnplaiBQaWV0cmFzaWV3 aWN6IGEgw6ljcml0wqA6Cj4gQWRkIHRoZSBWUDkgc3RhdGVsZXNzIGRlY29kZXIgY29udHJvbHMg cGx1cyB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGdvZXMKPiB3aXRoIGl0Lgo+IAo+IFNpZ25lZC1v ZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Cj4g Q28tZGV2ZWxvcGVkLWJ5OiBFemVxdWllbCBHYXJjaWEgPGV6ZXF1aWVsQGNvbGxhYm9yYS5jb20+ Cj4gU2lnbmVkLW9mZi1ieTogRXplcXVpZWwgR2FyY2lhIDxlemVxdWllbEBjb2xsYWJvcmEuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBSYXRpdSA8YWRyaWFuLnJhdGl1QGNvbGxhYm9yYS5j b20+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcnplaiBQaWV0cmFzaWV3aWN6IDxhbmRyemVqLnBAY29s bGFib3JhLmNvbT4KPiBDby1kZXZlbG9wZWQtYnk6IERhbmllbCBBbG1laWRhIDxkYW5pZWwuYWxt ZWlkYUBjb2xsYWJvcmEuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBBbG1laWRhIDxkYW5p ZWwuYWxtZWlkYUBjb2xsYWJvcmEuY29tPgo+IC0tLQo+ICAuLi4vdXNlcnNwYWNlLWFwaS9tZWRp YS92NGwvYmlibGlvLnJzdCAgICAgICAgfCAgMTAgKwo+ICAuLi4vbWVkaWEvdjRsL2V4dC1jdHJs cy1jb2RlYy1zdGF0ZWxlc3MucnN0ICAgfCA1NDUgKysrKysrKysrKysrKysrKysrCj4gIC4uLi9t ZWRpYS92NGwvcGl4Zm10LWNvbXByZXNzZWQucnN0ICAgICAgICAgICB8ICAxNSArCj4gIC4uLi9t ZWRpYS92NGwvdmlkaW9jLWctZXh0LWN0cmxzLnJzdCAgICAgICAgICB8ICAgOCArCj4gIC4uLi9t ZWRpYS92NGwvdmlkaW9jLXF1ZXJ5Y3RybC5yc3QgICAgICAgICAgICB8ICAxMiArCj4gIC4uLi9t ZWRpYS92aWRlb2RldjIuaC5yc3QuZXhjZXB0aW9ucyAgICAgICAgICB8ICAgMiArCj4gIGRyaXZl cnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jICAgICB8IDE3NCArKysrKysKPiAg ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy1kZWZzLmMgICAgIHwgICA4ICsKPiAg ZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1pb2N0bC5jICAgICAgICAgIHwgICAxICsKPiAg aW5jbHVkZS9tZWRpYS92NGwyLWN0cmxzLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICsKPiAg aW5jbHVkZS91YXBpL2xpbnV4L3Y0bDItY29udHJvbHMuaCAgICAgICAgICAgIHwgNDMzICsrKysr KysrKysrKysrCj4gIGluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCAgICAgICAgICAgICAg ICB8ICAgNiArCj4gIDEyIGZpbGVzIGNoYW5nZWQsIDEyMTggaW5zZXJ0aW9ucygrKQo+IAo+IGRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2JpYmxpby5y c3QgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2JpYmxpby5yc3QKPiBp bmRleCA3YjhlNjczOGZmOWUuLjljZDE4YzE1M2QxOSAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2JpYmxpby5yc3QKPiArKysgYi9Eb2N1bWVudGF0 aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2JpYmxpby5yc3QKPiBAQCAtNDE3LDMgKzQxNywx MyBAQCBWUDgKPiAgOnRpdGxlOiAgICAgUkZDIDYzODY6ICJWUDggRGF0YSBGb3JtYXQgYW5kIERl Y29kaW5nIEd1aWRlIgo+ICAKPiAgOmF1dGhvcjogICAgSi4gQmFua29za2kgZXQgYWwuCj4gKwo+ ICsuLiBfdnA5Ogo+ICsKPiArVlA5Cj4gKz09PQo+ICsKPiArCj4gKzp0aXRsZTogICAgIFZQOSBC aXRzdHJlYW0gJiBEZWNvZGluZyBQcm9jZXNzIFNwZWNpZmljYXRpb24KPiArCj4gKzphdXRob3I6 ICAgIEFkcmlhbiBHcmFuZ2UgKEdvb2dsZSksIFBldGVyIGRlIFJpdmF6IChBcmdvbiBEZXNpZ24p LCBKb25hdGhhbiBIdW50IChBcmdvbiBEZXNpZ24pCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0LWN0cmxzLWNvZGVjLXN0YXRlbGVzcy5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy1z dGF0ZWxlc3MucnN0Cj4gaW5kZXggNzJmNWU4NWI0ZjM0Li5hZjA2ZDQ2ZTU5OTMgMTAwNjQ0Cj4g LS0tIGEvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9leHQtY3RybHMtY29k ZWMtc3RhdGVsZXNzLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRp YS92NGwvZXh0LWN0cmxzLWNvZGVjLXN0YXRlbGVzcy5yc3QKPiBAQCAtMTQ1OCwzICsxNDU4LDU0 OCBAQCBGV0hUIEZsYWdzCj4gIC4uIHJhdzo6IGxhdGV4Cj4gIAo+ICAgICAgXG5vcm1hbHNpemUK PiArCj4gKy4uIF92NGwyLWNvZGVjLXN0YXRlbGVzcy12cDk6Cj4gKwo+ICtgYFY0TDJfQ0lEX1NU QVRFTEVTU19WUDlfQ09NUFJFU1NFRF9IRFJfUFJPQlMgKHN0cnVjdClgYAo+ICsgICAgU3RvcmVz IFZQOSBwcm9iYWJpbGl0aWVzIHVwZGF0ZXMgYXMgcGFyc2VkIGZyb20gdGhlIGN1cnJlbnQgY29t cHJlc3NlZCBmcmFtZQo+ICsgICAgaGVhZGVyLiBBIHZhbHVlIG9mIHplcm8gaW4gYW4gYXJyYXkg ZWxlbWVudCBtZWFucyBubyB1cGRhdGUgb2YgdGhlIHJlbGV2YW50Cj4gKyAgICBwcm9iYWJpbGl0 eS4gTW90aW9uIHZlY3Rvci1yZWxhdGVkIHVwZGF0ZXMgY29udGFpbiBhIG5ldyB2YWx1ZSBvciB6 ZXJvLiBBbGwKPiArICAgIG90aGVyIHVwZGF0ZXMgY29udGFpbiB2YWx1ZXMgdHJhbnNsYXRlZCB3 aXRoIGludl9tYXBfdGFibGVbXSAoc2VlIDYuMy41IGluCj4gKyAgICA6cmVmOmB2cDlgKS4KCkFz IHdlIGRpc2N1c3MsIHdpZGV3aW5lIGFuZCBvdGhlciBjcnlwdG8gbWF5IGVuY3J5cHQgdGhlIGNv bXByZXNzZWQgaGVhZGVycywgc28KcGFzc2luZyB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBhbHdh eXMgcG9zc2libGUgZnJvbSB1c2Vyc3BhY2UuIE5ld2VyIFZQOQpkZWNvZGVycyAobm90YWJseSBu ZXdlciBSb2NrY2hpcCBkZWNvZGVyKSBhcmUgYmVpbmcgYmVpbmcgZXh0ZW5kZWQgd2l0aCBmdWxs IEhXCnN1cHBvcnQgZm9yIGNvbXByZXNzZWQgaGVhZGVyIGhhbmRsaW5nIGluY2x1ZGluZyBwcm9i YWJpbGl0eSB1cGRhdGVzLiBSZWdhcmRsZXNzCmlmIHdlIGxpa2UgZHJtIG9yIG5vdCwgd2Ugc2hv dWxkIGF0IGxlYXN0IG1ha2Ugc3VyZSB0aGUgc3BlYyBhbGxvdyB0byBvcHRpbWl6ZQphbmQgc2tp cCB0aGlzIGNvbnRyb2wuCgpEb2N1bWVudGluZyB0aGlzIHdpbGwgcmVhc3N1cmUgZHJpdmVyIHdy aXRlcnMgdGhhdCBkb24ndCBuZWVkIGl0IGFuZCB3aWxsIGxldAp1c2Vyc3BhY2UgZGV2cyBrbm93 IHRoYXQgdGhleSBzaG91bGQgY2hlY2sgdGhlIGNvbnRyb2wgcHJlc2VuY2UgYW5kIGNhbiB0aGVu CnNraXAgdGhlIGFzc29jaWF0ZSBlbnRyb3B5IGRlY29kaW5nIGlmIG5vdCBuZWVkZWQuCgo+ICsK PiArLi4gYzp0eXBlOjogdjRsMl9jdHJsX3ZwOV9jb21wcmVzc2VkX2hkcl9wcm9icwo+ICsKPiAr Li4gY3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjogfHB7NS44 Y219fHB7NC44Y219fHB7Ni42Y219fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IHN0cnVjdCB2NGwy X2N0cmxfdnA5X2NvbXByZXNzZWRfaGRyX3Byb2JzCj4gKyAgICA6aGVhZGVyLXJvd3M6ICAwCj4g KyAgICA6c3R1Yi1jb2x1bW5zOiAwCj4gKyAgICA6d2lkdGhzOiAgICAgICAxIDEgMgo+ICsKPiAr ICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGB0eDhbMl1bMV1gYAo+ICsgICAgICAtIFRYIDh4OCBw cm9iYWJpbGl0aWVzIGRlbHRhLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHR4MTZbMl1b Ml1gYAo+ICsgICAgICAtIFRYIDE2eDE2IHByb2JhYmlsaXRpZXMgZGVsdGEuCj4gKyAgICAqIC0g X191OAo+ICsgICAgICAtIGBgdHgzMlsyXVszXWBgCj4gKyAgICAgIC0gVFggMzJ4MzIgcHJvYmFi aWxpdGllcyBkZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBjb2VmWzRdWzJdWzJd WzZdWzZdWzNdYGAKPiArICAgICAgLSBDb2VmZmljaWVudCBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHNraXBbM11gYAo+ICsgICAgICAtIFNraXAgcHJv YmFiaWxpdGllcyBkZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBpbnRlcl9tb2Rl WzddWzNdYGAKPiArICAgICAgLSBJbnRlciBwcmVkaWN0aW9uIG1vZGUgcHJvYmFiaWxpdGllcyBk ZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBpbnRlcnBfZmlsdGVyWzRdWzJdYGAK PiArICAgICAgLSBJbnRlcnBvbGF0aW9uIGZpbHRlciBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ICsg ICAgKiAtIF9fdTgKPiArICAgICAgLSBgYGlzX2ludGVyWzRdYGAKPiArICAgICAgLSBJcyBpbnRl ci1ibG9jayBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBg YGNvbXBfbW9kZVs1XWBgCj4gKyAgICAgIC0gQ29tcG91bmQgcHJlZGljdGlvbiBtb2RlIHByb2Jh YmlsaXRpZXMgZGVsdGEuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgc2luZ2xlX3JlZls1 XVsyXWBgCj4gKyAgICAgIC0gU2luZ2xlIHJlZmVyZW5jZSBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYGNvbXBfcmVmWzVdYGAKPiArICAgICAgLSBDb21w b3VuZCByZWZlcmVuY2UgcHJvYmFiaWxpdGllcyBkZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAg ICAgIC0gYGB5X21vZGVbNF1bOV1gYAo+ICsgICAgICAtIFkgcHJlZGljdGlvbiBtb2RlIHByb2Jh YmlsaXRpZXMgZGVsdGEuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgdXZfbW9kZVsxMF1b OV1gYAo+ICsgICAgICAtIFVWIHByZWRpY3Rpb24gbW9kZSBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHBhcnRpdGlvblsxNl1bM11gYAo+ICsgICAgICAt IFBhcnRpdGlvbiBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAg LSBgYG12LmpvaW50WzNdYGAKPiArICAgICAgLSBNb3Rpb24gdmVjdG9yIGpvaW50IHByb2JhYmls aXRpZXMgZGVsdGEuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgbXYuc2lnblsyXWBgCj4g KyAgICAgIC0gTW90aW9uIHZlY3RvciBzaWduIHByb2JhYmlsaXRpZXMgZGVsdGEuCj4gKyAgICAq IC0gX191OAo+ICsgICAgICAtIGBgbXYuY2xhc3Nlc1syXVsxMF1gYAo+ICsgICAgICAtIE1vdGlv biB2ZWN0b3IgY2xhc3MgcHJvYmFiaWxpdGllcyBkZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAg ICAgIC0gYGBtdi5jbGFzczBfYml0WzJdYGAKPiArICAgICAgLSBNb3Rpb24gdmVjdG9yIGNsYXNz MCBiaXQgcHJvYmFiaWxpdGllcyBkZWx0YS4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBt di5iaXRzWzJdWzEwXWBgCj4gKyAgICAgIC0gTW90aW9uIHZlY3RvciBiaXRzIHByb2JhYmlsaXRp ZXMgZGVsdGEuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgbXYuY2xhc3MwX2ZyWzJdWzJd WzNdYGAKPiArICAgICAgLSBNb3Rpb24gdmVjdG9yIGNsYXNzMCBmcmFjdGlvbmFsIGJpdCBwcm9i YWJpbGl0aWVzIGRlbHRhLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYG12LmZyWzJdWzNd YGAKPiArICAgICAgLSBNb3Rpb24gdmVjdG9yIGZyYWN0aW9uYWwgYml0IHByb2JhYmlsaXRpZXMg ZGVsdGEuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgbXYuY2xhc3MwX2hwWzJdYGAKPiAr ICAgICAgLSBNb3Rpb24gdmVjdG9yIGNsYXNzMCBoaWdoIHByZWNpc2lvbiBmcmFjdGlvbmFsIGJp dCBwcm9iYWJpbGl0aWVzIGRlbHRhLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYG12Lmhw WzJdYGAKPiArICAgICAgLSBNb3Rpb24gdmVjdG9yIGhpZ2ggcHJlY2lzaW9uIGZyYWN0aW9uYWwg Yml0IHByb2JhYmlsaXRpZXMgZGVsdGEuCj4gKwo+ICtgYFY0TDJfQ0lEX1NUQVRFTEVTU19WUDlf RlJBTUUgKHN0cnVjdClgYAo+ICsgICAgU3BlY2lmaWVzIHRoZSBmcmFtZSBwYXJhbWV0ZXJzIGZv ciB0aGUgYXNzb2NpYXRlZCBWUDkgZnJhbWUgZGVjb2RlIHJlcXVlc3QuCj4gKyAgICBUaGlzIGlu Y2x1ZGVzIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycyBmb3IgY29uZmlndXJpbmcgYSBzdGF0ZWxl c3MgaGFyZHdhcmUKPiArICAgIGRlY29kaW5nIHBpcGVsaW5lIGZvciBWUDkuIFRoZSBiaXRzdHJl YW0gcGFyYW1ldGVycyBhcmUgZGVmaW5lZCBhY2NvcmRpbmcKPiArICAgIHRvIDpyZWY6YHZwOWAu Cj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX2N0cmxfdnA5X2ZyYW1lCj4gKwo+ICsuLiBjc3NjbGFz czo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNj bX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogc3RydWN0IHY0bDJfY3RybF92cDlf ZnJhbWUKPiArICAgIDpoZWFkZXItcm93czogIDAKPiArICAgIDpzdHViLWNvbHVtbnM6IDAKPiAr ICAgIDp3aWR0aHM6ICAgICAgIDEgMSAyCj4gKwo+ICsgICAgKiAtIHN0cnVjdCA6Yzp0eXBlOmB2 NGwyX3ZwOV9sb29wX2ZpbHRlcmAKPiArICAgICAgLSBgYGxmYGAKPiArICAgICAgLSBMb29wIGZp bHRlciBwYXJhbWV0ZXJzLiBTZWUgc3RydWN0IDpjOnR5cGU6YHY0bDJfdnA5X2xvb3BfZmlsdGVy YCBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgICAgKiAtIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX3ZwOV9x dWFudGl6YXRpb25gCj4gKyAgICAgIC0gYGBxdWFudGBgCj4gKyAgICAgIC0gUXVhbnRpemF0aW9u IHBhcmFtZXRlcnMuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9xdWFudGl6YXRpb25gIGZvciBtb3Jl IGRldGFpbHMuCj4gKyAgICAqIC0gc3RydWN0IDpjOnR5cGU6YHY0bDJfdnA5X3NlZ21lbnRhdGlv bmAKPiArICAgICAgLSBgYHNlZ2BgCj4gKyAgICAgIC0gU2VnbWVudGF0aW9uIHBhcmFtZXRlcnMu IFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9zZWdtZW50YXRpb25gIGZvciBtb3JlIGRldGFpbHMuCj4g KyAgICAqIC0gX191MzIKPiArICAgICAgLSBgYGZsYWdzYGAKPiArICAgICAgLSBDb21iaW5hdGlv biBvZiBWNEwyX1ZQOV9GUkFNRV9GTEFHXyogZmxhZ3MuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9m cmFtZV9mbGFnc2AuCj4gKyAgICAqIC0gX191MTYKPiArICAgICAgLSBgYGNvbXByZXNzZWRfaGVh ZGVyX3NpemVgYAo+ICsgICAgICAtIENvbXByZXNzZWQgaGVhZGVyIHNpemUgaW4gYnl0ZXMuCj4g KyAgICAqIC0gX191MTYKPiArICAgICAgLSBgYHVuY29tcHJlc3NlZF9oZWFkZXJfc2l6ZWBgCj4g KyAgICAgIC0gVW5jb21wcmVzc2VkIGhlYWRlciBzaXplIGluIGJ5dGVzLgo+ICsgICAgKiAtIF9f dTE2Cj4gKyAgICAgIC0gYGBmcmFtZV93aWR0aF9taW51c18xYGAKPiArICAgICAgLSBBZGQgMSB0 byBnZXQgdGhlIGZyYW1lIHdpZHRoIGV4cHJlc3NlZCBpbiBwaXhlbHMuIFNlZSBzZWN0aW9uIDcu Mi4zIGluIDpyZWY6YHZwOWAuCj4gKyAgICAqIC0gX191MTYKPiArICAgICAgLSBgYGZyYW1lX2hl aWdodF9taW51c18xYGAKPiArICAgICAgLSBBZGQgMSB0byBnZXQgdGhlIGZyYW1lIGhlaWdodCBl eHByZXNzZWQgaW4gcGl4ZWxzLiBTZWUgc2VjdGlvbiA3LjIuMyBpbiA6cmVmOmB2cDlgLgo+ICsg ICAgKiAtIF9fdTE2Cj4gKyAgICAgIC0gYGByZW5kZXJfd2lkdGhfbWludXNfMWBgCj4gKyAgICAg IC0gQWRkIDEgdG8gZ2V0IHRoZSBleHBlY3RlZCByZW5kZXIgd2lkdGggZXhwcmVzc2VkIGluIHBp eGVscy4gVGhpcyBpcwo+ICsgICAgICAgIG5vdCB1c2VkIGR1cmluZyB0aGUgZGVjb2RpbmcgcHJv Y2VzcyBidXQgbWlnaHQgYmUgdXNlZCBieSBIVyBzY2FsZXJzIHRvCj4gKyAgICAgICAgcHJlcGFy ZSBhIGZyYW1lIHRoYXQncyByZWFkeSBmb3Igc2Nhbm91dC4gU2VlIHNlY3Rpb24gNy4yLjQgaW4g OnJlZjpgdnA5YC4KPiArICAgICogLSBfX3UxNgo+ICsgICAgICAtIHJlbmRlcl9oZWlnaHRfbWlu dXNfMQo+ICsgICAgICAtIEFkZCAxIHRvIGdldCB0aGUgZXhwZWN0ZWQgcmVuZGVyIGhlaWdodCBl eHByZXNzZWQgaW4gcGl4ZWxzLiBUaGlzIGlzCj4gKyAgICAgICAgbm90IHVzZWQgZHVyaW5nIHRo ZSBkZWNvZGluZyBwcm9jZXNzIGJ1dCBtaWdodCBiZSB1c2VkIGJ5IEhXIHNjYWxlcnMgdG8KPiAr ICAgICAgICBwcmVwYXJlIGEgZnJhbWUgdGhhdCdzIHJlYWR5IGZvciBzY2Fub3V0LiBTZWUgc2Vj dGlvbiA3LjIuNCBpbiA6cmVmOmB2cDlgLgo+ICsgICAgKiAtIF9fdTY0Cj4gKyAgICAgIC0gYGBs YXN0X2ZyYW1lX3RzYGAKPiArICAgICAgLSAibGFzdCIgcmVmZXJlbmNlIGJ1ZmZlciB0aW1lc3Rh bXAuCj4gKwlUaGUgdGltZXN0YW1wIHJlZmVycyB0byB0aGUgYGB0aW1lc3RhbXBgYCBmaWVsZCBp bgo+ICsgICAgICAgIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX2J1ZmZlcmAuIFVzZSB0aGUgOmM6ZnVu YzpgdjRsMl90aW1ldmFsX3RvX25zKClgCj4gKyAgICAgICAgZnVuY3Rpb24gdG8gY29udmVydCB0 aGUgc3RydWN0IDpjOnR5cGU6YHRpbWV2YWxgIGluIHN0cnVjdAo+ICsgICAgICAgIDpjOnR5cGU6 YHY0bDJfYnVmZmVyYCB0byBhIF9fdTY0Lgo+ICsgICAgKiAtIF9fdTY0Cj4gKyAgICAgIC0gYGBn b2xkZW5fZnJhbWVfdHNgYAo+ICsgICAgICAtICJnb2xkZW4iIHJlZmVyZW5jZSBidWZmZXIgdGlt ZXN0YW1wLgo+ICsJVGhlIHRpbWVzdGFtcCByZWZlcnMgdG8gdGhlIGBgdGltZXN0YW1wYGAgZmll bGQgaW4KPiArICAgICAgICBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9idWZmZXJgLiBVc2UgdGhlIDpj OmZ1bmM6YHY0bDJfdGltZXZhbF90b19ucygpYAo+ICsgICAgICAgIGZ1bmN0aW9uIHRvIGNvbnZl cnQgdGhlIHN0cnVjdCA6Yzp0eXBlOmB0aW1ldmFsYCBpbiBzdHJ1Y3QKPiArICAgICAgICA6Yzp0 eXBlOmB2NGwyX2J1ZmZlcmAgdG8gYSBfX3U2NC4KPiArICAgICogLSBfX3U2NAo+ICsgICAgICAt IGBgYWx0X2ZyYW1lX3RzYGAKPiArICAgICAgLSAiYWx0IiByZWZlcmVuY2UgYnVmZmVyIHRpbWVz dGFtcC4KPiArCVRoZSB0aW1lc3RhbXAgcmVmZXJzIHRvIHRoZSBgYHRpbWVzdGFtcGBgIGZpZWxk IGluCj4gKyAgICAgICAgc3RydWN0IDpjOnR5cGU6YHY0bDJfYnVmZmVyYC4gVXNlIHRoZSA6Yzpm dW5jOmB2NGwyX3RpbWV2YWxfdG9fbnMoKWAKPiArICAgICAgICBmdW5jdGlvbiB0byBjb252ZXJ0 IHRoZSBzdHJ1Y3QgOmM6dHlwZTpgdGltZXZhbGAgaW4gc3RydWN0Cj4gKyAgICAgICAgOmM6dHlw ZTpgdjRsMl9idWZmZXJgIHRvIGEgX191NjQuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBg cmVmX2ZyYW1lX3NpZ25fYmlhc2BgCj4gKyAgICAgIC0gYSBiaXRmaWVsZCBzcGVjaWZ5aW5nIHdo ZXRoZXIgdGhlIHNpZ24gYmlhcyBpcyBzZXQgZm9yIGEgZ2l2ZW4KPiArICAgICAgICByZWZlcmVu Y2UgZnJhbWUuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV9yZWZfZnJhbWVfc2lnbl9iaWFzYCBmb3Ig bW9yZSBkZXRhaWxzLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHJlc2V0X2ZyYW1lX2Nv bnRleHRgYAo+ICsgICAgICAtIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBmcmFtZSBjb250ZXh0IHNo b3VsZCBiZSByZXNldCB0byBkZWZhdWx0IHZhbHVlcy4gU2VlCj4gKyAgICAgICAgOmM6dHlwZTpg djRsMl92cDlfcmVzZXRfZnJhbWVfY29udGV4dGAgZm9yIG1vcmUgZGV0YWlscy4KPiArICAgICog LSBfX3U4Cj4gKyAgICAgIC0gYGBmcmFtZV9jb250ZXh0X2lkeGBgCj4gKyAgICAgIC0gRnJhbWUg Y29udGV4dCB0aGF0IHNob3VsZCBiZSB1c2VkL3VwZGF0ZWQuCj4gKyAgICAqIC0gX191OAo+ICsg ICAgICAtIGBgcHJvZmlsZWBgCj4gKyAgICAgIC0gVlA5IHByb2ZpbGUuIENhbiBiZSAwLCAxLCAy IG9yIDMuCj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgYml0X2RlcHRoYGAKPiArICAgICAg LSBDb21wb25lbnQgZGVwdGggaW4gYml0cy4gQ2FuIGJlIDgsIDEwIG9yIDEyLiBOb3RlIHRoYXQg bm90IGFsbCBwcm9maWxlcwo+ICsgICAgICAgIHN1cHBvcnQgMTAgYW5kL29yIDEyIGJpdHMgZGVw dGhzLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYGludGVycG9sYXRpb25fZmlsdGVyYGAK PiArICAgICAgLSBTcGVjaWZpZXMgdGhlIGZpbHRlciBzZWxlY3Rpb24gdXNlZCBmb3IgcGVyZm9y bWluZyBpbnRlciBwcmVkaWN0aW9uLiBTZWUKPiArICAgICAgICA6Yzp0eXBlOmB2NGwyX3ZwOV9p bnRlcnBvbGF0aW9uX2ZpbHRlcmAgZm9yIG1vcmUgZGV0YWlscy4KPiArICAgICogLSBfX3U4Cj4g KyAgICAgIC0gYGB0aWxlX2NvbHNfbG9nMmBgCj4gKyAgICAgIC0gU3BlY2lmaWVzIHRoZSBiYXNl IDIgbG9nYXJpdGhtIG9mIHRoZSB3aWR0aCBvZiBlYWNoIHRpbGUgKHdoZXJlIHRoZQo+ICsgICAg ICAgIHdpZHRoIGlzIG1lYXN1cmVkIGluIHVuaXRzIG9mIDh4OCBibG9ja3MpLiBTaGFsbCBiZSBs ZXNzIHRoYW4gb3IgZXF1YWwKPiArICAgICAgICB0byA2Lgo+ICsgICAgKiAtIF9fdTgKPiArICAg ICAgLSBgYHRpbGVfcm93c19sb2cyYGAKPiArICAgICAgLSBTcGVjaWZpZXMgdGhlIGJhc2UgMiBs b2dhcml0aG0gb2YgdGhlIGhlaWdodCBvZiBlYWNoIHRpbGUgKHdoZXJlIHRoZQo+ICsgICAgICAg IGhlaWdodCBpcyBtZWFzdXJlZCBpbiB1bml0cyBvZiA4eDggYmxvY2tzKS4KPiArICAgICogLSBf X3U4Cj4gKyAgICAgIC0gYGB0eF9tb2RlYGAKPiArICAgICAgLSBTcGVjaWZpZXMgdGhlIFRYIG1v ZGUuIFNlZSA6Yzp0eXBlOmB2NGwyX3ZwOV90eF9tb2RlYCBmb3IgbW9yZSBkZXRhaWxzLgo+ICsg ICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHJlZmVyZW5jZV9tb2RlYGAKPiArICAgICAgLSBTcGVj aWZpZXMgdGhlIHR5cGUgb2YgaW50ZXIgcHJlZGljdGlvbiB0byBiZSB1c2VkLiBTZWUKPiArICAg ICAgICA6Yzp0eXBlOmB2NGwyX3ZwOV9yZWZlcmVuY2VfbW9kZWAgZm9yIG1vcmUgZGV0YWlscy4K PiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGByZXNlcnZlZFs2XWBgCj4gKyAgICAgIC0gQXBw bGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3Qgc2V0IHRoaXMgdG8gemVyby4KPiArCj4gKy4uIGM6 dHlwZTo6IHY0bDJfdnA5X2ZyYW1lX2ZsYWdzCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJs ZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18 Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9mcmFtZV9mbGFncwo+ICsgICAg OmhlYWRlci1yb3dzOiAgMAo+ICsgICAgOnN0dWItY29sdW1uczogMAo+ICsgICAgOndpZHRoczog ICAgICAgMSAyCj4gKwo+ICsgICAgKiAtIGBgVjRMMl9WUDlfRlJBTUVfRkxBR19LRVlfRlJBTUVg YAo+ICsgICAgICAtIFRoZSBmcmFtZSBpcyBhIGtleSBmcmFtZS4KPiArICAgICogLSBgYFY0TDJf VlA5X0ZSQU1FX0ZMQUdfU0hPV19GUkFNRWBgCj4gKyAgICAgIC0gVGhlIGZyYW1lIHNob3VsZCBi ZSBkaXNwbGF5ZWQuCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9GUkFNRV9GTEFHX0VSUk9SX1JFU0lM SUVOVGBgCj4gKyAgICAgIC0gVGhlIGRlY29kaW5nIHNob3VsZCBiZSBlcnJvciByZXNpbGllbnQu Cj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9GUkFNRV9GTEFHX0lOVFJBX09OTFlgYAo+ICsgICAgICAt IFRoZSBmcmFtZSBkb2VzIG5vdCByZWZlcmVuY2Ugb3RoZXIgZnJhbWVzLgo+ICsgICAgKiAtIGBg VjRMMl9WUDlfRlJBTUVfRkxBR19BTExPV19ISUdIX1BSRUNfTVZgYAo+ICsgICAgICAtIFRoZSBm cmFtZSBjYW4gdXNlIGhpZ2ggcHJlY2lzaW9uIG1vdGlvbiB2ZWN0b3JzLgo+ICsgICAgKiAtIGBg VjRMMl9WUDlfRlJBTUVfRkxBR19SRUZSRVNIX0ZSQU1FX0NUWGBgCj4gKyAgICAgIC0gRnJhbWUg Y29udGV4dCBzaG91bGQgYmUgdXBkYXRlZCBhZnRlciBkZWNvZGluZy4KPiArICAgICogLSBgYFY0 TDJfVlA5X0ZSQU1FX0ZMQUdfUEFSQUxMRUxfREVDX01PREVgYAo+ICsgICAgICAtIFBhcmFsbGVs IGRlY29kaW5nIGlzIHVzZWQuCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VC U0FNUExJTkdgYAo+ICsgICAgICAtIFZlcnRpY2FsIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQuCj4g KyAgICAqIC0gYGBWNEwyX1ZQOV9GUkFNRV9GTEFHX1lfU1VCU0FNUExJTkdgYAo+ICsgICAgICAt IEhvcml6b250YWwgc3Vic2FtcGxpbmcgaXMgZW5hYmxlZC4KPiArICAgICogLSBgYFY0TDJfVlA5 X0ZSQU1FX0ZMQUdfQ09MT1JfUkFOR0VfRlVMTF9TV0lOR2BgCj4gKyAgICAgIC0gVGhlIGZ1bGwg VVYgcmFuZ2UgaXMgdXNlZC4KPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X3R4X21vZGUKPiAr Cj4gK1NlZSBzZWN0aW9uICc3LjMuMSBUeCBtb2RlIHNlbWFudGljcycgb2YgdGhlIFZQOSBzcGVj aWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJs ZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18 Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV90eF9tb2RlCj4gKyAgICA6aGVh ZGVyLXJvd3M6ICAwCj4gKyAgICA6c3R1Yi1jb2x1bW5zOiAwCj4gKyAgICA6d2lkdGhzOiAgICAg ICAxIDIKPiArCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9UWF9NT0RFX09OTFlfNFg0YGAKPiArICAg ICAgLSBUcmFuc2Zvcm0gc2l6ZSBpcyA0eDQuCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9UWF9NT0RF X0FMTE9XXzhYOGBgCj4gKyAgICAgIC0gVHJhbnNmb3JtIHNpemUgY2FuIGJlIHVwIHRvIDh4OC4K PiArICAgICogLSBgYFY0TDJfVlA5X1RYX01PREVfQUxMT1dfMTZYMTZgYAo+ICsgICAgICAtIFRy YW5zZm9ybSBzaXplIGNhbiBiZSB1cCB0byAxNngxNi4KPiArICAgICogLSBgYFY0TDJfVlA5X1RY X01PREVfQUxMT1dfMzJYMzJgYAo+ICsgICAgICAtIHRyYW5zZm9ybSBzaXplIGNhbiBiZSB1cCB0 byAzMngzMi4KPiArICAgICogLSBgYFY0TDJfVlA5X1RYX01PREVfU0VMRUNUYGAKPiArICAgICAg LSBCaXRzdHJlYW0gY29udGFpbnMgdGhlIHRyYW5zZm9ybSBzaXplIGZvciBlYWNoIGJsb2NrLgo+ ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfcmVmZXJlbmNlX21vZGUKPiArCj4gK1NlZSBzZWN0 aW9uICc3LjMuNiBGcmFtZSByZWZlcmVuY2UgbW9kZSBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3Bl Y2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsKPiArLi4gY3NzY2xhc3M6OiBsb25ndGFi bGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MS41Y219fHB7Ni4zY219fHB7OS40Y219 fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IGVudW0gdjRsMl92cDlfcmVmZXJlbmNlX21vZGUKPiAr ICAgIDpoZWFkZXItcm93czogIDAKPiArICAgIDpzdHViLWNvbHVtbnM6IDAKPiArICAgIDp3aWR0 aHM6ICAgICAgIDEgMgo+ICsKPiArICAgICogLSBgYFY0TDJfVlA5X1JFRkVSRU5DRV9NT0RFX1NJ TkdMRV9SRUZFUkVOQ0VgYAo+ICsgICAgICAtIEluZGljYXRlcyB0aGF0IGFsbCB0aGUgaW50ZXIg YmxvY2tzIHVzZSBvbmx5IGEgc2luZ2xlIHJlZmVyZW5jZSBmcmFtZQo+ICsgICAgICAgIHRvIGdl bmVyYXRlIG1vdGlvbiBjb21wZW5zYXRlZCBwcmVkaWN0aW9uLgo+ICsgICAgKiAtIGBgVjRMMl9W UDlfUkVGRVJFTkNFX01PREVfQ09NUE9VTkRfUkVGRVJFTkNFYGAKPiArICAgICAgLSBSZXF1aXJl cyBhbGwgdGhlIGludGVyIGJsb2NrcyB0byB1c2UgY29tcG91bmQgbW9kZS4gU2luZ2xlIHJlZmVy ZW5jZQo+ICsgICAgICAgIGZyYW1lIHByZWRpY3Rpb24gaXMgbm90IGFsbG93ZWQuCj4gKyAgICAq IC0gYGBWNEwyX1ZQOV9SRUZFUkVOQ0VfTU9ERV9TRUxFQ1RgYAo+ICsgICAgICAtIEFsbG93cyBl YWNoIGluZGl2aWR1YWwgaW50ZXIgYmxvY2sgdG8gc2VsZWN0IGJldHdlZW4gc2luZ2xlIGFuZAo+ ICsgICAgICAgIGNvbXBvdW5kIHByZWRpY3Rpb24gbW9kZXMuCj4gKwo+ICsuLiBjOnR5cGU6OiB2 NGwyX3ZwOV9pbnRlcnBvbGF0aW9uX2ZpbHRlcgo+ICsKPiArU2VlIHNlY3Rpb24gJzcuMi43IElu dGVycG9sYXRpb24gZmlsdGVyIHNlbWFudGljcycgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uCj4g K2ZvciBtb3JlIGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiAr Li4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsu LiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9pbnRlcnBvbGF0aW9uX2ZpbHRlcgo+ICsgICAg OmhlYWRlci1yb3dzOiAgMAo+ICsgICAgOnN0dWItY29sdW1uczogMAo+ICsgICAgOndpZHRoczog ICAgICAgMSAyCj4gKwo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl9FSUdIVFRB UGBgCj4gKyAgICAgIC0gRWlnaHQgdGFwIGZpbHRlci4KPiArICAgICogLSBgYFY0TDJfVlA5X0lO VEVSUF9GSUxURVJfRUlHSFRUQVBfU01PT1RIYGAKPiArICAgICAgLSBFaWdodCB0YXAgc21vb3Ro IGZpbHRlci4KPiArICAgICogLSBgYFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfRUlHSFRUQVBfU0hB UlBgYAo+ICsgICAgICAtIEVlaWdodCB0YXAgc2hhcnAgZmlsdGVyLgo+ICsgICAgKiAtIGBgVjRM Ml9WUDlfSU5URVJQX0ZJTFRFUl9CSUxJTkVBUmBgCj4gKyAgICAgIC0gQmlsaW5lYXIgZmlsdGVy Lgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl9TV0lUQ0hBQkxFYGAKPiArICAg ICAgLSBGaWx0ZXIgc2VsZWN0aW9uIGlzIHNpZ25hbGVkIGF0IHRoZSBibG9jayBsZXZlbC4KPiAr Cj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X3Jlc2V0X2ZyYW1lX2NvbnRleHQKPiArCj4gK1NlZSBz ZWN0aW9uICc3LjIgVW5jb21wcmVzc2VkIGhlYWRlciBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3Bl Y2lmaWNhdGlvbgo+ICtmb3IgbW9yZSBkZXRhaWxzLgo+ICsKPiArLi4gY3NzY2xhc3M6OiBsb25n dGFibGUKPiArCj4gKy4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MS41Y219fHB7Ni4zY219fHB7OS40 Y219fAo+ICsKPiArLi4gZmxhdC10YWJsZTo6IGVudW0gdjRsMl92cDlfcmVzZXRfZnJhbWVfY29u dGV4dAo+ICsgICAgOmhlYWRlci1yb3dzOiAgMAo+ICsgICAgOnN0dWItY29sdW1uczogMAo+ICsg ICAgOndpZHRoczogICAgICAgMSAyCj4gKwo+ICsgICAgKiAtIGBgVjRMMl9WUDlfUkVTRVRfRlJB TUVfQ1RYX05PTkVgYAo+ICsgICAgICAtIERvIG5vdCByZXNldCBhbnkgZnJhbWUgY29udGV4dC4K PiArICAgICogLSBgYFY0TDJfVlA5X1JFU0VUX0ZSQU1FX0NUWF9TUEVDYGAKPiArICAgICAgLSBS ZXNldCB0aGUgZnJhbWUgY29udGV4dCBwb2ludGVkIHRvIGJ5Cj4gKyAgICAgICAgOmM6dHlwZTpg djRsMl9jdHJsX3ZwOV9mcmFtZWAuZnJhbWVfY29udGV4dF9pZHguCj4gKyAgICAqIC0gYGBWNEwy X1ZQOV9SRVNFVF9GUkFNRV9DVFhfQUxMYGAKPiArICAgICAgLSBSZXNldCBhbGwgZnJhbWUgY29u dGV4dHMuCj4gKwo+ICsuLiBjOnR5cGU6OiB2NGwyX3ZwOV9pbnRyYV9wcmVkaWN0aW9uX21vZGUK PiArCj4gK1NlZSBzZWN0aW9uICc3LjQuNSBJbnRyYSBmcmFtZSBtb2RlIGluZm8gc2VtYW50aWNz JyBmb3IgbW9yZSBkZXRhaWxzLgo+ICsKPiArLi4gY3NzY2xhc3M6OiBsb25ndGFibGUKPiArCj4g Ky4uIHRhYnVsYXJjb2x1bW5zOjogfHB7MS41Y219fHB7Ni4zY219fHB7OS40Y219fAo+ICsKPiAr Li4gZmxhdC10YWJsZTo6IGVudW0gdjRsMl92cDlfaW50cmFfcHJlZGljdGlvbl9tb2RlCj4gKyAg ICA6aGVhZGVyLXJvd3M6ICAwCj4gKyAgICA6c3R1Yi1jb2x1bW5zOiAwCj4gKyAgICA6d2lkdGhz OiAgICAgICAxIDIKPiArCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfRENf UFJFRGBgCj4gKyAgICAgIC0gREMgaW50cmEgcHJlZGljdGlvbi4KPiArICAgICogLSBgYFY0TDJf VlA5X0lOVFJBX1BSRURfTU9ERV9WX1BSRURgYAo+ICsgICAgICAtIFZlcnRpY2FsIGludHJhIHBy ZWRpY3Rpb24uCj4gKyAgICAqIC0gYGBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfSF9QUkVEYGAK PiArICAgICAgLSBIb3Jpem9udGFsIGludHJhIHByZWRpY3Rpb24uCj4gKyAgICAqIC0gYGBWNEwy X1ZQOV9JTlRSQV9QUkVEX01PREVfRDQ1X1BSRURgYAo+ICsgICAgICAtIEQ0NSBpbnRyYSBwcmVk aWN0aW9uLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QxMzVfUFJFRGBg Cj4gKyAgICAgIC0gRDEzNSBpbnRyYSBwcmVkaWN0aW9uLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlf SU5UUkFfUFJFRF9NT0RFX0QxMTdfUFJFRGBgCj4gKyAgICAgIC0gRDExNyBpbnRyYSBwcmVkaWN0 aW9uLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QxNTNfUFJFRGBgCj4g KyAgICAgIC0gRDE1MyBpbnRyYSBwcmVkaWN0aW9uLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5U UkFfUFJFRF9NT0RFX0QyMDdfUFJFRGBgCj4gKyAgICAgIC0gRDIwNyBpbnRyYSBwcmVkaWN0aW9u Lgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0Q2M19QUkVEYGAKPiArICAg ICAgLSBENjMgaW50cmEgcHJlZGljdGlvbi4KPiArICAgICogLSBgYFY0TDJfVlA5X0lOVFJBX1BS RURfTU9ERV9UTV9QUkVEYGAKPiArICAgICAgLSBUcnVlIG1vdGlvbiBpbnRyYSBwcmVkaWN0aW9u Lgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfc2VnbWVudGF0aW9uCj4gKwo+ICtFbmNvZGVz IHRoZSBxdWFudGl6YXRpb24gcGFyYW1ldGVycy4gU2VlIHNlY3Rpb24gJzcuMi4xMCBTZWdtZW50 YXRpb24KPiArcGFyYW1zIHN5bnRheCcgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvciBtb3Jl IGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxh cmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRh YmxlOjogc3RydWN0IHY0bDJfdnA5X3NlZ21lbnRhdGlvbgo+ICsgICAgOmhlYWRlci1yb3dzOiAg MAo+ICsgICAgOnN0dWItY29sdW1uczogMAo+ICsgICAgOndpZHRoczogICAgICAgMSAxIDIKPiAr Cj4gKyAgICAqIC0gX191OAo+ICsgICAgICAtIGBgZmVhdHVyZV9kYXRhWzhdWzRdYGAKPiArICAg ICAgLSBEYXRhIGF0dGFjaGVkIHRvIGVhY2ggZmVhdHVyZS4gRGF0YSBlbnRyeSBpcyBvbmx5IHZh bGlkIGlmIHRoZSBmZWF0dXJlCj4gKyAgICAgICAgaXMgZW5hYmxlZC4KPiArICAgICogLSBfX3U4 Cj4gKyAgICAgIC0gYGBmZWF0dXJlX2VuYWJsZWRbOF1gYAo+ICsgICAgICAtIEJpdG1hc2sgZGVm aW5pbmcgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgaW4gZWFjaCBzZWdtZW50Lgo+ICsgICAg KiAtIF9fdTgKPiArICAgICAgLSBgYHRyZWVfcHJvYnNbN11gYAo+ICsgICAgICAtIFNwZWNpZmll cyB0aGUgcHJvYmFiaWxpdHkgdmFsdWVzIHRvIGJlIHVzZWQgd2hlbiBkZWNvZGluZyBhIFNlZ21l bnQtSUQuCj4gKyAgICAgICAgU2VlICc1LjE1LiBTZWdtZW50YXRpb24gbWFwJyBzZWN0aW9uIG9m IDpyZWY6YHZwOWAgZm9yIG1vcmUgZGV0YWlscy4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0g YGBwcmVkX3Byb2JzWzNdYGAKPiArICAgICAgLSBTcGVjaWZpZXMgdGhlIHByb2JhYmlsaXR5IHZh bHVlcyB0byBiZSB1c2VkIHdoZW4gZGVjb2RpbmcgYQo+ICsgICAgICAgIFByZWRpY3RlZC1TZWdt ZW50LUlELiBTZWUgJzYuNC4xNC4gR2V0IHNlZ21lbnQgaWQgc3ludGF4Jwo+ICsgICAgICAgIHNl Y3Rpb24gb2YgOnJlZjpgdnA5YCBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgICAgKiAtIF9fdTgKPiAr ICAgICAgLSBgYGZsYWdzYGAKPiArICAgICAgLSBDb21iaW5hdGlvbiBvZiBWNEwyX1ZQOV9TRUdN RU5UQVRJT05fRkxBR18qIGZsYWdzLiBTZWUKPiArICAgICAgICA6Yzp0eXBlOmB2NGwyX3ZwOV9z ZWdtZW50YXRpb25fZmxhZ3NgLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHJlc2VydmVk WzVdYGAKPiArICAgICAgLSBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdCBzZXQgdGhpcyB0 byB6ZXJvLgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfc2VnbWVudF9mZWF0dXJlCj4gKwo+ ICtTZWdtZW50IGZlYXR1cmUgSURzLiBTZWUgc2VjdGlvbiAnNy4yLjEwIFNlZ21lbnRhdGlvbiBw YXJhbXMgc3ludGF4JyBvZiB0aGUKPiArVlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWls cy4KPiArCj4gKy4uIGNzc2NsYXNzOjogbG9uZ3RhYmxlCj4gKwo+ICsuLiB0YWJ1bGFyY29sdW1u czo6IHxwezEuNWNtfXxwezYuM2NtfXxwezkuNGNtfXwKPiArCj4gKy4uIGZsYXQtdGFibGU6OiBl bnVtIHY0bDJfdnA5X3NlZ21lbnRfZmVhdHVyZQo+ICsgICAgOmhlYWRlci1yb3dzOiAgMAo+ICsg ICAgOnN0dWItY29sdW1uczogMAo+ICsgICAgOndpZHRoczogICAgICAgMSAyCj4gKwo+ICsgICAg KiAtIGBgVjRMMl9WUDlfU0VHX0xWTF9BTFRfUWBgCj4gKyAgICAgIC0gUXVhbnRpemVyIHNlZ21l bnQgZmVhdHVyZS4KPiArICAgICogLSBgYFY0TDJfVlA5X1NFR19MVkxfQUxUX0xgYAo+ICsgICAg ICAtIExvb3AgZmlsdGVyIHNlZ21lbnQgZmVhdHVyZS4KPiArICAgICogLSBgYFY0TDJfVlA5X1NF R19MVkxfUkVGX0ZSQU1FYGAKPiArICAgICAgLSBSZWZlcmVuY2UgZnJhbWUgc2VnbWVudCBmZWF0 dXJlLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfU0VHX0xWTF9TS0lQYGAKPiArICAgICAgLSBTa2lw IHNlZ21lbnQgZmVhdHVyZS4KPiArICAgICogLSBgYFY0TDJfVlA5X1NFR19MVkxfTUFYYGAKPiAr ICAgICAgLSBOdW1iZXIgb2Ygc2VnbWVudCBmZWF0dXJlcy4KPiArCj4gKy4uIGM6dHlwZTo6IHY0 bDJfdnA5X3NlZ21lbnRhdGlvbl9mbGFncwo+ICsKPiArVGhvc2UgYXJlIHRoZSBmbGFncyB0aGF0 IG1heSBiZSBwYXNzZWQgdG8gJnY0bDJfdnA5X3NlZ21lbnRhdGlvbi5mbGFncy4gU2VlCj4gK3Nl Y3Rpb24gJzcuMi4xMCBTZWdtZW50YXRpb24gcGFyYW1zIHN5bnRheCcgb2YgdGhlIFZQOSBzcGVj aWZpY2F0aW9uIGZvcgo+ICttb3JlIGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0 YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRj bX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9zZWdtZW50YXRpb25fZmxh Z3MKPiArICAgIDpoZWFkZXItcm93czogIDAKPiArICAgIDpzdHViLWNvbHVtbnM6IDAKPiArICAg IDp3aWR0aHM6ICAgICAgIDEgMgo+ICsKPiArICAgICogLSBgYFY0TDJfVlA5X1NFR01FTlRBVElP Tl9GTEFHX0VOQUJMRURgYAo+ICsgICAgICAtIEluZGljYXRlcyB0aGF0IHRoaXMgZnJhbWUgbWFr ZXMgdXNlIG9mIHRoZSBzZWdtZW50YXRpb24gdG9vbC4KPiArICAgICogLSBgYFY0TDJfVlA5X1NF R01FTlRBVElPTl9GTEFHX1VQREFURV9NQVBgYAo+ICsgICAgICAtIEluZGljYXRlcyB0aGF0IHRo ZSBzZWdtZW50YXRpb24gbWFwIHNob3VsZCBiZSB1cGRhdGVkIGR1cmluZyB0aGUKPiArICAgICAg ICBkZWNvZGluZyBvZiB0aGlzIGZyYW1lLgo+ICsgICAgKiAtIGBgVjRMMl9WUDlfU0VHTUVOVEFU SU9OX0ZMQUdfVEVNUE9SQUxfVVBEQVRFYGAKPiArICAgICAgLSBJbmRpY2F0ZXMgdGhhdCB0aGUg dXBkYXRlcyB0byB0aGUgc2VnbWVudGF0aW9uIG1hcCBhcmUgY29kZWQKPiArICAgICAgICByZWxh dGl2ZSB0byB0aGUgZXhpc3Rpbmcgc2VnbWVudGF0aW9uIG1hcC4KPiArICAgICogLSBgYFY0TDJf VlA5X1NFR01FTlRBVElPTl9GTEFHX1VQREFURV9EQVRBYGAKPiArICAgICAgLSBJbmRpY2F0ZXMg dGhhdCBuZXcgcGFyYW1ldGVycyBhcmUgYWJvdXQgdG8gYmUgc3BlY2lmaWVkIGZvciBlYWNoCj4g KyAgICAgICAgc2VnbWVudC4KPiArICAgICogLSBgYFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFH X0FCU19PUl9ERUxUQV9VUERBVEVgYAo+ICsgICAgICAtIEluZGljYXRlcyB0aGF0IHRoZSBzZWdt ZW50YXRpb24gcGFyYW1ldGVycyByZXByZXNlbnQgdGhlIGFjdHVhbCB2YWx1ZXMKPiArICAgICAg ICB0byBiZSB1c2VkLgo+ICsKPiArLi4gYzp0eXBlOjogdjRsMl92cDlfcXVhbnRpemF0aW9uCj4g Kwo+ICtFbmNvZGVzIHRoZSBxdWFudGl6YXRpb24gcGFyYW1ldGVycy4gU2VlIHNlY3Rpb24gJzcu Mi45IFF1YW50aXphdGlvbiBwYXJhbXMKPiArc3ludGF4JyBvZiB0aGUgVlA5IHNwZWNpZmljYXRp b24gZm9yIG1vcmUgZGV0YWlscy4KPiArCj4gKy4uIGNzc2NsYXNzOjogbG9uZ3RhYmxlCj4gKwo+ ICsuLiB0YWJ1bGFyY29sdW1uczo6IHxwezEuNWNtfXxwezYuM2NtfXxwezkuNGNtfXwKPiArCj4g Ky4uIGZsYXQtdGFibGU6OiBzdHJ1Y3QgdjRsMl92cDlfcXVhbnRpemF0aW9uCj4gKyAgICA6aGVh ZGVyLXJvd3M6ICAwCj4gKyAgICA6c3R1Yi1jb2x1bW5zOiAwCj4gKyAgICA6d2lkdGhzOiAgICAg ICAxIDEgMgo+ICsKPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBiYXNlX3FfaWR4YGAKPiAr ICAgICAgLSBJbmRpY2F0ZXMgdGhlIGJhc2UgZnJhbWUgcWluZGV4Lgo+ICsgICAgKiAtIF9fczgK PiArICAgICAgLSBgYGRlbHRhX3FfeV9kY2BgCj4gKyAgICAgIC0gSW5kaWNhdGVzIHRoZSBZIERD IHF1YW50aXplciByZWxhdGl2ZSB0byBiYXNlX3FfaWR4Lgo+ICsgICAgKiAtIF9fczgKPiArICAg ICAgLSBgYGRlbHRhX3FfdXZfZGNgYAo+ICsgICAgICAtIEluZGljYXRlcyB0aGUgVVYgREMgcXVh bnRpemVyIHJlbGF0aXZlIHRvIGJhc2VfcV9pZHguCj4gKyAgICAqIC0gX19zOAo+ICsgICAgICAt IGBgZGVsdGFfcV91dl9hY2BgCj4gKyAgICAgIC0gSW5kaWNhdGVzIHRoZSBVViBBQyBxdWFudGl6 ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeC4KPiArICAgICogLSBfX3U4Cj4gKyAgICAgIC0gYGBy ZXNlcnZlZFs0XWBgCj4gKyAgICAgIC0gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3Qgc2V0 IHRoaXMgdG8gemVyby4KPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X2xvb3BfZmlsdGVyCj4g Kwo+ICtUaGlzIHN0cnVjdHVyZSBjb250YWlucyBhbGwgbG9vcCBmaWx0ZXIgcmVsYXRlZCBwYXJh bWV0ZXJzLiBTZWUgc2VjdGlvbnMKPiArJzcuMi44IExvb3AgZmlsdGVyIHNlbWFudGljcycgb2Yg dGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFz czo6IGxvbmd0YWJsZQo+ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNj bX18cHs5LjRjbX18Cj4gKwo+ICsuLiBmbGF0LXRhYmxlOjogc3RydWN0IHY0bDJfdnA5X2xvb3Bf ZmlsdGVyCj4gKyAgICA6aGVhZGVyLXJvd3M6ICAwCj4gKyAgICA6c3R1Yi1jb2x1bW5zOiAwCj4g KyAgICA6d2lkdGhzOiAgICAgICAxIDEgMgo+ICsKPiArICAgICogLSBfX3M4Cj4gKyAgICAgIC0g YGByZWZfZGVsdGFzWzRdYGAKPiArICAgICAgLSBDb250YWlucyB0aGUgYWRqdXN0bWVudCBuZWVk ZWQgZm9yIHRoZSBmaWx0ZXIgbGV2ZWwgYmFzZWQgb24gdGhlIGNob3Nlbgo+ICsgICAgICAgIHJl ZmVyZW5jZSBmcmFtZS4KPiArICAgICogLSBfX3M4Cj4gKyAgICAgIC0gYGBtb2RlX2RlbHRhc1sy XWBgCj4gKyAgICAgIC0gQ29udGFpbnMgdGhlIGFkanVzdG1lbnQgbmVlZGVkIGZvciB0aGUgZmls dGVyIGxldmVsIGJhc2VkIG9uIHRoZSBjaG9zZW4KPiArICAgICAgICBtb2RlLgo+ICsgICAgKiAt IF9fdTgKPiArICAgICAgLSBgYGxldmVsYGAKPiArICAgICAgLSBJbmRpY2F0ZXMgdGhlIGxvb3Ag ZmlsdGVyIHN0cmVuZ3RoLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHNoYXJwbmVzc2Bg Cj4gKyAgICAgIC0gSW5kaWNhdGVzIHRoZSBzaGFycG5lc3MgbGV2ZWwuCj4gKyAgICAqIC0gX191 OAo+ICsgICAgICAtIGBgZmxhZ3NgYAo+ICsgICAgICAtIENvbWJpbmF0aW9uIG9mIFY0TDJfVlA5 X0xPT1BfRklMVEVSX0ZMQUdfKiBmbGFncy4KPiArICAgICAgICBTZWUgOmM6dHlwZTpgdjRsMl92 cDlfbG9vcF9maWx0ZXJfZmxhZ3NgLgo+ICsgICAgKiAtIF9fdTgKPiArICAgICAgLSBgYHJlc2Vy dmVkWzddYGAKPiArICAgICAgLSBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdCBzZXQgdGhp cyB0byB6ZXJvLgo+ICsKPiArCj4gKy4uIGM6dHlwZTo6IHY0bDJfdnA5X2xvb3BfZmlsdGVyX2Zs YWdzCj4gKwo+ICtUaG9zZSBhcmUgdGhlIGZsYWdzIHRoYXQgbWF5IGJlIHBhc3NlZC4gU2VlIHNl Y3Rpb24gJzcuMi44IExvb3AgZmlsdGVyCj4gK3NlbWFudGljcycgb2YgdGhlIFZQOSBzcGVjaWZp Y2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCj4gKwo+ICsuLiBjc3NjbGFzczo6IGxvbmd0YWJsZQo+ ICsKPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHsxLjVjbX18cHs2LjNjbX18cHs5LjRjbX18Cj4g Kwo+ICsuLiBmbGF0LXRhYmxlOjogZW51bSB2NGwyX3ZwOV9sb29wX2ZpbHRlcl9mbGFncwo+ICsg ICAgOmhlYWRlci1yb3dzOiAgMAo+ICsgICAgOnN0dWItY29sdW1uczogMAo+ICsgICAgOndpZHRo czogICAgICAgMSAyCj4gKwo+ICsgICAgKiAtIGBgVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19E RUxUQV9FTkFCTEVEYGAKPiArICAgICAgLSBXaGVuIHNldCwgdGhlIGZpbHRlciBsZXZlbCBkZXBl bmRzIG9uIHRoZSBtb2RlIGFuZCByZWZlcmVuY2UgZnJhbWUgdXNlZAo+ICsgICAgICAgIHRvIHBy ZWRpY3QgYSBibG9jay4KPiArICAgICogLSBgYFY0TDJfVlA5X0xPT1BfRklMVEVSX0ZMQUdfREVM VEFfVVBEQVRFYGAKPiArICAgICAgLSBXaGVuIHNldCwgdGhlIGJpdHN0cmVhbSBjb250YWlucyBh ZGRpdGlvbmFsIHN5bnRheCBlbGVtZW50cyB0aGF0Cj4gKyAgICAgICAgc3BlY2lmeSB3aGljaCBt b2RlIGFuZCByZWZlcmVuY2UgZnJhbWUgZGVsdGFzIGFyZSB0byBiZSB1cGRhdGVkLgo+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL3BpeGZtdC1jb21w cmVzc2VkLnJzdCBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvcGl4Zm10 LWNvbXByZXNzZWQucnN0Cj4gaW5kZXggMGVkZTM5OTA3ZWUyLi4xYjIwZjQ4YTI0YjkgMTAwNjQ0 Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9waXhmbXQtY29t cHJlc3NlZC5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRs L3BpeGZtdC1jb21wcmVzc2VkLnJzdAo+IEBAIC0xNzIsNiArMTcyLDIxIEBAIENvbXByZXNzZWQg Rm9ybWF0cwo+ICAgICAgICAtIFZQOSBjb21wcmVzc2VkIHZpZGVvIGZyYW1lLiBUaGUgZW5jb2Rl ciBnZW5lcmF0ZXMgb25lCj4gIAljb21wcmVzc2VkIGZyYW1lIHBlciBidWZmZXIsIGFuZCB0aGUg ZGVjb2RlciByZXF1aXJlcyBvbmUKPiAgCWNvbXByZXNzZWQgZnJhbWUgcGVyIGJ1ZmZlci4KPiAr ICAgICogLi4gX1Y0TDItUElYLUZNVC1WUDktRlJBTUU6Cj4gKwo+ICsgICAgICAtIGBgVjRMMl9Q SVhfRk1UX1ZQOV9GUkFNRWBgCj4gKyAgICAgIC0gJ1ZQOUYnCj4gKyAgICAgIC0gVlA5IHBhcnNl ZCBmcmFtZSwgaW5jbHVkaW5nIHRoZSBmcmFtZSBoZWFkZXIsIGFzIGV4dHJhY3RlZCBmcm9tIHRo ZSBjb250YWluZXIuCj4gKwlUaGlzIGZvcm1hdCBpcyBhZGFwdGVkIGZvciBzdGF0ZWxlc3Mgdmlk ZW8gZGVjb2RlcnMgdGhhdCBpbXBsZW1lbnQgYQo+ICsJVlA5IHBpcGVsaW5lIHdpdGggdGhlIDpy ZWY6YHN0YXRlbGVzc19kZWNvZGVyYC4KPiArCU1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUg ZnJhbWUgdG8gZGVjb2RlIGlzIHJlcXVpcmVkIHRvIGJlIHBhc3NlZAo+ICsJdGhyb3VnaCB0aGUg YGBWNEwyX0NJRF9TVEFURUxFU1NfVlA5X0ZSQU1FYGAgYW5kCj4gKwl0aGUgYGBWNEwyX0NJRF9T VEFURUxFU1NfVlA5X0NPTVBSRVNTRURfSERSX1BST0JTYGAgY29udHJvbHMuCj4gKwlTZWUgdGhl IDpyZWY6YGFzc29jaWF0ZWQgQ29kZWMgQ29udHJvbCBJRHMgPHY0bDItY29kZWMtc3RhdGVsZXNz LXZwOT5gLgo+ICsJRXhhY3RseSBvbmUgb3V0cHV0IGFuZCBvbmUgY2FwdHVyZSBidWZmZXIgbXVz dCBiZSBwcm92aWRlZCBmb3IgdXNlIHdpdGgKPiArCXRoaXMgcGl4ZWwgZm9ybWF0LiBUaGUgb3V0 cHV0IGJ1ZmZlciBtdXN0IGNvbnRhaW4gdGhlIGFwcHJvcHJpYXRlIG51bWJlcgo+ICsJb2YgbWFj cm9ibG9ja3MgdG8gZGVjb2RlIGEgZnVsbCBjb3JyZXNwb25kaW5nIGZyYW1lIHRvIHRoZSBtYXRj aGluZwo+ICsJY2FwdHVyZSBidWZmZXIuCj4gICAgICAqIC4uIF9WNEwyLVBJWC1GTVQtSEVWQzoK PiAgCj4gICAgICAgIC0gYGBWNEwyX1BJWF9GTVRfSEVWQ2BgCj4gZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWctZXh0LWN0cmxzLnJzdCBi L0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWctZXh0LWN0cmxz LnJzdAo+IGluZGV4IDJkNmJjOGQ5NDM4MC4uMjU4ODk1ZmYwYzcxIDEwMDY0NAo+IC0tLSBhL0Rv Y3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWctZXh0LWN0cmxzLnJz dAo+ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWct ZXh0LWN0cmxzLnJzdAo+IEBAIC0yMzMsNiArMjMzLDE0IEBAIHN0aWxsIGNhdXNlIHRoaXMgc2l0 dWF0aW9uLgo+ICAgICAgICAtIGBgcF9tcGVnMl9xdWFudGlzYXRpb25gYAo+ICAgICAgICAtIEEg cG9pbnRlciB0byBhIHN0cnVjdCA6Yzp0eXBlOmB2NGwyX2N0cmxfbXBlZzJfcXVhbnRpc2F0aW9u YC4gVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzCj4gICAgICAgICAgb2YgdHlwZSBgYFY0TDJfQ1RS TF9UWVBFX01QRUcyX1FVQU5USVNBVElPTmBgLgo+ICsgICAgKiAtIHN0cnVjdCA6Yzp0eXBlOmB2 NGwyX2N0cmxfdnA5X2NvbXByZXNzZWRfaGRyX3Byb2JzYCAqCj4gKyAgICAgIC0gYGBwX3ZwOV9j b21wcmVzc2VkX2hkcl9wcm9ic2BgCj4gKyAgICAgIC0gQSBwb2ludGVyIHRvIGEgc3RydWN0IDpj OnR5cGU6YHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHJfcHJvYnNgLiBWYWxpZCBpZiB0aGlz Cj4gKyAgICAgICAgY29udHJvbCBpcyBvZiB0eXBlIGBgVjRMMl9DVFJMX1RZUEVfVlA5X0NPTVBS RVNTRURfSERSX1BST0JTYGAuCj4gKyAgICAqIC0gc3RydWN0IDpjOnR5cGU6YHY0bDJfY3RybF92 cDlfZnJhbWVgICoKPiArICAgICAgLSBgYHBfdnA5X2ZyYW1lYGAKPiArICAgICAgLSBBIHBvaW50 ZXIgdG8gYSBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9jdHJsX3ZwOV9mcmFtZWAuIFZhbGlkIGlmIHRo aXMKPiArICAgICAgICBjb250cm9sIGlzIG9mIHR5cGUgYGBWNEwyX0NUUkxfVFlQRV9WUDlfRlJB TUVgYC4KPiAgICAgICogLSBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9jdHJsX2hkcjEwX2NsbF9pbmZv YCAqCj4gICAgICAgIC0gYGBwX2hkcjEwX2NsbGBgCj4gICAgICAgIC0gQSBwb2ludGVyIHRvIGEg c3RydWN0IDpjOnR5cGU6YHY0bDJfY3RybF9oZHIxMF9jbGxfaW5mb2AuIFZhbGlkIGlmIHRoaXMg Y29udHJvbCBpcwo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVk aWEvdjRsL3ZpZGlvYy1xdWVyeWN0cmwucnN0IGIvRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp L21lZGlhL3Y0bC92aWRpb2MtcXVlcnljdHJsLnJzdAo+IGluZGV4IGY5ZWNmNjI3NjEyOS4uZTBj NmE1ZDlmZjZiIDEwMDY0NAo+IC0tLSBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRp YS92NGwvdmlkaW9jLXF1ZXJ5Y3RybC5yc3QKPiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFj ZS1hcGkvbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeWN0cmwucnN0Cj4gQEAgLTUwNyw2ICs1MDcsMTgg QEAgU2VlIGFsc28gdGhlIGV4YW1wbGVzIGluIDpyZWY6YGNvbnRyb2xgLgo+ICAgICAgICAtIG4v YQo+ICAgICAgICAtIEEgc3RydWN0IDpjOnR5cGU6YHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJh bXNgLCBjb250YWluaW5nIEhFVkMKPiAgCWRlY29kaW5nIHBhcmFtZXRlcnMgZm9yIHN0YXRlbGVz cyB2aWRlbyBkZWNvZGVycy4KPiArICAgICogLSBgYFY0TDJfQ1RSTF9UWVBFX1ZQOV9DT01QUkVT U0VEX0hEUl9QUk9CU2BgCj4gKyAgICAgIC0gbi9hCj4gKyAgICAgIC0gbi9hCj4gKyAgICAgIC0g bi9hCj4gKyAgICAgIC0gQSBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9jdHJsX3ZwOV9jb21wcmVzc2Vk X2hkcl9wcm9ic2AsIGNvbnRhaW5pbmcgVlA5Cj4gKwlwcm9iYWJpbGl0aWVzIHVwZGF0ZXMgZm9y IHN0YXRlbGVzcyB2aWRlbyBkZWNvZGVycy4KPiArICAgICogLSBgYFY0TDJfQ1RSTF9UWVBFX1ZQ OV9GUkFNRWBgCj4gKyAgICAgIC0gbi9hCj4gKyAgICAgIC0gbi9hCj4gKyAgICAgIC0gbi9hCj4g KyAgICAgIC0gQSBzdHJ1Y3QgOmM6dHlwZTpgdjRsMl9jdHJsX3ZwOV9mcmFtZWAsIGNvbnRhaW5p bmcgVlA5Cj4gKwlmcmFtZSBkZWNvZGUgcGFyYW1ldGVycyBmb3Igc3RhdGVsZXNzIHZpZGVvIGRl Y29kZXJzLgo+ICAKPiAgLi4gcmF3OjogbGF0ZXgKPiAgCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50 YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92aWRlb2RldjIuaC5yc3QuZXhjZXB0aW9ucyBiL0Rv Y3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92aWRlb2RldjIuaC5yc3QuZXhjZXB0aW9u cwo+IGluZGV4IGViMGIxY2QzN2FiZC4uMTI5ZWYzZWRmYTczIDEwMDY0NAo+IC0tLSBhL0RvY3Vt ZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92aWRlb2RldjIuaC5yc3QuZXhjZXB0aW9ucwo+ ICsrKyBiL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92aWRlb2RldjIuaC5yc3Qu ZXhjZXB0aW9ucwo+IEBAIC0xNDksNiArMTQ5LDggQEAgcmVwbGFjZSBzeW1ib2wgVjRMMl9DVFJM X1RZUEVfSEVWQ19TTElDRV9QQVJBTVMgOmM6dHlwZTpgdjRsMl9jdHJsX3R5cGVgCj4gIHJlcGxh Y2Ugc3ltYm9sIFY0TDJfQ1RSTF9UWVBFX0FSRUEgOmM6dHlwZTpgdjRsMl9jdHJsX3R5cGVgCj4g IHJlcGxhY2Ugc3ltYm9sIFY0TDJfQ1RSTF9UWVBFX0ZXSFRfUEFSQU1TIDpjOnR5cGU6YHY0bDJf Y3RybF90eXBlYAo+ICByZXBsYWNlIHN5bWJvbCBWNEwyX0NUUkxfVFlQRV9WUDhfRlJBTUUgOmM6 dHlwZTpgdjRsMl9jdHJsX3R5cGVgCj4gK3JlcGxhY2Ugc3ltYm9sIFY0TDJfQ1RSTF9UWVBFX1ZQ OV9DT01QUkVTU0VEX0hEUl9QUk9CUyA6Yzp0eXBlOmB2NGwyX2N0cmxfdHlwZWAKPiArcmVwbGFj ZSBzeW1ib2wgVjRMMl9DVFJMX1RZUEVfVlA5X0ZSQU1FIDpjOnR5cGU6YHY0bDJfY3RybF90eXBl YAo+ICByZXBsYWNlIHN5bWJvbCBWNEwyX0NUUkxfVFlQRV9IRFIxMF9DTExfSU5GTyA6Yzp0eXBl OmB2NGwyX2N0cmxfdHlwZWAKPiAgcmVwbGFjZSBzeW1ib2wgVjRMMl9DVFJMX1RZUEVfSERSMTBf TUFTVEVSSU5HX0RJU1BMQVkgOmM6dHlwZTpgdjRsMl9jdHJsX3R5cGVgCj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNvcmUuYyBiL2RyaXZlcnMv bWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtY29yZS5jCj4gaW5kZXggYzRiNTA4Mjg0OWI2Li5l ZDljZjI5OGE4M2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1j dHJscy1jb3JlLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWNv cmUuYwo+IEBAIC0yODMsNiArMjgzLDEyIEBAIHN0YXRpYyB2b2lkIHN0ZF9sb2coY29uc3Qgc3Ry dWN0IHY0bDJfY3RybCAqY3RybCkKPiAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfTVBFRzJfUElDVFVS RToKPiAgCQlwcl9jb250KCJNUEVHMl9QSUNUVVJFIik7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIFY0 TDJfQ1RSTF9UWVBFX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUzoKPiArCQlwcl9jb250KCJWUDlf Q09NUFJFU1NFRF9IRFJfUFJPQlMiKTsKPiArCQlicmVhazsKPiArCWNhc2UgVjRMMl9DVFJMX1RZ UEVfVlA5X0ZSQU1FOgo+ICsJCXByX2NvbnQoIlZQOV9GUkFNRSIpOwo+ICsJCWJyZWFrOwo+ICAJ ZGVmYXVsdDoKPiAgCQlwcl9jb250KCJ1bmtub3duIHR5cGUgJWQiLCBjdHJsLT50eXBlKTsKPiAg CQlicmVhazsKPiBAQCAtMzE3LDYgKzMyMywxNjIgQEAgc3RhdGljIHZvaWQgc3RkX2xvZyhjb25z dCBzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQo+ICAjZGVmaW5lIHplcm9fcmVzZXJ2ZWQocykgXAo+ ICAJbWVtc2V0KCYocykucmVzZXJ2ZWQsIDAsIHNpemVvZigocykucmVzZXJ2ZWQpKQo+ICAKPiAr c3RhdGljIGludAo+ICt2YWxpZGF0ZV92cDlfbGZfcGFyYW1zKHN0cnVjdCB2NGwyX3ZwOV9sb29w X2ZpbHRlciAqbGYpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpOwo+ICsKPiArCWlmIChsZi0+Zmxh Z3MgJiB+KFY0TDJfVlA5X0xPT1BfRklMVEVSX0ZMQUdfREVMVEFfRU5BQkxFRCB8Cj4gKwkJCSAg VjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9VUERBVEUpKQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiArCS8qIFRoYXQgYWxsIHZhbHVlcyBhcmUgaW4gdGhlIGFjY2VwdGVkIHJhbmdl LiAqLwo+ICsJaWYgKGxmLT5sZXZlbCA+IEdFTk1BU0soNSwgMCkpCj4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gKwo+ICsJaWYgKGxmLT5zaGFycG5lc3MgPiBHRU5NQVNLKDIsIDApKQo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGxmLT5yZWZfZGVs dGFzKTsgaSsrKQo+ICsJCWlmIChsZi0+cmVmX2RlbHRhc1tpXSA8IC02MyB8fCBsZi0+cmVmX2Rl bHRhc1tpXSA+IDYzKQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShsZi0+bW9kZV9kZWx0YXMpOyBpKyspCj4gKwkJaWYgKGxmLT5tb2RlX2Rl bHRhc1tpXSA8IC02MyB8fCBsZi0+bW9kZV9kZWx0YXNbaV0gPiA2MykKPiArCQkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJemVyb19yZXNlcnZlZCgqbGYpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQKPiArdmFsaWRhdGVfdnA5X3F1YW50X3BhcmFtcyhzdHJ1Y3QgdjRsMl92 cDlfcXVhbnRpemF0aW9uICpxdWFudCkKPiArewo+ICsJaWYgKHF1YW50LT5kZWx0YV9xX3lfZGMg PCAtMTUgfHwgcXVhbnQtPmRlbHRhX3FfeV9kYyA+IDE1IHx8Cj4gKwkgICAgcXVhbnQtPmRlbHRh X3FfdXZfZGMgPCAtMTUgfHwgcXVhbnQtPmRlbHRhX3FfdXZfZGMgPiAxNSB8fAo+ICsJICAgIHF1 YW50LT5kZWx0YV9xX3V2X2FjIDwgLTE1IHx8IHF1YW50LT5kZWx0YV9xX3V2X2FjID4gMTUpCj4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJemVyb19yZXNlcnZlZCgqcXVhbnQpOwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQKPiArdmFsaWRhdGVfdnA5X3NlZ19wYXJhbXMo c3RydWN0IHY0bDJfdnA5X3NlZ21lbnRhdGlvbiAqc2VnKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQg aSwgajsKPiArCj4gKwlpZiAoc2VnLT5mbGFncyAmIH4oVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZM QUdfRU5BQkxFRCB8Cj4gKwkJCSAgIFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFHX1VQREFURV9N QVAgfAo+ICsJCQkgICBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19URU1QT1JBTF9VUERBVEUg fAo+ICsJCQkgICBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVfREFUQSB8Cj4gKwkJ CSAgIFY0TDJfVlA5X1NFR01FTlRBVElPTl9GTEFHX0FCU19PUl9ERUxUQV9VUERBVEUpKQo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNlZy0+ ZmVhdHVyZV9lbmFibGVkKTsgaSsrKSB7Cj4gKwkJaWYgKHNlZy0+ZmVhdHVyZV9lbmFibGVkW2ld ICYKPiArCQkgICAgflY0TDJfVlA5X1NFR01FTlRfRkVBVFVSRV9FTkFCTEVEX01BU0spCj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHNlZy0+ZmVhdHVyZV9kYXRhKTsgaSsrKSB7Cj4gKwkJY29uc3QgaW50IHJhbmdlW10gPSB7IDI1 NSwgNjMsIDMsIDAgfTsKPiArCj4gKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoc2VnLT5m ZWF0dXJlX2RhdGFbal0pOyBqKyspIHsKPiArCQkJaWYgKHNlZy0+ZmVhdHVyZV9kYXRhW2ldW2pd IDwgLXJhbmdlW2pdIHx8Cj4gKwkJCSAgICBzZWctPmZlYXR1cmVfZGF0YVtpXVtqXSA+IHJhbmdl W2pdKQo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXplcm9fcmVz ZXJ2ZWQoKnNlZyk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICt2YWxp ZGF0ZV92cDlfZnJhbWUoc3RydWN0IHY0bDJfY3RybF92cDlfZnJhbWUgKmZyYW1lKQo+ICt7Cj4g KwlpbnQgcmV0Owo+ICsKPiArCS8qIE1ha2Ugc3VyZSB3ZSdyZSBub3QgcGFzc2VkIGludmFsaWQg ZmxhZ3MuICovCj4gKwlpZiAoZnJhbWUtPmZsYWdzICYgfihWNEwyX1ZQOV9GUkFNRV9GTEFHX0tF WV9GUkFNRSB8Cj4gKwkJICBWNEwyX1ZQOV9GUkFNRV9GTEFHX1NIT1dfRlJBTUUgfAo+ICsJCSAg VjRMMl9WUDlfRlJBTUVfRkxBR19FUlJPUl9SRVNJTElFTlQgfAo+ICsJCSAgVjRMMl9WUDlfRlJB TUVfRkxBR19JTlRSQV9PTkxZIHwKPiArCQkgIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfQUxMT1dfSElH SF9QUkVDX01WIHwKPiArCQkgIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfUkVGUkVTSF9GUkFNRV9DVFgg fAo+ICsJCSAgVjRMMl9WUDlfRlJBTUVfRkxBR19QQVJBTExFTF9ERUNfTU9ERSB8Cj4gKwkJICBW NEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VCU0FNUExJTkcgfAo+ICsJCSAgVjRMMl9WUDlfRlJBTUVf RkxBR19ZX1NVQlNBTVBMSU5HIHwKPiArCQkgIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfQ09MT1JfUkFO R0VfRlVMTF9TV0lORykpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKGZyYW1lLT5m bGFncyAmIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfRVJST1JfUkVTSUxJRU5UICYmCj4gKwkgICAgZnJh bWUtPmZsYWdzICYgVjRMMl9WUDlfRlJBTUVfRkxBR19SRUZSRVNIX0ZSQU1FX0NUWCkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoZnJhbWUtPnByb2ZpbGUgPiBWNEwyX1ZQOV9QUk9G SUxFX01BWCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoZnJhbWUtPnJlc2V0X2Zy YW1lX2NvbnRleHQgPiBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfQUxMKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsKPiArCWlmIChmcmFtZS0+ZnJhbWVfY29udGV4dF9pZHggPj0gVjRMMl9WUDlf TlVNX0ZSQU1FX0NUWCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKgo+ICsJICogUHJv ZmlsZXMgMCBhbmQgMSBvbmx5IHN1cHBvcnQgOC1iaXQgZGVwdGgsIHByb2ZpbGVzIDIgYW5kIDMg b25seSAxMAo+ICsJICogYW5kIDEyIGJpdCBkZXB0aHMuCj4gKwkgKi8KPiArCWlmICgoZnJhbWUt PnByb2ZpbGUgPCAyICYmIGZyYW1lLT5iaXRfZGVwdGggIT0gOCkgfHwKPiArCSAgICAoZnJhbWUt PnByb2ZpbGUgPj0gMiAmJgo+ICsJICAgICAoZnJhbWUtPmJpdF9kZXB0aCAhPSAxMCAmJiBmcmFt ZS0+Yml0X2RlcHRoICE9IDEyKSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogUHJv ZmlsZSAwIGFuZCAyIG9ubHkgYWNjZXB0IFlVViA0OjI6MC4gKi8KPiArCWlmICgoZnJhbWUtPnBy b2ZpbGUgPT0gMCB8fCBmcmFtZS0+cHJvZmlsZSA9PSAyKSAmJgo+ICsJICAgICghKGZyYW1lLT5m bGFncyAmIFY0TDJfVlA5X0ZSQU1FX0ZMQUdfWF9TVUJTQU1QTElORykgfHwKPiArCSAgICAgIShm cmFtZS0+ZmxhZ3MgJiBWNEwyX1ZQOV9GUkFNRV9GTEFHX1lfU1VCU0FNUExJTkcpKSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBQcm9maWxlIDEgYW5kIDMgb25seSBhY2NlcHQgWVVW IDQ6MjoyLCA0OjQ6MCBhbmQgNDo0OjQuICovCj4gKwlpZiAoKGZyYW1lLT5wcm9maWxlID09IDEg fHwgZnJhbWUtPnByb2ZpbGUgPT0gMykgJiYKPiArCSAgICAoKGZyYW1lLT5mbGFncyAmIFY0TDJf VlA5X0ZSQU1FX0ZMQUdfWF9TVUJTQU1QTElORykgJiYKPiArCSAgICAgKGZyYW1lLT5mbGFncyAm IFY0TDJfVlA5X0ZSQU1FX0ZMQUdfWV9TVUJTQU1QTElORykpKQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsKPiArCWlmIChmcmFtZS0+aW50ZXJwb2xhdGlvbl9maWx0ZXIgPiBWNEwyX1ZQOV9JTlRF UlBfRklMVEVSX1NXSVRDSEFCTEUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyoKPiAr CSAqIEFjY29yZGluZyB0byB0aGUgc3BlYywgdGlsZV9jb2xzX2xvZzIgc2hhbGwgYmUgbGVzcyB0 aGFuIG9yIGVxdWFsCj4gKwkgKiB0byA2Lgo+ICsJICovCj4gKwlpZiAoZnJhbWUtPnRpbGVfY29s c19sb2cyID4gNikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoZnJhbWUtPnR4X21v ZGUgPiBWNEwyX1ZQOV9UWF9NT0RFX1NFTEVDVCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4g KwlpZiAoZnJhbWUtPnJlZmVyZW5jZV9tb2RlID4gVjRMMl9WUDlfUkVGRVJFTkNFX01PREVfU0VM RUNUKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJldCA9IHZhbGlkYXRlX3ZwOV9sZl9w YXJhbXMoJmZyYW1lLT5sZik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJ cmV0ID0gdmFsaWRhdGVfdnA5X3F1YW50X3BhcmFtcygmZnJhbWUtPnF1YW50KTsKPiArCWlmIChy ZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSB2YWxpZGF0ZV92cDlfc2VnX3BhcmFt cygmZnJhbWUtPnNlZyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJemVy b19yZXNlcnZlZCgqZnJhbWUpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIC8qCj4gICAqIENv bXBvdW5kIGNvbnRyb2xzIHZhbGlkYXRpb24gcmVxdWlyZXMgc2V0dGluZyB1bnVzZWQgZmllbGRz L2ZsYWdzIHRvIHplcm8KPiAgICogaW4gb3JkZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHVuY2hhbmdl ZCBjb250cm9scyB3aXRoIHN0ZF9lcXVhbCdzIG1lbWNtcC4KPiBAQCAtNjg3LDYgKzg0OSwxMiBA QCBzdGF0aWMgaW50IHN0ZF92YWxpZGF0ZV9jb21wb3VuZChjb25zdCBzdHJ1Y3QgdjRsMl9jdHJs ICpjdHJsLCB1MzIgaWR4LAo+ICAKPiAgCQlicmVhazsKPiAgCj4gKwljYXNlIFY0TDJfQ1RSTF9U WVBFX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUzoKPiArCQlicmVhazsKPiArCj4gKwljYXNlIFY0 TDJfQ1RSTF9UWVBFX1ZQOV9GUkFNRToKPiArCQlyZXR1cm4gdmFsaWRhdGVfdnA5X2ZyYW1lKHAp Owo+ICsKPiAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfQVJFQToKPiAgCQlhcmVhID0gcDsKPiAgCQlp ZiAoIWFyZWEtPndpZHRoIHx8ICFhcmVhLT5oZWlnaHQpCj4gQEAgLTEyNDksNiArMTQxNywxMiBA QCBzdGF0aWMgc3RydWN0IHY0bDJfY3RybCAqdjRsMl9jdHJsX25ldyhzdHJ1Y3QgdjRsMl9jdHJs X2hhbmRsZXIgKmhkbCwKPiAgCWNhc2UgVjRMMl9DVFJMX1RZUEVfSERSMTBfTUFTVEVSSU5HX0RJ U1BMQVk6Cj4gIAkJZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX2N0cmxfaGRyMTBfbWFz dGVyaW5nX2Rpc3BsYXkpOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSBWNEwyX0NUUkxfVFlQRV9WUDlf Q09NUFJFU1NFRF9IRFJfUFJPQlM6Cj4gKwkJZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwy X2N0cmxfdnA5X2NvbXByZXNzZWRfaGRyX3Byb2JzKTsKPiArCQlicmVhazsKPiArCWNhc2UgVjRM Ml9DVFJMX1RZUEVfVlA5X0ZSQU1FOgo+ICsJCWVsZW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRs Ml9jdHJsX3ZwOV9mcmFtZSk7Cj4gKwkJYnJlYWs7Cj4gIAljYXNlIFY0TDJfQ1RSTF9UWVBFX0FS RUE6Cj4gIAkJZWxlbV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2NGwyX2FyZWEpOwo+ICAJCWJyZWFr Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLWRlZnMu YyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMtZGVmcy5jCj4gaW5kZXggNDIx MzAwZTEzYTQxLi5kMzgzYzQzODE1NmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1jdHJscy1kZWZzLmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92 NGwyLWN0cmxzLWRlZnMuYwo+IEBAIC0xMTc1LDYgKzExNzUsOCBAQCBjb25zdCBjaGFyICp2NGwy X2N0cmxfZ2V0X25hbWUodTMyIGlkKQo+ICAJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfTVBFRzJf U0VRVUVOQ0U6CQkJcmV0dXJuICJNUEVHLTIgU2VxdWVuY2UgSGVhZGVyIjsKPiAgCWNhc2UgVjRM Ml9DSURfU1RBVEVMRVNTX01QRUcyX1BJQ1RVUkU6CQkJcmV0dXJuICJNUEVHLTIgUGljdHVyZSBI ZWFkZXIiOwo+ICAJY2FzZSBWNEwyX0NJRF9TVEFURUxFU1NfTVBFRzJfUVVBTlRJU0FUSU9OOgkJ cmV0dXJuICJNUEVHLTIgUXVhbnRpc2F0aW9uIE1hdHJpY2VzIjsKPiArCWNhc2UgVjRMMl9DSURf U1RBVEVMRVNTX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUzoJcmV0dXJuICJWUDkgUHJvYmFiaWxp dGllcyBVcGRhdGVzIjsKPiArCWNhc2UgVjRMMl9DSURfU1RBVEVMRVNTX1ZQOV9GUkFNRToJCQly ZXR1cm4gIlZQOSBGcmFtZSBEZWNvZGUgUGFyYW1ldGVycyI7Cj4gIAo+ICAJLyogQ29sb3JpbWV0 cnkgY29udHJvbHMgKi8KPiAgCS8qIEtlZXAgdGhlIG9yZGVyIG9mIHRoZSAnY2FzZSdzIHRoZSBz YW1lIGFzIGluIHY0bDItY29udHJvbHMuaCEgKi8KPiBAQCAtMTQ5Myw2ICsxNDk1LDEyIEBAIHZv aWQgdjRsMl9jdHJsX2ZpbGwodTMyIGlkLCBjb25zdCBjaGFyICoqbmFtZSwgZW51bSB2NGwyX2N0 cmxfdHlwZSAqdHlwZSwKPiAgCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX0RFQ09ERV9Q QVJBTVM6Cj4gIAkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9IRVZDX0RFQ09ERV9QQVJBTVM7Cj4g IAkJYnJlYWs7Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19WUDlfQ09NUFJFU1NFRF9IRFJf UFJPQlM6Cj4gKwkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9WUDlfQ09NUFJFU1NFRF9IRFJfUFJP QlM7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIFY0TDJfQ0lEX1NUQVRFTEVTU19WUDlfRlJBTUU6Cj4g KwkJKnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9WUDlfRlJBTUU7Cj4gKwkJYnJlYWs7Cj4gIAljYXNl IFY0TDJfQ0lEX1VOSVRfQ0VMTF9TSVpFOgo+ICAJCSp0eXBlID0gVjRMMl9DVFJMX1RZUEVfQVJF QTsKPiAgCQkqZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3Y0 bDItY29yZS92NGwyLWlvY3RsLmMKPiBpbmRleCBlYzZmYzFlZjI5MWUuLjdhNWU4MTIwZDczMyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMKPiArKysg Yi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWlvY3RsLmMKPiBAQCAtMTM5NCw2ICsxMzk0 LDcgQEAgc3RhdGljIHZvaWQgdjRsX2ZpbGxfZm10ZGVzYyhzdHJ1Y3QgdjRsMl9mbXRkZXNjICpm bXQpCj4gIAkJY2FzZSBWNEwyX1BJWF9GTVRfVlA4OgkJZGVzY3IgPSAiVlA4IjsgYnJlYWs7Cj4g IAkJY2FzZSBWNEwyX1BJWF9GTVRfVlA4X0ZSQU1FOiAgICBkZXNjciA9ICJWUDggRnJhbWUiOyBi cmVhazsKPiAgCQljYXNlIFY0TDJfUElYX0ZNVF9WUDk6CQlkZXNjciA9ICJWUDkiOyBicmVhazsK PiArCQljYXNlIFY0TDJfUElYX0ZNVF9WUDlfRlJBTUU6ICAgIGRlc2NyID0gIlZQOSBGcmFtZSI7 IGJyZWFrOwo+ICAJCWNhc2UgVjRMMl9QSVhfRk1UX0hFVkM6CQlkZXNjciA9ICJIRVZDIjsgYnJl YWs7IC8qIGFrYSBILjI2NSAqLwo+ICAJCWNhc2UgVjRMMl9QSVhfRk1UX0hFVkNfU0xJQ0U6CWRl c2NyID0gIkhFVkMgUGFyc2VkIFNsaWNlIERhdGEiOyBicmVhazsKPiAgCQljYXNlIFY0TDJfUElY X0ZNVF9GV0hUOgkJZGVzY3IgPSAiRldIVCI7IGJyZWFrOyAvKiB1c2VkIGluIHZpY29kZWMgKi8K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS92NGwyLWN0cmxzLmggYi9pbmNsdWRlL21lZGlh L3Y0bDItY3RybHMuaAo+IGluZGV4IDU3NWI1OWZiYWM3Ny4uM2VhNDM4NmViZDkxIDEwMDY0NAo+ IC0tLSBhL2luY2x1ZGUvbWVkaWEvdjRsMi1jdHJscy5oCj4gKysrIGIvaW5jbHVkZS9tZWRpYS92 NGwyLWN0cmxzLmgKPiBAQCAtNTAsNiArNTAsOCBAQCBzdHJ1Y3QgdmlkZW9fZGV2aWNlOwo+ICAg KiBAcF9oMjY0X2RlY29kZV9wYXJhbXM6CVBvaW50ZXIgdG8gYSBzdHJ1Y3QgdjRsMl9jdHJsX2gy NjRfZGVjb2RlX3BhcmFtcy4KPiAgICogQHBfaDI2NF9wcmVkX3dlaWdodHM6CVBvaW50ZXIgdG8g YSBzdHJ1Y3QgdjRsMl9jdHJsX2gyNjRfcHJlZF93ZWlnaHRzLgo+ICAgKiBAcF92cDhfZnJhbWU6 CQlQb2ludGVyIHRvIGEgVlA4IGZyYW1lIHBhcmFtcyBzdHJ1Y3R1cmUuCj4gKyAqIEBwX3ZwOV9j b21wcmVzc2VkX2hkcl9wcm9iczoJUG9pbnRlciB0byBhIFZQOSBmcmFtZSBjb21wcmVzc2VkIGhl YWRlciBwcm9icyBzdHJ1Y3R1cmUuCj4gKyAqIEBwX3ZwOV9mcmFtZToJCVBvaW50ZXIgdG8gYSBW UDkgZnJhbWUgcGFyYW1zIHN0cnVjdHVyZS4KPiAgICogQHBfaGV2Y19zcHM6CQkJUG9pbnRlciB0 byBhbiBIRVZDIHNlcXVlbmNlIHBhcmFtZXRlciBzZXQgc3RydWN0dXJlLgo+ICAgKiBAcF9oZXZj X3BwczoJCQlQb2ludGVyIHRvIGFuIEhFVkMgcGljdHVyZSBwYXJhbWV0ZXIgc2V0IHN0cnVjdHVy ZS4KPiAgICogQHBfaGV2Y19zbGljZV9wYXJhbXM6CVBvaW50ZXIgdG8gYW4gSEVWQyBzbGljZSBw YXJhbWV0ZXJzIHN0cnVjdHVyZS4KPiBAQCAtODAsNiArODIsOCBAQCB1bmlvbiB2NGwyX2N0cmxf cHRyIHsKPiAgCXN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnBfaGV2Y19zcHM7Cj4gIAlzdHJ1 Y3QgdjRsMl9jdHJsX2hldmNfcHBzICpwX2hldmNfcHBzOwo+ICAJc3RydWN0IHY0bDJfY3RybF9o ZXZjX3NsaWNlX3BhcmFtcyAqcF9oZXZjX3NsaWNlX3BhcmFtczsKPiArCXN0cnVjdCB2NGwyX2N0 cmxfdnA5X2NvbXByZXNzZWRfaGRyX3Byb2JzICpwX3ZwOV9jb21wcmVzc2VkX2hkcl9wcm9iczsK PiArCXN0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lICpwX3ZwOV9mcmFtZTsKPiAgCXN0cnVjdCB2 NGwyX2N0cmxfaGRyMTBfY2xsX2luZm8gKnBfaGRyMTBfY2xsOwo+ICAJc3RydWN0IHY0bDJfY3Ry bF9oZHIxMF9tYXN0ZXJpbmdfZGlzcGxheSAqcF9oZHIxMF9tYXN0ZXJpbmc7Cj4gIAlzdHJ1Y3Qg djRsMl9hcmVhICpwX2FyZWE7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92NGwy LWNvbnRyb2xzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oCj4gaW5kZXgg NTUzMmI1ZjY4NDkzLi44ZjhjM2MxYWQ4ODUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2xp bnV4L3Y0bDItY29udHJvbHMuaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRy b2xzLmgKPiBAQCAtMjAxMCw2ICsyMDEwLDQzOSBAQCBzdHJ1Y3QgdjRsMl9jdHJsX2hkcjEwX21h c3RlcmluZ19kaXNwbGF5IHsKPiAgCV9fdTMyIG1pbl9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFu Y2U7Cj4gIH07Cj4gIAo+ICsvKiBTdGF0ZWxlc3MgVlA5IGNvbnRyb2xzICovCj4gKwo+ICsvKioK PiArICogZW51bSB2NGwyX3ZwOV9sb29wX2ZpbHRlcl9mbGFncyAtIFZQOSBsb29wIGZpbHRlciBm bGFncwo+ICsgKgo+ICsgKiBAVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19ERUxUQV9FTkFCTEVE OiB0aGUgZmlsdGVyIGxldmVsIGRlcGVuZHMgb24KPiArICoJdGhlIG1vZGUgYW5kIHJlZmVyZW5j ZSBmcmFtZSB1c2VkIHRvIHByZWRpY3QgYSBibG9jawo+ICsgKiBAVjRMMl9WUDlfTE9PUF9GSUxU RVJfRkxBR19ERUxUQV9VUERBVEU6IHRoZSBiaXRzdHJlYW0gY29udGFpbnMgYWRkaXRpb25hbAo+ ICsgKglzeW50YXggZWxlbWVudHMgdGhhdCBzcGVjaWZ5IHdoaWNoIG1vZGUgYW5kIHJlZmVyZW5j ZSBmcmFtZSBkZWx0YXMgYXJlIHRvIGJlIHVwZGF0ZWQKPiArICoKPiArICogVGhvc2UgYXJlIHRo ZSBmbGFncyB0aGF0IG1heSBiZSBwYXNzZWQgdG8gJnY0bDJfdnA5X2xvb3BfZmlsdGVyLmZsYWdz LiBTZWUKPiArICogc2VjdGlvbiAnNy4yLjggTG9vcCBmaWx0ZXIgc2VtYW50aWNzJyBvZiB0aGUg VlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUKPiArICogZGV0YWlscy4KPiArICovCj4gK2VudW0g djRsMl92cDlfbG9vcF9maWx0ZXJfZmxhZ3Mgewo+ICsJVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxB R19ERUxUQV9FTkFCTEVEID0gMSA8PCAwLAo+ICsJVjRMMl9WUDlfTE9PUF9GSUxURVJfRkxBR19E RUxUQV9VUERBVEUgPSAxIDw8IDEsCj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IHY0bDJf dnA5X2xvb3BfZmlsdGVyIC0gVlA5IGxvb3AgZmlsdGVyIHBhcmFtZXRlcnMKPiArICoKPiArICog QHJlZl9kZWx0YXM6IGNvbnRhaW5zIHRoZSBhZGp1c3RtZW50IG5lZWRlZCBmb3IgdGhlIGZpbHRl ciBsZXZlbCBiYXNlZCBvbiB0aGUgY2hvc2VuCj4gKyAqCXJlZmVyZW5jZSBmcmFtZS4gSWYgdGhp cyBzeW50YXggZWxlbWVudCBpcyBub3QgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtLCB1c2Vycwo+ ICsgKglzaG91bGQgcGFzcyBpdHMgbGFzdCB2YWx1ZS4KPiArICogQG1vZGVfZGVsdGFzOiBjb250 YWlucyB0aGUgYWRqdXN0bWVudCBuZWVkZWQgZm9yIHRoZSBmaWx0ZXIgbGV2ZWwgYmFzZWQgb24g dGhlIGNob3NlbiBtb2RlLgo+ICsgKglJZiB0aGlzIHN5bnRheCBlbGVtZW50IGlzIG5vdCBwcmVz ZW50IGluIHRoZSBiaXRzdHJlYW0sIHVzZXJzCj4gKyAqCXNob3VsZCBwYXNzIGl0cyBsYXN0IHZh bHVlLgo+ICsgKiBAbGV2ZWw6IGluZGljYXRlcyB0aGUgbG9vcCBmaWx0ZXIgc3RyZW5ndGgKPiAr ICogQHNoYXJwbmVzczogaW5kaWNhdGVzIHRoZSBzaGFycG5lc3MgbGV2ZWwKPiArICogQGZsYWdz OiBjb21iaW5hdGlvbiBvZiBWNEwyX1ZQOV9MT09QX0ZJTFRFUl9GTEFHXyogZmxhZ3MKPiArICog QHJlc2VydmVkOiBwYWRkaW5nIGZpZWxkLiBTaG91bGQgYmUgemVyb2VkIGJ5IGFwcGxpY2F0aW9u cy4KPiArICoKPiArICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYWxsIGxvb3AgZmlsdGVyIHJl bGF0ZWQgcGFyYW1ldGVycy4gU2VlIHNlY3Rpb25zCj4gKyAqICc3LjIuOCBMb29wIGZpbHRlciBz ZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsg Ki8KPiArc3RydWN0IHY0bDJfdnA5X2xvb3BfZmlsdGVyIHsKPiArCV9fczggcmVmX2RlbHRhc1s0 XTsKPiArCV9fczggbW9kZV9kZWx0YXNbMl07Cj4gKwlfX3U4IGxldmVsOwo+ICsJX191OCBzaGFy cG5lc3M7Cj4gKwlfX3U4IGZsYWdzOwo+ICsJX191OCByZXNlcnZlZFs3XTsKPiArfTsKPiArCj4g Ky8qKgo+ICsgKiBzdHJ1Y3QgdjRsMl92cDlfcXVhbnRpemF0aW9uIC0gVlA5IHF1YW50aXphdGlv biBwYXJhbWV0ZXJzCj4gKyAqCj4gKyAqIEBiYXNlX3FfaWR4OiBpbmRpY2F0ZXMgdGhlIGJhc2Ug ZnJhbWUgcWluZGV4Cj4gKyAqIEBkZWx0YV9xX3lfZGM6IGluZGljYXRlcyB0aGUgWSBEQyBxdWFu dGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeAo+ICsgKiBAZGVsdGFfcV91dl9kYzogaW5kaWNh dGVzIHRoZSBVViBEQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFzZV9xX2lkeAo+ICsgKiBAZGVs dGFfcV91dl9hYzogaW5kaWNhdGVzIHRoZSBVViBBQyBxdWFudGl6ZXIgcmVsYXRpdmUgdG8gYmFz ZV9xX2lkeAo+ICsgKiBAcmVzZXJ2ZWQ6IHBhZGRpbmcgZmllbGQuIFNob3VsZCBiZSB6ZXJvZWQg YnkgYXBwbGljYXRpb25zLgo+ICsgKgo+ICsgKiBFbmNvZGVzIHRoZSBxdWFudGl6YXRpb24gcGFy YW1ldGVycy4gU2VlIHNlY3Rpb24gJzcuMi45IFF1YW50aXphdGlvbiBwYXJhbXMKPiArICogc3lu dGF4JyBvZiB0aGUgVlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4g K3N0cnVjdCB2NGwyX3ZwOV9xdWFudGl6YXRpb24gewo+ICsJX191OCBiYXNlX3FfaWR4Owo+ICsJ X19zOCBkZWx0YV9xX3lfZGM7Cj4gKwlfX3M4IGRlbHRhX3FfdXZfZGM7Cj4gKwlfX3M4IGRlbHRh X3FfdXZfYWM7Cj4gKwlfX3U4IHJlc2VydmVkWzRdOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGVu dW0gdjRsMl92cDlfc2VnbWVudGF0aW9uX2ZsYWdzIC0gVlA5IHNlZ21lbnRhdGlvbiBmbGFncwo+ ICsgKgo+ICsgKiBAVjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfRU5BQkxFRDogaW5kaWNhdGVz IHRoYXQgdGhpcyBmcmFtZSBtYWtlcyB1c2Ugb2YKPiArICoJdGhlIHNlZ21lbnRhdGlvbiB0b29s Cj4gKyAqIEBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVfTUFQOiBpbmRpY2F0ZXMg dGhhdCB0aGUgc2VnbWVudGF0aW9uIG1hcAo+ICsgKglzaG91bGQgYmUgdXBkYXRlZCBkdXJpbmcg dGhlIGRlY29kaW5nIG9mIHRoaXMgZnJhbWUKPiArICogQFY0TDJfVlA5X1NFR01FTlRBVElPTl9G TEFHX1RFTVBPUkFMX1VQREFURTogaW5kaWNhdGVzIHRoYXQgdGhlIHVwZGF0ZXMgdG8KPiArICoJ dGhlIHNlZ21lbnRhdGlvbiBtYXAgYXJlIGNvZGVkIHJlbGF0aXZlIHRvIHRoZSBleGlzdGluZyBz ZWdtZW50YXRpb24gbWFwCj4gKyAqIEBWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19VUERBVEVf REFUQTogaW5kaWNhdGVzIHRoYXQgbmV3IHBhcmFtZXRlcnMgYXJlCj4gKyAqCWFib3V0IHRvIGJl IHNwZWNpZmllZCBmb3IgZWFjaCBzZWdtZW50Cj4gKyAqIEBWNEwyX1ZQOV9TRUdNRU5UQVRJT05f RkxBR19BQlNfT1JfREVMVEFfVVBEQVRFOiBpbmRpY2F0ZXMgdGhhdCB0aGUKPiArICoJc2VnbWVu dGF0aW9uIHBhcmFtZXRlcnMgcmVwcmVzZW50IHRoZSBhY3R1YWwgdmFsdWVzIHRvIGJlIHVzZWQK PiArICoKPiArICogVGhvc2UgYXJlIHRoZSBmbGFncyB0aGF0IG1heSBiZSBwYXNzZWQgdG8gJnY0 bDJfdnA5X3NlZ21lbnRhdGlvbi5mbGFncy4gU2VlCj4gKyAqIHNlY3Rpb24gJzcuMi4xMCBTZWdt ZW50YXRpb24gcGFyYW1zIHN5bnRheCcgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uIGZvcgo+ICsg KiBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICtlbnVtIHY0bDJfdnA5X3NlZ21lbnRhdGlvbl9mbGFn cyB7Cj4gKwlWNEwyX1ZQOV9TRUdNRU5UQVRJT05fRkxBR19FTkFCTEVEID0gMSA8PCAwLAo+ICsJ VjRMMl9WUDlfU0VHTUVOVEFUSU9OX0ZMQUdfVVBEQVRFX01BUCA9IDEgPDwgMSwKPiArCVY0TDJf VlA5X1NFR01FTlRBVElPTl9GTEFHX1RFTVBPUkFMX1VQREFURSA9IDEgPDwgMiwKPiArCVY0TDJf VlA5X1NFR01FTlRBVElPTl9GTEFHX1VQREFURV9EQVRBID0gMSA8PCAzLAo+ICsJVjRMMl9WUDlf U0VHTUVOVEFUSU9OX0ZMQUdfQUJTX09SX0RFTFRBX1VQREFURSA9IDEgPDwgNCwKPiArfTsKPiAr Cj4gKyNkZWZpbmUgVjRMMl9WUDlfU0VHTUVOVF9GRUFUVVJFX0VOQUJMRUQoaWQpCSgxIDw8IChp ZCkpCj4gKyNkZWZpbmUgVjRMMl9WUDlfU0VHTUVOVF9GRUFUVVJFX0VOQUJMRURfTUFTSwkweGYK PiArCj4gKy8qKgo+ICsgKiBlbnVtIHY0bDJfdnA5X3NlZ21lbnRfZmVhdHVyZSAtIFZQOSBzZWdt ZW50IGZlYXR1cmUgSURzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9TRUdfTFZMX0FMVF9ROiBxdWFu dGl6ZXIgc2VnbWVudCBmZWF0dXJlCj4gKyAqIEBWNEwyX1ZQOV9TRUdfTFZMX0FMVF9MOiBsb29w IGZpbHRlciBzZWdtZW50IGZlYXR1cmUKPiArICogQFY0TDJfVlA5X1NFR19MVkxfUkVGX0ZSQU1F IHJlZmVyZW5jZSBmcmFtZSBzZWdtZW50IGZlYXR1cmUKPiArICogQFY0TDJfVlA5X1NFR19MVkxf U0tJUDogc2tpcCBzZWdtZW50IGZlYXR1cmUKPiArICogQFY0TDJfVlA5X1NFR19MVlZfTUFYOiBu dW1iZXIgb2Ygc2VnbWVudCBmZWF0dXJlcwo+ICsgKgo+ICsgKiBTZWdtZW50IGZlYXR1cmUgSURz LiBTZWUgc2VjdGlvbiAnNy4yLjEwIFNlZ21lbnRhdGlvbiBwYXJhbXMgc3ludGF4JyBvZiB0aGUK PiArICogVlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gK2VudW0g djRsMl92cDlfc2VnbWVudF9mZWF0dXJlIHsKPiArCVY0TDJfVlA5X1NFR19MVkxfQUxUX1EsCj4g KwlWNEwyX1ZQOV9TRUdfTFZMX0FMVF9MLAo+ICsJVjRMMl9WUDlfU0VHX0xWTF9SRUZfRlJBTUUs Cj4gKwlWNEwyX1ZQOV9TRUdfTFZMX1NLSVAsCj4gKwlWNEwyX1ZQOV9TRUdfTFZMX01BWCwKPiAr fTsKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdjRsMl92cDlfc2VnbWVudGF0aW9uIC0gVlA5IHNl Z21lbnRhdGlvbiBwYXJhbWV0ZXJzCj4gKyAqCj4gKyAqIEBmZWF0dXJlX2RhdGE6IGRhdGEgYXR0 YWNoZWQgdG8gZWFjaCBmZWF0dXJlLiBEYXRhIGVudHJ5IGlzIG9ubHkgdmFsaWQgaWYgdGhlIGZl YXR1cmUgaXMgZW5hYmxlZAo+ICsgKiBAZmVhdHVyZV9lbmFibGVkOiBiaXRtYXNrIGRlZmluaW5n IHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIGluIGVhY2ggc2VnbWVudAo+ICsgKiBAdHJlZV9w cm9iczogc3BlY2lmaWVzIHRoZSBwcm9iYWJpbGl0eSB2YWx1ZXMgdG8gYmUgdXNlZCB3aGVuCj4g KyAqCWRlY29kaW5nIGEgU2VnbWVudC1JRC4gU2VlICc1LjE1LiBTZWdtZW50YXRpb24gbWFwJyBz ZWN0aW9uIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbgo+ICsgKglmb3IgbW9yZSBkZXRhaWxzLgo+ ICsgKiBAcHJlZF9wcm9iczogc3BlY2lmaWVzIHRoZSBwcm9iYWJpbGl0eSB2YWx1ZXMgdG8gYmUg dXNlZCB3aGVuIGRlY29kaW5nIGEKPiArICoJUHJlZGljdGVkLVNlZ21lbnQtSUQuIFNlZSAnNi40 LjE0LiBHZXQgc2VnbWVudCBpZCBzeW50YXgnIHNlY3Rpb24gb2YgOnJlZjpgdnA5YAo+ICsgKglm b3IgbW9yZSBkZXRhaWxzLgo+ICsgKiBAZmxhZ3M6IGNvbWJpbmF0aW9uIG9mIFY0TDJfVlA5X1NF R01FTlRBVElPTl9GTEFHXyogZmxhZ3MKPiArICogQHJlc2VydmVkOiBwYWRkaW5nIGZpZWxkLiBT aG91bGQgYmUgemVyb2VkIGJ5IGFwcGxpY2F0aW9ucy4KPiArICoKPiArICogRW5jb2RlcyB0aGUg cXVhbnRpemF0aW9uIHBhcmFtZXRlcnMuIFNlZSBzZWN0aW9uICc3LjIuMTAgU2VnbWVudGF0aW9u IHBhcmFtcyBzeW50YXgnIG9mCj4gKyAqIHRoZSBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBk ZXRhaWxzLgo+ICsgKi8KPiArc3RydWN0IHY0bDJfdnA5X3NlZ21lbnRhdGlvbiB7Cj4gKwlfX3Mx NiBmZWF0dXJlX2RhdGFbOF1bNF07Cj4gKwlfX3U4IGZlYXR1cmVfZW5hYmxlZFs4XTsKPiArCV9f dTggdHJlZV9wcm9ic1s3XTsKPiArCV9fdTggcHJlZF9wcm9ic1szXTsKPiArCV9fdTggZmxhZ3M7 Cj4gKwlfX3U4IHJlc2VydmVkWzVdOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGVudW0gdjRsMl92 cDlfaW50cmFfcHJlZGljdGlvbl9tb2RlIC0gVlA5IEludHJhIHByZWRpY3Rpb24gbW9kZXMKPiAr ICoKPiArICogQFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9EQ19QUkVEOiBEQyBpbnRyYSBwcmVk aWN0aW9uCj4gKyAqIEBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfVl9QUkVEOiB2ZXJ0aWNhbCBp bnRyYSBwcmVkaWN0aW9uCj4gKyAqIEBWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfSF9QUkVEOiBo b3Jpem9udGFsIGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lOVFJBX1BSRURfTU9E RV9ENDVfUFJFRDogRDQ1IGludHJhIHByZWRpY3Rpb24KPiArICogQFY0TDJfVlA5X0lOVFJBX1BS RURfTU9ERV9EMTM1X1BSRUQ6IEQxMzUgaW50cmEgcHJlZGljdGlvbgo+ICsgKiBAVjRMMl9WUDlf SU5UUkFfUFJFRF9NT0RFX0QxMTdfUFJFRDogRDExNyBpbnRyYSBwcmVkaWN0aW9uCj4gKyAqIEBW NEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfRDE1M19QUkVEOiBEMTUzIGludHJhIHByZWRpY3Rpb24K PiArICogQFY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9EMjA3X1BSRUQ6IEQyMDcgaW50cmEgcHJl ZGljdGlvbgo+ICsgKiBAVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0Q2M19QUkVEOiBENjMgaW50 cmEgcHJlZGljdGlvbgo+ICsgKiBAVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX1RNX1BSRUQ6IFRy dWUgTW90aW9uIGludHJhIHByZWRpY3Rpb24KPiArICoKPiArICogU2VlIHNlY3Rpb24gJzcuNC41 IEludHJhIGZyYW1lIG1vZGUgaW5mbyBzZW1hbnRpY3MnIGZvciBtb3JlIGRldGFpbHMuCj4gKyAq Lwo+ICtlbnVtIHY0bDJfdnA5X2ludHJhX3ByZWRpY3Rpb25fbW9kZSB7Cj4gKwlWNEwyX1ZQOV9J TlRSQV9QUkVEX01PREVfRENfUFJFRCwKPiArCVY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9WX1BS RUQsCj4gKwlWNEwyX1ZQOV9JTlRSQV9QUkVEX01PREVfSF9QUkVELAo+ICsJVjRMMl9WUDlfSU5U UkFfUFJFRF9NT0RFX0Q0NV9QUkVELAo+ICsJVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RFX0QxMzVf UFJFRCwKPiArCVY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9EMTE3X1BSRUQsCj4gKwlWNEwyX1ZQ OV9JTlRSQV9QUkVEX01PREVfRDE1M19QUkVELAo+ICsJVjRMMl9WUDlfSU5UUkFfUFJFRF9NT0RF X0QyMDdfUFJFRCwKPiArCVY0TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9ENjNfUFJFRCwKPiArCVY0 TDJfVlA5X0lOVFJBX1BSRURfTU9ERV9UTV9QUkVELAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGVu dW0gdjRsMl92cDlfcmVzZXRfZnJhbWVfY29udGV4dCAtIFZhbGlkIHZhbHVlcyBmb3IKPiArICoJ CQkmdjRsMl9jdHJsX3ZwOV9mcmFtZS0+cmVzZXRfZnJhbWVfY29udGV4dAo+ICsgKgo+ICsgKiBA VjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX05PTkU6IGRvbid0IHJlc2V0IGFueSBmcmFtZSBjb250 ZXh0Cj4gKyAqIEBWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfU1BFQzogcmVzZXQgdGhlIGZyYW1l IGNvbnRleHQgcG9pbnRlZCBieQo+ICsgKgkmdjRsMl9jdHJsX3ZwOV9mcmFtZS5mcmFtZV9jb250 ZXh0X2lkeAo+ICsgKiBAVjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX0FMTDogcmVzZXQgYWxsIGZy YW1lIGNvbnRleHRzCj4gKyAqCj4gKyAqIFNlZSBzZWN0aW9uICc3LjIgVW5jb21wcmVzc2VkIGhl YWRlciBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxz Lgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9yZXNldF9mcmFtZV9jb250ZXh0IHsKPiArCVY0TDJf VlA5X1JFU0VUX0ZSQU1FX0NUWF9OT05FLAo+ICsJVjRMMl9WUDlfUkVTRVRfRlJBTUVfQ1RYX1NQ RUMsCj4gKwlWNEwyX1ZQOV9SRVNFVF9GUkFNRV9DVFhfQUxMLAo+ICt9Owo+ICsKPiArLyoqCj4g KyAqIGVudW0gdjRsMl92cDlfaW50ZXJwb2xhdGlvbl9maWx0ZXIgLSBWUDkgaW50ZXJwb2xhdGlv biBmaWx0ZXIgdHlwZXMKPiArICoKPiArICogQFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfRUlHSFRU QVA6IGVpZ2h0IHRhcCBmaWx0ZXIKPiArICogQFY0TDJfVlA5X0lOVEVSUF9GSUxURVJfRUlHSFRU QVBfU01PT1RIOiBlaWdodCB0YXAgc21vb3RoIGZpbHRlcgo+ICsgKiBAVjRMMl9WUDlfSU5URVJQ X0ZJTFRFUl9FSUdIVFRBUF9TSEFSUDogZWlnaHQgdGFwIHNoYXJwIGZpbHRlcgo+ICsgKiBAVjRM Ml9WUDlfSU5URVJQX0ZJTFRFUl9CSUxJTkVBUjogYmlsaW5lYXIgZmlsdGVyCj4gKyAqIEBWNEwy X1ZQOV9JTlRFUlBfRklMVEVSX1NXSVRDSEFCTEU6IGZpbHRlciBzZWxlY3Rpb24gaXMgc2lnbmFs ZWQgYXQgdGhlIGJsb2NrIGxldmVsCj4gKyAqCj4gKyAqIFNlZSBzZWN0aW9uICc3LjIuNyBJbnRl cnBvbGF0aW9uIGZpbHRlciBzZW1hbnRpY3MnIG9mIHRoZSBWUDkgc3BlY2lmaWNhdGlvbgo+ICsg KiBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArZW51bSB2NGwyX3ZwOV9pbnRlcnBvbGF0aW9u X2ZpbHRlciB7Cj4gKwlWNEwyX1ZQOV9JTlRFUlBfRklMVEVSX0VJR0hUVEFQLAo+ICsJVjRMMl9W UDlfSU5URVJQX0ZJTFRFUl9FSUdIVFRBUF9TTU9PVEgsCj4gKwlWNEwyX1ZQOV9JTlRFUlBfRklM VEVSX0VJR0hUVEFQX1NIQVJQLAo+ICsJVjRMMl9WUDlfSU5URVJQX0ZJTFRFUl9CSUxJTkVBUiwK PiArCVY0TDJfVlA5X0lOVEVSUF9GSUxURVJfU1dJVENIQUJMRSwKPiArfTsKPiArCj4gKy8qKgo+ ICsgKiBlbnVtIHY0bDJfdnA5X3JlZmVyZW5jZV9tb2RlIC0gVlA5IHJlZmVyZW5jZSBtb2Rlcwo+ ICsgKgo+ICsgKiBAVjRMMl9WUDlfUkVGRVJFTkNFX01PREVfU0lOR0xFX1JFRkVSRU5DRTogaW5k aWNhdGVzIHRoYXQgYWxsIHRoZSBpbnRlciBibG9ja3MgdXNlIG9ubHkgYQo+ICsgKglzaW5nbGUg cmVmZXJlbmNlIGZyYW1lIHRvIGdlbmVyYXRlIG1vdGlvbiBjb21wZW5zYXRlZCBwcmVkaWN0aW9u Cj4gKyAqIEBWNEwyX1ZQOV9SRUZFUkVOQ0VfTU9ERV9DT01QT1VORF9SRUZFUkVOQ0U6IHJlcXVp cmVzIGFsbCB0aGUgaW50ZXIgYmxvY2tzIHRvIHVzZSBjb21wb3VuZCBtb2RlLgo+ICsgKglTaW5n bGUgcmVmZXJlbmNlIGZyYW1lIHByZWRpY3Rpb24gaXMgbm90IGFsbG93ZWQKPiArICogQFY0TDJf VlA5X1JFRkVSRU5DRV9NT0RFX1NFTEVDVDogYWxsb3dzIGVhY2ggaW5kaXZpZHVhbCBpbnRlciBi bG9jayB0byBzZWxlY3QgYmV0d2VlbiBzaW5nbGUKPiArICoJYW5kIGNvbXBvdW5kIHByZWRpY3Rp b24gbW9kZXMKPiArICoKPiArICogU2VlIHNlY3Rpb24gJzcuMy42IEZyYW1lIHJlZmVyZW5jZSBt b2RlIHNlbWFudGljcycgb2YgdGhlIFZQOSBzcGVjaWZpY2F0aW9uCj4gKyAqIGZvciBtb3JlIGRl dGFpbHMuCj4gKyAqLwo+ICtlbnVtIHY0bDJfdnA5X3JlZmVyZW5jZV9tb2RlIHsKPiArCVY0TDJf VlA5X1JFRkVSRU5DRV9NT0RFX1NJTkdMRV9SRUZFUkVOQ0UsCj4gKwlWNEwyX1ZQOV9SRUZFUkVO Q0VfTU9ERV9DT01QT1VORF9SRUZFUkVOQ0UsCj4gKwlWNEwyX1ZQOV9SRUZFUkVOQ0VfTU9ERV9T RUxFQ1QsCj4gK307Cj4gKwo+ICsvKioKPiArICogZW51bSB2NGwyX3ZwOV90eF9tb2RlIC0gVlA5 IFRYIG1vZGVzCj4gKyAqCj4gKyAqIEBWNEwyX1ZQOV9UWF9NT0RFX09OTFlfNFg0OiB0cmFuc2Zv cm0gc2l6ZSBpcyA0eDQKPiArICogQFY0TDJfVlA5X1RYX01PREVfQUxMT1dfOFg4OiB0cmFuc2Zv cm0gc2l6ZSBjYW4gYmUgdXAgdG8gOHg4Cj4gKyAqIEBWNEwyX1ZQOV9UWF9NT0RFX0FMTE9XXzE2 WDE2OiB0cmFuc2Zvcm0gc2l6ZSBjYW4gYmUgdXAgdG8gMTZ4MTYKPiArICogQFY0TDJfVlA5X1RY X01PREVfQUxMT1dfMzJYMzI6IHRyYW5zZm9ybSBzaXplIGNhbiBiZSB1cCB0byAzMngzMgo+ICsg KiBAVjRMMl9WUDlfVFhfTU9ERV9TRUxFQ1Q6IGJpdHN0cmVhbSBjb250YWlucyB0aGUgdHJhbnNm b3JtIHNpemUgZm9yIGVhY2ggYmxvY2sKPiArICoKPiArICogU2VlIHNlY3Rpb24gJzcuMy4xIFR4 IG1vZGUgc2VtYW50aWNzJyBvZiB0aGUgVlA5IHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWls cy4KPiArICovCj4gK2VudW0gdjRsMl92cDlfdHhfbW9kZSB7Cj4gKwlWNEwyX1ZQOV9UWF9NT0RF X09OTFlfNFg0LAo+ICsJVjRMMl9WUDlfVFhfTU9ERV9BTExPV184WDgsCj4gKwlWNEwyX1ZQOV9U WF9NT0RFX0FMTE9XXzE2WDE2LAo+ICsJVjRMMl9WUDlfVFhfTU9ERV9BTExPV18zMlgzMiwKPiAr CVY0TDJfVlA5X1RYX01PREVfU0VMRUNULAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGVudW0gdjRs Ml92cDlfZnJhbWVfZmxhZ3MgLSBWUDkgZnJhbWUgZmxhZ3MKPiArICogQFY0TDJfVlA5X0ZSQU1F X0ZMQUdfS0VZX0ZSQU1FOiB0aGUgZnJhbWUgaXMgYSBrZXkgZnJhbWUKPiArICogQFY0TDJfVlA5 X0ZSQU1FX0ZMQUdfU0hPV19GUkFNRTogdGhlIGZyYW1lIHNob3VsZCBiZSBkaXNwbGF5ZWQKPiAr ICogQFY0TDJfVlA5X0ZSQU1FX0ZMQUdfRVJST1JfUkVTSUxJRU5UOiB0aGUgZGVjb2Rpbmcgc2hv dWxkIGJlIGVycm9yIHJlc2lsaWVudAo+ICsgKiBAVjRMMl9WUDlfRlJBTUVfRkxBR19JTlRSQV9P TkxZOiB0aGUgZnJhbWUgZG9lcyBub3QgcmVmZXJlbmNlIG90aGVyIGZyYW1lcwo+ICsgKiBAVjRM Ml9WUDlfRlJBTUVfRkxBR19BTExPV19ISUdIX1BSRUNfTVY6IHRoZSBmcmFtZSBjYW4gdXNlIGhp Z2ggcHJlY2lzaW9uIG1vdGlvbiB2ZWN0b3JzCj4gKyAqIEBWNEwyX1ZQOV9GUkFNRV9GTEFHX1JF RlJFU0hfRlJBTUVfQ1RYOiBmcmFtZSBjb250ZXh0IHNob3VsZCBiZSB1cGRhdGVkIGFmdGVyIGRl Y29kaW5nCj4gKyAqIEBWNEwyX1ZQOV9GUkFNRV9GTEFHX1BBUkFMTEVMX0RFQ19NT0RFOiBwYXJh bGxlbCBkZWNvZGluZyBpcyB1c2VkCj4gKyAqIEBWNEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VCU0FN UExJTkc6IHZlcnRpY2FsIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQKPiArICogQFY0TDJfVlA5X0ZS QU1FX0ZMQUdfWV9TVUJTQU1QTElORzogaG9yaXpvbnRhbCBzdWJzYW1wbGluZyBpcyBlbmFibGVk Cj4gKyAqIEBWNEwyX1ZQOV9GUkFNRV9GTEFHX0NPTE9SX1JBTkdFX0ZVTExfU1dJTkc6IGZ1bGwg VVYgcmFuZ2UgaXMgdXNlZAo+ICsgKgo+ICsgKiBDaGVjayB0aGUgVlA5IHNwZWNpZmljYXRpb24g Zm9yIG1vcmUgZGV0YWlscy4KPiArICovCj4gK2VudW0gdjRsMl92cDlfZnJhbWVfZmxhZ3Mgewo+ ICsJVjRMMl9WUDlfRlJBTUVfRkxBR19LRVlfRlJBTUUgPSAxIDw8IDAsCj4gKwlWNEwyX1ZQOV9G UkFNRV9GTEFHX1NIT1dfRlJBTUUgPSAxIDw8IDEsCj4gKwlWNEwyX1ZQOV9GUkFNRV9GTEFHX0VS Uk9SX1JFU0lMSUVOVCA9IDEgPDwgMiwKPiArCVY0TDJfVlA5X0ZSQU1FX0ZMQUdfSU5UUkFfT05M WSA9IDEgPDwgMywKPiArCVY0TDJfVlA5X0ZSQU1FX0ZMQUdfQUxMT1dfSElHSF9QUkVDX01WID0g MSA8PCA0LAo+ICsJVjRMMl9WUDlfRlJBTUVfRkxBR19SRUZSRVNIX0ZSQU1FX0NUWCA9IDEgPDwg NSwKPiArCVY0TDJfVlA5X0ZSQU1FX0ZMQUdfUEFSQUxMRUxfREVDX01PREUgPSAxIDw8IDYsCj4g KwlWNEwyX1ZQOV9GUkFNRV9GTEFHX1hfU1VCU0FNUExJTkcgPSAxIDw8IDcsCj4gKwlWNEwyX1ZQ OV9GUkFNRV9GTEFHX1lfU1VCU0FNUExJTkcgPSAxIDw8IDgsCj4gKwlWNEwyX1ZQOV9GUkFNRV9G TEFHX0NPTE9SX1JBTkdFX0ZVTExfU1dJTkcgPSAxIDw8IDksCj4gK307Cj4gKwo+ICsvKioKPiAr ICogZW51bSB2NGwyX3ZwOV9yZWZfZnJhbWVfc2lnbl9iaWFzIC0gV2hldGhlciByZWZfZnJhbWVf c2lnbl9iaWFzIGlzIDEgZm9yIGEgZ2l2ZW4gcmVmZXJlbmNlIGZyYW1lCj4gKyAqIEBWNEwyX1ZQ OV9TSUdOX0JJQVNfTEFTVDogcmVmX2ZyYW1lX3NpZ25fYmlhcyBpcyAxIGZvciB0aGUgImxhc3Qi IHJlZmVyZW5jZSBmcmFtZQo+ICsgKiBAVjRMMl9WUDlfU0lHTl9CSUFTX0dPTERFTjogcmVmX2Zy YW1lX3NpZ25fYmlhcyBpcyAxIGZvciB0aGUgImdvbGRlbiIgcmVmZXJlbmNlIGZyYW1lCj4gKyAq IEBWNEwyX1ZQOV9TSUdOX0JJQVNfQUxUOiByZWZfZnJhbWVfc2lnbl9iaWFzIGlzIDEgZm9yIHRo ZSAiYWx0IiByZWZlcmVuY2UgZnJhbWUKPiArICovCj4gKwo+ICtlbnVtIHY0bDJfdnA5X3JlZl9m cmFtZV9zaWduX2JpYXMgewo+ICsJVjRMMl9WUDlfU0lHTl9CSUFTX0xBU1QsCj4gKwlWNEwyX1ZQ OV9TSUdOX0JJQVNfR09MREVOLAo+ICsJVjRMMl9WUDlfU0lHTl9CSUFTX0FMVCwKPiArfTsKPiAr Cj4gKyNkZWZpbmUgVjRMMl9WUDlfUFJPRklMRV9NQVgJCTMKPiArCj4gKyNkZWZpbmUgVjRMMl9D SURfU1RBVEVMRVNTX1ZQOV9GUkFNRQkoVjRMMl9DSURfQ09ERUNfU1RBVEVMRVNTX0JBU0UgKyAz MDApCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9mcmFtZSAtIFZQOSBmcmFtZSBk ZWNvZGluZyBjb250cm9sCj4gKyAqCj4gKyAqIEBsZjogbG9vcCBmaWx0ZXIgcGFyYW1ldGVycy4g U2VlICZ2NGwyX3ZwOV9sb29wX2ZpbHRlciBmb3IgbW9yZSBkZXRhaWxzCj4gKyAqIEBxdWFudDog cXVhbnRpemF0aW9uIHBhcmFtZXRlcnMuIFNlZSAmdjRsMl92cDlfcXVhbnRpemF0aW9uIGZvciBt b3JlIGRldGFpbHMKPiArICogQHNlZzogc2VnbWVudGF0aW9uIHBhcmFtZXRlcnMuIFNlZSAmdjRs Ml92cDlfc2VnbWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMKPiArICogQGZsYWdzOiBjb21iaW5h dGlvbiBvZiBWNEwyX1ZQOV9GUkFNRV9GTEFHXyogZmxhZ3MKPiArICogQGNvbXByZXNzZWRfaGVh ZGVyX3NpemU6IGNvbXByZXNzZWQgaGVhZGVyIHNpemUgaW4gYnl0ZXMKPiArICogQHVuY29tcHJl c3NlZF9oZWFkZXJfc2l6ZTogdW5jb21wcmVzc2VkIGhlYWRlciBzaXplIGluIGJ5dGVzCj4gKyAq IEBmcmFtZV93aWR0aF9taW51c18xOiBhZGQgMSB0byBpdCBhbmQgeW91J2xsIGdldCB0aGUgZnJh bWUgd2lkdGggZXhwcmVzc2VkIGluIHBpeGVscwo+ICsgKiBAZnJhbWVfaGVpZ2h0X21pbnVzXzE6 IGFkZCAxIHRvIGl0IGFuZCB5b3UnbGwgZ2V0IHRoZSBmcmFtZSBoZWlnaHQgZXhwcmVzc2VkIGlu IHBpeGVscwo+ICsgKiBAcmVuZGVyX3dpZHRoX21pbnVzXzE6IGFkZCAxIHRvIGl0IGFuZCB5b3Un bGwgZ2V0IHRoZSBleHBlY3RlZCByZW5kZXIgd2lkdGggZXhwcmVzc2VkIGluCj4gKyAqCXBpeGVs cy4gVGhpcyBpcyBub3QgdXNlZCBkdXJpbmcgdGhlIGRlY29kaW5nIHByb2Nlc3MgYnV0IG1pZ2h0 IGJlIHVzZWQgYnkgSFcgc2NhbGVycwo+ICsgKgl0byBwcmVwYXJlIGEgZnJhbWUgdGhhdCdzIHJl YWR5IGZvciBzY2Fub3V0Cj4gKyAqIEByZW5kZXJfaGVpZ2h0X21pbnVzXzE6IGFkZCAxIHRvIGl0 IGFuZCB5b3UnbGwgZ2V0IHRoZSBleHBlY3RlZCByZW5kZXIgaGVpZ2h0IGV4cHJlc3NlZCBpbgo+ ICsgKglwaXhlbHMuIFRoaXMgaXMgbm90IHVzZWQgZHVyaW5nIHRoZSBkZWNvZGluZyBwcm9jZXNz IGJ1dCBtaWdodCBiZSB1c2VkIGJ5IEhXIHNjYWxlcnMKPiArICoJdG8gcHJlcGFyZSBhIGZyYW1l IHRoYXQncyByZWFkeSBmb3Igc2Nhbm91dAo+ICsgKiBAbGFzdF9mcmFtZV90czogImxhc3QiIHJl ZmVyZW5jZSBidWZmZXIgdGltZXN0YW1wLgo+ICsgKiBUaGUgdGltZXN0YW1wIHJlZmVycyB0byB0 aGUgdGltZXN0YW1wIGZpZWxkIGluIHN0cnVjdCB2NGwyX2J1ZmZlci4KPiArICogVXNlIHY0bDJf dGltZXZhbF90b19ucygpIHRvIGNvbnZlcnQgdGhlIHN0cnVjdCB0aW1ldmFsIHRvIGEgX191NjQu Cj4gKyAqIEBnb2xkZW5fZnJhbWVfdHM6ICJnb2xkZW4iIHJlZmVyZW5jZSBidWZmZXIgdGltZXN0 YW1wLgo+ICsgKiBUaGUgdGltZXN0YW1wIHJlZmVycyB0byB0aGUgdGltZXN0YW1wIGZpZWxkIGlu IHN0cnVjdCB2NGwyX2J1ZmZlci4KPiArICogVXNlIHY0bDJfdGltZXZhbF90b19ucygpIHRvIGNv bnZlcnQgdGhlIHN0cnVjdCB0aW1ldmFsIHRvIGEgX191NjQuCj4gKyAqIEBhbHRfZnJhbWVfdHM6 ICJhbHQiIHJlZmVyZW5jZSBidWZmZXIgdGltZXN0YW1wLgo+ICsgKiBUaGUgdGltZXN0YW1wIHJl ZmVycyB0byB0aGUgdGltZXN0YW1wIGZpZWxkIGluIHN0cnVjdCB2NGwyX2J1ZmZlci4KPiArICog VXNlIHY0bDJfdGltZXZhbF90b19ucygpIHRvIGNvbnZlcnQgdGhlIHN0cnVjdCB0aW1ldmFsIHRv IGEgX191NjQuCj4gKyAqIEByZWZfZnJhbWVfc2lnbl9iaWFzOiBhIGJpdGZpZWxkIHNwZWNpZnlp bmcgd2hldGhlciB0aGUgc2lnbiBiaWFzIGlzIHNldCBmb3IgYSBnaXZlbgo+ICsgKglyZWZlcmVu Y2UgZnJhbWUuIFNlZSAmdjRsMl92cDlfcmVmX2ZyYW1lX3NpZ25fYmlhcyBmb3IgbW9yZSBkZXRh aWxzLgo+ICsgKiBAcmVzZXRfZnJhbWVfY29udGV4dDogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGZy YW1lIGNvbnRleHQgc2hvdWxkIGJlIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzLgo+ICsgKglTZWUg JnY0bDJfdnA5X3Jlc2V0X2ZyYW1lX2NvbnRleHQgZm9yIG1vcmUgZGV0YWlscwo+ICsgKiBAZnJh bWVfY29udGV4dF9pZHg6IGZyYW1lIGNvbnRleHQgdGhhdCBzaG91bGQgYmUgdXNlZC91cGRhdGVk Cj4gKyAqIEBwcm9maWxlOiBWUDkgcHJvZmlsZS4gQ2FuIGJlIDAsIDEsIDIgb3IgMwo+ICsgKiBA Yml0X2RlcHRoOiBiaXRzIHBlciBjb21wb25lbnRzLiBDYW4gYmUgOCwgMTAgb3IgMTIuIE5vdGUg dGhhdCBub3QgYWxsIHByb2ZpbGVzIHN1cHBvcnQKPiArICoJMTAgYW5kL29yIDEyIGJpdHMgZGVw dGhzCj4gKyAqIEBpbnRlcnBvbGF0aW9uX2ZpbHRlcjogc3BlY2lmaWVzIHRoZSBmaWx0ZXIgc2Vs ZWN0aW9uIHVzZWQgZm9yIHBlcmZvcm1pbmcgaW50ZXIgcHJlZGljdGlvbi4KPiArICoJU2VlICZ2 NGwyX3ZwOV9pbnRlcnBvbGF0aW9uX2ZpbHRlciBmb3IgbW9yZSBkZXRhaWxzCj4gKyAqIEB0aWxl X2NvbHNfbG9nMjogc3BlY2lmaWVzIHRoZSBiYXNlIDIgbG9nYXJpdGhtIG9mIHRoZSB3aWR0aCBv ZiBlYWNoIHRpbGUgKHdoZXJlIHRoZSB3aWR0aAo+ICsgKglpcyBtZWFzdXJlZCBpbiB1bml0cyBv ZiA4eDggYmxvY2tzKS4gU2hhbGwgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDYKPiArICogQHRp bGVfcm93c19sb2cyOiBzcGVjaWZpZXMgdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgdGhlIGhlaWdo dCBvZiBlYWNoIHRpbGUgKHdoZXJlIHRoZSBoZWlnaHQKPiArICoJaXMgbWVhc3VyZWQgaW4gdW5p dHMgb2YgOHg4IGJsb2NrcykKPiArICogQHR4X21vZGU6IHNwZWNpZmllcyB0aGUgVFggbW9kZS4g U2VlICZ2NGwyX3ZwOV90eF9tb2RlIGZvciBtb3JlIGRldGFpbHMKPiArICogQHJlZmVyZW5jZV9t b2RlOiBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgaW50ZXIgcHJlZGljdGlvbiB0byBiZSB1c2VkLiBT ZWUKPiArICoJJnY0bDJfdnA5X3JlZmVyZW5jZV9tb2RlIGZvciBtb3JlIGRldGFpbHMKPiArICog QHJlc2VydmVkOiBwYWRkaW5nIGZpZWxkLiBTaG91bGQgYmUgemVyb2VkIGJ5IGFwcGxpY2F0aW9u cy4KPiArICovCj4gK3N0cnVjdCB2NGwyX2N0cmxfdnA5X2ZyYW1lIHsKPiArCXN0cnVjdCB2NGwy X3ZwOV9sb29wX2ZpbHRlciBsZjsKPiArCXN0cnVjdCB2NGwyX3ZwOV9xdWFudGl6YXRpb24gcXVh bnQ7Cj4gKwlzdHJ1Y3QgdjRsMl92cDlfc2VnbWVudGF0aW9uIHNlZzsKPiArCV9fdTMyIGZsYWdz Owo+ICsJX191MTYgY29tcHJlc3NlZF9oZWFkZXJfc2l6ZTsKPiArCV9fdTE2IHVuY29tcHJlc3Nl ZF9oZWFkZXJfc2l6ZTsKPiArCV9fdTE2IGZyYW1lX3dpZHRoX21pbnVzXzE7Cj4gKwlfX3UxNiBm cmFtZV9oZWlnaHRfbWludXNfMTsKPiArCV9fdTE2IHJlbmRlcl93aWR0aF9taW51c18xOwo+ICsJ X191MTYgcmVuZGVyX2hlaWdodF9taW51c18xOwo+ICsJX191NjQgbGFzdF9mcmFtZV90czsKPiAr CV9fdTY0IGdvbGRlbl9mcmFtZV90czsKPiArCV9fdTY0IGFsdF9mcmFtZV90czsKPiArCV9fdTgg cmVmX2ZyYW1lX3NpZ25fYmlhczsKPiArCV9fdTggcmVzZXRfZnJhbWVfY29udGV4dDsKPiArCV9f dTggZnJhbWVfY29udGV4dF9pZHg7Cj4gKwlfX3U4IHByb2ZpbGU7Cj4gKwlfX3U4IGJpdF9kZXB0 aDsKPiArCV9fdTggaW50ZXJwb2xhdGlvbl9maWx0ZXI7Cj4gKwlfX3U4IHRpbGVfY29sc19sb2cy Owo+ICsJX191OCB0aWxlX3Jvd3NfbG9nMjsKPiArCV9fdTggdHhfbW9kZTsKPiArCV9fdTggcmVm ZXJlbmNlX21vZGU7Cj4gKwlfX3U4IHJlc2VydmVkWzZdOwo+ICt9Owo+ICsKPiArI2RlZmluZSBW NEwyX1ZQOV9OVU1fRlJBTUVfQ1RYCTQKPiArCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdjRsMl92cDlf bXZfY29tcHJlc3NlZF9oZHJfcHJvYnMgLSBWUDkgTW90aW9uIHZlY3RvciBwcm9iYWJpbGl0eSB1 cGRhdGVzCj4gKyAqIEBqb2ludDogbW90aW9uIHZlY3RvciBqb2ludCBwcm9iYWJpbGl0eSB1cGRh dGVzCj4gKyAqIEBzaWduOiBtb3Rpb24gdmVjdG9yIHNpZ24gcHJvYmFiaWxpdHkgdXBkYXRlcwo+ ICsgKiBAY2xhc3NlczogbW90aW9uIHZlY3RvciBjbGFzcyBwcm9iYWJpbGl0eSB1cGRhdGVzCj4g KyAqIEBjbGFzczBfYml0OiBtb3Rpb24gdmVjdG9yIGNsYXNzMCBiaXQgcHJvYmFiaWxpdHkgdXBk YXRlcwo+ICsgKiBAYml0czogbW90aW9uIHZlY3RvciBiaXRzIHByb2JhYmlsaXR5IHVwZGF0ZXMK PiArICogQGNsYXNzMF9mcjogbW90aW9uIHZlY3RvciBjbGFzczAgZnJhY3Rpb25hbCBiaXQgcHJv YmFiaWxpdHkgdXBkYXRlcwo+ICsgKiBAZnI6IG1vdGlvbiB2ZWN0b3IgZnJhY3Rpb25hbCBiaXQg cHJvYmFiaWxpdHkgdXBkYXRlcwo+ICsgKiBAY2xhc3MwX2hwOiBtb3Rpb24gdmVjdG9yIGNsYXNz MCBoaWdoIHByZWNpc2lvbiBmcmFjdGlvbmFsIGJpdCBwcm9iYWJpbGl0eSB1cGRhdGVzCj4gKyAq IEBocDogbW90aW9uIHZlY3RvciBoaWdoIHByZWNpc2lvbiBmcmFjdGlvbmFsIGJpdCBwcm9iYWJp bGl0eSB1cGRhdGVzCj4gKyAqCj4gKyAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIG5ldyB2YWx1 ZXMgb2YgbW90aW9uIHZlY3RvciBwcm9iYWJpbGl0aWVzLgo+ICsgKiBBIHZhbHVlIG9mIHplcm8g aW4gYW4gYXJyYXkgZWxlbWVudCBtZWFucyB0aGVyZSBpcyBubyB1cGRhdGUgb2YgdGhlIHJlbGV2 YW50IHByb2JhYmlsaXR5Lgo+ICsgKiBTZWUgYHN0cnVjdCB2NGwyX3ZwOV9wcm9iX3VwZGF0ZXNg IGZvciBkZXRhaWxzLgo+ICsgKi8KPiArc3RydWN0IHY0bDJfdnA5X212X2NvbXByZXNzZWRfaGRy X3Byb2JzIHsKPiArCV9fdTggam9pbnRbM107Cj4gKwlfX3U4IHNpZ25bMl07Cj4gKwlfX3U4IGNs YXNzZXNbMl1bMTBdOwo+ICsJX191OCBjbGFzczBfYml0WzJdOwo+ICsJX191OCBiaXRzWzJdWzEw XTsKPiArCV9fdTggY2xhc3MwX2ZyWzJdWzJdWzNdOwo+ICsJX191OCBmclsyXVszXTsKPiArCV9f dTggY2xhc3MwX2hwWzJdOwo+ICsJX191OCBocFsyXTsKPiArfTsKPiArCj4gKyNkZWZpbmUgVjRM Ml9DSURfU1RBVEVMRVNTX1ZQOV9DT01QUkVTU0VEX0hEUl9QUk9CUwkoVjRMMl9DSURfQ09ERUNf U1RBVEVMRVNTX0JBU0UgKyAzMDEpCj4gKy8qKgo+ICsgKiBzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9j b21wcmVzc2VkX2hkcl9wcm9icyAtIFZQOSBwcm9iYWJpbGl0eSB1cGRhdGVzIGNvbnRyb2wKPiAr ICogQHR4ODogVFggOHg4IHByb2JhYmlsaXR5IHVwZGF0ZXMKPiArICogQHR4MTY6IFRYIDE2eDE2 IHByb2JhYmlsaXR5IHVwZGF0ZXMKPiArICogQHR4MzI6IFRYIDMyeDMyIHByb2JhYmlsaXR5IHVw ZGF0ZXMKPiArICogQGNvZWY6IGNvZWZmaWNpZW50IHByb2JhYmlsaXR5IHVwZGF0ZXMKPiArICog QHNraXA6IHNraXAgcHJvYmFiaWxpdHkgdXBkYXRlcwo+ICsgKiBAaW50ZXJfbW9kZTogaW50ZXIg bW9kZSBwcm9iYWJpbGl0eSB1cGRhdGVzCj4gKyAqIEBpbnRlcnBfZmlsdGVyOiBpbnRlcnBvbGF0 aW9uIGZpbHRlciBwcm9iYWJpbGl0eSB1cGRhdGVzCj4gKyAqIEBpc19pbnRlcjogaXMgaW50ZXIt YmxvY2sgcHJvYmFiaWxpdHkgdXBkYXRlcwo+ICsgKiBAY29tcF9tb2RlOiBjb21wb3VuZCBwcmVk aWN0aW9uIG1vZGUgcHJvYmFiaWxpdHkgdXBkYXRlcwo+ICsgKiBAc2luZ2xlX3JlZjogc2luZ2xl IHJlZiBwcm9iYWJpbGl0eSB1cGRhdGVzCj4gKyAqIEBjb21wX3JlZjogY29tcG91bmQgcmVmIHBy b2JhYmlsaXR5IHVwZGF0ZXMKPiArICogQHlfbW9kZTogWSBwcmVkaWN0aW9uIG1vZGUgcHJvYmFi aWxpdHkgdXBkYXRlcwo+ICsgKiBAdXZfbW9kZTogVVYgcHJlZGljdGlvbiBtb2RlIHByb2JhYmls aXR5IHVwZGF0ZXMKPiArICogQHBhcnRpdGlvbjogcGFydGl0aW9uIHByb2JhYmlsaXR5IHVwZGF0 ZXMKPiArICogQG12OiBtb3Rpb24gdmVjdG9yIHByb2JhYmlsaXR5IHVwZGF0ZXMKPiArICoKPiAr ICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIHByb2JhYmlsaXRpZXMgdXBkYXRlIGFzIHBhcnNl ZCBpbiB0aGUgY29tcHJlc3NlZAo+ICsgKiBoZWFkZXIgKFNwZWMgNi4zKS4gVGhlc2UgdmFsdWVz IHJlcHJlc2VudCB0aGUgdmFsdWUgb2YgcHJvYmFiaWxpdHkgdXBkYXRlIGFmdGVyCj4gKyAqIGJl aW5nIHRyYW5zbGF0ZWQgd2l0aCBpbnZfbWFwX3RhYmxlW10gKHNlZSA2LjMuNSkuIEEgdmFsdWUg b2YgemVybyBpbiBhbiBhcnJheSBlbGVtZW50Cj4gKyAqIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8g dXBkYXRlIG9mIHRoZSByZWxldmFudCBwcm9iYWJpbGl0eS4KPiArICovCj4gK3N0cnVjdCB2NGwy X2N0cmxfdnA5X2NvbXByZXNzZWRfaGRyX3Byb2JzIHsKPiArCV9fdTggdHg4WzJdWzFdOwo+ICsJ X191OCB0eDE2WzJdWzJdOwo+ICsJX191OCB0eDMyWzJdWzNdOwo+ICsJX191OCBjb2VmWzRdWzJd WzJdWzZdWzZdWzNdOwo+ICsJX191OCBza2lwWzNdOwo+ICsJX191OCBpbnRlcl9tb2RlWzddWzNd Owo+ICsJX191OCBpbnRlcnBfZmlsdGVyWzRdWzJdOwo+ICsJX191OCBpc19pbnRlcls0XTsKPiAr CV9fdTggY29tcF9tb2RlWzVdOwo+ICsJX191OCBzaW5nbGVfcmVmWzVdWzJdOwo+ICsJX191OCBj b21wX3JlZls1XTsKPiArCV9fdTggeV9tb2RlWzRdWzldOwo+ICsJX191OCB1dl9tb2RlWzEwXVs5 XTsKPiArCV9fdTggcGFydGl0aW9uWzE2XVszXTsKPiArCj4gKwlzdHJ1Y3QgdjRsMl92cDlfbXZf Y29tcHJlc3NlZF9oZHJfcHJvYnMgbXY7Cj4gK307Cj4gKwo+ICAvKiBNUEVHLWNvbXByZXNzaW9u IGRlZmluaXRpb25zIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCj4gICNpZm5k ZWYgX19LRVJORUxfXwo+ICAjZGVmaW5lIFY0TDJfQ1RSTF9DTEFTU19NUEVHICAgICAgICAgICAg VjRMMl9DVFJMX0NMQVNTX0NPREVDCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC92 aWRlb2RldjIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaAo+IGluZGV4IDU4Mzky ZGNkM2JmNS4uNGFiZTQzNjI1MTllIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC92 aWRlb2RldjIuaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaAo+IEBAIC03 MDMsNiArNzAzLDcgQEAgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCB7Cj4gICNkZWZpbmUgVjRMMl9Q SVhfRk1UX1ZQOCAgICAgIHY0bDJfZm91cmNjKCdWJywgJ1AnLCAnOCcsICcwJykgLyogVlA4ICov Cj4gICNkZWZpbmUgVjRMMl9QSVhfRk1UX1ZQOF9GUkFNRSB2NGwyX2ZvdXJjYygnVicsICdQJywg JzgnLCAnRicpIC8qIFZQOCBwYXJzZWQgZnJhbWUgKi8KPiAgI2RlZmluZSBWNEwyX1BJWF9GTVRf VlA5ICAgICAgdjRsMl9mb3VyY2MoJ1YnLCAnUCcsICc5JywgJzAnKSAvKiBWUDkgKi8KPiArI2Rl ZmluZSBWNEwyX1BJWF9GTVRfVlA5X0ZSQU1FIHY0bDJfZm91cmNjKCdWJywgJ1AnLCAnOScsICdG JykgLyogVlA5IHBhcnNlZCBmcmFtZSAqLwo+ICAjZGVmaW5lIFY0TDJfUElYX0ZNVF9IRVZDICAg ICB2NGwyX2ZvdXJjYygnSCcsICdFJywgJ1YnLCAnQycpIC8qIEhFVkMgYWthIEguMjY1ICovCj4g ICNkZWZpbmUgVjRMMl9QSVhfRk1UX0ZXSFQgICAgIHY0bDJfZm91cmNjKCdGJywgJ1cnLCAnSCcs ICdUJykgLyogRmFzdCBXYWxzaCBIYWRhbWFyZCBUcmFuc2Zvcm0gKHZpY29kZWMpICovCj4gICNk ZWZpbmUgVjRMMl9QSVhfRk1UX0ZXSFRfU1RBVEVMRVNTICAgICB2NGwyX2ZvdXJjYygnUycsICdG JywgJ1cnLCAnSCcpIC8qIFN0YXRlbGVzcyBGV0hUICh2aWNvZGVjKSAqLwo+IEBAIC0xNzU1LDYg KzE3NTYsOCBAQCBzdHJ1Y3QgdjRsMl9leHRfY29udHJvbCB7Cj4gIAkJc3RydWN0IHY0bDJfY3Ry bF9tcGVnMl9zZXF1ZW5jZSBfX3VzZXIgKnBfbXBlZzJfc2VxdWVuY2U7Cj4gIAkJc3RydWN0IHY0 bDJfY3RybF9tcGVnMl9waWN0dXJlIF9fdXNlciAqcF9tcGVnMl9waWN0dXJlOwo+ICAJCXN0cnVj dCB2NGwyX2N0cmxfbXBlZzJfcXVhbnRpc2F0aW9uIF9fdXNlciAqcF9tcGVnMl9xdWFudGlzYXRp b247Cj4gKwkJc3RydWN0IHY0bDJfY3RybF92cDlfY29tcHJlc3NlZF9oZHJfcHJvYnMgX191c2Vy ICpwX3ZwOV9jb21wcmVzc2VkX2hkcl9wcm9iczsKPiArCQlzdHJ1Y3QgdjRsMl9jdHJsX3ZwOV9m cmFtZSBfX3VzZXIgKnBfdnA5X2ZyYW1lOwo+ICAJCXZvaWQgX191c2VyICpwdHI7Cj4gIAl9Owo+ ICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKPiBAQCAtMTgxOSw2ICsxODIyLDkgQEAgZW51 bSB2NGwyX2N0cmxfdHlwZSB7Cj4gIAlWNEwyX0NUUkxfVFlQRV9NUEVHMl9RVUFOVElTQVRJT04g ICA9IDB4MDI1MCwKPiAgCVY0TDJfQ1RSTF9UWVBFX01QRUcyX1NFUVVFTkNFICAgICAgID0gMHgw MjUxLAo+ICAJVjRMMl9DVFJMX1RZUEVfTVBFRzJfUElDVFVSRSAgICAgICAgPSAweDAyNTIsCj4g Kwo+ICsJVjRMMl9DVFJMX1RZUEVfVlA5X0NPTVBSRVNTRURfSERSX1BST0JTCT0gMHgwMjYwLAo+ ICsJVjRMMl9DVFJMX1RZUEVfVlA5X0ZSQU1FCQk9IDB4MDI2MSwKPiAgfTsKPiAgCj4gIC8qICBV c2VkIGluIHRoZSBWSURJT0NfUVVFUllDVFJMIGlvY3RsIGZvciBxdWVyeWluZyBjb250cm9scyAq LwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg==