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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 A69ADC07E99 for ; Mon, 5 Jul 2021 23:49:52 +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 21E3E61975 for ; Mon, 5 Jul 2021 23:49:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 21E3E61975 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]:46360 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1m0YLX-0002rC-70 for qemu-devel@archiver.kernel.org; Mon, 05 Jul 2021 19:49:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35634) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1m0Y7e-0004jy-Gl for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:30 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:37352) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1m0Y7W-0004a6-QM for qemu-devel@nongnu.org; Mon, 05 Jul 2021 19:35:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1625528122; x=1657064122; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QG9PvWJmlDgIeS62qP1CPBLVtTLtKzLFXo4PIDAfRHw=; b=fUZgr2blZ6117LL90zkRRLpL56kOKd3PD+iqEpQ0nBtLbwbriADDg8RF a/dxt8UGjEbPen18bdMn4VwZ4Vh9KJ5Xw0mpI7BQTzPs5CX20zittRjKK Ms/b5OKJcocP5PiuyXu62PAuIEvb17ZSW/puk6gFf73MA63B4VhbMOJd1 c=; Received: from unknown (HELO ironmsg05-sd.qualcomm.com) ([10.53.140.145]) by alexa-out-sd-01.qualcomm.com with ESMTP; 05 Jul 2021 16:34:39 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg05-sd.qualcomm.com with ESMTP; 05 Jul 2021 16:34:38 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 041BF1777; Mon, 5 Jul 2021 18:34:38 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH 14/20] Hexagon HVX (target/hexagon) import semantics Date: Mon, 5 Jul 2021 18:34:28 -0500 Message-Id: <1625528074-19440-15-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> References: <1625528074-19440-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.qualcomm.com X-Spam_score_int: -40 X-Spam_score: -4.1 X-Spam_bar: ---- X-Spam_report: (-4.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: ale@rev.ng, peter.maydell@linaro.org, bcain@quicinc.com, richard.henderson@linaro.org, tsimpson@quicinc.com, philmd@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0LmlkZWYgICAgICAgICAgIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgZXh0ZW5zaW9u cwogICAgaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgICAgICAgIEhWWCBpbnN0cnVjdGlvbiBkZWZp bml0aW9ucwoKU3VwcG9ydCBmdW5jdGlvbnMgYWRkZWQgdG8gdGFyZ2V0L2hleGFnb24vb3BfaGVs cGVyLmMKU3VwcG9ydCBmdW5jdGlvbnMgYWRkZWQgdG8gdGFyZ2V0L2hleGFnb24vZ2VucHRyLmMK ClNpZ25lZC1vZmYtYnk6IFRheWxvciBTaW1wc29uIDx0c2ltcHNvbkBxdWljaW5jLmNvbT4KLS0t CiB0YXJnZXQvaGV4YWdvbi9nZW5wdHIuYyAgICAgICAgICAgICAgICB8ICAgOTYgKysKIHRhcmdl dC9oZXhhZ29uL29wX2hlbHBlci5jICAgICAgICAgICAgIHwgICAyMyArCiB0YXJnZXQvaGV4YWdv bi9pbXBvcnRlZC9hbGxleHQuaWRlZiAgICB8ICAgMjUgKwogdGFyZ2V0L2hleGFnb24vaW1wb3J0 ZWQvYWxsaWRlZnMuZGVmICAgfCAgICAxICsKIHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21tdmVj L2V4dC5pZGVmIHwgMjYwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxl cyBjaGFuZ2VkLCAyNzUxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZgogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9o ZXhhZ29uL2ltcG9ydGVkL21tdmVjL2V4dC5pZGVmCgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwppbmRleCBkYTg1MjdkLi40NWM1 YTcxIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYworKysgYi90YXJnZXQvaGV4 YWdvbi9nZW5wdHIuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNwdS5oIgogI2luY2x1 ZGUgImludGVybmFsLmgiCiAjaW5jbHVkZSAidGNnL3RjZy1vcC5oIgorI2luY2x1ZGUgInRjZy90 Y2ctb3AtZ3ZlYy5oIgogI2luY2x1ZGUgImluc24uaCIKICNpbmNsdWRlICJvcGNvZGVzLmgiCiAj aW5jbHVkZSAidHJhbnNsYXRlLmgiCkBAIC00NzQsNSArNDc1LDEwMCBAQCBzdGF0aWMgVENHdiBn ZW5fOGJpdHNvZihUQ0d2IHJlc3VsdCwgVENHdiB2YWx1ZSkKICAgICByZXR1cm4gcmVzdWx0Owog fQogCitzdGF0aWMgaW50cHRyX3QgdnJlZ19zcmNfb2ZmKERpc2FzQ29udGV4dCAqY3R4LCBpbnQg bnVtKQoreworICAgIGludHB0cl90IG9mZnNldCA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwg VlJlZ3NbbnVtXSk7CisKKyAgICBpZiAodGVzdF9iaXQobnVtLCBjdHgtPnZyZWdzX3NlbGVjdCkp IHsKKyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfVlJl Z3NbbnVtXSk7CisgICAgfQorICAgIGlmICh0ZXN0X2JpdChudW0sIGN0eC0+dnJlZ3NfdXBkYXRl ZF90bXApKSB7CisgICAgICAgIG9mZnNldCA9IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgdG1w X1ZSZWdzW251bV0pOworICAgIH0KKyAgICByZXR1cm4gb2Zmc2V0OworfQorCitzdGF0aWMgdm9p ZCBnZW5fbG9nX3ZyZWdfd3JpdGUoaW50cHRyX3Qgc3Jjb2ZmLCBpbnQgbnVtLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFZSZWdXcml0ZVR5cGUgdHlwZSwgaW50IHNsb3RfbnVtLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCwgYm9vbCBo YXNfdmhpc3QpCit7CisgICAgVENHTGFiZWwgKmxhYmVsX2VuZCA9IE5VTEw7CisgICAgaW50cHRy X3QgZHN0b2ZmOworCisgICAgaWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAgICAgVENHdiBjYW5j ZWxsZWQgPSB0Y2dfdGVtcF9sb2NhbF9uZXcoKTsKKyAgICAgICAgbGFiZWxfZW5kID0gZ2VuX25l d19sYWJlbCgpOworCisgICAgICAgIC8qIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZSBzbG90IHdh cyBjYW5jZWxsZWQgKi8KKyAgICAgICAgdGNnX2dlbl9leHRyYWN0X3RsKGNhbmNlbGxlZCwgaGV4 X3Nsb3RfY2FuY2VsbGVkLCBzbG90X251bSwgMSk7CisgICAgICAgIHRjZ19nZW5fYnJjb25kaV90 bChUQ0dfQ09ORF9ORSwgY2FuY2VsbGVkLCAwLCBsYWJlbF9lbmQpOworICAgICAgICB0Y2dfdGVt cF9mcmVlKGNhbmNlbGxlZCk7CisgICAgfQorCisgICAgaWYgKHR5cGUgIT0gRVhUX1RNUCkgewor ICAgICAgICB0Y2dfZ2VuX29yaV90bChoZXhfVlJlZ3NfdXBkYXRlZCwgaGV4X1ZSZWdzX3VwZGF0 ZWQsIDEgPDwgbnVtKTsKKyAgICB9CisgICAgaWYgKGhhc192aGlzdCAmJiB0eXBlID09IEVYVF9O RVcpIHsKKyAgICAgICAgdGNnX2dlbl9vcmlfdGwoaGV4X1ZSZWdzX3NlbGVjdCwgaGV4X1ZSZWdz X3NlbGVjdCwgMSA8PCBudW0pOworICAgIH0KKyAgICBpZiAoaGFzX3ZoaXN0ICYmIHR5cGUgPT0g RVhUX1RNUCkgeworICAgICAgICB0Y2dfZ2VuX29yaV90bChoZXhfVlJlZ3NfdXBkYXRlZF90bXAs IGhleF9WUmVnc191cGRhdGVkX3RtcCwgMSA8PCBudW0pOworICAgIH0KKworICAgIGRzdG9mZiA9 IG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJlX1ZSZWdzW251bV0pOworICAgIGlmIChk c3RvZmYgIT0gc3Jjb2ZmKSB7CisgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9m Ziwgc3Jjb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihNTVZlY3RvciksIHNp emVvZihNTVZlY3RvcikpOworICAgIH0KKworICAgIGlmICh0eXBlID09IEVYVF9UTVApIHsKKyAg ICAgICAgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB0bXBfVlJlZ3NbbnVtXSk7 CisgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLAorICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVvZihNTVZlY3RvciksIHNpemVvZihNTVZlY3RvcikpOwor ICAgIH0KKworICAgIGlmIChpc19wcmVkaWNhdGVkKSB7CisgICAgICAgIGdlbl9zZXRfbGFiZWwo bGFiZWxfZW5kKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdlbl9sb2dfdnJlZ193cml0ZV9w YWlyKGludHB0cl90IHNyY29mZiwgaW50IG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFZSZWdXcml0ZVR5cGUgdHlwZSwgaW50IHNsb3RfbnVtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkLCBib29sIGhhc192aGlz dCkKK3sKKyAgICBnZW5fbG9nX3ZyZWdfd3JpdGUoc3Jjb2ZmLCBudW0gXiAwLCB0eXBlLCBzbG90 X251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgaXNfcHJlZGljYXRlZCwgaGFzX3ZoaXN0KTsK KyAgICBzcmNvZmYgKz0gc2l6ZW9mKE1NVmVjdG9yKTsKKyAgICBnZW5fbG9nX3ZyZWdfd3JpdGUo c3Jjb2ZmLCBudW0gXiAxLCB0eXBlLCBzbG90X251bSwKKyAgICAgICAgICAgICAgICAgICAgICAg aXNfcHJlZGljYXRlZCwgaGFzX3ZoaXN0KTsKK30KKworc3RhdGljIHZvaWQgZ2VuX2xvZ19xcmVn X3dyaXRlKGludHB0cl90IHNyY29mZiwgaW50IG51bSwgaW50IHZuZXcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IHNsb3RfbnVtLCBib29sIGlzX3ByZWRpY2F0ZWQpCit7Cisg ICAgVENHTGFiZWwgKmxhYmVsX2VuZCA9IE5VTEw7CisgICAgaW50cHRyX3QgZHN0b2ZmOworCisg ICAgaWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAgICAgVENHdiBjYW5jZWxsZWQgPSB0Y2dfdGVt cF9sb2NhbF9uZXcoKTsKKyAgICAgICAgbGFiZWxfZW5kID0gZ2VuX25ld19sYWJlbCgpOworCisg ICAgICAgIC8qIERvbid0IGRvIGFueXRoaW5nIGlmIHRoZSBzbG90IHdhcyBjYW5jZWxsZWQgKi8K KyAgICAgICAgdGNnX2dlbl9leHRyYWN0X3RsKGNhbmNlbGxlZCwgaGV4X3Nsb3RfY2FuY2VsbGVk LCBzbG90X251bSwgMSk7CisgICAgICAgIHRjZ19nZW5fYnJjb25kaV90bChUQ0dfQ09ORF9ORSwg Y2FuY2VsbGVkLCAwLCBsYWJlbF9lbmQpOworICAgICAgICB0Y2dfdGVtcF9mcmVlKGNhbmNlbGxl ZCk7CisgICAgfQorCisgICAgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1 cmVfUVJlZ3NbbnVtXSk7CisgICAgaWYgKGRzdG9mZiAhPSBzcmNvZmYpIHsKKyAgICAgICAgdGNn X2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemVvZihNTVFSZWcpLCBzaXpl b2YoTU1RUmVnKSk7CisgICAgfQorCisgICAgaWYgKGlzX3ByZWRpY2F0ZWQpIHsKKyAgICAgICAg dGNnX2dlbl9vcmlfdGwoaGV4X1FSZWdzX3VwZGF0ZWQsIGhleF9RUmVnc191cGRhdGVkLCAxIDw8 IG51bSk7CisgICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfZW5kKTsKKyAgICB9Cit9CisKICNp bmNsdWRlICJ0Y2dfZnVuY3NfZ2VuZXJhdGVkLmMuaW5jIgogI2luY2x1ZGUgInRjZ19mdW5jX3Rh YmxlX2dlbmVyYXRlZC5jLmluYyIKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL29wX2hlbHBl ci5jIGIvdGFyZ2V0L2hleGFnb24vb3BfaGVscGVyLmMKaW5kZXggNGUxOTZmOS4uMGZjZDcwYSAx MDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vb3BfaGVscGVyLmMKKysrIGIvdGFyZ2V0L2hleGFn b24vb3BfaGVscGVyLmMKQEAgLTEyMTQsNiArMTIxNCwyOSBAQCBmbG9hdDY0IEhFTFBFUihkZm1w eWhoKShDUFVIZXhhZ29uU3RhdGUgKmVudiwgZmxvYXQ2NCBSeHhWLAogICAgIHJldHVybiBSeHhW OwogfQogCisvKiBMb2cgYSB3cml0ZSB0byBIVlggdmVjdG9yICovCitzdGF0aWMgdm9pZCBsb2df dnJlZ193cml0ZShDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IG51bSwgdm9pZCAqdmFyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgVlJlZ1dyaXRlVHlwZSB0eXBlKQoreworICAgIFZSZWdN YXNrIHJlZ251bV9tYXNrID0gKChWUmVnTWFzaykxKSA8PCBudW07CisKKyAgICBIRVhfREVCVUdf TE9HKCJsb2dfdnJlZ193cml0ZVslZF1cbiIsIG51bSk7CisKKyAgICBlbnYtPlZSZWdzX3VwZGF0 ZWQgICAgICB8PSAodHlwZSAhPSBFWFRfVE1QKSA/IHJlZ251bV9tYXNrIDogMDsKKyAgICBlbnYt PlZSZWdzX3NlbGVjdCAgICAgICB8PSAodHlwZSA9PSBFWFRfTkVXKSA/IHJlZ251bV9tYXNrIDog MDsKKyAgICBlbnYtPlZSZWdzX3VwZGF0ZWRfdG1wICB8PSAodHlwZSA9PSBFWFRfVE1QKSA/IHJl Z251bV9tYXNrIDogMDsKKyAgICBlbnYtPmZ1dHVyZV9WUmVnc1tudW1dID0gKihNTVZlY3RvciAq KXZhcjsKKyAgICBpZiAodHlwZSA9PSBFWFRfVE1QKSB7CisgICAgICAgIGVudi0+dG1wX1ZSZWdz W251bV0gPSBlbnYtPmZ1dHVyZV9WUmVnc1tudW1dOworICAgIH0KK30KKworc3RhdGljIHZvaWQg bG9nX21tdmVjdG9yX3dyaXRlKENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgbnVtLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1NVmVjdG9yIHZhciwgVlJlZ1dyaXRlVHlwZSB0eXBl KQoreworICAgIGxvZ192cmVnX3dyaXRlKGVudiwgbnVtLCAmdmFyLCB0eXBlKTsKK30KKwogc3Rh dGljIHZvaWQgY2FuY2VsX3Nsb3QoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IHNsb3Qp CiB7CiAgICAgSEVYX0RFQlVHX0xPRygiU2xvdCAlZCBjYW5jZWxsZWRcbiIsIHNsb3QpOwpkaWZm IC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsZXh0LmlkZWYgYi90YXJnZXQvaGV4 YWdvbi9pbXBvcnRlZC9hbGxleHQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi45ZDRiMjNlCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQv YWxsZXh0LmlkZWYKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0y MDIxIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICog IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgor ICogVG9wIGxldmVsIGZpbGUgZm9yIGFsbCBpbnN0cnVjdGlvbiBzZXQgZXh0ZW5zaW9ucworICov CisjZGVmaW5lIEVYVE5BTUUgbW12ZWMKKyNkZWZpbmUgRVhUU1RSICJtbXZlYyIKKyNpbmNsdWRl ICJtbXZlYy9leHQuaWRlZiIKKyN1bmRlZiBFWFROQU1FCisjdW5kZWYgRVhUU1RSCmRpZmYgLS1n aXQgYS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYgYi90YXJnZXQvaGV4YWdv bi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYKaW5kZXggMmFhY2UyOS4uZWUyNTNiOCAxMDA2NDQKLS0t IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmCisrKyBiL3RhcmdldC9oZXhh Z29uL2ltcG9ydGVkL2FsbGlkZWZzLmRlZgpAQCAtMjgsMyArMjgsNCBAQAogI2luY2x1ZGUgInNo aWZ0LmlkZWYiCiAjaW5jbHVkZSAic3lzdGVtLmlkZWYiCiAjaW5jbHVkZSAic3ViaW5zbnMuaWRl ZiIKKyNpbmNsdWRlICJhbGxleHQuaWRlZiIKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2lt cG9ydGVkL21tdmVjL2V4dC5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0 LmlkZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNhNWE2MAotLS0gL2Rl di9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21tdmVjL2V4dC5pZGVmCkBAIC0w LDAgKzEsMjYwNiBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElu bm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKgorICogICAgIEhPWUE6IE1VTFRJIE1FRElBIElOU1RSVUNJVE9OUworICoKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRVhUSU5TTgorI2RlZmluZSBFWFRJTlNOIFE2 SU5TTgorI2RlZmluZSBfX1NFTEZfREVGX0VYVElOU04gMQorI2VuZGlmCisKKyNpZm5kZWYgTk9f TU1WRUMKKworI2RlZmluZSBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSBcCit7IFwKKyAg ICBmSElERShpbnQgaTspIFwKKyAgICBmVkZPUkVBQ0goV0lEVEgsIGkpIHtcCisgICAgICAgIENP REUgO1wKKyAgICB9IFwKK30KKworCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX0FOWV9TTE9U KFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFY LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgIFwKK0RFU0NSLCBET19GT1Jf RUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfQU5Z X1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lO U05fQU5ZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RF KSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVkFfRFYpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQor CisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcs U1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VC TEVfVkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOX1NISUZUX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNO KFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMpLCAg XAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisKKworI2RlZmluZSBJ VEVSQVRPUl9JTlNOX1NISUZUX1NMT1RfVlZfTEFURShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENP REUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisK KyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChXSURUSCxUQUcsU1lOVEFYLFNZTlRB WDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UKFdJRFRILFRBRyxTWU5U QVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoV0lE VEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNI X0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xP VChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9Q RVJNVVRFX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ERVAoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBc CitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVlApLAorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RFUChXSURU SCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRF X1NMT1RfREVQKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFU T1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYLERFU0NSLENP REUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUF9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkp CisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19ERVAoV0lE VEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMpLCAgXAorREVTQ1IsIERPX0ZPUl9F QUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVf U0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJ VEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgyLERF U0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9NUFlfU0xPVChXSURUSCxUQUcsIFNZ TlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIFwKK0FUVFJJQlMo QV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUo V0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURU SCxUQUcsIFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIFwK K0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgpLCAgXAorREVTQ1IsIERPX0ZPUl9F QUNIX0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX01QWV9TTE9U KFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX01Q WV9TTE9UKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUp IFwKK0lURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRBWDIsREVTQ1Is Q09ERSkKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQyhXSURU SCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EViksICBcCitERVNDUiwgRE9fRk9SX0VB Q0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFU T1JfSU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUp CisKKworCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQzIoV0lE VEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZ TlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EVixBX0NWSV9WWF9WU1JD MF9JU19EU1QpLCBERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZp bmUgSVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsREVTQ1Is Q09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX1ZYX0RWLEFfUkVTVFJJQ1RfU0xPVDJPTkxZKSwgREVTQ1IsIERPX0ZPUl9FQUNI X0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fVkhJU1RMSUtFKFdJ RFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJXzRTTE9UKSwgIFwKK0RFU0NSLCBmSElERSht bXZlY3Rvcl90IGlucHV0OykgaW5wdXQgPSBmVE1QVkRBVEEoKTsgRE9fRk9SX0VBQ0hfQ09ERShX SURUSCwgQ09ERSkpCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKgorKiBNTVZFQ1RPUiBNRU1PUlkgT1BFUkFUSU9OUyAtIE5PIE5BUEFMSSBWMQorKgorKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNkZWZpbmUgSVRFUkFUT1Jf SU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RF KSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVlhfRFYpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQor CisjZGVmaW5lIElURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxU QUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9E T1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworCisKKyNkZWZp bmUgSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixD T0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9D VkksQV9DVklfVlMpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQor CisjZGVmaW5lIElURVJBVE9SX0lOU04yX1NISUZUX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFY LFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lE VEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fQU5Z X1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNU QUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksICBcCitERVND UiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAor SVRFUkFUT1JfSU5TTl9BTllfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUp CisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9TTE9UX05PVjEoV0lEVEgsVEFHLCBTWU5U QVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBcCitBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJ RFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9OT1YxKFdJ RFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwgIFwKK0RFU0NSLCBET19GT1JfRUFD SF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NM T1RUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9S X0lOU05fUEVSTVVURV9TTE9UKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZp bmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfREVQVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgs REVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwKKworCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVf U0xPVF9ERVBUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lU RVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RFUF9OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NS LENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19O T1YxKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lO VEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwgIFwKK0RFU0NSLCBE T19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BF Uk1VVEVfU0xPVF9ET1VCTEVfVkVDX0RFUFRfTk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENP REUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUF9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkp CisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUNfTk9WMShX SURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJN VVRFX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisK KyNkZWZpbmUgTkFSUk9XSU5HX1NISUZUX05PVjEoSVRFUlNJWkUsVEFHLERTVE0sRFNUVFlQRSxT UkNUWVBFLFNZTk9QVFMsU0FURlVOQyxSTkRGVU5DLFNIQU1UTUFTSykgXAorSVRFUkFUT1JfSU5T Tl9TSElGVF9TTE9UX05PVjEoSVRFUlNJWkUsVEFHLCBcCisiVmQzMi4iICNEU1RUWVBFICI9dmFz cihWdTMyLiIgI1NSQ1RZUEUgIixWdjMyLiIgI1NSQ1RZUEUgIixSdDgpIiAjU1lOT1BUUywgXAor IlZlY3RvciBzaGlmdCByaWdodCBhbmQgc2h1ZmZsZSIsIFwKKyAgICBmSElERShpbnQgKXNoYW10 ID0gUnRWICYgU0hBTVRNQVNLOyBcCisgICAgRFNUTSgwLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMo Uk5ERlVOQyhWdlYuU1JDVFlQRVtpXSxzaGFtdCkgPj4gc2hhbXQpKTsgXAorICAgIERTVE0oMSxW ZFYuU1JDVFlQRVtpXSxTQVRGVU5DKFJOREZVTkMoVnVWLlNSQ1RZUEVbaV0sc2hhbXQpID4+IHNo YW10KSkpCisKKyNkZWZpbmUgTU1WRUNfQVZHU19OT1YxKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRI LCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZ UEUsICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIs ICAgICAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAg ICAgICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdTKCAgICAgICBXSURUSCwgIFZ1Vi5TUkNb aV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZh dmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixW djMyKTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JD Iik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBSb3VuZCJERVNDUiwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1 Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJ RFRILHZuYXZnIyNUWVBFLCAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dm5hdmciVFlQRTIi KFZ1MzIsVnYzMikiLCAgICAgICAgICJWZDMyLiIjREVTVCI9dm5hdmcoVnUzMi4iI1NSQyIsVnYz Mi4iI1NSQyIpIiwgICAgICAgICAiVmVjdG9yIE5lZ2F0aXZlIEF2ZXJhZ2UgIkRFU0NSLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZOQVZHUyggICAgICBXSURU SCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKQorCisgICNkZWZpbmUgTU1WRUNfQVZHVV9OT1Yx KFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9 dmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIu IiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVkFWR1UoICAg V0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NM T1RfTk9WMShXSURUSCx2YXZnIyNUWVBFIyNybmQsICAgICAgICAgICAgICAgICAgICJWZDMyPXZh dmciVFlQRTIiKFZ1MzIsVnYzMik6cm5kIiwgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIj U1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgIlZlY3RvciBBdmVyYWdlICUgUm91bmQiREVTQ1Is ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZBVkdVUk5EKFdJ RFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpCisKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisqCisqIE1NVkVDVE9SIE1FTU9SWSBPUEVSQVRJT05TCisqCisqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIE1NVkVDX0VBQ0hfRUEo VEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsQkVIKSBcCitFWFRJTlNOKFY2XyMj VEFHIyNfcGksICAgICAgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZTlRBWEIsQVRUUklCLERF U0NSLHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9JKFJ4VixWRUNfU0NBTEUoc2lWKSk7IH0pIFwK K0VYVElOU04oVjZfIyNUQUcjI19haSwgICAgICBTWU5UQVhBICIoUnQzMisjczQpIiBOVCBTWU5U QVhCLEFUVFJJQixERVNDUix7IGZFQV9SSShSdFYsVkVDX1NDQUxFKHNpVikpOyBCRUg7fSkgXAor RVhUSU5TTihWNl8jI1RBRyMjX3BwdSwgICAgICBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lO VEFYQixBVFRSSUIsREVTQ1IseyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBNX00oUnhWLE11Vik7IH0p IFwKKworCisjZGVmaW5lIE1NVkVDX0NPTkRfRUFDSF9FQV9UUlVFKFRBRyxERVNDUixBVFRSSUIs TlQsU1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAsQkVIKSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfcHJl ZF9waSwgICAgICAiaWYgKCIgI1NZTlRBWFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5U IFNZTlRBWEIsIEFUVFJJQixERVNDUiwgeyBpZiAoZkxTQk9MRChTWU5UQVhQIyNWKSkgeyBmRUFf UkVHKFJ4Vik7IEJFSDsgZlBNX0koUnhWLHNpVipmVkVDU0laRSgpKTsgfSBlbHNlIHtDQU5DRUw7 fX0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19wcmVkX2FpLCAgICAgICJpZiAoIiAjU1lOVEFYUCAi NCkgIiBTWU5UQVhBICIoUnQzMisjczQpIiBOVCBTWU5UQVhCLCBBVFRSSUIsREVTQ1IsICB7IGlm IChmTFNCT0xEKFNZTlRBWFAjI1YpKSB7IGZFQV9SSShSdFYsc2lWKmZWRUNTSVpFKCkpOyBCRUg7 fSBlbHNlIHtDQU5DRUw7fX0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19wcmVkX3BwdSwgICAgICJp ZiAoIiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFYQixBVFRS SUIsREVTQ1IsICB7IGlmIChmTFNCT0xEKFNZTlRBWFAjI1YpKSB7IGZFQV9SRUcoUnhWKTsgQkVI OyBmUE1fTShSeFYsTXVWKTsgfSBlbHNlIHtDQU5DRUw7fX0pIFwKKworI2RlZmluZSBNTVZFQ19D T05EX0VBQ0hfRUFfRkFMU0UoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lO VEFYUCxCRUgpIFwKK0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9waSwgICAgICJpZiAoISIgI1NZ TlRBWFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NS LHsgaWYgKGZMU0JPTEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9J KFJ4VixzaVYqZlZFQ1NJWkUoKSk7IH0gZWxzZSB7Q0FOQ0VMO319KSBcCitFWFRJTlNOKFY2XyMj VEFHIyNfbnByZWRfYWksICAgICAiaWYgKCEiICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSdDMy KyNzNCkiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLCB7IGlmIChmTFNCT0xETk9UKFNZTlRBWFAj I1YpKSB7IGZFQV9SSShSdFYsc2lWKmZWRUNTSVpFKCkpOyBCRUg7fSBlbHNlIHtDQU5DRUw7fX0p IFwKK0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9wcHUsICAgICJpZiAoISIgI1NZTlRBWFAgIjQp ICIgU1lOVEFYQSAiKFJ4MzIrK011MikiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgaWYgKGZM U0JPTEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9NKFJ4VixNdVYp OyB9IGVsc2Uge0NBTkNFTDt9fSkKKworI2RlZmluZSBNTVZFQ19DT05EX0VBQ0hfRUEoVEFHLERF U0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK01NVkVDX0NPTkRf RUFDSF9FQV9UUlVFKFRBRyxERVNDUixBVFRSSUIsTlQsU1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAs QkVIKSBcCitNTVZFQ19DT05EX0VBQ0hfRUFfRkFMU0UoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5U QVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpCisKKworI2RlZmluZSBWRUNfU0NBTEUoWCkgWCpmVkVD U0laRSgpCisKKworI2RlZmluZSBNTVZFQ19MRChUQUcsREVTQ1IsQVRUUklCLE5UKSBNTVZFQ19F QUNIX0VBKFRBRyxERVNDUixBVFRSSUIsTlQsIlZkMzI9dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRW KSkKKyNkZWZpbmUgTU1WRUNfTERDKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEo VEFHIyNfY3VyLERFU0NSLEFUVFJJQixOVCwiVmQzMi5jdXI9dm1lbSIsIiIsZkxPQURNTVYoRUEs VmRWKSkKKyNkZWZpbmUgTU1WRUNfTERUKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hf RUEoVEFHIyNfdG1wLERFU0NSLEFUVFJJQixOVCwiVmQzMi50bXA9dm1lbSIsIiIsZkxPQURNTVYo RUEsVmRWKSkKKyNkZWZpbmUgTU1WRUNfTERVKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VB Q0hfRUEoVEFHLERFU0NSLEFUVFJJQixOVCwiVmQzMj12bWVtdSIsIiIsZkxPQURNTVZVKEVBLFZk VikpCisKKworI2RlZmluZSBNTVZFQ19TVFEoVEFHLERFU0NSLEFUVFJJQixOVCkgXAorTU1WRUNf RUFDSF9FQShUQUcjI19xcHJlZCxERVNDUixBVFRSSUIsTlQsImlmIChRdjQpIHZtZW0iLCI9VnMz MiIsZlNUT1JFTU1WUShFQSxWc1YsUXZWKSkgXAorTU1WRUNfRUFDSF9FQShUQUcjI19ucXByZWQs REVTQ1IsQVRUUklCLE5ULCJpZiAoIVF2NCkgdm1lbSIsIj1WczMyIixmU1RPUkVNTVZOUShFQSxW c1YsUXZWKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyogTUFQUElORyBGT1IgVk1FTXMKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNk ZWZpbmUgQVRUUl9WTUVNIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNCisjZGVmaW5lIEFUVFJf Vk1FTVUgQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVk0sQV9DVklfVlAKKworCitNTVZFQ19MRCh2 TDMyYiwgICJBbGlnbmVkIFZlY3RvciBMb2FkIiwgICAgICAgIEFUVFJJQlMoQVRUUl9WTUVNLEFf TE9BRCxBX0NWSV9WQSksKQorTU1WRUNfTERDKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQg Q3VyIiwJQVRUUklCUyhBVFRSX1ZNRU0sQV9MT0FELEFfQ1ZJX05FVyxBX0NWSV9WQSksKQorTU1W RUNfTERUKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgVG1wIiwJQVRUUklCUyhBVFRSX1ZN RU0sQV9MT0FELEFfQ1ZJX1RNUCksKQorCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmIsIkNvbmRp dGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQiLEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NW SV9WQSksLCJWZDMyPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFD SF9FQSh2TDMyYl9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRS SUJTKEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfVkEsQV9DVklfTkVXKSwsIlZkMzIuY3VyPXZtZW0i LCxQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl90bXAsIkNv bmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgVG1wIixBVFRSSUJTKEFUVFJfVk1FTSxBX0xP QUQsQV9DVklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKKwor TU1WRUNfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9W TUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCwidm1lbSIsIj1WczMy IixmU1RPUkVNTVYoRUEsVnNWKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBW ZWN0b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9O TFksQV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEsVnNWKSkKKworCitN TVZFQ19TVFEodlMzMmIsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLCAgICAgIEFUVFJJQlMoQVRU Ul9WTUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCkKKworTU1WRUNf TERVKHZMMzJVYiwgIlVuYWxpZ25lZCBWZWN0b3IgTG9hZCIsICAgICBBVFRSSUJTKEFUVFJfVk1F TVUsQV9MT0FELEFfUkVTVFJJQ1RfTk9TTE9UMSksKQorCitNTVZFQ19FQUNIX0VBKHZTMzJVYiwi VW5hbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU1VLEFfU1RPUkUsQV9SRVNU UklDVF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLGZTVE9SRU1NVlUoRUEsVnNWKSkKKworTU1W RUNfQ09ORF9FQUNIX0VBKHZTMzJVYiwiVW5hbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhB VFRSX1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLFB2 LGZTVE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNfRUFDSF9FQSh2UzMyYl9uZXcsIkFsaWduZWQg VmVjdG9yIFN0b3JlIE5ldyIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9E T1RORVdWQUxVRSxBX1JFU1RSSUNUX1NMT1QwT05MWSksLCJ2bWVtIiwiPU9zOC5uZXciLGZTVE9S RU1NVihFQSxmTkVXVlJFRyhPc04pKSkKKworLy8gVjY1IHN0b3JlIHJlbGFzZSwgemVybyBieXRl IHN0b3JlCitNTVZFQ19FQUNIX0VBKHZTMzJiX3NybHMsIkFsaWduZWQgVmVjdG9yIFNjYXR0ZXIg UmVsZWFzZSIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9TQ0FUVEVSX1JFTEVBU0Us QV9DVklfTkVXLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwsInZtZW0iLCI6c2NhdHRlcl9yZWxlYXNl IixmU1RPUkVSRUxFQVNFKEVBLDApKQorCisKKworTU1WRUNfQ09ORF9FQUNIX0VBKHZTMzJiX25l dywiQWxpZ25lZCBWZWN0b3IgU3RvcmUgTmV3IixBVFRSSUJTKEFUVFJfVk1FTSxBX1NUT1JFLEFf Q1ZJX05FVyxBX0RPVE5FV1ZBTFVFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwsInZtZW0iLCI9T3M4 Lm5ldyIsUHYsZlNUT1JFTU1WKEVBLGZORVdWUkVHKE9zTikpKQorCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9QRVJBVElPTlMgLSBO T04gVEVNUE9SQUwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNk ZWZpbmUgQVRUUl9WTUVNX05UIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNCisKK01NVkVDX0VB Q0hfRUEodlMzMmJfbnQsIkFsaWduZWQgVmVjdG9yIFN0b3JlIC0gTm9uIHRlbXBvcmFsIixBVFRS SUJTKEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ1ZJX1ZBKSwi Om50Iiwidm1lbSIsIj1WczMyIixmU1RPUkVNTVYoRUEsVnNWKSkKK01NVkVDX0NPTkRfRUFDSF9F QSh2UzMyYl9udCwiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBOb24gdGVtcG9yYWwiLEFUVFJJQlMo QVRUUl9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCI6bnQi LCJ2bWVtIiwiPVZzMzIiLFB2LGZTVE9SRU1NVihFQSxWc1YpKQorCitNTVZFQ19FQUNIX0VBKHZT MzJiX250X25ldywiQWxpZ25lZCBWZWN0b3IgU3RvcmUgTmV3IC0gTm9uIHRlbXBvcmFsIixBVFRS SUJTKEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfQ1ZJX05FVyxBX0RPVE5FV1ZBTFVFLEFfUkVTVFJJ Q1RfU0xPVDBPTkxZKSwiOm50Iiwidm1lbSIsIj1PczgubmV3IixmU1RPUkVNTVYoRUEsZk5FV1ZS RUcoT3NOKSkpCitNTVZFQ19DT05EX0VBQ0hfRUEodlMzMmJfbnRfbmV3LCJBbGlnbmVkIFZlY3Rv ciBTdG9yZSBOZXcgLSBOb24gdGVtcG9yYWwiLEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUs QV9DVklfTkVXLEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCI6bnQiLCJ2bWVt IiwiPU9zOC5uZXciLFB2LGZTVE9SRU1NVihFQSxmTkVXVlJFRyhPc04pKSkKKworCitNTVZFQ19T VFEodlMzMmJfbnQsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBOb24gdGVtcG9yYWwiLCAgICAg IEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklf VkEpLCI6bnQiKQorCitNTVZFQ19MRCh2TDMyYl9udCwgICJBbGlnbmVkIFZlY3RvciBMb2FkIC0g Tm9uIHRlbXBvcmFsIiwgICAgICAgQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1ZB KSwiOm50IikKK01NVkVDX0xEQyh2TDMyYl9udCwgICJBbGlnbmVkIFZlY3RvciBMb2FkIEN1ciAt IE5vbiB0ZW1wb3JhbCIsCUFUVFJJQlMoQVRUUl9WTUVNX05ULEFfTE9BRCxBX0NWSV9ORVcsQV9D VklfVkEpLCI6bnQiKQorTU1WRUNfTERUKHZMMzJiX250LCAgIkFsaWduZWQgVmVjdG9yIExvYWQg VG1wIC0gTm9uIHRlbXBvcmFsIiwJQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1RN UCksIjpudCIpCisKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9udCwiQ29uZGl0aW9uYWwgQWxp Z25lZCBWZWN0b3IgTG9hZCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9DVklfVkEpLCwiVmQzMj12 bWVtIiwiOm50IixQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMy Yl9udF9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRSSUJTKEFU VFJfVk1FTV9OVCxBX0NWSV9WQSxBX0NWSV9ORVcpLCwiVmQzMi5jdXI9dm1lbSIsIjpudCIsUHYs ZkxPQURNTVYoRUEsVmRWKTspCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmJfbnRfdG1wLCJDb25k aXRpb25hbCBBbGlnbmVkIFZlY3RvciBMb2FkIFRtcCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9D VklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCI6bnQiLFB2LGZMT0FETU1WKEVBLFZkVik7KQorCisK KyN1bmRlZiBWRUNfU0NBTEUKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBWZWN0b3IgQWxpZ25tZW50CisgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFZBTElHTkIoU0hJ RlQpICBcCisgICAgZkhJREUoaW50IGk7KSBcCisgICAgZm9yKGkgPSAwOyBpIDwgZlZCWVRFUygp OyBpKyspIHtcCisgICAgICAgIFZkVi51YltpXSA9IChpK1NISUZUPj1mVkJZVEVTKCkpID8gVnVW LnViW2krU0hJRlQtZlZCWVRFUygpXSA6IFZ2Vi51YltpK1NISUZUXTtcCisJfQorCitFWFRJTlNO KFY2X3ZhbGlnbmIsICAiVmQzMj12YWxpZ24oVnUzMixWdjMyLFJ0OCkiLCAgQVRUUklCUyhBX0VY VEVOU0lPTixBX0NWSSxBX0NWSV9WUCksIkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0OCBhcyBjb250 cm9sIiwKK3sKKwl1bnNpZ25lZCBzaGlmdCA9IFJ0ViAmIChmVkJZVEVTKCktMSk7CisJVkFMSUdO QihzaGlmdCkKK30pCitFWFRJTlNOKFY2X3ZsYWxpZ25iLCAiVmQzMj12bGFsaWduKFZ1MzIsVnYz MixSdDgpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCksIkFsaWduIFR3byB2 ZWN0b3JzIGJ5IFJ0OCBhcyBjb250cm9sIiwKK3sKKwl1bnNpZ25lZCBzaGlmdCA9IGZWQllURVMo KSAtIChSdFYgJiAoZlZCWVRFUygpLTEpKTsKKwlWQUxJR05CKHNoaWZ0KQorfSkKK0VYVElOU04o VjZfdmFsaWduYmksICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsI3UzKSIsIAlBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRy b2wiLAoreworCVZBTElHTkIodWlWKQorfSkKK0VYVElOU04oVjZfdmxhbGlnbmJpLCJWZDMyPXZs YWxpZ24oVnUzMixWdjMyLCN1MykiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQ KSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVkIHNo aWZ0ID0gZlZCWVRFUygpIC0gdWlWOworCVZBTElHTkIoc2hpZnQpCit9KQorCitFWFRJTlNOKFY2 X3Zyb3IsICJWZDMyPXZyb3IoVnUzMixSdDMyKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVlApLAorIkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0MzIgYXMgY29udHJvbCIsCit7CisJ ZkhJREUoaW50IGs7KQorCWZvciAoaz0wO2s8ZlZCWVRFUygpO2srKykgeworCQlWZFYudWJba10g PSBWdVYudWJbKGsrUnRWKSYoZlZCWVRFUygpLTEpXTsKKwl9CisJfSkKKworCisKKworCisKKwor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisqIFVucGFjayBlbGVtZW50cyB3aXRoIHplcm8vc2lnbiBleHRlbmQgYW5kIGNyb3Nz IGxhbmUgcGVybXV0ZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9V QkxFX1ZFQyg4LHZ1bnBhY2t1YiwgICJWZGQzMj12dW5wYWNrdWIoVnUzMikiLCAiVmRkMzIudWg9 dnVucGFjayhWdTMyLnViKSIsICJVbnBhY2sgYnl0ZSB3aXRoIHplcm8tZXh0ZW5kIiwgICAgIGZW QVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdWgsIGkpICA9IGZaRThfMTYoIFZ1Vi51YltpXSkp CitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZ1bnBhY2tiLCAgICJW ZGQzMj12dW5wYWNrYihWdTMyKSIsICAiVmRkMzIuaD12dW5wYWNrKFZ1MzIuYikiLCAgICJVbnBh Y2sgYnl0ZXMgd2l0aCBzaWduLWV4dGVuZCIsICAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRk ViwgaCwgIGkpICA9IGZTRThfMTYoIFZ1Vi5iW2ldICkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRF X1NMT1RfRE9VQkxFX1ZFQygxNix2dW5wYWNrdWgsICJWZGQzMj12dW5wYWNrdWgoVnUzMikiLCAi VmRkMzIudXc9dnVucGFjayhWdTMyLnVoKSIsICJVbnBhY2sgaGFsdmVzIHdpdGggemVyby1leHRl bmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdXcsIGkpICA9IGZaRTE2XzMyKFZ1 Vi51aFtpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2dW5w YWNraCwgICJWZGQzMj12dW5wYWNraChWdTMyKSIsICAiVmRkMzIudz12dW5wYWNrKFZ1MzIuaCki LCAgICJVbnBhY2sgaGFsdmVzIHdpdGggc2lnbi1leHRlbmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9B Q0NFU1MoVmRkViwgdywgIGkpICA9IGZTRTE2XzMyKFZ1Vi5oW2ldICkpCisKK0lURVJBVE9SX0lO U04yX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsIHZ1bnBhY2tvYiwgIlZ4eDMyfD12dW5wYWNr b2IoVnUzMikiLCAiVnh4MzIuaHw9dnVucGFja28oVnUzMi5iKSIsICJVbnBhY2sgYnl0ZSB0byBv ZGQgYnl0ZXMgIiwgICAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1aCwgaSkgfD0g ZlpFOF8xNiggVnVWLnViW2ldKTw8OCkKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VC TEVfVkVDKDE2LHZ1bnBhY2tvaCwgIlZ4eDMyfD12dW5wYWNrb2goVnUzMikiLCAiVnh4MzIud3w9 dnVucGFja28oVnUzMi5oKSIsICJVbnBhY2sgaGFsdmVzIHRvIG9kZCBoYWx2ZXMiLCAgICAgZlZB UlJBWV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1dywgaSkgfD0gZlpFMTZfMzIoVnVWLnVoW2ldKTw8 MTYpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisqIFBhY2sgZWxlbWVudHMgYW5kIGNyb3NzIGxhbmUgcGVybXV0ZQor KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2ViLCAgIlZk MzI9dnBhY2tlYihWdTMyLFZ2MzIpIiwgIlZkMzIuYj12cGFja2UoVnUzMi5oLFZ2MzIuaCkiLAor ICJQYWNrICBieXRlcyIsCisgICAgVmRWLnViW2ldICAgICAgICAgICAgICAgPSBmR0VUVUJZVEUo MCwgVnZWLnVoW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSAgICA9IGZHRVRVQllURSgw LCBWdVYudWhbaV0pKQorCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2cGFja2Vo LCAgIlZkMzI9dnBhY2tlaChWdTMyLFZ2MzIpIiwgIlZkMzIuaD12cGFja2UoVnUzMi53LFZ2MzIu dykiLAorICJQYWNrICBoYWxmd29yZHMiLAorICAgIFZkVi51aFtpXSAgICAgICAgICAgICAgID0g ZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSk7CisgICAgVmRWLnVoW2krZlZFTEVNKDMyKV0gICAgPSBm R0VUVUhBTEYoMCwgVnVWLnV3W2ldKSkKKworICBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1Qo MTYsIHZwYWNrb2IsICAiVmQzMj12cGFja29iKFZ1MzIsVnYzMikiLCAiVmQzMi5iPXZwYWNrbyhW dTMyLmgsVnYzMi5oKSIsCisgIlBhY2sgIGJ5dGVzIiwKKyAgICBWZFYudWJbaV0gICAgICAgICAg ICAgICA9IGZHRVRVQllURSgxLCBWdlYudWhbaV0pOworICAgIFZkVi51YltpK2ZWRUxFTSgxNild ICAgID0gZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkpCisKKyBJVEVSQVRPUl9JTlNOMl9QRVJNVVRF X1NMT1QoMzIsIHZwYWNrb2gsICAiVmQzMj12cGFja29oKFZ1MzIsVnYzMikiLCAiVmQzMi5oPXZw YWNrbyhWdTMyLncsVnYzMi53KSIsCisgIlBhY2sgIGhhbGZ3b3JkcyIsCisgICAgVmRWLnVoW2ld ICAgICAgICAgICAgICAgPSBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWhbaStm VkVMRU0oMzIpXSAgICA9IGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKQorCisKKworSVRFUkFUT1Jf SU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2h1Yl9zYXQsICAiVmQzMj12cGFja2h1YihWdTMy LFZ2MzIpOnNhdCIsICJWZDMyLnViPXZwYWNrKFZ1MzIuaCxWdjMyLmgpOnNhdCIsCisgIlBhY2sg dWJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLnViW2ldICAgICAgICAgICAgICAgPSBm VlNBVFVCKFZ2Vi5oW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSAgICA9IGZWU0FUVUIo VnVWLmhbaV0pKQorCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdnBhY2toYl9z YXQsICAiVmQzMj12cGFja2hiKFZ1MzIsVnYzMik6c2F0IiwgIlZkMzIuYj12cGFjayhWdTMyLmgs VnYzMi5oKTpzYXQiLAorICJQYWNrIGJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLmJb aV0gICAgICAgICAgICAgICA9IGZWU0FUQihWdlYuaFtpXSk7CisgICAgVmRWLmJbaStmVkVMRU0o MTYpXSAgICA9IGZWU0FUQihWdVYuaFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9T TE9UKDMyLCB2cGFja3d1aF9zYXQsICAiVmQzMj12cGFja3d1aChWdTMyLFZ2MzIpOnNhdCIsICJW ZDMyLnVoPXZwYWNrKFZ1MzIudyxWdjMyLncpOnNhdCIsCisgIlBhY2sgdWJ5dGVzIHdpdGggc2F0 dXJhdGlvbiIsCisgICAgVmRWLnVoW2ldICAgICAgICAgICAgICAgPSBmVlNBVFVIKFZ2Vi53W2ld KTsKKyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAgICA9IGZWU0FUVUgoVnVWLndbaV0pKQorCitJ VEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrd2hfc2F0LCAgIlZkMzI9dnBhY2t3 aChWdTMyLFZ2MzIpOnNhdCIsICJWZDMyLmg9dnBhY2soVnUzMi53LFZ2MzIudyk6c2F0IiwKKyAi UGFjayBieXRlcyB3aXRoIHNhdHVyYXRpb24iLAorICAgIFZkVi5oW2ldICAgICAgICAgICAgICAg PSBmVlNBVEgoVnZWLndbaV0pOworICAgIFZkVi5oW2krZlZFTEVNKDMyKV0gICAgPSBmVlNBVEgo VnVWLndbaV0pKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBaZXJvL1NpZ24gRXh0ZW5kIHdpdGggaW4t bGFuZSBwZXJtdXRlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9W RUMoMTYsdnpiLCJWZGQzMj12enh0YihWdTMyKSIsIlZkZDMyLnVoPXZ6eHQoVnUzMi51YikiLAor IlZlY3RvciBaZXJvIEV4dGVuZCBCeXRlcyIsCisgICAgVmRkVi52WzBdLnVoW2ldID0gZlpFOF8x NihmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7CisgICAgVmRkVi52WzFdLnVoW2ldID0gZlpFOF8x NihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RP VUJMRV9WRUMoMTYsdnNiLCJWZGQzMj12c3h0YihWdTMyKSIsIlZkZDMyLmg9dnN4dChWdTMyLmIp IiwKKyJWZWN0b3IgU2lnbiBFeHRlbmQgQnl0ZXMiLAorICAgIFZkZFYudlswXS5oW2ldID0gZlNF OF8xNihmR0VUQllURSgwLCBWdVYuaFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldID0gZlNFOF8x NihmR0VUQllURSgxLCBWdVYuaFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VC TEVfVkVDKDMyLHZ6aCwiVmRkMzI9dnp4dGgoVnUzMikiLCJWZGQzMi51dz12enh0KFZ1MzIudWgp IiwKKyJWZWN0b3IgWmVybyBFeHRlbmQgaGFsZndvcmRzIiwKKyAgICBWZGRWLnZbMF0udXdbaV0g PSBmWkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLnV3W2ld ID0gZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9B TllfU0xPVF9ET1VCTEVfVkVDKDMyLHZzaCwiVmRkMzI9dnN4dGgoVnUzMikiLCJWZGQzMi53PXZz eHQoVnUzMi5oKSIsCisiVmVjdG9yIFNpZ24gRXh0ZW5kIGhhbGZ3b3JkcyIsCisgICAgVmRkVi52 WzBdLndbaV0gPSBmU0UxNl8zMihmR0VUSEFMRigwLCBWdVYud1tpXSkpOworICAgIFZkZFYudlsx XS53W2ldID0gZlNFMTZfMzIoZkdFVEhBTEYoMSwgVnVWLndbaV0pKSkKKworCisvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKgorKgorKgorKiAgICAgICAgICAgICAgIE1NVkVDVE9SIFJFRFVDVElPTgorKgorKgor KgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisqICAyLVdBWSBSRURVQ1RJT04gLSBVTlNJR05FRCBCWVRFIEJZIEJZVEUKKyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDE2LHZkbXB5YnVzLCJWZDMyPXZkbXB5YnVzKFZ1MzIsUnQzMikiLCJW ZDMyLmg9dmRtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgRHVhbCBNdWx0aXBseS1BY2N1 bXVsYXRlcyB1bnNpZ25lZCBieXRlcyBieSBieXRlcyIsCisgICAgVmRWLmhbaV0gICA9IGZNUFk4 VVMoIGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOwor ICAgIFZkVi5oW2ldICArPSBmTVBZOFVTKCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZ VEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMTYsdmRtcHli dXNfYWNjLCJWeDMyKz12ZG1weWJ1cyhWdTMyLFJ0MzIpIiwiVngzMi5oKz12ZG1weShWdTMyLnVi LFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5 dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUiLAorICAgIFZ4Vi5oW2ldICs9IGZNUFk4VVMo IGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAg IFZ4Vi5oW2ldICs9IGZNUFk4VVMoIGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgo MippKzEpJTQsIFJ0VikpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygxNix2ZG1weWJ1c19kdiwiVmRkMzI9dmRtcHlidXMoVnV1MzIsUnQzMikiLCJWZGQzMi5oPXZk bXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVz IHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUgU2xpZGluZyBXaW5kb3cg UmVkdWN0aW9uIiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBW dXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUgNCwgUnRWKSk7CisgICAgVmRkVi52WzBd LmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgo MippKzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZ VEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZk ZFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksZkdF VEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygxNix2ZG1weWJ1c19kdl9hY2MsIlZ4eDMyKz12ZG1weWJ1cyhWdXUzMixSdDMyKSIsIlZ4 eDMyLmgrPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFj Y3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUgU2xpZGlu ZyBXaW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRV QllURSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUgNCwgUnRWKSk7CisgICAg Vnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxm R0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThV UyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKSAlIDQsIFJ0Vikp OworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51 aFtpXSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVEVUNUSU9OIC0gSEFMRiBC WSBCWVRFCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZkbXB5aGIsIlZkMzI9dmRtcHloYihWdTMyLFJ0MzIp IiwiVmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQg SGFsZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAg VmRWLndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkr MCklNCwgUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndb aV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U KDMyLHZkbXB5aGJfYWNjLCJWeDMyKz12ZG1weWhiKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZkbXB5 KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQgSGFsZiB4IEJ5dGUgUmVk dWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAgVnhWLndbaV0gKz0gZk1Q WTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7Cisg ICAgVnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRCWVRFKCgy KmkrMSklNCwgUnRWKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDMyLHZkbXB5aGJfZHYsIlZkZDMyPXZkbXB5aGIoVnV1MzIsUnQzMikiLCJWZGQzMi53PXZkbXB5 KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbC1WZWN0b3IgMi1FbGVtZW50IEhhbGYgeCBCeXRlIFJl ZHVjdGlvbiB3aXRoIFNsaWRpbmcgV2luZG93IE92ZXJsYXAiLAorICAgIFZkZFYudlswXS53W2ld ICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzAp JTQsIFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1 dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52WzFd LndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLGZHRVRCWVRFKCgy KmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYo MCwgVnV1Vi52WzFdLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhiX2R2X2FjYywiVnh4MzIrPXZk bXB5aGIoVnV1MzIsUnQzMikiLCJWeHgzMi53Kz12ZG1weShWdXUzMi5oLFJ0MzIuYikiLAorIkR1 YWwtVmVjdG9yIDItRWxlbWVudCBIYWxmIHggQnl0ZSBSZWR1Y3Rpb24gd2l0aCBTbGlkaW5nIFdp bmRvdyBPdmVybGFwIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigw LCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZb MF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUo KDIqaSsxKSU0LCBSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRI QUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZ4 eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSxmR0VU QllURSgoMippKzEpJTQsIFJ0VikpKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVEVUNUSU9OIC0gSEFMRiBCWSBIQUxG CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWh2c2F0LCJWZDMyPXZkbXB5aChW dTMyLFZ2MzIpOnNhdCIsIlZkMzIudz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3Rv ciBoYWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAg IGZISURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxG KDAsVnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZ MTZTUyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkpOworICAgIFZk Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2ZG1weWh2c2F0X2FjYywiVngzMis9dmRtcHloKFZ1MzIsVnYzMik6c2F0IiwiVngz Mi53Kz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBs eSwgYWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190IGFj Y3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRI QUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1 Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKFZ4 Vi53W2ldK2FjY3VtKSkKKworCisvKiBWRE1QWUggKi8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygzMix2ZG1weWhzYXQsIlZkMzI9dmRtcHloKFZ1MzIsUnQzMik6c2F0Iiwi VmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRp cGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXpl OHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tp XSksZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigx LCBWdVYud1tpXSksZkdFVEhBTEYoMSwgUnRWKSk7CisgICAgVmRWLndbaV0gPSBmVlNBVFcoYWNj dW0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHNhdF9h Y2MsIlZ4MzIrPXZkbXB5aChWdTMyLFJ0MzIpOnNhdCIsIlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0 MzIuaCk6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQgbXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMs IHNhdHVyYXRlIHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190KSBhY2N1bSA9IFZ4Vi53W2ld OworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRIQUxG KDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0p LGZHRVRIQUxGKDEsIFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworCisK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhpc2F0LCJWZDMy PXZkbXB5aChWdXUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLmgpOnNh dCIsCisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdh eSBSZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXpl OHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1dVYudlsw XS53W2ldKSxmR0VUSEFMRigwLFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhB TEYoMCxWdXVWLnZbMV0ud1tpXSksZkdFVEhBTEYoMSxSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZW U0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRt cHloaXNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdXUzMixSdDMyKTpzYXQiLCJWeDMyLncrPXZkbXB5 KFZ1dTMyLmgsUnQzMi5oKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBT aWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3JkIHdpdGggYWNjdW11bGF0 aW9uIGFuZCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNfdCkgYWNjdW0gPSBWeFYud1tp XTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLGZH RVRIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYu dlsxXS53W2ldKSxmR0VUSEFMRigxLFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3Vt KSkKKworCisKKworCisKKworLyogVkRNUFlIU1UgKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMzIsdmRtcHloc3VzYXQsIlZkMzI9dmRtcHloc3UoVnUzMixSdDMyKTpzYXQi LCJWZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11 bHRpcGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShz aXplOHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYu d1tpXSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhB TEYoMSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FU VyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHlo c3VzYXRfYWNjLCJWeDMyKz12ZG1weWhzdShWdTMyLFJ0MzIpOnNhdCIsIlZ4MzIudys9dmRtcHko VnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVs YXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXplOHNfdCkgYWNjdW09 VnhWLndbaV07CisgICAgYWNjdW0gICArPSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYud1tpXSks ZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwg VnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1 bSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHN1 aXNhdCwiVmQzMj12ZG1weWhzdShWdXUzMixSdDMyLCMxKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1 MzIuaCxSdDMyLnVoLCMxKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBT aWduZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3JkIHdpdGggc2F0dXJhdGlv biIsCisgICAgZkhJREUoc2l6ZThzX3QgYWNjdW07KQorICAgIGFjY3VtICAgID0gZk1QWTE2U1Uo ZkdFVEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0g ICArPSBmTVBZMTZTVShmR0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxmR0VUVUhBTEYoMSxSdFYp KTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3Vpc2F0X2FjYywiVngzMis9dmRtcHloc3UoVnV1MzIs UnQzMiwjMSk6c2F0IiwiVngzMi53Kz12ZG1weShWdXUzMi5oLFJ0MzIudWgsIzEpOnNhdCIsCisi RHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1 Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBhY2N1bXVsYXRpb24gYW5kIHNhdHVyYXRpb24iLAorICAg IGZISURFKHNpemU4c190KSBhY2N1bT1WeFYud1tpXTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNV KGZHRVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBhY2N1 bSAgICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSxmR0VUVUhBTEYoMSxS dFYpKTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDMtV0FZIFJFRFVDVElPTiAtIFVO U0lHTkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2dG1w eWIsICJWZGQzMj12dG1weWIoVnV1MzIsUnQzMikiLCAiVmRkMzIuaD12dG1weShWdXUzMi5iLFJ0 MzIuYikiLAorIkR1YWwgVmVjdG9yIDN4MSBSZWR1Y3Rpb24iLAorICAgIFZkZFYudlswXS5oW2ld ICA9IGZNUFk4U1MoZkdFVEJZVEUoMCxWdXVWLnZbMF0uaFtpXSksIGZHRVRCWVRFKCgyKmkgICkl NCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYu dlswXS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtp XSArPSBmR0VUQllURSgwLFZ1dVYudlsxXS5oW2ldKTsKKworICAgIFZkZFYudlsxXS5oW2ldICA9 IGZNUFk4U1MoZkdFVEJZVEUoMSxWdXVWLnZbMF0uaFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwg UnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlsx XS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSAr PSBmR0VUQllURSgxLFZ1dVYudlsxXS5oW2ldKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xP VF9ET1VCTEVfVkVDKDE2LHZ0bXB5Yl9hY2MsICJWeHgzMis9dnRtcHliKFZ1dTMyLFJ0MzIpIiwg IlZ4eDMyLmgrPXZ0bXB5KFZ1dTMyLmIsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVj dGlvbiIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlsw XS5oW2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0uaFtpXSAr PSBmTVBZOFNTKGZHRVRCWVRFKDEsVnV1Vi52WzBdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQs IFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0p OworCisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYudlswXS5o W2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBm TVBZOFNTKGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0 VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRCWVRFKDEsVnV1Vi52WzFdLmhbaV0pKQor CisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2dG1weWJ1cywgIlZk ZDMyPXZ0bXB5YnVzKFZ1dTMyLFJ0MzIpIiwgIlZkZDMyLmg9dnRtcHkoVnV1MzIudWIsUnQzMi5i KSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVmRkVi52WzBdLmhbaV0gID0g Zk1QWThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippICApJTQs IFJ0VikpOworICAgIFZkZFYudlswXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnV1Vi52 WzBdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtp XSArPSBmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pOworCisgICAgVmRkVi52WzFdLmhbaV0g ID0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippICAp JTQsIFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnV1 Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0u aFtpXSArPSBmR0VUVUJZVEUoMSxWdXVWLnZbMV0udWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5YnVzX2FjYywgIlZ4eDMyKz12dG1weWJ1cyhWdXUz MixSdDMyKSIsICJWeHgzMi5oKz12dG1weShWdXUzMi51YixSdDMyLmIpIiwKKyJEdWFsIFZlY3Rv ciAzeDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllU RSgwLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVnh4 Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VU QllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRVQllURSgw LFZ1dVYudlsxXS51aFtpXSk7CisKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRV QllURSgxLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAg Vnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pLCBm R0VUQllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRVQllU RSgxLFZ1dVYudlsxXS51aFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2dG1weWhiLCAiVmRkMzI9dnRtcHloYihWdXUzMixSdDMyKSIsICJWZGQzMi53PXZ0 bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAg VmRkVi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlswXS53W2ldKSwgZlNF OF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBWZGRWLnZbMF0ud1tpXSs9IGZN UFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkr MSklNCwgUnRWKSkpOworICAgIFZkZFYudlswXS53W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZbMV0u d1tpXSk7CisKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52 WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZkZFYu dlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYo ZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0rPSBmR0VUSEFM RigxLFZ1dVYudlsxXS53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2dG1weWhiX2FjYywgIlZ4eDMyKz12dG1weWhiKFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLncr PXZ0bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisg ICAgVnh4Vi52WzBdLndbaV0rPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlswXS53W2ldKSwg ZlNFOF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSs9 IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgy KmkrMSklNCwgUnRWKSkpOworICAgIFZ4eFYudlswXS53W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZb MV0ud1tpXSk7CisKKyAgICBWeHhWLnZbMV0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1 Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZ4 eFYudlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksIGZTRThf MTYoZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0rPSBmR0VU SEFMRigxLFZ1dVYudlsxXS53W2ldKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkg VU5TSUdORUQgQllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weXViLCJWZDMyPXZybXB5 dWIoVnUzMixSdDMyKSIsIlZkMzIudXc9dnJtcHkoVnUzMi51YixSdDMyLnViKSIsCisiVmVjdG9y IE11bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisg ICAgVmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRF KDAsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ld KSwgZkdFVFVCWVRFKDEsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRF KDIsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4 VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsUnRWKSkpCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJfYWNjLCJWeDMyKz12cm1weXViKFZ1MzIsUnQzMiki LCJWeDMyLnV3Kz12cm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNj dW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIEFjY3VtdWxhdGUiLAorICAg IFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRVQllURSgw LFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLFZ1Vi51d1tpXSks IGZHRVRVQllURSgxLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgy LFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVV KGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRVQllURSgzLFJ0VikpKQorCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UKDMyLHZybXB5dWJ2LCJWZDMyPXZybXB5dWIoVnUzMixWdjMyKSIsIlZk MzIudXc9dnJtcHkoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxh dGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLnV3W2ldICA9IGZN UFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAsVnZWLnV3W2ldKSk7Cisg ICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRF KDEsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsVnVW LnV3W2ldKSwgZkdFVFVCWVRFKDIsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4 VVUoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsVnZWLnV3W2ldKSkpCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHl1YnZfYWNjLCJWeDMyKz12 cm1weXViKFZ1MzIsVnYzMikiLCJWeDMyLnV3Kz12cm1weShWdTMyLnViLFZ2MzIudWIpIiwKKyJW ZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRz IEFjY3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51 d1tpXSksIGZHRVRVQllURSgwLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVV KGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRVQllURSgxLFZ2Vi51d1tpXSkpOworICAgIFZ4 Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFZ2 Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLFZ1Vi51d1tp XSksIGZHRVRVQllURSgzLFZ2Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgz Mix2cm1weWJ2LCJWZDMyPXZybXB5YihWdTMyLFZ2MzIpIiwiVmQzMi53PXZybXB5KFZ1MzIuYixW djMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUg Y29lZmZpY2llbnRzIiwKKyAgICBWZFYud1tpXSAgPSBmTVBZOFNTKGZHRVRCWVRFKDAsIFZ1Vi53 W2ldKSwgZkdFVEJZVEUoMCwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZH RVRCWVRFKDEsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMSwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tp XSArPSBmTVBZOFNTKGZHRVRCWVRFKDIsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMiwgVnZWLndbaV0p KTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDMsIFZ1Vi53W2ldKSwgZkdFVEJZ VEUoMywgVnZWLndbaV0pKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDMyLHZybXB5YnZfYWNjLCJWeDMyKz12cm1weWIoVnUzMixWdjMyKSIsIlZ4MzIudys9dnJtcHko VnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRo IDQgYnl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUo MCwgVnVWLndbaV0pLCBmR0VUQllURSgwLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZN UFk4U1MoZkdFVEJZVEUoMSwgVnVWLndbaV0pLCBmR0VUQllURSgxLCBWdlYud1tpXSkpOworICAg IFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMiwgVnVWLndbaV0pLCBmR0VUQllURSgyLCBW dlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMywgVnVWLndbaV0p LCBmR0VUQllURSgzLCBWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RP VUJMRV9WRUMoMzIsdnJtcHl1YmksIlZkZDMyPXZybXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVmRk MzIudXc9dnJtcHkoVnV1MzIudWIsUnQzMi51YiwjdTEpIiwKKyJEdWFsIFZlY3RvciBVbnNpZ25l ZCBCeXRlIEJ5IFNpZ25lZCBCeXRlIDQtd2F5IFJlZHVjdGlvbiB0byBXb3JkIiwKKyAgICBWZGRW LnZbMF0udXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52W3VpViA/IDE6MF0udXdb aV0pLGZHRVRVQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS51d1tpXSAr PSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRF KCgxLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdF VFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4 MyxSdFYpKTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMywgVnV1 Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworCisg ICAgVmRkVi52WzFdLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAg ICBdLnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0u dXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZH RVRVQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlsxXS51d1tpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgyLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVp VikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRF KDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYp KSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZybXB5dWJpX2Fj YywiVnh4MzIrPXZybXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVnh4MzIudXcrPXZybXB5KFZ1dTMy LnViLFJ0MzIudWIsI3UxKSIsCisiRHVhbCBWZWN0b3IgVW5zaWduZWQgQnl0ZSBCeSBTaWduZWQg Qnl0ZSA0LXdheSBSZWR1Y3Rpb24gd2l0aCBhY2N1bXVsYXRlIGFuZCBzYXR1cmF0aW9uIHRvIFdv cmQiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZb dWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4 Vi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3 W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0g Kz0gZk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllU RSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZH RVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAw eDMsUnRWKSk7CisKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMCwg VnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMi11aVYpICYgMHgzLFJ0VikpOwor ICAgIFZ4eFYudlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAg ICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzFd LnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxm R0VUVUJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1Q WThVVShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMS11 aVYpICYgMHgzLFJ0VikpKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgIEJZ VEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ1cywiVmQzMj12cm1weWJ1cyhWdTMyLFJ0MzIp IiwiVmQzMi53PXZybXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3Vt dWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLndbaV0gID0g Zk1QWThVUyhmR0VUVUJZVEUoMCxWdVYudXdbaV0pLCBmR0VUQllURSgwLFJ0VikpOworICAgIFZk Vi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxSdFYp KTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRC WVRFKDIsUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMyxWdVYudXdb aV0pLCBmR0VUQllURSgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZy bXB5YnVzX2FjYywiVngzMis9dnJtcHlidXMoVnUzMixSdDMyKSIsIlZ4MzIudys9dnJtcHkoVnUz Mi51YixSdDMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0 IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgw LFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsUnRWKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWThVUyhm R0VUVUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUQllURSgxLFJ0VikpOworICAgIFZ4Vi53W2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMixSdFYpKTsKKyAgICBW eFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsUnRW KSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c2ks IlZkZDMyPXZybXB5YnVzKFZ1dTMyLFJ0MzIsI3UxKSIsIlZkZDMyLnc9dnJtcHkoVnV1MzIudWIs UnQzMi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUg NC13YXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlswXS53W2ldICA9IGZNUFk4VVMo ZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUQllURSgoMC11aVYpICYg MHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1 dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11aVYpICYgMHgzLFJ0VikpOworICAg IFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBd LnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllU RSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAgVmRkVi52WzFdLndbaV0gID0gZk1QWThVUyhm R0VUVUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgyLXVpVikgJiAw eDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1 Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAg VmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMiwgVnV1Vi52W3VpViA/IDE6MF0u dXdbaV0pLGZHRVRCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0g Kz0gZk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRCWVRF KCgxLXVpVikgJiAweDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2cm1weWJ1c2lfYWNjLCJWeHgzMis9dnJtcHlidXMoVnV1MzIsUnQzMiwjdTEpIiwi Vnh4MzIudys9dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2ln bmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHdpdGggYWNjdW11bGF0ZSBh bmQgc2F0dXJhdGlvbiB0byBXb3JkIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVEJZVEUoKDAtdWlWKSAmIDB4 MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVW LnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBW eHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLCBWdXVWLnZbMCAgICAgICAgXS51 d1tpXSksZkdFVEJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUo KDMtdWlWKSAmIDB4MyxSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdF VFVCWVRFKDAsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgz LFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYu dlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4 eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3 W2ldKSxmR0VUQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgo MS11aVYpICYgMHgzLFJ0VikpKQorCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2 cm1weWJ1c3YsIlZkMzI9dnJtcHlidXMoVnUzMixWdjMyKSIsIlZkMzIudz12cm1weShWdTMyLnVi LFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0 ZSBjb2VmZmljaWVudHMiLAorICAgIFZkVi53W2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnVW LnV3W2ldKSwgZkdFVEJZVEUoMCxWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMo ZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxWdlYud1tpXSkpOworICAgIFZkVi53 W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMixWdlYud1tp XSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdF VEJZVEUoMyxWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdnJtcHlidXN2X2FjYywiVngzMis9dnJtcHlidXMoVnUzMixWdjMyKSIsIlZ4MzIudys9 dnJtcHkoVnUzMi51YixWdjMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1 Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZH RVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsVnZWLndbaV0pKTsKKyAgICBWeFYud1tp XSArPSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDEsVnZWLndbaV0p KTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRC WVRFKDIsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1 Vi51d1tpXSksIGZHRVRCWVRFKDMsVnZWLndbaV0pKSkKKworCisKKworCisKKworCisKKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDItV0FZIFJF RFVDVElPTiAtIFNBRAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRzYWR1aCwiVmRk MzI9dmRzYWR1aChWdXUzMixSdDMyKSIsIlZkZDMyLnV3PXZkc2FkKFZ1dTMyLnVoLFJ0MzIudWgp IiwKKyJEdWFsIFZlY3RvciBIYWxmd29yZCBieSBCeXRlIDQtV2F5IFJlZHVjdGlvbiB0byBXb3Jk IiwKKyAgICBWZGRWLnZbMF0udXdbaV0gID0gZkFCUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLnV3 W2ldKSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZH RVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDEsUnRWKSk7CisgICAgVmRk Vi52WzFdLnV3W2ldICA9IGZBQlMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VU VUhBTEYoMCxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMCwg VnV1Vi52WzFdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkc2FkdWhfYWNjLCJWeHgzMis9dmRzYWR1aChWdXUzMixS dDMyKSIsIlZ4eDMyLnV3Kz12ZHNhZChWdXUzMi51aCxSdDMyLnVoKSIsCisiRHVhbCBWZWN0b3Ig SGFsZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rpb24gdG8gV29yZCIsCisgICAgVnh4Vi52WzBd LnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VUVUhBTEYo MCxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMSwgVnV1Vi52 WzBdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBm QUJTKGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDAsUnRWKSk7Cisg ICAgVnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1dVYudlsxXS51d1tpXSkg LSBmR0VUVUhBTEYoMSxSdFYpKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisqICA0LVdBWSBSRURVQ1RJT04gLSBTQUQKKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaSwiVmRkMzI9dnJzYWR1YihWdXUzMixSdDMy LCN1MSkiLCJWZGQzMi51dz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVj dG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYu dlswXS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51 d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0VikpKTsKKyAgICBWZGRWLnZb MF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdb aV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7CisgICAgVmRkVi52WzBd LnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ld KSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOworICAgIFZkZFYudlswXS51 d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkp IC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKworICAgIFZkZFYudlsxXS51 d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkp IC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAgICBWZGRWLnZbMV0udXdb aV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAt IGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAgVmRkVi52WzFdLnV3W2ld ICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBm WkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZkZFYudlsxXS51d1tpXSAr PSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpF OF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaV9hY2MsIlZ4eDMyKz12cnNhZHViKFZ1dTMyLFJ0MzIs I3UxKSIsIlZ4eDMyLnV3Kz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVj dG9yIEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYu dlswXS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51 d1tpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0VikpKTsKKyAgICBWeHhWLnZb MF0udXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdb aV0pKSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7CisgICAgVnh4Vi52WzBd LnV3W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ld KSkgLSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOworICAgIFZ4eFYudlswXS51 d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkp IC0gZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKworICAgIFZ4eFYudlsxXS51 d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkp IC0gZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAgICBWeHhWLnZbMV0udXdb aV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAt IGZaRThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAgVnh4Vi52WzFdLnV3W2ld ICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBm WkU4XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZ4eFYudlsxXS51d1tpXSAr PSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpF OF8xNihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworCisKKworCisKKworCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICogTU1WRUNUT1IgU0hJRlRJTkcKKyAqICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIE1hY3Jv IHRvIHNoaWZ0IGFyaXRobWV0aWNhbGx5IGxlZnQvcmlnaHQgYW5kIGJ5IGVpdGhlciBSVCBvciBW dgorCisjZGVmaW5lIFZfU0hJRlQoVFlQRSwgREVTQywgU0laRSwgTE9HU0laRSwgQ0FTVFRZUEUp ICAgXAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3IjI1RZUEUsICAgIlZkMzI9 dmFzciIgI1RZUEUgIihWdTMyLFJ0MzIpIiwiVmQzMi4iI1RZUEUiPXZhc3IoVnUzMi4iI1RZUEUi LFJ0MzIpIiwgICAgICAgICAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgIiBERVNDLCAg ICBWZFYuVFlQRVtpXSAgICAgPSAoVnVWLlRZUEVbaV0gICAgPj4gKFJ0ViAmIChTSVpFLTEpKSkp IFwKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoU0laRSx2YXNsIyNUWVBFLCAgICJWZDMyPXZh c2wiICNUWVBFICIoVnUzMixSdDMyKSIsIlZkMzIuIiNUWVBFIj12YXNsKFZ1MzIuIiNUWVBFIixS dDMyKSIsICAgICAgICAgIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IGxlZnQgICIgREVTQywgICAg VmRWLlRZUEVbaV0gICAgID0gKFZ1Vi5UWVBFW2ldICAgIDw8IChSdFYgJiAoU0laRS0xKSkpKSBc CitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmxzciMjVFlQRSwgICAiVmQzMj12bHNy IiAjVFlQRSAiKFZ1MzIsUnQzMikiLCJWZDMyLnUiI1RZUEUiPXZsc3IoVnUzMi51IiNUWVBFIixS dDMyKSIsICAgICAgICJWZWN0b3IgbG9naWNhbCBzaGlmdCByaWdodCAiICAgIERFU0MsICAgIFZk Vi51IyNUWVBFW2ldICA9IChWdVYudSMjVFlQRVtpXSA+PiAoUnRWICYgKFNJWkUtMSkpKSkgXAor SVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3IjI1RZUEUjI3YsIlZkMzI9dmFzciIg I1RZUEUgIihWdTMyLFZ2MzIpIiwiVmQzMi4iI1RZUEUiPXZhc3IoVnUzMi4iI1RZUEUiLFZ2MzIu IiNUWVBFIikiLCAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgIiBERVNDLCAgICBWZFYu VFlQRVtpXSAgICAgPSBmQklESVJfQVNISUZUUihWdVYuVFlQRVtpXSwgZlNYVE4oKExPR1NJWkUr MSksU0laRSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9T TE9UKFNJWkUsdmFzbCMjVFlQRSMjdiwiVmQzMj12YXNsIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJW ZDMyLiIjVFlQRSI9dmFzbChWdTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgYXJp dGhtZXRpYyBzaGlmdCBsZWZ0ICAiIERFU0MsICAgIFZkVi5UWVBFW2ldICAgICA9IGZCSURJUl9B U0hJRlRMKFZ1Vi5UWVBFW2ldLCAgZlNYVE4oKExPR1NJWkUrMSksU0laRSxWdlYuVFlQRVtpXSks Q0FTVFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmxzciMjVFlQRSMj diwiVmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMyLiIjVFlQRSI9dmxzcihWdTMy LiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgbG9naWNhbCBzaGlmdCByaWdodCAiICAg IERFU0MsICAgIFZkVi51IyNUWVBFW2ldICA9IGZCSURJUl9MU0hJRlRSKFZ1Vi51IyNUWVBFW2ld LCBmU1hUTigoTE9HU0laRSsxKSxTSVpFLFZ2Vi5UWVBFW2ldKSxDQVNUVFlQRSkpIFwKKworVl9T SElGVCh3LCAid29yZCIsICAgMzIsNSw0XzQpCitWX1NISUZUKGgsICJoYWxmd29yZCIsIDE2LDQs Ml8yKQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1QoOCx2bHNyYiwiVmQzMi51Yj12bHNyKFZ1 MzIudWIsUnQzMikiLCJ2ZWMgbG9nIHNoaWZ0IHJpZ2h0IGJ5dGVzIiwgVmRWLmJbaV0gPSBWdVYu dWJbaV0gPj4gKFJ0ViAmIDB4NykpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJv dHIsIlZkMzI9dnJvdHIoVnUzMixWdjMyKSIsIlZkMzIudXc9dnJvdHIoVnUzMi51dyxWdjMyLnV3 KSIsIlZlY3RvciB3b3JkIHJvdGF0ZSByaWdodCIsIFZkVi51d1tpXSA9ICgoVnVWLnV3W2ldID4+ IChWdlYudXdbaV0gJiAweDFmKSkgfCAoVnVWLnV3W2ldIDw8ICgzMiAtIChWdlYudXdbaV0gJiAw eDFmKSkpKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1IgU0hJRlQgQU5EIFBFUk1VVEUK KyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMo MzIsdmFzcl9pbnRvLCJWeHgzMj12YXNyaW50byhWdTMyLFZ2MzIpIiwiVnh4MzIudz12YXNyaW50 byhWdTMyLncsVnYzMi53KSIsIkFTUiB2ZWN0b3IgMSBlbGVtZW50cyBhbmQgb3ZlcmxheSBkcm9w cGluZyBiaXRzIHRvIE1TQiBvZiB2ZWN0b3IgMiBlbGVtZW50cyIsCisgICAgZkhJREUoaW50NjRf dCApIHNoaWZ0ID0gKGZTRTMyXzY0KFZ1Vi53W2ldKSA8PCAzMik7CisgICAgZkhJREUoaW50NjRf dCApIG1hc2sgID0gKCgoZlNFMzJfNjQoVnh4Vi52WzBdLndbaV0pKSA8PCAzMikgfCBmWkUzMl82 NChWeHhWLnZbMF0ud1tpXSkpOworICAgIGZISURFKGludDY0X3QpIGxvbWFzayA9ICgoKGZTRTMy XzY0KDEpKSA8PCAzMikgLSAxKTsKKyAgICBmSElERShpbnQgKSBjb3VudCA9IC0oMHg0MCAmIFZ2 Vi53W2ldKSArIChWdlYud1tpXSAmIDB4M2YpOworICAgIGZISURFKGludDY0X3QgKSByZXN1bHQg PSAoY291bnQgPT0gLTB4NDApID8gMCA6ICgoKGNvdW50IDwgMCkgPyAoKHNoaWZ0IDw8IC0oY291 bnQpKSB8IChtYXNrICYgKGxvbWFzayA8PCAtKGNvdW50KSkpKSA6ICgoc2hpZnQgPj4gY291bnQp IHwgKG1hc2sgJiAobG9tYXNrID4+IGNvdW50KSkpKSk7CisgICAgVnh4Vi52WzFdLndbaV0gPSAo KHJlc3VsdCA+PiAzMikgJiAweGZmZmZmZmZmKTsKKyAgICBWeHhWLnZbMF0ud1tpXSA9IChyZXN1 bHQgJiAweGZmZmZmZmZmKSkKKworI2RlZmluZSBORVdfTkFSUk9XSU5HX1NISUZUIDEKKworI2lm IE5FV19OQVJST1dJTkdfU0hJRlQKKyNkZWZpbmUgTkFSUk9XSU5HX1NISUZUKElURVJTSVpFLFRB RyxEU1RNLERTVFRZUEUsU1JDVFlQRSxTWU5PUFRTLFNBVEZVTkMsUk5ERlVOQyxTSEFNVE1BU0sp IFwKK0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVChJVEVSU0laRSxUQUcsIFwKKyJWZDMyLiIgI0RT VFRZUEUgIj12YXNyKFZ1MzIuIiAjU1JDVFlQRSAiLFZ2MzIuIiAjU1JDVFlQRSAiLFJ0OCkiICNT WU5PUFRTLCBcCisiVmVjdG9yIHNoaWZ0IHJpZ2h0IGFuZCBzaHVmZmxlIiwgXAorICAgIGZISURF KGludCApc2hhbXQgPSBSdFYgJiBTSEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNSQ1RZUEVb aV0sU0FURlVOQyhSTkRGVU5DKFZ2Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpOyBcCisg ICAgRFNUTSgxLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQRVtpXSxz aGFtdCkgPj4gc2hhbXQpKSkKKworCisKKworCisvKiBXT1JEIFRPIEhBTEYqLworCitOQVJST1dJ TkdfU0hJRlQoMzIsdmFzcndoLGZTRVRIQUxGLGgsdywsZkVDSE8sZlZOT1JPVU5ELDB4RikKK05B UlJPV0lOR19TSElGVCgzMix2YXNyd2hzYXQsZlNFVEhBTEYsaCx3LDpzYXQsZlZTQVRILGZWTk9S T1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcndocm5kc2F0LGZTRVRIQUxGLGgsdyw6 cm5kOnNhdCxmVlNBVEgsZlZST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnd1aHJu ZHNhdCxmU0VUSEFMRix1aCx3LDpybmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCitOQVJST1dJ TkdfU0hJRlQoMzIsdmFzcnd1aHNhdCxmU0VUSEFMRix1aCx3LDpzYXQsZlZTQVRVSCxmVk5PUk9V TkQsMHhGKQorTkFSUk9XSU5HX1NISUZUKDMyLHZhc3J1d3Vocm5kc2F0LGZTRVRIQUxGLHVoLHV3 LDpybmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDMy LHZhc3J1d3Voc2F0LGZTRVRIQUxGLHVoLHV3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQor TkFSUk9XSU5HX1NISUZUKDE2LHZhc3JodWJzYXQsZlNFVEJZVEUsdWIsaCw6c2F0LGZWU0FUVUIs ZlZOT1JPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaHVicm5kc2F0LGZTRVRCWVRF LHViLGgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2 YXNyaGJzYXQsZlNFVEJZVEUsYixoLDpzYXQsZlZTQVRCLGZWTk9ST1VORCwweDcpCitOQVJST1dJ TkdfU0hJRlQoMTYsdmFzcmhicm5kc2F0LGZTRVRCWVRFLGIsaCw6cm5kOnNhdCxmVlNBVEIsZlZS T1VORCwweDcpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDE2LHZhc3J1aHVic2F0LGZTRVRCWVRF LHViLHVoLDpzYXQsZlZTQVRVQixmVk5PUk9VTkQsMHg3KQorTkFSUk9XSU5HX1NISUZUX05PVjEo MTYsdmFzcnVodWJybmRzYXQsZlNFVEJZVEUsdWIsdWgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5E LDB4NykKKworI2Vsc2UKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoLCJWZDMy PXZhc3J3aChWdTMyLFZ2MzIsUnQ4KSIsIlZkMzIuaD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KSIs CisiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxm d29yZHMiLAorICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIChWdlYud1tpXSA+PiAoUnRWICYgMHhG KSkpOworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIChWdVYud1tpXSA+PiAoUnRWICYgMHhGKSkp KQorCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoc2F0LCJWZDMyPXZhc3J3 aChWdTMyLFZ2MzIsUnQ4KTpzYXQiLCJWZDMyLmg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0 IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhh bGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRIKFZ2Vi53W2ldID4+IChS dFYgJiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSxWZFYud1tpXSwgZlZTQVRIKFZ1Vi53W2ldID4+ IChSdFYgJiAweEYpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndocm5k c2F0LCJWZDMyPXZhc3J3aChWdTMyLFZ2MzIsUnQ4KTpybmQ6c2F0IiwiVmQzMi5oPXZhc3IoVnUz Mi53LFZ2MzIudyxSdDgpOnJuZDpzYXQiLAorIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IHJpZ2h0 IHdvcmRzLCBzaHVmZmxlIGV2ZW4gaGFsZndvcmRzIiwKKyAgICBmSElERShpbnQgKSBzaGFtdCA9 IFJ0ViAmIDB4RjsKKyAgICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNBVEgoICAoVnZWLndbaV0g KyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VU SEFMRigxLFZkVi53W2ldLCBmVlNBVEgoICAoVnVWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChz aGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgz Mix2YXNyd3Vocm5kc2F0LCJWZDMyPXZhc3J3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZk MzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6cm5kOnNhdCIsCisiVmVjdG9yIGFyaXRobWV0 aWMgc2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorICAgIGZISURF KGludCApIHNoYW10ID0gUnRWICYgMHhGOworICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIGZWU0FU VUgoICAoVnZWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hh bXQpKTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi53W2ldICsgZkJJ RElSX0FTSElGVEwoMSwoc2hhbXQtMSksNF84KSApID4+IHNoYW10KSkpCisKK0lURVJBVE9SX0lO U04yX1NISUZUX1NMT1QoMzIsdmFzcnd1aHNhdCwiVmQzMj12YXNyd3VoKFZ1MzIsVnYzMixSdDgp OnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0IiwKKyJWZWN0b3IgYXJp dGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisgICAg ZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7 CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBmVlNBVFVIKFZ1Vi53W2ldID4+IChSdFYgJiAw eEYpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcnV3dWhybmRzYXQsIlZk MzI9dmFzcnV3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLnV3 LFZ2MzIudXcsUnQ4KTpybmQ6c2F0IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3 b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisgICAgZkhJREUoaW50ICkgc2hhbXQgPSBS dFYgJiAweEY7CisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRVSCggIChWdlYudXdbaV0g KyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VU SEFMRigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi51d1tpXSArIGZCSURJUl9BU0hJRlRMKDEs KHNoYW10LTEpLDRfOCkgKSA+PiBzaGFtdCkpKQorI2VuZGlmCisKKworCitJVEVSQVRPUl9JTlNO Ml9TSElGVF9TTE9UKDMyLHZyb3VuZHdoLCJWZDMyPXZyb3VuZHdoKFZ1MzIsVnYzMik6c2F0Iiwi VmQzMi5oPXZyb3VuZChWdTMyLncsVnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0 byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwg VmRWLnV3W2ldLCBmVlNBVEgoKFZ2Vi53W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKTsK KyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZWU0FUSCgoVnVWLndbaV0gKyBmQ09OU1RMTCgw eDgwMDApKSA+PiAxNikpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZyb3VuZHd1 aCwiVmQzMj12cm91bmR3dWgoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVoPXZyb3VuZChWdTMyLncs VnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVz dWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChW dlYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSk7CisgICAgZlNFVEhBTEYoMSwgVmRW LnV3W2ldLCBmVlNBVFVIKChWdVYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSkpCisK K0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdW5kdXd1aCwiVmQzMj12cm91bmR1d3Vo KFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51aD12cm91bmQoVnUzMi51dyxWdjMyLnV3KTpzYXQiLAor IlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3Jk cyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYudXdbaV0gKyBmQ09O U1RMTCgweDgwMDApKSA+PiAxNikpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZlZTQVRV SCgoVnVWLnV3W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKSkKKworCisKKworCisvKiBI QUxGIFRPIEJZVEUqLworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZyb3VuZGhiLCJW ZDMyPXZyb3VuZGhiKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi5iPXZyb3VuZChWdTMyLmgsVnYzMi5o KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50 IGhhbGZ3b3JkcyIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmVlNBVEIoKFZ2Vi5oW2ld ICsgMHg4MCkgPj4gOCkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgZlZTQVRCKChWdVYu aFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2cm91 bmRodWIsIlZkMzI9dnJvdW5kaHViKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51Yj12cm91bmQoVnUz Mi5oLFZ2MzIuaCk6c2F0IiwKKyJWZWN0b3Igcm91bmQgd29yZHMgdG8gaGFsdmVzLCBzaHVmZmxl IHJlc3VsdGFudCBoYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgZlZTQVRV QigoVnZWLmhbaV0gKyAweDgwKSA+PiA4KSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBm VlNBVFVCKChWdVYuaFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRf U0xPVCgxNix2cm91bmR1aHViLCJWZDMyPXZyb3VuZHVodWIoVnUzMixWdjMyKTpzYXQiLCJWZDMy LnViPXZyb3VuZChWdTMyLnVoLFZ2MzIudWgpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRv IGhhbHZlcywgc2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUQllURSgwLCBW ZFYudWhbaV0sIGZWU0FUVUIoKFZ2Vi51aFtpXSArIDB4ODApID4+IDgpKTsKKyAgICBmU0VUQllU RSgxLCBWZFYudWhbaV0sIGZWU0FUVUIoKFZ1Vi51aFtpXSArIDB4ODApID4+IDgpKSkKKworCitJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc2x3X2FjYywiVngzMis9dmFzbHcoVnUzMixS dDMyKSIsIlZ4MzIudys9dmFzbChWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29y ZCIsCisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPDwgKFJ0ViAmICgzMi0xKSkpKQorCitJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc3J3X2FjYywiVngzMis9dmFzcncoVnUzMixS dDMyKSIsIlZ4MzIudys9dmFzcihWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29y ZCIsCisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPj4gKFJ0ViAmICgzMi0xKSkpKQorCitJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzbGhfYWNjLCJWeDMyKz12YXNsaChW dTMyLFJ0MzIpIiwiVngzMi5oKz12YXNsKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNoaWZ0IGFk ZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPDwgKFJ0ViAmICgxNi0x KSkpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzcmhfYWNjLCJWeDMy Kz12YXNyaChWdTMyLFJ0MzIpIiwiVngzMi5oKz12YXNyKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9y IHNoaWZ0IGFkZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPj4gKFJ0 ViAmICgxNi0xKSkpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgRUxFTUVO VC1XSVNFIEFSSVRITUVUSUMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyogTUFDUk9TIEdPIElOIE1BQ1JPUy5ERUYgTk9UIEhFUkUhISEKKyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisKKyNkZWZpbmUgTU1WRUNfQUJTRElGRihUWVBFLFRZUEUyLERFU0NSLCBXSURU SCwgREVTVCxTUkMpXAorSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsIHZhYnNkaWZmIyNU WVBFLCAgICAgICAgICAgICAgICAgICAiVmQzMj12YWJzZGlmZiJUWVBFMiIoVnUzMixWdjMyKSIg LCJWZDMyLiIjREVTVCI9dmFic2RpZmYoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiAsICAgICAi VmVjdG9yIEFic29sdXRlIG9mIERpZmZlcmVuY2UgIkRFU0NSLCAgIFZkVi5ERVNUW2ldID0gKFZ1 Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/IChWdVYuU1JDW2ldIC0gVnZWLlNSQ1tpXSkgOiAoVnZW LlNSQ1tpXSAtIFZ1Vi5TUkNbaV0pKQorCisjZGVmaW5lIE1NVkVDX0FERFVfU0FUKFRZUEUsVFlQ RTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURU SCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1 MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIj U1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAgICAgICAg VmRWLkRFU1RbaV0gPSBmVlVBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSlc CitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNUWVBFIyNz YXRfZHYsICAgICJWZGQzMj12YWRkIlRZUEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQzMi4i I0RFU1QiPXZhZGQoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBWZWN0 b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWVUFERFNB VChXSURUSCwgVnV1Vi52WzBdLlNSQ1tpXSxWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRF U1RbaV0gPSBmVlVBRERTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sVnZ2Vi52WzFdLlNSQ1tp XSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdCwgICAg ICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpOnNhdCIsICAgICAiVmQz Mi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNhdCIsICAgICJWZWN0b3Ig QWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZVU1VCU0FU KFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NM T1RfRE9VQkxFX1ZFQyhXSURUSCwgdnN1YiMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dnN1YiJU WVBFMiIoVnV1MzIsVnZ2MzIpOnNhdCIsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIjU1JD IixWdnYzMi4iI1NSQyIpOnNhdCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVND UiwgICAgVmRkVi52WzBdLkRFU1RbaV0gPSBmVlVTVUJTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNb aV0sVnZ2Vi52WzBdLlNSQ1tpXSk7IFZkZFYudlsxXS5ERVNUW2ldID0gZlZVU1VCU0FUKFdJRFRI LCBWdXVWLnZbMV0uU1JDW2ldLFZ2dlYudlsxXS5TUkNbaV0pKVwKKworI2RlZmluZSBNTVZFQ19B RERTX1NBVChUWVBFLFRZUEUyLERFU0NSLCBXSURUSCxERVNULFNSQylcCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVChXSURUSCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMy PXZhZGQiVFlQRTIiKFZ1MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMy LiIjU1JDIixWdjMyLiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVT Q1IsICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ld LCAgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURU SCwgdmFkZCMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dmFkZCJUWVBFMiIoVnV1MzIsVnZ2MzIp OnNhdCIsICAiVmRkMzIuIiNERVNUIj12YWRkKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpOnNh dCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRkVi52WzBdLkRF U1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sIFZ2dlYudlswXS5TUkNb aV0pOyBWZGRWLnZbMV0uREVTVFtpXSA9IGZWU0FERFNBVChXSURUSCwgVnV1Vi52WzFdLlNSQ1tp XSwgVnZ2Vi52WzFdLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZz dWIjI1RZUEUjI3NhdCwgICAgICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2 MzIpOnNhdCIsICAgICAiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIp OnNhdCIsICAgICJWZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5E RVNUW2ldID0gZlZTU1VCU0FUKFdJRFRILCAgVnVWLlNSQ1tpXSwgIFZ2Vi5TUkNbaV0pKVwKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdF9k diwgICAgIlZkZDMyPXZzdWIiVFlQRTIiKFZ1dTMyLFZ2djMyKTpzYXQiLCAgIlZkZDMyLiIjREVT VCI9dnN1YihWdXUzMi4iI1NSQyIsVnZ2MzIuIiNTUkMiKTpzYXQiLCAiRG91YmxlIFZlY3RvciBB ZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgIFZkZFYudlswXS5ERVNUW2ldID0gZlZTU1VCU0FUKFdJ RFRILCBWdXVWLnZbMF0uU1JDW2ldLCBWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1Rb aV0gPSBmVlNTVUJTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sIFZ2dlYudlsxXS5TUkNbaV0p KVwKKworI2RlZmluZSBNTVZFQ19BVkdVKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNS QylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YXZnIyNUWVBFLCAgICAgICAgICAg ICAgICAgICAgICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAgICJWZDMy LiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgIlZlY3RvciBB dmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5E RVNUW2ldID0gZlZBVkdVKCAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAg ICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNERVNU Ij12YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJhZ2Ug JSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0g PSBmVkFWR1VSTkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKyNkZWZp bmUgTU1WRUNfQVZHUyhUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwgREVTVCxTUkMpXAorSVRFUkFU T1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAg ICAiVmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNUIj12 YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFnZSAi REVTQ1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAg PSBmVkFWR1MoICAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAg ICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9 dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2Ug JSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0g ID0gZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2bmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAg ICAgICJWZDMyPXZuYXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4iI0RFU1Qi PXZuYXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgIlZlY3RvciBOZWdhdGl2 ZSBBdmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ld ICA9IGZWTkFWR1MoICAgICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisK KworCisKKworI2RlZmluZSBNTVZFQ19BRERXUkFQKFRZUEUsVFlQRTIsIERFU0NSLCBXSURUSCAs IERFU1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBFLCAg ICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMikiICwgICAgICJWZDMy LiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAiVmVjdG9yIEFkZCAi REVTQ1IsICAgICAgICAgIFZkVi5ERVNUW2ldID0gIFZ1Vi5TUkNbaV0gKyAgVnZWLlNSQ1tpXSlc CitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwgdnN1YiMjVFlQRSwgICAgICAgICAgICAg ICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpIiAsICAgICAiVmQzMi4iI0RFU1QiPXZz dWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgIlZlY3RvciBTdWIgIkRFU0NSLCAgICAg ICAgICBWZFYuREVTVFtpXSA9ICBWdVYuU1JDW2ldIC0gIFZ2Vi5TUkNbaV0pXAorSVRFUkFUT1Jf SU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdmFkZCMjVFlQRSMjX2R2LCAgIlZkZDMy PXZhZGQiVFlQRTIiKFZ1dTMyLFZ2djMyKSIgLCAgIlZkZDMyLiIjREVTVCI9dmFkZChWdXUzMi4i I1NSQyIsVnZ2MzIuIiNTUkMiKSIsICJEb3VibGUgVmVjdG9yIEFkZCAiREVTQ1IsICAgVmRkVi52 WzBdLkRFU1RbaV0gPSBWdXVWLnZbMF0uU1JDW2ldICsgVnZ2Vi52WzBdLlNSQ1tpXTsgVmRkVi52 WzFdLkRFU1RbaV0gPSBWdXVWLnZbMV0uU1JDW2ldICsgVnZ2Vi52WzFdLlNSQ1tpXSlcCitJVEVS QVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2c3ViIyNUWVBFIyNfZHYsICAi VmRkMzI9dnN1YiJUWVBFMiIoVnV1MzIsVnZ2MzIpIiAsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1 dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpIiwgIkRvdWJsZSBWZWN0b3IgU3ViICJERVNDUiwgICBW ZGRWLnZbMF0uREVTVFtpXSA9IFZ1dVYudlswXS5TUkNbaV0gLSBWdnZWLnZbMF0uU1JDW2ldOyBW ZGRWLnZbMV0uREVTVFtpXSA9IFZ1dVYudlsxXS5TUkNbaV0gLSBWdnZWLnZbMV0uU1JDW2ldKSBc CisKKworCisKKworLyogV3JhcHBpbmcgQWRkcyAqLworTU1WRUNfQUREV1JBUChiLCAgICAiYiIs ICAgICJCeXRlIiwgICAgICAgICA4LCAgIGIsIGIpCitNTVZFQ19BRERXUkFQKGgsICAgICJoIiwg ICAgIkhhbGZ3b3JkIiwgICAgIDE2LCAgaCwgaCkKK01NVkVDX0FERFdSQVAodywgICAgInciLCAg ICAiV29yZCIsICAgICAgICAgMzIsICAgdywgICAgdykKKworLyogU2F0dXJhdGluZyBBZGRzICov CitNTVZFQ19BRERVX1NBVCh1YiwgInViIiwgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgICAgOCwg ICB1YiwgICAgdWIpCitNTVZFQ19BRERVX1NBVCh1aCwgInVoIiwgICAgIlVuc2lnbmVkIEhhbGZ3 b3JkIiwgICAgMTYsICB1aCwgICAgdWgpCitNTVZFQ19BRERVX1NBVCh1dywgInV3IiwgICAgIlVu c2lnbmVkIHdvcmQiLCAgICAzMiwgIHV3LCAgICB1dykKK01NVkVDX0FERFNfU0FUKGIsICAiYiIs ICAgICAiYnl0ZSIsICAgICAgICAgICAgIDgsICBiLCAgICAgYikKK01NVkVDX0FERFNfU0FUKGgs ICAiaCIsICAgICAiSGFsZndvcmQiLCAgICAgICAgICAgICAxNiwgIGgsICAgICBoKQorTU1WRUNf QUREU19TQVQodywgICJ3IiwgICAgICJXb3JkIiwgICAgICAgICAgICAgICAgIDMyLCAgdywgICAg IHcpCisKKworLyogQXZlcmFnaW5nIEluc3RydWN0aW9ucyAqLworTU1WRUNfQVZHVSh1YiwidWIi LCAgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgOCwgICB1YiwgICB1YikKK01NVkVDX0FWR1UodWgs InVoIiwgICAgICJVbnNpZ25lZCBIYWxmd29yZCIsIDE2LCAgdWgsICAgdWgpCitNTVZFQ19BVkdV X05PVjEodXcsInV3IiwgICAgICJVbnNpZ25lZCBXb3JkIiwgICAgIDMyLCAgdXcsICAgdXcpCitN TVZFQ19BVkdTX05PVjEoYiwgICAiYiIsICAgICJCeXRlIiwgICAgICAgICAgICAgICA4LCAgIGIs ICAgYikKK01NVkVDX0FWR1MoaCwgICAiaCIsICAgICJIYWxmd29yZCIsICAgICAgICAgIDE2LCAg IGgsICAgaCkKK01NVkVDX0FWR1ModywgICAidyIsICAgICJXb3JkIiwgICAgICAgICAgICAgIDMy LCAgIHcsICAgdykKKworCisvKiBBYnNvbHV0ZSBEaWZmZXJlbmNlICovCitNTVZFQ19BQlNESUZG KHViLCJ1YiIsICAiVW5zaWduZWQgQnl0ZSIsICAgICAgICA4LCAgIHViLCAgICB1YikKK01NVkVD X0FCU0RJRkYodWgsInVoIiwgICJVbnNpZ25lZCBIYWxmd29yZCIsICAgIDE2LCAgdWgsICAgIHVo KQorTU1WRUNfQUJTRElGRihoLCJoIiwgICAgICAgICJIYWxmd29yZCIsICAgICAgICAgICAgIDE2 LCAgdWgsICAgIGgpCitNTVZFQ19BQlNESUZGKHcsInciLCAgICAgICAgIldvcmQiLCAgICAgICAg ICAgICAgICAgMzIsICB1dywgICAgdykKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoOCx2bmF2 Z3ViLCAiVmQzMj12bmF2Z3ViKFZ1MzIsVnYzMikiLCAiVmQzMi5iPXZuYXZnKFZ1MzIudWIsVnYz Mi51YikiLAorIlZlY3RvciBOZWdhdGl2ZSBBdmVyYWdlIFVuc2lnbmVkIEJ5dGUiLCBWZFYuYltp XSAgID0gZlZOQVZHVSg4LCBWdVYudWJbaV0sIFZ2Vi51YltpXSkpCisKK0lURVJBVE9SX0lOU05f QU5ZX1NMT1QoMzIsdmFkZGNhcnJ5c2F0LCJWZDMyLnc9dmFkZChWdTMyLncsVnYzMi53LFFzNCk6 Y2Fycnk6c2F0IiwiYWRkIHcvY2FycnkgYW5kIHNhdHVyYXRlIiwKK1ZkVi53W2ldID0gZlZTQVRX KFZ1Vi53W2ldK1Z2Vi53W2ldK2ZHRVRRQklUKFFzVixpKjQpKSkKKworSVRFUkFUT1JfSU5TTl9B TllfU0xPVCgzMix2YWRkY2FycnksIlZkMzIudz12YWRkKFZ1MzIudyxWdjMyLncsUXg0KTpjYXJy eSIsImFkZCB3L2NhcnJ5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rVnZWLndbaV0rZkdFVFFCSVQo UXhWLGkqNCk7CitmU0VUUUJJVFMoUXhWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVW LndbaV0sVnZWLndbaV0sZkdFVFFCSVQoUXhWLGkqNCkpKSkKKworSVRFUkFUT1JfSU5TTl9BTllf U0xPVCgzMix2c3ViY2FycnksIlZkMzIudz12c3ViKFZ1MzIudyxWdjMyLncsUXg0KTpjYXJyeSIs ImFkZCB3L2NhcnJ5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rflZ2Vi53W2ldK2ZHRVRRQklUKFF4 VixpKjQpOworZlNFVFFCSVRTKFF4Viw0LDB4Riw0KmksLWZDQVJSWV9GUk9NX0FERDMyKFZ1Vi53 W2ldLH5WdlYud1tpXSxmR0VUUUJJVChReFYsaSo0KSkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9T TE9UKDMyLHZhZGRjYXJyeW8sIlZkMzIudyxRZTQ9dmFkZChWdTMyLncsVnYzMi53KTpjYXJyeSIs ImFkZCB3L2NhcnJ5IG91dC1vbmx5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rVnZWLndbaV07Citm U0VUUUJJVFMoUWVWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVWLndbaV0sVnZWLndb aV0sMCkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZzdWJjYXJyeW8sIlZkMzIudyxR ZTQ9dnN1YihWdTMyLncsVnYzMi53KTpjYXJyeSIsInN1YnRyYWN0IHcvY2Fycnkgb3V0LW9ubHki LAorVmRWLndbaV0gPSBWdVYud1tpXSt+VnZWLndbaV0rMTsKK2ZTRVRRQklUUyhRZVYsNCwweEYs NCppLC1mQ0FSUllfRlJPTV9BREQzMihWdVYud1tpXSx+VnZWLndbaV0sMSkpKQorCisKK0lURVJB VE9SX0lOU05fQU5ZX1NMT1QoMzIsdnNhdGR3LCJWZDMyLnc9dnNhdGR3KFZ1MzIudyxWdjMyLncp IiwiU2F0dXJhdGUgZnJvbSA2NC1iaXRzIChoaWdoZXIgMzItYml0cyBjb21lIGZyb20gZmlyc3Qg dmVjdG9yKSB0byAzMi1iaXRzIixWZFYud1tpXSA9IGZWU0FURFcoVnVWLndbaV0sVnZWLndbaV0p KQorCisKKyNkZWZpbmUgTU1WRUNfQUREU0FUX01JWChUQUdFTkQsU0FURixXSURUSCxERVNULFNS QzEsU1JDMilcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUQUdFTkQsIlZk MzIuIiNERVNUIj12YWRkKFZ1MzIuIiNTUkMxIixWdjMyLiIjU1JDMiIpOnNhdCIsICAgICJWZWN0 b3IgQWRkIG1peGVkIiwgVmRWLkRFU1RbaV0gPSAgU0FURihWdVYuU1JDMVtpXSArICBWdlYuU1JD MltpXSkpXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChXSURUSCwgdnN1YiMjVEFHRU5ELCJWZDMy LiIjREVTVCI9dnN1YihWdTMyLiIjU1JDMSIsVnYzMi4iI1NSQzIiKTpzYXQiLCAgICAiVmVjdG9y IFN1YiBtaXhlZCIsIFZkVi5ERVNUW2ldID0gIFNBVEYoVnVWLlNSQzFbaV0gLSAgVnZWLlNSQzJb aV0pKVwKKworTU1WRUNfQUREU0FUX01JWCh1YnViYl9zYXQsZlZTQVRVQiw4LHViLHViLGIpCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgV0lERU5JTkcKKyoqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMTYsdmFkZHViaCwiVmRkMzI9dmFkZHViKFZ1MzIsVnYzMikiLCJWZGQzMi5oPXZhZGQo VnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28g dmVjdG9ycyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgwLCBWdVYu dWhbaV0pKSArIGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ2Vi51aFtpXSkpOworICAgIFZkZFYudlsx XS5oW2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkgKyBmWkU4XzE2KGZHRVRV QllURSgxLCBWdlYudWhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygxNix2c3VidWJoLCJWZGQzMj12c3VidWIoVnUzMixWdjMyKSIsIlZkZDMyLmg9dnN1YihWdTMy LnViLFZ2MzIudWIpIiwKKyJWZWN0b3Igc3VidHJhY3Rpb24gd2l0aCB3aWRlbiBpbnRvIHR3byB2 ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1Vi51 aFtpXSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgVmRkVi52WzFd LmhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSAtIGZaRThfMTYoZkdFVFVC WVRFKDEsIFZ2Vi51aFtpXSkpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2YWRkaHcsIlZkZDMyPXZhZGRoKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZhZGQoVnUz Mi5oLFZ2MzIuaCkiLAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3Rv cnMiLAorICAgIFZkZFYudlswXS53W2ldID0gZkdFVEhBTEYoMCwgVnVWLndbaV0pICsgZkdFVEhB TEYoMCwgVnZWLndbaV0pOworICAgIFZkZFYudlsxXS53W2ldID0gZkdFVEhBTEYoMSwgVnVWLndb aV0pICsgZkdFVEhBTEYoMSwgVnZWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDMyLHZzdWJodywiVmRkMzI9dnN1YmgoVnUzMixWdjMyKSIsIlZkZDMyLnc9dnN1 YihWdTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIHN1YnRyYWN0aW9uIHdpdGggd2lkZW4gaW50byB0 d28gdmVjdG9ycyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmR0VUSEFMRigwLCBWdVYud1tpXSkg LSBmR0VUSEFMRigwLCBWdlYud1tpXSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmR0VUSEFMRigx LCBWdVYud1tpXSkgLSBmR0VUSEFMRigxLCBWdlYud1tpXSkpCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2YWRkdWh3LCJWZGQzMj12YWRkdWgoVnUzMixWdjMyKSIs IlZkZDMyLnc9dmFkZChWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3 aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZaRTE2XzMyKGZH RVRVSEFMRigwLCBWdVYudXdbaV0pKSArIGZaRTE2XzMyKGZHRVRVSEFMRigwLCBWdlYudXdbaV0p KTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdVYudXdbaV0p KSArIGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2c3VidWh3LCJWZGQzMj12c3VidWgoVnUzMixWdjMyKSIs IlZkZDMyLnc9dnN1YihWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3Igc3VidHJhY3Rpb24gd2l0 aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZaRTE2XzMy KGZHRVRVSEFMRigwLCBWdVYudXdbaV0pKSAtIGZaRTE2XzMyKGZHRVRVSEFMRigwLCBWdlYudXdb aV0pKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdVYudXdb aV0pKSAtIGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFkZGh3X2FjYywiVnh4MzIrPXZhZGRoKFZ1 MzIsVnYzMikiLCJWeHgzMi53Kz12YWRkKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYWRkaXRp b24gd2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBm R0VUSEFMRigwLCBWdVYud1tpXSkgKyBmR0VUSEFMRigwLCBWdlYud1tpXSk7CisgICAgVnh4Vi52 WzFdLndbaV0gKz0gZkdFVEhBTEYoMSwgVnVWLndbaV0pICsgZkdFVEhBTEYoMSwgVnZWLndbaV0p KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGR1aHdfYWNjLCJW eHgzMis9dmFkZHVoKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12YWRkKFZ1MzIudWgsVnYzMi51aCki LAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZ4 eFYudlswXS53W2ldICs9IGZHRVRVSEFMRigwLCBWdVYud1tpXSkgKyBmR0VUVUhBTEYoMCwgVnZW LndbaV0pOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZHRVRVSEFMRigxLCBWdVYud1tpXSkgKyBm R0VUVUhBTEYoMSwgVnZWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDE2LHZhZGR1YmhfYWNjLCJWeHgzMis9dmFkZHViKFZ1MzIsVnYzMikiLCJWeHgzMi5oKz12 YWRkKFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8g dHdvIHZlY3RvcnMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRVQllURSgwLCBWdVYuaFtp XSkgKyBmR0VUVUJZVEUoMCwgVnZWLmhbaV0pOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRV QllURSgxLCBWdVYuaFtpXSkgKyBmR0VUVUJZVEUoMSwgVnZWLmhbaV0pKQorCisKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqCisqICAgQ29uZGl0aW9uYWwKKyoqKioqKioqKioqKioqKioq KioqKioqKioqKiovCisKKyNkZWZpbmUgQ09OREFERFNVQihXSURUSCxUQUdFTkQsTEhTWU4sUkhT WU4sREVTQ1IsTEhCRUgsUkhCRUgpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZh ZGQjI1RBR0VORCMjcSwiaWYgKFF2NC4iI1RBR0VORCIpICJMSFNZTiIrPSJSSFNZTiwiaWYgKFF2 NCkgIkxIU1lOIis9IlJIU1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhC RUgrUkhCRUgsTEhCRUgpKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2c3ViIyNU QUdFTkQjI3EsImlmIChRdjQuIiNUQUdFTkQiKSAiTEhTWU4iLT0iUkhTWU4sImlmIChRdjQpICJM SFNZTiItPSJSSFNZTixERVNDUixMSEJFSD1mQ09ORE1BU0sjI1dJRFRIKFF2VixpLExIQkVILVJI QkVILExIQkVIKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmFkZCMjVEFHRU5E IyNucSwiaWYgKCFRdjQuIiNUQUdFTkQiKSAiTEhTWU4iKz0iUkhTWU4sImlmICghUXY0KSAiTEhT WU4iKz0iUkhTWU4sREVTQ1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCxMSEJF SCtSSEJFSCkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZzdWIjI1RBR0VORCMj bnEsImlmICghUXY0LiIjVEFHRU5EIikgIkxIU1lOIi09IlJIU1lOLCJpZiAoIVF2NCkgIkxIU1lO Ii09IlJIU1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhCRUgsTEhCRUgt UkhCRUgpKSBcCisKK0NPTkRBRERTVUIoOCxiLCJWeDMyLmIiLCJWdTMyLmIiLCJDb25kaXRpb25h bCBhZGQvc3ViIEJ5dGUiLFZ4Vi51YltpXSxWdVYudWJbaV0pCitDT05EQUREU1VCKDE2LGgsIlZ4 MzIuaCIsIlZ1MzIuaCIsIkNvbmRpdGlvbmFsIGFkZC9zdWIgSGFsZiIsVnhWLmhbaV0sVnVWLmhb aV0pCitDT05EQUREU1VCKDMyLHcsIlZ4MzIudyIsIlZ1MzIudyIsIkNvbmRpdGlvbmFsIGFkZC9z dWIgV29yZCIsVnhWLndbaV0sVnVWLndbaV0pCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIEFCU09MVVRFIFZBTFVFUworKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBWNjUKK0lU RVJBVE9SX0lOU04yX0FOWV9TTE9UX05PVjEoOCx2YWJzYiwgICAgICAgICJWZDMyPXZhYnNiKFZ1 MzIpIiwgICAgICJWZDMyLmI9dmFicyhWdTMyLmIpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUgdmFs dWUgb2YgYnl0ZXMiLCAgICBWZFYuYltpXSAgPSAgZkFCUyhWdVYuYltpXSkpCitJVEVSQVRPUl9J TlNOMl9BTllfU0xPVF9OT1YxKDgsdmFic2Jfc2F0LCAgICAiVmQzMj12YWJzYihWdTMyKTpzYXQi LCAiVmQzMi5iPXZhYnMoVnUzMi5iKTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIGJ5 dGVzIiwgICAgVmRWLmJbaV0gID0gIGZWU0FUQihmQUJTKGZTRThfMTYoVnVWLmJbaV0pKSkpCisK KworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdmFic2gsICAgICAgICAiVmQzMj12YWJzaChW dTMyKSIsICAgICAiVmQzMi5oPXZhYnMoVnUzMi5oKSIsICAgICAiVmVjdG9yIGFic29sdXRlIHZh bHVlIG9mIGhhbGZ3b3JkcyIsICAgIFZkVi5oW2ldICA9ICBmQUJTKFZ1Vi5oW2ldKSkKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UKDE2LHZhYnNoX3NhdCwgICAgIlZkMzI9dmFic2goVnUzMik6c2F0 IiwgIlZkMzIuaD12YWJzKFZ1MzIuaCk6c2F0IiwgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiBo YWxmd29yZHMiLCAgICBWZFYuaFtpXSAgPSAgZlZTQVRIKGZBQlMoZlNFMTZfMzIoVnVWLmhbaV0p KSkpCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgzMix2YWJzdywgICAgICAgICJWZDMyPXZhYnN3 KFZ1MzIpIiwgICAgICJWZDMyLnc9dmFicyhWdTMyLncpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUg dmFsdWUgb2Ygd29yZHMiLCAgICAgICAgVmRWLndbaV0gID0gIGZBQlMoVnVWLndbaV0pKQorSVRF UkFUT1JfSU5TTjJfQU5ZX1NMT1QoMzIsdmFic3dfc2F0LCAgICAiVmQzMj12YWJzdyhWdTMyKTpz YXQiLCAiVmQzMi53PXZhYnMoVnUzMi53KTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9m IHdvcmRzIiwgICAgICAgIFZkVi53W2ldICA9ICBmVlNBVFcoZkFCUyhmU0UzMl82NChWdVYud1tp XSkpKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE1NVkVDVE9SIE1VTFRJUExJQ0FUSU9O UworICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworCisKKy8qIEJ5dGUgYnkgQnl0ZSAqLworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5YnYsIlZkZDMyPXZtcHliKFZ1MzIsVnYz MikiLCJWZGQzMi5oPXZtcHkoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1 ZSBvZiB3b3JkcyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSAgZk1QWThTUyhmR0VUQllURSgwLCBW dVYuaFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSAg Zk1QWThTUyhmR0VUQllURSgxLCBWdVYuaFtpXSksIGZHRVRCWVRFKDEsIFZ2Vi5oW2ldKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ2X2FjYywiVnh4MzIr PXZtcHliKFZ1MzIsVnYzMikiLCJWeHgzMi5oKz12bXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0 b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9ICBmTVBZ OFNTKGZHRVRCWVRFKDAsIFZ1Vi5oW2ldKSwgZkdFVEJZVEUoMCwgVnZWLmhbaV0pKTsKKyAgICBW eHhWLnZbMV0uaFtpXSArPSAgZk1QWThTUyhmR0VUQllURSgxLCBWdVYuaFtpXSksIGZHRVRCWVRF KDEsIFZ2Vi5oW2ldKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygx Nix2bXB5dWJ2LCJWZGQzMj12bXB5dWIoVnUzMixWdjMyKSIsIlZkZDMyLnVoPXZtcHkoVnUzMi51 YixWdjMyLnViKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWZGRW LnZbMF0udWhbaV0gPSAgZk1QWThVVShmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVFVCWVRF KDAsIFZ2Vi51aFtpXSkgKTsKKyAgICBWZGRWLnZbMV0udWhbaV0gPSAgZk1QWThVVShmR0VUVUJZ VEUoMSwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKDEsIFZ2Vi51aFtpXSkgKSkKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5dWJ2X2FjYywiVnh4MzIrPXZtcHl1YihW dTMyLFZ2MzIpIiwiVnh4MzIudWgrPXZtcHkoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIGFi c29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0udWhbaV0gKz0gIGZNUFk4VVUo ZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgwLCBWdlYudWhbaV0pICk7CisgICAg Vnh4Vi52WzFdLnVoW2ldICs9ICBmTVBZOFVVKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VU VUJZVEUoMSwgVnZWLnVoW2ldKSApKQorCisKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygxNix2bXB5YnVzdiwiVmRkMzI9dm1weWJ1cyhWdTMyLFZ2MzIpIiwiVmRk MzIuaD12bXB5KFZ1MzIudWIsVnYzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdv cmRzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhb aV0pLCBmR0VUQllURSgwLCBWdlYuaFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldICA9IGZNUFk4 VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKDEsIFZ2Vi5oW2ldKSkpCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1c3ZfYWNjLCJWeHgzMis9 dm1weWJ1cyhWdTMyLFZ2MzIpIiwiVnh4MzIuaCs9dm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZl Y3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52WzBdLmhbaV0gICs9IGZN UFk4VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7Cisg ICAgVnh4Vi52WzFdLmhbaV0gICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZH RVRCWVRFKDEsIFZ2Vi5oW2ldKSkpCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RP VUJMRV9WRUMoMTYsdm1wYWJ1c3YsIlZkZDMyPXZtcGFidXMoVnV1MzIsVnZ2MzIpIiwiVmRkMzIu aD12bXBhKFZ1dTMyLnViLFZ2djMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAg ICBWZGRWLnZbMF0uaFtpXSA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSks IGZHRVRCWVRFKDAsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1 Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMCwgVnZ2Vi52WzFdLnVoW2ldKSk7CisgICAgVmRkVi52 WzFdLmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllU RSgxLCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51 aFtpXSksIGZHRVRCWVRFKDEsIFZ2dlYudlsxXS51aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcGFidXV2LCJWZGQzMj12bXBhYnV1KFZ1dTMyLFZ2djMy KSIsIlZkZDMyLmg9dm1wYShWdXUzMi51YixWdnYzMi51YikiLAorIlZlcnRpY2FsIEJ5dGUgTXVs dGlwbHkiLAorICAgIFZkZFYudlswXS5oW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52 WzBdLnVoW2ldKSwgZkdFVFVCWVRFKDAsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVVShmR0VU VUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDAsIFZ2dlYudlsxXS51aFtpXSkp OworICAgIFZkZFYudlsxXS5oW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVo W2ldKSwgZkdFVFVCWVRFKDEsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVVShmR0VUVUJZVEUo MSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDEsIFZ2dlYudlsxXS51aFtpXSkpKQorCisK KworCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlodiwi VmRkMzI9dm1weWgoVnUzMixWdjMyKSIsIlZkZDMyLnc9dm1weShWdTMyLmgsVnYzMi5oKSIsCisi VmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0g PSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7 CisgICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZH RVRIQUxGKDEsIFZ2Vi53W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdm1weWh2X2FjYywiVnh4MzIrPXZtcHloKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12bXB5 KFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwK KyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZH RVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdF VEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBWdlYud1tpXSkpKQorCitJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHl1aHYsIlZkZDMyPXZtcHl1aChWdTMyLFZ2 MzIpIiwiVmRkMzIudXc9dm1weShWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9y IFVuc2lnbmVkIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0udXdbaV0gPSBmTVBZ MTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOwor ICAgIFZkZFYudlsxXS51d1tpXSA9IGZNUFkxNlVVKGZHRVRVSEFMRigxLCBWdVYudXdbaV0pLCBm R0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdm1weXVodl9hY2MsIlZ4eDMyKz12bXB5dWgoVnUzMixWdjMyKSIsIlZ4eDMyLnV3 Kz12bXB5KFZ1MzIudWgsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgVW5zaWduZWQgSGFs ZndvcmQgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZMTZVVShmR0VUVUhB TEYoMCwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZ4eFYudlsx XS51d1tpXSArPSBmTVBZMTZVVShmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDEs IFZ2Vi51d1tpXSkpKQorCisKKworLyogVmVjdG9yIGJ5IFZlY3RvciAqLworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5aHZzcnMsIlZkMzI9dm1weWgoVnUzMixWdjMy KTo8PDE6cm5kOnNhdCIsIlZkMzIuaD12bXB5KFZ1MzIuaCxWdjMyLmgpOjw8MTpybmQ6c2F0IiwK KyJWZWN0b3IgaGFsZndvcmQgbXVsdGlwbHkgd2l0aCByb3VuZCwgc2hpZnQsIGFuZCBzYXQxNiIs CisgICAgVmRWLmhbaV0gPSBmVlNBVEgoZkdFVEhBTEYoMSxmVlNBVChmUk9VTkQoKGZNUFkxNlNT KFZ1Vi5oW2ldLFZ2Vi5oW2ldICAgICk8PDEpKSkpKSkKKworCisKKworCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlodXMsICJWZGQzMj12bXB5aHVzKFZ1MzIsVnYz MikiLCJWZGQzMi53PXZtcHkoVnUzMi5oLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhh bGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZNUFkxNlNVKGZHRVRIQUxG KDAsIFZ1Vi53W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZkZFYudlsxXS53 W2ldID0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUVUhBTEYoMSwgVnZWLnV3 W2ldKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHVz X2FjYywgIlZ4eDMyKz12bXB5aHVzKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12bXB5KFZ1MzIuaCxW djMyLnVoKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVnh4 Vi52WzBdLndbaV0gKz0gZk1QWTE2U1UoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUVUhBTEYo MCwgVnZWLnV3W2ldKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1UoZkdFVEhBTEYo MSwgVnVWLndbaV0pLCBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKKworCisKK0lURVJBVE9S X0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWloLCJWZDMyPXZtcHlpaChWdTMyLFZ2 MzIpIiwiVmQzMi5oPXZtcHlpKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhh bGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWZFYuaFtpXSA9IGZNUFkxNlNTKFZ1Vi5oW2ldLCBWdlYu aFtpXSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWloX2Fj YywiVngzMis9dm1weWloKFZ1MzIsVnYzMikiLCJWeDMyLmgrPXZtcHlpKFZ1MzIuaCxWdjMyLmgp IiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWeFYuaFtpXSAr PSBmTVBZMTZTUyhWdVYuaFtpXSwgVnZWLmhbaV0pKQorCisKKworLyogMzJ4MzIgaGlnaCBoYWxm IC8gZnJhYyAqLworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1w eWV3dWgsIlZkMzI9dm1weWV3dWgoVnUzMixWdjMyKSIsIlZkMzIudz12bXB5ZShWdTMyLncsVnYz Mi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorVmRWLndbaV0g PSBmTVBZMzIxNlNVKFZ1Vi53W2ldLCBmR0VUVUhBTEYoMCwgVnZWLndbaV0pKSA+PiAxNikKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5b3doLCJWZDMyPXZtcHlv d2goVnUzMixWdjMyKTo8PDE6c2F0IiwiVmQzMi53PXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpz YXQiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorVmRWLndbaV0gPSBm VlNBVFcoKCgoZk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSA+PiAx NCkgKyAwKSA+PiAxKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIs dm1weW93aF9ybmQsIlZkMzI9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpybmQ6c2F0IiwiVmQzMi53 PXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpybmQ6c2F0IiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhh bGZ3b3JkIE11bHRpcGx5IiwKK1ZkVi53W2ldID0gZlZTQVRXKCgoKGZNUFkzMjE2U1MoVnVWLndb aV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkgPj4gMTQpICsgMSkgPj4gMSkpKQorCitJVEVSQVRP Ul9JTlNOX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWV3dWhfNjQsIlZkZDMyPXZtcHllKFZ1 MzIudyxWdjMyLnVoKSIsCisiV29yZCB0aW1lcyBIYWxmd29yZCBNdWx0aXBseSwgNjQtYml0IHJl c3VsdCIsCisJZkhJREUoc2l6ZThzX3QgcHJvZDspCisJcHJvZCA9IGZNUFkzMlNVKFZ1Vi53W2ld LGZHRVRVSEFMRigwLFZ2Vi53W2ldKSk7CisJVmRkVi52WzFdLndbaV0gPSBwcm9kID4+IDE2Owor CVZkZFYudlswXS53W2ldID0gcHJvZCA8PCAxNikKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9E T1VCTEVfVkVDKDMyLHZtcHlvd2hfNjRfYWNjLCJWeHgzMis9dm1weW8oVnUzMi53LFZ2MzIuaCki LAorIldvcmQgdGltZXMgSGFsZndvcmQgTXVsdGlwbHksIDY0LWJpdCByZXN1bHQiLAorCWZISURF KHNpemU4c190IHByb2Q7KQorCXByb2QgPSBmTVBZMzJTUyhWdVYud1tpXSxmR0VUSEFMRigxLFZ2 Vi53W2ldKSkgICsgZlNFMzJfNjQoVnh4Vi52WzFdLndbaV0pOworCVZ4eFYudlsxXS53W2ldID0g cHJvZCA+PiAxNjsKKwlmU0VUSEFMRigwLCBWeHhWLnZbMF0ud1tpXSwgVnh4Vi52WzBdLndbaV0g Pj4gMTYpOworCWZTRVRIQUxGKDEsIFZ4eFYudlswXS53W2ldLCBwcm9kICYgMHgwMDAwZmZmZikp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weW93aF9zYWNjLCJW eDMyKz12bXB5b3doKFZ1MzIsVnYzMik6PDwxOnNhdDpzaGlmdCIsIlZ4MzIudys9dm1weW8oVnUz Mi53LFZ2MzIuaCk6PDwxOnNhdDpzaGlmdCIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBN dWx0aXBseSIsCitJVjFERUFEKCkgVnhWLndbaV0gPSBmVlNBVFcoKCgoKFZ4Vi53W2ldICsgZk1Q WTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSkgPj4gMTQpICsgMCkgPj4g MSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlvd2hfcm5k X3NhY2MsIlZ4MzIrPXZtcHlvd2goVnUzMixWdjMyKTo8PDE6cm5kOnNhdDpzaGlmdCIsIlZ4MzIu dys9dm1weW8oVnUzMi53LFZ2MzIuaCk6PDwxOnJuZDpzYXQ6c2hpZnQiLAorIlZlY3RvciBieSBW ZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVBRCgpIFZ4Vi53W2ldID0gZlZTQVRXKCgo KChWeFYud1tpXSArIGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkp ID4+IDE0KSArIDEpID4+IDEpKSkKKworLyogRm9yIDMyeDMyIGludGVnZXIgLyBsb3cgaGFsZiAq LworCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UKDMyLHZtcHlpZW9oLCJWZDMyLnc9dm1weWllbyhW dTMyLmgsVnYzMi5oKSIsIk9kZC9FdmVuIG11bHRpcGx5IGZvciAzMngzMiBsb3cgaGFsZiIsCisJ VmRWLndbaV0gPSAoZkdFVEhBTEYoMCxWdVYud1tpXSkqZkdFVEhBTEYoMSxWdlYud1tpXSkpIDw8 IDE2KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXd1aCwi VmQzMj12bXB5aWV3dWgoVnUzMixWdjMyKSIsIlZkMzIudz12bXB5aWUoVnUzMi53LFZ2MzIudWgp IiwKKyJWZWN0b3IgYnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVB RCgpICAgIFZkVi53W2ldID0gZk1QWTMyMTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53 W2ldKSkgKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpb3do LCJWZDMyPXZtcHlpb3doKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1weWlvKFZ1MzIudyxWdjMyLmgp IiwKKyJWZWN0b3IgYnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVB RCgpICAgIFZkVi53W2ldID0gZk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndb aV0pKSApCisKKy8qIEFkZCBiYWNrIHRoZXNlLi4uICovCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdm1weWlld2hfYWNjLCJWeDMyKz12bXB5aWV3aChWdTMyLFZ2MzIp IiwiVngzMi53Kz12bXB5aWUoVnUzMi53LFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgV29y ZCBieSBIYWxmd29yZCBNdWx0aXBseSIsCitWeFYud1tpXSA9IFZ4Vi53W2ldICsgZk1QWTMyMTZT UyhWdVYud1tpXSwgZkdFVEhBTEYoMCwgVnZWLndbaV0pKSApCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWlld3VoX2FjYywiVngzMis9dm1weWlld3VoKFZ1MzIs VnYzMikiLCJWeDMyLncrPXZtcHlpZShWdTMyLncsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0 b3IgV29yZCBieSBIYWxmd29yZCBNdWx0aXBseSIsCitWeFYud1tpXSA9IFZ4Vi53W2ldICsgZk1Q WTMyMTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53W2ldKSkgKQorCisKKworCisKKwor CisvKiBWZWN0b3IgYnkgU2NhbGFyICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDKDE2LHZtcHl1YiwiVmRkMzI9dm1weXViKFZ1MzIsUnQzMikiLCJWZGQzMi51aD12bXB5KFZ1 MzIudWIsUnQzMi51YikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAg VmRkVi52WzBdLnVoW2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRV QllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS51aFtpXSAgPSBmTVBZOFVVKGZH RVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5dWJfYWNjLCJWeHgzMis9dm1w eXViKFZ1MzIsUnQzMikiLCJWeHgzMi51aCs9dm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0 b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS51aFtpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoKDIqaSswKSU0LCBSdFYpKTsK KyAgICBWeHhWLnZbMV0udWhbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwg ZkdFVFVCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygxNix2bXB5YnVzLCJWZGQzMj12bXB5YnVzKFZ1MzIsUnQzMikiLCJWZGQzMi5o PXZtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMi LAorICAgIFZkZFYudlswXS5oW2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSks IGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gID0gZk1QWThV UyhmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5YnVzX2FjYywiVnh4MzIr PXZtcHlidXMoVnUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJW ZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZN UFk4VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7 CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwg ZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDE2LHZtcGFidXMsIlZkZDMyPXZtcGFidXMoVnV1MzIsUnQzMikiLCJWZGQzMi5o PXZtcGEoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAg VmRkVi52WzBdLmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBm R0VUQllURSgwLCBSdFYpKSArIGZNUFkxNlNTKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0p LCBmR0VUQllURSgxLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZNUFk4VVMoZkdFVFVC WVRFKDEsIFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKDIsIFJ0VikpICsgZk1QWTE2U1MoZkdF VFVCWVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDMsIFJ0VikpKQorCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcGFidXNfYWNjLCJWeHgzMis9dm1wYWJ1 cyhWdXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcGEoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVydGlj YWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZ VEUoMCwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoMCwgUnRWKSkgKyBmTVBZMTZTUyhmR0VU VUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMSwgUnRWKSk7CisgICAgVnh4Vi52 WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZ VEUoMiwgUnRWKSkgKyBmTVBZMTZTUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdF VEJZVEUoMywgUnRWKSkpCisKKy8vIFY2NQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDX05PVjEoMTYsdm1wYWJ1dSwiVmRkMzI9dm1wYWJ1dShWdXUzMixSdDMyKSIsIlZkZDMy Lmg9dm1wYShWdXUzMi51YixSdDMyLnViKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisg ICAgVmRkVi52WzBdLnVoW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzBdLnVoW2ld KSwgZkdFVFVCWVRFKDAsIFJ0VikpICsgZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzFdLnVo W2ldKSwgZkdFVFVCWVRFKDEsIFJ0VikpOworICAgIFZkZFYudlsxXS51aFtpXSA9IGZNUFk4VVUo ZkdFVFVCWVRFKDEsIFZ1dVYudlswXS51aFtpXSksIGZHRVRVQllURSgyLCBSdFYpKSArIGZNUFk4 VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgzLCBSdFYpKSkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKDE2LHZtcGFidXVfYWNjLCJW eHgzMis9dm1wYWJ1dShWdXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcGEoVnV1MzIudWIsUnQzMi51 YikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS51aFtpXSArPSBm TVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMCwgUnRWKSkg KyBmTVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMSwgUnRW KSk7CisgICAgVnh4Vi52WzFdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlsw XS51aFtpXSksIGZHRVRVQllURSgyLCBSdFYpKSArIGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYu dlsxXS51aFtpXSksIGZHRVRVQllURSgzLCBSdFYpKSkKKworCisKKworLyogSGFsZiBieSBCeXRl ICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcGFoYiwiVmRkMzI9 dm1wYWhiKFZ1dTMyLFJ0MzIpIiwiVmRkMzIudz12bXBhKFZ1dTMyLmgsUnQzMi5iKSIsCisiVmVy dGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VU SEFMRigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMCwgUnRWKSkpICsgZk1Q WTE2U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDEsIFJ0 VikpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlsw XS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgyLCBSdFYpKSkgKyBmTVBZMTZTUyhmR0VUSEFMRigx LCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRWKSkpKQorCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcGFoYl9hY2MsIlZ4eDMyKz12bXBhaGIo VnV1MzIsUnQzMikiLCJWeHgzMi53Kz12bXBhKFZ1dTMyLmgsUnQzMi5iKSIsCisiVmVydGljYWwg Qnl0ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYo MCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAsIFJ0VikpKSArIGZNUFkxNlNT KGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgxLCBSdFYpKSk7 CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndb aV0pLCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0VikpKSArIGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1 dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYpKSkpCisKKy8qIEhhbGYgYnkg Qnl0ZSAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXBhdWhiLCJW ZGQzMj12bXBhdWhiKFZ1dTMyLFJ0MzIpIiwiVmRkMzIudz12bXBhKFZ1dTMyLnVoLFJ0MzIuYiki LAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ldID0gZk1QWTE2 VVMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgwLCBSdFYp KSkgKyBmTVBZMTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRC WVRFKDEsIFJ0VikpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlVTKGZHRVRVSEFMRigx LCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2VVMo ZkdFVFVIQUxGKDEsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYpKSkp CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1wYXVoYl9hY2MsIlZ4 eDMyKz12bXBhdWhiKFZ1dTMyLFJ0MzIpIiwiVnh4MzIudys9dm1wYShWdXUzMi51aCxSdDMyLmIp IiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZ MTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAsIFJ0 VikpKSArIGZNUFkxNlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdF VEJZVEUoMSwgUnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlVTKGZHRVRVSEFM RigxLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2 VVMoZkdFVFVIQUxGKDEsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYp KSkpCisKKworCisKKworCisKKy8qIEhhbGYgYnkgSGFsZiAqLworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aCwiVmRkMzI9dm1weWgoVnUzMixSdDMyKSIsIlZkZDMy Lnc9dm1weShWdTMyLmgsUnQzMi5oKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRz IiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9ICBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSks IGZHRVRIQUxGKDAsIFJ0VikpOworICAgIFZkZFYudlsxXS53W2ldID0gIGZNUFkxNlNTKGZHRVRI QUxGKDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUNfTk9WMSgzMix2bXB5aF9hY2MsIlZ4eDMyKz12bXB5aChWdTMyLFJ0 MzIpIiwiVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKSIsCisiVmVjdG9yIGV2ZW4gaGFsZndv cmRzIHdpdGggc2NhbGFyIGxvd2VyIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggc2hpZnQgYW5kIHNh dDMyIiwKKyAgICBWeHhWLnZbMF0ud1tpXSA9ICBmQ0FTVDhzKFZ4eFYudlswXS53W2ldKSArIGZN UFkxNlNTKGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgVnh4 Vi52WzFdLndbaV0gPSAgZkNBU1Q4cyhWeHhWLnZbMV0ud1tpXSkgKyBmTVBZMTZTUyhmR0VUSEFM RigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWhzYXRfYWNjLCJWeHgzMis9dm1weWgoVnUzMixSdDMy KTpzYXQiLCJWeHgzMi53Kz12bXB5KFZ1MzIuaCxSdDMyLmgpOnNhdCIsCisiVmVjdG9yIGV2ZW4g aGFsZndvcmRzIHdpdGggc2NhbGFyIGxvd2VyIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggc2hpZnQg YW5kIHNhdDMyIiwKKyAgICBWeHhWLnZbMF0ud1tpXSA9ICBmVlNBVFcoZkNBU1Q4cyhWeHhWLnZb MF0ud1tpXSkgKyBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFJ0 VikpKTsKKyAgICBWeHhWLnZbMV0ud1tpXSA9ICBmVlNBVFcoZkNBU1Q4cyhWeHhWLnZbMV0ud1tp XSkgKyBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKSkK KworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWhzcywiVmQz Mj12bXB5aChWdTMyLFJ0MzIpOjw8MTpzYXQiLCJWZDMyLmg9dm1weShWdTMyLmgsUnQzMi5oKTo8 PDE6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQgYnkgaGFsZndvcmQgbXVsdGlwbHksIHNoaWZ0IGJ5 IDEsIGFuZCB0YWtlIHVwcGVyIDE2IG1zYiIsCisgICAgICAgICAgZlNFVEhBTEYoMCxWZFYud1tp XSxmVlNBVEgoZkdFVEhBTEYoMSxmVlNBVCgoZk1QWTE2U1MoZkdFVEhBTEYoMCxWdVYud1tpXSks ZkdFVEhBTEYoMCxSdFYpKTw8MSkpKSkpOworICAgICAgICAgIGZTRVRIQUxGKDEsVmRWLndbaV0s ZlZTQVRIKGZHRVRIQUxGKDEsZlZTQVQoKGZNUFkxNlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZH RVRIQUxGKDEsUnRWKSk8PDEpKSkpKTsKKykKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQygzMix2bXB5aHNycywiVmQzMj12bXB5aChWdTMyLFJ0MzIpOjw8MTpybmQ6c2F0Iiwi VmQzMi5oPXZtcHkoVnUzMi5oLFJ0MzIuaCk6PDwxOnJuZDpzYXQiLAorIlZlY3RvciBoYWxmd29y ZCB3aXRoIHNjYWxhciBoYWxmd29yZCBtdWx0aXBseSB3aXRoIHJvdW5kLCBzaGlmdCwgYW5kIHNh dDE2IiwKKyAgICAgICBmU0VUSEFMRigwLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZWU0FU KGZST1VORCgoZk1QWTE2U1MoZkdFVEhBTEYoMCxWdVYud1tpXSksZkdFVEhBTEYoMCxSdFYpKTw8 MSkpKSkpKTsKKyAgICAgICBmU0VUSEFMRigxLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZW U0FUKGZST1VORCgoZk1QWTE2U1MoZkdFVEhBTEYoMSxWdVYud1tpXSksZkdFVEhBTEYoMSxSdFYp KTw8MSkpKSkpKTsKKykKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZtcHl1aCwiVmRkMzI9dm1weXVoKFZ1MzIsUnQzMikiLCJWZGQzMi51dz12bXB5KFZ1MzIudWgs UnQzMi51aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5IGJ5IHNj YWxhciIsCisgICAgVmRkVi52WzBdLnV3W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51 d1tpXSksZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldID0gZk1QWTE2VVUo ZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSksZkdFVFVIQUxGKDEsUnRWKSkpCisKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5dWhfYWNjLCJWeHgzMis9dm1weXVoKFZ1 MzIsUnQzMikiLCJWeHgzMi51dys9dm1weShWdTMyLnVoLFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZl biBoYWxmd29yZCB1bnNpZ25lZCBtdWx0aXBseSBieSBzY2FsYXIiLAorICAgIFZ4eFYudlswXS51 d1tpXSArPSBmTVBZMTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYp KTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDEsIFZ1Vi51d1tp XSksZkdFVFVIQUxGKDEsUnRWKSkpCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKiAgSEFMRiBCWSBCWVRFCisqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZt cHlpaGIsIlZkMzI9dm1weWloYihWdTMyLFJ0MzIpIiwiVmQzMi5oPXZtcHlpKFZ1MzIuaCxSdDMy LmIpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIs CitWZFYuaFtpXSAgPSBmTVBZMTZTUyhWdVYuaFtpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0VikgKSkK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMTYsdm1weWloYl9hY2MsIlZ4MzIrPXZtcHlpaGIo VnUzMixSdDMyKSIsIlZ4MzIuaCs9dm1weWkoVnUzMi5oLFJ0MzIuYikiLAorIlZlY3RvciB3b3Jk IGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi5oW2ldICs9IGZNUFkx NlNTKFZ1Vi5oW2ldLCBmR0VUQllURShpICUgNCwgUnRWKSApKQorCisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgV09SRCBCWSBCWVRFCisqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01Q WV9TTE9UKDMyLHZtcHlpd2IsIlZkMzI9dm1weWl3YihWdTMyLFJ0MzIpIiwiVmQzMi53PXZtcHlp KFZ1MzIudyxSdDMyLmIpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxv d2VyIHJlc3VsdCIsCitWZFYud1tpXSAgPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEJZVEUoaSAl IDQsIFJ0VikgKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdm1weWl3Yl9hY2MsIlZ4 MzIrPXZtcHlpd2IoVnUzMixSdDMyKSIsIlZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIuYikiLAor IlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi53 W2ldICs9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUQllURShpICUgNCwgUnRWKSApKQorCitJVEVS QVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2bXB5aXd1YiwiVmQzMj12bXB5aXd1YihWdTMyLFJ0MzIp IiwiVmQzMi53PXZtcHlpKFZ1MzIudyxSdDMyLnViKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBt dWx0aXBseSwga2VlcCBsb3dlciByZXN1bHQiLAorVmRWLndbaV0gID0gZk1QWTMyU1MoVnVWLndb aV0sIGZHRVRVQllURShpICUgNCwgUnRWKSApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgz Mix2bXB5aXd1Yl9hY2MsIlZ4MzIrPXZtcHlpd3ViKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlp KFZ1MzIudyxSdDMyLnViKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBs b3dlciByZXN1bHQiLAorVnhWLndbaV0gKz0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRVQllURShp ICUgNCwgUnRWKSApKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorKiAgV09SRCBCWSBIQUxGCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1w eWl3aCwiVmQzMj12bXB5aXdoKFZ1MzIsUnQzMikiLCJWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIu aCkiLAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwK K1ZkVi53W2ldICA9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUSEFMRihpICUgMiwgUnRWKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWl3aF9hY2MsIlZ4MzIr PXZtcHlpd2goVnUzMixSdDMyKSIsIlZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIuaCkiLAorIlZl Y3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi53W2ld ICs9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUSEFMRihpICUgMiwgUnRWKSkpCisKKworCisKKwor CisKKworCisKKworCisKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNU T1IgTE9HSUNBTCBPUEVSQVRJT05TCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNO X0FOWV9TTE9UKDE2LHZhbmQsIlZkMzI9dmFuZChWdTMyLFZ2MzIpIiwgIlZlY3RvciBMb2dpY2Fs IEFuZCIsIFZkVi51aFtpXSA9IFZ1Vi51aFtpXSAmIFZ2Vi5oW2ldKQorSVRFUkFUT1JfSU5TTl9B TllfU0xPVCgxNix2b3IsICJWZDMyPXZvcihWdTMyLFZ2MzIpIiwgICJWZWN0b3IgTG9naWNhbCBP ciIsIFZkVi51aFtpXSA9IFZ1Vi51aFtpXSB8IFZ2Vi5oW2ldKQorSVRFUkFUT1JfSU5TTl9BTllf U0xPVCgxNix2eG9yLCJWZDMyPXZ4b3IoVnUzMixWdjMyKSIsICJWZWN0b3IgTG9naWNhbCBYT1Ii LCAgICBWZFYudWhbaV0gPSBWdVYudWhbaV0gXiBWdlYuaFtpXSkKK0lURVJBVE9SX0lOU05fQU5Z X1NMT1QoMTYsdm5vdCwiVmQzMj12bm90KFZ1MzIpIiwgICAgICJWZWN0b3IgTG9naWNhbCBOT1Qi LCBWZFYudWhbaV0gPSB+VnVWLnVoW2ldKQorCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0xBVEUoOCwgdmFuZHFydCwKKyJWZDMyLnViPXZhbmQoUXU0LnViLFJ0MzIudWIpIiwgIlZk MzI9dmFuZChRdTQsUnQzMikiLCAiSW5zZXJ0IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAg VmRWLnViW2ldID0gZkdFVFFCSVQoUXVWLGkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kcXJ0X2FjYywKKyJWeDMyLnVi fD12YW5kKFF1NC51YixSdDMyLnViKSIsICJWeDMyfD12YW5kKFF1NCxSdDMyKSIsICAiSW5zZXJ0 IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAgVnhWLnViW2ldIHw9IChmR0VUUUJJVChRdVYs aSkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfTEFURSg4LCB2YW5kbnFydCwKKyJWZDMyLnViPXZhbmQoIVF1NC51YixSdDMyLnViKSIsICJW ZDMyPXZhbmQoIVF1NCxSdDMyKSIsICJJbnNlcnQgUHJlZGljYXRlIGludG8gVmVjdG9yIiwKKyAg ICBWZFYudWJbaV0gPSAhZkdFVFFCSVQoUXVWLGkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDog MCkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kbnFydF9hY2MsCisiVngz Mi51Ynw9dmFuZCghUXU0LnViLFJ0MzIudWIpIiwgIlZ4MzJ8PXZhbmQoIVF1NCxSdDMyKSIsICAi SW5zZXJ0IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAgVnhWLnViW2ldIHw9ICEoZkdFVFFC SVQoUXVWLGkpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6IDApCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kdnJ0LAorIlFkNC51Yj12YW5kKFZ1MzIudWIsUnQzMi51 YikiLCAiUWQ0PXZhbmQoVnUzMixSdDMyKSIsICJJbnNlcnQgaW50byBQcmVkaWNhdGUiLAorICAg IGZTRVRRQklUKFFkVixpLCgoVnVWLnViW2ldICYgZkdFVFVCWVRFKGkgJSA0LCBSdFYpKSAhPSAw KSA/IDEgOiAwKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kdnJ0X2Fj YywKKyJReDQudWJ8PXZhbmQoVnUzMi51YixSdDMyLnViKSIsICJReDR8PXZhbmQoVnUzMixSdDMy KSIsICJJbnNlcnQgaW50byBQcmVkaWNhdGUgIiwKKyAgICBmU0VUUUJJVChReFYsaSxmR0VUUUJJ VChReFYsaSl8KCgoVnVWLnViW2ldICYgZkdFVFVCWVRFKGkgJSA0LCBSdFYpKSAhPSAwKSA/IDEg OiAwKSkpCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoOCx2YW5kdnF2LCJWZDMyPXZhbmQoUXY0 LFZ1MzIpIiwiTWFzayBvZmYgYnl0ZXMiLAorVmRWLmJbaV0gPSBmR0VUUUJJVChRdlYsaSkgPyBW dVYuYltpXSA6IDApCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsdmFuZHZucXYsIlZkMzI9dmFu ZCghUXY0LFZ1MzIpIiwiTWFzayBvZmYgYnl0ZXMiLAorVmRWLmJbaV0gPSAhZkdFVFFCSVQoUXZW LGkpID8gVnVWLmJbaV0gOiAwKQorCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisgKiBDb21wYXJlIFZlY3RvciB3aXRoIFZlY3RvcgorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZp bmUgVkNNUChERVNULCBBU1JDLCBBU1JDT1AsIENNUCwgTiwgU1JDLCBNQVNLLCBXSURUSCkgICAg ICAgIFwKK3sgXAorICAgICAgIGZvcihmSElERShpbnQpIGkgPSAwOyBpIDwgZlZCWVRFUygpOyBp ICs9IFdJRFRIKSB7IFwKKwkJZlNFVFFCSVRTKERFU1QsV0lEVEgsTUFTSyxpLEFTUkMgQVNSQ09Q ICgoVnVWLlNSQ1tpL1dJRFRIXSBDTVAgVnZWLlNSQ1tpL1dJRFRIXSkgPyBNQVNLIDogMCkpOyBc CisgICAgfSBcCisgICAgICAgfQorCisKKyNkZWZpbmUgTU1WRUNfQ01QR1QoVFlQRSxUWVBFMixU WVBFMyxERVNDUixOLE1BU0ssV0lEVEgsU1JDKSBcCitFWFRJTlNOKFY2X3ZndCMjVFlQRSwgICAg ICAgIlFkND12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsICBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiIsIFwKKwlW Q01QKFFkViwgLCAsID4sIE4sIFNSQywgTUFTSywgV0lEVEgpKSBcCitFWFRJTlNOKFY2X3ZndCMj VFlQRSMjX2FuZCwgIlF4NCY9dmNtcC5ndChWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIiki LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhh biB3aXRoIHByZWRpY2F0ZS1hbmQiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgs TUFTSyxpKSwgJiwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmd0IyNU WVBFIyNfb3IsICAiUXg0fD12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZ3JlYXRlciB0aGFu IHdpdGggcHJlZGljYXRlLW9yIiwgXAorCVZDTVAoUXhWLCBmR0VUUUJJVFMoUXhWLFdJRFRILE1B U0ssaSksIHwsID4sIE4sIFNSQywgTUFTSywgV0lEVEgpKSBcCitFWFRJTlNOKFY2X3ZndCMjVFlQ RSMjX3hvciwgIlF4NF49dmNtcC5ndChWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiB3 aXRoIHByZWRpY2F0ZS14b3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFT SyxpKSwgXiwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpCisKKyNkZWZpbmUgTU1WRUNfQ01QKFRZ UEUsVFlQRTIsVFlQRTMsREVTQ1IsTixNQVNLLCBXSURUSCwgU1JDKVwKK01NVkVDX0NNUEdUKFRZ UEUsVFlQRTIsVFlQRTMsREVTQ1IsTixNQVNLLFdJRFRILFNSQykgXAorRVhUSU5TTihWNl92ZXEj I1RZUEUsICAgICAgICJRZDQ9dmNtcC5lcShWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIiki LCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERFU0NSIiBlcXVhbCB0byIs IFwKKwlWQ01QKFFkViwgLCAsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhUSU5TTihW Nl92ZXEjI1RZUEUjI19hbmQsICJReDQmPXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZ UEUyICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERFU0NSIiBlcXVh bHRvIHdpdGggcHJlZGljYXRlLWFuZCIsIFwKKwlWQ01QKFF4ViwgZkdFVFFCSVRTKFF4VixXSURU SCxNQVNLLGkpLCAmLCA9PSwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmVx IyNUWVBFIyNfb3IsICAiUXg0fD12Y21wLmVxKFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAi KSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZXF1YWx0byB3 aXRoIHByZWRpY2F0ZS1vciIsIFwKKwlWQ01QKFF4ViwgZkdFVFFCSVRTKFF4VixXSURUSCxNQVNL LGkpLCB8LCA9PSwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmVxIyNUWVBF IyNfeG9yLCAiUXg0Xj12Y21wLmVxKFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsIEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZXF1YWx0byB3aXRoIHBy ZWRpY2F0ZS14b3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwg XiwgPT0sIE4sIFNSQywgTUFTSywgV0lEVEgpKQorCisKK01NVkVDX0NNUCh3LCJ3IiwiIiwiVmVj dG9yIFdvcmQgQ29tcGFyZSAiLCBmVkVMRU0oMzIpLCAweEYsIDQsIHcpCitNTVZFQ19DTVAoaCwi aCIsIiIsIlZlY3RvciBIYWxmIENvbXBhcmUgIiwgZlZFTEVNKDE2KSwgMHgzLCAyLCBoKQorTU1W RUNfQ01QKGIsImIiLCIiLCJWZWN0b3IgSGFsZiBDb21wYXJlICIsIGZWRUxFTSg4KSwgIDB4MSwg MSwgYikKK01NVkVDX0NNUEdUKHV3LCJ1dyIsIiIsIlZlY3RvciBVbnNpZ25lZCBIYWxmIENvbXBh cmUgIiwgZlZFTEVNKDMyKSwgMHhGLCA0LHV3KQorTU1WRUNfQ01QR1QodWgsInVoIiwiIiwiVmVj dG9yIFVuc2lnbmVkIEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMTYpLCAweDMsIDIsdWgpCitNTVZF Q19DTVBHVCh1YiwidWIiLCIiLCJWZWN0b3IgVW5zaWduZWQgQnl0ZSBDb21wYXJlICIsIGZWRUxF TSg4KSwgIDB4MSwgMSx1YikKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorKiBQcmVkaWNhdGUgT3BlcmF0aW9ucworKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTlNOKFY2X3ByZWRf c2NhbGFyMiwgIlFkND12c2V0cShSdDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9WUCksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAgZkhJREUo aW50IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJVChRZFYs aSwoaSA8IChSdFYgJiAoZlZCWVRFUygpLTEpKSkgPyAxIDogMCk7Cit9KQorCitFWFRJTlNOKFY2 X3ByZWRfc2NhbGFyMnYyLCAiUWQ0PXZzZXRxMihSdDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VY VEVOU0lPTixBX0NWSSxBX0NWSV9WUCksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7Cisg ICAgZkhJREUoaW50IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VU UUJJVChRZFYsaSwoaSA8PSAoKFJ0Vi0xKSAmIChmVkJZVEVTKCktMSkpKSA/IDEgOiAwKTsKK30p CisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHNodWZmZXF3LCAiUWQ0 Lmg9dnNodWZmZShRczQudyxRdDQudykiLCJTaHJpbmsgUHJlZGljYXRlIiwgZlNFVFFCSVQoUWRW LGksIChpICYgMikgPyBmR0VUUUJJVChRc1YsaS0yKSA6IGZHRVRRQklUKFF0VixpKSApICkKK0lU RVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBzaHVmZmVxaCwgIlFkNC5iPXZzaHVm ZmUoUXM0LmgsUXQ0LmgpIiwiU2hyaW5rIFByZWRpY2F0ZSIsIGZTRVRRQklUKFFkVixpLCAoaSAm IDEpID8gZkdFVFFCSVQoUXNWLGktMSkgOiBmR0VUUUJJVChRdFYsaSkgKSApCitJVEVSQVRPUl9J TlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoOCwgcHJlZF9vciwgIlFkND1vcihRczQsUXQ0KSIsIlZl Y3RvciBQcmVkaWNhdGUgT3IiLCBmU0VUUUJJVChRZFYsaSxmR0VUUUJJVChRc1YsaSkgfHwgZkdF VFFCSVQoUXRWLGkpICkgKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHBy ZWRfYW5kLCAiUWQ0PWFuZChRczQsUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUgQW5kIiwgZlNFVFFC SVQoUWRWLGksZkdFVFFCSVQoUXNWLGkpICYmIGZHRVRRQklUKFF0VixpKSApICkKK0lURVJBVE9S X0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBwcmVkX3hvciwgIlFkND14b3IoUXM0LFF0NCki LCJWZWN0b3IgUHJlZGljYXRlIFhvciIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixpKSBe IGZHRVRRQklUKFF0VixpKSApICkKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4 LCBwcmVkX29yX24sICJRZDQ9b3IoUXM0LCFRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBPciB3aXRo IG5vdCIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixpKSB8fCAhZkdFVFFCSVQoUXRWLGkp ICkgKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfYW5kX24sICJR ZDQ9YW5kKFFzNCwhUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUgQW5kICB3aXRoIG5vdCIsIGZTRVRR QklUKFFkVixpLGZHRVRRQklUKFFzVixpKSAmJiAhZkdFVFFCSVQoUXRWLGkpICkgKQorSVRFUkFU T1JfSU5TTl9BTllfU0xPVCg4LCBwcmVkX25vdCwgIlFkND1ub3QoUXM0KSIsIlZlY3RvciBQcmVk aWNhdGUgTm90IiwgZlNFVFFCSVQoUWRWLGksIWZHRVRRQklUKFFzVixpKSApICkKKworCisKK0VY VElOU04oVjZfdmNtb3YsICAiaWYgKFBzNCkgVmQzMj1WdTMyIiwgIEFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVkEpLCAgICJDb25kaXRpb25hbCBNb3YiLAoreworaWYgKGZMU0JPTEQo UHNWKSkJeworCWZISURFKGludCBpOykKKwlmVkZPUkVBQ0goOCwgaSkgeworCQlWZFYudWJbaV0g PSBWdVYudWJbaV07CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKK0VYVElOU04oVjZfdm5j bW92LCAgImlmICghUHM0KSBWZDMyPVZ1MzIiLCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9WQSksICAgIkNvbmRpdGlvbmFsIE1vdiIsCit7CitpZiAoZkxTQk9MRE5PVChQc1YpKQl7 CisJZkhJREUoaW50IGk7KQorCWZWRk9SRUFDSCg4LCBpKSB7CisJCVZkVi51YltpXSA9IFZ1Vi51 YltpXTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworRVhUSU5TTihWNl92Y2NvbWJpbmUs ICAiaWYgKFBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJ T04sQV9DVkksQV9DVklfVkFfRFYpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChm TFNCT0xEKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRk Vi52WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07 CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKK0VYVElOU04oVjZfdm5jY29tYmluZSwgICJp ZiAoIVBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVkFfRFYpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNC T0xETk9UKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRk Vi52WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07 CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9U KDgsdm11eCwiVmQzMj12bXV4KFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU2VsZWN0IEVsZW1l bnQgOC1iaXQiLAorICAgIFZkVi51YltpXSA9IGZHRVRRQklUKFF0VixpKSA/IFZ1Vi51YltpXSA6 IFZ2Vi51YltpXSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdnN3YXAs IlZkZDMyPXZzd2FwKFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU3dhcCBFbGVtZW50IDgtYml0 IiwKKyAgICBWZGRWLnZbMF0udWJbaV0gPSAgZkdFVFFCSVQoUXRWLGkpID8gVnVWLnViW2ldIDog VnZWLnViW2ldOworCVZkZFYudlsxXS51YltpXSA9ICFmR0VUUUJJVChRdFYsaSkgPyBWdVYudWJb aV0gOiBWdlYudWJbaV0pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIE1NVkVDVE9S IFNPUlRJTkcKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTU1WRUNfU09SVChU WVBFLFRZUEUyLERFU0NSLEVMRU1FTlRTSVpFLFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xP VChFTEVNRU5UU0laRSx2bWF4IyNUWVBFLCAiVmQzMj12bWF4IiBUWVBFMiAiKFZ1MzIsVnYzMiki LCAiVmQzMi4iI1NSQyI9dm1heChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAiVmVjdG9yICIg REVTQ1IgIiBtYXgiLCBWZFYuU1JDW2ldID0gKFZ1Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/IFZ1 Vi5TUkNbaV0gOiAgVnZWLlNSQ1tpXSkgIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKEVMRU1F TlRTSVpFLHZtaW4jI1RZUEUsICJWZDMyPXZtaW4iIFRZUEUyICIoVnUzMixWdjMyKSIsICJWZDMy LiIjU1JDIj12bWluKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICJWZWN0b3IgIiBERVNDUiAi IG1pbiIsIFZkVi5TUkNbaV0gPSAoVnVWLlNSQ1tpXSA8IFZ2Vi5TUkNbaV0pID8gVnVWLlNSQ1tp XSA6ICBWdlYuU1JDW2ldKQorCitNTVZFQ19TT1JUKGIsImIiLCAic2lnbmVkIGJ5dGUiLCAgICA4 LCAgYikKK01NVkVDX1NPUlQodWIsInViIiwgInVuc2lnbmVkIGJ5dGUiLCAgICA4LCAgdWIpCitN TVZFQ19TT1JUKHVoLCJ1aCIsICJ1bnNpZ25lZCBoYWxmd29yZCIsMTYsIHVoKQorTU1WRUNfU09S VChoLCAgICJoIiwgICAgImhhbGZ3b3JkIiwgICAgICAgICAxNiwgaCkKK01NVkVDX1NPUlQodywg ICAidyIsICAgICJ3b3JkIiwgICAgICAgICAgICAgMzIsIHcpCisKKworCisKKworCisKKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKiBTSFVGRkxFUworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYs dnNhdGh1YiwiVmQzMj12c2F0aHViKFZ1MzIsVnYzMikiLCJWZDMyLnViPXZzYXQoVnUzMi5oLFZ2 MzIuaCkiLAorIlNhdHVyYXRlIGFuZCBwYWNrIDMyIGhhbGZ3b3JkcyB0byAzMiB1bnNpZ25lZCBi eXRlcywgYW5kIGludGVybGVhdmUgdGhlbSIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBm VlNBVFVCKFZ2Vi5oW2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBmVlNBVFVCKFZ1 Vi5oW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZzYXR3aCwiVmQzMj12c2F0 d2goVnUzMixWdjMyKSIsIlZkMzIuaD12c2F0KFZ1MzIudyxWdjMyLncpIiwKKyJTYXR1cmF0ZSBh bmQgcGFjayAxNiB3b3JkcyB0byAxNiBoYWxmd29yZHMsIGFuZCBpbnRlcmxlYXZlIHRoZW0iLAor ICAgIGZTRVRIQUxGKDAsIFZkVi53W2ldLCBmVlNBVEgoVnZWLndbaV0pKTsKKyAgICBmU0VUSEFM RigxLCBWZFYud1tpXSwgZlZTQVRIKFZ1Vi53W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9T TE9UKDMyLHZzYXR1d3VoLCJWZDMyPXZzYXR1d3VoKFZ1MzIsVnYzMikiLCJWZDMyLnVoPXZzYXQo VnUzMi51dyxWdjMyLnV3KSIsCisiU2F0dXJhdGUgYW5kIHBhY2sgMTYgd29yZHMgdG8gMTYgaGFs ZndvcmRzLCBhbmQgaW50ZXJsZWF2ZSB0aGVtIiwKKyAgICBmU0VUSEFMRigwLCBWZFYud1tpXSwg ZlZTQVRVSChWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZFYud1tpXSwgZlZTQVRVSChW dVYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdnNodWZmZWIsIlZkMzI9 dnNodWZmZWIoVnUzMixWdjMyKSIsIlZkMzIuYj12c2h1ZmZlKFZ1MzIuYixWdjMyLmIpIiwKKyJT aHVmZmxlIGhhbGYgd29yZHMgd2l0aCBpbiBhIGxhbmUiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51 aFtpXSwgZkdFVFVCWVRFKDAsIFZ2Vi51aFtpXSkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtp XSwgZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgx Nix2c2h1ZmZvYiwiVmQzMj12c2h1ZmZvYihWdTMyLFZ2MzIpIiwiVmQzMi5iPXZzaHVmZm8oVnUz Mi5iLFZ2MzIuYikiLAorIlNodWZmbGUgaGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAg ZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSk7CisgICAgZlNF VEJZVEUoMSwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UKDMyLHZzaHVmZWgsIlZkMzI9dnNodWZmZWgoVnUzMixWdjMyKSIsIlZk MzIuaD12c2h1ZmZlKFZ1MzIuaCxWdjMyLmgpIiwKKyJTaHVmZmxlIGhhbGYgd29yZHMgd2l0aCBp biBhIGxhbmUiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi51 d1tpXSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZkdFVFVIQUxGKDAsIFZ1Vi51d1tp XSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgzMix2c2h1Zm9oLCJWZDMyPXZzaHVmZm9o KFZ1MzIsVnYzMikiLCJWZDMyLmg9dnNodWZmbyhWdTMyLmgsVnYzMi5oKSIsCisiU2h1ZmZsZSBo YWxmIHdvcmRzIHdpdGggaW4gYSBsYW5lIiwKKyAgICBmU0VUSEFMRigwLCBWZFYudXdbaV0sIGZH RVRVSEFMRigxLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZHRVRV SEFMRigxLCBWdVYudXdbaV0pKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERvdWJs ZSBWZWN0b3IgU2h1ZmZsZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTlNOKFY2X3ZzaHVm ZiwgInZzaHVmZihWeTMyLFZ4MzIsUnQzMikiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9WUF9WUyksCisiMngyLT4yeDIgdHJhbnNwb3NlLCBmb3IgbXVsdGlwbGUgZGF0YSBzaXpl cywgaW5wbGFjZSIsCit7CisJZkhJREUoaW50IG9mZnNldDspCisJZm9yIChvZmZzZXQ9MTsgb2Zm c2V0PGZWQllURVMoKTsgb2Zmc2V0PDw9MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJ ICAgIGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBr ICYgb2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVnlWLnViW2tdLCBWeFYudWJbaytvZmZzZXRdKTsK KwkJCQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92c2h1ZmZ2ZGQsICJWZGQz Mj12c2h1ZmYoVnUzMixWdjMyLFJ0OCkiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9WUF9WUyksCisiMngyLT4yeDIgdHJhbnNwb3NlIGZvciBtdWx0aXBsZSBkYXRhIHNpemVzIiwK K3sKKwlmSElERShpbnQgb2Zmc2V0OykKKwlWZGRWLnZbMF0gPSBWdlY7CisJVmRkVi52WzFdID0g VnVWOworCWZvciAob2Zmc2V0PTE7IG9mZnNldDxmVkJZVEVTKCk7IG9mZnNldDw8PTEpIHsKKwkJ aWYgKCBSdFYgJiBvZmZzZXQpIHsKKwkJCSAgICBmSElERShpbnQgazspIFwKKwkJCQlmVkZPUkVB Q0goOCwgaykge1wKKwkJCQlpZiAoISggayAmIG9mZnNldCkpIHsKKwkJCQkJZlNXQVBCKFZkZFYu dlsxXS51YltrXSwgVmRkVi52WzBdLnViW2srb2Zmc2V0XSk7CisJCQkJfQorCQkJfQorCQl9CisJ fQorCX0pCisKK0VYVElOU04oVjZfdmRlYWwsICJ2ZGVhbChWeTMyLFZ4MzIsUnQzMikiLAorQVRU UklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUF9WUyksCisiIHZlY3RvciAtIHZlY3RvciBk ZWFsIC0gb3IgZGVpbnRlcmxlYXZlLCBmb3IgbXVsdGlwbGUgZGF0YSBzaXplcywgaW5wbGFjZSIs Cit7CisJZkhJREUoaW50IG9mZnNldDspCisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZz ZXQ+MDsgb2Zmc2V0Pj49MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURF KGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0 KSkgeworCQkJCQlmU1dBUEIoVnlWLnViW2tdLCBWeFYudWJbaytvZmZzZXRdKTsKKwkJCQl9CisJ CQl9CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92ZGVhbHZkZCwgIlZkZDMyPXZkZWFsKFZ1 MzIsVnYzMixSdDgpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMpLAor IiB2ZWN0b3IgLSB2ZWN0b3IgZGVhbCAtIG9yIGRlaW50ZXJsZWF2ZSwgZm9yIG11bHRpcGxlIGRh dGEgc2l6ZXMiLAoreworCWZISURFKGludCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2VjsKKwlW ZGRWLnZbMV0gPSBWdVY7CisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zm c2V0Pj49MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykg XAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJ CQlmU1dBUEIoVmRkVi52WzFdLnViW2tdLCBWZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJCQl9 CisJCQl9CisJCX0KKwl9CisJfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFU T1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQygzMix2c2h1Zm9laCwiVmRkMzI9dnNodWZmb2Vo KFZ1MzIsVnYzMikiLCJWZGQzMi5oPXZzaHVmZm9lKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3Ig U2h1ZmZsZSBoYWxmIHdvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMF0udXdbaV0sIGZH RVRVSEFMRigwLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMF0udXdbaV0s IGZHRVRVSEFMRigwLCBWdVYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMV0udXdb aV0sIGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMV0u dXdbaV0sIGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NM T1RfRE9VQkxFX1ZFQygxNix2c2h1Zm9lYiwiVmRkMzI9dnNodWZmb2ViKFZ1MzIsVnYzMikiLCJW ZGQzMi5iPXZzaHVmZm9lKFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgU2h1ZmZsZSBieXRlcyIs CisgICAgZlNFVEJZVEUoMCwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ld KSk7CisgICAgZlNFVEJZVEUoMSwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVo W2ldKSk7CisgICAgZlNFVEJZVEUoMCwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZW LnVoW2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwg VnVWLnVoW2ldKSkpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorKiBEZWFsCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lO U04yX1BFUk1VVEVfU0xPVCgzMiwgdmRlYWxoLCAiVmQzMj12ZGVhbGgoVnUzMikiLCAiVmQzMi5o PXZkZWFsKFZ1MzIuaCkiLAorIkRlYWwgSGFsZndvcmRzIiwKKyAgICBWZFYudWhbaSAgXSA9IGZH RVRVSEFMRigwLCBWdVYudXdbaV0pOworICAgIFZkVi51aFtpK2ZWRUxFTSgzMildID0gZkdFVFVI QUxGKDEsIFZ1Vi51d1tpXSkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdmRl YWxiLCAiVmQzMj12ZGVhbGIoVnUzMikiLCAiVmQzMi5iPXZkZWFsKFZ1MzIuYikiLAorIkRlYWwg SGFsZndvcmRzIiwKKyAgICBWZFYudWJbaSAgIF0gPSBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKTsK KyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSA9IGZHRVRVQllURSgxLCBWdVYudWhbaV0pKQorCitJ VEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZkZWFsYjR3LCAgIlZkMzI9dmRlYWxiNHco VnUzMixWdjMyKSIsICJWZDMyLmI9dmRlYWxlKFZ1MzIuYixWdjMyLmIpIiwKKyJEZWFsIFR3byBW ZWN0b3JzIEJ5dGVzIiwKKyAgICBWZFYudWJbMCtpIF0gPSBmR0VUVUJZVEUoMCwgVnZWLnV3W2ld KTsKKyAgICBWZFYudWJbZlZFTEVNKDMyKStpIF0gPSBmR0VUVUJZVEUoMiwgVnZWLnV3W2ldKTsK KyAgICBWZFYudWJbMipmVkVMRU0oMzIpK2ldID0gZkdFVFVCWVRFKDAsIFZ1Vi51d1tpXSk7Cisg ICAgVmRWLnViWzMqZlZFTEVNKDMyKStpXSA9IGZHRVRVQllURSgyLCBWdVYudXdbaV0pKQorCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisqIHNodWZmbGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9U KDMyLCB2c2h1ZmZoLCAiVmQzMj12c2h1ZmZoKFZ1MzIpIiwgIlZkMzIuaD12c2h1ZmYoVnUzMi5o KSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgVnVWLnVo W2ldKTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIFZ1Vi51aFtpK2ZWRUxFTSgzMildKSkK KworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2c2h1ZmZiLCAiVmQzMj12c2h1ZmZi KFZ1MzIpIiwgIlZkMzIuYj12c2h1ZmYoVnUzMi5iKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAg IGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgVnVWLnViW2ldKTsKKyAgICBmU0VUQllURSgxLCBWZFYu dWhbaV0sIFZ1Vi51YltpK2ZWRUxFTSgxNildKSkKKworCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogSU5TRVJUIEFO RCBFWFRSQUNUCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCitFWFRJTlNOKFY2X2V4dHJhY3R3LCAiUmQzMj12ZXh0cmFjdChWdTMyLFJz MzIpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9NRU1MSUtFLEFfUkVT VFJJQ1RfU0xPVDBPTkxZKSwKKyJFeHRyYWN0IGFuIGVsZW1lbnQgZnJvbSBhIHZlY3RvciB0byBz Y2FsYXIiLAorZkhJREUod2FybigiUmROPSVkIFZ1Tj0lZCBSc049JWQgUnNWPTB4JTA4eCB3aWR4 PSVkIixSZE4sVnVOLFJzTixSc1YsKChSc1YgJiAoZlZCWVRFUygpLTEpKSA+PiAyKSk7KQorUmRW ID0gVnVWLnV3WyAoUnNWICYgKGZWQllURVMoKS0xKSkgPj4gMl07CitmSElERSh3YXJuKCJSZFY9 MHglMDh4IixSZFYpOykpCisKK0VYVElOU04oVjZfdmluc2VydHdyLCAiVngzMi53PXZpbnNlcnQo UnQzMikiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWCksCisiSW5zZXJ0IFdv cmQgU2NhbGFyIGludG8gVmVjdG9yIiwKK1Z4Vi51d1swXSA9IFJ0VjspCisKKworCisKK0lURVJB VE9SX0lOU05fTVBZX1NMT1RfTEFURSgzMixsdnNwbGF0dywgIlZkMzI9dnNwbGF0KFJ0MzIpIiwg IlJlcGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3Mgd29yZHMgaW4gdmVjdG9yIiwgVmRWLnV3W2ldID0g UnRWKQorCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0xBVEUoMTYsbHZzcGxhdGgsICJWZDMyLmg9 dnNwbGF0KFJ0MzIpIiwgIlJlcGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3MgaGFsdmVzIGluIHZlY3Rv ciIsIFZkVi51aFtpXSA9IFJ0VikKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRFKDgsbHZz cGxhdGIsICJWZDMyLmI9dnNwbGF0KFJ0MzIpIiwgIlJlcGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3Mg Ynl0ZXMgaW4gdmVjdG9yIiwgVmRWLnViW2ldID0gUnRWKQorCisKK0lURVJBVE9SX0lOU05fQU5Z X1NMT1QoMzIsdmFzc2lnbiwiVmQzMj1WdTMyIiwiQ29weSBhIHZlY3RvciIsVmRWLndbaV09VnVW LndbaV0pCisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdmNvbWJpbmUs IlZkZDMyPXZjb21iaW5lKFZ1MzIsVnYzMikiLAorIlZlY3RvciBhc3NpZ24sIEFueSB0d28gdG8g VmVjdG9yIFBhaXIiLAorICAgIFZkZFYudlswXS51YltpXSA9IFZ2Vi51YltpXTsKKyAgICBWZGRW LnZbMV0udWJbaV0gPSBWdVYudWJbaV0pCisKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisqIEdFTkVSQUwgUEVSTVVURSBORVRXT1JLUworKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK0VYVElOU04oVjZfdmRlbHRhLCAi VmQzMj12ZGVsdGEoVnUzMixWdjMyKSIsICAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVlApLAorIlJldmVyc2UgQmVuZXMgQnV0dGVyZmx5IG5ldHdvcmsgIiwKK3sKKyAgICBmSElE RShpbnQgb2Zmc2V0OykKKyAgICBmSElERShpbnQgazspCisgICAgZkhJREUobW12ZWN0b3JfdCB0 bXA7KQorICAgIHRtcCA9IFZ1VjsKKyAgICBmb3IgKG9mZnNldD1mVkJZVEVTKCk7IChvZmZzZXQ+ Pj0xKT4wOyApIHsKKyAgICAgICAgZm9yIChrID0gMDsgazxmVkJZVEVTKCk7IGsrKykgeworICAg ICAgICAgICAgVmRWLnViW2tdID0gKFZ2Vi51YltrXSZvZmZzZXQpID8gdG1wLnViW2teb2Zmc2V0 XSA6IHRtcC51YltrXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMo KTsgaysrKSB7CisgICAgICAgICAgICB0bXAudWJba10gPSBWZFYudWJba107CisgICAgICAgIH0K KyAgICB9Cit9KQorCisKK0VYVElOU04oVjZfdnJkZWx0YSwgIlZkMzI9dnJkZWx0YShWdTMyLFZ2 MzIpIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLAorIkZvcndhcmQgQmVu ZXMgQnV0dGVyZmx5IG5ldHdvcmsgIiwKK3sKKwlmSElERShpbnQgb2Zmc2V0OykKKyAgICBmSElE RShpbnQgazspCisgICAgZkhJREUobW12ZWN0b3JfdCB0bXA7KQorICAgIHRtcCA9IFZ1VjsKKyAg ICBmb3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygpOyBvZmZzZXQ8PD0xKXsKKyAgICAgICAg Zm9yIChrID0gMDsgazxmVkJZVEVTKCk7IGsrKykgeworICAgICAgICAgICAgVmRWLnViW2tdID0g KFZ2Vi51YltrXSZvZmZzZXQpID8gdG1wLnViW2teb2Zmc2V0XSA6IHRtcC51YltrXTsKKyAgICAg ICAgfQorICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsgaysrKSB7CisgICAgICAgICAg ICB0bXAudWJba10gPSBWZFYudWJba107CisgICAgICAgIH0KKyAgICB9Cit9KQorCisKKworCisK K0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmNsMHcsIlZkMzI9dmNsMHcoVnUzMikiLCJW ZDMyLnV3PXZjbDAoVnUzMi51dykiLCAgICAgICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdv cmQiLCAgICAgVmRWLnV3W2ldPWZDTDFfNCh+VnVWLnV3W2ldKSkKK0lURVJBVE9SX0lOU04yX1NI SUZUX1NMT1QoMTYsdmNsMGgsIlZkMzI9dmNsMGgoVnUzMikiLCJWZDMyLnVoPXZjbDAoVnUzMi51 aCkiLCAgICAgICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdvcmQiLCAgICBWZFYudWhbaV09 ZkNMMV8yKH5WdVYudWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZub3Jt YW10dywiVmQzMj12bm9ybWFtdHcoVnUzMikiLCJWZDMyLnc9dm5vcm1hbXQoVnUzMi53KSIsIk5v cm0gQW1vdW50IFdvcmQiLAorVmRWLndbaV09Zk1BWChmQ0wxXzQoflZ1Vi53W2ldKSxmQ0wxXzQo VnVWLndbaV0pKS0xOyBmSElERShJVjFERUFEKCk7KSkKK0lURVJBVE9SX0lOU04yX1NISUZUX1NM T1QoMTYsdm5vcm1hbXRoLCJWZDMyPXZub3JtYW10aChWdTMyKSIsIlZkMzIuaD12bm9ybWFtdChW dTMyLmgpIiwiTm9ybSBBbW91bnQgSGFsZndvcmQiLAorVmRWLmhbaV09Zk1BWChmQ0wxXzIoflZ1 Vi5oW2ldKSxmQ0wxXzIoVnVWLmhbaV0pKS0xOyBmSElERShJVjFERUFEKCk7KSkKKworSVRFUkFU T1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMzIsdmFkZGNsYncsIlZkMzIudz12YWRkKHZjbGIo VnUzMi53KSxWdjMyLncpIiwKKyJDb3VudCBsZWFkaW5nIGJpdHMgYW5kIGFkZCIsCitWZFYud1tp XSA9IGZNQVgoZkNMMV80KH5WdVYud1tpXSksZkNMMV80KFZ1Vi53W2ldKSkgKyBWdlYud1tpXSkK KworSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMTYsdmFkZGNsYmgsIlZkMzIuaD12 YWRkKHZjbGIoVnUzMi5oKSxWdjMyLmgpIiwKKyJDb3VudCBsZWFkaW5nIGJpdHMgYW5kIGFkZCIs CitWZFYuaFtpXSA9IGZNQVgoZkNMMV8yKH5WdVYuaFtpXSksZkNMMV8yKFZ1Vi5oW2ldKSkgKyBW dlYuaFtpXSkKKworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZwb3Bjb3VudGgsIlZk MzI9dnBvcGNvdW50aChWdTMyKSIsIlZkMzIuaD12cG9wY291bnQoVnUzMi5oKSIsICAgIkNvdW50 IExlYWRpbmcgWmVyb3MgaW4gV29yZCIsICBWZFYudWhbaV09ZkNPVU5UT05FU18yKFZ1Vi51aFtp XSkpCisKKworI2RlZmluZSBmSElTVChJTlBVVFZFQykgXAorCWZVQVJDSF9OT1RFX1BVTVBfNFgo KTsgXAorCWZISURFKGludCBsYW5lOykgXAorCWZISURFKG1tdmVjdG9yX3QgdG1wOykgXAorCWZW Rk9SRUFDSCgxMjgsIGxhbmUpIHsgXAorCQlmb3IgKGZISURFKGludCApaT0wOyBpPDEyOC84OyAr K2kpIHsgXAorCQkJdW5zaWduZWQgY2hhciB2YWx1ZSA9IElOUFVUVkVDLnViWygxMjgvOCkqbGFu ZStpXTsgXAorCQkJdW5zaWduZWQgY2hhciByZWdubyA9IHZhbHVlPj4zOyBcCisJCQl1bnNpZ25l ZCBjaGFyIGVsZW1lbnQgPSB2YWx1ZSAmIDc7IFwKKwkJCVJFQURfRVhUX1ZSRUcocmVnbm8sdG1w LDApOyBcCisJCQl0bXAudWhbKDEyOC8xNikqbGFuZSsoZWxlbWVudCldKys7IFwKKwkJCVdSSVRF X0VYVF9WUkVHKHJlZ25vLHRtcCxFWFRfTkVXKTsgXAorCQl9IFwKKwl9CisKKyNkZWZpbmUgZkhJ U1RRKElOUFVUVkVDLFFWQUwpIFwKKwlmVUFSQ0hfTk9URV9QVU1QXzRYKCk7IFwKKwlmSElERShp bnQgbGFuZTspIFwKKwlmSElERShtbXZlY3Rvcl90IHRtcDspIFwKKwlmVkZPUkVBQ0goMTI4LCBs YW5lKSB7IFwKKwkJZm9yIChmSElERShpbnQgKWk9MDsgaTwxMjgvODsgKytpKSB7IFwKKwkJCXVu c2lnbmVkIGNoYXIgdmFsdWUgPSBJTlBVVFZFQy51YlsoMTI4LzgpKmxhbmUraV07IFwKKwkJCXVu c2lnbmVkIGNoYXIgcmVnbm8gPSB2YWx1ZT4+MzsgXAorCQkJdW5zaWduZWQgY2hhciBlbGVtZW50 ID0gdmFsdWUgJiA3OyBcCisJCQlSRUFEX0VYVF9WUkVHKHJlZ25vLHRtcCwwKTsgXAorCQkJaWYg KGZHRVRRQklUKFFWQUwsMTI4LzgqbGFuZStpKSkgdG1wLnVoWygxMjgvMTYpKmxhbmUrKGVsZW1l bnQpXSsrOyBcCisJCQlXUklURV9FWFRfVlJFRyhyZWdubyx0bXAsRVhUX05FVyk7IFwKKwkJfSBc CisJfQorCisKKworRVhUSU5TTihWNl92aGlzdCwgInZoaXN0IixBVFRSSUJTKEFfRVhURU5TSU9O LEFfQ1ZJLEFfQ1ZJXzRTTE9UKSwgInZoaXN0IGluc3RydWN0aW9uIix7IGZISURFKG1tdmVjdG9y X3QgaW5wdXRWZWM7KSBpbnB1dFZlYz1mVE1QVkRBVEEoKTsgZkhJU1QoaW5wdXRWZWMpOyB9KQor RVhUSU5TTihWNl92aGlzdHEsICJ2aGlzdChRdjQpIixBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJ LEFfQ1ZJXzRTTE9UKSwgInZoaXN0IGluc3RydWN0aW9uIix7IGZISURFKG1tdmVjdG9yX3QgaW5w dXRWZWM7KSBpbnB1dFZlYz1mVE1QVkRBVEEoKTsgZkhJU1RRKGlucHV0VmVjLFF2Vik7IH0pCisK KyN1bmRlZiBmSElTVAorI3VuZGVmIGZISVNUUQorCisKKy8qICoqKiogV0VJR0hURUQgSElTVE9H UkFNICoqKiogKi8KKworCisjaWYgMQorI2RlZmluZSBXSElTVChFTCxNQVNLLEJTSElGVCxDT05E LFNBVEYpIFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIGJ1Y2tldCA9IGZHRVRVQllURSgwLGlucHV0 LmhbaV0pOyBcCisJZkhJREUodW5zaWduZWQgaW50KSB3ZWlnaHQgPSBmR0VUVUJZVEUoMSxpbnB1 dC5oW2ldKTsgXAorCWZISURFKHVuc2lnbmVkIGludCkgdmluZGV4ID0gKGJ1Y2tldCA+PiAzKSAm IDB4MUY7IFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIGVsaW5kZXggPSAoKGk+PkJTSElGVCkgJiAo fk1BU0spKSB8ICgoYnVja2V0Pj5CU0hJRlQpICYgTUFTSyk7IFwKKwlmSElERShtbXZlY3Rvcl90 IHRtcDspIFwKKwlSRUFEX0VYVF9WUkVHKHZpbmRleCx0bXAsMCk7IFwKKwlDT05EIHRtcC5FTFtl bGluZGV4XSA9IFNBVEYodG1wLkVMW2VsaW5kZXhdICsgd2VpZ2h0KTsgXAorCVdSSVRFX0VYVF9W UkVHKHZpbmRleCx0bXAsRVhUX05FVyk7IFwKKwlmVUFSQ0hfTk9URV9QVU1QXzJYKCk7CisKK0lU RVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDI1NiwidndoaXN0MjU2IiwidmVjdG9yIHdl aWdodGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCwsKSkKK0lU RVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDI1NnEsInZ3aGlzdDI1NihRdjQpIiwidmVj dG9yIHdlaWdodGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCxp ZiAoZkdFVFFCSVQoUXZWLDIqaSkpLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hp c3QyNTZfc2F0LCJ2d2hpc3QyNTY6c2F0IiwidmVjdG9yIHdlaWdodGVkIGhpc3RvZ3JhbSBoYWxm d29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCwsZlZTQVRVSCkpCitJVEVSQVRPUl9JTlNOX1ZI SVNUTElLRSgxNix2d2hpc3QyNTZxX3NhdCwidndoaXN0MjU2KFF2NCk6c2F0IiwidmVjdG9yIHdl aWdodGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCxpZiAoZkdF VFFCSVQoUXZWLDIqaSkpLGZWU0FUVUgpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndo aXN0MTI4LCJ2d2hpc3QxMjgiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRl cnMiLCBXSElTVCh1dywzLDEsLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3Qx MjhxLCJ2d2hpc3QxMjgoUXY0KSIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gd29yZCBjb3Vu dGVycyIsIFdISVNUKHV3LDMsMSxpZiAoZkdFVFFCSVQoUXZWLDIqaSkpLCkpCitJVEVSQVRPUl9J TlNOX1ZISVNUTElLRSgxNix2d2hpc3QxMjhtLCJ2d2hpc3QxMjgoI3UxKSIsInZlY3RvciB3ZWln aHRlZCBoaXN0b2dyYW0gd29yZCBjb3VudGVycyIsIFdISVNUKHV3LDMsMSxpZiAoKGJ1Y2tldCAm IDEpID09IHVpViksKSkKK0lURVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDEyOHFtLCJ2 d2hpc3QxMjgoUXY0LCN1MSkiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRl cnMiLCBXSElTVCh1dywzLDEsaWYgKCgoYnVja2V0ICYgMSkgPT0gdWlWKSAmJiBmR0VUUUJJVChR dlYsMippKSksKSkKKworCisjZW5kaWYKKworCisKKy8qICoqKioqKiAgIGxvb2t1cCB0YWJsZSBp bnN0cnVjdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqICAqLworCisv KiBVc2UgbG93IGJpdHMgZnJvbSBpZHggdG8gY2hvb3NlIG5leHQtYmlnZ2VyIGVsZW1lbnRzIGZy b20gdmVjdG9yLCB0aGVuIHVzZSBMU0IgZnJvbSBpZHggdG8gY2hvb3NlIG9kZCBvciBldmVuIGVs ZW1lbnQgKi8KKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoOCx2bHV0dnZiLCJWZDMyLmI9 dmx1dDMyKFZ1MzIuYixWdjMyLmIsUnQ4KSIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwK K2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQg b2RkaGFsZjspCittYXRjaHZhbCA9IFJ0ViAmIDB4NzsKK29kZGhhbGYgPSAoUnRWID4+IChmVkVD TE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IFZ1Vi51YltpXTsKK1ZkVi5iW2ldID0gKChpZHgg JiAweEUwKSA9PSAobWF0Y2h2YWwgPDwgNSkpID8gZkdFVEJZVEUob2RkaGFsZixWdlYuaFtpZHgg JSBmVkVMRU0oMTYpXSkgOiAwKQorCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJM RV9WRUMoOCx2bHV0dnZiX29yYWNjLCJWeDMyLmJ8PXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCki LCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4Oykg ZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBSdFYg JiAweDc7CitvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHgg PSBWdVYudWJbaV07CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1 KSkgPyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKK0lU RVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdmx1dHZ3aCwiVmRkMzIuaD12 bHV0MTYoVnUzMi5iLFZ2MzIuaCxSdDgpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAor ZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBv ZGRoYWxmOykKK21hdGNodmFsID0gUnRWICYgMHhGOworb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNM T0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1ZkZFYu dlswXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYo b2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEs VnVWLnVoW2ldKTsKK1ZkZFYudlsxXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwg PDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQor CitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfb3JhY2Ms IlZ4eDMyLmh8PXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCkiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxl IGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykg ZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBmR0VUVUJZVEUoMCxSdFYpICYgMHhGOwor b2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVC WVRFKDAsVnVWLnVoW2ldKTsKK1Z4eFYudlswXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1h dGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0p IDogMDsKK2lkeCA9IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWeHhWLnZbMV0uaFtpXSB8PSAo KGlkeCAmIDB4RjApID09IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53 W2lkeCAlIGZWRUxFTSgzMildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKDgs dmx1dHZ2YmksIlZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYiwjdTMpIiwidmVjdG9yLXZlY3Rv ciB0YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRj aHZhbDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0gdWlWICYgMHg3Oworb2RkaGFs ZiA9ICh1aVYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gVnVWLnViW2ldOwor VmRWLmJbaV0gPSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllURShv ZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKKworSVRFUkFUT1JfSU5TTl9Q RVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZsdXR2dmJfb3JhY2NpLCJWeDMyLmJ8PXZsdXQzMihW dTMyLmIsVnYzMi5iLCN1MykiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1 bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7 KQorbWF0Y2h2YWwgPSB1aVYgJiAweDc7CitvZGRoYWxmID0gKHVpViA+PiAoZlZFQ0xPR1NJWkUo KS02KSkgJiAweDE7CitpZHggPSBWdVYudWJbaV07CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTAp ID09IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxF TSgxNildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYs dmx1dHZ3aGksIlZkZDMyLmg9dmx1dDE2KFZ1MzIuYixWdjMyLmgsI3UzKSIsInZlY3Rvci12ZWN0 b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0 Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAmIDB4RjsKK29kZGhh bGYgPSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IGZHRVRVQllURSgw LFZ1Vi51aFtpXSk7CitWZGRWLnZbMF0uaFtpXSA9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFs IDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsK K2lkeCA9IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWZGRWLnZbMV0uaFtpXSA9ICgoaWR4ICYg MHhGMCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUg ZlZFTEVNKDMyKV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZF QygxNix2bHV0dndoX29yYWNjaSwiVnh4MzIuaHw9dmx1dDE2KFZ1MzIuYixWdjMyLmgsI3UzKSIs InZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBm SElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAm IDB4RjsKK29kZGhhbGYgPSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9 IGZHRVRVQllURSgwLFZ1Vi51aFtpXSk7CitWeHhWLnZbMF0uaFtpXSB8PSAoKGlkeCAmIDB4RjAp ID09IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxF TSgzMildKSA6IDA7CitpZHggPSBmR0VUVUJZVEUoMSxWdVYudWhbaV0pOworVnh4Vi52WzFdLmhb aV0gfD0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFs ZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQorCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVf U0xPVCg4LHZsdXR2dmJfbm0sIlZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYixSdDgpOm5vbWF0 Y2giLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4 OykgZkhJREUoaW50IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQorICAgIG1hdGNodmFs ID0gUnRWICYgMHg3OworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAm IDB4MTsKKyAgICBpZHggPSBWdVYudWJbaV07CisgICAgaWR4ID0gKGlkeCYweDFGKSB8IChtYXRj aHZhbDw8NSk7CisgICAgVmRWLmJbaV0gPSBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZW RUxFTSgxNildKSkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2 bHV0dndoX25tLCJWZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCk6bm9tYXRjaCIsInZl Y3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElE RShpbnQgb2RkaGFsZjspIGZISURFKGludCBtYXRjaHZhbDspCisgICAgbWF0Y2h2YWwgPSBSdFYg JiAweEY7CisgICAgb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOwor ICAgIGlkeCA9IGZHRVRVQllURSgwLFZ1Vi51aFtpXSk7CisgICAgaWR4ID0gKGlkeCYweDBGKSB8 IChtYXRjaHZhbDw8NCk7CisgICAgVmRkVi52WzBdLmhbaV0gPSBmR0VUSEFMRihvZGRoYWxmLFZ2 Vi53W2lkeCAlIGZWRUxFTSgzMildKTsKKyAgICBpZHggPSBmR0VUVUJZVEUoMSxWdVYudWhbaV0p OworICAgIGlkeCA9IChpZHgmMHgwRikgfCAobWF0Y2h2YWw8PDQpOworICAgIFZkZFYudlsxXS5o W2ldID0gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkpCisKKworCisK Ky8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKK05PTiBMSU5FQVIgLSBWNjUKKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKK0lURVJBVE9SX0lOU05fU0xPVDJfRE9VQkxFX1ZFQygxNix2bXBhaGhzYXQs IlZ4MzIuaD12bXBhKFZ4MzIuaCxWdTMyLmgsUnR0MzIuaCk6c2F0IiwicGllY2V3aXNlIGxpbmVh ciBhcHByb3hpbWF0aW9uIiwKKyAgICBWeFYuaFtpXT0gZlZTQVRIKCAoICggZk1QWTE2U1MoVnhW LmhbaV0sVnVWLmhbaV0pPDwxKSArIChmR0VUSEFMRigoIChWdVYuaFtpXT4+MTQpJjB4MyksIFJ0 dFYgKTw8MTUpKT4+MTYpKQorCisKK0lURVJBVE9SX0lOU05fU0xPVDJfRE9VQkxFX1ZFQygxNix2 bXBhdWh1aHNhdCwiVngzMi5oPXZtcGEoVngzMi5oLFZ1MzIudWgsUnR0MzIudWgpOnNhdCIsInBp ZWNld2lzZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIsCisgICAgVnhWLmhbaV09IGZWU0FUSCggKCAg Zk1QWTE2U1UoVnhWLmhbaV0sVnVWLnVoW2ldKSArIChmR0VUVUhBTEYoKChWdVYudWhbaV0+PjE0 KSYweDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKworSVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVf VkVDKDE2LHZtcHN1aHVoc2F0LCJWeDMyLmg9dm1wcyhWeDMyLmgsVnUzMi51aCxSdHQzMi51aCk6 c2F0IiwicGllY2V3aXNlIGxpbmVhciBhcHByb3hpbWF0aW9uIiwKKyAgICBWeFYuaFtpXT0gZlZT QVRIKCAoICBmTVBZMTZTVShWeFYuaFtpXSxWdVYudWhbaV0pIC0gKGZHRVRVSEFMRigoKFZ1Vi51 aFtpXT4+MTQpJjB4MyksIFJ0dFYgKTw8MTUpKT4+MTYpKQorCisKK0lURVJBVE9SX0lOU05fU0xP VDJfRE9VQkxFX1ZFQygxNix2bHV0NCwiVmQzMi5oPXZsdXQ0KFZ1MzIudWgsUnR0MzIuaCkiLCI0 IGVudHJ5IGxvb2t1cCB0YWJsZSIsCisgICAgVmRWLmhbaV09IGZHRVRIQUxGKCAgKChWdVYuaFtp XT4+MTQpJjB4MyksIFJ0dFYgKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1Y2NQor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9OT1YxKDMy LHZtcHl1aGUsIlZkMzIudXc9dm1weWUoVnUzMi51aCxSdDMyLnVoKSIsCisiVmVjdG9yIGV2ZW4g aGFsZndvcmQgdW5zaWduZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAgICBWZFYudXdbaV0gPSBm TVBZMTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKSkKKworCitJ VEVSQVRPUl9JTlNOX01QWV9TTE9UX05PVjEoMzIsdm1weXVoZV9hY2MsIlZ4MzIudXcrPXZtcHll KFZ1MzIudWgsUnQzMi51aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRp cGx5IGJ5IHNjYWxhciIsCisgICAgVnhWLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBW dVYudXdbaV0pLGZHRVRVSEFMRigwLFJ0VikpKQorCisKKworCitFWFRJTlNOKFY2X3ZnYXRoZXJt dywgICJ2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFf TUVNTElLRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShp bnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11Viwg ZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAg ZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAg ICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRChF QSwgVnZWLnV3W2ldLCBpLE11Vik7CisgICAgfQorICAgIGZHQVRIRVJfRklOSVNIKCkKK30pCitF WFRJTlNOKFY2X3ZnYXRoZXJtaCwgICJ2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgi LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9W TSxBX0NWSV9UTVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBm SElERShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZH QVRIRVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVW LCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZW Rk9SRUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZW TE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JEKEVBLCBWdlYudWhbaV0sIGksTXVWKTsKKyAgICB9Cisg ICAgZkdBVEhFUl9GSU5JU0goKQorfSkKKworCisKK0VYVElOU04oVjZfdmdhdGhlcm1odywgICJ2 dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixB X0NWSSxBX0NWSV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX01F TUxJS0UpLCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZI SURFKGludCBqOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdB VEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZG T1JFQUNIKDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAg ICAgICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dB VEhFUl9IQUxGV09SRF9EVihFQSwgVnZ2Vi52W2pdLnV3W2ldLCAoMippK2opLGksaixNdVYpOwor ICAgICAgICB9CisgICAgfQorICAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKK0VYVElOU04o VjZfdmdhdGhlcm13cSwgICJpZiAoUXM0KSB2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncp LnciLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NW SV9WTSxBX0NWSV9UTVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZI SURFKGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdB VEhFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZG T1JFQUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZM T0dfVlRDTV9HQVRIRVJfV09SRFEoRUEsIFZ2Vi51d1tpXSwgaSxRc1YsTXVWKTsKKyAgICB9Cisg ICAgZkdBVEhFUl9GSU5JU0goKQorfSkKK0VYVElOU04oVjZfdmdhdGhlcm1ocSwgICJpZiAoUXM0 KSB2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgiLCBBVFRSSUJTKEFfRVhURU5TSU9O LEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfTUVN TElLRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUo aW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZHQVRIRVJfSU5JVCggUnRWLCBNdVYs IGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAg IGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAg ICAgICBFQSA9IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZX T1JEUShFQSwgVnZWLnVoW2ldLCBpLFFzVixNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklT SCgpCit9KQorCisKKworRVhUSU5TTihWNl92Z2F0aGVybWh3cSwgICJpZiAoUXM0KSB2dG1wLmg9 dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX01FTUxJS0Up LCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGlu dCBqOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhFUl9J TklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1l bnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNI KDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBF QSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dBVEhFUl9I QUxGV09SRFFfRFYoRUEsIFZ2dlYudltqXS51d1tpXSwgKDIqaStqKSxpLGosUXNWLE11Vik7Cisg ICAgICAgfQorICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5TTihW Nl92c2NhdHRlcm13ICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyIiwgQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVN TElLRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50 IGVsZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBl bGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBm VkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAg ICAgRUEgPSBSdFYrVnZWLnV3W2ldOworICAgICAgICBmVkxPR19WVENNX1dPUkQoRUEsIFZ2Vi51 d1tpXSwgVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisK KworRVhUSU5TTihWNl92c2NhdHRlcm1oICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaD1W dzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFf Q1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZXb3JkcyIsCit7CisgICAgZkhJREUoaW50 IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9J TklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1l bnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNI KDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51aFtpXTsKKyAgICAgICAgZlZMT0dfVlRD TV9IQUxGV09SRChFQSxWdlYudWhbaV0sVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJf RklOSVNIKDApCit9KQorCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtd19hZGQsICAidnNjYXR0ZXIo UnQzMixNdTIsVnYzMi53KS53Kz1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIFdvcmRzLUFk ZCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBBTElHTk1FTlQ9NDspCisJ ZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0 ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXpl KTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkp IHsKKyAgICAgICAgRUEgPSAoUnRWK2ZWQUxJR04oVnZWLnV3W2ldLEFMSUdOTUVOVCkpOworICAg ICAgICBmVkxPR19WVENNX1dPUkRfSU5DUkVNRU5UKEVBLFZ2Vi51d1tpXSxWd1YsaSxBTElHTk1F TlQsTXVWKTsKKyAgICB9CisgICAgZkhJREUoZkxPR19TQ0FUVEVSX09QKDQpOykKKyAgICBmU0NB VFRFUl9GSU5JU0goMSkKK30pCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtaF9hZGQsICAidnNjYXR0 ZXIoUnQzMixNdTIsVnYzMi5oKS5oKz1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZ3 b3JkLUFkZCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBBTElHTk1FTlQ9 MjspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FUVEVSX0lO SVQoIFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVu dF9zaXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0go MTYsIGkpIHsKKyAgICAgICAgRUEgPSAoUnRWK2ZWQUxJR04oVnZWLnVoW2ldLEFMSUdOTUVOVCkp OworICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEX0lOQ1JFTUVOVChFQSxWdlYudWhbaV0sVndW LGksQUxJR05NRU5ULE11Vik7CisgICAgfQorICAgIGZISURFKGZMT0dfU0NBVFRFUl9PUCgyKTsp CisgICAgZlNDQVRURVJfRklOSVNIKDEpCit9KQorCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtd3Es ICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53PVZ3MzIiLCBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtF KSwgIlNjYXR0ZXIgV29yZHMgY29uZGl0aW9uYWwiLAoreworICAgIGZISURFKGludCBpOykKKwlm SElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRW LCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUp OworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkg eworICAgICAgICBFQSA9IFJ0VitWdlYudXdbaV07CisgICAgICAgIGZWTE9HX1ZUQ01fV09SRFEo RUEsVnZWLnV3W2ldLCBWd1YsaSxRc1YsTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNI KDApCit9KQorCitFWFRJTlNOKFY2X3ZzY2F0dGVybWhxLCAgImlmIChRczQpIHZzY2F0dGVyKFJ0 MzIsTXUyLFZ2MzIuaCkuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9T Q0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIEhhbGZXb3JkcyBj b25kaXRpb25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3Np emUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXpl KTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYs IGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRW K1Z2Vi51aFtpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9IQUxGV09SRFEoRUEsVnZWLnVoW2ldLFZ3 VixpLFFzVixNdVYpOworICAgIH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKKworCisK K0VYVElOU04oVjZfdnNjYXR0ZXJtaHcgLCAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaD1W dzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBX0RW LEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQg aTspCisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAg ICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZM QVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6 ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8IDI7IGor KykgeworICAgICAgICAgICAgRUEgPSBSdFYrVnZ2Vi52W2pdLnV3W2ldOworICAgICAgICAgICAg ZlZMT0dfVlRDTV9IQUxGV09SRF9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksaSxq LE11Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisK KworRVhUSU5TTihWNl92c2NhdHRlcm1od3EsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIs VnZ2MzIudykuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVS LEFfQ1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZ3b3JkcyBjb25k aXRpb25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBqOykKKwlmSElE RShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBN dVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOwor ICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgewor ICAgICAgICBmb3IoaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICAgIEVBID0gUnRWK1Z2 dlYudltqXS51d1tpXTsKKyAgICAgICAgICAgIGZWTE9HX1ZUQ01fSEFMRldPUkRRX0RWKEVBLFZ2 dlYudltqXS51d1tpXSxWd1YsKDIqaStqKSxRc1YsaSxqLE11Vik7CisgICAgICAgIH0KKyAgICB9 CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCitFWFRJTlNOKFY2X3ZzY2F0dGVybWh3X2Fk ZCwgICJ2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oKz1WdzMyIiwgQVRUUklCUyhBX0VYVEVO U0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfTUVNTElLRSks ICJTY2F0dGVyIGhhbGZ3b3Jkcy1hZGQiLAoreworICAgIGZISURFKGludCBpOykKKyAgICBmSElE RShpbnQgajspCisgICAgZkhJREUoaW50IEFMSUdOTUVOVD0yOykKKwlmSElERShpbnQgZWxlbWVu dF9zaXplID0gMjspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRf c2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04o UnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBmb3Io aiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICAgICBFQSA9ICBSdFYgKyBmVkFMSUdOKFZ2 dlYudltqXS51d1tpXSxBTElHTk1FTlQpOzsKKyAgICAgICAgICAgICBmVkxPR19WVENNX0hBTEZX T1JEX0lOQ1JFTUVOVF9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksaSxqLEFMSUdO TUVOVCxNdVYpOworICAgICAgICB9CisgICAgfQorICAgIGZISURFKGZMT0dfU0NBVFRFUl9PUCgy KTspCisgICAgZlNDQVRURVJfRklOSVNIKDEpCit9KQorCitFWFRJTlNOKFY2X3ZwcmVmaXhxYiwi VmQzMi5iPXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJ X1ZTKSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9mIFEgaW50byBieXRlIiwKK3sKKyAgICBmSElE RShpbnQgaTspCisgICAgZkhJREUoc2l6ZTF1X3QgYWNjID0gMDspCisgICAgZlZGT1JFQUNIKDgs IGkpIHsKKyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKTsKKyAgICAgICAgVmRWLnViW2ld ID0gYWNjOworICAgIH0KKyAgICB9ICkKK0VYVElOU04oVjZfdnByZWZpeHFoLCJWZDMyLmg9cHJl Zml4c3VtKFF2NCkiLCAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMpLCAgInBh cmFsbGVsIHByZWZpeCBzdW0gb2YgUSBpbnRvIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50 IGk7KQorICAgIGZISURFKHNpemUydV90IGFjYyA9IDA7KQorICAgIGZWRk9SRUFDSCgxNiwgaSkg eworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqMiswKTsKKyAgICAgICAgYWNjICs9IGZH RVRRQklUKFF2VixpKjIrMSk7CisgICAgICAgIFZkVi51aFtpXSA9IGFjYzsKKyAgICB9CisgICAg fSApCitFWFRJTlNOKFY2X3ZwcmVmaXhxdywiVmQzMi53PXByZWZpeHN1bShRdjQpIiwgICBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTKSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9m IFEgaW50byB3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKHNpemU0dV90 IGFjYyA9IDA7KQorICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBhY2MgKz0gZkdFVFFC SVQoUXZWLGkqNCswKTsKKyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKjQrMSk7CisgICAg ICAgIGFjYyArPSBmR0VUUUJJVChRdlYsaSo0KzIpOworICAgICAgICBhY2MgKz0gZkdFVFFCSVQo UXZWLGkqNCszKTsKKyAgICAgICAgVmRWLnV3W2ldID0gYWNjOworICAgIH0KKyAgICB9ICkKKwor CisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgREVCVUcgVmVjdG9yL1JlZ2lzdGVyIFBy aW50aW5nCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFBSSU5UX1ZVKFRZUEUs IFRZUEUyLCBDT1VOVClcCisgICAgaW50IGk7ICBcCisgICAgc2l6ZTR1X3QgdmVjX2xlbiA9IGZW QllURVMoKTtcCisgICAgZnByaW50ZihzdGRvdXQsIlYlMmQ6ICIsVnVOKTsgIFwKKyAgICBmb3Ig KGk9MDtpPHZlY19sZW4+PkNPVU5UO2krKykgeyAgICAgICAgIFwKKyAgICAgICAgZnByaW50Zihz dGRvdXQsVFlQRTIgIiAiLCBWdVYuVFlQRVtpXSk7IFwKKyAgICB9OyAgXAorICAgIGZwcmludGYo c3Rkb3V0LCJcXG4iKTsgIFwKKwlmZmx1c2goc3Rkb3V0KTtcCisKKyN1bmRlZiBBVFRSX1ZNRU0K KyN1bmRlZiBBVFRSX1ZNRU1VCisjdW5kZWYgQVRUUl9WTUVNX05UCisKKyNlbmRpZiAvKiBOT19N TVZFQyAqLworCisjaWZkZWYgX19TRUxGX0RFRl9FWFRJTlNOCisjdW5kZWYgRVhUSU5TTgorI3Vu ZGVmIF9fU0VMRl9ERUZfRVhUSU5TTgorI2VuZGlmCi0tIAoyLjcuNAoK