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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 07B62C3F2D2 for ; Fri, 28 Feb 2020 17:06:47 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 90EE124691 for ; Fri, 28 Feb 2020 17:06:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="trMHUh6S" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 90EE124691 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:50946 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7j65-0003yv-MN for qemu-devel@archiver.kernel.org; Fri, 28 Feb 2020 12:06:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:57878) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7iko-00037T-Ou for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:44:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7ikc-0005Z9-S3 for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:44:45 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:13242) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j7ikb-0005Uc-Ep for qemu-devel@nongnu.org; Fri, 28 Feb 2020 11:44:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1582908273; x=1614444273; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TVQmYa127ZMM/IOizO1Ac06lhvfnyah98s5g0Gw2t9s=; b=trMHUh6SE47fQrMl5+nAntIyhDImhQCDG93uiwjGzTHtBaOat/jUwXdl 9L2hSPuUhSiEikOW0BY4dNY0U+mikYaijH4dwu6OmyZaIgJtECyZpdPTh bm72cOaNx68XAZvuecg2s/wvFkFpdk/Ml225M8fqaHchc6wI/akAmZwNE k=; Received: from unknown (HELO ironmsg-SD-alpha.qualcomm.com) ([10.53.140.30]) by alexa-out-sd-01.qualcomm.com with ESMTP; 28 Feb 2020 08:44:29 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg-SD-alpha.qualcomm.com with ESMTP; 28 Feb 2020 08:44:29 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id F3DAFFCD; Fri, 28 Feb 2020 10:44:28 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 17/67] Hexagon arch import - macro definitions Date: Fri, 28 Feb 2020 10:43:13 -0600 Message-Id: <1582908244-304-18-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> References: <1582908244-304-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 199.106.114.38 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: riku.voipio@iki.fi, richard.henderson@linaro.org, laurent@vivier.eu, Taylor Simpson , philmd@redhat.com, aleksandar.m.mail@gmail.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvbWFjcm9zLmRlZiAgICAgICAgICAgICAgU2NhbGFyIGNvcmUgbWFjcm8gZGVmaW5pdGlvbnMK VGhlIG1hY3JvIGRlZmluaXRpb24gZmlsZXMgc3BlY2lmeSBpbnN0cnVjdGlvbiBhdHRyaWJ1dGVz IHRoYXQgYXJlIGFwcGxpZWQKdG8gZWFjaCBpbnN0cnVjdGlvbiB0aGF0IHJldmVyZW5jZXMgdGhl IG1hY3JvLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMu Y29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21hY3Jvcy5kZWYgfCAzOTcwICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDM5NzAgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNzU1IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21h Y3Jvcy5kZWYKCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9tYWNyb3MuZGVm IGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbWFjcm9zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDc1 NQppbmRleCAwMDAwMDAwLi5hY2UwNDMyCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFn b24vaW1wb3J0ZWQvbWFjcm9zLmRlZgpAQCAtMCwwICsxLDM5NzAgQEAKKy8qCisgKiAgQ29weXJp Z2h0KGMpIDIwMTktMjAyMCBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmln aHRzIFJlc2VydmVkLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgKi8KKworREVGX01BQ1JPKAorCUxJS0VMWSwJCS8qIE5BTUUgKi8KKwkoWCksCQkvKiBQQVJB TVMgKi8KKwkiWCIsCQkvKiBzZGVzY3IgKi8KKwkiWCIsCQkvKiBsZGVzY3IgKi8KKwlfX2J1aWx0 aW5fZXhwZWN0KChYKSwxKSwgLyogQkVIICovCisJKCkJCS8qIGF0dHJpYnMgKi8KKykKKworREVG X01BQ1JPKAorCVVOTElLRUxZLAkvKiBOQU1FICovCisJKFgpLAkJLyogUEFSQU1TICovCisJIlgi LAkJLyogc2Rlc2NyICovCisJIlgiLAkJLyogbGRlc2NyICovCisJX19idWlsdGluX2V4cGVjdCgo WCksMCksIC8qIEJFSCAqLworCSgpCQkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTygKKwlD QU5DRUwsIC8qIG1hY3JvIG5hbWUgKi8KKwksIC8qIHBhcmFtZXRlcnMgKi8KKwkiTk9QIiwgLyog c2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiTk9QIHRoaXMgaW5zdHJ1Y3Rpb24iLCAvKiBsb25nIGRl c2NyaXB0aW9uICovCisJe2lmICh0aHJlYWQtPmxhc3RfcGt0KSB0aHJlYWQtPmxhc3RfcGt0LT5z bG90X2NhbmNlbGxlZCB8PSAoMTw8aW5zbi0+c2xvdCk7IHJldHVybjt9ICwgLyogYmVoYXZpb3Ig Ki8KKwkoQV9DT05ERVhFQykKKykKKworREVGX01BQ1JPKAorCVNUT1JFX1pFUk8sIC8qIG1hY3Jv IG5hbWUgKi8KKwksIC8qIHBhcmFtZXRlcnMgKi8KKwkiWmVybyBTdG9yZSIsIC8qIHNob3J0IGRl c2NyaXB0aW9uICovCisJIk5PUCB0aGlzIGluc3RydWN0aW9uIiwgLyogbG9uZyBkZXNjcmlwdGlv biAqLworCXtpZiAodGhyZWFkLT5sYXN0X3BrdCkgdGhyZWFkLT5sYXN0X3BrdC0+c2xvdF96ZXJv X2J5dGVfc3RvcmUgfD0gKDE8PGluc24tPnNsb3QpOyB9ICwgLyogYmVoYXZpb3IgKi8KKwkoQV9D T05ERVhFQykKKykKKworREVGX01BQ1JPKAorCUxPQURfQ0FOQ0VMLCAvKiBtYWNybyBuYW1lICov CisJKEVBKSwgLyogcGFyYW1ldGVycyAqLworCSJOT1AiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAq LworCSJOT1AgdGhpcyBpbnN0cnVjdGlvbiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwl7bWVt X2dlbmVyYWxfbG9hZF9jYW5jZWxsZWQodGhyZWFkLEVBLGluc24pO0NBTkNFTDt9ICwgLyogYmVo YXZpb3IgKi8KKwkoQV9DT05ERVhFQykKKykKKworREVGX01BQ1JPKAorCVNUT1JFX0NBTkNFTCwg LyogbWFjcm8gbmFtZSAqLworCShFQSksIC8qIHBhcmFtZXRlcnMgKi8KKwkiTk9QIiwgLyogc2hv cnQgZGVzY3JpcHRpb24gKi8KKwkiTk9QIHRoaXMgaW5zdHJ1Y3Rpb24iLCAvKiBsb25nIGRlc2Ny aXB0aW9uICovCisJe21lbV9nZW5lcmFsX3N0b3JlX2NhbmNlbGxlZCh0aHJlYWQsRUEsaW5zbik7 Q0FOQ0VMO30gLCAvKiBiZWhhdmlvciAqLworCShBX0NPTkRFWEVDKQorKQorCitERUZfTUFDUk8o CisJSVNfQ0FOQ0VMTEVELCAvKiBtYWNybyBuYW1lICovCisJKFNMT1QpLCAvKiBwYXJhbWV0ZXJz ICovCisJIiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIiIsIC8qIGxvbmcgZGVzY3JpcHRp b24gKi8KKwkoKHRocmVhZC0+bGFzdF9wa3QtPnNsb3RfY2FuY2VsbGVkID4+IFNMT1QpJjEpICwg LyogYmVoYXZpb3IgKi8KKwkvKiBhdHRyaWIgKi8KKykKKworREVGX01BQ1JPKAorCWZNQVgsIC8q IG1hY3JvIG5hbWUgKi8KKwkoQSxCKSwgLyogcGFyYW1ldGVycyAqLworCSJtYXgoQSxCKSIsIC8q IHNob3J0IGRlc2NyaXB0aW9uICovCisJInRoZSBsYXJnZXIgb2YgQSBhbmQgQiIsIC8qIGxvbmcg ZGVzY3JpcHRpb24gKi8KKwkoKChBKSA+IChCKSkgPyAoQSkgOiAoQikpLCAvKiBiZWhhdmlvciAq LworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZNSU4sIC8q IG1hY3JvIG5hbWUgKi8KKwkoQSxCKSwgLyogcGFyYW1ldGVycyAqLworCSJtaW4oQSxCKSIsIC8q IHNob3J0IGRlc2NyaXB0aW9uICovCisJInRoZSBzbWFsbGVyIG9mIEEgYW5kIEIiLCAvKiBsb25n IGRlc2NyaXB0aW9uICovCisJKCgoQSkgPCAoQikpID8gKEEpIDogKEIpKSwgLyogYmVoYXZpb3Ig Ki8KKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmQUJTLCAv KiBtYWNybyBuYW1lICovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJIkFCUyhBKSIsIC8qIHNo b3J0IGRlc2NyaXB0aW9uICovCisJImlmIEEgaXMgbGVzcyB0aGFuIHplcm8gdGhlbiBBPS1BIiwg LyogbG9uZyBkZXNjcmlwdGlvbiAqLworCSgoKEEpPDApPygtKEEpKTooQSkpLCAvKiBiZWhhdmlv ciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworCisvKiBCaXQgaW5zZXJ0ICov CitERUZfTUFDUk8oCisJZklOU0VSVF9CSVRTLChSRUcsV0lEVEgsT0ZGU0VULElOVkFMKSwKKwki UkVHWyhXSURUSC0xK09GRlNFVCk6T0ZGU0VUXT1JTlZBTCIsCisJIlJFR1soV0lEVEgtMStPRkZT RVQpOk9GRlNFVF09SU5WQUwiLAorICAgICAgICB7CisJICAgUkVHID0gKChSRUcpICYgfigoKGZD T05TVExMKDEpPDwoV0lEVEgpKS0xKTw8KE9GRlNFVCkpKSB8ICgoKElOVkFMKSAmICgoZkNPTlNU TEwoMSk8PChXSURUSCkpLTEpKSA8PCAoT0ZGU0VUKSk7CisgICAgICAgIH0sCisJLyogYXR0cmli cyAqLworKQorCisvKiBCaXQgZXh0cmFjdCAqLworREVGX01BQ1JPKAorCWZFWFRSQUNUVV9CSVRT LChJTlJFRyxXSURUSCxPRkZTRVQpLAorCSJJTlJFR1soV0lEVEgrT0ZGU0VULTEpOk9GRlNFVF0i LAorCSJJTlJFR1soV0lEVEgrT0ZGU0VULTEpOk9GRlNFVF0iLAorCShmWlhUTihXSURUSCwzMiwo SU5SRUcgPj4gT0ZGU0VUKSkpLAorCS8qIGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKAorCWZF WFRSQUNUVV9CSURJUiwoSU5SRUcsV0lEVEgsT0ZGU0VUKSwKKwkiSU5SRUdbKFdJRFRIK09GRlNF VC0xKTpPRkZTRVRdIiwKKwkiSU5SRUdbKFdJRFRIK09GRlNFVC0xKTpPRkZTRVRdIiwKKwkoZlpY VE4oV0lEVEgsMzIsZkJJRElSX0xTSElGVFIoKElOUkVHKSwoT0ZGU0VUKSw0XzgpKSksCisJLyog YXR0cmlicyAqLworKQorCitERUZfTUFDUk8oCisJZkVYVFJBQ1RVX1JBTkdFLChJTlJFRyxISUJJ VCxMT1dCSVQpLAorCSJJTlJFR1tISUJJVDpMT1dCSVRdIiwKKwkiSU5SRUdbSElCSVQ6TE9XQklU XSIsCisJKGZaWFROKChISUJJVC1MT1dCSVQrMSksMzIsKElOUkVHID4+IExPV0JJVCkpKSwKKwkv KiBhdHRyaWJzICovCispCisKKworREVGX01BQ1JPKAorCWZJTlNFUlRfUkFOR0UsKElOUkVHLEhJ QklULExPV0JJVCxJTlZBTCksCisJIklOUkVHW0hJQklUOkxPV0JJVF09SU5WQUwiLAorCSJJTlJF R1tISUJJVDpMT1dCSVRdPUlOVkFMIiwKKyAgICAgICAgeworICAgICAgICAgIGludCBvZmZzZXQ9 TE9XQklUOworICAgICAgICAgIGludCB3aWR0aD1ISUJJVC1MT1dCSVQrMTsKKyAgCSAgLyogY2xl YXIgYml0cyB3aGVyZSBuZXcgYml0cyBnbyAqLworCSAgSU5SRUcgJj0gfigoKGZDT05TVExMKDEp PDx3aWR0aCktMSk8PG9mZnNldCk7CisJICAvKiBPUiBpbiBuZXcgYml0cyAqLworCSAgSU5SRUcg fD0gKChJTlZBTCAmICgoZkNPTlNUTEwoMSk8PHdpZHRoKS0xKSkgPDwgb2Zmc2V0KTsKKyAgICAg ICAgfSwKKwkvKiBhdHRyaWJzICovCispCisKKworREVGX01BQ1JPKAorCWY4QklUU09GLChWQUwp LAorCSJWQUwgPyAweGZmIDogMHgwMCIsCisJIlZBTCA/IDB4ZmYgOiAweDAwIiwKKwkoIChWQUwp ID8gMHhmZiA6IDB4MDApLAorCS8qIGF0dHJpYnMgKi8KKykKKworREVGX01BQ1JPKAorCWZMU0JP TEQsKFZBTCksCisJIlZBTFswXSIsCisJIkxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBWQUwiLAor CSgoVkFMKSAmIDEpLAorCShBX0RPVE9MRCkKKykKKworREVGX01BQ1JPKAorCWZMU0JORVcsKFBO VU0pLAorCSJQTlVNLm5ld1swXSIsCisJIkxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBuZXcgUE5V TSIsCisJcHJlZGxvZ19yZWFkKHRocmVhZCxQTlVNKSwKKwkoQV9ET1RORVcpCispCisKK0RFRl9N QUNSTygKKwlmTFNCTkVXMCwsCisJIlAwLm5ld1swXSIsCisJIkxlYXN0IHNpZ25pZmljYW50IGJp dCBvZiBuZXcgUDAiLAorCXByZWRsb2dfcmVhZCh0aHJlYWQsMCksCisJKEFfRE9UTkVXLEFfSU1Q TElDSVRfUkVBRFNfUDApCispCisKK0RFRl9NQUNSTygKKwlmTFNCTkVXMSwsCisJIlAxLm5ld1sw XSIsCisJIkxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBuZXcgUDEiLAorCXByZWRsb2dfcmVhZCh0 aHJlYWQsMSksCisJKEFfRE9UTkVXLEFfSU1QTElDSVRfUkVBRFNfUDEpCispCisKK0RFRl9NQUNS TygKKwlmTFNCT0xETk9ULChWQUwpLAorCSIhVkFMWzBdIiwKKwkiIUxlYXN0IHNpZ25pZmljYW50 IGJpdCBvZiBWQUwiLAorCSghZkxTQk9MRChWQUwpKSwKKwkoQV9ET1RPTEQsQV9JTlZQUkVEKQor KQorCitERUZfTUFDUk8oCisJZkxTQk5FV05PVCwoUE5VTSksCisJIiFQTlVNLm5ld1swXSIsCisJ IiFMZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgbmV3IFBOVU0iLAorCSghZkxTQk5FVyhQTlVNKSks CisJKEFfRE9UTkVXLEFfSU5WUFJFRCkKKykKKworREVGX01BQ1JPKAorCWZMU0JORVcwTk9ULCwK KwkiIVAwLm5ld1swXSIsCisJIiFMZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgbmV3IFAwIiwKKwko IWZMU0JORVcwKSwKKwkoQV9ET1RORVcsQV9JTlZQUkVELEFfSU1QTElDSVRfUkVBRFNfUDApCisp CisKK0RFRl9NQUNSTygKKwlmTFNCTkVXMU5PVCwsCisJIlAxLm5ld1swXSIsCisJIkxlYXN0IHNp Z25pZmljYW50IGJpdCBvZiBuZXcgUDEiLAorCSghZkxTQk5FVzEpLAorCShBX0RPVE5FVyxBX0lO VlBSRUQsQV9JTVBMSUNJVF9SRUFEU19QMSkKKykKKworREVGX01BQ1JPKAorCWZORVdSRUcsKFJO VU0pLAorCSJSTlVNLm5ldyIsCisJIlJlZ2lzdGVyIHZhbHVlIHByb2R1Y2VkIGluIHRoaXMgcGFj a2V0IiwKKwkoe2lmIChuZXd2YWx1ZV9taXNzaW5nKHRocmVhZCxSTlVNKSB8fAorICAgICAgSVNf Q0FOQ0VMTEVEKGluc24tPm5ld192YWx1ZV9wcm9kdWNlcl9zbG90KSkgQ0FOQ0VMOyByZWdsb2df cmVhZCh0aHJlYWQsUk5VTSk7fSksCisJKEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9O TFkpCispCisvLyBTdG9yZSBuZXcgd2l0aCBhIG1pc3NpbmcgbmV3dmFsdWUgb3IgY2FuY2VsbGVk IGdvZXMgb3V0IGFzIGEgemVybyBieXRlIHN0b3JlIGluIFY2NQorLy8gdGFrZSBhZHZhbnRhZ2Ug b2YgdGhlIGZhY3QgdGhhdCByZWdsb2dfcmVhZCByZXR1cm5zIHplcm8gZm9yIG5vdCB2YWxpZCBy bnVtCitERUZfTUFDUk8oCisJZk5FV1JFR19TVCwoUk5VTSksCisJIlJOVU0ubmV3IiwKKwkiUmVn aXN0ZXIgdmFsdWUgcHJvZHVjZWQgaW4gdGhpcyBwYWNrZXQgZm9yIHN0b3JlIiwKKwkoe2lmIChu ZXd2YWx1ZV9taXNzaW5nKHRocmVhZCxSTlVNKSB8fAorICAgICAgSVNfQ0FOQ0VMTEVEKGluc24t Pm5ld192YWx1ZV9wcm9kdWNlcl9zbG90KSkgeyBTVE9SRV9aRVJPOyBSTlVNID0gLTE7IH07IHJl Z2xvZ19yZWFkKHRocmVhZCxSTlVNKTt9KSwKKwkoQV9ET1RORVdWQUxVRSxBX1JFU1RSSUNUX1NM T1QwT05MWSkKKykKKworREVGX01BQ1JPKAorCWZNRU1aTkVXLChSTlVNKSwKKwkiUk5VTS5uZXcg PT0gMCIsCisJIk5ld2x5IGxvYWRlZCB2YWx1ZSBpcyB6ZXJvIiwKKwkoUk5VTSA9PSAwKSwKKwkv KiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTygKKwlmTUVNTlpORVcsKFJOVU0pLAorCSJSTlVN Lm5ldyAhPSAwIiwKKwkiTmV3bHkgbG9hZGVkIHZhbHVlIGlzIG5vbi16ZXJvIiwKKwkoUk5VTSAh PSAwKSwKKwkvKiBhdHRyaWJzICovCispCisKK0RFRl9NQUNSTygKKwlmVlNBVFVWQUxOLChOLFZB TCksCisJIk4tQml0IFVuc2lnbmVkIFNhdHVyYXRpb24gVmFsdWUgZm9yIHNpZ24gb2YgVkFMIiwK KwkiTi1CaXQgVW5zaWduZWQgU2F0dXJhdGlvbiBWYWx1ZSBmb3Igc2lnbiBvZiBWQUwiLAorCSh7 ICgoVkFMKSA8IDApID8gMCA6ICgoMUxMPDwoTikpLTEpO30pLAorCShBX1VTQVRVUkFURSkKKykK KworREVGX01BQ1JPKAorCWZTQVRVVkFMTiwoTixWQUwpLAorCSJOLUJpdCBVbnNpZ25lZCBTYXR1 cmF0aW9uIFZhbHVlIGZvciBzaWduIG9mIFZBTCIsCisJIk4tQml0IFVuc2lnbmVkIFNhdHVyYXRp b24gVmFsdWUgZm9yIHNpZ24gb2YgVkFMIiwKKwkoe2ZTRVRfT1ZFUkZMT1coKTsgKChWQUwpIDwg MCkgPyAwIDogKCgxTEw8PChOKSktMSk7fSksCisJKEFfVVNBVFVSQVRFKQorKQorCitERUZfTUFD Uk8oCisJZlNBVFZBTE4sKE4sVkFMKSwKKwkiTi1CaXQgU2F0dXJhdGlvbiBWYWx1ZSBmb3Igc2ln biBvZiBWQUwiLAorCSJOLUJpdCBTYXR1cmF0aW9uIFZhbHVlIGZvciBzaWduIG9mIFZBTCIsCisJ KHtmU0VUX09WRVJGTE9XKCk7ICgoVkFMKSA8IDApID8gKC0oMUxMPDwoKE4pLTEpKSkgOiAoKDFM TDw8KChOKS0xKSktMSk7fSksCisJKEFfU0FUVVJBVEUpCispCisKK0RFRl9NQUNSTygKKwlmVlNB VFZBTE4sKE4sVkFMKSwKKwkiTi1CaXQgU2F0dXJhdGlvbiBWYWx1ZSBmb3Igc2lnbiBvZiBWQUwi LAorCSJOLUJpdCBTYXR1cmF0aW9uIFZhbHVlIGZvciBzaWduIG9mIFZBTCIsCisJKHsoKFZBTCkg PCAwKSA/ICgtKDFMTDw8KChOKS0xKSkpIDogKCgxTEw8PCgoTiktMSkpLTEpO30pLAorCShBX1NB VFVSQVRFKQorKQorCitERUZfTUFDUk8oCisJZlpYVE4sIC8qIG1hY3JvIG5hbWUgKi8KKwkoTixN LFZBTCksCisJInp4dF97Ti0+TX0oVkFMKSIsIC8qIHNob3J0IGRlc2NyICovCisJIlplcm8gZXh0 ZW5kIE4gYml0cyBmcm9tIFZBTCIsCisJKChWQUwpICYgKCgxTEw8PChOKSktMSkpLAorCS8qIGF0 dHJpYnMgKi8KKykKKworREVGX01BQ1JPKAorCWZTWFROLCAvKiBtYWNybyBuYW1lICovCisJKE4s TSxWQUwpLAorCSJzeHRfe04tPk19KFZBTCkiLCAvKiBzaG9ydCBkZXNjciAqLworCSJTaWduIGV4 dGVuZCBOIGJpdHMgZnJvbSBWQUwiLAorCSgoZlpYVE4oTixNLFZBTCkgXiAoMUxMPDwoKE4pLTEp KSkgLSAoMUxMPDwoKE4pLTEpKSksCisJLyogYXR0cmlicyAqLworKQorCitERUZfTUFDUk8oCisJ ZlNBVE4sCisJKE4sVkFMKSwKKwkic2F0XyMjTihWQUwpIiwgLyogc2hvcnQgZGVzY3IgKi8KKwki U2F0dXJhdGUgVkFMIHRvIE4gYml0cyIsCisJKChmU1hUTihOLDY0LFZBTCkgPT0gKFZBTCkpID8g KFZBTCkgOiBmU0FUVkFMTihOLFZBTCkpLAorCShBX1NBVFVSQVRFKQorKQorREVGX01BQ1JPKAor CWZWU0FUTiwKKwkoTixWQUwpLAorCSJzYXRfIyNOKFZBTCkiLCAvKiBzaG9ydCBkZXNjciAqLwor CSJTYXR1cmF0ZSBWQUwgdG8gTiBiaXRzIiwKKwkoKGZTWFROKE4sNjQsVkFMKSA9PSAoVkFMKSkg PyAoVkFMKSA6IGZWU0FUVkFMTihOLFZBTCkpLAorCShBX1NBVFVSQVRFKQorKQorCitERUZfTUFD Uk8oCisJZkFERFNBVDY0LAorCShEU1QsQSxCKSwKKwkiRFNUPXNhdDY0KEErQikiLCAvKiBzaG9y dCBkZXNjciAqLworCSJEU1Q9c2F0NjQoQStCKSIsCisJeworCSAgc2l6ZTh1X3QgX19hID0gZkNB U1Q4dShBKTsKKwkgIHNpemU4dV90IF9fYiA9IGZDQVNUOHUoQik7CisJICBzaXplOHVfdCBfX3N1 bSA9IF9fYSArIF9fYjsKKwkgIHNpemU4dV90IF9feG9yID0gX19hIF4gX19iOworCSAgY29uc3Qg c2l6ZTh1X3QgX19tYXNrID0gMHg4MDAwMDAwMDAwMDAwMDAwVUxMOworCSAgaWYgKF9feG9yICYg X19tYXNrKSB7CisJCS8qIE9wcG9zaXRlIHNpZ25zLCBPSyAqLworCQlEU1QgPSBfX3N1bTsKKwkg IH0gZWxzZSBpZiAoKF9fYSBeIF9fc3VtKSAmIF9fbWFzaykgeworCQkvKiBTaWducyBtaXNtYXRj aCAqLworCQlpZiAoX19zdW0gJiBfX21hc2spIHsKKwkJCS8qIG92ZXJmbG93ZWQgdG8gbmVnYXRp dmUsIG1ha2UgbWF4IHBvcyAqLworCQkJRFNUPTB4N0ZGRkZGRkZGRkZGRkZGRkxMOyBmU0VUX09W RVJGTE9XKCk7CisJCX0gZWxzZSB7CisJCQkvKiBvdmVyZmxvd2VkIHRvIHBvc2l0aXZlLCBtYWtl IG1heCBuZWcgKi8KKwkJCURTVD0weDgwMDAwMDAwMDAwMDAwMDBMTDsgZlNFVF9PVkVSRkxPVygp OworCQl9CisJICB9IGVsc2UgeworCQkvKiBzaWducyBkaWQgbm90IG1pc21hdGNoLCBPSyAqLwor CQlEU1QgPSBfX3N1bTsKKwkgIH0KKyAgICAgICAgfSwKKwkoQV9TQVRVUkFURSkKKykKKworREVG X01BQ1JPKAorCWZWU0FUVU4sCisJKE4sVkFMKSwKKwkidXNhdF8jI04oVkFMKSIsIC8qIHNob3J0 IGRlc2NyICovCisJIlNhdHVyYXRlIFZBTCB0byBOIGJpdHMiLAorCSgoZlpYVE4oTiw2NCxWQUwp ID09IChWQUwpKSA/IChWQUwpIDogZlZTQVRVVkFMTihOLFZBTCkpLAorCShBX1VTQVRVUkFURSkK KykKKworREVGX01BQ1JPKAorCWZTQVRVTiwKKwkoTixWQUwpLAorCSJ1c2F0XyMjTihWQUwpIiwg Lyogc2hvcnQgZGVzY3IgKi8KKwkiU2F0dXJhdGUgVkFMIHRvIE4gYml0cyIsCisJKChmWlhUTihO LDY0LFZBTCkgPT0gKFZBTCkpID8gKFZBTCkgOiBmU0FUVVZBTE4oTixWQUwpKSwKKwkoQV9VU0FU VVJBVEUpCispCisKK0RFRl9NQUNSTygKKwlmU0FUSCwKKwkoVkFMKSwKKwkic2F0XzE2KFZBTCki LCAvKiBzaG9ydCBkZXNjciAqLworCSJTYXR1cmF0ZSBWQUwgdG8gYSBzaWduZWQgaGFsZiIsCisJ KGZTQVROKDE2LFZBTCkpLAorCShBX1NBVFVSQVRFKQorKQorCisKK0RFRl9NQUNSTygKKwlmU0FU VUgsCisJKFZBTCksCisJInVzYXRfMTYoVkFMKSIsIC8qIHNob3J0IGRlc2NyICovCisJIlNhdHVy YXRlIFZBTCB0byBhbiB1bnNpZ25lZCBoYWxmIiwKKwkoZlNBVFVOKDE2LFZBTCkpLAorCShBX1VT QVRVUkFURSkKKykKKworREVGX01BQ1JPKAorCWZWU0FUSCwKKwkoVkFMKSwKKwkic2F0XzE2KFZB TCkiLCAvKiBzaG9ydCBkZXNjciAqLworCSJTYXR1cmF0ZSBWQUwgdG8gYSBzaWduZWQgaGFsZiIs CisJKGZWU0FUTigxNixWQUwpKSwKKwkoQV9TQVRVUkFURSkKKykKKworREVGX01BQ1JPKAorCWZW U0FUVUgsCisJKFZBTCksCisJInVzYXRfMTYoVkFMKSIsIC8qIHNob3J0IGRlc2NyICovCisJIlNh dHVyYXRlIFZBTCB0byBhIHNpZ25lZCBoYWxmIiwKKwkoZlZTQVRVTigxNixWQUwpKSwKKwkoQV9V U0FUVVJBVEUpCispCisKKworREVGX01BQ1JPKAorCWZTQVRVQiwKKwkoVkFMKSwKKwkidXNhdF84 KFZBTCkiLCAvKiBzaG9ydCBkZXNjciAqLworCSJTYXR1cmF0ZSBWQUwgdG8gYW4gdW5zaWduZWQg Ynl0ZSIsCisJKGZTQVRVTig4LFZBTCkpLAorCShBX1VTQVRVUkFURSkKKykKK0RFRl9NQUNSTygK KwlmU0FUQiwKKwkoVkFMKSwKKwkic2F0XzgoVkFMKSIsIC8qIHNob3J0IGRlc2NyICovCisJIlNh dHVyYXRlIFZBTCB0byBhIHNpZ25lZCBieXRlIiwKKwkoZlNBVE4oOCxWQUwpKSwKKwkoQV9TQVRV UkFURSkKKykKKworCitERUZfTUFDUk8oCisJZlZTQVRVQiwKKwkoVkFMKSwKKwkidXNhdF84KFZB TCkiLCAvKiBzaG9ydCBkZXNjciAqLworCSJTYXR1cmF0ZSBWQUwgdG8gYSB1bnNpZ25lZCBieXRl IiwKKwkoZlZTQVRVTig4LFZBTCkpLAorCShBX1VTQVRVUkFURSkKKykKK0RFRl9NQUNSTygKKwlm VlNBVEIsCisJKFZBTCksCisJInNhdF84KFZBTCkiLCAvKiBzaG9ydCBkZXNjciAqLworCSJTYXR1 cmF0ZSBWQUwgdG8gYSBzaWduZWQgYnl0ZSIsCisJKGZWU0FUTig4LFZBTCkpLAorCShBX1NBVFVS QVRFKQorKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qIGltbWVkaWF0ZSBleHRlbnNpb24gICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9NQUNSTygKKwlmSU1NRVhULAorCShJTU0p LAorCSJhcHBseV9leHRlbnNpb24oSU1NKSIsCisJIkFwcGx5IGV4dGVuc2lvbiB0byBJTU0iLAor CShJTU0gPSBJTU0gLyogKGluc24tPmV4dGVuc2lvbl92YWxpZD8oZkdFVF9FWFRFTlNJT04gfCBm WlhUTig2LDMyLChJTU0pKSk6KElNTSkpICovICksCisJKEFfRVhURU5EQUJMRSkKKykKKworREVG X01BQ1JPKAorCWZNVVNUX0lNTUVYVCwKKwkoSU1NKSwKKwkiYXBwbHlfZXh0ZW5zaW9uKElNTSki LAorCSJBcHBseSBleHRlbnNpb24gdG8gSU1NIiwKKwlmSU1NRVhUKElNTSksCisJKEFfRVhURU5E QUJMRSxBX01VU1RfRVhURU5EKQorKQorCitERUZfTUFDUk8oCisJZlBDQUxJR04sCisJKElNTSks CisJIklNTT1JTU0gJiB+UENBTElHTl9NQVNLIiwKKwkiIiwKKwlJTU09KElNTSAmIH5QQ0FMSUdO X01BU0spLAorCShBX0VYVEVOREFCTEUpCispCisKK0RFRl9NQUNSTygKKwlmR0VUX0VYVEVOU0lP TiwKKwksCisJImV4dGVuc2lvbiIsCisJImV4dGVuc2lvbiIsCisJaW5zbi0+ZXh0ZW5zaW9uLAor CS8qIGF0dHJzICovCispCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworLyogUmVhZCBhbmQgV3JpdGUgSW1wbGljaXQgUmVncyAgICAgICovCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworREVGX01BQ1JPKAorCWZSRUFEX0lSRUcsIC8q IHJlYWQgbGluayByZWdpc3RlciAqLworCShWQUwpLCAvKiBwYXJhbWV0ZXJzICovCisJIkkiLCAv KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJJIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShm U1hUTigxMSw2NCwoKChWQUwpICYgMHhmMDAwMDAwMCk+PjIxKSB8ICgoVkFMPj4xNykmMHg3Zikg KSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKCkKKykKKworCitERUZfTUFDUk8oCisJZlJF QURfUjAsIC8qIHJlYWQgcjAgKi8KKwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJSMCIsIC8qIHNo b3J0IGRlc2NyaXB0aW9uICovCisJIlIwIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShSRUFE X1JSRUcoMCkpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCShBX0lNUExJQ0lUX1JFQURTX1Iw MCkKKykKKworREVGX01BQ1JPKAorCWZSRUFEX0xSLCAvKiByZWFkIGxpbmsgcmVnaXN0ZXIgKi8K KwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJMUiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJ IkxSIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShSRUFEX1JSRUcoUkVHX0xSKSksICAgICAg ICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfUkVBRFNfTFIpCispCisKK0RFRl9NQUNS TygKKwlmUkVBRF9TU1IsIC8qIHJlYWQgbGluayByZWdpc3RlciAqLworCSgpLCAvKiBwYXJhbWV0 ZXJzICovCisJIlNTUiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlNTUiIsIC8qIGxvbmcg ZGVzY3JpcHRpb24gKi8KKwkoUkVBRF9SUkVHKFJFR19TU1IpKSwgICAgICAgICAgLyogYmVoYXZp b3IgKi8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZldSSVRFX1IwLCAvKiB3cml0ZSByMCAqLwor CShBKSwgLyogcGFyYW1ldGVycyAqLworCSJSMD1BIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8K KwkiUjA9QSIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwlXUklURV9SUkVHKDAsQSksICAgICAg ICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfV1JJVEVTX1IwMCkKKykKKworREVGX01B Q1JPKAorCWZXUklURV9MUiwgLyogd3JpdGUgbHIgKi8KKwkoQSksIC8qIHBhcmFtZXRlcnMgKi8K KwkiTFI9QSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIkxSPUEiLCAvKiBsb25nIGRlc2Ny aXB0aW9uICovCisJV1JJVEVfUlJFRyhSRUdfTFIsQSksICAgICAgICAgIC8qIGJlaGF2aW9yICov CisJKEFfSU1QTElDSVRfV1JJVEVTX0xSKQorKQorCitERUZfTUFDUk8oCisJZldSSVRFX0ZQLCAv KiB3cml0ZSBzcCAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJGUD1BIiwgLyogc2hvcnQg ZGVzY3JpcHRpb24gKi8KKwkiRlA9QSIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwlXUklURV9S UkVHKFJFR19GUCxBKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklU RVNfRlApCispCisKK0RFRl9NQUNSTygKKwlmV1JJVEVfU1AsIC8qIHdyaXRlIHNwICovCisJKEEp LCAvKiBwYXJhbWV0ZXJzICovCisJIlNQPUEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJT UD1BIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworICAgICAgICBXUklURV9SUkVHKFJFR19TUCxB KSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfU1ApCispCisK K0RFRl9NQUNSTygKKwlmV1JJVEVfR09TUCwgLyogd3JpdGUgZ29zcCAqLworCShBKSwgLyogcGFy YW1ldGVycyAqLworCSJHT1NQPUEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJHT1NQPUEi LCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisgICAgICAgIFdSSVRFX1JSRUcoUkVHX0dPU1AsQSks ICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfV1JJVEVTX0dPU1ApCispCisK K0RFRl9NQUNSTygKKwlmV1JJVEVfR1AsIC8qIHdyaXRlIGdwICovCisJKEEpLCAvKiBwYXJhbWV0 ZXJzICovCisJIkdQPUEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJHUD1BIiwgLyogbG9u ZyBkZXNjcmlwdGlvbiAqLworCVdSSVRFX1JSRUcoUkVHX0dQLEEpLCAgICAgICAgICAvKiBiZWhh dmlvciAqLworCShBX0lNUExJQ0lUX1dSSVRFU19HUCkKKykKKworREVGX01BQ1JPKAorCWZSRUFE X1NQLCAvKiByZWFkIHN0YWNrIHBvaW50ZXIgKi8KKwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJT UCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlNQIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAq LworCShSRUFEX1JSRUcoUkVHX1NQKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1Q TElDSVRfUkVBRFNfU1ApCispCisKK0RFRl9NQUNSTygKKwlmUkVBRF9HT1NQLCAvKiByZWFkIGd1 ZXN0IG90aGVyIHN0YWNrIHBvaW50ZXIgKi8KKwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJHT1NQ IiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiR09TUCIsIC8qIGxvbmcgZGVzY3JpcHRpb24g Ki8KKwkoUkVBRF9SUkVHKFJFR19HT1NQKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFf SU1QTElDSVRfUkVBRFNfR09TUCkKKykKKworREVGX01BQ1JPKAorCWZSRUFEX0dFTFIsIC8qIHJl YWQgZ3Vlc3Qgb3RoZXIgc3RhY2sgcG9pbnRlciAqLworCSgpLCAvKiBwYXJhbWV0ZXJzICovCisJ IkdFTFIiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJHRUxSIiwgLyogbG9uZyBkZXNjcmlw dGlvbiAqLworCShSRUFEX1JSRUcoUkVHX0dFTFIpKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8K KwkoQV9JTVBMSUNJVF9SRUFEU19HRUxSKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfR0VWQiwg LyogcmVhZCBndWVzdCBvdGhlciBzdGFjayBwb2ludGVyICovCisJKCksIC8qIHBhcmFtZXRlcnMg Ki8KKwkiR0VWQiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIkdFVkIiLCAvKiBsb25nIGRl c2NyaXB0aW9uICovCisJKFJFQURfUlJFRyhSRUdfR0VWQikpLCAgICAgICAgICAvKiBiZWhhdmlv ciAqLworCShBX0lNUExJQ0lUX1JFQURTX0dFVkIpCispCisKK0RFRl9NQUNSTygKKwlmUkVBRF9D U1JFRywgLyogcmVhZCBzdGFjayBwb2ludGVyICovCisJKE4pLCAvKiBwYXJhbWV0ZXJzICovCisJ IkNTIE4iLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJDUyBOIiwgLyogbG9uZyBkZXNjcmlw dGlvbiAqLworCShSRUFEX1JSRUcoUkVHX0NTQStOKSksICAgICAgICAgIC8qIGJlaGF2aW9yICov CisJKEFfSU1QTElDSVRfUkVBRFNfQ1MpCispCisKK0RFRl9NQUNSTygKKwlmUkVBRF9MQzAsIC8q IHJlYWQgbG9vcCBjb3VudCAqLworCSwgLyogcGFyYW1ldGVycyAqLworCSJMQzAiLCAvKiBzaG9y dCBkZXNjcmlwdGlvbiAqLworCSJMQzAiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKFJFQURf UlJFRyhSRUdfTEMwKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfUkVB RFNfTEMwKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfTEMxLCAvKiByZWFkIGxvb3AgY291bnQg Ki8KKwksIC8qIHBhcmFtZXRlcnMgKi8KKwkiTEMxIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8K KwkiTEMxIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShSRUFEX1JSRUcoUkVHX0xDMSkpLCAg ICAgICAgICAvKiBiZWhhdmlvciAqLworCShBX0lNUExJQ0lUX1JFQURTX0xDMSkKKykKKworREVG X01BQ1JPKAorCWZSRUFEX1NBMCwgLyogcmVhZCBzdGFydCBhZGRyICovCisJLCAvKiBwYXJhbWV0 ZXJzICovCisJIlNBMCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlNBMCIsIC8qIGxvbmcg ZGVzY3JpcHRpb24gKi8KKwkoUkVBRF9SUkVHKFJFR19TQTApKSwgICAgICAgICAgLyogYmVoYXZp b3IgKi8KKwkoQV9JTVBMSUNJVF9SRUFEU19TQTApCispCisKK0RFRl9NQUNSTygKKwlmUkVBRF9T QTEsIC8qIHJlYWQgc3RhcnQgYWRkciAqLworCSwgLyogcGFyYW1ldGVycyAqLworCSJTQTEiLCAv KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJTQTEiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJ KFJFQURfUlJFRyhSRUdfU0ExKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElD SVRfUkVBRFNfU0ExKQorKQorCisKK0RFRl9NQUNSTygKKwlmUkVBRF9GUCwgLyogcmVhZCBzdGFj ayBwb2ludGVyICovCisJKCksIC8qIHBhcmFtZXRlcnMgKi8KKwkiRlAiLCAvKiBzaG9ydCBkZXNj cmlwdGlvbiAqLworCSJGUCIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoUkVBRF9SUkVHKFJF R19GUCkpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCShBX0lNUExJQ0lUX1JFQURTX0ZQKQor KQorCitERUZfTUFDUk8oCisJZlJFQURfR1AsIC8qIHJlYWQgZ2xvYmFsIHBvaW50ZXIgKi8KKwko KSwgLyogcGFyYW1ldGVycyAqLworCSIoQ29uc3RhbnRfZXh0ZW5kZWQgPyAoMCkgOiBHUCkiLCAv KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSIoQ29uc3RhbnRfZXh0ZW5kZWQgPyAoMCkgOiBHUCki LCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKGluc24tPmV4dGVuc2lvbl92YWxpZCA/IDAgOiBS RUFEX1JSRUcoUkVHX0dQKSksICAgICAgICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRf UkVBRFNfR1ApCispCisKK0RFRl9NQUNSTygKKwlmUkVBRF9QQywgLyogcmVhZCBQQyAqLworCSgp LCAvKiBwYXJhbWV0ZXJzICovCisJIlBDIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiUEMi LCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKFJFQURfUlJFRyhSRUdfUEMpKSwgICAgICAgICAg LyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9SRUFEU19QQykKKykKKworREVGX01BQ1JPKAor CWZSRUFEX05QQywgLyogcmVhZCBQQyAqLworCSgpLCAvKiBwYXJhbWV0ZXJzICovCisJIk5QQyIs IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIk5QQyIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8K KwkodGhyZWFkLT5uZXh0X1BDICYgKDB4ZmZmZmZmZmUpKSwgICAgICAgICAgLyogYmVoYXZpb3Ig Ki8KKwkoKQorKQorCitERUZfTUFDUk8oCisJZlJFQURfUDAsIC8qIHJlYWQgUHJlZGljYXRlIDAg Ki8KKwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJQMCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICov CisJIlAwIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShSRUFEX1BSRUcoMCkpLCAgICAgICAg ICAvKiBiZWhhdmlvciAqLworCShBX0lNUExJQ0lUX1JFQURTX1AwKQorKQorCitERUZfTUFDUk8o CisJZlJFQURfUDMsIC8qIHJlYWQgUHJlZGljYXRlIDAgKi8KKwkoKSwgLyogcGFyYW1ldGVycyAq LworCSJQMyIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlAzIiwgLyogbG9uZyBkZXNjcmlw dGlvbiAqLworCShSRUFEX1BSRUcoMykpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCShBX0lN UExJQ0lUX1JFQURTX1AzKQorKQorCitERUZfTUFDUk8oCisJZk5PQVRUUklCX1JFQURfUDMsIC8q IHJlYWQgUHJlZGljYXRlIDAgKi8KKwkoKSwgLyogcGFyYW1ldGVycyAqLworCSJQMyIsIC8qIHNo b3J0IGRlc2NyaXB0aW9uICovCisJIlAzIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShSRUFE X1BSRUcoMykpLCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCSgpCispCisKK0RFRl9NQUNSTygK KwlmSU5WQUxJRCwoKSwKKwkiSW52YWxpZCBpbnN0cnVjdGlvbiEiLAorCSJJbnZhbGlkIGluc3Ry dWN0aW9uISIsCisJKHJlZ2lzdGVyX2Vycm9yX2V4Y2VwdGlvbih0aHJlYWQsUFJFQ0lTRV9DQVVT RV9JTlZBTElEX1BBQ0tFVCx0aHJlYWQtPlJlZ3NbUkVHX0JBRFZBMF0sdGhyZWFkLT5SZWdzW1JF R19CQURWQTFdLEdFVF9TU1JfRklFTEQoU1NSX0JWUyksR0VUX1NTUl9GSUVMRChTU1JfVjApLEdF VF9TU1JfRklFTEQoU1NSX1YxKSwwKSksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZDSEVDS19Q Q0FMSUdOLCAoQSksCisJIiIsCisJIiIsCisJLyogRUpQOiBpZiBleGNlcHRpb24gYWxyZWFkeSBk ZXRlY3RlZCwgZG8gbm90IHRyaWdnZXIgcGMgdW5hbGlnbmVkIGV4Y2VwdGlvbiBzaW5jZSB3ZSB3 aWxsIGJlIHJld2luZGluZyBQQyBhbnl3YXkuICovCisJLyogTWF5YmUgdGhpcyB3aWxsIHNjcmV3 IHVwIHByaW9yaXRpemF0aW9uIGxvZ2ljLi4uIGJ1dCBwcm9iYWJseSBpdCBpcyBvaz8gIE90aGVy d2lzZSB3ZSBjYW4gZGl0Y2ggb3V0IG9mIGRlYWxsb2NfcmV0dXJuIGVhcmx5IGlmIEVYQ0VQVElP Tl9ERVRFQ1RFRCAqLworCWlmICgoKEEpICYgUENBTElHTl9NQVNLKSkgeworCQlyZWdpc3Rlcl9l cnJvcl9leGNlcHRpb24odGhyZWFkLFBSRUNJU0VfQ0FVU0VfUENfTk9UX0FMSUdORUQsdGhyZWFk LT5SZWdzW1JFR19CQURWQTBdLHRocmVhZC0+UmVnc1tSRUdfQkFEVkExXSxHRVRfU1NSX0ZJRUxE KFNTUl9CVlMpLEdFVF9TU1JfRklFTEQoU1NSX1YwKSxHRVRfU1NSX0ZJRUxEKFNTUl9WMSksMCk7 CisJfSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZkNVUkVYVCwoKSwKKwkiIiwKKwkiIiwKKwlH RVRfU1NSX0ZJRUxEKFNTUl9YQSksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZDVVJFWFRfV1JB UCwoRVhUX05PKSwKKwkiIiwKKwkiIiwKKwl7CisJCUVYVF9OTyA9IGZDVVJFWFQoKTsKKwkJaWYg KHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9jX29wdGlvbnMtPmV4dF9jb250ZXh0cykK KwkJCUVYVF9OTyAmPSAodGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5hcmNoX3Byb2Nfb3B0aW9ucy0+ ZXh0X2NvbnRleHRzLTEpOworCQllbHNlCisJCQlFWFRfTk8gPSAwOworCQlFWFRfTk8gPSB0aHJl YWQtPnByb2Nlc3Nvcl9wdHItPmZlYXR1cmVzLT5RRFNQNl9DUF9QUkVTRU5UID8gKEVYVF9OTyAm IDB4MykgOiAoRVhUX05PKzQpOworCX0sCisJKCkKKykKKworREVGX01BQ1JPKAorCWZXUklURV9O UEMsIC8qIHdyaXRlIG5leHQgUEMgKi8KKwkoQSksIC8qIHBhcmFtZXRlcnMgKi8KKwkiUEM9QSIs IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlBDPUEiLCAvKiBsb25nIGRlc2NyaXB0aW9uICov CisJaWYgKCF0aHJlYWQtPmJyYW5jaF90YWtlbikgeworICAgICAgICAgICBpZiAoQSAhPSB0aHJl YWQtPm5leHRfUEMpIHsKKyAgICAgICAgICAgICB0aHJlYWQtPm5leHRfcGt0X2d1ZXNzPXRocmVh ZC0+bGFzdF9wa3QtPnRha2VuX3B0cjsKKyAgICAgICAgICAgfQorCSAgIGZDSEVDS19QQ0FMSUdO KEEpOworICAgICAgICAgICB0aHJlYWQtPmJyYW5jaGVkID0gMTsgdGhyZWFkLT5icmFuY2hfdGFr ZW4gPSAxOyB0aHJlYWQtPm5leHRfUEMgPSBBOyBcCisgICAgICAgICAgIHRocmVhZC0+YnJhbmNo X29mZnNldCA9IGluc24tPmVuY29kaW5nX29mZnNldDsgdGhyZWFkLT5icmFuY2hfb3Bjb2RlID0g aW5zbi0+b3Bjb2RlOworICAgICAgICB9CisgICAgICAgICAsICAgICAgICAgIC8qIGJlaGF2aW9y ICovCisJKEFfSU1QTElDSVRfV1JJVEVTX1BDLEFfQ09GKQorKQorCisKK0RFRl9NQUNSTygKKwlm TE9PUFNUQVRTLAorCShBKSwKKwkiIiwKKwkiIiwKKwkvKiBJTkNfVFNUQVQodGxvb3BlbmRzKTsK KyAgCSAgIElOQ19UU1RBVE4odGxvb3BlbmRfc2FtZV9saW5lLCh0aHJlYWQtPlJlZ3NbUkVHX1BD XSAmIC0zMikgPT0gKChBKSAmIC0zMikpOworCSAgIElOQ19UU1RBVE4odGxvb3BlbmRfc2FtZXBj LCh0aHJlYWQtPlJlZ3NbUkVHX1BDXSkgPT0gKEEpKTsqLyAsCisJKCkKKykKKworCitERUZfTUFD Uk8oCisJZkNPRl9DQUxMQkFDSywKKwkoTE9DLFRZUEUpLAorCSIiLAorCSIiLAorICB7CisgICAg dGhyZWFkLT5jb2ZfbG9nX3RvX3ZhID0gKExPQyk7CisgICAgdGhyZWFkLT5jb2ZfbG9nX2NvZnR5 cGUgPSAoVFlQRSk7CisgICAgdGhyZWFkLT5jb2ZfbG9nX3ZhbGlkID0gMTsKKyAgfSwKKwkoKQor KQorCitERUZfTUFDUk8oCisJZkJSQU5DSCwKKwkoTE9DLFRZUEUpLAorCSJQQz1MT0MiLAorCSJQ Qz1MT0MiLAorCWZXUklURV9OUEMoTE9DKTsgZkNPRl9DQUxMQkFDSyhMT0MsVFlQRSksCisJKCkK KykKKworREVGX01BQ1JPKAorCWZUSU1FX0pVTVBSLAorCShSRUdOTyxUQVJHRVQsVFlQRSksCisJ IiIsCisJIiIsCisJeyBzeXNfYnJhbmNoX3JldHVybih0aHJlYWQsIGluc24tPnNsb3QsIFRBUkdF VCwgUkVHTk8pOyB9LAorCShBX0lORElSRUNUKQorKQorCisKK0RFRl9NQUNSTygKKwlmSlVNUFIs CS8qIEEganVtcHIgaGFzIGV4ZWN1dGVkICovCisJKFJFR05PLFRBUkdFVCxUWVBFKSwKKwkiUEM9 VEFSR0VUIiwKKwkiUEM9VEFSR0VUIiwKKwl7IGZUSU1FX0pVTVBSKFJFR05PLFRBUkdFVCxUWVBF KTsgZkJSQU5DSChUQVJHRVQsQ09GX1RZUEVfSlVNUFIpO30sCisJKEFfSU5ESVJFQ1QpCispCisK K0RFRl9NQUNSTygKKwlmSElOVEpSLAkvKiBBIGhpbnRqciBpbnN0cnVjdGlvbiBoYXMgZXhlY3V0 ZWQgKi8KKwkoVEFSR0VUKSwKKwkiIiwKKwkiIiwKKwl7IH0sCispCisKK0RFRl9NQUNSTygKKwlm QlBfUkFTX0NBTEwsCisJKEEpLAorCSIiLAorCSIiLAorCXsgc3lzX2JyYW5jaF9jYWxsKHRocmVh ZCwgaW5zbi0+c2xvdCwgQSwgZlJFQURfTlBDKCkpOyB9LAorKQorCitERUZfTUFDUk8oCisJZkNB TEwsCS8qIERvIGEgY2FsbCAqLworCShBKSwKKwkiZldSSVRFX0xSKGZSRUFEX05QQygpKTsgZldS SVRFX05QQyhBKTsiLAorCSJmV1JJVEVfTFIoZlJFQURfTlBDKCkpOyBmV1JJVEVfTlBDKEEpOyIs CisJaWYgKCF0aHJlYWQtPmJyYW5jaF90YWtlbikge2ZCUF9SQVNfQ0FMTChBKTsgZldSSVRFX0xS KGZSRUFEX05QQygpKTsgZkJSQU5DSChBLENPRl9UWVBFX0NBTEwpO30sCisJKEFfSU1QTElDSVRf V1JJVEVTX1BDLEFfQ09GLEFfSU1QTElDSVRfV1JJVEVTX0xSLEFfQ0FMTCkKKykKKworREVGX01B Q1JPKAorCWZDQUxMUiwJLyogRG8gYSBjYWxsIFJlZ2lzdGVyICovCisJKEEpLAorCSJmV1JJVEVf TFIoZlJFQURfTlBDKCkpOyBmV1JJVEVfTlBDKEEpOyIsCisJImZXUklURV9MUihmUkVBRF9OUEMo KSk7IGZXUklURV9OUEMoQSk7IiwKKwlpZiAoIXRocmVhZC0+YnJhbmNoX3Rha2VuKSB7ZkJQX1JB U19DQUxMKEEpOyBmV1JJVEVfTFIoZlJFQURfTlBDKCkpOyBmQlJBTkNIKEEsQ09GX1RZUEVfQ0FM TFIpO30sCisJKEFfSU1QTElDSVRfV1JJVEVTX1BDLEFfQ09GLEFfSU1QTElDSVRfV1JJVEVTX0xS LEFfQ0FMTCkKKykKKworREVGX01BQ1JPKAorCWZXUklURV9MT09QX1JFR1MwLCAvKiB3cml0ZSBs bixzYSxlYSxsYyAqLworCShTVEFSVCxDT1VOVCksIC8qIHBhcmFtZXRlcnMgKi8KKwkiU0EwPVNU QVJUOyBMQzA9Q09VTlQiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJTQTA9U1RBUlQ7IExD MD1DT1VOVCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJe1dSSVRFX1JSRUcoUkVHX0xDMCxD T1VOVCk7CisgICAgICAgICBXUklURV9SUkVHKFJFR19TQTAsU1RBUlQpO30sCisJKEFfSU1QTElD SVRfV1JJVEVTX0xDMCxBX0lNUExJQ0lUX1dSSVRFU19TQTApCispCisKK0RFRl9NQUNSTygKKwlm V1JJVEVfTE9PUF9SRUdTMSwgLyogd3JpdGUgbG4sc2EsZWEsbGMgKi8KKwkoU1RBUlQsQ09VTlQp LCAvKiBwYXJhbWV0ZXJzICovCisJIlNBMT1TVEFSVDsgTEMxPUNPVU5UIiwgLyogc2hvcnQgZGVz Y3JpcHRpb24gKi8KKwkiU0ExPVNUQVJUOyBMQzE9Q09VTlQiLCAvKiBzaG9ydCBkZXNjcmlwdGlv biAqLworCXtXUklURV9SUkVHKFJFR19MQzEsQ09VTlQpOworICAgICAgICAgV1JJVEVfUlJFRyhS RUdfU0ExLFNUQVJUKTt9LAorCShBX0lNUExJQ0lUX1dSSVRFU19MQzEsQV9JTVBMSUNJVF9XUklU RVNfU0ExKQorKQorCitERUZfTUFDUk8oCisJZldSSVRFX0xDMCwKKwkoVkFMKSwgLyogcGFyYW1l dGVycyAqLworCSJMQzA9VkFMIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiTEMwPVZBTCIs CisJV1JJVEVfUlJFRyhSRUdfTEMwLFZBTCksCisJKEFfSU1QTElDSVRfV1JJVEVTX0xDMCkKKykK KworREVGX01BQ1JPKAorCWZXUklURV9MQzEsCisJKFZBTCksIC8qIHBhcmFtZXRlcnMgKi8KKwki TEMxPVZBTCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIkxDMT1WQUwiLAorCVdSSVRFX1JS RUcoUkVHX0xDMSxWQUwpLAorCShBX0lNUExJQ0lUX1dSSVRFU19MQzEpCispCisKK0RFRl9NQUNS TygKKwlmQ0FSUllfRlJPTV9BREQsCisJKEEsQixDKSwKKwkiY2FycnlfZnJvbV9hZGQoQSxCLEMp IiwKKwkiY2FycnlfZnJvbV9hZGQoQSxCLEMpIiwKKwljYXJyeV9mcm9tX2FkZDY0KEEsQixDKSwK KwkvKiBOT1RISU5HICovCispCisKK0RFRl9NQUNSTygKKwlmU0VUQ1ZfQURELAorCShBLEIsQ0FS UlkpLAorCSJTUltDVl09RkxBR1MoQStCKSIsCisJIlNSW0NWXT1GTEFHUyhBK0IpIiwKKwlkbyB7 CisJCVNFVF9VU1JfRklFTEQoVVNSX0MsZ2VuX2NhcnJ5X2FkZCgoQSksKEIpLCgoQSkrKEIpKSkp OworCQlTRVRfVVNSX0ZJRUxEKFVTUl9WLGdlbl9vdmVyZmxvd19hZGQoKEEpLChCKSwoKEEpKyhC KSkpKTsKKwl9IHdoaWxlICgwKSwKKwkoQV9JTVBMSUNJVF9XUklURVNfQ1ZCSVRTLEFfTk9URV9D VkZMQUdTLEFfUkVTVFJJQ1RfTk9TUk1PVkUpCispCitERUZfTUFDUk8oCisJZlNFVENWX1NVQiwK KwkoQSxCLENBUlJZKSwKKwkiU1JbQ1ZdPUZMQUdTKEEtQikiLAorCSJTUltDVl09RkxBR1MoQS1C KSIsCisJZG8geworCQlTRVRfVVNSX0ZJRUxEKFVTUl9DLGdlbl9jYXJyeV9hZGQoKEEpLChCKSwo KEEpLShCKSkpKTsKKwkJU0VUX1VTUl9GSUVMRChVU1JfVixnZW5fb3ZlcmZsb3dfYWRkKChBKSwo QiksKChBKS0oQikpKSk7CisJfSB3aGlsZSAoMCksCisJKEFfSU1QTElDSVRfV1JJVEVTX0NWQklU UyxBX05PVEVfQ1ZGTEFHUyxBX1JFU1RSSUNUX05PU1JNT1ZFKQorKQorCitERUZfTUFDUk8oCisJ ZlNFVF9PVkVSRkxPVywKKwkoKSwKKwkiVVNSLk9WRj0xIiwKKwkiVVNSLk9WRj0xIiwKKwlTRVRf VVNSX0ZJRUxEKFVTUl9PVkYsMSksCisJKEFfSU1QTElDSVRfV1JJVEVTX1NSQklULEFfTk9URV9T Ul9PVkZfV0hFTl9TQVRVUkFUSU5HLEFfUkVTVFJJQ1RfTk9TUk1PVkUpCispCisKK0RFRl9NQUNS TygKKwlmU0VUX0xQQ0ZHLAorCShWQUwpLCAvKiBwYXJhbWV0ZXJzICovCisJIlVTUi5MUENGRz1W QUwiLAorCSJVU1IuTFBDRkc9VkFMIiwKKwlTRVRfVVNSX0ZJRUxEKFVTUl9MUENGRywoVkFMKSks CisJKEFfSU1QTElDSVRfV1JJVEVTX0xQQ0ZHLEFfUkVTVFJJQ1RfTk9TUk1PVkUpCispCisKKwor REVGX01BQ1JPKAorCWZHRVRfTFBDRkcsCisJLCAvKiBwYXJhbWV0ZXJzICovCisJIlVTUi5MUENG RyIsCisJIlVTUi5MUENGRyIsCisJKEdFVF9VU1JfRklFTEQoVVNSX0xQQ0ZHKSksCisJKCkKKykK KworCisKK0RFRl9NQUNSTygKKwlmV1JJVEVfUDAsIC8qIHdyaXRlIFByZWRpY2F0ZSAwICovCisJ KFZBTCksIC8qIHBhcmFtZXRlcnMgKi8KKwkiUDA9VkFMIiwgLyogc2hvcnQgZGVzY3JpcHRpb24g Ki8KKwkiUDA9VkFMIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCVdSSVRFX1BSRUcoMCxWQUwp LCAgICAgICAgICAvKiBiZWhhdmlvciAqLworCShBX0lNUExJQ0lUX1dSSVRFU19QMCkKKykKKwor REVGX01BQ1JPKAorCWZXUklURV9QMSwgLyogd3JpdGUgUHJlZGljYXRlIDAgKi8KKwkoVkFMKSwg LyogcGFyYW1ldGVycyAqLworCSJQMT1WQUwiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJQ MT1WQUwiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJV1JJVEVfUFJFRygxLFZBTCksICAgICAg ICAgIC8qIGJlaGF2aW9yICovCisJKEFfSU1QTElDSVRfV1JJVEVTX1AxKQorKQorCitERUZfTUFD Uk8oCisJZldSSVRFX1AyLCAvKiB3cml0ZSBQcmVkaWNhdGUgMCAqLworCShWQUwpLCAvKiBwYXJh bWV0ZXJzICovCisJIlAyPVZBTCIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIlAyPVZBTCIs IC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwlXUklURV9QUkVHKDIsVkFMKSwgICAgICAgICAgLyog YmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfUDIpCispCisKK0RFRl9NQUNSTygKKwlm V1JJVEVfUDMsIC8qIHdyaXRlIFByZWRpY2F0ZSAwICovCisJKFZBTCksIC8qIHBhcmFtZXRlcnMg Ki8KKwkiUDM9VkFMIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiUDM9VkFMIiwgLyogbG9u ZyBkZXNjcmlwdGlvbiAqLworCVdSSVRFX1BSRUcoMyxWQUwpLCAgICAgLyogYmVoYXZpb3IgKi8K KwkoQV9JTVBMSUNJVF9XUklURVNfUDMpCispCisKK0RFRl9NQUNSTygKKwlmV1JJVEVfUDNfTEFU RSwgLyogd3JpdGUgUHJlZGljYXRlIDAgKi8KKwkoVkFMKSwgLyogcGFyYW1ldGVycyAqLworCSJQ Mz1WQUwiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJQMz1WQUwiLCAvKiBsb25nIGRlc2Ny aXB0aW9uICovCisJe1dSSVRFX1BSRUcoMyxWQUwpOyBmSElERShNQVJLX0xBVEVfUFJFRF9XUklU RSgzKSl9ICwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9JTVBMSUNJVF9XUklURVNfUDMs QV9SRVNUUklDVF9MQVRFUFJFRCkKKykKKworCitERUZfTUFDUk8oCisJZlBBUlQxLCAvKiB3cml0 ZSBQcmVkaWNhdGUgMCAqLworCShXT1JLKSwgLyogcGFyYW1ldGVycyAqLworCSJXT1JLIiwgLyog c2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiV09SSyIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwlp ZiAoaW5zbi0+cGFydDEpIHsgV09SSzsgcmV0dXJuOyB9LCAgICAgICAgICAvKiBiZWhhdmlvciAq LworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKy8qIENhc3RpbmcsIFNpZ24tWmVybyBleHRlbnNpb24sIGV0 YyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9NQUNS TygKKwlmQ0FTVDR1LCAvKiBtYWNybyBuYW1lICovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJ IkEudXdbMF0iLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJ1bnNpZ25lZCAzMi1iaXQgQSIs IC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoKHNpemU0dV90KShBKSksICAgICAgICAgIC8qIGJl aGF2aW9yICovCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJ ZkNBU1Q0cywgLyogbWFjcm8gbmFtZSAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJBLnMz MiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInNpZ25lZCAzMi1iaXQgQSIsIC8qIGxvbmcg ZGVzY3JpcHRpb24gKi8KKwkoKHNpemU0c190KShBKSksICAgICAgICAgIC8qIGJlaGF2aW9yICov CisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNBU1Q4dSwg LyogbWFjcm8gbmFtZSAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJBLnU2NCIsIC8qIHNo b3J0IGRlc2NyaXB0aW9uICovCisJInVuc2lnbmVkIDY0LWJpdCBBIiwgLyogbG9uZyBkZXNjcmlw dGlvbiAqLworCSgoc2l6ZTh1X3QpKEEpKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkvKiBv cHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmQ0FTVDhzLCAvKiBtYWNy byBuYW1lICovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJIkEuczY0IiwgLyogc2hvcnQgZGVz Y3JpcHRpb24gKi8KKwkic2lnbmVkIDY0LWJpdCBBIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLwor CSgoc2l6ZThzX3QpKEEpKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkvKiBvcHRpb25hbCBh dHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmQ0FTVDJfMnMsIC8qIG1hY3JvIG5hbWUg Ki8KKwkoQSksIC8qIHBhcmFtcyAqLworCSJBIiwKKwkic2lnbmVkIDE2LWJpdCBBIiwKKwkoKHNp emUyc190KShBKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8o CisJZkNBU1QyXzJ1LCAvKiBtYWNybyBuYW1lICovCisJKEEpLCAvKiBwYXJhbXMgKi8KKwkiQSIs CisJInVuc2lnbmVkIDE2LWJpdCBBIiwKKwkoKHNpemUydV90KShBKSksCisJLyogb3B0aW9uYWwg YXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNBU1Q0XzRzLCAvKiBtYWNybyBuYW1l ICovCisJKEEpLCAvKiBwYXJhbXMgKi8KKwkiQSIsCisJInNpZ25lZCAzMi1iaXQgQSIsCisJKChz aXplNHNfdCkoQSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JP KAorCWZDQVNUNF80dSwgLyogbWFjcm8gbmFtZSAqLworCShBKSwgLyogcGFyYW1zICovCisJIkEi LAorCSJ1bnNpZ25lZCAzMi1iaXQgQSIsCisJKChzaXplNHVfdCkoQSkpLAorCS8qIG9wdGlvbmFs IGF0dHJpYnV0ZXMgKi8KKykKKworCitERUZfTUFDUk8oCisJZkNBU1Q0XzhzLCAvKiBtYWNybyBu YW1lICovCisJKEEpLCAvKiBwYXJhbXMgKi8KKwkiZlNYVE4oMzIsNjQsQSkiLAorCSIzMi1iaXQg QSBzaWduLWV4dGVuZGVkIHRvIHNpZ25lZCA2NC1iaXQiLAorCSgoc2l6ZThzX3QpKChzaXplNHNf dCkoQSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlm Q0FTVDRfOHUsIC8qIG1hY3JvIG5hbWUgKi8KKwkoQSksIC8qIHBhcmFtcyAqLworCSJmWlhUTigz Miw2NCxBKSIsCisJIjMyLWJpdCBBIHplcm8tZXh0ZW5kZWQgdG8gdW5zaWduZWQgNjQtYml0IiwK KwkoKHNpemU4dV90KSgoc2l6ZTR1X3QpKEEpKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAq LworKQorCitERUZfTUFDUk8oCisJZkNBU1Q4XzhzLCAvKiBtYWNybyBuYW1lICovCisJKEEpLCAv KiBwYXJhbXMgKi8KKwkiQSIsCisJInNpZ25lZCA2NC1iaXQgQSIsCisJKChzaXplOHNfdCkoQSkp LAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZDQVNUOF84 dSwgLyogbWFjcm8gbmFtZSAqLworCShBKSwgLyogcGFyYW1zICovCisJIkEiLAorCSJ1bnNpZ25l ZCA2NC1iaXQgQSIsCisJKChzaXplOHVfdCkoQSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMg Ki8KKykKKworREVGX01BQ1JPKAorCWZDQVNUMl84cywgLyogbWFjcm8gbmFtZSAqLworCShBKSwg LyogcGFyYW1zICovCisJImZTWFROKDE2LDY0LEEpIiwKKwkiMTYtYml0IEEgc2lnbi1leHRlbmRl ZCB0byBzaWduZWQgNjQtYml0IiwKKwkoKHNpemU4c190KSgoc2l6ZTJzX3QpKEEpKSksCisJLyog b3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkNBU1QyXzh1LCAvKiBt YWNybyBuYW1lICovCisJKEEpLCAvKiBwYXJhbXMgKi8KKwkiZlpYVE4oMTYsNjQsQSkiLAorCSIx Ni1iaXQgQSB6ZXJvLWV4dGVuZGVkIHRvIHVuc2lnbmVkIDY0LWJpdCIsCisJKChzaXplOHVfdCko KHNpemUydV90KShBKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01B Q1JPKAorCWZaRThfMTYsIC8qIHplcm8tZXh0ZW5kIDggdG8gMTYgKi8KKwkoQSksCisJIkEiLAor CSJVbnNpZ25lZCBsb3cgOCBiaXRzIG9mIEEiLAorCSgoc2l6ZTJzX3QpKChzaXplMXVfdCkoQSkp KSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCitERUZfTUFDUk8oCisJZlNFOF8xNiwg Lyogc2lnbi1leHRlbmQgOCB0byAxNiAqLworCShBKSwKKwkiQSIsCisJIlNpZ25lZCBsb3cgOCBi aXRzIG9mIEEiLAorCSgoc2l6ZTJzX3QpKChzaXplMXNfdCkoQSkpKSwKKwkvKiBvcHRpb25hbCBh dHRyaWJ1dGVzICovCispCisKKworREVGX01BQ1JPKAorCWZTRTE2XzMyLCAvKiBzaWduLWV4dGVu ZCAxNiB0byAzMiAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJBIiwgLyogc2hvcnQgZGVz Y3JpcHRpb24gKi8KKwkic2lnbmVkIGxvdyAxNi1iaXRzIG9mIEEiLCAvKiBsb25nIGRlc2NyaXB0 aW9uICovCisJKChzaXplNHNfdCkoKHNpemUyc190KShBKSkpLCAgICAgICAgICAvKiBiZWhhdmlv ciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZaRTE2 XzMyLCAvKiB6ZXJvLWV4dGVuZCAxNiB0byAzMiAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLwor CSJBIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkic2lnbmVkIGxvdyAxNi1iaXRzIG9mIEEi LCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKChzaXplNHVfdCkoKHNpemUydV90KShBKSkpLCAg ICAgICAgICAvKiBiZWhhdmlvciAqLworCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKwor REVGX01BQ1JPKAorCWZTRTMyXzY0LAorCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJBIiwgLyog c2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiQSIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoIChz aXplOHNfdCkoKHNpemU0c190KShBKSkgKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkvKiBv cHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmWkUzMl82NCwKKwkoQSks IC8qIHBhcmFtZXRlcnMgKi8KKwkiQSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInplcm8t ZXh0ZW5kIEEgZnJvbSAzMiB0byA2NCIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoIChzaXpl OHVfdCkoKHNpemU0dV90KShBKSkgKSwgICAgICAgICAgLyogYmVoYXZpb3IgKi8KKwkvKiBvcHRp b25hbCBhdHRyaWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmU0U4XzMyLCAvKiBzaWduLWV4 dGVuZCA4IHRvIDMyICovCisJKEEpLAorCSJBIiwKKwkiU2lnbmVkIGxvdyA4IGJpdHMgb2YgQSIs CisJKChzaXplNHNfdCkoKHNpemUxc190KShBKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMg Ki8KKykKKworREVGX01BQ1JPKAorCWZaRThfMzIsIC8qIHplcm8tZXh0ZW5kIDggdG8gMzIgKi8K KwkoQSksCisJIkEiLAorCSJVbnNpZ25lZCBsb3cgOCBiaXRzIG9mIEEiLAorCSgoc2l6ZTRzX3Qp KChzaXplMXVfdCkoQSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogRFNQIGFyaXRobWV0aWMgc3Vw cG9ydCAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworREVGX01BQ1JPKAorCWZNUFk4VVUsIC8qIG11bHRpcGx5IGhhbGYgaW50ZWdlciAqLworCShB LEIpLCAvKiBwYXJhbWV0ZXJzICovCisJIihBICogQikiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAq LworCSJ1bnNpZ25lZCA4LWJpdCBtdWx0aXBseSBvZiBBIGJ5IEIiLCAvKiBsb25nIGRlc2NyaXB0 aW9uICovCisJKGludCkoZlpFOF8xNihBKSpmWkU4XzE2KEIpKSwgICAgIC8qIGJlaGF2aW9yICov CisJKEFfTVBZKQorKQorREVGX01BQ1JPKAorCWZNUFk4VVMsIC8qIG11bHRpcGx5IGhhbGYgaW50 ZWdlciAqLworCShBLEIpLCAvKiBwYXJhbWV0ZXJzICovCisJIihBICogQikiLCAvKiBzaG9ydCBk ZXNjcmlwdGlvbiAqLworCSJ1bnNpZ25lZCA4LWJpdCBtdWx0aXBseSBvZiBBIGJ5IHNpZ25lZCBC IiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShpbnQpKGZaRThfMTYoQSkqZlNFOF8xNihCKSks ICAgICAvKiBiZWhhdmlvciAqLworCShBX01QWSkKKykKK0RFRl9NQUNSTygKKwlmTVBZOFNVLCAv KiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwkoQSxCKSwgLyogcGFyYW1ldGVycyAqLworCSIo QSAqIEIpIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkic2lnbmVkIDgtYml0IG11bHRpcGx5 IG9mIEEgYnkgdW5zaWduZWQgQiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoaW50KShmU0U4 XzE2KEEpKmZaRThfMTYoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9NUFkpCispCisKK0RF Rl9NQUNSTygKKwlmTVBZOFNTLCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwkoQSxCKSwg LyogcGFyYW1ldGVycyAqLworCSIoQSAqIEIpIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwki c2lnbmVkIDgtYml0IG11bHRpcGx5IG9mIEEgYnkgQiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8K KwkoaW50KSgoc2hvcnQpKEEpKihzaG9ydCkoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9N UFkpCispCisKK0RFRl9NQUNSTygKKwlmTVBZMTZTUywgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2Vy ICovCisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKEEgKiBCKSIsIC8qIHNob3J0IGRlc2Ny aXB0aW9uICovCisJInNpZ25lZCAxNi1iaXQgbXVsdGlwbHkgb2YgQSBieSBCIiwgLyogbG9uZyBk ZXNjcmlwdGlvbiAqLworCWZTRTMyXzY0KGZTRTE2XzMyKEEpKmZTRTE2XzMyKEIpKSwgICAgIC8q IGJlaGF2aW9yICovCisJKEFfTVBZKQorKQorCitERUZfTUFDUk8oCisJZk1QWTE2VVUsIC8qIG11 bHRpcGx5IHVuc2lnbmVkIGhhbGYgaW50ZWdlciAqLworCShBLEIpLCAvKiBwYXJhbWV0ZXJzICov CisJIihBICogQikiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJtdWx0aXBseSB1bnNpZ25l ZCBBIGJ5IHVuc2lnbmVkIEIiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJZlpFMzJfNjQoZlpF MTZfMzIoQSkqZlpFMTZfMzIoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9NUFkpCispCisK K0RFRl9NQUNSTygKKwlmTVBZMTZTVSwgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKEEs QiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKEEgKiBCKSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICov CisJInNpZ25lZCAxNi1iaXQgQSB0aW1lcyB1bnNpZ25lZCAxNi1iaXQgQiIsIC8qIGxvbmcgZGVz Y3JpcHRpb24gKi8KKwlmU0UzMl82NChmU0UxNl8zMihBKSpmWkUxNl8zMihCKSksICAgICAvKiBi ZWhhdmlvciAqLworCShBX01QWSkKKykKKworREVGX01BQ1JPKAorCWZNUFkxNlVTLCAvKiBtdWx0 aXBseSBoYWxmIGludGVnZXIgKi8KKwkoQSxCKSwgLyogcGFyYW1ldGVycyAqLworCSIoQSAqIEIp IiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkidW5zaWduZWQgMTYtYml0IEEgdGltZXMgc2ln bmVkIDE2LWJpdCBCIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCWZNUFkxNlNVKEIsQSksCisJ KEFfTVBZKQorKQorCitERUZfTUFDUk8oCisJZk1QWTMyU1MsIC8qIG11bHRpcGx5IGhhbGYgaW50 ZWdlciAqLworCShBLEIpLCAvKiBwYXJhbWV0ZXJzICovCisJIihBICogQikiLCAvKiBzaG9ydCBk ZXNjcmlwdGlvbiAqLworCSJzaWduZWQgMzItYml0IG11bHRpcGx5IG9mIEEgYnkgQiIsIC8qIGxv bmcgZGVzY3JpcHRpb24gKi8KKwkoZlNFMzJfNjQoQSkqZlNFMzJfNjQoQikpLCAgICAgLyogYmVo YXZpb3IgKi8KKwkoQV9NUFkpCispCisKK0RFRl9NQUNSTygKKwlmTVBZMzJVVSwgLyogbXVsdGlw bHkgaGFsZiBpbnRlZ2VyICovCisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKEEgKiBCKSIs IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInVuc2lnbmVkIDMyLWJpdCBtdWx0aXBseSBvZiBB IGJ5IEIiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKGZaRTMyXzY0KEEpKmZaRTMyXzY0KEIp KSwgICAgIC8qIGJlaGF2aW9yICovCisJKEFfTVBZKQorKQorCitERUZfTUFDUk8oCisJZk1QWTMy U1UsIC8qIG11bHRpcGx5IGhhbGYgaW50ZWdlciAqLworCShBLEIpLCAvKiBwYXJhbWV0ZXJzICov CisJIihBICogQikiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSIzMi1iaXQgbXVsdGlwbHkg b2Ygc2lnbmVkIEEgYnkgdW5zaWduZWQgQiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoZlNF MzJfNjQoQSkqZlpFMzJfNjQoQikpLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9NUFkpCispCisK K0RFRl9NQUNSTygKKwlmTVBZMzIxNlNTLCAvKiBtdWx0aXBseSBtaXhlZCBwcmVjaXNpb24gKi8K KwkoQSxCKSwgLyogcGFyYW1ldGVycyAqLworCSIoQSAqIEIpIiwgLyogc2hvcnQgZGVzY3JpcHRp b24gKi8KKwkic2lnbmVkIDE2LWJpdCBtdWx0aXBseSBvZiBBIGJ5IEIiLCAvKiBsb25nIGRlc2Ny aXB0aW9uICovCisJKGZTRTMyXzY0KEEpKmZTWFROKDE2LDY0LEIpKSwgICAgIC8qIGJlaGF2aW9y ICovCisJKEFfTVBZKQorKQorCitERUZfTUFDUk8oCisJZk1QWTMyMTZTVSwgLyogbXVsdGlwbHkg bWl4ZWQgcHJlY2lzaW9uICovCisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKEEgKiBCKSIs IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInNpZ25lZCAxNi1iaXQgbXVsdGlwbHkgb2YgQSBi eSB1bnNpZ25lZCBCIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShmU0UzMl82NChBKSpmWlhU TigxNiw2NCxCKSksICAgICAvKiBiZWhhdmlvciAqLworCShBX01QWSkKKykKKworREVGX01BQ1JP KAorCWZST1VORCwgLyogb3B0aW9uYWwgcm91bmRpbmcgKi8KKwkoQSksIC8qIHBhcmFtZXRlcnMg Ki8KKwkicm91bmQoQSkiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJyb3VuZChBKSIsIC8q IGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoQSsweDgwMDApLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0 ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZDTElQLCAvKiBvcHRpb25hbCByb3VuZGluZyAqLwor CShEU1QsU1JDLFUpLCAvKiBwYXJhbWV0ZXJzICovCisJIkRTVD1NSU4oKDE8PFUpLTEsTUFYKFNS QywtKDE8PFUpKSkiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJEU1Q9SU4oKDE8PFUpLTEs TUFYKFNSQywtKDE8PFUpKSkiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJeyBzaXplNHNfdCBt YXh2ID0gKDE8PFUpLTE7CisJIHNpemU0c190IG1pbnYgPSAtKDE8PFUpOworCSBEU1QgPSBmTUlO KG1heHYsZk1BWChTUkMsbWludikpOworCX0sCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLwor KQorCitERUZfTUFDUk8oCisJZkNSTkQsIC8qIG9wdGlvbmFsIHJvdW5kaW5nICovCisJKEEpLCAv KiBwYXJhbWV0ZXJzICovCisJImNvbnZyb3VuZChBKSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICov CisJImNvbnZyb3VuZChBKSIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoKCgoQSkmMHgzKT09 MHgzKT8oKEEpKzEpOigoQSkpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICovCispCisKK0RF Rl9NQUNSTygKKwlmUk5ETiwgLyogUm91bmRpbmcgdG8gYSBib3VuZGFyeSAqLworCShBLE4pLCAv KiBwYXJhbWV0ZXJzICovCisJIihOPT0wKT8oQSk6cm91bmQoQSwyKiooTi0xKSkiLCAvKiBzaG9y dCBkZXNjcmlwdGlvbiAqLworCSIoTj09MCk/KEEpOnJvdW5kKEEsMioqKE4tMSkpIiwgLyogbG9u ZyBkZXNjcmlwdGlvbiAqLworCSgoKChOKT09MCk/KEEpOigoKGZTRTMyXzY0KEEpKSsoMTw8KChO KS0xKSkpKSkpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAor CWZDUk5ETiwgLyogUm91bmRpbmcgdG8gYSBib3VuZGFyeSAqLworCShBLE4pLCAvKiBwYXJhbWV0 ZXJzICovCisJIihOPT0wKT9BOmNvbnZyb3VuZChBLDIqKihOLTEpKT4+TiIsIC8qIHNob3J0IGRl c2NyaXB0aW9uICovCisJIihOPT0wKT9BOmNvbnZyb3VuZChBLDIqKihOLTEpKT4+TiIsIC8qIGxv bmcgZGVzY3JpcHRpb24gKi8KKwkoY29udl9yb3VuZChBLE4pKSwKKwkvKiBvcHRpb25hbCBhdHRy aWJ1dGVzICovCispCisKK0RFRl9NQUNSTygKKwlmQ1JORE42NCwgLyogUm91bmRpbmcgdG8gYSBi b3VuZGFyeSAqLworCShBLE4pLCAvKiBwYXJhbWV0ZXJzICovCisJIihOPT0wKT9BOmNvbnZyb3Vu ZChBLDIqKihOLTEpKT4+TiIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIihOPT0wKT9BOmNv bnZyb3VuZChBLDIqKihOLTEpKT4+TiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoY29udl9y b3VuZDY0KEEsTikpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKK0RFRl9NQUNSTygK KwlmQUREMTI4LCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKEEsQiksIC8qIHBhcmFt ZXRlcnMgKi8KKwkiQStCIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiIiwgLyogbG9uZyBk ZXNjcmlwdGlvbiAqLworCShhZGQxMjgoQSwgQikpLAorCS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMg Ki8KKykKK0RFRl9NQUNSTygKKwlmU1VCMTI4LCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICov CisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiQS1CIiwgLyogc2hvcnQgZGVzY3JpcHRpb24g Ki8KKwkiIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCShzdWIxMjgoQSwgQikpLAorCS8qIG9w dGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKK0RFRl9NQUNSTygKKwlmU0hJRlRSMTI4LCAvKiBSb3Vu ZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKHNpemU4 c190KSAoQSA+PiBCKSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIiIsIC8qIGxvbmcgZGVz Y3JpcHRpb24gKi8KKwkoc2hpZnRyMTI4KEEsIEIpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVz ICovCispCisKK0RFRl9NQUNSTygKKwlmU0hJRlRMMTI4LCAvKiBSb3VuZGluZyB0byBhIGJvdW5k YXJ5ICovCisJKEEsQiksIC8qIHBhcmFtZXRlcnMgKi8KKwkiKEEgPDwgQikiLCAvKiBzaG9ydCBk ZXNjcmlwdGlvbiAqLworCSIiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKHNoaWZ0bDEyOChB LCBCKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorCitERUZfTUFDUk8oCisJZkFO RDEyOCwgLyogUm91bmRpbmcgdG8gYSBib3VuZGFyeSAqLworCShBLEIpLCAvKiBwYXJhbWV0ZXJz ICovCisJIihBICYgQikiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSIiLCAvKiBsb25nIGRl c2NyaXB0aW9uICovCisJKGFuZDEyOChBLCBCKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAq LworKQorCitERUZfTUFDUk8oCisJZkNBU1Q4U18xNlMsIC8qIFJvdW5kaW5nIHRvIGEgYm91bmRh cnkgKi8KKwkoQSksIC8qIHBhcmFtZXRlcnMgKi8KKwkic3h0X3s2NC0+MTI4fShBKSIsIC8qIHNo b3J0IGRlc2NyaXB0aW9uICovCisJIiIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoY2FzdDhz X3RvXzE2cyhBKSksCisJLyogb3B0aW9uYWwgYXR0cmlidXRlcyAqLworKQorREVGX01BQ1JPKAor CWZDQVNUMTZTXzhTLCAvKiBSb3VuZGluZyB0byBhIGJvdW5kYXJ5ICovCisJKEEpLCAvKiBwYXJh bWV0ZXJzICovCisJInN4dF97MTI4LT42NH0oQSkiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwor CSIiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKGNhc3QxNnNfdG9fOHMoQSkpLAorCS8qIG9w dGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKK0RFRl9NQUNSTygKKwlmQ0FTVDE2U180UywgLyogUm91 bmRpbmcgdG8gYSBib3VuZGFyeSAqLworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSJzeHRfezEy OC0+MzJ9KEEpIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiIiwgLyogbG9uZyBkZXNjcmlw dGlvbiAqLworCShjYXN0MTZzX3RvXzRzKEEpKSwKKwkvKiBvcHRpb25hbCBhdHRyaWJ1dGVzICov CispCisKKworCitERUZfTUFDUk8oCisJZkVBX1JJLCAvKiBDYWxjdWxhdGUgRUEgd2l0aCBSZWdp c3RlciArIEltbWVkaWF0ZSBPZmZzZXQgKi8KKwkoUkVHLElNTSksCisJIkVBPVJFRytJTU0iLAkv KiBzaG9ydCBkZXNjciAqLworCSJFQT1SRUcrSU1NIiwJLyogbG9uZyBkZXNjciAqLworCWRvIHsg RUE9UkVHK0lNTTsgZkRPQ0hLUEFHRUNST1NTKFJFRyxFQSk7IH0gd2hpbGUgKDApLAorCShBX0VB X1JFR19QTFVTX0lNTSkKKykKKworREVGX01BQ1JPKAorCWZFQV9SUnMsIC8qIENhbGN1bGF0ZSBF QSB3aXRoIFJlZ2lzdGVyICsgUmVnaXN0ZXJzIHNjYWxlZCBPZmZzZXQgKi8KKwkoUkVHLFJFRzIs U0NBTEUpLAorCSJFQT1SRUcrKFJFRzI8PFNDQUxFKSIsCS8qIHNob3J0IGRlc2NyICovCisJIkVB PVJFRysoUkVHMjw8U0NBTEUpIiwJLyogbG9uZyBkZXNjciAqLworCWRvIHsgRUE9UkVHKyhSRUcy PDxTQ0FMRSk7IGZET0NIS1BBR0VDUk9TUyhSRUcsRUEpOyB9IHdoaWxlICgwKSwKKwkoQV9FQV9S RUdfUExVU19SRUdTQ0FMRUQpCispCisKK0RFRl9NQUNSTygKKwlmRUFfSVJzLCAvKiBDYWxjdWxh dGUgRUEgd2l0aCBJbW1lZGlhdGUgKyBSZWdpc3RlcnMgc2NhbGVkIE9mZnNldCAqLworCShJTU0s UkVHLFNDQUxFKSwKKwkiRUE9SU1NKyhSRUc8PFNDQUxFKSIsCS8qIHNob3J0IGRlc2NyICovCisJ IkVBPUlNTSsoUkVHPDxTQ0FMRSkiLAkvKiBsb25nIGRlc2NyICovCisJZG8geyBFQT1JTU0rKFJF Rzw8U0NBTEUpOyBmRE9DSEtQQUdFQ1JPU1MoSU1NLEVBKTsgfSB3aGlsZSAoMCksCisJKEFfRUFf SU1NX1BMVVNfUkVHU0NBTEVEKQorKQorCitERUZfTUFDUk8oCisJZkVBX0lNTSwgLyogQ2FsY3Vs YXRlIEVBIHdpdGggSW1tZWRpYXRlICovCisJKElNTSksCisJIkVBPUlNTSIsCS8qIHNob3J0IGRl c2NyICovCisJIkVBPUlNTSIsCS8qIGxvbmcgZGVzY3IgKi8KKwlFQT1JTU0sCisJKEFfRUFfSU1N X09OTFkpCispCisKK0RFRl9NQUNSTygKKwlmRUFfUkVHLCAvKiBDYWxjdWxhdGUgRUEgd2l0aCBS RUdJU1RFUiAqLworCShSRUcpLAorCSJFQT1SRUciLAkvKiBzaG9ydCBkZXNjciAqLworCSJFQT1S RUciLAkvKiBsb25nIGRlc2NyICovCisJRUE9UkVHLAorCShBX0VBX1JFR19PTkxZKQorKQorCitE RUZfTUFDUk8oCisJZkVBX0JSRVZSLCAvKiBDYWxjdWxhdGUgRUEgd2l0aCBiaXQgcmV2ZXJzZWQg Ym90dG9tIG9mIFJFR0lTVEVSICovCisJKFJFRyksCisJIkVBPWZicmV2KFJFRykiLAkvKiBzaG9y dCBkZXNjciAqLworCSJFQT1mYnJldihSRUcpIiwJLyogbG9uZyBkZXNjciAqLworCUVBPWZicmV2 KFJFRyksCisJKEFfRUFfQlJFVl9SRUcpCispCisKK0RFRl9NQUNSTygKKwlmRUFfR1BJLCAvKiBD YWxjdWxhdGUgRUEgd2l0aCBHbG9iYWwgUG9pdG5lciArIEltbWVkaWF0ZSAqLworCShJTU0pLAor CSJFQT1mUkVBRF9HUCgpK0lNTSIsCS8qIHNob3J0IGRlc2NyICovCisJIkVBPWZSRUFEX0dQKCkr SU1NIiwJLyogbG9uZyBkZXNjciAqLworICAgIGRvIHsgRUE9ZlJFQURfR1AoKStJTU07IGZHUF9E T0NIS1BBR0VDUk9TUyhmUkVBRF9HUCgpLEVBKTsgfSB3aGlsZSAoMCksCisJKEFfRUFfR1BfSU1N KQorKQorCitERUZfTUFDUk8oCisJZlBNX0ksIC8qIFBvc3QgTW9kaWZ5IFJlZ2lzdGVyIGJ5IElt bWVkaWF0ZSovCisJKFJFRyxJTU0pLAorCSJSRUc9UkVHK0lNTSIsCS8qIHNob3J0IGRlc2NyICov CisJIlJFRz1SRUcrSU1NIiwJLyogbG9uZyBkZXNjciAqLworCWRvIHsgUkVHID0gUkVHICsgSU1N OyBmVElNSU5HX0FJQShFQSxSRUcpOyB9IHdoaWxlICgwKSwKKwkoQV9QTV9JKQorKQorCitERUZf TUFDUk8oCisJZlBNX00sIC8qIFBvc3QgTW9kaWZ5IFJlZ2lzdGVyIGJ5IE0gcmVnaXN0ZXIgKi8K KwkoUkVHLE1WQUwpLAorCSJSRUc9UkVHK01WQUwiLAkvKiBzaG9ydCBkZXNjciAqLworCSJSRUc9 UkVHK01WQUwiLAkvKiBsb25nIGRlc2NyICovCisJZG8geyBSRUcgPSBSRUcgKyBNVkFMOyBmVElN SU5HX0FJQShFQSxSRUcpOyB9IHdoaWxlICgwKSwKKwkoQV9QTV9NKQorKQorCitERUZfTUFDUk8o CisJZlBNX0NJUkksIC8qIFBvc3QgTW9kaWZ5IFJlZ2lzdGVyIHVzaW5nIENpcmN1bGFyIGFyaXRo bWV0aWMgYnkgSW1tZWRpYXRlICovCisJKFJFRyxJTU0sTVZBTCksCisJIlJFRz1mY2lyY19hZGQo UkVHLElNTSxNVkFMKSIsCS8qIHNob3J0IGRlc2NyICovCisJIlJFRz1mY2lyY19hZGQoUkVHLElN TSxNVkFMKSIsCS8qIGxvbmcgZGVzY3IgKi8KKwlkbyB7IGZjaXJjX2FkZChSRUcsc2lWLE11Vik7 IGZUSU1JTkdfQUlBKEVBLFJFRyk7IH0gd2hpbGUgKDApLAorCShBX1BNX0NJUkkpCispCisKK0RF Rl9NQUNSTygKKwlmUE1fQ0lSUiwgLyogUG9zdCBNb2RpZnkgUmVnaXN0ZXIgdXNpbmcgQ2lyY3Vs YXIgYXJpdGhtZXRpYyBieSByZWdpc3RlciAqLworCShSRUcsVkFMLE1WQUwpLAorCSJSRUc9ZmNp cmNfYWRkKFJFRyxWQUwsTVZBTCkiLAkvKiBzaG9ydCBkZXNjciAqLworCSJSRUc9ZmNpcmNfYWRk KFJFRyxWQUwsTVZBTCkiLAkvKiBsb25nIGRlc2NyICovCisJZG8geyBmY2lyY19hZGQoUkVHLFZB TCxNdVYpOyBmVElNSU5HX0FJQShFQSxSRUcpOyB9IHdoaWxlICgwKSwKKwkoQV9QTV9DSVJSKQor KQorCisKKworREVGX01BQ1JPKAorCWZNT0RDSVJDVSwgLyogbW9kdWxvIHBvd2VyIG9mIDIsIHBv c2l0aXZlIG91dHB1dCAgKi8KKwkoTixQKSwgLyogcGFyYW1ldGVycyAqLworCSJOIG1vZHVsbyAy XlAiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJOIG1vZHVsbyAyXlAgIiwgLyogbG9uZyBk ZXNjcmlwdGlvbiAqLworCSgoTikgJiAoKDE8PChQKSktMSkpLAorCS8qIG9wdGlvbmFsIGF0dHJp YnV0ZXMgKi8KKykKKworREVGX01BQ1JPKAorCWZTQ0FMRSwgLyogc2NhbGUgYnkgTiAqLworCShO LEEpLCAvKiBwYXJhbWV0ZXJzICovCisJIkE8PE4iLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwor CSJBPDxOIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCSgoKHNpemU4c190KShBKSk8PE4pLAor CS8qIG9wdGlvbmFsIGF0dHJpYnV0ZXMgKi8KKykKK0RFRl9NQUNSTygKKwlmVlNBVFcsIC8qIHNh dHVyYXRpbmcgdG8gMzItYml0cyovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJInNhdF8zMihB KSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInNhdHVyYXRlIEEgdG8gMzItYml0cyIsIC8q IGxvbmcgZGVzY3JpcHRpb24gKi8KKwlmVlNBVE4oMzIsKChsb25nIGxvbmcpQSkpLAorCShBX1NB VFVSQVRFKQorKQorCitERUZfTUFDUk8oCisJZlNBVFcsIC8qIHNhdHVyYXRpbmcgdG8gMzItYml0 cyovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJInNhdF8zMihBKSIsIC8qIHNob3J0IGRlc2Ny aXB0aW9uICovCisJInNhdHVyYXRlIEEgdG8gMzItYml0cyIsIC8qIGxvbmcgZGVzY3JpcHRpb24g Ki8KKwlmU0FUTigzMiwoKGxvbmcgbG9uZylBKSksCisJKEFfU0FUVVJBVEUpCispCisKK0RFRl9N QUNSTygKKwlmVlNBVCwgLyogc2F0dXJhdGluZyB0byAzMi1iaXRzKi8KKwkoQSksIC8qIHBhcmFt ZXRlcnMgKi8KKwkic2F0XzMyKEEpIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkic2F0dXJh dGUgQSB0byAzMi1iaXRzIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCWZWU0FUTigzMiwoQSkp LAorCShBX1NBVFVSQVRFKQorKQorCitERUZfTUFDUk8oCisJZlNBVCwgLyogc2F0dXJhdGluZyB0 byAzMi1iaXRzKi8KKwkoQSksIC8qIHBhcmFtZXRlcnMgKi8KKwkic2F0XzMyKEEpIiwgLyogc2hv cnQgZGVzY3JpcHRpb24gKi8KKwkic2F0dXJhdGUgQSB0byAzMi1iaXRzIiwgLyogbG9uZyBkZXNj cmlwdGlvbiAqLworCWZTQVROKDMyLChBKSksCisJKEFfU0FUVVJBVEUpCispCisKK0RFRl9NQUNS TygKKwlmU0FUX09SSUdfU0hMLCAvKiBTYXR1cmF0aW5nIHRvIDMyLWJpdHMsIHdpdGggb3JpZ2lu YWwgdmFsdWUsIGZvciBzaGlmdCBsZWZ0ICovCisJKEEsT1JJR19SRUcpLCAvKiBwYXJhbWV0ZXJz ICovCisJInNhdF8zMihBKSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJInNhdHVyYXRlIEEg dG8gMzItYml0cyBmb3IgbGVmdCBzaGlmdCIsIC8qIGxvbmcgZGVzY3JpcHRpb24gKi8KKwkoKCgo c2l6ZTRzX3QpKChmU0FUKEEpKSBeICgoc2l6ZTRzX3QpKE9SSUdfUkVHKSkpKSA8IDApID8KKwkJ ZlNBVFZBTE4oMzIsKChzaXplNHNfdCkoT1JJR19SRUcpKSkgOgorCQkoKCgoT1JJR19SRUcpID4g MCkgJiYgKChBKSA9PSAwKSkgPworCQkJZlNBVFZBTE4oMzIsKE9SSUdfUkVHKSkgOgorCQkJZlNB VChBKSkpLAorCShBX1NBVFVSQVRFKQorKQorCitERUZfTUFDUk8oCisJZlBBU1MsCisJKEEpLAor CSJBIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKwkiIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAq LworCUEsCispCisKK0RFRl9NQUNSTygKKwlmUk5ELCAvKiBzYXR1cmF0aW5nIHRvIDMyLWJpdHMq LworCShBKSwgLyogcGFyYW1ldGVycyAqLworCSIoKEEpKzEpPj4xIiwgLyogc2hvcnQgZGVzY3Jp cHRpb24gKi8KKwkicm91bmQoQSkiLCAvKiBsb25nIGRlc2NyaXB0aW9uICovCisJKCgoQSkrMSk+ PjEpLAorKQorCisKK0RFRl9NQUNSTygKKwlmQklESVJfU0hJRlRMLAorCShTUkMsU0hBTVQsUkVH U1RZUEUpLAorCSJiaWRpcl9zaGlmdGwoU1JDLFNIQU1UKSIsCisJImJpZGlyX3NoaWZ0bChTUkMs U0hBTVQpIiwKKwkoKChTSEFNVCkgPCAwKSA/ICgoZkNBU1QjI1JFR1NUWVBFKFNSQykgPj4gKCgt KFNIQU1UKSktMSkpID4+MSkgOiAoZkNBU1QjI1JFR1NUWVBFKFNSQykgPDwgKFNIQU1UKSkpLAor CShBX0JJRElSU0hJRlRMKQorKQorCitERUZfTUFDUk8oCisJZkJJRElSX0FTSElGVEwsCisJKFNS QyxTSEFNVCxSRUdTVFlQRSksCisJIihTSEFNVD4wKT8oZkNBU1QjI1JFR1NUWVBFIyNzKFNSQyk8 PFNIQU1UKTooZkNBU1QjI1JFR1NUWVBFIyNzKFNSQyk+PlNIQU1UKSIsCisJImJpZGlyX2FzbChm Q0FTVCMjUkVHU1RZUEUjI3MoU1JDKSxTSEFNVCkiLAorCWZCSURJUl9TSElGVEwoU1JDLFNIQU1U LFJFR1NUWVBFIyNzKSwKKwkoQV9CSURJUlNISUZUTCkKKykKKworREVGX01BQ1JPKAorCWZCSURJ Ul9MU0hJRlRMLAorCShTUkMsU0hBTVQsUkVHU1RZUEUpLAorCSIoU0hBTVQ+MCk/KGZDQVNUIyNS RUdTVFlQRSMjdShTUkMpPDxTSEFNVCk6KGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpPj4+U0hBTVQp IiwKKwkiYmlkaXJfbHNsKGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpLFNIQU1UKSIsCisJZkJJRElS X1NISUZUTChTUkMsU0hBTVQsUkVHU1RZUEUjI3UpLAorCShBX0JJRElSU0hJRlRMKQorKQorCitE RUZfTUFDUk8oCisJZkJJRElSX0FTSElGVExfU0FULAorCShTUkMsU0hBTVQsUkVHU1RZUEUpLAor CSJiaWRpcl9zaGlmdGwoU1JDLFNIQU1UKSIsCisJImJpZGlyX3NoaWZ0bChTUkMsU0hBTVQpIiwK KwkoKChTSEFNVCkgPCAwKSA/ICgoZkNBU1QjI1JFR1NUWVBFIyNzKFNSQykgPj4gKCgtKFNIQU1U KSktMSkpID4+MSkgOiBmU0FUX09SSUdfU0hMKGZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpIDw8IChT SEFNVCksKFNSQykpKSwKKwkoQV9CSURJUlNISUZUTCkKKykKKworCitERUZfTUFDUk8oCisJZkJJ RElSX1NISUZUUiwKKwkoU1JDLFNIQU1ULFJFR1NUWVBFKSwKKwkiYmlkaXJfc2hpZnRyKFNSQyxT SEFNVCkiLAorCSJiaWRpcl9zaGlmdHIoU1JDLFNIQU1UKSIsCisJKCgoU0hBTVQpIDwgMCkgPyAo KGZDQVNUIyNSRUdTVFlQRShTUkMpIDw8ICgoLShTSEFNVCkpLTEpKSA8PCAxKSA6IChmQ0FTVCMj UkVHU1RZUEUoU1JDKSA+PiAoU0hBTVQpKSksCisJKEFfQklESVJTSElGVFIpCispCisKK0RFRl9N QUNSTygKKwlmQklESVJfQVNISUZUUiwKKwkoU1JDLFNIQU1ULFJFR1NUWVBFKSwKKwkiKFNIQU1U PjApPyhmQ0FTVCMjUkVHU1RZUEUjI3MoU1JDKT4+U0hBTVQpOihmQ0FTVCMjUkVHU1RZUEUjI3Mo U1JDKTw8U0hBTVQpIiwKKwkiYmlkaXJfYXNyKGZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpLFNIQU1U KSIsCisJZkJJRElSX1NISUZUUihTUkMsU0hBTVQsUkVHU1RZUEUjI3MpLAorCShBX0JJRElSU0hJ RlRSKQorKQorCitERUZfTUFDUk8oCisJZkJJRElSX0xTSElGVFIsCisJKFNSQyxTSEFNVCxSRUdT VFlQRSksCisJIihTSEFNVD4wKT8oZkNBU1QjI1JFR1NUWVBFIyN1KFNSQyk+Pj5TSEFNVCk6KGZD QVNUIyNSRUdTVFlQRSMjdShTUkMpPDxTSEFNVCkiLAorCSJiaWRpcl9sc3IoZkNBU1QjI1JFR1NU WVBFIyN1KFNSQyksU0hBTVQpIiwKKwlmQklESVJfU0hJRlRSKFNSQyxTSEFNVCxSRUdTVFlQRSMj dSksCisJKEFfQklESVJTSElGVFIpCispCisKK0RFRl9NQUNSTygKKwlmQklESVJfQVNISUZUUl9T QVQsCisJKFNSQyxTSEFNVCxSRUdTVFlQRSksCisJImJpZGlyX3NoaWZ0cihTUkMsU0hBTVQpIiwK KwkiYmlkaXJfc2hpZnRyKFNSQyxTSEFNVCkiLAorCSgoKFNIQU1UKSA8IDApID8gZlNBVF9PUklH X1NITCgoZkNBU1QjI1JFR1NUWVBFIyNzKFNSQykgPDwgKCgtKFNIQU1UKSktMSkpIDw8IDEsKFNS QykpIDogKGZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpID4+IChTSEFNVCkpKSwKKwkoQV9CSURJUlNI SUZUUikKKykKKworREVGX01BQ1JPKAorCWZBU0hJRlRSLAorCShTUkMsU0hBTVQsUkVHU1RZUEUp LAorCSJTUkMgPj4gU0hBTVQiLAorCSJhc3IoU1JDLFNIQU1UKSIsCisJKGZDQVNUIyNSRUdTVFlQ RSMjcyhTUkMpID4+IChTSEFNVCkpLAorCS8qICovCispCisKK0RFRl9NQUNSTygKKwlmTFNISUZU UiwKKwkoU1JDLFNIQU1ULFJFR1NUWVBFKSwKKwkiU1JDID4+PiBTSEFNVCIsCisJImxzcihTUkMs U0hBTVQpIiwKKwkoKChTSEFNVCkgPj0gNjQpPzA6KGZDQVNUIyNSRUdTVFlQRSMjdShTUkMpID4+ IChTSEFNVCkpKSwKKwkvKiAqLworKQorCitERUZfTUFDUk8oCisJZlJPVEwsCisJKFNSQyxTSEFN VCxSRUdTVFlQRSksCisJIlNSQyA8PF97Un0gU0hBTVQiLAorCSJyb2woU1JDLFNIQU1UKSIsCisJ KCgoU0hBTVQpPT0wKSA/IChTUkMpIDogKChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA8PCAoU0hB TVQpKSB8IFwKKwkJKChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA+PiAoKHNpemVvZihTUkMpKjgp LShTSEFNVCkpKSkpKSwKKwkvKiAqLworKQorCitERUZfTUFDUk8oCisJZlJPVFIsCisJKFNSQyxT SEFNVCxSRUdTVFlQRSksCisJIlNSQyA+Pl97Un0gU0hBTVQiLAorCSJyb3IoU1JDLFNIQU1UKSIs CisJKCgoU0hBTVQpPT0wKSA/IChTUkMpIDogKChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA+PiAo U0hBTVQpKSB8IFwKKwkJKChmQ0FTVCMjUkVHU1RZUEUjI3UoU1JDKSA8PCAoKHNpemVvZihTUkMp KjgpLShTSEFNVCkpKSkpKSwKKwkvKiAqLworKQorCitERUZfTUFDUk8oCisJZkFTSElGVEwsCisJ KFNSQyxTSEFNVCxSRUdTVFlQRSksCisJImZDQVNUIyNSRUdTVFlQRSMjcyhTUkMpIDw8IFNIQU1U IiwKKwkiYXNsKFNSQyxTSEFNVCkiLAorCSgoKFNIQU1UKSA+PSA2NCk/MDooZkNBU1QjI1JFR1NU WVBFIyNzKFNSQykgPDwgKFNIQU1UKSkpLAorCS8qICovCispCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogRmxvYXRpbmctUG9pbnQgU3VwcG9ydCAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFD Uk8oCisJZkZMT0FULCAvKiBuYW1lICovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJIkEiLCAv KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJBIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCSh7 IHVuaW9uIHsgZmxvYXQgZjsgc2l6ZTR1X3QgaTsgfSBfZmlwdW47IF9maXB1bi5pID0gKEEpOyBf ZmlwdW4uZjsgfSksICAgICAvKiBiZWhhdmlvciAqLworCShBX0ZQT1AsQV9GUFNJTkdMRSxBX0lN UExJQ0lUX1dSSVRFU19GUEZMQUdTLEFfSU1QTElDSVRfUkVBRFNfRlBSTkQpCispCisKK0RFRl9N QUNSTygKKwlmVU5GTE9BVCwgLyogbXVsdGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKEEpLCAvKiBw YXJhbWV0ZXJzICovCisJIkEiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworCSJBIiwgLyogbG9u ZyBkZXNjcmlwdGlvbiAqLworCSh7IHVuaW9uIHsgZmxvYXQgZjsgc2l6ZTR1X3QgaTsgfSBfZmlw dW47IF9maXB1bi5mID0gKEEpOyBpc25hbihfZmlwdW4uZikgPyAweEZGRkZGRkZGVSA6IF9maXB1 bi5pOyB9KSwgICAgIC8qIGJlaGF2aW9yICovCisJKEFfRlBPUCxBX0ZQU0lOR0xFLEFfSU1QTElD SVRfV1JJVEVTX0ZQRkxBR1MsQV9JTVBMSUNJVF9SRUFEU19GUFJORCkKKykKKworREVGX01BQ1JP KAorCWZTRk5BTlZBTCwoKSwKKwkiTmFOIiwKKwkiTmFOIiwKKwkweGZmZmZmZmZmLAorCSgpCisp CisKK0RFRl9NQUNSTygKKwlmU0ZJTkZWQUwsKEEpLAorCSJzaWduKEEpICogSW5mIiwKKwkic2ln bihBKSAqIEluZiIsCisJKCgoQSkgJiAweDgwMDAwMDAwKSB8IDB4N2Y4MDAwMDApLAorCSgpCisp CisKK0RFRl9NQUNSTygKKwlmU0ZPTkVWQUwsKEEpLAorCSJzaWduKEEpICogMS4wIiwKKwkic2ln bihBKSAqIDEuMCIsCisJKCgoQSkgJiAweDgwMDAwMDAwKSB8IGZVTkZMT0FUKDEuMCkpLAorCSgp CispCisKK0RFRl9NQUNSTygKKwlmQ0hFQ0tTRk5BTiwoRFNULEEpLAorCSJpZiAoaXNuYW4oQSkp IERTVCA9IE5hTjsiLAorCSJpZiAoaXNuYW4oQSkpIERTVCA9IE5hTjsiLAorCWRvIHsKKwkJaWYg KGlzbmFuKGZGTE9BVChBKSkpIHsKKwkJCWlmICgoZkdFVEJJVCgyMixBKSkgPT0gMCkgZlJBSVNF RkxBR1MoRkVfSU5WQUxJRCk7CisJCQlEU1QgPSBmU0ZOQU5WQUwoKTsKKwkJfQorCX0gd2hpbGUg KDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmQ0hFQ0tTRk5BTjMsKERTVCxBLEIsQyksCisJ ImlmIChpc25hbihBKSB8fCBpc25hbihCKSB8fCBpc25hbihDKSkgRFNUID0gTmFOOyIsCisJImlm IChpc25hbihBKSB8fCBpc25hbihCKSB8fCBpc25hbihDKSkgRFNUID0gTmFOOyIsCisJZG8gewor CQlmQ0hFQ0tTRk5BTihEU1QsQSk7CisJCWZDSEVDS1NGTkFOKERTVCxCKTsKKwkJZkNIRUNLU0ZO QU4oRFNULEMpOworCX0gd2hpbGUgKDApLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmU0ZfQklB UywoKSwKKwkiMTI3IiwKKwkic2luZ2xlIHByZWNpc2lvbiBiaWFzIiwKKwkxMjcsCisJKCkKKykK KworREVGX01BQ1JPKAorCWZTRl9NQU5UQklUUywoKSwKKwkiMjMiLAorCSJzaW5nbGUgbWFudGlz c2EgYml0cyIsCisJMjMsCisJKCkKKykKKworREVGX01BQ1JPKAorCWZTRl9SRUNJUF9MT09LVVAs KElEWCksCisJInJlY2lwX2x1dFtJRFhdIiwKKwkiU2luZ2xlIFByZWNpc2lvbiByZWNpcHJvY2Fs IEVzdGltYXRlIiwKKwlhcmNoX3JlY2lwX2xvb2t1cChJRFgpLAorCSgpCispCisKK0RFRl9NQUNS TygKKwlmU0ZfSU5WU1FSVF9MT09LVVAsKElEWCksCisJImludnNxcnRfbHV0W0lEWF0iLAorCSJT aW5nbGUgUHJlY2lzaW9uIHJlY2lwcm9jYWwgRXN0aW1hdGUiLAorCWFyY2hfaW52c3FydF9sb29r dXAoSURYKSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZlNGX01VTF9QT1cyLChBLEIpLAorCSJB ICogMioqQiIsCisJIkEgKiAyKipCIiwKKwkoZlVORkxPQVQoZkZMT0FUKEEpICogZkZMT0FUKChm U0ZfQklBUygpICsgKEIpKSA8PCBmU0ZfTUFOVEJJVFMoKSkpKSwKKwkoKQorKQorCitERUZfTUFD Uk8oCisJZlNGX0dFVEVYUCwoQSksCisJImV4cG9uZW50KEEpIiwKKwkiZXhwb25lbnQoQSkiLAor CSgoKEEpID4+IGZTRl9NQU5UQklUUygpKSAmIDB4ZmYpLAorCSgpCispCisKK0RFRl9NQUNSTygK KwlmU0ZfTUFYRVhQLCgpLAorCSIyNTQiLAorCSJTRiBtYXhpbXVtIGV4cG9uZW50IiwKKwkoMjU0 KSwKKwkoKQorKQorCitERUZfTUFDUk8oCisJZlNGX1JFQ0lQX0NPTU1PTiwoTixELE8sQSksCisJ IihOLEQsTyxBKT1yZWNpcF9jb21tb24oTixEKSIsCisJIihOLEQsTyxBKT1yZWNpcF9jb21tb24o TixEKSIsCisJYXJjaF9zZl9yZWNpcF9jb21tb24oJk4sJkQsJk8sJkEpLAorCShBX0ZQT1AsQV9J TVBMSUNJVF9XUklURVNfRlBGTEFHUykKKykKKworREVGX01BQ1JPKAorCWZTRl9JTlZTUVJUX0NP TU1PTiwoTixPLEEpLAorCSIoTixPLEEpPWludnNxcnRfY29tbW9uKE4pIiwKKwkiKE4sTyxBKT1p bnZzcXJ0X2NvbW1vbihOKSIsCisJYXJjaF9zZl9pbnZzcXJ0X2NvbW1vbigmTiwmTywmQSksCisJ KEFfRlBPUCxBX0lNUExJQ0lUX1dSSVRFU19GUEZMQUdTKQorKQorCitERUZfTUFDUk8oCisJZkZN QUZYLChBLEIsQyxBREopLAorCSJmbWFmKEEsQixDKSAqIDIqKihBREopIiwKKwkiRnVzZWQgTXVs dGlwbHkgQWRkIHcvIFNjYWxpbmc6IChBKkIrQykqMioqQURKIiwKKwlpbnRlcm5hbF9mbWFmeChB LEIsQyxmU1hUTig4LDY0LEFESikpLAorCShBX01QWSkKKykKKworREVGX01BQ1JPKAorCWZGTUFG LChBLEIsQyksCisJImZtYWYoQSxCLEMpIiwKKwkiRnVzZWQgTXVsdGlwbHkgQWRkOiAoQSpCK0Mp IiwKKwlpbnRlcm5hbF9mbWFmeChBLEIsQywwKSwKKwkoQV9NUFkpCispCisKK0RFRl9NQUNSTygK KwlmU0ZNUFksKEEsQiksCisJIkEqQiIsCisJIk11bHRpcGx5OiBBKkIiLAorCWludGVybmFsX21w eWYoQSxCKSwKKwkoQV9NUFkpCispCisKK0RFRl9NQUNSTygKKwlmTUFLRVNGLChTSUdOLEVYUCxN QU5UKSwKKwkiLTEqKlNJR04gKiAxLk1BTlQgKiAyKiooRVhQLUJJQVMpIiwKKwkiLTEqKlNJR04g KiAxLk1BTlQgKiAyKiooRVhQLUJJQVMpIiwKKwkoKCgoU0lHTikgJiAxKSA8PCAzMSkgfCAoKChF WFApICYgMHhmZikgPDwgZlNGX01BTlRCSVRTKCkpIHwKKwkJKChNQU5UKSAmICgoMTw8ZlNGX01B TlRCSVRTKCkpLTEpKSksCisJKCkKKykKKworCitERUZfTUFDUk8oCisJZkRPVUJMRSwgLyogbXVs dGlwbHkgaGFsZiBpbnRlZ2VyICovCisJKEEpLCAvKiBwYXJhbWV0ZXJzICovCisJIkEiLCAvKiBz aG9ydCBkZXNjcmlwdGlvbiAqLworCSJBIiwgLyogbG9uZyBkZXNjcmlwdGlvbiAqLworCSh7IHVu aW9uIHsgZG91YmxlIGY7IHNpemU4dV90IGk7IH0gX2ZpcHVuOyBfZmlwdW4uaSA9IChBKTsgX2Zp cHVuLmY7IH0pLCAgICAgLyogYmVoYXZpb3IgKi8KKwkoQV9GUE9QLEFfRlBET1VCTEUsQV9JTVBM SUNJVF9XUklURVNfRlBGTEFHUyxBX0lNUExJQ0lUX1JFQURTX0ZQUk5EKQorKQorCitERUZfTUFD Uk8oCisJZlVORE9VQkxFLCAvKiBtdWx0aXBseSBoYWxmIGludGVnZXIgKi8KKwkoQSksIC8qIHBh cmFtZXRlcnMgKi8KKwkiQSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisJIkEiLCAvKiBsb25n IGRlc2NyaXB0aW9uICovCisJKHsgdW5pb24geyBkb3VibGUgZjsgc2l6ZTh1X3QgaTsgfSBfZmlw dW47IF9maXB1bi5mID0gKEEpOyBpc25hbihfZmlwdW4uZikgPyAweEZGRkZGRkZGRkZGRkZGRkZV TEwgOiBfZmlwdW4uaTsgfSksICAgICAvKiBiZWhhdmlvciAqLworCShBX0ZQT1AsQV9GUERPVUJM RSxBX0lNUExJQ0lUX1dSSVRFU19GUEZMQUdTLEFfSU1QTElDSVRfUkVBRFNfRlBSTkQpCispCisK K0RFRl9NQUNSTygKKwlmREZOQU5WQUwsKCksCisJIk5hTiIsCisJIk5hTiIsCisJMHhmZmZmZmZm ZmZmZmZmZmZmVUxMLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmREZJTkZWQUwsKEEpLAorCSJz aWduKEEpICogSW5mIiwKKwkic2lnbihBKSAqIEluZiIsCisJKCgoQSkgJiAweDgwMDAwMDAwMDAw MDAwMDBVTEwpIHwgMHg3ZmYwMDAwMDAwMDAwMDAwVUxMKSwKKwkoKQorKQorCitERUZfTUFDUk8o CisJZkRGT05FVkFMLChBKSwKKwkic2lnbihBKSAqIDEuMCIsCisJInNpZ24oQSkgKiAxLjAiLAor CSgoKEEpICYgMHg4MDAwMDAwMDAwMDAwMDAwVUxMKSB8IGZVTkRPVUJMRSgxLjApKSwKKwkoKQor KQorCitERUZfTUFDUk8oCisJZkNIRUNLREZOQU4sKERTVCxBKSwKKwkiaWYgKGlzbmFuKEEpKSBE U1QgPSBOYU47IiwKKwkiaWYgKGlzbmFuKEEpKSBEU1QgPSBOYU47IiwKKwlkbyB7CisJCWlmIChp c25hbihmRE9VQkxFKEEpKSkgeworCQkJaWYgKChmR0VUQklUKDUxLEEpKSA9PSAwKSBmUkFJU0VG TEFHUyhGRV9JTlZBTElEKTsKKwkJCURTVCA9IGZERk5BTlZBTCgpOworCQl9CisJfSB3aGlsZSAo MCksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZDSEVDS0RGTkFOMywoRFNULEEsQixDKSwKKwki aWYgKGlzbmFuKEEpIHx8IGlzbmFuKEIpIHx8IGlzbmFuKEMpKSBEU1QgPSBOYU47IiwKKwkiaWYg KGlzbmFuKEEpIHx8IGlzbmFuKEIpIHx8IGlzbmFuKEMpKSBEU1QgPSBOYU47IiwKKwlkbyB7CisJ CWZDSEVDS0RGTkFOKERTVCxBKTsKKwkJZkNIRUNLREZOQU4oRFNULEIpOworCQlmQ0hFQ0tERk5B TihEU1QsQyk7CisJfSB3aGlsZSAoMCksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZERl9CSUFT LCgpLAorCSIxMDIzIiwKKwkiZG91YmxlIHByZWNpc2lvbiBiaWFzIiwKKwkxMDIzLAorCSgpCisp CisKK0RFRl9NQUNSTygKKwlmREZfSVNOT1JNQUwsKFgpLAorCSJpc19ub3JtYWwoWCkiLAorCSJp cyBYIG5vcm1hbD8iLAorCShmcGNsYXNzaWZ5KGZET1VCTEUoWCkpID09IEZQX05PUk1BTCksCisJ KCkKKykKKworREVGX01BQ1JPKAorCWZERl9JU0RFTk9STSwoWCksCisJImlzX2Rlbm9ybWFsKFgp IiwKKwkiaXMgWCBkZW5vcm1hbD8iLAorCShmcGNsYXNzaWZ5KGZET1VCTEUoWCkpID09IEZQX1NV Qk5PUk1BTCksCisJKCkKKykKKworREVGX01BQ1JPKAorCWZERl9JU0JJRywoWCksCisJIihkZl9l eHBvbmVudChYKSA+PSA1MTIpIiwKKwkiaXMgWCBzdWZmaWNpZW50bHkgbGFyZ2UgZm9yIG1weWZp eCAoZXhwID49IDUxMik/IiwKKwkoZkRGX0dFVEVYUChYKSA+PSA1MTIpLAorCSgpCispCisKK0RF Rl9NQUNSTygKKwlmREZfTUFOVEJJVFMsKCksCisJIjUyIiwKKwkic2luZ2xlIG1hbnRpc3NhIGJp dHMiLAorCTUyLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmREZfUkVDSVBfTE9PS1VQLChJRFgp LAorCSJyZWNpcF9sdXRbSURYXSIsCisJIlNpbmdsZSBQcmVjaXNpb24gcmVjaXByb2NhbCBFc3Rp bWF0ZSIsCisJKHNpemU4dV90KShhcmNoX3JlY2lwX2xvb2t1cChJRFgpKSwKKwkoKQorKQorCitE RUZfTUFDUk8oCisJZkRGX0lOVlNRUlRfTE9PS1VQLChJRFgpLAorCSJpbnZzcXJ0X2x1dFtJRFhd IiwKKwkiU2luZ2xlIFByZWNpc2lvbiByZWNpcHJvY2FsIHNxdWFyZSByb290IEVzdGltYXRlIiwK Kwkoc2l6ZTh1X3QpKGFyY2hfaW52c3FydF9sb29rdXAoSURYKSksCisJKCkKKykKKworREVGX01B Q1JPKAorCWZERl9NVUxfUE9XMiwoQSxCKSwKKwkiQSAqIDIqKkIiLAorCSJBICogMioqQiIsCisJ KGZVTkRPVUJMRShmRE9VQkxFKEEpICogZkRPVUJMRSgoMFVMTCArIGZERl9CSUFTKCkgKyAoQikp IDw8IGZERl9NQU5UQklUUygpKSkpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmREZfR0VURVhQ LChBKSwKKwkiZXhwb25lbnQoQSkiLAorCSJleHBvbmVudChBKSIsCisJKCgoQSkgPj4gZkRGX01B TlRCSVRTKCkpICYgMHg3ZmYpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmREZfTUFYRVhQLCgp LAorCSIyMDQ2IiwKKwkiU0YgbWF4aW11bSBleHBvbmVudCIsCisJKDIwNDYpLAorCSgpCispCisK K0RFRl9NQUNSTygKKwlmREZfUkVDSVBfQ09NTU9OLChOLEQsTyxBKSwKKwkiKE4sRCxPLEEpPXJl Y2lwX2NvbW1vbihOLEQpIiwKKwkiKE4sRCxPLEEpPXJlY2lwX2NvbW1vbihOLEQpIiwKKwlhcmNo X2RmX3JlY2lwX2NvbW1vbigmTiwmRCwmTywmQSksCisJKEFfRlBPUCkKKykKKworREVGX01BQ1JP KAorCWZERl9JTlZTUVJUX0NPTU1PTiwoTixPLEEpLAorCSIoTixPLEEpPWludnNxcnRfY29tbW9u KE4pIiwKKwkiKE4sTyxBKT1pbnZzcXJ0X2NvbW1vbihOKSIsCisJYXJjaF9kZl9pbnZzcXJ0X2Nv bW1vbigmTiwmTywmQSksCisJKEFfRlBPUCkKKykKKworREVGX01BQ1JPKAorCWZGTUEsIChBLEIs QyksCisJImZtYShBLEIsQykiLAorCSJGdXNlZCBNdWx0aXBseSBBZGQ6IEEqQitDIiwKKwlpbnRl cm5hbF9mbWEoQSxCLEMpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKAorCWZERk1Q WSwgKEEsQiksCisJIkEqQiIsCisJIk11bHRpcGx5OiBBKkIiLAorCWludGVybmFsX21weShBLEIp LAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKAorCWZERl9NUFlfSEgsIChBLEIsQUND KSwKKwkiQSpCIHdpdGggcGFydGlhbCBwcm9kdWN0IEFDQyIsCisJIk11bHRpcGx5OiBBKkIgd2l0 aCBwYXJ0aWFsIHByb2R1Y3QgQUNDIiwKKwlpbnRlcm5hbF9tcHloaChBLEIsQUNDKSwKKwkvKiBu b3RoaW5nICovCispCisKK0RFRl9NQUNSTygKKwlmRk1BWCwgKEEsQixDLEFESiksCisJImZtYShB LEIsQykqMioqKDIqQURKKSIsCisJIkZ1c2VkIE11bHRpcGx5IEFkZDogKEEqQitDKSoyKiooMipB REopIiwKKwlpbnRlcm5hbF9mbWF4KEEsQixDLGZTWFROKDgsNjQsQURKKSoyKSwKKwkvKiBub3Ro aW5nICovCispCisKK0RFRl9NQUNSTygKKwlmTUFLRURGLChTSUdOLEVYUCxNQU5UKSwKKwkiLTEq KlNJR04gKiAxLk1BTlQgKiAyKiooRVhQLUJJQVMpIiwKKwkiLTEqKlNJR04gKiAxLk1BTlQgKiAy KiooRVhQLUJJQVMpIiwKKwkoKCgoU0lHTikgJiAxVUxMKSA8PCA2MykgfCAoKChFWFApICYgMHg3 ZmZVTEwpIDw8IGZERl9NQU5UQklUUygpKSB8CisJCSgoTUFOVCkgJiAoKDFVTEw8PGZERl9NQU5U QklUUygpKS0xKSkpLAorCSgpCispCisKK0RFRl9NQUNSTygKKwlmRlBPUF9TVEFSVCwKKwkoKSwK KwkiZnBvcF9zdGFydCIsCisJIkJlZ2luIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbiIsCisJYXJj aF9mcG9wX3N0YXJ0KHRocmVhZCksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oCisJ ZkZQT1BfRU5ELAorCSgpLAorCSJmcG9wX2VuZCIsCisJIkVuZCBmbG9hdGluZyBwb2ludCBvcGVy YXRpb24iLAorCWFyY2hfZnBvcF9lbmQodGhyZWFkKSwKKwkvKiBub3RoaW5nICovCispCisKK0RF Rl9NQUNSTygKKwlmRlBTRVRST1VORF9ORUFSRVNULAorCSgpLAorCSJyb3VuZF90b19uZWFyZXN0 KCkiLAorCSJTZXQgcm91bmRpbmcgbW9kZSB0byBOZWFyZXN0IiwKKwlmZXNldHJvdW5kKEZFX1RP TkVBUkVTVCksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oCisJZkZQU0VUUk9VTkRf Q0hPUCwKKwkoKSwKKwkicm91bmRfdG9femVybygpIiwKKwkiU2V0IHJvdW5kaW5nIG1vZGUgdG8g Q2hvcCIsCisJZmVzZXRyb3VuZChGRV9UT1dBUkRaRVJPKSwKKwkvKiBub3RoaW5nICovCispCisK K0RFRl9NQUNSTygKKwlmRlBDQU5DRUxGTEFHUywKKwkoKSwKKwkiY2FuY2VsX2ZsYWdzKCkiLAor CSJEbyBub3QgdXBkYXRlIEZsb2F0aW5nIFBvaW50IEZsYWdzIiwKKwlmZWNsZWFyZXhjZXB0KEZF X0FMTF9FWENFUFQpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKAorCWZJU0lORlBS T0QsCisJKEEsQiksCisJImlzaW5mKEEqQikiLAorCSJUcnVlIGlmIHRoZSBwcm9kdWN0IG9mIEEg YW5kIEIgaXMgdHJ1bHkgaW5maW5pdGUiLAorCSgoaXNpbmYoQSkgJiYgaXNpbmYoQikpIHx8CisJ CShpc2luZihBKSAmJiBpc2Zpbml0ZShCKSAmJiAoKEIpICE9IDAuMCkpIHx8CisJCShpc2luZihC KSAmJiBpc2Zpbml0ZShBKSAmJiAoKEEpICE9IDAuMCkpKSwKKwkvKiBub3RoaW5nICovCispCisK K0RFRl9NQUNSTygKKwlmSVNaRVJPUFJPRCwKKwkoQSxCKSwKKwkiaXNfdHJ1ZV96ZXJvKEEqQiki LAorCSJUcnVlIGlmIHRoZSBwcm9kdWN0IG9mIEEgYW5kIEIgaXMgdHJ1bHkgemVybyIsCisJKCgo KEEpID09IDAuMCkgJiYgaXNmaW5pdGUoQikpIHx8ICgoKEIpID09IDAuMCkgJiYgaXNmaW5pdGUo QSkpKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTygKKwlmUkFJU0VGTEFHUywKKwko QSksCisJImZwZmxhZ3MgfD0gQSIsCisJIlJhaXNlIEZsb2F0aW5nIFBvaW50IEZsYWdzIiwKKwlh cmNoX3JhaXNlX2ZwZmxhZyhBKSwKKwkvKiBOT1RISU5HICovCispCisKK0RFRl9NQUNSTygKKwlm REZfTUFYLAorCShBLEIpLAorCSJmbWF4KEEsQikiLAorCSJGbG9hdGluZyBQb2ludCBNYXhpbXVt IiwKKwkoKChBKT09KEIpKQorCQk/IGZET1VCTEUoZlVORE9VQkxFKEEpICYgZlVORE9VQkxFKEIp KQorCQk6IGZtYXgoQSxCKSksCisJKEFfRlBPUCkKKykKKworREVGX01BQ1JPKAorCWZERl9NSU4s CisJKEEsQiksCisJImZtaW4oQSxCKSIsCisJIkZsb2F0aW5nIFBvaW50IE1heGltdW0iLAorCSgo KEEpPT0oQikpCisJCT8gZkRPVUJMRShmVU5ET1VCTEUoQSkgfCBmVU5ET1VCTEUoQikpCisJCTog Zm1pbihBLEIpKSwKKwkoQV9GUE9QKQorKQorCitERUZfTUFDUk8oCisJZlNGX01BWCwKKwkoQSxC KSwKKwkiZm1heGYoQSxCKSIsCisJIkZsb2F0aW5nIFBvaW50IE1heGltdW0iLAorCSgoKEEpPT0o QikpCisJCT8gZkZMT0FUKGZVTkZMT0FUKEEpICYgZlVORkxPQVQoQikpCisJCTogZm1heGYoQSxC KSksCisJKEFfRlBPUCkKKykKKworREVGX01BQ1JPKAorCWZTRl9NSU4sCisJKEEsQiksCisJImZt aW4oQSxCKSIsCisJIkZsb2F0aW5nIFBvaW50IE1heGltdW0iLAorCSgoKEEpPT0oQikpCisJCT8g ZkZMT0FUKGZVTkZMT0FUKEEpIHwgZlVORkxPQVQoQikpCisJCTogZm1pbmYoQSxCKSksCisJKEFf RlBPUCkKKykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBM b2FkL1N0b3JlIHN1cHBvcnQgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oZk1NVSwoQUREUiksCisJIkFERFIiLAor CSJBRERSIiwKKwkvKiBtbXUgeGxhdGUgKi8gQUREUiwKKwkoQV9FWENFUFRJT05fVExCLEFfRVhD RVBUSU9OX0FDQ0VTUykKKykKKworREVGX01BQ1JPKGZjaXJjX2FkZCwoUkVHLElOQ1IsSU1NRUQp LAorCSJSRUc9Y2lyY19hZGQoUkVHLElOQ1IsSU1NRUQpIiwKKwkiUkVHPWNpcmNfYWRkKFJFRyxJ TkNSLElNTUVEKSIsCisJKFJFRz1mY2lyY2FkZCh0aHJlYWQsIFJFRyxJTkNSLElNTUVELCBmUkVB RF9DU1JFRyhNdU4pKSksCisJKEFfQ0lSQ0FERFIsQV9JTVBMSUNJVF9SRUFEU19DUykKKykKKwor REVGX01BQ1JPKGZicmV2LChSRUcpLAorCSJSRUcuaFsxXSB8IGJyZXYoUkVHLmhbMF0pIiwKKwki UkVHLmhbMV0gfCBicmV2KFJFRy5oWzBdKSIsCisJKGZicmV2YWRkcihSRUcpKSwKKwkoQV9CUkVW QUREUikKKykKKworCitERUZfTUFDUk8oZkxPQUQsKE5VTSxTSVpFLFNJR04sRUEsRFNUKSwKKwki RFNUID0gKkVBIiwKKwkiR2V0IFNJWkUgYnl0ZXMgZnJvbSBtZW1vcnkgYXQgRUEgYW5kIHNhdmUg aW4gRFNULiIsCisJeyBEU1QgPSAoc2l6ZSMjU0laRSMjU0lHTiMjX3QpTUVNX0xPQUQjI1NJWkUo dGhyZWFkLEVBLGluc24pOyB9LAorCShBX0xPQUQsQV9NRU1MSUtFLEFfUkVTVFJJQ1RfU0lOR0xF X01FTV9GSVJTVCkKKykKKworREVGX01BQ1JPKGZNRU1PUCwoTlVNLFNJWkUsU0lHTixFQSxGTlRZ UEUsVkFMVUUpLAorCSJEU1QgPSAqRUEiLAorCSJHZXQgU0laRSBieXRlcyBmcm9tIG1lbW9yeSBh dCBFQSBhbmQgc2F2ZSBpbiBEU1QuIiwKKwl7IG1lbW9wIyNTSVpFIyNfIyNGTlRZUEUodGhyZWFk LEVBLFZBTFVFKTsgfSwKKwkoQV9MT0FELEFfU1RPUkUsQV9NRU1MSUtFLEFfUkVTVFJJQ1RfU0lO R0xFX01FTV9GSVJTVCkKKykKKworREVGX01BQ1JPKGZHRVRfRlJBTUVLRVksKCksCisJIkZSQU1F S0VZIiwKKwkiRlJBTUVLRVkiLAorCVJFQURfUlJFRyhSRUdfRlJBTUVLRVkpLAorCShBX0lNUExJ Q0lUX1JFQURTX0ZSQU1FS0VZKQorKQorCitERUZfTUFDUk8oZkZSQU1FX1NDUkFNQkxFLChWQUwp LAorCSJmcmFtZV9zY3JhbWJsZShWQUwpIiwKKwkiZnJhbWVfc2NyYW1ibGUoVkFMKSIsCisJKChW QUwpIF4gKGZDQVNUOHUoZkdFVF9GUkFNRUtFWSgpKSA8PCAzMikpLAorCS8qIEFUVFJJQlMgKi8K KykKKworREVGX01BQ1JPKGZGUkFNRV9VTlNDUkFNQkxFLChWQUwpLAorCSJmcmFtZV91bnNjcmFt YmxlKFZBTCkiLAorCSJmcmFtZV91bnNjcmFtYmxlKFZBTCkiLAorCWZGUkFNRV9TQ1JBTUJMRShW QUwpLAorCS8qIEFUVFJJQlMgKi8KKykKKworREVGX01BQ1JPKGZGUkFNRUNIRUNLLChBRERSLEVB KSwKKwkiZnJhbWVfY2hlY2tfbGltaXQoQUREUikiLAorCSJmcmFtZV9jaGVja19saW1pdChBRERS KSIsCisJc3lzX2NoZWNrX2ZyYW1lbGltaXQodGhyZWFkLEFERFIsRUEpLAorCShBX0lNUExJQ0lU X1JFQURTX0ZSQU1FTElNSVQpCispCisKK0RFRl9NQUNSTyhmTE9BRF9MT0NLRUQsKE5VTSxTSVpF LFNJR04sRUEsRFNUKSwKKwkiRFNUID0gKkVBOyAiLAorCSJHZXQgU0laRSBieXRlcyBmcm9tIG1l bW9yeSBhdCBFQSBhbmQgc2F2ZSBpbiBEU1QuIiwKKwl7ICAgICBEU1QgPSAoc2l6ZSMjU0laRSMj U0lHTiMjX3QpbWVtX2xvYWRfbG9ja2VkKHRocmVhZCxFQSxTSVpFLGluc24pOworICB9LAorCShB X0xPQUQsQV9NRU1MSUtFLEFfUkVTVFJJQ1RfU0lOR0xFX01FTV9GSVJTVCkKKykKKworREVGX01B Q1JPKGZMT0FEX1BIWVMsKE5VTSxTSVpFLFNJR04sU1JDMSxTUkMyLERTVCksCisJIkRTVCA9ICoo KFNSQzEmMHg3ZmYpIHwgKFNSQzI8PDExKSkiLAorCSJMb2FkIGZyb20gcGh5c2ljYWwgYWRkcmVz cyIsCisJeyAgICAgRFNUID0gKHNpemUjI1NJWkUjI1NJR04jI190KW1lbV9sb2FkX3BoeXModGhy ZWFkLFNSQzEsU1JDMixpbnNuKTsKKyAgfSwKKwkoQV9MT0FELEFfTUVNTElLRSxBX1JFU1RSSUNU X1NJTkdMRV9NRU1fRklSU1QpCispCisKKworREVGX01BQ1JPKGZTVE9SRSwoTlVNLFNJWkUsRUEs U1JDKSwKKwkiKkVBID0gU1JDIiwKKwkiU3RvcmUgU0laRSBieXRlcyBmcm9tIFNSQyBpbnRvIG1l bW9yeSBhdCBFQSIsCisJeyBNRU1fU1RPUkUjI1NJWkUodGhyZWFkLEVBLFNSQyxpbnNuKTsgfSwK KwkoQV9TVE9SRSxBX01FTUxJS0UsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCisK K0RFRl9NQUNSTyhmU1RPUkVfTE9DS0VELChOVU0sU0laRSxFQSxTUkMsUFJFRCksCisJImlmIChs b2NrX3ZhbGlkKSB7ICpFQSA9IFNSQzsgUFJFRCA9IDB4ZmY7IGxvY2tfdmFsaWQgPSAwOyB9IGVs c2UgeyBQUkVEID0gMDsgfSIsCisJImlmIHRoZSBsb2NrIGlzIHZhbGlkLCBTdG9yZSBTSVpFIGJ5 dGVzIGZyb20gU1JDIGludG8gbWVtb3J5IGF0IEVBLCBhbmQgaW52YWxpZGF0ZSB0aGUgbG9jay4g IFBSRUQgaXMgc2V0IHRvIGFsbCAxcyBpZiB0aGUgd3JpdGUgYWN0dWFsbHkgdG9vayBwbGFjZS4i LAorCXsgUFJFRCA9IChtZW1fc3RvcmVfY29uZGl0aW9uYWwodGhyZWFkLEVBLFNSQyxTSVpFLGlu c24pID8gMHhmZiA6IDApOyB9LAorCShBX1NUT1JFLEFfTUVNTElLRSxBX1JFU1RSSUNUX1NJTkdM RV9NRU1fRklSU1QpCispCisKK0RFRl9NQUNSTyhmVlRDTV9NRU1DUFksKERTVCxTUkMsU0laRSks CisJImZvciAoaSA9IDA7IGkgPD0gU0laRTsgaSsrKSB7ICooRFNUICsgaSkgPSAqKFNSQyArIGkp OyB9IiwKKwkiQ29weSBTSVpFKzEgYnl0ZXMgZnJvbSBtZW1vcnkgYXQgU1JDIHRvIG1lbW9yeSBh dCBEU1QiLAorCW1lbV92dGNtX21lbWNweSh0aHJlYWQsIGluc24sIERTVCwgU1JDLCBTSVpFKTss CisJLyogQVRUUklCUyAqLworKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworLyogUGVybXV0ZSBIYW5kbGVyICAgICAgICAgICAgICAgICAgICovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworREVGX01BQ1JPKGZQRVJNVVRFSCwo U1JDMCxTUkMxLENUUkwpLAorCSJwZXJtdXRlKFNSQzAsU1JDMSxDVFJMKSIsCisJIlBlcm11dGUg U1JDMCBhbmQgU1JDMSBhY2NvcmRpbmcgdG8gQ1RSTCIsCisJZnBlcm11dGVoKChTUkMwKSwoU1JD MSksQ1RSTCksCisJKEFfUEVSTSkKKykKKworREVGX01BQ1JPKGZQRVJNVVRFQiwoU1JDMCxTUkMx LENUUkwpLAorCSJwZXJtdXRlKFNSQzAsU1JDMSxDVFJMKSIsCisJIlBlcm11dGUgU1JDMCBhbmQg U1JDMSBhY2NvcmRpbmcgdG8gQ1RSTCIsCisJZnBlcm11dGViKChTUkMwKSwoU1JDMSksQ1RSTCks CisJKEFfUEVSTSkKKykKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiBGdW5jdGlvbnMgdG8gaGVscCB3aXRoIGJ5dGVzICAgICAgKi8KKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oZkdFVEJZVEUsKE4sU1JDKSwK KwkiU1JDLmJbTl0iLAorCSJCeXRlIE4gZnJvbSBTUkMiLAorICAgICAgICAgKChzaXplMXNfdCko KFNSQz4+KChOKSo4KSkmMHhmZikpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKGZH RVRVQllURSwoTixTUkMpLAorCSJTUkMudWJbTl0iLAorCSJCeXRlIE4gZnJvbSBTUkMiLAorICAg ICAgICAgKChzaXplMXVfdCkoKFNSQz4+KChOKSo4KSkmMHhmZikpLAorCS8qIG5vdGhpbmcgKi8K KykKKworREVGX01BQ1JPKGZTRVRCWVRFLChOLERTVCxWQUwpLAorCSJEU1QuYltOXT1WQUwiLAor CSJCeXRlIE4gZnJvbSBEU1QgPSBWQUwiLAorCXsKKwlEU1QgPSAoRFNUICYgfigweDBmZkxMPDwo KE4pKjgpKSkgfCAoKChzaXplOHVfdCkoKFZBTCkgJiAweDBmZkxMKSkgPDwgKChOKSo4KSk7CisJ fSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmR0VUSEFMRiwoTixTUkMpLAorCSJT UkMuaFtOXSIsCisJIkhhbGZ3b3JkIE4gZnJvbSBTUkMiLAorICAgICAgICAgKChzaXplMnNfdCko KFNSQz4+KChOKSoxNikpJjB4ZmZmZikpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JP KGZHRVRVSEFMRiwoTixTUkMpLAorCSJTUkMudWhbTl0iLAorCSJIYWxmd29yZCBOIGZyb20gU1JD IiwKKyAgICAgICAgICgoc2l6ZTJ1X3QpKChTUkM+PigoTikqMTYpKSYweGZmZmYpKSwKKwkvKiBu b3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmU0VUSEFMRiwoTixEU1QsVkFMKSwKKwkiRFNULmhb Tl09VkFMIiwKKwkiSGFsZndvcmQgTiBmcm9tIERTVCA9IFZBTCIsCisJeworCURTVCA9IChEU1Qg JiB+KDB4MGZmZmZMTDw8KChOKSoxNikpKSB8ICgoKHNpemU4dV90KSgoVkFMKSAmIDB4MGZmZmYp KSA8PCAoKE4pKjE2KSk7CisJfSwKKwkvKiBub3RoaW5nICovCispCisKKworCitERUZfTUFDUk8o ZkdFVFdPUkQsKE4sU1JDKSwKKwkiU1JDLndbTl0iLAorCSJXb3JkIE4gZnJvbSBTUkMiLAorICAg ICAgICAgKChzaXplOHNfdCkoKHNpemU0c190KSgoU1JDPj4oKE4pKjMyKSkmMHgwZmZmZmZmZmZM TCkpKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmR0VUVVdPUkQsKE4sU1JDKSwK KwkiU1JDLnV3W05dIiwKKwkiV29yZCBOIGZyb20gU1JDIiwKKyAgICAgICAgICgoc2l6ZTh1X3Qp KChzaXplNHVfdCkoKFNSQz4+KChOKSozMikpJjB4MGZmZmZmZmZmTEwpKSksCisJLyogbm90aGlu ZyAqLworKQorCitERUZfTUFDUk8oZlNFVFdPUkQsKE4sRFNULFZBTCksCisJIkRTVC53W05dPVZB TCIsCisJIldvcmQgTiBmcm9tIERTVCA9IFZBTCIsCisJeworCURTVCA9IChEU1QgJiB+KDB4MGZm ZmZmZmZmTEw8PCgoTikqMzIpKSkgfCAoKChWQUwpICYgMHgwZmZmZmZmZmZMTCkgPDwgKChOKSoz MikpOworCX0sCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZkFDQywoKSwKKyAgICAi IiwKKyAgICAiIiwKKyAgICAsCisgICAgKEFfQUNDKQorKQorCitERUZfTUFDUk8oZkVYVEVOU0lP Tl9BVURJTywoQSksCisgICAgIkEiLAorICAgICJBIiwKKyAgICBBLAorICAgIChBX0VYVEVOU0lP Tl9BVURJTyxBX05PVEVfRVhURU5TSU9OX0FVRElPKQorKQorCitERUZfTUFDUk8oZlNFVEJJVCwo TixEU1QsVkFMKSwKKwkiRFNULk4gPSBWQUwiLAorCSJTZXQgYml0IE4gaW4gRFNUIHRvIFZBTCIs CisJeworCURTVCA9IChEU1QgJiB+KDFVTEw8PChOKSkpIHwgKCgoc2l6ZTh1X3QpKFZBTCkpPDwo TikpOworCX0sCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZkdFVEJJVCwoTixTUkMp LAorCSJTUkMuTiIsCisJIkdldCBiaXQgTiBmcm9tIFNSQyIsCisJKCgoU1JDKT4+TikmMSksCisJ Lyogbm90aGluZyAqLworKQorCisKK0RFRl9NQUNSTyhmU0VUQklUUywoSEksTE8sRFNULFZBTCks CisJIkRTVFtISTpMT10gPSBWQUwiLAorCSJTZXQgYml0cyBmcm9tIEhJIHRvIExPIGluIERTVCB0 byBWQUwiLAorCWRvIHsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGZvciAoaj1MTztqPD1ISTtq KyspIHsKKyAgICAgICAgICBmU0VUQklUKGosRFNULFZBTCk7CisgICAgICAgIH0KKwl9IHdoaWxl ICgwKSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmVU5ERUZJTkVELCgpLAorCSJV TkRFRklORUQiLAorCSJVTkRFRklORUQiLAorCXdhcm4oIltVTkRFRklORURdOiBhcmNoaXRlY3R1 cmFsbHkgdW5kZWZpbmVkIiksCisJLyogTk9USElORyAqLworKQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFVzZWQgZm9yIHBhcml0eSwgZXRjLi4uLi4uLi4g ICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitERUZfTUFD Uk8oZkNPVU5UT05FU18yLChWQUwpLAorCSJjb3VudF9vbmVzKFZBTCkiLAorCSJDb3VudCB0aGUg bnVtYmVyIG9mIGJpdHMgc2V0IGluIFZBTCIsCisJY291bnRfb25lc18yKFZBTCksCisJLyogbm90 aGluZyAqLworKQorCitERUZfTUFDUk8oZkNPVU5UT05FU180LChWQUwpLAorCSJjb3VudF9vbmVz KFZBTCkiLAorCSJDb3VudCB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIFZBTCIsCisJY291bnRf b25lc180KFZBTCksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZkNPVU5UT05FU184 LChWQUwpLAorCSJjb3VudF9vbmVzKFZBTCkiLAorCSJDb3VudCB0aGUgbnVtYmVyIG9mIGJpdHMg c2V0IGluIFZBTCIsCisJY291bnRfb25lc184KFZBTCksCisJLyogbm90aGluZyAqLworKQorCitE RUZfTUFDUk8oZkJSRVZfOCwoVkFMKSwKKwkicmV2ZXJzZV9iaXRzKFZBTCkiLAorCSJDb3VudCB0 aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIFZBTCIsCisJcmV2ZXJzZV9iaXRzXzgoVkFMKSwKKwkv KiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmQlJFVl80LChWQUwpLAorCSJyZXZlcnNlX2Jp dHMoVkFMKSIsCisJIkNvdW50IHRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gVkFMIiwKKwlyZXZl cnNlX2JpdHNfNChWQUwpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKGZCUkVWXzIs KFZBTCksCisJInJldmVyc2VfYml0cyhWQUwpIiwKKwkiQ291bnQgdGhlIG51bWJlciBvZiBiaXRz IHNldCBpbiBWQUwiLAorCXJldmVyc2VfYml0c18yKFZBTCksCisJLyogbm90aGluZyAqLworKQor CitERUZfTUFDUk8oZkJSRVZfMSwoVkFMKSwKKwkicmV2ZXJzZV9iaXRzKFZBTCkiLAorCSJDb3Vu dCB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIFZBTCIsCisJcmV2ZXJzZV9iaXRzXzEoVkFMKSwK KwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmQ0wxXzgsKFZBTCksCisJImNvdW50X2xl YWRpbmdfb25lcyhWQUwpIiwKKwkiQ291bnQgdGhlIG51bWJlciBvZiBiaXRzIHNldCBpbiBWQUwi LAorCWNvdW50X2xlYWRpbmdfb25lc184KFZBTCksCisJLyogbm90aGluZyAqLworKQorCitERUZf TUFDUk8oZkNMMV80LChWQUwpLAorCSJjb3VudF9sZWFkaW5nX29uZXMoVkFMKSIsCisJIkNvdW50 IHRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gVkFMIiwKKwljb3VudF9sZWFkaW5nX29uZXNfNChW QUwpLAorCS8qIG5vdGhpbmcgKi8KKykKKworREVGX01BQ1JPKGZDTDFfMiwoVkFMKSwKKwkiY291 bnRfbGVhZGluZ19vbmVzKFZBTCkiLAorCSJDb3VudCB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGlu IFZBTCIsCisJY291bnRfbGVhZGluZ19vbmVzXzIoVkFMKSwKKwkvKiBub3RoaW5nICovCispCisK K0RFRl9NQUNSTyhmQ0wxXzEsKFZBTCksCisJImNvdW50X2xlYWRpbmdfb25lcyhWQUwpIiwKKwki Q291bnQgdGhlIG51bWJlciBvZiBiaXRzIHNldCBpbiBWQUwiLAorCWNvdW50X2xlYWRpbmdfb25l c18xKFZBTCksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZklOVEVSTEVBVkUsKE9E RCxFVkVOKSwKKwkiaW50ZXJsZWF2ZShPREQsRVZFTikiLAorCSJJbnRlcmxlYXZlIG9kZCBiaXRz IGZyb20gT0REIHdpdGggZXZlbiBiaXRzIGZyb20gRVZFTiIsCisJaW50ZXJsZWF2ZShPREQsRVZF TiksCisJLyogbm90aGluZyAqLworKQorCitERUZfTUFDUk8oZkRFSU5URVJMRUFWRSwoTUlYRUQp LAorCSJkZWludGVybGVhdmUoT0RELEVWRU4pIiwKKwkiRGVpbnRlcmxlYXZlIG9kZCBiaXRzIGlu dG8gaGlnaCBoYWxmIGV2ZW4gYml0cyB0byBsb3cgaGFsZiIsCisJZGVpbnRlcmxlYXZlKE1JWEVE KSwKKwkvKiBub3RoaW5nICovCispCisKK0RFRl9NQUNSTyhmTk9STTE2LChWQUwpLAorCSJnZXQg bm9ybSBvZiAxNmJpdCB2YWx1ZShWQUwpIiwKKwkidGhlIG51bWJlciBvZiBsZWFkaW5nIHNpZ24g Yml0cyBpbiBWQUwiLAorICAgICAgICAoKFZBTCA9PSAwKSA/ICgzMSkgOiAoZk1BWChmQ0wxXzIo IFZBTCksZkNMMV8yKH5WQUwpKS0xKSksCisJLyogbm90aGluZyAqLworKQorCisKKworREVGX01B Q1JPKGZISURFLChBKSwKKwkiIiwKKwkiIiwKKwlBLAorCSgpCispCisKK0RFRl9NQUNSTyhmQVNN X01BUCwoQSxCKSwKKwkiQXNzZW1ibGVyIG1hcHBlZCB0bzogQiIsCisJIkFzc2VtYmxlciBtYXBw ZWQgdG86IEIiLAorCWZhdGFsKCJBU01fTUFQIGluc3RydWN0aW9uICIgQSAiLT4iIEIgIiBleGVj dXRlZC4iKTssCisJKCkKKykKKworREVGX01BQ1JPKGZDT05EX0FTTV9NQVAsKEEsQyxYLFkpLAor CSJpZiAoQykge0Fzc2VtYmxlciBtYXBwZWQgdG86IFg7fSBlbHNlIHtBc3NlbWJsZXIgbWFwcGVk IHRvOiBZO31AIiwKKwkiaWYgKEMpIHtBc3NlbWJsZXIgbWFwcGVkIHRvOiBZO30gZWxzZSB7QXNz ZW1ibGVyIG1hcHBlZCB0bzogWTt9QCIsCisJZmF0YWwoIkFTTV9NQVAgaW5zdHJ1Y3Rpb24gIiBB ICItPiIgWCAiLyIgWSAiIGV4ZWN1dGVkLiIpOywKKwkoKQorKQorCitERUZfTUFDUk8oZkNPTlNU TEwsKEEpLAorCSJBIiwKKwkiQSIsCisJQSMjTEwsCispCisKK0RFRl9NQUNSTyhmQ09OU1RVTEws KEEpLAorCSJBIiwKKwkiQSIsCisJQSMjVUxMLAorKQorCisvKiBEbyB0aGUgdGhpbmdzIGluIHRo ZSBwYXJlbnMsIGJ1dCBkb24ndCBwcmludCB0aGUgcGFyZW5zLiAqLworREVGX01BQ1JPKGZFQ0hP LChBKSwKKwkiQSIsCisJIkEiLAorCShBKSwKKwkvKiBub3RoaW5nICovCispCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogT1MgaW50ZXJmYWNl IGFuZCBzdG9wL3dhaXQgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitERUZfTUFDUk8oUlVOTkFCTEVfVEhSRUFEU19NQVgs LAorCSJUSFJFQURTX01BWCIsCisJIlRIUkVBRFNfTUFYIiwKKwkodGhyZWFkLT5wcm9jZXNzb3Jf cHRyLT5ydW5uYWJsZV90aHJlYWRzX21heCksCisJKCkKKykKKworREVGX01BQ1JPKFRIUkVBRF9J U19PTiwoUFJPQyxUTlVNKSwKKwkiVEhSRUFEIElTIEVOQUJMRSIsCisJIlRocmVhZCBpcyBlbmFi bGVkIGluIHRoZSByZXZpZCIsCisJKChQUk9DLT5hcmNoX3Byb2Nfb3B0aW9ucy0+dGhyZWFkX2Vu YWJsZV9tYXNrPj5UTlVNKSAmIDB4MSksCisJKCkKKykKKworREVGX01BQ1JPKFRIUkVBRF9FTl9N QVNLLChQUk9DKSwKKwkiVEhSRUFEIElTIEVOQUJMRSBNQVNLIiwKKwkiVGhyZWFkIGlzIGVuYWJs ZWQgaW4gdGhlIHJldmlkIiwKKwkoKFBST0MtPmFyY2hfcHJvY19vcHRpb25zLT50aHJlYWRfZW5h YmxlX21hc2spKSwKKwkoKQorKQorCisKKworREVGX01BQ1JPKFJFQURfSU1BU0ssKFRIKSwKKwki SU1BU0tbVEhdIiwKKwkiSU1BU0tbVEhdIiwKKyAgICAgICAgICgoKFRIKSA+PSAodGhyZWFkLT5w cm9jZXNzb3JfcHRyLT5ydW5uYWJsZV90aHJlYWRzX21heCkpID8gMCA6ICh0aHJlYWQtPnByb2Nl c3Nvcl9wdHItPnRocmVhZFtUSF0tPlJlZ3NbUkVHX0lNQVNLXSkpLAorCShBX0lNUExJQ0lUX1JF QURTX0lNQVNLX0FOWVRIUkVBRCkKKykKK0RFRl9NQUNSTyhXUklURV9JTUFTSywoVEgsVkFMKSwK KwkiSU1BU0tbVEhdPVZBTCIsCisJIklNQVNLW1RIXT1WQUwiLAorCSBpZiAoKFRIKSA8ICh0aHJl YWQtPnByb2Nlc3Nvcl9wdHItPnJ1bm5hYmxlX3RocmVhZHNfbWF4KSkgeyB0aHJlYWQtPnByb2Nl c3Nvcl9wdHItPnRocmVhZFtUSF0tPlJlZ3NbUkVHX0lNQVNLXT0oVkFMICYgcmVnX211dGFiaWxp dHlbUkVHX0lNQVNLXSApOyB9LAorCShBX0lNUExJQ0lUX1dSSVRFU19JTUFTS19BTllUSFJFQUQp CispCisKKworREVGX01BQ1JPKFdSSVRFX1BSSU8sKFRILFZBTCksCisJIlRJRFtUSF0uUFJJTz1W QUwiLAorCSJUSURbVEhdLlBSSU89VkFMIiwKKwl7CisJCWlmICgoVEgpIDwgKHRocmVhZC0+cHJv Y2Vzc29yX3B0ci0+cnVubmFibGVfdGhyZWFkc19tYXgpKSB7CisJCQlzaXplNHVfdCB0aWRfcmVn ID0gdGhyZWFkLT5wcm9jZXNzb3JfcHRyLT50aHJlYWRbVEhdLT5SZWdzW1JFR19USURdOworCQkJ ZklOU0VSVF9CSVRTKHRpZF9yZWcsIHJlZ19maWVsZF9pbmZvW1NUSURfUFJJT10ud2lkdGgsIHJl Z19maWVsZF9pbmZvW1NUSURfUFJJT10ub2Zmc2V0LCBWQUwpOworCQkJTE9HX09USEVSX1RIUkVB RF9SRUdfV1JJVEUodGhyZWFkLFJFR19USUQsdGlkX3JlZyxUSCk7CisJCX0KKwl9LAorCShBX0lN UExJQ0lUX1dSSVRFU19TVElEX1BSSU9fQU5ZVEhSRUFEKQorKQorCisKK0RFRl9NQUNSTyhET19J QVNTSUdOVywoUkVHKSwKKwkiSUFTU0lHTlcoUkVHKSIsCisJIklBU1NJR05XKFJFRykiLAorCXsK KyAgICAgICAgaW50IGk7CisgICAgICAgIGludCBpbnRiaXRwb3MgPSAoKFJFRz4+MTYpJjB4Rik7 CisgICAgICAgIGZvciAoaT0wO2k8UlVOTkFCTEVfVEhSRUFEU19NQVg7aSsrKSB7CisJCQlpZigo ICh0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPmFyY2hfcHJvY19vcHRpb25zLT50aHJlYWRfZW5hYmxl X21hc2s+PmkpICYgMHgxKSkgeworCQkJCWZJTlNFUlRfQklUUyh0aHJlYWQtPnByb2Nlc3Nvcl9w dHItPnRocmVhZFtpXS0+UmVnc1tSRUdfSU1BU0tdLDEsIGludGJpdHBvcywgKFJFRz4+aSkgJiAx KTsKKyAgICAgICAgICAgfQorCQl9CisJfSwKKwkoQV9JTVBMSUNJVF9XUklURVNfSU1BU0tfQU5Z VEhSRUFEKQorKQorCisKKworCitERUZfTUFDUk8oZkRPX05NSSwoU1JFRyksCisJIlJhaXNlIE5N SSBvbiB0aHJlYWRzIiwKKwkiUmFpc2UgTk1JIG9uIHRocmVhZHMiLAorCXsKKwkJaW50IGk7CisJ CWZvciAoaT0wO2k8UlVOTkFCTEVfVEhSRUFEU19NQVg7aSsrKSB7CisJCQlpZiggKCAodGhyZWFk LT5wcm9jZXNzb3JfcHRyLT5hcmNoX3Byb2Nfb3B0aW9ucy0+dGhyZWFkX2VuYWJsZV9tYXNrPj5p KSAmIDB4MSkgKSB7CisJCQkJaWYgKFNSRUcgJiAoMTw8aSkpIHsKKwkJCQkJcmVnaXN0ZXJfbm1p X2ludGVycnVwdCh0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnRocmVhZFtpXSk7CisJCQkJfQorCQkJ fQorCQl9CisJfSwKKykKKworREVGX01BQ1JPKGZET19UUkFDRSwoU1JFRyksCisJIlNlbmQgdmFs dWUgdG8gRVRNIHRyYWNlIiwKKwkiU2VuZCB2YWx1ZSB0byBFVE0gdHJhY2UiLAorCXsKKwkJZkhJ REUoQ0FMTEJBQ0sodGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5vcHRpb25zLT50cmFjZV9jYWxsYmFj aywKKwkJCXRocmVhZC0+c3lzdGVtX3B0cix0aHJlYWQtPnByb2Nlc3Nvcl9wdHIsCisJCQl0aHJl YWQtPnRocmVhZElkLFNSRUcpOykKKyAgICAgICAgfSwKKykKKworREVGX01BQ1JPKERPX0lBU1NJ R05SLChTUkVHLERSRUcpLAorCSJEUkVHPUlBU1NJR05SKFNSRUcpIiwKKwkiRFJFRz1JQVNTSUdO UihTUkVHKSIsCisJeworCQlpbnQgaTsKKwkJaW50IHJlc3VsdD0wOworCQlpbnQgaW50Yml0cG9z ID0gKChTUkVHPj4xNikmMHhGKTsKKwkJZm9yIChpPTA7aTxSVU5OQUJMRV9USFJFQURTX01BWDtp KyspIHsKKwkJCWlmKCggKHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9jX29wdGlvbnMt PnRocmVhZF9lbmFibGVfbWFzaz4+aSkgJiAweDEpKSB7CisJCQkJcmVzdWx0IHw9ICgoKHRocmVh ZC0+cHJvY2Vzc29yX3B0ci0+dGhyZWFkW2ldLT5SZWdzW1JFR19JTUFTS10+PmludGJpdHBvcykm MSk8PGkpOworCQkJfQorCQl9CisJCURSRUc9cmVzdWx0OworCX0sCisJKEFfSU1QTElDSVRfUkVB RFNfSU1BU0tfQU5ZVEhSRUFEKQorKQorCisjaWZkZWYgTkVXX0lOVEVSUlVQVFMKKworREVGX01B Q1JPKERPX1NXSSwoUkVHKSwKKwkiSVBFTkQgfD0gUkVHIiwKKwkiSVBFTkQgfD0gUkVHIiwKKyAg ICAgICAge2ZISURFKENBTExCQUNLKHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+b3B0aW9ucy0+c3dp X2NhbGxiYWNrLAorICAgICAgICAgdGhyZWFkLT5zeXN0ZW1fcHRyLHRocmVhZC0+cHJvY2Vzc29y X3B0ciwKKyAgICAgICAgIHRocmVhZC0+dGhyZWFkSWQsUkVHKSk7CisJIGZMT0dfR0xPQkFMX1JF R19GSUVMRChJUEVOREFELElQRU5EQURfSVBFTkQsZlJFQURfR0xPQkFMX1JFR19GSUVMRChJUEVO REFELElQRU5EQURfSVBFTkQpfChSRUcpKTsKKyAgICAgICAgfSwKKwkoQV9FWENFUFRJT05fU1dJ LEFfSU1QTElDSVRfUkVBRFNfSVBFTkRBRF9JUEVORCxBX0lNUExJQ0lUX1dSSVRFU19JUEVOREFE X0lQRU5EKQorKQorCitERUZfTUFDUk8oRE9fQ1NXSSwoUkVHKSwKKwkiSVBFTkQgJj0gflJFRyIs CisJIklQRU5EICY9IH5SRUciLAorCWZMT0dfR0xPQkFMX1JFR19GSUVMRChJUEVOREFELElQRU5E QURfSVBFTkQsZlJFQURfR0xPQkFMX1JFR19GSUVMRChJUEVOREFELElQRU5EQURfSVBFTkQpICYg fihSRUcpKTssCisJKEFfSU1QTElDSVRfUkVBRFNfSVBFTkRBRF9JUEVORCxBX0lNUExJQ0lUX1dS SVRFU19JUEVOREFEX0lQRU5EKQorKQorCitERUZfTUFDUk8oRE9fQ0lBRCwoVkFMKSwKKwkiSUFE ICY9IH5WQUwiLAorCSJJQUQgJj0gflZBTCIsCisJc3lzX2NpYWQodGhyZWFkLFZBTCk7CisJZkxP R19HTE9CQUxfUkVHX0ZJRUxEKElQRU5EQUQsSVBFTkRBRF9JQUQsZlJFQURfR0xPQkFMX1JFR19G SUVMRChJUEVOREFELElQRU5EQURfSUFEKSAmIH4oVkFMKSk7LAorCShBX0VYQ0VQVElPTl9TV0ks QV9JTVBMSUNJVF9SRUFEU19JUEVOREFEX0lBRCxBX0lNUExJQ0lUX1dSSVRFU19JUEVOREFEX0lB RCkKKykKKworREVGX01BQ1JPKERPX1NJQUQsKFZBTCksCisJIklBRCB8PSBWQUwiLAorCSJJQUQg fD0gVkFMIiwKKwlzeXNfc2lhZCh0aHJlYWQsVkFMKTsKKwlmTE9HX0dMT0JBTF9SRUdfRklFTEQo SVBFTkRBRCxJUEVOREFEX0lBRCxmUkVBRF9HTE9CQUxfUkVHX0ZJRUxEKElQRU5EQUQsSVBFTkRB RF9JQUQpIHwgKFZBTCkpOywKKwkoQV9FWENFUFRJT05fU1dJLEFfSU1QTElDSVRfUkVBRFNfSVBF TkRBRF9JQUQsQV9JTVBMSUNJVF9XUklURVNfSVBFTkRBRF9JQUQpCispCisKKyNlbHNlCisKK0RF Rl9NQUNSTyhET19TV0ksKFJFRyksCisgICAgICAgICJJUEVORCB8PSBSRUciLAorICAgICAgICAi SVBFTkQgfD0gUkVHIiwKKyAgICAgICAge2ZISURFKENBTExCQUNLKHRocmVhZC0+cHJvY2Vzc29y X3B0ci0+b3B0aW9ucy0+c3dpX2NhbGxiYWNrLAorICAgICAgICAgdGhyZWFkLT5zeXN0ZW1fcHRy LHRocmVhZC0+cHJvY2Vzc29yX3B0ciwKKyAgICAgICAgIHRocmVhZC0+dGhyZWFkSWQsUkVHKSk7 CisgICAgICAgICBMT0dfR0xPQkFMX1JFR19XUklURShSRUdfSVBFTkQsKEdMT0JBTF9SRUdfUkVB RChSRUdfSVBFTkQpIHwgKFJFRyAmIEdMT0JBTF9SRUdfUkVBRChSRUdfSUVMKSkpKTsKKyAgICAg ICAgfSwKKyAgICAgICAgKEFfRVhDRVBUSU9OX1NXSSkKKykKKworREVGX01BQ1JPKERPX0NTV0ks KFJFRyksCisgICAgICAgICJJUEVORCAmPSB+UkVHIiwKKyAgICAgICAgIklQRU5EICY9IH5SRUci LAorICAgICAgICBMT0dfR0xPQkFMX1JFR19XUklURShSRUdfSVBFTkQsR0xPQkFMX1JFR19SRUFE KFJFR19JUEVORCkgJiB+KChSRUcpICYgR0xPQkFMX1JFR19SRUFEKFJFR19JRUwpKSk7LAorICAg ICAgICAoKQorKQorCitERUZfTUFDUk8oRE9fQ0lBRCwoVkFMKSwKKyAgICAgICAgIklBRCAmPSB+ VkFMIiwKKyAgICAgICAgIklBRCAmPSB+VkFMIiwKKyAgICAgICAgc3lzX2NpYWQodGhyZWFkLFZB TCk7IExPR19HTE9CQUxfUkVHX1dSSVRFKFJFR19JQUQsR0xPQkFMX1JFR19SRUFEKFJFR19JQUQp ICYgfihWQUwpKTssCisgICAgICAgIChBX0VYQ0VQVElPTl9TV0kpCispCisKK0RFRl9NQUNSTyhE T19TSUFELChWQUwpLAorICAgICAgICAiSUFEIHw9IFZBTCIsCisgICAgICAgICJJQUQgfD0gVkFM IiwKKyAgICAgICAgc3lzX3NpYWQodGhyZWFkLFZBTCk7IExPR19HTE9CQUxfUkVHX1dSSVRFKFJF R19JQUQsR0xPQkFMX1JFR19SRUFEKFJFR19JQUQpIHwgKFZBTCkpOywKKyAgICAgICAgKEFfRVhD RVBUSU9OX1NXSSkKKykKKworCisjZW5kaWYKKworREVGX01BQ1JPKGZCUkVBSywoKSwKKwkiRW50 ZXIgRGVidWcgbW9kZSIsCisJIkVudGVyIERlYnVnIG1vZGUiLAorICAgICAgICB7aXNkYl9icmtw dF9pbnNuKHRocmVhZC0+cHJvY2Vzc29yX3B0cix0aHJlYWQtPnRocmVhZElkKTt9LAorCSgpCisp CisKK0RFRl9NQUNSTyhmR1BfRE9DSEtQQUdFQ1JPU1MsKEJBU0UsU1VNKSwKKwkiIiwKKwkiIiwK KwlpZiAoIShpbnNuLT5leHRlbnNpb25fdmFsaWQpKSB7CisgICAgICAgIGZET0NIS1BBR0VDUk9T UyhCQVNFLFNVTSk7CisgICAgfSwKKwkoQV9FQV9QQUdFQ1JPU1MpCispCisKK0RFRl9NQUNSTyhm RE9DSEtQQUdFQ1JPU1MsKEJBU0UsU1VNKSwKKwkiIiwKKwkiIiwKKwlpZiAodGhyZWFkLT5icV9v bikgeworCQl0aHJlYWQtPm1lbV9hY2Nlc3NbaW5zbi0+c2xvdF0uY2hlY2tfcGFnZV9jcm9zc2Vz ID0gMTsKKwkJdGhyZWFkLT5tZW1fYWNjZXNzW2luc24tPnNsb3RdLnBhZ2VfY3Jvc3NfYmFzZSA9 IEJBU0U7CisJCXRocmVhZC0+bWVtX2FjY2Vzc1tpbnNuLT5zbG90XS5wYWdlX2Nyb3NzX3N1bSA9 IFNVTTsKKwl9LAorCShBX0VBX1BBR0VDUk9TUykKKykKKworREVGX01BQ1JPKGZUSU1JTkdfQUlB LChPTERWQSxORVdWQSksCisJIiIsCisJIiIsCisgIGlmKHRocmVhZC0+YnFfb24peworCXRocmVh ZC0+bWVtX2FjY2Vzc1tpbnNuLT5zbG90XS5wb3N0X3VwZGF0ZWQgPSAxOworCXRocmVhZC0+bWVt X2FjY2Vzc1tpbnNuLT5zbG90XS5wb3N0X3VwZGF0ZWRfdmEgPSBORVdWQTsKKwlpbnNuLT5pc19h aWEgPSAxOworCX0sCisJKEFfUE1fQU5ZKQorKQorCisKK0RFRl9NQUNSTyhmUEFVU0UsKElNTSks CisJIlBhdXNlIGZvciBJTU0gY3ljbGVzIiwKKwkiUGF1c2UgZm9yIElNTSBjeWNsZXMiLAorICAg ICAgICB7c3lzX3BhdXNlKHRocmVhZCwgaW5zbi0+c2xvdCwgSU1NKTt9LAorCSgpCispCisKKwor I2lmIDEKKy8qIFRoZSB3YXkgaXQgc2hvdWxkIGJlICovCitERUZfTUFDUk8oZlRSQVAsKFRSQVBU WVBFLElNTSksCisJIlNTUi5DQVVTRSA9IElNTTsgVFJBUCAjIFRSQVBUWVBFIiwKKwkiU1NSLkNB VVNFID0gSU1NOyBUUkFQICMgVFJBUFRZUEUiLAorICAgIHdhcm4oIlRyYXAgTlBDPSV4ICIsZlJF QURfTlBDKCkpOworCXdhcm4oIlRyYXAgZXhjZXB0aW9uLCBQQ1lDTEU9JWxsZCBUWVBFPSVkIE5Q Qz0leCBJTU09MHgleCIsdGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5wc3RhdHNbcGN5Y2xlc10sVFJB UFRZUEUsZlJFQURfTlBDKCksSU1NKTsKKwlyZWdpc3Rlcl90cmFwX2V4Y2VwdGlvbih0aHJlYWQs ZlJFQURfTlBDKCksVFJBUFRZUEUsSU1NKTssCisJKEFfRVhDRVBUSU9OX1NXSSkKKykKKyNlbHNl CitERUZfTUFDUk8oZlRSQVAsKFRSQVBUWVBFLElNTSksCisgICAgICAgICJTU1IuQ0FVU0UgPSBJ TU07IFRSQVAgIyBUUkFQVFlQRSIsCisgICAgICAgICJTU1IuQ0FVU0UgPSBJTU07IFRSQVAgIyBU UkFQVFlQRSIsCisgICAgICAgIGlmICgoVFJBUFRZUEUgPT0gMCkgJiYgKElNTSA9PSAwKSAmJgor ICAgICAgICAgICAgICAoIXRocmVhZC0+c2FuZGJveF9leGVjdXRpb24pICYmCisgICAgICAgICAg ICAgICghdGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5vcHRpb25zLT5kaXNhYmxlX2FuZ2Vsc3dpKSkg eworICAgICAgICAgICAgICAgIHNpbV9oYW5kbGVfdHJhcCh0aHJlYWQtPnN5c3RlbV9wdHIsdGhy ZWFkLT5wcm9jZXNzb3JfcHRyLHRocmVhZC0+dGhyZWFkSWQsMCk7CisgICAgICAgICAgICAgICAg Lyp0aHJlYWQtPnN0YXR1cyB8PSBFWEVDX1NUQVRVU19TV0k7Ki8KKyAgICAgICAgfSBlbHNlIGlm ICgoVFJBUFRZUEUgPT0gMCkgJiYgKElNTSA9PSAweGRiKSAmJgorICAgICAgICAgICAgICAgKCF0 aHJlYWQtPnNhbmRib3hfZXhlY3V0aW9uKSAmJgorICAgICAgICAgICAgICAgKCF0aHJlYWQtPnBy b2Nlc3Nvcl9wdHItPm9wdGlvbnMtPmRpc2FibGVfYW5nZWxzd2kpKSB7CisgICAgICAgICAgICAg ICAgc2ltX2hhbmRsZV9kZWJ1Zyh0aHJlYWQtPnN5c3RlbV9wdHIsdGhyZWFkLT5wcm9jZXNzb3Jf cHRyLHRocmVhZC0+dGhyZWFkSWQsMHhkYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg d2FybigiVHJhcCBleGNlcHRpb24sIFRZUEU9JWQgTlBDPSV4IElNTT0weCV4IixUUkFQVFlQRSxm UkVBRF9OUEMoKSxJTU0pOworICAgICAgICAgIHJlZ2lzdGVyX3RyYXBfZXhjZXB0aW9uKHRocmVh ZCxmUkVBRF9OUEMoKSxUUkFQVFlQRSxJTU0pOworICAgICAgICB9LAorICAgICAgICAoQV9FWENF UFRJT05fU1dJKQorKQorI2VuZGlmCisKK0RFRl9NQUNSTyhmSU5URVJOQUxfQ0xFQVJfU0FNRVBB R0UsCisJKCksCisJIiIsCisJIiIsCisJLyogZm9yY2UgcmUteGxhdGUgYXQgbmV4dCBmZXRjaCwg cmVmcmVzaCBvZiBpbl91c2VyX21vZGUsIGV0YyAqLworCS8qIFBlcm1pc3Npb25zIGNoYW5nZSB0 b28uLi4gKi8KKwlzeXNfdXRsYl9pbnZhbGlkYXRlKHRocmVhZC0+cHJvY2Vzc29yX3B0cix0aHJl YWQpLAorCS8qIE5PVEhJTkcgKi8KKykKKworREVGX01BQ1JPKGZDTEVBUl9SVEVfRVgsKCksCisg ICAgICAiU1NSLlNTUl9FWCA9IDAiLAorICAgICAgIlNTUi5TU1JfRVggPSAwIiwKKyAgICAgIHsK KyAgICAgICAgZkxPR19SRUdfRklFTEQoU1NSLFNTUl9FWCwwKTsKKyAgCSAgICBmSU5URVJOQUxf Q0xFQVJfU0FNRVBBR0UoKTsKKyAgICAgIH0sCisgICAgICAoKQorKQorCitERUZfTUFDUk8oZlRM Ql9MT0NLX0FWQUlMQUJMRSwoKSwKKwkiU1lTQ0ZHLlRMQkxPQ0sgPT0gMCIsCisJIlNZU0NGRy5U TEJMT0NLID09IDAiLAorCShmUkVBRF9HTE9CQUxfUkVHX0ZJRUxEKFNZU0NPTkYsU1lTQ0ZHX1RM QkxPQ0spID09IDApLAorCSgpCispCisKK0RFRl9NQUNSTyhmSzBfTE9DS19BVkFJTEFCTEUsKCks CisJIlNZU0NGRy5LMExPQ0sgPT0gMCIsCisJIlNZU0NGRy5LMExPQ0sgPT0gMCIsCisJKGZSRUFE X0dMT0JBTF9SRUdfRklFTEQoU1lTQ09ORixTWVNDRkdfSzBMT0NLKSA9PSAwKSwKKwkoKQorKQor CitERUZfTUFDUk8oZlNFVF9UTEJfTE9DSywoKSwKKyAgICAgICJpZiAoY2FuX2FxdWlyZV90bGJf bG9jaykge1NZU0NGRy5UTEJMT0NLID0gMTt9IGVsc2Uge3NsZWVwX3VudGlsX2F2YWlsYWJsZTt9 IiwKKyAgICAgICJpZiAoY2FuX2FxdWlyZV90bGJfbG9jaykge1NZU0NGRy5UTEJMT0NLID0gMTt9 IGVsc2Uge3NsZWVwX3VudGlsX2F2YWlsYWJsZTt9IiwKKyAgICAgIHsKKyAgICAgIGlmIChmVExC X0xPQ0tfQVZBSUxBQkxFKCkpIHsKKyAgICAgICAgZkxPR19HTE9CQUxfUkVHX0ZJRUxEKFNZU0NP TkYsU1lTQ0ZHX1RMQkxPQ0ssMSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzeXNfd2FpdGlu Z19mb3JfdGxiX2xvY2sodGhyZWFkKTsKKyAgICAgIH0KKyAgICAgIH0sCisgICAgICAoQV9JTVBM SUNJVF9SRUFEU19TWVNDRkdfVExCTE9DSyxBX0lNUExJQ0lUX1dSSVRFU19TWVNDRkdfVExCTE9D SykKKykKKworREVGX01BQ1JPKGZTRVRfSzBfTE9DSywoKSwKKyAgICAgICJpZiAoY2FuX2FxdWly ZV9rMF9sb2NrKSB7U1lTQ0ZHLkswTE9DSyA9IDE7fSBlbHNlIHtzbGVlcF91bnRpbF9hdmFpbGFi bGU7fSIsCisgICAgICAiaWYgKGNhbl9hcXVpcmVfazBfbG9jaykge1NZU0NGRy5LMExPQ0sgPSAx O30gZWxzZSB7c2xlZXBfdW50aWxfYXZhaWxhYmxlO30iLAorICAgICAgeworICAgICAgaWYgKGZL MF9MT0NLX0FWQUlMQUJMRSgpICYmIHN5c19rMGxvY2tfcXVldWVfcmVhZHkodGhyZWFkKSkgewor CXdhcm4oImswbG9jazogVCVkOiBQQz0weCV4OiBQQ3ljbGU9JWxsZCIsdGhyZWFkLT50aHJlYWRJ ZCx0aHJlYWQtPlJlZ3NbUkVHX1BDXSx0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnBzdGF0c1twY3lj bGVzXSk7CisgICAgICAgIGZMT0dfR0xPQkFMX1JFR19GSUVMRChTWVNDT05GLFNZU0NGR19LMExP Q0ssMSk7CisgICAgICB9IGVsc2UgeworICAgICAgd2FybigiazBsb2NrX3dhaXRpbmc6IFQlZDog UEM9MHgleDogUEN5Y2xlPSVsbGQiLHRocmVhZC0+dGhyZWFkSWQsdGhyZWFkLT5SZWdzW1JFR19Q Q10sdGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5wc3RhdHNbcGN5Y2xlc10pOworICAgICAgICBzeXNf d2FpdGluZ19mb3JfazBfbG9jayh0aHJlYWQpOworICAgICAgfQorICAgICAgfSwKKyAgICAgIChB X0lNUExJQ0lUX1JFQURTX1NZU0NGR19LMExPQ0ssQV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX0sw TE9DSykKKykKKworREVGX01BQ1JPKGZDTEVBUl9UTEJfTE9DSywoKSwKKyAgICAgICJTWVNDRkcu VExCTE9DSyA9IDAiLAorICAgICAgIlNZU0NGRy5UTEJMT0NLID0gMCIsCisgICAgICB7CisJCWlu dCBpOworCQlmTE9HX0dMT0JBTF9SRUdfRklFTEQoU1lTQ09ORixTWVNDRkdfVExCTE9DSywwKTsK KwkJZm9yIChpID0gMDsgaSA8IFJVTk5BQkxFX1RIUkVBRFNfTUFYOyBpKyspIHsKKwkJCWlmKCgg KHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9jX29wdGlvbnMtPnRocmVhZF9lbmFibGVf bWFzaz4+aSkgJiAweDEpKSB7CisJCQkJdGhyZWFkLT5wcm9jZXNzb3JfcHRyLT50aHJlYWRbaV0t PmN1X3RsYl9sb2NrX3dhaXRpbmcgPSAwOworCQkJfQorCQl9CisgICAgICB9LAorICAgICAgKEFf SU1QTElDSVRfUkVBRFNfU1lTQ0ZHX1RMQkxPQ0ssQV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX1RM QkxPQ0spCispCisKK0RFRl9NQUNSTyhmQ0xFQVJfSzBfTE9DSywoKSwKKyAgICAgICJTWVNDRkcu SzBMT0NLID0gMCIsCisgICAgICAiU1lTQ0ZHLkswTE9DSyA9IDAiLAorICAgICAgZG8geworICAg ICAgd2FybigiazB1bmxvY2s6IFQlZDogUEM9MHgleDogUGN5Y2xlPSVsbGQiLHRocmVhZC0+dGhy ZWFkSWQsdGhyZWFkLT5SZWdzW1JFR19QQ10sIHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+cHN0YXRz W3BjeWNsZXNdKTsKKyAgICAgIHN5c19pbml0aWF0ZV9jbGVhcl9rMF9sb2NrKHRocmVhZCk7Cisg ICAgICB9IHdoaWxlICgwKSwKKyAgICAgIChBX0lNUExJQ0lUX1JFQURTX1NZU0NGR19LMExPQ0ss QV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX0swTE9DSykKKykKKworREVGX01BQ1JPKGZXUklURV9S RUdfRklFTEQsKFJFRyxGSUVMRCxWQUwpLAorCSJSRUcuRklFTEQgPSBWQUwiLAorCSJSRUcuRklF TEQgPSBWQUwiLAorCWZJTlNFUlRfQklUUyh0aHJlYWQtPlJlZ3NbUkVHXyMjUkVHXSwKKyAgICAg ICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS53aWR0aCwKKyAgICAgICAgICAgIHJlZ19maWVs ZF9pbmZvW0ZJRUxEXS5vZmZzZXQsVkFMKSwKKykKKworREVGX01BQ1JPKGZBTElHTl9SRUdfRklF TERfVkFMVUUsKEZJRUxELFZBTCksCisJIlZBTCA8PCBGSUVMRC5PRkZTRVQiLAorCSJWQUwgPDwg RklFTEQuT0ZGU0VUIiwKKwkoKFZBTCk8PHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQpLAor CS8qICovCispCisKK0RFRl9NQUNSTyhmR0VUX1JFR19GSUVMRF9NQVNLLChGSUVMRCksCisJIlZB TCA8PCBGSUVMRC5PRkZTRVQiLAorCSJWQUwgPDwgRklFTEQuT0ZGU0VUIiwKKwkoKCgxPDxyZWdf ZmllbGRfaW5mb1tGSUVMRF0ud2lkdGgpLTEpPDxyZWdfZmllbGRfaW5mb1tGSUVMRF0ub2Zmc2V0 KSwKKwkvKiAqLworKQorCitERUZfTUFDUk8oZkxPR19SRUdfRklFTEQsKFJFRyxGSUVMRCxWQUwp LAorCSJSRUcuRklFTEQgPSBWQUwiLAorCSJSRUcuRklFTEQgPSBWQUwiLAorCUxPR19NQVNLRURf UkVHX1dSSVRFKHRocmVhZCxSRUdfIyNSRUcsCisJCWZBTElHTl9SRUdfRklFTERfVkFMVUUoRklF TEQsVkFMKSwKKwkJZkdFVF9SRUdfRklFTERfTUFTSyhGSUVMRCkpLAorCSgpCispCisKK0RFRl9N QUNSTyhmV1JJVEVfR0xPQkFMX1JFR19GSUVMRCwoUkVHLEZJRUxELFZBTCksCisJIlJFRy5GSUVM RCA9IFZBTCIsCisJIlJFRy5GSUVMRCA9IFZBTCIsCisJZklOU0VSVF9CSVRTKHRocmVhZC0+cHJv Y2Vzc29yX3B0ci0+Z2xvYmFsX3JlZ3NbUkVHXyMjUkVHXSwKKyAgICAgICAgICAgIHJlZ19maWVs ZF9pbmZvW0ZJRUxEXS53aWR0aCwKKyAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS5v ZmZzZXQsVkFMKSwKKykKKworREVGX01BQ1JPKGZMT0dfR0xPQkFMX1JFR19GSUVMRCwoUkVHLEZJ RUxELFZBTCksCisJIlJFRy5GSUVMRCA9IFZBTCIsCisJIlJFRy5GSUVMRCA9IFZBTCIsCisJTE9H X01BU0tFRF9HTE9CQUxfUkVHX1dSSVRFKFJFR18jI1JFRywKKwkJZkFMSUdOX1JFR19GSUVMRF9W QUxVRShGSUVMRCxWQUwpLAorCQlmR0VUX1JFR19GSUVMRF9NQVNLKEZJRUxEKSksCisJKCkKKykK KworREVGX01BQ1JPKGZSRUFEX1JFR19GSUVMRCwoUkVHLEZJRUxEKSwKKwkiUkVHLkZJRUxEIiwK KwkiUkVHLkZJRUxEIiwKKwlmRVhUUkFDVFVfQklUUyh0aHJlYWQtPlJlZ3NbUkVHXyMjUkVHXSwK KyAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW0ZJRUxEXS53aWR0aCwKKyAgICAgICAgICAgIHJl Z19maWVsZF9pbmZvW0ZJRUxEXS5vZmZzZXQpLAorCS8qIEFUVFJJQlMgKi8KKykKKworREVGX01B Q1JPKGZSRUFEX0dMT0JBTF9SRUdfRklFTEQsKFJFRyxGSUVMRCksCisJIlJFRy5GSUVMRCIsCisJ IlJFRy5GSUVMRCIsCisJZkVYVFJBQ1RVX0JJVFModGhyZWFkLT5wcm9jZXNzb3JfcHRyLT5nbG9i YWxfcmVnc1tSRUdfIyNSRUddLAorICAgICAgICAgICAgcmVnX2ZpZWxkX2luZm9bRklFTERdLndp ZHRoLAorICAgICAgICAgICAgcmVnX2ZpZWxkX2luZm9bRklFTERdLm9mZnNldCksCisJLyogQVRU UklCUyAqLworKQorCitERUZfTUFDUk8oZkdFVF9GSUVMRCwoVkFMLEZJRUxEKSwKKwkiVkFMLkZJ RUxEIiwKKwkiVkFMLkZJRUxEIiwKKwlmRVhUUkFDVFVfQklUUyhWQUwsCisJCXJlZ19maWVsZF9p bmZvW0ZJRUxEXS53aWR0aCwKKwkJcmVnX2ZpZWxkX2luZm9bRklFTERdLm9mZnNldCksCisJLyog QVRUUklCUyAqLworKQorCitERUZfTUFDUk8oZlNFVF9GSUVMRCwoVkFMLEZJRUxELE5FV1ZBTCks CisJIlZBTC5GSUVMRCIsCisJIlZBTC5GSUVMRCIsCisJZklOU0VSVF9CSVRTKFZBTCwKKwkJcmVn X2ZpZWxkX2luZm9bRklFTERdLndpZHRoLAorCQlyZWdfZmllbGRfaW5mb1tGSUVMRF0ub2Zmc2V0 LAorCQkoTkVXVkFMKSksCisJLyogQVRUUklCUyAqLworKQorCitERUZfTUFDUk8oZlNFVF9SVU5f TU9ERV9OT1csKFROVU0pLAorCSJtb2RlY3RsW1ROVU1dID0gMSIsCisJIm1vZGVjdGxbVE5VTV0g PSAxIiwKKyAgICAgICAge3RocmVhZC0+cHJvY2Vzc29yX3B0ci0+Z2xvYmFsX3JlZ3NbUkVHX01P REVDVExdIHw9ICgxPDxUTlVNKTsKKyAgICAgICAgIHRocmVhZC0+bGFzdF9jb21taXRfY3ljbGUg PSB0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnBjeWNsZV9jb3VudGVyOworICAgICAgICAgc3lzX3Jl Y2FsY19udW1fcnVubmluZ190aHJlYWRzKHRocmVhZC0+cHJvY2Vzc29yX3B0cik7fSwKKykKKwor REVGX01BQ1JPKGZJTl9ERUJVR19NT0RFLChUTlVNKSwKKwkiaW5fZGVidWdfbW9kZSIsCisJImlu X2RlYnVnX21vZGUiLAorCSh0aHJlYWQtPmRlYnVnX21vZGUgfHwgKGZSRUFEX0dMT0JBTF9SRUdf RklFTEQoSVNEQlNULElTREJTVF9ERUJVR01PREUpICYgMTw8VE5VTSkpLAorCSgpCispCitERUZf TUFDUk8oZklOX0RFQlVHX01PREVfTk9fSVNEQiwoVE5VTSksCisJImluX2RlYnVnX21vZGUiLAor CSJpbl9kZWJ1Z19tb2RlIiwKKwkodGhyZWFkLT5kZWJ1Z19tb2RlKSwKKwkoKQorKQorCisKK0RF Rl9NQUNSTyhmSU5fREVCVUdfTU9ERV9XQVJOLChUTlVNKSwKKwkiIiwKKwkiIiwKKwl7CisJCWlm IChmUkVBRF9HTE9CQUxfUkVHX0ZJRUxEKElTREJTVCxJU0RCU1RfREVCVUdNT0RFKSAmIDE8PFRO VU0pCisJCQl3YXJuKCJJbiBJU0RCIGRlYnVnIG1vZGUsIGJ1dCBUQiB0b2xkIG1lIHRvIHN0ZXAg bm9ybWFsbHkiKTsKKwl9LAorCSgpCispCisKK0RFRl9NQUNSTyhmQ0xFQVJfUlVOX01PREUsKFRO VU0pLAorCSJtb2RlY3RsW1ROVU1dID0gMCIsCisJIm1vZGVjdGxbVE5VTV0gPSAwIiwKKwl7ZkxP R19HTE9CQUxfUkVHX0ZJRUxEKE1PREVDVEwsTU9ERUNUTF9FLAorICAgIGZSRUFEX0dMT0JBTF9S RUdfRklFTEQoTU9ERUNUTCxNT0RFQ1RMX0UpICYgfigxPDwoVE5VTSkpKX0sCisJLyogTk9USElO RyAqLworKQorCitERUZfTUFDUk8oZkNMRUFSX1JVTl9NT0RFX05PVywoVE5VTSksCisJIm1vZGVj dGxbVE5VTV0gPSAwIiwKKwkibW9kZWN0bFtUTlVNXSA9IDAiLAorCWRvIHsKKwkJZldSSVRFX0dM T0JBTF9SRUdfRklFTEQoTU9ERUNUTCxNT0RFQ1RMX0UsCisJCQlmUkVBRF9HTE9CQUxfUkVHX0ZJ RUxEKE1PREVDVEwsTU9ERUNUTF9FKSAmIH4oMTw8KFROVU0pKSk7CisJCXN5c19yZWNhbGNfbnVt X3J1bm5pbmdfdGhyZWFkcyh0aHJlYWQtPnByb2Nlc3Nvcl9wdHIpOworCX0gd2hpbGUgKDApLAor CS8qIE5PVEhJTkcgKi8KKykKKworREVGX01BQ1JPKGZHRVRfUlVOX01PREUsKFROVU0pLAorCSJt b2RlY3RsW1ROVU1dIiwKKwkibW9kZWN0bFtUTlVNXSIsCisgICAgICAgICgodGhyZWFkLT5wcm9j ZXNzb3JfcHRyLT5nbG9iYWxfcmVnc1tSRUdfTU9ERUNUTF0+PlROVU0pJjB4MSksCispCisKK0RF Rl9NQUNSTyhmU0VUX1dBSVRfTU9ERSwoVE5VTSksCisJIm1vZGVjdGxbKFROVU0rMTYpXSA9IDEi LAorCSJtb2RlY3RsWyhUTlVNKzE2KV0gPSAxIiwKKwl7ZkxPR19HTE9CQUxfUkVHX0ZJRUxEKE1P REVDVEwsTU9ERUNUTF9XLAorICAgIGZSRUFEX0dMT0JBTF9SRUdfRklFTEQoTU9ERUNUTCxNT0RF Q1RMX1cpIHwgMTw8KFROVU0pKX0sCisJLyogTk9USElORyAqLworKQorCitERUZfTUFDUk8oZkNM RUFSX1dBSVRfTU9ERSwoVE5VTSksCisJIm1vZGVjdGxbKFROVU0rMTYpXSA9IDAiLAorCSJtb2Rl Y3RsWyhUTlVNKzE2KV0gPSAwIiwKKyAgICAgICAge3RocmVhZC0+cHJvY2Vzc29yX3B0ci0+Z2xv YmFsX3JlZ3NbUkVHX01PREVDVExdICY9IH4oMTw8KFROVU0rMTYpKTsKKyAgICAgICAgIHRocmVh ZC0+bGFzdF9jb21taXRfY3ljbGUgPSB0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnBjeWNsZV9jb3Vu dGVyOworICAgICAgICAgc3lzX3JlY2FsY19udW1fcnVubmluZ190aHJlYWRzKHRocmVhZC0+cHJv Y2Vzc29yX3B0cik7fSwKKykKKworREVGX01BQ1JPKGZHRVRfV0FJVF9NT0RFLChUTlVNKSwKKwki bW9kZWN0bFsoVE5VTSsxNildIiwKKwkibW9kZWN0bFsoVE5VTSsxNildIiwKKyAgICAgICAgKCh0 aHJlYWQtPnByb2Nlc3Nvcl9wdHItPmdsb2JhbF9yZWdzW1JFR19NT0RFQ1RMXT4+KFROVU0rMTYp KSYweDEpLAorKQorCisKK0RFRl9NQUNSTyhmUkVTRVRfVEhSRUFELChULE5VTSksCisJInJlc2V0 X3RocmVhZChOVU0pIiwKKwkicmVzZXRfdGhyZWFkKE5VTSkiLAorICAgICAgICByZWdpc3Rlcl9y ZXNldF9pbnRlcnJ1cHQoVCxOVU0pLAorKQorCitERUZfTUFDUk8oZlJFQURfQ1VSUkVOVF9FVkIs KCksCisJIkVWQiIsCisJIkVWQiIsCisJKEdMT0JBTF9SRUdfUkVBRChSRUdfRVZCKSksCisJLyog bm90aGluZyAqLworKQorCitERUZfTUFDUk8oZlJFQURfRUxSLCgpLAorCSJFTFIiLAorCSJFTFIi LAorCVJFQURfUlJFRyhSRUdfRUxSKSwKKwkoQV9JTVBMSUNJVF9SRUFEU19FTFIpCispCisKK0RF Rl9NQUNSTyhmUE9XMl9IRUxQX1JPVU5EVVAsKFZBTCksCisJImhlbHBlciBmb3IgcG93Ml9yb3Vu ZHVwIiwKKwkiaGVscGVyIGZvciBwb3cyX3JvdW5kdXAiLAorCSgoVkFMKSB8ICgoVkFMKSA+PiAx KSB8ICgoVkFMKSA+PiAyKSB8ICgoVkFMKSA+PiA0KSB8ICgoVkFMKSA+PiA4KSB8ICgoVkFMKSA+ PiAxNikpLAorCSgpCispCisKK0RFRl9NQUNSTyhmUE9XMl9ST1VORFVQLChWQUwpLAorCSJwb3cy X3JvdW5kdXAoVkFMKSIsCisJInBvdzJfcm91bmR1cChWQUwpIiwKKwlmUE9XMl9IRUxQX1JPVU5E VVAoKFZBTCktMSkrMSwKKwkoKQorKQorCitERUZfTUFDUk8oZlRMQl9JRFhNQVNLLChJTkRFWCks CisJIklOREVYICUgVExCU0laRSIsCisJIklOREVYICUgVExCU0laRSIsCisJKChJTkRFWCkgJiAo ZlBPVzJfUk9VTkRVUChmQ0FTVDR1KHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9jX29w dGlvbnMtPmp0bGJfc2l6ZSkpIC0gMSkpLAorCSgpCispCisKK0RFRl9NQUNSTyhmVExCX05PTlBP VzJXUkFQLChJTkRFWCksCisJIklOREVYICUgVExCU0laRSIsCisJIklOREVYICUgVExCU0laRSIs CisJKCgoSU5ERVgpID49IHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9jX29wdGlvbnMt Pmp0bGJfc2l6ZSkgPyAoKElOREVYKSAtIHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+YXJjaF9wcm9j X29wdGlvbnMtPmp0bGJfc2l6ZSkgOiAoSU5ERVgpKSwKKwkvKiBBVFRSSUJTICovCispCisKK0RF Rl9NQUNSTyhmVExCVywoSU5ERVgsVkFMVUUpLAorCSJUTEJbSU5ERVhdID0gVkFMVUUiLAorCSJU TEJbSU5ERVhdID0gVkFMVUUiLAorCWRvIHtzaXplNHVfdCBfX215aWR4ID0gZlRMQl9OT05QT1cy V1JBUChmVExCX0lEWE1BU0soSU5ERVgpKTsKKyAgICAgICAgIFRMQl9SRUdfV1JJVEUoX19teWlk eCxWQUxVRSk7CisgICAgICAgICBmSElERShDQUxMQkFDSyh0aHJlYWQtPnByb2Nlc3Nvcl9wdHIt Pm9wdGlvbnMtPnRsYndfY2FsbGJhY2ssdGhyZWFkLT5zeXN0ZW1fcHRyLHRocmVhZC0+cHJvY2Vz c29yX3B0cix0aHJlYWQtPnRocmVhZElkLF9fbXlpZHgpOykKKyAgICAgICAgIGZISURFKHN5c190 bGJfd3JpdGUodGhyZWFkLF9fbXlpZHgsVkFMVUUpOyl9IHdoaWxlICgwKSwKKwkvKiBBVFRSSUJT ICovCispCisKK0RFRl9NQUNSTyhmVExCX0VOVFJZX09WRVJMQVAsKFZBTFVFKSwKKwkiQ0hFQ0tf VExCX09WRVJMQVAoVkFMVUUpIiwKKwkiQ0hFQ0tfVExCX09WRVJMQVAoVkFMVUUpIiwKKyAgICAg ZkhJREUoIChzeXNfY2hlY2tfb3ZlcmxhcCh0aHJlYWQsVkFMVUUpIT0tMikgKSwKKwkvKiBBVFRS SUJTICovCispCisKK0RFRl9NQUNSTyhmVExCX0VOVFJZX09WRVJMQVBfSURYLChWQUxVRSksCisJ IkdFVF9PVkVSTEFQUElOR19JRFgoVkFMVUUpIiwKKwkiR0VUX09WRVJMQVBQSU5HX0lEWChWQUxV RSkiLAorICAgICBmSElERShzeXNfY2hlY2tfb3ZlcmxhcCh0aHJlYWQsVkFMVUUpKSwKKwkvKiBB VFRSSUJTICovCispCisKKworREVGX01BQ1JPKGZUTEJSLChJTkRFWCksCisJIlRMQltJTkRFWF0i LAorCSJUTEJbSU5ERVhdIiwKKyAgICAgICAgVExCX1JFR19SRUFEKGZUTEJfTk9OUE9XMldSQVAo ZlRMQl9JRFhNQVNLKElOREVYKSkpLAorCS8qIEFUVFJJQlMgKi8KKykKKworREVGX01BQ1JPKGZU TEJQLChUTEJISSksCisJInNlYXJjaF9UTEIoVExCSEkpIiwKKwkic2VhcmNoX1RMQihUTEJISSki LAorICAgICAgICB0bGJfbG9va3VwKHRocmVhZCwoKFRMQkhJKT4+MTIpLCgoVExCSEkpPDwxMiks MSksCisJLyogYXR0cmlicyAqLworKQorCisKKworREVGX01BQ1JPKFJFQURfU0dQMCwoKSwKKwki U0dQMCIsCisJIlNHUDAiLAorCVJFQURfUlJFRyhSRUdfU0dQKSwKKwkoQV9JTVBMSUNJVF9SRUFE U19TR1AwKQorKQorCitERUZfTUFDUk8oUkVBRF9TR1AxLCgpLAorCSJTR1AxIiwKKwkiU0dQMSIs CisJUkVBRF9SUkVHKFJFR19TR1ArMSksCisJKEFfSU1QTElDSVRfUkVBRFNfU0dQMSkKKykKKwor REVGX01BQ1JPKFJFQURfU0dQMTAsKCksCisJIlNHUCIsCisJIlNHUCIsCisJUkVBRF9SUkVHX1BB SVIoUkVHX1NHUCksCisJKEFfSU1QTElDSVRfUkVBRFNfU0dQMCxBX0lNUExJQ0lUX1JFQURTX1NH UDEpCispCisKK0RFRl9NQUNSTyhSRUFEX1VHUCwoKSwKKwkiVUdQIiwKKwkiVUdQIiwKKwlSRUFE X1JSRUcoUkVHX1VHUCksCispCisKK0RFRl9NQUNSTyhXUklURV9TR1AwLChWQUwpLAorCSJTR1Aw ID0gVkFMIiwKKwkiU0dQMCA9IFZBTCIsCisgICAgICAgIFdSSVRFX1JSRUcoUkVHX1NHUCxWQUwp LAorCShBX0lNUExJQ0lUX1dSSVRFU19TR1AwKQorKQorCitERUZfTUFDUk8oV1JJVEVfU0dQMSwo VkFMKSwKKwkiU0dQMSA9IFZBTCIsCisJIlNHUDEgPSBWQUwiLAorICAgICAgICBXUklURV9SUkVH KFJFR19TR1ArMSxWQUwpLAorCShBX0lNUExJQ0lUX1dSSVRFU19TR1AxKQorKQorCitERUZfTUFD Uk8oV1JJVEVfU0dQMTAsKFZBTCksCisJIlNHUCA9IFZBTCIsCisJIlNHUCA9IFZBTCIsCisgICAg ICAgIFdSSVRFX1JSRUdfUEFJUihSRUdfU0dQLFZBTCksCisJKEFfSU1QTElDSVRfV1JJVEVTX1NH UDAsQV9JTVBMSUNJVF9XUklURVNfU0dQMSkKKykKKworREVGX01BQ1JPKFdSSVRFX1VHUCwoVkFM KSwKKwkiVUdQID0gVkFMIiwKKwkiVUdQID0gVkFMIiwKKyAgICAgICAgV1JJVEVfUlJFRyhSRUdf VUdQLFZBTCksCispCisKK0RFRl9NQUNSTyhmU1RBUlQsKFJFRyksCisJInN0YXJ0KFJFRykiLAor CSJzdGFydChSRUcpIiwKKwlmTE9HX0dMT0JBTF9SRUdfRklFTEQoTU9ERUNUTCxNT0RFQ1RMX0Us IGZSRUFEX0dMT0JBTF9SRUdfRklFTEQoTU9ERUNUTCxNT0RFQ1RMX0UpIHwgKCgoUkVHICYgKCgx PDxSVU5OQUJMRV9USFJFQURTX01BWCktMSkpKSAmIFRIUkVBRF9FTl9NQVNLKHRocmVhZC0+cHJv Y2Vzc29yX3B0cikpKSwKKwkoKQorKQorCitERUZfTUFDUk8oZlJFU1VNRSwoUkVHKSwKKwkicmVz dW1lKFJFRykiLAorCSJyZXN1bWUoUkVHKSIsCisJZkxPR19HTE9CQUxfUkVHX0ZJRUxEKE1PREVD VEwsTU9ERUNUTF9XLAorCQlmUkVBRF9HTE9CQUxfUkVHX0ZJRUxEKE1PREVDVEwsTU9ERUNUTF9X KSAmICh+KFJFRykpKSwKKwkoKQorKQorCitERUZfTUFDUk8oZkdFVF9UTlVNLCgpLAorCSJUTlVN IiwKKwkiVE5VTSIsCisJdGhyZWFkLT50aHJlYWRJZCwKKwkoKQorKQorCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBDYWNoZSBNYW5hZ2VtZW50ICAg ICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKK0RFRl9NQUNSTyhmQkFSUklFUiwoKSwKKwkibWVtb3J5X2JhcnJp ZXIiLAorCSJtZW1vcnlfYmFycmllciIsCisgICAgIHsKKyAgICAgICAgc3lzX2JhcnJpZXIodGhy ZWFkLCBpbnNuLT5zbG90KTsKKyAgICAgfSwKKwkoKQorKQorCitERUZfTUFDUk8oZlNZTkNILCgp LAorCSJtZW1vcnlfc3luY2giLAorCSJtZW1vcnlfc3luY2giLAorICB7CisgICAgICBzeXNfc3lu Yyh0aHJlYWQsIGluc24tPnNsb3QpOworICB9LAorCSgpCispCisKK0RFRl9NQUNSTyhmSVNZTkMs KCksCisJImluc3RydWN0aW9uX3N5bmMiLAorCSJpbnN0cnVjdGlvbl9zeW5jIiwKKyAgeworICAg ICAgc3lzX2lzeW5jKHRocmVhZCwgaW5zbi0+c2xvdCk7CisgIH0sCisJKCkKKykKKworCitERUZf TUFDUk8oZklDRkVUQ0gsKFJFRyksCisJImljYWNoZV9mZXRjaChSRUcpIiwKKwkiaWNhY2hlX2Zl dGNoKFJFRykiLAorCS8qIFVuaW1wbGVtZW50ZWQgZm9yIG5vdyBpbiB1YXJjaC4uLiBjYWNoZV9u cnVfaWNhY2hlX2ZldGNoKHRocmVhZC0+cHJvY2Vzc29yX3B0ciwgdGhyZWFkLT50aHJlYWRJZCwg KFJFRykpICovLAorCSgpCispCisKK0RFRl9NQUNSTyhmRENGRVRDSCwoUkVHKSwKKwkiZGNhY2hl X2ZldGNoKFJFRykiLAorCSJkY2FjaGVfZmV0Y2goUkVHKSIsCisJc3lzX2RjZmV0Y2godGhyZWFk LCAoUkVHKSwgaW5zbi0+c2xvdCksCisJKEFfTUVNTElLRSxBX1JFU1RSSUNUX1NJTkdMRV9NRU1f RklSU1QpCispCisKK0RFRl9NQUNSTyhmSUNJTlZJRFgsKFJFRyksCisJImljYWNoZV9pbnZfaWR4 KFJFRykiLAorCSJpY2FjaGVfaW52X2lkeChSRUcpIiwKKyAgeworICAJYXJjaF9pbnRlcm5hbF9m bHVzaCh0aHJlYWQtPnByb2Nlc3Nvcl9wdHIsMCwweGZmZmZmZmZmKTsKKyAgfQorICAsCisJKCkK KykKKworREVGX01BQ1JPKGZJQ0lOVkEsKFJFRyksCisJImljYWNoZV9pbnZfYWRkcihSRUcpIiwK KwkiaWNhY2hlX2ludl9hZGRyKFJFRykiLAorCXsKKwlhcmNoX2ludGVybmFsX2ZsdXNoKHRocmVh ZC0+cHJvY2Vzc29yX3B0ciwgMCwgMHhmZmZmZmZmZik7CisgICAJc3lzX2ljaW52YSh0aHJlYWQs IChSRUcpLGluc24tPnNsb3QpOworCX0sCisJKEFfSUNJTlZBKQorKQorCitERUZfTUFDUk8oZklD S0lMTCwoKSwKKwkiaWNhY2hlX2ludl9hbGwoKSIsCisJImljYWNoZV9pbnZfYWxsKCkiLAorICAg ICAgICBhcmNoX2ludGVybmFsX2ZsdXNoKHRocmVhZC0+cHJvY2Vzc29yX3B0ciwgMCwgMHhmZmZm ZmZmZik7CisgICAgICAgIGNhY2hlX2tpbGxfaWNhY2hlKHRocmVhZC0+cHJvY2Vzc29yX3B0cik7 ICwKKwkoKQorKQorCitERUZfTUFDUk8oZkRDS0lMTCwoKSwKKwkiZGNhY2hlX2ludl9hbGwoKSIs CisJImRjYWNoZV9pbnZfYWxsKCkiLAorICAgICAgICBjYWNoZV9raWxsX2RjYWNoZSh0aHJlYWQt PnByb2Nlc3Nvcl9wdHIpOyAsCisJKCkKKykKKworREVGX01BQ1JPKGZMMktJTEwsKCksCisJImwy Y2FjaGVfaW52X2FsbCgpIiwKKwkibDJjYWNoZV9pbnZfYWxsKCkiLAorICAgICAgICBjYWNoZV9r aWxsX2wyY2FjaGUodGhyZWFkLT5wcm9jZXNzb3JfcHRyKTsgLAorCShBX0lNUExJQ0lUX1JFQURT X1NZU0NGR19HQ0EsQV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX0dDQSkKKykKKworREVGX01BQ1JP KGZMMlVOTE9DSywoKSwKKwkibDJjYWNoZV9nbG9iYWxfdW5sb2NrKCkiLAorCSJsMmNhY2hlX2ds b2JhbF91bmxvY2soKSIsCisJc3lzX2wyZ3VubG9jayh0aHJlYWQpLAorCShBX0lNUExJQ0lUX1JF QURTX1NZU0NGR19HQ0EsQV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX0dDQSkKKykKKworREVGX01B Q1JPKGZMMkNMRUFOLCgpLAorCSJsMmNhY2hlX2dsb2JhbF9jbGVhbigpIiwKKwkibDJjYWNoZV9n bG9iYWxfY2xlYW4oKSIsCisJc3lzX2wyZ2NsZWFuKHRocmVhZCksCisJKEFfSU1QTElDSVRfUkVB RFNfU1lTQ0ZHX0dDQSxBX0lNUExJQ0lUX1dSSVRFU19TWVNDRkdfR0NBKQorKQorCitERUZfTUFD Uk8oZkwyQ0xFQU5JTlYsKCksCisJImwyY2FjaGVfZ2xvYmFsX2NsZWFuX2ludigpIiwKKwkibDJj YWNoZV9nbG9iYWxfY2xlYW5faW52KCkiLAorCXN5c19sMmdjbGVhbmludih0aHJlYWQpLAorCShB X0lNUExJQ0lUX1JFQURTX1NZU0NGR19HQ0EsQV9JTVBMSUNJVF9XUklURVNfU1lTQ0ZHX0dDQSkK KykKKworREVGX01BQ1JPKGZMMkNMRUFOUEEsKFJFRyksCisJImwyY2FjaGVfZ2xvYmFsX2NsZWFu X3JhbmdlKFJFRykiLAorCSJsMmNhY2hlX2dsb2JhbF9jbGVhbl9yYW5nZShSRUcpIiwKKwlzeXNf bDJnY2xlYW5fcGEodGhyZWFkLFJFRyksCisJKEFfSU1QTElDSVRfUkVBRFNfU1lTQ0ZHX0dDQSxB X0lNUExJQ0lUX1dSSVRFU19TWVNDRkdfR0NBKQorKQorCitERUZfTUFDUk8oZkwyQ0xFQU5JTlZQ QSwoUkVHKSwKKwkibDJjYWNoZV9nbG9iYWxfY2xlYW5faW52X3JhbmdlKFJFRykiLAorCSJsMmNh Y2hlX2dsb2JhbF9jbGVhbl9pbnZfcmFuZ2UoUkVHKSIsCisJc3lzX2wyZ2NsZWFuaW52X3BhKHRo cmVhZCxSRUcpLAorCShBX0lNUExJQ0lUX1JFQURTX1NZU0NGR19HQ0EsQV9JTVBMSUNJVF9XUklU RVNfU1lTQ0ZHX0dDQSkKKykKKworCitERUZfTUFDUk8oZkwyQ0xFQU5JTlZJRFgsKFJFRyksCisJ ImwyY2FjaGVfY2xlYW5faW52YWxpZGF0ZV9pZHgoUkVHKSIsCisJImwyY2FjaGVfY2xlYW5faW52 YWxpZGF0ZV9pZHgoUkVHKSIsCisJc3lzX2wyY2xlYW5pbnZpZHgodGhyZWFkLCAoUkVHKSksCisJ KEFfTUVNTElLRSxBX1JFU1RSSUNUX1NJTkdMRV9NRU1fRklSU1QpCispCisKK0RFRl9NQUNSTyhm TDJDTEVBTklEWCwoUkVHKSwKKwkibDJjYWNoZV9jbGVhbl9pZHgoUkVHKSIsCisJImwyY2FjaGVf Y2xlYW5faWR4KFJFRykiLAorCXN5c19sMmNsZWFuaWR4KHRocmVhZCwgKFJFRykpLAorCShBX01F TUxJS0UsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCitERUZfTUFDUk8oZkwySU5W SURYLChSRUcpLAorCSJsMmNhY2hlX2ludl9pZHgoUkVHKSIsCisJImwyY2FjaGVfaW52X2lkeChS RUcpIiwKKwlzeXNfbDJpbnZpZHgodGhyZWFkLCAoUkVHKSksCisJKEFfTUVNTElLRSxBX1JFU1RS SUNUX1NJTkdMRV9NRU1fRklSU1QpCispCisKK0RFRl9NQUNSTyhmRENUQUdSLChJTkRFWCxEU1Qs RFNUUkVHTk8pLAorCSJkY2FjaGVfdGFnX3JlYWQoSU5ERVgpIiwKKwkiZGNhY2hlX3RhZ19yZWFk KElOREVYKSIsCisJKHtEU1Q9c3lzX2RjdGFncih0aHJlYWQsIElOREVYLCBpbnNuLT5zbG90LERT VFJFR05PKTt9KS8qIEZJWE1FICovLAorCSgpCispCisKK0RFRl9NQUNSTyhmRENUQUdXLChJTkRF WCxQQVJUMiksCisJImRjYWNoZV90YWdfd3JpdGUoSU5ERVgsUEFSVDIpIiwKKwkiZGNhY2hlX3Rh Z193cml0ZShJTkRFWCxQQVJUMikiLAorCShzeXNfZGN0YWd3KHRocmVhZCwgSU5ERVgsIFBBUlQy LCBpbnNuLT5zbG90KSksCisJKCkKKykKK0RFRl9NQUNSTyhmSUNUQUdSLChJTkRFWCxEU1QsUkVH Tk8pLAorCSJpY2FjaGVfdGFnX3JlYWQoSU5ERVgpIiwKKwkiaWNhY2hlX3RhZ19yZWFkKElOREVY KSIsCisJKHtEU1Q9c3lzX2ljdGFncih0aHJlYWQsIElOREVYLCBpbnNuLT5zbG90LFJFR05PKTt9 KSwKKwkoKQorKQorCitERUZfTUFDUk8oZklDREFUQVIsKElOREVYLCBEU1QpLAorCSJpY2FjaGVf ZGF0YV9yZWFkKElOREVYKSIsCisJImljYWNoZV9kYXRhX3JlYWQoSU5ERVgpIiwKKwkoe0RTVD1z eXNfaWNkYXRhcih0aHJlYWQsIElOREVYLCBpbnNuLT5zbG90KTt9KSwKKwkoKQorKQorCitERUZf TUFDUk8oZklDVEFHVywoSU5ERVgsUEFSVDIpLAorCSJpY2FjaGVfdGFnX3dyaXRlKElOREVYLFBB UlQyKSIsCisJImljYWNoZV90YWdfd3JpdGUoSU5ERVgsUEFSVDIpIiwKKwkoc3lzX2ljdGFndyh0 aHJlYWQsIElOREVYLCBQQVJUMiwgaW5zbi0+c2xvdCkpLAorCSgpCispCitERUZfTUFDUk8oZklD REFUQVcsKElOREVYLERBVEEpLAorCSJpY2FjaGVfZGF0YV93cml0ZShJTkRFWCxEQVRBKSIsCisJ ImljYWNoZV9kYXRhX3dyaXRlKElOREVYLERBVEEpIiwKKwkoeyBmSElERSgpOyB9KSwKKwkoKQor KQorCitERUZfTUFDUk8oZkwyRkVUQ0gsKEFERFIsSEVJR0hULFdJRFRILFNUUklERSxGTEFHUyks CisJImwyZmV0Y2goQUREUixJTkZPKSIsCisJImwyZmV0Y2goQUREUixJTkZPKSIsCisJc3lzX2wy ZmV0Y2godGhyZWFkLCBBRERSLEhFSUdIVCxXSURUSCxTVFJJREUsRkxBR1MsIGluc24tPnNsb3Qp LAorCShBX01FTUxJS0UsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNULEFfTDJGRVRDSCkKKykK KworREVGX01BQ1JPKGZMMlRBR1IsKElOREVYLCBEU1QsIERTVFJFRyksCisJImwyY2FjaGVfdGFn X3JlYWQoSU5ERVgpIiwKKwkibDJjYWNoZV90YWdfcmVhZChJTkRFWCkiLAorCSh7RFNUPXN5c19s MnRhZ3IodGhyZWFkLCBJTkRFWCwgaW5zbi0+c2xvdCwgRFNUUkVHKTt9KSwKKwkoKQorKQorCitE RUZfTUFDUk8oZkwyTE9DS0EsKFZBLERTVCxQUkVHRFNUKSwKKwkiRFNUPWwybG9ja2EoVkEpIiwK KwkiRFNUPWwybG9ja2EoVkEpIiwKKwlkbyB7RFNUPXN5c19sMmxvY2thKHRocmVhZCwgVkEsIGlu c24tPnNsb3QsIFBSRUdEU1QpOyB9IHdoaWxlICgwKSwKKwkoKQorKQorCitERUZfTUFDUk8oZkwy VU5MT0NLQSwoVkEpLAorCSJsMnVubG9ja2EoVkEpIiwKKwkibDJ1bmxvY2thKFZBKSIsCisJc3lz X2wydW5sb2NrYSh0aHJlYWQsIFZBLCBpbnNuLT5zbG90KSwKKwkoKQorKQorCitERUZfTUFDUk8o ZkwyVEFHVywoSU5ERVgsUEFSVDIpLAorCSJsMmNhY2hlX3RhZ193cml0ZShJTkRFWCxQQVJUMiki LAorCSJsMmNhY2hlX3RhZ193cml0ZShJTkRFWCxQQVJUMikiLAorCSh7c3lzX2wydGFndyh0aHJl YWQsIElOREVYLCBQQVJUMiwgaW5zbi0+c2xvdCk7fSksCisJKCkKKykKKworREVGX01BQ1JPKGZE Q0NMRUFOSURYLChSRUcpLAorCSJkY2FjaGVfY2xlYW5faWR4KFJFRykiLAorCSJkY2FjaGVfY2xl YW5faWR4KFJFRykiLAorCXN5c19kY2NsZWFuaWR4KHRocmVhZCwgKFJFRykpLAorCShBX01FTUxJ S0UsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCitERUZfTUFDUk8oZkRDQ0xFQU5B LChSRUcpLAorCSJkY2FjaGVfY2xlYW5fYWRkcihSRUcpIiwKKwkiZGNhY2hlX2NsZWFuX2FkZHIo UkVHKSIsCisJc3lzX2RjY2xlYW5hKHRocmVhZCwgKFJFRykpLAorCShBX01FTUxJS0UsQV9SRVNU UklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCitERUZfTUFDUk8oZkRDQ0xFQU5JTlZJRFgsKFJF RyksCisJImRjYWNoZV9jbGVhbmludl9pZHgoUkVHKSIsCisJImRjYWNoZV9jbGVhbmludl9pZHgo UkVHKSIsCisJc3lzX2RjY2xlYW5pbnZpZHgodGhyZWFkLCAoUkVHKSksCisJKEFfTUVNTElLRSxB X1JFU1RSSUNUX1NJTkdMRV9NRU1fRklSU1QpCispCisKK0RFRl9NQUNSTyhmRENDTEVBTklOVkEs KFJFRyksCisJImRjYWNoZV9jbGVhbmludl9hZGRyKFJFRykiLAorCSJkY2FjaGVfY2xlYW5pbnZf YWRkcihSRUcpIiwKKwlzeXNfZGNjbGVhbmludmEodGhyZWFkLCAoUkVHKSwgaW5zbi0+c2xvdCks CisJKEFfTUVNTElLRSxBX1JFU1RSSUNUX1NJTkdMRV9NRU1fRklSU1QsQV9EQ0NMRUFOSU5WQSkK KykKKworREVGX01BQ1JPKGZEQ1pFUk9BLChSRUcpLAorCSJkY2FjaGVfemVyb19hZGRyKFJFRyki LAorCSJkY2FjaGVfemVyb19hZGRyKFJFRykiLAorCXN5c19kY3plcm9hKHRocmVhZCwgKFJFRykp LAorCShBX01FTUxJS0UsQV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCitERUZfTUFD Uk8oZkRDSU5WSURYLChSRUcpLAorCSJkY2FjaGVfaW52X2lkeChSRUcpIiwKKwkiZGNhY2hlX2lu dl9pZHgoUkVHKSIsCisJc3lzX2RjaW52aWR4KHRocmVhZCwgKFJFRykpLAorCShBX01FTUxJS0Us QV9SRVNUUklDVF9TSU5HTEVfTUVNX0ZJUlNUKQorKQorCitERUZfTUFDUk8oZkRDSU5WQSwoUkVH KSwKKwkiZGNhY2hlX2ludl9hZGRyKFJFRykiLAorCSJkY2FjaGVfaW52X2FkZHIoUkVHKSIsCisJ c3lzX2RjaW52YSh0aHJlYWQsIChSRUcpKSwKKwkoQV9NRU1MSUtFLEFfUkVTVFJJQ1RfU0lOR0xF X01FTV9GSVJTVCkKKykKKworCitERUZfTUFDUk8oZkNIRUNLRk9SUFJJViwoKSwKKwkicHJpdl9j aGVjaygpOyIsCisJInByaXZfY2hlY2soKTsiLAorCXtzeXNfY2hlY2tfcHJpdnModGhyZWFkKTsg aWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgcmV0dXJuOyB9LAorCSgpCispCisKK0RFRl9NQUNSTyhm Q0hFQ0tGT1JHVUVTVCwoKSwKKwkicHJpdl9jaGVjaygpOyIsCisJInByaXZfY2hlY2soKTsiLAor CXtzeXNfY2hlY2tfZ3Vlc3QodGhyZWFkKTsgaWYgKEVYQ0VQVElPTl9ERVRFQ1RFRCkgcmV0dXJu OyB9LAorCSgpCispCisKK0RFRl9NQUNSTyhmSUxMRUdBTCwoKSwKKwkiaWxsZWdhbCgpIiwKKwki aWxsZWdhbCgpIiwKKwlkbyB7c3lzX2lsbGVnYWwodGhyZWFkKTsgaWYgKEVYQ0VQVElPTl9ERVRF Q1RFRCkgcmV0dXJuOyB9IHdoaWxlICgwKSwKKwkoKQorKQorCisjaWZkZWYgTkVXX0lOVEVSUlVQ VFMKKworREVGX01BQ1JPKGZUQUtFTl9JTlRFUlJVUFRfRURHRUNMRUFSLChwcm9jLGludG51bSks CisJImNsZWFyX2lwZW5kKGludG51bSkiLAorCSJJZiB0aGUgaW50ZXJydXB0IGlzIGVkZ2UgdHJp Z2dlcmVkLCBjbGVhciB0aGUgaW50ZXJydXB0IGZyb20gSVBFTkQgZHVlIHRvIGJlaW5nIHRha2Vu IiwKKwl7IGZXUklURV9HTE9CQUxfUkVHX0ZJRUxEKElQRU5EQUQsSVBFTkRBRF9JUEVORCwKKwkJ ZlJFQURfR0xPQkFMX1JFR19GSUVMRChJUEVOREFELElQRU5EQURfSVBFTkQpICYgfihJTlRfTlVN VE9NQVNLKGludG51bSkpKTsgfSwKKwkoKQorKQorCitERUZfTUFDUk8oZlNFVF9JQUQsKHRocmVh ZCxpbnRudW0pLAorCSJzZXRfaWFkKGludG51bSkiLAorCSJTZXQgSUFEIGJpdCBjb3JyZXNwb25k aW5nIHRvIGludG51bSIsCisJeyBzeXNfc2lhZCh0aHJlYWQsSU5UX05VTVRPTUFTSyhpbnRudW0p KTsKKwkgIGZXUklURV9HTE9CQUxfUkVHX0ZJRUxEKElQRU5EQUQsSVBFTkRBRF9JQUQsCisJCWZS RUFEX0dMT0JBTF9SRUdfRklFTEQoSVBFTkRBRCxJUEVOREFEX0lBRCkgfCBJTlRfTlVNVE9NQVNL KGludG51bSkpOyB9LAorCSgpCispCisjZWxzZQorCitERUZfTUFDUk8oZlRBS0VOX0lOVEVSUlVQ VF9FREdFQ0xFQVIsKHByb2MsaW50bnVtKSwKKyAgICAgICAgImNsZWFyX2lwZW5kKGludG51bSki LAorICAgICAgICAiSWYgdGhlIGludGVycnVwdCBpcyBlZGdlIHRyaWdnZXJlZCwgY2xlYXIgdGhl IGludGVycnVwdCBmcm9tIElQRU5EIGR1ZSB0byBiZWluZyB0YWtlbiIsCisgICAgICAgIHsgcHJv Yy0+Z2xvYmFsX3JlZ3NbUkVHX0lQRU5EXSAmPSB+KElOVF9OVU1UT01BU0soaW50bnVtKSAmIHBy b2MtPmdsb2JhbF9yZWdzW1JFR19JRUxdKTsgfSwKKyAgICAgICAgKCkKKykKKworREVGX01BQ1JP KGZTRVRfSUFELCh0aHJlYWQsaW50bnVtKSwKKyAgICAgICAgInNldF9pYWQoaW50bnVtKSIsCisg ICAgICAgICJTZXQgSUFEIGJpdCBjb3JyZXNwb25kaW5nIHRvIGludG51bSIsCisgICAgICAgIHsg c3lzX3NpYWQodGhyZWFkLElOVF9OVU1UT01BU0soaW50bnVtKSk7IHRocmVhZC0+cHJvY2Vzc29y X3B0ci0+Z2xvYmFsX3JlZ3NbUkVHX0lBRF0gfD0gSU5UX05VTVRPTUFTSyhpbnRudW0pOyB9LAor ICAgICAgICAoKQorKQorCisjZW5kaWYKKworREVGX01BQ1JPKGZCUkFOQ0hfU1BFQ1VMQVRFRF9S SUdIVCwoSkMsU0QsRE9UTkVXVkFMKSwKKwkiYnJhbmNoX3NwZWN1bGF0ZWRfcmlnaHQoSkMsU0Qs RE9UTkVXVkFMKSIsCisJImJyYW5jaF9zcGVjdWxhdGVkX3JpZ2h0KEpDLFNELERPVE5FV1ZBTCki LAorCSgoKEpDKSBeIChTRCkgXiAoRE9UTkVXVkFMJjEpKSAmIDB4MSksCisJKCkKKykKKworCisK K0RFRl9NQUNSTyhmQlJBTkNIX1NQRUNVTEFURV9TVEFMTCwoRE9UTkVXVkFMLCBKVU1QX0NPTkQs IFNQRUNfRElSLCBISU5UQklUTlVNLCBTVFJCSVROVU0pLAorCSIiLAorCSJDaGVjayB0aGUgLm5l dyBwcmVkaWNhdGUgYW5kIHN0YWxsIGlmIHdyb25nbHkgc3BlY3VsYXRlZC4iLAorCXsKK3N5c19z cGVjdWxhdGVfYnJhbmNoX3N0YWxsKHRocmVhZCwgaW5zbi0+c2xvdCwgSlVNUF9DT05EKEpVTVBf UFJFRF9TRVQpLAorCQkJCQkJCQkJCSAgIFNQRUNfRElSLAorCQkJCQkJCQkJCSAgIERPVE5FV1ZB TCwKKwkJCQkJCQkJCQkgICBISU5UQklUTlVNLAorCQkJCQkJCQkJCSAgIFNUUkJJVE5VTSwKKwkJ CQkJCQkJCQkgICAwLAorCQkJCQkJCQkJCSAgIHRocmVhZC0+bGFzdF9wa3QtPnBrdF9oYXNfZHVh bF9qdW1wLAorCQkJCQkJCQkJCSAgIGluc24tPmlzXzJuZF9qdW1wLAorCQkJCQkJCQkJCSAgICh0 aHJlYWQtPmZldGNoX2FjY2Vzcy52YWRkciArIGluc24tPmVuY29kaW5nX29mZnNldCo0KSk7Cisg IH0sCisJKEFfQklNT0RBTF9CUkFOQ0gpCispCisKKworREVGX01BQ1JPKENBQ0hFX01PRElGWSwg KEEsIEIpLAorICAiY2FjaGVfbW9kaWZ5KCkiLAorICAiQXNzaWducyBCIHRvIEEgaWYgbm90IHNh bmRib3ggZXhlY3V0aW9uIiwKKyAgQT1CCisgICwKKyAgKCkKKykKKworREVGX01BQ1JPKFNJTV9C VVNBQ0NFU1MsIChBLEIsQyxELEUsRixHLEgsSSksCisgICJzaW1fYnVzYWNjZXNzX21hY3JvKCki LAorICAiU2ltIGJ1cyBhY2Nlc3MgcXVhbGlmaWVkIHdpdGggY2FjaGUgbW9kaWZ5IiwKKyAgICh7 CisJc2ltX2J1c2FjY2Vzc190IHAgPSBCLT5idXNhY2Nlc3M7CisJaWYgKCFwKSBwID0gc2ltX2J1 c2FjY2VzczsKKwlwKEEsQixDLEQsRSxGLEcsSCxJKTsKKyAgIH0pCisgICwKKyAgKCkKKykKKwor REVGX01BQ1JPKFNJTV9CVVNBQ0NFU1NfQUNLLCAoQSxCLEMsRCxFLEYsRyxILEkpLAorICAic2lt X2J1c2FjY2Vzc19tYWNybygpIiwKKyAgIlNpbSBidXMgYWNjZXNzIHdpdGggYSByZXR1cm4gdmFs dWUgYW5kIHF1YWxpZmllZCB3aXRoIGNhY2hlIG1vZGlmeSIsCisJLyogRUpQOiBpbXBsaWNpdCAi c3RhdHVzIiBpcyBwcm9iYWJseSBiYWQuICovCisgIGRvIHsKKwlzaW1fYnVzYWNjZXNzX3QgcCA9 IEItPmJ1c2FjY2VzczsKKwlpZiAoIXApIHAgPSBzaW1fYnVzYWNjZXNzOworCXN0YXR1cyA9IHAo QSxCLEMsRCxFLEYsRyxILEkpOworICB9IHdoaWxlICgwKQorICAsCisgICgpCispCisKK0RFRl9N QUNSTyhTRVRfUE1VX0VWRU5UX1NUQVRFLCAoX1RIUkVBRF8sIF9QTVVfRVZFTlRfTlVNXyksCisg ICJzZXRfcG11X3N0YXRlKCkiLAorICAiU2V0cyB0aGUgYml0IGZvciBhbiBldmVudCBpbiB0aGUg UE1VIGFycmF5IGluIHRoZSB0aHJlYWQiLAorICAoX1RIUkVBRF8tPnByb2Nlc3Nvcl9wdHItPnBt dV9ldmVudF9zdGF0ZVtfUE1VX0VWRU5UX05VTV9dID0gMSkKKyAgLAorICAoKQorKQorCitERUZf TUFDUk8oQ0xFQVJfUE1VX0VWRU5UX1NUQVRFLCAoX1RIUkVBRF8sIF9QTVVfRVZFTlRfTlVNXyks CisgICJjbGVhcl9wbXVfc3RhdGUoKSIsCisgICJDbGVhcnMgdGhlIGJpdCBmb3IgYW4gZXZlbnQg aW4gdGhlIFBNVSBhcnJheSBpbiB0aGUgdGhyZWFkIiwKKyAgKF9USFJFQURfLT5wcm9jZXNzb3Jf cHRyLT5wbXVfZXZlbnRfc3RhdGVbX1BNVV9FVkVOVF9OVU1fXSA9IDApCisgICwKKyAgKCkKKykK KworREVGX01BQ1JPKGZOT1BfRVhFQ1VURUQsCisJLAorCSJkbyBub3RoaW5nIiwKKwkic29tZSBt YWdpYyB0cmlnZ2VycyBmb3IgY2FjaGUgZHJpdmUiLAorCXsgc3lzX25vcF9leGVjdXRlZCh0aHJl YWQpOwl9LAorCSgpCispCisKK0RFRl9NQUNSTyhmU0VUTVJFRywKKwkgIChJRFgsIFZBTCksCisJ ICAiZlNFVE1SRUcoSURYLFZBTCkiLCAgIC8qIHNob3J0IGRlc2MgKi8KKwkgICJTRVQgTVJFRyBW ZWN0b3IgSURYIiwgLyogbG9uZyBkZXNjICovCisgICAgICAgICAgKHRocmVhZC0+TXJlZ3NbSURY XSA9IChWQUwpKSwKKwkgICgpCispCisKK0RFRl9NQUNSTyhmR0VUTVJFRywKKwkgIChJRFgpLAor CSAgImZHRVRNUkVHKElEWCkiLCAgIC8qIHNob3J0IGRlc2MgKi8KKwkgICJHRVQgTVJFRyBWZWN0 b3IgSURYIiwgLyogbG9uZyBkZXNjICovCisgICAgICAgICAgKHRocmVhZC0+TXJlZ3NbSURYXSks CisJICAoKQorKQorCisKKworCisKKworCisKK0RFRl9NQUNSTyhmWE9SQklUUywoU1VNLFZBUixW RUMpLAorICAgICAgIlNVTSA9IHhvciBiaXRzaW4oVkVDKSIsCisgICAgICAiWE9SIGFsbCBiaXRz IHRvZ2V0aGVyIGluIGEgMzJiaXQgcmVnaXN0ZXIiLAorICAgICAgeworICAgICAgICBmb3IgKFNV TT0wLFZBUj0wO1ZBUjwzMjtWQVIrKykgeworICAgICAgICAgICBTVU0gXj0gVkVDICYgMTsKKyAg ICAgICAgICAgVkVDID0gVkVDID4+IDE7CisgICAgICAgIH0KKyAgICAgIH0sCispCisKK0RFRl9N QUNSTyhmVElNSU5HLChBKSwKKwkiIiwKKwkiIiwKKwlpZiAoVU5MSUtFTFkodGhyZWFkLT50aW1p bmdfb24pKSB7CisJCUE7CisJfSwKKwkoKQorKQorCitERUZfTUFDUk8oSVYxREVBRCwoKSwKKwki IiwKKwkiIiwKKwksCisJKCkgLypBX05PVEVfTk9JU1RBUklWMSovCispCisKK0RFRl9NQUNSTyhG QUtFLCgpLAorCSIiLAorCSIiLAorCSwKKwkoQV9GQUtFSU5TTikKKykKKworREVGX01BQ1JPKGZJ Tl9NT05JVE9SX01PREUsKCksCisJImluX21vbml0b3JfbW9kZSgpIiwKKwkiaW5fbW9uaXRvcl9t b2RlKCkiLAorCXN5c19pbl9tb25pdG9yX21vZGUodGhyZWFkKSwKKwkoQV9JTVBMSUNJVF9SRUFE U19TU1IpCispCisKK0RFRl9NQUNSTyhmSU5fVVNFUl9NT0RFLCgpLAorCSJpbl91c2VyX21vZGUo KSIsCisJImluX3VzZXJfbW9kZSgpIiwKKwlzeXNfaW5fdXNlcl9tb2RlKHRocmVhZCksCisJKEFf SU1QTElDSVRfUkVBRFNfU1NSKQorKQorCitERUZfTUFDUk8oZklOX0dVRVNUX01PREUsKCksCisJ ImluX2d1ZXN0X21vZGUoKSIsCisJImluX2d1ZXN0X21vZGUoKSIsCisJc3lzX2luX2d1ZXN0X21v ZGUodGhyZWFkKSwKKwkoQV9JTVBMSUNJVF9SRUFEU19TU1IpCispCisKK0RFRl9NQUNSTyhmR1JF X0VOQUJMRUQsKCksCisJIkNDUi5HUkUiLAorCSJDQ1IuR1JFIiwKKwlmUkVBRF9SRUdfRklFTEQo Q0NSLENDUl9HUkUpLAorCShBX0lNUExJQ0lUX1JFQURTX0NDUikKKykKKworREVGX01BQ1JPKGZH VEVfRU5BQkxFRCwoKSwKKwkiQ0NSLkdSRSIsCisJIkNDUi5HUkUiLAorCWZSRUFEX1JFR19GSUVM RChDQ1IsQ0NSX0dSRSksCisJKEFfSU1QTElDSVRfUkVBRFNfQ0NSKQorKQorCitERUZfTUFDUk8o ZlRSQVAxX1ZJUlRJTlNOLChJTU0pLAorCSJjYW5faGFuZGxlX3RyYXAxX3ZpcnRpbnNuKElNTSki LAorCSJjYW5faGFuZGxlX3RyYXAxX3ZpcnRpbnNuKElNTSkiLAorCSgoZklOX0dVRVNUX01PREUo KSkKKwkJJiYgKGZHUkVfRU5BQkxFRCgpKQorCQkmJiAoCSgoSU1NKSA9PSAxKQorCQkJfHwgKChJ TU0pID09IDMpCisJCQl8fCAoKElNTSkgPT0gNCkKKwkJCXx8ICgoSU1NKSA9PSA2KSkpLAorCSgp CispCisKK0RFRl9NQUNSTyhmVFJBUDBfVE9fR1VFU1QsKCksCisJImNhbl9oYW5kbGVfdHJhcDBf dG9fZ3Vlc3QoSU1NKSIsCisJImNhbl9oYW5kbGVfdHJhcDBfdG9fZ3Vlc3QoSU1NKSIsCisJKCgh ZklOX01PTklUT1JfTU9ERSgpKQorCQkmJiAoZkdURV9FTkFCTEVEKCkpKSwKKwkoKQorKQorCitE RUZfTUFDUk8oZlZJUlRJTlNOX1JURSwoSU1NLFJFRyksCisJIlZNUlRFIiwKKwkiVk1SVEUiLAor CWRvIHsKKwkJdGhyZWFkLT50cmFwMV9pbmZvID0gVFJBUDFfVklSVElOU05fUlRFOworCQlmTE9H X1JFR19GSUVMRChTU1IsU1NSX1NTLGZSRUFEX1JFR19GSUVMRChHU1IsR1NSX1NTKSk7CisJCWZM T0dfUkVHX0ZJRUxEKENDUixDQ1JfR0lFLGZSRUFEX1JFR19GSUVMRChHU1IsR1NSX0lFKSk7CisJ CWZMT0dfUkVHX0ZJRUxEKFNTUixTU1JfR00sIWZSRUFEX1JFR19GSUVMRChHU1IsR1NSX1VNKSk7 CisJCWZCUkFOQ0goKGZSRUFEX0dFTFIoKSAmIC00KSxDT0ZfVFlQRV9SVEUpOworCQlmSU5URVJO QUxfQ0xFQVJfU0FNRVBBR0UoKTsKKwl9IHdoaWxlICgwKSwKKwkoQV9JTVBMSUNJVF9SRUFEU19H U1IsQV9JTVBMSUNJVF9XUklURVNfUEMsQV9JTVBMSUNJVF9XUklURVNfQ0NSLEFfSU1QTElDSVRf V1JJVEVTX1NTUikKKykKKworREVGX01BQ1JPKGZWSVJUSU5TTl9TRVRJRSwoSU1NLFJFRyksCisJ IlZNU0VUSUUiLAorCSJWTVNFVElFIiwKKwlkbyB7IAlmTE9HX1JFR19GSUVMRChDQ1IsQ0NSX0dJ RSwoUkVHKSAmIDEpOworCQlSRUcgPSBmUkVBRF9SRUdfRklFTEQoQ0NSLENDUl9HSUUpOworCQl0 aHJlYWQtPnRyYXAxX2luZm8gPSBUUkFQMV9WSVJUSU5TTl9TRVRJRTsKKwl9IHdoaWxlICgwKSwK KwkoQV9JTVBMSUNJVF9SRUFEU19DQ1IsQV9JTVBMSUNJVF9XUklURVNfQ0NSKQorKQorCitERUZf TUFDUk8oZlZJUlRJTlNOX0dFVElFLChJTU0sUkVHKSwKKwkiVk1HRVRJRSIsCisJIlZNR0VUSUUi LAorCXsgCXRocmVhZC0+dHJhcDFfaW5mbyA9IFRSQVAxX1ZJUlRJTlNOX0dFVElFOworCQlSRUcg PSBmUkVBRF9SRUdfRklFTEQoQ0NSLENDUl9HSUUpOworCX0sCisKKwkoQV9JTVBMSUNJVF9SRUFE U19DQ1IpCispCisKK0RFRl9NQUNSTyhmVklSVElOU05fU1BTV0FQLChJTU0sUkVHKSwKKwkiVk1T UFNXQVAiLAorCSJWTVNQU1dBUCIsCisJZG8geyBpZiAoZlJFQURfUkVHX0ZJRUxEKEdTUixHU1Jf VU0pKSB7CisJCXNpemU0dV90IFRFTVAgPSBSRUc7CisJCVJFRyA9IGZSRUFEX0dPU1AoKTsKKwkJ ZldSSVRFX0dPU1AoVEVNUCk7CisJCXRocmVhZC0+dHJhcDFfaW5mbyA9IFRSQVAxX1ZJUlRJTlNO X1NQU1dBUDsKKwl9IH0gd2hpbGUgKDApLAorCShBX0lNUExJQ0lUX1JFQURTX0dTUixBX0lNUExJ Q0lUX1JFQURTX0dPU1AsQV9JTVBMSUNJVF9XUklURVNfR09TUCkKKykKKworREVGX01BQ1JPKGZH VUVTVFRSQVAsKFRSQVBUWVBFLElNTSksCisJIkdTUi5DQVVTRSA9IElNTTsgVFJBUCAjIFRSQVBU WVBFIiwKKwkiR1NSLkNBVVNFID0gSU1NOyBUUkFQICMgVFJBUFRZUEUiLAorCWRvIHsKKwkJaWYg KFRSQVBUWVBFID09IDApIHsKKwkJCUNBTExCQUNLKHRocmVhZC0+cHJvY2Vzc29yX3B0ci0+b3B0 aW9ucy0+dHJhcDBfY2FsbGJhY2ssCisJCQkJCSB0aHJlYWQtPnN5c3RlbV9wdHIsIHRocmVhZC0+ cHJvY2Vzc29yX3B0ciwKKwkJCQkJIHRocmVhZC0+dGhyZWFkSWQsIElNTSk7CisJCX0KKwkJV1JJ VEVfUlJFRyhSRUdfR0VMUixmUkVBRF9OUEMoKSk7CisJCWZMT0dfUkVHX0ZJRUxEKEdTUixHU1Jf VU0sIWZSRUFEX1JFR19GSUVMRChTU1IsU1NSX0dNKSk7CisJCWZMT0dfUkVHX0ZJRUxEKEdTUixH U1JfU1MsZlJFQURfUkVHX0ZJRUxEKFNTUixTU1JfU1MpKTsKKwkJZkxPR19SRUdfRklFTEQoR1NS LEdTUl9JRSxmUkVBRF9SRUdfRklFTEQoQ0NSLENDUl9HSUUpKTsKKwkJZkxPR19SRUdfRklFTEQo R1NSLEdTUl9DQVVTRSxJTU0pOworCQlmTE9HX1JFR19GSUVMRChTU1IsU1NSX0dNLDEpOworCQlm TE9HX1JFR19GSUVMRChTU1IsU1NSX1NTLDApOworCQlmTE9HX1JFR19GSUVMRChDQ1IsQ0NSX0dJ RSwwKTsKKwkJZkJSQU5DSChmUkVBRF9HRVZCKCkgKyAoKEVYQ0VQVF9UWVBFX1RSQVAjI1RSQVBU WVBFKTw8MiksQ09GX1RZUEVfVFJBUCk7CisJfSB3aGlsZSAoMCksCisJKCkKKykKKworREVGX01B Q1JPKGZQUkVEVVNFX1RJTUlORywoKSwKKwkiUFJFRFVTRV9USU1JTkciLAorCSJQUkVEVVNFX1RJ TUlORyIsCisJLAorCShBX1BSRURVU0VfQlNCKQorKQotLSAKMi43LjQKCg==