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 3263EC352A4 for ; Tue, 11 Feb 2020 01:15:15 +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 859CE20708 for ; Tue, 11 Feb 2020 01:15:14 +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="WcoOax4q" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 859CE20708 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]:42014 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1K8v-0003ZS-NC for qemu-devel@archiver.kernel.org; Mon, 10 Feb 2020 20:15:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33188) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j1JcT-0001x7-Oo for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j1JcI-0007Aa-Rs for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:41 -0500 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:3651) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j1JcF-0004uE-Gu for qemu-devel@nongnu.org; Mon, 10 Feb 2020 19:41:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1581381687; x=1612917687; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tky/zdm+1G/nft1mb5tKRqeRo+5AyJEpH0yhf1J/HSw=; b=WcoOax4q06g8k/AKgbcH2NhytnN8DLd2z4atA8y4ty0U33kybdva6sva O/oG6btlbqYVvgko3QYSuKWKCclDB6yjV/zAPRT23bj1QVBna+UXBYra0 T8BU2bcx2w0bXNuevC+x9JbwyWFZM55u9U+6Zgxm1UUkYbhXRWWcv5OQl U=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 10 Feb 2020 16:41:00 -0800 Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 10 Feb 2020 16:40:58 -0800 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id BA8E91B5F; Mon, 10 Feb 2020 18:40:58 -0600 (CST) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [RFC PATCH 15/66] Hexagon arch import - instruction semantics definitions Date: Mon, 10 Feb 2020 18:39:53 -0600 Message-Id: <1581381644-13678-16-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1581381644-13678-1-git-send-email-tsimpson@quicinc.com> References: <1581381644-13678-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 ZWQvYWxsaWRlZnMuZGVmICAgICAgICAgIFRvcCBsZXZlbCBpbnN0cnVjdGlvbiBkZWZpbml0aW9u IGZpbGUKICAgIGltcG9ydGVkLyouaWRlZiAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBkZWZp bml0aW9uIGZpbGVzClRoZXNlIGZpbGVzIGFyZSBpbnB1dCB0byB0aGUgZmlyc3QgcGhhc2Ugb2Yg dGhlIGdlbmVyYXRvciAoZ2VuX3NlbWFudGljcy5jKQp0byBjcmVhdGUgYSBweXRob24gaW5jbHVk ZSBmaWxlIHdpdGggdGhlIGluc3RydWN0aW9uIHNlbWFudGljcyBhbmQgYXR0cmlidXRlcy4KVGhl IHB5dGhvbiBpbmNsdWRlIGZpbGUgaXMgZmVkIHRvIHRoZSBzZWNvbmQgcGhhc2UgKGRvX3FlbXUu cHkpLgoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29t PgotLS0KIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZiAgfCAgIDkxICsrKwog dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWx1LmlkZWYgICAgICB8IDEzMzUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9icmFuY2guaWRl ZiAgIHwgIDM0NCArKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2NvbXBhcmUuaWRl ZiAgfCAgNjM5ICsrKysrKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2Zsb2F0 LmlkZWYgICAgfCAgNDk4ICsrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbGRz dC5pZGVmICAgICB8ICA0MjEgKysrKysrKysrKysKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21w eS5pZGVmICAgICAgfCAxMjY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRhcmdl dC9oZXhhZ29uL2ltcG9ydGVkL3NoaWZ0LmlkZWYgICAgfCAxMjExICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvc3ViaW5zbnMuaWRlZiB8ICAx NTIgKysrKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvc3lzdGVtLmlkZWYgICB8ICAzMDIgKysr KysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDYyNjIgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsdS5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYnJhbmNoLmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9jb21wYXJlLmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB0YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9mbG9hdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbGRzdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFy Z2V0L2hleGFnb24vaW1wb3J0ZWQvbXB5LmlkZWYKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5pZGVmCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGFyZ2V0L2hl eGFnb24vaW1wb3J0ZWQvc3ViaW5zbnMuaWRlZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL3N5c3RlbS5pZGVmCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvYWxsaWRlZnMuZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMu ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NjQwNDYKLS0tIC9kZXYv bnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKQEAgLTAsMCAr MSw5MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3ZhdGlvbiBD ZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBUb3AgbGV2ZWwgaW5zdHJ1Y3Rpb24g ZGVmaW5pdGlvbiBmaWxlCisgKi8KKworI2RlZmluZSBERUZfTUFQUElORyhUQUcsRlJPTVNZTixU T1NZTikgXAorCVE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQUElORyksIFwKKwkJIk1h cHBpbmcgZnJvbSAiIEZST01TWU4gIiB0byAiIFRPU1lOLCBcCisJCWZBU01fTUFQKEZST01TWU4s VE9TWU4pKQorCisjZGVmaW5lIERFRl9DT05EX01BUFBJTkcoVEFHLEZST01TWU4sQ09ORCxUT1NZ TkEsVE9TWU5CKSBcCisgICAgICAgIFE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQUElO RyxBX0NPTkRNQVBQSU5HKSwgXAorCQkiQ29uZGl0aW9uYWwgTWFwcGluZyBmcm9tICIgRlJPTVNZ TiAiIHRvIGVpdGhlciAiIFRPU1lOQSAiIG9yICIgVE9TWU5CLCBcCisJCWZDT05EX0FTTV9NQVAo RlJPTVNZTixDT05ELFRPU1lOQSxUT1NZTkIpKQorCisjZGVmaW5lIERFRl9WMl9NQVBQSU5HKFRB RyxGUk9NU1lOLFRPU1lOKSBcCisJUTZJTlNOKFRBRyxGUk9NU1lOLEFUVFJJQlMoQV9NQVBQSU5H LEFfQVJDSFYyKSwgXAorCQkiTWFwcGluZyBmcm9tICIgRlJPTVNZTiAiIHRvICIgVE9TWU4sIFwK KwkJZkFTTV9NQVAoRlJPTVNZTixUT1NZTikpCisKKyNkZWZpbmUgREVGX1YyX0NPTkRfTUFQUElO RyhUQUcsRlJPTVNZTixDT05ELFRPU1lOQSxUT1NZTkIpIFwKKyAgICAgICAgUTZJTlNOKFRBRyxG Uk9NU1lOLEFUVFJJQlMoQV9NQVBQSU5HLEFfQ09ORE1BUFBJTkcsQV9BUkNIVjIpLCBcCisJCSJD b25kaXRpb25hbCBNYXBwaW5nIGZyb20gIiBGUk9NU1lOICIgdG8gZWl0aGVyICIgVE9TWU5BICIg b3IgIiBUT1NZTkIsIFwKKwkJZkNPTkRfQVNNX01BUChGUk9NU1lOLENPTkQsVE9TWU5BLFRPU1lO QikpCisKKyNkZWZpbmUgREVGX1YzX01BUFBJTkcoVEFHLEZST01TWU4sVE9TWU4pIFwKKwlRNklO U04oVEFHLEZST01TWU4sQVRUUklCUyhBX01BUFBJTkcsQV9BUkNIVjMpLCBcCisJCSJNYXBwaW5n IGZyb20gIiBGUk9NU1lOICIgdG8gIiBUT1NZTiwgXAorCQlmQVNNX01BUChGUk9NU1lOLFRPU1lO KSkKKworI2RlZmluZSBERUZfVjNfQ09ORF9NQVBQSU5HKFRBRyxGUk9NU1lOLENPTkQsVE9TWU5B LFRPU1lOQikgXAorICAgICAgICBRNklOU04oVEFHLEZST01TWU4sQVRUUklCUyhBX01BUFBJTkcs QV9DT05ETUFQUElORyxBX0FSQ0hWMyksIFwKKwkJIkNvbmRpdGlvbmFsIE1hcHBpbmcgZnJvbSAi IEZST01TWU4gIiB0byBlaXRoZXIgIiBUT1NZTkEgIiBvciAiIFRPU1lOQiwgXAorCQlmQ09ORF9B U01fTUFQKEZST01TWU4sQ09ORCxUT1NZTkEsVE9TWU5CKSkKKworI2RlZmluZSBERUZfVjRfTUFQ UElORyhUQUcsRlJPTVNZTixUT1NZTikgXAorCVE2SU5TTihUQUcsRlJPTVNZTixBVFRSSUJTKEFf TUFQUElORyxBX0FSQ0hWNCksIFwKKwkJIk1hcHBpbmcgZnJvbSAiIEZST01TWU4gIiB0byAiIFRP U1lOLCBcCisJCWZBU01fTUFQKEZST01TWU4sVE9TWU4pKQorCisjZGVmaW5lIERFRl9WNF9DT05E X01BUFBJTkcoVEFHLEZST01TWU4sQ09ORCxUT1NZTkEsVE9TWU5CKSBcCisgICAgICAgIFE2SU5T TihUQUcsRlJPTVNZTixBVFRSSUJTKEFfTUFQUElORyxBX0NPTkRNQVBQSU5HLEFfQVJDSFY0KSwg XAorCQkiQ29uZGl0aW9uYWwgTWFwcGluZyBmcm9tICIgRlJPTVNZTiAiIHRvIGVpdGhlciAiIFRP U1lOQSAiIG9yICIgVE9TWU5CLCBcCisJCWZDT05EX0FTTV9NQVAoRlJPTVNZTixDT05ELFRPU1lO QSxUT1NZTkIpKQorCisjZGVmaW5lIERFRl9WNV9NQVBQSU5HKFRBRyxGUk9NU1lOLFRPU1lOKSBc CisJUTZJTlNOKFRBRyxGUk9NU1lOLEFUVFJJQlMoQV9NQVBQSU5HLEFfQVJDSFY1KSwgXAorCQki TWFwcGluZyBmcm9tICIgRlJPTVNZTiAiIHRvICIgVE9TWU4sIFwKKwkJZkFTTV9NQVAoRlJPTVNZ TixUT1NZTikpCisKKyNkZWZpbmUgREVGX1Y1X0NPTkRfTUFQUElORyhUQUcsRlJPTVNZTixDT05E LFRPU1lOQSxUT1NZTkIpIFwKKyAgICAgICAgUTZJTlNOKFRBRyxGUk9NU1lOLEFUVFJJQlMoQV9N QVBQSU5HLEFfQ09ORE1BUFBJTkcsQV9BUkNIVjUpLCBcCisJCSJDb25kaXRpb25hbCBNYXBwaW5n IGZyb20gIiBGUk9NU1lOICIgdG8gZWl0aGVyICIgVE9TWU5BICIgb3IgIiBUT1NZTkIsIFwKKwkJ ZkNPTkRfQVNNX01BUChGUk9NU1lOLENPTkQsVE9TWU5BLFRPU1lOQikpCisKKyNkZWZpbmUgREVG X1ZFQ1hfTUFQUElORyhUQUcsRlJPTVNZTixUT1NZTikgXAorCUVYVElOU04oVEFHLEZST01TWU4s QVRUUklCUyhBX01BUFBJTkcsQV9WRUNYKSwgXAorCQkiVkVDWCBNYXBwaW5nIGZyb20gIiBGUk9N U1lOICIgdG8gIiBUT1NZTiwgXAorCQlmQVNNX01BUChGUk9NU1lOLFRPU1lOKSkKKworI2RlZmlu ZSBERUZfQ1ZJX01BUFBJTkcoVEFHLEZST01TWU4sVE9TWU4pIFwKKwlRNklOU04oVEFHLEZST01T WU4sQVRUUklCUyhBX01BUFBJTkcsQV9DVkkpLCBcCisJCSJDVkkgTWFwcGluZyBmcm9tICIgRlJP TVNZTiAiIHRvICIgVE9TWU4sIFwKKwkJZkFTTV9NQVAoRlJPTVNZTixUT1NZTikpCisKKworI2lu Y2x1ZGUgImJyYW5jaC5pZGVmIgorI2luY2x1ZGUgImxkc3QuaWRlZiIKKyNpbmNsdWRlICJjb21w YXJlLmlkZWYiCisjaW5jbHVkZSAibXB5LmlkZWYiCisjaW5jbHVkZSAiYWx1LmlkZWYiCisjaW5j bHVkZSAiZmxvYXQuaWRlZiIKKyNpbmNsdWRlICJzaGlmdC5pZGVmIgorI2luY2x1ZGUgInN5c3Rl bS5pZGVmIgorI2luY2x1ZGUgInN1Ymluc25zLmlkZWYiCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4 YWdvbi9pbXBvcnRlZC9hbHUuaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsdS5pZGVm Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMjJhNjAKLS0tIC9kZXYvbnVs bAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbHUuaWRlZgpAQCAtMCwwICsxLDEzMzUg QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE5IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg KiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICogQUxVIEluc3RydWN0aW9ucworICovCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBBZGQv U3ViIGluc3RydWN0aW9ucwkJICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKEEyX2FkZCwiUmQzMj1hZGQoUnMzMixSdDMy KSIsQVRUUklCUygpLAorIkFkZCAzMi1iaXQgcmVnaXN0ZXJzIiwKK3sgUmRWPVJzVitSdFY7fSkK KworUTZJTlNOKEEyX3N1YiwiUmQzMj1zdWIoUnQzMixSczMyKSIsQVRUUklCUygpLAorIlN1YnRy YWN0IDMyLWJpdCByZWdpc3RlcnMiLAoreyBSZFY9UnRWLVJzVjt9KQorCisjZGVmaW5lIENPTkRf QUxVKFRBRyxPUEVSLERFU0NSLFNFTUFOVElDUylcCitRNklOU04oVEFHIyN0LCJpZiAoUHU0KSAi T1BFUixBVFRSSUJTKEFfQVJDSFYyKSxERVNDUix7aWYoZkxTQk9MRChQdVYpKXtTRU1BTlRJQ1M7 fSBlbHNlIHtDQU5DRUw7fX0pXAorUTZJTlNOKFRBRyMjZiwiaWYgKCFQdTQpICJPUEVSLEFUVFJJ QlMoQV9BUkNIVjIpLERFU0NSLHtpZihmTFNCT0xETk9UKFB1Vikpe1NFTUFOVElDUzt9IGVsc2Ug e0NBTkNFTDt9fSlcCitRNklOU04oVEFHIyN0bmV3LCJpZiAoUHU0Lm5ldykgIiBPUEVSLEFUVFJJ QlMoQV9BUkNIVjIpLERFU0NSLHtpZihmTFNCTkVXKFB1Tikpe1NFTUFOVElDUzt9IGVsc2Uge0NB TkNFTDt9fSlcCitRNklOU04oVEFHIyNmbmV3LCJpZiAoIVB1NC5uZXcpICJPUEVSLEFUVFJJQlMo QV9BUkNIVjIpLERFU0NSLHtpZihmTFNCTkVXTk9UKFB1Tikpe1NFTUFOVElDUzt9IGVsc2Uge0NB TkNFTDt9fSkKKworQ09ORF9BTFUoQTJfcGFkZCwiUmQzMj1hZGQoUnMzMixSdDMyKSIsIkNvbmRp dGlvbmFsbHkgQWRkIDMyLWJpdCByZWdpc3RlcnMiLFJkVj1Sc1YrUnRWKQorQ09ORF9BTFUoQTJf cHN1YiwiUmQzMj1zdWIoUnQzMixSczMyKSIsIkNvbmRpdGlvbmFsbHkgU3VidHJhY3QgMzItYml0 IHJlZ2lzdGVycyIsUmRWPVJ0Vi1Sc1YpCitDT05EX0FMVShBMl9wYWRkaSwiUmQzMj1hZGQoUnMz MiwjczgpIiwiQ29uZGl0aW9uYWxseSBBZGQgUmVnaXN0ZXIgYW5kIGltbWVkaWF0ZSIsZklNTUVY VChzaVYpOyBSZFY9UnNWK3NpVikKK0NPTkRfQUxVKEEyX3B4b3IsIlJkMzI9eG9yKFJzMzIsUnQz MikiLCJDb25kaXRpb25hbGx5IFhPUiByZWdpc3RlcnMiLFJkVj1Sc1ZeUnRWKTsKK0NPTkRfQUxV KEEyX3BhbmQsIlJkMzI9YW5kKFJzMzIsUnQzMikiLCJDb25kaXRpb25hbGx5IEFORCByZWdpc3Rl cnMiLFJkVj1Sc1YmUnRWKTsKK0NPTkRfQUxVKEEyX3BvciwiUmQzMj1vcihSczMyLFJ0MzIpIiwi Q29uZGl0aW9uYWxseSBPUiByZWdpc3RlcnMiLFJkVj1Sc1Z8UnRWKTsKKworQ09ORF9BTFUoQTRf cHN4dGIsIlJkMzI9c3h0YihSczMyKSIsIkNvbmRpdGlvbmFsbHkgc2lnbi1leHRlbmQgYnl0ZSIs IFJkVj1mU1hUTig4LDMyLFJzVikpOworQ09ORF9BTFUoQTRfcHp4dGIsIlJkMzI9enh0YihSczMy KSIsIkNvbmRpdGlvbmFsbHkgemVyby1leHRlbmQgYnl0ZSIsIFJkVj1mWlhUTig4LDMyLFJzVikp OworQ09ORF9BTFUoQTRfcHN4dGgsIlJkMzI9c3h0aChSczMyKSIsIkNvbmRpdGlvbmFsbHkgc2ln bi1leHRlbmQgaGFsZndvcmQiLCBSZFY9ZlNYVE4oMTYsMzIsUnNWKSk7CitDT05EX0FMVShBNF9w enh0aCwiUmQzMj16eHRoKFJzMzIpIiwiQ29uZGl0aW9uYWxseSB6ZXJvLWV4dGVuZCBoYWxmd29y ZCIsIFJkVj1mWlhUTigxNiwzMixSc1YpKTsKK0NPTkRfQUxVKEE0X3Bhc2xoLCJSZDMyPWFzbGgo UnMzMikiLCJDb25kaXRpb25hbGx5IHplcm8tZXh0ZW5kIGhhbGZ3b3JkIiwgUmRWPVJzVjw8MTYp OworQ09ORF9BTFUoQTRfcGFzcmgsIlJkMzI9YXNyaChSczMyKSIsIkNvbmRpdGlvbmFsbHkgemVy by1leHRlbmQgaGFsZndvcmQiLCBSZFY9UnNWPj4xNik7CisKKworREVGX1YyX01BUFBJTkcoQTJf dGZydCwgICAiaWYgKFB1NCkgUmQzMj1SczMyIiwiaWYgKFB1NCkgUmQzMj1hZGQoUnMzMiwjMCki KQorREVGX1YyX01BUFBJTkcoQTJfdGZyZiwgICAiaWYgKCFQdTQpIFJkMzI9UnMzMiIsImlmICgh UHU0KSBSZDMyPWFkZChSczMyLCMwKSIpCitERUZfVjJfTUFQUElORyhBMl90ZnJ0bmV3LCJpZiAo UHU0Lm5ldykgUmQzMj1SczMyIiwiaWYgKFB1NC5uZXcpIFJkMzI9YWRkKFJzMzIsIzApIikKK0RF Rl9WMl9NQVBQSU5HKEEyX3RmcmZuZXcsImlmICghUHU0Lm5ldykgUmQzMj1SczMyIiwiaWYgKCFQ dTQubmV3KSBSZDMyPWFkZChSczMyLCMwKSIpCisKKworREVGX1YyX01BUFBJTkcoQTJfdGZycHQs ICAgImlmIChQdTQpIFJkZDMyPVJzczMyIiwiaWYgKFB1NCkgUmRkMzI9Y29tYmluZShSc3MuSDMy LFJzcy5MMzIpIikKK0RFRl9WMl9NQVBQSU5HKEEyX3RmcnBmLCAgICJpZiAoIVB1NCkgUmRkMzI9 UnNzMzIiLCJpZiAoIVB1NCkgUmRkMzI9Y29tYmluZShSc3MuSDMyLFJzcy5MMzIpIikKK0RFRl9W Ml9NQVBQSU5HKEEyX3RmcnB0bmV3LCJpZiAoUHU0Lm5ldykgUmRkMzI9UnNzMzIiLCJpZiAoUHU0 Lm5ldykgUmRkMzI9Y29tYmluZShSc3MuSDMyLFJzcy5MMzIpIikKK0RFRl9WMl9NQVBQSU5HKEEy X3RmcnBmbmV3LCJpZiAoIVB1NC5uZXcpIFJkZDMyPVJzczMyIiwiaWYgKCFQdTQubmV3KSBSZGQz Mj1jb21iaW5lKFJzcy5IMzIsUnNzLkwzMikiKQorCisKK1E2SU5TTihBMl9hZGRzYXQsIlJkMzI9 YWRkKFJzMzIsUnQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIDMyLWJpdCByZWdpc3RlcnMgd2l0 aCBzYXR1cmF0aW9uIiwKK3sgUmRWPWZTQVQoZlNFMzJfNjQoUnNWKStmU0UzMl82NChSdFYpKTsg fSkKKworUTZJTlNOKEEyX3N1YnNhdCwiUmQzMj1zdWIoUnQzMixSczMyKTpzYXQiLEFUVFJJQlMo KSwKKyJTdWJ0cmFjdCAzMi1iaXQgcmVnaXN0ZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7IFJkVj1m U0FUKGZTRTMyXzY0KFJ0VikgLSBmU0UzMl82NChSc1YpKTsgfSkKKworCitRNklOU04oQTJfYWRk aSwiUmQzMj1hZGQoUnMzMiwjczE2KSIsQVRUUklCUygpLAorIkFkZCBhIHNpZ25lZCBpbW1lZGlh dGUgdG8gYSByZWdpc3RlciIsCit7IGZJTU1FWFQoc2lWKTsgUmRWPVJzVitzaVY7fSkKKworCitR NklOU04oQzRfYWRkaXBjLCJSZDMyPWFkZChwYywjdTYpIixBVFRSSUJTKCksCisiQWRkIGltbWVk aWF0ZSB0byBQQyIsCit7IFJkVj1mUkVBRF9QQygpK2ZJTU1FWFQodWlWKTt9KQorCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTaW5nbGUt cHJlY2lzaW9uIEhMIGZvcm1zCQkgICovCisvKiBUaGVzZSBpbnNucyBhbmQgdGhlIFNQIG1weSBh cmUgdGhlIG9uZXMgICAgKi8KKy8qIHRoYXQgY2FuIGRvIC5ITCBzdHVmZgkJICAgICAgKi8KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBT VERfSExfSU5TTihUQUcsT1BFUixBT1BFUixBVFIsU0VNKVwKK1E2SU5TTihBMl8jI1RBRyMjX2xs LCBPUEVSIihSdC5MMzIsUnMuTDMyKSJBT1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhBTEYoMCxS dFYpLGZHRVRIQUxGKDAsUnNWKSk7fSlcCitRNklOU04oQTJfIyNUQUcjI19saCwgT1BFUiIoUnQu TDMyLFJzLkgzMikiQU9QRVIsICAgIEFUUiwiIix7U0VNKGZHRVRIQUxGKDAsUnRWKSxmR0VUSEFM RigxLFJzVikpO30pXAorUTZJTlNOKEEyXyMjVEFHIyNfaGwsIE9QRVIiKFJ0LkgzMixScy5MMzIp IkFPUEVSLCAgICBBVFIsIiIse1NFTShmR0VUSEFMRigxLFJ0ViksZkdFVEhBTEYoMCxSc1YpKTt9 KVwKK1E2SU5TTihBMl8jI1RBRyMjX2hoLCBPUEVSIihSdC5IMzIsUnMuSDMyKSJBT1BFUiwgICAg QVRSLCIiLHtTRU0oZkdFVEhBTEYoMSxSdFYpLGZHRVRIQUxGKDEsUnNWKSk7fSkKKworI2RlZmlu ZSBTVUJTVERfSExfSU5TTihUQUcsT1BFUixBT1BFUixBVFIsU0VNKVwKK1E2SU5TTihBMl8jI1RB RyMjX2xsLCBPUEVSIihSdC5MMzIsUnMuTDMyKSJBT1BFUiwgICAgQVRSLCIiLHtTRU0oZkdFVEhB TEYoMCxSdFYpLGZHRVRIQUxGKDAsUnNWKSk7fSlcCitRNklOU04oQTJfIyNUQUcjI19obCwgT1BF UiIoUnQuTDMyLFJzLkgzMikiQU9QRVIsICAgIEFUUiwiIix7U0VNKGZHRVRIQUxGKDAsUnRWKSxm R0VUSEFMRigxLFJzVikpO30pCisKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEsQikg UmRWPWZTWFROKDE2LDMyLChBK0IpKQorU1VCU1REX0hMX0lOU04oYWRkaF9sMTYsIlJkMzI9YWRk IiwiIixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNFTShBLEIp IFJkVj1mU0FUSChBK0IpCitTVUJTVERfSExfSU5TTihhZGRoX2wxNl9zYXQsIlJkMzI9YWRkIiwi OnNhdCIsQVRUUklCUygpLEhMU0VNKQorCisjdW5kZWYgSExTRU0KKyNkZWZpbmUgSExTRU0oQSxC KSBSZFY9ZlNYVE4oMTYsMzIsKEEtQikpCitTVUJTVERfSExfSU5TTihzdWJoX2wxNiwiUmQzMj1z dWIiLCIiLEFUVFJJQlMoKSxITFNFTSkKKworI3VuZGVmIEhMU0VNCisjZGVmaW5lIEhMU0VNKEEs QikgUmRWPWZTQVRIKEEtQikKK1NVQlNURF9ITF9JTlNOKHN1YmhfbDE2X3NhdCwiUmQzMj1zdWIi LCI6c2F0IixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNFTShB LEIpIFJkVj0oQStCKTw8MTYKK1NURF9ITF9JTlNOKGFkZGhfaDE2LCJSZDMyPWFkZCIsIjo8PDE2 IixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNFTShBLEIpIFJk Vj0oZlNBVEgoQStCKSk8PDE2CitTVERfSExfSU5TTihhZGRoX2gxNl9zYXQsIlJkMzI9YWRkIiwi OnNhdDo8PDE2IixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNF TShBLEIpIFJkVj0oQS1CKTw8MTYKK1NURF9ITF9JTlNOKHN1YmhfaDE2LCJSZDMyPXN1YiIsIjo8 PDE2IixBVFRSSUJTKCksSExTRU0pCisKKyN1bmRlZiBITFNFTQorI2RlZmluZSBITFNFTShBLEIp IFJkVj0oZlNBVEgoQS1CKSk8PDE2CitTVERfSExfSU5TTihzdWJoX2gxNl9zYXQsIlJkMzI9c3Vi IiwiOnNhdDo8PDE2IixBVFRSSUJTKCksSExTRU0pCisKKworCisKK1E2SU5TTihBMl9hc2xoLCJS ZDMyPWFzbGgoUnMzMikiLEFUVFJJQlMoKSwKKyJBcml0aG1ldGljIFNoaWZ0IExlZnQgYnkgSGFs ZndvcmQiLHsgUmRWPVJzVjw8MTY7IH0pCisKK1E2SU5TTihBMl9hc3JoLCJSZDMyPWFzcmgoUnMz MikiLEFUVFJJQlMoKSwKKyJBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IEhhbGZ3b3JkIix7IFJk Vj1Sc1Y+PjE2OyB9KQorCisKKy8qIDY0LWJpdCB2ZXJzaW9ucyAqLworCitRNklOU04oQTJfYWRk cCwiUmRkMzI9YWRkKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkFkZCIsCit7IFJkZFY9UnNz VitSdHRWO30pCisKK1E2SU5TTihBMl9hZGRwc2F0LCJSZGQzMj1hZGQoUnNzMzIsUnR0MzIpOnNh dCIsQVRUUklCUyhBX0FSQ0hWMyksCisiQWRkIiwKK3sgZkFERFNBVDY0KFJkZFYsUnNzVixSdHRW KTt9KQorCitRNklOU04oQTJfYWRkc3BsLCJSZGQzMj1hZGQoUnNzMzIsUnR0MzIpOnJhdzpsbyIs QVRUUklCUyhBX0FSQ0hWMyksCisiQWRkIiwKK3sgUmRkVj1SdHRWK2ZTWFROKDMyLDY0LGZHRVRX T1JEKDAsUnNzVikpO30pCisKK1E2SU5TTihBMl9hZGRzcGgsIlJkZDMyPWFkZChSc3MzMixSdHQz Mik6cmF3OmhpIixBVFRSSUJTKEFfQVJDSFYzKSwKKyJBZGQiLAoreyBSZGRWPVJ0dFYrZlNYVE4o MzIsNjQsZkdFVFdPUkQoMSxSc3NWKSk7fSkKKworREVGX1YzX0NPTkRfTUFQUElORyhBMl9hZGRz cCwiUmRkMzI9YWRkKFJzMzIsUnR0MzIpIiwiUnMzMiAmIDEiLCJSZGQzMj1hZGQoUnNzMzIsUnR0 MzIpOnJhdzpoaSIsIlJkZDMyPWFkZChSc3MzMixSdHQzMik6cmF3OmxvIikKKworUTZJTlNOKEEy X3N1YnAsIlJkZDMyPXN1YihSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwKKyJTdWIiLAoreyBSZGRW PVJ0dFYtUnNzVjt9KQorCisvKiA2NC1iaXQgd2l0aCBjYXJyeSAqLworCitRNklOU04oQTRfYWRk cF9jLCJSZGQzMj1hZGQoUnNzMzIsUnR0MzIsUHg0KTpjYXJyeSIsQVRUUklCUyhBX1JFU1RSSUNU X0xBVEVQUkVELEFfTk9URV9MQVRFUFJFRCksIkFkZCB3aXRoIENhcnJ5IiwKK3sKKyAgZlBSRURV U0VfVElNSU5HKCk7CisgIFJkZFYgPSBSc3NWICsgUnR0ViArIGZMU0JPTEQoUHhWKTsKKyAgUHhW ID0gZjhCSVRTT0YoZkNBUlJZX0ZST01fQUREKFJzc1YsUnR0VixmTFNCT0xEKFB4VikpKTsKKyAg ZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUoUHhOKSkKK30pCisKK1E2SU5TTihBNF9zdWJwX2Ms IlJkZDMyPXN1YihSc3MzMixSdHQzMixQeDQpOmNhcnJ5IixBVFRSSUJTKEFfUkVTVFJJQ1RfTEFU RVBSRUQsQV9OT1RFX0xBVEVQUkVEKSwiU3ViIHdpdGggQ2FycnkiLAoreworICBmUFJFRFVTRV9U SU1JTkcoKTsKKyAgUmRkViA9IFJzc1YgKyB+UnR0ViArIGZMU0JPTEQoUHhWKTsKKyAgUHhWID0g ZjhCSVRTT0YoZkNBUlJZX0ZST01fQUREKFJzc1YsflJ0dFYsZkxTQk9MRChQeFYpKSk7CisgIGZI SURFKE1BUktfTEFURV9QUkVEX1dSSVRFKFB4TikpCit9KQorCisKKy8qIE5FRyBhbmQgQUJTICov CisKK0RFRl9NQVBQSU5HKEEyX25lZywiUmQzMj1uZWcoUnMzMikiLCJSZDMyPXN1YigjMCxSczMy KSIpCisKKworUTZJTlNOKEEyX25lZ3NhdCwiUmQzMj1uZWcoUnMzMik6c2F0IixBVFRSSUJTKCks CisiQXJpdGhtZXRpYyBuZWdhdGUgcmVnaXN0ZXIiLCB7IFJkViA9IGZTQVQoLWZDQVNUOHMoUnNW KSk7IH0pCisKK1E2SU5TTihBMl9hYnMsIlJkMzI9YWJzKFJzMzIpIixBVFRSSUJTKCksCisiQWJz b2x1dGUgVmFsdWUgcmVnaXN0ZXIiLCB7IFJkViA9IGZBQlMoUnNWKTsgfSkKKworUTZJTlNOKEEy X2Fic3NhdCwiUmQzMj1hYnMoUnMzMik6c2F0IixBVFRSSUJTKCksCisiQXJpdGhtZXRpYyBuZWdh dGUgcmVnaXN0ZXIiLCB7IFJkViA9IGZTQVQoZkFCUyhmQ0FTVDRfOHMoUnNWKSkpOyB9KQorCitR NklOU04oQTJfdmNvbmosIlJkZDMyPXZjb25qKFJzczMyKTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIp LAorIlZlY3RvciBDb21wbGV4IGNvbmp1Z2F0ZSBvZiBSc3MiLAoreyAgZlNFVEhBTEYoMSxSZGRW LGZTQVROKDE2LC1mR0VUSEFMRigxLFJzc1YpKSk7CisgICBmU0VUSEFMRigwLFJkZFYsZkdFVEhB TEYoMCxSc3NWKSk7CisgICBmU0VUSEFMRigzLFJkZFYsZlNBVE4oMTYsLWZHRVRIQUxGKDMsUnNz VikpKTsKKyAgIGZTRVRIQUxGKDIsUmRkVixmR0VUSEFMRigyLFJzc1YpKTsKK30pCisKKworLyog NjQtYml0IHZlcnNpb25zICovCisKK1E2SU5TTihBMl9uZWdwLCJSZGQzMj1uZWcoUnNzMzIpIixB VFRSSUJTKCksCisiQXJpdGhtZXRpYyBuZWdhdGUgcmVnaXN0ZXIiLCB7IFJkZFYgPSAtUnNzVjsg fSkKKworUTZJTlNOKEEyX2Fic3AsIlJkZDMyPWFicyhSc3MzMikiLEFUVFJJQlMoKSwKKyJBYnNv bHV0ZSBWYWx1ZSByZWdpc3RlciIsIHsgUmRkViA9IGZBQlMoUnNzVik7IH0pCisKKworLyogTUlO IGFuZCBNQVggIFIgKi8KKworUTZJTlNOKEEyX21heCwiUmQzMj1tYXgoUnMzMixSdDMyKSIsQVRU UklCUygpLAorIk1heGltdW0gb2YgdHdvIHJlZ2lzdGVycyIsCit7IFJkViA9IGZNQVgoUnNWLFJ0 Vik7IH0pCisKK1E2SU5TTihBMl9tYXh1LCJSZDMyPW1heHUoUnMzMixSdDMyKSIsQVRUUklCUyhB X0lOVFJJTlNJQ19SRVRVUk5TX1VOU0lHTkVEKSwKKyJNYXhpbXVtIG9mIHR3byByZWdpc3RlcnMg KHVuc2lnbmVkKSIsCit7IFJkViA9IGZNQVgoZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk7IH0p CisKK1E2SU5TTihBMl9taW4sIlJkMzI9bWluKFJ0MzIsUnMzMikiLEFUVFJJQlMoKSwKKyJNaW5p bXVtIG9mIHR3byByZWdpc3RlcnMiLAoreyBSZFYgPSBmTUlOKFJ0VixSc1YpOyB9KQorCitRNklO U04oQTJfbWludSwiUmQzMj1taW51KFJ0MzIsUnMzMikiLEFUVFJJQlMoQV9JTlRSSU5TSUNfUkVU VVJOU19VTlNJR05FRCksCisiTWluaW11bSBvZiB0d28gcmVnaXN0ZXJzICh1bnNpZ25lZCkiLAor eyBSZFYgPSBmTUlOKGZDQVNUNHUoUnRWKSxmQ0FTVDR1KFJzVikpOyB9KQorCisvKiBNSU4gYW5k IE1BWCBQYWlycyAqLworI2lmIDEKK1E2SU5TTihBMl9tYXhwLCJSZGQzMj1tYXgoUnNzMzIsUnR0 MzIpIixBVFRSSUJTKEFfQVJDSFYzKSwKKyJNYXhpbXVtIG9mIHR3byByZWdpc3RlciBwYWlycyIs Cit7IFJkZFYgPSBmTUFYKFJzc1YsUnR0Vik7IH0pCisKK1E2SU5TTihBMl9tYXh1cCwiUmRkMzI9 bWF4dShSc3MzMixSdHQzMikiLEFUVFJJQlMoQV9JTlRSSU5TSUNfUkVUVVJOU19VTlNJR05FRCxB X0FSQ0hWMyksCisiTWF4aW11bSBvZiB0d28gcmVnaXN0ZXIgcGFpcnMgKHVuc2lnbmVkKSIsCit7 IFJkZFYgPSBmTUFYKGZDQVNUOHUoUnNzViksZkNBU1Q4dShSdHRWKSk7IH0pCisKK1E2SU5TTihB Ml9taW5wLCJSZGQzMj1taW4oUnR0MzIsUnNzMzIpIixBVFRSSUJTKEFfQVJDSFYzKSwKKyJNaW5p bXVtIG9mIHR3byByZWdpc3RlciBwYWlycyIsCit7IFJkZFYgPSBmTUlOKFJ0dFYsUnNzVik7IH0p CisKK1E2SU5TTihBMl9taW51cCwiUmRkMzI9bWludShSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9J TlRSSU5TSUNfUkVUVVJOU19VTlNJR05FRCxBX0FSQ0hWMyksCisiTWluaW11bSBvZiB0d28gcmVn aXN0ZXIgcGFpcnMgKHVuc2lnbmVkKSIsCit7IFJkZFYgPSBmTUlOKGZDQVNUOHUoUnR0ViksZkNB U1Q4dShSc3NWKSk7IH0pCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBSZWdpc3RlciBhbmQgSW1tZWRpYXRlIFRyYW5zZmVycwkg ICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK K1E2SU5TTihBMl9ub3AsIm5vcCIsQVRUUklCUyhBX0lUX05PUCksCisiTm9wICgzMi1iaXQgZW5j b2RpbmcpIiwKKyBmSElERSggeyBmTk9QX0VYRUNVVEVEIH0gICkpCisKKworUTZJTlNOKEE0X2V4 dCwiaW1tZXh0KCN1MjY6NikiLEFUVFJJQlMoQV9JVF9FWFRFTkRFUiksCisiVGhpcyBpbnN0cnVj dGlvbiBjYXJyaWVzIHRoZSAyNiBtb3N0LXNpZ25pZmljYW50IGltbWVkaWF0ZSBiaXRzIGZvciB0 aGUgbmV4dCBpbnN0cnVjdGlvbiIsCit7IGZISURFKCk7IH0pCisKKworUTZJTlNOKEEyX3Rmciwi UmQzMj1SczMyIixBVFRSSUJTKCksCisidGZyIHJlZ2lzdGVyIix7IFJkVj1Sc1Y7fSkKKworUTZJ TlNOKEEyX3RmcnNpLCJSZDMyPSNzMTYiLEFUVFJJQlMoKSwKKyJ0cmFuc2ZlciBzaWduZWQgaW1t ZWRpYXRlIHRvIHJlZ2lzdGVyIix7IGZJTU1FWFQoc2lWKTsgUmRWPXNpVjt9KQorCitERUZfTUFQ UElORyhBMl90ZnJwLCJSZGQzMj1Sc3MzMiIsIlJkZDMyPWNvbWJpbmUoUnNzLkgzMixSc3MuTDMy KSIpCitERUZfVjJfQ09ORF9NQVBQSU5HKEEyX3RmcnBpLCJSZGQzMj0jczgiLCIjczg8MCIsIlJk ZDMyPWNvbWJpbmUoIy0xLCNzOCkiLCJSZGQzMj1jb21iaW5lKCMwLCNzOCkiKQorREVGX01BUFBJ TkcoQTJfenh0YiwiUmQzMj16eHRiKFJzMzIpIiwiUmQzMj1hbmQoUnMzMiwjMjU1KSIpCisKK1E2 SU5TTihBMl9zeHRiLCJSZDMyPXN4dGIoUnMzMikiLEFUVFJJQlMoKSwKKyJTaWduIGV4dGVuZCBi eXRlIiwge1JkViA9IGZTWFROKDgsMzIsUnNWKTt9KQorCitRNklOU04oQTJfenh0aCwiUmQzMj16 eHRoKFJzMzIpIixBVFRSSUJTKCksCisiWmVybyBleHRlbmQgaGFsZiIsIHtSZFYgPSBmWlhUTigx NiwzMixSc1YpO30pCisKK1E2SU5TTihBMl9zeHRoLCJSZDMyPXN4dGgoUnMzMikiLEFUVFJJQlMo KSwKKyJTaWduIGV4dGVuZCBoYWxmIiwge1JkViA9IGZTWFROKDE2LDMyLFJzVik7fSkKKworUTZJ TlNOKEEyX2NvbWJpbmV3LCJSZGQzMj1jb21iaW5lKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BT XzIpLAorIkNvbWJpbmUgdHdvIHdvcmRzIGludG8gYSByZWdpc3RlciBwYWlyIiwKK3sgZlNFVFdP UkQoMCxSZGRWLFJ0Vik7CisgIGZTRVRXT1JEKDEsUmRkVixSc1YpOworfSkKKworUTZJTlNOKEE0 X2NvbWJpbmVyaSwiUmRkMzI9Y29tYmluZShSczMyLCNzOCkiLEFUVFJJQlMoQV9ST1BTXzIpLAor IkNvbWJpbmUgYSB3b3JkIGFuZCBhbiBpbW1lZGlhdGUgaW50byBhIHJlZ2lzdGVyIHBhaXIiLAor eyBmSU1NRVhUKHNpVik7IGZTRVRXT1JEKDAsUmRkVixzaVYpOworICBmU0VUV09SRCgxLFJkZFYs UnNWKTsKK30pCisKK1E2SU5TTihBNF9jb21iaW5laXIsIlJkZDMyPWNvbWJpbmUoI3M4LFJzMzIp IixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21iaW5lIGEgd29yZCBhbmQgYW4gaW1tZWRpYXRlIGlu dG8gYSByZWdpc3RlciBwYWlyIiwKK3sgZklNTUVYVChzaVYpOyBmU0VUV09SRCgwLFJkZFYsUnNW KTsKKyAgZlNFVFdPUkQoMSxSZGRWLHNpVik7Cit9KQorCisKKworUTZJTlNOKEEyX2NvbWJpbmVp aSwiUmRkMzI9Y29tYmluZSgjczgsI1M4KSIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMiksCisi U2V0IHR3byBzbWFsbCBpbW1lZGlhdGVzIiwKK3sgZklNTUVYVChzaVYpOyBmU0VUV09SRCgwLFJk ZFYsU2lWKTsgZlNFVFdPUkQoMSxSZGRWLHNpVik7IH0pCisKK1E2SU5TTihBNF9jb21iaW5laWks IlJkZDMyPWNvbWJpbmUoI3M4LCNVNikiLEFUVFJJQlMoQV9ST1BTXzIpLCJTZXQgdHdvIHNtYWxs IGltbWVkaWF0ZXMiLAoreyBmSU1NRVhUKFVpVik7IGZTRVRXT1JEKDAsUmRkVixVaVYpOyBmU0VU V09SRCgxLFJkZFYsc2lWKTsgfSkKKworCitRNklOU04oQTJfY29tYmluZV9oaCwiUmQzMj1jb21i aW5lKFJ0LkgzMixScy5IMzIpIixBVFRSSUJTKCksCisiQ29tYmluZSB0d28gaGFsZnMgaW50byBh IHJlZ2lzdGVyIiwge1JkViA9IChmR0VUVUhBTEYoMSxSdFYpPDwxNikgfCBmR0VUVUhBTEYoMSxS c1YpO30pCisKK1E2SU5TTihBMl9jb21iaW5lX2hsLCJSZDMyPWNvbWJpbmUoUnQuSDMyLFJzLkwz MikiLEFUVFJJQlMoKSwKKyJDb21iaW5lIHR3byBoYWxmcyBpbnRvIGEgcmVnaXN0ZXIiLCB7UmRW ID0gKGZHRVRVSEFMRigxLFJ0Vik8PDE2KSB8IGZHRVRVSEFMRigwLFJzVik7fSkKKworUTZJTlNO KEEyX2NvbWJpbmVfbGgsIlJkMzI9Y29tYmluZShSdC5MMzIsUnMuSDMyKSIsQVRUUklCUygpLAor IkNvbWJpbmUgdHdvIGhhbGZzIGludG8gYSByZWdpc3RlciIsIHtSZFYgPSAoZkdFVFVIQUxGKDAs UnRWKTw8MTYpIHwgZkdFVFVIQUxGKDEsUnNWKTt9KQorCitRNklOU04oQTJfY29tYmluZV9sbCwi UmQzMj1jb21iaW5lKFJ0LkwzMixScy5MMzIpIixBVFRSSUJTKCksCisiQ29tYmluZSB0d28gaGFs ZnMgaW50byBhIHJlZ2lzdGVyIiwge1JkViA9IChmR0VUVUhBTEYoMCxSdFYpPDwxNikgfCBmR0VU VUhBTEYoMCxSc1YpO30pCisKK1E2SU5TTihBMl90ZnJpbCwiUnguTDMyPSN1MTYiLEFUVFJJQlMo KSwKKyJTZXQgbG93IDE2LWJpdHMsIGxlYXZlIHVwcGVyIDE2IHVuY2hhbmdlZCIseyBmU0VUSEFM RigwLFJ4Vix1aVYpO30pCisKK1E2SU5TTihBMl90ZnJpaCwiUnguSDMyPSN1MTYiLEFUVFJJQlMo KSwKKyJTZXQgaGlnaCAxNi1iaXRzLCBsZWF2ZSBsb3cgMTYgdW5jaGFuZ2VkIix7IGZTRVRIQUxG KDEsUnhWLHVpVik7fSkKKworUTZJTlNOKEEyX3RmcmNyciwiUmQzMj1DczMyIixBVFRSSUJTKCks CisidHJhbnNmZXIgY29udHJvbCByZWdpc3RlciB0byBnZW5lcmFsIHJlZ2lzdGVyIix7IFJkVj1D c1Y7fSkKKworUTZJTlNOKEEyX3RmcnJjciwiQ2QzMj1SczMyIixBVFRSSUJTKCksCisidHJhbnNm ZXIgZ2VuZXJhbCByZWdpc3RlciB0byBjb250cm9sIHJlZ2lzdGVyIix7IENkVj1Sc1Y7fSkKKwor UTZJTlNOKEE0X3RmcmNwcCwiUmRkMzI9Q3NzMzIiLEFUVFJJQlMoKSwKKyJ0cmFuc2ZlciBjb250 cm9sIHJlZ2lzdGVyIHRvIGdlbmVyYWwgcmVnaXN0ZXIiLHsgUmRkVj1Dc3NWO30pCisKK1E2SU5T TihBNF90ZnJwY3AsIkNkZDMyPVJzczMyIixBVFRSSUJTKCksCisidHJhbnNmZXIgZ2VuZXJhbCBy ZWdpc3RlciB0byBjb250cm9sIHJlZ2lzdGVyIix7IENkZFY9UnNzVjt9KQorCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogTG9naWNhbHMJCQkJ ICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor CitRNklOU04oQTJfYW5kLCJSZDMyPWFuZChSczMyLFJ0MzIpIixBVFRSSUJTKCksCisibG9naWNh bCBBTkQiLHsgUmRWPVJzViZSdFY7fSkKKworUTZJTlNOKEEyX29yLCJSZDMyPW9yKFJzMzIsUnQz MikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIE9SIix7IFJkVj1Sc1Z8UnRWO30pCisKK1E2SU5TTihB Ml94b3IsIlJkMzI9eG9yKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIFhPUiIseyBS ZFY9UnNWXlJ0Vjt9KQorCitERUZfTUFQUElORyhBMl9ub3QsIlJkMzI9bm90KFJzMzIpIiwiUmQz Mj1zdWIoIy0xLFJzMzIpIikKKworUTZJTlNOKE0yX3hvcl94YWNjLCJSeDMyXj14b3IoUnMzMixS dDMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisibG9naWNhbCBYT1Igd2l0aCBYT1IgYWNjdW11bGF0 aW9uIix7IFJ4Vl49UnNWXlJ0Vjt9KQorCitRNklOU04oTTRfeG9yX3hhY2MsIlJ4eDMyXj14b3Io UnNzMzIsUnR0MzIpIiwsCisibG9naWNhbCBYT1Igd2l0aCBYT1IgYWNjdW11bGF0aW9uIix7IFJ4 eFZePVJzc1ZeUnR0Vjt9KQorCisKKworUTZJTlNOKEE0X2FuZG4sIlJkMzI9YW5kKFJ0MzIsflJz MzIpIiwsCisiQW5kLU5vdCIsIHsgUmRWID0gKFJ0ViAmIH5Sc1YpOyB9KQorCitRNklOU04oQTRf b3JuLCJSZDMyPW9yKFJ0MzIsflJzMzIpIiwsCisiT3ItTm90IiwgeyBSZFYgPSAoUnRWIHwgflJz Vik7IH0pCisKKworUTZJTlNOKEE0X2FuZG5wLCJSZGQzMj1hbmQoUnR0MzIsflJzczMyKSIsLAor IkFuZC1Ob3QiLCB7IFJkZFYgPSAoUnR0ViAmIH5Sc3NWKTsgfSkKKworUTZJTlNOKEE0X29ybnAs IlJkZDMyPW9yKFJ0dDMyLH5Sc3MzMikiLCwKKyJPci1Ob3QiLCB7IFJkZFYgPSAoUnR0ViB8IH5S c3NWKTsgfSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqLworLyogQ29tcG91bmQgYWRk LWFkZCAqLworLyoqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oUzRfYWRkYWRkaSwiUmQz Mj1hZGQoUnMzMixhZGQoUnUzMiwjczYpKSIsQVRUUklCUyhBX1JPUFNfMiksCisJIjMtaW5wdXQg YWRkIiwKKwl7IFJkViA9IFJzViArIFJ1ViArIGZJTU1FWFQoc2lWKTsgfSkKKworCitRNklOU04o UzRfc3ViYWRkaSwiUmQzMj1hZGQoUnMzMixzdWIoI3M2LFJ1MzIpKSIsQVRUUklCUyhBX1JPUFNf MiksCisJIjMtaW5wdXQgc3ViIiwKKwl7IFJkViA9IFJzViAtIFJ1ViArIGZJTU1FWFQoc2lWKTsg fSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQ29tcG91bmQgbG9n aWNhbC1sb2dpY2FsICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNO KE00X2FuZF9hbmQsIlJ4MzImPWFuZChSczMyLFJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJD b21wb3VuZCBBbmQtQW5kIiwgeyBSeFYgJj0gKFJzViAmIFJ0Vik7IH0pCisKK1E2SU5TTihNNF9h bmRfYW5kbiwiUngzMiY9YW5kKFJzMzIsflJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21w b3VuZCBBbmQtQW5kbiIsIHsgUnhWICY9IChSc1YgJiB+UnRWKTsgfSkKKworUTZJTlNOKE00X2Fu ZF9vciwiUngzMiY9b3IoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQg QW5kLU9yIiwgeyBSeFYgJj0gKFJzViB8IFJ0Vik7IH0pCisKK1E2SU5TTihNNF9hbmRfeG9yLCJS eDMyJj14b3IoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgQW5kLXhv ciIsIHsgUnhWICY9IChSc1YgXiBSdFYpOyB9KQorCisKKworUTZJTlNOKE00X29yX2FuZCwiUngz Mnw9YW5kKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIE9yLUFuZCIs IHsgUnhWIHw9IChSc1YgJiBSdFYpOyB9KQorCitRNklOU04oTTRfb3JfYW5kbiwiUngzMnw9YW5k KFJzMzIsflJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3VuZCBPci1BbmROIiwgeyBS eFYgfD0gKFJzViAmIH5SdFYpOyB9KQorCitRNklOU04oTTRfb3Jfb3IsIlJ4MzJ8PW9yKFJzMzIs UnQzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIE9yLU9yIiwgeyBSeFYgfD0gKFJz ViB8IFJ0Vik7IH0pCisKK1E2SU5TTihNNF9vcl94b3IsIlJ4MzJ8PXhvcihSczMyLFJ0MzIpIixB VFRSSUJTKEFfUk9QU18yKSwKKyJDb21wb3VuZCBPci14b3IiLCB7IFJ4ViB8PSAoUnNWIF4gUnRW KTsgfSkKKworCitRNklOU04oUzRfb3JfYW5kaXgsIlJ4MzI9b3IoUnUzMixhbmQoUngzMiwjczEw KSkiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIE9yLUFuZCIsIHsgUnhWID0gUnVWIHwg KFJ4ViAmIGZJTU1FWFQoc2lWKSk7IH0pCisKK1E2SU5TTihTNF9vcl9hbmRpLCJSeDMyfD1hbmQo UnMzMiwjczEwKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgT3ItQW5kIiwgeyBSeFYg PSBSeFYgfCAoUnNWICYgZklNTUVYVChzaVYpKTsgfSkKKworUTZJTlNOKFM0X29yX29yaSwiUngz Mnw9b3IoUnMzMiwjczEwKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgT3ItQW5kIiwg eyBSeFYgPSBSeFYgfCAoUnNWIHwgZklNTUVYVChzaVYpKTsgfSkKKworCisKKworUTZJTlNOKE00 X3hvcl9hbmQsIlJ4MzJePWFuZChSczMyLFJ0MzIpIixBVFRSSUJTKEFfUk9QU18yKSwKKyJDb21w b3VuZCBYb3ItQW5kIiwgeyBSeFYgXj0gKFJzViAmIFJ0Vik7IH0pCisKK1E2SU5TTihNNF94b3Jf b3IsIlJ4MzJePW9yKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIpLAorIkNvbXBvdW5kIFhv ci1PciIsIHsgUnhWIF49IChSc1YgfCBSdFYpOyB9KQorCitRNklOU04oTTRfeG9yX2FuZG4sIlJ4 MzJePWFuZChSczMyLH5SdDMyKSIsQVRUUklCUyhBX1JPUFNfMiksCisiQ29tcG91bmQgWG9yLUFu ZCIsIHsgUnhWIF49IChSc1YgJiB+UnRWKTsgfSkKKworCisKKworCisKK1E2SU5TTihBMl9zdWJy aSwiUmQzMj1zdWIoI3MxMCxSczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiU3VidHJhY3QgcmVn aXN0ZXIgZnJvbSBpbW1lZGlhdGUiLHsgZklNTUVYVChzaVYpOyBSZFY9c2lWLVJzVjt9KQorCitR NklOU04oQTJfYW5kaXIsIlJkMzI9YW5kKFJzMzIsI3MxMCkiLEFUVFJJQlMoQV9BUkNIVjIpLAor ImxvZ2ljYWwgQU5EIHdpdGggaW1tZWRpYXRlIix7IGZJTU1FWFQoc2lWKTsgUmRWPVJzViZzaVY7 fSkKKworUTZJTlNOKEEyX29yaXIsIlJkMzI9b3IoUnMzMiwjczEwKSIsQVRUUklCUyhBX0FSQ0hW MiksCisibG9naWNhbCBPUiB3aXRoIGltbWVkaWF0ZSIseyBmSU1NRVhUKHNpVik7IFJkVj1Sc1Z8 c2lWO30pCisKKworCisKK1E2SU5TTihBMl9hbmRwLCJSZGQzMj1hbmQoUnNzMzIsUnR0MzIpIixB VFRSSUJTKCksCisibG9naWNhbCBBTkQgcGFpciIseyBSZGRWPVJzc1YmUnR0Vjt9KQorCitRNklO U04oQTJfb3JwLCJSZGQzMj1vcihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIE9S IHBhaXIiLHsgUmRkVj1Sc3NWfFJ0dFY7fSkKKworUTZJTlNOKEEyX3hvcnAsIlJkZDMyPXhvcihS c3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJsb2dpY2FsIGVYY2x1c2l2ZSBPUiBwYWlyIix7IFJk ZFY9UnNzVl5SdHRWO30pCisKK1E2SU5TTihBMl9ub3RwLCJSZGQzMj1ub3QoUnNzMzIpIixBVFRS SUJTKCksCisibG9naWNhbCBOT1QgcGFpciIseyBSZGRWPX5Sc3NWO30pCisKK1E2SU5TTihBMl9z eHR3LCJSZGQzMj1zeHR3KFJzMzIpIixBVFRSSUJTKCksCisiU2lnbiBleHRlbmQgMzItYml0IHdv cmQgdG8gNjQtYml0IHBhaXIiLAoreyBSZGRWID0gZkNBU1Q0XzhzKFJzVik7IH0pCisKK1E2SU5T TihBMl9zYXQsIlJkMzI9c2F0KFJzczMyKSIsQVRUUklCUygpLAorIlNhdHVyYXRlIHRvIDMyLWJp dCBTaWduZWQiLAoreyBSZFYgPSBmU0FUKFJzc1YpOyB9KQorCitRNklOU04oQTJfcm91bmRzYXQs IlJkMzI9cm91bmQoUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIlJvdW5kICYgU2F0dXJhdGUgdG8g MzItYml0IFNpZ25lZCIsCit7IGZISURFKHNpemU4c190IHRtcDspIGZBRERTQVQ2NCh0bXAsUnNz ViwweDA4MDAwMDAwMFVMTCk7IFJkViA9IGZHRVRXT1JEKDEsdG1wKTsgfSkKKworUTZJTlNOKEEy X3NhdGgsIlJkMzI9c2F0aChSczMyKSIsQVRUUklCUygpLAorIlNhdHVyYXRlIHRvIDE2LWJpdCBT aWduZWQiLAoreyBSZFYgPSBmU0FUSChSc1YpOyB9KQorCitRNklOU04oQTJfc2F0dWgsIlJkMzI9 c2F0dWgoUnMzMikiLEFUVFJJQlMoKSwKKyJTYXR1cmF0ZSB0byAxNi1iaXQgVW5zaWduZWQiLAor eyBSZFYgPSBmU0FUVUgoUnNWKTsgfSkKKworUTZJTlNOKEEyX3NhdHViLCJSZDMyPXNhdHViKFJz MzIpIixBVFRSSUJTKCksCisiU2F0dXJhdGUgdG8gOC1iaXQgVW5zaWduZWQiLAoreyBSZFYgPSBm U0FUVUIoUnNWKTsgfSkKKworUTZJTlNOKEEyX3NhdGIsIlJkMzI9c2F0YihSczMyKSIsQVRUUklC UyhBX0FSQ0hWMiksCisiU2F0dXJhdGUgdG8gOC1iaXQgU2lnbmVkIiwKK3sgUmRWID0gZlNBVEIo UnNWKTsgfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisvKiBWZWN0b3IgQWRkCQkJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihBMl92YWRkdWIsIlJkZDMyPXZhZGR1YihSc3Mz MixSdHQzMikiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9mIGJ5dGVzIiwKK3sKKwlmSElERShp bnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VUQllURShpLFJkZFYsKGZH RVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSk7CisJfQorfSkKK0RFRl9NQVBQSU5H KEEyX3ZhZGRiX21hcCwiUmRkMzI9dmFkZGIoUnNzMzIsUnR0MzIpIiwiUmRkMzI9dmFkZHViKFJz czMyLFJ0dDMyKSIpCisKK1E2SU5TTihBMl92YWRkdWJzLCJSZGQzMj12YWRkdWIoUnNzMzIsUnR0 MzIpOnNhdCIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgYnl0ZXMiLAoreworCWZISURFKGlu dCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkVixmU0FU VU4oOCxmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUoaSxSdHRWKSkpOworCX0KK30pCisKK1E2 SU5TTihBMl92YWRkaCwiUmRkMzI9dmFkZGgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQWRk IHZlY3RvciBvZiBoYWxmIGludGVnZXJzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7 aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZHRVRIQUxGKGksUnNzVikrZkdFVEhBTEYo aSxSdHRWKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhZGRocywiUmRkMzI9dmFkZGgoUnNzMzIs UnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkFkZCB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRo IHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJ ICBmU0VUSEFMRihpLFJkZFYsZlNBVE4oMTYsZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0 dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZhZGR1aHMsIlJkZDMyPXZhZGR1aChSc3MzMixS dHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiB1bnNpZ25lZCBoYWxmIGludGVn ZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtp KyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGksUnNzVikrZkdF VFVIQUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTVfdmFkZGh1YnMsIlJkMzI9dmFk ZGh1YihSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQWRkIHZlY3RvciBvZiBoYWxmIGlu dGVnZXJzIHdpdGggc2F0dXJhdGlvbiBhbmQgcGFjayB0byB1bnNpZ25lZCBieXRlcyIsCit7CisJ ZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkgIAkJZlNFVEJZVEUoaSxSZFYs ZlNBVFVCKGZHRVRIQUxGKGksUnNzVikrZkdFVEhBTEYoaSxSdHRWKSkpOworCX0KK30pCisKK1E2 SU5TTihBMl92YWRkdywiUmRkMzI9dmFkZHcoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQWRk IHZlY3RvciBvZiB3b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKysp IHsKKwkgIGZTRVRXT1JEKGksUmRkVixmR0VUV09SRChpLFJzc1YpK2ZHRVRXT1JEKGksUnR0Vikp OworCX0KK30pCisKK1E2SU5TTihBMl92YWRkd3MsIlJkZDMyPXZhZGR3KFJzczMyLFJ0dDMyKTpz YXQiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9mIHdvcmRzIHdpdGggc2F0dXJhdGlvbiIsCit7 CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRXT1JEKGksUmRk VixmU0FUTigzMixmR0VUV09SRChpLFJzc1YpK2ZHRVRXT1JEKGksUnR0VikpKTsKKwl9Cit9KQor CisKKworUTZJTlNOKFM0X3Z4YWRkc3VidywiUmRkMzI9dnhhZGRzdWJ3KFJzczMyLFJ0dDMyKTpz YXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3IgYWRkLXN1YiB3b3JkcyB3aXRoIHNhdHVyYXRp b24iLAoreworCWZTRVRXT1JEKDAsUmRkVixmU0FUKGZHRVRXT1JEKDAsUnNzVikrZkdFVFdPUkQo MSxSdHRWKSkpOworCWZTRVRXT1JEKDEsUmRkVixmU0FUKGZHRVRXT1JEKDEsUnNzViktZkdFVFdP UkQoMCxSdHRWKSkpOworfSkKK1E2SU5TTihTNF92eHN1YmFkZHcsIlJkZDMyPXZ4c3ViYWRkdyhS c3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksCisiQ3Jvc3MgdmVjdG9yIHN1Yi1hZGQgd29yZHMg d2l0aCBzYXR1cmF0aW9uIiwKK3sKKwlmU0VUV09SRCgwLFJkZFYsZlNBVChmR0VUV09SRCgwLFJz c1YpLWZHRVRXT1JEKDEsUnR0VikpKTsKKwlmU0VUV09SRCgxLFJkZFYsZlNBVChmR0VUV09SRCgx LFJzc1YpK2ZHRVRXT1JEKDAsUnR0VikpKTsKK30pCisKKworCitRNklOU04oUzRfdnhhZGRzdWJo LCJSZGQzMj12eGFkZHN1YmgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorIkNyb3NzIHZl Y3RvciBhZGQtc3ViIGhhbGZ3b3JkcyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZTRVRIQUxGKDAs UmRkVixmU0FUSChmR0VUSEFMRigwLFJzc1YpK2ZHRVRIQUxGKDEsUnR0VikpKTsKKwlmU0VUSEFM RigxLFJkZFYsZlNBVEgoZkdFVEhBTEYoMSxSc3NWKS1mR0VUSEFMRigwLFJ0dFYpKSk7CisKKwlm U0VUSEFMRigyLFJkZFYsZlNBVEgoZkdFVEhBTEYoMixSc3NWKStmR0VUSEFMRigzLFJ0dFYpKSk7 CisJZlNFVEhBTEYoMyxSZGRWLGZTQVRIKGZHRVRIQUxGKDMsUnNzViktZkdFVEhBTEYoMixSdHRW KSkpOworCit9KQorUTZJTlNOKFM0X3Z4c3ViYWRkaCwiUmRkMzI9dnhzdWJhZGRoKFJzczMyLFJ0 dDMyKTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3Igc3ViLWFkZCBoYWxmd29yZHMgd2l0 aCBzYXR1cmF0aW9uIiwKK3sKKwlmU0VUSEFMRigwLFJkZFYsZlNBVEgoZkdFVEhBTEYoMCxSc3NW KS1mR0VUSEFMRigxLFJ0dFYpKSk7CisJZlNFVEhBTEYoMSxSZGRWLGZTQVRIKGZHRVRIQUxGKDEs UnNzVikrZkdFVEhBTEYoMCxSdHRWKSkpOworCisJZlNFVEhBTEYoMixSZGRWLGZTQVRIKGZHRVRI QUxGKDIsUnNzViktZkdFVEhBTEYoMyxSdHRWKSkpOworCWZTRVRIQUxGKDMsUmRkVixmU0FUSChm R0VUSEFMRigzLFJzc1YpK2ZHRVRIQUxGKDIsUnR0VikpKTsKK30pCisKKworCisKK1E2SU5TTihT NF92eGFkZHN1YmhyLCJSZGQzMj12eGFkZHN1YmgoUnNzMzIsUnR0MzIpOnJuZDo+PjE6c2F0IixB VFRSSUJTKCksCisiQ3Jvc3MgdmVjdG9yIGFkZC1zdWIgaGFsZndvcmRzIHdpdGggc2hpZnQsIHJv dW5kLCBhbmQgc2F0dXJhdGlvbiIsCit7CisJZlNFVEhBTEYoMCxSZGRWLGZTQVRIKChmR0VUSEFM RigwLFJzc1YpK2ZHRVRIQUxGKDEsUnR0VikrMSk+PjEpKTsKKwlmU0VUSEFMRigxLFJkZFYsZlNB VEgoKGZHRVRIQUxGKDEsUnNzViktZkdFVEhBTEYoMCxSdHRWKSsxKT4+MSkpOworCisJZlNFVEhB TEYoMixSZGRWLGZTQVRIKChmR0VUSEFMRigyLFJzc1YpK2ZHRVRIQUxGKDMsUnR0VikrMSk+PjEp KTsKKwlmU0VUSEFMRigzLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDMsUnNzViktZkdFVEhBTEYoMixS dHRWKSsxKT4+MSkpOworCit9KQorUTZJTlNOKFM0X3Z4c3ViYWRkaHIsIlJkZDMyPXZ4c3ViYWRk aChSc3MzMixSdHQzMik6cm5kOj4+MTpzYXQiLEFUVFJJQlMoKSwKKyJDcm9zcyB2ZWN0b3Igc3Vi LWFkZCBoYWxmd29yZHMgd2l0aCBzaGlmdCwgcm91bmQsIGFuZCBzYXR1cmF0aW9uIiwKK3sKKwlm U0VUSEFMRigwLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDAsUnNzViktZkdFVEhBTEYoMSxSdHRWKSsx KT4+MSkpOworCWZTRVRIQUxGKDEsUmRkVixmU0FUSCgoZkdFVEhBTEYoMSxSc3NWKStmR0VUSEFM RigwLFJ0dFYpKzEpPj4xKSk7CisKKwlmU0VUSEFMRigyLFJkZFYsZlNBVEgoKGZHRVRIQUxGKDIs UnNzViktZkdFVEhBTEYoMyxSdHRWKSsxKT4+MSkpOworCWZTRVRIQUxGKDMsUmRkVixmU0FUSCgo ZkdFVEhBTEYoMyxSc3NWKStmR0VUSEFMRigyLFJ0dFYpKzEpPj4xKSk7Cit9KQorCisKKworCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogMS8y IFZlY3RvciBvcGVyYXRpb25zCQkgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisKKworUTZJTlNOKEEyX3N2YXZnaCwiUmQzMj12YXZnaChS czMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJBdmcgdmVjdG9yIG9mIGhhbGYgaW50ZWdl cnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFM RihpLFJkViwoKGZHRVRIQUxGKGksUnNWKStmR0VUSEFMRihpLFJ0VikpPj4xKSk7CisJfQorfSkK KworUTZJTlNOKEEyX3N2YXZnaHMsIlJkMzI9dmF2Z2goUnMzMixSdDMyKTpybmQiLEFUVFJJQlMo QV9BUkNIVjIpLAorIkF2ZyB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHJvdW5kaW5nIiwK K3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVEhBTEYoaSxS ZFYsKChmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKzEpPj4xKSk7CisJfQorfSkKKwor CisKK1E2SU5TTihBMl9zdm5hdmdoLCJSZDMyPXZuYXZnaChSdDMyLFJzMzIpIixBVFRSSUJTKEFf QVJDSFYyKSwKKyJBdmcgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBp OykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkViwoKGZHRVRIQUxGKGks UnRWKS1mR0VUSEFMRihpLFJzVikpPj4xKSk7CisJfQorfSkKKworCitRNklOU04oQTJfc3ZhZGRo LCJSZDMyPXZhZGRoKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJBZGQgdmVjdG9yIG9mIGhhbGYg aW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBm U0VUSEFMRihpLFJkVixmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKTsKKwl9Cit9KQor CitRNklOU04oQTJfc3ZhZGRocywiUmQzMj12YWRkaChSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygp LAorIkFkZCB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZI SURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkVixmU0FU TigxNixmR0VUSEFMRihpLFJzVikrZkdFVEhBTEYoaSxSdFYpKSk7CisJfQorfSkKKworUTZJTlNO KEEyX3N2YWRkdWhzLCJSZDMyPXZhZGR1aChSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLAorIkFk ZCB2ZWN0b3Igb2YgdW5zaWduZWQgaGFsZiBpbnRlZ2VycyB3aXRoIHNhdHVyYXRpb24iLAorewor CWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkVixm U0FUVU4oMTYsZkdFVFVIQUxGKGksUnNWKStmR0VUVUhBTEYoaSxSdFYpKSk7CisJfQorfSkKKwor CitRNklOU04oQTJfc3ZzdWJoLCJSZDMyPXZzdWJoKFJ0MzIsUnMzMikiLEFUVFJJQlMoKSwKKyJT dWIgdmVjdG9yIG9mIGhhbGYgaW50ZWdlcnMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9 MDtpPDI7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkVixmR0VUSEFMRihpLFJ0ViktZkdFVEhBTEYo aSxSc1YpKTsKKwl9Cit9KQorCitRNklOU04oQTJfc3ZzdWJocywiUmQzMj12c3ViaChSdDMyLFJz MzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHNh dHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBm U0VUSEFMRihpLFJkVixmU0FUTigxNixmR0VUSEFMRihpLFJ0ViktZkdFVEhBTEYoaSxSc1YpKSk7 CisJfQorfSkKKworUTZJTlNOKEEyX3N2c3VidWhzLCJSZDMyPXZzdWJ1aChSdDMyLFJzMzIpOnNh dCIsQVRUUklCUygpLAorIlN1YiB2ZWN0b3Igb2YgdW5zaWduZWQgaGFsZiBpbnRlZ2VycyB3aXRo IHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJ ICBmU0VUSEFMRihpLFJkVixmU0FUVU4oMTYsZkdFVFVIQUxGKGksUnRWKS1mR0VUVUhBTEYoaSxS c1YpKSk7CisJfQorfSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBWZWN0b3IgUmVkdWNlIEFkZAkJCSAgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oQTJfdnJhZGR1 YiwiUmRkMzI9dnJhZGR1YihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJTdW06IHR3byB2ZWN0 b3JzIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTspCisJUmRkViA9IDA7CisJ Zm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUV09SRCgwLFJkZFYsKGZHRVRXT1JEKDAsUmRkVikg KyAoZkdFVFVCWVRFKGksUnNzVikrZkdFVFVCWVRFKGksUnR0VikpKSk7CisJfQorCWZvciAoaT00 O2k8ODtpKyspIHsKKwkJZlNFVFdPUkQoMSxSZGRWLChmR0VUV09SRCgxLFJkZFYpICsgKGZHRVRV QllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92 cmFkZHViX2FjYywiUnh4MzIrPXZyYWRkdWIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiU3Vt OiB0d28gdmVjdG9ycyBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZv ciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVFdPUkQoMCxSeHhWLChmR0VUV09SRCgwLFJ4 eFYpICsgKGZHRVRVQllURShpLFJzc1YpK2ZHRVRVQllURShpLFJ0dFYpKSkpOworCX0KKwlmb3Ig KGkgPSA0OyBpIDwgODsgaSsrKSB7CisJCWZTRVRXT1JEKDEsUnh4ViwoZkdFVFdPUkQoMSxSeHhW KSArIChmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUoaSxSdHRWKSkpKTsKKwl9CisgICAgZkFD QygpO1wKK30pCisKKworCitRNklOU04oTTJfdnJhZGRoLCJSZDMyPXZyYWRkaChSc3MzMixSdHQz MikiLEFUVFJJQlMoQV9BUkNIVjMpLAorIlN1bTogdHdvIHZlY3RvcnMgb2YgaGFsdmVzIiwKK3sK KwlmSElERShpbnQgaTspCisJUmRWID0gMDsKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCVJkViAr PSAoZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0dFYpKTsKKwl9Cit9KQorCitRNklOU04o TTJfdnJhZGR1aCwiUmQzMj12cmFkZHVoKFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0FSQ0hWMyks CisiU3VtOiB0d28gdmVjdG9ycyBvZiB1bnNpZ25lZCBoYWx2ZXMiLAoreworCWZISURFKGludCBp OykKKwlSZFYgPSAwOworCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJUmRWICs9IChmR0VUVUhBTEYo aSxSc3NWKStmR0VUVUhBTEYoaSxSdHRWKSk7CisJfQorfSkKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWZWN0b3IgU3ViCQkJCSAqLworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihB Ml92c3VidWIsIlJkZDMyPXZzdWJ1YihSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwKKyJTdWIgdmVj dG9yIG9mIGJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkr KykgeworCQlmU0VUQllURShpLFJkZFYsKGZHRVRVQllURShpLFJ0dFYpLWZHRVRVQllURShpLFJz c1YpKSk7CisJfQorfSkKK0RFRl9NQVBQSU5HKEEyX3ZzdWJiX21hcCwiUmRkMzI9dnN1YmIoUnNz MzIsUnR0MzIpIiwiUmRkMzI9dnN1YnViKFJzczMyLFJ0dDMyKSIpCisKK1E2SU5TTihBMl92c3Vi dWJzLCJSZGQzMj12c3VidWIoUnR0MzIsUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2ZWN0 b3Igb2YgYnl0ZXMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsr KSB7CisJCWZTRVRCWVRFKGksUmRkVixmU0FUVU4oOCxmR0VUVUJZVEUoaSxSdHRWKS1mR0VUVUJZ VEUoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92c3ViaCwiUmRkMzI9dnN1YmgoUnR0 MzIsUnNzMzIpIixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRW LGZHRVRIQUxGKGksUnR0ViktZkdFVEhBTEYoaSxSc3NWKSk7CisJfQorfSkKKworUTZJTlNOKEEy X3ZzdWJocywiUmRkMzI9dnN1YmgoUnR0MzIsUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIlN1YiB2 ZWN0b3Igb2YgaGFsZiBpbnRlZ2VycyB3aXRoIHNhdHVyYXRpb24iLAoreworCWZISURFKGludCBp OykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsZlNBVE4oMTYsZkdF VEhBTEYoaSxSdHRWKS1mR0VUSEFMRihpLFJzc1YpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zz dWJ1aHMsIlJkZDMyPXZzdWJ1aChSdHQzMixSc3MzMik6c2F0IixBVFRSSUJTKCksCisiU3ViIHZl Y3RvciBvZiB1bnNpZ25lZCBoYWxmIGludGVnZXJzIHdpdGggc2F0dXJhdGlvbiIsCit7CisJZkhJ REUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkVixmU0FU VU4oMTYsZkdFVFVIQUxGKGksUnR0ViktZkdFVFVIQUxGKGksUnNzVikpKTsKKwl9Cit9KQorCitR NklOU04oQTJfdnN1YncsIlJkZDMyPXZzdWJ3KFJ0dDMyLFJzczMyKSIsQVRUUklCUygpLAorIlN1 YiB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsr KSB7CisJICBmU0VUV09SRChpLFJkZFYsZkdFVFdPUkQoaSxSdHRWKS1mR0VUV09SRChpLFJzc1Yp KTsKKwl9Cit9KQorCitRNklOU04oQTJfdnN1YndzLCJSZGQzMj12c3VidyhSdHQzMixSc3MzMik6 c2F0IixBVFRSSUJTKCksCisiU3ViIHZlY3RvciBvZiB3b3JkcyB3aXRoIHNhdHVyYXRpb24iLAor eworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJk ZFYsZlNBVE4oMzIsZkdFVFdPUkQoaSxSdHRWKS1mR0VUV09SRChpLFJzc1YpKSk7CisJfQorfSkK KworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiBWZWN0b3IgQWJzCQkJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKK1E2SU5TTihBMl92YWJzaCwiUmRkMzI9dmFic2goUnNzMzIpIixB VFRSSUJTKCksCisiTmVnYXRlIHZlY3RvciBvZiBoYWxmIGludGVnZXJzIiwKK3sKKwlmSElERShp bnQgaTspCisJZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZBQlMoZkdF VEhBTEYoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92YWJzaHNhdCwiUmRkMzI9dmFi c2goUnNzMzIpOnNhdCIsQVRUUklCUygpLAorIk5lZ2F0ZSB2ZWN0b3Igb2YgaGFsZiBpbnRlZ2Vy cyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxG KGksUmRkVixmU0FUSChmQUJTKGZHRVRIQUxGKGksUnNzVikpKSk7CisJfQorfSkKKworUTZJTlNO KEEyX3ZhYnN3LCJSZGQzMj12YWJzdyhSc3MzMikiLEFUVFJJQlMoKSwKKyJBYnNvbHV0ZSBWYWx1 ZSB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsr KSB7CisJICBmU0VUV09SRChpLFJkZFYsZkFCUyhmR0VUV09SRChpLFJzc1YpKSk7CisJfQorfSkK KworUTZJTlNOKEEyX3ZhYnN3c2F0LCJSZGQzMj12YWJzdyhSc3MzMik6c2F0IixBVFRSSUJTKCks CisiQWJzb2x1dGUgVmFsdWUgdmVjdG9yIG9mIHdvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJ Zm9yIChpPTA7aTwyO2krKykgeworCSAgZlNFVFdPUkQoaSxSZGRWLGZTQVQoZkFCUyhmR0VUV09S RChpLFJzc1YpKSkpOworCX0KK30pCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworLyogVmVjdG9yIFNBRAkJCQkgKi8KKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK1E2SU5TTihNMl92YWJzZGlmZncs IlJkZDMyPXZhYnNkaWZmdyhSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkFic29s dXRlIERpZmZlcmVuY2VzOiB2ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlm b3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJkZFYsZkFCUyhmR0VUV09SRChpLFJ0 dFYpIC0gZkdFVFdPUkQoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5TTihNMl92YWJzZGlmZmgs IlJkZDMyPXZhYnNkaWZmaChSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkFic29s dXRlIERpZmZlcmVuY2VzOiB2ZWN0b3Igb2YgaGFsZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTsp CisJZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLGZBQlMoZkdFVEhBTEYo aSxSdHRWKSAtIGZHRVRIQUxGKGksUnNzVikpKTsKKwl9Cit9KQorCitRNklOU04oTTZfdmFic2Rp ZmZiLCJSZGQzMj12YWJzZGlmZmIoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiQWJzb2x1dGUg RGlmZmVyZW5jZXM6IHZlY3RvciBvZiBoYWxmd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlm b3IgKGk9MDtpPDg7aSsrKSB7CisJICBmU0VUQllURShpLFJkZFYsZkFCUyhmR0VUQllURShpLFJ0 dFYpIC0gZkdFVEJZVEUoaSxSc3NWKSkpOworCX0KK30pCisKK1E2SU5TTihNNl92YWJzZGlmZnVi LCJSZGQzMj12YWJzZGlmZnViKFJ0dDMyLFJzczMyKSIsQVRUUklCUygpLAorIkFic29sdXRlIERp ZmZlcmVuY2VzOiB2ZWN0b3Igb2YgaGFsZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9y IChpPTA7aTw4O2krKykgeworCSAgZlNFVEJZVEUoaSxSZGRWLGZBQlMoZkdFVFVCWVRFKGksUnR0 VikgLSBmR0VUVUJZVEUoaSxSc3NWKSkpOworCX0KK30pCisKKworCitRNklOU04oQTJfdnJzYWR1 YiwiUmRkMzI9dnJzYWR1YihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJTdW0gb2YgQWJzb2x1 dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJREUoaW50 IGk7KQorCVJkZFYgPSAwOworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVFdPUkQo MCxSZGRWLChmR0VUV09SRCgwLFJkZFYpICsgZkFCUygoZkdFVFVCWVRFKGksUnNzVikgLSBmR0VU VUJZVEUoaSxSdHRWKSkpKSk7CisJfQorCWZvciAoaSA9IDQ7IGkgPCA4OyBpKyspIHsKKwkJZlNF VFdPUkQoMSxSZGRWLChmR0VUV09SRCgxLFJkZFYpICsgZkFCUygoZkdFVFVCWVRFKGksUnNzVikg LSBmR0VUVUJZVEUoaSxSdHRWKSkpKSk7CisJfQorfSkKKworUTZJTlNOKEEyX3Zyc2FkdWJfYWNj LCJSeHgzMis9dnJzYWR1YihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJTdW0gb2YgQWJzb2x1 dGUgRGlmZmVyZW5jZXM6IHZlY3RvciBvZiB1bnNpZ25lZCBieXRlcyIsCit7CisJZkhJREUoaW50 IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVFdPUkQoMCxSeHhWLChmR0VU V09SRCgwLFJ4eFYpICsgZkFCUygoZkdFVFVCWVRFKGksUnNzVikgLSBmR0VUVUJZVEUoaSxSdHRW KSkpKSk7CisJfQorCWZvciAoaSA9IDQ7IGkgPCA4OyBpKyspIHsKKwkJZlNFVFdPUkQoMSxSeHhW LChmR0VUV09SRCgxLFJ4eFYpICsgZkFCUygoZkdFVFVCWVRFKGksUnNzVikgLSBmR0VUVUJZVEUo aSxSdHRWKSkpKSk7CisJfQorICAgIGZBQ0MoKTtcCit9KQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVmVjdG9yIEF2ZXJhZ2UJCQkgICAg ICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwor UTZJTlNOKEEyX3Zhdmd1YiwiUmRkMzI9dmF2Z3ViKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAor IkF2ZXJhZ2UgdmVjdG9yIG9mIHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTspCisJ Zm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VUQllURShpLFJkZFYsKChmR0VUVUJZVEUo aSxSc3NWKSArIGZHRVRVQllURShpLFJ0dFYpKT4+MSkpOworCX0KK30pCisKK1E2SU5TTihBMl92 YXZndWgsIlJkZDMyPXZhdmd1aChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZl Y3RvciBvZiB1bnNpZ25lZCBoYWxmd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9 MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkViwoZkdFVFVIQUxGKGksUnNzVikrZkdFVFVI QUxGKGksUnR0VikpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2Z2gsIlJkZDMyPXZhdmdo KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9yIG9mIGhhbGZ3b3JkcyIs Cit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxS ZGRWLChmR0VUSEFMRihpLFJzc1YpK2ZHRVRIQUxGKGksUnR0VikpPj4xKTsKKwl9Cit9KQorCitR NklOU04oQTJfdm5hdmdoLCJSZGQzMj12bmF2Z2goUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisi TmVnYXRpdmUgQXZlcmFnZSB2ZWN0b3Igb2YgaGFsZndvcmRzIiwKK3sKKwlmSElERShpbnQgaTsp CisJZm9yIChpPTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsKGZHRVRIQUxGKGksUnR0 ViktZkdFVEhBTEYoaSxSc3NWKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZndywiUmRk MzI9dmF2Z3coUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2Ygd29y ZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJCWZTRVRXT1JE KGksUmRkViwoZlNYVE4oMzIsMzMsZkdFVFdPUkQoaSxSc3NWKSkrZlNYVE4oMzIsMzMsZkdFVFdP UkQoaSxSdHRWKSkpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdm5hdmd3LCJSZGQzMj12bmF2 Z3coUnR0MzIsUnNzMzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJBdmVyYWdlIHZlY3RvciBvZiB3 b3JkcyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJZlNFVFdP UkQoaSxSZGRWLChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJ0dFYpKS1mU1hUTigzMiwzMyxmR0VU V09SRChpLFJzc1YpKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZnd3IsIlJkZDMyPXZh dmd3KFJzczMyLFJ0dDMyKTpybmQiLEFUVFJJQlMoKSwKKyJBdmVyYWdlIHZlY3RvciBvZiB3b3Jk cyIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaT0wO2k8MjtpKyspIHsKKwkJZlNFVFdPUkQo aSxSZGRWLChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJzc1YpKStmU1hUTigzMiwzMyxmR0VUV09S RChpLFJ0dFYpKSsxKT4+MSk7CisJfQorfSkKKworUTZJTlNOKEEyX3ZuYXZnd3IsIlJkZDMyPXZu YXZndyhSdHQzMixSc3MzMik6cm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksCisiQXZlcmFnZSB2 ZWN0b3Igb2Ygd29yZHMiLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7 CisJCWZTRVRXT1JEKGksUmRkVixmU0FUKChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJ0dFYpKS1m U1hUTigzMiwzMyxmR0VUV09SRChpLFJzc1YpKSsxKT4+MSkpOworCX0KK30pCisKK1E2SU5TTihB Ml92YXZnd2NyLCJSZGQzMj12YXZndyhSc3MzMixSdHQzMik6Y3JuZCIsQVRUUklCUyhBX0FSQ0hW MiksCisiQXZlcmFnZSB2ZWN0b3Igb2Ygd29yZHMgd2l0aCBjb252ZXJnZW50IHJvdW5kaW5nIiwK K3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCQlmU0VUV09SRChpLFJk ZFYsKGZDUk5EKGZTWFROKDMyLDMzLGZHRVRXT1JEKGksUnNzVikpK2ZTWFROKDMyLDMzLGZHRVRX T1JEKGksUnR0VikpKT4+MSkpOworCX0KK30pCisKK1E2SU5TTihBMl92bmF2Z3djciwiUmRkMzI9 dm5hdmd3KFJ0dDMyLFJzczMyKTpjcm5kOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksCisiQXZlcmFn ZSBuZWdhdGl2ZSB2ZWN0b3Igb2Ygd29yZHMgd2l0aCBjb252ZXJnZW50IHJvdW5kaW5nIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCQlmU0VUV09SRChpLFJkZFYs ZlNBVChmQ1JORChmU1hUTigzMiwzMyxmR0VUV09SRChpLFJ0dFYpKS1mU1hUTigzMiwzMyxmR0VU V09SRChpLFJzc1YpKSk+PjEpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2Z2hjciwiUmRkMzI9 dmF2Z2goUnNzMzIsUnR0MzIpOmNybmQiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkF2ZXJhZ2UgdmVj dG9yIG9mIGhhbGZ3b3JkcyB3aXRoIGNvbnYgcm91bmRpbmciLAoreworCWZISURFKGludCBpOykK Kwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkVixmQ1JORChmR0VUSEFMRihp LFJzc1YpK2ZHRVRIQUxGKGksUnR0VikpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdm5hdmdo Y3IsIlJkZDMyPXZuYXZnaChSdHQzMixSc3MzMik6Y3JuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIp LAorIkF2ZXJhZ2UgbmVnYXRpdmUgdmVjdG9yIG9mIGhhbGZ3b3JkcyB3aXRoIGNvbnYgcm91bmRp bmciLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCWZTRVRIQUxG KGksUmRkVixmU0FUSChmQ1JORChmR0VUSEFMRihpLFJ0dFYpLWZHRVRIQUxGKGksUnNzVikpPj4x KSk7CisJfQorfSkKKworCitRNklOU04oQTJfdmF2Z3V3LCJSZGQzMj12YXZndXcoUnNzMzIsUnR0 MzIpIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2YgdW5zaWduZWQgd29yZHMiLAorewor CWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDI7aSsrKSB7CisJCWZTRVRXT1JEKGksUmRkViwo ZlpYVE4oMzIsMzMsZkdFVFVXT1JEKGksUnNzVikpK2ZaWFROKDMyLDMzLGZHRVRVV09SRChpLFJ0 dFYpKSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZndXdyLCJSZGQzMj12YXZndXcoUnNz MzIsUnR0MzIpOnJuZCIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9yIG9mIHVuc2lnbmVkIHdv cmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpPTA7aTwyO2krKykgeworCQlmU0VUV09S RChpLFJkZFYsKGZaWFROKDMyLDMzLGZHRVRVV09SRChpLFJzc1YpKStmWlhUTigzMiwzMyxmR0VU VVdPUkQoaSxSdHRWKSkrMSk+PjEpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZndWJyLCJSZGQz Mj12YXZndWIoUnNzMzIsUnR0MzIpOnJuZCIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9yIG9m IHVuc2lnbmVkIGJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7 IGkrKykgeworCQlmU0VUQllURShpLFJkZFYsKChmR0VUVUJZVEUoaSxSc3NWKStmR0VUVUJZVEUo aSxSdHRWKSsxKT4+MSkpOworCX0KK30pCisKK1E2SU5TTihBMl92YXZndWhyLCJSZGQzMj12YXZn dWgoUnNzMzIsUnR0MzIpOnJuZCIsQVRUUklCUygpLAorIkF2ZXJhZ2UgdmVjdG9yIG9mIHVuc2ln bmVkIGhhbGZ3b3JkcyB3aXRoIHJvdW5kaW5nIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChp PTA7aTw0O2krKykgeworCQlmU0VUSEFMRihpLFJkZFYsKGZHRVRVSEFMRihpLFJzc1YpK2ZHRVRV SEFMRihpLFJ0dFYpKzEpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmF2Z2hyLCJSZGQzMj12 YXZnaChSc3MzMixSdHQzMik6cm5kIixBVFRSSUJTKCksCisiQXZlcmFnZSB2ZWN0b3Igb2YgaGFs ZndvcmRzIHdpdGggcm91bmRpbmciLAoreworCWZISURFKGludCBpOykKKwlmb3IgKGk9MDtpPDQ7 aSsrKSB7CisJCWZTRVRIQUxGKGksUmRkViwoZkdFVEhBTEYoaSxSc3NWKStmR0VUSEFMRihpLFJ0 dFYpKzEpPj4xKTsKKwl9Cit9KQorCitRNklOU04oQTJfdm5hdmdociwiUmRkMzI9dm5hdmdoKFJ0 dDMyLFJzczMyKTpybmQ6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwKKyJOZWdhdGl2ZSBBdmVyYWdl IHZlY3RvciBvZiBoYWxmd29yZHMgd2l0aCByb3VuZGluZyIsCit7CisJZkhJREUoaW50IGk7KQor CWZvciAoaT0wO2k8NDtpKyspIHsKKwkJZlNFVEhBTEYoaSxSZGRWLGZTQVRIKChmR0VUSEFMRihp LFJ0dFYpLWZHRVRIQUxGKGksUnNzVikrMSk+PjEpKTsKKwl9Cit9KQorCisKKy8qIFJvdW5kaW5n IEluc3RydWN0aW9uICovCisKK1E2SU5TTihBNF9yb3VuZF9yaSwiUmQzMj1yb3VuZChSczMyLCN1 NSkiLEFUVFJJQlMoKSwiUm91bmQiLCB7UmRWID0gZlJORE4oUnNWLHVpVik+PnVpVjsgfSkKK1E2 SU5TTihBNF9yb3VuZF9yciwiUmQzMj1yb3VuZChSczMyLFJ0MzIpIixBVFRSSUJTKCksIlJvdW5k Iiwge1JkViA9IGZSTkROKFJzVixmWlhUTig1LDMyLFJ0VikpPj5mWlhUTig1LDMyLFJ0Vik7IH0p CitRNklOU04oQTRfcm91bmRfcmlfc2F0LCJSZDMyPXJvdW5kKFJzMzIsI3U1KTpzYXQiLEFUVFJJ QlMoKSwiUm91bmQiLCB7UmRWID0gKGZTQVQoZlJORE4oUnNWLHVpVikpKT4+dWlWOyB9KQorUTZJ TlNOKEE0X3JvdW5kX3JyX3NhdCwiUmQzMj1yb3VuZChSczMyLFJ0MzIpOnNhdCIsQVRUUklCUygp LCJSb3VuZCIsIHtSZFYgPSAoZlNBVChmUk5ETihSc1YsZlpYVE4oNSwzMixSdFYpKSkpPj5mWlhU Tig1LDMyLFJ0Vik7IH0pCisKKworUTZJTlNOKEE0X2Nyb3VuZF9yaSwiUmQzMj1jcm91bmQoUnMz MiwjdTUpIixBVFRSSUJTKCksIkNvbnZlcmdlbnQgUm91bmQiLCB7UmRWID0gZkNSTkROKFJzVix1 aVYpOyB9KQorUTZJTlNOKEE0X2Nyb3VuZF9yciwiUmQzMj1jcm91bmQoUnMzMixSdDMyKSIsQVRU UklCUygpLCJDb252ZXJnZW50IFJvdW5kIiwge1JkViA9IGZDUk5ETihSc1YsZlpYVE4oNSwzMixS dFYpKTsgfSkKKworCisjZGVmaW5lIENST1VORChEU1QsU1JDLFNISUZUKSBcCisJZkhJREUoc2l6 ZTE2c190IHJuZGJpdF8xMjg7KVwKKwlmSElERShzaXplMTZzX3QgdG1wMTI4OylcCisJZkhJREUo c2l6ZTE2c190IHNyY18xMjg7KVwKKwlpZiAoU0hJRlQgPT0gMCkgeyBcCisJCURTVCA9IFNSQztc CisJfSBlbHNlIGlmICgoU1JDICYgKHNpemU4c190KSgoMUxMIDw8IChTSElGVCAtIDEpKSAtIDFM TCkpID09IDApIHsgXAorCQlzcmNfMTI4ID0gZkNBU1Q4U18xNlMoU1JDKTtcCisJCXJuZGJpdF8x MjggPSBmQ0FTVDhTXzE2UygxTEwpO1wKKwkJcm5kYml0XzEyOCA9IGZTSElGVEwxMjgocm5kYml0 XzEyOCwgU0hJRlQpO1wKKwkJcm5kYml0XzEyOCA9IGZBTkQxMjgocm5kYml0XzEyOCwgc3JjXzEy OCk7XAorCQlybmRiaXRfMTI4ID0gZlNISUZUUjEyOChybmRiaXRfMTI4LCAxKTtcCisJCXRtcDEy OCA9IGZBREQxMjgoc3JjXzEyOCwgcm5kYml0XzEyOCk7XAorCQl0bXAxMjggPSBmU0hJRlRSMTI4 KHRtcDEyOCwgU0hJRlQpO1wKKwkJRFNUID0gIGZDQVNUMTZTXzhTKHRtcDEyOCk7XAorCX0gZWxz ZSB7XAorCQlzaXplMTZzX3Qgcm5kYml0XzEyOCA9ICBmQ0FTVDhTXzE2UygoMUxMIDw8IChTSElG VCAtIDEpKSk7IFwKKwkJc2l6ZTE2c190IHNyY18xMjggPSAgZkNBU1Q4U18xNlMoU1JDKTsgXAor CQlzaXplMTZzX3QgdG1wMTI4ID0gZkFERDEyOChzcmNfMTI4LCBybmRiaXRfMTI4KTtcCisJCXRt cDEyOCA9IGZTSElGVFIxMjgodG1wMTI4LCBTSElGVCk7XAorCQlEU1QgPSAgZkNBU1QxNlNfOFMo dG1wMTI4KTtcCisJfQorCitRNklOU04oQTdfY3JvdW5kZF9yaSwiUmRkMzI9Y3JvdW5kKFJzczMy LCN1NikiLEFUVFJJQlMoKSwiQ29udmVyZ2VudCBSb3VuZCIsCit7CitDUk9VTkQoUmRkVixSc3NW LHVpVik7CitmRVhURU5TSU9OX0FVRElPKCk7fSkKKworUTZJTlNOKEE3X2Nyb3VuZGRfcnIsIlJk ZDMyPWNyb3VuZChSc3MzMixSdDMyKSIsQVRUUklCUygpLCJDb252ZXJnZW50IFJvdW5kIiwKK3sK K0NST1VORChSZGRWLFJzc1YsZlpYVE4oNiwzMixSdFYpKTsKK2ZFWFRFTlNJT05fQVVESU8oKTt9 KQorCisKKworCisKKworCisKKworUTZJTlNOKEE3X2NsaXAsIlJkMzI9Y2xpcChSczMyLCN1NSki LEFUVFJJQlMoKSwiQ2xpcCB0byAgI3M1IiwgCXsgICBmQ0xJUChSZFYsUnNWLHVpVik7IGZFWFRF TlNJT05fQVVESU8oKTt9KQorUTZJTlNOKEE3X3ZjbGlwLCJSZGQzMj12Y2xpcChSc3MzMiwjdTUp IixBVFRSSUJTKCksIkNsaXAgdG8gICNzNSIsCit7CitmSElERShzaXplNHNfdCB0bXA7KQorZkNM SVAodG1wLCBmR0VUV09SRCgwLCBSc3NWKSwgdWlWKTsKK2ZTRVRXT1JEKDAsIFJkZFYsIHRtcCk7 CitmQ0xJUCh0bXAsZkdFVFdPUkQoMSwgUnNzViksIHVpVik7CitmU0VUV09SRCgxLCBSZGRWLCB0 bXApOworZkVYVEVOU0lPTl9BVURJTygpOworfQorKQorCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBWNDogQ3Jvc3MgVmVjdG9yIE1pbi9N YXgJCSAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKworCisjZGVmaW5lIFZSTUlOT1JNQVgoVEFHLFNUUixPUCxTSE9SVFRZUEUsU0VUVFlQRSxH RVRUWVBFLE5FTCxTSElGVCkgXAorUTZJTlNOKEE0X3ZyIyNUQUcjI1NIT1JUVFlQRSwiUnh4MzI9 dnIiI1RBRyNTSE9SVFRZUEUiKFJzczMyLFJ1MzIpIixBVFRSSUJTKCksIFwKKyJDaG9vc2UgIiBT VFIgIiBlbGVtZW50cyBvZiBhIHZlY3RvciIsIFwKK3sgXAorCWZISURFKGludCBpOyBzaXplOHNf dCBUQUc7IHNpemU0c190IGFkZHI7KSBcCisJVEFHID0gZkdFVCMjR0VUVFlQRSgwLFJ4eFYpOyBc CisJYWRkciA9IGZHRVRXT1JEKDEsUnh4Vik7IFwKKwlmb3IgKGkgPSAwOyBpIDwgTkVMOyBpKysp IHsgXAorCQlpZiAoVEFHIE9QIGZHRVQjI0dFVFRZUEUoaSxSc3NWKSkgeyBcCisJCQlUQUcgPSBm R0VUIyNHRVRUWVBFKGksUnNzVik7IFwKKwkJCWFkZHIgPSBSdVYgfCBpPDxTSElGVDsgXAorCQl9 IFwKKwl9IFwKKwlmU0VUV09SRCgwLFJ4eFYsVEFHKTsgXAorCWZTRVRXT1JEKDEsUnh4VixhZGRy KTsgXAorfSkKKworI2RlZmluZSBSTUlOTUFYKFNIT1JUVFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVM LFNISUZUKSBcCitWUk1JTk9STUFYKG1pbiwibWluaW11bSIsPixTSE9SVFRZUEUsU0VUVFlQRSxH RVRUWVBFLE5FTCxTSElGVCkgXAorVlJNSU5PUk1BWChtYXgsIm1heGltdW0iLDwsU0hPUlRUWVBF LFNFVFRZUEUsR0VUVFlQRSxORUwsU0hJRlQpCisKKworUk1JTk1BWChoLEhBTEYsSEFMRiw0LDEp CitSTUlOTUFYKHVoLEhBTEYsVUhBTEYsNCwxKQorUk1JTk1BWCh3LFdPUkQsV09SRCwyLDIpCitS TUlOTUFYKHV3LFdPUkQsVVdPUkQsMiwyKQorCisjdW5kZWYgUk1JTk1BWAorI3VuZGVmIFZSTUlO T1JNQVgKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiBWZWN0b3IgTWluL01heAkJCSAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFZNSU5PUk1BWChUQUcsU1RSLEZVTkMs U0hPUlRUWVBFLFNFVFRZUEUsR0VUVFlQRSxORUwpIFwKK1E2SU5TTihBMl92IyNUQUcjI1NIT1JU VFlQRSwiUmRkMzI9diIjVEFHI1NIT1JUVFlQRSIoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksIFwK KyJDaG9vc2UgIiBTVFIgIiBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyIsIFwKK3sgXAorCWZISURF KGludCBpOykgXAorCWZvciAoaSA9IDA7IGkgPCBORUw7IGkrKykgeyBcCisJCWZTRVQjI1NFVFRZ UEUoaSxSZGRWLEZVTkMoZkdFVCMjR0VUVFlQRShpLFJ0dFYpLGZHRVQjI0dFVFRZUEUoaSxSc3NW KSkpOyBcCisJfSBcCit9KQorCisjZGVmaW5lIFZNSU5PUk1BWDMoVEFHLFNUUixGVU5DLFNIT1JU VFlQRSxTRVRUWVBFLEdFVFRZUEUsTkVMKSBcCitRNklOU04oQTZfdiMjVEFHIyNTSE9SVFRZUEUj IzMsIlJ4eDMyPXYiI1RBRyNTSE9SVFRZUEUiMyhSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwgXAor IkNob29zZSAiIFNUUiAiIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzIiwgXAoreyBcCisJZkhJREUo aW50IGk7KSBcCisJZm9yIChpID0gMDsgaSA8IE5FTDsgaSsrKSB7IFwKKwkJZlNFVCMjU0VUVFlQ RShpLFJ4eFYsRlVOQyhmR0VUIyNHRVRUWVBFKGksUnh4ViksRlVOQyhmR0VUIyNHRVRUWVBFKGks UnR0ViksZkdFVCMjR0VUVFlQRShpLFJzc1YpKSkpOyBcCisJfSBcCit9KQorCisjZGVmaW5lIE1J Tk1BWChTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkgXAorVk1JTk9STUFYKG1pbiwibWlu aW11bSIsZk1JTixTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkgXAorVk1JTk9STUFYKG1h eCwibWF4aW11bSIsZk1BWCxTSE9SVFRZUEUsU0VUVFlQRSxHRVRUWVBFLE5FTCkKKworTUlOTUFY KGIsQllURSxCWVRFLDgpCitNSU5NQVgodWIsQllURSxVQllURSw4KQorTUlOTUFYKGgsSEFMRixI QUxGLDQpCitNSU5NQVgodWgsSEFMRixVSEFMRiw0KQorTUlOTUFYKHcsV09SRCxXT1JELDIpCitN SU5NQVgodXcsV09SRCxVV09SRCwyKQorCisjdW5kZWYgTUlOTUFYCisjdW5kZWYgVk1JTk9STUFY CisjdW5kZWYgVk1JTk9STUFYMworCisKK1E2SU5TTihBNV9BQ1MsIlJ4eDMyLFBlND12YWNzaChS c3MzMixSdHQzMikiLEFUVFJJQlMoQV9OT1RFX0xBVEVQUkVELEFfUkVTVFJJQ1RfTEFURVBSRUQp LAorIkFkZCBDb21wYXJlIGFuZCBTZWxlY3QgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMsIHJlY29y ZCB0aGUgbWF4aW11bXMgYW5kIHRoZSBkZWNpc2lvbnMgIiwKK3sKKyAgICAgICAgZkhJREUoaW50 IGk7KQorICAgICAgICBmSElERShpbnQgeHY7KQorICAgICAgICBmSElERShpbnQgc3Y7KQorICAg ICAgICBmSElERShpbnQgdHY7KQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cisg ICAgICAgICAgICAgICAgeHYgPSAoaW50KSBmR0VUSEFMRihpLFJ4eFYpOworICAgICAgICAgICAg ICAgIHN2ID0gKGludCkgZkdFVEhBTEYoaSxSc3NWKTsKKyAgICAgICAgICAgICAgICB0diA9IChp bnQpIGZHRVRIQUxGKGksUnR0Vik7CisgICAgICAgICAgICAgICAgeHYgPSB4diArIHR2OyAgICAg ICAgICAgLy9hc3N1bWVzIDE3Yml0IGRhdGFwYXRoCisgICAgICAgICAgICAgICAgc3YgPSBzdiAt IHR2OyAgICAgICAgICAgLy9hc3N1bWVzIDE3Yml0IGRhdGFwYXRoCisgICAgICAgICAgICAgICAg ZlNFVEJJVChpKjIsICBQZVYsICAoeHYgPiBzdikpOworICAgICAgICAgICAgICAgIGZTRVRCSVQo aSoyKzEsUGVWLCAgKHh2ID4gc3YpKTsKKwkJZlNFVEhBTEYoaSwgICBSeHhWLCBmU0FUSChmTUFY KHh2LHN2KSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oQTZfdm1pbnViX1JkUCwiUmRkMzIs UGU0PXZtaW51YihSdHQzMixSc3MzMikiLEFUVFJJQlMoQV9OT1RFX0xBVEVQUkVELEFfUkVTVFJJ Q1RfTEFURVBSRUQpLAorIlZlY3RvciBtaW5pbXVtIG9mIGJ5dGVzLCByZWNvcmRzIG1pbmltdW0g YW5kIGRlY2lzaW9uIHZlY3RvciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQkJZlNFVEJJVChpLCBQZVYsICAgICAoZkdFVFVC WVRFKGksUnR0VikgPiBmR0VUVUJZVEUoaSxSc3NWKSkpOworCQkJZlNFVEJZVEUoaSxSZGRWLGZN SU4oZkdFVFVCWVRFKGksUnR0ViksZkdFVFVCWVRFKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkK KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBW ZWN0b3IgTWluL01heAkJCSAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworCisKK1E2SU5TTihBNF9tb2R3cmFwdSwiUmQzMj1tb2R3cmFwKFJz MzIsUnQzMikiLEFUVFJJQlMoKSwKKyJXcmFwIHRvIGFuIHVuc2lnbmVkIG1vZHVsbyBidWZmZXIi LAoreworCWlmIChSc1YgPCAwKSB7CisJICAgIFJkViA9IFJzViArIGZDQVNUNHUoUnRWKTsKKwl9 IGVsc2UgaWYgKGZDQVNUNHUoUnNWKSA+PSBmQ0FTVDR1KFJ0VikpIHsKKwkgICAgUmRWID0gUnNW IC0gZkNBU1Q0dShSdFYpOworCX0gZWxzZSB7CisgCSAJCSBSZFYgPSBSc1Y7CisgICAgfQorfSkK KwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYnJhbmNoLmlkZWYgYi90YXJn ZXQvaGV4YWdvbi9pbXBvcnRlZC9icmFuY2guaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xNDJjMWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1w b3J0ZWQvYnJhbmNoLmlkZWYKQEAgLTAsMCArMSwzNDQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChj KSAyMDE5IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBKdW1w IGluc3RydWN0aW9ucwkJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI2RlZmluZSBBX0NPRlNURCBBX1JFU1RSSUNUX0xPT1BfTEEsQV9SRVNU UklDVF9DT0ZfTUFYMQorI2RlZmluZSBBX0pESVIgQV9KVU1QLEFfRElSRUNULEFfQ09GU1RELEFf QlJBTkNIQURERVIKKyNkZWZpbmUgQV9DSk5FV0RJUiBBX0pVTVAsQV9ESVJFQ1QsQV9DSlVNUCxB X0NPRlNURCxBX0JSQU5DSEFEREVSLEFfRE9UTkVXLEFfUk9QU18yCisjZGVmaW5lIEFfQ0pPTERE SVIgQV9KVU1QLEFfRElSRUNULEFfQ0pVTVAsQV9DT0ZTVEQsQV9CUkFOQ0hBRERFUixBX0RPVE9M RAorI2RlZmluZSBBX05FV1ZBTFVFSiBBX0pVTVAsQV9ESVJFQ1QsQV9DSlVNUCxBX0NPRlNURCxB X0JSQU5DSEFEREVSLEFfUkVTVFJJQ1RfQ09GX01BWDEsQV9ET1RORVdWQUxVRSxBX01FTUxJS0Vf UEFDS0VUX1JVTEVTLEFfUkVTVFJJQ1RfU0lOR0xFX01FTV9GSVJTVCxBX1JPUFNfMgorI2RlZmlu ZSBBX0pJTkRJUiBBX0pVTVAsQV9JTkRJUkVDVCxBX0NPRlNURAorI2RlZmluZSBBX0pJTkRJUk5F VyBBX0pVTVAsQV9JTkRJUkVDVCxBX0NPRlNURCxBX0NKVU1QLEFfRE9UTkVXCisjZGVmaW5lIEFf SklORElST0xEIEFfSlVNUCxBX0lORElSRUNULEFfQ09GU1RELEFfQ0pVTVAsQV9ET1RPTEQKKwor I2RlZmluZSBBX1JFTEFYX0NPTkQgQV9SRVNUUklDVF9DT0ZfTUFYMSxBX1JFTEFYX0NPRl8yTkQs QV9SRUxBWF9DT0ZfMVNUCisjZGVmaW5lIEFfUkVMQVhfVU5DIEFfUkVTVFJJQ1RfQ09GX01BWDEs QV9SRUxBWF9DT0ZfMk5ECisKK1E2SU5TTihKMl9qdW1wLCJqdW1wICNyMjI6MiIsQVRUUklCUyhB X0pESVIsQV9SRUxBWF9VTkMpLCAiZGlyZWN0IHVuY29uZGl0aW9uYWwganVtcCIsCit7ZklNTUVY VChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pV TVApO30pCisKK1E2SU5TTihKMl9qdW1wciwianVtcHIgUnMzMiIsQVRUUklCUyhBX0pJTkRJUiks ICJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGp1bXAiLAore2ZKVU1QUihSc04sUnNWLENPRl9UWVBF X0pVTVBSKTt9KQorCisjZGVmaW5lIE9MRENPTkRfSlVNUChUQUcsT1BFUixPUEVSMixBVFRSSUIs REVTQ1IsU0VNQU5USUNTKSBcCitRNklOU04oVEFHIyN0LCJpZiAoUHU0KSAiT1BFUiI6bnQgIk9Q RVIyLEFUVFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRChQdVYpLCxT UEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRChQdVYpKSB7IFNFTUFOVElDUzsg fX0pIFwKK1E2SU5TTihUQUcjI2YsImlmICghUHU0KSAiT1BFUiI6bnQgIk9QRVIyLEFUVFJJQixE RVNDUix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRE5PVChQdVYpLCxTUEVDVUxBVEVf Tk9UX1RBS0VOLDEyLDApOyBpZiAoZkxTQk9MRE5PVChQdVYpKSB7IFNFTUFOVElDUzsgfX0pIFwK K1E2SU5TTihUQUcjI3RwdCwiaWYgKFB1NCkgIk9QRVIiOnQgIk9QRVIyLEFUVFJJQixERVNDUix7 ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRChQdVYpLCxTUEVDVUxBVEVfVEFLRU4sMTIs MCk7IGlmIChmTFNCT0xEKFB1VikpIHsgU0VNQU5USUNTOyB9fSkgXAorUTZJTlNOKFRBRyMjZnB0 LCJpZiAoIVB1NCkgIk9QRVIiOnQgIk9QRVIyLEFUVFJJQixERVNDUix7ZkJSQU5DSF9TUEVDVUxB VEVfU1RBTEwoZkxTQk9MRE5PVChQdVYpLCxTUEVDVUxBVEVfVEFLRU4sMTIsMCk7IGlmIChmTFNC T0xETk9UKFB1VikpIHsgU0VNQU5USUNTOyB9fSkgXAorREVGX01BUFBJTkcoVEFHIyN0X25vcHJl ZF9tYXAsImlmIChQdTQpICJPUEVSIiAiT1BFUjIsImlmIChQdTQpICJPUEVSIjpudCAiT1BFUjIp IFwKK0RFRl9NQVBQSU5HKFRBRyMjZl9ub3ByZWRfbWFwLCJpZiAoIVB1NCkgIk9QRVIiICJPUEVS MiwiaWYgKCFQdTQpICJPUEVSIjpudCAiT1BFUjIpCisKK09MRENPTkRfSlVNUChKMl9qdW1wLCJq dW1wIiwiI3IxNToyIixBVFRSSUJTKEFfQ0pPTERESVIsQV9OT1RFX0NPTkRJVElPTkFMLEFfUkVM QVhfQ09ORCxBX1BSRURfQklUXzEyKSwiZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAiLAorZklNTUVY VChyaVYpO2ZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVN UCk7KQorCitPTERDT05EX0pVTVAoSjJfanVtcHIsImp1bXByIiwiUnMzMiIsQVRUUklCUyhBX0pJ TkRJUk9MRCxBX05PVEVfQ09ORElUSU9OQUwsQV9QUkVEX0JJVF8xMiksImluZGlyZWN0IGNvbmRp dGlvbmFsIGp1bXAiLAorZkpVTVBSKFJzTixSc1YsQ09GX1RZUEVfSlVNUFIpOykKKworI2RlZmlu ZSBORVdDT05EX0pVTVAoVEFHLE9QRVIsT1BFUjIsQVRUUklCLERFU0NSLFNFTUFOVElDUylcCitR NklOU04oVEFHIyN0bmV3LCJpZiAoUHU0Lm5ldykgIk9QRVIiOm50ICJPUEVSMixBVFRSSUIsREVT Q1Ise2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcoUHVOKSwsIFNQRUNVTEFURV9OT1Rf VEFLRU4gLCAxMiwwKX0ge2lmKGZMU0JORVcoUHVOKSl7U0VNQU5USUNTO319KVwKK1E2SU5TTihU QUcjI2ZuZXcsImlmICghUHU0Lm5ldykgIk9QRVIiOm50ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZC UkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVdOT1QoUHVOKSwsIFNQRUNVTEFURV9OT1RfVEFL RU4gLCAxMiwwKX0ge2lmKGZMU0JORVdOT1QoUHVOKSl7U0VNQU5USUNTO319KVwKK1E2SU5TTihU QUcjI3RuZXdwdCwiaWYgKFB1NC5uZXcpICJPUEVSIjp0ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZC UkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcoUHVOKSwsIFNQRUNVTEFURV9UQUtFTiAsIDEy LDApfSB7aWYoZkxTQk5FVyhQdU4pKXtTRU1BTlRJQ1M7fX0pXAorUTZJTlNOKFRBRyMjZm5ld3B0 LCJpZiAoIVB1NC5uZXcpICJPUEVSIjp0ICJPUEVSMixBVFRSSUIsREVTQ1Ise2ZCUkFOQ0hfU1BF Q1VMQVRFX1NUQUxMKGZMU0JORVdOT1QoUHVOKSwsIFNQRUNVTEFURV9UQUtFTiAsIDEyLDApfSB7 aWYoZkxTQk5FV05PVChQdU4pKXtTRU1BTlRJQ1M7fX0pCisKK05FV0NPTkRfSlVNUChKMl9qdW1w LCJqdW1wIiwiI3IxNToyIixBVFRSSUJTKEFfQ0pORVdESVIsQV9OT1RFX0NPTkRJVElPTkFMLEFf QVJDSFYyLEFfUkVMQVhfQ09ORCxBX1BSRURfQklUXzEyKSwiZGlyZWN0IGNvbmRpdGlvbmFsIGp1 bXAiLAorZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlW LENPRl9UWVBFX0pVTVBORVcpOykKKworTkVXQ09ORF9KVU1QKEoyX2p1bXByLCJqdW1wciIsIlJz MzIiLEFUVFJJQlMoQV9KSU5ESVJORVcsQV9OT1RFX0NPTkRJVElPTkFMLEFfQVJDSFYzLEFfUFJF RF9CSVRfMTIpLCJpbmRpcmVjdCBjb25kaXRpb25hbCBqdW1wIiwKK2ZKVU1QUihSc04sUnNWLENP Rl9UWVBFX0pVTVBSKTspCisKKworCitRNklOU04oSjRfaGludGp1bXByLCJoaW50anIoUnMzMiki LEFUVFJJQlMoQV9KSU5ESVIsQV9ISU5USlIpLCJoaW50IGluZGlyZWN0IGNvbmRpdGlvbmFsIGp1 bXAiLAore2ZISU5USlIoUnNWKTt9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBDb21wb3VuZCBDb21wYXJlLUp1bXBzCQkgICAgKi8KKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitRNklOU04oSjJf anVtcHJ6LCJpZiAoUnMzMiE9IzApIGp1bXA6bnQgI3IxMzoyIixBVFRSSUJTKEFfTk9URV9ERVBS RUNBVEVELEFfQ0pORVdESVIsQV9BUkNIVjMsQV9SRUxBWF9DT05ELEFfUFJFRF9CSVRfMTIpLCJk aXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciB0cnVlIiwKK3tmQlJBTkNIX1NQRUNV TEFURV9TVEFMTCgoUnNWIT0wKSwgLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApIGlmIChSc1Yg IT0gMCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQorCitRNklO U04oSjJfanVtcHJueiwiaWYgKFJzMzI9PSMwKSBqdW1wOm50ICNyMTM6MiIsQVRUUklCUyhBX05P VEVfREVQUkVDQVRFRCxBX0NKTkVXRElSLEFfQVJDSFYzLEFfUkVMQVhfQ09ORCxBX1BSRURfQklU XzEyKSwiZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgcmVnaXN0ZXIgZmFsc2UiLAore2ZCUkFO Q0hfU1BFQ1VMQVRFX1NUQUxMKChSc1Y9PTApLCAsIFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCkg aWYgKFJzViA9PSAwKSB7ZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSkK KworUTZJTlNOKEoyX2p1bXByenB0LCJpZiAoUnMzMiE9IzApIGp1bXA6dCAjcjEzOjIiLEFUVFJJ QlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxBX1JFTEFYX0NPTkQsQV9Q UkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVyIHRydWUiLAor e2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1YhPTApLCAsIFNQRUNVTEFURV9UQUtFTiwxMiww KSBpZiAoUnNWICE9IDApIHsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9 fSkKKworUTZJTlNOKEoyX2p1bXBybnpwdCwiaWYgKFJzMzI9PSMwKSBqdW1wOnQgI3IxMzoyIixB VFRSSUJTKEFfTk9URV9ERVBSRUNBVEVELEFfQ0pORVdESVIsQV9BUkNIVjMsQV9SRUxBWF9DT05E LEFfUFJFRF9CSVRfMTIpLCJkaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBmYWxz ZSIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoKFJzVj09MCksICwgU1BFQ1VMQVRFX1RBS0VO LDEyLDApIGlmIChSc1YgPT0gMCkge2ZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVN UCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcmd0ZXosImlmIChSczMyPj0jMCkganVtcDpudCAjcjEz OjIiLEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxBX1JFTEFY X0NPTkQsQV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVy IGdyZWF0ZXIgb3IgZXF1YWwgdG8gemVybyIsCit7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoKFJz Vj49MCksICwgU1BFQ1VMQVRFX05PVF9UQUtFTiwxMiwwKSBpZiAoUnNWPj0wKSB7IGZCUkFOQ0go ZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pCisKK1E2SU5TTihKMl9qdW1wcmd0ZXpw dCwiaWYgKFJzMzI+PSMwKSBqdW1wOnQgI3IxMzoyIixBVFRSSUJTKEFfTk9URV9ERVBSRUNBVEVE LEFfQ0pORVdESVIsQV9BUkNIVjMsQV9SRUxBWF9DT05ELEFfUFJFRF9CSVRfMTIpLCJkaXJlY3Qg Y29uZGl0aW9uYWwganVtcCBpZiByZWdpc3RlciBncmVhdGVyIG9yIGVxdWFsIHRvIHplcm8iLAor e2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKChSc1Y+PTApLCAsIFNQRUNVTEFURV9UQUtFTiwxMiww KSBpZiAoUnNWPj0wKSB7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0p CisKK1E2SU5TTihKMl9qdW1wcmx0ZXosImlmIChSczMyPD0jMCkganVtcDpudCAjcjEzOjIiLEFU VFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9DSk5FV0RJUixBX0FSQ0hWMyxBX1JFTEFYX0NPTkQs QV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25kaXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVyIGxlc3Mg dGhhbiBvciBlcXVhbCB0byB6ZXJvIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWPD0w KSwgLCBTUEVDVUxBVEVfTk9UX1RBS0VOLDEyLDApIGlmIChSc1Y8PTApIHsgZkJSQU5DSChmUkVB RF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSkKKworUTZJTlNOKEoyX2p1bXBybHRlenB0LCJp ZiAoUnMzMjw9IzApIGp1bXA6dCAjcjEzOjIiLEFUVFJJQlMoQV9OT1RFX0RFUFJFQ0FURUQsQV9D Sk5FV0RJUixBX0FSQ0hWMyxBX1JFTEFYX0NPTkQsQV9QUkVEX0JJVF8xMiksImRpcmVjdCBjb25k aXRpb25hbCBqdW1wIGlmIHJlZ2lzdGVyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvIiwKK3tm QlJBTkNIX1NQRUNVTEFURV9TVEFMTCgoUnNWPD0wKSwgLCBTUEVDVUxBVEVfVEFLRU4sMTIsMCkg aWYgKFJzVjw9MCkgeyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQor CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q IFY0IENvbXBvdW5kIENvbXBhcmUtSnVtcHMJCSAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiBWNCBjb21wb3VuZCBjb21wYXJlIGp1bXBz IChDSikgKi8KKyNkZWZpbmUgU1REX0NNUEpVTVAoVEFHLFRTVCxUU1RTRU0pXAorUTZJTlNOKEo0 XyMjVEFHIyNfdHAwX2p1bXBfbnQsICJwMD0iVFNUIjsgaWYgKHAwLm5ldykganVtcDpudCAjcjk6 MiIsIEFUVFJJQlMoQV9DSk5FV0RJUixBX1JFTEFYX0NPTkQsQV9ORVdDTVBKVU1QLEFfUFJFRF9C SVRfMTMpLCJjb21wb3VuZCBjb21wYXJlLWp1bXAiLCB7ZlBBUlQxKGZXUklURV9QMChmOEJJVFNP RihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcwLCxTUEVDVUxBVEVf Tk9UX1RBS0VOLDEzLDApICBpZiAoZkxTQk5FVzApIHtmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJp Vik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7fX0pXAorUTZJTlNOKEo0 XyMjVEFHIyNfZnAwX2p1bXBfbnQsICJwMD0iVFNUIjsgaWYgKCFwMC5uZXcpIGp1bXA6bnQgI3I5 OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05ELEFfTkVXQ01QSlVNUCxBX1BSRURf QklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIix7ZlBBUlQxKGZXUklURV9QMChmOEJJVFNP RihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JORVcwTk9ULCxTUEVDVUxB VEVfTk9UX1RBS0VOLDEzLDApIGlmIChmTFNCTkVXME5PVCkge2ZJTU1FWFQocmlWKTsgZlBDQUxJ R04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSlcCitRNklO U04oSjRfIyNUQUcjI190cDBfanVtcF90LCAgInAwPSJUU1QiOyBpZiAocDAubmV3KSBqdW1wOnQg I3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05ELEFfTkVXQ01QSlVNUCxBX1BS RURfQklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIiwgIHtmUEFSVDEoZldSSVRFX1AwKGY4 QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVzAsLFNQRUNV TEFURV9UQUtFTiwxMywwKSAgICAgIGlmIChmTFNCTkVXMCkge2ZJTU1FWFQocmlWKTsgZlBDQUxJ R04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9KVU1QKTt9fSlcCitRNklO U04oSjRfIyNUQUcjI19mcDBfanVtcF90LCAgInAwPSJUU1QiOyBpZiAoIXAwLm5ldykganVtcDp0 ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhfQ09ORCxBX05FV0NNUEpVTVAsQV9Q UkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIsIHtmUEFSVDEoZldSSVRFX1AwKGY4 QklUU09GKFRTVFNFTSkpKSAgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVzBOT1QsLFNQ RUNVTEFURV9UQUtFTiwxMywwKSAgICAgaWYgKGZMU0JORVcwTk9UKSB7ZklNTUVYVChyaVYpOyBm UENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KVwK K1E2SU5TTihKNF8jI1RBRyMjX3RwMV9qdW1wX250LCAicDE9IlRTVCI7IGlmIChwMS5uZXcpIGp1 bXA6bnQgI3I5OjIiLCBBVFRSSUJTKEFfQ0pORVdESVIsQV9SRUxBWF9DT05ELEFfTkVXQ01QSlVN UCxBX1BSRURfQklUXzEzKSwiY29tcG91bmQgY29tcGFyZS1qdW1wIiwge2ZQQVJUMShmV1JJVEVf UDEoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMSws U1BFQ1VMQVRFX05PVF9UQUtFTiwxMywwKSAgaWYgKGZMU0JORVcxKSB7ZklNTUVYVChyaVYpOyBm UENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KVwK K1E2SU5TTihKNF8jI1RBRyMjX2ZwMV9qdW1wX250LCAicDE9IlRTVCI7IGlmICghcDEubmV3KSBq dW1wOm50ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhfQ09ORCxBX05FV0NNUEpV TVAsQV9QUkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIse2ZQQVJUMShmV1JJVEVf UDEoZjhCSVRTT0YoVFNUU0VNKSkpICBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMU5P VCwsU1BFQ1VMQVRFX05PVF9UQUtFTiwxMywwKSBpZiAoZkxTQk5FVzFOT1QpIHtmSU1NRVhUKHJp Vik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7 fX0pXAorUTZJTlNOKEo0XyMjVEFHIyNfdHAxX2p1bXBfdCwgICJwMT0iVFNUIjsgaWYgKHAxLm5l dykganVtcDp0ICNyOToyIiwgQVRUUklCUyhBX0NKTkVXRElSLEFfUkVMQVhfQ09ORCxBX05FV0NN UEpVTVAsQV9QUkVEX0JJVF8xMyksImNvbXBvdW5kIGNvbXBhcmUtanVtcCIsICB7ZlBBUlQxKGZX UklURV9QMShmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JO RVcxLCxTUEVDVUxBVEVfVEFLRU4sMTMsMCkgICAgICBpZiAoZkxTQk5FVzEpIHtmSU1NRVhUKHJp Vik7IGZQQ0FMSUdOKHJpVik7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7 fX0pXAorUTZJTlNOKEo0XyMjVEFHIyNfZnAxX2p1bXBfdCwgICJwMT0iVFNUIjsgaWYgKCFwMS5u ZXcpIGp1bXA6dCAjcjk6MiIsIEFUVFJJQlMoQV9DSk5FV0RJUixBX1JFTEFYX0NPTkQsQV9ORVdD TVBKVU1QLEFfUFJFRF9CSVRfMTMpLCJjb21wb3VuZCBjb21wYXJlLWp1bXAiLCB7ZlBBUlQxKGZX UklURV9QMShmOEJJVFNPRihUU1RTRU0pKSkgIGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JO RVcxTk9ULCxTUEVDVUxBVEVfVEFLRU4sMTMsMCkgICAgIGlmIChmTFNCTkVXMU5PVCkge2ZJTU1F WFQocmlWKTsgZlBDQUxJR04ocmlWKTsgZkJSQU5DSChmUkVBRF9QQygpK3JpVixDT0ZfVFlQRV9K VU1QKTt9fSkKKworCitTVERfQ01QSlVNUChjbXBlcWksImNtcC5lcShSczE2LCNVNSkiLChSc1Y9 PVVpVikpCitTVERfQ01QSlVNUChjbXBndGksImNtcC5ndChSczE2LCNVNSkiLChSc1Y+VWlWKSkK K1NURF9DTVBKVU1QKGNtcGd0dWksImNtcC5ndHUoUnMxNiwjVTUpIiwoZkNBU1Q0dShSc1YpPlVp VikpCisKK1NURF9DTVBKVU1QKGNtcGVxbjEsImNtcC5lcShSczE2LCMtMSkiLChSc1Y9PS0xKSkK K1NURF9DTVBKVU1QKGNtcGd0bjEsImNtcC5ndChSczE2LCMtMSkiLChSc1Y+LTEpKQorU1REX0NN UEpVTVAodHN0Yml0MCwidHN0Yml0KFJzMTYsIzApIiwoUnNWICYgMSkpCisKK1NURF9DTVBKVU1Q KGNtcGVxLCJjbXAuZXEoUnMxNixSdDE2KSIsKFJzVj09UnRWKSkKK1NURF9DTVBKVU1QKGNtcGd0 LCJjbXAuZ3QoUnMxNixSdDE2KSIsKFJzVj5SdFYpKQorU1REX0NNUEpVTVAoY21wZ3R1LCJjbXAu Z3R1KFJzMTYsUnQxNikiLChmQ0FTVDR1KFJzVik+UnRWKSkKKworCisKKy8qIFY0IGp1bXAgYW5k IHRyYW5zZmVyIChDSikgKi8KK1E2SU5TTihKNF9qdW1wc2V0aSwiUmQxNj0jVTYgOyBqdW1wICNy OToyIixBVFRSSUJTKEFfSkRJUixBX1JFTEFYX1VOQyksICJkaXJlY3QgdW5jb25kaXRpb25hbCBq dW1wIGFuZCBzZXQgcmVnaXN0ZXIgdG8gaW1tZWRpYXRlIiwKK3tmSU1NRVhUKHJpVik7IGZQQ0FM SUdOKHJpVik7IFJkVj1VaVY7IGZCUkFOQ0goZlJFQURfUEMoKStyaVYsQ09GX1RZUEVfSlVNUCk7 fSkKKworUTZJTlNOKEo0X2p1bXBzZXRyLCJSZDE2PVJzMTYgOyBqdW1wICNyOToyIixBVFRSSUJT KEFfSkRJUixBX1JFTEFYX1VOQyksICJkaXJlY3QgdW5jb25kaXRpb25hbCBqdW1wIGFuZCB0cmFu c2ZlciByZWdpc3RlciIsCit7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBSZFY9UnNWOyBm QlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO30pCisKKworLyogVjQgbmV3LXZh bHVlIGp1bXBzIChOQ0opICovCisjZGVmaW5lIFNURF9DTVBKVU1QTkVXUlMoVEFHLFRTVCxUU1RT RU0pXAorUTZJTlNOKEo0XyMjVEFHIyNfanVtcG52X3QsICJpZiAoIlRTVCIpIGp1bXA6dCAjcjk6 MiIsIEFUVFJJQlMoQV9ORVdWQUxVRUosQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFLEFfUkVTVFJJ Q1RfU0xPVDBPTkxZLEFfUFJFRF9CSVRfMTMpLCJjb21wb3VuZCBjb21wYXJlLWp1bXAiLHtmQlJB TkNIX1NQRUNVTEFURV9TVEFMTChUU1RTRU0sLFNQRUNVTEFURV9UQUtFTiwxMywwKTtpZiAoVFNU U0VNKSB7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBmQlJBTkNIKGZSRUFEX1BDKCkrcmlW LENPRl9UWVBFX0pVTVApO319KVwKK1E2SU5TTihKNF8jI1RBRyMjX2p1bXBudl9udCwiaWYgKCJU U1QiKSBqdW1wOm50ICNyOToyIixBVFRSSUJTKEFfTkVXVkFMVUVKLEFfUkVTVFJJQ1RfTk9TTE9U MV9TVE9SRSxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1BSRURfQklUXzEzKSwiY29tcG91bmQgY29t cGFyZS1qdW1wIix7ZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoVFNUU0VNLCxTUEVDVUxBVEVfTk9U X1RBS0VOLDEzLDApOyBpZiAoVFNUU0VNKSB7ZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOyBm QlJBTkNIKGZSRUFEX1BDKCkrcmlWLENPRl9UWVBFX0pVTVApO319KQorCisKKworCitTVERfQ01Q SlVNUE5FV1JTKGNtcGVxaV90LCJjbXAuZXEoTnM4Lm5ldywjVTUpIiwoZk5FV1JFRyhOc04pPT0o VWlWKSkpCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxaV9mLCIhY21wLmVxKE5zOC5uZXcsI1U1KSIs KGZORVdSRUcoTnNOKSE9KFVpVikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBndGlfdCwiY21wLmd0 KE5zOC5uZXcsI1U1KSIsKGZORVdSRUcoTnNOKT4oVWlWKSkpCitTVERfQ01QSlVNUE5FV1JTKGNt cGd0aV9mLCIhY21wLmd0KE5zOC5uZXcsI1U1KSIsIShmTkVXUkVHKE5zTik+KFVpVikpKQorU1RE X0NNUEpVTVBORVdSUyhjbXBndHVpX3QsImNtcC5ndHUoTnM4Lm5ldywjVTUpIiwoZkNBU1Q0dShm TkVXUkVHKE5zTikpPihVaVYpKSkKK1NURF9DTVBKVU1QTkVXUlMoY21wZ3R1aV9mLCIhY21wLmd0 dShOczgubmV3LCNVNSkiLCEoZkNBU1Q0dShmTkVXUkVHKE5zTikpPihVaVYpKSkKKworCitTVERf Q01QSlVNUE5FV1JTKGNtcGVxbjFfdCwiY21wLmVxKE5zOC5uZXcsIy0xKSIsKGZORVdSRUcoTnNO KT09KC0xKSkpCitTVERfQ01QSlVNUE5FV1JTKGNtcGVxbjFfZiwiIWNtcC5lcShOczgubmV3LCMt MSkiLChmTkVXUkVHKE5zTikhPSgtMSkpKQorU1REX0NNUEpVTVBORVdSUyhjbXBndG4xX3QsImNt cC5ndChOczgubmV3LCMtMSkiLChmTkVXUkVHKE5zTik+KC0xKSkpCitTVERfQ01QSlVNUE5FV1JT KGNtcGd0bjFfZiwiIWNtcC5ndChOczgubmV3LCMtMSkiLCEoZk5FV1JFRyhOc04pPigtMSkpKQor U1REX0NNUEpVTVBORVdSUyh0c3RiaXQwX3QsInRzdGJpdChOczgubmV3LCMwKSIsKChmTkVXUkVH KE5zTikpICYgMSkpCitTVERfQ01QSlVNUE5FV1JTKHRzdGJpdDBfZiwiIXRzdGJpdChOczgubmV3 LCMwKSIsISgoZk5FV1JFRyhOc04pKSAmIDEpKQorCisKK1NURF9DTVBKVU1QTkVXUlMoY21wZXFf dCwgImNtcC5lcShOczgubmV3LFJ0MzIpIiwgKGZORVdSRUcoTnNOKT09UnRWKSkKK1NURF9DTVBK VU1QTkVXUlMoY21wZ3RfdCwgImNtcC5ndChOczgubmV3LFJ0MzIpIiwgKGZORVdSRUcoTnNOKT5S dFYpKQorU1REX0NNUEpVTVBORVdSUyhjbXBndHVfdCwiY21wLmd0dShOczgubmV3LFJ0MzIpIiwo ZkNBU1Q0dShmTkVXUkVHKE5zTikpPmZDQVNUNHUoUnRWKSkpCitTVERfQ01QSlVNUE5FV1JTKGNt cGx0X3QsICJjbXAuZ3QoUnQzMixOczgubmV3KSIsIChSdFY+Zk5FV1JFRyhOc04pKSkKK1NURF9D TVBKVU1QTkVXUlMoY21wbHR1X3QsImNtcC5ndHUoUnQzMixOczgubmV3KSIsKGZDQVNUNHUoUnRW KT5mQ0FTVDR1KGZORVdSRUcoTnNOKSkpKQorU1REX0NNUEpVTVBORVdSUyhjbXBlcV9mLCAiIWNt cC5lcShOczgubmV3LFJ0MzIpIiwgKGZORVdSRUcoTnNOKSE9UnRWKSkKK1NURF9DTVBKVU1QTkVX UlMoY21wZ3RfZiwgIiFjbXAuZ3QoTnM4Lm5ldyxSdDMyKSIsICEoZk5FV1JFRyhOc04pPlJ0Vikp CitTVERfQ01QSlVNUE5FV1JTKGNtcGd0dV9mLCIhY21wLmd0dShOczgubmV3LFJ0MzIpIiwhKGZD QVNUNHUoZk5FV1JFRyhOc04pKT5mQ0FTVDR1KFJ0VikpKQorU1REX0NNUEpVTVBORVdSUyhjbXBs dF9mLCAiIWNtcC5ndChSdDMyLE5zOC5uZXcpIiwgIShSdFY+Zk5FV1JFRyhOc04pKSkKK1NURF9D TVBKVU1QTkVXUlMoY21wbHR1X2YsIiFjbXAuZ3R1KFJ0MzIsTnM4Lm5ldykiLCEoZkNBU1Q0dShS dFYpPmZDQVNUNHUoZk5FV1JFRyhOc04pKSkpCisKKworCisKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFN1YnJvdXRpbmUgQ2FsbCBpbnN0cnVj dGlvbnMJICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKyNkZWZpbmUgQ0FMTF9OT1RFUyBBX05PVEVfUEFDS0VUX1BDLEFfTk9URV9QQUNL RVRfTlBDLEFfTk9URV9SRUxBVElWRV9BRERSRVNTCisjZGVmaW5lIENESVJfU1REICAgQV9DQUxM LEFfRElSRUNULENBTExfTk9URVMsQV9DT0ZTVEQsQV9CUkFOQ0hBRERFUgorI2RlZmluZSBDSU5E SVJfU1REIEFfQ0FMTCxBX0lORElSRUNULEFfQ09GU1RECisKK1E2SU5TTihKMl9jYWxsLCJjYWxs ICNyMjI6MiIsQVRUUklCUyhDRElSX1NURCxBX1JFTEFYX1VOQyksICJkaXJlY3QgdW5jb25kaXRp b25hbCBjYWxsIiwKK3tmSU1NRVhUKHJpVik7IGZQQ0FMSUdOKHJpVik7IGZDQUxMKGZSRUFEX1BD KCkrcmlWKTsgfSkKKworUTZJTlNOKEoyX2NhbGx0LCJpZiAoUHU0KSBjYWxsICNyMTU6MiIsQVRU UklCUyhDRElSX1NURCxBX05PVEVfQ09ORElUSU9OQUwsQV9SRUxBWF9DT05ELEFfUFJFRF9CSVRf MTIpLCJkaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiB0cnVlIiwKK3tmSU1NRVhUKHJpVik7IGZQ Q0FMSUdOKHJpVik7IGZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTEQoUHVWKSwsU1BFQ1VM QVRFX05PVF9UQUtFTiwxMiwwKTsgaWYgKGZMU0JPTEQoUHVWKSkgeyBmQ0FMTChmUkVBRF9QQygp K3JpVik7IH19KQorCitRNklOU04oSjJfY2FsbGYsImlmICghUHU0KSBjYWxsICNyMTU6MiIsQVRU UklCUyhDRElSX1NURCxBX05PVEVfQ09ORElUSU9OQUwsQV9SRUxBWF9DT05ELEFfUFJFRF9CSVRf MTIpLCJkaXJlY3QgY29uZGl0aW9uYWwgY2FsbCBpZiBmYWxzZSIsCit7ZklNTUVYVChyaVYpOyBm UENBTElHTihyaVYpOyBmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCT0xETk9UKFB1ViksLFNQ RUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEROT1QoUHVWKSkgeyBmQ0FMTChmUkVB RF9QQygpK3JpVik7IH19KQorCitRNklOU04oSjJfY2FsbHIsImNhbGxyIFJzMzIiLEFUVFJJQlMo Q0lORElSX1NURCksICJpbmRpcmVjdCB1bmNvbmRpdGlvbmFsIGNhbGwiLAoreyBmQ0FMTFIoUnNW KTsgfSkKKworUTZJTlNOKEoyX2NhbGxydCwiaWYgKFB1NCkgY2FsbHIgUnMzMiIsQVRUUklCUyhD SU5ESVJfU1RELEFfTk9URV9DT05ESVRJT05BTCxBX1BSRURfQklUXzEyKSwiaW5kaXJlY3QgY29u ZGl0aW9uYWwgY2FsbCBpZiB0cnVlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCT0xE KFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTEQoUHVWKSkgeyBmQ0FM TFIoUnNWKTsgfX0pCisKK1E2SU5TTihKMl9jYWxscmYsImlmICghUHU0KSBjYWxsciBSczMyIixB VFRSSUJTKENJTkRJUl9TVEQsQV9OT1RFX0NPTkRJVElPTkFMLEFfUFJFRF9CSVRfMTIpLCJpbmRp cmVjdCBjb25kaXRpb25hbCBjYWxsIGlmIGZhbHNlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFM TChmTFNCT0xETk9UKFB1ViksLFNQRUNVTEFURV9OT1RfVEFLRU4sMTIsMCk7aWYgKGZMU0JPTERO T1QoUHVWKSkgeyBmQ0FMTFIoUnNWKTsgfX0pCisKKworCisKKyNkZWZpbmUgQVRUUklCX0hXTE9P UF9TRVRVUCBBX05PVEVfUEFDS0VUX05QQyxBX05PVEVfUkVMQVRJVkVfQUREUkVTUyxBX05PVEVf UEFDS0VUX1BDLEFfTk9URV9MQV9SRVNUUklDVCxBX1JFU1RSSUNUX0xPT1BfTEEsQV9CUkFOQ0hB RERFUixBX0lUX0hXTE9PUCxBX1JFTEFYX0NPRl8xU1QsQV9SRUxBWF9DT0ZfMk5ECisjZGVmaW5l IEFUVFJJQl9IV0xPT1AgQV9OT1RFX1BBQ0tFVF9OUEMsQV9OT1RFX1BBQ0tFVF9QQyxBX1JFU1RS SUNUX05PQ09GLEFfTk9URV9OT0NPRl9SRVNUUklDVCxBX1JPUFNfMworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogSFcgTG9vcCBpbnN0cnVjdGlv bnMJCSAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCitRNklOU04oSjJfbG9vcDByLCJsb29wMCgjcjc6MixSczMyKSIsQVRUUklCUyhBVFRS SUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwK K3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNh LGxjKi8gZlJFQURfUEMoKStyaVYsIFJzVik7CisgIGZTRVRfTFBDRkcoMCk7Cit9KQorCitRNklO U04oSjJfbG9vcDFyLCJsb29wMSgjcjc6MixSczMyKSIsQVRUUklCUyhBVFRSSUJfSFdMT09QX1NF VFVQLEFfSFdMT09QMV9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAxIiwKK3sgZklNTUVYVChy aVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMSgvKnNhLGxjKi8gZlJFQURf UEMoKStyaVYsIFJzVik7Cit9KQorCitRNklOU04oSjJfbG9vcDBpLCJsb29wMCgjcjc6MiwjVTEw KSIsQVRUUklCUyhBVFRSSUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxp emUgSFcgbG9vcCAwIiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVf TE9PUF9SRUdTMCgvKnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7CisgIGZTRVRfTFBDRkco MCk7Cit9KQorCitRNklOU04oSjJfbG9vcDFpLCJsb29wMSgjcjc6MiwjVTEwKSIsQVRUUklCUyhB VFRSSUJfSFdMT09QX1NFVFVQLEFfSFdMT09QMV9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAx IiwKK3sgZklNTUVYVChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMSgv KnNhLGxjKi8gZlJFQURfUEMoKStyaVYsIFVpVik7Cit9KQorCisKK1E2SU5TTihKMl9wbG9vcDFz ciwicDM9c3AxbG9vcDAoI3I3OjIsUnMzMikiLEFUVFJJQlMoQVRUUklCX0hXTE9PUF9TRVRVUCxB X0FSQ0hWMixBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRFUFJFRCxBX0hXTE9PUDBfU0VU VVApLCJJbml0aWFsaXplIEhXIGxvb3AgMCIsCit7IGZJTU1FWFQocmlWKTsgZlBDQUxJR04ocmlW KTsKKyAgZldSSVRFX0xPT1BfUkVHUzAoLypzYSxsYyovIGZSRUFEX1BDKCkrcmlWLCBSc1YpOwor ICBmU0VUX0xQQ0ZHKDEpOworICBmV1JJVEVfUDNfTEFURSgwKTsKK30pCitRNklOU04oSjJfcGxv b3Axc2ksInAzPXNwMWxvb3AwKCNyNzoyLCNVMTApIixBVFRSSUJTKEFUVFJJQl9IV0xPT1BfU0VU VVAsQV9BUkNIVjIsQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBSRUQsQV9IV0xPT1Aw X1NFVFVQKSwiSW5pdGlhbGl6ZSBIVyBsb29wIDAiLAoreyBmSU1NRVhUKHJpVik7IGZQQ0FMSUdO KHJpVik7CisgIGZXUklURV9MT09QX1JFR1MwKC8qc2EsbGMqLyBmUkVBRF9QQygpK3JpViwgVWlW KTsKKyAgZlNFVF9MUENGRygxKTsKKyAgZldSSVRFX1AzX0xBVEUoMCk7Cit9KQorCitRNklOU04o SjJfcGxvb3Ayc3IsInAzPXNwMmxvb3AwKCNyNzoyLFJzMzIpIixBVFRSSUJTKEFUVFJJQl9IV0xP T1BfU0VUVVAsQV9BUkNIVjIsQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBSRUQsQV9I V0xPT1AwX1NFVFVQKSwiSW5pdGlhbGl6ZSBIVyBsb29wIDAiLAoreyBmSU1NRVhUKHJpVik7IGZQ Q0FMSUdOKHJpVik7CisgIGZXUklURV9MT09QX1JFR1MwKC8qc2EsbGMqLyBmUkVBRF9QQygpK3Jp ViwgUnNWKTsKKyAgZlNFVF9MUENGRygyKTsKKyAgZldSSVRFX1AzX0xBVEUoMCk7Cit9KQorUTZJ TlNOKEoyX3Bsb29wMnNpLCJwMz1zcDJsb29wMCgjcjc6MiwjVTEwKSIsQVRUUklCUyhBVFRSSUJf SFdMT09QX1NFVFVQLEFfQVJDSFYyLEFfUkVTVFJJQ1RfTEFURVBSRUQsQV9OT1RFX0xBVEVQUkVE LEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sgZklNTUVYVChyaVYp OyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxjKi8gZlJFQURfUEMo KStyaVYsIFVpVik7CisgIGZTRVRfTFBDRkcoMik7CisgIGZXUklURV9QM19MQVRFKDApOworfSkK KworUTZJTlNOKEoyX3Bsb29wM3NyLCJwMz1zcDNsb29wMCgjcjc6MixSczMyKSIsQVRUUklCUyhB VFRSSUJfSFdMT09QX1NFVFVQLEFfQVJDSFYyLEFfUkVTVFJJQ1RfTEFURVBSRUQsQV9OT1RFX0xB VEVQUkVELEFfSFdMT09QMF9TRVRVUCksIkluaXRpYWxpemUgSFcgbG9vcCAwIiwKK3sgZklNTUVY VChyaVYpOyBmUENBTElHTihyaVYpOworICBmV1JJVEVfTE9PUF9SRUdTMCgvKnNhLGxjKi8gZlJF QURfUEMoKStyaVYsIFJzVik7CisgIGZTRVRfTFBDRkcoMyk7CisgIGZXUklURV9QM19MQVRFKDAp OworfSkKK1E2SU5TTihKMl9wbG9vcDNzaSwicDM9c3AzbG9vcDAoI3I3OjIsI1UxMCkiLEFUVFJJ QlMoQVRUUklCX0hXTE9PUF9TRVRVUCxBX0FSQ0hWMixBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9U RV9MQVRFUFJFRCxBX0hXTE9PUDBfU0VUVVApLCJJbml0aWFsaXplIEhXIGxvb3AgMCIsCit7IGZJ TU1FWFQocmlWKTsgZlBDQUxJR04ocmlWKTsKKyAgZldSSVRFX0xPT1BfUkVHUzAoLypzYSxsYyov IGZSRUFEX1BDKCkrcmlWLCBVaVYpOworICBmU0VUX0xQQ0ZHKDMpOworICBmV1JJVEVfUDNfTEFU RSgwKTsKK30pCisKKworCitRNklOU04oSjJfZW5kbG9vcDAxLCJlbmRsb29wMDEiLEFUVFJJQlMo QVRUUklCX0hXTE9PUCxBX0hXTE9PUDBfRU5ELEFfSFdMT09QMV9FTkQsQV9SRVNUUklDVF9MQVRF UFJFRCksIkxvb3BlbmQgZm9yIGlubmVyIGFuZCBvdXRlciBsb29wIiwKK3sKKworICAvKiBWMjog V2l0aCBwcmVkaWNhdGUgY29udHJvbCAqLworICBpZiAoZkdFVF9MUENGRykgeworICAgIGZISURF KCBpZiAoZkdFVF9MUENGRyA+PSAyKSB7IGZXUklURV9QMyhmTk9BVFRSSUJfUkVBRF9QMygpKTsg fSBlbHNlICkKKyAgICBpZiAoZkdFVF9MUENGRz09MSkgeworICAgICAgIGZXUklURV9QMygweGZm KTsKKyAgICB9CisgICAgZlNFVF9MUENGRyhmR0VUX0xQQ0ZHLTEpOworICAgIGZISURFKE1BUktf TEFURV9QUkVEX1dSSVRFKDMpKQorICB9CisKKyAgLyogY2hlY2sgaWYgaXRlcmF0ZSAqLworICBp ZiAoZlJFQURfTEMwPjEpIHsKKyAgICBmQlJBTkNIKGZSRUFEX1NBMCxDT0ZfVFlQRV9MT09QRU5E MCk7CisgICAgZkhJREUoZkxPT1BTVEFUUyhmUkVBRF9TQTApOykKKyAgICAvKiBkZWNyZW1lbnQg bG9vcCBjb3VudCAqLworICAgIGZXUklURV9MQzAoZlJFQURfTEMwLTEpOworICB9IGVsc2Ugewor ICAgIC8qIGNoZWNrIGlmIGl0ZXJhdGUgKi8KKyAgICBpZiAoZlJFQURfTEMxPjEpIHsKKyAgICAg IGZCUkFOQ0goZlJFQURfU0ExLENPRl9UWVBFX0xPT1BFTkQxKTsKKyAgICAgIGZISURFKGZMT09Q U1RBVFMoZlJFQURfU0ExKTspCisgICAgICAvKiBkZWNyZW1lbnQgbG9vcCBjb3VudCAqLworICAg ICAgZldSSVRFX0xDMShmUkVBRF9MQzEtMSk7CisgICAgfQorICB9CisKK30pCisKK1E2SU5TTihK Ml9lbmRsb29wMCwiZW5kbG9vcDAiLEFUVFJJQlMoQVRUUklCX0hXTE9PUCxBX0hXTE9PUDBfRU5E LEFfUkVTVFJJQ1RfTEFURVBSRUQpLCJMb29wZW5kIGZvciBpbm5lciBsb29wIiwKK3sKKworICAv KiBWMjogV2l0aCBwcmVkaWNhdGUgY29udHJvbCAqLworICBpZiAoZkdFVF9MUENGRykgeworICAg IGZISURFKCBpZiAoZkdFVF9MUENGRyA+PSAyKSB7IGZXUklURV9QMyhmTk9BVFRSSUJfUkVBRF9Q MygpKTsgfSBlbHNlICkKKyAgICBpZiAoZkdFVF9MUENGRz09MSkgeworICAgICAgIGZXUklURV9Q MygweGZmKTsKKyAgICB9CisgICAgZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUoMykpCisgICAg ZlNFVF9MUENGRyhmR0VUX0xQQ0ZHLTEpOworICB9CisKKyAgLyogY2hlY2sgaWYgaXRlcmF0ZSAq LworICBpZiAoZlJFQURfTEMwPjEpIHsKKyAgICBmQlJBTkNIKGZSRUFEX1NBMCxDT0ZfVFlQRV9M T09QRU5EMCk7CisgICAgZkhJREUoZkxPT1BTVEFUUyhmUkVBRF9TQTApOykKKyAgICAvKiBkZWNy ZW1lbnQgbG9vcCBjb3VudCAqLworICAgIGZXUklURV9MQzAoZlJFQURfTEMwLTEpOworICB9Cit9 KQorCitRNklOU04oSjJfZW5kbG9vcDEsImVuZGxvb3AxIixBVFRSSUJTKEFUVFJJQl9IV0xPT1As QV9IV0xPT1AxX0VORCksIkxvb3BlbmQgZm9yIG91dGVyIGxvb3AiLAoreworICAvKiBjaGVjayBp ZiBpdGVyYXRlICovCisgIGlmIChmUkVBRF9MQzE+MSkgeworICAgIGZCUkFOQ0goZlJFQURfU0Ex LENPRl9UWVBFX0xPT1BFTkQxKTsKKyAgICBmSElERShmTE9PUFNUQVRTKGZSRUFEX1NBMSk7KQor ICAgIC8qIGRlY3JlbWVudCBsb29wIGNvdW50ICovCisgICAgZldSSVRFX0xDMShmUkVBRF9MQzEt MSk7CisgIH0KK30pCisKKwpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvY29t cGFyZS5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvY29tcGFyZS5pZGVmCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZmI5NWQKLS0tIC9kZXYvbnVsbAorKysgYi90 YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9jb21wYXJlLmlkZWYKQEAgLTAsMCArMSw2MzkgQEAKKy8q CisgKiAgQ29weXJpZ2h0IChjKSAyMDE5IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKyAqLworCisvKgorICogQ29tcGFyZSBJbnN0cnVjdGlvbnMKKyAqLworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNjYWxh ciBjb21wYXJlIGluc3RydWN0aW9ucwkgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihDMl9jbXBlcSwiUGQ0PWNtcC5lcShS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3IgRXF1YWwiLAore1BkVj1mOEJJVFNP RihSc1Y9PVJ0Vik7fSkKKworUTZJTlNOKEMyX2NtcGd0LCJQZDQ9Y21wLmd0KFJzMzIsUnQzMiki LEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBzaWduZWQgR3JlYXRlciBUaGFuIiwKK3tQZFY9ZjhC SVRTT0YoUnNWPlJ0Vik7fSkKKworUTZJTlNOKEMyX2NtcGd0dSwiUGQ0PWNtcC5ndHUoUnMzMixS dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIEdyZWF0ZXIgVGhhbiBVbnNpZ25lZCIsCit7 UGRWPWY4QklUU09GKGZDQVNUNHUoUnNWKT5mQ0FTVDR1KFJ0VikpO30pCisKK1E2SU5TTihDMl9j bXBlcXAsIlBkND1jbXAuZXEoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3Ig RXF1YWwiLAore1BkVj1mOEJJVFNPRihSc3NWPT1SdHRWKTt9KQorCitRNklOU04oQzJfY21wZ3Rw LCJQZDQ9Y21wLmd0KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIHNpZ25l ZCBHcmVhdGVyIFRoYW4iLAore1BkVj1mOEJJVFNPRihSc3NWPlJ0dFYpO30pCisKK1E2SU5TTihD Ml9jbXBndHVwLCJQZDQ9Y21wLmd0dShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJl IGZvciBHcmVhdGVyIFRoYW4gVW5zaWduZWQiLAore1BkVj1mOEJJVFNPRihmQ0FTVDh1KFJzc1Yp PmZDQVNUOHUoUnR0VikpO30pCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisvKiBDb21wYXJlIGFuZCBwdXQgcmVzdWx0IGluIEdQUgkgICAg ICovCisvKiAgdHlwaWNhbGx5IGZvciBmdW5jdGlvbiBJL08JICAgICAgICovCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oQTRfcmNtcGVx aSwiUmQzMj1jbXAuZXEoUnMzMiwjczgpIixBVFRSSUJTKCksCisiQ29tcGFyZSBmb3IgRXF1YWwi LAore2ZJTU1FWFQoc2lWKTsgUmRWPShSc1Y9PXNpVik7IH0pCisKK1E2SU5TTihBNF9yY21wbmVx aSwiUmQzMj0hY21wLmVxKFJzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIEVxdWFs IiwKK3tmSU1NRVhUKHNpVik7IFJkVj0oUnNWIT1zaVYpOyB9KQorCisKK1E2SU5TTihBNF9yY21w ZXEsIlJkMzI9Y21wLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBFcXVh bCIsCit7UmRWPShSc1Y9PVJ0Vik7IH0pCisKK1E2SU5TTihBNF9yY21wbmVxLCJSZDMyPSFjbXAu ZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZm9yIEVxdWFsIiwKK3tSZFY9KFJz ViE9UnRWKTsgfSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisvKiBTY2FsYXIgY29tcGFyZSBpbnN0cnVjdGlvbnMJICAgICAgICovCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK1E2SU5TTihD Ml9iaXRzc2V0LCJQZDQ9Yml0c3NldChSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJD b21wYXJlIGZvciBzZWxlY3RlZCBiaXRzIHNldCIsCit7UGRWPWY4QklUU09GKChSc1YmUnRWKT09 UnRWKTt9KQorCitRNklOU04oQzJfYml0c2NsciwiUGQ0PWJpdHNjbHIoUnMzMixSdDMyKSIsQVRU UklCUyhBX0FSQ0hWMiksCisiQ29tcGFyZSBmb3Igc2VsZWN0ZWQgYml0cyBjbGVhciIsCit7UGRW PWY4QklUU09GKChSc1YmUnRWKT09MCk7fSkKKworCitRNklOU04oQzRfbmJpdHNzZXQsIlBkND0h Yml0c3NldChSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb21wYXJlIGZvciBzZWxl Y3RlZCBiaXRzIHNldCIsCit7UGRWPWY4QklUU09GKChSc1YmUnRWKSE9UnRWKTt9KQorCitRNklO U04oQzRfbmJpdHNjbHIsIlBkND0hYml0c2NscihSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYy KSwKKyJDb21wYXJlIGZvciBzZWxlY3RlZCBiaXRzIGNsZWFyIiwKK3tQZFY9ZjhCSVRTT0YoKFJz ViZSdFYpIT0wKTt9KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKy8qIFNjYWxhciBjb21wYXJlIGluc3RydWN0aW9ucyBXLyBpbW1lZGlhdGUg ICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitR NklOU04oQzJfY21wZXFpLCJQZDQ9Y21wLmVxKFJzMzIsI3MxMCkiLEFUVFJJQlMoKSwKKyJDb21w YXJlIGZvciBFcXVhbCIsCit7ZklNTUVYVChzaVYpOyBQZFY9ZjhCSVRTT0YoUnNWPT1zaVYpO30p CisKK1E2SU5TTihDMl9jbXBndGksIlBkND1jbXAuZ3QoUnMzMiwjczEwKSIsQVRUUklCUygpLAor IkNvbXBhcmUgZm9yIHNpZ25lZCBHcmVhdGVyIFRoYW4iLAore2ZJTU1FWFQoc2lWKTsgUGRWPWY4 QklUU09GKFJzVj5zaVYpO30pCisKK1E2SU5TTihDMl9jbXBndHVpLCJQZDQ9Y21wLmd0dShSczMy LCN1OSkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGZvciBHcmVhdGVyIFRoYW4gVW5zaWduZWQiLAor e2ZJTU1FWFQodWlWKTsgUGRWPWY4QklUU09GKGZDQVNUNHUoUnNWKT5mQ0FTVDR1KHVpVikpO30p CisKK0RFRl9NQVBQSU5HKEMyX2NtcGdlaSwiUGQ0PWNtcC5nZShSczMyLCNzOCkiLCJQZDQ9Y21w Lmd0KFJzMzIsI3M4LTEpIikKK0RFRl9DT05EX01BUFBJTkcoQzJfY21wZ2V1aSwiUGQ0PWNtcC5n ZXUoUnMzMiwjdTgpIiwiI3U4PT0wIiwiUGQ0PWNtcC5lcShSczMyLFJzMzIpIiwiUGQ0PWNtcC5n dHUoUnMzMiwjdTgtMSkiKQorCisvKiBKdXN0IGZvciBmdW4gKi8KK0RFRl9WMl9NQVBQSU5HKEMy X2NtcGx0LCJQZDQ9Y21wLmx0KFJzMzIsUnQzMikiLCJQZDQ9Y21wLmd0KFJ0MzIsUnMzMikiKQor REVGX1YyX01BUFBJTkcoQzJfY21wbHR1LCJQZDQ9Y21wLmx0dShSczMyLFJ0MzIpIiwiUGQ0PWNt cC5ndHUoUnQzMixSczMyKSIpCisKKworUTZJTlNOKEMyX2JpdHNjbHJpLCJQZDQ9Yml0c2NscihS czMyLCN1NikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvbXBhcmUgZm9yIHNlbGVjdGVkIGJpdHMg Y2xlYXIiLAore1BkVj1mOEJJVFNPRigoUnNWJnVpVik9PTApO30pCisKK1E2SU5TTihDNF9uYml0 c2NscmksIlBkND0hYml0c2NscihSczMyLCN1NikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvbXBh cmUgZm9yIHNlbGVjdGVkIGJpdHMgY2xlYXIiLAore1BkVj1mOEJJVFNPRigoUnNWJnVpVikhPTAp O30pCisKKworCisKK1E2SU5TTihDNF9jbXBuZXFpLCJQZDQ9IWNtcC5lcShSczMyLCNzMTApIixB VFRSSUJTKCksICJDb21wYXJlIGZvciBOb3QgRXF1YWwiLCB7ZklNTUVYVChzaVYpOyBQZFY9ZjhC SVRTT0YoUnNWIT1zaVYpO30pCitRNklOU04oQzRfY21wbHRlaSwiUGQ0PSFjbXAuZ3QoUnMzMiwj czEwKSIsQVRUUklCUygpLCAiQ29tcGFyZSBmb3IgTGVzcyBUaGFuIG9yIEVxdWFsIiwge2ZJTU1F WFQoc2lWKTsgUGRWPWY4QklUU09GKFJzVjw9c2lWKTt9KQorUTZJTlNOKEM0X2NtcGx0ZXVpLCJQ ZDQ9IWNtcC5ndHUoUnMzMiwjdTkpIixBVFRSSUJTKCksICJDb21wYXJlIGZvciBMZXNzIFRoYW4g b3IgRXF1YWwgVW5zaWduZWQiLCB7ZklNTUVYVCh1aVYpOyBQZFY9ZjhCSVRTT0YoZkNBU1Q0dShS c1YpPD1mQ0FTVDR1KHVpVikpO30pCisKK1E2SU5TTihDNF9jbXBuZXEsIlBkND0hY21wLmVxKFJz MzIsUnQzMikiLEFUVFJJQlMoKSwgIkFuZC1Db21wYXJlIGZvciBFcXVhbCIsIHtQZFY9ZjhCSVRT T0YoUnNWIT1SdFYpO30pCitRNklOU04oQzRfY21wbHRlLCJQZDQ9IWNtcC5ndChSczMyLFJ0MzIp IixBVFRSSUJTKCksICJBbmQtQ29tcGFyZSBmb3Igc2lnbmVkIEdyZWF0ZXIgVGhhbiIsIHtQZFY9 ZjhCSVRTT0YoUnNWPD1SdFYpO30pCitRNklOU04oQzRfY21wbHRldSwiUGQ0PSFjbXAuZ3R1KFJz MzIsUnQzMikiLEFUVFJJQlMoKSwgIkFuZC1Db21wYXJlIGZvciBHcmVhdGVyIFRoYW4gVW5zaWdu ZWQiLCB7UGRWPWY4QklUU09GKGZDQVNUNHUoUnNWKTw9ZkNBU1Q0dShSdFYpKTt9KQorCisKKwor CisKKy8qIFByZWRpY2F0ZSBMb2dpY2FsIE9wZXJhdGlvbnMgKi8KKworUTZJTlNOKEMyX2FuZCwi UGQ0PWFuZChQdDQsUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisi UHJlZGljYXRlIEFORCIsCit7ZlBSRURVU0VfVElNSU5HKCk7UGRWPVBzViAmIFB0Vjt9KQorCitR NklOU04oQzJfb3IsIlBkND1vcihQdDQsUHM0KSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9D UlNMT1QyMyksCisiUHJlZGljYXRlIE9SIiwKK3tmUFJFRFVTRV9USU1JTkcoKTtQZFY9UHNWIHwg UHRWO30pCisKK1E2SU5TTihDMl94b3IsIlBkND14b3IoUHM0LFB0NCkiLEFUVFJJQlMoQV9DUlNM T1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIlByZWRpY2F0ZSBYT1IiLAore2ZQUkVEVVNFX1RJTUlO RygpO1BkVj1Qc1YgXiBQdFY7fSkKKworUTZJTlNOKEMyX2FuZG4sIlBkND1hbmQoUHQ0LCFQczQp IixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwKKyJQcmVkaWNhdGUgQU5EIE5P VCIsCit7ZlBSRURVU0VfVElNSU5HKCk7UGRWPVB0ViAmICh+UHNWKTt9KQorCitRNklOU04oQzJf bm90LCJQZDQ9bm90KFBzNCkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAor IkxvZ2ljYWwgTk9UIFByZWRpY2F0ZSIsCit7ZlBSRURVU0VfVElNSU5HKCk7UGRWPX5Qc1Y7fSkK KworUTZJTlNOKEMyX29ybiwiUGQ0PW9yKFB0NCwhUHM0KSIsQVRUUklCUyhBX0FSQ0hWMixBX0NS U0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisiUHJlZGljYXRlIE9SIE5PVCIsCit7ZlBSRURVU0Vf VElNSU5HKCk7UGRWPVB0ViB8ICh+UHNWKTt9KQorCisKKworCisKK1E2SU5TTihDNF9hbmRfYW5k LCJQZDQ9YW5kKFBzNCxhbmQoUHQ0LFB1NCkpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NS U0xPVDIzKSwKKyJDb21wb3VuZCBBbmQtQW5kIiwgeyBmUFJFRFVTRV9USU1JTkcoKTtQZFYgPSBQ c1YgJiBQdFYgJiBQdVY7IH0pCisKK1E2SU5TTihDNF9hbmRfb3IsIlBkND1hbmQoUHM0LG9yKFB0 NCxQdTQpKSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisiQ29tcG91bmQg QW5kLU9yIiwgeyBmUFJFRFVTRV9USU1JTkcoKTtQZFYgPSBQc1YgJiAgKFB0ViB8IFB1Vik7IH0p CisKK1E2SU5TTihDNF9vcl9hbmQsIlBkND1vcihQczQsYW5kKFB0NCxQdTQpKSIsQVRUUklCUyhB X0NSU0xPVDIzLEFfTk9URV9DUlNMT1QyMyksCisiQ29tcG91bmQgT3ItQW5kIiwgeyBmUFJFRFVT RV9USU1JTkcoKTtQZFYgPSBQc1YgfCAoUHRWICYgUHVWKTsgfSkKKworUTZJTlNOKEM0X29yX29y LCJQZDQ9b3IoUHM0LG9yKFB0NCxQdTQpKSIsQVRUUklCUyhBX0NSU0xPVDIzLEFfTk9URV9DUlNM T1QyMyksCisiQ29tcG91bmQgT3ItT3IiLCB7IGZQUkVEVVNFX1RJTUlORygpO1BkViA9IFBzViB8 IFB0ViB8IFB1VjsgfSkKKworCisKK1E2SU5TTihDNF9hbmRfYW5kbiwiUGQ0PWFuZChQczQsYW5k KFB0NCwhUHU0KSkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkNvbXBv dW5kIEFuZC1BbmQiLCB7IGZQUkVEVVNFX1RJTUlORygpO1BkViA9IFBzViAmIFB0ViAmICh+UHVW KTsgfSkKKworUTZJTlNOKEM0X2FuZF9vcm4sIlBkND1hbmQoUHM0LG9yKFB0NCwhUHU0KSkiLEFU VFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkNvbXBvdW5kIEFuZC1PciIsIHsg ZlBSRURVU0VfVElNSU5HKCk7UGRWID0gUHNWICYgIChQdFYgfCAoflB1VikpOyB9KQorCitRNklO U04oQzRfb3JfYW5kbiwiUGQ0PW9yKFBzNCxhbmQoUHQ0LCFQdTQpKSIsQVRUUklCUyhBX0NSU0xP VDIzLEFfTk9URV9DUlNMT1QyMyksCisiQ29tcG91bmQgT3ItQW5kIiwgeyBmUFJFRFVTRV9USU1J TkcoKTtQZFYgPSBQc1YgfCAoUHRWICYgKH5QdVYpKTsgfSkKKworUTZJTlNOKEM0X29yX29ybiwi UGQ0PW9yKFBzNCxvcihQdDQsIVB1NCkpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xP VDIzKSwKKyJDb21wb3VuZCBPci1PciIsIHsgZlBSRURVU0VfVElNSU5HKCk7UGRWID0gUHNWIHwg UHRWIHwgKH5QdVYpOyB9KQorCisKKworCisKK0RFRl9WMl9NQVBQSU5HKEMyX3B4ZmVyX21hcCwi UGQ0PVBzNCIsIlBkND1vcihQczQsUHM0KSIpCisKKworUTZJTlNOKEMyX2FueTgsIlBkND1hbnk4 KFBzNCkiLEFUVFJJQlMoQV9DUlNMT1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkxvZ2ljYWwgQU5Z IG9mIGxvdyA4IHByZWRpY2F0ZSBiaXRzIiwKK3sgZlBSRURVU0VfVElNSU5HKCk7UHNWID8gKFBk Vj0weGZmKSA6IChQZFY9MHgwMCk7IH0pCisKK1E2SU5TTihDMl9hbGw4LCJQZDQ9YWxsOChQczQp IixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwKKyJMb2dpY2FsIEFMTCBvZiBs b3cgOCBwcmVkaWNhdGUgYml0cyIsCit7IGZQUkVEVVNFX1RJTUlORygpOyhQc1Y9PTB4ZmYpID8g KFBkVj0weGZmKSA6IChQZFY9MHgwMCk7IH0pCisKK1E2SU5TTihDMl92aXRwYWNrLCJSZDMyPXZp dHBhY2soUHM0LFB0NCkiLEFUVFJJQlMoKSwKKyJQYWNrIHRoZSBvZGQgYW5kIGV2ZW4gYml0cyBv ZiB0d28gcHJlZGljYXRlIHJlZ2lzdGVycyIsCit7IGZQUkVEVVNFX1RJTUlORygpO1JkViA9IChQ c1YmMHg1NSkgfCAoUHRWJjB4QUEpOyB9KQorCisvKiBNdXggaW5zdHJ1Y3Rpb25zICovCisKK1E2 SU5TTihDMl9tdXgsIlJkMzI9bXV4KFB1NCxSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiU2NhbGFy IE1VWCIsCit7IGZQUkVEVVNFX1RJTUlORygpOyhmTFNCT0xEKFB1VikpID8gKFJkVj1Sc1YpOihS ZFY9UnRWKTsgfSkKKworCitRNklOU04oQzJfY21vdmVuZXdpdCwiaWYgKFB1NC5uZXcpIFJkMzI9 I3MxMiIsQVRUUklCUyhBX0FSQ0hWMiksCisiU2NhbGFyIGNvbmRpdGlvbmFsIG1vdmUiLAoreyBm SU1NRVhUKHNpVik7IGlmIChmTFNCTkVXKFB1TikpIFJkVj1zaVY7IGVsc2UgQ0FOQ0VMO30pCisK K1E2SU5TTihDMl9jbW92ZW5ld2lmLCJpZiAoIVB1NC5uZXcpIFJkMzI9I3MxMiIsQVRUUklCUyhB X0FSQ0hWMiksCisiU2NhbGFyIGNvbmRpdGlvbmFsIG1vdmUiLAoreyBmSU1NRVhUKHNpVik7IGlm IChmTFNCTkVXTk9UKFB1TikpIFJkVj1zaVY7IGVsc2UgQ0FOQ0VMO30pCisKK1E2SU5TTihDMl9j bW92ZWl0LCJpZiAoUHU0KSBSZDMyPSNzMTIiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNjYWxhciBj b25kaXRpb25hbCBtb3ZlIiwKK3sgZklNTUVYVChzaVYpOyBpZiAoZkxTQk9MRChQdVYpKSBSZFY9 c2lWOyBlbHNlIENBTkNFTDt9KQorCitRNklOU04oQzJfY21vdmVpZiwiaWYgKCFQdTQpIFJkMzI9 I3MxMiIsQVRUUklCUyhBX0FSQ0hWMiksCisiU2NhbGFyIGNvbmRpdGlvbmFsIG1vdmUiLAoreyBm SU1NRVhUKHNpVik7IGlmIChmTFNCT0xETk9UKFB1VikpIFJkVj1zaVY7IGVsc2UgQ0FOQ0VMO30p CisKKworCitRNklOU04oQzJfY2NvbWJpbmV3bmV3dCwiaWYgKFB1NC5uZXcpIFJkZDMyPWNvbWJp bmUoUnMzMixSdDMyKSIsQVRUUklCUyhBX1JPUFNfMixBX0FSQ0hWMiksCisiQ29uZGl0aW9uYWxs eSBjb21iaW5lIHR3byB3b3JkcyBpbnRvIGEgcmVnaXN0ZXIgcGFpciIsCit7IGlmIChmTFNCTkVX KFB1TikpIHsKKyAgICBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgICBmU0VUV09SRCgxLFJkZFYs UnNWKTsKKyAgfSBlbHNlIHtDQU5DRUw7fQorfSkKKworUTZJTlNOKEMyX2Njb21iaW5ld25ld2Ys ImlmICghUHU0Lm5ldykgUmRkMzI9Y29tYmluZShSczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJDSFYy LEFfUk9QU18yKSwKKyJDb25kaXRpb25hbGx5IGNvbWJpbmUgdHdvIHdvcmRzIGludG8gYSByZWdp c3RlciBwYWlyIiwKK3sgaWYgKGZMU0JORVdOT1QoUHVOKSkgeworICAgIGZTRVRXT1JEKDAsUmRk VixSdFYpOworICAgIGZTRVRXT1JEKDEsUmRkVixSc1YpOworICB9IGVsc2Uge0NBTkNFTDt9Cit9 KQorCitRNklOU04oQzJfY2NvbWJpbmV3dCwiaWYgKFB1NCkgUmRkMzI9Y29tYmluZShSczMyLFJ0 MzIpIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yKSwKKyJDb25kaXRpb25hbGx5IGNvbWJpbmUg dHdvIHdvcmRzIGludG8gYSByZWdpc3RlciBwYWlyIiwKK3sgaWYgKGZMU0JPTEQoUHVWKSkgewor ICAgIGZTRVRXT1JEKDAsUmRkVixSdFYpOworICAgIGZTRVRXT1JEKDEsUmRkVixSc1YpOworICB9 IGVsc2Uge0NBTkNFTDt9Cit9KQorCitRNklOU04oQzJfY2NvbWJpbmV3ZiwiaWYgKCFQdTQpIFJk ZDMyPWNvbWJpbmUoUnMzMixSdDMyKSIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMiksCisiQ29u ZGl0aW9uYWxseSBjb21iaW5lIHR3byB3b3JkcyBpbnRvIGEgcmVnaXN0ZXIgcGFpciIsCit7IGlm IChmTFNCT0xETk9UKFB1VikpIHsKKyAgICBmU0VUV09SRCgwLFJkZFYsUnRWKTsKKyAgICBmU0VU V09SRCgxLFJkZFYsUnNWKTsKKyAgfSBlbHNlIHtDQU5DRUw7fQorfSkKKworCisKK1E2SU5TTihD Ml9tdXhpaSwiUmQzMj1tdXgoUHU0LCNzOCwjUzgpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJTY2Fs YXIgTVVYIGltbWVkaWF0ZXMiLAoreyBmUFJFRFVTRV9USU1JTkcoKTtmSU1NRVhUKHNpVik7IChm TFNCT0xEKFB1VikpID8gKFJkVj1zaVYpOihSZFY9U2lWKTsgfSkKKworCisKK1E2SU5TTihDMl9t dXhpciwiUmQzMj1tdXgoUHU0LFJzMzIsI3M4KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiU2NhbGFy IE1VWCByZWdpc3RlciBpbW1lZGlhdGUiLAoreyBmUFJFRFVTRV9USU1JTkcoKTtmSU1NRVhUKHNp Vik7IChmTFNCT0xEKFB1VikpID8gKFJkVj1Sc1YpOihSZFY9c2lWKTsgfSkKKworCitRNklOU04o QzJfbXV4cmksIlJkMzI9bXV4KFB1NCwjczgsUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIlNj YWxhciBNVVggcmVnaXN0ZXIgaW1tZWRpYXRlIiwKK3sgZlBSRURVU0VfVElNSU5HKCk7ZklNTUVY VChzaVYpOyAoZkxTQk9MRChQdVYpKSA/IChSZFY9c2lWKTooUmRWPVJzVik7IH0pCisKKworCitR NklOU04oQzJfdm11eCwiUmRkMzI9dm11eChQdTQsUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisi VmVjdG9yIE1VWCIsCit7ICAgZlBSRURVU0VfVElNSU5HKCk7CisJZkhJREUoaW50IGk7KQorCWZv ciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJZlNFVEJZVEUoaSxSZGRWLChmR0VUQklUKGksUHVW KT8oZkdFVEJZVEUoaSxSc3NWKSk6KGZHRVRCWVRFKGksUnR0VikpKSk7CisJfQorfSkKKworUTZJ TlNOKEMyX21hc2ssIlJkZDMyPW1hc2soUHQ0KSIsQVRUUklCUygpLAorIlZlY3RvciBNYXNrIEdl bmVyYXRpb24iLAoreyAgIGZQUkVEVVNFX1RJTUlORygpOworCWZISURFKGludCBpOykKKwlmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCWVRFKGksUmRkViwoZkdFVEJJVChpLFB0Vik/ KDB4ZmYpOigweDAwKSkpOworCX0KK30pCisKKy8qIFZDTVAgKi8KKworUTZJTlNOKEEyX3ZjbXBi ZXEsIlBkND12Y21wYi5lcShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1l bnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkg PCA4OyBpKyspIHsKKwkJZlNFVEJJVChpLFBkViwoZkdFVEJZVEUoaSxSc3NWKSA9PSBmR0VUQllU RShpLFJ0dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZXFpLCJQZDQ9dmNtcGIuZXEo UnNzMzIsI3U4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMg IiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VU QklUKGksUGRWLChmR0VUVUJZVEUoaSxSc3NWKSA9PSB1aVYpKTsKKwl9Cit9KQorCitRNklOU04o QTRfdmNtcGJlcV9hbnksIlBkND1hbnk4KHZjbXBiLmVxKFJzczMyLFJ0dDMyKSkiLEFUVFJJQlMo KSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUoaW50IGk7 KQorCVBkViA9IDA7CisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlpZiAoZkdFVEJZVEUo aSxSc3NWKSA9PSBmR0VUQllURShpLFJ0dFYpKSBQZFYgPSAweGZmOworCX0KK30pCisKK1E2SU5T TihBNl92Y21wYmVxX25vdGFueSwiUGQ0PSFhbnk4KHZjbXBiLmVxKFJzczMyLFJ0dDMyKSkiLEFU VFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJZkhJREUo aW50IGk7KQorCVBkViA9IDA7CisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlpZiAoZkdF VEJZVEUoaSxSc3NWKSA9PSBmR0VUQllURShpLFJ0dFYpKSBQZFYgPSAweGZmOworCX0KKwlQZFYg PSB+UGRWOworfSkKKworUTZJTlNOKEEyX3ZjbXBiZ3R1LCJQZDQ9dmNtcGIuZ3R1KFJzczMyLFJ0 dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlmU0VUQklUKGks UGRWLChmR0VUVUJZVEUoaSxSc3NWKSA+IGZHRVRVQllURShpLFJ0dFYpKSk7CisJfQorfSkKKwor UTZJTlNOKEE0X3ZjbXBiZ3R1aSwiUGQ0PXZjbXBiLmd0dShSc3MzMiwjdTcpIixBVFRSSUJTKCks CisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZISURFKGludCBpOykK Kwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCSVQoaSxQZFYsKGZHRVRVQllURShp LFJzc1YpID4gdWlWKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBiZ3QsIlBkND12Y21wYi5n dChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0 b3JzICIsCit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJ ZlNFVEJJVChpLFBkViwoZkdFVEJZVEUoaSxSc3NWKSA+IGZHRVRCWVRFKGksUnR0VikpKTsKKwl9 Cit9KQorCitRNklOU04oQTRfdmNtcGJndGksIlBkND12Y21wYi5ndChSc3MzMiwjczgpIixBVFRS SUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZISURFKGlu dCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCWZTRVRCSVQoaSxQZFYsKGZHRVRC WVRFKGksUnNzVikgPiBzaVYpKTsKKwl9Cit9KQorCisKKworUTZJTlNOKEE0X2NtcGJlcSwiUGQ0 PWNtcGIuZXEoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgYnl0ZXMgIiwKK3sKKwlQ ZFY9ZjhCSVRTT0YoZkdFVEJZVEUoMCxSc1YpID09IGZHRVRCWVRFKDAsUnRWKSk7Cit9KQorCitR NklOU04oQTRfY21wYmVxaSwiUGQ0PWNtcGIuZXEoUnMzMiwjdTgpIixBVFRSSUJTKCksCisiQ29t cGFyZSBieXRlcyAiLAoreworCVBkVj1mOEJJVFNPRihmR0VUVUJZVEUoMCxSc1YpID09IHVpVik7 Cit9KQorCitRNklOU04oQTRfY21wYmd0dSwiUGQ0PWNtcGIuZ3R1KFJzMzIsUnQzMikiLEFUVFJJ QlMoKSwKKyJDb21wYXJlIGJ5dGVzICIsCit7CisJUGRWPWY4QklUU09GKGZHRVRVQllURSgwLFJz VikgPiBmR0VUVUJZVEUoMCxSdFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBiZ3R1aSwiUGQ0PWNt cGIuZ3R1KFJzMzIsI3U3KSIsQVRUUklCUygpLAorIkNvbXBhcmUgYnl0ZXMgIiwKK3sKKwlmSU1N RVhUKHVpVik7CisJUGRWPWY4QklUU09GKGZHRVRVQllURSgwLFJzVikgPiBmQ0FTVDR1KHVpVikp OworfSkKKworUTZJTlNOKEE0X2NtcGJndCwiUGQ0PWNtcGIuZ3QoUnMzMixSdDMyKSIsQVRUUklC UygpLAorIkNvbXBhcmUgYnl0ZXMgIiwKK3sKKwlQZFY9ZjhCSVRTT0YoZkdFVEJZVEUoMCxSc1Yp ID4gZkdFVEJZVEUoMCxSdFYpKTsKK30pCisKK1E2SU5TTihBNF9jbXBiZ3RpLCJQZDQ9Y21wYi5n dChSczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGJ5dGVzICIsCit7CisJUGRWPWY4QklU U09GKGZHRVRCWVRFKDAsUnNWKSA+IHNpVik7Cit9KQorCitRNklOU04oQTJfdmNtcGhlcSwiUGQ0 PXZjbXBoLmVxKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2Yg dHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkr KykgeworCQlmU0VUQklUKGkqMixQZFYsICAoZkdFVEhBTEYoaSxSc3NWKSA9PSBmR0VUSEFMRihp LFJ0dFYpKSk7CisJCWZTRVRCSVQoaSoyKzEsUGRWLChmR0VUSEFMRihpLFJzc1YpID09IGZHRVRI QUxGKGksUnR0VikpKTsKKwl9Cit9KQorCitRNklOU04oQTJfdmNtcGhndCwiUGQ0PXZjbXBoLmd0 KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3Rv cnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlm U0VUQklUKGkqMiwgIFBkViwgIChmR0VUSEFMRihpLFJzc1YpID4gZkdFVEhBTEYoaSxSdHRWKSkp OworCQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VUSEFMRihpLFJzc1YpID4gZkdFVEhBTEYoaSxS dHRWKSkpOworCX0KK30pCisKK1E2SU5TTihBMl92Y21waGd0dSwiUGQ0PXZjbXBoLmd0dShSc3Mz MixSdHQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIs Cit7CisJZkhJREUoaW50IGk7KQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZlNFVEJJ VChpKjIsICBQZFYsICAoZkdFVFVIQUxGKGksUnNzVikgPiBmR0VUVUhBTEYoaSxSdHRWKSkpOwor CQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VUVUhBTEYoaSxSc3NWKSA+IGZHRVRVSEFMRihpLFJ0 dFYpKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBoZXFpLCJQZDQ9dmNtcGguZXEoUnNzMzIs I3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sK KwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUQklUKGkq MixQZFYsICAoZkdFVEhBTEYoaSxSc3NWKSA9PSBzaVYpKTsKKwkJZlNFVEJJVChpKjIrMSxQZFYs KGZHRVRIQUxGKGksUnNzVikgPT0gc2lWKSk7CisJfQorfSkKKworUTZJTlNOKEE0X3ZjbXBoZ3Rp LCJQZDQ9dmNtcGguZ3QoUnNzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMg b2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgeworCQlmU0VUQklUKGkqMiwgIFBkViwgIChmR0VUSEFMRihpLFJzc1YpID4gc2lWKSk7 CisJCWZTRVRCSVQoaSoyKzEsUGRWLCAgKGZHRVRIQUxGKGksUnNzVikgPiBzaVYpKTsKKwl9Cit9 KQorCisKK1E2SU5TTihBNF92Y21waGd0dWksIlBkND12Y21waC5ndHUoUnNzMzIsI3U3KSIsQVRU UklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmSElERShp bnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlmU0VUQklUKGkqMiwgIFBkViwg IChmR0VUVUhBTEYoaSxSc3NWKSA+IHVpVikpOworCQlmU0VUQklUKGkqMisxLFBkViwgIChmR0VU VUhBTEYoaSxSc3NWKSA+IHVpVikpOworCX0KK30pCisKK1E2SU5TTihBNF9jbXBoZXEsIlBkND1j bXBoLmVxKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAorewor CVBkVj1mOEJJVFNPRihmR0VUSEFMRigwLFJzVikgPT0gZkdFVEhBTEYoMCxSdFYpKTsKK30pCisK K1E2SU5TTihBNF9jbXBoZ3QsIlBkND1jbXBoLmd0KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJD b21wYXJlIGhhbGZ3b3JkcyAiLAoreworCVBkVj1mOEJJVFNPRihmR0VUSEFMRigwLFJzVikgPiBm R0VUSEFMRigwLFJ0VikpOworfSkKKworUTZJTlNOKEE0X2NtcGhndHUsIlBkND1jbXBoLmd0dShS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBoYWxmd29yZHMgIiwKK3sKKwlQZFY9ZjhC SVRTT0YoZkdFVFVIQUxGKDAsUnNWKSA+IGZHRVRVSEFMRigwLFJ0VikpOworfSkKKworUTZJTlNO KEE0X2NtcGhlcWksIlBkND1jbXBoLmVxKFJzMzIsI3M4KSIsQVRUUklCUygpLAorIkNvbXBhcmUg aGFsZndvcmRzICIsCit7CisJZklNTUVYVChzaVYpOworCVBkVj1mOEJJVFNPRihmR0VUSEFMRigw LFJzVikgPT0gc2lWKTsKK30pCisKK1E2SU5TTihBNF9jbXBoZ3RpLCJQZDQ9Y21waC5ndChSczMy LCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGhhbGZ3b3JkcyAiLAoreworCWZJTU1FWFQoc2lW KTsKKwlQZFY9ZjhCSVRTT0YoZkdFVEhBTEYoMCxSc1YpID4gc2lWKTsKK30pCisKK1E2SU5TTihB NF9jbXBoZ3R1aSwiUGQ0PWNtcGguZ3R1KFJzMzIsI3U3KSIsQVRUUklCUygpLAorIkNvbXBhcmUg aGFsZndvcmRzICIsCit7CisJZklNTUVYVCh1aVYpOworCVBkVj1mOEJJVFNPRihmR0VUVUhBTEYo MCxSc1YpID4gZkNBU1Q0dSh1aVYpKTsKK30pCisKK1E2SU5TTihBMl92Y21wd2VxLCJQZDQ9dmNt cHcuZXEoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiQ29tcGFyZSBlbGVtZW50cyBvZiB0d28g dmVjdG9ycyAiLAoreworCWZTRVRCSVRTKDMsMCxQZFYsKGZHRVRXT1JEKDAsUnNzVik9PWZHRVRX T1JEKDAsUnR0VikpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPT1mR0VU V09SRCgxLFJ0dFYpKSk7Cit9KQorCitRNklOU04oQTJfdmNtcHdndCwiUGQ0PXZjbXB3Lmd0KFJz czMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMg IiwKK3sKKwlmU0VUQklUUygzLDAsUGRWLChmR0VUV09SRCgwLFJzc1YpPmZHRVRXT1JEKDAsUnR0 VikpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPmZHRVRXT1JEKDEsUnR0 VikpKTsKK30pCisKK1E2SU5TTihBMl92Y21wd2d0dSwiUGQ0PXZjbXB3Lmd0dShSc3MzMixSdHQz MikiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2ZWN0b3JzICIsCit7CisJ ZlNFVEJJVFMoMywwLFBkViwoZkdFVFVXT1JEKDAsUnNzVik+ZkdFVFVXT1JEKDAsUnR0VikpKTsK KwlmU0VUQklUUyg3LDQsUGRWLChmR0VUVVdPUkQoMSxSc3NWKT5mR0VUVVdPUkQoMSxSdHRWKSkp OworfSkKKworUTZJTlNOKEE0X3ZjbXB3ZXFpLCJQZDQ9dmNtcHcuZXEoUnNzMzIsI3M4KSIsQVRU UklCUygpLAorIkNvbXBhcmUgZWxlbWVudHMgb2YgdHdvIHZlY3RvcnMgIiwKK3sKKwlmU0VUQklU UygzLDAsUGRWLChmR0VUV09SRCgwLFJzc1YpPT1zaVYpKTsKKwlmU0VUQklUUyg3LDQsUGRWLChm R0VUV09SRCgxLFJzc1YpPT1zaVYpKTsKK30pCisKK1E2SU5TTihBNF92Y21wd2d0aSwiUGQ0PXZj bXB3Lmd0KFJzczMyLCNzOCkiLEFUVFJJQlMoKSwKKyJDb21wYXJlIGVsZW1lbnRzIG9mIHR3byB2 ZWN0b3JzICIsCit7CisJZlNFVEJJVFMoMywwLFBkViwoZkdFVFdPUkQoMCxSc3NWKT5zaVYpKTsK KwlmU0VUQklUUyg3LDQsUGRWLChmR0VUV09SRCgxLFJzc1YpPnNpVikpOworfSkKKworUTZJTlNO KEE0X3ZjbXB3Z3R1aSwiUGQ0PXZjbXB3Lmd0dShSc3MzMiwjdTcpIixBVFRSSUJTKCksCisiQ29t cGFyZSBlbGVtZW50cyBvZiB0d28gdmVjdG9ycyAiLAoreworCWZTRVRCSVRTKDMsMCxQZFYsKGZH RVRVV09SRCgwLFJzc1YpPmZDQVNUNHUodWlWKSkpOworCWZTRVRCSVRTKDcsNCxQZFYsKGZHRVRV V09SRCgxLFJzc1YpPmZDQVNUNHUodWlWKSkpOworfSkKKworUTZJTlNOKEE0X2JvdW5kc2NoZWNr X2hpLCJQZDQ9Ym91bmRzY2hlY2soUnNzMzIsUnR0MzIpOnJhdzpoaSIsQVRUUklCUygpLAorIkRl dGVjdCBpZiBhIHJlZ2lzdGVyIGlzIHdpdGhpbiBib3VuZHMiLAoreworCWZISURFKHNpemU0dV90 IHNyYzspCisJc3JjID0gZkdFVFVXT1JEKDEsUnNzVik7CisJUGRWID0gZjhCSVRTT0YoKGZDQVNU NHUoc3JjKSA+PSBmR0VUVVdPUkQoMCxSdHRWKSkgJiYgKGZDQVNUNHUoc3JjKSA8IGZHRVRVV09S RCgxLFJ0dFYpKSk7Cit9KQorCitRNklOU04oQTRfYm91bmRzY2hlY2tfbG8sIlBkND1ib3VuZHNj aGVjayhSc3MzMixSdHQzMik6cmF3OmxvIixBVFRSSUJTKCksCisiRGV0ZWN0IGlmIGEgcmVnaXN0 ZXIgaXMgd2l0aGluIGJvdW5kcyIsCit7CisJZkhJREUoc2l6ZTR1X3Qgc3JjOykKKwlzcmMgPSBm R0VUVVdPUkQoMCxSc3NWKTsKKwlQZFYgPSBmOEJJVFNPRigoZkNBU1Q0dShzcmMpID49IGZHRVRV V09SRCgwLFJ0dFYpKSAmJiAoZkNBU1Q0dShzcmMpIDwgZkdFVFVXT1JEKDEsUnR0VikpKTsKK30p CisKK0RFRl9WNF9DT05EX01BUFBJTkcoQTRfYm91bmRzY2hlY2ssIlBkND1ib3VuZHNjaGVjayhS czMyLFJ0dDMyKSIsIlJzMzIgJiAxIiwiUGQ0PWJvdW5kc2NoZWNrKFJzczMyLFJ0dDMyKTpyYXc6 aGkiLCJQZDQ9Ym91bmRzY2hlY2soUnNzMzIsUnR0MzIpOnJhdzpsbyIpCisKK1E2SU5TTihBNF90 bGJtYXRjaCwiUGQ0PXRsYm1hdGNoKFJzczMyLFJ0MzIpIixBVFRSSUJTKEFfTk9URV9MQVRFUFJF RCxBX1JFU1RSSUNUX0xBVEVQUkVEKSwKKyJEZXRlY3QgaWYgYSBWQS9BU0lEIG1hdGNoZXMgYSBU TEIgZW50cnkiLAoreworCWZISURFKHNpemU0dV90IFRMQkhJOyBzaXplNHVfdCBUTEJMTzsgc2l6 ZTR1X3QgTUFTSzsgc2l6ZTR1X3QgU0laRTspCisJTUFTSyA9IDB4MDdmZmZmZmY7CisJVExCTE8g PSBmR0VUVVdPUkQoMCxSc3NWKTsKKwlUTEJISSA9IGZHRVRVV09SRCgxLFJzc1YpOworCVNJWkUg PSBmTUlOKDYsZkNMMV80KH5mQlJFVl80KFRMQkxPKSkpOworCU1BU0sgJj0gKDB4ZmZmZmZmZmYg PDwgMipTSVpFKTsKKwlQZFYgPSBmOEJJVFNPRihmR0VUQklUKDMxLFRMQkhJKSAmJiAoKFRMQkhJ ICYgTUFTSykgPT0gKFJ0ViAmIE1BU0spKSk7CisJZkhJREUoTUFSS19MQVRFX1BSRURfV1JJVEUo UGROKSkKK30pCisKK1E2SU5TTihDMl90ZnJwciwiUmQzMj1QczQiLEFUVFJJQlMoKSwKKyJUcmFu c2ZlciBwcmVkaWNhdGUgdG8gZ2VuZXJhbCByZWdpc3RlciIsIHsgZlBSRURVU0VfVElNSU5HKCk7 UmRWID0gZlpYVE4oOCwzMixQc1YpOyB9KQorCitRNklOU04oQzJfdGZycnAsIlBkND1SczMyIixB VFRSSUJTKCksCisiVHJhbnNmZXIgZ2VuZXJhbCByZWdpc3RlciB0byBQcmVkaWNhdGUiLCB7IFBk ViA9IGZHRVRVQllURSgwLFJzVik7IH0pCisKK1E2SU5TTihDNF9mYXN0Y29ybmVyOSwiUGQ0PWZh c3Rjb3JuZXI5KFBzNCxQdDQpIixBVFRSSUJTKEFfQ1JTTE9UMjMsQV9OT1RFX0NSU0xPVDIzKSwK KyJEZXRlcm1pbmUgd2hldGhlciB0aGUgcHJlZGljYXRlIHNvdXJjZXMgZGVmaW5lIGEgY29ybmVy IiwKK3sgICBmUFJFRFVTRV9USU1JTkcoKTsKKwlmSElERShzaXplNHVfdCB0bXAgPSAwOyBzaXpl NHVfdCBpOykKKwlmU0VUSEFMRigwLHRtcCwoUHNWPDw4KXxQdFYpOworCWZTRVRIQUxGKDEsdG1w LChQc1Y8PDgpfFB0Vik7CisJZm9yIChpID0gMTsgaSA8IDk7IGkrKykgeworCQl0bXAgJj0gdG1w ID4+IDE7CisJfQorCVBkViA9IGY4QklUU09GKHRtcCAhPSAwKTsKK30pCisKK1E2SU5TTihDNF9m YXN0Y29ybmVyOV9ub3QsIlBkND0hZmFzdGNvcm5lcjkoUHM0LFB0NCkiLEFUVFJJQlMoQV9DUlNM T1QyMyxBX05PVEVfQ1JTTE9UMjMpLAorIkRldGVybWluZSB3aGV0aGVyIHRoZSBwcmVkaWNhdGUg c291cmNlcyBkZWZpbmUgYSBjb3JuZXIiLAoreworICAgIGZQUkVEVVNFX1RJTUlORygpOworCWZI SURFKHNpemU0dV90IHRtcCA9IDA7IHNpemU0dV90IGk7KQorCWZTRVRIQUxGKDAsdG1wLChQc1Y8 PDgpfFB0Vik7CisJZlNFVEhBTEYoMSx0bXAsKFBzVjw8OCl8UHRWKTsKKwlmb3IgKGkgPSAxOyBp IDwgOTsgaSsrKSB7CisJCXRtcCAmPSB0bXAgPj4gMTsKKwl9CisJUGRWID0gZjhCSVRTT0YodG1w ID09IDApOworfSkKKworCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9mbG9h dC5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvZmxvYXQuaWRlZgpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2JjNTdkCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0 L2hleGFnb24vaW1wb3J0ZWQvZmxvYXQuaWRlZgpAQCAtMCwwICsxLDQ5OCBAQAorLyoKKyAqICBD b3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorICovCisKKy8qCisgKiBGbG9hdGluZy1Qb2ludCBJbnN0cnVjdGlvbnMKKyAqLworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNjYWxhciBGUAkJCSAqLwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitRNklOU04oRjJfc2ZhZGQs IlJkMzI9c2ZhZGQoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IEFkZCIs Cit7IFJkVj1mVU5GTE9BVChmRkxPQVQoUnNWKStmRkxPQVQoUnRWKSk7fSkKKworUTZJTlNOKEYy X3Nmc3ViLCJSZDMyPXNmc3ViKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2lu dCBTdWJ0cmFjdCIsCit7IFJkVj1mVU5GTE9BVChmRkxPQVQoUnNWKS1mRkxPQVQoUnRWKSk7fSkK KworUTZJTlNOKEYyX3NmbXB5LCJSZDMyPXNmbXB5KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJG bG9hdGluZy1Qb2ludCBNdWx0aXBseSIsCit7IFJkVj1mVU5GTE9BVChmU0ZNUFkoZkZMT0FUKFJz ViksZkZMT0FUKFJ0VikpKTt9KQorCitRNklOU04oRjJfc2ZmbWEsIlJ4MzIrPXNmbXB5KFJzMzIs UnQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBGdXNlZCBNdWx0aXBseSBBZGQiLAor eyBSeFY9ZlVORkxPQVQoZkZNQUYoZkZMT0FUKFJzViksZkZMT0FUKFJ0ViksZkZMT0FUKFJ4Vikp KTt9KQorCitRNklOU04oRjJfc2ZmbWFfc2MsIlJ4MzIrPXNmbXB5KFJzMzIsUnQzMixQdTQpOnNj YWxlIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVsdGlwbHkgQWRkIHcvIEFk ZGl0aW9uYWwgU2NhbGluZyAoMioqUHUpIiwKK3sKKyAgICBmUFJFRFVTRV9USU1JTkcoKTsKKwlm SElERShzaXplNHNfdCB0bXA7KQorCWZDSEVDS1NGTkFOMyhSeFYsUnhWLFJzVixSdFYpOworCXRt cD1mVU5GTE9BVChmRk1BRlgoZkZMT0FUKFJzViksZkZMT0FUKFJ0ViksZkZMT0FUKFJ4ViksUHVW KSk7CisJaWYgKCEoKGZGTE9BVChSeFYpID09IDAuMCkgJiYgZklTWkVST1BST0QoZkZMT0FUKFJz ViksZkZMT0FUKFJ0VikpKSkgUnhWID0gdG1wOworfSkKKworUTZJTlNOKEYyX3NmZm1zLCJSeDMy LT1zZm1weShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVs dGlwbHkgQWRkIiwKK3sgUnhWPWZVTkZMT0FUKGZGTUFGKC1mRkxPQVQoUnNWKSxmRkxPQVQoUnRW KSxmRkxPQVQoUnhWKSkpOyB9KQorCitRNklOU04oRjJfc2ZmbWFfbGliLCJSeDMyKz1zZm1weShS czMyLFJ0MzIpOmxpYiIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IEZ1c2VkIE11bHRpcGx5 IEFkZCBmb3IgTGlicmFyeSBSb3V0aW5lcyIsCit7IGZGUFNFVFJPVU5EX05FQVJFU1QoKTsgZkhJ REUoaW50IGluZmlucDsgaW50IGluZm1pbnVzaW5mOyBzaXplNHNfdCB0bXA7KQorCWluZm1pbnVz aW5mID0gKChpc2luZihmRkxPQVQoUnhWKSkpICYmCisJCShmSVNJTkZQUk9EKGZGTE9BVChSc1Yp LGZGTE9BVChSdFYpKSkgJiYKKwkJKGZHRVRCSVQoMzEsUnNWIF4gUnhWIF4gUnRWKSAhPSAwKSk7 CisJaW5maW5wID0gKGlzaW5mKGZGTE9BVChSeFYpKSkgfHwgKGlzaW5mKGZGTE9BVChSdFYpKSkg fHwgKGlzaW5mKGZGTE9BVChSc1YpKSk7CisJZkNIRUNLU0ZOQU4zKFJ4VixSeFYsUnNWLFJ0Vik7 CisJdG1wPWZVTkZMT0FUKGZGTUFGKGZGTE9BVChSc1YpLGZGTE9BVChSdFYpLGZGTE9BVChSeFYp KSk7CisJaWYgKCEoKGZGTE9BVChSeFYpID09IDAuMCkgJiYgZklTWkVST1BST0QoZkZMT0FUKFJz ViksZkZMT0FUKFJ0VikpKSkgUnhWID0gdG1wOworCWZGUENBTkNFTEZMQUdTKCk7CisJaWYgKGlz aW5mKGZGTE9BVChSeFYpKSAmJiAhaW5maW5wKSBSeFYgPSBSeFYgLSAxOworCWlmIChpbmZtaW51 c2luZikgUnhWID0gMDsKK30pCisKK1E2SU5TTihGMl9zZmZtc19saWIsIlJ4MzItPXNmbXB5KFJz MzIsUnQzMik6bGliIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVsdGlwbHkg QWRkIGZvciBMaWJyYXJ5IFJvdXRpbmVzIiwKK3sgZkZQU0VUUk9VTkRfTkVBUkVTVCgpOyBmSElE RShpbnQgaW5maW5wOyBpbnQgaW5mbWludXNpbmY7IHNpemU0c190IHRtcDspCisJaW5mbWludXNp bmYgPSAoKGlzaW5mKGZGTE9BVChSeFYpKSkgJiYKKwkJKGZJU0lORlBST0QoZkZMT0FUKFJzViks ZkZMT0FUKFJ0VikpKSAmJgorCQkoZkdFVEJJVCgzMSxSc1YgXiBSeFYgXiBSdFYpID09IDApKTsK KwlpbmZpbnAgPSAoaXNpbmYoZkZMT0FUKFJ4VikpKSB8fCAoaXNpbmYoZkZMT0FUKFJ0VikpKSB8 fCAoaXNpbmYoZkZMT0FUKFJzVikpKTsKKwlmQ0hFQ0tTRk5BTjMoUnhWLFJ4VixSc1YsUnRWKTsK Kwl0bXA9ZlVORkxPQVQoZkZNQUYoLWZGTE9BVChSc1YpLGZGTE9BVChSdFYpLGZGTE9BVChSeFYp KSk7CisJaWYgKCEoKGZGTE9BVChSeFYpID09IDAuMCkgJiYgZklTWkVST1BST0QoZkZMT0FUKFJz ViksZkZMT0FUKFJ0VikpKSkgUnhWID0gdG1wOworCWZGUENBTkNFTEZMQUdTKCk7CisJaWYgKGlz aW5mKGZGTE9BVChSeFYpKSAmJiAhaW5maW5wKSBSeFYgPSBSeFYgLSAxOworCWlmIChpbmZtaW51 c2luZikgUnhWID0gMDsKK30pCisKKworUTZJTlNOKEYyX3NmY21wZXEsIlBkND1zZmNtcC5lcShS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmcgUG9pbnQgQ29tcGFyZSBmb3IgRXF1YWwi LAore1BkVj1mOEJJVFNPRihmRkxPQVQoUnNWKT09ZkZMT0FUKFJ0VikpO30pCisKK1E2SU5TTihG Ml9zZmNtcGd0LCJQZDQ9c2ZjbXAuZ3QoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5n LVBvaW50IENvbXBhcmUgZm9yIEdyZWF0ZXIgVGhhbiIsCit7UGRWPWY4QklUU09GKGZGTE9BVChS c1YpPmZGTE9BVChSdFYpKTt9KQorCisvKiBjbXBnZSBpcyBub3QgdGhlIHNhbWUgYXMgIWNtcGd0 KHN3YXBvcHMpIGluIElFRUUgKi8KKworUTZJTlNOKEYyX3NmY21wZ2UsIlBkND1zZmNtcC5nZShS czMyLFJ0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgR3JlYXRl ciBUaGFuIC8gRXF1YWwgVG8iLAore1BkVj1mOEJJVFNPRihmRkxPQVQoUnNWKT49ZkZMT0FUKFJ0 VikpO30pCisKKy8qIEV2ZXJ5b25lIHNlZW1zIHRvIGhhdmUgdGhpcy4uLiAqLworCitRNklOU04o RjJfc2ZjbXB1bywiUGQ0PXNmY21wLnVvKFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGlu Zy1Qb2ludCBDb21wYXJlIGZvciBVbm9yZGVyZWQiLAore1BkVj1mOEJJVFNPRihpc3Vub3JkZXJl ZChmRkxPQVQoUnNWKSxmRkxPQVQoUnRWKSkpO30pCisKKworUTZJTlNOKEYyX3NmbWF4LCJSZDMy PXNmbWF4KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyJNYXhpbXVtIG9mIEZsb2F0aW5nLVBvaW50 IHZhbHVlcyIsCit7IFJkViA9IGZVTkZMT0FUKGZTRl9NQVgoZkZMT0FUKFJzViksZkZMT0FUKFJ0 VikpKTsgfSkKKworUTZJTlNOKEYyX3NmbWluLCJSZDMyPXNmbWluKFJzMzIsUnQzMikiLEFUVFJJ QlMoKSwKKyJNaW5pbXVtIG9mIEZsb2F0aW5nLVBvaW50IHZhbHVlcyIsCit7IFJkViA9IGZVTkZM T0FUKGZTRl9NSU4oZkZMT0FUKFJzViksZkZMT0FUKFJ0VikpKTsgfSkKKworCitRNklOU04oRjJf c2ZjbGFzcywiUGQ0PXNmY2xhc3MoUnMzMiwjdTUpIixBVFRSSUJTKCksCisiQ2xhc3NpZnkgRmxv YXRpbmctUG9pbnQgVmFsdWUiLAoreworCWZISURFKGludCBjbGFzczspCisJUGRWID0gMDsKKwlj bGFzcyA9IGZwY2xhc3NpZnkoZkZMT0FUKFJzVikpOworCS8qIElzIHRoZSB2YWx1ZSB6ZXJvPyAq LworCWlmIChmR0VUQklUKDAsdWlWKSAmJiAoY2xhc3MgPT0gRlBfWkVSTykpIFBkViA9IDB4ZmY7 CisJaWYgKGZHRVRCSVQoMSx1aVYpICYmIChjbGFzcyA9PSBGUF9OT1JNQUwpKSBQZFYgPSAweGZm OworCWlmIChmR0VUQklUKDIsdWlWKSAmJiAoY2xhc3MgPT0gRlBfU1VCTk9STUFMKSkgUGRWID0g MHhmZjsKKwlpZiAoZkdFVEJJVCgzLHVpVikgJiYgKGNsYXNzID09IEZQX0lORklOSVRFKSkgUGRW ID0gMHhmZjsKKwlpZiAoZkdFVEJJVCg0LHVpVikgJiYgKGNsYXNzID09IEZQX05BTikpIFBkViA9 IDB4ZmY7CisJZkZQQ0FOQ0VMRkxBR1MoKTsKK30pCisKKy8qIFJhbmdlOiArLy0gKDEuMCAuLiAx Kyg2My82NCkpICogMioqKC02IC4uICs5KSAqLworLyogTW9yZSBpbW1lZGlhdGUgYml0cyBzaG91 bGQgcHJvYmFibHkgYmUgdXNlZCBmb3IgbW9yZSBwcmVjaXNpb24/ICovCisKK1E2SU5TTihGMl9z ZmltbV9wLCJSZDMyPXNmbWFrZSgjdTEwKTpwb3MiLEFUVFJJQlMoQV9TRk1BS0UpLAorIk1ha2Ug RmxvYXRpbmcgUG9pbnQgVmFsdWUiLAoreworCVJkViA9ICgxMjcgLSA2KSA8PCAyMzsKKwlSZFYg Kz0gdWlWIDw8IDE3OworfSkKKworUTZJTlNOKEYyX3NmaW1tX24sIlJkMzI9c2ZtYWtlKCN1MTAp Om5lZyIsQVRUUklCUyhBX1NGTUFLRSksCisiTWFrZSBGbG9hdGluZyBQb2ludCBWYWx1ZSIsCit7 CisJUmRWID0gKDEyNyAtIDYpIDw8IDIzOworCVJkViArPSAodWlWIDw8IDE3KTsKKwlSZFYgfD0g KDEgPDwgMzEpOworfSkKKworCitRNklOU04oRjJfc2ZkaXZjaGVhdCwiUmQzMj1zZmRpdmNoZWF0 KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9GQUtFSU5TTiksCisiQ2hlYXRpbmcgSW5zdHJ1Y3Rpb24g Zm9yIERpdmlkZSBUZXN0aW5nIiwKK3sKKwlSZFYgPSBmVU5GTE9BVChmRkxPQVQoUnNWKSAvIGZG TE9BVChSdFYpKTsKK30pCisKK1E2SU5TTihGMl9zZnJlY2lwYSwiUmQzMixQZTQ9c2ZyZWNpcGEo UnMzMixSdDMyKSIsQVRUUklCUyhBX05PVEVfQ09NUEFUX0FDQ1VSQUNZLEFfUkVTVFJJQ1RfTEFU RVBSRUQsQV9OT1RFX0xBVEVQUkVEKSwKKyJSZWNpcHJvY2FsIEFwcHJveGltYXRpb24gZm9yIERp dmlzaW9uIiwKK3sKKwlmSElERShpbnQgaWR4OykKKwlmSElERShpbnQgYWRqdXN0OykKKwlmSElE RShpbnQgbWFudDspCisJZkhJREUoaW50IGV4cDspCisJaWYgKGZTRl9SRUNJUF9DT01NT04oUnNW LFJ0VixSZFYsYWRqdXN0KSkgeworCQlQZVYgPSBhZGp1c3Q7CisJCWlkeCA9IChSdFYgPj4gMTYp ICYgMHg3ZjsKKwkJbWFudCA9IChmU0ZfUkVDSVBfTE9PS1VQKGlkeCkgPDwgMTUpIHwgMTsKKwkJ ZXhwID0gZlNGX0JJQVMoKSAtIChmU0ZfR0VURVhQKFJ0VikgLSBmU0ZfQklBUygpKSAtIDE7CisJ CVJkViA9IGZNQUtFU0YoZkdFVEJJVCgzMSxSdFYpLGV4cCxtYW50KTsKKwl9Cit9KQorCitRNklO U04oRjJfc2ZmaXh1cG4sIlJkMzI9c2ZmaXh1cG4oUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZp eCBVcCBOdW1lcmF0b3IiLAoreworCWZISURFKGludCBhZGp1c3Q7KQorCWZTRl9SRUNJUF9DT01N T04oUnNWLFJ0VixSZFYsYWRqdXN0KTsKKwlSZFYgPSBSc1Y7Cit9KQorCitRNklOU04oRjJfc2Zm aXh1cGQsIlJkMzI9c2ZmaXh1cGQoUnMzMixSdDMyKSIsQVRUUklCUygpLAorIkZpeCBVcCBEZW5v bWluYXRvciIsCit7CisJZkhJREUoaW50IGFkanVzdDspCisJZlNGX1JFQ0lQX0NPTU1PTihSc1Ys UnRWLFJkVixhZGp1c3QpOworCVJkViA9IFJ0VjsKK30pCisKK1E2SU5TTihGMl9zZmludnNxcnRh LCJSZDMyLFBlND1zZmludnNxcnRhKFJzMzIpIixBVFRSSUJTKEFfTk9URV9DT01QQVRfQUNDVVJB Q1ksQV9OT1RFX0xBVEVQUkVELEFfUkVTVFJJQ1RfTEFURVBSRUQpLAorIlJlY2lwcm9jYWwgU3F1 YXJlIFJvb3QgQXBwcm94aW1hdGlvbiIsCit7CisJZkhJREUoaW50IGlkeDspCisJZkhJREUoaW50 IGFkanVzdDspCisJZkhJREUoaW50IG1hbnQ7KQorCWZISURFKGludCBleHA7KQorCWlmIChmU0Zf SU5WU1FSVF9DT01NT04oUnNWLFJkVixhZGp1c3QpKSB7CisJCVBlViA9IGFkanVzdDsKKwkJaWR4 ID0gKFJzViA+PiAxNykgJiAweDdmOworCQltYW50ID0gKGZTRl9JTlZTUVJUX0xPT0tVUChpZHgp IDw8IDE1KTsKKwkJZXhwID0gZlNGX0JJQVMoKSAtICgoZlNGX0dFVEVYUChSc1YpIC0gZlNGX0JJ QVMoKSkgPj4gMSkgLSAxOworCQlSZFYgPSBmTUFLRVNGKGZHRVRCSVQoMzEsUnNWKSxleHAsbWFu dCk7CisJfQorfSkKKworUTZJTlNOKEYyX3NmZml4dXByLCJSZDMyPXNmZml4dXByKFJzMzIpIixB VFRSSUJTKCksCisiRml4IFVwIFJhZGljYW5kIiwKK3sKKwlmSElERShpbnQgYWRqdXN0OykKKwlm U0ZfSU5WU1FSVF9DT01NT04oUnNWLFJkVixhZGp1c3QpOworCVJkViA9IFJzVjsKK30pCisKK1E2 SU5TTihGMl9zZnNxcnRjaGVhdCwiUmQzMj1zZnNxcnRjaGVhdChSczMyKSIsQVRUUklCUyhBX0ZB S0VJTlNOKSwKKyJDaGVhdGluZyBpbnN0cnVjdGlvbiBmb3IgU1FSVCBUZXN0aW5nIiwKK3sKKwlS ZFYgPSBmVU5GTE9BVChzcXJ0ZihmRkxPQVQoUnNWKSkpOworfSkKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTY2FsYXIgRFAJCQkgKi8KKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworUTZJTlNOKEYyX2RmYWRkLCJSZGQzMj1kZmFk ZChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZy1Qb2ludCBBZGQiLAoreyBSZGRW PWZVTkRPVUJMRShmRE9VQkxFKFJzc1YpK2ZET1VCTEUoUnR0VikpO30pCisKK1E2SU5TTihGMl9k ZnN1YiwiUmRkMzI9ZGZzdWIoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiRmxvYXRpbmctUG9p bnQgU3VidHJhY3QiLAoreyBSZGRWPWZVTkRPVUJMRShmRE9VQkxFKFJzc1YpLWZET1VCTEUoUnR0 VikpO30pCisKK1E2SU5TTihGMl9kZm1heCwiUmRkMzI9ZGZtYXgoUnNzMzIsUnR0MzIpIixBVFRS SUJTKCksCisiTWF4aW11bSBvZiBGbG9hdGluZy1Qb2ludCB2YWx1ZXMiLAoreyBSZGRWID0gZlVO RE9VQkxFKGZERl9NQVgoZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSk7IH0pCisKK1E2SU5T TihGMl9kZm1pbiwiUmRkMzI9ZGZtaW4oUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiTWluaW11 bSBvZiBGbG9hdGluZy1Qb2ludCB2YWx1ZXMiLAoreyBSZGRWID0gZlVORE9VQkxFKGZERl9NSU4o ZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSk7IH0pCisKK1E2SU5TTihGMl9kZm1weWZpeCwi UmRkMzI9ZGZtcHlmaXgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiRml4IFVwIE11bHRpcGxp Y2FuZCBmb3IgTXVsdGlwbGljYXRpb24iLAoreworCWlmIChmREZfSVNERU5PUk0oUnNzVikgJiYg ZkRGX0lTQklHKFJ0dFYpICYmIGZERl9JU05PUk1BTChSdHRWKSkgUmRkViA9IGZVTkRPVUJMRShm RE9VQkxFKFJzc1YpICogMHgxLjBwNTIpOworCWVsc2UgaWYgKGZERl9JU0RFTk9STShSdHRWKSAm JiBmREZfSVNCSUcoUnNzVikgJiYgZkRGX0lTTk9STUFMKFJzc1YpKSBSZGRWID0gZlVORE9VQkxF KGZET1VCTEUoUnNzVikgKiAweDEuMHAtNTIpOworCWVsc2UgUmRkViA9IFJzc1Y7Cit9KQorCitR NklOU04oRjJfZGZtcHlsbCwiUmRkMzI9ZGZtcHlsbChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwK KyJNdWx0aXBseSBsb3cqbG93IGFuZCBzaGlmdCBvZmYgbG93IDMyIGJpdHMgaW50byBzdGlja3kg KGluIE1TQikiLAoreworCWZISURFKHNpemU4dV90IHByb2Q7KQorCXByb2QgPSBmTVBZMzJVVShm R0VUVVdPUkQoMCxSc3NWKSxmR0VUVVdPUkQoMCxSdHRWKSk7CisJUmRkViA9IChwcm9kID4+IDMy KSA8PCAxOworCWlmIChmR0VUVVdPUkQoMCxwcm9kKSAhPSAwKSBmU0VUQklUKDAsUmRkViwxKTsK K30pCisKK1E2SU5TTihGMl9kZm1weWxoLCJSeHgzMis9ZGZtcHlsaChSc3MzMixSdHQzMikiLEFU VFJJQlMoKSwKKyJNdWx0aXBseSBsb3cqaGlnaCBhbmQgYWNjdW11bGF0ZSIsCit7CisJUnh4ViAr PSAoZkdFVFVXT1JEKDAsUnNzVikgKiAoMHgwMDEwMDAwMCB8IGZaWFROKDIwLDY0LGZHRVRVV09S RCgxLFJ0dFYpKSkpIDw8IDE7Cit9KQorCitRNklOU04oRjJfZGZtcHloaCwiUnh4MzIrPWRmbXB5 aGgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiTXVsdGlwbHkgaGlnaCpoaWdoIGFuZCBhY2N1 bXVsYXRlIHdpdGggTCpIIHZhbHVlIiwKK3sKKwlSeHhWID0gZlVORE9VQkxFKGZERl9NUFlfSEgo ZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpLFJ4eFYpKTsKK30pCisKKworCisjaWZkZWYgQURE X0RQX09QUworUTZJTlNOKEYyX2RmbXB5LCJSZGQzMj1kZm1weShSc3MzMixSdHQzMikiLEFUVFJJ QlMoQV9GQUtFSU5TTiksCisiRmxvYXRpbmctUG9pbnQgTXVsdGlwbHkiLAoreyBGTEFURU5DWSg0 KTtSZGRWPWZVTkRPVUJMRShmREZNUFkoZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSk7fSkK KworUTZJTlNOKEYyX2RmZm1hLCJSeHgzMis9ZGZtcHkoUnNzMzIsUnR0MzIpIixBVFRSSUJTKEFf RkFLRUlOU04pLAorIkZsb2F0aW5nLVBvaW50IEZ1c2VkIE11bHRpcGx5IEFkZCIsCit7IEZMQVRF TkNZKDUpO1J4eFY9ZlVORE9VQkxFKGZGTUEoZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpLGZE T1VCTEUoUnh4VikpKTt9KQorCitRNklOU04oRjJfZGZmbXMsIlJ4eDMyLT1kZm1weShSc3MzMixS dHQzMikiLEFUVFJJQlMoQV9GQUtFSU5TTiksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVsdGlw bHkgQWRkIiwKK3sgRkxBVEVOQ1koNSk7Unh4Vj1mVU5ET1VCTEUoZkZNQSgtZkRPVUJMRShSc3NW KSxmRE9VQkxFKFJ0dFYpLGZET1VCTEUoUnh4VikpKTt9KQorCitRNklOU04oRjJfZGZmbWFfbGli LCJSeHgzMis9ZGZtcHkoUnNzMzIsUnR0MzIpOmxpYiIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJG bG9hdGluZy1Qb2ludCBGdXNlZCBNdWx0aXBseSBBZGQgZm9yIExpYnJhcnkgUm91dGluZXMiLAor eyBGTEFURU5DWSg1KTtmRlBTRVRST1VORF9ORUFSRVNUKCk7IGZISURFKGludCBpbmZpbnA7IGlu dCBpbmZtaW51c2luZjspCisgIGluZmlucCA9IChpc2luZihmRE9VQkxFKFJ4eFYpKSkgfHwgKGlz aW5mKGZET1VCTEUoUnR0VikpKSB8fCAoaXNpbmYoZkRPVUJMRShSc3NWKSkpOworICBpbmZtaW51 c2luZiA9ICgoaXNpbmYoZkRPVUJMRShSeHhWKSkpICYmCisJCShmSVNJTkZQUk9EKGZET1VCTEUo UnNzViksZkRPVUJMRShSdHRWKSkpICYmCisJCShmR0VUQklUKDYzLFJzc1YgXiBSeHhWIF4gUnR0 VikgIT0gMCkpOworICBmQ0hFQ0tERk5BTjMoUnh4VixSeHhWLFJzc1YsUnR0Vik7CisgIGlmICgo ZkRPVUJMRShSc3NWKSAhPSAwLjApICYmIChmRE9VQkxFKFJ0dFYpICE9IDAuMCkpIHsKKyAgICBS eHhWPWZVTkRPVUJMRShmRk1BKGZET1VCTEUoUnNzViksZkRPVUJMRShSdHRWKSxmRE9VQkxFKFJ4 eFYpKSk7CisgIH0gZWxzZSB7CisgICAgaWYgKGlzaW5mKGZET1VCTEUoUnNzVikpIHx8IGlzaW5m KGZET1VCTEUoUnR0VikpKSBSeHhWID0gZkRGTkFOVkFMKCk7CisgIH0KKyAgZkZQQ0FOQ0VMRkxB R1MoKTsKKyAgaWYgKGlzaW5mKGZET1VCTEUoUnh4VikpICYmICFpbmZpbnApIFJ4eFYgPSBSeHhW IC0gMTsKKyAgaWYgKGluZm1pbnVzaW5mKSBSeHhWID0gMDsKK30pCisKKworUTZJTlNOKEYyX2Rm Zm1zX2xpYiwiUnh4MzItPWRmbXB5KFJzczMyLFJ0dDMyKTpsaWIiLEFUVFJJQlMoQV9GQUtFSU5T TiksCisiRmxvYXRpbmctUG9pbnQgRnVzZWQgTXVsdGlwbHkgQWRkIGZvciBMaWJyYXJ5IFJvdXRp bmVzIiwKK3sgRkxBVEVOQ1koNSk7IGZGUFNFVFJPVU5EX05FQVJFU1QoKTsgZkhJREUoaW50IGlu ZmlucDsgaW50IGluZm1pbnVzaW5mOykKKyAgaW5maW5wID0gKGlzaW5mKGZET1VCTEUoUnh4Vikp KSB8fCAoaXNpbmYoZkRPVUJMRShSdHRWKSkpIHx8IChpc2luZihmRE9VQkxFKFJzc1YpKSk7Cisg IGluZm1pbnVzaW5mID0gKChpc2luZihmRE9VQkxFKFJ4eFYpKSkgJiYKKwkJKGZJU0lORlBST0Qo ZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSkgJiYKKwkJKGZHRVRCSVQoNjMsUnNzViBeIFJ4 eFYgXiBSdHRWKSA9PSAwKSk7CisgIGZDSEVDS0RGTkFOMyhSeHhWLFJ4eFYsUnNzVixSdHRWKTsK KyAgaWYgKChmRE9VQkxFKFJzc1YpICE9IDAuMCkgJiYgKGZET1VCTEUoUnR0VikgIT0gMC4wKSkg eworICAgIFJ4eFY9ZlVORE9VQkxFKGZGTUEoLWZET1VCTEUoUnNzViksZkRPVUJMRShSdHRWKSxm RE9VQkxFKFJ4eFYpKSk7CisgIH0gZWxzZSB7CisgICAgaWYgKGlzaW5mKGZET1VCTEUoUnNzVikp IHx8IGlzaW5mKGZET1VCTEUoUnR0VikpKSBSeHhWID0gZkRGTkFOVkFMKCk7CisgIH0KKyAgZkZQ Q0FOQ0VMRkxBR1MoKTsKKyAgaWYgKGlzaW5mKGZET1VCTEUoUnh4VikpICYmICFpbmZpbnApIFJ4 eFYgPSBSeHhWIC0gMTsKKyAgaWYgKGluZm1pbnVzaW5mKSBSeHhWID0gMDsKK30pCisKKworUTZJ TlNOKEYyX2RmZm1hX3NjLCJSeHgzMis9ZGZtcHkoUnNzMzIsUnR0MzIsUHU0KTpzY2FsZSIsQVRU UklCUyhBX0ZBS0VJTlNOKSwKKyJGbG9hdGluZy1Qb2ludCBGdXNlZCBNdWx0aXBseSBBZGQgdy8g QWRkaXRpb25hbCBTY2FsaW5nICgyKiooNCpQdSkpIiwKK3sgRkxBVEVOQ1koNSk7CisgIGZISURF KHNpemU4c190IHRtcDspCisgIGZDSEVDS0RGTkFOMyhSeHhWLFJ4eFYsUnNzVixSdHRWKTsKKyAg dG1wPWZVTkRPVUJMRShmRk1BWChmRE9VQkxFKFJzc1YpLGZET1VCTEUoUnR0ViksZkRPVUJMRShS eHhWKSxQdVYpKTsKKyAgaWYgKChmRE9VQkxFKHRtcCkgIT0gZkRPVUJMRShSeHhWKSkgfHwgKChm RE9VQkxFKFJzc1YpICE9IDAuMCkgJiYgKGZET1VCTEUoUnR0VikgIT0gMC4wKSkpIFJ4eFYgPSB0 bXA7Cit9KQorCisjZW5kaWYKKworUTZJTlNOKEYyX2RmY21wZXEsIlBkND1kZmNtcC5lcShSc3Mz MixSdHQzMikiLEFUVFJJQlMoKSwKKyJGbG9hdGluZyBQb2ludCBDb21wYXJlIGZvciBFcXVhbCIs Cit7UGRWPWY4QklUU09GKGZET1VCTEUoUnNzVik9PWZET1VCTEUoUnR0VikpO30pCisKK1E2SU5T TihGMl9kZmNtcGd0LCJQZDQ9ZGZjbXAuZ3QoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisiRmxv YXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgR3JlYXRlciBUaGFuIiwKK3tQZFY9ZjhCSVRTT0YoZkRP VUJMRShSc3NWKT5mRE9VQkxFKFJ0dFYpKTt9KQorCisKKy8qIGNtcGdlIGlzIG5vdCB0aGUgc2Ft ZSBhcyAhY21wZ3Qoc3dhcG9wcykgaW4gSUVFRSAqLworCitRNklOU04oRjJfZGZjbXBnZSwiUGQ0 PWRmY21wLmdlKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAorIkZsb2F0aW5nLVBvaW50IENvbXBh cmUgZm9yIEdyZWF0ZXIgVGhhbiAvIEVxdWFsIFRvIiwKK3tQZFY9ZjhCSVRTT0YoZkRPVUJMRShS c3NWKT49ZkRPVUJMRShSdHRWKSk7fSkKKworLyogRXZlcnlvbmUgc2VlbXMgdG8gaGF2ZSB0aGlz Li4uICovCisKK1E2SU5TTihGMl9kZmNtcHVvLCJQZDQ9ZGZjbXAudW8oUnNzMzIsUnR0MzIpIixB VFRSSUJTKCksCisiRmxvYXRpbmctUG9pbnQgQ29tcGFyZSBmb3IgVW5vcmRlcmVkIiwKK3tQZFY9 ZjhCSVRTT0YoaXN1bm9yZGVyZWQoZkRPVUJMRShSc3NWKSxmRE9VQkxFKFJ0dFYpKSk7fSkKKwor CitRNklOU04oRjJfZGZjbGFzcywiUGQ0PWRmY2xhc3MoUnNzMzIsI3U1KSIsQVRUUklCUygpLAor IkNsYXNzaWZ5IEZsb2F0aW5nLVBvaW50IFZhbHVlIiwKK3sKKwlmSElERShpbnQgY2xhc3M7KQor CVBkViA9IDA7CisJY2xhc3MgPSBmcGNsYXNzaWZ5KGZET1VCTEUoUnNzVikpOworCS8qIElzIHRo ZSB2YWx1ZSB6ZXJvPyAqLworCWlmIChmR0VUQklUKDAsdWlWKSAmJiAoY2xhc3MgPT0gRlBfWkVS TykpIFBkViA9IDB4ZmY7CisJaWYgKGZHRVRCSVQoMSx1aVYpICYmIChjbGFzcyA9PSBGUF9OT1JN QUwpKSBQZFYgPSAweGZmOworCWlmIChmR0VUQklUKDIsdWlWKSAmJiAoY2xhc3MgPT0gRlBfU1VC Tk9STUFMKSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCgzLHVpVikgJiYgKGNsYXNzID09IEZQ X0lORklOSVRFKSkgUGRWID0gMHhmZjsKKwlpZiAoZkdFVEJJVCg0LHVpVikgJiYgKGNsYXNzID09 IEZQX05BTikpIFBkViA9IDB4ZmY7CisJZkZQQ0FOQ0VMRkxBR1MoKTsKK30pCisKKworLyogUmFu Z2U6ICsvLSAoMS4wIC4uIDErKDYzLzY0KSkgKiAyKiooLTYgLi4gKzkpICovCisvKiBNb3JlIGlt bWVkaWF0ZSBiaXRzIHNob3VsZCBwcm9iYWJseSBiZSB1c2VkIGZvciBtb3JlIHByZWNpc2lvbj8g Ki8KKworUTZJTlNOKEYyX2RmaW1tX3AsIlJkZDMyPWRmbWFrZSgjdTEwKTpwb3MiLEFUVFJJQlMo QV9ERk1BS0UpLAorIk1ha2UgRmxvYXRpbmcgUG9pbnQgVmFsdWUiLAoreworCVJkZFYgPSAoMTAy M1VMTCAtIDYpIDw8IDUyOworCVJkZFYgKz0gKGZISURFKChzaXplOHVfdCkpdWlWKSA8PCA0NjsK K30pCisKK1E2SU5TTihGMl9kZmltbV9uLCJSZGQzMj1kZm1ha2UoI3UxMCk6bmVnIixBVFRSSUJT KEFfREZNQUtFKSwKKyJNYWtlIEZsb2F0aW5nIFBvaW50IFZhbHVlIiwKK3sKKwlSZGRWID0gKDEw MjNVTEwgLSA2KSA8PCA1MjsKKwlSZGRWICs9IChmSElERSgoc2l6ZTh1X3QpKXVpVikgPDwgNDY7 CisJUmRkViB8PSAoKDFVTEwpIDw8IDYzKTsKK30pCisKKworI2lmZGVmIEFERF9EUF9PUFMKK1E2 SU5TTihGMl9kZmRpdmNoZWF0LCJSZGQzMj1kZmRpdmNoZWF0KFJzczMyLFJ0dDMyKSIsQVRUUklC UyhBX0ZBS0VJTlNOKSwKKyJDaGVhdGluZyBJbnN0cnVjdGlvbiBmb3IgRGl2aWRlIFRlc3Rpbmci LAoreworCVJkZFYgPSBmVU5ET1VCTEUoZkRPVUJMRShSc3NWKSAvIGZET1VCTEUoUnR0VikpOwor fSkKKworCitRNklOU04oRjJfZGZyZWNpcGEsIlJkZDMyLFBlND1kZnJlY2lwYShSc3MzMixSdHQz MikiLEFUVFJJQlMoQV9OT1RFX0NPTVBBVF9BQ0NVUkFDWSxBX0ZBS0VJTlNOKSwKKyJSZWNpcHJv Y2FsIEFwcHJveGltYXRpb24gZm9yIERpdmlzaW9uIiwKK3sKKwlmSElERShpbnQgaWR4OykKKwlm SElERShpbnQgYWRqdXN0OykKKwlmSElERShzaXplOHNfdCBtYW50OykKKwlmSElERShpbnQgZXhw OykKKwlpZiAoZkRGX1JFQ0lQX0NPTU1PTihSc3NWLFJ0dFYsUmRkVixhZGp1c3QpKSB7CisJCVBl ViA9IGFkanVzdDsKKwkJaWR4ID0gKFJ0dFYgPj4gNDUpICYgMHg3ZjsKKwkJbWFudCA9IChmREZf UkVDSVBfTE9PS1VQKGlkeCkgPDwgNDQpIHwgMTsKKwkJZXhwID0gZkRGX0JJQVMoKSAtIChmREZf R0VURVhQKFJ0dFYpIC0gZkRGX0JJQVMoKSkgLSAxOworCQlSZGRWID0gZk1BS0VERihmR0VUQklU KDYzLFJ0dFYpLGV4cCxtYW50KTsKKwl9Cit9KQorCitRNklOU04oRjJfZGZmaXh1cG4sIlJkZDMy PWRmZml4dXBuKFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJGaXggVXAgTnVt ZXJhdG9yIiwKK3sKKwlmSElERShpbnQgYWRqdXN0OykKKwlmREZfUkVDSVBfQ09NTU9OKFJzc1Ys UnR0VixSZGRWLGFkanVzdCk7CisJUmRkViA9IFJzc1Y7Cit9KQorCitRNklOU04oRjJfZGZmaXh1 cGQsIlJkZDMyPWRmZml4dXBkKFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJG aXggVXAgRGVub21pbmF0b3IiLAoreworCWZISURFKGludCBhZGp1c3Q7KQorCWZERl9SRUNJUF9D T01NT04oUnNzVixSdHRWLFJkZFYsYWRqdXN0KTsKKwlSZGRWID0gUnR0VjsKK30pCisKKworCisK K1E2SU5TTihGMl9kZmludnNxcnRhLCJSZGQzMixQZTQ9ZGZpbnZzcXJ0YShSc3MzMikiLEFUVFJJ QlMoQV9OT1RFX0NPTVBBVF9BQ0NVUkFDWSxBX0ZBS0VJTlNOKSwKKyJSZWNpcHJvY2FsIEFwcHJv eGltYXRpb24gZm9yIERpdmlzaW9uIiwKK3sKKwlmSElERShpbnQgaWR4OykKKwlmSElERShpbnQg YWRqdXN0OykKKwlmSElERShzaXplOHVfdCBtYW50OykKKwlmSElERShpbnQgZXhwOykKKwlpZiAo ZkRGX0lOVlNRUlRfQ09NTU9OKFJzc1YsUmRkVixhZGp1c3QpKSB7CisJCVBlViA9IGFkanVzdDsK KwkJaWR4ID0gKFJzc1YgPj4gNDYpICYgMHg3ZjsKKwkJbWFudCA9IChmREZfSU5WU1FSVF9MT09L VVAoaWR4KSA8PCA0NCk7CisJCWV4cCA9IGZERl9CSUFTKCkgLSAoKGZERl9HRVRFWFAoUnNzVikg LSBmREZfQklBUygpKSA+PiAxKSAtIDE7CisJCVJkZFYgPSBmTUFLRURGKGZHRVRCSVQoNjMsUnNz ViksZXhwLG1hbnQpOworCX0KK30pCisKK1E2SU5TTihGMl9kZmZpeHVwciwiUmRkMzI9ZGZmaXh1 cHIoUnNzMzIpIixBVFRSSUJTKEFfRkFLRUlOU04pLAorIkZpeCBVcCBSYWRpY2FuZCIsCit7CisJ ZkhJREUoaW50IGFkanVzdDspCisJZkRGX0lOVlNRUlRfQ09NTU9OKFJzc1YsUmRkVixhZGp1c3Qp OworCVJkZFYgPSBSc3NWOworfSkKKworUTZJTlNOKEYyX2Rmc3FydGNoZWF0LCJSZGQzMj1kZnNx cnRjaGVhdChSc3MzMikiLEFUVFJJQlMoQV9GQUtFSU5TTiksCisiQ2hlYXRpbmcgaW5zdHJ1Y3Rp b24gZm9yIFNRUlQgVGVzdGluZyIsCit7CisJUmRkViA9IGZVTkRPVUJMRShzcXJ0KGZET1VCTEUo UnNzVikpKTsKK30pCisjZW5kaWYKKworCisKKworCisvKiBDT05WRVJTSU9OICovCisKKyNkZWZp bmUgQ09OVkVSVChUQUcsREVTVCxERVNUVixTUkMsU1JDVixPVVRDQVNULE9VVFRZUEUsSU5DQVNU LElOVFlQRSxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAorICAgIFE2SU5TTihGMl9jb252XyMj VEFHIyNNT0RFVEFHLCNERVNUIj1jb252ZXJ0XyIjVEFHIigiI1NSQyIpIiNNT0RFU1lOLEFUVFJJ QlMoKSwgXAorICAgICJGbG9hdGluZyBwb2ludCBmb3JtYXQgY29udmVyc2lvbiIsIFwKKyAgICB7 IE1PREVCRUggREVTVFYgPSBPVVRDQVNUKGNvbnZfIyNJTlRZUEUjI190b18jI09VVFRZUEUoSU5D QVNUKFNSQ1YpKSk7IH0pCisKK0NPTlZFUlQoc2YyZGYsUmRkMzIsUmRkVixSczMyLFJzVixmVU5E T1VCTEUsZGYsZkZMT0FULHNmLCwsKQorQ09OVkVSVChkZjJzZixSZDMyLFJkVixSc3MzMixSc3NW LGZVTkZMT0FULHNmLGZET1VCTEUsZGYsLCwpCisKKyNkZWZpbmUgQUxMSU5URFNUKFRBR1NUQVJU LFNSQyxTUkNWLElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0NPTlZF UlQoVEFHU1RBUlQjI3V3LFJkMzIsUmRWLFNSQyxTUkNWLGZDQVNUNHUsNHUsSU5DQVNULElOVFlQ RSxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAorQ09OVkVSVChUQUdTVEFSVCMjdyxSZDMyLFJk VixTUkMsU1JDVixmQ0FTVDRzLDRzLElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVC RUgpIFwKK0NPTlZFUlQoVEFHU1RBUlQjI3VkLFJkZDMyLFJkZFYsU1JDLFNSQ1YsZkNBU1Q4dSw4 dSxJTkNBU1QsSU5UWVBFLE1PREVUQUcsTU9ERVNZTixNT0RFQkVIKSBcCitDT05WRVJUKFRBR1NU QVJUIyNkLFJkZDMyLFJkZFYsU1JDLFNSQ1YsZkNBU1Q4cyw4cyxJTkNBU1QsSU5UWVBFLE1PREVU QUcsTU9ERVNZTixNT0RFQkVIKQorCisjZGVmaW5lIEFMTEZQRFNUKFRBR1NUQVJULFNSQyxTUkNW LElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0NPTlZFUlQoVEFHU1RB UlQjI3NmLFJkMzIsUmRWLFNSQyxTUkNWLGZVTkZMT0FULHNmLElOQ0FTVCxJTlRZUEUsTU9ERVRB RyxNT0RFU1lOLE1PREVCRUgpIFwKK0NPTlZFUlQoVEFHU1RBUlQjI2RmLFJkZDMyLFJkZFYsU1JD LFNSQ1YsZlVORE9VQkxFLGRmLElOQ0FTVCxJTlRZUEUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgp CisKKyNkZWZpbmUgQUxMSU5UU1JDKEdFTixNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkgXAorR0VO KHV3IyMyLFJzMzIsUnNWLGZDQVNUNHUsNHUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0dF Tih3IyMyLFJzMzIsUnNWLGZDQVNUNHMsNHMsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0dF Tih1ZCMjMixSc3MzMixSc3NWLGZDQVNUOHUsOHUsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwK K0dFTihkIyMyLFJzczMyLFJzc1YsZkNBU1Q4cyw4cyxNT0RFVEFHLE1PREVTWU4sTU9ERUJFSCkK KworI2RlZmluZSBBTExGUFNSQyhHRU4sTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0dFTihz ZiMjMixSczMyLFJzVixmRkxPQVQsc2YsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpIFwKK0dFTihk ZiMjMixSc3MzMixSc3NWLGZET1VCTEUsZGYsTU9ERVRBRyxNT0RFU1lOLE1PREVCRUgpCisKK0FM TElOVFNSQyhBTExGUERTVCwsLCkKK0FMTEZQU1JDKEFMTElOVERTVCwsLCkKK0FMTEZQU1JDKEFM TElOVERTVCxfY2hvcCw6Y2hvcCxmRlBTRVRST1VORF9DSE9QKCk7KQorCmRpZmYgLS1naXQgYS90 YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9sZHN0LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRl ZC9sZHN0LmlkZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE1MzQzOAot LS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2xkc3QuaWRlZgpAQCAt MCwwICsxLDQyMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3Zh dGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBMb2FkIGFuZCBTdG9yZSBp bnN0cnVjdGlvbiBkZWZpbml0aW9ucworICovCisKKyNkZWZpbmUgRlJBTUVfRVhQTElDSVQgMQor CisvKiBUaGUgc2V0IG9mIGFkZHJlc3NpbmcgbW9kZXMgc3RhbmRhcmQgdG8gYWxsIExvYWQgaW5z dHJ1Y3Rpb25zICovCisjZGVmaW5lIFNURF9MRF9BTU9ERVMoVEFHLE9QRVIsREVTQ1IsQVRUUklC LFNIRlQsU0VNQU5USUNTLFNDQUxFKVwKK1E2SU5TTihMMl8jI1RBRyMjX2lvLCAgT1BFUiIoUnMz MisjczExOiJTSEZUIikiLCAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZJTU1FWFQoc2lWKTsgZkVB X1JJKFJzVixzaVYpOyBTRU1BTlRJQ1M7IH0pXAorUTZJTlNOKEw0XyMjVEFHIyNfdXIsICBPUEVS IihSdDMyPDwjdTIrI1U2KSIsICAgICAgICAgICAgIEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhU KFVpVik7IGZFQV9JUnMoVWlWLFJ0Vix1aVYpOyBTRU1BTlRJQ1M7fSlcCitRNklOU04oTDRfIyNU QUcjI19hcCwgIE9QRVIiKFJlMzI9I1U2KSIsICAgICAgICAgICAgICAgICAgQVRUUklCLERFU0NS LHtmTVVTVF9JTU1FWFQoVWlWKTsgZkVBX0lNTShVaVYpOyBTRU1BTlRJQ1M7IFJlVj1VaVY7IH0p XAorUTZJTlNOKEwyXyMjVEFHIyNfcHIsICBPUEVSIihSeDMyKytNdTIpIiwgICAgICAgICAgICAg ICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBmUE1fTShSeFYsTXVWKTsgU0VNQU5USUNT O30pXAorUTZJTlNOKEwyXyMjVEFHIyNfcGJyLCBPUEVSIihSeDMyKytNdTI6YnJldikiLCAgICAg ICAgICAgIEFUVFJJQixERVNDUix7ZkVBX0JSRVZSKFJ4Vik7IGZQTV9NKFJ4VixNdVYpOyBTRU1B TlRJQ1M7fSlcCitRNklOU04oTDJfIyNUQUcjI19waSwgIE9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIp IiwgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9JKFJ4VixzaVYpOyBT RU1BTlRJQ1M7fSlcCitRNklOU04oTDJfIyNUQUcjI19wY2ksIE9QRVIiKFJ4MzIrKyNzNDoiU0hG VCI6Y2lyYyhNdTIpKSIsQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9DSVJJKFJ4Vixz aVYsTXVWKTsgU0VNQU5USUNTO30pXAorUTZJTlNOKEwyXyMjVEFHIyNfcGNyLCBPUEVSIihSeDMy KytJOmNpcmMoTXUyKSkiLCAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9DSVJSKFJ4 VixmUkVBRF9JUkVHKE11Vik8PFNDQUxFLE11Vik7IFNFTUFOVElDUzt9KVwKK0RFRl9NQVBQSU5H KEwyXyMjVEFHIyNfem9tYXAsIE9QRVIiKFJzMzIpIiwgT1BFUiIoUnMzMisjMCkiKTsKKworLyog VGhlIHNldCBvZiAzMi1iaXQgbG9hZCBpbnN0cnVjdGlvbnMgKi8KK1NURF9MRF9BTU9ERVMobG9h ZHJ1YiwiUmQzMj1tZW11YiIsIkxvYWQgVW5zaWduZWQgQnl0ZSIsQVRUUklCUyhBX01FTVNJWkVf MUIsQV9MT0FEKSwiMCIsZkxPQUQoMSwxLHUsRUEsUmRWKSwwKQorU1REX0xEX0FNT0RFUyhsb2Fk cmIsICJSZDMyPW1lbWIiLCAiTG9hZCBzaWduZWQgQnl0ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIs QV9MT0FEKSwiMCIsZkxPQUQoMSwxLHMsRUEsUmRWKSwwKQorU1REX0xEX0FNT0RFUyhsb2FkcnVo LCJSZDMyPW1lbXVoIiwiTG9hZCB1bnNpZ25lZCBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9NRU1T SVpFXzJCLEFfTE9BRCksIjEiLGZMT0FEKDEsMix1LEVBLFJkViksMSkKK1NURF9MRF9BTU9ERVMo bG9hZHJoLCAiUmQzMj1tZW1oIiwgIkxvYWQgc2lnbmVkIEhhbGYgaW50ZWdlciIsQVRUUklCUyhB X01FTVNJWkVfMkIsQV9MT0FEKSwiMSIsZkxPQUQoMSwyLHMsRUEsUmRWKSwxKQorU1REX0xEX0FN T0RFUyhsb2FkcmksICJSZDMyPW1lbXciLCAiTG9hZCBXb3JkIixBVFRSSUJTKEFfTUVNU0laRV80 QixBX0xPQUQpLCIyIixmTE9BRCgxLDQsdSxFQSxSZFYpLDIpCitTVERfTERfQU1PREVTKGxvYWRy ZCwgIlJkZDMyPW1lbWQiLCJMb2FkIERvdWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFfTUVNU0laRV84 QixBX0xPQUQpLCIzIixmTE9BRCgxLDgsdSxFQSxSZGRWKSwzKQorCisvKiBUaGVzZSBpbnN0cnVj dGlvbnMgZG8gYSBsb2FkIGFuIHVucGFjayAqLworU1REX0xEX0FNT0RFUyhsb2FkYnp3MiwgIlJk MzI9bWVtdWJoIiwgIkxvYWQgQnl0ZXMgYW5kIFZlY3RvciBaZXJvLUV4dGVuZCAodW5wYWNrKSIs CitBVFRSSUJTKEFfTUVNU0laRV8yQixBX0xPQUQpLCIxIiwKK3tmSElERShzaXplMnVfdCB0bXBW OyBpbnQgaTspCisgZkxPQUQoMSwyLHUsRUEsdG1wVik7CisgZm9yIChpPTA7aTwyO2krKykgewor ICBmU0VUSEFMRihpLFJkVixmR0VUVUJZVEUoaSx0bXBWKSk7CisgfQorfSwxKQorCitTVERfTERf QU1PREVTKGxvYWRienc0LCAiUmRkMzI9bWVtdWJoIiwgIkxvYWQgQnl0ZXMgYW5kIFZlY3RvciBa ZXJvLUV4dGVuZCAodW5wYWNrKSIsCitBVFRSSUJTKEFfTUVNU0laRV80QixBX0xPQUQpLCIyIiwK K3tmSElERShzaXplNHVfdCB0bXBWOyBpbnQgaTspCisgZkxPQUQoMSw0LHUsRUEsdG1wVik7Cisg Zm9yIChpPTA7aTw0O2krKykgeworICBmU0VUSEFMRihpLFJkZFYsZkdFVFVCWVRFKGksdG1wVikp OworIH0KK30sMikKKworCisKKy8qIFRoZXNlIGluc3RydWN0aW9ucyBkbyBhIGxvYWQgYW4gdW5w YWNrICovCitTVERfTERfQU1PREVTKGxvYWRic3cyLCAiUmQzMj1tZW1iaCIsICJMb2FkIEJ5dGVz IGFuZCBWZWN0b3IgU2lnbi1FeHRlbmQgKHVucGFjaykiLAorQVRUUklCUyhBX01FTVNJWkVfMkIs QV9MT0FEKSwiMSIsCit7ZkhJREUoc2l6ZTJ1X3QgdG1wVjsgaW50IGk7KQorIGZMT0FEKDEsMix1 LEVBLHRtcFYpOworIGZvciAoaT0wO2k8MjtpKyspIHsKKyAgZlNFVEhBTEYoaSxSZFYsZkdFVEJZ VEUoaSx0bXBWKSk7CisgfQorfSwxKQorCitTVERfTERfQU1PREVTKGxvYWRic3c0LCAiUmRkMzI9 bWVtYmgiLCAiTG9hZCBCeXRlcyBhbmQgVmVjdG9yIFNpZ24tRXh0ZW5kICh1bnBhY2spIiwKK0FU VFJJQlMoQV9NRU1TSVpFXzRCLEFfTE9BRCksIjIiLAore2ZISURFKHNpemU0dV90IHRtcFY7IGlu dCBpOykKKyBmTE9BRCgxLDQsdSxFQSx0bXBWKTsKKyBmb3IgKGk9MDtpPDQ7aSsrKSB7CisgIGZT RVRIQUxGKGksUmRkVixmR0VUQllURShpLHRtcFYpKTsKKyB9Cit9LDIpCisKKworCitTVERfTERf QU1PREVTKGxvYWRhbGlnbmgsICJSeXkzMj1tZW1oX2ZpZm8iLCAiTG9hZCBIYWxmLXdvcmQgaW50 byBzaGlmdGVkIHZlY3RvciIsCitBVFRSSUJTKEFfTUVNU0laRV8yQixBX0xPQUQpLCIxIiwKK3sK KyBmSElERShzaXplOHVfdCB0bXBWOykKKyBmTE9BRCgxLDIsdSxFQSx0bXBWKTsKKyBSeXlWID0g KCgoc2l6ZTh1X3QpUnl5Vik+PjE2KXwodG1wVjw8NDgpOworfSwxKQorCisKK1NURF9MRF9BTU9E RVMobG9hZGFsaWduYiwgIlJ5eTMyPW1lbWJfZmlmbyIsICJMb2FkIGJ5dGUgaW50byBzaGlmdGVk IHZlY3RvciIsCitBVFRSSUJTKEFfTUVNU0laRV8xQixBX0xPQUQpLCIwIiwKK3sKKyBmSElERShz aXplOHVfdCB0bXBWOykKKyBmTE9BRCgxLDEsdSxFQSx0bXBWKTsKKyBSeXlWID0gKCgoc2l6ZTh1 X3QpUnl5Vik+PjgpfCh0bXBWPDw1Nik7Cit9LDApCisKKworCisKKy8qIFRoZSBzZXQgb2YgYWRk cmVzc2luZyBtb2RlcyBzdGFuZGFyZCB0byBhbGwgU3RvcmUgaW5zdHJ1Y3Rpb25zICovCisjZGVm aW5lIFNURF9TVF9BTU9ERVMoVEFHLERFU1QsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJ Q1MsU0NBTEUpXAorUTZJTlNOKFMyXyMjVEFHIyNfaW8sICBPUEVSIihSczMyKyNzMTE6IlNIRlQi KT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZklNTUVYVChzaVYpOyBmRUFfUkkoUnNWLHNpVik7 IFNFTUFOVElDUzsgfSlcCitRNklOU04oUzJfIyNUQUcjI19waSwgIE9QRVIiKFJ4MzIrKyNzNDoi U0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9JKFJ4Vixz aVYpOyBTRU1BTlRJQ1M7IH0pXAorUTZJTlNOKFM0XyMjVEFHIyNfYXAsICBPUEVSIihSZTMyPSNV Nik9IkRFU1QsICAgICAgICAgICAgIEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKFVpVik7IGZF QV9JTU0oVWlWKTsgU0VNQU5USUNTOyBSZVY9VWlWOyB9KVwKK1E2SU5TTihTMl8jI1RBRyMjX3By LCAgT1BFUiIoUngzMisrTXUyKT0iREVTVCwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9S RUcoUnhWKTsgZlBNX00oUnhWLE11Vik7IFNFTUFOVElDUzsgfSlcCitRNklOU04oUzRfIyNUQUcj I191ciwgIE9QRVIiKFJ1MzI8PCN1MisjVTYpPSJERVNULCAgICAgICAgICAgIEFUVFJJQixERVND Uix7Zk1VU1RfSU1NRVhUKFVpVik7IGZFQV9JUnMoVWlWLFJ1Vix1aVYpOyBTRU1BTlRJQ1M7fSlc CitRNklOU04oUzJfIyNUQUcjI19wYnIsIE9QRVIiKFJ4MzIrK011MjpicmV2KT0iREVTVCwgICAg ICAgQVRUUklCLERFU0NSLHtmRUFfQlJFVlIoUnhWKTsgZlBNX00oUnhWLE11Vik7IFNFTUFOVElD UzsgfSlcCitRNklOU04oUzJfIyNUQUcjI19wY2ksIE9QRVIiKFJ4MzIrKyNzNDoiU0hGVCI6Y2ly YyhNdTIpKT0iREVTVCwgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBmUE1fQ0lSSShSeFYs c2lWLE11Vik7IFNFTUFOVElDUzt9KVwKK1E2SU5TTihTMl8jI1RBRyMjX3BjciwgT1BFUiIoUngz MisrSTpjaXJjKE11MikpPSJERVNULCAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGZQTV9D SVJSKFJ4VixmUkVBRF9JUkVHKE11Vik8PFNDQUxFLE11Vik7IFNFTUFOVElDUzt9KVwKK0RFRl9N QVBQSU5HKFMyXyMjVEFHIyNfem9tYXAsIE9QRVIiKFJzMzIpPSJERVNULCBPUEVSIihSczMyKyMw KT0iREVTVCk7CisKKworLyogVGhlIHNldCBvZiAzMi1iaXQgc3RvcmUgaW5zdHJ1Y3Rpb25zICov CitTVERfU1RfQU1PREVTKHN0b3JlcmIsICJSdDMyIiwgIm1lbWIiLCJTdG9yZSBCeXRlIixBVFRS SUJTKEFfTUVNU0laRV8xQixBX1NUT1JFKSwiMCIsZlNUT1JFKDEsMSxFQSxmR0VUQllURSgwLFJ0 VikpLDApCitTVERfU1RfQU1PREVTKHN0b3JlcmgsICJSdDMyIiwgIm1lbWgiLCJTdG9yZSBIYWxm IGludGVnZXIiLEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfU1RPUkUpLCIxIixmU1RPUkUoMSwyLEVB LGZHRVRIQUxGKDAsUnRWKSksMSkKK1NURF9TVF9BTU9ERVMoc3RvcmVyZiwgIlJ0LkgzMiIsICJt ZW1oIiwiU3RvcmUgVXBwZXIgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfTUVNU0laRV8yQixBX1NU T1JFKSwiMSIsZlNUT1JFKDEsMixFQSxmR0VUSEFMRigxLFJ0VikpLDEpCitTVERfU1RfQU1PREVT KHN0b3JlcmksICJSdDMyIiwgIm1lbXciLCJTdG9yZSBXb3JkIixBVFRSSUJTKEFfTUVNU0laRV80 QixBX1NUT1JFKSwiMiIsZlNUT1JFKDEsNCxFQSxSdFYpLDIpCitTVERfU1RfQU1PREVTKHN0b3Jl cmQsICJSdHQzMiIsIm1lbWQiLCJTdG9yZSBEb3VibGUgaW50ZWdlciIsQVRUUklCUyhBX01FTVNJ WkVfOEIsQV9TVE9SRSksIjMiLGZTVE9SRSgxLDgsRUEsUnR0ViksMykKK1NURF9TVF9BTU9ERVMo c3RvcmVyaW5ldywgIk50OC5uZXciLCAibWVtdyIsIlN0b3JlIFdvcmQiLEFUVFJJQlMoQV9OT1RF X05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05WU0xPVDAsQV9NRU1TSVpFXzRCLEFfU1RP UkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSwiMiIsZlNUT1JFKDEsNCxFQSxmTkVXUkVHX1NU KE50TikpLDIpCitTVERfU1RfQU1PREVTKHN0b3JlcmJuZXcsICJOdDgubmV3IiwgIm1lbWIiLCJT dG9yZSBCeXRlIixBVFRSSUJTKEFfTk9URV9ORVdWQUxfU0xPVDAsQV9OVlNUT1JFLEFfTk9URV9O VlNMT1QwLEFfTUVNU0laRV8xQixBX1NUT1JFLEFfUkVTVFJJQ1RfTk9TTE9UMV9TVE9SRSksIjAi LGZTVE9SRSgxLDEsRUEsZkdFVEJZVEUoMCxmTkVXUkVHX1NUKE50TikpKSwwKQorU1REX1NUX0FN T0RFUyhzdG9yZXJobmV3LCAiTnQ4Lm5ldyIsICJtZW1oIiwiU3RvcmUgSGFsZiBpbnRlZ2VyIixB VFRSSUJTKEFfTk9URV9ORVdWQUxfU0xPVDAsQV9OVlNUT1JFLEFfTk9URV9OVlNMT1QwLEFfTUVN U0laRV8yQixBX1NUT1JFLEFfUkVTVFJJQ1RfTk9TTE9UMV9TVE9SRSksIjEiLGZTVE9SRSgxLDIs RUEsZkdFVEhBTEYoMCxmTkVXUkVHX1NUKE50TikpKSwxKQorCisKKyNpZiBGUkFNRV9FWFBMSUNJ VAorUTZJTlNOKFMyX2FsbG9jZnJhbWUsImFsbG9jZnJhbWUoUngzMiwjdTExOjMpOnJhdyIsIEFU VFJJQlMoQV9NRU1TSVpFXzhCLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCAiQWxsb2Nh dGUgc3RhY2sgZnJhbWUiLAoreyBmRUFfUkkoUnhWLC04KTsgZlNUT1JFKDEsOCxFQSxmRlJBTUVf U0NSQU1CTEUoKGZDQVNUOF84dShmUkVBRF9MUigpKSA8PCAzMikgfCBmQ0FTVDRfNHUoZlJFQURf RlAoKSkpKTsgZldSSVRFX0ZQKEVBKTsgZkZSQU1FQ0hFQ0soRUEtdWlWLEVBKTsgUnhWID0gRUEt dWlWOyB9KQorCitERUZfTUFQUElORyhTNl9hbGxvY2ZyYW1lX3RvX3JhdywiYWxsb2NmcmFtZSgj dTExOjMpIiwiYWxsb2NmcmFtZShyMjksI3UxMTozKTpyYXciKQorI2Vsc2UKK1E2SU5TTihTMl9h bGxvY2ZyYW1lLCJhbGxvY2ZyYW1lKCN1MTE6MykiLCBBVFRSSUJTKEFfTUVNU0laRV84QixBX1NU T1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwgIkFsbG9jYXRlIHN0YWNrIGZyYW1lIiwKK3sgZkVB X1JJKGZSRUFEX1NQKCksLTgpOyBmU1RPUkUoMSw4LEVBLGZGUkFNRV9TQ1JBTUJMRSgoZkNBU1Q4 Xzh1KGZSRUFEX0xSKCkpIDw8IDMyKSB8IGZDQVNUNF80dShmUkVBRF9GUCgpKSkpOyBmV1JJVEVf RlAoRUEpOyBmRlJBTUVDSEVDSyhFQS11aVYsRUEpOyBmV1JJVEVfU1AoRUEtdWlWKTsgfSkKKyNl bmRpZgorCisjZGVmaW5lIEFfUkVUVVJOIEFfUkVTVFJJQ1RfQ09GX01BWDEsQV9SRVNUUklDVF9T TE9UME9OTFksQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFLEFfUkVUX1RZUEUsQV9ERUFMTE9DUkVU CisKKyNpZiBGUkFNRV9FWFBMSUNJVAorUTZJTlNOKEwyX2RlYWxsb2NmcmFtZSwiUmRkMzI9ZGVh bGxvY2ZyYW1lKFJzMzIpOnJhdyIsIEFUVFJJQlMoQV9NRU1TSVpFXzhCLEFfTE9BRCxBX0RFQUxM T0NGUkFNRSksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1w OykgZkVBX1JFRyhSc1YpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJUmRkViA9IGZGUkFNRV9V TlNDUkFNQkxFKHRtcCk7CisJZldSSVRFX1NQKEVBKzgpOyB9KQorCitERUZfTUFQUElORyhMNl9k ZWFsbG9jZnJhbWVfbWFwX3RvX3JhdywiZGVhbGxvY2ZyYW1lIiwicjMxOjMwPWRlYWxsb2NmcmFt ZShyMzApOnJhdyIpCisjZWxzZQorUTZJTlNOKEwyX2RlYWxsb2NmcmFtZSwiZGVhbGxvY2ZyYW1l IiwgQVRUUklCUyhBX01FTVNJWkVfOEIsQV9MT0FELEFfREVBTExPQ0ZSQU1FKSwgIkRlYWxsb2Nh dGUgc3RhY2sgZnJhbWUiLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmRUFfUkVHKGZSRUFEX0ZQ KCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1wID0gZkZSQU1FX1VOU0NSQU1CTEUodG1w KTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsKKwlmV1JJVEVfRlAoZkdFVFdPUkQoMCx0 bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7IH0pCisjZW5kaWYKKworI2lmIEZSQU1FX0VYUExJQ0lU CitRNklOU04oTDRfcmV0dXJuLCJSZGQzMj1kZWFsbG9jX3JldHVybihSczMyKTpyYXciLCBBVFRS SUJTKEFfUk9QU18yLEFfSklORElSLEFfTUVNU0laRV84QixBX0xPQUQsQV9SRVRVUk4pLCAiRGVh bGxvY2F0ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1wOykg ZkVBX1JFRyhSc1YpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJUmRkViA9IGZGUkFNRV9VTlND UkFNQkxFKHRtcCk7CisJZldSSVRFX1NQKEVBKzgpOworICAgIGZKVU1QUihSRUdfTFIsZkdFVFdP UkQoMSxSZGRWKSxDT0ZfVFlQRV9KVU1QUik7fSkKKworREVGX01BUFBJTkcoTDZfcmV0dXJuX21h cF90b19yYXcsImRlYWxsb2NfcmV0dXJuIiwicjMxOjMwPWRlYWxsb2NfcmV0dXJuKHIzMCk6cmF3 IikKKyNlbHNlCitRNklOU04oTDRfcmV0dXJuLCJkZWFsbG9jX3JldHVybiIsIEFUVFJJQlMoQV9S T1BTXzIsQV9KSU5ESVIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTiksICJEZWFsbG9jYXRl IHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmRUFfUkVH KGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1wID0gZkZSQU1FX1VOU0NS QU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsKKwlmV1JJVEVfRlAoZkdF VFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7CisgICAgZkpVTVBSKFJFR19MUixmR0VU V09SRCgxLHRtcCksQ09GX1RZUEVfSlVNUFIpO30pCisjZW5kaWYKKworI2RlZmluZSBDT05EU0VN KFNSQ1JFRyxTVEFMTEJJVFMwLFNUQUxMQklUUzEsUFJFREZVTkMsUFJFREFSRyxTVEFMTFNQRUMs UFJFRENPTkQpIFwKK3sgXAorCWZISURFKHNpemU4dV90IHRtcDspIFwKKwlmQlJBTkNIX1NQRUNV TEFURV9TVEFMTChQUkVERlVOQyMjUFJFRENPTkQoUFJFREFSRyksLFNUQUxMU1BFQyxTVEFMTEJJ VFMwLFNUQUxMQklUUzEpOyBcCisJZkVBX1JFRyhTUkNSRUcpOyBcCisJaWYgKFBSRURGVU5DIyNQ UkVEQ09ORChQUkVEQVJHKSkgeyBcCisJCWZMT0FEKDEsOCx1LEVBLHRtcCk7IFwKKwkJUmRkViA9 IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7IFwKKwkJZldSSVRFX1NQKEVBKzgpOyBcCisJCWZKVU1Q UihSRUdfTFIsZkdFVFdPUkQoMSxSZGRWKSxDT0ZfVFlQRV9KVU1QUik7IFwKKwl9IGVsc2UgeyBc CisJCUxPQURfQ0FOQ0VMKEVBKTsgXAorCX0gXAorfQorCisjZGVmaW5lIENPTkRfUkVUVVJOX1RG KFRHLFRHMixET1RORVcsU1RBTExCSVRTMCxTVEFMTEJJVFMxLFNUQUxMU1BFQyxBVFRSSUJTLFBS RURGVU5DLFBSRURBUkcsVF9OVCkgXAorCVE2SU5TTihURyMjX3QjI1RHMiwiaWYgKFB2NCJET1RO RVciKSBSZGQzMj1kZWFsbG9jX3JldHVybihSczMyKSJUX05UIjpyYXciLEFUVFJJQlMsImRlYWxs b2NhdGUgc3RhY2sgZnJhbWUgYW5kIHJldHVybiIsIFwKKwkJQ09ORFNFTShSc1YsU1RBTExCSVRT MCxTVEFMTEJJVFMxLFBSRURGVU5DLFBSRURBUkcsU1RBTExTUEVDLCkpIFwKKwlRNklOU04oVEcj I19mIyNURzIsImlmICghUHY0IkRPVE5FVyIpIFJkZDMyPWRlYWxsb2NfcmV0dXJuKFJzMzIpIlRf TlQiOnJhdyIsQVRUUklCUywiZGVhbGxvY2F0ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwgXAor CQlDT05EU0VNKFJzVixTVEFMTEJJVFMwLFNUQUxMQklUUzEsUFJFREZVTkMjI05PVCxQUkVEQVJH LFNUQUxMU1BFQywpKSBcCisJREVGX01BUFBJTkcoVEcjI19tYXBfdG9fcmF3X3QjI1RHMiwiaWYg KFB2NCJET1RORVciKSBkZWFsbG9jX3JldHVybiJUX05ULCJpZiAoUHY0IkRPVE5FVyIpIHIzMToz MD1kZWFsbG9jX3JldHVybihyMzApIlRfTlQiOnJhdyIpIFwKKwlERUZfTUFQUElORyhURyMjX21h cF90b19yYXdfZiMjVEcyLCJpZiAoIVB2NCJET1RORVciKSBkZWFsbG9jX3JldHVybiJUX05ULCJp ZiAoIVB2NCJET1RORVciKSByMzE6MzA9ZGVhbGxvY19yZXR1cm4ocjMwKSJUX05UIjpyYXciKQor CisjZGVmaW5lIENPTkRfUkVUVVJOX05FVyhURyxTVEFMTEJJVFMwLFNUQUxMQklUUzEsQVRUUklC UykgXAorCUNPTkRfUkVUVVJOX1RGKFRHLG5ld19wdCwiLm5ldyIsMTIsMCxTUEVDVUxBVEVfVEFL RU4sQVRUUklCUyxmTFNCTkVXLFB2TiwiOnQiKSBcCisJQ09ORF9SRVRVUk5fVEYoVEcsbmV3X3Bu dCwiLm5ldyIsMTIsMCxTUEVDVUxBVEVfTk9UX1RBS0VOLEFUVFJJQlMsZkxTQk5FVyxQdk4sIjpu dCIpIFwKKworI2RlZmluZSBSRVRVUk5fQVRUUklCUyBBX1JPUFNfMixBX01FTVNJWkVfOEIsQV9M T0FELEFfUkVUVVJOCisKK0NPTkRfUkVUVVJOX1RGKEw0X3JldHVybiwsLDcsMCxTUEVDVUxBVEVf Tk9UX1RBS0VOLEFUVFJJQlMoUkVUVVJOX0FUVFJJQlMsQV9KSU5ESVJPTEQsQV9QUkVEX0JJVF83 KSxmTFNCT0xELFB2ViwpCitDT05EX1JFVFVSTl9ORVcoTDRfcmV0dXJuLDEyLDAsQVRUUklCUyhS RVRVUk5fQVRUUklCUyxBX0pJTkRJUk5FVyxBX1BSRURfQklUXzEyKSkKKworCisKKworUTZJTlNO KEwyX2xvYWR3X2xvY2tlZCwiUmQzMj1tZW13X2xvY2tlZChSczMyKSIsIEFUVFJJQlMoQV9NRU1T SVpFXzRCLEFfTE9BRCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9L LEFfTk9URV9BWE9LKSwgIkxvYWQgd29yZCB3aXRoIGxvY2siLAoreyBmRUFfUkVHKFJzVik7IGZM T0FEX0xPQ0tFRCgxLDQsdSxFQSxSZFYpIH0pOworCisKK1E2SU5TTihTMl9zdG9yZXdfbG9ja2Vk LCJtZW13X2xvY2tlZChSczMyLFBkNCk9UnQzMiIsIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RP UkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhP SyxBX1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRFUFJFRCksICJTdG9yZSB3b3JkIHdpdGgg bG9jayIsCit7IGZFQV9SRUcoUnNWKTsgZlNUT1JFX0xPQ0tFRCgxLDQsRUEsUnRWLFBkVikgZkhJ REUoTUFSS19MQVRFX1BSRURfV1JJVEUoUGROKSkgfSk7CisKKworUTZJTlNOKEw0X2xvYWRkX2xv Y2tlZCwiUmRkMzI9bWVtZF9sb2NrZWQoUnMzMikiLCBBVFRSSUJTKEFfTUVNU0laRV84QixBX0xP QUQsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhP SyksICJMb2FkIGRvdWJsZSB3aXRoIGxvY2siLAoreyBmRUFfUkVHKFJzVik7IGZMT0FEX0xPQ0tF RCgxLDgsdSxFQSxSZGRWKSB9KTsKKworUTZJTlNOKEw0X2xvYWR3X3BoeXMsIlJkMzI9bWVtd19w aHlzKFJzMzIsUnQzMikiLCBBVFRSSUJTKEFfUFJJVixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX05P VEVfUFJJVixBX01FTVNJWkVfNEIsQV9MT0FELEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05P UEFDS0VUKSwgIkxvYWQgd29yZCBmcm9tIHBoeXNpY2FsIGFkZHJlc3MiLAoreyBmTE9BRF9QSFlT KDEsNCx1LFJzVixSdFYsUmRWKTsgfSk7CisKKworUTZJTlNOKFM0X3N0b3JlZF9sb2NrZWQsIm1l bWRfbG9ja2VkKFJzMzIsUGQ0KT1SdHQzMiIsIEFUVFJJQlMoQV9NRU1TSVpFXzhCLEFfU1RPUkUs QV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyxB X1JFU1RSSUNUX0xBVEVQUkVELEFfTk9URV9MQVRFUFJFRCksICJTdG9yZSB3b3JkIHdpdGggbG9j ayIsCit7IGZFQV9SRUcoUnNWKTsgZlNUT1JFX0xPQ0tFRCgxLDgsRUEsUnR0VixQZFYpIGZISURF KE1BUktfTEFURV9QUkVEX1dSSVRFKFBkTikpIH0pOworCisKKworCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVkIExEU1QgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBT VERfUExEX0FNT0RFUyhUQUcsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTSEZUTlVNLFNFTUFOVElD UylcCitRNklOU04oTDRfIyNUQUcjI19yciwgIE9QRVIiKFJzMzIrUnQzMjw8I3UyKSIsICAgICAg ICAgICAgQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdFYsdWlWKTsgU0VNQU5USUNTO30pXAor UTZJTlNOKEwyX3AjI1RBRyMjdF9pbywgImlmIChQdDQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIp IiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX1JJKFJzVix1aVYp OyBpZihmTFNCT0xEKFB0Vikpe1NFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlc CitRNklOU04oTDJfcCMjVEFHIyN0X3BpLCAiaWYgKFB0NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hG VCIpIiwgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBpZihmTFNCT0xEKFB0 VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7TE9BRF9DQU5DRUwoRUEpO319 KVwKK1E2SU5TTihMMl9wIyNUQUcjI2ZfaW8sICJpZiAoIVB0NCkgIk9QRVIiKFJzMzIrI3U2OiJT SEZUIikiLCAgICAgICAgICAgQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1Ys dWlWKTsgaWYoZkxTQk9MRE5PVChQdFYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VM KEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmX3BpLCAiaWYgKCFQdDQpICJPUEVSIihSeDMy KysjczQ6IlNIRlQiKSIsICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBpZihm TFNCT0xETk9UKFB0VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7TE9BRF9D QU5DRUwoRUEpO319KVwKK1E2SU5TTihMMl9wIyNUQUcjI3RuZXdfaW8sImlmIChQdDQubmV3KSAi T1BFUiIoUnMzMisjdTY6IlNIRlQiKSIsQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9S SShSc1YsdWlWKTsgaWYgKGZMU0JORVcoUHROKSkgIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURf Q0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDJfcCMjVEFHIyNmbmV3X2lvLCJpZiAoIVB0NC5uZXcp ICJPUEVSIihSczMyKyN1NjoiU0hGVCIpIixBVFRSSUIsREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVB X1JJKFJzVix1aVYpOyBpZiAoZkxTQk5FV05PVChQdE4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtM T0FEX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjdF9yciwgImlmIChQdjQpICJP UEVSIihSczMyK1J0MzI8PCN1MikiLCAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhS c1YsUnRWLHVpVik7IGlmKGZMU0JPTEQoUHZWKSl7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FO Q0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmX3JyLCAiaWYgKCFQdjQpICJPUEVSIihS czMyK1J0MzI8PCN1MikiLCAgICAgICAgICAgQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdFYs dWlWKTsgaWYoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VM KEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyN0bmV3X3JyLCJpZiAoUHY0Lm5ldykgIk9QRVIi KFJzMzIrUnQzMjw8I3UyKSIsQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdFYsdWlWKTsgaWYg KGZMU0JORVcoUHZOKSkgIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlc CitRNklOU04oTDRfcCMjVEFHIyNmbmV3X3JyLCJpZiAoIVB2NC5uZXcpICJPUEVSIihSczMyK1J0 MzI8PCN1MikiLEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnRWLHVpVik7IGlmIChmTFNCTkVX Tk9UKFB2TikpIHsgU0VNQU5USUNTOyB9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9fSlcCitRNklO U04oTDJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB0NC5uZXcpICJPUEVSIihSeDMyKysjczQ6IlNI RlQiKSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SRUcoUnhWKTsgaWYoZkxTQk5FVyhQ dE4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9 fSlcCitRNklOU04oTDJfcCMjVEFHIyNmbmV3X3BpLCAiaWYgKCFQdDQubmV3KSAiT1BFUiIoUngz MisrI3M0OiJTSEZUIikiLCAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZFQV9SRUcoUnhWKTsgaWYo ZkxTQk5FV05PVChQdE4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURf Q0FOQ0VMKEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyN0X2FicywgImlmIChQdDQpICJPUEVS IigjdTYpIiwgICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYpOyBmRUFf SU1NKHVpVik7IGlmKGZMU0JPTEQoUHRWKSl7IFNFTUFOVElDUzt9IGVsc2Uge0xPQURfQ0FOQ0VM KEVBKTt9fSlcCitRNklOU04oTDRfcCMjVEFHIyNmX2FicywgImlmICghUHQ0KSAiT1BFUiIoI3U2 KSIsICAgICAgICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYpOyBmRUFfSU1NKHVp Vik7IGlmKGZMU0JPTEROT1QoUHRWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChF QSk7fX0pXAorUTZJTlNOKEw0X3AjI1RBRyMjdG5ld19hYnMsImlmIChQdDQubmV3KSAiT1BFUiIo I3U2KSIsQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTsgZkVBX0lNTSh1aVYpO2lmIChm TFNCTkVXKFB0TikpICB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pXAor UTZJTlNOKEw0X3AjI1RBRyMjZm5ld19hYnMsImlmICghUHQ0Lm5ldykgIk9QRVIiKCN1NikiLEFU VFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKHVpVik7IGZFQV9JTU0odWlWKTtpZiAoZkxTQk5FV05P VChQdE4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fX0pXAorREVGX01B UFBJTkcoTDJfcCMjVEFHIyN0X3pvbWFwLCAiaWYgKFB0NCkgIk9QRVIiKFJzMzIpIiwgImlmIChQ dDQpICJPUEVSIihSczMyKyMwKSIpOyBcCitERUZfTUFQUElORyhMMl9wIyNUQUcjI2Zfem9tYXAs ICJpZiAoIVB0NCkgIk9QRVIiKFJzMzIpIiwgImlmICghUHQ0KSAiT1BFUiIoUnMzMisjMCkiKTsg XAorREVGX01BUFBJTkcoTDJfcCMjVEFHIyN0bmV3X3pvbWFwLCAiaWYgKFB0NC5uZXcpICJPUEVS IihSczMyKSIsICJpZiAoUHQ0Lm5ldykgIk9QRVIiKFJzMzIrIzApIik7IFwKK0RFRl9NQVBQSU5H KEwyX3AjI1RBRyMjZm5ld196b21hcCwgImlmICghUHQ0Lm5ldykgIk9QRVIiKFJzMzIpIiwgImlm ICghUHQ0Lm5ldykgIk9QRVIiKFJzMzIrIzApIik7CisKKworCisvKiBUaGUgc2V0IG9mIDMyLWJp dCBwcmVkaWNhdGVkIGxvYWQgaW5zdHJ1Y3Rpb25zICovCitTVERfUExEX0FNT0RFUyhsb2FkcnVi LCJSZDMyPW1lbXViIiwiTG9hZCBVbnNpZ25lZCBCeXRlIixBVFRSSUJTKEFfQVJDSFYyLEFfTUVN U0laRV8xQixBX0xPQUQpLCIwIiwwLGZMT0FEKDEsMSx1LEVBLFJkVikpCitTVERfUExEX0FNT0RF Uyhsb2FkcmIsICJSZDMyPW1lbWIiLCAiTG9hZCBzaWduZWQgQnl0ZSIsQVRUUklCUyhBX0FSQ0hW MixBX01FTVNJWkVfMUIsQV9MT0FEKSwiMCIsMCxmTE9BRCgxLDEscyxFQSxSZFYpKQorU1REX1BM RF9BTU9ERVMobG9hZHJ1aCwiUmQzMj1tZW11aCIsIkxvYWQgdW5zaWduZWQgSGFsZiBpbnRlZ2Vy IixBVFRSSUJTKEFfQVJDSFYyLEFfTUVNU0laRV8yQixBX0xPQUQpLCIxIiwxLGZMT0FEKDEsMix1 LEVBLFJkVikpCitTVERfUExEX0FNT0RFUyhsb2FkcmgsICJSZDMyPW1lbWgiLCAiTG9hZCBzaWdu ZWQgSGFsZiBpbnRlZ2VyIixBVFRSSUJTKEFfQVJDSFYyLEFfTUVNU0laRV8yQixBX0xPQUQpLCIx IiwxLGZMT0FEKDEsMixzLEVBLFJkVikpCitTVERfUExEX0FNT0RFUyhsb2FkcmksICJSZDMyPW1l bXciLCAiTG9hZCBXb3JkIixBVFRSSUJTKEFfQVJDSFYyLEFfTUVNU0laRV80QixBX0xPQUQpLCIy IiwyLGZMT0FEKDEsNCx1LEVBLFJkVikpCitTVERfUExEX0FNT0RFUyhsb2FkcmQsICJSZGQzMj1t ZW1kIiwiTG9hZCBEb3VibGUgaW50ZWdlciIsQVRUUklCUyhBX0FSQ0hWMixBX01FTVNJWkVfOEIs QV9MT0FEKSwiMyIsMyxmTE9BRCgxLDgsdSxFQSxSZGRWKSkKKworLyogVGhlIHNldCBvZiBhZGRy ZXNzaW5nIG1vZGVzIHN0YW5kYXJkIHRvIGFsbCBwcmVkaWNhdGVkIHN0b3JlIGluc3RydWN0aW9u cyAqLworI2RlZmluZSBTVERfUFNUX0FNT0RFUyhUQUcsREVTVCxPUEVSLERFU0NSLEFUVFJJQixT SEZULFNIRlROVU0sU0VNQU5USUNTKVwKK1E2SU5TTihTNF8jI1RBRyMjX3JyLCAgT1BFUiIoUnMz MitSdTMyPDwjdTIpPSJERVNULCAgICAgICAgICAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1Ys UnVWLHVpVik7IFNFTUFOVElDUzt9KVwKK1E2SU5TTihTMl9wIyNUQUcjI3RfaW8sICJpZiAoUHY0 KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZklNTUVY VCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNCT0xEKFB2VikpeyBTRU1BTlRJQ1M7IH0g ZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzJfcCMjVEFHIyN0X3BpLCAiaWYg KFB2NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtm RUFfUkVHKFJ4Vik7IGlmIChmTFNCT0xEKFB2VikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNT O30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzJfcCMjVEFHIyNmX2lvLCAi aWYgKCFQdjQpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NS LHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JPTEROT1QoUHZWKSl7IFNF TUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTMl9wIyNUQUcj I2ZfcGksICJpZiAoIVB2NCkgIk9QRVIiKFJ4MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRU UklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlmIChmTFNCT0xETk9UKFB2VikpeyBmUE1fSShSeFYs c2lWKTsgU0VNQU5USUNTO30gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRf cCMjVEFHIyN0X3JyLCAiaWYgKFB2NCkgIk9QRVIiKFJzMzIrUnUzMjw8I3UyKT0iREVTVCwgICAg IEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnVWLHVpVik7IGlmIChmTFNCT0xEKFB2VikpeyBT RU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFH IyNmX3JyLCAiaWYgKCFQdjQpICJPUEVSIihSczMyK1J1MzI8PCN1Mik9IkRFU1QsICAgICBBVFRS SUIsREVTQ1Ise2ZFQV9SUnMoUnNWLFJ1Vix1aVYpOyBpZiAoZkxTQk9MRE5PVChQdlYpKXsgU0VN QU5USUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7fX0pXAorUTZJTlNOKFM0X3AjI1RBRyMj dG5ld19pbywiaWYgKFB2NC5uZXcpICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULEFUVFJJ QixERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGlmICggZkxTQk5FVyhQdk4p KSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTNF9w IyNUQUcjI2ZuZXdfaW8sImlmICghUHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2OiJTSEZUIik9IkRF U1QsQVRUUklCLERFU0NSLHtmSU1NRVhUKHVpVik7IGZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JO RVdOT1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitR NklOU04oUzRfcCMjVEFHIyN0bmV3X3JyLCJpZiAoUHY0Lm5ldykgIk9QRVIiKFJzMzIrUnUzMjw8 I3UyKT0iREVTVCxBVFRSSUIsREVTQ1Ise2ZFQV9SUnMoUnNWLFJ1Vix1aVYpOyBpZiAoIGZMU0JO RVcoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklO U04oUzRfcCMjVEFHIyNmbmV3X3JyLCJpZiAoIVB2NC5uZXcpICJPUEVSIihSczMyK1J1MzI8PCN1 Mik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFfUlJzKFJzVixSdVYsdWlWKTsgaWYgKGZMU0JORVdO T1QoUHZOKSkgeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklO U04oUzJfcCMjVEFHIyN0bmV3X3BpLCAiaWYgKFB2NC5uZXcpICJPUEVSIihSeDMyKysjczQ6IlNI RlQiKT0iREVTVCwgICAgIEFUVFJJQixERVNDUix7ZkVBX1JFRyhSeFYpOyBpZiAoZkxTQk5FVyhQ dk4pKXsgZlBNX0koUnhWLHNpVik7IFNFTUFOVElDUzt9IGVsc2Uge1NUT1JFX0NBTkNFTChFQSk7 fX0pXAorUTZJTlNOKFMyX3AjI1RBRyMjZm5ld19waSwgImlmICghUHY0Lm5ldykgIk9QRVIiKFJ4 MzIrKyNzNDoiU0hGVCIpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmRUFfUkVHKFJ4Vik7IGlm IChmTFNCTkVXTk9UKFB2TikpeyBmUE1fSShSeFYsc2lWKTsgU0VNQU5USUNTO30gZWxzZSB7U1RP UkVfQ0FOQ0VMKEVBKTt9fSlcCitRNklOU04oUzRfcCMjVEFHIyN0X2FicywgImlmIChQdjQpICJP UEVSIigjdTYpPSJERVNULCAgICAgQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTsgZkVB X0lNTSh1aVYpOyBpZiAoZkxTQk9MRChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge1NUT1JFX0NB TkNFTChFQSk7fX0pXAorUTZJTlNOKFM0X3AjI1RBRyMjZl9hYnMsICJpZiAoIVB2NCkgIk9QRVIi KCN1Nik9IkRFU1QsICAgICBBVFRSSUIsREVTQ1Ise2ZNVVNUX0lNTUVYVCh1aVYpO2ZFQV9JTU0o dWlWKTsgaWYgKGZMU0JPTEROT1QoUHZWKSl7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5D RUwoRUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI3RuZXdfYWJzLCJpZiAoUHY0Lm5ldykgIk9Q RVIiKCN1Nik9IkRFU1QsQVRUUklCLERFU0NSLHtmTVVTVF9JTU1FWFQodWlWKTtmRUFfSU1NKHVp Vik7IGlmICggZkxTQk5FVyhQdk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwo RUEpO319KVwKK1E2SU5TTihTNF9wIyNUQUcjI2ZuZXdfYWJzLCJpZiAoIVB2NC5uZXcpICJPUEVS IigjdTYpPSJERVNULEFUVFJJQixERVNDUix7Zk1VU1RfSU1NRVhUKHVpVik7ZkVBX0lNTSh1aVYp OyBpZiAoZkxTQk5FV05PVChQdk4pKSB7IFNFTUFOVElDUzsgfSBlbHNlIHtTVE9SRV9DQU5DRUwo RUEpO319KVwKK0RFRl9NQVBQSU5HKFMyX3AjI1RBRyMjdF96b21hcCwgImlmIChQdjQpICJPUEVS IihSczMyKT0iREVTVCwgImlmIChQdjQpICJPUEVSIihSczMyKyMwKT0iREVTVCk7IFwKK0RFRl9N QVBQSU5HKFMyX3AjI1RBRyMjZl96b21hcCwgImlmICghUHY0KSAiT1BFUiIoUnMzMik9IkRFU1Qs ICJpZiAoIVB2NCkgIk9QRVIiKFJzMzIrIzApPSJERVNUKTsgXAorREVGX01BUFBJTkcoUzRfcCMj VEFHIyN0bmV3X3pvbWFwLCAiaWYgKFB2NC5uZXcpICJPUEVSIihSczMyKT0iREVTVCwgImlmIChQ djQubmV3KSAiT1BFUiIoUnMzMisjMCk9IkRFU1QpOyBcCitERUZfTUFQUElORyhTNF9wIyNUQUcj I2ZuZXdfem9tYXAsICJpZiAoIVB2NC5uZXcpICJPUEVSIihSczMyKT0iREVTVCwgImlmICghUHY0 Lm5ldykgIk9QRVIiKFJzMzIrIzApPSJERVNUKTsKKworCisKKworLyogVGhlIHNldCBvZiAzMi1i aXQgcHJlZGljYXRlZCBzdG9yZSBpbnN0cnVjdGlvbnMgKi8KK1NURF9QU1RfQU1PREVTKHN0b3Jl cmIsIlJ0MzIiLCJtZW1iIiwiU3RvcmUgQnl0ZSIsQVRUUklCUyhBX0FSQ0hWMixBX01FTVNJWkVf MUIsQV9TVE9SRSksIjAiLDAsZlNUT1JFKDEsMSxFQSxmR0VUQllURSgwLFJ0VikpKQorU1REX1BT VF9BTU9ERVMoc3RvcmVyaCwiUnQzMiIsIm1lbWgiLCJTdG9yZSBIYWxmIGludGVnZXIiLEFUVFJJ QlMoQV9BUkNIVjIsQV9NRU1TSVpFXzJCLEFfU1RPUkUpLCIxIiwxLGZTVE9SRSgxLDIsRUEsZkdF VEhBTEYoMCxSdFYpKSkKK1NURF9QU1RfQU1PREVTKHN0b3JlcmYsIlJ0LkgzMiIsIm1lbWgiLCJT dG9yZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9BUkNIVjIsQV9NRU1TSVpFXzJCLEFf U1RPUkUpLCIxIiwxLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMSxSdFYpKSkKK1NURF9QU1RfQU1P REVTKHN0b3JlcmksIlJ0MzIiLCJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklCUyhBX0FSQ0hWMixB X01FTVNJWkVfNEIsQV9TVE9SRSksIjIiLDIsZlNUT1JFKDEsNCxFQSxSdFYpKQorU1REX1BTVF9B TU9ERVMoc3RvcmVyZCwiUnR0MzIiLCJtZW1kIiwiU3RvcmUgRG91YmxlIGludGVnZXIiLEFUVFJJ QlMoQV9BUkNIVjIsQV9NRU1TSVpFXzhCLEFfU1RPUkUpLCIzIiwzLGZTVE9SRSgxLDgsRUEsUnR0 VikpCitTVERfUFNUX0FNT0RFUyhzdG9yZXJpbmV3LCJOdDgubmV3IiwibWVtdyIsIlN0b3JlIFdv cmQiLEFUVFJJQlMoQV9BUkNIVjIsQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RF X05WU0xPVDAsQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSwi MiIsMixmU1RPUkUoMSw0LEVBLGZORVdSRUdfU1QoTnROKSkpCitTVERfUFNUX0FNT0RFUyhzdG9y ZXJibmV3LCJOdDgubmV3IiwibWVtYiIsIlN0b3JlIEJ5dGUiLEFUVFJJQlMoQV9BUkNIVjIsQV9O T1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05WU0xPVDAsQV9NRU1TSVpFXzFCLEFf U1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFKSwiMCIsMCxmU1RPUkUoMSwxLEVBLGZHRVRC WVRFKDAsZk5FV1JFR19TVChOdE4pKSkpCitTVERfUFNUX0FNT0RFUyhzdG9yZXJobmV3LCJOdDgu bmV3IiwibWVtaCIsIlN0b3JlIEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX0FSQ0hWMixBX05PVEVf TkVXVkFMX1NMT1QwLEFfTlZTVE9SRSxBX05PVEVfTlZTTE9UMCxBX01FTVNJWkVfMkIsQV9TVE9S RSxBX1JFU1RSSUNUX05PU0xPVDFfU1RPUkUpLCIxIiwxLGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYo MCxmTkVXUkVHX1NUKE50TikpKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyog ICAgICAgICAgICAgICAgICAgICAgIE1lbS1PcHMgKExvYWQtb3AtU3RvcmUpICAgICAgICAgICAg ICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBu b24tcHJlZGljYXRlZCBtZW0tb3BzICovCisjZGVmaW5lIFNURF9NRU1PUF9BTU9ERVMoVEFHLE9Q RVIsREVTQ1IsU0VNQU5USUNTKVwKK1E2SU5TTihMNF8jI1RBRyMjd19pbywgICJtZW13KFJzMzIr I3U2OjIpIk9QRVIsICAgICBBVFRSSUJTKEFfTUVNT1AsQV9ST1BTXzMsQV9NRU1TSVpFXzRCLEFf UkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9TTE9UMV9TVE9SRSksREVTQ1Ise2ZJTU1F WFQodWlWKTsgZkVBX1JJKFJzVix1aVYpOyBmSElERShzaXplNHNfdCB0bXA7KSBmTE9BRCgxLDQs cyxFQSx0bXApOyBTRU1BTlRJQ1M7ICBmU1RPUkUoMSw0LEVBLHRtcCk7IH0pXAorUTZJTlNOKEw0 XyMjVEFHIyNiX2lvLCAgIm1lbWIoUnMzMisjdTY6MCkiT1BFUiwgICAgIEFUVFJJQlMoQV9NRU1P UCxBX1JPUFNfMyxBX01FTVNJWkVfMUIsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9O T1NMT1QxX1NUT1JFKSxERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfUkkoUnNWLHVpVik7IGZISURF KHNpemU0c190IHRtcDspIGZMT0FEKDEsMSxzLEVBLHRtcCk7IFNFTUFOVElDUzsgIGZTVE9SRSgx LDEsRUEsdG1wKTsgfSlcCitRNklOU04oTDRfIyNUQUcjI2hfaW8sICAibWVtaChSczMyKyN1Njox KSJPUEVSLCAgICAgQVRUUklCUyhBX01FTU9QLEFfUk9QU18zLEFfTUVNU0laRV8yQixBX1JFU1RS SUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PU0xPVDFfU1RPUkUpLERFU0NSLHtmSU1NRVhUKHVp Vik7IGZFQV9SSShSc1YsdWlWKTsgZkhJREUoc2l6ZTRzX3QgdG1wOykgZkxPQUQoMSwyLHMsRUEs dG1wKTsgU0VNQU5USUNTOyAgZlNUT1JFKDEsMixFQSx0bXApOyB9KVwKK0RFRl9NQVBQSU5HKEw0 XyMjVEFHIyN3X3pvbWFwLCAibWVtdyhSczMyKSJPUEVSLCAibWVtdyhSczMyKyMwKSJPUEVSKTtc CitERUZfTUFQUElORyhMNF8jI1RBRyMjaF96b21hcCwgIm1lbWgoUnMzMikiT1BFUiwgIm1lbWgo UnMzMisjMCkiT1BFUik7XAorREVGX01BUFBJTkcoTDRfIyNUQUcjI2Jfem9tYXAsICJtZW1iKFJz MzIpIk9QRVIsICJtZW1iKFJzMzIrIzApIk9QRVIpOworCisKKworU1REX01FTU9QX0FNT0RFUyhh ZGRfbWVtb3AsICIrPVJ0MzIiLCAiQWRkIFJlZ2lzdGVyIHRvIE1lbW9yeSBXb3JkIiwgdG1wICs9 IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMoc3ViX21lbW9wLCAiLT1SdDMyIiwgIlN1YiBSZWdpc3Rl ciBmcm9tIE1lbW9yeSBXb3JkIiwgdG1wIC09IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMoYW5kX21l bW9wLCAiJj1SdDMyIiwgIkxvZ2ljYWwgQU5EIFJlZ2lzdGVyIHRvIE1lbW9yeSBXb3JkIiwgdG1w ICY9IFJ0VikKK1NURF9NRU1PUF9BTU9ERVMob3JfbWVtb3AsICJ8PVJ0MzIiLCAiTG9naWNhbCBP UiBSZWdpc3RlciB0byBNZW1vcnkgV29yZCIsIHRtcCB8PSBSdFYpCisKKworU1REX01FTU9QX0FN T0RFUyhpYWRkX21lbW9wLCAiKz0jVTUiLCAiQWRkIEltbWVkaWF0ZSB0byBNZW1vcnkgV29yZCIs IHRtcCArPSBVaVYpCitTVERfTUVNT1BfQU1PREVTKGlzdWJfbWVtb3AsICItPSNVNSIsICJTdWIg SW1tZWRpYXRlIHRvIE1lbW9yeSBXb3JkIiwgdG1wIC09IFVpVikKK1NURF9NRU1PUF9BTU9ERVMo aWFuZF9tZW1vcCwgIj1jbHJiaXQoI1U1KSIsICJDbGVhciBhIGJpdCBpbiBtZW1vcnkiLCB0bXAg Jj0gKH4oMTw8VWlWKSkpCitTVERfTUVNT1BfQU1PREVTKGlvcl9tZW1vcCwgICI9c2V0Yml0KCNV NSkiLCAiU2V0IGEgYml0IGluIG1lbW9yeSIsIHRtcCB8PSAoMTw8VWlWKSkKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgIFY0IHN0b3JlIGltbWVkaWF0ZXMg ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBQ cmVkaWNhdGVkIFN0b3JlIGltbWVkaWF0ZXMgKi8KKyNkZWZpbmUgVjRfUFNUSV9BTU9ERVMoVEFH LERFU1QsT1BFUixERVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJQ1MpXAorUTZJTlNOKFM0XyMjVEFH IyN0X2lvLCJpZiAoUHY0KSAiT1BFUiIoUnMzMisjdTY6IlNIRlQiKT0iREVTVCxBVFRSSUIsREVT Q1Ise2ZFQV9SSShSc1YsdWlWKTsgaWYgKGZMU0JPTEQoUHZWKSl7IFNFTUFOVElDUzsgfSBlbHNl IHtTVE9SRV9DQU5DRUwoRUEpO319KVwKK1E2SU5TTihTNF8jI1RBRyMjZl9pbywiaWYgKCFQdjQp ICJPUEVSIihSczMyKyN1NjoiU0hGVCIpPSJERVNULEFUVFJJQixERVNDUix7ZkVBX1JJKFJzVix1 aVYpOyBpZiAoZkxTQk9MRE5PVChQdlYpKXsgU0VNQU5USUNTOyB9IGVsc2Uge1NUT1JFX0NBTkNF TChFQSk7fX0pXAorUTZJTlNOKFM0XyMjVEFHIyN0bmV3X2lvLCJpZiAoUHY0Lm5ldykgIk9QRVIi KFJzMzIrI3U2OiJTSEZUIik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFfUkkoUnNWLHVpVik7IGlm IChmTFNCTkVXKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlc CitRNklOU04oUzRfIyNUQUcjI2ZuZXdfaW8sImlmICghUHY0Lm5ldykgIk9QRVIiKFJzMzIrI3U2 OiJTSEZUIik9IkRFU1QsQVRUUklCLERFU0NSLHtmRUFfUkkoUnNWLHVpVik7IGlmIChmTFNCTkVX Tk9UKFB2TikpeyBTRU1BTlRJQ1M7IH0gZWxzZSB7U1RPUkVfQ0FOQ0VMKEVBKTt9fSlcCitERUZf TUFQUElORyhTNF8jI1RBRyMjdF96b21hcCwiaWYgKFB2NCkgIk9QRVIiKFJzMzIpPSJERVNULCJp ZiAoUHY0KSAiT1BFUiIoUnMzMisjMCk9IkRFU1QpO1wKK0RFRl9NQVBQSU5HKFM0XyMjVEFHIyNm X3pvbWFwLCJpZiAoIVB2NCkgIk9QRVIiKFJzMzIpPSJERVNULCJpZiAoIVB2NCkgIk9QRVIiKFJz MzIrIzApPSJERVNUKTtcCitERUZfTUFQUElORyhTNF8jI1RBRyMjdG5ld196b21hcCwiaWYgKFB2 NC5uZXcpICJPUEVSIihSczMyKT0iREVTVCwiaWYgKFB2NC5uZXcpICJPUEVSIihSczMyKyMwKT0i REVTVCk7XAorREVGX01BUFBJTkcoUzRfIyNUQUcjI2ZuZXdfem9tYXAsImlmICghUHY0Lm5ldykg Ik9QRVIiKFJzMzIpPSJERVNULCJpZiAoIVB2NC5uZXcpICJPUEVSIihSczMyKyMwKT0iREVTVCk7 XAorCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBzdG9yZSBpbW1lZGlhdGUgaW5zdHJ1Y3Rpb25zICov CitWNF9QU1RJX0FNT0RFUyhzdG9yZWlyYiwiI1M2IiwibWVtYiIsIlN0b3JlIEltbWVkaWF0ZSBC eXRlIixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFfTUVNU0laRV8xQixBX1NUT1JFLEFfU1RP UkVJTU1FRCksIjAiLGZJTU1FWFQoU2lWKTsgZlNUT1JFKDEsMSxFQSxTaVYpKQorVjRfUFNUSV9B TU9ERVMoc3RvcmVpcmgsIiNTNiIsIm1lbWgiLCJTdG9yZSBJbW1lZGlhdGUgSGFsZiBpbnRlZ2Vy IixBVFRSSUJTKEFfQVJDSFYyLEFfUk9QU18yLEFfTUVNU0laRV8yQixBX1NUT1JFLEFfU1RPUkVJ TU1FRCksIjEiLGZJTU1FWFQoU2lWKTsgZlNUT1JFKDEsMixFQSxTaVYpKQorVjRfUFNUSV9BTU9E RVMoc3RvcmVpcmksIiNTNiIsIm1lbXciLCJTdG9yZSBJbW1lZGlhdGUgV29yZCIsQVRUUklCUyhB X0FSQ0hWMixBX1JPUFNfMixBX01FTVNJWkVfNEIsQV9TVE9SRSxBX1NUT1JFSU1NRUQpLCIyIixm SU1NRVhUKFNpVik7IGZTVE9SRSgxLDQsRUEsU2lWKSkKKworCisvKiBOb24tcHJlZGljYXRlZCBz dG9yZSBpbW1lZGlhdGVzICovCisjZGVmaW5lIFY0X1NUSV9BTU9ERVMoVEFHLERFU1QsT1BFUixE RVNDUixBVFRSSUIsU0hGVCxTRU1BTlRJQ1MpXAorUTZJTlNOKFM0XyMjVEFHIyNfaW8sICBPUEVS IihSczMyKyN1NjoiU0hGVCIpPSJERVNULCAgQVRUUklCLERFU0NSLHtmRUFfUkkoUnNWLHVpVik7 IFNFTUFOVElDUzsgfSlcCisvKlE2SU5TTihTNF8jI1RBRyMjX3JyLCAgT1BFUiIoUnMzMitSdDMy PDwjdTIpPSJERVNULCAgIEFUVFJJQixERVNDUix7ZkVBX1JScyhSc1YsUnRWLHVpVik7IFNFTUFO VElDUzsgfSkqL1wKK0RFRl9NQVBQSU5HKFM0XyMjVEFHIyNfem9tYXAsT1BFUiIoUnMzMik9IkRF U1QsT1BFUiIoUnMzMisjMCk9IkRFU1QpOworCisvKiBUaGUgc2V0IG9mIDMyLWJpdCBzdG9yZSBp bW1lZGlhdGUgaW5zdHJ1Y3Rpb25zICovCitWNF9TVElfQU1PREVTKHN0b3JlaXJiLCIjUzgiLCJt ZW1iIiwiU3RvcmUgSW1tZWRpYXRlIEJ5dGUiLEFUVFJJQlMoQV9BUkNIVjIsQV9ST1BTXzIsQV9N RU1TSVpFXzFCLEFfU1RPUkUsQV9TVE9SRUlNTUVEKSwiMCIsZklNTUVYVChTaVYpOyBmU1RPUkUo MSwxLEVBLFNpVikpCitWNF9TVElfQU1PREVTKHN0b3JlaXJoLCIjUzgiLCJtZW1oIiwiU3RvcmUg SW1tZWRpYXRlIEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMixBX01FTVNJ WkVfMkIsQV9TVE9SRSxBX1NUT1JFSU1NRUQpLCIxIixmSU1NRVhUKFNpVik7IGZTVE9SRSgxLDIs RUEsU2lWKSkKK1Y0X1NUSV9BTU9ERVMoc3RvcmVpcmksIiNTOCIsIm1lbXciLCJTdG9yZSBJbW1l ZGlhdGUgV29yZCIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMixBX01FTVNJWkVfNEIsQV9TVE9S RSxBX1NUT1JFSU1NRUQpLCIyIixmSU1NRVhUKFNpVik7IGZTVE9SRSgxLDQsRUEsU2lWKSkKKwor CisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICBW MiBHUC1yZWxhdGl2ZSBMRC9TVCAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq LworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCisjZGVmaW5lIFNURF9HUExEX0FNT0RFUyhUQUcsT1BFUixERVNDUixB VFRSSUIsU0hGVCxTRU1BTlRJQ1MpXAorUTZJTlNOKEwyXyMjVEFHIyNncCwgT1BFUiIoZ3ArI3Ux NjoiU0hGVCIpIiwgICBBVFRSSUIsREVTQ1Ise2ZJTU1FWFQodWlWKTsgZkVBX0dQSSh1aVYpOyBT RU1BTlRJQ1M7IH0pCisKKy8qIFRoZSBzZXQgb2YgMzItYml0IGxvYWQgaW5zdHJ1Y3Rpb25zICov CitTVERfR1BMRF9BTU9ERVMobG9hZHJ1YiwiUmQzMj1tZW11YiIsIkxvYWQgVW5zaWduZWQgQnl0 ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FELEFfQVJDSFYyKSwiMCIsZkxPQUQoMSwxLHUs RUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcmIsICJSZDMyPW1lbWIiLCAiTG9hZCBzaWdu ZWQgQnl0ZSIsQVRUUklCUyhBX01FTVNJWkVfMUIsQV9MT0FELEFfQVJDSFYyKSwiMCIsZkxPQUQo MSwxLHMsRUEsUmRWKSkKK1NURF9HUExEX0FNT0RFUyhsb2FkcnVoLCJSZDMyPW1lbXVoIiwiTG9h ZCB1bnNpZ25lZCBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfTE9BRCxBX0FS Q0hWMiksIjEiLGZMT0FEKDEsMix1LEVBLFJkVikpCitTVERfR1BMRF9BTU9ERVMobG9hZHJoLCAi UmQzMj1tZW1oIiwgIkxvYWQgc2lnbmVkIEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX01FTVNJWkVf MkIsQV9MT0FELEFfQVJDSFYyKSwiMSIsZkxPQUQoMSwyLHMsRUEsUmRWKSkKK1NURF9HUExEX0FN T0RFUyhsb2FkcmksICJSZDMyPW1lbXciLCAiTG9hZCBXb3JkIixBVFRSSUJTKEFfTUVNU0laRV80 QixBX0xPQUQsQV9BUkNIVjIpLCIyIixmTE9BRCgxLDQsdSxFQSxSZFYpKQorU1REX0dQTERfQU1P REVTKGxvYWRyZCwgIlJkZDMyPW1lbWQiLCJMb2FkIERvdWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFf TUVNU0laRV84QixBX0xPQUQsQV9BUkNIVjIpLCIzIixmTE9BRCgxLDgsdSxFQSxSZGRWKSkKKwor CisjZGVmaW5lIFNURF9HUFNUX0FNT0RFUyhUQUcsREVTVCxPUEVSLERFU0NSLEFUVFJJQixTSEZU LFNFTUFOVElDUylcCitRNklOU04oUzJfIyNUQUcjI2dwLCBPUEVSIihncCsjdTE2OiJTSEZUIik9 IkRFU1QsIEFUVFJJQixERVNDUix7ZklNTUVYVCh1aVYpOyBmRUFfR1BJKHVpVik7IFNFTUFOVElD UzsgfSkKKworLyogVGhlIHNldCBvZiAzMi1iaXQgc3RvcmUgaW5zdHJ1Y3Rpb25zICovCitTVERf R1BTVF9BTU9ERVMoc3RvcmVyYiwgIlJ0MzIiLCAibWVtYiIsIlN0b3JlIEJ5dGUiLEFUVFJJQlMo QV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9BUkNIVjIpLCIwIixmU1RPUkUoMSwxLEVBLGZHRVRCWVRF KDAsUnRWKSkpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyaCwgIlJ0MzIiLCAibWVtaCIsIlN0b3Jl IEhhbGYgaW50ZWdlciIsQVRUUklCUyhBX01FTVNJWkVfMkIsQV9TVE9SRSxBX0FSQ0hWMiksIjEi LGZTVE9SRSgxLDIsRUEsZkdFVEhBTEYoMCxSdFYpKSkKK1NURF9HUFNUX0FNT0RFUyhzdG9yZXJm LCAiUnQuSDMyIiwgIm1lbWgiLCJTdG9yZSBVcHBlciBIYWxmIGludGVnZXIiLEFUVFJJQlMoQV9N RU1TSVpFXzJCLEFfU1RPUkUsQV9BUkNIVjIpLCIxIixmU1RPUkUoMSwyLEVBLGZHRVRIQUxGKDEs UnRWKSkpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyaSwgIlJ0MzIiLCAibWVtdyIsIlN0b3JlIFdv cmQiLEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9BUkNIVjIpLCIyIixmU1RPUkUoMSw0 LEVBLFJ0VikpCitTVERfR1BTVF9BTU9ERVMoc3RvcmVyZCwgIlJ0dDMyIiwibWVtZCIsIlN0b3Jl IERvdWJsZSBpbnRlZ2VyIixBVFRSSUJTKEFfTUVNU0laRV84QixBX1NUT1JFLEFfQVJDSFYyKSwi MyIsZlNUT1JFKDEsOCxFQSxSdHRWKSkKK1NURF9HUFNUX0FNT0RFUyhzdG9yZXJpbmV3LCAiTnQ4 Lm5ldyIsICJtZW13IiwiU3RvcmUgV29yZCIsQVRUUklCUyhBX05PVEVfTkVXVkFMX1NMT1QwLEFf TlZTVE9SRSxBX05PVEVfTlZTTE9UMCxBX01FTVNJWkVfNEIsQV9TVE9SRSxBX1JFU1RSSUNUX05P U0xPVDFfU1RPUkUsQV9BUkNIVjIpLCIyIixmU1RPUkUoMSw0LEVBLGZORVdSRUdfU1QoTnROKSkp CitTVERfR1BTVF9BTU9ERVMoc3RvcmVyYm5ldywgIk50OC5uZXciLCAibWVtYiIsIlN0b3JlIEJ5 dGUiLEFUVFJJQlMoQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05WU0xPVDAs QV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFLEFfQVJDSFYyKSwi MCIsZlNUT1JFKDEsMSxFQSxmR0VUQllURSgwLGZORVdSRUdfU1QoTnROKSkpKQorU1REX0dQU1Rf QU1PREVTKHN0b3JlcmhuZXcsICJOdDgubmV3IiwgIm1lbWgiLCJTdG9yZSBIYWxmIGludGVnZXIi LEFUVFJJQlMoQV9OT1RFX05FV1ZBTF9TTE9UMCxBX05WU1RPUkUsQV9OT1RFX05WU0xPVDAsQV9N RU1TSVpFXzJCLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxX1NUT1JFLEFfQVJDSFYyKSwiMSIs ZlNUT1JFKDEsMixFQSxmR0VUSEFMRigwLGZORVdSRUdfU1QoTnROKSkpKQorCisKKworCisKKwor I3VuZGVmIEZSQU1FX0VYUExJQ0lUCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9y dGVkL21weS5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbXB5LmlkZWYKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkxZDUzNAotLS0gL2Rldi9udWxsCisrKyBiL3Rh cmdldC9oZXhhZ29uL2ltcG9ydGVkL21weS5pZGVmCkBAIC0wLDAgKzEsMTI2OSBAQAorLyoKKyAq ICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq CisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorICovCisKKy8qCisgKiBNdWx0aXBseSBJbnN0cnVjdGlvbnMKKyAqLworCisKKyNkZWZp bmUgU1REX1NQX01PREVTKFRBRyxPUEVSLEFUUixEU1QsQUNDU0VNLFNFTSxPU0VNLFNBVFNFTSxS TkRTRU0sQUNDU1lOKVwKK1E2SU5TTihNMl8jI1RBRyMjX2hoX3MwLCBPUEVSIihScy5IMzIsUnQu SDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gU0VNKCAg ICAgICAgIGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSk7IEFDQ1NZTjt9KVwKK1E2 SU5TTihNMl8jI1RBRyMjX2hoX3MxLCBPUEVSIihScy5IMzIsUnQuSDMyKTo8PDEiT1NFTSwgICAg QVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRIQUxGKDEs UnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19o bF9zMCwgT1BFUiIoUnMuSDMyLFJ0LkwzMikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNUPVNBVFNF TShSTkRTRU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMCxS dFYpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19obF9zMSwgT1BFUiIoUnMuSDMy LFJ0LkwzMik6PDwxIk9TRU0sICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIGZT Q0FMRSgxLFNFTShmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMCxSdFYpKSkpKTsgQUNDU1lOO30p XAorUTZJTlNOKE0yXyMjVEFHIyNfbGhfczAsIE9QRVIiKFJzLkwzMixSdC5IMzIpIk9TRU0sICAg ICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAgICAgZkdFVEhB TEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKTsgQUNDU1lOO30pXAorUTZJTlNOKE0yXyMjVEFH IyNfbGhfczEsIE9QRVIiKFJzLkwzMixSdC5IMzIpOjw8MSJPU0VNLCAgICBBVFIsIiIse0RTVD1T QVRTRU0oUk5EU0VNKEFDQ1NFTSBmU0NBTEUoMSxTRU0oZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxG KDEsUnRWKSkpKSk7IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xsX3MwLCBPUEVSIihS cy5MMzIsUnQuTDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NT RU0gU0VNKCAgICAgICAgIGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSk7IEFDQ1NZ Tjt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xsX3MxLCBPUEVSIihScy5MMzIsUnQuTDMyKTo8PDEi T1NFTSwgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZH RVRIQUxGKDAsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSkpOyBBQ0NTWU47fSkKKworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogbXVsdGlw bHkgMTZ4MTYtPjMyIHNpZ25lZCBpbnN0cnVjdGlvbnMgICAgICAgICAgICAqLworLyoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworU1REX1NQX01P REVTKG1weV9hY2MsICAgICJSeDMyKz1tcHkiLCAsUnhWLFJ4VisgICAgLGZNUFkxNlNTLCAgICAg ICAgICAsZlBBU1MsZlBBU1MsZkFDQygpKQorU1REX1NQX01PREVTKG1weV9uYWMsICAgICJSeDMy LT1tcHkiLCAsUnhWLFJ4Vi0gICAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MsZkFD QygpKQorU1REX1NQX01PREVTKG1weV9hY2Nfc2F0LCJSeDMyKz1tcHkiLCAsUnhWLFJ4VisgICAg LGZNUFkxNlNTLCI6c2F0IiAgICAsZlNBVCwgZlBBU1MsZkFDQygpKQorU1REX1NQX01PREVTKG1w eV9uYWNfc2F0LCJSeDMyLT1tcHkiLCAsUnhWLFJ4Vi0gICAgLGZNUFkxNlNTLCI6c2F0IiAgICAs ZlNBVCwgZlBBU1MsZkFDQygpKQorU1REX1NQX01PREVTKG1weSwgICAgICAgICJSZDMyPW1weSIs ICAsUmRWLCAgICAgICAgLGZNUFkxNlNTLCAgICAgICAgICAsZlBBU1MsZlBBU1MsKQorU1REX1NQ X01PREVTKG1weV9zYXQsICAgICJSZDMyPW1weSIsICAsUmRWLCAgICAgICAgLGZNUFkxNlNTLCI6 c2F0IiAgICAsZlNBVCwgZlBBU1MsKQorU1REX1NQX01PREVTKG1weV9ybmQsICAgICJSZDMyPW1w eSIsICAsUmRWLCAgICAgICAgLGZNUFkxNlNTLCI6cm5kIiAgICAsZlBBU1MsZlJPVU5ELCkKK1NU RF9TUF9NT0RFUyhtcHlfc2F0X3JuZCwiUmQzMj1tcHkiLCAgLFJkViwgICAgICAgICxmTVBZMTZT UywiOnJuZDpzYXQiLGZTQVQsIGZST1VORCwpCitTVERfU1BfTU9ERVMobXB5ZF9hY2MsICAgIlJ4 eDMyKz1tcHkiLCxSeHhWLFJ4eFYrICAsZk1QWTE2U1MsICAgICAgICAgICxmUEFTUyxmUEFTUyxm QUNDKCkpCitTVERfU1BfTU9ERVMobXB5ZF9uYWMsICAgIlJ4eDMyLT1tcHkiLCxSeHhWLFJ4eFYt ICAsZk1QWTE2U1MsICAgICAgICAgICxmUEFTUyxmUEFTUyxmQUNDKCkpCitTVERfU1BfTU9ERVMo bXB5ZCwgICAgICAgIlJkZDMyPW1weSIsICxSZGRWLCAgICAgICAsZk1QWTE2U1MsICAgICAgICAg ICxmUEFTUyxmUEFTUywpCitTVERfU1BfTU9ERVMobXB5ZF9ybmQsICAgIlJkZDMyPW1weSIsICxS ZGRWLCAgICAgICAsZk1QWTE2U1MsIjpybmQiICAgICxmUEFTUyxmUk9VTkQsKQorCisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIG11 bHRpcGx5IDE2eDE2LT4zMiB1bnNpZ25lZCBpbnN0cnVjdGlvbnMgICAgICAgICAgKi8KKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZp bmUgU1REX1VTUF9NT0RFUyhUQUcsT1BFUixBVFIsRFNULEFDQ1NFTSxTRU0sT1NFTSxTQVRTRU0s Uk5EU0VNLEFDQ1NZTilcCitRNklOU04oTTJfIyNUQUcjI19oaF9zMCwgT1BFUiIoUnMuSDMyLFJ0 LkgzMikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIFNFTSgg ICAgICAgICBmR0VUVUhBTEYoMSxSc1YpLGZHRVRVSEFMRigxLFJ0VikpKSk7IEFDQ1NZTjt9KVwK K1E2SU5TTihNMl8jI1RBRyMjX2hoX3MxLCBPUEVSIihScy5IMzIsUnQuSDMyKTo8PDEiT1NFTSwg ICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0gZlNDQUxFKDEsU0VNKGZHRVRVSEFM RigxLFJzViksZkdFVFVIQUxGKDEsUnRWKSkpKSk7IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RB RyMjX2hsX3MwLCBPUEVSIihScy5IMzIsUnQuTDMyKSJPU0VNLCAgICAgICAgQVRSLCIiLHtEU1Q9 U0FUU0VNKFJORFNFTShBQ0NTRU0gU0VNKCAgICAgICAgIGZHRVRVSEFMRigxLFJzViksZkdFVFVI QUxGKDAsUnRWKSkpKTsgQUNDU1lOO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfaGxfczEsIE9QRVIi KFJzLkgzMixSdC5MMzIpOjw8MSJPU0VNLCAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFD Q1NFTSBmU0NBTEUoMSxTRU0oZkdFVFVIQUxGKDEsUnNWKSxmR0VUVUhBTEYoMCxSdFYpKSkpKTsg QUNDU1lOO30pXAorUTZJTlNOKE0yXyMjVEFHIyNfbGhfczAsIE9QRVIiKFJzLkwzMixSdC5IMzIp Ik9TRU0sICAgICAgICBBVFIsIiIse0RTVD1TQVRTRU0oUk5EU0VNKEFDQ1NFTSBTRU0oICAgICAg ICAgZkdFVFVIQUxGKDAsUnNWKSxmR0VUVUhBTEYoMSxSdFYpKSkpO30gQUNDU1lOOylcCitRNklO U04oTTJfIyNUQUcjI19saF9zMSwgT1BFUiIoUnMuTDMyLFJ0LkgzMik6PDwxIk9TRU0sICAgIEFU UiwiIix7RFNUPVNBVFNFTShSTkRTRU0oQUNDU0VNIGZTQ0FMRSgxLFNFTShmR0VUVUhBTEYoMCxS c1YpLGZHRVRVSEFMRigxLFJ0VikpKSkpOyBBQ0NTWU47fSlcCitRNklOU04oTTJfIyNUQUcjI19s bF9zMCwgT1BFUiIoUnMuTDMyLFJ0LkwzMikiT1NFTSwgICAgICAgIEFUUiwiIix7RFNUPVNBVFNF TShSTkRTRU0oQUNDU0VNIFNFTSggICAgICAgICBmR0VUVUhBTEYoMCxSc1YpLGZHRVRVSEFMRigw LFJ0VikpKSk7IEFDQ1NZTjt9KVwKK1E2SU5TTihNMl8jI1RBRyMjX2xsX3MxLCBPUEVSIihScy5M MzIsUnQuTDMyKTo8PDEiT1NFTSwgICAgQVRSLCIiLHtEU1Q9U0FUU0VNKFJORFNFTShBQ0NTRU0g ZlNDQUxFKDEsU0VNKGZHRVRVSEFMRigwLFJzViksZkdFVFVIQUxGKDAsUnRWKSkpKSk7IEFDQ1NZ Tjt9KQorCitTVERfVVNQX01PREVTKG1weXVfYWNjLCAgICAiUngzMis9bXB5dSIsICxSeFYsUnhW KyAgLGZNUFkxNlVVLCAgICAgICAgICAsZlBBU1MsZlBBU1MsZkFDQygpKQorU1REX1VTUF9NT0RF UyhtcHl1X25hYywgICAgIlJ4MzItPW1weXUiLCAsUnhWLFJ4Vi0gICxmTVBZMTZVVSwgICAgICAg ICAgLGZQQVNTLGZQQVNTLGZBQ0MoKSkKK1NURF9VU1BfTU9ERVMobXB5dSwgICAgICAgICJSZDMy PW1weXUiLCAgQVRUUklCUyhBX0lOVFJJTlNJQ19SRVRVUk5TX1VOU0lHTkVEKSAsUmRWLCAgLGZN UFkxNlVVLCAsZlBBU1MsZlBBU1MsKQorU1REX1VTUF9NT0RFUyhtcHl1ZF9hY2MsICAgIlJ4eDMy Kz1tcHl1IiwsUnh4VixSeHhWKyxmTVBZMTZVVSwgICAgICAgICAgLGZQQVNTLGZQQVNTLGZBQ0Mo KSkKK1NURF9VU1BfTU9ERVMobXB5dWRfbmFjLCAgICJSeHgzMi09bXB5dSIsLFJ4eFYsUnh4Vi0s Zk1QWTE2VVUsICAgICAgICAgICxmUEFTUyxmUEFTUyxmQUNDKCkpCitTVERfVVNQX01PREVTKG1w eXVkLCAgICAgICAiUmRkMzI9bXB5dSIsIEFUVFJJQlMoQV9JTlRSSU5TSUNfUkVUVVJOU19VTlNJ R05FRCkgLFJkZFYsICxmTVBZMTZVVSwgLGZQQVNTLGZQQVNTLCkKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBtcHkgMTZ4I3M4LT4zMiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitRNklOU04oTTJfbXB5c2lwLCJSZDMyPSttcHlpKFJzMzIs I3U4KSIsQVRUUklCUyhBX0FSQ0hWMixBX1JPUFNfMixBX01QWSksCisiMzItYml0IE11bHRpcGx5 IGJ5IHVuc2lnbmVkIGltbWVkaWF0ZSIsCit7IGZJTU1FWFQodWlWKTsgUmRWPVJzVip1aVY7IH0p CisKK1E2SU5TTihNMl9tcHlzaW4sIlJkMzI9LW1weWkoUnMzMiwjdTgpIixBVFRSSUJTKEFfQVJD SFYyLEFfUk9QU18yLEFfTVBZKSwKKyIzMi1iaXQgTXVsdGlwbHkgYnkgdW5zaWduZWQgaW1tZWRp YXRlLCBuZWdhdGUgcmVzdWx0IiwKK3sgUmRWPVJzViotdWlWOyB9KQorCitERUZfVjJfQ09ORF9N QVBQSU5HKE0yX21weXNtaSwiUmQzMj1tcHlpKFJzMzIsI205KSIsIigoI205PDApICYmICgjbTk+ LTI1NikpIiwiUmQzMj0tbXB5aShSczMyLCNtOSooLTEpKSIsIlJkMzI9K21weWkoUnMzMiwjbTkp IikKKworUTZJTlNOKE0yX21hY3NpcCwiUngzMis9bXB5aShSczMyLCN1OCkiLEFUVFJJQlMoQV9B UkNIVjIsQV9ST1BTXzIsQV9NUFkpLAorIjMyLWJpdCBNdWx0aXBseS1BZGQgYnkgdW5zaWduZWQg aW1tZWRpYXRlIiwKK3sgZklNTUVYVCh1aVYpOyBSeFY9UnhWICsgKFJzVip1aVYpOyBmQUNDKCk7 fSkKKworUTZJTlNOKE0yX21hY3NpbiwiUngzMi09bXB5aShSczMyLCN1OCkiLEFUVFJJQlMoQV9B UkNIVjIsQV9ST1BTXzIsQV9NUFkpLAorIjMyLWJpdCBNdWx0aXBseS1TdWJ0cmFjdCBieSB1bnNp Z25lZCBpbW1lZGlhdGUiLAoreyBmSU1NRVhUKHVpVik7IFJ4Vj1SeFYgLSAoUnNWKnVpVik7IGZB Q0MoKTt9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworLyogbXVsdGlwbHkvbWFjICAzMngzMi0+NjQgaW5zdHJ1Y3Rpb25zICAgICAgICovCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1E2SU5TTihN Ml9kcG1weXNzX3MwLCAgICAiUmRkMzI9bXB5KFJzMzIsUnQzMikiLCBBVFRSSUJTKEFfSVRfTVBZ LEFfSVRfTVBZXzMyKSwiTXVsdGlwbHkgMzJ4MzIiLHtSZGRWPWZNUFkzMlNTKFJzVixSdFYpO30p CitRNklOU04oTTJfZHBtcHlzc19hY2NfczAsIlJ4eDMyKz1tcHkoUnMzMixSdDMyKSIsQVRUUklC UyhBX0lUX01QWSxBX0lUX01QWV8zMixBX1JPUFNfMiksIk11bHRpcGx5IDMyeDMyIix7Unh4Vj0g Unh4ViArIGZNUFkzMlNTKFJzVixSdFYpOyBmQUNDKCk7fSkKK1E2SU5TTihNMl9kcG1weXNzX25h Y19zMCwiUnh4MzItPW1weShSczMyLFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMy LEFfUk9QU18yKSwiTXVsdGlwbHkgMzJ4MzIiLHtSeHhWPSBSeHhWIC0gZk1QWTMyU1MoUnNWLFJ0 Vik7IGZBQ0MoKTt9KQorCitRNklOU04oTTJfZHBtcHl1dV9zMCwgICAgIlJkZDMyPW1weXUoUnMz MixSdDMyKSIsIEFUVFJJQlMoQV9JVF9NUFksQV9JVF9NUFlfMzIsQV9JTlRSSU5TSUNfUkVUVVJO U19VTlNJR05FRCksIk11bHRpcGx5IDMyeDMyIix7UmRkVj1mTVBZMzJVVShmQ0FTVDR1KFJzViks ZkNBU1Q0dShSdFYpKTt9KQorUTZJTlNOKE0yX2RwbXB5dXVfYWNjX3MwLCJSeHgzMis9bXB5dShS czMyLFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfUk9QU18yKSwiTXVsdGlw bHkgMzJ4MzIiLHtSeHhWPSBSeHhWICsgZk1QWTMyVVUoZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRW KSk7IGZBQ0MoKTt9KQorUTZJTlNOKE0yX2RwbXB5dXVfbmFjX3MwLCJSeHgzMi09bXB5dShSczMy LFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfUk9QU18yKSwiTXVsdGlwbHkg MzJ4MzIiLHtSeHhWPSBSeHhWIC0gZk1QWTMyVVUoZkNBU1Q0dShSc1YpLGZDQVNUNHUoUnRWKSk7 IGZBQ0MoKTt9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBtdWx0aXBseS9tYWMgIDMyeDMyLT4zMiAodXBwZXIpIGluc3Ry dWN0aW9ucyAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KK1E2SU5TTihNMl9tcHlfdXAsICAgICAgICAiUmQzMj1tcHkoUnMz MixSdDMyKSIsIEFUVFJJQlMoQV9JVF9NUFksQV9JVF9NUFlfMzIpLCJNdWx0aXBseSAzMngzMiIs e1JkVj1mTVBZMzJTUyhSc1YsUnRWKT4+MzI7fSkKK1E2SU5TTihNMl9tcHlfdXBfczEsICAgICAi UmQzMj1tcHkoUnMzMixSdDMyKTo8PDEiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyKSwi TXVsdGlwbHkgMzJ4MzIiLHtSZFY9Zk1QWTMyU1MoUnNWLFJ0Vik+PjMxO30pCitRNklOU04oTTJf bXB5X3VwX3MxX3NhdCwgIlJkMzI9bXB5KFJzMzIsUnQzMik6PDwxOnNhdCIsIEFUVFJJQlMoQV9J VF9NUFksQV9JVF9NUFlfMzIpLCJNdWx0aXBseSAzMngzMiIse1JkVj1mU0FUKGZNUFkzMlNTKFJz VixSdFYpPj4zMSk7fSkKK1E2SU5TTihNMl9tcHl1X3VwLCAgICAgICAiUmQzMj1tcHl1KFJzMzIs UnQzMikiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfSU5UUklOU0lDX1JFVFVSTlNf VU5TSUdORUQpLCJNdWx0aXBseSAzMngzMiIse1JkVj1mTVBZMzJVVShmQ0FTVDR1KFJzViksZkNB U1Q0dShSdFYpKT4+MzI7fSkKK1E2SU5TTihNMl9tcHlzdV91cCwgICAgICAiUmQzMj1tcHlzdShS czMyLFJ0MzIpIiwgQVRUUklCUyhBX0lUX01QWSxBX0lUX01QWV8zMiksIk11bHRpcGx5IDMyeDMy Iix7UmRWPWZNUFkzMlNVKFJzVixmQ0FTVDR1KFJ0VikpPj4zMjt9KQorUTZJTlNOKE0yX2RwbXB5 c3Nfcm5kX3MwLCJSZDMyPW1weShSczMyLFJ0MzIpOnJuZCIsIEFUVFJJQlMoQV9JVF9NUFksQV9J VF9NUFlfMzIpLCJNdWx0aXBseSAzMngzMiIse1JkVj0oZk1QWTMyU1MoUnNWLFJ0VikrZkNPTlNU TEwoMHg4MDAwMDAwMCkpPj4zMjt9KQorCitRNklOU04oTTRfbWFjX3VwX3MxX3NhdCwgIlJ4MzIr PW1weShSczMyLFJ0MzIpOjw8MTpzYXQiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyKSwi TXVsdGlwbHkgMzJ4MzIiLHtSeFY9ZlNBVCggIChmU0UzMl82NChSeFYpKSArIChmTVBZMzJTUyhS c1YsUnRWKT4+MzEpKTsgZkFDQygpO30pCitRNklOU04oTTRfbmFjX3VwX3MxX3NhdCwgIlJ4MzIt PW1weShSczMyLFJ0MzIpOjw8MTpzYXQiLCBBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyKSwi TXVsdGlwbHkgMzJ4MzIiLHtSeFY9ZlNBVCggIChmU0UzMl82NChSeFYpKSAtIChmTVBZMzJTUyhS c1YsUnRWKT4+MzEpKTsgZkFDQygpO30pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKiAzMngzMi0+MzIgbXVsdGlwbHkgKGxvd2VyKSAgICAg ICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCitRNklOU04oTTJfbXB5aSwiUmQzMj1tcHlpKFJzMzIsUnQzMikiLEFUVFJJQlMo QV9JVF9NUFksQV9JVF9NUFlfMzIsQV9NUFkpLAorIk11bHRpcGx5IEludGVnZXIiLAoreyBSZFY9 UnNWKlJ0Vjt9KQorCisKKworREVGX01BUFBJTkcoTTJfbXB5dWksIlJkMzI9bXB5dWkoUnMzMixS dDMyKSIsIlJkMzI9bXB5aShSczMyLFJ0MzIpIikKKworCitRNklOU04oTTJfbWFjaSwiUngzMis9 bXB5aShSczMyLFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfQVJDSFYyLEFf Uk9QU18yLEFfTVBZKSwKKyJNdWx0aXBseS1BY2N1bXVsYXRlIEludGVnZXIiLAoreyBSeFY9UnhW ICsgUnNWKlJ0VjsgZkFDQygpO30pCisKK1E2SU5TTihNMl9tbmFjaSwiUngzMi09bXB5aShSczMy LFJ0MzIpIixBVFRSSUJTKEFfSVRfTVBZLEFfSVRfTVBZXzMyLEFfQVJDSFYyLEFfUk9QU18yLEFf TVBZKSwKKyJNdWx0aXBseS1OZWctQWNjdW11bGF0ZSBJbnRlZ2VyIiwKK3sgUnhWPVJ4ViAtIFJz VipSdFY7IGZBQ0MoKTt9KQorCisvKioqKioqIFdIWSBBUkUgVEhFU0UgSU4gTVBZLklERUY/ICoq KioqKioqKiovCisKK1E2SU5TTihNMl9hY2NpLCJSeDMyKz1hZGQoUnMzMixSdDMyKSIsQVRUUklC UyhBX1JPUFNfMixBX0FSQ0hWMiksCisiQWRkIHdpdGggYWNjdW11bGF0ZSIsCit7IFJ4Vj1SeFYg KyBSc1YgKyBSdFY7fSkKKworUTZJTlNOKE0yX2FjY2lpLCJSeDMyKz1hZGQoUnMzMiwjczgpIixB VFRSSUJTKEFfUk9QU18yLEFfQVJDSFYyKSwKKyJBZGQgd2l0aCBhY2N1bXVsYXRlIiwKK3sgZklN TUVYVChzaVYpOyBSeFY9UnhWICsgUnNWICsgc2lWO30pCisKK1E2SU5TTihNMl9uYWNjaSwiUngz Mi09YWRkKFJzMzIsUnQzMikiLEFUVFJJQlMoQV9ST1BTXzIsQV9BUkNIVjIpLAorIkFkZCB3aXRo IG5lZyBhY2N1bXVsYXRlIiwKK3sgUnhWPVJ4ViAtIChSc1YgKyBSdFYpO30pCisKK1E2SU5TTihN Ml9uYWNjaWksIlJ4MzItPWFkZChSczMyLCNzOCkiLEFUVFJJQlMoQV9ST1BTXzIsQV9BUkNIVjIp LAorIkFkZCB3aXRoIG5lZyBhY2N1bXVsYXRlIiwKK3sgZklNTUVYVChzaVYpOyBSeFY9UnhWIC0g KFJzViArIHNpVik7fSkKKworUTZJTlNOKE0yX3N1YmFjYywiUngzMis9c3ViKFJ0MzIsUnMzMiki LEFUVFJJQlMoQV9ST1BTXzIsQV9BUkNIVjIpLAorIlN1YiB3aXRoIGFjY3VtdWxhdGUiLAoreyBS eFY9UnhWICsgUnRWIC0gUnNWO30pCisKKworCisKK1E2SU5TTihNNF9tcHlycl9hZGRyLCJSeTMy PWFkZChSdTMyLG1weWkoUnkzMixSczMyKSkiLEFUVFJJQlMoQV9ST1BTXzIsQV9NUFkpLAorIk1w eSBieSBpbW1lZCBhbmQgYWRkIGltbWVkIiwKK3sgUnlWID0gUnVWICsgUnNWKlJ5VjsgZkFDQygp O30pCisKK1E2SU5TTihNNF9tcHlyaV9hZGRyX3UyLCJSZDMyPWFkZChSdTMyLG1weWkoI3U2OjIs UnMzMikpIixBVFRSSUJTKEFfUk9QU18yLEFfTVBZKSwKKyJNcHkgYnkgaW1tZWQgYW5kIGFkZCBp bW1lZCIsCit7IFJkViA9IFJ1ViArIFJzVip1aVY7IGZBQ0MoKTt9KQorCitRNklOU04oTTRfbXB5 cmlfYWRkciwiUmQzMj1hZGQoUnUzMixtcHlpKFJzMzIsI3U2KSkiLEFUVFJJQlMoQV9ST1BTXzIs QV9NUFkpLAorIk1weSBieSBpbW1lZCBhbmQgYWRkIGltbWVkIiwKK3sgZklNTUVYVCh1aVYpOyBS ZFYgPSBSdVYgKyBSc1YqdWlWOyBmQUNDKCk7fSkKKworCisKK1E2SU5TTihNNF9tcHlyaV9hZGRp LCJSZDMyPWFkZCgjdTYsbXB5aShSczMyLCNVNikpIixBVFRSSUJTKEFfUk9QU18yLEFfTVBZKSwK KyJNcHkgYnkgaW1tZWQgYW5kIGFkZCBpbW1lZCIsCit7IGZJTU1FWFQodWlWKTsgUmRWID0gdWlW ICsgUnNWKlVpVjt9KQorCisKKworUTZJTlNOKE00X21weXJyX2FkZGksIlJkMzI9YWRkKCN1Nixt cHlpKFJzMzIsUnQzMikpIixBVFRSSUJTKEFfUk9QU18yLEFfTVBZKSwKKyJNcHkgYnkgaW1tZWQg YW5kIGFkZCBpbW1lZCIsCit7IGZJTU1FWFQodWlWKTsgUmRWID0gdWlWICsgUnNWKlJ0Vjt9KQor CisKKworCisKKworCisKKworCisKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworLyogdmVjdG9yIG1hYyAgMnhbMTZ4MTYgLT4gMzJd ICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7 IGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxm R0VUSEFMRigwLFJ0VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxSZGRWLGZTQVQoZlNDQUxFKE4sZk1Q WTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorfQorUTZJTlNOKE0y X3ZtcHkyc19zMCwiUmRkMzI9dm1weWgoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9y IE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCitRNklOU04oTTJfdm1weTJzX3MxLCJSZGQzMj12bXB5 aChSczMyLFJ0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3Nl bWEoMSkpCisKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZT RVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZTUyhm R0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSkpKTtcCisgIGZTRVRXT1JEKDEsUnh4Vixm U0FUKGZHRVRXT1JEKDEsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzViks ZkdFVEhBTEYoMSxSdFYpKSkpKTtcCisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfdm1hYzJzX3Mw LCJSeHgzMis9dm1weWgoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5 Iix2bWFjX3NlbWEoMCkpCitRNklOU04oTTJfdm1hYzJzX3MxLCJSeHgzMis9dm1weWgoUnMzMixS dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEpKQor CisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNfc2VtYShOKVwKK3sgZlNFVFdPUkQoMCxS ZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1UoZkdFVEhBTEYoMCxSc1YpLGZHRVRVSEFMRigwLFJ0 VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxSZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1UoZkdFVEhB TEYoMSxSc1YpLGZHRVRVSEFMRigxLFJ0VikpKSkpO1wKK30KK1E2SU5TTihNMl92bXB5MnN1X3Mw LCJSZGQzMj12bXB5aHN1KFJzMzIsUnQzMik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBs eSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3ZtcHkyc3VfczEsIlJkZDMyPXZtcHloc3UoUnMz MixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEp KQorCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUV09S RCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1UoZkdFVEhB TEYoMCxSc1YpLGZHRVRVSEFMRigwLFJ0VikpKSkpO1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZTQVQo ZkdFVFdPUkQoMSxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNVKGZHRVRIQUxGKDEsUnNWKSxmR0VU VUhBTEYoMSxSdFYpKSkpKTtcCisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfdm1hYzJzdV9zMCwi Unh4MzIrPXZtcHloc3UoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5 Iix2bWFjX3NlbWEoMCkpCitRNklOU04oTTJfdm1hYzJzdV9zMSwiUnh4MzIrPXZtcHloc3UoUnMz MixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEp KQorCisKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IGZTRVRI QUxGKDEsUmRWLGZHRVRIQUxGKDEsKGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxS c1YpLGZHRVRIQUxGKDEsUnRWKSkpICsgMHg4MDAwKSkpKTtcCisgIGZTRVRIQUxGKDAsUmRWLGZH RVRIQUxGKDEsKGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxG KDAsUnRWKSkpICsgMHg4MDAwKSkpKTtcCit9CitRNklOU04oTTJfdm1weTJzX3MwcGFjaywiUmQz Mj12bXB5aChSczMyLFJ0MzIpOnJuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJWZWN0b3IgTXVs dGlwbHkiLHZtYWNfc2VtYSgwKSkKK1E2SU5TTihNMl92bXB5MnNfczFwYWNrLCJSZDMyPXZtcHlo KFJzMzIsUnQzMik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJWZWN0b3IgTXVsdGlw bHkiLHZtYWNfc2VtYSgxKSkKKworCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNfc2Vt YShOKVwKK3sgZlNFVFdPUkQoMCxSeHhWLGZHRVRXT1JEKDAsUnh4VikgKyBmTVBZMTZTUyhmR0VU SEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSk7XAorICBmU0VUV09SRCgxLFJ4eFYsZkdFVFdP UkQoMSxSeHhWKSArIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKTtc CisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfdm1hYzIsIlJ4eDMyKz12bXB5aChSczMyLFJ0MzIp IixBVFRSSUJTKEFfQVJDSFYyKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEoMCkpCisKKyN1 bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUV09SRCgwLFJkZFYs ZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0Vikp KSkpO1wKKyAgZlNFVFdPUkQoMSxSZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYo MixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSkpKTtcCit9CitRNklOU04oTTJfdm1weTJlc19zMCwi UmRkMzI9dm1weWVoKFJzczMyLFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5 Iix2bWFjX3NlbWEoMCkpCitRNklOU04oTTJfdm1weTJlc19zMSwiUmRkMzI9dm1weWVoKFJzczMy LFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBseSIsdm1hY19zZW1hKDEp KQorCisjdW5kZWYgdm1hY19zZW1hCisjZGVmaW5lIHZtYWNfc2VtYShOKVwKK3sgZlNFVFdPUkQo MCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxG KDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkpKSk7XAorICBmU0VUV09SRCgxLFJ4eFYsZlNBVChm R0VUV09SRCgxLFJ4eFYpICsgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VU SEFMRigyLFJ0dFYpKSkpKTtcCisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfdm1hYzJlc19zMCwi Unh4MzIrPXZtcHllaChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksIlZlY3RvciBNdWx0aXBs eSIsdm1hY19zZW1hKDApKQorUTZJTlNOKE0yX3ZtYWMyZXNfczEsIlJ4eDMyKz12bXB5ZWgoUnNz MzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiVmVjdG9yIE11bHRpcGx5Iix2bWFjX3NlbWEo MSkpCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBmU0VUV09S RCgwLFJ4eFYsZkdFVFdPUkQoMCxSeHhWKSArIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdF VEhBTEYoMCxSdHRWKSkpO1wKKyAgZlNFVFdPUkQoMSxSeHhWLGZHRVRXT1JEKDEsUnh4VikgKyBm TVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpKTtcCisgIGZBQ0MoKTtc Cit9CitRNklOU04oTTJfdm1hYzJlcywiUnh4MzIrPXZtcHllaChSc3MzMixSdHQzMikiLEFUVFJJ QlMoQV9BUkNIVjIpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNfc2VtYSgwKSkKKworCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor LyogdnJtcHloLCBha2EgQmlnIE1hYywgYWthIE1hYyBEYWRkeSwgYWthIE1hYy1hYy1hYy1hYyAq LworLyogdmVjdG9yIG1hYyAgNHhbMTZ4MTZdICsgNjQgLT42NCAgICAgICAgICAgICAgICAgICAg ICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisKKyN1bmRlZiB2bWFjX3NlbWEKKyNkZWZpbmUgdm1hY19zZW1hKE4pXAoreyBS eHhWID0gUnh4ViArIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSlc CisgICAgICAgICAgICAgICsgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0 dFYpKVwKKyAgICAgICAgICAgICAgKyBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxG KDIsUnR0VikpXAorICAgICAgICAgICAgICArIGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdF VEhBTEYoMyxSdHRWKSk7XAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX3ZybWFjX3MwLCJSeHgz Mis9dnJtcHloKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCJWZWN0b3IgTXVsdGlwbHkiLHZtYWNf c2VtYSgwKSkKKworI3VuZGVmIHZtYWNfc2VtYQorI2RlZmluZSB2bWFjX3NlbWEoTilcCit7IFJk ZFYgPSBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpXAorICAgICAg ICsgZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKVwKKyAgICAgICAr IGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSlcCisgICAgICAgKyBm TVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK30KK1E2SU5TTihN Ml92cm1weV9zMCwiUmRkMzI9dnJtcHloKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCJWZWN0b3Ig TXVsdGlwbHkiLHZtYWNfc2VtYSgwKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiB2ZWN0b3IgZHVhbCBtYWNzLiBqdXN0 IGxpa2UgY29tcGxleCAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiBXaXRoIHJvdW5kJnBhY2sg Ki8KKyN1bmRlZiBkbXB5X3NlbWEKKyNkZWZpbmUgZG1weV9zZW1hKE4pXAoreyBmU0VUSEFMRigw LFJkVixmR0VUSEFMRigxLChmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViks ZkdFVEhBTEYoMCxSdHRWKSkpICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkpICsg MHg4MDAwKSkpKTtcCisgIGZTRVRIQUxGKDEsUmRWLGZHRVRIQUxGKDEsKGZTQVQoZlNDQUxFKE4s Zk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSkgKyBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMyxS c3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkgKyAweDgwMDApKSkpO1wKK30KK1E2SU5TTihNMl92ZG1w eXJzX3MwLCJSZDMyPXZkbXB5KFJzczMyLFJ0dDMyKTpybmQ6c2F0IixBVFRSSUJTKCksICAgICJ2 ZWN0b3IgZHVhbCBtYWMgdy8gcm91bmQmcGFjayIsZG1weV9zZW1hKDApKQorUTZJTlNOKE0yX3Zk bXB5cnNfczEsIlJkMzI9dmRtcHkoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCks InZlY3RvciBkdWFsIG1hYyB3LyByb3VuZCZwYWNrIixkbXB5X3NlbWEoMSkpCisKKworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K Ky8qIHZlY3RvciBieXRlIG11bHRpcGxpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworCisKK1E2SU5TTihNNV92cm1weWJ1dSwiUmRkMzI9dnJtcHlidShSc3MzMixSdHQzMikiLEFU VFJJQlMoKSwKKyAidmVjdG9yIGR1YWwgbXB5IGJ5dGVzIiwKK3sKKyAgZlNFVFdPUkQoMCxSZGRW LChmTVBZMTZTUyhmR0VUVUJZVEUoMCxSc3NWKSxmR0VUVUJZVEUoMCxSdHRWKSkgKworCQkgICBm TVBZMTZTUyhmR0VUVUJZVEUoMSxSc3NWKSxmR0VUVUJZVEUoMSxSdHRWKSkgKworCQkgICBmTVBZ MTZTUyhmR0VUVUJZVEUoMixSc3NWKSxmR0VUVUJZVEUoMixSdHRWKSkgKworCQkgICBmTVBZMTZT UyhmR0VUVUJZVEUoMyxSc3NWKSxmR0VUVUJZVEUoMyxSdHRWKSkpKTsKKyAgZlNFVFdPUkQoMSxS ZGRWLChmTVBZMTZTUyhmR0VUVUJZVEUoNCxSc3NWKSxmR0VUVUJZVEUoNCxSdHRWKSkgKworCQkg ICBmTVBZMTZTUyhmR0VUVUJZVEUoNSxSc3NWKSxmR0VUVUJZVEUoNSxSdHRWKSkgKworCQkgICBm TVBZMTZTUyhmR0VUVUJZVEUoNixSc3NWKSxmR0VUVUJZVEUoNixSdHRWKSkgKworCQkgICBmTVBZ MTZTUyhmR0VUVUJZVEUoNyxSc3NWKSxmR0VUVUJZVEUoNyxSdHRWKSkpKTsKKyB9KQorCitRNklO U04oTTVfdnJtYWNidXUsIlJ4eDMyKz12cm1weWJ1KFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLAor ICJ2ZWN0b3IgZHVhbCBtYWMgYnl0ZXMiLAoreworICBmU0VUV09SRCgwLFJ4eFYsKGZHRVRXT1JE KDAsUnh4VikgKworCSAgICAgICAgICAgZk1QWTE2U1MoZkdFVFVCWVRFKDAsUnNzViksZkdFVFVC WVRFKDAsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDEsUnNzViksZkdFVFVCWVRF KDEsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDIsUnNzViksZkdFVFVCWVRFKDIs UnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVFVCWVRFKDMsUnNzViksZkdFVFVCWVRFKDMsUnR0 VikpKSk7CisgIGZTRVRXT1JEKDEsUnh4ViwoZkdFVFdPUkQoMSxSeHhWKSArCisJCSAgIGZNUFkx NlNTKGZHRVRVQllURSg0LFJzc1YpLGZHRVRVQllURSg0LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNT KGZHRVRVQllURSg1LFJzc1YpLGZHRVRVQllURSg1LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZH RVRVQllURSg2LFJzc1YpLGZHRVRVQllURSg2LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRV QllURSg3LFJzc1YpLGZHRVRVQllURSg3LFJ0dFYpKSkpOworICBmQUNDKCk7XAorIH0pCisKKwor UTZJTlNOKE01X3ZybXB5YnN1LCJSZGQzMj12cm1weWJzdShSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyAidmVjdG9yIGR1YWwgbXB5IGJ5dGVzIiwKK3sKKyAgZlNFVFdPUkQoMCxSZGRWLChmTVBZ MTZTUyhmR0VUQllURSgwLFJzc1YpLGZHRVRVQllURSgwLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNT KGZHRVRCWVRFKDEsUnNzViksZkdFVFVCWVRFKDEsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdF VEJZVEUoMixSc3NWKSxmR0VUVUJZVEUoMixSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllU RSgzLFJzc1YpLGZHRVRVQllURSgzLFJ0dFYpKSkpOworICBmU0VUV09SRCgxLFJkZFYsKGZNUFkx NlNTKGZHRVRCWVRFKDQsUnNzViksZkdFVFVCWVRFKDQsUnR0VikpICsKKwkJICAgZk1QWTE2U1Mo ZkdFVEJZVEUoNSxSc3NWKSxmR0VUVUJZVEUoNSxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VU QllURSg2LFJzc1YpLGZHRVRVQllURSg2LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRF KDcsUnNzViksZkdFVFVCWVRFKDcsUnR0VikpKSk7CisgfSkKKworUTZJTlNOKE01X3ZybWFjYnN1 LCJSeHgzMis9dnJtcHlic3UoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBkdWFs IG1hYyBieXRlcyIsCit7CisgIGZTRVRXT1JEKDAsUnh4ViwoZkdFVFdPUkQoMCxSeHhWKSArCisJ CSAgIGZNUFkxNlNTKGZHRVRCWVRFKDAsUnNzViksZkdFVFVCWVRFKDAsUnR0VikpICsKKwkJICAg Zk1QWTE2U1MoZkdFVEJZVEUoMSxSc3NWKSxmR0VUVUJZVEUoMSxSdHRWKSkgKworCQkgICBmTVBZ MTZTUyhmR0VUQllURSgyLFJzc1YpLGZHRVRVQllURSgyLFJ0dFYpKSArCisJCSAgIGZNUFkxNlNT KGZHRVRCWVRFKDMsUnNzViksZkdFVFVCWVRFKDMsUnR0VikpKSk7CisgIGZTRVRXT1JEKDEsUnh4 ViwoZkdFVFdPUkQoMSxSeHhWKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDQsUnNzViksZkdF VFVCWVRFKDQsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoNSxSc3NWKSxmR0VUVUJZ VEUoNSxSdHRWKSkgKworCQkgICBmTVBZMTZTUyhmR0VUQllURSg2LFJzc1YpLGZHRVRVQllURSg2 LFJ0dFYpKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDcsUnNzViksZkdFVFVCWVRFKDcsUnR0 VikpKSk7CisgIGZBQ0MoKTtcCisgfSkKKworCitRNklOU04oTTVfdm1weWJ1dSwiUmRkMzI9dm1w eWJ1KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyAidmVjdG9yIG1weSBieXRlcyIsCit7CisgIGZT RVRIQUxGKDAsUmRkViwoZk1QWTE2U1MoZkdFVFVCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYp KSkpOworICBmU0VUSEFMRigxLFJkZFYsKGZNUFkxNlNTKGZHRVRVQllURSgxLFJzViksZkdFVFVC WVRFKDEsUnRWKSkpKTsKKyAgZlNFVEhBTEYoMixSZGRWLChmTVBZMTZTUyhmR0VUVUJZVEUoMixS c1YpLGZHRVRVQllURSgyLFJ0VikpKSk7CisgIGZTRVRIQUxGKDMsUmRkViwoZk1QWTE2U1MoZkdF VFVCWVRFKDMsUnNWKSxmR0VUVUJZVEUoMyxSdFYpKSkpOworIH0pCisKK1E2SU5TTihNNV92bXB5 YnN1LCJSZGQzMj12bXB5YnN1KFJzMzIsUnQzMikiLEFUVFJJQlMoKSwKKyAidmVjdG9yIG1weSBi eXRlcyIsCit7CisgIGZTRVRIQUxGKDAsUmRkViwoZk1QWTE2U1MoZkdFVEJZVEUoMCxSc1YpLGZH RVRVQllURSgwLFJ0VikpKSk7CisgIGZTRVRIQUxGKDEsUmRkViwoZk1QWTE2U1MoZkdFVEJZVEUo MSxSc1YpLGZHRVRVQllURSgxLFJ0VikpKSk7CisgIGZTRVRIQUxGKDIsUmRkViwoZk1QWTE2U1Mo ZkdFVEJZVEUoMixSc1YpLGZHRVRVQllURSgyLFJ0VikpKSk7CisgIGZTRVRIQUxGKDMsUmRkViwo Zk1QWTE2U1MoZkdFVEJZVEUoMyxSc1YpLGZHRVRVQllURSgzLFJ0VikpKSk7CisgfSkKKworCitR NklOU04oTTVfdm1hY2J1dSwiUnh4MzIrPXZtcHlidShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisg InZlY3RvciBtYWMgYnl0ZXMiLAoreworICBmU0VUSEFMRigwLFJ4eFYsKGZHRVRIQUxGKDAsUnh4 VikrZk1QWTE2U1MoZkdFVFVCWVRFKDAsUnNWKSxmR0VUVUJZVEUoMCxSdFYpKSkpOworICBmU0VU SEFMRigxLFJ4eFYsKGZHRVRIQUxGKDEsUnh4VikrZk1QWTE2U1MoZkdFVFVCWVRFKDEsUnNWKSxm R0VUVUJZVEUoMSxSdFYpKSkpOworICBmU0VUSEFMRigyLFJ4eFYsKGZHRVRIQUxGKDIsUnh4Vikr Zk1QWTE2U1MoZkdFVFVCWVRFKDIsUnNWKSxmR0VUVUJZVEUoMixSdFYpKSkpOworICBmU0VUSEFM RigzLFJ4eFYsKGZHRVRIQUxGKDMsUnh4VikrZk1QWTE2U1MoZkdFVFVCWVRFKDMsUnNWKSxmR0VU VUJZVEUoMyxSdFYpKSkpOworICBmQUNDKCk7XAorIH0pCisKK1E2SU5TTihNNV92bWFjYnN1LCJS eHgzMis9dm1weWJzdShSczMyLFJ0MzIpIixBVFRSSUJTKCksCisgInZlY3RvciBtYWMgYnl0ZXMi LAoreworICBmU0VUSEFMRigwLFJ4eFYsKGZHRVRIQUxGKDAsUnh4VikrZk1QWTE2U1MoZkdFVEJZ VEUoMCxSc1YpLGZHRVRVQllURSgwLFJ0VikpKSk7CisgIGZTRVRIQUxGKDEsUnh4ViwoZkdFVEhB TEYoMSxSeHhWKStmTVBZMTZTUyhmR0VUQllURSgxLFJzViksZkdFVFVCWVRFKDEsUnRWKSkpKTsK KyAgZlNFVEhBTEYoMixSeHhWLChmR0VUSEFMRigyLFJ4eFYpK2ZNUFkxNlNTKGZHRVRCWVRFKDIs UnNWKSxmR0VUVUJZVEUoMixSdFYpKSkpOworICBmU0VUSEFMRigzLFJ4eFYsKGZHRVRIQUxGKDMs Unh4VikrZk1QWTE2U1MoZkdFVEJZVEUoMyxSc1YpLGZHRVRVQllURSgzLFJ0VikpKSk7CisgIGZB Q0MoKTtcCisgfSkKKworCisKK1E2SU5TTihNNV92ZG1weWJzdSwiUmRkMzI9dmRtcHlic3UoUnNz MzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLAorICJ2ZWN0b3IgcXVhZCBtcHkgYnl0ZXMiLAorewor ICBmU0VUSEFMRigwLFJkZFYsZlNBVE4oMTYsKGZNUFkxNlNTKGZHRVRCWVRFKDAsUnNzViksZkdF VFVCWVRFKDAsUnR0VikpICsKKyAgICAgICAgIAkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMSxSc3NW KSxmR0VUVUJZVEUoMSxSdHRWKSkpKSk7CisgIGZTRVRIQUxGKDEsUmRkVixmU0FUTigxNiwoZk1Q WTE2U1MoZkdFVEJZVEUoMixSc3NWKSxmR0VUVUJZVEUoMixSdHRWKSkgKworICAgICAgICAgCQkg ICBmTVBZMTZTUyhmR0VUQllURSgzLFJzc1YpLGZHRVRVQllURSgzLFJ0dFYpKSkpKTsKKyAgZlNF VEhBTEYoMixSZGRWLGZTQVROKDE2LChmTVBZMTZTUyhmR0VUQllURSg0LFJzc1YpLGZHRVRVQllU RSg0LFJ0dFYpKSArCisgICAgICAgICAJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDUsUnNzViksZkdF VFVCWVRFKDUsUnR0VikpKSkpOworICBmU0VUSEFMRigzLFJkZFYsZlNBVE4oMTYsKGZNUFkxNlNT KGZHRVRCWVRFKDYsUnNzViksZkdFVFVCWVRFKDYsUnR0VikpICsKKyAgICAgICAgIAkJICAgZk1Q WTE2U1MoZkdFVEJZVEUoNyxSc3NWKSxmR0VUVUJZVEUoNyxSdHRWKSkpKSk7CisgfSkKKworCitR NklOU04oTTVfdmRtYWNic3UsIlJ4eDMyKz12ZG1weWJzdShSc3MzMixSdHQzMik6c2F0IixBVFRS SUJTKCksCisgInZlY3RvciBxdWFkIG1hYyBieXRlcyIsCit7CisgIGZTRVRIQUxGKDAsUnh4Vixm U0FUTigxNiwoZkdFVEhBTEYoMCxSeHhWKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDAsUnNz ViksZkdFVFVCWVRFKDAsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMSxSc3NWKSxm R0VUVUJZVEUoMSxSdHRWKSkpKSk7CisgIGZTRVRIQUxGKDEsUnh4VixmU0FUTigxNiwoZkdFVEhB TEYoMSxSeHhWKSArCisJCSAgIGZNUFkxNlNTKGZHRVRCWVRFKDIsUnNzViksZkdFVFVCWVRFKDIs UnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZVEUoMyxSc3NWKSxmR0VUVUJZVEUoMyxSdHRW KSkpKSk7CisgIGZTRVRIQUxGKDIsUnh4VixmU0FUTigxNiwoZkdFVEhBTEYoMixSeHhWKSArCisJ CSAgIGZNUFkxNlNTKGZHRVRCWVRFKDQsUnNzViksZkdFVFVCWVRFKDQsUnR0VikpICsKKwkJICAg Zk1QWTE2U1MoZkdFVEJZVEUoNSxSc3NWKSxmR0VUVUJZVEUoNSxSdHRWKSkpKSk7CisgIGZTRVRI QUxGKDMsUnh4VixmU0FUTigxNiwoZkdFVEhBTEYoMyxSeHhWKSArCisJCSAgIGZNUFkxNlNTKGZH RVRCWVRFKDYsUnNzViksZkdFVFVCWVRFKDYsUnR0VikpICsKKwkJICAgZk1QWTE2U1MoZkdFVEJZ VEUoNyxSc3NWKSxmR0VUVUJZVEUoNyxSdHRWKSkpKSk7CisgIGZBQ0MoKTtcCisgfSkKKworCisK Ky8qIEZ1bGwgdmVyc2lvbiAqLworI3VuZGVmIGRtcHlfc2VtYQorI2RlZmluZSBkbXB5X3NlbWEo TilcCit7IGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyBmU0NBTEUoTixm TVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKSArIFwKKyAgICAgICAg ICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYo MSxSdHRWKSkpKSk7XAorICBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsg ZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSkgKyBc CisgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1Yp LGZHRVRIQUxGKDMsUnR0VikpKSkpO1wKKyAgZkFDQygpO1wKK30KK1E2SU5TTihNMl92ZG1hY3Nf czAsIlJ4eDMyKz12ZG1weShSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICIiLGRtcHlf c2VtYSgwKSkKK1E2SU5TTihNMl92ZG1hY3NfczEsIlJ4eDMyKz12ZG1weShSc3MzMixSdHQzMik6 PDwxOnNhdCIsQVRUUklCUygpLCIiLGRtcHlfc2VtYSgxKSkKKworI3VuZGVmIGRtcHlfc2VtYQor I2RlZmluZSBkbXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZN UFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkpICsgXAorICAgICAgICAg ICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDEsUnR0Vikp KSkpO1wKKyAgZlNFVFdPUkQoMSxSZGRWLGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYo MixSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSkgKyBcCisgICAgICAgICAgICAgIGZTQ0FMRShOLGZN UFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKSk7XAorfQorCitRNklO U04oTTJfdmRtcHlzX3MwLCJSZGQzMj12ZG1weShSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCks ICAgICIiLGRtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl92ZG1weXNfczEsIlJkZDMyPXZkbXB5KFJz czMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIiIsZG1weV9zZW1hKDEpKQorCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q IGNvbXBsZXggbXVsdGlwbHkvbWFjIHdpdGggICAgICAgICAgICAgICAgICAgICAgICAgICovCisv KiByZWFsJmltYWcgYXJlIHBhY2tlZCB0b2dldGhlciBhbmQgYWx3YXlzIHNhdHVyYXRlZCAqLwor LyogdG8gcHJvdGVjdCBhZ2FpbnN0IG92ZXJmbG93LiAgICAgICAgICAgICAgICAgICAgICAgKi8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKKyN1bmRlZiBjbXB5X3NlbWEKKyNkZWZpbmUgY21weV9zZW1hKE4sQ09OSk1JTlVTLENPTkpQ TFVTKVwKK3sgZlNFVEhBTEYoMSxSZFYsZkdFVEhBTEYoMSwoZlNBVChmU0NBTEUoTixmTVBZMTZT UyhmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMCxSdFYpKSkgQ09OSk1JTlVTIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJz ViksZkdFVEhBTEYoMSxSdFYpKSkgKyAweDgwMDApKSkpO1wKKyAgZlNFVEhBTEYoMCxSZFYsZkdF VEhBTEYoMSwoZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYo MCxSdFYpKSkgQ09OSlBMVVMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSArIDB4ODAw MCkpKSk7XAorfQorUTZJTlNOKE0yX2NtcHlyc19zMCwiUmQzMj1jbXB5KFJzMzIsUnQzMik6cm5k OnNhdCIsQVRUUklCUygpLCAgICAiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAsKywtKSkK K1E2SU5TTihNMl9jbXB5cnNfczEsIlJkMzI9Y21weShSczMyLFJ0MzIpOjw8MTpybmQ6c2F0IixB VFRSSUJTKCksIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgxLCssLSkpCisKKworUTZJTlNO KE0yX2NtcHlyc2NfczAsIlJkMzI9Y21weShSczMyLFJ0MzIqKTpybmQ6c2F0IixBVFRSSUJTKEFf QVJDSFYyKSwgICAgIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgwLC0sKykpCitRNklOU04o TTJfY21weXJzY19zMSwiUmQzMj1jbXB5KFJzMzIsUnQzMiopOjw8MTpybmQ6c2F0IixBVFRSSUJT KEFfQVJDSFYyKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsLSwrKSkKKworCisjdW5k ZWYgY21weV9zZW1hCisjZGVmaW5lIGNtcHlfc2VtYShOLENPTkpNSU5VUyxDT05KUExVUylcCit7 IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZT UyhmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMCxSdFYpKSkgQ09OSk1JTlVTIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRI QUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpO1wKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQo ZkdFVFdPUkQoMCxSeHhWKSArIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VU SEFMRigwLFJ0VikpKSBDT05KUExVUyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJzViksZkdFVEhBTEYoMSxS dFYpKSkpKTtcCisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfY21hY3NfczAsIlJ4eDMyKz1jbXB5 KFJzMzIsUnQzMik6c2F0IixBVFRSSUJTKCksICAgICJDb21wbGV4IE11bHRpcGx5IixjbXB5X3Nl bWEoMCwrLC0pKQorUTZJTlNOKE0yX2NtYWNzX3MxLCJSeHgzMis9Y21weShSczMyLFJ0MzIpOjw8 MTpzYXQiLEFUVFJJQlMoKSwiQ29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDEsKywtKSkKKwor LyogRUpQOiBOZWVkIG1hYyB2ZXJzaW9ucyB3LyBDT05KIFQ/ICovCitRNklOU04oTTJfY21hY3Nj X3MwLCJSeHgzMis9Y21weShSczMyLFJ0MzIqKTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCAgICAi Q29tcGxleCBNdWx0aXBseSIsY21weV9zZW1hKDAsLSwrKSkKK1E2SU5TTihNMl9jbWFjc2NfczEs IlJ4eDMyKz1jbXB5KFJzMzIsUnQzMiopOjw8MTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJDb21w bGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMSwtLCspKQorCisKKyN1bmRlZiBjbXB5X3NlbWEKKyNk ZWZpbmUgY21weV9zZW1hKE4sQ09OSk1JTlVTLENPTkpQTFVTKVwKK3sgZlNFVFdPUkQoMSxSZGRW LGZTQVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMSxSc1YpLGZHRVRIQUxGKDAsUnRWKSkp IENPTkpNSU5VUyBcCisgICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZH RVRIQUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpO1wKKyAgZlNFVFdPUkQoMCxSZGRWLGZT QVQoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpIENP TkpQTFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhB TEYoMSxSc1YpLGZHRVRIQUxGKDEsUnRWKSkpKSk7XAorfQorCitRNklOU04oTTJfY21weXNfczAs IlJkZDMyPWNtcHkoUnMzMixSdDMyKTpzYXQiLEFUVFJJQlMoKSwgICAgIkNvbXBsZXggTXVsdGlw bHkiLGNtcHlfc2VtYSgwLCssLSkpCitRNklOU04oTTJfY21weXNfczEsIlJkZDMyPWNtcHkoUnMz MixSdDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgx LCssLSkpCisKK1E2SU5TTihNMl9jbXB5c2NfczAsIlJkZDMyPWNtcHkoUnMzMixSdDMyKik6c2F0 IixBVFRSSUJTKEFfQVJDSFYyKSwgICAgIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgwLC0s KykpCitRNklOU04oTTJfY21weXNjX3MxLCJSZGQzMj1jbXB5KFJzMzIsUnQzMiopOjw8MTpzYXQi LEFUVFJJQlMoQV9BUkNIVjIpLCJDb21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMSwtLCspKQor CisKKworI3VuZGVmIGNtcHlfc2VtYQorI2RlZmluZSBjbXB5X3NlbWEoTixDT05KTUlOVVMsQ09O SlBMVVMpXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpIC0gKGZTQ0FM RShOLGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigwLFJ0VikpKSBDT05KTUlOVVMg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZN UFkxNlNTKGZHRVRIQUxGKDAsUnNWKSxmR0VUSEFMRigxLFJ0VikpKSkpKTtcCisgIGZTRVRXT1JE KDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgLSAoZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhB TEYoMCxSc1YpLGZHRVRIQUxGKDAsUnRWKSkpIENPTkpQTFVTIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigxLFJz ViksZkdFVEhBTEYoMSxSdFYpKSkpKSk7XAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX2NuYWNz X3MwLCJSeHgzMi09Y21weShSczMyLFJ0MzIpOnNhdCIsQVRUUklCUyhBX0FSQ0hWMiksICAgICJD b21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwrLC0pKQorUTZJTlNOKE0yX2NuYWNzX3MxLCJS eHgzMi09Y21weShSczMyLFJ0MzIpOjw8MTpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJDb21wbGV4 IE11bHRpcGx5IixjbXB5X3NlbWEoMSwrLC0pKQorCisvKiBFSlA6IG5lZWQgQ09OSiB2ZXJzaW9u cz8gKi8KK1E2SU5TTihNMl9jbmFjc2NfczAsIlJ4eDMyLT1jbXB5KFJzMzIsUnQzMiopOnNhdCIs QVRUUklCUyhBX0FSQ0hWMiksICAgICJDb21wbGV4IE11bHRpcGx5IixjbXB5X3NlbWEoMCwtLCsp KQorUTZJTlNOKE0yX2NuYWNzY19zMSwiUnh4MzItPWNtcHkoUnMzMixSdDMyKik6PDwxOnNhdCIs QVRUUklCUyhBX0FSQ0hWMiksIkNvbXBsZXggTXVsdGlwbHkiLGNtcHlfc2VtYSgxLC0sKykpCisK KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKy8qIGNvbXBsZXggaW50ZXJwb2xhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCisvKiBHaXZlbiBhIHBhaXIgb2YgY29tcGxleCB2YWx1ZXMsIHNjYWxlIGJ5IGEsYiwgc3Vt ICAqLworLyogU2F0dXJhdGUvc2hpZnQxIGFuZCByb3VuZC9wYWNrICAgICAgICAgICAgICAgICAg ICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKKyN1bmRlZiB2cmNtcHlzX3NlbWEKKyNkZWZpbmUgdnJjbXB5c19zZW1hKE4sSU5X T1JEKSBcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxG KDEsUnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAg IGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMSxJTldPUkQpKSkp KTtcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDAs UnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBcCisgICAgICAgICAgICAgICAgICAgICAgIGZT Q0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMSxJTldPUkQpKSkpKTtc Cit9CisKKworCitRNklOU04oTTJfdnJjbXB5c19zMV9oLCJSZGQzMj12cmNtcHlzKFJzczMyLFJ0 dDMyKTo8PDE6c2F0OnJhdzpoaSIsQVRUUklCUyhBX0FSQ0hWMyksICJWZWN0b3IgUmVkdWNlIENv bXBsZXggTXVsdGlwbHkgYnkgU2NhbGFyIix2cmNtcHlzX3NlbWEoMSxmR0VUV09SRCgxLFJ0dFYp KSkKK1E2SU5TTihNMl92cmNtcHlzX3MxX2wsIlJkZDMyPXZyY21weXMoUnNzMzIsUnR0MzIpOjw8 MTpzYXQ6cmF3OmxvIixBVFRSSUJTKEFfQVJDSFYzKSwgIlZlY3RvciBSZWR1Y2UgQ29tcGxleCBN dWx0aXBseSBieSBTY2FsYXIiLHZyY21weXNfc2VtYSgxLGZHRVRXT1JEKDAsUnR0VikpKQorCitE RUZfVjNfQ09ORF9NQVBQSU5HKE0yX3ZyY21weXNfczEsIlJkZDMyPXZyY21weXMoUnNzMzIsUnQz Mik6PDwxOnNhdCIsIlJ0MzIgJiAxIiwiUmRkMzI9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNh dDpyYXc6aGkiLCJSZGQzMj12cmNtcHlzKFJzczMyLFJ0dDMyKTo8PDE6c2F0OnJhdzpsbyIpCisK KyN1bmRlZiB2cmNtcHlzX3NlbWEKKyNkZWZpbmUgdnJjbXB5c19zZW1hKE4sSU5XT1JEKSBcCit7 IGZTRVRXT1JEKDEsUnh4VixmU0FUKGZHRVRXT1JEKDEsUnh4VikgKyBmU0NBTEUoTixmTVBZMTZT UyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAgICAgICAg ICAgICAgICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDEs SU5XT1JEKSkpKSk7XAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsg ZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLElOV09SRCkpKSAr IFwKKyAgICAgICAgICAgICAgICAgICAgICAgZlNDQUxFKE4sZk1QWTE2U1MoZkdFVEhBTEYoMixS c3NWKSxmR0VUSEFMRigxLElOV09SRCkpKSkpO1wKKyAgZkFDQygpO1wKK30KKworCisKK1E2SU5T TihNMl92cmNtcHlzX2FjY19zMV9oLCJSeHgzMis9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNh dDpyYXc6aGkiLEFUVFJJQlMoQV9BUkNIVjMpLCAiVmVjdG9yIFJlZHVjZSBDb21wbGV4IE11bHRp cGx5IGJ5IFNjYWxhciIsdnJjbXB5c19zZW1hKDEsZkdFVFdPUkQoMSxSdHRWKSkpCitRNklOU04o TTJfdnJjbXB5c19hY2NfczFfbCwiUnh4MzIrPXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpzYXQ6 cmF3OmxvIixBVFRSSUJTKEFfQVJDSFYzKSwgIlZlY3RvciBSZWR1Y2UgQ29tcGxleCBNdWx0aXBs eSBieSBTY2FsYXIiLHZyY21weXNfc2VtYSgxLGZHRVRXT1JEKDAsUnR0VikpKQorCitERUZfVjNf Q09ORF9NQVBQSU5HKE0yX3ZyY21weXNfYWNjX3MxLCJSeHgzMis9dnJjbXB5cyhSc3MzMixSdDMy KTo8PDE6c2F0IiwiUnQzMiAmIDEiLCJSeHgzMis9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNh dDpyYXc6aGkiLCJSeHgzMis9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnNhdDpyYXc6bG8iKQor CisKKyN1bmRlZiB2cmNtcHlzX3NlbWEKKyNkZWZpbmUgdnJjbXB5c19zZW1hKE4sSU5XT1JEKSBc Cit7IGZTRVRIQUxGKDEsUmRWLGZHRVRIQUxGKDEsZlNBVChmU0NBTEUoTixmTVBZMTZTUyhmR0VU SEFMRigxLFJzc1YpLGZHRVRIQUxGKDAsSU5XT1JEKSkpICsgXAorICAgICAgICAgICAgICAgICAg ICAgICBmU0NBTEUoTixmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDEsSU5XT1JE KSkpICsgMHg4MDAwKSkpO1wKKyAgZlNFVEhBTEYoMCxSZFYsZkdFVEhBTEYoMSxmU0FUKGZTQ0FM RShOLGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMCxJTldPUkQpKSkgKyBcCisg ICAgICAgICAgICAgICAgICAgICAgIGZTQ0FMRShOLGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViks ZkdFVEhBTEYoMSxJTldPUkQpKSkgKyAweDgwMDApKSk7XAorfQorCitRNklOU04oTTJfdnJjbXB5 c19zMXJwX2gsIlJkMzI9dnJjbXB5cyhSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQ6cmF3OmhpIixB VFRSSUJTKEFfQVJDSFYzKSwgIlZlY3RvciBSZWR1Y2UgQ29tcGxleCBNdWx0aXBseSBieSBTY2Fs YXIiLHZyY21weXNfc2VtYSgxLGZHRVRXT1JEKDEsUnR0VikpKQorUTZJTlNOKE0yX3ZyY21weXNf czFycF9sLCJSZDMyPXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0OnJhdzpsbyIsQVRU UklCUyhBX0FSQ0hWMyksICJWZWN0b3IgUmVkdWNlIENvbXBsZXggTXVsdGlwbHkgYnkgU2NhbGFy Iix2cmNtcHlzX3NlbWEoMSxmR0VUV09SRCgwLFJ0dFYpKSkKKworREVGX1YzX0NPTkRfTUFQUElO RyhNMl92cmNtcHlzX3MxcnAsIlJkMzI9dnJjbXB5cyhSc3MzMixSdDMyKTo8PDE6cm5kOnNhdCIs IlJ0MzIgJiAxIiwiUmQzMj12cmNtcHlzKFJzczMyLFJ0dDMyKTo8PDE6cm5kOnNhdDpyYXc6aGki LCJSZDMyPXZyY21weXMoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0OnJhdzpsbyIpCisKKyNpZiAx CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisvKiBtaXhlZCBtb2RlIDMyeDE2IHZlY3RvciBkdWFsIG11bHRpcGxpZXMgICAg ICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFNJR05FRCAzMiB4IFNJ R05FRCAxNiAqLworCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShO KVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4s Zk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpKSk+PjE2KSkgKTsg XAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixm TVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkpKT4+MTYpKSApOyBc CisgIGZBQ0MoKTtcCit9CitRNklOU04oTTJfbW1hY2xzX3MwLCJSeHgzMis9dm1weXdlaChSc3Mz MixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1p eG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tYWNsc19zMSwiUnh4MzIrPXZtcHl3ZWgoUnNzMzIs UnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXht cHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4p XAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgKChmU0NBTEUoTixm TVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKT4+MTYpICkpOyBc CisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShOLGZN UFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSkpPj4xNiApKSk7IFwK KyAgZkFDQygpO1wKK30KK1E2SU5TTihNMl9tbWFjaHNfczAsIlJ4eDMyKz12bXB5d29oKFJzczMy LFJ0dDMyKTpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4 bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1hY2hzX3MxLCJSeHgzMis9dm1weXdvaChSc3MzMixS dHQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1w eV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilc Cit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDEs UnNzViksZkdFVEhBTEYoMixSdHRWKSkpKT4+MTYpKTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNB VCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDAsUnR0Vikp KSk+PjE2KSk7IFwKK30KK1E2SU5TTihNMl9tbXB5bF9zMCwiUmRkMzI9dm1weXdlaChSc3MzMixS dHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1w eV9zZW1hKDApKQorUTZJTlNOKE0yX21tcHlsX3MxLCJSZGQzMj12bXB5d2VoKFJzczMyLFJ0dDMy KTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sg ZlNFVFdPUkQoMSxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NW KSxmR0VUSEFMRigzLFJ0dFYpKSkpPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRkVixmU0FUKChm U0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkpKT4+ MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHloX3MwLCJSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMy KTpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3Nl bWEoMCkpCitRNklOU04oTTJfbW1weWhfczEsIlJkZDMyPXZtcHl3b2goUnNzMzIsUnR0MzIpOjw8 MTpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgx KSkKKworCisvKiBXaXRoIHJvdW5kaW5nICovCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmlu ZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhW KSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDIsUnR0 VikpKSsweDgwMDApPj4xNikpICk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQo MCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxG KDAsUnR0VikpKSsweDgwMDApPj4xNikpICk7IFwKKyAgZkFDQygpO1wKK30KK1E2SU5TTihNMl9t bWFjbHNfcnMwLCJSeHgzMis9dm1weXdlaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygp LCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihN Ml9tbWFjbHNfcnMxLCJSeHgzMis9dm1weXdlaChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQiLEFU VFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3Vu ZGVmIG1peG1weV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJ4 eFYsZlNBVChmR0VUV09SRCgxLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JE KDEsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpKzB4ODAwMCk+PjE2KSApKTsgXAorICBmU0VUV09S RCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNTKGZH RVRXT1JEKDAsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkpKzB4ODAwMCk+PjE2ICkpKTsgXAorICBm QUNDKCk7XAorfQorUTZJTlNOKE0yX21tYWNoc19yczAsIlJ4eDMyKz12bXB5d29oKFJzczMyLFJ0 dDMyKTpybmQ6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1p eG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tYWNoc19yczEsIlJ4eDMyKz12bXB5d29oKFJzczMy LFJ0dDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHki LG1peG1weV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3Nl bWEoTilcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRX T1JEKDEsUnNzViksZkdFVEhBTEYoMixSdHRWKSkpKzB4ODAwMCk+PjE2KSk7IFwKKyAgZlNFVFdP UkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMCxSc3NWKSxmR0VU SEFMRigwLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHlsX3JzMCwi UmRkMzI9dm1weXdlaChSc3MzMixSdHQzMik6cm5kOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQg UHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5bF9yczEs IlJkZDMyPXZtcHl3ZWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVk IFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2Vt YQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSZGRWLGZTQVQoKGZTQ0FM RShOLGZNUFkzMjE2U1MoZkdFVFdPUkQoMSxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKSkrMHg4MDAw KT4+MTYpKTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTUyhm R0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSsweDgwMDApPj4xNikpOyBcCit9CitR NklOU04oTTJfbW1weWhfcnMwLCJSZGQzMj12bXB5d29oKFJzczMyLFJ0dDMyKTpybmQ6c2F0IixB VFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQor UTZJTlNOKE0yX21tcHloX3JzMSwiUmRkMzI9dm1weXdvaChSc3MzMixSdHQzMik6PDwxOnJuZDpz YXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkK KworCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoREVTVCxFUVVBTFMs TixBQ0NTWU4pXAoreyBERVNUIEVRVUFMUyBmU0NBTEUoTixmTVBZMzIxNlNTKGZHRVRXT1JEKDEs UnNzViksZkdFVEhBTEYoMixSdHRWKSkpICsgZlNDQUxFKE4sZk1QWTMyMTZTUyhmR0VUV09SRCgw LFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpKTsgQUNDU1lOO30KKworUTZJTlNOKE00X3ZybXB5ZWhf czAsIlJkZDMyPXZybXB5d2VoKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJl Y2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRWLD0sMCwpKQorUTZJTlNOKE00X3ZybXB5 ZWhfczEsIlJkZDMyPXZybXB5d2VoKFJzczMyLFJ0dDMyKTo8PDEiLEFUVFJJQlMoKSwiTWl4ZWQg UHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRWLD0sMSwpKQorUTZJTlNOKE00X3Zy bXB5ZWhfYWNjX3MwLCJSeHgzMis9dnJtcHl3ZWgoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksICAg ICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKFJ4eFYsKz0sMCxmQUNDKCkp KQorUTZJTlNOKE00X3ZybXB5ZWhfYWNjX3MxLCJSeHgzMis9dnJtcHl3ZWgoUnNzMzIsUnR0MzIp Ojw8MSIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKFJ4 eFYsKz0sMSxmQUNDKCkpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3Nl bWEoREVTVCxFUVVBTFMsTixBQ0NTWU4pXAoreyBERVNUIEVRVUFMUyBmU0NBTEUoTixmTVBZMzIx NlNTKGZHRVRXT1JEKDEsUnNzViksZkdFVEhBTEYoMyxSdHRWKSkpICsgZlNDQUxFKE4sZk1QWTMy MTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKTsgQUNDU1lOO30KKworUTZJ TlNOKE00X3ZybXB5b2hfczAsIlJkZDMyPXZybXB5d29oKFJzczMyLFJ0dDMyKSIsQVRUUklCUygp LCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRWLD0sMCwpKQor UTZJTlNOKE00X3ZybXB5b2hfczEsIlJkZDMyPXZybXB5d29oKFJzczMyLFJ0dDMyKTo8PDEiLEFU VFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYShSZGRWLD0sMSwp KQorUTZJTlNOKE00X3ZybXB5b2hfYWNjX3MwLCJSeHgzMis9dnJtcHl3b2goUnNzMzIsUnR0MzIp IixBVFRSSUJTKCksICAgICJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKFJ4 eFYsKz0sMCxmQUNDKCkpKQorUTZJTlNOKE00X3ZybXB5b2hfYWNjX3MxLCJSeHgzMis9dnJtcHl3 b2goUnNzMzIsUnR0MzIpOjw8MSIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHki LG1peG1weV9zZW1hKFJ4eFYsKz0sMSxmQUNDKCkpKQorCisKKworCisKKworI3VuZGVmIG1peG1w eV9zZW1hCisjZGVmaW5lIG1peG1weV9zZW1hKE4sSCxSTkQpXAoreyAgUmRWID0gZlNBVCgoZlND QUxFKE4sZk1QWTMyMTZTUyhSc1YsZkdFVEhBTEYoSCxSdFYpKSlSTkQpPj4xNik7IFwKK30KK1E2 SU5TTihNMl9obW1weWxfcnMxLCJSZDMyPW1weShSczMyLFJ0LkwzMik6PDwxOnJuZDpzYXQiLEFU VFJJQlMoQV9BUkNIVjIpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEs MCwrMHg4MDAwKSkKK1E2SU5TTihNMl9obW1weWhfcnMxLCJSZDMyPW1weShSczMyLFJ0LkgzMik6 PDwxOnJuZDpzYXQiLEFUVFJJQlMoQV9BUkNIVjIpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHki LG1peG1weV9zZW1hKDEsMSwrMHg4MDAwKSkKK1E2SU5TTihNMl9obW1weWxfczEsIlJkMzI9bXB5 KFJzMzIsUnQuTDMyKTo8PDE6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiTWl4ZWQgUHJlY2lzaW9u IE11bHRpcGx5IixtaXhtcHlfc2VtYSgxLDAsKSkKK1E2SU5TTihNMl9obW1weWhfczEsIlJkMzI9 bXB5KFJzMzIsUnQuSDMyKTo8PDE6c2F0IixBVFRSSUJTKEFfQVJDSFYyKSwiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxLDEsKSkKKworCisKKworCisKKworCisKKy8qIFNJ R05FRCAzMiB4IFVOU0lHTkVEIDE2ICovCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBt aXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSAr ICgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigyLFJ0dFYp KSkpPj4xNikpICk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQoZkdFVFdPUkQoMCxSeHhWKSAr ICgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgwLFJzc1YpLGZHRVRVSEFMRigwLFJ0dFYp KSkpPj4xNikpICk7IFwKKyAgZkFDQygpO1wKK30KK1E2SU5TTihNMl9tbWFjdWxzX3MwLCJSeHgz Mis9dm1weXdldWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbWFjdWxzX3MxLCJSeHgz Mis9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lz aW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1hCisjZGVm aW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09SRCgxLFJ4 eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNzViksZkdFVFVIQUxGKDMs UnR0VikpKSk+PjE2KSApKTsgXAorICBmU0VUV09SRCgwLFJ4eFYsZlNBVChmR0VUV09SRCgwLFJ4 eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDEs UnR0VikpKSk+PjE2ICkpKTsgXAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX21tYWN1aHNfczAs IlJ4eDMyKz12bXB5d291aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJNaXhlZCBQ cmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tYWN1aHNfczEs IlJ4eDMyKz12bXB5d291aChSc3MzMixSdHQzMik6PDwxOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQ cmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEK KyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUo TixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNzViksZkdFVFVIQUxGKDIsUnR0VikpKSk+PjE2KSk7 IFwKKyAgZlNFVFdPUkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdFVFdPUkQo MCxSc3NWKSxmR0VUVUhBTEYoMCxSdHRWKSkpKT4+MTYpKTsgXAorfQorUTZJTlNOKE0yX21tcHl1 bF9zMCwiUmRkMzI9dm1weXdldWgoUnNzMzIsUnR0MzIpOnNhdCIsQVRUUklCUygpLCAgICAiTWl4 ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkKK1E2SU5TTihNMl9tbXB5dWxf czEsIlJkZDMyPXZtcHl3ZXVoKFJzczMyLFJ0dDMyKTo8PDE6c2F0IixBVFRSSUJTKCksIk1peGVk IFByZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2Vt YQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSZGRWLGZTQVQoKGZTQ0FM RShOLGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhBTEYoMyxSdHRWKSkpKT4+MTYp KTsgXAorICBmU0VUV09SRCgwLFJkZFYsZlNBVCgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09S RCgwLFJzc1YpLGZHRVRVSEFMRigxLFJ0dFYpKSkpPj4xNikpOyBcCit9CitRNklOU04oTTJfbW1w eXVoX3MwLCJSZGQzMj12bXB5d291aChSc3MzMixSdHQzMik6c2F0IixBVFRSSUJTKCksICAgICJN aXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9zZW1hKDApKQorUTZJTlNOKE0yX21tcHl1 aF9zMSwiUmRkMzI9dm1weXdvdWgoUnNzMzIsUnR0MzIpOjw8MTpzYXQiLEFUVFJJQlMoKSwiTWl4 ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworCisvKiBXaXRoIHJvdW5k aW5nICovCisKKyN1bmRlZiBtaXhtcHlfc2VtYQorI2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sg ZlNFVFdPUkQoMSxSeHhWLGZTQVQoZkdFVFdPUkQoMSxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMy MTZTVShmR0VUV09SRCgxLFJzc1YpLGZHRVRVSEFMRigyLFJ0dFYpKSkrMHg4MDAwKT4+MTYpKSAp OyBcCisgIGZTRVRXT1JEKDAsUnh4VixmU0FUKGZHRVRXT1JEKDAsUnh4VikgKyAoKGZTQ0FMRShO LGZNUFkzMjE2U1UoZkdFVFdPUkQoMCxSc3NWKSxmR0VUVUhBTEYoMCxSdHRWKSkpKzB4ODAwMCk+ PjE2KSkgKTsgXAorICBmQUNDKCk7XAorfQorUTZJTlNOKE0yX21tYWN1bHNfcnMwLCJSeHgzMis9 dm1weXdldWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNp c2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1hY3Vsc19yczEsIlJ4 eDMyKz12bXB5d2V1aChSc3MzMixSdHQzMik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQg UHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgxKSkKKworI3VuZGVmIG1peG1weV9zZW1h CisjZGVmaW5lIG1peG1weV9zZW1hKE4pXAoreyBmU0VUV09SRCgxLFJ4eFYsZlNBVChmR0VUV09S RCgxLFJ4eFYpICsgKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNzViksZkdFVFVI QUxGKDMsUnR0VikpKSsweDgwMDApPj4xNikgKSk7IFwKKyAgZlNFVFdPUkQoMCxSeHhWLGZTQVQo ZkdFVFdPUkQoMCxSeHhWKSArICgoZlNDQUxFKE4sZk1QWTMyMTZTVShmR0VUV09SRCgwLFJzc1Yp LGZHRVRVSEFMRigxLFJ0dFYpKSkrMHg4MDAwKT4+MTYgKSkpOyBcCisgIGZBQ0MoKTtcCit9CitR NklOU04oTTJfbW1hY3Voc19yczAsIlJ4eDMyKz12bXB5d291aChSc3MzMixSdHQzMik6cm5kOnNh dCIsQVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgw KSkKK1E2SU5TTihNMl9tbWFjdWhzX3JzMSwiUnh4MzIrPXZtcHl3b3VoKFJzczMyLFJ0dDMyKTo8 PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24gTXVsdGlwbHkiLG1peG1weV9z ZW1hKDEpKQorCisjdW5kZWYgbWl4bXB5X3NlbWEKKyNkZWZpbmUgbWl4bXB5X3NlbWEoTilcCit7 IGZTRVRXT1JEKDEsUmRkVixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDEsUnNz ViksZkdFVFVIQUxGKDIsUnR0VikpKSsweDgwMDApPj4xNikpOyBcCisgIGZTRVRXT1JEKDAsUmRk VixmU0FUKChmU0NBTEUoTixmTVBZMzIxNlNVKGZHRVRXT1JEKDAsUnNzViksZkdFVFVIQUxGKDAs UnR0VikpKSsweDgwMDApPj4xNikpOyBcCit9CitRNklOU04oTTJfbW1weXVsX3JzMCwiUmRkMzI9 dm1weXdldWgoUnNzMzIsUnR0MzIpOnJuZDpzYXQiLEFUVFJJQlMoKSwgICAgIk1peGVkIFByZWNp c2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMCkpCitRNklOU04oTTJfbW1weXVsX3JzMSwiUmRk MzI9dm1weXdldWgoUnNzMzIsUnR0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVkIFBy ZWNpc2lvbiBNdWx0aXBseSIsbWl4bXB5X3NlbWEoMSkpCisKKyN1bmRlZiBtaXhtcHlfc2VtYQor I2RlZmluZSBtaXhtcHlfc2VtYShOKVwKK3sgZlNFVFdPUkQoMSxSZGRWLGZTQVQoKGZTQ0FMRShO LGZNUFkzMjE2U1UoZkdFVFdPUkQoMSxSc3NWKSxmR0VUVUhBTEYoMyxSdHRWKSkpKzB4ODAwMCk+ PjE2KSk7IFwKKyAgZlNFVFdPUkQoMCxSZGRWLGZTQVQoKGZTQ0FMRShOLGZNUFkzMjE2U1UoZkdF VFdPUkQoMCxSc3NWKSxmR0VUVUhBTEYoMSxSdHRWKSkpKzB4ODAwMCk+PjE2KSk7IFwKK30KK1E2 SU5TTihNMl9tbXB5dWhfcnMwLCJSZGQzMj12bXB5d291aChSc3MzMixSdHQzMik6cm5kOnNhdCIs QVRUUklCUygpLCAgICAiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgwKSkK K1E2SU5TTihNMl9tbXB5dWhfcnMxLCJSZGQzMj12bXB5d291aChSc3MzMixSdHQzMik6PDwxOnJu ZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIE11bHRpcGx5IixtaXhtcHlfc2VtYSgx KSkKKworCisjZW5kaWYKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNvbXBsZXggbWFjIHdpdGggZnVsbCA2 NC1iaXQgYWNjdW0gLSBubyBzYXQsIG5vIHNoaWZ0ICAgICAgKi8KKy8qIGVpdGhlciBkbyByZWFs IG9yIGFjY3VtLCBuZXZlciBib3RoICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K KworUTZJTlNOKE0yX3ZyY21hY2lfczAsIlJ4eDMyKz12cmNtcHlpKFJzczMyLFJ0dDMyKSIsQVRU UklCUygpLCJWZWN0b3IgQ29tcGxleCBNYWMgSW1hZ2luYXJ5IiwKK3sKK1J4eFYgPSBSeHhWICsg Zk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSArIFwKKyAgICAgICAg ICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAg ICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSAr IFwKKyAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxmR0VUSEFMRigzLFJ0 dFYpKTtcCitmQUNDKCk7XAorfSkKKworUTZJTlNOKE0yX3ZyY21hY3JfczAsIlJ4eDMyKz12cmNt cHlyKFJzczMyLFJ0dDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxleCBNYWMgUmVhbCIsCit7 IFJ4eFYgPSBSeHhWICsgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYp KSAtIFwKKyAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigxLFJzc1YpLGZHRVRIQUxG KDEsUnR0VikpICsgXAorICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViks ZkdFVEhBTEYoMixSdHRWKSkgLSBcCisgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYo MyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtcCitmQUNDKCk7XAorfSkKKworUTZJTlNOKE0yX3Zy Y21hY2lfczBjLCJSeHgzMis9dnJjbXB5aShSc3MzMixSdHQzMiopIixBVFRSSUJTKEFfQVJDSFYy KSwiVmVjdG9yIENvbXBsZXggTWFjIEltYWdpbmFyeSIsCit7CitSeHhWID0gUnh4ViArIGZNUFkx NlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkgLSBcCisgICAgICAgICAgICAg IGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAg ICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViksZkdFVEhBTEYoMixSdHRWKSkgLSBcCisg ICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7 XAorZkFDQygpO1wKK30pCisKK1E2SU5TTihNMl92cmNtYWNyX3MwYywiUnh4MzIrPXZyY21weXIo UnNzMzIsUnR0MzIqKSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBDb21wbGV4IE1hYyBSZWFs IiwKK3sgUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAs UnR0VikpICsgXAorICAgICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdF VEhBTEYoMSxSdHRWKSkgKyBcCisgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMixS c3NWKSxmR0VUSEFMRigyLFJ0dFYpKSArIFwKKyAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VU SEFMRigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK2ZBQ0MoKTtcCit9KQorCitRNklOU04o TTJfY21hY2lfczAsIlJ4eDMyKz1jbXB5aShSczMyLFJ0MzIpIixBVFRSSUJTKCksIlZlY3RvciBD b21wbGV4IE1hYyBJbWFnaW5hcnkiLAoreworUnh4ViA9IFJ4eFYgKyBmTVBZMTZTUyhmR0VUSEFM RigxLFJzViksZkdFVEhBTEYoMCxSdFYpKSArIFwKKyAgICAgICAgICAgICAgZk1QWTE2U1MoZkdF VEhBTEYoMCxSc1YpLGZHRVRIQUxGKDEsUnRWKSk7CitmQUNDKCk7XAorfSkKKworUTZJTlNOKE0y X2NtYWNyX3MwLCJSeHgzMis9Y21weXIoUnMzMixSdDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29t cGxleCBNYWMgUmVhbCIsCit7IFJ4eFYgPSBSeHhWICsgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc1Yp LGZHRVRIQUxGKDAsUnRWKSkgLSBcCisgICAgICAgICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYo MSxSc1YpLGZHRVRIQUxGKDEsUnRWKSk7CitmQUNDKCk7XAorfSkKKworCitRNklOU04oTTJfdnJj bXB5aV9zMCwiUmRkMzI9dnJjbXB5aShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENv bXBsZXggTXB5IEltYWdpbmFyeSIsCit7CitSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMSxSc3NW KSxmR0VUSEFMRigwLFJ0dFYpKSArIFwKKyAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigwLFJzc1Yp LGZHRVRIQUxGKDEsUnR0VikpICsgXAorICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDMsUnNzViks ZkdFVEhBTEYoMixSdHRWKSkgKyBcCisgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMixSc3NWKSxm R0VUSEFMRigzLFJ0dFYpKTtcCit9KQorCitRNklOU04oTTJfdnJjbXB5cl9zMCwiUmRkMzI9dnJj bXB5cihSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIENvbXBsZXggTXB5IFJlYWwiLAor eyBSZGRWID0gZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigwLFJ0dFYpKSAtIFwK KyAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkgKyBc CisgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpIC0g XAorICAgICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMyxSc3NWKSxmR0VUSEFMRigzLFJ0dFYpKTtc Cit9KQorCitRNklOU04oTTJfdnJjbXB5aV9zMGMsIlJkZDMyPXZyY21weWkoUnNzMzIsUnR0MzIq KSIsQVRUUklCUyhBX0FSQ0hWMiksIlZlY3RvciBDb21wbGV4IE1weSBJbWFnaW5hcnkiLAorewor UmRkViA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsUnNzViksZkdFVEhBTEYoMCxSdHRWKSkgLSBcCisg ICAgICAgZk1QWTE2U1MoZkdFVEhBTEYoMCxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAg ICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDIsUnR0VikpIC0gXAorICAg ICAgIGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMyxSdHRWKSk7XAorfSkKKwor UTZJTlNOKE0yX3ZyY21weXJfczBjLCJSZGQzMj12cmNtcHlyKFJzczMyLFJ0dDMyKikiLEFUVFJJ QlMoQV9BUkNIVjIpLCJWZWN0b3IgQ29tcGxleCBNcHkgUmVhbCIsCit7IFJkZFYgPSBmTVBZMTZT UyhmR0VUSEFMRigwLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpICsgXAorICAgICAgICAgZk1QWTE2 U1MoZkdFVEhBTEYoMSxSc3NWKSxmR0VUSEFMRigxLFJ0dFYpKSArIFwKKyAgICAgICAgIGZNUFkx NlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkgKyBcCisgICAgICAgICBmTVBZ MTZTUyhmR0VUSEFMRigzLFJzc1YpLGZHRVRIQUxGKDMsUnR0VikpO1wKK30pCisKK1E2SU5TTihN Ml9jbXB5aV9zMCwiUmRkMzI9Y21weWkoUnMzMixSdDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29t cGxleCBNcHkgSW1hZ2luYXJ5IiwKK3sKK1JkZFYgPSBmTVBZMTZTUyhmR0VUSEFMRigxLFJzViks ZkdFVEhBTEYoMCxSdFYpKSArIFwKKyAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdF VEhBTEYoMSxSdFYpKTsKK30pCisKK1E2SU5TTihNMl9jbXB5cl9zMCwiUmRkMzI9Y21weXIoUnMz MixSdDMyKSIsQVRUUklCUygpLCJWZWN0b3IgQ29tcGxleCBNcHkgUmVhbCIsCit7IFJkZFYgPSBm TVBZMTZTUyhmR0VUSEFMRigwLFJzViksZkdFVEhBTEYoMCxSdFYpKSAtIFwKKyAgICAgICAgIGZN UFkxNlNTKGZHRVRIQUxGKDEsUnNWKSxmR0VUSEFMRigxLFJ0VikpOworfSkKKworCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisvKiBDb21wbGV4IG1weS9tYWMgd2l0aCAyeDMyIGJpdCBhY2N1bSwgc2F0LCBzaGlmdCAgICAg ICAgICAgICovCisvKiAzMngxNiByZWFsIG9yIGltYWcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiAxCisKK1E2SU5TTihNNF9jbXB5aV93 aCwiUmQzMj1jbXB5aXdoKFJzczMyLFJ0MzIpOjw8MTpybmQ6c2F0IixBVFRSSUJTKCksIk1peGVk IFByZWNpc2lvbiBDb21wbGV4IE11bHRpcGx5IiwKK3sKKyBSZFYgPSBmU0FUKCAgKCAgZk1QWTMy MTZTUyhmR0VUV09SRCgwLFJzc1YpLGZHRVRIQUxGKDEsUnRWKSkKKyAgICAgICAgICAgICAgICsg Zk1QWTMyMTZTUyhmR0VUV09SRCgxLFJzc1YpLGZHRVRIQUxGKDAsUnRWKSkKKyAgICAgICAgICAg ICAgICsgMHg0MDAwKT4+MTUpOworfSkKKworCitRNklOU04oTTRfY21weXJfd2gsIlJkMzI9Y21w eXJ3aChSc3MzMixSdDMyKTo8PDE6cm5kOnNhdCIsQVRUUklCUygpLCJNaXhlZCBQcmVjaXNpb24g Q29tcGxleCBNdWx0aXBseSIsCit7CisgUmRWID0gZlNBVCggICggIGZNUFkzMjE2U1MoZkdFVFdP UkQoMCxSc3NWKSxmR0VUSEFMRigwLFJ0VikpCisgICAgICAgICAgICAgICAtIGZNUFkzMjE2U1Mo ZkdFVFdPUkQoMSxSc3NWKSxmR0VUSEFMRigxLFJ0VikpCisgICAgICAgICAgICAgICArIDB4NDAw MCk+PjE1KTsKK30pCisKK1E2SU5TTihNNF9jbXB5aV93aGMsIlJkMzI9Y21weWl3aChSc3MzMixS dDMyKik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIENvbXBsZXggTXVs dGlwbHkiLAoreworIFJkViA9IGZTQVQoICAoICBmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViks ZkdFVEhBTEYoMCxSdFYpKQorICAgICAgICAgICAgICAgLSBmTVBZMzIxNlNTKGZHRVRXT1JEKDAs UnNzViksZkdFVEhBTEYoMSxSdFYpKQorICAgICAgICAgICAgICAgKyAweDQwMDApPj4xNSk7Cit9 KQorCisKK1E2SU5TTihNNF9jbXB5cl93aGMsIlJkMzI9Y21weXJ3aChSc3MzMixSdDMyKik6PDwx OnJuZDpzYXQiLEFUVFJJQlMoKSwiTWl4ZWQgUHJlY2lzaW9uIENvbXBsZXggTXVsdGlwbHkiLAor eworIFJkViA9IGZTQVQoICAoICBmTVBZMzIxNlNTKGZHRVRXT1JEKDAsUnNzViksZkdFVEhBTEYo MCxSdFYpKQorICAgICAgICAgICAgICAgKyBmTVBZMzIxNlNTKGZHRVRXT1JEKDEsUnNzViksZkdF VEhBTEYoMSxSdFYpKQorICAgICAgICAgICAgICAgKyAweDQwMDApPj4xNSk7Cit9KQorCisKKyNl bmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBWZWN0b3IgbXB5L21hYyB3aXRoIDJ4MzIgYml0IGFjY3VtLCBz YXQsIHNoaWZ0ICAgICAgICAgICAgICovCisvKiBlaXRoZXIgZG8gcmVhbCBvciBpbWFnLCAgbmV2 ZXIgYm90aCAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyN1bmRlZiBWQ01Q WVNFTUkKKyNkZWZpbmUgVkNNUFlTRU1JKERTVCxBQ0MwLEFDQzEsU0hJRlQsU0FULEFDQ1NZTikg XAorCWZTRVRXT1JEKDAsRFNULFNBVChBQ0MwIGZTQ0FMRShTSElGVCxmTVBZMTZTUyhmR0VUSEFM RigxLFJzc1YpLGZHRVRIQUxGKDAsUnR0VikpICsgXAorCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYoMSxSdHRWKSkp KSk7IFwKKwlmU0VUV09SRCgxLERTVCxTQVQoQUNDMSBmU0NBTEUoU0hJRlQsZk1QWTE2U1MoZkdF VEhBTEYoMyxSc3NWKSxmR0VUSEFMRigyLFJ0dFYpKSArIFwKKwkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigyLFJzc1YpLGZHRVRIQUxGKDMsUnR0 VikpKSkpOyBcCisgICAgQUNDU1lOO1wKKworI3VuZGVmIFZDTVBZU0VNUgorI2RlZmluZSBWQ01Q WVNFTVIoRFNULEFDQzAsQUNDMSxTSElGVCxTQVQsQUNDU1lOKSBcCisJZlNFVFdPUkQoMCxEU1Qs U0FUKEFDQzAgZlNDQUxFKFNISUZULGZNUFkxNlNTKGZHRVRIQUxGKDAsUnNzViksZkdFVEhBTEYo MCxSdHRWKSkgLSBcCisJICAgICAgICAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigx LFJzc1YpLGZHRVRIQUxGKDEsUnR0VikpKSkpOyBcCisJZlNFVFdPUkQoMSxEU1QsU0FUKEFDQzEg ZlNDQUxFKFNISUZULGZNUFkxNlNTKGZHRVRIQUxGKDIsUnNzViksZkdFVEhBTEYoMixSdHRWKSkg LSBcCisJICAgICAgICAgICAgICAgICAgICAgICBmTVBZMTZTUyhmR0VUSEFMRigzLFJzc1YpLGZH RVRIQUxGKDMsUnR0VikpKSkpOyBcCisgICAgQUNDU1lOO1wKKworCisjdW5kZWYgVkNNUFlJUgor I2RlZmluZSBWQ01QWUlSKFRBR0JBU0UsRFNUU1lOLERTVFZBTCxBQ0NTRU0sQUNDVkFMMCxBQ0NW QUwxLFNISUZUU1lOLFNISUZUVkFMLFNBVFNZTixTQVRWQUwsQUNDU1lOKSBcCitRNklOU04oTTJf IyNUQUdCQVNFIyNpLERTVFNZTiBBQ0NTRU0gInZjbXB5aShSc3MzMixSdHQzMikiIFNISUZUU1lO IFNBVFNZTixBVFRSSUJTKEFfQVJDSFYyKSwgXAorCSJWZWN0b3IgQ29tcGxleCBNdWx0aXBseSBJ bWFnaW5hcnkiLCB7IFZDTVBZU0VNSShEU1RWQUwsQUNDVkFMMCxBQ0NWQUwxLFNISUZUVkFMLFNB VFZBTCxBQ0NTWU4pOyB9KSBcCitRNklOU04oTTJfIyNUQUdCQVNFIyNyLERTVFNZTiBBQ0NTRU0g InZjbXB5cihSc3MzMixSdHQzMikiIFNISUZUU1lOIFNBVFNZTixBVFRSSUJTKEFfQVJDSFYyKSwg XAorCSJWZWN0b3IgQ29tcGxleCBNdWx0aXBseSBJbWFnaW5hcnkiLCB7IFZDTVBZU0VNUihEU1RW QUwsQUNDVkFMMCxBQ0NWQUwxLFNISUZUVkFMLFNBVFZBTCxBQ0NTWU4pOyB9KQorCisKK1ZDTVBZ SVIodmNtcHlfczBfc2F0XywiUmRkMzIiLFJkZFYsIj0iLCwsIiIsMCwiOnNhdCIsZlNBVCwpCitW Q01QWUlSKHZjbXB5X3MxX3NhdF8sIlJkZDMyIixSZGRWLCI9IiwsLCI6PDwxIiwxLCI6c2F0Iixm U0FULCkKK1ZDTVBZSVIodmNtYWNfczBfc2F0XywiUnh4MzIiLFJ4eFYsIis9IixmR0VUV09SRCgw LFJ4eFYpICsgLGZHRVRXT1JEKDEsUnh4VikgKyAsIiIsMCwiOnNhdCIsZlNBVCxmQUNDKCkpCisK KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqICBSb3RhdGlvbiAgLS0gYnkgMCwgOTAsIDE4MCwgb3IgMjcw IG1lYW5zIG11bHQgYnkgMSwgSiwgLTEsIC1KICAgICAqCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklO U04oUzJfdmNyb3RhdGUsIlJkZDMyPXZjcm90YXRlKFJzczMyLFJ0MzIpIixBVFRSSUJTKEFfQVJD SFYyKSwiUm90YXRlIGNvbXBsZXggdmFsdWUgYnkgbXVsdGlwbGUgb2YgUEkvMiIsCit7CisJZkhJ REUoc2l6ZTF1X3QgdG1wOykKKwl0bXAgPSBmRVhUUkFDVFVfUkFOR0UoUnRWLDEsMCk7CisJaWYg KHRtcCA9PSAwKSB7IC8qIE5vIHJvdGF0aW9uICovCisJCWZTRVRIQUxGKDAsUmRkVixmR0VUSEFM RigwLFJzc1YpKTsKKwkJZlNFVEhBTEYoMSxSZGRWLGZHRVRIQUxGKDEsUnNzVikpOworCX0gZWxz ZSBpZiAodG1wID09IDEpIHsgLyogTXVsdGlwbHkgYnkgLUogKi8KKwkJZlNFVEhBTEYoMCxSZGRW LGZHRVRIQUxGKDEsUnNzVikpOworCQlmU0VUSEFMRigxLFJkZFYsZlNBVEgoLWZHRVRIQUxGKDAs UnNzVikpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAyKSB7IC8qIE11bHRpcGx5IGJ5IEogKi8KKwkJ ZlNFVEhBTEYoMCxSZGRWLGZTQVRIKC1mR0VUSEFMRigxLFJzc1YpKSk7CisJCWZTRVRIQUxGKDEs UmRkVixmR0VUSEFMRigwLFJzc1YpKTsKKwl9IGVsc2UgeyAvKiBNdWx0aXBseSBieSAtMSAqLwor CQlmSElERShpZiAodG1wICE9IDMpIGZhdGFsKCJDIGlzIGJyb2tlbiIpOykKKwkJZlNFVEhBTEYo MCxSZGRWLGZTQVRIKC1mR0VUSEFMRigwLFJzc1YpKSk7CisJCWZTRVRIQUxGKDEsUmRkVixmU0FU SCgtZkdFVEhBTEYoMSxSc3NWKSkpOworCX0KKwl0bXAgPSBmRVhUUkFDVFVfUkFOR0UoUnRWLDMs Mik7CisJaWYgKHRtcCA9PSAwKSB7IC8qIE5vIHJvdGF0aW9uICovCisJCWZTRVRIQUxGKDIsUmRk VixmR0VUSEFMRigyLFJzc1YpKTsKKwkJZlNFVEhBTEYoMyxSZGRWLGZHRVRIQUxGKDMsUnNzVikp OworCX0gZWxzZSBpZiAodG1wID09IDEpIHsgLyogTXVsdGlwbHkgYnkgLUogKi8KKwkJZlNFVEhB TEYoMixSZGRWLGZHRVRIQUxGKDMsUnNzVikpOworCQlmU0VUSEFMRigzLFJkZFYsZlNBVEgoLWZH RVRIQUxGKDIsUnNzVikpKTsKKwl9IGVsc2UgaWYgKHRtcCA9PSAyKSB7IC8qIE11bHRpcGx5IGJ5 IEogKi8KKwkJZlNFVEhBTEYoMixSZGRWLGZTQVRIKC1mR0VUSEFMRigzLFJzc1YpKSk7CisJCWZT RVRIQUxGKDMsUmRkVixmR0VUSEFMRigyLFJzc1YpKTsKKwl9IGVsc2UgeyAvKiBNdWx0aXBseSBi eSAtMSAqLworCQlmSElERShpZiAodG1wICE9IDMpIGZhdGFsKCJDIGlzIGJyb2tlbiIpOykKKwkJ ZlNFVEhBTEYoMixSZGRWLGZTQVRIKC1mR0VUSEFMRigyLFJzc1YpKSk7CisJCWZTRVRIQUxGKDMs UmRkVixmU0FUSCgtZkdFVEhBTEYoMyxSc3NWKSkpOworCX0KK30pCisKKworUTZJTlNOKFM0X3Zy Y3JvdGF0ZV9hY2MsIlJ4eDMyKz12cmNyb3RhdGUoUnNzMzIsUnQzMiwjdTIpIixBVFRSSUJTKCks IlJvdGF0ZSBhbmQgUmVkdWNlIEJ5dGVzIiwKK3sKKwlmSElERShpbnQgaTsgaW50IHRtcHI7IGlu dCB0bXBpOyB1bnNpZ25lZCBpbnQgY29udHJvbDspCisJZkhJREUoaW50IHN1bXI7IGludCBzdW1p OykKKwlzdW1yID0gMDsKKwlzdW1pID0gMDsKKwljb250cm9sID0gZkdFVFVCWVRFKHVpVixSdFYp OworCWZvciAoaSA9IDA7IGkgPCA4OyBpICs9IDIpIHsKKwkJdG1wciA9IGZHRVRCWVRFKGkgICxS c3NWKTsKKwkJdG1waSA9IGZHRVRCWVRFKGkrMSxSc3NWKTsKKwkJc3dpdGNoIChjb250cm9sICYg MykgeworCQkJY2FzZSAwOiAvKiBObyBSb3RhdGlvbiAqLworCQkJCXN1bXIgKz0gdG1wcjsKKwkJ CQlzdW1pICs9IHRtcGk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6IC8qIE11bHRpcGx5IGJ5IC1K ICovCisJCQkJc3VtciArPSB0bXBpOworCQkJCXN1bWkgLT0gdG1wcjsKKwkJCQlicmVhazsKKwkJ CWNhc2UgMjogLyogTXVsdGlwbHkgYnkgSiAqLworCQkJCXN1bXIgLT0gdG1waTsKKwkJCQlzdW1p ICs9IHRtcHI7CisJCQkJYnJlYWs7CisJCQljYXNlIDM6IC8qIE11bHRpcGx5IGJ5IC0xICovCisJ CQkJc3VtciAtPSB0bXByOworCQkJCXN1bWkgLT0gdG1waTsKKwkJCQlicmVhazsKKwkJCWZISURF KGRlZmF1bHQ6IGZhdGFsKCJDIGlzIGJyb2tlbiEiKTspCisJCX0KKwkJY29udHJvbCA9IGNvbnRy b2wgPj4gMjsKKwl9CisJZlNFVFdPUkQoMCxSeHhWLGZHRVRXT1JEKDAsUnh4VikgKyBzdW1yKTsK KwlmU0VUV09SRCgxLFJ4eFYsZkdFVFdPUkQoMSxSeHhWKSArIHN1bWkpOworICAgIGZBQ0MoKTtc Cit9KQorCitRNklOU04oUzRfdnJjcm90YXRlLCJSZGQzMj12cmNyb3RhdGUoUnNzMzIsUnQzMiwj dTIpIixBVFRSSUJTKCksIlJvdGF0ZSBhbmQgUmVkdWNlIEJ5dGVzIiwKK3sKKwlmSElERShpbnQg aTsgaW50IHRtcHI7IGludCB0bXBpOyB1bnNpZ25lZCBpbnQgY29udHJvbDspCisJZkhJREUoaW50 IHN1bXI7IGludCBzdW1pOykKKwlzdW1yID0gMDsKKwlzdW1pID0gMDsKKwljb250cm9sID0gZkdF VFVCWVRFKHVpVixSdFYpOworCWZvciAoaSA9IDA7IGkgPCA4OyBpICs9IDIpIHsKKwkJdG1wciA9 IGZHRVRCWVRFKGkgICxSc3NWKTsKKwkJdG1waSA9IGZHRVRCWVRFKGkrMSxSc3NWKTsKKwkJc3dp dGNoIChjb250cm9sICYgMykgeworCQkJY2FzZSAwOiAvKiBObyBSb3RhdGlvbiAqLworCQkJCXN1 bXIgKz0gdG1wcjsKKwkJCQlzdW1pICs9IHRtcGk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6IC8q IE11bHRpcGx5IGJ5IC1KICovCisJCQkJc3VtciArPSB0bXBpOworCQkJCXN1bWkgLT0gdG1wcjsK KwkJCQlicmVhazsKKwkJCWNhc2UgMjogLyogTXVsdGlwbHkgYnkgSiAqLworCQkJCXN1bXIgLT0g dG1waTsKKwkJCQlzdW1pICs9IHRtcHI7CisJCQkJYnJlYWs7CisJCQljYXNlIDM6IC8qIE11bHRp cGx5IGJ5IC0xICovCisJCQkJc3VtciAtPSB0bXByOworCQkJCXN1bWkgLT0gdG1waTsKKwkJCQli cmVhazsKKwkJCWZISURFKGRlZmF1bHQ6IGZhdGFsKCJDIGlzIGJyb2tlbiEiKTspCisJCX0KKwkJ Y29udHJvbCA9IGNvbnRyb2wgPj4gMjsKKwl9CisJZlNFVFdPUkQoMCxSZGRWLHN1bXIpOworCWZT RVRXT1JEKDEsUmRkVixzdW1pKTsKK30pCisKKworUTZJTlNOKFMyX3ZjbmVnaCwiUmRkMzI9dmNu ZWdoKFJzczMyLFJ0MzIpIixBVFRSSUJTKCksIkNvbmRpdGlvbmFsIE5lZ2F0ZSBoYWxmd29yZHMi LAoreworCWZISURFKGludCBpOykKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCWlmIChm R0VUQklUKGksUnRWKSkgeworCQkJZlNFVEhBTEYoaSxSZGRWLGZTQVRIKC1mR0VUSEFMRihpLFJz c1YpKSk7CisJCX0gZWxzZSB7CisJCQlmU0VUSEFMRihpLFJkZFYsZkdFVEhBTEYoaSxSc3NWKSk7 CisJCX0KKwl9Cit9KQorCitRNklOU04oUzJfdnJjbmVnaCwiUnh4MzIrPXZyY25lZ2goUnNzMzIs UnQzMikiLEFUVFJJQlMoKSwiVmVjdG9yIFJlZHVjZSBDb25kaXRpb25hbCBOZWdhdGUgaGFsZndv cmRzIiwKK3sKKwlmSElERShpbnQgaTspCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQlp ZiAoZkdFVEJJVChpLFJ0VikpIHsKKwkJCVJ4eFYgKz0gLWZHRVRIQUxGKGksUnNzVik7CisJCX0g ZWxzZSB7CisJCQlSeHhWICs9IGZHRVRIQUxGKGksUnNzVik7CisJCX0KKwl9CisgICAgZkFDQygp OworfSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogIEZpbml0ZS1maWVsZCBtdWx0aXBsaWVzLiAg V3JpdHRlbiBieSBEYXZpZCBIb3lsZSAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKK1E2SU5TTihNNF9wbXB5dywiUmRkMzI9cG1weXcoUnMzMixSdDMyKSIsQVRUUklCUygpLCJQ b2x5bm9taWFsIDMyYml0IE11bHRpcGxpY2F0aW9uIHdpdGggQWRkaXRpb24gaW4gR0YoMikiLAor eworICAgICAgICBmSElERShpbnQgaTsgdW5zaWduZWQgaW50IHk7KQorICAgICAgICBmSElERSh1 bnNpZ25lZCBsb25nIGxvbmcgeDsgdW5zaWduZWQgbG9uZyBsb25nIHByb2Q7KQorICAgICAgICB4 ID0gZkdFVFVXT1JEKDAsIFJzVik7CisgICAgICAgIHkgPSBmR0VUVVdPUkQoMCwgUnRWKTsKKwor ICAgICAgICBwcm9kID0gMDsKKyAgICAgICAgZm9yKGk9MDsgaSA8IDMyOyBpKyspIHsKKyAgICAg ICAgICAgIGlmKCh5ID4+IGkpICYgMSkgcHJvZCBePSAoeCA8PCBpKTsKKyAgICAgICAgfQorCVJk ZFYgPSBwcm9kOworfSkKKworUTZJTlNOKE00X3ZwbXB5aCwiUmRkMzI9dnBtcHloKFJzMzIsUnQz MikiLEFUVFJJQlMoKSwiRHVhbCBQb2x5bm9taWFsIDE2Yml0IE11bHRpcGxpY2F0aW9uIHdpdGgg QWRkaXRpb24gaW4gR0YoMikiLAoreworICAgICAgICBmSElERShpbnQgaTsgdW5zaWduZWQgaW50 IHgwOyB1bnNpZ25lZCBpbnQgeDE7KQorICAgICAgICBmSElERSh1bnNpZ25lZCBpbnQgeTA7IHVu c2lnbmVkIGludCB5MTspCisgICAgICAgIGZISURFKHVuc2lnbmVkIGludCBwcm9kMDsgdW5zaWdu ZWQgaW50IHByb2QxOykKKworICAgICAgICB4MCA9IGZHRVRVSEFMRigwLCBSc1YpOworICAgICAg ICB4MSA9IGZHRVRVSEFMRigxLCBSc1YpOworICAgICAgICB5MCA9IGZHRVRVSEFMRigwLCBSdFYp OworICAgICAgICB5MSA9IGZHRVRVSEFMRigxLCBSdFYpOworCisgICAgICAgIHByb2QwID0gcHJv ZDEgPSAwOworICAgICAgICBmb3IoaT0wOyBpIDwgMTY7IGkrKykgeworICAgICAgICAgICAgaWYo KHkwID4+IGkpICYgMSkgcHJvZDAgXj0gKHgwIDw8IGkpOworICAgICAgICAgICAgaWYoKHkxID4+ IGkpICYgMSkgcHJvZDEgXj0gKHgxIDw8IGkpOworICAgICAgICB9CisgICAgICAgIGZTRVRIQUxG KDAsUmRkVixmR0VUVUhBTEYoMCxwcm9kMCkpOworICAgICAgICBmU0VUSEFMRigxLFJkZFYsZkdF VFVIQUxGKDAscHJvZDEpKTsKKyAgICAgICAgZlNFVEhBTEYoMixSZGRWLGZHRVRVSEFMRigxLHBy b2QwKSk7CisgICAgICAgIGZTRVRIQUxGKDMsUmRkVixmR0VUVUhBTEYoMSxwcm9kMSkpOworfSkK KworUTZJTlNOKE00X3BtcHl3X2FjYywiUnh4MzJePXBtcHl3KFJzMzIsUnQzMikiLEFUVFJJQlMo KSwiUG9seW5vbWlhbCAzMmJpdCBNdWx0aXBsaWNhdGlvbiB3aXRoIEFkZGl0aW9uIGluIEdGKDIp IiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7IHVuc2lnbmVkIGludCB5OykKKyAgICAgICAgZkhJ REUodW5zaWduZWQgbG9uZyBsb25nIHg7IHVuc2lnbmVkIGxvbmcgbG9uZyBwcm9kOykKKyAgICAg ICAgeCA9IGZHRVRVV09SRCgwLCBSc1YpOworICAgICAgICB5ID0gZkdFVFVXT1JEKDAsIFJ0Vik7 CisKKyAgICAgICAgcHJvZCA9IDA7CisgICAgICAgIGZvcihpPTA7IGkgPCAzMjsgaSsrKSB7Cisg ICAgICAgICAgICBpZigoeSA+PiBpKSAmIDEpIHByb2QgXj0gKHggPDwgaSk7CisgICAgICAgIH0K KwlSeHhWIF49IHByb2Q7Cit9KQorCitRNklOU04oTTRfdnBtcHloX2FjYywiUnh4MzJePXZwbXB5 aChSczMyLFJ0MzIpIixBVFRSSUJTKCksIkR1YWwgUG9seW5vbWlhbCAxNmJpdCBNdWx0aXBsaWNh dGlvbiB3aXRoIEFkZGl0aW9uIGluIEdGKDIpIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7IHVu c2lnbmVkIGludCB4MDsgdW5zaWduZWQgaW50IHgxOykKKyAgICAgICAgZkhJREUodW5zaWduZWQg aW50IHkwOyB1bnNpZ25lZCBpbnQgeTE7KQorICAgICAgICBmSElERSh1bnNpZ25lZCBpbnQgcHJv ZDA7IHVuc2lnbmVkIGludCBwcm9kMTspCisKKyAgICAgICAgeDAgPSBmR0VUVUhBTEYoMCwgUnNW KTsKKyAgICAgICAgeDEgPSBmR0VUVUhBTEYoMSwgUnNWKTsKKyAgICAgICAgeTAgPSBmR0VUVUhB TEYoMCwgUnRWKTsKKyAgICAgICAgeTEgPSBmR0VUVUhBTEYoMSwgUnRWKTsKKworICAgICAgICBw cm9kMCA9IHByb2QxID0gMDsKKyAgICAgICAgZm9yKGk9MDsgaSA8IDE2OyBpKyspIHsKKyAgICAg ICAgICAgIGlmKCh5MCA+PiBpKSAmIDEpIHByb2QwIF49ICh4MCA8PCBpKTsKKyAgICAgICAgICAg IGlmKCh5MSA+PiBpKSAmIDEpIHByb2QxIF49ICh4MSA8PCBpKTsKKyAgICAgICAgfQorICAgICAg ICBmU0VUSEFMRigwLFJ4eFYsZkdFVFVIQUxGKDAsUnh4VikgXiBmR0VUVUhBTEYoMCxwcm9kMCkp OworICAgICAgICBmU0VUSEFMRigxLFJ4eFYsZkdFVFVIQUxGKDEsUnh4VikgXiBmR0VUVUhBTEYo MCxwcm9kMSkpOworICAgICAgICBmU0VUSEFMRigyLFJ4eFYsZkdFVFVIQUxGKDIsUnh4VikgXiBm R0VUVUhBTEYoMSxwcm9kMCkpOworICAgICAgICBmU0VUSEFMRigzLFJ4eFYsZkdFVFVIQUxGKDMs Unh4VikgXiBmR0VUVUhBTEYoMSxwcm9kMSkpOworfSkKKworCisvKiBWNzA6IFRJTlkgQ09SRSAq LworCisjZGVmaW5lIENNUFk2NChUQUcsTkFNRSxERVNDLE9QRVJBTkQxLE9QLFcwLFcxLFcyLFcz KSBcCitRNklOU04oTTdfIyNUQUcsIlJkZDMyPSIgTkFNRSAiKFJzczMyLCIgT1BFUkFORDEgIiki LEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UM09OTFksQV9SRVNUUklDVF9OT1NMT1QyX01QWSksIkNv bXBsZXggTXVsdGlwbHkgNjQtYml0ICIgREVTQywgICAgeyBSZGRWICA9IChmTVBZMzJTUyhmR0VU V09SRChXMCwgUnNzViksIGZHRVRXT1JEKFcxLCBSdHRWKSkgT1AgZk1QWTMyU1MoZkdFVFdPUkQo VzIsIFJzc1YpLCBmR0VUV09SRChXMywgUnR0VikpKTsgZkVYVEVOU0lPTl9BVURJTygpO30pXAor UTZJTlNOKE03XyMjVEFHIyNfYWNjLCJSeHgzMis9IiBOQU1FICIoUnNzMzIsIk9QRVJBTkQxIiki LEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UM09OTFksQV9SRVNUUklDVF9OT1NMT1QyX01QWSxBX05P VEVfTk9TTE9UMl9NUFkpLCJDb21wbGV4IE11bHRpcGx5LUFjY3VtdWxhdGUgNjQtYml0ICIgREVT QywgeyBSeHhWICs9IChmTVBZMzJTUyhmR0VUV09SRChXMCwgUnNzViksIGZHRVRXT1JEKFcxLCBS dHRWKSkgT1AgZk1QWTMyU1MoZkdFVFdPUkQoVzIsIFJzc1YpLCBmR0VUV09SRChXMywgUnR0Vikp KTsgZkVYVEVOU0lPTl9BVURJTygpOyBmQUNDKCk7IH0pCisKK0NNUFk2NChkY21weXJ3LCAiY21w eXJ3IiwiUmVhbCIsIlJ0dDMyIiAsLSwwLDAsMSwxKQorQ01QWTY0KGRjbXB5cndjLCJjbXB5cnci LCJSZWFsIiwiUnR0MzIqIiwrLDAsMCwxLDEpCitDTVBZNjQoZGNtcHlpdywgImNtcHlpdyIsIklt YWciLCJSdHQzMiIgLCssMCwxLDEsMCkKK0NNUFk2NChkY21weWl3YywiY21weWl3IiwiSW1hZyIs IlJ0dDMyKiIsLSwxLDAsMCwxKQorCitERUZfTUFQUElORyhNN192ZG1weSwiUmRkMzI9dmRtcHl3 KFJzczMyLFJ0dDMyKSIsIlJkZDMyPWNtcHlydyhSc3MzMixSdHQzMiopIikKK0RFRl9NQVBQSU5H KE03X3ZkbXB5X2FjYywiUnh4MzIrPXZkbXB5dyhSc3MzMixSdHQzMikiLCJSeHgzMis9Y21weXJ3 KFJzczMyLFJ0dDMyKikiKQorCisKKworI2RlZmluZSBDTVBZMTI4KFRBRywgTkFNRSwgT1BFUkFO RDEsIFdPUkQwLCBXT1JEMSwgV09SRDIsIFdPUkQzLCBPUCkgXAorUTZJTlNOKE03XyMjVEFHLCJS ZDMyPSIgTkFNRSAiKFJzczMyLCJPUEVSQU5EMSIpOjw8MTpzYXQiLEFUVFJJQlMoQV9SRVNUUklD VF9TTE9UM09OTFksQV9SRVNUUklDVF9OT1NMT1QyX01QWSxBX05PVEVfTk9TTE9UMl9NUFkpLCJD b21wbGV4IE11bHRpcGx5IDMyLWJpdCByZXN1bHQgcmVhbCIsICBcCit7IFwKK2ZISURFKHNpemUx NnNfdCBhY2MxMjg7KVwKK2ZISURFKHNpemUxNnNfdCB0bXAxMjg7KVwKK2ZISURFKHNpemU4c190 IGFjYzY0OylcCit0bXAxMjggPSBmQ0FTVDhTXzE2UyhmTVBZMzJTUyhmR0VUV09SRChXT1JEMCwg UnNzViksIGZHRVRXT1JEKFdPUkQxLCBSdHRWKSkpO1wKK2FjYzEyOCA9IGZDQVNUOFNfMTZTKGZN UFkzMlNTKGZHRVRXT1JEKFdPUkQyLCBSc3NWKSwgZkdFVFdPUkQoV09SRDMsIFJ0dFYpKSk7XAor YWNjMTI4ID0gT1AodG1wMTI4LGFjYzEyOCk7XAorYWNjMTI4ID0gZlNISUZUUjEyOChhY2MxMjgs IDMxKTtcCithY2M2NCA9ICBmQ0FTVDE2U184UyhhY2MxMjgpO1wKK1JkViA9IGZTQVRXKGFjYzY0 KTtcCitmRVhURU5TSU9OX0FVRElPKCk7fSkKKworCitDTVBZMTI4KHdjbXB5cncsICJjbXB5cnci LCAiUnR0MzIiLCAwLCAwLCAxLCAxLCBmU1VCMTI4KQorQ01QWTEyOCh3Y21weXJ3YywgImNtcHly dyIsICJSdHQzMioiLCAwLCAwLCAxLCAxLCBmQUREMTI4KQorQ01QWTEyOCh3Y21weWl3LCAiY21w eWl3IiwgIlJ0dDMyIiwgMCwgMSwgMSwgMCwgZkFERDEyOCkKK0NNUFkxMjgod2NtcHlpd2MsICJj bXB5aXciLCAiUnR0MzIqIiwgMSwgMCwgMCwgMSwgZlNVQjEyOCkKKworCisjZGVmaW5lIENNUFkx MjhSTkQoVEFHLCBOQU1FLCBPUEVSQU5EMSwgV09SRDAsIFdPUkQxLCBXT1JEMiwgV09SRDMsIE9Q KSBcCitRNklOU04oTTdfIyNUQUcjI19ybmQsIlJkMzI9IiBOQU1FICIoUnNzMzIsIk9QRVJBTkQx Iik6PDwxOnJuZDpzYXQiLEFUVFJJQlMoQV9SRVNUUklDVF9TTE9UM09OTFksQV9SRVNUUklDVF9O T1NMT1QyX01QWSxBX05PVEVfTk9TTE9UMl9NUFkpLCJDb21wbGV4IE11bHRpcGx5IDMyLWJpdCBy ZXN1bHQgcmVhbCIsICBcCit7IFwKK2ZISURFKHNpemUxNnNfdCBhY2MxMjg7KVwKK2ZISURFKHNp emUxNnNfdCB0bXAxMjg7KVwKK2ZISURFKHNpemUxNnNfdCBjb25zdDEyODspXAorZkhJREUoc2l6 ZThzX3QgYWNjNjQ7KVwKK3RtcDEyOCA9IGZDQVNUOFNfMTZTKGZNUFkzMlNTKGZHRVRXT1JEKFdP UkQwLCBSc3NWKSwgZkdFVFdPUkQoV09SRDEsIFJ0dFYpKSk7XAorYWNjMTI4ID0gZkNBU1Q4U18x NlMoZk1QWTMyU1MoZkdFVFdPUkQoV09SRDIsIFJzc1YpLCBmR0VUV09SRChXT1JEMywgUnR0Vikp KTtcCitjb25zdDEyOCA9IGZDQVNUOFNfMTZTKGZDT05TVExMKDB4NDAwMDAwMDApKTtcCithY2Mx MjggPSBPUCh0bXAxMjgsYWNjMTI4KTtcCithY2MxMjggPSBmQUREMTI4KGFjYzEyOCxjb25zdDEy OCk7XAorYWNjMTI4ID0gZlNISUZUUjEyOChhY2MxMjgsIDMxKTtcCithY2M2NCA9ICBmQ0FTVDE2 U184UyhhY2MxMjgpO1wKK1JkViA9IGZTQVRXKGFjYzY0KTtcCitmRVhURU5TSU9OX0FVRElPKCk7 fSkKKworQ01QWTEyOFJORCh3Y21weXJ3LCAiY21weXJ3IiwgIlJ0dDMyIiwgMCwgMCwgMSwgMSwg ZlNVQjEyOCkKK0NNUFkxMjhSTkQod2NtcHlyd2MsICJjbXB5cnciLCAiUnR0MzIqIiwgMCwgMCwg MSwgMSwgZkFERDEyOCkKK0NNUFkxMjhSTkQod2NtcHlpdywgImNtcHlpdyIsICJSdHQzMiIsIDAs IDEsIDEsIDAsIGZBREQxMjgpCitDTVBZMTI4Uk5EKHdjbXB5aXdjLCAiY21weWl3IiwgIlJ0dDMy KiIsIDEsIDAsIDAsIDEsIGZTVUIxMjgpCisKKworCisKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhh Z29uL2ltcG9ydGVkL3NoaWZ0LmlkZWYgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5p ZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMTdiY2YKLS0tIC9kZXYv bnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zaGlmdC5pZGVmCkBAIC0wLDAgKzEs MTIxMSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3ZhdGlvbiBD ZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAq ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBTLXR5cGUgSW5zdHJ1Y3Rpb25zCisg Ki8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv KiBTSElGVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBOT1RFOiBSZGQg PSBScyAqcmlnaHQqIHNoaWZ0cyBkb24ndCBtYWtlIHNlbnNlICovCisvKiBOT1RFOiBSZFtkXSA9 IFJzW3NdICpyaWdodCogc2hpZnRzIHdpdGggc2F0dXJhdGlvbiBkb24ndCBtYWtlIHNlbnNlICov CisKKworI2RlZmluZSBSU0hJRlRUWVBFUyhUQUdFTkQsUkVHRCxSRUdTLFJFR1NUWVBFLEFDQyxB Q0NTUkMsU0FULFNBVE9QVCxBVFRSUykgXAorUTZJTlNOKFMyX2Fzcl9yXyMjVEFHRU5ELCNSRUdE ICIzMiIgI0FDQyAiPWFzcigiICNSRUdTICIzMixSdDMyKSIgI1NBVE9QVCxBVFRSSUJTKEFUVFJT KSwgXAorCSJBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgIFwKKyAg ICAgICAgICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNYVE4oNywzMixSdFYpO1wKKwkJ UkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZCSURJUl9BU0hJRlRSKFJFR1MjI1Ysc2hhbXQsUkVH U1RZUEUpKTsgIFwKKwl9KVwKK1wKK1E2SU5TTihTMl9hc2xfcl8jI1RBR0VORCwjUkVHRCAiMzIi ICNBQ0MgIj1hc2woIiAjUkVHUyAiMzIsUnQzMikiICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwK KwkiQXJpdGhtZXRpYyBTaGlmdCBMZWZ0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgIFwKKyAgICAgICAg ICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNYVE4oNywzMixSdFYpO1wKKwkJUkVHRCMj ViA9IFNBVChBQ0NTUkMgQUNDIGZCSURJUl9BU0hJRlRMKFJFR1MjI1Ysc2hhbXQsUkVHU1RZUEUp KTsgIFwKKwl9KVwKK1wKK1E2SU5TTihTMl9sc3Jfcl8jI1RBR0VORCwjUkVHRCAiMzIiICNBQ0Mg Ij1sc3IoIiAjUkVHUyAiMzIsUnQzMikiICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwKKwkiTG9n aWNhbCBTaGlmdCBSaWdodCBieSBSZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAg ZkhJREUoc2l6ZTRzX3QpIHNoYW10PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBTQVQo QUNDU1JDIEFDQyBmQklESVJfTFNISUZUUihSRUdTIyNWLHNoYW10LFJFR1NUWVBFKSk7ICBcCisJ fSlcCitcCitRNklOU04oUzJfbHNsX3JfIyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9bHNsKCIg I1JFR1MgIjMyLFJ0MzIpIiAjU0FUT1BULEFUVFJJQlMoQVRUUlMpLCBcCisJIkxvZ2ljYWwgU2hp ZnQgTGVmdCBieSBSZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAgZkhJREUoc2l6 ZTRzX3QpIHNoYW10PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBTQVQoQUNDU1JDIEFD QyBmQklESVJfTFNISUZUTChSRUdTIyNWLHNoYW10LFJFR1NUWVBFKSk7ICBcCisJfSkKKworUlNI SUZUVFlQRVMocixSZCxScyw0XzgsLCxmRUNITywsKQorUlNISUZUVFlQRVMocCxSZGQsUnNzLDhf OCwsLGZFQ0hPLCwpCitSU0hJRlRUWVBFUyhyX2FjYyxSeCxScyw0XzgsKyxSeFYsZkVDSE8sLEFf Uk9QU18yKQorUlNISUZUVFlQRVMocF9hY2MsUnh4LFJzcyw4XzgsKyxSeHhWLGZFQ0hPLCxBX1JP UFNfMikKK1JTSElGVFRZUEVTKHJfbmFjLFJ4LFJzLDRfOCwtLFJ4VixmRUNITywsQV9ST1BTXzIp CitSU0hJRlRUWVBFUyhwX25hYyxSeHgsUnNzLDhfOCwtLFJ4eFYsZkVDSE8sLEFfUk9QU18yKQor CitSU0hJRlRUWVBFUyhyX2FuZCxSeCxScyw0XzgsJixSeFYsZkVDSE8sLEFfUk9QU18yKQorUlNI SUZUVFlQRVMocl9vcixSeCxScyw0XzgsfCxSeFYsZkVDSE8sLEFfUk9QU18yKQorUlNISUZUVFlQ RVMocF9hbmQsUnh4LFJzcyw4XzgsJixSeHhWLGZFQ0hPLCxBX1JPUFNfMikKK1JTSElGVFRZUEVT KHBfb3IsUnh4LFJzcyw4XzgsfCxSeHhWLGZFQ0hPLCxBX1JPUFNfMikKK1JTSElGVFRZUEVTKHBf eG9yLFJ4eCxSc3MsOF84LF4sUnh4VixmRUNITywsQV9ST1BTXzIpCisKKworI3VuZGVmIFJTSElG VFRZUEVTCisKKy8qIFJlZ2lzdGVyIHNoaWZ0IHdpdGggc2F0dXJhdGlvbiAqLworI2RlZmluZSBS U0FUU0hJRlRUWVBFUyhUQUdFTkQsUkVHRCxSRUdTLFJFR1NUWVBFKSBcCitRNklOU04oUzJfYXNy X3JfIyNUQUdFTkQsI1JFR0QgIjMyIiAiPWFzcigiICNSRUdTICIzMixSdDMyKTpzYXQiLEFUVFJJ QlMoKSwgXAorCSJBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IFJlZ2lzdGVyIiwgXAorCXsgIFwK KyAgICAgICAgICAgICAgICBmSElERShzaXplNHNfdCkgc2hhbXQ9ZlNYVE4oNywzMixSdFYpO1wK KwkJUkVHRCMjViA9IGZCSURJUl9BU0hJRlRSX1NBVChSRUdTIyNWLHNoYW10LFJFR1NUWVBFKTsg IFwKKwl9KVwKK1wKK1E2SU5TTihTMl9hc2xfcl8jI1RBR0VORCwjUkVHRCAiMzIiICI9YXNsKCIg I1JFR1MgIjMyLFJ0MzIpOnNhdCIsQVRUUklCUygpLCBcCisJIkFyaXRobWV0aWMgU2hpZnQgTGVm dCBieSBSZWdpc3RlciIsIFwKKwl7ICBcCisgICAgICAgICAgICAgICAgZkhJREUoc2l6ZTRzX3Qp IHNoYW10PWZTWFROKDcsMzIsUnRWKTtcCisJCVJFR0QjI1YgPSBmQklESVJfQVNISUZUTF9TQVQo UkVHUyMjVixzaGFtdCxSRUdTVFlQRSk7ICBcCisJfSkKKworUlNBVFNISUZUVFlQRVMocl9zYXQs UmQsUnMsNF84KQorCisKKworCisKKyNkZWZpbmUgSVNISUZUVFlQRVMoVEFHRU5ELFNJWkUsUkVH RCxSRUdTLFJFR1NUWVBFLEFDQyxBQ0NTUkMsU0FULFNBVE9QVCxBVFRSUykgXAorUTZJTlNOKFMy X2Fzcl9pXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWFzcigiICNSRUdTICIzMiwjdSIgI1NJ WkUgIikiICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwKKwkiQXJpdGhtZXRpYyBTaGlmdCBSaWdo dCBieSBJbW1lZGlhdGUiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkFTSElGVFIo UkVHUyMjVix1aVYsUkVHU1RZUEUpKTsgfSkgXAorXAorUTZJTlNOKFMyX2xzcl9pXyMjVEFHRU5E LCNSRUdEICIzMiIgI0FDQyAiPWxzcigiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQs QVRUUklCUyhBVFRSUyksIFwKKwkiTG9naWNhbCBTaGlmdCBSaWdodCBieSBJbW1lZGlhdGUiLCBc CisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkxTSElGVFIoUkVHUyMjVix1aVYsUkVHU1RZ UEUpKTsgfSkgXAorXAorUTZJTlNOKFMyX2FzbF9pXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAi PWFzbCgiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwK KwkiU2hpZnQgTGVmdCBieSBJbW1lZGlhdGUiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBB Q0MgZkFTSElGVEwoUkVHUyMjVix1aVYsUkVHU1RZUEUpKTsgfSkgXAorUTZJTlNOKFM2X3JvbF9p XyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPXJvbCgiICNSRUdTICIzMiwjdSIgI1NJWkUgIiki ICNTQVRPUFQsQVRUUklCUyhBVFRSUyksIFwKKwkiUm90YXRlIExlZnQgYnkgSW1tZWRpYXRlIiwg XAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMgQUNDIGZST1RMKFJFR1MjI1YsdWlWLFJFR1NUWVBF KSk7IH0pCisKKworI2RlZmluZSBJU0hJRlRUWVBFU19PTkxZX0FTTChUQUdFTkQsU0laRSxSRUdE LFJFR1MsUkVHU1RZUEUsQUNDLEFDQ1NSQyxTQVQsU0FUT1BUKSBcCitRNklOU04oUzJfYXNsX2lf IyNUQUdFTkQsI1JFR0QgIjMyIiAjQUNDICI9YXNsKCIgI1JFR1MgIjMyLCN1IiAjU0laRSAiKSIg I1NBVE9QVCxBVFRSSUJTKCksIFwKKwkiIiwgXAorCXsgUkVHRCMjViA9IFNBVChBQ0NTUkMgQUND IGZBU0hJRlRMKFJFR1MjI1YsdWlWLFJFR1NUWVBFKSk7IH0pCisKKyNkZWZpbmUgSVNISUZUVFlQ RVNfT05MWV9BU1IoVEFHRU5ELFNJWkUsUkVHRCxSRUdTLFJFR1NUWVBFLEFDQyxBQ0NTUkMsU0FU LFNBVE9QVCkgXAorUTZJTlNOKFMyX2Fzcl9pXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWFz cigiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQsQVRUUklCUygpLCBcCisJIiIsIFwK Kwl7IFJFR0QjI1YgPSBTQVQoQUNDU1JDIEFDQyBmQVNISUZUUihSRUdTIyNWLHVpVixSRUdTVFlQ RSkpOyB9KQorCisKKyNkZWZpbmUgSVNISUZUVFlQRVNfTk9BU1IoVEFHRU5ELFNJWkUsUkVHRCxS RUdTLFJFR1NUWVBFLEFDQyxBQ0NTUkMsU0FULFNBVE9QVCkgXAorUTZJTlNOKFMyX2xzcl9pXyMj VEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWxzcigiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNT QVRPUFQsQVRUUklCUygpLCBcCisJIkxvZ2ljYWwgU2hpZnQgUmlnaHQgYnkgUmVnaXN0ZXIiLCBc CisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkxTSElGVFIoUkVHUyMjVix1aVYsUkVHU1RZ UEUpKTsgfSkgXAorUTZJTlNOKFMyX2FzbF9pXyMjVEFHRU5ELCNSRUdEICIzMiIgI0FDQyAiPWFz bCgiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQsQVRUUklCUygpLCBcCisJIlNoaWZ0 IExlZnQgYnkgUmVnaXN0ZXIiLCBcCisJeyBSRUdEIyNWID0gU0FUKEFDQ1NSQyBBQ0MgZkFTSElG VEwoUkVHUyMjVix1aVYsUkVHU1RZUEUpKTsgfSkgXAorUTZJTlNOKFM2X3JvbF9pXyMjVEFHRU5E LCNSRUdEICIzMiIgI0FDQyAiPXJvbCgiICNSRUdTICIzMiwjdSIgI1NJWkUgIikiICNTQVRPUFQs QVRUUklCUygpLCBcCisJIlJvdGF0ZSBMZWZ0IGJ5IEltbWVkaWF0ZSIsIFwKKwl7IFJFR0QjI1Yg PSBTQVQoQUNDU1JDIEFDQyBmUk9UTChSRUdTIyNWLHVpVixSRUdTVFlQRSkpOyB9KQorCisKKwor SVNISUZUVFlQRVMociw1LFJkLFJzLDRfNCwsLGZFQ0hPLCwpCitJU0hJRlRUWVBFUyhwLDYsUmRk LFJzcyw4XzgsLCxmRUNITywsKQorSVNISUZUVFlQRVMocl9hY2MsNSxSeCxScyw0XzQsKyxSeFYs ZkVDSE8sLEFfUk9QU18yKQorSVNISUZUVFlQRVMocF9hY2MsNixSeHgsUnNzLDhfOCwrLFJ4eFYs ZkVDSE8sLEFfUk9QU18yKQorSVNISUZUVFlQRVMocl9uYWMsNSxSeCxScyw0XzQsLSxSeFYsZkVD SE8sLEFfUk9QU18yKQorSVNISUZUVFlQRVMocF9uYWMsNixSeHgsUnNzLDhfOCwtLFJ4eFYsZkVD SE8sLEFfUk9QU18yKQorCitJU0hJRlRUWVBFU19OT0FTUihyX3hhY2MsNSxSeCxScyw0XzQsXiwg UnhWLGZFQ0hPLCkKK0lTSElGVFRZUEVTX05PQVNSKHBfeGFjYyw2LFJ4eCxSc3MsOF84LF4sIFJ4 eFYsZkVDSE8sKQorCitJU0hJRlRUWVBFUyhyX2FuZCw1LFJ4LFJzLDRfNCwmLFJ4VixmRUNITyws QV9ST1BTXzIpCitJU0hJRlRUWVBFUyhyX29yLDUsUngsUnMsNF80LHwsUnhWLGZFQ0hPLCxBX1JP UFNfMikKK0lTSElGVFRZUEVTKHBfYW5kLDYsUnh4LFJzcyw4XzgsJixSeHhWLGZFQ0hPLCxBX1JP UFNfMikKK0lTSElGVFRZUEVTKHBfb3IsNixSeHgsUnNzLDhfOCx8LFJ4eFYsZkVDSE8sLEFfUk9Q U18yKQorCitJU0hJRlRUWVBFU19PTkxZX0FTTChyX3NhdCw1LFJkLFJzLDRfOCwsLGZTQVQsOnNh dCkKKworCitRNklOU04oUzJfYXNyX2lfcl9ybmQsIlJkMzI9YXNyKFJzMzIsI3U1KTpybmQiLEFU VFJJQlMoKSwKKyAgICAgICAiU2hpZnQgcmlnaHQgd2l0aCByb3VuZCIsCisgICAgICAgeyBSZFYg PSBmQVNISUZUUigoKGZBU0hJRlRSKFJzVix1aVYsNF84KSkrMSksMSw4XzgpOyB9KQorCisKK0RF Rl9WMl9DT05EX01BUFBJTkcoUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCwiUmQzMj1hc3JybmQo UnMzMiwjdTUpIiwiI3U1PT0wIiwiUmQzMj1SczMyIiwiUmQzMj1hc3IoUnMzMiwjdTUtMSk6cm5k IikKKworCisKKworUTZJTlNOKFMyX2Fzcl9pX3Bfcm5kLCJSZGQzMj1hc3IoUnNzMzIsI3U2KTpy bmQiLEFUVFJJQlMoKSwgIlNoaWZ0IHJpZ2h0IHdpdGggcm91bmQiLAoreyBmSElERShzaXplOHVf dCB0bXA7KQorICBmSElERShzaXplOHVfdCBybmQ7KQorICB0bXAgPSBmQVNISUZUUihSc3NWLHVp Viw4XzgpOworICBybmQgPSB0bXAgJiAxOworICBSZGRWID0gZkFTSElGVFIodG1wLDEsOF84KSAr IHJuZDsgfSkKKworCitERUZfVjVfQ09ORF9NQVBQSU5HKFMyX2Fzcl9pX3Bfcm5kX2dvb2RzeW50 YXgsIlJkZDMyPWFzcnJuZChSc3MzMiwjdTYpIiwiI3U2PT0wIiwiUmRkMzI9UnNzMzIiLCJSZGQz Mj1hc3IoUnNzMzIsI3U2LTEpOnJuZCIpCisKKworCitRNklOU04oUzRfbHNsaSwiUmQzMj1sc2wo I3M2LFJ0MzIpIixBVFRSSUJTKCksICJTaGlmdCBhbiBpbW1lZGlhdGUgbGVmdCBieSByZWdpc3Rl ciBhbW91bnQiLAoreworCWZISURFKHNpemU0c190KSBzaGFtdCA9IGZTWFROKDcsMzIsUnRWKTsK KwlSZFYgPSBmQklESVJfTFNISUZUTChzaVYsc2hhbXQsNF84KTsKK30pCisKKworCisKK1E2SU5T TihTMl9hZGRhc2xfcnJyaSwiUmQzMj1hZGRhc2woUnQzMixSczMyLCN1MykiLEFUVFJJQlMoKSwK KwkiU2hpZnQgbGVmdCBieSBzbWFsbCBhbW91bnQgYW5kIGFkZCIsCisJeyBSZFYgPSBSdFYgKyBm QVNISUZUTChSc1YsdWlWLDRfNCk7IH0pCisKKworCisjZGVmaW5lIFNISUZUT1BJKFRBR0VORCxJ Tk5FUk9QLElOTkVSU0VNKVwKK1E2SU5TTihTNF9hbmRpXyMjVEFHRU5ELCJSeDMyPWFuZCgjdTgs IklOTkVST1AiKSIsLCJTaGlmdC1vcCIse1J4Vj1mSU1NRVhUKHVpVikmSU5ORVJTRU07fSlcCitR NklOU04oUzRfb3JpXyMjVEFHRU5ELCAiUngzMj1vcigjdTgsIklOTkVST1AiKSIsLCJTaGlmdC1v cCIse1J4Vj1mSU1NRVhUKHVpVil8SU5ORVJTRU07fSlcCitRNklOU04oUzRfYWRkaV8jI1RBR0VO RCwiUngzMj1hZGQoI3U4LCJJTk5FUk9QIikiLCwiU2hpZnQtb3AiLHtSeFY9ZklNTUVYVCh1aVYp K0lOTkVSU0VNO30pXAorUTZJTlNOKFM0X3N1YmlfIyNUQUdFTkQsIlJ4MzI9c3ViKCN1OCwiSU5O RVJPUCIpIiwsIlNoaWZ0LW9wIix7UnhWPWZJTU1FWFQodWlWKS1JTk5FUlNFTTt9KQorCisKK1NI SUZUT1BJKGFzbF9yaSwiYXNsKFJ4MzIsI1U1KSIsKFJ4Vjw8VWlWKSkKK1NISUZUT1BJKGxzcl9y aSwibHNyKFJ4MzIsI1U1KSIsKCgodW5zaWduZWQgaW50KVJ4Vik+PlVpVikpCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBQRVJNVVRFUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworUTZJTlNOKFMyX3ZhbGlnbmliLCJSZGQzMj12 YWxpZ25iKFJ0dDMyLFJzczMyLCN1MykiLAorQVRUUklCUygpLCAiVmVjdG9yIGFsaWduIGJ5dGVz IiwKK3sKKyAgUmRkViA9IChmTFNISUZUUihSc3NWLHVpVio4LDhfOCkpfChmQVNISUZUTChSdHRW LCgoOC11aVYpKjgpLDhfOCkpOworfSkKKworUTZJTlNOKFMyX3ZhbGlnbnJiLCJSZGQzMj12YWxp Z25iKFJ0dDMyLFJzczMyLFB1NCkiLAorQVRUUklCUygpLCAiQWxpZ24gd2l0aCByZWdpc3RlciIs Cit7IGZQUkVEVVNFX1RJTUlORygpO1JkZFYgPSBmTFNISUZUUihSc3NWLChQdVYmMHg3KSo4LDhf OCl8KGZBU0hJRlRMKFJ0dFYsKDgtKFB1ViYweDcpKSo4LDhfOCkpO30pCisKK1E2SU5TTihTMl92 c3BsaWNlaWIsIlJkZDMyPXZzcGxpY2ViKFJzczMyLFJ0dDMyLCN1MykiLAorQVRUUklCUygpLCAi VmVjdG9yIHNwbGljZSBieXRlcyIsCit7IFJkZFYgPSBmQVNISUZUTChSdHRWLHVpVio4LDhfOCkg fCBmWlhUTih1aVYqOCw2NCxSc3NWKTsgfSkKKworUTZJTlNOKFMyX3ZzcGxpY2VyYiwiUmRkMzI9 dnNwbGljZWIoUnNzMzIsUnR0MzIsUHU0KSIsCitBVFRSSUJTKCksICJTcGxpY2Ugd2l0aCByZWdp c3RlciIsCit7IGZQUkVEVVNFX1RJTUlORygpO1JkZFYgPSBmQVNISUZUTChSdHRWLChQdVYmNykq OCw4XzgpIHwgZlpYVE4oKFB1ViY3KSo4LDY0LFJzc1YpOyB9KQorCitRNklOU04oUzJfdnNwbGF0 cmgsIlJkZDMyPXZzcGxhdGgoUnMzMikiLAorQVRUUklCUygpLCAiVmVjdG9yIHNwbGF0IGhhbGZ3 b3JkcyBmcm9tIHJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBm b3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIGZHRVRIQUxGKDAsUnNWKSk7 CisgICAgICAgIH0KK30pCisKKworUTZJTlNOKFMyX3ZzcGxhdHJiLCJSZDMyPXZzcGxhdGIoUnMz MikiLAorQVRUUklCUygpLCAiVmVjdG9yIHNwbGF0IGJ5dGVzIGZyb20gcmVnaXN0ZXIiLAorewor ICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZT RVRCWVRFKGksUmRWLCBmR0VUQllURSgwLFJzVikpOworICAgICAgICB9Cit9KQorCitRNklOU04o UzZfdnNwbGF0cmJwLCJSZGQzMj12c3BsYXRiKFJzMzIpIiwKK0FUVFJJQlMoKSwgIlZlY3RvciBz cGxhdCBieXRlcyBmcm9tIHJlZ2lzdGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAg ICAgICBmb3IgKGk9MDtpPDg7aSsrKSB7CisJICBmU0VUQllURShpLFJkZFYsIGZHRVRCWVRFKDAs UnNWKSk7CisgICAgICAgIH0KK30pCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKy8qIEluc2VydC9FeHRyYWN0W3VdICAgICAgICAgICAgICAg ICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKK1E2SU5TTihTMl9pbnNlcnQsIlJ4MzI9aW5zZXJ0KFJzMzIsI3U1LCNVNSkiLAor QVRUUklCUygpLCAiSW5zZXJ0IGJpdHMiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVp VjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9VWlWOworCS8qIGNsZWFyIGJpdHMgaW4gUnh4 IHdoZXJlIG5ldyBiaXRzIGdvICovCisJUnhWICY9IH4oKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEp PDxvZmZzZXQpOworCS8qIE9SIGluIG5ldyBiaXRzICovCisJUnhWIHw9ICgoUnNWICYgKChmQ09O U1RMTCgxKTw8d2lkdGgpLTEpKSA8PCBvZmZzZXQpOworfSkKKworCitRNklOU04oUzJfdGFibGVp ZHhiLCJSeDMyPXRhYmxlaWR4YihSczMyLCN1NCwjUzYpOnJhdyIsCitBVFRSSUJTKEFfQVJDSFYy KSwgIkV4dHJhY3QgYW5kIGluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0 aD11aVY7CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVNpVjsKKyAgICAgICAgZkhJREUoaW50 KSBmaWVsZCA9IGZFWFRSQUNUVV9CSURJUihSc1Ysd2lkdGgsb2Zmc2V0KTsKKyAgICAgICAgZklO U0VSVF9CSVRTKFJ4Vix3aWR0aCwwLGZpZWxkKTsKK30pCisKK1E2SU5TTihTMl90YWJsZWlkeGgs IlJ4MzI9dGFibGVpZHhoKFJzMzIsI3U0LCNTNik6cmF3IiwKK0FUVFJJQlMoQV9BUkNIVjIpLCAi RXh0cmFjdCBhbmQgaW5zZXJ0IGJpdHMiLAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPXVp VjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9U2lWKzE7CisgICAgICAgIGZISURFKGludCkg ZmllbGQgPSBmRVhUUkFDVFVfQklESVIoUnNWLHdpZHRoLG9mZnNldCk7CisgICAgICAgIGZJTlNF UlRfQklUUyhSeFYsd2lkdGgsMSxmaWVsZCk7Cit9KQorCitRNklOU04oUzJfdGFibGVpZHh3LCJS eDMyPXRhYmxlaWR4dyhSczMyLCN1NCwjUzYpOnJhdyIsCitBVFRSSUJTKEFfQVJDSFYyKSwgIkV4 dHJhY3QgYW5kIGluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11aVY7 CisgICAgICAgIGZISURFKGludCkgb2Zmc2V0PVNpVisyOworICAgICAgICBmSElERShpbnQpIGZp ZWxkID0gZkVYVFJBQ1RVX0JJRElSKFJzVix3aWR0aCxvZmZzZXQpOworICAgICAgICBmSU5TRVJU X0JJVFMoUnhWLHdpZHRoLDIsZmllbGQpOworfSkKKworUTZJTlNOKFMyX3RhYmxlaWR4ZCwiUngz Mj10YWJsZWlkeGQoUnMzMiwjdTQsI1M2KTpyYXciLAorQVRUUklCUyhBX0FSQ0hWMiksICJFeHRy YWN0IGFuZCBpbnNlcnQgYml0cyIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlWOwor ICAgICAgICBmSElERShpbnQpIG9mZnNldD1TaVYrMzsKKyAgICAgICAgZkhJREUoaW50KSBmaWVs ZCA9IGZFWFRSQUNUVV9CSURJUihSc1Ysd2lkdGgsb2Zmc2V0KTsKKyAgICAgICAgZklOU0VSVF9C SVRTKFJ4Vix3aWR0aCwzLGZpZWxkKTsKK30pCisKK0RFRl9WMl9NQVBQSU5HKFMyX3RhYmxlaWR4 Yl9nb29kc3ludGF4LCJSeDMyPXRhYmxlaWR4YihSczMyLCN1NCwjVTUpIiwiUngzMj10YWJsZWlk eGIoUnMzMiwjdTQsI1U1KTpyYXciKQorREVGX1YyX01BUFBJTkcoUzJfdGFibGVpZHhoX2dvb2Rz eW50YXgsIlJ4MzI9dGFibGVpZHhoKFJzMzIsI3U0LCNVNSkiLCJSeDMyPXRhYmxlaWR4aChSczMy LCN1NCwjVTUtMSk6cmF3IikKK0RFRl9WMl9NQVBQSU5HKFMyX3RhYmxlaWR4d19nb29kc3ludGF4 LCJSeDMyPXRhYmxlaWR4dyhSczMyLCN1NCwjVTUpIiwiUngzMj10YWJsZWlkeHcoUnMzMiwjdTQs I1U1LTIpOnJhdyIpCitERUZfVjJfTUFQUElORyhTMl90YWJsZWlkeGRfZ29vZHN5bnRheCwiUngz Mj10YWJsZWlkeGQoUnMzMiwjdTQsI1U1KSIsIlJ4MzI9dGFibGVpZHhkKFJzMzIsI3U0LCNVNS0z KTpyYXciKQorCisKKworCisKK1E2SU5TTihBNF9iaXRzcGxpdGksIlJkZDMyPWJpdHNwbGl0KFJz MzIsI3U1KSIsCitBVFRSSUJTKCksICJTcGxpdCBhIGJpdGZpZWxkIGludG8gdHdvIHJlZ2lzdGVy cyIsCit7CisgICAgICAgIGZTRVRXT1JEKDEsUmRkViwoZkNBU1Q0XzR1KFJzVik+PnVpVikpOwor ICAgICAgICBmU0VUV09SRCgwLFJkZFYsZlpYVE4odWlWLDMyLFJzVikpOworfSkKKworUTZJTlNO KEE0X2JpdHNwbGl0LCJSZGQzMj1iaXRzcGxpdChSczMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIlNw bGl0IGEgYml0ZmllbGQgaW50byB0d28gcmVnaXN0ZXJzIiwKK3sKKwkJZkhJREUoc2l6ZTR1X3Qp IHNoYW10ID0gZlpYVE4oNSwzMixSdFYpOworICAgICAgICBmU0VUV09SRCgxLFJkZFYsKGZDQVNU NF80dShSc1YpPj5zaGFtdCkpOworICAgICAgICBmU0VUV09SRCgwLFJkZFYsZlpYVE4oc2hhbXQs MzIsUnNWKSk7Cit9KQorCisKKworCitRNklOU04oUzRfZXh0cmFjdCwiUmQzMj1leHRyYWN0KFJz MzIsI3U1LCNVNSkiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWduZWQgYml0ZmllbGQiLAorewor ICAgICAgICBmSElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9 VWlWOworCQlSZFYgPSBmU1hUTih3aWR0aCwzMiwoZkNBU1Q0XzR1KFJzVikgPj4gb2Zmc2V0KSk7 Cit9KQorCisKK1E2SU5TTihTMl9leHRyYWN0dSwiUmQzMj1leHRyYWN0dShSczMyLCN1NSwjVTUp IiwKK0FUVFJJQlMoKSwgIkV4dHJhY3QgdW5zaWduZWQgYml0ZmllbGQiLAoreworICAgICAgICBm SElERShpbnQpIHdpZHRoPXVpVjsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9VWlWOworCQlS ZFYgPSBmWlhUTih3aWR0aCwzMiwoZkNBU1Q0XzR1KFJzVikgPj4gb2Zmc2V0KSk7Cit9KQorCitR NklOU04oUzJfaW5zZXJ0cCwiUnh4MzI9aW5zZXJ0KFJzczMyLCN1NiwjVTYpIiwKK0FUVFJJQlMo KSwgIkluc2VydCBiaXRzIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11aVY7CisgICAg ICAJZkhJREUoaW50KSBvZmZzZXQ9VWlWOworCQkvKiBjbGVhciBiaXRzIGluIFJ4eCB3aGVyZSBu ZXcgYml0cyBnbyAqLworCQlSeHhWICY9IH4oKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEpPDxvZmZz ZXQpOworCQkvKiBPUiBpbiBuZXcgYml0cyAqLworCQlSeHhWIHw9ICgoUnNzViAmICgoZkNPTlNU TEwoMSk8PHdpZHRoKS0xKSkgPDwgb2Zmc2V0KTsKK30pCisKKworUTZJTlNOKFM0X2V4dHJhY3Rw LCJSZGQzMj1leHRyYWN0KFJzczMyLCN1NiwjVTYpIiwKK0FUVFJJQlMoKSwgIkV4dHJhY3Qgc2ln bmVkIGJpdGZpZWxkIiwKK3sKKyAgICAgICAgZkhJREUoaW50KSB3aWR0aD11aVY7CisgICAgICAg IGZISURFKGludCkgb2Zmc2V0PVVpVjsKKwlSZGRWID0gZlNYVE4od2lkdGgsNjQsKGZDQVNUOF84 dShSc3NWKSA+PiBvZmZzZXQpKTsKK30pCisKKworUTZJTlNOKFMyX2V4dHJhY3R1cCwiUmRkMzI9 ZXh0cmFjdHUoUnNzMzIsI3U2LCNVNikiLAorQVRUUklCUygpLCAiRXh0cmFjdCB1bnNpZ25lZCBi aXRmaWVsZCIsCit7CisgICAgICAgIGZISURFKGludCkgd2lkdGg9dWlWOworICAgICAgICBmSElE RShpbnQpIG9mZnNldD1VaVY7CisJUmRkViA9IGZaWFROKHdpZHRoLDY0LChmQ0FTVDhfOHUoUnNz VikgPj4gb2Zmc2V0KSk7Cit9KQorCisKKworCitRNklOU04oUzJfbWFzaywiUmQzMj1tYXNrKCN1 NSwjVTUpIiwKK0FUVFJJQlMoKSwgIkZvcm0gbWFzayBmcm9tIGltbWVkaWF0ZSIsCit7CisgICAg UmRWID0gKCgxPDx1aVYpLTEpIDw8IFVpVjsKK30pCisKKworCisKKworUTZJTlNOKFMyX2luc2Vy dF9ycCwiUngzMj1pbnNlcnQoUnMzMixSdHQzMikiLAorQVRUUklCUygpLCAiSW5zZXJ0IGJpdHMi LAoreworICAgICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEsUnR0 VikpKTsKKyAgICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQoMCxS dHRWKSkpOworCWZISURFKHNpemU4dV90KSBtYXNrID0gKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEp OworCWlmIChvZmZzZXQgPCAwKSB7CisJCVJ4ViA9IDA7CisJfSBlbHNlIHsKKwkJLyogY2xlYXIg Yml0cyBpbiBSeHggd2hlcmUgbmV3IGJpdHMgZ28gKi8KKwkJUnhWICY9IH4obWFzazw8b2Zmc2V0 KTsKKwkJLyogT1IgaW4gbmV3IGJpdHMgKi8KKwkJUnhWIHw9ICgoUnNWICYgbWFzaykgPDwgb2Zm c2V0KTsKKwl9Cit9KQorCisKK1E2SU5TTihTNF9leHRyYWN0X3JwLCJSZDMyPWV4dHJhY3QoUnMz MixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFjdCBzaWduZWQgYml0ZmllbGQiLAoreworICAg ICAgICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEsUnR0VikpKTsKKyAg ICAgICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQoMCxSdHRWKSkpOwor CVJkViA9IGZTWFROKHdpZHRoLDY0LGZCSURJUl9MU0hJRlRSKGZDQVNUNF84dShSc1YpLG9mZnNl dCw0XzgpKTsKK30pCisKKworCitRNklOU04oUzJfZXh0cmFjdHVfcnAsIlJkMzI9ZXh0cmFjdHUo UnMzMixSdHQzMikiLAorQVRUUklCUygpLCAiRXh0cmFjdCB1bnNpZ25lZCBiaXRmaWVsZCIsCit7 CisgICAgICAgIGZISURFKGludCkgd2lkdGg9ZlpYVE4oNiwzMiwoZkdFVFdPUkQoMSxSdHRWKSkp OworICAgICAgICBmSElERShpbnQpIG9mZnNldD1mU1hUTig3LDMyLChmR0VUV09SRCgwLFJ0dFYp KSk7CisJUmRWID0gZlpYVE4od2lkdGgsNjQsZkJJRElSX0xTSElGVFIoZkNBU1Q0Xzh1KFJzViks b2Zmc2V0LDRfOCkpOworfSkKKworUTZJTlNOKFMyX2luc2VydHBfcnAsIlJ4eDMyPWluc2VydChS c3MzMixSdHQzMikiLAorQVRUUklCUygpLCAiSW5zZXJ0IGJpdHMiLAoreworICAgICAgICBmSElE RShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEsUnR0VikpKTsKKyAgICAgICAgZkhJ REUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQoMCxSdHRWKSkpOworCWZISURFKHNp emU4dV90KSBtYXNrID0gKChmQ09OU1RMTCgxKTw8d2lkdGgpLTEpOworCWlmIChvZmZzZXQgPCAw KSB7CisJCVJ4eFYgPSAwOworCX0gZWxzZSB7CisJCS8qIGNsZWFyIGJpdHMgaW4gUnh4IHdoZXJl IG5ldyBiaXRzIGdvICovCisJCVJ4eFYgJj0gfihtYXNrPDxvZmZzZXQpOworCQkvKiBPUiBpbiBu ZXcgYml0cyAqLworCQlSeHhWIHw9ICgoUnNzViAmIG1hc2spIDw8IG9mZnNldCk7CisJfQorfSkK KworCitRNklOU04oUzRfZXh0cmFjdHBfcnAsIlJkZDMyPWV4dHJhY3QoUnNzMzIsUnR0MzIpIiwK K0FUVFJJQlMoKSwgIkV4dHJhY3Qgc2lnbmVkIGJpdGZpZWxkIiwKK3sKKyAgICAgICAgZkhJREUo aW50KSB3aWR0aD1mWlhUTig2LDMyLChmR0VUV09SRCgxLFJ0dFYpKSk7CisgICAgICAgIGZISURF KGludCkgb2Zmc2V0PWZTWFROKDcsMzIsKGZHRVRXT1JEKDAsUnR0VikpKTsKKwlSZGRWID0gZlNY VE4od2lkdGgsNjQsZkJJRElSX0xTSElGVFIoZkNBU1Q4Xzh1KFJzc1YpLG9mZnNldCw4XzgpKTsK K30pCisKKworUTZJTlNOKFMyX2V4dHJhY3R1cF9ycCwiUmRkMzI9ZXh0cmFjdHUoUnNzMzIsUnR0 MzIpIiwKK0FUVFJJQlMoKSwgIkV4dHJhY3QgdW5zaWduZWQgYml0ZmllbGQiLAoreworICAgICAg ICBmSElERShpbnQpIHdpZHRoPWZaWFROKDYsMzIsKGZHRVRXT1JEKDEsUnR0VikpKTsKKyAgICAg ICAgZkhJREUoaW50KSBvZmZzZXQ9ZlNYVE4oNywzMiwoZkdFVFdPUkQoMCxSdHRWKSkpOworCVJk ZFYgPSBmWlhUTih3aWR0aCw2NCxmQklESVJfTFNISUZUUihmQ0FTVDhfOHUoUnNzViksb2Zmc2V0 LDhfOCkpOworfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisvKiB0c3RiaXQvc2V0Yml0L2NscmJpdCAgICAgICAgICAgICAgICAgICAgICAgKi8K Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklO U04oUzJfdHN0Yml0X2ksIlBkND10c3RiaXQoUnMzMiwjdTUpIiwKK0FUVFJJQlMoKSwgIlRlc3Qg YSBiaXQiLAoreworCVBkViA9IGY4QklUU09GKChSc1YgJiAoMTw8dWlWKSkgIT0gMCk7Cit9KQor CitRNklOU04oUzRfbnRzdGJpdF9pLCJQZDQ9IXRzdGJpdChSczMyLCN1NSkiLAorQVRUUklCUygp LCAiVGVzdCBhIGJpdCIsCit7CisJUGRWID0gZjhCSVRTT0YoKFJzViAmICgxPDx1aVYpKSA9PSAw KTsKK30pCisKK1E2SU5TTihTMl9zZXRiaXRfaSwiUmQzMj1zZXRiaXQoUnMzMiwjdTUpIiwKK0FU VFJJQlMoKSwgIlNldCBhIGJpdCIsCit7CisJUmRWID0gKFJzViB8ICgxPDx1aVYpKTsKK30pCisK K1E2SU5TTihTMl90b2dnbGViaXRfaSwiUmQzMj10b2dnbGViaXQoUnMzMiwjdTUpIiwKK0FUVFJJ QlMoKSwgIlRvZ2dsZSBhIGJpdCIsCit7CisJUmRWID0gKFJzViBeICgxPDx1aVYpKTsKK30pCisK K1E2SU5TTihTMl9jbHJiaXRfaSwiUmQzMj1jbHJiaXQoUnMzMiwjdTUpIiwKK0FUVFJJQlMoKSwg IkNsZWFyIGEgYml0IiwKK3sKKwlSZFYgPSAoUnNWICYgKH4oMTw8dWlWKSkpOworfSkKKworCisK Ky8qIHVzaW5nIGEgcmVnaXN0ZXIgKi8KK1E2SU5TTihTMl90c3RiaXRfciwiUGQ0PXRzdGJpdChS czMyLFJ0MzIpIiwKK0FUVFJJQlMoKSwgIlRlc3QgYSBiaXQiLAoreworCVBkViA9IGY4QklUU09G KChmQ0FTVDRfOHUoUnNWKSAmIGZCSURJUl9MU0hJRlRMKDEsZlNYVE4oNywzMixSdFYpLDRfOCkp ICE9IDApOworfSkKKworUTZJTlNOKFM0X250c3RiaXRfciwiUGQ0PSF0c3RiaXQoUnMzMixSdDMy KSIsCitBVFRSSUJTKCksICJUZXN0IGEgYml0IiwKK3sKKwlQZFYgPSBmOEJJVFNPRigoZkNBU1Q0 Xzh1KFJzVikgJiBmQklESVJfTFNISUZUTCgxLGZTWFROKDcsMzIsUnRWKSw0XzgpKSA9PSAwKTsK K30pCisKK1E2SU5TTihTMl9zZXRiaXRfciwiUmQzMj1zZXRiaXQoUnMzMixSdDMyKSIsCitBVFRS SUJTKCksICJTZXQgYSBiaXQiLAoreworCVJkViA9IChSc1YgfCBmQklESVJfTFNISUZUTCgxLGZT WFROKDcsMzIsUnRWKSw0XzgpKTsKK30pCisKK1E2SU5TTihTMl90b2dnbGViaXRfciwiUmQzMj10 b2dnbGViaXQoUnMzMixSdDMyKSIsCitBVFRSSUJTKCksICJUb2dnbGUgYSBiaXQiLAoreworCVJk ViA9IChSc1YgXiBmQklESVJfTFNISUZUTCgxLGZTWFROKDcsMzIsUnRWKSw0XzgpKTsKK30pCisK K1E2SU5TTihTMl9jbHJiaXRfciwiUmQzMj1jbHJiaXQoUnMzMixSdDMyKSIsCitBVFRSSUJTKCks ICJDbGVhciBhIGJpdCIsCit7CisJUmRWID0gKFJzViAmICh+KGZCSURJUl9MU0hJRlRMKDEsZlNY VE4oNywzMixSdFYpLDRfOCkpKSk7Cit9KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyogdmVjdG9yIHNoaWZ0aW5nICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKi8KKworLyogSGFsZiBWZWN0b3IgSW1tZWRpYXRlIFNoaWZ0cyAqLworCitRNklOU04o UzJfYXNyX2lfdmgsIlJkZDMyPXZhc3JoKFJzczMyLCN1NCkiLEFUVFJJQlMoKSwKKwkiVmVjdG9y IEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAgICAgZkhJREUo aW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYs IChmR0VUSEFMRihpLFJzc1YpPj51aVYpKTsKKyAgICAgICAgfQorfSkKKworCitRNklOU04oUzJf bHNyX2lfdmgsIlJkZDMyPXZsc3JoKFJzczMyLCN1NCkiLEFUVFJJQlMoKSwKKwkiVmVjdG9yIExv Z2ljYWwgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7 KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJICBmU0VUSEFMRihpLFJkZFYsIChmR0VU VUhBTEYoaSxSc3NWKT4+dWlWKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl9hc2xfaV92 aCwiUmRkMzI9dmFzbGgoUnNzMzIsI3U0KSIsQVRUUklCUygpLAorCSJWZWN0b3IgQXJpdGhtZXRp YyBTaGlmdCBMZWZ0IGJ5IEltbWVkaWF0ZSIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAg ICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLCAoZkdFVEhBTEYo aSxSc3NWKTw8dWlWKSk7CisgICAgICAgIH0KK30pCisKKy8qIEhhbGYgVmVjdG9yIFJlZ2lzdGVy IFNoaWZ0cyAqLworCitRNklOU04oUzJfYXNyX3JfdmgsIlJkZDMyPXZhc3JoKFJzczMyLFJ0MzIp IixBVFRSSUJTKEFfTk9URV9PT0JWU0hJRlQpLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBS aWdodCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLCBmQklESVJfQVNISUZUUihmR0VU SEFMRihpLFJzc1YpLGZTWFROKDcsMzIsUnRWKSwyXzgpKTsKKyAgICAgICAgfQorfSkKKworUTZJ TlNOKFM1X2Fzcmh1Yl9ybmRfc2F0LCJSZDMyPXZhc3JodWIoUnNzMzIsI3U0KTpyYXciLCwKKwki VmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIHdpdGggUm91bmQsIFNh dHVyYXRlLCBhbmQgUGFjayIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTw0O2krKykgeworCQkJZlNFVEJZVEUoaSxSZFYsIGZTQVRVQiggKChmR0VUSEFMRihp LFJzc1YpID4+IHVpViApKzEpPj4xICApKTsKKyAgICAgICAgfQorfSkKKworREVGX1Y1X0NPTkRf TUFQUElORyhTNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4LCJSZDMyPXZhc3JodWIoUnNzMzIs I3U0KTpybmQ6c2F0IiwiI3U0PT0wIiwiUmQzMj12c2F0aHViKFJzczMyKSIsIlJkMzI9dmFzcmh1 YihSc3MzMiwjdTQtMSk6cmF3IikKKworUTZJTlNOKFM1X2Fzcmh1Yl9zYXQsIlJkMzI9dmFzcmh1 YihSc3MzMiwjdTQpOnNhdCIsLAorCSJWZWN0b3IgQXJpdGhtZXRpYyBTaGlmdCBSaWdodCBieSBJ bW1lZGlhdGUgd2l0aCBTYXR1cmF0ZSBhbmQgUGFjayIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCQkJZlNFVEJZVEUoaSxSZFYsIGZTQVRV QiggZkdFVEhBTEYoaSxSc3NWKSA+PiB1aVYgKSk7CisgICAgICAgIH0KK30pCisKKworCitRNklO U04oUzVfdmFzcmhybmQsIlJkZDMyPXZhc3JoKFJzczMyLCN1NCk6cmF3IiwsCisJIlZlY3RvciBB cml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5IEltbWVkaWF0ZSB3aXRoIFJvdW5kIiwKK3sKKyAgICAg ICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisJCQlmU0VUSEFM RihpLFJkZFYsICggKChmR0VUSEFMRihpLFJzc1YpID4+IHVpVikrMSk+PjEgICkpOworICAgICAg ICB9Cit9KQorCitERUZfVjVfQ09ORF9NQVBQSU5HKFM1X3Zhc3Jocm5kX2dvb2RzeW50YXgsIlJk ZDMyPXZhc3JoKFJzczMyLCN1NCk6cm5kIiwiI3U0PT0wIiwiUmRkMzI9UnNzMzIiLCJSZGQzMj12 YXNyaChSc3MzMiwjdTQtMSk6cmF3IikKKworCisKK1E2SU5TTihTMl9hc2xfcl92aCwiUmRkMzI9 dmFzbGgoUnNzMzIsUnQzMikiLEFUVFJJQlMoQV9OT1RFX09PQlZTSElGVCksCisJIlZlY3RvciBB cml0aG1ldGljIFNoaWZ0IExlZnQgYnkgUmVnaXN0ZXIiLAoreworICAgICAgICBmSElERShpbnQg aTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsKKwkgIGZTRVRIQUxGKGksUmRkViwgZkJJ RElSX0FTSElGVEwoZkdFVEhBTEYoaSxSc3NWKSxmU1hUTig3LDMyLFJ0ViksMl84KSk7CisgICAg ICAgIH0KK30pCisKKworCitRNklOU04oUzJfbHNyX3JfdmgsIlJkZDMyPXZsc3JoKFJzczMyLFJ0 MzIpIixBVFRSSUJTKEFfTk9URV9PT0JWU0hJRlQpLAorCSJWZWN0b3IgTG9naWNhbCBTaGlmdCBS aWdodCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTw0O2krKykgeworCSAgZlNFVEhBTEYoaSxSZGRWLCBmQklESVJfTFNISUZUUihmR0VU VUhBTEYoaSxSc3NWKSxmU1hUTig3LDMyLFJ0ViksMl84KSk7CisgICAgICAgIH0KK30pCisKKwor UTZJTlNOKFMyX2xzbF9yX3ZoLCJSZGQzMj12bHNsaChSc3MzMixSdDMyKSIsQVRUUklCUyhBX05P VEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIExvZ2ljYWwgU2hpZnQgTGVmdCBieSBSZWdpc3RlciIs Cit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgewor CSAgZlNFVEhBTEYoaSxSZGRWLCBmQklESVJfTFNISUZUTChmR0VUVUhBTEYoaSxSc3NWKSxmU1hU Tig3LDMyLFJ0ViksMl84KSk7CisgICAgICAgIH0KK30pCisKKworCisKKy8qIFdvcmQgVmVjdG9y IEltbWVkaWF0ZSBTaGlmdHMgKi8KKworUTZJTlNOKFMyX2Fzcl9pX3Z3LCJSZGQzMj12YXNydyhS c3MzMiwjdTUpIixBVFRSSUJTKCksCisJIlZlY3RvciBBcml0aG1ldGljIFNoaWZ0IFJpZ2h0IGJ5 IEltbWVkaWF0ZSIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7 aTwyO2krKykgeworCSAgZlNFVFdPUkQoaSxSZGRWLChmR0VUV09SRChpLFJzc1YpPj51aVYpKTsK KyAgICAgICAgfQorfSkKKworCisKK1E2SU5TTihTMl9hc3JfaV9zdndfdHJ1biwiUmQzMj12YXNy dyhSc3MzMiwjdTUpIixBVFRSSUJTKEFfQVJDSFYyKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hp ZnQgUmlnaHQgYnkgSW1tZWRpYXRlIHdpdGggVHJ1bmNhdGUgYW5kIFBhY2siLAoreworICAgICAg ICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxG KGksUmRWLGZHRVRIQUxGKDAsKGZHRVRXT1JEKGksUnNzVik+PnVpVikpKTsKKyAgICAgICAgfQor fSkKKworUTZJTlNOKFMyX2Fzcl9yX3N2d190cnVuLCJSZDMyPXZhc3J3KFJzczMyLFJ0MzIpIixB VFRSSUJTKEFfQVJDSFYyKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQgUmlnaHQgdHJ1bmNh dGUgYW5kIFBhY2siLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0w O2k8MjtpKyspIHsKKyAJICBmU0VUSEFMRihpLFJkVixmR0VUSEFMRigwLGZCSURJUl9BU0hJRlRS KGZHRVRXT1JEKGksUnNzViksZlNYVE4oNywzMixSdFYpLDRfOCkpKTsKKyAgICAgICAgfQorfSkK KworCitRNklOU04oUzJfbHNyX2lfdncsIlJkZDMyPXZsc3J3KFJzczMyLCN1NSkiLEFUVFJJQlMo KSwKKwkiVmVjdG9yIExvZ2ljYWwgU2hpZnQgUmlnaHQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAg ICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09S RChpLFJkZFYsKGZHRVRVV09SRChpLFJzc1YpPj51aVYpKTsKKyAgICAgICAgfQorfSkKKworUTZJ TlNOKFMyX2FzbF9pX3Z3LCJSZGQzMj12YXNsdyhSc3MzMiwjdTUpIixBVFRSSUJTKCksCisJIlZl Y3RvciBBcml0aG1ldGljIFNoaWZ0IExlZnQgYnkgSW1tZWRpYXRlIiwKK3sKKyAgICAgICAgZkhJ REUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisJICBmU0VUV09SRChpLFJk ZFYsKGZHRVRXT1JEKGksUnNzVik8PHVpVikpOworICAgICAgICB9Cit9KQorCisvKiBXb3JkIFZl Y3RvciBSZWdpc3RlciBTaGlmdHMgKi8KKworUTZJTlNOKFMyX2Fzcl9yX3Z3LCJSZGQzMj12YXNy dyhSc3MzMixSdDMyKSIsQVRUUklCUyhBX05PVEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIEFyaXRo bWV0aWMgU2hpZnQgUmlnaHQgYnkgUmVnaXN0ZXIiLAoreworICAgICAgICBmSElERShpbnQgaTsp CisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAJICBmU0VUV09SRChpLFJkZFYsIGZCSURJ Ul9BU0hJRlRSKGZHRVRXT1JEKGksUnNzViksZlNYVE4oNywzMixSdFYpLDRfOCkpOworICAgICAg ICB9Cit9KQorCisKKworUTZJTlNOKFMyX2FzbF9yX3Z3LCJSZGQzMj12YXNsdyhSc3MzMixSdDMy KSIsQVRUUklCUyhBX05PVEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIEFyaXRobWV0aWMgU2hpZnQg TGVmdCBieSBSZWdpc3RlciIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9y IChpPTA7aTwyO2krKykgeworIAkgIGZTRVRXT1JEKGksUmRkViwgZkJJRElSX0FTSElGVEwoZkdF VFdPUkQoaSxSc3NWKSxmU1hUTig3LDMyLFJ0ViksNF84KSk7CisgICAgICAgIH0KK30pCisKKwor UTZJTlNOKFMyX2xzcl9yX3Z3LCJSZGQzMj12bHNydyhSc3MzMixSdDMyKSIsQVRUUklCUyhBX05P VEVfT09CVlNISUZUKSwKKwkiVmVjdG9yIExvZ2ljYWwgU2hpZnQgUmlnaHQgYnkgUmVnaXN0ZXIi LAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsK KyAJICBmU0VUV09SRChpLFJkZFYsIGZCSURJUl9MU0hJRlRSKGZHRVRVV09SRChpLFJzc1YpLGZT WFROKDcsMzIsUnRWKSw0XzgpKTsKKyAgICAgICAgfQorfSkKKworCisKK1E2SU5TTihTMl9sc2xf cl92dywiUmRkMzI9dmxzbHcoUnNzMzIsUnQzMikiLEFUVFJJQlMoQV9OT1RFX09PQlZTSElGVCks CisJIlZlY3RvciBMb2dpY2FsIFNoaWZ0IExlZnQgYnkgUmVnaXN0ZXIiLAoreworICAgICAgICBm SElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKyAJICBmU0VUV09SRChp LFJkZFYsIGZCSURJUl9MU0hJRlRMKGZHRVRVV09SRChpLFJzc1YpLGZTWFROKDcsMzIsUnRWKSw0 XzgpKTsKKyAgICAgICAgfQorfSkKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFZlY3RvciBTWFQvWlhUL1NBVC9UUlVOL1JORFBB Q0sgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKworUTZJTlNOKFMyX3ZybmRwYWNrd2gsIlJkMzI9dnJuZHdoKFJzczMyKSIs QVRUUklCUygpLAorIlJvdW5kIGFuZCBQYWNrIHZlY3RvciBvZiB3b3JkcyB0byBIYWxmd29yZHMi LAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsK KwkgIGZTRVRIQUxGKGksUmRWLGZHRVRIQUxGKDEsKGZHRVRXT1JEKGksUnNzVikrMHgwODAwMCkp KTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3ZybmRwYWNrd2hzLCJSZDMyPXZybmR3aChS c3MzMik6c2F0IixBVFRSSUJTKCksCisiUm91bmQgYW5kIFBhY2sgdmVjdG9yIG9mIHdvcmRzIHRv IEhhbGZ3b3JkcyIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7 aTwyO2krKykgeworCSAgZlNFVEhBTEYoaSxSZFYsZkdFVEhBTEYoMSxmU0FUKGZHRVRXT1JEKGks UnNzVikrMHgwODAwMCkpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3ZzeHRiaCwiUmRk MzI9dnN4dGJoKFJzMzIpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJWZWN0b3Igc2lnbiBleHRlbmQg Ynl0ZSB0byBoYWxmIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9 MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRIQUxGKGksUmRkVixmR0VUQllURShpLFJzVikpOworICAg ICAgICB9Cit9KQorCitRNklOU04oUzJfdnp4dGJoLCJSZGQzMj12enh0YmgoUnMzMikiLEFUVFJJ QlMoKSwKKyJWZWN0b3IgemVybyBleHRlbmQgYnl0ZSB0byBoYWxmIiwKK3sKKyAgICAgICAgZkhJ REUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRIQUxGKGks UmRkVixmR0VUVUJZVEUoaSxSc1YpKTsKKyAgICAgICAgfQorfSkKKworUTZJTlNOKFMyX3ZzYXRo dWIsIlJkMzI9dnNhdGh1YihSc3MzMikiLEFUVFJJQlMoKSwKKyJWZWN0b3Igc2F0dXJhdGUgaGFs ZiB0byB1bnNpZ25lZCBieXRlIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBm b3IgKGk9MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRCWVRFKGksUmRWLGZTQVRVTig4LGZHRVRIQUxG KGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworCisKKworCitRNklOU04oUzJfc3ZzYXRodWIs IlJkMzI9dnNhdGh1YihSczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHNhdHVyYXRl IGhhbGYgdG8gdW5zaWduZWQgYnl0ZSIsCit7CisJZlNFVEJZVEUoMCxSZFYsZlNBVFVOKDgsZkdF VEhBTEYoMCxSc1YpKSk7CisgIAlmU0VUQllURSgxLFJkVixmU0FUVU4oOCxmR0VUSEFMRigxLFJz VikpKTsKKyAgCWZTRVRCWVRFKDIsUmRWLDApOworICAJZlNFVEJZVEUoMyxSZFYsMCk7Cit9KQor CitRNklOU04oUzJfc3ZzYXRoYiwiUmQzMj12c2F0aGIoUnMzMikiLEFUVFJJQlMoQV9BUkNIVjIp LAorIlZlY3RvciBzYXR1cmF0ZSBoYWxmIHRvIHNpZ25lZCBieXRlIiwKK3sKKwlmU0VUQllURSgw LFJkVixmU0FUTig4LGZHRVRIQUxGKDAsUnNWKSkpOworICAJZlNFVEJZVEUoMSxSZFYsZlNBVE4o OCxmR0VUSEFMRigxLFJzVikpKTsKKyAgCWZTRVRCWVRFKDIsUmRWLDApOworICAJZlNFVEJZVEUo MyxSZFYsMCk7Cit9KQorCisKK1E2SU5TTihTMl92c2F0aGIsIlJkMzI9dnNhdGhiKFJzczMyKSIs QVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9yIHNhdHVyYXRlIGhhbGYgdG8gc2lnbmVkIGJ5dGUi LAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtpKyspIHsK KyAgCSAgZlNFVEJZVEUoaSxSZFYsZlNBVE4oOCxmR0VUSEFMRihpLFJzc1YpKSk7CisgICAgICAg IH0KK30pCisKK1E2SU5TTihTMl92dHJ1bm9oYiwiUmQzMj12dHJ1bm9oYihSc3MzMikiLEFUVFJJ QlMoQV9BUkNIVjIpLAorIlZlY3RvciB0cnVuY2F0ZSBoYWxmIHRvIGJ5dGU6IHRha2UgaGlnaCIs Cit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgewor ICAJICBmU0VUQllURShpLFJkVixmR0VUQllURShpKjIrMSxSc3NWKSk7CisgICAgICAgIH0KK30p CisKK1E2SU5TTihTMl92dHJ1bmV3aCwiUmRkMzI9dnRydW5ld2goUnNzMzIsUnR0MzIpIixBVFRS SUJTKEFfQVJDSFYyKSwKKyJWZWN0b3IgdHJ1bmNhdGUgd29yZCB0byBoYWxmOiB0YWtlIGxvdyIs Cit7CisJZlNFVEhBTEYoMCxSZGRWLGZHRVRIQUxGKDAsUnR0VikpOworCWZTRVRIQUxGKDEsUmRk VixmR0VUSEFMRigyLFJ0dFYpKTsKKwlmU0VUSEFMRigyLFJkZFYsZkdFVEhBTEYoMCxSc3NWKSk7 CisJZlNFVEhBTEYoMyxSZGRWLGZHRVRIQUxGKDIsUnNzVikpOworfSkKKworUTZJTlNOKFMyX3Z0 cnVub3doLCJSZGQzMj12dHJ1bm93aChSc3MzMixSdHQzMikiLEFUVFJJQlMoQV9BUkNIVjIpLAor IlZlY3RvciB0cnVuY2F0ZSB3b3JkIHRvIGhhbGY6IHRha2UgaGlnaCIsCit7CisJZlNFVEhBTEYo MCxSZGRWLGZHRVRIQUxGKDEsUnR0VikpOworCWZTRVRIQUxGKDEsUmRkVixmR0VUSEFMRigzLFJ0 dFYpKTsKKwlmU0VUSEFMRigyLFJkZFYsZkdFVEhBTEYoMSxSc3NWKSk7CisJZlNFVEhBTEYoMyxS ZGRWLGZHRVRIQUxGKDMsUnNzVikpOworfSkKKworCitRNklOU04oUzJfdnRydW5laGIsIlJkMzI9 dnRydW5laGIoUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHRydW5jYXRlIGhhbGYgdG8gYnl0 ZTogdGFrZSBsb3ciLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0w O2k8NDtpKyspIHsKKyAgCSAgZlNFVEJZVEUoaSxSZFYsZkdFVEJZVEUoaSoyLFJzc1YpKTsKKyAg ICAgICAgfQorfSkKKworUTZJTlNOKFM2X3Z0cnVuZWhiX3BwcCwiUmRkMzI9dnRydW5laGIoUnNz MzIsUnR0MzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHRydW5jYXRlIGhhbGYgdG8gYnl0ZTogdGFr ZSBsb3ciLAoreworICAgICAgICBmSElERShpbnQgaTspCisgICAgICAgIGZvciAoaT0wO2k8NDtp KyspIHsKKyAgCSAgCQlmU0VUQllURShpLFJkZFYsZkdFVEJZVEUoaSoyLFJ0dFYpKTsKKwkJCWZT RVRCWVRFKGkrNCxSZGRWLGZHRVRCWVRFKGkqMixSc3NWKSk7CisgICAgICAgIH0KK30pCisKK1E2 SU5TTihTNl92dHJ1bm9oYl9wcHAsIlJkZDMyPXZ0cnVub2hiKFJzczMyLFJ0dDMyKSIsQVRUUklC UygpLAorIlZlY3RvciB0cnVuY2F0ZSBoYWxmIHRvIGJ5dGU6IHRha2UgaGlnaCIsCit7CisgICAg ICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICAJCWZT RVRCWVRFKGksUmRkVixmR0VUQllURShpKjIrMSxSdHRWKSk7CisgIAkgIAkJZlNFVEJZVEUoaSs0 LFJkZFYsZkdFVEJZVEUoaSoyKzEsUnNzVikpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJf dnN4dGh3LCJSZGQzMj12c3h0aHcoUnMzMikiLEFUVFJJQlMoKSwKKyJWZWN0b3Igc2lnbiBleHRl bmQgaGFsZiB0byB3b3JkIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3Ig KGk9MDtpPDI7aSsrKSB7CisgIAkgIGZTRVRXT1JEKGksUmRkVixmR0VUSEFMRihpLFJzVikpOwor ICAgICAgICB9Cit9KQorCitRNklOU04oUzJfdnp4dGh3LCJSZGQzMj12enh0aHcoUnMzMikiLEFU VFJJQlMoKSwKKyJWZWN0b3IgemVybyBleHRlbmQgaGFsZiB0byB3b3JkIiwKK3sKKyAgICAgICAg ZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7CisgIAkgIGZTRVRXT1JE KGksUmRkVixmR0VUVUhBTEYoaSxSc1YpKTsKKyAgICAgICAgfQorfSkKKworCitRNklOU04oUzJf dnNhdHdoLCJSZDMyPXZzYXR3aChSc3MzMikiLEFUVFJJQlMoKSwKKyJWZWN0b3Igc2F0dXJhdGUg d29yZCB0byBzaWduZWQgaGFsZiIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAg Zm9yIChpPTA7aTwyO2krKykgeworICAJICBmU0VUSEFMRihpLFJkVixmU0FUTigxNixmR0VUV09S RChpLFJzc1YpKSk7CisgICAgICAgIH0KK30pCisKK1E2SU5TTihTMl92c2F0d3VoLCJSZDMyPXZz YXR3dWgoUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHNhdHVyYXRlIHdvcmQgdG8gdW5zaWdu ZWQgaGFsZiIsCit7CisgICAgICAgIGZISURFKGludCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwy O2krKykgeworICAJICBmU0VUSEFMRihpLFJkVixmU0FUVU4oMTYsZkdFVFdPUkQoaSxSc3NWKSkp OworICAgICAgICB9Cit9KQorCisvKiBPdGhlciBtaXNjIGluc25zIG9mIHRoaXMgdHlwZSAqLwor CitRNklOU04oUzJfcGFja2hsLCJSZGQzMj1wYWNraGwoUnMzMixSdDMyKSIsQVRUUklCUygpLAor IlBhY2sgaGlnaCBoYWxmd29yZHMgYW5kIGxvdyBoYWxmd29yZHMgdG9nZXRoZXIiLAoreworICAg IGZTRVRIQUxGKDAsUmRkVixmR0VUSEFMRigwLFJ0VikpOworICAgIGZTRVRIQUxGKDEsUmRkVixm R0VUSEFMRigwLFJzVikpOworICAgIGZTRVRIQUxGKDIsUmRkVixmR0VUSEFMRigxLFJ0VikpOwor ICAgIGZTRVRIQUxGKDMsUmRkVixmR0VUSEFMRigxLFJzVikpOworfSkKKworUTZJTlNOKEEyX3N3 aXosIlJkMzI9c3dpeihSczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiRW5kaWFuIHN3YXAgdGhl IGJ5dGVzIG9mIFJzIiwKK3sKKyAgICBmU0VUQllURSgwLFJkVixmR0VUQllURSgzLFJzVikpOwor ICAgIGZTRVRCWVRFKDEsUmRWLGZHRVRCWVRFKDIsUnNWKSk7CisgICAgZlNFVEJZVEUoMixSZFYs ZkdFVEJZVEUoMSxSc1YpKTsKKyAgICBmU0VUQllURSgzLFJkVixmR0VUQllURSgwLFJzVikpOwor fSkKKworCisKKy8qIFZlY3RvciBTYXQgd2l0aG91dCBQYWNraW5nICovCitRNklOU04oUzJfdnNh dGh1Yl9ub3BhY2ssIlJkZDMyPXZzYXRodWIoUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9yIHNh dHVyYXRlIGhhbGYgdG8gdW5zaWduZWQgYnl0ZSIsCit7CisgICAgICAgIGZISURFKGludCBpOykK KyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworICAJICBmU0VUSEFMRihpLFJkZFYsZlNBVFVO KDgsZkdFVEhBTEYoaSxSc3NWKSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfdnNhdGhi X25vcGFjaywiUmRkMzI9dnNhdGhiKFJzczMyKSIsQVRUUklCUyhBX0FSQ0hWMiksCisiVmVjdG9y IHNhdHVyYXRlIGhhbGYgdG8gc2lnbmVkIGJ5dGUgd2l0aG91dCBwYWNrIiwKK3sKKyAgICAgICAg ZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsrKSB7CisgIAkgIGZTRVRIQUxG KGksUmRkVixmU0FUTig4LGZHRVRIQUxGKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworUTZJ TlNOKFMyX3ZzYXR3aF9ub3BhY2ssIlJkZDMyPXZzYXR3aChSc3MzMikiLEFUVFJJQlMoKSwKKyJW ZWN0b3Igc2F0dXJhdGUgd29yZCB0byBzaWduZWQgaGFsZiIsCit7CisgICAgICAgIGZISURFKGlu dCBpOykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworICAJICBmU0VUV09SRChpLFJkZFYs ZlNBVE4oMTYsZkdFVFdPUkQoaSxSc3NWKSkpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJf dnNhdHd1aF9ub3BhY2ssIlJkZDMyPXZzYXR3dWgoUnNzMzIpIixBVFRSSUJTKCksCisiVmVjdG9y IHNhdHVyYXRlIHdvcmQgdG8gdW5zaWduZWQgaGFsZiIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTwyO2krKykgeworICAJICBmU0VUV09SRChpLFJkZFYsZlNB VFVOKDE2LGZHRVRXT1JEKGksUnNzVikpKTsKKyAgICAgICAgfQorfSkKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFNodWZmbGUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisKKworUTZJTlNOKFMyX3NodWZmb2IsIlJkZDMyPXNo dWZmb2IoUnR0MzIsUnNzMzIpIixBVFRSSUJTKCksCisiU2h1ZmZsZSBoaWdoIGJ5dGVzIHRvZ2V0 aGVyIiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDQ7aSsr KSB7CisJICBmU0VUQllURShpKjIgICxSZGRWLGZHRVRCWVRFKGkqMisxLFJzc1YpKTsKKwkgIGZT RVRCWVRFKGkqMisxLFJkZFYsZkdFVEJZVEUoaSoyKzEsUnR0VikpOworICAgICAgICB9Cit9KQor CitRNklOU04oUzJfc2h1ZmZlYiwiUmRkMzI9c2h1ZmZlYihSc3MzMixSdHQzMikiLEFUVFJJQlMo KSwKKyJTaHVmZmxlIGxvdyBieXRlcyB0b2dldGhlciIsCit7CisgICAgICAgIGZISURFKGludCBp OykKKyAgICAgICAgZm9yIChpPTA7aTw0O2krKykgeworCSAgZlNFVEJZVEUoaSoyICAsUmRkVixm R0VUQllURShpKjIsUnR0VikpOworCSAgZlNFVEJZVEUoaSoyKzEsUmRkVixmR0VUQllURShpKjIs UnNzVikpOworICAgICAgICB9Cit9KQorCitRNklOU04oUzJfc2h1ZmZvaCwiUmRkMzI9c2h1ZmZv aChSdHQzMixSc3MzMikiLEFUVFJJQlMoKSwKKyJTaHVmZmxlIGhpZ2ggaGFsdmVzIHRvZ2V0aGVy IiwKK3sKKyAgICAgICAgZkhJREUoaW50IGk7KQorICAgICAgICBmb3IgKGk9MDtpPDI7aSsrKSB7 CisJICBmU0VUSEFMRihpKjIgICxSZGRWLGZHRVRIQUxGKGkqMisxLFJzc1YpKTsKKwkgIGZTRVRI QUxGKGkqMisxLFJkZFYsZkdFVEhBTEYoaSoyKzEsUnR0VikpOworICAgICAgICB9Cit9KQorCitR NklOU04oUzJfc2h1ZmZlaCwiUmRkMzI9c2h1ZmZlaChSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwK KyJTaHVmZmxlIGxvdyBoYWx2ZXMgdG9nZXRoZXIiLAoreworICAgICAgICBmSElERShpbnQgaTsp CisgICAgICAgIGZvciAoaT0wO2k8MjtpKyspIHsKKwkgIGZTRVRIQUxGKGkqMiAgLFJkZFYsZkdF VEhBTEYoaSoyLFJ0dFYpKTsKKwkgIGZTRVRIQUxGKGkqMisxLFJkZFYsZkdFVEhBTEYoaSoyLFJz c1YpKTsKKyAgICAgICAgfQorfSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy8qIFN0cmFuZ2UgYml0IGluc3RydWN0aW9ucyAgICAgICAgICAg ICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKK1E2SU5TTihTNV9wb3Bjb3VudHAsIlJkMzI9cG9wY291bnQoUnNzMzIpIixBVFRSSUJT KCksCisiUG9wdWxhdGlvbiBDb3VudCIsIHsgUmRWID0gZkNPVU5UT05FU184KFJzc1YpOyB9KQor CitRNklOU04oUzRfcGFyaXR5LCJSZDMyPXBhcml0eShSczMyLFJ0MzIpIiwsCisiUGFyaXR5IG9m IE1hc2tlZCBWYWx1ZSIsIHsgUmRWID0gMSZmQ09VTlRPTkVTXzQoUnNWICYgUnRWKTsgfSkKKwor UTZJTlNOKFMyX3Bhcml0eXAsIlJkMzI9cGFyaXR5KFJzczMyLFJ0dDMyKSIsQVRUUklCUyhBX0FS Q0hWMiksCisiUGFyaXR5IG9mIE1hc2tlZCBWYWx1ZSIsIHsgUmRWID0gMSZmQ09VTlRPTkVTXzgo UnNzViAmIFJ0dFYpOyB9KQorCitRNklOU04oUzJfbGZzcCwiUmRkMzI9bGZzKFJzczMyLFJ0dDMy KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiUGFyaXR5IG9mIE1hc2tlZCBWYWx1ZSIsIHsgUmRkViA9 IChmQ0FTVDh1KFJzc1YpID4+IDEpIHwgKGZDQVNUOHUoKDEmZkNPVU5UT05FU184KFJzc1YgJiBS dHRWKSkpPDw2MykgOyB9KQorCitRNklOU04oUzJfY2xibm9ybSwiUmQzMj1ub3JtYW10KFJzMzIp IixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb3VudCBsZWFkaW5nIHNpZ24gYml0cyAtIDEiLCB7IGlm IChSc1YgPT0gMCkgeyBSZFYgPSAwOyB9IGVsc2UgeyBSZFYgPSAoZk1BWChmQ0wxXzQoUnNWKSxm Q0wxXzQoflJzVikpKS0xO30gfSkKKworUTZJTlNOKFM0X2NsYmFkZGksIlJkMzI9YWRkKGNsYihS czMyKSwjczYpIixBVFRSSUJTKEFfQVJDSFYyKSwKKyJDb3VudCBsZWFkaW5nIHNpZ24gYml0cyB0 aGVuIGFkZCBzaWduZWQgbnVtYmVyIiwKK3sgUmRWID0gKGZNQVgoZkNMMV80KFJzViksZkNMMV80 KH5Sc1YpKSkrc2lWO30gKQorCitRNklOU04oUzRfY2xicG5vcm0sIlJkMzI9bm9ybWFtdChSc3Mz MikiLEFUVFJJQlMoQV9BUkNIVjIpLAorIkNvdW50IGxlYWRpbmcgc2lnbiBiaXRzIC0gMSIsIHsg aWYgKFJzc1YgPT0gMCkgeyBSZFYgPSAwOyB9CitlbHNlIHsgUmRWID0gKGZNQVgoZkNMMV84KFJz c1YpLGZDTDFfOCh+UnNzVikpKS0xO319KQorCitRNklOU04oUzRfY2xicGFkZGksIlJkMzI9YWRk KGNsYihSc3MzMiksI3M2KSIsQVRUUklCUyhBX0FSQ0hWMiksCisiQ291bnQgbGVhZGluZyBzaWdu IGJpdHMgdGhlbiBhZGQgc2lnbmVkIG51bWJlciIsCit7IFJkViA9IChmTUFYKGZDTDFfOChSc3NW KSxmQ0wxXzgoflJzc1YpKSkrc2lWO30pCisKKworCitRNklOU04oUzJfY2FiYWNkZWNiaW4sIlJk ZDMyPWRlY2JpbihSc3MzMixSdHQzMikiLEFUVFJJQlMoQV9BUkNIVjMsQV9OT1RFX0xBVEVQUkVE LEFfUkVTVFJJQ1RfTEFURVBSRUQpLCJDQUJBQyBkZWNvZGUgYmluIiwKK3sKKwlmSElERShzaXpl NHVfdCBzdGF0ZTspCisJZkhJREUoc2l6ZTR1X3QgdmFsTVBTOykKKwlmSElERShzaXplNHVfdCBi aXRwb3M7KQorCWZISURFKHNpemU0dV90IHJhbmdlOykKKwlmSElERShzaXplNHVfdCBvZmZzZXQ7 KQorCWZISURFKHNpemU0dV90IHJMUFM7KQorCWZISURFKHNpemU0dV90IHJNUFM7KQorCisJc3Rh dGUgPSAgZkVYVFJBQ1RVX1JBTkdFKCBmR0VUV09SRCgxLFJ0dFYpICw1LDApOworCXZhbE1QUyA9 IGZFWFRSQUNUVV9SQU5HRSggZkdFVFdPUkQoMSxSdHRWKSAsOCw4KTsKKwliaXRwb3MgPSBmRVhU UkFDVFVfUkFOR0UoIGZHRVRXT1JEKDAsUnR0VikgLDQsMCk7CisgICAgICAgIHJhbmdlID0gIGZH RVRXT1JEKDAsUnNzVik7CisgICAgICAgIG9mZnNldCA9IGZHRVRXT1JEKDEsUnNzVik7CisKKyAg ICAgICAgLyogY2FsY3VsYXRlIHJMUFMgKi8KKyAgICAgICAgcmFuZ2UgPDw9IGJpdHBvczsKKyAg ICAgICAgb2Zmc2V0IDw8PSBiaXRwb3M7CisgICAgICAgIHJMUFMgPSByTFBTX3RhYmxlXzY0eDRb c3RhdGVdWyAocmFuZ2UgPj4yOSkmM107CisgICAgICAgIHJMUFMgID0gckxQUyA8PCAyMzsgICAv KiBsZWZ0IGFsaWduZWQgKi8KKworICAgICAgICAvKiBjYWxjdWxhdGUgck1QUyAqLworICAgICAg ICByTVBTPSAocmFuZ2UmMHhmZjgwMDAwMCkgLSByTFBTOworCisgICAgICAgIC8qIG1vc3QgcHJv YmFibGUgcmVnaW9uICovCisgICAgICAgIGlmIChvZmZzZXQgPCByTVBTKSB7CisgICAgICAgICAg ICBSZGRWID0gQUNfbmV4dF9zdGF0ZV9NUFNfNjRbc3RhdGVdOworICAgICAgICAgICAgZklOU0VS VF9SQU5HRShSZGRWLDgsOCx2YWxNUFMpOworICAgICAgICAgICAgZklOU0VSVF9SQU5HRShSZGRW LDMxLDIzLChyTVBTPj4yMykpOworICAgICAgICAgICAgZlNFVFdPUkQoMSxSZGRWLG9mZnNldCk7 CisgICAgICAgICAgICBmV1JJVEVfUDAodmFsTVBTKTsKKworCisgICAgICAgIH0KKyAgICAgICAg LyogbGVhc3QgcHJvYmFibGUgcmVnaW9uICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg UmRkViA9IEFDX25leHRfc3RhdGVfTFBTXzY0W3N0YXRlXTsKKyAgICAgICAgICAgIGZJTlNFUlRf UkFOR0UoUmRkViw4LDgsKCghc3RhdGUpPygxLXZhbE1QUyk6KHZhbE1QUykpKTsKKyAgICAgICAg ICAgIGZJTlNFUlRfUkFOR0UoUmRkViwzMSwyMywockxQUz4+MjMpKTsKKyAgICAgICAgICAgIGZT RVRXT1JEKDEsUmRkViwob2Zmc2V0LXJNUFMpKTsKKyAgICAgICAgICAgIGZXUklURV9QMCgodmFs TVBTXjEpKTsKKyAgICAgICAgfQorICAgICAgICBmSElERShNQVJLX0xBVEVfUFJFRF9XUklURSgw KSkKK30pCisKKworCisKK1E2SU5TTihTMl9jYWJhY2VuY2JpbiwiUmRkMzI9ZW5jYmluKFJzczMy LFJ0dDMyLFB1NCkiLEFUVFJJQlMoQV9GQUtFSU5TTiksIkNBQkFDIGVuY29kZSBiaW4iLAorewor ICAgIGZQUkVEVVNFX1RJTUlORygpOworCWZISURFKHNpemU0dV90IHN0YXRlOykKKwlmSElERShz aXplNHVfdCB2YWxNUFM7KQorCWZISURFKHNpemU0dV90IGJpdHBvczspCisJZkhJREUoc2l6ZTR1 X3QgcmFuZ2U7KQorCWZISURFKHNpemU0dV90IGxvdzspCisJZkhJREUoc2l6ZTR1X3QgckxQUzsp CisJZkhJREUoc2l6ZTR1X3Qgck1QUzspCisJZkhJREUoc2l6ZTR1X3QgYmluOykKKworCXN0YXRl ID0gIGZFWFRSQUNUVV9SQU5HRSggZkdFVFdPUkQoMSxSdHRWKSAsNSwwKTsKKwl2YWxNUFMgPSBm RVhUUkFDVFVfUkFOR0UoIGZHRVRXT1JEKDEsUnR0VikgLDgsOCk7CisJYml0cG9zID0gZkVYVFJB Q1RVX1JBTkdFKCBmR0VUV09SRCgwLFJ0dFYpICw0LDApOworCXJhbmdlID0gIGZHRVRXT1JEKDAs UnNzVik7CisJbG93ID0gZkdFVFdPUkQoMSxSc3NWKTsKKwliaW4gPSBmTFNCT0xEKFB1Vik7CisK KwkvKiBTdHJpcCBvZiBNU0IgemVyb3MgKi8KKwlyYW5nZSA8PD0gYml0cG9zOworCS8qIE1hc2sg b2ZmIGxvdyBiaXRzICovCisJcmFuZ2UgJj0gMHhGRjgwMDAwMFU7CisKKyAgICAgICAgLyogY2Fs Y3VsYXRlIHJMUFMgKi8KKyAgICAgICAgckxQUyA9IHJMUFNfdGFibGVfNjR4NFtzdGF0ZV1bKHJh bmdlPj4yOSkmM107CisgICAgICAgIHJMUFMgID0gckxQUyA8PCAyMzsgICAvKiBsZWZ0IGFsaWdu ZWQgKi8KKworCS8qIENhbGN1bGF0ZSByTVBTICovCisJck1QUyA9IHJhbmdlIC0gckxQUzsKKwor ICAgICAgICAvKiBtb3N0IHByb2JhYmxlIHJlZ2lvbiAqLworICAgICAgICBpZiAoYmluID09IHZh bE1QUykgeworICAgICAgICAgICAgUmRkViA9IEFDX25leHRfc3RhdGVfTVBTXzY0W3N0YXRlXTsK KyAgICAgICAgICAgIGZJTlNFUlRfUkFOR0UoUmRkViw4LDgsdmFsTVBTKTsKKyAgICAgICAgICAg IGZJTlNFUlRfUkFOR0UoUmRkViwzMSwyMywock1QUz4+MjMpKTsKKyAgICAgICAgICAgIGZTRVRX T1JEKDEsUmRkVixsb3cpOworICAgICAgICB9CisgICAgICAgIC8qIGxlYXN0IHByb2JhYmxlIHJl Z2lvbiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJkZFYgPSBBQ19uZXh0X3N0YXRl X0xQU182NFtzdGF0ZV07CisgICAgICAgICAgICBmSU5TRVJUX1JBTkdFKFJkZFYsOCw4LCgoIXN0 YXRlKT8oMS12YWxNUFMpOih2YWxNUFMpKSk7CisgICAgICAgICAgICBmSU5TRVJUX1JBTkdFKFJk ZFYsMzEsMjMsKHJMUFM+PjIzKSk7CisgICAgICAgICAgICBmU0VUV09SRCgxLFJkZFYsKGxvdyso ck1QUyA+PiBiaXRwb3MpKSk7CisgICAgICAgIH0KK30pCisKKworCisKK1E2SU5TTihTMl9jbGIs IlJkMzI9Y2xiKFJzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9 IGZNQVgoZkNMMV80KFJzViksZkNMMV80KH5Sc1YpKTt9KQorCisKK1E2SU5TTihTMl9jbDAsIlJk MzI9Y2wwKFJzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9IGZD TDFfNCh+UnNWKTt9KQorCitRNklOU04oUzJfY2wxLCJSZDMyPWNsMShSczMyKSIsQVRUUklCUygp LAorIkNvdW50IGxlYWRpbmcgYml0cyIsIHtSZFYgPSBmQ0wxXzQoUnNWKTt9KQorCitRNklOU04o UzJfY2xicCwiUmQzMj1jbGIoUnNzMzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRz Iiwge1JkViA9IGZNQVgoZkNMMV84KFJzc1YpLGZDTDFfOCh+UnNzVikpO30pCisKK1E2SU5TTihT Ml9jbDBwLCJSZDMyPWNsMChSc3MzMikiLEFUVFJJQlMoKSwKKyJDb3VudCBsZWFkaW5nIGJpdHMi LCB7UmRWID0gZkNMMV84KH5Sc3NWKTt9KQorCitRNklOU04oUzJfY2wxcCwiUmQzMj1jbDEoUnNz MzIpIixBVFRSSUJTKCksCisiQ291bnQgbGVhZGluZyBiaXRzIiwge1JkViA9IGZDTDFfOChSc3NW KTt9KQorCisKKworCitRNklOU04oUzJfYnJldiwJIlJkMzI9YnJldihSczMyKSIsICAgQVRUUklC UyhBX0FSQ0hWMiksICJCaXQgUmV2ZXJzZSIse1JkViA9IGZCUkVWXzQoUnNWKTt9KQorUTZJTlNO KFMyX2JyZXZwLCJSZGQzMj1icmV2KFJzczMyKSIsIEFUVFJJQlMoKSwgIkJpdCBSZXZlcnNlIix7 UmRkViA9IGZCUkVWXzgoUnNzVik7fSkKK1E2SU5TTihTMl9jdDAsICAiUmQzMj1jdDAoUnMzMiki LCAgICBBVFRSSUJTKEFfQVJDSFYyKSwgIkNvdW50IFRyYWlsaW5nIix7UmRWID0gZkNMMV80KH5m QlJFVl80KFJzVikpO30pCitRNklOU04oUzJfY3QxLCAgIlJkMzI9Y3QxKFJzMzIpIiwgICAgQVRU UklCUyhBX0FSQ0hWMiksICJDb3VudCBUcmFpbGluZyIse1JkViA9IGZDTDFfNChmQlJFVl80KFJz VikpO30pCitRNklOU04oUzJfY3QwcCwgIlJkMzI9Y3QwKFJzczMyKSIsICAgQVRUUklCUygpLCAi Q291bnQgVHJhaWxpbmciLHtSZFYgPSBmQ0wxXzgofmZCUkVWXzgoUnNzVikpO30pCitRNklOU04o UzJfY3QxcCwgIlJkMzI9Y3QxKFJzczMyKSIsICAgQVRUUklCUygpLCAiQ291bnQgVHJhaWxpbmci LHtSZFYgPSBmQ0wxXzgoZkJSRVZfOChSc3NWKSk7fSkKKworCitRNklOU04oUzJfaW50ZXJsZWF2 ZSwiUmRkMzI9aW50ZXJsZWF2ZShSc3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbnRlcmxlYXZl IGJpdHMiLAore1JkZFYgPSBmSU5URVJMRUFWRShmR0VUV09SRCgxLFJzc1YpLGZHRVRXT1JEKDAs UnNzVikpO30pCisKK1E2SU5TTihTMl9kZWludGVybGVhdmUsIlJkZDMyPWRlaW50ZXJsZWF2ZShS c3MzMikiLEFUVFJJQlMoQV9BUkNIVjIpLCJJbnRlcmxlYXZlIGJpdHMiLAore1JkZFYgPSBmREVJ TlRFUkxFQVZFKFJzc1YpO30pCisKKworCisKK1E2SU5TTihTNl91c2VyaW5zbiwiUnh4MzI9dXNl cmluc24oUnNzMzIsUnR0MzIsI3U3KSIsQVRUUklCUyhBX0ZBS0VJTlNOKSwKKyJVc2VyIERlZmlu ZWQgSW5zdHJ1Y3Rpb24iLAoreworCWlmICh0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPm9wdGlvbnMt PnVzZXJpbnNuX2NhbGxiYWNrKSB7CisgICAgICBSeHhWID0gdGhyZWFkLT5wcm9jZXNzb3JfcHRy LT5vcHRpb25zLT51c2VyaW5zbl9jYWxsYmFjaygKKwkgICAgICB0aHJlYWQtPnN5c3RlbV9wdHIs dGhyZWFkLT5wcm9jZXNzb3JfcHRyLAorCSAgICAgIHRocmVhZC0+dGhyZWFkSWQsUnNzVixSdHRW LFJ4eFYsdWlWKTsKKyAgICB9IGVsc2UgeworCQl3YXJuKCJVc2VyIGluc3RydWN0aW9uIGVuY291 bnRlcmVkIGJ1dCBubyBjYWxsYmFjayEiKTsKKwl9CisKK30pCisKKworCisKKworCisKZGlmZiAt LWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N1Ymluc25zLmlkZWYgYi90YXJnZXQvaGV4 YWdvbi9pbXBvcnRlZC9zdWJpbnNucy5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQxY2Q4MWYKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRl ZC9zdWJpbnNucy5pZGVmCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogIENvcHlyaWdodCAoYykg MjAxOSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk LgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworLyoK KyAqIHN1Yi1pbnN0cnVjdGlvbnMKKyAqLworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor LyogICAgICAgICAgICAgICAgICAgICAgIEEtdHlwZSBzdWJpbnNucyAgICAgICAgICAgICAgICAg ICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oU0ExX2FkZGksICAg ICAiUngxNj1hZGQoUngxNiwjczcpIiwgICAgQVRUUklCUyhBX1NVQklOU04pLCJBZGQiLCAgICAg ICAgeyBmSU1NRVhUKHNpVik7IFJ4Vj1SeFYrc2lWO30pCitRNklOU04oU0ExX3RmciwgICAgICAi UmQxNj1SczE2IiwgICAgICAgICAgICAgQVRUUklCUyhBX1NVQklOU04pLCJUZnIiLCAgICAgICAg eyBSZFY9UnNWO30pCitRNklOU04oU0ExX3NldGksICAgICAiUmQxNj0jdTYiLCAgICAgICAgICAg ICAgQVRUUklCUyhBX1NVQklOU04pLCJTZXQgaW1tZWQiLCAgeyBmSU1NRVhUKHVpVik7IFJkVj11 aVY7fSkKK1E2SU5TTihTQTFfc2V0aW4xLCAgICJSZDE2PSMtMSIsICAgICAgICAgICAgICBBVFRS SUJTKEFfU1VCSU5TTiksIlNldCB0byAtMSIsICB7IFJkVj0tMTt9KQorUTZJTlNOKFNBMV9jbHJ0 bmV3LCAgImlmIChwMC5uZXcpIFJkMTY9IzAiLCAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiY2xlYXIg aWYgdHJ1ZSIsIHsgaWYgKGZMU0JORVcwKSB7UmRWPTA7fSBlbHNlIHtDQU5DRUw7fSB9KQorUTZJ TlNOKFNBMV9jbHJmbmV3LCAgImlmICghcDAubmV3KSBSZDE2PSMwIiwgIEFUVFJJQlMoQV9TVUJJ TlNOKSwiY2xlYXIgaWYgZmFsc2UiLHsgaWYgKGZMU0JORVcwTk9UKSB7UmRWPTA7fSBlbHNlIHtD QU5DRUw7fSB9KQorUTZJTlNOKFNBMV9jbHJ0LCAgICAgImlmIChwMCkgUmQxNj0jMCIsICAgICAg IEFUVFJJQlMoQV9TVUJJTlNOKSwiY2xlYXIgaWYgdHJ1ZSIsIHsgaWYgKGZMU0JPTEQoZlJFQURf UDAoKSkpIHtSZFY9MDt9IGVsc2Uge0NBTkNFTDt9IH0pCitRNklOU04oU0ExX2NscmYsICAgICAi aWYgKCFwMCkgUmQxNj0jMCIsICAgICAgQVRUUklCUyhBX1NVQklOU04pLCJjbGVhciBpZiBmYWxz ZSIseyBpZiAoZkxTQk9MRE5PVChmUkVBRF9QMCgpKSkge1JkVj0wO30gZWxzZSB7Q0FOQ0VMO30g fSkKKworUTZJTlNOKFNBMV9hZGRzcCwgICAgIlJkMTY9YWRkKHIyOSwjdTY6MikiLCAgIEFUVFJJ QlMoQV9TVUJJTlNOKSwiQWRkIiwgICAgICAgIHsgUmRWPWZSRUFEX1NQKCkrdWlWOyB9KQorUTZJ TlNOKFNBMV9pbmMsICAgICAgIlJkMTY9YWRkKFJzMTYsIzEpIiwgICAgIEFUVFJJQlMoQV9TVUJJ TlNOKSwiSW5jIiwgICAgICAgIHsgUmRWPVJzVisxO30pCitRNklOU04oU0ExX2RlYywgICAgICAi UmQxNj1hZGQoUnMxNiwjLTEpIiwgICAgQVRUUklCUyhBX1NVQklOU04pLCJEZWMiLCAgICAgICAg eyBSZFY9UnNWLTE7fSkKK1E2SU5TTihTQTFfYWRkcngsICAgICJSeDE2PWFkZChSeDE2LFJzMTYp IiwgICBBVFRSSUJTKEFfU1VCSU5TTixBX0NPTU1VVEVTKSwiQWRkIiwgICAgICAgIHsgUnhWPVJ4 VitSc1Y7IH0pCitRNklOU04oU0ExX3p4dGIsICAgICAiUmQxNj1hbmQoUnMxNiwjMjU1KSIsICAg QVRUUklCUyhBX1NVQklOU04pLCJaeHRiIiwgICAgICAgeyBSZFY9IGZaWFROKDgsMzIsUnNWKTt9 KQorUTZJTlNOKFNBMV9hbmQxLCAgICAgIlJkMTY9YW5kKFJzMTYsIzEpIiwgICAgIEFUVFJJQlMo QV9TVUJJTlNOKSwiQW5kICMxIiwgICAgIHsgUmRWPSBSc1YmMTt9KQorUTZJTlNOKFNBMV9zeHRi LCAgICAgIlJkMTY9c3h0YihSczE2KSIsICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiU3h0YiIs ICAgICAgIHsgUmRWPSBmU1hUTig4LDMyLFJzVik7fSkKK1E2SU5TTihTQTFfenh0aCwgICAgICJS ZDE2PXp4dGgoUnMxNikiLCAgICAgICBBVFRSSUJTKEFfU1VCSU5TTiksIlp4dGgiLCAgICAgICB7 IFJkVj0gZlpYVE4oMTYsMzIsUnNWKTt9KQorUTZJTlNOKFNBMV9zeHRoLCAgICAgIlJkMTY9c3h0 aChSczE2KSIsICAgICAgIEFUVFJJQlMoQV9TVUJJTlNOKSwiU3h0aCIsICAgICAgIHsgUmRWPSBm U1hUTigxNiwzMixSc1YpO30pCitRNklOU04oU0ExX2NvbWJpbmV6ciwiUmRkOD1jb21iaW5lKCMw LFJzMTYpIiwgQVRUUklCUyhBX1NVQklOU04sQV9ST1BTXzIpLCJDb21iaW5lcyIsICAgeyBmU0VU V09SRCgwLFJkZFYsUnNWKTsgZlNFVFdPUkQoMSxSZGRWLDApOyB9KQorUTZJTlNOKFNBMV9jb21i aW5lcnosIlJkZDg9Y29tYmluZShSczE2LCMwKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18y KSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLDApOyBmU0VUV09SRCgxLFJkZFYsUnNW KTsgfSkKK1E2SU5TTihTQTFfY29tYmluZTBpLCJSZGQ4PWNvbWJpbmUoIzAsI3UyKSIsIEFUVFJJ QlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLHVp Vik7IGZTRVRXT1JEKDEsUmRkViwwKTsgfSkKK1E2SU5TTihTQTFfY29tYmluZTFpLCJSZGQ4PWNv bWJpbmUoIzEsI3UyKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAg IHsgZlNFVFdPUkQoMCxSZGRWLHVpVik7IGZTRVRXT1JEKDEsUmRkViwxKTsgfSkKK1E2SU5TTihT QTFfY29tYmluZTJpLCJSZGQ4PWNvbWJpbmUoIzIsI3UyKSIsIEFUVFJJQlMoQV9TVUJJTlNOLEFf Uk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxSZGRWLHVpVik7IGZTRVRXT1JEKDEs UmRkViwyKTsgfSkKK1E2SU5TTihTQTFfY29tYmluZTNpLCJSZGQ4PWNvbWJpbmUoIzMsI3UyKSIs IEFUVFJJQlMoQV9TVUJJTlNOLEFfUk9QU18yKSwiQ29tYmluZXMiLCAgIHsgZlNFVFdPUkQoMCxS ZGRWLHVpVik7IGZTRVRXT1JEKDEsUmRkViwzKTsgfSkKK1E2SU5TTihTQTFfY21wZXFpLCAgICJw MD1jbXAuZXEoUnMxNiwjdTIpIiwgICBBVFRSSUJTKEFfU1VCSU5TTiksIkNvbXBhcmVJbW1lZCIs e2ZXUklURV9QMChmOEJJVFNPRihSc1Y9PXVpVikpO30pCisKKworCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8q ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBMZDEvMiBzdWJpbnNucyAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUTZJTlNOKFNM MV9sb2FkcmlfaW8sICAiUmQxNj1tZW13KFJzMTYrI3U0OjIpIiwgQVRUUklCUyhBX01FTVNJWkVf NEIsQV9MT0FELEFfU1VCSU5TTiksImxvYWQgd29yZCIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FE KDEsNCx1LEVBLFJkVik7fSkKK1E2SU5TTihTTDFfbG9hZHJ1Yl9pbywgIlJkMTY9bWVtdWIoUnMx NisjdTQ6MCkiLEFUVFJJQlMoQV9NRU1TSVpFXzFCLEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIGJ5 dGUiLCB7ZkVBX1JJKFJzVix1aVYpOyBmTE9BRCgxLDEsdSxFQSxSZFYpO30pCisKK1E2SU5TTihT TDJfbG9hZHJoX2lvLCAgIlJkMTY9bWVtaChSczE2KyN1MzoxKSIsIEFUVFJJQlMoQV9NRU1TSVpF XzJCLEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIGhhbGYiLCB7ZkVBX1JJKFJzVix1aVYpOyBmTE9B RCgxLDIscyxFQSxSZFYpO30pCitRNklOU04oU0wyX2xvYWRydWhfaW8sICJSZDE2PW1lbXVoKFJz MTYrI3UzOjEpIixBVFRSSUJTKEFfTUVNU0laRV8yQixBX0xPQUQsQV9TVUJJTlNOKSwibG9hZCBo YWxmIiwge2ZFQV9SSShSc1YsdWlWKTsgZkxPQUQoMSwyLHUsRUEsUmRWKTt9KQorUTZJTlNOKFNM Ml9sb2FkcmJfaW8sICAiUmQxNj1tZW1iKFJzMTYrI3UzOjApIiwgQVRUUklCUyhBX01FTVNJWkVf MUIsQV9MT0FELEFfU1VCSU5TTiksImxvYWQgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7IGZMT0FE KDEsMSxzLEVBLFJkVik7fSkKK1E2SU5TTihTTDJfbG9hZHJpX3NwLCAgIlJkMTY9bWVtdyhyMjkr I3U1OjIpIiwgIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfTE9BRCxBX1NVQklOU04pLCJsb2FkIHdv cmQiLCB7ZkVBX1JJKGZSRUFEX1NQKCksdWlWKTsgZkxPQUQoMSw0LHUsRUEsUmRWKTt9KQorUTZJ TlNOKFNMMl9sb2FkcmRfc3AsICAiUmRkOD1tZW1kKHIyOSsjdTU6MykiLCBBVFRSSUJTKEFfTUVN U0laRV84QixBX0xPQUQsQV9TVUJJTlNOKSwibG9hZCBkd29yZCIse2ZFQV9SSShmUkVBRF9TUCgp LHVpVik7IGZMT0FEKDEsOCx1LEVBLFJkZFYpO30pCisKK1E2SU5TTihTTDJfZGVhbGxvY2ZyYW1l LCJkZWFsbG9jZnJhbWUiLCBBVFRSSUJTKEFfU1VCSU5TTixBX01FTVNJWkVfOEIsQV9MT0FELEFf REVBTExPQ0ZSQU1FKSwgIkRlYWxsb2NhdGUgc3RhY2sgZnJhbWUiLAoreyBmSElERShzaXplOHVf dCB0bXA7KSBmRUFfUkVHKGZSRUFEX0ZQKCkpOworCWZMT0FEKDEsOCx1LEVBLHRtcCk7CisJdG1w ID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsKKwlmV1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsK KwlmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsKKwlmV1JJVEVfU1AoRUErOCk7IH0pCisKK1E2 SU5TTihTTDJfcmV0dXJuLCJkZWFsbG9jX3JldHVybiIsIEFUVFJJQlMoQV9KSU5ESVIsQV9TVUJJ TlNOLEFfUk9QU18yLEFfTUVNU0laRV84QixBX0xPQUQsQV9SRVRVUk4sQV9SRVNUUklDVF9TTE9U ME9OTFksQV9SRVRfVFlQRSxBX0RFQUxMT0NSRVQpLCAiRGVhbGxvY2F0ZSBzdGFjayBmcmFtZSBh bmQgcmV0dXJuIiwKK3sgZkhJREUoc2l6ZTh1X3QgdG1wOykgZkVBX1JFRyhmUkVBRF9GUCgpKTsK KwlmTE9BRCgxLDgsdSxFQSx0bXApOworCXRtcCA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7CisJ ZldSSVRFX0xSKGZHRVRXT1JEKDEsdG1wKSk7CisJZldSSVRFX0ZQKGZHRVRXT1JEKDAsdG1wKSk7 CisJZldSSVRFX1NQKEVBKzgpOworICAgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQoMSx0bXApLENP Rl9UWVBFX0pVTVBSKTt9KQorCitRNklOU04oU0wyX3JldHVybl90LCJpZiAocDApIGRlYWxsb2Nf cmV0dXJuIiwgQVRUUklCUyhBX0pJTkRJUk9MRCxBX1NVQklOU04sQV9ST1BTXzIsQV9NRU1TSVpF XzhCLEFfTE9BRCxBX1JFVFVSTixBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJF RF9CSVRfNCksICJEZWFsbG9jYXRlIHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShz aXplOHVfdCB0bXA7KTsgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk9MRChmUkVBRF9QMCgp KSwsIFNQRUNVTEFURV9OT1RfVEFLRU4sNCwwKTsgZkVBX1JFRyhmUkVBRF9GUCgpKTsgaWYgKGZM U0JPTEQoZlJFQURfUDAoKSkpIHsgZkxPQUQoMSw4LHUsRUEsdG1wKTsgdG1wID0gZkZSQU1FX1VO U0NSQU1CTEUodG1wKTsgZldSSVRFX0xSKGZHRVRXT1JEKDEsdG1wKSk7IGZXUklURV9GUChmR0VU V09SRCgwLHRtcCkpOyBmV1JJVEVfU1AoRUErOCk7CisgIGZKVU1QUihSRUdfTFIsZkdFVFdPUkQo MSx0bXApLENPRl9UWVBFX0pVTVBSKTt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVBKTt9IH0pCisKK1E2 SU5TTihTTDJfcmV0dXJuX2YsImlmICghcDApIGRlYWxsb2NfcmV0dXJuIiwgQVRUUklCUyhBX0pJ TkRJUk9MRCxBX1NVQklOU04sQV9ST1BTXzIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTixB X1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksICJEZWFsbG9jYXRl IHN0YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KTtmQlJBTkNI X1NQRUNVTEFURV9TVEFMTChmTFNCT0xETk9UKGZSRUFEX1AwKCkpLCwgU1BFQ1VMQVRFX05PVF9U QUtFTiw0LDApOyBmRUFfUkVHKGZSRUFEX0ZQKCkpOyBpZiAoZkxTQk9MRE5PVChmUkVBRF9QMCgp KSkgeyBmTE9BRCgxLDgsdSxFQSx0bXApOyB0bXAgPSBmRlJBTUVfVU5TQ1JBTUJMRSh0bXApOyBm V1JJVEVfTFIoZkdFVFdPUkQoMSx0bXApKTsgZldSSVRFX0ZQKGZHRVRXT1JEKDAsdG1wKSk7IGZX UklURV9TUChFQSs4KTsKKyAgZkpVTVBSKFJFR19MUixmR0VUV09SRCgxLHRtcCksQ09GX1RZUEVf SlVNUFIpO30gZWxzZSB7TE9BRF9DQU5DRUwoRUEpO30gfSkKKworCisKK1E2SU5TTihTTDJfcmV0 dXJuX3RuZXcsImlmIChwMC5uZXcpIGRlYWxsb2NfcmV0dXJuOm50IiwgQVRUUklCUyhBX0pJTkRJ Uk5FVyxBX1NVQklOU04sQV9ST1BTXzIsQV9NRU1TSVpFXzhCLEFfTE9BRCxBX1JFVFVSTixBX1JF U1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksICJEZWFsbG9jYXRlIHN0 YWNrIGZyYW1lIGFuZCByZXR1cm4iLAoreyBmSElERShzaXplOHVfdCB0bXA7KSBmQlJBTkNIX1NQ RUNVTEFURV9TVEFMTChmTFNCTkVXMCwsIFNQRUNVTEFURV9OT1RfVEFLRU4gLCA0LDMpOyBmRUFf UkVHKGZSRUFEX0ZQKCkpOyBpZiAoZkxTQk5FVzApIHsgZkxPQUQoMSw4LHUsRUEsdG1wKTsgdG1w ID0gZkZSQU1FX1VOU0NSQU1CTEUodG1wKTsgZldSSVRFX0xSKGZHRVRXT1JEKDEsdG1wKSk7IGZX UklURV9GUChmR0VUV09SRCgwLHRtcCkpOyBmV1JJVEVfU1AoRUErOCk7CisgIGZKVU1QUihSRUdf TFIsZkdFVFdPUkQoMSx0bXApLENPRl9UWVBFX0pVTVBSKTt9IGVsc2Uge0xPQURfQ0FOQ0VMKEVB KTt9IH0pCisKK1E2SU5TTihTTDJfcmV0dXJuX2ZuZXcsImlmICghcDAubmV3KSBkZWFsbG9jX3Jl dHVybjpudCIsIEFUVFJJQlMoQV9KSU5ESVJORVcsQV9TVUJJTlNOLEFfUk9QU18yLEFfTUVNU0la RV84QixBX0xPQUQsQV9SRVRVUk4sQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVRfVFlQRSxBX1BS RURfQklUXzQpLCAiRGVhbGxvY2F0ZSBzdGFjayBmcmFtZSBhbmQgcmV0dXJuIiwKK3sgZkhJREUo c2l6ZTh1X3QgdG1wOykgZkJSQU5DSF9TUEVDVUxBVEVfU1RBTEwoZkxTQk5FVzBOT1QsLCBTUEVD VUxBVEVfTk9UX1RBS0VOICwgNCwzKTsgZkVBX1JFRyhmUkVBRF9GUCgpKTsgaWYgKGZMU0JORVcw Tk9UKSB7IGZMT0FEKDEsOCx1LEVBLHRtcCk7IHRtcCA9IGZGUkFNRV9VTlNDUkFNQkxFKHRtcCk7 IGZXUklURV9MUihmR0VUV09SRCgxLHRtcCkpOyBmV1JJVEVfRlAoZkdFVFdPUkQoMCx0bXApKTsg ZldSSVRFX1NQKEVBKzgpOworICBmSlVNUFIoUkVHX0xSLGZHRVRXT1JEKDEsdG1wKSxDT0ZfVFlQ RV9KVU1QUik7fSBlbHNlIHtMT0FEX0NBTkNFTChFQSk7fSB9KQorCisKK1E2SU5TTihTTDJfanVt cHIzMSwianVtcHIgcjMxIixBVFRSSUJTKEFfU1VCSU5TTixBX0pJTkRJUixBX1JFU1RSSUNUX1NM T1QwT05MWSxBX1JFVF9UWVBFKSwiaW5kaXJlY3QgdW5jb25kaXRpb25hbCBqdW1wIiwKK3sgZkpV TVBSKFJFR19MUixmUkVBRF9MUigpLENPRl9UWVBFX0pVTVBSKTt9KQorCitRNklOU04oU0wyX2p1 bXByMzFfdCwiaWYgKHAwKSBqdW1wciByMzEiLEFUVFJJQlMoQV9TVUJJTlNOLEFfSklORElST0xE LEFfTk9URV9DT05ESVRJT05BTCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJF RF9CSVRfNCksImluZGlyZWN0IGNvbmRpdGlvbmFsIGp1bXAgaWYgdHJ1ZSIsCit7ZkJSQU5DSF9T UEVDVUxBVEVfU1RBTEwoZkxTQk9MRChmUkVBRF9QMCgpKSwsIFNQRUNVTEFURV9UQUtFTiw0LDAp OyBpZiAoZkxTQk9MRChmUkVBRF9QMCgpKSkge2ZKVU1QUihSRUdfTFIsZlJFQURfTFIoKSxDT0Zf VFlQRV9KVU1QUik7fX0pCisKK1E2SU5TTihTTDJfanVtcHIzMV9mLCJpZiAoIXAwKSBqdW1wciBy MzEiLEFUVFJJQlMoQV9TVUJJTlNOLEFfSklORElST0xELEFfTk9URV9DT05ESVRJT05BTCxBX1JF U1RSSUNUX1NMT1QwT05MWSxBX1JFVF9UWVBFLEFfUFJFRF9CSVRfNCksImluZGlyZWN0IGNvbmRp dGlvbmFsIGp1bXAgaWYgZmFsc2UiLAore2ZCUkFOQ0hfU1BFQ1VMQVRFX1NUQUxMKGZMU0JPTERO T1QoZlJFQURfUDAoKSksLCBTUEVDVUxBVEVfVEFLRU4sNCwwKTsgaWYgKGZMU0JPTEROT1QoZlJF QURfUDAoKSkpIHtmSlVNUFIoUkVHX0xSLGZSRUFEX0xSKCksQ09GX1RZUEVfSlVNUFIpO319KQor CisKKworUTZJTlNOKFNMMl9qdW1wcjMxX3RuZXcsImlmIChwMC5uZXcpIGp1bXByOm50IHIzMSIs QVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVJORVcsQV9OT1RFX0NPTkRJVElPTkFMLEFfUkVTVFJJ Q1RfU0xPVDBPTkxZLEFfUkVUX1RZUEUsQV9QUkVEX0JJVF80KSwiaW5kaXJlY3QgY29uZGl0aW9u YWwganVtcCBpZiB0cnVlIiwKK3tmQlJBTkNIX1NQRUNVTEFURV9TVEFMTChmTFNCTkVXMCwsIFNQ RUNVTEFURV9OT1RfVEFLRU4gLCA0LDMpOyBpZiAoZkxTQk5FVzApIHtmSlVNUFIoUkVHX0xSLGZS RUFEX0xSKCksQ09GX1RZUEVfSlVNUFIpO319KQorCitRNklOU04oU0wyX2p1bXByMzFfZm5ldywi aWYgKCFwMC5uZXcpIGp1bXByOm50IHIzMSIsQVRUUklCUyhBX1NVQklOU04sQV9KSU5ESVJORVcs QV9OT1RFX0NPTkRJVElPTkFMLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVUX1RZUEUsQV9QUkVE X0JJVF80KSwiaW5kaXJlY3QgY29uZGl0aW9uYWwganVtcCBpZiBmYWxzZSIsCit7ZkJSQU5DSF9T UEVDVUxBVEVfU1RBTEwoZkxTQk5FVzBOT1QsLCBTUEVDVUxBVEVfTk9UX1RBS0VOICwgNCwzKTsg aWYgKGZMU0JORVcwTk9UKSB7ZkpVTVBSKFJFR19MUixmUkVBRF9MUigpLENPRl9UWVBFX0pVTVBS KTt9fSkKKworCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAg ICAgICAgICAgU3QxLzIgc3ViaW5zbnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihTUzFfc3RvcmV3X2lvLCAgIm1lbXcoUnMxNisj dTQ6Mik9UnQxNiIsIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0 b3JlIHdvcmQiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSw0LEVBLFJ0Vik7fSkKK1E2SU5T TihTUzFfc3RvcmViX2lvLCAgIm1lbWIoUnMxNisjdTQ6MCk9UnQxNiIsIEFUVFJJQlMoQV9NRU1T SVpFXzFCLEFfU1RPUkUsQV9TVUJJTlNOKSwgInN0b3JlIGJ5dGUiLCB7ZkVBX1JJKFJzVix1aVYp OyBmU1RPUkUoMSwxLEVBLGZHRVRCWVRFKDAsUnRWKSk7fSkKK1E2SU5TTihTUzJfc3RvcmVoX2lv LCAgIm1lbWgoUnMxNisjdTM6MSk9UnQxNiIsIEFUVFJJQlMoQV9NRU1TSVpFXzJCLEFfU1RPUkUs QV9TVUJJTlNOKSwgInN0b3JlIGhhbGYiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSwyLEVB LGZHRVRIQUxGKDAsUnRWKSk7fSkKK1E2SU5TTihTUzJfc3RvcmVkX3NwLCAgIm1lbWQocjI5KyNz NjozKT1SdHQ4IiwgQVRUUklCUyhBX01FTVNJWkVfOEIsQV9TVE9SRSxBX1NVQklOU04pLCAic3Rv cmUgZHdvcmQiLHtmRUFfUkkoZlJFQURfU1AoKSxzaVYpOyBmU1RPUkUoMSw4LEVBLFJ0dFYpO30p CitRNklOU04oU1MyX3N0b3Jld19zcCwgICJtZW13KHIyOSsjdTU6Mik9UnQxNiIsICBBVFRSSUJT KEFfTUVNU0laRV80QixBX1NUT1JFLEFfU1VCSU5TTiksICJzdG9yZSB3b3JkIiwge2ZFQV9SSShm UkVBRF9TUCgpLHVpVik7IGZTVE9SRSgxLDQsRUEsUnRWKTt9KQorUTZJTlNOKFNTMl9zdG9yZXdp MCwgICAibWVtdyhSczE2KyN1NDoyKT0jMCIsIEFUVFJJQlMoQV9NRU1TSVpFXzRCLEFfU1RPUkUs QV9TVUJJTlNOLEFfUk9QU18yKSwgInN0b3JlIHdvcmQiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RP UkUoMSw0LEVBLDApO30pCitRNklOU04oU1MyX3N0b3JlYmkwLCAgICJtZW1iKFJzMTYrI3U0OjAp PSMwIiwgQVRUUklCUyhBX01FTVNJWkVfMUIsQV9TVE9SRSxBX1NVQklOU04sQV9ST1BTXzIpLCAi c3RvcmUgYnl0ZSIsIHtmRUFfUkkoUnNWLHVpVik7IGZTVE9SRSgxLDEsRUEsMCk7fSkKK1E2SU5T TihTUzJfc3RvcmV3aTEsICAgIm1lbXcoUnMxNisjdTQ6Mik9IzEiLCBBVFRSSUJTKEFfTUVNU0la RV80QixBX1NUT1JFLEFfU1VCSU5TTixBX1JPUFNfMiksICJzdG9yZSB3b3JkIiwge2ZFQV9SSShS c1YsdWlWKTsgZlNUT1JFKDEsNCxFQSwxKTt9KQorUTZJTlNOKFNTMl9zdG9yZWJpMSwgICAibWVt YihSczE2KyN1NDowKT0jMSIsIEFUVFJJQlMoQV9NRU1TSVpFXzFCLEFfU1RPUkUsQV9TVUJJTlNO LEFfUk9QU18yKSwgInN0b3JlIGJ5dGUiLCB7ZkVBX1JJKFJzVix1aVYpOyBmU1RPUkUoMSwxLEVB LDEpO30pCisKKworUTZJTlNOKFNTMl9hbGxvY2ZyYW1lLCJhbGxvY2ZyYW1lKCN1NTozKSIsIEFU VFJJQlMoQV9TVUJJTlNOLEFfTUVNU0laRV84QixBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZ KSwgIkFsbG9jYXRlIHN0YWNrIGZyYW1lIiwKK3sgZkVBX1JJKGZSRUFEX1NQKCksLTgpOyAgZlNU T1JFKDEsOCxFQSxmRlJBTUVfU0NSQU1CTEUoKGZDQVNUOF84dShmUkVBRF9MUigpKSA8PCAzMikg fCBmQ0FTVDRfNHUoZlJFQURfRlAoKSkpKTsgZldSSVRFX0ZQKEVBKTsgZkZSQU1FQ0hFQ0soRUEt dWlWLEVBKTsgZldSSVRFX1NQKEVBLXVpVik7IH0pCisKKworCmRpZmYgLS1naXQgYS90YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZiBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL3N5 c3RlbS5pZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYmY1MmYKLS0t IC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9zeXN0ZW0uaWRlZgpAQCAt MCwwICsxLDMwMiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTkgUXVhbGNvbW0gSW5ub3Zh dGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg KiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKy8qCisgKiBTeXN0ZW0gSW50ZXJmYWNl IEluc3RydWN0aW9ucworICovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKiBVc2VyLT5PUyBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAg ICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisK K1E2SU5TTihKMl90cmFwMCwidHJhcDAoI3U4KSIsQVRUUklCUyhBX0NPRixBX05PVEVfTk9QQUNL RVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksCisiVHJhcCB0byBPcGVyYXRpbmcgU3lzdGVtIiwKKwlm VFJBUCgwLHVpVik7CispCisKK1E2SU5TTihKMl90cmFwMSwidHJhcDEoUngzMiwjdTgpIixBVFRS SUJTKEFfQ09GLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VUKSwKKyJUcmFwIHRv IE9wZXJhdGluZyBTeXN0ZW0iLAorCS8qCisJICogTm90ZTogaWYgUnhWIGlzIG5vdCB3cml0dGVu LCB3ZSBnZXQgdGhlIHNhbWUgYXMgdGhlIGlucHV0LgorCSAqIFNpbmNlIHRyYXAxIGlzIFNPTE8s IHRoaXMgbWVhbnMgdGhlIHJlZ2lzdGVyIHdpbGwgZWZmZWN0aXZlbHkgbm90IGJlIHVwZGF0ZWQK KwkgKi8KKwlpZiAoIWZUUkFQMV9WSVJUSU5TTih1aVYpKSB7CisJCWZUUkFQKDEsdWlWKTsKKwl9 IGVsc2UgaWYgKHVpViA9PSAxKSB7CisJCWZWSVJUSU5TTl9SVEUodWlWLFJ4Vik7CisJfSBlbHNl IGlmICh1aVYgPT0gMykgeworCQlmVklSVElOU05fU0VUSUUodWlWLFJ4Vik7CisJfSBlbHNlIGlm ICh1aVYgPT0gNCkgeworCQlmVklSVElOU05fR0VUSUUodWlWLFJ4Vik7CisJfSBlbHNlIGlmICh1 aVYgPT0gNikgeworCQlmVklSVElOU05fU1BTV0FQKHVpVixSeFYpOworCX0pCisKK0RFRl9NQVBQ SU5HKEoyX3RyYXAxX25vcmVnbWFwLCJ0cmFwMSgjdTgpIiwidHJhcDEoUjAsI3U4KSIpCisKK1E2 SU5TTihKMl9wYXVzZSwicGF1c2UoI3U4KSIsQVRUUklCUyhBX0NPRixBX05PVEVfTk9QQUNLRVQs QV9SRVNUUklDVF9OT1BBQ0tFVCksCisiRW50ZXIgbG93LXBvd2VyIHN0YXRlIGZvciAjdTggY3lj bGVzIix7ZlBBVVNFKHVpVik7fSkKKworUTZJTlNOKEoyX3J0ZSwgICJydGUiLCBBVFRSSUJTKEFf UFJJVixBX05PVEVfUFJJVixBX05PX1RJTUlOR19MT0cpLAorIlJldHVybiBmcm9tIEV4Y2VwdGlv biIsCit7CitmSElERShpZigodGhyZWFkLT50aW1pbmdfb24pICYmICh0aHJlYWQtPnN0YXR1cyAm IEVYRUNfU1RBVFVTX1JFUExBWSkpIHsgcmV0dXJuOyB9KQorZkhJREUoQ0FMTEJBQ0sodGhyZWFk LT5wcm9jZXNzb3JfcHRyLT5vcHRpb25zLT5ydGVfY2FsbGJhY2ssCisgICAgICB0aHJlYWQtPnN5 c3RlbV9wdHIsdGhyZWFkLT5wcm9jZXNzb3JfcHRyLAorICAgICAgdGhyZWFkLT50aHJlYWRJZCww KTspCitmQ0xFQVJfUlRFX0VYKCk7CitmQlJBTkNIKGZSRUFEX0VMUigpLENPRl9UWVBFX1JURSk7 fSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisv KiBJbnRlcnJ1cHQgTWFuYWdlbWVudCAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1E2SU5TTihZMl9zd2ksInN3 aShSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9SRVNUUklD VF9QQUNLRVRfQVhPSyksIlNvZnR3YXJlIEludGVycnVwdCIse0RPX1NXSShSc1YpO30pCitRNklO U04oWTJfY3N3aSwiY3N3aShSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RF X0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyksIkNhbmNlbCBTb2Z0d2FyZSBJbnRlcnJ1cHQi LHtET19DU1dJKFJzVik7fSkKK1E2SU5TTihZMl9jaWFkLCJjaWFkKFJzMzIpIixBVFRSSUJTKEFf UFJJVixBX05PVEVfUFJJVixBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LKSwiUmUt ZW5hYmxlIGludGVycnVwdCBpbiBJQUQiLHtET19DSUFEKFJzVik7fSkKK1E2SU5TTihZNF9zaWFk LCJzaWFkKFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfQVhPSyxBX1JF U1RSSUNUX1BBQ0tFVF9BWE9LKSwiRGlzYWJsZSBpbnRlcnJ1cHQgaW4gSUFEIix7RE9fU0lBRChS c1YpO30pCitRNklOU04oWTJfaWFzc2lnbnIsIlJkMzI9aWFzc2lnbnIoUnMzMikiLEFUVFJJQlMo QV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0spLCJS ZWFkIGludGVycnVwdCB0byB0aHJlYWQgYXNzaWdubWVudHMiLHtET19JQVNTSUdOUihSc1YsUmRW KTt9KQorUTZJTlNOKFkyX2lhc3NpZ253LCJpYXNzaWdudyhSczMyKSIsQVRUUklCUyhBX1BSSVYs QV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyksIldyaXRlIGlu dGVycnVwdCB0byB0aHJlYWQgYXNzaWdubWVudHMiLHtET19JQVNTSUdOVyhSc1YpO30pCisKKwor UTZJTlNOKFkyX2dldGltYXNrLCJSZDMyPWdldGltYXNrKFJzMzIpIixBVFRSSUJTKEFfUFJJVixB X05PVEVfUFJJVixBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LKSwiUmVhZCBpbWFz ayByZWdpc3RlciBvZiBhbm90aGVyIHRocmVhZCIsCit7UmRWID0gUkVBRF9JTUFTSyhSc1YgJiB0 aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnRocmVhZF9zeXN0ZW1fbWFzayk7IH0pCisKK1E2SU5TTihZ Ml9zZXRpbWFzaywic2V0aW1hc2soUHQ0LFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJ VixBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LKSwiQ2hhbmdlIGltYXNrIHJlZ2lz dGVyIG9mIGFub3RoZXIgdGhyZWFkIiwKK3tmUFJFRFVTRV9USU1JTkcoKTtXUklURV9JTUFTSyhQ dFYgJiB0aHJlYWQtPnByb2Nlc3Nvcl9wdHItPnRocmVhZF9zeXN0ZW1fbWFzayxSc1YpOyB9KQor CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyog VExCIG1hbmFnZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitRNklOU04oWTJfdGxidywidGxi dyhSc3MzMixSdDMyKSIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX05PUEFDS0VUKSwKKyJXcml0ZSBUTEIgZW50cnkiLCB7ZlRMQlcoUnRWLFJz c1YpO30pCisKK1E2SU5TTihZNV9jdGxidywiUmQzMj1jdGxidyhSc3MzMixSdDMyKSIsIEFUVFJJ QlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VU KSwKKyJDb25kaXRpb25hbCBXcml0ZSBUTEIgZW50cnkiLAoreworICBpZiAoZlRMQl9FTlRSWV9P VkVSTEFQKCAoMUxMPDw2MykgfCBSc3NWICkpIHsKKyAgICAgICAgUmRWPWZUTEJfRU5UUllfT1ZF UkxBUF9JRFgoICgxTEw8PDYzKSB8IFJzc1YpOworICAgICB9IGVsc2UgeworICAgICAgICBmVExC VyhSdFYsUnNzVik7CisgICAgICAgIFJkVj0weDgwMDAwMDAwOworICAgICB9Cit9KQorCitRNklO U04oWTVfdGxib2MsIlJkMzI9dGxib2MoUnNzMzIpIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BS SVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLAorIlRMQiBvdmVybGFwIGNo ZWNrIiwKK3sKKyAgaWYgKGZUTEJfRU5UUllfT1ZFUkxBUCggKDFMTDw8NjMpIHwgUnNzViApKSB7 CisgICAgICAgIFJkVj1mVExCX0VOVFJZX09WRVJMQVBfSURYKCAoMUxMPDw2MykgfCBSc3NWKTsK KyAgICAgfSBlbHNlIHsKKyAgICAgICAgUmRWPTB4ODAwMDAwMDA7CisgICAgIH0KK30pCisKK1E2 SU5TTihZMl90bGJyLCJSZGQzMj10bGJyKFJzMzIpIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BS SVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCAiUmVhZCBUTEIgZW50cnki LAore1JkZFYgPSBmVExCUihSc1YpO30pCisKK1E2SU5TTihZMl90bGJwLCJSZDMyPXRsYnAoUnMz MikiLCBBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklD VF9OT1BBQ0tFVCksICJQcm9iZSBUTEIiLCB7UmRWPWZUTEJQKFJzVik7fSkKKworUTZJTlNOKFk1 X3RsYmFzaWRpLCJ0bGJpbnZhc2lkKFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixB X05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksICJJbnZhbGlkYXRlIEFTSUQiLAor eworCWZISURFKGludCBpOykKKyAgICBmSElERSh1bnNpZ25lZCBpbnQgTlVNX1RMQl9FTlRSSUVT ID0gTlVNX1RMQl9SRUdTKHRocmVhZC0+cHJvY2Vzc29yX3B0cik7KQorCWZvciAoaSA9IDA7IGkg PCBOVU1fVExCX0VOVFJJRVM7IGkrKykgeworCQlpZiAoKGZHRVRfRklFTEQoZlRMQlIoaSksUFRF X0cpID09IDApICYmCisJCQkoZkdFVF9GSUVMRChmVExCUihpKSxQVEVfQVNJRCkgPT0gZkVYVFJB Q1RVX1JBTkdFKFJzViwyNiwyMCkpKSB7CisJCQlmVExCVyhpLGZUTEJSKGkpICYgfigxVUxMIDw8 IDYzKSk7CisJCX0KKwl9Cit9KQorCitRNklOU04oWTJfdGxibG9jaywidGxibG9jayIsIEFUVFJJ QlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VU LEFfTk9fVElNSU5HX0xPRyksICJMb2NrIFRMQiIsCit7ZlNFVF9UTEJfTE9DSygpfSkKKworUTZJ TlNOKFkyX3RsYnVubG9jaywidGxidW5sb2NrIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYs QV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCAiVW5sb2NrIFRMQiIsCit7ZkNM RUFSX1RMQl9MT0NLKCk7fSkKKworREVGX01BUFBJTkcoWTJfazFsb2NrX21hcCwiazFsb2NrIiwi dGxibG9jayIpCitERUZfTUFQUElORyhZMl9rMXVubG9ja19tYXAsImsxdW5sb2NrIiwidGxidW5s b2NrIikKKworUTZJTlNOKFkyX2swbG9jaywiazBsb2NrIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RF X1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9OT19USU1JTkdfTE9H KSwgIkxvY2sgSzAiLAore2ZTRVRfSzBfTE9DSygpfSkKKworUTZJTlNOKFkyX2swdW5sb2NrLCJr MHVubG9jayIsIEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JF U1RSSUNUX05PUEFDS0VUKSwgIlVubG9jayBLMCIsCit7ZkNMRUFSX0swX0xPQ0soKTt9KQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBTdXBlcnZp c29yIFJlZyBNYW5hZ2VtZW50ICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0RFRl9WNF9NQVBQSU5HKFkyX2Nyc3dhcF9v bGQsImNyc3dhcChSeDMyLHNncCkiLCJjcnN3YXAoUngzMixzZ3AwKSIpCisKK1E2SU5TTihZMl9j cnN3YXAwLCJjcnN3YXAoUngzMixzZ3AwKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYpLCAi U3dhcCBzeXN0ZW0gZ2VuZXJhbCBwb2ludGVyIDAgd2l0aCBHUFIiLAore2ZISURFKHNpemU0c190 IHRtcDspIHRtcCA9IFJ4VjsgUnhWID0gUkVBRF9TR1AwKCk7IFdSSVRFX1NHUDAodG1wKTt9KQor UTZJTlNOKFk0X2Nyc3dhcDEsImNyc3dhcChSeDMyLHNncDEpIixBVFRSSUJTKEFfUFJJVixBX05P VEVfUFJJViksICJTd2FwIHN5c3RlbSBnZW5lcmFsIHBvaW50ZXIgMSB3aXRoIEdQUiIsCit7ZkhJ REUoc2l6ZTRzX3QgdG1wOykgdG1wID0gUnhWOyBSeFYgPSBSRUFEX1NHUDEoKTsgV1JJVEVfU0dQ MSh0bXApO30pCisKK1E2SU5TTihZNF9jcnN3YXAxMCwiY3Jzd2FwKFJ4eDMyLHNncDE6MCkiLEFU VFJJQlMoQV9QUklWLEFfTk9URV9QUklWKSwgIlN3YXAgc3lzdGVtIGdlbmVyYWwgcHVycG9zZSAw LzEgd2l0aCBHUFIgUGFpciIsCit7ZkhJREUoc2l6ZThzX3QgdG1wOykgdG1wID0gUnh4VjsgUnh4 Vj1SRUFEX1NHUDEwKCk7IFdSSVRFX1NHUDEwKHRtcCk7fSkKKworUTZJTlNOKFkyX3RmcnNjcnIs IlJkMzI9U3MxMjgiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWKSwiVHJhbnNmZXIgU3VwZXJ2 aXNvciBSZWcgdG8gR1BSIiwge1JkVj1Tc1Y7fSkKK1E2SU5TTihZMl90ZnJzcmNyLCJTZDEyOD1S czMyIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5zZmVyIEdQUiB0byBTdXBlcnZp c29yIFJlZyIsIHtTZFY9UnNWO30pCitRNklOU04oWTRfdGZyc2NwcCwiUmRkMzI9U3NzMTI4IixB VFRSSUJTKEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5zZmVyIFN1cGVydmlzb3IgUmVnIHRvIEdQ UiIsIHtSZGRWPVNzc1Y7fSkKK1E2SU5TTihZNF90ZnJzcGNwLCJTZGQxMjg9UnNzMzIiLEFUVFJJ QlMoQV9QUklWLEFfTk9URV9QUklWKSwiVHJhbnNmZXIgR1BSIHRvIFN1cGVydmlzb3IgUmVnIiwg e1NkZFY9UnNzVjt9KQorCisjaWZkZWYgUFRXQUxLCitRNklOU04oWTZfdGZyYWNyciwiUmQzMj1B czY0IixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5zZmVyIEFkZHJlc3MgUmVnIHRv IEdQUiIsIHtSZFY9QXNWO30pCitRNklOU04oWTZfdGZyYXJjciwiQWQ2ND1SczMyIixBVFRSSUJT KEFfUFJJVixBX05PVEVfUFJJViksIlRyYW5zZmVyIEdQUiB0byBBZGRyZXNzIFJlZyIsIHtBZFY9 UnNWO30pCitRNklOU04oWTZfdGZyYWNwcCwiUmRkMzI9QXNzNjQiLEFUVFJJQlMoQV9QUklWLEFf Tk9URV9QUklWKSwiVHJhbnNmZXIgQWRkcmVzcyBSZWcgdG8gR1BSIiwge1JkZFY9QXNzVjt9KQor UTZJTlNOKFk2X3RmcmFwY3AsIkFkZDY0PVJzczMyIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJ ViksIlRyYW5zZmVyIEdQUiB0byBBZGRyZXNzIFJlZyIsIHtBZGRWPVJzc1Y7fSkKKyNlbmRpZgor CitRNklOU04oRzRfdGZyZ2NyciwiUmQzMj1HczMyIixBVFRSSUJTKEFfR1VFU1QsQV9OT1RFX0dV RVNUKSwiVHJhbnNmZXIgR3Vlc3QgUmVnIHRvIEdQUiIsIHtSZFY9R3NWO30pCitRNklOU04oRzRf dGZyZ3JjciwiR2QzMj1SczMyIixBVFRSSUJTKEFfR1VFU1QsQV9OT1RFX0dVRVNUKSwiVHJhbnNm ZXIgR1BSIHRvIEd1ZXN0IFJlZyIsIHtHZFY9UnNWO30pCitRNklOU04oRzRfdGZyZ2NwcCwiUmRk MzI9R3NzMzIiLEFUVFJJQlMoQV9HVUVTVCxBX05PVEVfR1VFU1QpLCJUcmFuc2ZlciBHdWVzdCBS ZWcgdG8gR1BSIiwge1JkZFY9R3NzVjt9KQorUTZJTlNOKEc0X3RmcmdwY3AsIkdkZDMyPVJzczMy IixBVFRSSUJTKEFfR1VFU1QsQV9OT1RFX0dVRVNUKSwiVHJhbnNmZXIgR1BSIHRvIEd1ZXN0IFJl ZyIsIHtHZGRWPVJzc1Y7fSkKKworCisKK1E2SU5TTihZMl9zZXRwcmlvLCJzZXRwcmlvKFB0NCxS czMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYpLCJDaGFuZ2UgVElEIFByaW8gb2YgYW5v dGhlciB0aHJlYWQiLAore2ZQUkVEVVNFX1RJTUlORygpO1dSSVRFX1BSSU8oUHRWICYgdGhyZWFk LT5wcm9jZXNzb3JfcHRyLT50aHJlYWRfc3lzdGVtX21hc2ssUnNWKTsgfSkKKworCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogUG93ZXIgTWFu YWdlbWVudCAvIFRocmVhZCBvbi9vZmYgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLworUTZJTlNOKFk2X2RpYWcsImRpYWcoUnMzMikiLEFU VFJJQlMoKSwiU2VuZCB2YWx1ZSB0byBEaWFnIHRyYWNlIG1vZHVsZSIseworfSkKK1E2SU5TTihZ Nl9kaWFnMCwiZGlhZzAoUnNzMzIsUnR0MzIpIixBVFRSSUJTKCksIlNlbmQgdmFsdWVzIG9mIHR3 byByZWdpc3RlciB0byBESUFHIFRyYWNlLiBTZXQgWD0wIix7Cit9KQorUTZJTlNOKFk2X2RpYWcx LCJkaWFnMShSc3MzMixSdHQzMikiLEFUVFJJQlMoKSwiU2VuZCB2YWx1ZXMgb2YgdHdvIHJlZ2lz dGVyIHRvIERJQUcgVHJhY2UuICBTZXQgWD0xIix7Cit9KQorCisKK1E2SU5TTihZNF90cmFjZSwi dHJhY2UoUnMzMikiLEFUVFJJQlMoQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNLRVRfQVhPSyks IlNlbmQgdmFsdWUgdG8gRVRNIHRyYWNlIix7CisgICAgZkRPX1RSQUNFKFJzVik7Cit9KQorCitR NklOU04oWTJfc3RvcCwic3RvcChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9O T1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQpLCJTdG9wIHRocmVhZChzKSIseworICAg IGZISURFKFJzVj1Sc1Y7KQorICAgIGlmICghZklOX0RFQlVHX01PREVfTk9fSVNEQihmR0VUX1RO VU0oKSkpIGZDTEVBUl9SVU5fTU9ERShmR0VUX1ROVU0oKSk7Cit9KQorCitRNklOU04oWTRfbm1p LCJubWkoUnMzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxB X1JFU1RSSUNUX05PUEFDS0VULEFfTk9fVElNSU5HX0xPRyksIlJhaXNlIE5NSSBvbiB0aHJlYWQo cykiLHsKKyAgICBmRE9fTk1JKFJzVik7Cit9KQorCitRNklOU04oWTJfc3RhcnQsInN0YXJ0KFJz MzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklD VF9OT1BBQ0tFVCksIlN0YXJ0IHRocmVhZChzKSIsZlNUQVJUKFJzVik7KQorCitRNklOU04oWTJf d2FpdCwid2FpdChSczMyKSIsQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFD S0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9OT19USU1JTkdfTE9HKSwiTWFrZSB0aHJlYWQocykg d2FpdCIseworICAgIGZISURFKFJzVj1Sc1Y7KQorICAgIGlmICghZklOX0RFQlVHX01PREUoZkdF VF9UTlVNKCkpKSBmU0VUX1dBSVRfTU9ERShmR0VUX1ROVU0oKSk7CisJZklOX0RFQlVHX01PREVf V0FSTihmR0VUX1ROVU0oKSk7Cit9KQorCitRNklOU04oWTJfcmVzdW1lLCJyZXN1bWUoUnMzMiki LEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05P UEFDS0VUKSwiTWFrZSB0aHJlYWQocykgc3RvcCB3YWl0aW5nIixmUkVTVU1FKFJzVik7KQorCitR NklOU04oWTJfYnJlYWssImJya3B0IixBVFRSSUJTKEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNU X05PUEFDS0VUKSwiQnJlYWtwb2ludCIse2ZCUkVBSygpO30pCisKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogQ2FjaGUgTWFuYWdlbWVudCAgICAg ICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitRNklOU04oWTJfaWN0YWdyLCJSZDMyPWljdGFncihSczMyKSIsQVRU UklCUyhBX0lDT1AsQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNU X05PUEFDS0VULEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfSUNUQUdPUCksIkluc3RydWN0aW9uIENh Y2hlIFRhZyBSZWFkIix7ZklDVEFHUihSc1YsUmRWLFJkTik7fSkKK1E2SU5TTihZMl9pY3RhZ3cs ImljdGFndyhSczMyLFJ0MzIpIixBVFRSSUJTKEFfSUNPUCxBX1BSSVYsQV9OT1RFX1BSSVYsQV9O T1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9DQUNIRU9QLEFfQ09QQllJRFgsQV9J Q1RBR09QKSwiSW5zdHJ1Y3Rpb24gQ2FjaGUgVGFnIFdyaXRlIix7ZklDVEFHVyhSc1YsUnRWKTt9 KQorUTZJTlNOKFkyX2ljZGF0YXcsImljZGF0YXcoUnMzMixSdDMyKSIsQVRUUklCUyhBX0lDT1As QV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VULEFf Q0FDSEVPUCxBX0NPUEJZSURYLEFfSUNUQUdPUCksIkluc3RydWN0aW9uIENhY2hlIERhdGEgV3Jp dGUiLHtmSUNEQVRBVyhSc1YsUnRWKTt9KQorUTZJTlNOKFkyX2ljZGF0YXIsIlJkMzI9aWNkYXRh cihSczMyKSIsQVRUUklCUyhBX0lDT1AsQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfSUNUQUdPUCksIklu c3RydWN0aW9uIENhY2hlIERhdGEgUmVhZCIse2ZJQ0RBVEFSKFJzViwgUmRWKTt9KQorUTZJTlNO KFkyX2ljaW52YSwiaWNpbnZhKFJzMzIpIixBVFRSSUJTKEFfSUNPUCxBX05PVEVfTk9QQUNLRVQs QV9SRVNUUklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1AsQV9DT1BCWUFERFJFU1MsQV9JQ0ZMVVNIT1Ap LCJJbnN0cnVjdGlvbiBDYWNoZSBJbnZhbGlkYXRlIEFkZHJlc3MiLHtmRUFfUkVHKFJzVik7IGZJ Q0lOVkEoRUEpO30pCitRNklOU04oWTJfaWNpbnZpZHgsImljaW52aWR4KFJzMzIpIixBVFRSSUJT KEFfSUNPUCxBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9Q QUNLRVQsQV9DQUNIRU9QLEFfQ09QQllJRFgsQV9JQ0ZMVVNIT1ApLCJJbnN0cnVjdGlvbiBDYWNo ZSBJbnZhbGlkYXRlIEluZGV4Iix7ZklDSU5WSURYKFJzVik7fSkKK1E2SU5TTihZMl9pY2tpbGws Imlja2lsbCIsQVRUUklCUyhBX0lDT1AsQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxBX0lDRkxVU0hPUCksIkluc3RydWN0aW9u IENhY2hlIEludmFsaWRhdGUiLHtmSUNLSUxMKCk7fSkKKworUTZJTlNOKFkyX2lzeW5jLCJpc3lu YyIsQVRUUklCUyhBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9OT1BBQ0tFVCksIk1lbW9yeSBT eW5jaHJvbml6YXRpb24iLHtmSVNZTkMoKTt9KQorUTZJTlNOKFkyX2JhcnJpZXIsImJhcnJpZXIi LEFUVFJJQlMoQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1Rf UEFDS0VUX0FYT0spLCJNZW1vcnkgQmFycmllciIse2ZCQVJSSUVSKCk7fSkKK1E2SU5TTihZMl9z eW5jaHQsInN5bmNodCIsQVRUUklCUyhBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9TTE9UME9O TFksQV9SRVNUUklDVF9OT1BBQ0tFVCksIk1lbW9yeSBTeW5jaHJvbml6YXRpb24iLHtmU1lOQ0go KTt9KQorCisKK1E2SU5TTihZMl9kY2ZldGNoYm8sImRjZmV0Y2goUnMzMisjdTExOjMpIixBVFRS SUJTKEFfUkVTVFJJQ1RfUFJFRkVSU0xPVDAsQV9EQ0ZFVENILEFfUkVTVFJJQ1RfTk9TTE9UMV9T VE9SRSksIkRhdGEgQ2FjaGUgUHJlZmV0Y2giLHtmRUFfUkkoUnNWLHVpVik7IGZEQ0ZFVENIKEVB KTt9KQorREVGX01BUFBJTkcoWTJfZGNmZXRjaCwgICJkY2ZldGNoKFJzMzIpIiwiZGNmZXRjaChS czMyKyMwKSIpCitRNklOU04oWTJfZGNraWxsLCJkY2tpbGwiLEFUVFJJQlMoQV9QUklWLEFfTk9U RV9QUklWLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05P UEFDS0VULEFfQ0FDSEVPUCxBX0RDRkxVU0hPUCksIkRhdGEgQ2FjaGUgSW52YWxpZGF0ZSIse2ZE Q0tJTEwoKTt9KQorCisKK1E2SU5TTihZMl9kY3plcm9hLCJkY3plcm9hKFJzMzIpIixBVFRSSUJT KEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UMV9BT0ssQV9OT1RFX1NMT1QxX0FPSyxBX1JFU1RSSUNU X1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUFERFJFU1MsQV9EQ1pFUk9BKSwiWmVybyBhbiBh bGlnbmVkIDMyLWJ5dGUgY2FjaGVsaW5lIix7ZkVBX1JFRyhSc1YpOyBmRENaRVJPQShFQSk7fSkK K1E2SU5TTihZMl9kY2NsZWFuYSwiZGNjbGVhbmEoUnMzMikiLEFUVFJJQlMoQV9SRVNUUklDVF9T TE9UMV9BT0ssQV9OT1RFX1NMT1QxX0FPSyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1As QV9DT1BCWUFERFJFU1MsQV9EQ0ZMVVNIT1ApLCJEYXRhIENhY2hlIENsZWFuIEFkZHJlc3MiLHtm RUFfUkVHKFJzVik7IGZEQ0NMRUFOQShFQSk7fSkKK1E2SU5TTihZMl9kY2NsZWFuaWR4LCJkY2Ns ZWFuaWR4KFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX1JFU1RSSUNUX1BBQ0tF VF9BWE9LLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NPUEJZ SURYLEFfRENGTFVTSE9QKSwiRGF0YSBDYWNoZSBDbGVhbiBJbmRleCIse2ZEQ0NMRUFOSURYKFJz Vik7fSkKK1E2SU5TTihZMl9kY2NsZWFuaW52YSwiZGNjbGVhbmludmEoUnMzMikiLEFUVFJJQlMo QV9SRVNUUklDVF9TTE9UMV9BT0ssQV9OT1RFX1NMT1QxX0FPSyxBX1JFU1RSSUNUX1NMT1QwT05M WSxBX0NBQ0hFT1AsQV9DT1BCWUFERFJFU1MsQV9EQ0ZMVVNIT1ApLCJEYXRhIENhY2hlIENsZWFu IGFuZCBJbnZhbGlkYXRlIEFkZHJlc3MiLHtmRUFfUkVHKFJzVik7IGZEQ0NMRUFOSU5WQShFQSk7 fSkKK1E2SU5TTihZMl9kY2NsZWFuaW52aWR4LCJkY2NsZWFuaW52aWR4KFJzMzIpIixBVFRSSUJT KEFfUFJJVixBX05PVEVfUFJJVixBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9BWE9LLEFf UkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfRENGTFVTSE9QKSwiRGF0 YSBDYWNoZSBDbGVhbiBhbmQgSW52YWxpZGF0ZSBJbmRleCIse2ZEQ0NMRUFOSU5WSURYKFJzVik7 fSkKK1E2SU5TTihZMl9kY2ludmEsImRjaW52YShSczMyKSIsQVRUUklCUyhBX1JFU1RSSUNUX1NM T1QxX0FPSyxBX05PVEVfU0xPVDFfQU9LLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxB X0NPUEJZQUREUkVTUyxBX0RDRkxVU0hPUCksIkRhdGEgQ2FjaGUgSW52YWxpZGF0ZSBBZGRyZXNz Iix7ZkVBX1JFRyhSc1YpOyBmRENDTEVBTklOVkEoRUEpO30pCitRNklOU04oWTJfZGNpbnZpZHgs ImRjaW52aWR4KFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX1JFU1RSSUNUX1BB Q0tFVF9BWE9LLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NP UEJZSURYLEFfRENGTFVTSE9QKSwiRGF0YSBDYWNoZSBJbnZhbGlkYXRlIEluZGV4Iix7ZkRDSU5W SURYKFJzVik7fSkKK1E2SU5TTihZMl9kY3RhZ3IsIlJkMzI9ZGN0YWdyKFJzMzIpIixBVFRSSUJT KEFfUFJJVixBX05PVEVfUFJJVixBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9BWE9LLEFf UkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfRENUQUdPUCksIkRhdGEg Q2FjaGUgVGFnIFJlYWQiLHtmRENUQUdSKFJzVixSZFYsUmROKTt9KQorUTZJTlNOKFkyX2RjdGFn dywiZGN0YWd3KFJzMzIsUnQzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfUkVTVFJJ Q1RfU0xPVDBPTkxZLEFfTk9URV9OT1BBQ0tFVCxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVP UCxBX0NPUEJZSURYLEFfRENUQUdPUCksIkRhdGEgQ2FjaGUgVGFnIFdyaXRlIix7ZkRDVEFHVyhS c1YsUnRWKTt9KQorCisKK1E2SU5TTihZMl9sMmtpbGwsImwya2lsbCIsQVRUUklCUyhBX1BSSVYs QV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJ Q1RfTk9QQUNLRVQsQV9DQUNIRU9QLEFfTDJGTFVTSE9QKSwiTDIgQ2FjaGUgSW52YWxpZGF0ZSIs e2ZMMktJTEwoKTt9KQorUTZJTlNOKFk0X2wydGFndywibDJ0YWd3KFJzMzIsUnQzMikiLEFUVFJJ QlMoQV9QUklWLEFfTk9URV9CQURUQUdfVU5ERUYsQV9OT1RFX1BSSVYsQV9SRVNUUklDVF9TTE9U ME9OTFksQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9DQUNIRU9QLEFfQ09Q QllJRFgsQV9MMlRBR09QKSwiTDIgQ2FjaGUgVGFnIFdyaXRlIix7ZkwyVEFHVyhSc1YsUnRWKTt9 KQorUTZJTlNOKFk0X2wydGFnciwiUmQzMj1sMnRhZ3IoUnMzMikiLEFUVFJJQlMoQV9QUklWLEFf Tk9URV9CQURUQUdfVU5ERUYsQV9OT1RFX1BSSVYsQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9QQUNL RVRfQVhPSyxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX0NBQ0hFT1AsQV9DT1BCWUlEWCxBX0wyVEFH T1ApLCJMMiBDYWNoZSBUYWcgUmVhZCIse2ZMMlRBR1IoUnNWLFJkVixSZE4pO30pCisKK1E2SU5T TihZMl9sMmNsZWFuaW52aWR4LCJsMmNsZWFuaW52aWR4KFJzMzIpIixBVFRSSUJTKEFfUFJJVixB X05PVEVfUFJJVixBX05PVEVfQVhPSyxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfUkVTVFJJQ1Rf U0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFfTDJGTFVTSE9QKSwiTDIgQ2FjaGUgQ2xl YW4gYW5kIEludmFsaWRhdGUgSW5kZXgiLHtmTDJDTEVBTklOVklEWChSc1YpOyB9KQorUTZJTlNO KFk1X2wyY2xlYW5pZHgsImwyY2xlYW5pZHgoUnMzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9Q UklWLEFfTk9URV9BWE9LLEFfUkVTVFJJQ1RfUEFDS0VUX0FYT0ssQV9SRVNUUklDVF9TTE9UME9O TFksQV9DQUNIRU9QLEFfQ09QQllJRFgsQV9MMkZMVVNIT1ApLCJMMiBDYWNoZSBDbGVhbiBieSBJ bmRleCIse2ZMMkNMRUFOSURYKFJzVik7IH0pCitRNklOU04oWTVfbDJpbnZpZHgsImwyaW52aWR4 KFJzMzIpIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJVixBX05PVEVfQVhPSyxBX1JFU1RSSUNU X1BBQ0tFVF9BWE9LLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ0FDSEVPUCxBX0NPUEJZSURYLEFf TDJGTFVTSE9QKSwiTDIgQ2FjaGUgSW52YWxpZGF0ZSBieSBJbmRleCIse2ZMMklOVklEWChSc1Yp OyB9KQorCisKKworUTZJTlNOKFk0X2wyZmV0Y2gsImwyZmV0Y2goUnMzMixSdDMyKSIsQVRUUklC UyhBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9BWE9L KSwiTDIgQ2FjaGUgUHJlZmV0Y2giLAoreyBmTDJGRVRDSChSc1YsCisJKFJ0ViYweGZmKSwgLypo ZWlnaHQqLworCSgoUnRWPj44KSYweGZmKSwgLyp3aWR0aCovCisJKChSdFY+PjE2KSYweGZmZmYp LCAvKnN0cmlkZSovCisJMCk7IC8qZXh0cmEgYXR0cmliIGZsYWdzKi8KK30pCisKKworCitRNklO U04oWTVfbDJmZXRjaCwibDJmZXRjaChSczMyLFJ0dDMyKSIsQVRUUklCUyhBX1JFU1RSSUNUX1NM T1QwT05MWSxBX1JFU1RSSUNUX1BBQ0tFVF9BWE9LLEFfTk9URV9BWE9LKSwiTDIgQ2FjaGUgUHJl ZmV0Y2giLAoreyBmTDJGRVRDSChSc1YsCisJZkdFVFVIQUxGKDAsUnR0ViksIC8qaGVpZ2h0Ki8K KwlmR0VUVUhBTEYoMSxSdHRWKSwgLyp3aWR0aCovCisJZkdFVFVIQUxGKDIsUnR0ViksIC8qc3Ry aWRlKi8KKwlmR0VUVUhBTEYoMyxSdHRWKSk7IC8qZmxhZ3MqLworfSkKKworUTZJTlNOKFk1X2wy bG9ja2EsIlBkND1sMmxvY2thKFJzMzIpIiwgQVRUUklCUyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9D QUNIRU9QLEFfQ09QQllBRERSRVNTLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfUEFD S0VUX0FYT0ssQV9OT1RFX0FYT0ssQV9SRVNUUklDVF9MQVRFUFJFRCxBX05PVEVfTEFURVBSRUQp LAorIkxvY2sgTDIgY2FjaGUgbGluZSBieSBhZGRyZXNzIiwgeyBmRUFfUkVHKFJzVik7IGZMMkxP Q0tBKEVBLFBkVixQZE4pOyBmSElERShNQVJLX0xBVEVfUFJFRF9XUklURShQZE4pKSB9KTsKKwor CitRNklOU04oWTVfbDJ1bmxvY2thLCJsMnVubG9ja2EoUnMzMikiLCBBVFRSSUJTKEFfUFJJVixB X05PVEVfUFJJVixBX0NBQ0hFT1AsQV9DT1BCWUFERFJFU1MsQV9SRVNUUklDVF9TTE9UME9OTFks QV9SRVNUUklDVF9QQUNLRVRfQVhPSyxBX05PVEVfQVhPSyksICJVbkxvY2sgTDIgY2FjaGUgbGlu ZSBieSBhZGRyZXNzIiwgeyBmRUFfUkVHKFJzVik7IGZMMlVOTE9DS0EoRUEpOyB9KQorCisKKwor UTZJTlNOKFk1X2wyZ3VubG9jaywibDJndW5sb2NrIixBVFRSSUJTKEFfUFJJVixBX05PVEVfUFJJ VixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNUUklDVF9OT1BBQ0tF VCxBX0NBQ0hFT1AsQV9MMkZMVVNIT1ApLCJMMiBHbG9iYWwgVW5sb2NrIix7ZkwyVU5MT0NLKCk7 fSkKKworUTZJTlNOKFk1X2wyZ2NsZWFuLCJsMmdjbGVhbiIsQVRUUklCUyhBX1BSSVYsQV9OT1RF X1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfUkVTVFJJQ1RfTk9Q QUNLRVQsQV9DQUNIRU9QLEFfTDJGTFVTSE9QKSwiTDIgR2xvYmFsIENsZWFuIix7ZkwyQ0xFQU4o KTt9KQorCitRNklOU04oWTVfbDJnY2xlYW5pbnYsImwyZ2NsZWFuaW52IixBVFRSSUJTKEFfUFJJ VixBX05PVEVfUFJJVixBX05PVEVfTk9QQUNLRVQsQV9SRVNUUklDVF9TTE9UME9OTFksQV9SRVNU UklDVF9OT1BBQ0tFVCxBX0NBQ0hFT1AsQV9MMkZMVVNIT1ApLCJMMiBHbG9iYWwgQ2xlYW4gYW5k IEludmFsaWRhdGUiLHtmTDJDTEVBTklOVigpO30pCisKK1E2SU5TTihZNl9sMmdjbGVhbnBhLCJs MmdjbGVhbihSdHQzMikiLEFUVFJJQlMoQV9QUklWLEFfTk9URV9QUklWLEFfTk9URV9OT1BBQ0tF VCxBX1JFU1RSSUNUX1NMT1QwT05MWSxBX1JFU1RSSUNUX05PUEFDS0VULEFfQ0FDSEVPUCxBX0wy RkxVU0hPUCksIkwyIEdsb2JhbCBDbGVhbiBieSBQQSBSYW5nZSIse2ZMMkNMRUFOUEEoUnR0Vik7 fSkKKworUTZJTlNOKFk2X2wyZ2NsZWFuaW52cGEsImwyZ2NsZWFuaW52KFJ0dDMyKSIsQVRUUklC UyhBX1BSSVYsQV9OT1RFX1BSSVYsQV9OT1RFX05PUEFDS0VULEFfUkVTVFJJQ1RfU0xPVDBPTkxZ LEFfUkVTVFJJQ1RfTk9QQUNLRVQsQV9DQUNIRU9QLEFfTDJGTFVTSE9QKSwiTDIgR2xvYmFsIENs ZWFuIGFuZCBJbnZhbGlkYXRlIGJ5IFBBIFJhbmdlIix7ZkwyQ0xFQU5JTlZQQShSdHRWKTt9KQor CisKLS0gCjIuNy40Cgo=