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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05C56C433F5 for ; Sat, 30 Oct 2021 01:47:30 +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 5A61660FC1 for ; Sat, 30 Oct 2021 01:47:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 5A61660FC1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:33414 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mgdSx-0004qo-B8 for qemu-devel@archiver.kernel.org; Fri, 29 Oct 2021 21:47:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40918) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mgd3i-00033W-Og for qemu-devel@nongnu.org; Fri, 29 Oct 2021 21:21:24 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:10785) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mgd3d-0001fC-15 for qemu-devel@nongnu.org; Fri, 29 Oct 2021 21:21:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1635556876; x=1667092876; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=qEFhoOAD7bZUMMq5g/WVUKF8A3fVxbeFvpHKfXorNJI=; b=doFAzNjpTsE/wgadWtRMMP9r8zA/A6a7lzxeCnTPqGRRuIdwaRfwobQ5 MKCexKTZz55p3B3IyWoxeDaXPd7BT6ePlA45XN5X3mOHulQu8tp7DU58M Od/B+TtsNLpzLrBsq9uVor1imOqIiDyMpoYJXRP1dEky+yLDEqpr8vgtA Y=; Received: from unknown (HELO ironmsg04-sd.qualcomm.com) ([10.53.140.144]) by alexa-out-sd-02.qualcomm.com with ESMTP; 29 Oct 2021 18:20:59 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg04-sd.qualcomm.com with ESMTP; 29 Oct 2021 18:20:58 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 28B2E323B; Fri, 29 Oct 2021 20:20:57 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v5 24/30] Hexagon HVX (target/hexagon) import semantics Date: Fri, 29 Oct 2021 20:20:43 -0500 Message-Id: <1635556849-18120-25-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1635556849-18120-1-git-send-email-tsimpson@quicinc.com> References: <1635556849-18120-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.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-Spam_score_int: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 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.25, 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, bcain@quicinc.com, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" SW1wb3J0ZWQgZnJvbSB0aGUgSGV4YWdvbiBhcmNoaXRlY3R1cmUgbGlicmFyeQogICAgaW1wb3J0 ZWQvYWxsZXh0LmlkZWYgICAgICAgICAgIFRvcCBsZXZlbCBmaWxlIGZvciBhbGwgZXh0ZW5zaW9u cwogICAgaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgICAgICAgIEhWWCBpbnN0cnVjdGlvbiBkZWZp bml0aW9ucwoKU3VwcG9ydCBmdW5jdGlvbnMgYWRkZWQgdG8gdGFyZ2V0L2hleGFnb24vZ2VucHRy LmMKCkFja2VkLWJ5OiBSaWNoYXJkIEhlbmRlcnNvbiA8cmljaGFyZC5oZW5kZXJzb25AbGluYXJv Lm9yZz4KU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29t PgotLS0KIHRhcmdldC9oZXhhZ29uL2dlbnB0ci5jICAgICAgICAgICAgICAgIHwgIDE3MiArKysK IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmICAgIHwgICAyNSArCiB0YXJnZXQv aGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYgICB8ICAgIDEgKwogdGFyZ2V0L2hleGFnb24v aW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYgfCAyNjA2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDI4MDQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRhcmdldC9oZXhhZ29uL2ltcG9ydGVkL2FsbGV4dC5pZGVmCiBjcmVhdGUgbW9kZSAx MDA2NDQgdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0LmlkZWYKCmRpZmYgLS1naXQg YS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jCmluZGV4 IDQ3MzQzOGEuLjQ0MTlkMzAgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jCisr KyBiL3RhcmdldC9oZXhhZ29uL2dlbnB0ci5jCkBAIC0xOSwxMSArMTksMTMgQEAKICNpbmNsdWRl ICJjcHUuaCIKICNpbmNsdWRlICJpbnRlcm5hbC5oIgogI2luY2x1ZGUgInRjZy90Y2ctb3AuaCIK KyNpbmNsdWRlICJ0Y2cvdGNnLW9wLWd2ZWMuaCIKICNpbmNsdWRlICJpbnNuLmgiCiAjaW5jbHVk ZSAib3Bjb2Rlcy5oIgogI2luY2x1ZGUgInRyYW5zbGF0ZS5oIgogI2RlZmluZSBRRU1VX0dFTkVS QVRFICAgICAgIC8qIFVzZWQgaW50ZXJuYWxseSBieSBtYWNyb3MuaCAqLwogI2luY2x1ZGUgIm1h Y3Jvcy5oIgorI2luY2x1ZGUgIm1tdmVjL21hY3Jvcy5oIgogI3VuZGVmIFFFTVVfR0VORVJBVEUK ICNpbmNsdWRlICJnZW5fdGNnLmgiCiAjaW5jbHVkZSAiZ2VuX3RjZ19odnguaCIKQEAgLTQ2Miw1 ICs0NjQsMTc1IEBAIHN0YXRpYyBUQ0d2IGdlbl84Yml0c29mKFRDR3YgcmVzdWx0LCBUQ0d2IHZh bHVlKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnRwdHJfdCB2cmVnX3NyY19v ZmYoRGlzYXNDb250ZXh0ICpjdHgsIGludCBudW0pCit7CisgICAgaW50cHRyX3Qgb2Zmc2V0ID0g b2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBWUmVnc1tudW1dKTsKKworICAgIGlmICh0ZXN0X2Jp dChudW0sIGN0eC0+dnJlZ3Nfc2VsZWN0KSkgeworICAgICAgICBvZmZzZXQgPSBjdHhfZnV0dXJl X3ZyZWdfb2ZmKGN0eCwgbnVtLCAxLCBmYWxzZSk7CisgICAgfQorICAgIGlmICh0ZXN0X2JpdChu dW0sIGN0eC0+dnJlZ3NfdXBkYXRlZF90bXApKSB7CisgICAgICAgIG9mZnNldCA9IGN0eF90bXBf dnJlZ19vZmYoY3R4LCBudW0sIDEsIGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIG9mZnNldDsK K30KKworc3RhdGljIHZvaWQgZ2VuX2xvZ192cmVnX3dyaXRlKERpc2FzQ29udGV4dCAqY3R4LCBp bnRwdHJfdCBzcmNvZmYsIGludCBudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VlJlZ1dyaXRlVHlwZSB0eXBlLCBpbnQgc2xvdF9udW0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkKQoreworICAgIFRDR0xhYmVsICpsYWJlbF9lbmQg PSBOVUxMOworICAgIGludHB0cl90IGRzdG9mZjsKKworICAgIGlmIChpc19wcmVkaWNhdGVkKSB7 CisgICAgICAgIFRDR3YgY2FuY2VsbGVkID0gdGNnX3RlbXBfbG9jYWxfbmV3KCk7CisgICAgICAg IGxhYmVsX2VuZCA9IGdlbl9uZXdfbGFiZWwoKTsKKworICAgICAgICAvKiBEb24ndCBkbyBhbnl0 aGluZyBpZiB0aGUgc2xvdCB3YXMgY2FuY2VsbGVkICovCisgICAgICAgIHRjZ19nZW5fZXh0cmFj dF90bChjYW5jZWxsZWQsIGhleF9zbG90X2NhbmNlbGxlZCwgc2xvdF9udW0sIDEpOworICAgICAg ICB0Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NPTkRfTkUsIGNhbmNlbGxlZCwgMCwgbGFiZWxfZW5k KTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShjYW5jZWxsZWQpOworICAgIH0KKworICAgIGlmICh0 eXBlICE9IEVYVF9UTVApIHsKKyAgICAgICAgZHN0b2ZmID0gY3R4X2Z1dHVyZV92cmVnX29mZihj dHgsIG51bSwgMSwgdHJ1ZSk7CisgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9m Ziwgc3Jjb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihNTVZlY3RvciksIHNp emVvZihNTVZlY3RvcikpOworICAgICAgICB0Y2dfZ2VuX29yaV90bChoZXhfVlJlZ3NfdXBkYXRl ZCwgaGV4X1ZSZWdzX3VwZGF0ZWQsIDEgPDwgbnVtKTsKKyAgICB9IGVsc2UgeworICAgICAgICBk c3RvZmYgPSBjdHhfdG1wX3ZyZWdfb2ZmKGN0eCwgbnVtLCAxLCBmYWxzZSk7CisgICAgICAgIHRj Z19nZW5fZ3ZlY19tb3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihNTVZlY3RvciksIHNpemVvZihNTVZlY3RvcikpOworICAgIH0KKworICAg IGlmIChpc19wcmVkaWNhdGVkKSB7CisgICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfZW5kKTsK KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGdlbl9sb2dfdnJlZ193cml0ZV9wYWlyKERpc2FzQ29u dGV4dCAqY3R4LCBpbnRwdHJfdCBzcmNvZmYsIGludCBudW0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBWUmVnV3JpdGVUeXBlIHR5cGUsIGludCBzbG90X251bSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCkKK3sKKyAg ICBnZW5fbG9nX3ZyZWdfd3JpdGUoY3R4LCBzcmNvZmYsIG51bSBeIDAsIHR5cGUsIHNsb3RfbnVt LCBpc19wcmVkaWNhdGVkKTsKKyAgICBzcmNvZmYgKz0gc2l6ZW9mKE1NVmVjdG9yKTsKKyAgICBn ZW5fbG9nX3ZyZWdfd3JpdGUoY3R4LCBzcmNvZmYsIG51bSBeIDEsIHR5cGUsIHNsb3RfbnVtLCBp c19wcmVkaWNhdGVkKTsKK30KKworc3RhdGljIHZvaWQgZ2VuX2xvZ19xcmVnX3dyaXRlKGludHB0 cl90IHNyY29mZiwgaW50IG51bSwgaW50IHZuZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IHNsb3RfbnVtLCBib29sIGlzX3ByZWRpY2F0ZWQpCit7CisgICAgVENHTGFiZWwg KmxhYmVsX2VuZCA9IE5VTEw7CisgICAgaW50cHRyX3QgZHN0b2ZmOworCisgICAgaWYgKGlzX3By ZWRpY2F0ZWQpIHsKKyAgICAgICAgVENHdiBjYW5jZWxsZWQgPSB0Y2dfdGVtcF9sb2NhbF9uZXco KTsKKyAgICAgICAgbGFiZWxfZW5kID0gZ2VuX25ld19sYWJlbCgpOworCisgICAgICAgIC8qIERv bid0IGRvIGFueXRoaW5nIGlmIHRoZSBzbG90IHdhcyBjYW5jZWxsZWQgKi8KKyAgICAgICAgdGNn X2dlbl9leHRyYWN0X3RsKGNhbmNlbGxlZCwgaGV4X3Nsb3RfY2FuY2VsbGVkLCBzbG90X251bSwg MSk7CisgICAgICAgIHRjZ19nZW5fYnJjb25kaV90bChUQ0dfQ09ORF9ORSwgY2FuY2VsbGVkLCAw LCBsYWJlbF9lbmQpOworICAgICAgICB0Y2dfdGVtcF9mcmVlKGNhbmNlbGxlZCk7CisgICAgfQor CisgICAgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfUVJlZ3NbbnVt XSk7CisgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemVvZihN TVFSZWcpLCBzaXplb2YoTU1RUmVnKSk7CisKKyAgICBpZiAoaXNfcHJlZGljYXRlZCkgeworICAg ICAgICB0Y2dfZ2VuX29yaV90bChoZXhfUVJlZ3NfdXBkYXRlZCwgaGV4X1FSZWdzX3VwZGF0ZWQs IDEgPDwgbnVtKTsKKyAgICAgICAgZ2VuX3NldF9sYWJlbChsYWJlbF9lbmQpOworICAgIH0KK30K Kworc3RhdGljIHZvaWQgZ2VuX3ZyZWdfbG9hZChEaXNhc0NvbnRleHQgKmN0eCwgaW50cHRyX3Qg ZHN0b2ZmLCBUQ0d2IHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhbGlnbmVk KQoreworICAgIFRDR3ZfaTY0IHRtcCA9IHRjZ190ZW1wX25ld19pNjQoKTsKKyAgICBpZiAoYWxp Z25lZCkgeworICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoc3JjLCBzcmMsIH4oKGludDMyX3Qpc2l6 ZW9mKE1NVmVjdG9yKSAtIDEpKTsKKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl b2YoTU1WZWN0b3IpIC8gODsgaSsrKSB7CisgICAgICAgIHRjZ19nZW5fcWVtdV9sZDY0KHRtcCwg c3JjLCBjdHgtPm1lbV9pZHgpOworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoc3JjLCBzcmMsIDgp OworICAgICAgICB0Y2dfZ2VuX3N0X2k2NCh0bXAsIGNwdV9lbnYsIGRzdG9mZiArIGkgKiA4KTsK KyAgICB9CisgICAgdGNnX3RlbXBfZnJlZV9pNjQodG1wKTsKK30KKworc3RhdGljIHZvaWQgZ2Vu X3ZyZWdfc3RvcmUoRGlzYXNDb250ZXh0ICpjdHgsIEluc24gKmluc24sIFBhY2tldCAqcGt0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHdiBFQSwgaW50cHRyX3Qgc3Jjb2ZmLCBpbnQg c2xvdCwgYm9vbCBhbGlnbmVkKQoreworICAgIGludHB0cl90IGRzdG9mZiA9IG9mZnNldG9mKENQ VUhleGFnb25TdGF0ZSwgdnN0b3JlW3Nsb3RdLmRhdGEpOworICAgIGludHB0cl90IG1hc2tvZmYg PSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIHZzdG9yZVtzbG90XS5tYXNrKTsKKworICAgIGlm IChpc19nYXRoZXJfc3RvcmVfaW5zbihpbnNuLCBwa3QpKSB7CisgICAgICAgIFRDR3Ygc2wgPSB0 Y2dfY29uc3RhbnRfdGwoc2xvdCk7CisgICAgICAgIGdlbl9oZWxwZXJfZ2F0aGVyX3N0b3JlKGNw dV9lbnYsIEVBLCBzbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0Y2dfZ2VuX21v dmlfdGwoaGV4X3ZzdG9yZV9wZW5kaW5nW3Nsb3RdLCAxKTsKKyAgICBpZiAoYWxpZ25lZCkgewor ICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoaGV4X3ZzdG9yZV9hZGRyW3Nsb3RdLCBFQSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIH4oKGludDMyX3Qpc2l6ZW9mKE1NVmVjdG9yKSAtIDEpKTsKKyAg ICB9IGVsc2UgeworICAgICAgICB0Y2dfZ2VuX21vdl90bChoZXhfdnN0b3JlX2FkZHJbc2xvdF0s IEVBKTsKKyAgICB9CisgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF92c3RvcmVfc2l6ZVtzbG90XSwg c2l6ZW9mKE1NVmVjdG9yKSk7CisKKyAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSB2c3RvcmUg YnVmZmVyICovCisgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNp emVvZihNTVZlY3RvciksIHNpemVvZihNTVZlY3RvcikpOworICAgIC8qIFNldCB0aGUgbWFzayB0 byBhbGwgMSdzICovCisgICAgdGNnX2dlbl9ndmVjX2R1cF9pbW0oTU9fNjQsIG1hc2tvZmYsIHNp emVvZihNTVFSZWcpLCBzaXplb2YoTU1RUmVnKSwgfjBMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGdl bl92cmVnX21hc2tlZF9zdG9yZShEaXNhc0NvbnRleHQgKmN0eCwgVENHdiBFQSwgaW50cHRyX3Qg c3Jjb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90IGJpdHNv ZmYsIGludCBzbG90LCBib29sIGludmVydCkKK3sKKyAgICBpbnRwdHJfdCBkc3RvZmYgPSBvZmZz ZXRvZihDUFVIZXhhZ29uU3RhdGUsIHZzdG9yZVtzbG90XS5kYXRhKTsKKyAgICBpbnRwdHJfdCBt YXNrb2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB2c3RvcmVbc2xvdF0ubWFzayk7CisK KyAgICB0Y2dfZ2VuX21vdmlfdGwoaGV4X3ZzdG9yZV9wZW5kaW5nW3Nsb3RdLCAxKTsKKyAgICB0 Y2dfZ2VuX2FuZGlfdGwoaGV4X3ZzdG9yZV9hZGRyW3Nsb3RdLCBFQSwKKyAgICAgICAgICAgICAg ICAgICAgfigoaW50MzJfdClzaXplb2YoTU1WZWN0b3IpIC0gMSkpOworICAgIHRjZ19nZW5fbW92 aV90bChoZXhfdnN0b3JlX3NpemVbc2xvdF0sIHNpemVvZihNTVZlY3RvcikpOworCisgICAgLyog Q29weSB0aGUgZGF0YSB0byB0aGUgdnN0b3JlIGJ1ZmZlciAqLworICAgIHRjZ19nZW5fZ3ZlY19t b3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplb2YoTU1WZWN0b3IpLCBzaXplb2YoTU1WZWN0 b3IpKTsKKyAgICAvKiBDb3B5IHRoZSBtYXNrICovCisgICAgdGNnX2dlbl9ndmVjX21vdihNT182 NCwgbWFza29mZiwgYml0c29mZiwgc2l6ZW9mKE1NUVJlZyksIHNpemVvZihNTVFSZWcpKTsKKyAg ICBpZiAoaW52ZXJ0KSB7CisgICAgICAgIHRjZ19nZW5fZ3ZlY19ub3QoTU9fNjQsIG1hc2tvZmYs IG1hc2tvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKE1NUVJlZyksIHNpemVv ZihNTVFSZWcpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHZlY190b19xdmVjKHNpemVfdCBz aXplLCBpbnRwdHJfdCBkc3RvZmYsIGludHB0cl90IHNyY29mZikKK3sKKyAgICBUQ0d2X2k2NCB0 bXAgPSB0Y2dfdGVtcF9uZXdfaTY0KCk7CisgICAgVENHdl9pNjQgd29yZCA9IHRjZ190ZW1wX25l d19pNjQoKTsKKyAgICBUQ0d2X2k2NCBiaXRzID0gdGNnX3RlbXBfbmV3X2k2NCgpOworICAgIFRD R3ZfaTY0IG1hc2sgPSB0Y2dfdGVtcF9uZXdfaTY0KCk7CisgICAgVENHdl9pNjQgemVybyA9IHRj Z19jb25zdGFudF9pNjQoMCk7CisgICAgVENHdl9pNjQgb25lcyA9IHRjZ19jb25zdGFudF9pNjQo fjApOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoTU1WZWN0b3IpIC8gODsgaSsr KSB7CisgICAgICAgIHRjZ19nZW5fbGRfaTY0KHRtcCwgY3B1X2Vudiwgc3Jjb2ZmICsgaSAqIDgp OworICAgICAgICB0Y2dfZ2VuX21vdmlfaTY0KG1hc2ssIDApOworCisgICAgICAgIGZvciAoaW50 IGogPSAwOyBqIDwgODsgaiArPSBzaXplKSB7CisgICAgICAgICAgICB0Y2dfZ2VuX2V4dHJhY3Rf aTY0KHdvcmQsIHRtcCwgaiAqIDgsIHNpemUgKiA4KTsKKyAgICAgICAgICAgIHRjZ19nZW5fbW92 Y29uZF9pNjQoVENHX0NPTkRfTkUsIGJpdHMsIHdvcmQsIHplcm8sIG9uZXMsIHplcm8pOworICAg ICAgICAgICAgdGNnX2dlbl9kZXBvc2l0X2k2NChtYXNrLCBtYXNrLCBiaXRzLCBqLCBzaXplKTsK KyAgICAgICAgfQorCisgICAgICAgIHRjZ19nZW5fc3Q4X2k2NChtYXNrLCBjcHVfZW52LCBkc3Rv ZmYgKyBpKTsKKyAgICB9CisgICAgdGNnX3RlbXBfZnJlZV9pNjQodG1wKTsKKyAgICB0Y2dfdGVt cF9mcmVlX2k2NCh3b3JkKTsKKyAgICB0Y2dfdGVtcF9mcmVlX2k2NChiaXRzKTsKKyAgICB0Y2df dGVtcF9mcmVlX2k2NChtYXNrKTsKK30KKwogI2luY2x1ZGUgInRjZ19mdW5jc19nZW5lcmF0ZWQu Yy5pbmMiCiAjaW5jbHVkZSAidGNnX2Z1bmNfdGFibGVfZ2VuZXJhdGVkLmMuaW5jIgpkaWZmIC0t Z2l0IGEvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsZXh0LmlkZWYgYi90YXJnZXQvaGV4YWdv bi9pbXBvcnRlZC9hbGxleHQuaWRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45ZDRiMjNlCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxs ZXh0LmlkZWYKQEAgLTAsMCArMSwyNSBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIx IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg KgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKgorICog VG9wIGxldmVsIGZpbGUgZm9yIGFsbCBpbnN0cnVjdGlvbiBzZXQgZXh0ZW5zaW9ucworICovCisj ZGVmaW5lIEVYVE5BTUUgbW12ZWMKKyNkZWZpbmUgRVhUU1RSICJtbXZlYyIKKyNpbmNsdWRlICJt bXZlYy9leHQuaWRlZiIKKyN1bmRlZiBFWFROQU1FCisjdW5kZWYgRVhUU1RSCmRpZmYgLS1naXQg YS90YXJnZXQvaGV4YWdvbi9pbXBvcnRlZC9hbGxpZGVmcy5kZWYgYi90YXJnZXQvaGV4YWdvbi9p bXBvcnRlZC9hbGxpZGVmcy5kZWYKaW5kZXggMmFhY2UyOS4uZWUyNTNiOCAxMDA2NDQKLS0tIGEv dGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvYWxsaWRlZnMuZGVmCisrKyBiL3RhcmdldC9oZXhhZ29u L2ltcG9ydGVkL2FsbGlkZWZzLmRlZgpAQCAtMjgsMyArMjgsNCBAQAogI2luY2x1ZGUgInNoaWZ0 LmlkZWYiCiAjaW5jbHVkZSAic3lzdGVtLmlkZWYiCiAjaW5jbHVkZSAic3ViaW5zbnMuaWRlZiIK KyNpbmNsdWRlICJhbGxleHQuaWRlZiIKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2ltcG9y dGVkL21tdmVjL2V4dC5pZGVmIGIvdGFyZ2V0L2hleGFnb24vaW1wb3J0ZWQvbW12ZWMvZXh0Lmlk ZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNhNWE2MAotLS0gL2Rldi9u dWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2ltcG9ydGVkL21tdmVjL2V4dC5pZGVmCkBAIC0wLDAg KzEsMjYwNiBAQAorLyoKKyAqICBDb3B5cmlnaHQoYykgMjAxOS0yMDIxIFF1YWxjb21tIElubm92 YXRpb24gQ2VudGVyLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICogICAgIEhPWUE6IE1VTFRJIE1FRElBIElOU1RSVUNJVE9OUworICoKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKKyNpZm5kZWYgRVhUSU5TTgorI2RlZmluZSBFWFRJTlNOIFE2SU5T TgorI2RlZmluZSBfX1NFTEZfREVGX0VYVElOU04gMQorI2VuZGlmCisKKyNpZm5kZWYgTk9fTU1W RUMKKworI2RlZmluZSBET19GT1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSBcCit7IFwKKyAgICBm SElERShpbnQgaTspIFwKKyAgICBmVkZPUkVBQ0goV0lEVEgsIGkpIHtcCisgICAgICAgIENPREUg O1wKKyAgICB9IFwKK30KKworCisKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKFdJ RFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgIFwKK0RFU0NSLCBET19GT1JfRUFD SF9DT0RFKFdJRFRILCBDT0RFKSkKKworCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfQU5ZX1NM T1QoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lOU05f QU5ZX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBc CitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVkFfRFYpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisK KyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lO VEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVf VkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKworI2RlZmluZSBJVEVSQVRPUl9J TlNOX1NISUZUX1NMT1QoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2 XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMpLCAgXAor REVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisKKworI2RlZmluZSBJVEVS QVRPUl9JTlNOX1NISUZUX1NMT1RfVlZfTEFURShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUp IFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNk ZWZpbmUgSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIs REVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UKFdJRFRILFRBRyxTWU5UQVgy LERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoV0lEVEgs VEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NP REUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVChX SURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJN VVRFX1NMT1QoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworI2RlZmluZSBJVEVSQVRP Ul9JTlNOX1BFUk1VVEVfU0xPVF9ERVAoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitF WFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf VlApLAorCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RFUChXSURUSCxU QUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NM T1RfREVQKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1Jf SU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUp IFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9WUF9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisK KyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19ERVAoV0lEVEgs VEFHLFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNI X0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xP VF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVS QVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NS LENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9NUFlfU0xPVChXSURUSCxUQUcsIFNZTlRB WCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIFwKK0FUVFJJQlMoQV9F WFRFTlNJT04sQV9DVkksQV9DVklfVlgpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lE VEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURUSCxU QUcsIFNZTlRBWCxERVNDUixDT0RFKSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIFwKK0FU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlgpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNI X0NPREUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU04yX01QWV9TTE9UKFdJ RFRILFRBRyxTWU5UQVgsU1lOVEFYMixERVNDUixDT0RFKSBcCitJVEVSQVRPUl9JTlNOX01QWV9T TE9UKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwK K0lURVJBVE9SX0lOU05fTVBZX1NMT1RfTEFURShXSURUSCxUQUcsIFNZTlRBWDIsREVTQ1IsQ09E RSkKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fTVBZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCxU QUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EViksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hf Q09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQyhXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1Jf SU5TTl9NUFlfU0xPVF9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisK KworCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQzIoV0lEVEgs VEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRB WCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWF9EVixBX0NWSV9WWF9WU1JDMF9J U19EU1QpLCBERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUg SVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVfVkVDKFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09E RSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJ LEFfQ1ZJX1ZYX0RWLEFfUkVTVFJJQ1RfU0xPVDJPTkxZKSwgREVTQ1IsIERPX0ZPUl9FQUNIX0NP REUoV0lEVEgsIENPREUpKQorCisjZGVmaW5lIElURVJBVE9SX0lOU05fVkhJU1RMSUtFKFdJRFRI LFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJXzRTTE9UKSwgIFwKK0RFU0NSLCBmSElERShtbXZl Y3Rvcl90IGlucHV0OykgaW5wdXQgPSBmVE1QVkRBVEEoKTsgRE9fRk9SX0VBQ0hfQ09ERShXSURU SCwgQ09ERSkpCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KgorKiBNTVZFQ1RPUiBNRU1PUlkgT1BFUkFUSU9OUyAtIE5PIE5BUEFMSSBWMQorKgorKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5T Tl9NUFlfU0xPVF9ET1VCTEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RFKSBc CitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVlhfRFYpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisj ZGVmaW5lIElURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURUSCxUQUcs U1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9ET1VC TEVfVkVDX05PVjEoV0lEVEgsVEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworCisKKyNkZWZpbmUg SVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxERVNDUixDT0RF KSBcCitFWFRJTlNOKFY2XyMjVEFHLCBTWU5UQVgsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkks QV9DVklfVlMpLCAgXAorREVTQ1IsIERPX0ZPUl9FQUNIX0NPREUoV0lEVEgsIENPREUpKQorCisj ZGVmaW5lIElURVJBVE9SX0lOU04yX1NISUZUX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZ TlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX05PVjEoV0lEVEgs VEFHLFNZTlRBWDIsREVTQ1IsQ09ERSkKKworCisjZGVmaW5lIElURVJBVE9SX0lOU05fQU5ZX1NM T1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUpIFwKK0VYVElOU04oVjZfIyNUQUcs IFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksICBcCitERVNDUiwg RE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJf QU5ZX1NMT1RfTk9WMShXSURUSCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRF UkFUT1JfSU5TTl9BTllfU0xPVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisK KworI2RlZmluZSBJVEVSQVRPUl9JTlNOX01QWV9TTE9UX05PVjEoV0lEVEgsVEFHLCBTWU5UQVgs REVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBcCitBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZYKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9DT0RFKFdJRFRI LCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9OT1YxKFdJRFRI LFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwgIFwKK0RFU0NSLCBET19GT1JfRUFDSF9D T0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RU X05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJBVE9SX0lO U05fUEVSTVVURV9TTE9UKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNkZWZpbmUg SVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfREVQVF9OT1YxKFdJRFRILFRBRyxTWU5UQVgsREVT Q1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFYLCBBVFRSSUJTKEFfRVhURU5TSU9O LEFfQ1ZJLEFfQ1ZJX1ZQKSwKKworCisjZGVmaW5lIElURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xP VF9ERVBUX05PVjEoV0lEVEgsVEFHLFNZTlRBWCxTWU5UQVgyLERFU0NSLENPREUpIFwKK0lURVJB VE9SX0lOU05fUEVSTVVURV9TTE9UX0RFUF9OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENP REUpCisKKyNkZWZpbmUgSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQ19OT1Yx KFdJRFRILFRBRyxTWU5UQVgsREVTQ1IsQ09ERSkgXAorRVhUSU5TTihWNl8jI1RBRywgU1lOVEFY LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQX1ZTKSwgIFwKK0RFU0NSLCBET19G T1JfRUFDSF9DT0RFKFdJRFRILCBDT0RFKSkKKworI2RlZmluZSBJVEVSQVRPUl9JTlNOX1BFUk1V VEVfU0xPVF9ET1VCTEVfVkVDX0RFUFRfTk9WMShXSURUSCxUQUcsU1lOVEFYLERFU0NSLENPREUp IFwKK0VYVElOU04oVjZfIyNUQUcsIFNZTlRBWCwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxB X0NWSV9WUF9WUyksICBcCitERVNDUiwgRE9fRk9SX0VBQ0hfQ09ERShXSURUSCwgQ09ERSkpCisK KyNkZWZpbmUgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUNfTk9WMShXSURU SCxUQUcsU1lOVEFYLFNZTlRBWDIsREVTQ1IsQ09ERSkgXAorSVRFUkFUT1JfSU5TTl9QRVJNVVRF X1NMT1RfRE9VQkxFX1ZFQ19OT1YxKFdJRFRILFRBRyxTWU5UQVgyLERFU0NSLENPREUpCisKKyNk ZWZpbmUgTkFSUk9XSU5HX1NISUZUX05PVjEoSVRFUlNJWkUsVEFHLERTVE0sRFNUVFlQRSxTUkNU WVBFLFNZTk9QVFMsU0FURlVOQyxSTkRGVU5DLFNIQU1UTUFTSykgXAorSVRFUkFUT1JfSU5TTl9T SElGVF9TTE9UX05PVjEoSVRFUlNJWkUsVEFHLCBcCisiVmQzMi4iICNEU1RUWVBFICI9dmFzcihW dTMyLiIgI1NSQ1RZUEUgIixWdjMyLiIgI1NSQ1RZUEUgIixSdDgpIiAjU1lOT1BUUywgXAorIlZl Y3RvciBzaGlmdCByaWdodCBhbmQgc2h1ZmZsZSIsIFwKKyAgICBmSElERShpbnQgKXNoYW10ID0g UnRWICYgU0hBTVRNQVNLOyBcCisgICAgRFNUTSgwLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5E RlVOQyhWdlYuU1JDVFlQRVtpXSxzaGFtdCkgPj4gc2hhbXQpKTsgXAorICAgIERTVE0oMSxWZFYu U1JDVFlQRVtpXSxTQVRGVU5DKFJOREZVTkMoVnVWLlNSQ1RZUEVbaV0sc2hhbXQpID4+IHNoYW10 KSkpCisKKyNkZWZpbmUgTU1WRUNfQVZHU19OT1YxKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBE RVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcjI1RZUEUs ICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAg ICAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAg ICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdTKCAgICAgICBXSURUSCwgIFZ1Vi5TUkNbaV0s IFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRILHZhdmcj I1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMy KTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6 cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBSb3VuZCJERVNDUiwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1Vi5T UkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9OT1YxKFdJRFRI LHZuYXZnIyNUWVBFLCAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dm5hdmciVFlQRTIiKFZ1 MzIsVnYzMikiLCAgICAgICAgICJWZDMyLiIjREVTVCI9dm5hdmcoVnUzMi4iI1NSQyIsVnYzMi4i I1NSQyIpIiwgICAgICAgICAiVmVjdG9yIE5lZ2F0aXZlIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0gZlZOQVZHUyggICAgICBXSURUSCwg IFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKQorCisgICNkZWZpbmUgTU1WRUNfQVZHVV9OT1YxKFRZ UEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xP VF9OT1YxKFdJRFRILHZhdmcjI1RZUEUsICAgICAgICAgICAgICAgICAgICAgICAgIlZkMzI9dmF2 ZyJUWVBFMiIoVnUzMixWdjMyKSIsICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZnKFZ1MzIuIiNT UkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAiVmVjdG9yIEF2ZXJhZ2UgIkRFU0NSLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVkFWR1UoICAgV0lE VEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1Rf Tk9WMShXSURUSCx2YXZnIyNUWVBFIyNybmQsICAgICAgICAgICAgICAgICAgICJWZDMyPXZhdmci VFlQRTIiKFZ1MzIsVnYzMik6cm5kIiwgICAgICJWZDMyLiIjREVTVCI9dmF2ZyhWdTMyLiIjU1JD IixWdjMyLiIjU1JDIik6cm5kIiwgICAgIlZlY3RvciBBdmVyYWdlICUgUm91bmQiREVTQ1IsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZBVkdVUk5EKFdJRFRI LCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpCisKKworCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisqCisqIE1NVkVDVE9SIE1FTU9SWSBPUEVSQVRJT05TCisqCisqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIE1NVkVDX0VBQ0hfRUEoVEFH LERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsQkVIKSBcCitFWFRJTlNOKFY2XyMjVEFH IyNfcGksICAgICAgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NS LHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9JKFJ4VixWRUNfU0NBTEUoc2lWKSk7IH0pIFwKK0VY VElOU04oVjZfIyNUQUcjI19haSwgICAgICBTWU5UQVhBICIoUnQzMisjczQpIiBOVCBTWU5UQVhC LEFUVFJJQixERVNDUix7IGZFQV9SSShSdFYsVkVDX1NDQUxFKHNpVikpOyBCRUg7fSkgXAorRVhU SU5TTihWNl8jI1RBRyMjX3BwdSwgICAgICBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFY QixBVFRSSUIsREVTQ1IseyBmRUFfUkVHKFJ4Vik7IEJFSDsgZlBNX00oUnhWLE11Vik7IH0pIFwK KworCisjZGVmaW5lIE1NVkVDX0NPTkRfRUFDSF9FQV9UUlVFKFRBRyxERVNDUixBVFRSSUIsTlQs U1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAsQkVIKSBcCitFWFRJTlNOKFY2XyMjVEFHIyNfcHJlZF9w aSwgICAgICAiaWYgKCIgI1NZTlRBWFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZ TlRBWEIsIEFUVFJJQixERVNDUiwgeyBpZiAoZkxTQk9MRChTWU5UQVhQIyNWKSkgeyBmRUFfUkVH KFJ4Vik7IEJFSDsgZlBNX0koUnhWLHNpVipmVkVDU0laRSgpKTsgfSBlbHNlIHtDQU5DRUw7fX0p IFwKK0VYVElOU04oVjZfIyNUQUcjI19wcmVkX2FpLCAgICAgICJpZiAoIiAjU1lOVEFYUCAiNCkg IiBTWU5UQVhBICIoUnQzMisjczQpIiBOVCBTWU5UQVhCLCBBVFRSSUIsREVTQ1IsICB7IGlmIChm TFNCT0xEKFNZTlRBWFAjI1YpKSB7IGZFQV9SSShSdFYsc2lWKmZWRUNTSVpFKCkpOyBCRUg7fSBl bHNlIHtDQU5DRUw7fX0pIFwKK0VYVElOU04oVjZfIyNUQUcjI19wcmVkX3BwdSwgICAgICJpZiAo IiAjU1lOVEFYUCAiNCkgIiBTWU5UQVhBICIoUngzMisrTXUyKSIgTlQgU1lOVEFYQixBVFRSSUIs REVTQ1IsICB7IGlmIChmTFNCT0xEKFNZTlRBWFAjI1YpKSB7IGZFQV9SRUcoUnhWKTsgQkVIOyBm UE1fTShSeFYsTXVWKTsgfSBlbHNlIHtDQU5DRUw7fX0pIFwKKworI2RlZmluZSBNTVZFQ19DT05E X0VBQ0hfRUFfRkFMU0UoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFY UCxCRUgpIFwKK0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9waSwgICAgICJpZiAoISIgI1NZTlRB WFAgIjQpICIgU1lOVEFYQSAiKFJ4MzIrKyNzMykiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsg aWYgKGZMU0JPTEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9JKFJ4 VixzaVYqZlZFQ1NJWkUoKSk7IH0gZWxzZSB7Q0FOQ0VMO319KSBcCitFWFRJTlNOKFY2XyMjVEFH IyNfbnByZWRfYWksICAgICAiaWYgKCEiICNTWU5UQVhQICI0KSAiIFNZTlRBWEEgIihSdDMyKyNz NCkiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLCB7IGlmIChmTFNCT0xETk9UKFNZTlRBWFAjI1Yp KSB7IGZFQV9SSShSdFYsc2lWKmZWRUNTSVpFKCkpOyBCRUg7fSBlbHNlIHtDQU5DRUw7fX0pIFwK K0VYVElOU04oVjZfIyNUQUcjI19ucHJlZF9wcHUsICAgICJpZiAoISIgI1NZTlRBWFAgIjQpICIg U1lOVEFYQSAiKFJ4MzIrK011MikiIE5UIFNZTlRBWEIsQVRUUklCLERFU0NSLHsgaWYgKGZMU0JP TEROT1QoU1lOVEFYUCMjVikpIHsgZkVBX1JFRyhSeFYpOyBCRUg7IGZQTV9NKFJ4VixNdVYpOyB9 IGVsc2Uge0NBTkNFTDt9fSkKKworI2RlZmluZSBNTVZFQ19DT05EX0VBQ0hfRUEoVEFHLERFU0NS LEFUVFJJQixOVCxTWU5UQVhBLFNZTlRBWEIsU1lOVEFYUCxCRUgpIFwKK01NVkVDX0NPTkRfRUFD SF9FQV9UUlVFKFRBRyxERVNDUixBVFRSSUIsTlQsU1lOVEFYQSxTWU5UQVhCLFNZTlRBWFAsQkVI KSBcCitNTVZFQ19DT05EX0VBQ0hfRUFfRkFMU0UoVEFHLERFU0NSLEFUVFJJQixOVCxTWU5UQVhB LFNZTlRBWEIsU1lOVEFYUCxCRUgpCisKKworI2RlZmluZSBWRUNfU0NBTEUoWCkgWCpmVkVDU0la RSgpCisKKworI2RlZmluZSBNTVZFQ19MRChUQUcsREVTQ1IsQVRUUklCLE5UKSBNTVZFQ19FQUNI X0VBKFRBRyxERVNDUixBVFRSSUIsTlQsIlZkMzI9dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRWKSkK KyNkZWZpbmUgTU1WRUNfTERDKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEoVEFH IyNfY3VyLERFU0NSLEFUVFJJQixOVCwiVmQzMi5jdXI9dm1lbSIsIiIsZkxPQURNTVYoRUEsVmRW KSkKKyNkZWZpbmUgTU1WRUNfTERUKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hfRUEo VEFHIyNfdG1wLERFU0NSLEFUVFJJQixOVCwiVmQzMi50bXA9dm1lbSIsIiIsZkxPQURNTVYoRUEs VmRWKSkKKyNkZWZpbmUgTU1WRUNfTERVKFRBRyxERVNDUixBVFRSSUIsTlQpIE1NVkVDX0VBQ0hf RUEoVEFHLERFU0NSLEFUVFJJQixOVCwiVmQzMj12bWVtdSIsIiIsZkxPQURNTVZVKEVBLFZkVikp CisKKworI2RlZmluZSBNTVZFQ19TVFEoVEFHLERFU0NSLEFUVFJJQixOVCkgXAorTU1WRUNfRUFD SF9FQShUQUcjI19xcHJlZCxERVNDUixBVFRSSUIsTlQsImlmIChRdjQpIHZtZW0iLCI9VnMzMiIs ZlNUT1JFTU1WUShFQSxWc1YsUXZWKSkgXAorTU1WRUNfRUFDSF9FQShUQUcjI19ucXByZWQsREVT Q1IsQVRUUklCLE5ULCJpZiAoIVF2NCkgdm1lbSIsIj1WczMyIixmU1RPUkVNTVZOUShFQSxWc1Ys UXZWKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyogTUFQUElORyBGT1IgVk1FTXMKKyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZp bmUgQVRUUl9WTUVNIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNCisjZGVmaW5lIEFUVFJfVk1F TVUgQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVk0sQV9DVklfVlAKKworCitNTVZFQ19MRCh2TDMy YiwgICJBbGlnbmVkIFZlY3RvciBMb2FkIiwgICAgICAgIEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9B RCxBX0NWSV9WQSksKQorTU1WRUNfTERDKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgQ3Vy IiwJQVRUUklCUyhBVFRSX1ZNRU0sQV9MT0FELEFfQ1ZJX05FVyxBX0NWSV9WQSksKQorTU1WRUNf TERUKHZMMzJiLCAgIkFsaWduZWQgVmVjdG9yIExvYWQgVG1wIiwJQVRUUklCUyhBVFRSX1ZNRU0s QV9MT0FELEFfQ1ZJX1RNUCksKQorCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmIsIkNvbmRpdGlv bmFsIEFsaWduZWQgVmVjdG9yIExvYWQiLEFUVFJJQlMoQVRUUl9WTUVNLEFfTE9BRCxBX0NWSV9W QSksLCJWZDMyPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9F QSh2TDMyYl9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRSSUJT KEFUVFJfVk1FTSxBX0xPQUQsQV9DVklfVkEsQV9DVklfTkVXKSwsIlZkMzIuY3VyPXZtZW0iLCxQ dixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl90bXAsIkNvbmRp dGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgVG1wIixBVFRSSUJTKEFUVFJfVk1FTSxBX0xPQUQs QV9DVklfVE1QKSwsIlZkMzIudG1wPXZtZW0iLCxQdixmTE9BRE1NVihFQSxWZFYpOykKKworTU1W RUNfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVN LEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixm U1RPUkVNTVYoRUEsVnNWKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2UzMyYiwiQWxpZ25lZCBWZWN0 b3IgU3RvcmUiLEFUVFJJQlMoQVRUUl9WTUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFks QV9DVklfVkEpLCwidm1lbSIsIj1WczMyIixQdixmU1RPUkVNTVYoRUEsVnNWKSkKKworCitNTVZF Q19TVFEodlMzMmIsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUiLCAgICAgIEFUVFJJQlMoQVRUUl9W TUVNLEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCkKKworTU1WRUNfTERV KHZMMzJVYiwgIlVuYWxpZ25lZCBWZWN0b3IgTG9hZCIsICAgICBBVFRSSUJTKEFUVFJfVk1FTVUs QV9MT0FELEFfUkVTVFJJQ1RfTk9TTE9UMSksKQorCitNTVZFQ19FQUNIX0VBKHZTMzJVYiwiVW5h bGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRSX1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklD VF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLGZTVE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNf Q09ORF9FQUNIX0VBKHZTMzJVYiwiVW5hbGlnbmVkIFZlY3RvciBTdG9yZSIsQVRUUklCUyhBVFRS X1ZNRU1VLEFfU1RPUkUsQV9SRVNUUklDVF9OT1NMT1QxKSwsInZtZW11IiwiPVZzMzIiLFB2LGZT VE9SRU1NVlUoRUEsVnNWKSkKKworTU1WRUNfRUFDSF9FQSh2UzMyYl9uZXcsIkFsaWduZWQgVmVj dG9yIFN0b3JlIE5ldyIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9ORVcsQV9ET1RO RVdWQUxVRSxBX1JFU1RSSUNUX1NMT1QwT05MWSksLCJ2bWVtIiwiPU9zOC5uZXciLGZTVE9SRU1N VihFQSxmTkVXVlJFRyhPc04pKSkKKworLy8gVjY1IHN0b3JlIHJlbGFzZSwgemVybyBieXRlIHN0 b3JlCitNTVZFQ19FQUNIX0VBKHZTMzJiX3NybHMsIkFsaWduZWQgVmVjdG9yIFNjYXR0ZXIgUmVs ZWFzZSIsQVRUUklCUyhBVFRSX1ZNRU0sQV9TVE9SRSxBX0NWSV9TQ0FUVEVSX1JFTEVBU0UsQV9D VklfTkVXLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwsInZtZW0iLCI6c2NhdHRlcl9yZWxlYXNlIixm U1RPUkVSRUxFQVNFKEVBLDApKQorCisKKworTU1WRUNfQ09ORF9FQUNIX0VBKHZTMzJiX25ldywi QWxpZ25lZCBWZWN0b3IgU3RvcmUgTmV3IixBVFRSSUJTKEFUVFJfVk1FTSxBX1NUT1JFLEFfQ1ZJ X05FVyxBX0RPVE5FV1ZBTFVFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZKSwsInZtZW0iLCI9T3M4Lm5l dyIsUHYsZlNUT1JFTU1WKEVBLGZORVdWUkVHKE9zTikpKQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgTUVNT1JZIE9QRVJBVElPTlMgLSBOT04g VEVNUE9SQUwKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZp bmUgQVRUUl9WTUVNX05UIEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZNCisKK01NVkVDX0VBQ0hf RUEodlMzMmJfbnQsIkFsaWduZWQgVmVjdG9yIFN0b3JlIC0gTm9uIHRlbXBvcmFsIixBVFRSSUJT KEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfUkVTVFJJQ1RfU0xPVDBPTkxZLEFfQ1ZJX1ZBKSwiOm50 Iiwidm1lbSIsIj1WczMyIixmU1RPUkVNTVYoRUEsVnNWKSkKK01NVkVDX0NPTkRfRUFDSF9FQSh2 UzMyYl9udCwiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBOb24gdGVtcG9yYWwiLEFUVFJJQlMoQVRU Ul9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEpLCI6bnQiLCJ2 bWVtIiwiPVZzMzIiLFB2LGZTVE9SRU1NVihFQSxWc1YpKQorCitNTVZFQ19FQUNIX0VBKHZTMzJi X250X25ldywiQWxpZ25lZCBWZWN0b3IgU3RvcmUgTmV3IC0gTm9uIHRlbXBvcmFsIixBVFRSSUJT KEFUVFJfVk1FTV9OVCxBX1NUT1JFLEFfQ1ZJX05FVyxBX0RPVE5FV1ZBTFVFLEFfUkVTVFJJQ1Rf U0xPVDBPTkxZKSwiOm50Iiwidm1lbSIsIj1PczgubmV3IixmU1RPUkVNTVYoRUEsZk5FV1ZSRUco T3NOKSkpCitNTVZFQ19DT05EX0VBQ0hfRUEodlMzMmJfbnRfbmV3LCJBbGlnbmVkIFZlY3RvciBT dG9yZSBOZXcgLSBOb24gdGVtcG9yYWwiLEFUVFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9D VklfTkVXLEFfRE9UTkVXVkFMVUUsQV9SRVNUUklDVF9TTE9UME9OTFkpLCI6bnQiLCJ2bWVtIiwi PU9zOC5uZXciLFB2LGZTVE9SRU1NVihFQSxmTkVXVlJFRyhPc04pKSkKKworCitNTVZFQ19TVFEo dlMzMmJfbnQsICAiQWxpZ25lZCBWZWN0b3IgU3RvcmUgLSBOb24gdGVtcG9yYWwiLCAgICAgIEFU VFJJQlMoQVRUUl9WTUVNX05ULEFfU1RPUkUsQV9SRVNUUklDVF9TTE9UME9OTFksQV9DVklfVkEp LCI6bnQiKQorCitNTVZFQ19MRCh2TDMyYl9udCwgICJBbGlnbmVkIFZlY3RvciBMb2FkIC0gTm9u IHRlbXBvcmFsIiwgICAgICAgQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1ZBKSwi Om50IikKK01NVkVDX0xEQyh2TDMyYl9udCwgICJBbGlnbmVkIFZlY3RvciBMb2FkIEN1ciAtIE5v biB0ZW1wb3JhbCIsCUFUVFJJQlMoQVRUUl9WTUVNX05ULEFfTE9BRCxBX0NWSV9ORVcsQV9DVklf VkEpLCI6bnQiKQorTU1WRUNfTERUKHZMMzJiX250LCAgIkFsaWduZWQgVmVjdG9yIExvYWQgVG1w IC0gTm9uIHRlbXBvcmFsIiwJQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9MT0FELEFfQ1ZJX1RNUCks IjpudCIpCisKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9udCwiQ29uZGl0aW9uYWwgQWxpZ25l ZCBWZWN0b3IgTG9hZCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9DVklfVkEpLCwiVmQzMj12bWVt IiwiOm50IixQdixmTE9BRE1NVihFQSxWZFYpOykKK01NVkVDX0NPTkRfRUFDSF9FQSh2TDMyYl9u dF9jdXIsIkNvbmRpdGlvbmFsIEFsaWduZWQgVmVjdG9yIExvYWQgQ3VyIixBVFRSSUJTKEFUVFJf Vk1FTV9OVCxBX0NWSV9WQSxBX0NWSV9ORVcpLCwiVmQzMi5jdXI9dm1lbSIsIjpudCIsUHYsZkxP QURNTVYoRUEsVmRWKTspCitNTVZFQ19DT05EX0VBQ0hfRUEodkwzMmJfbnRfdG1wLCJDb25kaXRp b25hbCBBbGlnbmVkIFZlY3RvciBMb2FkIFRtcCIsQVRUUklCUyhBVFRSX1ZNRU1fTlQsQV9DVklf VE1QKSwsIlZkMzIudG1wPXZtZW0iLCI6bnQiLFB2LGZMT0FETU1WKEVBLFZkVik7KQorCisKKyN1 bmRlZiBWRUNfU0NBTEUKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisgKiBWZWN0b3IgQWxpZ25tZW50CisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFZBTElHTkIoU0hJRlQp ICBcCisgICAgZkhJREUoaW50IGk7KSBcCisgICAgZm9yKGkgPSAwOyBpIDwgZlZCWVRFUygpOyBp KyspIHtcCisgICAgICAgIFZkVi51YltpXSA9IChpK1NISUZUPj1mVkJZVEVTKCkpID8gVnVWLnVi W2krU0hJRlQtZlZCWVRFUygpXSA6IFZ2Vi51YltpK1NISUZUXTtcCisJfQorCitFWFRJTlNOKFY2 X3ZhbGlnbmIsICAiVmQzMj12YWxpZ24oVnUzMixWdjMyLFJ0OCkiLCAgQVRUUklCUyhBX0VYVEVO U0lPTixBX0NWSSxBX0NWSV9WUCksIkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0OCBhcyBjb250cm9s IiwKK3sKKwl1bnNpZ25lZCBzaGlmdCA9IFJ0ViAmIChmVkJZVEVTKCktMSk7CisJVkFMSUdOQihz aGlmdCkKK30pCitFWFRJTlNOKFY2X3ZsYWxpZ25iLCAiVmQzMj12bGFsaWduKFZ1MzIsVnYzMixS dDgpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUCksIkFsaWduIFR3byB2ZWN0 b3JzIGJ5IFJ0OCBhcyBjb250cm9sIiwKK3sKKwl1bnNpZ25lZCBzaGlmdCA9IGZWQllURVMoKSAt IChSdFYgJiAoZlZCWVRFUygpLTEpKTsKKwlWQUxJR05CKHNoaWZ0KQorfSkKK0VYVElOU04oVjZf dmFsaWduYmksICJWZDMyPXZhbGlnbihWdTMyLFZ2MzIsI3UzKSIsIAlBVFRSSUJTKEFfRVhURU5T SU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwiQWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wi LAoreworCVZBTElHTkIodWlWKQorfSkKK0VYVElOU04oVjZfdmxhbGlnbmJpLCJWZDMyPXZsYWxp Z24oVnUzMixWdjMyLCN1MykiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZQKSwi QWxpZ24gVHdvIHZlY3RvcnMgYnkgI3UzIGFzIGNvbnRyb2wiLAoreworCXVuc2lnbmVkIHNoaWZ0 ID0gZlZCWVRFUygpIC0gdWlWOworCVZBTElHTkIoc2hpZnQpCit9KQorCitFWFRJTlNOKFY2X3Zy b3IsICJWZDMyPXZyb3IoVnUzMixSdDMyKSIsIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9D VklfVlApLAorIkFsaWduIFR3byB2ZWN0b3JzIGJ5IFJ0MzIgYXMgY29udHJvbCIsCit7CisJZkhJ REUoaW50IGs7KQorCWZvciAoaz0wO2s8ZlZCWVRFUygpO2srKykgeworCQlWZFYudWJba10gPSBW dVYudWJbKGsrUnRWKSYoZlZCWVRFUygpLTEpXTsKKwl9CisJfSkKKworCisKKworCisKKworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisqIFVucGFjayBlbGVtZW50cyB3aXRoIHplcm8vc2lnbiBleHRlbmQgYW5kIGNyb3NzIGxh bmUgcGVybXV0ZQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxF X1ZFQyg4LHZ1bnBhY2t1YiwgICJWZGQzMj12dW5wYWNrdWIoVnUzMikiLCAiVmRkMzIudWg9dnVu cGFjayhWdTMyLnViKSIsICJVbnBhY2sgYnl0ZSB3aXRoIHplcm8tZXh0ZW5kIiwgICAgIGZWQVJS QVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdWgsIGkpICA9IGZaRThfMTYoIFZ1Vi51YltpXSkpCitJ VEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZ1bnBhY2tiLCAgICJWZGQz Mj12dW5wYWNrYihWdTMyKSIsICAiVmRkMzIuaD12dW5wYWNrKFZ1MzIuYikiLCAgICJVbnBhY2sg Ynl0ZXMgd2l0aCBzaWduLWV4dGVuZCIsICAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwg aCwgIGkpICA9IGZTRThfMTYoIFZ1Vi5iW2ldICkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NM T1RfRE9VQkxFX1ZFQygxNix2dW5wYWNrdWgsICJWZGQzMj12dW5wYWNrdWgoVnUzMikiLCAiVmRk MzIudXc9dnVucGFjayhWdTMyLnVoKSIsICJVbnBhY2sgaGFsdmVzIHdpdGggemVyby1leHRlbmQi LCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NFU1MoVmRkViwgdXcsIGkpICA9IGZaRTE2XzMyKFZ1Vi51 aFtpXSkpCitJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2dW5wYWNr aCwgICJWZGQzMj12dW5wYWNraChWdTMyKSIsICAiVmRkMzIudz12dW5wYWNrKFZ1MzIuaCkiLCAg ICJVbnBhY2sgaGFsdmVzIHdpdGggc2lnbi1leHRlbmQiLCAgIGZWQVJSQVlfRUxFTUVOVF9BQ0NF U1MoVmRkViwgdywgIGkpICA9IGZTRTE2XzMyKFZ1Vi5oW2ldICkpCisKK0lURVJBVE9SX0lOU04y X1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDgsIHZ1bnBhY2tvYiwgIlZ4eDMyfD12dW5wYWNrb2Io VnUzMikiLCAiVnh4MzIuaHw9dnVucGFja28oVnUzMi5iKSIsICJVbnBhY2sgYnl0ZSB0byBvZGQg Ynl0ZXMgIiwgICAgICAgZlZBUlJBWV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1aCwgaSkgfD0gZlpF OF8xNiggVnVWLnViW2ldKTw8OCkKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVF9ET1VCTEVf VkVDKDE2LHZ1bnBhY2tvaCwgIlZ4eDMyfD12dW5wYWNrb2goVnUzMikiLCAiVnh4MzIud3w9dnVu cGFja28oVnUzMi5oKSIsICJVbnBhY2sgaGFsdmVzIHRvIG9kZCBoYWx2ZXMiLCAgICAgZlZBUlJB WV9FTEVNRU5UX0FDQ0VTUyhWeHhWLCB1dywgaSkgfD0gZlpFMTZfMzIoVnVWLnVoW2ldKTw8MTYp CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqCisqIFBhY2sgZWxlbWVudHMgYW5kIGNyb3NzIGxhbmUgcGVybXV0ZQorKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2ViLCAgIlZkMzI9 dnBhY2tlYihWdTMyLFZ2MzIpIiwgIlZkMzIuYj12cGFja2UoVnUzMi5oLFZ2MzIuaCkiLAorICJQ YWNrICBieXRlcyIsCisgICAgVmRWLnViW2ldICAgICAgICAgICAgICAgPSBmR0VUVUJZVEUoMCwg VnZWLnVoW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSAgICA9IGZHRVRVQllURSgwLCBW dVYudWhbaV0pKQorCisgSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMyLCB2cGFja2VoLCAg IlZkMzI9dnBhY2tlaChWdTMyLFZ2MzIpIiwgIlZkMzIuaD12cGFja2UoVnUzMi53LFZ2MzIudyki LAorICJQYWNrICBoYWxmd29yZHMiLAorICAgIFZkVi51aFtpXSAgICAgICAgICAgICAgID0gZkdF VFVIQUxGKDAsIFZ2Vi51d1tpXSk7CisgICAgVmRWLnVoW2krZlZFTEVNKDMyKV0gICAgPSBmR0VU VUhBTEYoMCwgVnVWLnV3W2ldKSkKKworICBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMTYs IHZwYWNrb2IsICAiVmQzMj12cGFja29iKFZ1MzIsVnYzMikiLCAiVmQzMi5iPXZwYWNrbyhWdTMy LmgsVnYzMi5oKSIsCisgIlBhY2sgIGJ5dGVzIiwKKyAgICBWZFYudWJbaV0gICAgICAgICAgICAg ICA9IGZHRVRVQllURSgxLCBWdlYudWhbaV0pOworICAgIFZkVi51YltpK2ZWRUxFTSgxNildICAg ID0gZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSkpCisKKyBJVEVSQVRPUl9JTlNOMl9QRVJNVVRFX1NM T1QoMzIsIHZwYWNrb2gsICAiVmQzMj12cGFja29oKFZ1MzIsVnYzMikiLCAiVmQzMi5oPXZwYWNr byhWdTMyLncsVnYzMi53KSIsCisgIlBhY2sgIGhhbGZ3b3JkcyIsCisgICAgVmRWLnVoW2ldICAg ICAgICAgICAgICAgPSBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKTsKKyAgICBWZFYudWhbaStmVkVM RU0oMzIpXSAgICA9IGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKQorCisKKworSVRFUkFUT1JfSU5T TjJfUEVSTVVURV9TTE9UKDE2LCB2cGFja2h1Yl9zYXQsICAiVmQzMj12cGFja2h1YihWdTMyLFZ2 MzIpOnNhdCIsICJWZDMyLnViPXZwYWNrKFZ1MzIuaCxWdjMyLmgpOnNhdCIsCisgIlBhY2sgdWJ5 dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLnViW2ldICAgICAgICAgICAgICAgPSBmVlNB VFVCKFZ2Vi5oW2ldKTsKKyAgICBWZFYudWJbaStmVkVMRU0oMTYpXSAgICA9IGZWU0FUVUIoVnVW LmhbaV0pKQorCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdnBhY2toYl9zYXQs ICAiVmQzMj12cGFja2hiKFZ1MzIsVnYzMik6c2F0IiwgIlZkMzIuYj12cGFjayhWdTMyLmgsVnYz Mi5oKTpzYXQiLAorICJQYWNrIGJ5dGVzIHdpdGggc2F0dXJhdGlvbiIsCisgICAgVmRWLmJbaV0g ICAgICAgICAgICAgICA9IGZWU0FUQihWdlYuaFtpXSk7CisgICAgVmRWLmJbaStmVkVMRU0oMTYp XSAgICA9IGZWU0FUQihWdVYuaFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9U KDMyLCB2cGFja3d1aF9zYXQsICAiVmQzMj12cGFja3d1aChWdTMyLFZ2MzIpOnNhdCIsICJWZDMy LnVoPXZwYWNrKFZ1MzIudyxWdjMyLncpOnNhdCIsCisgIlBhY2sgdWJ5dGVzIHdpdGggc2F0dXJh dGlvbiIsCisgICAgVmRWLnVoW2ldICAgICAgICAgICAgICAgPSBmVlNBVFVIKFZ2Vi53W2ldKTsK KyAgICBWZFYudWhbaStmVkVMRU0oMzIpXSAgICA9IGZWU0FUVUgoVnVWLndbaV0pKQorCitJVEVS QVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZwYWNrd2hfc2F0LCAgIlZkMzI9dnBhY2t3aChW dTMyLFZ2MzIpOnNhdCIsICJWZDMyLmg9dnBhY2soVnUzMi53LFZ2MzIudyk6c2F0IiwKKyAiUGFj ayBieXRlcyB3aXRoIHNhdHVyYXRpb24iLAorICAgIFZkVi5oW2ldICAgICAgICAgICAgICAgPSBm VlNBVEgoVnZWLndbaV0pOworICAgIFZkVi5oW2krZlZFTEVNKDMyKV0gICAgPSBmVlNBVEgoVnVW LndbaV0pKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorKiBaZXJvL1NpZ24gRXh0ZW5kIHdpdGggaW4tbGFu ZSBwZXJtdXRlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMo MTYsdnpiLCJWZGQzMj12enh0YihWdTMyKSIsIlZkZDMyLnVoPXZ6eHQoVnUzMi51YikiLAorIlZl Y3RvciBaZXJvIEV4dGVuZCBCeXRlcyIsCisgICAgVmRkVi52WzBdLnVoW2ldID0gZlpFOF8xNihm R0VUVUJZVEUoMCwgVnVWLnVoW2ldKSk7CisgICAgVmRkVi52WzFdLnVoW2ldID0gZlpFOF8xNihm R0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UX0RPVUJM RV9WRUMoMTYsdnNiLCJWZGQzMj12c3h0YihWdTMyKSIsIlZkZDMyLmg9dnN4dChWdTMyLmIpIiwK KyJWZWN0b3IgU2lnbiBFeHRlbmQgQnl0ZXMiLAorICAgIFZkZFYudlswXS5oW2ldID0gZlNFOF8x NihmR0VUQllURSgwLCBWdVYuaFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldID0gZlNFOF8xNihm R0VUQllURSgxLCBWdVYuaFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVf VkVDKDMyLHZ6aCwiVmRkMzI9dnp4dGgoVnUzMikiLCJWZGQzMi51dz12enh0KFZ1MzIudWgpIiwK KyJWZWN0b3IgWmVybyBFeHRlbmQgaGFsZndvcmRzIiwKKyAgICBWZGRWLnZbMF0udXdbaV0gPSBm WkUxNl8zMihmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSk7CisgICAgVmRkVi52WzFdLnV3W2ldID0g ZlpFMTZfMzIoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllf U0xPVF9ET1VCTEVfVkVDKDMyLHZzaCwiVmRkMzI9dnN4dGgoVnUzMikiLCJWZGQzMi53PXZzeHQo VnUzMi5oKSIsCisiVmVjdG9yIFNpZ24gRXh0ZW5kIGhhbGZ3b3JkcyIsCisgICAgVmRkVi52WzBd LndbaV0gPSBmU0UxNl8zMihmR0VUSEFMRigwLCBWdVYud1tpXSkpOworICAgIFZkZFYudlsxXS53 W2ldID0gZlNFMTZfMzIoZkdFVEhBTEYoMSwgVnVWLndbaV0pKSkKKworCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKgorKgorKgorKiAgICAgICAgICAgICAgIE1NVkVDVE9SIFJFRFVDVElPTgorKgorKgorKgor KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCisqICAyLVdBWSBSRURVQ1RJT04gLSBVTlNJR05FRCBCWVRFIEJZIEJZVEUKKyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UKDE2LHZkbXB5YnVzLCJWZDMyPXZkbXB5YnVzKFZ1MzIsUnQzMikiLCJWZDMy Lmg9dmRtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgRHVhbCBNdWx0aXBseS1BY2N1bXVs YXRlcyB1bnNpZ25lZCBieXRlcyBieSBieXRlcyIsCisgICAgVmRWLmhbaV0gICA9IGZNUFk4VVMo IGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAg IFZkVi5oW2ldICArPSBmTVBZOFVTKCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUo KDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMTYsdmRtcHlidXNf YWNjLCJWeDMyKz12ZG1weWJ1cyhWdTMyLFJ0MzIpIiwiVngzMi5oKz12ZG1weShWdTMyLnViLFJ0 MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVuc2lnbmVkIGJ5dGVz IGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUiLAorICAgIFZ4Vi5oW2ldICs9IGZNUFk4VVMoIGZH RVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZ4 Vi5oW2ldICs9IGZNUFk4VVMoIGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUQllURSgoMipp KzEpJTQsIFJ0VikpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygx Nix2ZG1weWJ1c19kdiwiVmRkMzI9dmRtcHlidXMoVnV1MzIsUnQzMikiLCJWZGQzMi5oPXZkbXB5 KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3VtdWxhdGVzIHVu c2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUgU2xpZGluZyBXaW5kb3cgUmVk dWN0aW9uIiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVW LnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUgNCwgUnRWKSk7CisgICAgVmRkVi52WzBdLmhb aV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMipp KzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52WzFdLmhbaV0gID0gZk1QWThVUyhmR0VUVUJZVEUo MSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOworICAgIFZkZFYu dlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtpXSksZkdFVEJZ VEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygxNix2ZG1weWJ1c19kdl9hY2MsIlZ4eDMyKz12ZG1weWJ1cyhWdXUzMixSdDMyKSIsIlZ4eDMy LmgrPXZkbXB5KFZ1dTMyLnViLFJ0MzIuYikiLAorIlZlY3RvciBEdWFsIE11bHRpcGx5LUFjY3Vt dWxhdGVzIHVuc2lnbmVkIGJ5dGVzIGJ5ICBieXRlcywgYW5kIGFjY3VtdWxhdGUgU2xpZGluZyBX aW5kb3cgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllU RSgwLCBWdXVWLnZbMF0udWhbaV0pLGZHRVRCWVRFKCgyKmkpICUgNCwgUnRWKSk7CisgICAgVnh4 Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VU QllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhm R0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSxmR0VUQllURSgoMippKSAlIDQsIFJ0VikpOwor ICAgIFZ4eFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlsxXS51aFtp XSksZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVEVUNUSU9OIC0gSEFMRiBCWSBC WVRFCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJB VE9SX0lOU04yX01QWV9TTE9UKDMyLHZkbXB5aGIsIlZkMzI9dmRtcHloYihWdTMyLFJ0MzIpIiwi VmQzMi53PXZkbXB5KFZ1MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQgSGFs ZiB4IEJ5dGUgUmVkdWN0aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAgVmRW LndbaV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMCkl NCwgUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0p LGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMy LHZkbXB5aGJfYWNjLCJWeDMyKz12ZG1weWhiKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZkbXB5KFZ1 MzIuaCxSdDMyLmIpIiwKKyJEdWFsLVZlY3RvciAyLUVsZW1lbnQgSGFsZiB4IEJ5dGUgUmVkdWN0 aW9uIHdpdGggU2xpZGluZyBXaW5kb3cgT3ZlcmxhcCIsCisgICAgVnhWLndbaV0gKz0gZk1QWTE2 U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAg VnhWLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZHRVRCWVRFKCgyKmkr MSklNCwgUnRWKSkpCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZkbXB5aGJfZHYsIlZkZDMyPXZkbXB5aGIoVnV1MzIsUnQzMikiLCJWZGQzMi53PXZkbXB5KFZ1 dTMyLmgsUnQzMi5iKSIsCisiRHVhbC1WZWN0b3IgMi1FbGVtZW50IEhhbGYgeCBCeXRlIFJlZHVj dGlvbiB3aXRoIFNsaWRpbmcgV2luZG93IE92ZXJsYXAiLAorICAgIFZkZFYudlswXS53W2ldICA9 IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQs IFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYu dlswXS53W2ldKSxmR0VUQllURSgoMippKzEpJTQsIFJ0VikpOworCisgICAgVmRkVi52WzFdLndb aV0gID0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0pLGZHRVRCWVRFKCgyKmkr MCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwg VnV1Vi52WzFdLndbaV0pLGZHRVRCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhiX2R2X2FjYywiVnh4MzIrPXZkbXB5 aGIoVnV1MzIsUnQzMikiLCJWeHgzMi53Kz12ZG1weShWdXUzMi5oLFJ0MzIuYikiLAorIkR1YWwt VmVjdG9yIDItRWxlbWVudCBIYWxmIHggQnl0ZSBSZWR1Y3Rpb24gd2l0aCBTbGlkaW5nIFdpbmRv dyBPdmVybGFwIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBW dXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0u d1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdXVWLnZbMF0ud1tpXSksZkdFVEJZVEUoKDIq aSsxKSU0LCBSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxG KDEsIFZ1dVYudlswXS53W2ldKSxmR0VUQllURSgoMippKzApJTQsIFJ0VikpOworICAgIFZ4eFYu dlsxXS53W2ldICs9IGZNUFkxNlNTKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSxmR0VUQllU RSgoMippKzEpJTQsIFJ0VikpKQorCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorKiAgMi1XQVkgUkVEVUNUSU9OIC0gSEFMRiBCWSBIQUxGCisq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1Jf SU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWh2c2F0LCJWZDMyPXZkbXB5aChWdTMy LFZ2MzIpOnNhdCIsIlZkMzIudz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciBo YWxmd29yZCBtdWx0aXBseSwgYWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAgIGZI SURFKHNpemU4c190IGFjY3VtOykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAs VnVWLndbaV0pLGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZT UyhmR0VUSEFMRigxLFZ1Vi53W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkpOworICAgIFZkVi53 W2ldID0gZlZTQVRXKGFjY3VtKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2ZG1weWh2c2F0X2FjYywiVngzMis9dmRtcHloKFZ1MzIsVnYzMik6c2F0IiwiVngzMi53 Kz12ZG1weShWdTMyLmgsVnYzMi5oKTpzYXQiLAorIlZlY3RvciBoYWxmd29yZCBtdWx0aXBseSwg YWNjdW11bGF0ZSBwYWlycywgc2F0IHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190IGFjY3Vt OykKKyAgICBhY2N1bSAgICA9IGZNUFkxNlNTKGZHRVRIQUxGKDAsVnVWLndbaV0pLGZHRVRIQUxG KDAsIFZ2Vi53W2ldKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1Vi53 W2ldKSxmR0VUSEFMRigxLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKFZ4Vi53 W2ldK2FjY3VtKSkKKworCisvKiBWRE1QWUggKi8KKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2ZG1weWhzYXQsIlZkMzI9dmRtcHloKFZ1MzIsUnQzMik6c2F0IiwiVmQz Mi53PXZkbXB5KFZ1MzIuaCxSdDMyLmgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5 LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXplOHNf dCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSks ZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBW dVYud1tpXSksZkdFVEhBTEYoMSwgUnRWKSk7CisgICAgVmRWLndbaV0gPSBmVlNBVFcoYWNjdW0p KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHNhdF9hY2Ms IlZ4MzIrPXZkbXB5aChWdTMyLFJ0MzIpOnNhdCIsIlZ4MzIudys9dmRtcHkoVnUzMi5oLFJ0MzIu aCk6c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQgbXVsdGlwbHksIGFjY3VtdWxhdGUgcGFpcnMsIHNh dHVyYXRlIHRvIHdvcmQiLAorICAgIGZISURFKHNpemU4c190KSBhY2N1bSA9IFZ4Vi53W2ldOwor ICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwgVnVWLndbaV0pLGZHRVRIQUxGKDAs IFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnVWLndbaV0pLGZH RVRIQUxGKDEsIFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkKKworCisKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2ZG1weWhpc2F0LCJWZDMyPXZk bXB5aChWdXUzMixSdDMyKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1MzIuaCxSdDMyLmgpOnNhdCIs CisiRHVhbCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBS ZWR1Y3Rpb24gdG8gSGFsZndvcmQgd2l0aCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNf dCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTUyhmR0VUSEFMRigxLFZ1dVYudlswXS53 W2ldKSxmR0VUSEFMRigwLFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1MoZkdFVEhBTEYo MCxWdXVWLnZbMV0ud1tpXSksZkdFVEhBTEYoMSxSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FU VyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHlo aXNhdF9hY2MsIlZ4MzIrPXZkbXB5aChWdXUzMixSdDMyKTpzYXQiLCJWeDMyLncrPXZkbXB5KFZ1 dTMyLmgsUnQzMi5oKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBTaWdu ZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3JkIHdpdGggYWNjdW11bGF0aW9u IGFuZCBzYXR1cmF0aW9uIiwKKyAgICBmSElERShzaXplOHNfdCkgYWNjdW0gPSBWeFYud1tpXTsK KyAgICBhY2N1bSAgICs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLGZHRVRI QUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICArPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlsx XS53W2ldKSxmR0VUSEFMRigxLFJ0VikpOworICAgIFZ4Vi53W2ldID0gZlZTQVRXKGFjY3VtKSkK KworCisKKworCisKKworLyogVkRNUFlIU1UgKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RP VUJMRV9WRUMoMzIsdmRtcHloc3VzYXQsIlZkMzI9dmRtcHloc3UoVnUzMixSdDMyKTpzYXQiLCJW ZDMyLnc9dmRtcHkoVnUzMi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRp cGx5LCBhY2N1bXVsYXRlIHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXpl OHNfdCBhY2N1bTspCisgICAgYWNjdW0gICAgPSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYud1tp XSksZkdFVFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYo MSwgVnVWLndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBWZFYud1tpXSA9IGZWU0FUVyhh Y2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRtcHloc3Vz YXRfYWNjLCJWeDMyKz12ZG1weWhzdShWdTMyLFJ0MzIpOnNhdCIsIlZ4MzIudys9dmRtcHkoVnUz Mi5oLFJ0MzIudWgpOnNhdCIsCisiVmVjdG9yIGhhbGZ3b3JkIG11bHRpcGx5LCBhY2N1bXVsYXRl IHBhaXJzLCBzYXR1cmF0ZSB0byB3b3JkIiwKKyAgICBmSElERShzaXplOHNfdCkgYWNjdW09VnhW LndbaV07CisgICAgYWNjdW0gICArPSBmTVBZMTZTVShmR0VUSEFMRigwLCBWdVYud1tpXSksZkdF VFVIQUxGKDAsIFJ0VikpOworICAgIGFjY3VtICAgKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVW LndbaV0pLGZHRVRVSEFMRigxLCBSdFYpKTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1bSkp CisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZkbXB5aHN1aXNh dCwiVmQzMj12ZG1weWhzdShWdXUzMixSdDMyLCMxKTpzYXQiLCJWZDMyLnc9dmRtcHkoVnV1MzIu aCxSdDMyLnVoLCMxKTpzYXQiLAorIkR1YWwgVmVjdG9yIFNpZ25lZCBIYWxmd29yZCBieSBTaWdu ZWQgSGFsZndvcmQgMi1XYXkgUmVkdWN0aW9uIHRvIEhhbGZ3b3JkIHdpdGggc2F0dXJhdGlvbiIs CisgICAgZkhJREUoc2l6ZThzX3QgYWNjdW07KQorICAgIGFjY3VtICAgID0gZk1QWTE2U1UoZkdF VEhBTEYoMSxWdXVWLnZbMF0ud1tpXSksZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgYWNjdW0gICAr PSBmTVBZMTZTVShmR0VUSEFMRigwLFZ1dVYudlsxXS53W2ldKSxmR0VUVUhBTEYoMSxSdFYpKTsK KyAgICBWZFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMzIsdmRtcHloc3Vpc2F0X2FjYywiVngzMis9dmRtcHloc3UoVnV1MzIsUnQz MiwjMSk6c2F0IiwiVngzMi53Kz12ZG1weShWdXUzMi5oLFJ0MzIudWgsIzEpOnNhdCIsCisiRHVh bCBWZWN0b3IgU2lnbmVkIEhhbGZ3b3JkIGJ5IFNpZ25lZCBIYWxmd29yZCAyLVdheSBSZWR1Y3Rp b24gdG8gSGFsZndvcmQgd2l0aCBhY2N1bXVsYXRpb24gYW5kIHNhdHVyYXRpb24iLAorICAgIGZI SURFKHNpemU4c190KSBhY2N1bT1WeFYud1tpXTsKKyAgICBhY2N1bSAgICs9IGZNUFkxNlNVKGZH RVRIQUxGKDEsIFZ1dVYudlswXS53W2ldKSxmR0VUVUhBTEYoMCxSdFYpKTsKKyAgICBhY2N1bSAg ICs9IGZNUFkxNlNVKGZHRVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSxmR0VUVUhBTEYoMSxSdFYp KTsKKyAgICBWeFYud1tpXSA9IGZWU0FUVyhhY2N1bSkpCisKKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDMtV0FZIFJFRFVDVElPTiAtIFVOU0lH TkVEIEJZVEUgQlkgIEJZVEUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisgSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2dG1weWIs ICJWZGQzMj12dG1weWIoVnV1MzIsUnQzMikiLCAiVmRkMzIuaD12dG1weShWdXUzMi5iLFJ0MzIu YikiLAorIkR1YWwgVmVjdG9yIDN4MSBSZWR1Y3Rpb24iLAorICAgIFZkZFYudlswXS5oW2ldICA9 IGZNUFk4U1MoZkdFVEJZVEUoMCxWdXVWLnZbMF0uaFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwg UnRWKSk7CisgICAgVmRkVi52WzBdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYudlsw XS5oW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtpXSAr PSBmR0VUQllURSgwLFZ1dVYudlsxXS5oW2ldKTsKKworICAgIFZkZFYudlsxXS5oW2ldICA9IGZN UFk4U1MoZkdFVEJZVEUoMSxWdXVWLnZbMF0uaFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRW KSk7CisgICAgVmRkVi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlsxXS5o W2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSArPSBm R0VUQllURSgxLFZ1dVYudlsxXS5oW2ldKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9E T1VCTEVfVkVDKDE2LHZ0bXB5Yl9hY2MsICJWeHgzMis9dnRtcHliKFZ1dTMyLFJ0MzIpIiwgIlZ4 eDMyLmgrPXZ0bXB5KFZ1dTMyLmIsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlv biIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgwLFZ1dVYudlswXS5o W2ldKSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBm TVBZOFNTKGZHRVRCWVRFKDEsVnV1Vi52WzBdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0 VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pOwor CisgICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThTUyhmR0VUQllURSgxLFZ1dVYudlswXS5oW2ld KSwgZkdFVEJZVEUoKDIqaSAgKSU0LCBSdFYpKTsKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZ OFNTKGZHRVRCWVRFKDAsVnV1Vi52WzFdLmhbaV0pLCBmR0VUQllURSgoMippKzEpJTQsIFJ0Vikp OworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRCWVRFKDEsVnV1Vi52WzFdLmhbaV0pKQorCisK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2dG1weWJ1cywgIlZkZDMy PXZ0bXB5YnVzKFZ1dTMyLFJ0MzIpIiwgIlZkZDMyLmg9dnRtcHkoVnV1MzIudWIsUnQzMi5iKSIs CisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVmRkVi52WzBdLmhbaV0gID0gZk1Q WThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippICApJTQsIFJ0 VikpOworICAgIFZkZFYudlswXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnV1Vi52WzBd LnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMF0uaFtpXSAr PSBmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pOworCisgICAgVmRkVi52WzFdLmhbaV0gID0g Zk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgoMippICApJTQs IFJ0VikpOworICAgIFZkZFYudlsxXS5oW2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnV1Vi52 WzFdLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtp XSArPSBmR0VUVUJZVEUoMSxWdXVWLnZbMV0udWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDE2LHZ0bXB5YnVzX2FjYywgIlZ4eDMyKz12dG1weWJ1cyhWdXUzMixS dDMyKSIsICJWeHgzMi5oKz12dG1weShWdXUzMi51YixSdDMyLmIpIiwKKyJEdWFsIFZlY3RvciAz eDEgUmVkdWN0aW9uIiwKKyAgICBWeHhWLnZbMF0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllURSgw LFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVnh4Vi52 WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSxWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllU RSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRVQllURSgwLFZ1 dVYudlsxXS51aFtpXSk7CisKKyAgICBWeHhWLnZbMV0uaFtpXSArPSBmTVBZOFVTKGZHRVRVQllU RSgxLFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKCgyKmkgICklNCwgUnRWKSk7CisgICAgVnh4 Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMCxWdXVWLnZbMV0udWhbaV0pLCBmR0VU QllURSgoMippKzEpJTQsIFJ0VikpOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRVQllURSgx LFZ1dVYudlsxXS51aFtpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2dG1weWhiLCAiVmRkMzI9dnRtcHloYihWdXUzMixSdDMyKSIsICJWZGQzMi53PXZ0bXB5 KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAgVmRk Vi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlswXS53W2ldKSwgZlNFOF8x NihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBWZGRWLnZbMF0ud1tpXSs9IGZNUFkx NlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMSkl NCwgUnRWKSkpOworICAgIFZkZFYudlswXS53W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tp XSk7CisKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBd LndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZkZFYudlsx XS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdF VEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVmRkVi52WzFdLndbaV0rPSBmR0VUSEFMRigx LFZ1dVYudlsxXS53W2ldKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygz Mix2dG1weWhiX2FjYywgIlZ4eDMyKz12dG1weWhiKFZ1dTMyLFJ0MzIpIiwgIlZ4eDMyLncrPXZ0 bXB5KFZ1dTMyLmgsUnQzMi5iKSIsCisiRHVhbCBWZWN0b3IgM3gxIFJlZHVjdGlvbiIsCisgICAg Vnh4Vi52WzBdLndbaV0rPSBmTVBZMTZTUyhmR0VUSEFMRigwLFZ1dVYudlswXS53W2ldKSwgZlNF OF8xNihmR0VUQllURSgoMippKzApJTQsIFJ0VikpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSs9IGZN UFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkr MSklNCwgUnRWKSkpOworICAgIFZ4eFYudlswXS53W2ldKz0gZkdFVEhBTEYoMCxWdXVWLnZbMV0u d1tpXSk7CisKKyAgICBWeHhWLnZbMV0ud1tpXSs9IGZNUFkxNlNTKGZHRVRIQUxGKDEsVnV1Vi52 WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSkpOworICAgIFZ4eFYu dlsxXS53W2ldKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCxWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYo ZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSk7CisgICAgVnh4Vi52WzFdLndbaV0rPSBmR0VUSEFM RigxLFZ1dVYudlsxXS53W2ldKSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgVU5T SUdORUQgQllURQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1weXViLCJWZDMyPXZybXB5dWIo VnUzMixSdDMyKSIsIlZkMzIudXc9dnJtcHkoVnUzMi51YixSdDMyLnViKSIsCisiVmVjdG9yIE11 bHRpcGx5LUFjY3VtdWxhdGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAg VmRWLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAs UnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwg ZkdFVFVCWVRFKDEsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIs VnVWLnV3W2ldKSwgZkdFVFVCWVRFKDIsUnRWKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUo ZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsUnRWKSkpCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UKDMyLHZybXB5dWJfYWNjLCJWeDMyKz12cm1weXViKFZ1MzIsUnQzMikiLCJW eDMyLnV3Kz12cm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11 bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIEFjY3VtdWxhdGUiLAorICAgIFZ4 Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51d1tpXSksIGZHRVRVQllURSgwLFJ0 VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZH RVRVQllURSgxLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLFZ1 Vi51d1tpXSksIGZHRVRVQllURSgyLFJ0VikpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZH RVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRVQllURSgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UKDMyLHZybXB5dWJ2LCJWZDMyPXZybXB5dWIoVnUzMixWdjMyKSIsIlZkMzIu dXc9dnJtcHkoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxhdGUg UmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLnV3W2ldICA9IGZNUFk4 VVUoZkdFVFVCWVRFKDAsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDAsVnZWLnV3W2ldKSk7CisgICAg VmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDEs VnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsVnVWLnV3 W2ldKSwgZkdFVFVCWVRFKDIsVnZWLnV3W2ldKSk7CisgICAgVmRWLnV3W2ldICs9IGZNUFk4VVUo ZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVFVCWVRFKDMsVnZWLnV3W2ldKSkpCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdnJtcHl1YnZfYWNjLCJWeDMyKz12cm1w eXViKFZ1MzIsVnYzMikiLCJWeDMyLnV3Kz12cm1weShWdTMyLnViLFZ2MzIudWIpIiwKKyJWZWN0 b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIEFj Y3VtdWxhdGUiLAorICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLFZ1Vi51d1tp XSksIGZHRVRVQllURSgwLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZH RVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRVQllURSgxLFZ2Vi51d1tpXSkpOworICAgIFZ4Vi51 d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRVQllURSgyLFZ2Vi51 d1tpXSkpOworICAgIFZ4Vi51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgzLFZ1Vi51d1tpXSks IGZHRVRVQllURSgzLFZ2Vi51d1tpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2 cm1weWJ2LCJWZDMyPXZybXB5YihWdTMyLFZ2MzIpIiwiVmQzMi53PXZybXB5KFZ1MzIuYixWdjMy LmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5dGUgY29l ZmZpY2llbnRzIiwKKyAgICBWZFYud1tpXSAgPSBmTVBZOFNTKGZHRVRCWVRFKDAsIFZ1Vi53W2ld KSwgZkdFVEJZVEUoMCwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRC WVRFKDEsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMSwgVnZWLndbaV0pKTsKKyAgICBWZFYud1tpXSAr PSBmTVBZOFNTKGZHRVRCWVRFKDIsIFZ1Vi53W2ldKSwgZkdFVEJZVEUoMiwgVnZWLndbaV0pKTsK KyAgICBWZFYud1tpXSArPSBmTVBZOFNTKGZHRVRCWVRFKDMsIFZ1Vi53W2ldKSwgZkdFVEJZVEUo MywgVnZWLndbaV0pKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMy LHZybXB5YnZfYWNjLCJWeDMyKz12cm1weWIoVnUzMixWdjMyKSIsIlZ4MzIudys9dnJtcHkoVnUz Mi5iLFZ2MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQg Ynl0ZSBjb2VmZmljaWVudHMiLAorICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMCwg VnVWLndbaV0pLCBmR0VUQllURSgwLCBWdlYud1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4 U1MoZkdFVEJZVEUoMSwgVnVWLndbaV0pLCBmR0VUQllURSgxLCBWdlYud1tpXSkpOworICAgIFZ4 Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMiwgVnVWLndbaV0pLCBmR0VUQllURSgyLCBWdlYu d1tpXSkpOworICAgIFZ4Vi53W2ldICs9IGZNUFk4U1MoZkdFVEJZVEUoMywgVnVWLndbaV0pLCBm R0VUQllURSgzLCBWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMzIsdnJtcHl1YmksIlZkZDMyPXZybXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVmRkMzIu dXc9dnJtcHkoVnV1MzIudWIsUnQzMi51YiwjdTEpIiwKKyJEdWFsIFZlY3RvciBVbnNpZ25lZCBC eXRlIEJ5IFNpZ25lZCBCeXRlIDQtd2F5IFJlZHVjdGlvbiB0byBXb3JkIiwKKyAgICBWZGRWLnZb MF0udXdbaV0gID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52W3VpViA/IDE6MF0udXdbaV0p LGZHRVRVQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS51d1tpXSArPSBm TVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgx LXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVC WVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4MyxS dFYpKTsKKyAgICBWZGRWLnZbMF0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMywgVnV1Vi52 WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworCisgICAg VmRkVi52WzFdLnV3W2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgICBd LnV3W2ldKSxmR0VUVUJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdb aV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRV QllURSgoMy11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlsxXS51d1tpXSArPSBmTVBZOFVV KGZHRVRVQllURSgyLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikg JiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDMs IFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKSkK KworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZybXB5dWJpX2FjYywi Vnh4MzIrPXZybXB5dWIoVnV1MzIsUnQzMiwjdTEpIiwiVnh4MzIudXcrPXZybXB5KFZ1dTMyLnVi LFJ0MzIudWIsI3UxKSIsCisiRHVhbCBWZWN0b3IgVW5zaWduZWQgQnl0ZSBCeSBTaWduZWQgQnl0 ZSA0LXdheSBSZWR1Y3Rpb24gd2l0aCBhY2N1bXVsYXRlIGFuZCBzYXR1cmF0aW9uIHRvIFdvcmQi LAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbdWlW ID8gMTowXS51d1tpXSksZkdFVFVCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52 WzBdLnV3W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlswICAgICAgICBdLnV3W2ld KSxmR0VUVUJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0g Zk1QWThVVShmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgo Mi11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZOFVVKGZHRVRV QllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMs UnRWKSk7CisKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1 Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAg IFZ4eFYudlsxXS51d1tpXSArPSBmTVBZOFVVKGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgICAg XS51d1tpXSksZkdFVFVCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAgVnh4Vi52WzFdLnV3 W2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VU VUJZVEUoKDAtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWThV VShmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRVQllURSgoMS11aVYp ICYgMHgzLFJ0VikpKQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyogIDQtV0FZIFJFRFVDVElPTiAtIFVOU0lHTkVEIEJZVEUgQlkgIEJZVEUK KyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVCgzMix2cm1weWJ1cywiVmQzMj12cm1weWJ1cyhWdTMyLFJ0MzIpIiwi VmQzMi53PXZybXB5KFZ1MzIudWIsUnQzMi5iKSIsCisiVmVjdG9yIE11bHRpcGx5LUFjY3VtdWxh dGUgUmVkdWNlIHdpdGggNCBieXRlIGNvZWZmaWNpZW50cyIsCisgICAgVmRWLndbaV0gID0gZk1Q WThVUyhmR0VUVUJZVEUoMCxWdVYudXdbaV0pLCBmR0VUQllURSgwLFJ0VikpOworICAgIFZkVi53 W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxSdFYpKTsK KyAgICBWZFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRCWVRF KDIsUnRWKSk7CisgICAgVmRWLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMyxWdVYudXdbaV0p LCBmR0VUQllURSgzLFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDMyLHZybXB5 YnVzX2FjYywiVngzMis9dnJtcHlidXMoVnUzMixSdDMyKSIsIlZ4MzIudys9dnJtcHkoVnUzMi51 YixSdDMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ugd2l0aCA0IGJ5 dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgwLFZ1 Vi51d1tpXSksIGZHRVRCWVRFKDAsUnRWKSk7CisgICAgVnhWLndbaV0gKz0gZk1QWThVUyhmR0VU VUJZVEUoMSxWdVYudXdbaV0pLCBmR0VUQllURSgxLFJ0VikpOworICAgIFZ4Vi53W2ldICs9IGZN UFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMixSdFYpKTsKKyAgICBWeFYu d1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDMsUnRWKSkp CisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2cm1weWJ1c2ksIlZk ZDMyPXZybXB5YnVzKFZ1dTMyLFJ0MzIsI3UxKSIsIlZkZDMyLnc9dnJtcHkoVnV1MzIudWIsUnQz Mi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2lnbmVkIEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13 YXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlswXS53W2ldICA9IGZNUFk4VVMoZkdF VFVCWVRFKDAsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ldKSxmR0VUQllURSgoMC11aVYpICYgMHgz LFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYu dlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11aVYpICYgMHgzLFJ0VikpOworICAgIFZk ZFYudlswXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1dVYudlswICAgICAgICBdLnV3 W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0VikpOworICAgIFZkZFYudlswXS53W2ldICs9 IGZNUFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgo My11aVYpICYgMHgzLFJ0VikpOworCisgICAgVmRkVi52WzFdLndbaV0gID0gZk1QWThVUyhmR0VU VUJZVEUoMCwgVnV1Vi52WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgyLXVpVikgJiAweDMs UnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52 WzEgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgzLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRk Vi52WzFdLndbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMiwgVnV1Vi52W3VpViA/IDE6MF0udXdb aV0pLGZHRVRCWVRFKCgwLXVpVikgJiAweDMsUnRWKSk7CisgICAgVmRkVi52WzFdLndbaV0gKz0g Zk1QWThVUyhmR0VUVUJZVEUoMywgVnV1Vi52WzAgICAgICAgIF0udXdbaV0pLGZHRVRCWVRFKCgx LXVpVikgJiAweDMsUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2cm1weWJ1c2lfYWNjLCJWeHgzMis9dnJtcHlidXMoVnV1MzIsUnQzMiwjdTEpIiwiVnh4 MzIudys9dnJtcHkoVnV1MzIudWIsUnQzMi5iLCN1MSkiLAorIkR1YWwgVmVjdG9yIFVuc2lnbmVk IEJ5dGUgQnkgU2lnbmVkIEJ5dGUgNC13YXkgUmVkdWN0aW9uIHdpdGggYWNjdW11bGF0ZSBhbmQg c2F0dXJhdGlvbiB0byBXb3JkIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRV QllURSgwLCBWdXVWLnZbdWlWID8gMTowXS51d1tpXSksZkdFVEJZVEUoKDAtdWlWKSAmIDB4MyxS dFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZb MCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDEtdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhW LnZbMF0ud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLCBWdXVWLnZbMCAgICAgICAgXS51d1tp XSksZkdFVEJZVEUoKDItdWlWKSAmIDB4MyxSdFYpKTsKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBm TVBZOFVTKGZHRVRVQllURSgzLCBWdXVWLnZbMCAgICAgICAgXS51d1tpXSksZkdFVEJZVEUoKDMt dWlWKSAmIDB4MyxSdFYpKTsKKworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVC WVRFKDAsIFZ1dVYudlsxICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMi11aVYpICYgMHgzLFJ0 VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlsx ICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMy11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYu dlsxXS53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsIFZ1dVYudlt1aVYgPyAxOjBdLnV3W2ld KSxmR0VUQllURSgoMC11aVYpICYgMHgzLFJ0VikpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZN UFk4VVMoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgICBdLnV3W2ldKSxmR0VUQllURSgoMS11 aVYpICYgMHgzLFJ0VikpKQorCisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2cm1w eWJ1c3YsIlZkMzI9dnJtcHlidXMoVnUzMixWdjMyKSIsIlZkMzIudz12cm1weShWdTMyLnViLFZ2 MzIuYikiLAorIlZlY3RvciBNdWx0aXBseS1BY2N1bXVsYXRlIFJlZHVjZSB3aXRoIDQgYnl0ZSBj b2VmZmljaWVudHMiLAorICAgIFZkVi53W2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsVnVWLnV3 W2ldKSwgZkdFVEJZVEUoMCxWdlYud1tpXSkpOworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdF VFVCWVRFKDEsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMSxWdlYud1tpXSkpOworICAgIFZkVi53W2ld ICs9IGZNUFk4VVMoZkdFVFVCWVRFKDIsVnVWLnV3W2ldKSwgZkdFVEJZVEUoMixWdlYud1tpXSkp OworICAgIFZkVi53W2ldICs9IGZNUFk4VVMoZkdFVFVCWVRFKDMsVnVWLnV3W2ldKSwgZkdFVEJZ VEUoMyxWdlYud1tpXSkpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdnJtcHlidXN2X2FjYywiVngzMis9dnJtcHlidXMoVnUzMixWdjMyKSIsIlZ4MzIudys9dnJt cHkoVnUzMi51YixWdjMyLmIpIiwKKyJWZWN0b3IgTXVsdGlwbHktQWNjdW11bGF0ZSBSZWR1Y2Ug d2l0aCA0IGJ5dGUgY29lZmZpY2llbnRzIiwKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRV QllURSgwLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDAsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSAr PSBmTVBZOFVTKGZHRVRVQllURSgxLFZ1Vi51d1tpXSksIGZHRVRCWVRFKDEsVnZWLndbaV0pKTsK KyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgyLFZ1Vi51d1tpXSksIGZHRVRCWVRF KDIsVnZWLndbaV0pKTsKKyAgICBWeFYud1tpXSArPSBmTVBZOFVTKGZHRVRVQllURSgzLFZ1Vi51 d1tpXSksIGZHRVRCWVRFKDMsVnZWLndbaV0pKSkKKworCisKKworCisKKworCisKKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIDItV0FZIFJFRFVD VElPTiAtIFNBRAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmRzYWR1aCwiVmRkMzI9 dmRzYWR1aChWdXUzMixSdDMyKSIsIlZkZDMyLnV3PXZkc2FkKFZ1dTMyLnVoLFJ0MzIudWgpIiwK KyJEdWFsIFZlY3RvciBIYWxmd29yZCBieSBCeXRlIDQtV2F5IFJlZHVjdGlvbiB0byBXb3JkIiwK KyAgICBWZGRWLnZbMF0udXdbaV0gID0gZkFCUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLnV3W2ld KSAtIGZHRVRVSEFMRigwLFJ0VikpOworICAgIFZkZFYudlswXS51d1tpXSArPSBmQUJTKGZHRVRV SEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDEsUnRWKSk7CisgICAgVmRkVi52 WzFdLnV3W2ldICA9IGZBQlMoZkdFVFVIQUxGKDEsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VUVUhB TEYoMCxSdFYpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMCwgVnV1 Vi52WzFdLnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDMyLHZkc2FkdWhfYWNjLCJWeHgzMis9dmRzYWR1aChWdXUzMixSdDMy KSIsIlZ4eDMyLnV3Kz12ZHNhZChWdXUzMi51aCxSdDMyLnVoKSIsCisiRHVhbCBWZWN0b3IgSGFs ZndvcmQgYnkgQnl0ZSA0LVdheSBSZWR1Y3Rpb24gdG8gV29yZCIsCisgICAgVnh4Vi52WzBdLnV3 W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1dVYudlswXS51d1tpXSkgLSBmR0VUVUhBTEYoMCxS dFYpKTsKKyAgICBWeHhWLnZbMF0udXdbaV0gKz0gZkFCUyhmR0VUVUhBTEYoMSwgVnV1Vi52WzBd LnV3W2ldKSAtIGZHRVRVSEFMRigxLFJ0VikpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBmQUJT KGZHRVRVSEFMRigxLCBWdXVWLnZbMF0udXdbaV0pIC0gZkdFVFVIQUxGKDAsUnRWKSk7CisgICAg Vnh4Vi52WzFdLnV3W2ldICs9IGZBQlMoZkdFVFVIQUxGKDAsIFZ1dVYudlsxXS51d1tpXSkgLSBm R0VUVUhBTEYoMSxSdFYpKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisqICA0LVdBWSBSRURVQ1RJT04gLSBTQUQKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygzMix2cnNhZHViaSwiVmRkMzI9dnJzYWR1YihWdXUzMixSdDMyLCN1 MSkiLCJWZGQzMi51dz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVjdG9y IEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZkZFYudlsw XS51d1tpXSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51d1tp XSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0VikpKTsKKyAgICBWZGRWLnZbMF0u dXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdbaV0p KSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7CisgICAgVmRkVi52WzBdLnV3 W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ldKSkg LSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOworICAgIFZkZFYudlswXS51d1tp XSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0g ZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKworICAgIFZkZFYudlsxXS51d1tp XSAgPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkpIC0g ZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAgICBWZGRWLnZbMV0udXdbaV0g Kz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAtIGZa RThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAgVmRkVi52WzFdLnV3W2ldICs9 IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4 XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZkZFYudlsxXS51d1tpXSArPSBm QUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8x NihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygzMix2cnNhZHViaV9hY2MsIlZ4eDMyKz12cnNhZHViKFZ1dTMyLFJ0MzIsI3Ux KSIsIlZ4eDMyLnV3Kz12cnNhZChWdXUzMi51YixSdDMyLnViLCN1MSkiLAorIkR1YWwgVmVjdG9y IEhhbGZ3b3JkIGJ5IEJ5dGUgNC1XYXkgUmVkdWN0aW9uIHRvIFdvcmQiLAorICAgIFZ4eFYudlsw XS51d1tpXSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlt1aVY/MTowXS51d1tp XSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoKDAtdWlWKSYzLFJ0VikpKTsKKyAgICBWeHhWLnZbMF0u dXdbaV0gKz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMCAgICAgIF0udXdbaV0p KSAtIGZaRThfMTYoZkdFVFVCWVRFKCgxLXVpVikmMyxSdFYpKSk7CisgICAgVnh4Vi52WzBdLnV3 W2ldICs9IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52WzAgICAgICBdLnV3W2ldKSkg LSBmWkU4XzE2KGZHRVRVQllURSgoMi11aVYpJjMsUnRWKSkpOworICAgIFZ4eFYudlswXS51d1tp XSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0g ZlpFOF8xNihmR0VUVUJZVEUoKDMtdWlWKSYzLFJ0VikpKTsKKworICAgIFZ4eFYudlsxXS51d1tp XSArPSBmQUJTKGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1dVYudlsxICAgICAgXS51d1tpXSkpIC0g ZlpFOF8xNihmR0VUVUJZVEUoKDItdWlWKSYzLFJ0VikpKTsKKyAgICBWeHhWLnZbMV0udXdbaV0g Kz0gZkFCUyhmWkU4XzE2KGZHRVRVQllURSgxLCBWdXVWLnZbMSAgICAgIF0udXdbaV0pKSAtIGZa RThfMTYoZkdFVFVCWVRFKCgzLXVpVikmMyxSdFYpKSk7CisgICAgVnh4Vi52WzFdLnV3W2ldICs9 IGZBQlMoZlpFOF8xNihmR0VUVUJZVEUoMiwgVnV1Vi52W3VpVj8xOjBdLnV3W2ldKSkgLSBmWkU4 XzE2KGZHRVRVQllURSgoMC11aVYpJjMsUnRWKSkpOworICAgIFZ4eFYudlsxXS51d1tpXSArPSBm QUJTKGZaRThfMTYoZkdFVFVCWVRFKDMsIFZ1dVYudlswICAgICAgXS51d1tpXSkpIC0gZlpFOF8x NihmR0VUVUJZVEUoKDEtdWlWKSYzLFJ0VikpKSkKKworCisKKworCisKKworCisKKworLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICogTU1WRUNUT1IgU0hJRlRJTkcKKyAqICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIE1hY3JvIHRv IHNoaWZ0IGFyaXRobWV0aWNhbGx5IGxlZnQvcmlnaHQgYW5kIGJ5IGVpdGhlciBSVCBvciBWdgor CisjZGVmaW5lIFZfU0hJRlQoVFlQRSwgREVTQywgU0laRSwgTE9HU0laRSwgQ0FTVFRZUEUpICAg XAorSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3IjI1RZUEUsICAgIlZkMzI9dmFz ciIgI1RZUEUgIihWdTMyLFJ0MzIpIiwiVmQzMi4iI1RZUEUiPXZhc3IoVnUzMi4iI1RZUEUiLFJ0 MzIpIiwgICAgICAgICAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgIiBERVNDLCAgICBW ZFYuVFlQRVtpXSAgICAgPSAoVnVWLlRZUEVbaV0gICAgPj4gKFJ0ViAmIChTSVpFLTEpKSkpIFwK K0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoU0laRSx2YXNsIyNUWVBFLCAgICJWZDMyPXZhc2wi ICNUWVBFICIoVnUzMixSdDMyKSIsIlZkMzIuIiNUWVBFIj12YXNsKFZ1MzIuIiNUWVBFIixSdDMy KSIsICAgICAgICAgIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IGxlZnQgICIgREVTQywgICAgVmRW LlRZUEVbaV0gICAgID0gKFZ1Vi5UWVBFW2ldICAgIDw8IChSdFYgJiAoU0laRS0xKSkpKSBcCitJ VEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmxzciMjVFlQRSwgICAiVmQzMj12bHNyIiAj VFlQRSAiKFZ1MzIsUnQzMikiLCJWZDMyLnUiI1RZUEUiPXZsc3IoVnUzMi51IiNUWVBFIixSdDMy KSIsICAgICAgICJWZWN0b3IgbG9naWNhbCBzaGlmdCByaWdodCAiICAgIERFU0MsICAgIFZkVi51 IyNUWVBFW2ldICA9IChWdVYudSMjVFlQRVtpXSA+PiAoUnRWICYgKFNJWkUtMSkpKSkgXAorSVRF UkFUT1JfSU5TTjJfU0hJRlRfU0xPVChTSVpFLHZhc3IjI1RZUEUjI3YsIlZkMzI9dmFzciIgI1RZ UEUgIihWdTMyLFZ2MzIpIiwiVmQzMi4iI1RZUEUiPXZhc3IoVnUzMi4iI1RZUEUiLFZ2MzIuIiNU WVBFIikiLCAiVmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgIiBERVNDLCAgICBWZFYuVFlQ RVtpXSAgICAgPSBmQklESVJfQVNISUZUUihWdVYuVFlQRVtpXSwgZlNYVE4oKExPR1NJWkUrMSks U0laRSxWdlYuVFlQRVtpXSksQ0FTVFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9U KFNJWkUsdmFzbCMjVFlQRSMjdiwiVmQzMj12YXNsIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMy LiIjVFlQRSI9dmFzbChWdTMyLiIjVFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgYXJpdGht ZXRpYyBzaGlmdCBsZWZ0ICAiIERFU0MsICAgIFZkVi5UWVBFW2ldICAgICA9IGZCSURJUl9BU0hJ RlRMKFZ1Vi5UWVBFW2ldLCAgZlNYVE4oKExPR1NJWkUrMSksU0laRSxWdlYuVFlQRVtpXSksQ0FT VFRZUEUpKSBcCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKFNJWkUsdmxzciMjVFlQRSMjdiwi VmQzMj12bHNyIiAjVFlQRSAiKFZ1MzIsVnYzMikiLCJWZDMyLiIjVFlQRSI9dmxzcihWdTMyLiIj VFlQRSIsVnYzMi4iI1RZUEUiKSIsICJWZWN0b3IgbG9naWNhbCBzaGlmdCByaWdodCAiICAgIERF U0MsICAgIFZkVi51IyNUWVBFW2ldICA9IGZCSURJUl9MU0hJRlRSKFZ1Vi51IyNUWVBFW2ldLCBm U1hUTigoTE9HU0laRSsxKSxTSVpFLFZ2Vi5UWVBFW2ldKSxDQVNUVFlQRSkpIFwKKworVl9TSElG VCh3LCAid29yZCIsICAgMzIsNSw0XzQpCitWX1NISUZUKGgsICJoYWxmd29yZCIsIDE2LDQsMl8y KQorCitJVEVSQVRPUl9JTlNOX1NISUZUX1NMT1QoOCx2bHNyYiwiVmQzMi51Yj12bHNyKFZ1MzIu dWIsUnQzMikiLCJ2ZWMgbG9nIHNoaWZ0IHJpZ2h0IGJ5dGVzIiwgVmRWLmJbaV0gPSBWdVYudWJb aV0gPj4gKFJ0ViAmIDB4NykpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdHIs IlZkMzI9dnJvdHIoVnUzMixWdjMyKSIsIlZkMzIudXc9dnJvdHIoVnUzMi51dyxWdjMyLnV3KSIs IlZlY3RvciB3b3JkIHJvdGF0ZSByaWdodCIsIFZkVi51d1tpXSA9ICgoVnVWLnV3W2ldID4+IChW dlYudXdbaV0gJiAweDFmKSkgfCAoVnVWLnV3W2ldIDw8ICgzMiAtIChWdlYudXdbaV0gJiAweDFm KSkpKSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1IgU0hJRlQgQU5EIFBFUk1VVEUKKyAq ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMzIs dmFzcl9pbnRvLCJWeHgzMj12YXNyaW50byhWdTMyLFZ2MzIpIiwiVnh4MzIudz12YXNyaW50byhW dTMyLncsVnYzMi53KSIsIkFTUiB2ZWN0b3IgMSBlbGVtZW50cyBhbmQgb3ZlcmxheSBkcm9wcGlu ZyBiaXRzIHRvIE1TQiBvZiB2ZWN0b3IgMiBlbGVtZW50cyIsCisgICAgZkhJREUoaW50NjRfdCAp IHNoaWZ0ID0gKGZTRTMyXzY0KFZ1Vi53W2ldKSA8PCAzMik7CisgICAgZkhJREUoaW50NjRfdCAp IG1hc2sgID0gKCgoZlNFMzJfNjQoVnh4Vi52WzBdLndbaV0pKSA8PCAzMikgfCBmWkUzMl82NChW eHhWLnZbMF0ud1tpXSkpOworICAgIGZISURFKGludDY0X3QpIGxvbWFzayA9ICgoKGZTRTMyXzY0 KDEpKSA8PCAzMikgLSAxKTsKKyAgICBmSElERShpbnQgKSBjb3VudCA9IC0oMHg0MCAmIFZ2Vi53 W2ldKSArIChWdlYud1tpXSAmIDB4M2YpOworICAgIGZISURFKGludDY0X3QgKSByZXN1bHQgPSAo Y291bnQgPT0gLTB4NDApID8gMCA6ICgoKGNvdW50IDwgMCkgPyAoKHNoaWZ0IDw8IC0oY291bnQp KSB8IChtYXNrICYgKGxvbWFzayA8PCAtKGNvdW50KSkpKSA6ICgoc2hpZnQgPj4gY291bnQpIHwg KG1hc2sgJiAobG9tYXNrID4+IGNvdW50KSkpKSk7CisgICAgVnh4Vi52WzFdLndbaV0gPSAoKHJl c3VsdCA+PiAzMikgJiAweGZmZmZmZmZmKTsKKyAgICBWeHhWLnZbMF0ud1tpXSA9IChyZXN1bHQg JiAweGZmZmZmZmZmKSkKKworI2RlZmluZSBORVdfTkFSUk9XSU5HX1NISUZUIDEKKworI2lmIE5F V19OQVJST1dJTkdfU0hJRlQKKyNkZWZpbmUgTkFSUk9XSU5HX1NISUZUKElURVJTSVpFLFRBRyxE U1RNLERTVFRZUEUsU1JDVFlQRSxTWU5PUFRTLFNBVEZVTkMsUk5ERlVOQyxTSEFNVE1BU0spIFwK K0lURVJBVE9SX0lOU05fU0hJRlRfU0xPVChJVEVSU0laRSxUQUcsIFwKKyJWZDMyLiIgI0RTVFRZ UEUgIj12YXNyKFZ1MzIuIiAjU1JDVFlQRSAiLFZ2MzIuIiAjU1JDVFlQRSAiLFJ0OCkiICNTWU5P UFRTLCBcCisiVmVjdG9yIHNoaWZ0IHJpZ2h0IGFuZCBzaHVmZmxlIiwgXAorICAgIGZISURFKGlu dCApc2hhbXQgPSBSdFYgJiBTSEFNVE1BU0s7IFwKKyAgICBEU1RNKDAsVmRWLlNSQ1RZUEVbaV0s U0FURlVOQyhSTkRGVU5DKFZ2Vi5TUkNUWVBFW2ldLHNoYW10KSA+PiBzaGFtdCkpOyBcCisgICAg RFNUTSgxLFZkVi5TUkNUWVBFW2ldLFNBVEZVTkMoUk5ERlVOQyhWdVYuU1JDVFlQRVtpXSxzaGFt dCkgPj4gc2hhbXQpKSkKKworCisKKworCisvKiBXT1JEIFRPIEhBTEYqLworCitOQVJST1dJTkdf U0hJRlQoMzIsdmFzcndoLGZTRVRIQUxGLGgsdywsZkVDSE8sZlZOT1JPVU5ELDB4RikKK05BUlJP V0lOR19TSElGVCgzMix2YXNyd2hzYXQsZlNFVEhBTEYsaCx3LDpzYXQsZlZTQVRILGZWTk9ST1VO RCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcndocm5kc2F0LGZTRVRIQUxGLGgsdyw6cm5k OnNhdCxmVlNBVEgsZlZST1VORCwweEYpCitOQVJST1dJTkdfU0hJRlQoMzIsdmFzcnd1aHJuZHNh dCxmU0VUSEFMRix1aCx3LDpybmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCitOQVJST1dJTkdf U0hJRlQoMzIsdmFzcnd1aHNhdCxmU0VUSEFMRix1aCx3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQs MHhGKQorTkFSUk9XSU5HX1NISUZUKDMyLHZhc3J1d3Vocm5kc2F0LGZTRVRIQUxGLHVoLHV3LDpy bmQ6c2F0LGZWU0FUVUgsZlZST1VORCwweEYpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDMyLHZh c3J1d3Voc2F0LGZTRVRIQUxGLHVoLHV3LDpzYXQsZlZTQVRVSCxmVk5PUk9VTkQsMHhGKQorTkFS Uk9XSU5HX1NISUZUKDE2LHZhc3JodWJzYXQsZlNFVEJZVEUsdWIsaCw6c2F0LGZWU0FUVUIsZlZO T1JPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNyaHVicm5kc2F0LGZTRVRCWVRFLHVi LGgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4NykKK05BUlJPV0lOR19TSElGVCgxNix2YXNy aGJzYXQsZlNFVEJZVEUsYixoLDpzYXQsZlZTQVRCLGZWTk9ST1VORCwweDcpCitOQVJST1dJTkdf U0hJRlQoMTYsdmFzcmhicm5kc2F0LGZTRVRCWVRFLGIsaCw6cm5kOnNhdCxmVlNBVEIsZlZST1VO RCwweDcpCisKK05BUlJPV0lOR19TSElGVF9OT1YxKDE2LHZhc3J1aHVic2F0LGZTRVRCWVRFLHVi LHVoLDpzYXQsZlZTQVRVQixmVk5PUk9VTkQsMHg3KQorTkFSUk9XSU5HX1NISUZUX05PVjEoMTYs dmFzcnVodWJybmRzYXQsZlNFVEJZVEUsdWIsdWgsOnJuZDpzYXQsZlZTQVRVQixmVlJPVU5ELDB4 NykKKworI2Vsc2UKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoLCJWZDMyPXZh c3J3aChWdTMyLFZ2MzIsUnQ4KSIsIlZkMzIuaD12YXNyKFZ1MzIudyxWdjMyLncsUnQ4KSIsCisi VmVjdG9yIGFyaXRobWV0aWMgc2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29y ZHMiLAorICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIChWdlYud1tpXSA+PiAoUnRWICYgMHhGKSkp OworICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sIChWdVYud1tpXSA+PiAoUnRWICYgMHhGKSkpKQor CisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndoc2F0LCJWZDMyPXZhc3J3aChW dTMyLFZ2MzIsUnQ4KTpzYXQiLCJWZDMyLmg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0IiwK KyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3 b3JkcyIsCisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRIKFZ2Vi53W2ldID4+IChSdFYg JiAweEYpKSk7CisgICAgZlNFVEhBTEYoMSxWZFYud1tpXSwgZlZTQVRIKFZ1Vi53W2ldID4+IChS dFYgJiAweEYpKSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcndocm5kc2F0 LCJWZDMyPXZhc3J3aChWdTMyLFZ2MzIsUnQ4KTpybmQ6c2F0IiwiVmQzMi5oPXZhc3IoVnUzMi53 LFZ2MzIudyxSdDgpOnJuZDpzYXQiLAorIlZlY3RvciBhcml0aG1ldGljIHNoaWZ0IHJpZ2h0IHdv cmRzLCBzaHVmZmxlIGV2ZW4gaGFsZndvcmRzIiwKKyAgICBmSElERShpbnQgKSBzaGFtdCA9IFJ0 ViAmIDB4RjsKKyAgICBmU0VUSEFMRigwLFZkVi53W2ldLCBmVlNBVEgoICAoVnZWLndbaV0gKyBm QklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFM RigxLFZkVi53W2ldLCBmVlNBVEgoICAoVnVWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFt dC0xKSw0XzgpICkgPj4gc2hhbXQpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgzMix2 YXNyd3Vocm5kc2F0LCJWZDMyPXZhc3J3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIu dWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6cm5kOnNhdCIsCisiVmVjdG9yIGFyaXRobWV0aWMg c2hpZnQgcmlnaHQgd29yZHMsIHNodWZmbGUgZXZlbiBoYWxmd29yZHMiLAorICAgIGZISURFKGlu dCApIHNoYW10ID0gUnRWICYgMHhGOworICAgIGZTRVRIQUxGKDAsVmRWLndbaV0sIGZWU0FUVUgo ICAoVnZWLndbaV0gKyBmQklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQp KTsKKyAgICBmU0VUSEFMRigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi53W2ldICsgZkJJRElS X0FTSElGVEwoMSwoc2hhbXQtMSksNF84KSApID4+IHNoYW10KSkpCisKK0lURVJBVE9SX0lOU04y X1NISUZUX1NMT1QoMzIsdmFzcnd1aHNhdCwiVmQzMj12YXNyd3VoKFZ1MzIsVnYzMixSdDgpOnNh dCIsIlZkMzIudWg9dmFzcihWdTMyLncsVnYzMi53LFJ0OCk6c2F0IiwKKyJWZWN0b3IgYXJpdGht ZXRpYyBzaGlmdCByaWdodCB3b3Jkcywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisgICAgZlNF VEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKFZ2Vi53W2ldID4+IChSdFYgJiAweEYpKSk7Cisg ICAgZlNFVEhBTEYoMSwgVmRWLnV3W2ldLCBmVlNBVFVIKFZ1Vi53W2ldID4+IChSdFYgJiAweEYp KSkpCisKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmFzcnV3dWhybmRzYXQsIlZkMzI9 dmFzcnV3dWgoVnUzMixWdjMyLFJ0OCk6cm5kOnNhdCIsIlZkMzIudWg9dmFzcihWdTMyLnV3LFZ2 MzIudXcsUnQ4KTpybmQ6c2F0IiwKKyJWZWN0b3IgYXJpdGhtZXRpYyBzaGlmdCByaWdodCB3b3Jk cywgc2h1ZmZsZSBldmVuIGhhbGZ3b3JkcyIsCisgICAgZkhJREUoaW50ICkgc2hhbXQgPSBSdFYg JiAweEY7CisgICAgZlNFVEhBTEYoMCxWZFYud1tpXSwgZlZTQVRVSCggIChWdlYudXdbaV0gKyBm QklESVJfQVNISUZUTCgxLChzaGFtdC0xKSw0XzgpICkgPj4gc2hhbXQpKTsKKyAgICBmU0VUSEFM RigxLFZkVi53W2ldLCBmVlNBVFVIKCAgKFZ1Vi51d1tpXSArIGZCSURJUl9BU0hJRlRMKDEsKHNo YW10LTEpLDRfOCkgKSA+PiBzaGFtdCkpKQorI2VuZGlmCisKKworCitJVEVSQVRPUl9JTlNOMl9T SElGVF9TTE9UKDMyLHZyb3VuZHdoLCJWZDMyPXZyb3VuZHdoKFZ1MzIsVnYzMik6c2F0IiwiVmQz Mi5oPXZyb3VuZChWdTMyLncsVnYzMi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBo YWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRW LnV3W2ldLCBmVlNBVEgoKFZ2Vi53W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKTsKKyAg ICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZWU0FUSCgoVnVWLndbaV0gKyBmQ09OU1RMTCgweDgw MDApKSA+PiAxNikpKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZyb3VuZHd1aCwi VmQzMj12cm91bmR3dWgoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVoPXZyb3VuZChWdTMyLncsVnYz Mi53KTpzYXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0 YW50IGhhbGZ3b3JkcyIsCisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYu d1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSk7CisgICAgZlNFVEhBTEYoMSwgVmRWLnV3 W2ldLCBmVlNBVFVIKChWdVYud1tpXSArIGZDT05TVExMKDB4ODAwMCkpID4+IDE2KSkpCisKK0lU RVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdnJvdW5kdXd1aCwiVmQzMj12cm91bmR1d3VoKFZ1 MzIsVnYzMik6c2F0IiwiVmQzMi51aD12cm91bmQoVnUzMi51dyxWdjMyLnV3KTpzYXQiLAorIlZl Y3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhhbGZ3b3JkcyIs CisgICAgZlNFVEhBTEYoMCwgVmRWLnV3W2ldLCBmVlNBVFVIKChWdlYudXdbaV0gKyBmQ09OU1RM TCgweDgwMDApKSA+PiAxNikpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZlZTQVRVSCgo VnVWLnV3W2ldICsgZkNPTlNUTEwoMHg4MDAwKSkgPj4gMTYpKSkKKworCisKKworCisvKiBIQUxG IFRPIEJZVEUqLworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZyb3VuZGhiLCJWZDMy PXZyb3VuZGhiKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi5iPXZyb3VuZChWdTMyLmgsVnYzMi5oKTpz YXQiLAorIlZlY3RvciByb3VuZCB3b3JkcyB0byBoYWx2ZXMsIHNodWZmbGUgcmVzdWx0YW50IGhh bGZ3b3JkcyIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmVlNBVEIoKFZ2Vi5oW2ldICsg MHg4MCkgPj4gOCkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwgZlZTQVRCKChWdVYuaFtp XSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xPVCgxNix2cm91bmRo dWIsIlZkMzI9dnJvdW5kaHViKFZ1MzIsVnYzMik6c2F0IiwiVmQzMi51Yj12cm91bmQoVnUzMi5o LFZ2MzIuaCk6c2F0IiwKKyJWZWN0b3Igcm91bmQgd29yZHMgdG8gaGFsdmVzLCBzaHVmZmxlIHJl c3VsdGFudCBoYWxmd29yZHMiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtpXSwgZlZTQVRVQigo VnZWLmhbaV0gKyAweDgwKSA+PiA4KSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBmVlNB VFVCKChWdVYuaFtpXSArIDB4ODApID4+IDgpKSkKKworSVRFUkFUT1JfSU5TTjJfU0hJRlRfU0xP VCgxNix2cm91bmR1aHViLCJWZDMyPXZyb3VuZHVodWIoVnUzMixWdjMyKTpzYXQiLCJWZDMyLnVi PXZyb3VuZChWdTMyLnVoLFZ2MzIudWgpOnNhdCIsCisiVmVjdG9yIHJvdW5kIHdvcmRzIHRvIGhh bHZlcywgc2h1ZmZsZSByZXN1bHRhbnQgaGFsZndvcmRzIiwKKyAgICBmU0VUQllURSgwLCBWZFYu dWhbaV0sIGZWU0FUVUIoKFZ2Vi51aFtpXSArIDB4ODApID4+IDgpKTsKKyAgICBmU0VUQllURSgx LCBWZFYudWhbaV0sIGZWU0FUVUIoKFZ1Vi51aFtpXSArIDB4ODApID4+IDgpKSkKKworCitJVEVS QVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc2x3X2FjYywiVngzMis9dmFzbHcoVnUzMixSdDMy KSIsIlZ4MzIudys9dmFzbChWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29yZCIs CisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPDwgKFJ0ViAmICgzMi0xKSkpKQorCitJVEVS QVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZhc3J3X2FjYywiVngzMis9dmFzcncoVnUzMixSdDMy KSIsIlZ4MzIudys9dmFzcihWdTMyLncsUnQzMikiLAorIlZlY3RvciBzaGlmdCBhZGQgd29yZCIs CisgICAgVnhWLndbaV0gICs9ICAoVnVWLndbaV0gPj4gKFJ0ViAmICgzMi0xKSkpKQorCitJVEVS QVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzbGhfYWNjLCJWeDMyKz12YXNsaChWdTMy LFJ0MzIpIiwiVngzMi5oKz12YXNsKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNoaWZ0IGFkZCBo YWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPDwgKFJ0ViAmICgxNi0xKSkp KQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UX05PVjEoMTYsdmFzcmhfYWNjLCJWeDMyKz12 YXNyaChWdTMyLFJ0MzIpIiwiVngzMi5oKz12YXNyKFZ1MzIuaCxSdDMyKSIsCisiVmVjdG9yIHNo aWZ0IGFkZCBoYWxmd29yZCIsCisgICAgVnhWLmhbaV0gICs9ICAoVnVWLmhbaV0gPj4gKFJ0ViAm ICgxNi0xKSkpKQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogTU1WRUNUT1IgRUxFTUVOVC1X SVNFIEFSSVRITUVUSUMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyogTUFDUk9TIEdPIElOIE1BQ1JPUy5ERUYgTk9UIEhFUkUhISEKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworCisKKyNkZWZpbmUgTU1WRUNfQUJTRElGRihUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwg REVTVCxTUkMpXAorSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoV0lEVEgsIHZhYnNkaWZmIyNUWVBF LCAgICAgICAgICAgICAgICAgICAiVmQzMj12YWJzZGlmZiJUWVBFMiIoVnUzMixWdjMyKSIgLCJW ZDMyLiIjREVTVCI9dmFic2RpZmYoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiAsICAgICAiVmVj dG9yIEFic29sdXRlIG9mIERpZmZlcmVuY2UgIkRFU0NSLCAgIFZkVi5ERVNUW2ldID0gKFZ1Vi5T UkNbaV0gPiBWdlYuU1JDW2ldKSA/IChWdVYuU1JDW2ldIC0gVnZWLlNSQ1tpXSkgOiAoVnZWLlNS Q1tpXSAtIFZ1Vi5TUkNbaV0pKQorCisjZGVmaW5lIE1NVkVDX0FERFVfU0FUKFRZUEUsVFlQRTIs REVTQ1IsIFdJRFRILCBERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwg dmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIs VnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JD Iik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1IsICAgICAgICAgICAgVmRW LkRFU1RbaV0gPSBmVlVBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSlcCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2YWRkIyNUWVBFIyNzYXRf ZHYsICAgICJWZGQzMj12YWRkIlRZUEUyIihWdXUzMixWdnYzMik6c2F0IiwgICJWZGQzMi4iI0RF U1QiPXZhZGQoVnV1MzIuIiNTUkMiLFZ2djMyLiIjU1JDIik6c2F0IiwgIkRvdWJsZSBWZWN0b3Ig QWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICBWZGRWLnZbMF0uREVTVFtpXSA9IGZWVUFERFNBVChX SURUSCwgVnV1Vi52WzBdLlNSQ1tpXSxWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1Rb aV0gPSBmVlVBRERTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sVnZ2Vi52WzFdLlNSQ1tpXSkp XAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdCwgICAgICAg ICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpOnNhdCIsICAgICAiVmQzMi4i I0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNhdCIsICAgICJWZWN0b3IgQWRk ICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNUW2ldID0gZlZVU1VCU0FUKFdJ RFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1Rf RE9VQkxFX1ZFQyhXSURUSCwgdnN1YiMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dnN1YiJUWVBF MiIoVnV1MzIsVnZ2MzIpOnNhdCIsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMyLiIjU1JDIixW dnYzMi4iI1NSQyIpOnNhdCIsICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwg ICAgVmRkVi52WzBdLkRFU1RbaV0gPSBmVlVTVUJTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0s VnZ2Vi52WzBdLlNSQ1tpXSk7IFZkZFYudlsxXS5ERVNUW2ldID0gZlZVU1VCU0FUKFdJRFRILCBW dXVWLnZbMV0uU1JDW2ldLFZ2dlYudlsxXS5TUkNbaV0pKVwKKworI2RlZmluZSBNTVZFQ19BRERT X1NBVChUWVBFLFRZUEUyLERFU0NSLCBXSURUSCxERVNULFNSQylcCitJVEVSQVRPUl9JTlNOMl9B TllfU0xPVChXSURUSCwgdmFkZCMjVFlQRSMjc2F0LCAgICAgICAgICAgICAgICAgICJWZDMyPXZh ZGQiVFlQRTIiKFZ1MzIsVnYzMik6c2F0IiAsICAgICJWZDMyLiIjREVTVCI9dmFkZChWdTMyLiIj U1JDIixWdjMyLiIjU1JDIik6c2F0IiwgICAgIlZlY3RvciBBZGQgJiBTYXR1cmF0ZSAiREVTQ1Is ICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBmVlNBRERTQVQoV0lEVEgsICBWdVYuU1JDW2ldLCAg VnZWLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwg dmFkZCMjVFlQRSMjc2F0X2R2LCAgICAiVmRkMzI9dmFkZCJUWVBFMiIoVnV1MzIsVnZ2MzIpOnNh dCIsICAiVmRkMzIuIiNERVNUIj12YWRkKFZ1dTMyLiIjU1JDIixWdnYzMi4iI1NSQyIpOnNhdCIs ICJEb3VibGUgVmVjdG9yIEFkZCAmIFNhdHVyYXRlICJERVNDUiwgICAgVmRkVi52WzBdLkRFU1Rb aV0gPSBmVlNBRERTQVQoV0lEVEgsIFZ1dVYudlswXS5TUkNbaV0sIFZ2dlYudlswXS5TUkNbaV0p OyBWZGRWLnZbMV0uREVTVFtpXSA9IGZWU0FERFNBVChXSURUSCwgVnV1Vi52WzFdLlNSQ1tpXSwg VnZ2Vi52WzFdLlNSQ1tpXSkpXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsIHZzdWIj I1RZUEUjI3NhdCwgICAgICAgICAgICAgICAgICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIp OnNhdCIsICAgICAiVmQzMi4iI0RFU1QiPXZzdWIoVnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpOnNh dCIsICAgICJWZWN0b3IgQWRkICYgU2F0dXJhdGUgIkRFU0NSLCAgICAgICAgICAgIFZkVi5ERVNU W2ldID0gZlZTU1VCU0FUKFdJRFRILCAgVnVWLlNSQ1tpXSwgIFZ2Vi5TUkNbaV0pKVwKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UX0RPVUJMRV9WRUMoV0lEVEgsIHZzdWIjI1RZUEUjI3NhdF9kdiwg ICAgIlZkZDMyPXZzdWIiVFlQRTIiKFZ1dTMyLFZ2djMyKTpzYXQiLCAgIlZkZDMyLiIjREVTVCI9 dnN1YihWdXUzMi4iI1NSQyIsVnZ2MzIuIiNTUkMiKTpzYXQiLCAiRG91YmxlIFZlY3RvciBBZGQg JiBTYXR1cmF0ZSAiREVTQ1IsICAgIFZkZFYudlswXS5ERVNUW2ldID0gZlZTU1VCU0FUKFdJRFRI LCBWdXVWLnZbMF0uU1JDW2ldLCBWdnZWLnZbMF0uU1JDW2ldKTsgVmRkVi52WzFdLkRFU1RbaV0g PSBmVlNTVUJTQVQoV0lEVEgsIFZ1dVYudlsxXS5TUkNbaV0sIFZ2dlYudlsxXS5TUkNbaV0pKVwK KworI2RlZmluZSBNTVZFQ19BVkdVKFRZUEUsVFlQRTIsREVTQ1IsIFdJRFRILCBERVNULFNSQylc CitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2YXZnIyNUWVBFLCAgICAgICAgICAgICAg ICAgICAgICAgICJWZDMyPXZhdmciVFlQRTIiKFZ1MzIsVnYzMikiLCAgICAgICAgICJWZDMyLiIj REVTVCI9dmF2ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAgICAgIlZlY3RvciBBdmVy YWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNU W2ldID0gZlZBVkdVKCAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAg ICAgIlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgIlZkMzIuIiNERVNUIj12 YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKTpybmQiLCAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBS b3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gPSBm VkFWR1VSTkQoV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKyNkZWZpbmUg TU1WRUNfQVZHUyhUWVBFLFRZUEUyLERFU0NSLCBXSURUSCwgREVTVCxTUkMpXAorSVRFUkFUT1Jf SU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAgICAi VmQzMj12YXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAgIlZkMzIuIiNERVNUIj12YXZn KFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgICJWZWN0b3IgQXZlcmFnZSAiREVT Q1IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZFYuREVTVFtpXSAgPSBm VkFWR1MoICAgICAgIFdJRFRILCAgVnVWLlNSQ1tpXSwgVnZWLlNSQ1tpXSkpIFwKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UKFdJRFRILHZhdmcjI1RZUEUjI3JuZCwgICAgICAgICAgICAgICAgICAg IlZkMzI9dmF2ZyJUWVBFMiIoVnUzMixWdjMyKTpybmQiLCAgICAgICJWZDMyLiIjREVTVCI9dmF2 ZyhWdTMyLiIjU1JDIixWdjMyLiIjU1JDIik6cm5kIiwgICAgICAiVmVjdG9yIEF2ZXJhZ2UgJSBS b3VuZCJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmRWLkRFU1RbaV0gID0g ZlZBVkdTUk5EKCAgICBXSURUSCwgIFZ1Vi5TUkNbaV0sIFZ2Vi5TUkNbaV0pKSBcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVChXSURUSCx2bmF2ZyMjVFlQRSwgICAgICAgICAgICAgICAgICAgICAg ICJWZDMyPXZuYXZnIlRZUEUyIihWdTMyLFZ2MzIpIiwgICAgICAgICAiVmQzMi4iI0RFU1QiPXZu YXZnKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICAgICAgICAgIlZlY3RvciBOZWdhdGl2ZSBB dmVyYWdlICJERVNDUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZkVi5ERVNUW2ldICA9 IGZWTkFWR1MoICAgICAgV0lEVEgsICBWdVYuU1JDW2ldLCBWdlYuU1JDW2ldKSkKKworCisKKwor CisKKworI2RlZmluZSBNTVZFQ19BRERXUkFQKFRZUEUsVFlQRTIsIERFU0NSLCBXSURUSCAsIERF U1QsU1JDKVwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUWVBFLCAgICAg ICAgICAgICAgICAgICJWZDMyPXZhZGQiVFlQRTIiKFZ1MzIsVnYzMikiICwgICAgICJWZDMyLiIj REVTVCI9dmFkZChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAgICAiVmVjdG9yIEFkZCAiREVT Q1IsICAgICAgICAgIFZkVi5ERVNUW2ldID0gIFZ1Vi5TUkNbaV0gKyAgVnZWLlNSQ1tpXSlcCitJ VEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCwgdnN1YiMjVFlQRSwgICAgICAgICAgICAgICAg ICAiVmQzMj12c3ViIlRZUEUyIihWdTMyLFZ2MzIpIiAsICAgICAiVmQzMi4iI0RFU1QiPXZzdWIo VnUzMi4iI1NSQyIsVnYzMi4iI1NSQyIpIiwgICAgIlZlY3RvciBTdWIgIkRFU0NSLCAgICAgICAg ICBWZFYuREVTVFtpXSA9ICBWdVYuU1JDW2ldIC0gIFZ2Vi5TUkNbaV0pXAorSVRFUkFUT1JfSU5T TjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQyhXSURUSCwgdmFkZCMjVFlQRSMjX2R2LCAgIlZkZDMyPXZh ZGQiVFlQRTIiKFZ1dTMyLFZ2djMyKSIgLCAgIlZkZDMyLiIjREVTVCI9dmFkZChWdXUzMi4iI1NS QyIsVnZ2MzIuIiNTUkMiKSIsICJEb3VibGUgVmVjdG9yIEFkZCAiREVTQ1IsICAgVmRkVi52WzBd LkRFU1RbaV0gPSBWdXVWLnZbMF0uU1JDW2ldICsgVnZ2Vi52WzBdLlNSQ1tpXTsgVmRkVi52WzFd LkRFU1RbaV0gPSBWdXVWLnZbMV0uU1JDW2ldICsgVnZ2Vi52WzFdLlNSQ1tpXSlcCitJVEVSQVRP Ul9JTlNOMl9BTllfU0xPVF9ET1VCTEVfVkVDKFdJRFRILCB2c3ViIyNUWVBFIyNfZHYsICAiVmRk MzI9dnN1YiJUWVBFMiIoVnV1MzIsVnZ2MzIpIiAsICAiVmRkMzIuIiNERVNUIj12c3ViKFZ1dTMy LiIjU1JDIixWdnYzMi4iI1NSQyIpIiwgIkRvdWJsZSBWZWN0b3IgU3ViICJERVNDUiwgICBWZGRW LnZbMF0uREVTVFtpXSA9IFZ1dVYudlswXS5TUkNbaV0gLSBWdnZWLnZbMF0uU1JDW2ldOyBWZGRW LnZbMV0uREVTVFtpXSA9IFZ1dVYudlsxXS5TUkNbaV0gLSBWdnZWLnZbMV0uU1JDW2ldKSBcCisK KworCisKKworLyogV3JhcHBpbmcgQWRkcyAqLworTU1WRUNfQUREV1JBUChiLCAgICAiYiIsICAg ICJCeXRlIiwgICAgICAgICA4LCAgIGIsIGIpCitNTVZFQ19BRERXUkFQKGgsICAgICJoIiwgICAg IkhhbGZ3b3JkIiwgICAgIDE2LCAgaCwgaCkKK01NVkVDX0FERFdSQVAodywgICAgInciLCAgICAi V29yZCIsICAgICAgICAgMzIsICAgdywgICAgdykKKworLyogU2F0dXJhdGluZyBBZGRzICovCitN TVZFQ19BRERVX1NBVCh1YiwgInViIiwgICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgICAgOCwgICB1 YiwgICAgdWIpCitNTVZFQ19BRERVX1NBVCh1aCwgInVoIiwgICAgIlVuc2lnbmVkIEhhbGZ3b3Jk IiwgICAgMTYsICB1aCwgICAgdWgpCitNTVZFQ19BRERVX1NBVCh1dywgInV3IiwgICAgIlVuc2ln bmVkIHdvcmQiLCAgICAzMiwgIHV3LCAgICB1dykKK01NVkVDX0FERFNfU0FUKGIsICAiYiIsICAg ICAiYnl0ZSIsICAgICAgICAgICAgIDgsICBiLCAgICAgYikKK01NVkVDX0FERFNfU0FUKGgsICAi aCIsICAgICAiSGFsZndvcmQiLCAgICAgICAgICAgICAxNiwgIGgsICAgICBoKQorTU1WRUNfQURE U19TQVQodywgICJ3IiwgICAgICJXb3JkIiwgICAgICAgICAgICAgICAgIDMyLCAgdywgICAgIHcp CisKKworLyogQXZlcmFnaW5nIEluc3RydWN0aW9ucyAqLworTU1WRUNfQVZHVSh1YiwidWIiLCAg ICAgIlVuc2lnbmVkIEJ5dGUiLCAgICAgOCwgICB1YiwgICB1YikKK01NVkVDX0FWR1UodWgsInVo IiwgICAgICJVbnNpZ25lZCBIYWxmd29yZCIsIDE2LCAgdWgsICAgdWgpCitNTVZFQ19BVkdVX05P VjEodXcsInV3IiwgICAgICJVbnNpZ25lZCBXb3JkIiwgICAgIDMyLCAgdXcsICAgdXcpCitNTVZF Q19BVkdTX05PVjEoYiwgICAiYiIsICAgICJCeXRlIiwgICAgICAgICAgICAgICA4LCAgIGIsICAg YikKK01NVkVDX0FWR1MoaCwgICAiaCIsICAgICJIYWxmd29yZCIsICAgICAgICAgIDE2LCAgIGgs ICAgaCkKK01NVkVDX0FWR1ModywgICAidyIsICAgICJXb3JkIiwgICAgICAgICAgICAgIDMyLCAg IHcsICAgdykKKworCisvKiBBYnNvbHV0ZSBEaWZmZXJlbmNlICovCitNTVZFQ19BQlNESUZGKHVi LCJ1YiIsICAiVW5zaWduZWQgQnl0ZSIsICAgICAgICA4LCAgIHViLCAgICB1YikKK01NVkVDX0FC U0RJRkYodWgsInVoIiwgICJVbnNpZ25lZCBIYWxmd29yZCIsICAgIDE2LCAgdWgsICAgIHVoKQor TU1WRUNfQUJTRElGRihoLCJoIiwgICAgICAgICJIYWxmd29yZCIsICAgICAgICAgICAgIDE2LCAg dWgsICAgIGgpCitNTVZFQ19BQlNESUZGKHcsInciLCAgICAgICAgIldvcmQiLCAgICAgICAgICAg ICAgICAgMzIsICB1dywgICAgdykKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoOCx2bmF2Z3Vi LCAiVmQzMj12bmF2Z3ViKFZ1MzIsVnYzMikiLCAiVmQzMi5iPXZuYXZnKFZ1MzIudWIsVnYzMi51 YikiLAorIlZlY3RvciBOZWdhdGl2ZSBBdmVyYWdlIFVuc2lnbmVkIEJ5dGUiLCBWZFYuYltpXSAg ID0gZlZOQVZHVSg4LCBWdVYudWJbaV0sIFZ2Vi51YltpXSkpCisKK0lURVJBVE9SX0lOU05fQU5Z X1NMT1QoMzIsdmFkZGNhcnJ5c2F0LCJWZDMyLnc9dmFkZChWdTMyLncsVnYzMi53LFFzNCk6Y2Fy cnk6c2F0IiwiYWRkIHcvY2FycnkgYW5kIHNhdHVyYXRlIiwKK1ZkVi53W2ldID0gZlZTQVRXKFZ1 Vi53W2ldK1Z2Vi53W2ldK2ZHRVRRQklUKFFzVixpKjQpKSkKKworSVRFUkFUT1JfSU5TTl9BTllf U0xPVCgzMix2YWRkY2FycnksIlZkMzIudz12YWRkKFZ1MzIudyxWdjMyLncsUXg0KTpjYXJyeSIs ImFkZCB3L2NhcnJ5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rVnZWLndbaV0rZkdFVFFCSVQoUXhW LGkqNCk7CitmU0VUUUJJVFMoUXhWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVWLndb aV0sVnZWLndbaV0sZkdFVFFCSVQoUXhWLGkqNCkpKSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xP VCgzMix2c3ViY2FycnksIlZkMzIudz12c3ViKFZ1MzIudyxWdjMyLncsUXg0KTpjYXJyeSIsImFk ZCB3L2NhcnJ5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rflZ2Vi53W2ldK2ZHRVRRQklUKFF4Vixp KjQpOworZlNFVFFCSVRTKFF4Viw0LDB4Riw0KmksLWZDQVJSWV9GUk9NX0FERDMyKFZ1Vi53W2ld LH5WdlYud1tpXSxmR0VUUUJJVChReFYsaSo0KSkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9U KDMyLHZhZGRjYXJyeW8sIlZkMzIudyxRZTQ9dmFkZChWdTMyLncsVnYzMi53KTpjYXJyeSIsImFk ZCB3L2NhcnJ5IG91dC1vbmx5IiwKK1ZkVi53W2ldID0gVnVWLndbaV0rVnZWLndbaV07CitmU0VU UUJJVFMoUWVWLDQsMHhGLDQqaSwtZkNBUlJZX0ZST01fQUREMzIoVnVWLndbaV0sVnZWLndbaV0s MCkpKQorCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDMyLHZzdWJjYXJyeW8sIlZkMzIudyxRZTQ9 dnN1YihWdTMyLncsVnYzMi53KTpjYXJyeSIsInN1YnRyYWN0IHcvY2Fycnkgb3V0LW9ubHkiLAor VmRWLndbaV0gPSBWdVYud1tpXSt+VnZWLndbaV0rMTsKK2ZTRVRRQklUUyhRZVYsNCwweEYsNCpp LC1mQ0FSUllfRlJPTV9BREQzMihWdVYud1tpXSx+VnZWLndbaV0sMSkpKQorCisKK0lURVJBVE9S X0lOU05fQU5ZX1NMT1QoMzIsdnNhdGR3LCJWZDMyLnc9dnNhdGR3KFZ1MzIudyxWdjMyLncpIiwi U2F0dXJhdGUgZnJvbSA2NC1iaXRzIChoaWdoZXIgMzItYml0cyBjb21lIGZyb20gZmlyc3QgdmVj dG9yKSB0byAzMi1iaXRzIixWZFYud1tpXSA9IGZWU0FURFcoVnVWLndbaV0sVnZWLndbaV0pKQor CisKKyNkZWZpbmUgTU1WRUNfQUREU0FUX01JWChUQUdFTkQsU0FURixXSURUSCxERVNULFNSQzEs U1JDMilcCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKFdJRFRILCB2YWRkIyNUQUdFTkQsIlZkMzIu IiNERVNUIj12YWRkKFZ1MzIuIiNTUkMxIixWdjMyLiIjU1JDMiIpOnNhdCIsICAgICJWZWN0b3Ig QWRkIG1peGVkIiwgVmRWLkRFU1RbaV0gPSAgU0FURihWdVYuU1JDMVtpXSArICBWdlYuU1JDMltp XSkpXAorSVRFUkFUT1JfSU5TTl9BTllfU0xPVChXSURUSCwgdnN1YiMjVEFHRU5ELCJWZDMyLiIj REVTVCI9dnN1YihWdTMyLiIjU1JDMSIsVnYzMi4iI1NSQzIiKTpzYXQiLCAgICAiVmVjdG9yIFN1 YiBtaXhlZCIsIFZkVi5ERVNUW2ldID0gIFNBVEYoVnVWLlNSQzFbaV0gLSAgVnZWLlNSQzJbaV0p KVwKKworTU1WRUNfQUREU0FUX01JWCh1YnViYl9zYXQsZlZTQVRVQiw4LHViLHViLGIpCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgV0lERU5JTkcKKyoqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMTYsdmFkZHViaCwiVmRkMzI9dmFkZHViKFZ1MzIsVnYzMikiLCJWZGQzMi5oPXZhZGQoVnUz Mi51YixWdjMyLnViKSIsCisiVmVjdG9yIGFkZGl0aW9uIHdpdGggd2lkZW4gaW50byB0d28gdmVj dG9ycyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSBmWkU4XzE2KGZHRVRVQllURSgwLCBWdVYudWhb aV0pKSArIGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ2Vi51aFtpXSkpOworICAgIFZkZFYudlsxXS5o W2ldID0gZlpFOF8xNihmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkgKyBmWkU4XzE2KGZHRVRVQllU RSgxLCBWdlYudWhbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygx Nix2c3VidWJoLCJWZGQzMj12c3VidWIoVnUzMixWdjMyKSIsIlZkZDMyLmg9dnN1YihWdTMyLnVi LFZ2MzIudWIpIiwKKyJWZWN0b3Igc3VidHJhY3Rpb24gd2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0 b3JzIiwKKyAgICBWZGRWLnZbMF0uaFtpXSA9IGZaRThfMTYoZkdFVFVCWVRFKDAsIFZ1Vi51aFtp XSkpIC0gZlpFOF8xNihmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7CisgICAgVmRkVi52WzFdLmhb aV0gPSBmWkU4XzE2KGZHRVRVQllURSgxLCBWdVYudWhbaV0pKSAtIGZaRThfMTYoZkdFVFVCWVRF KDEsIFZ2Vi51aFtpXSkpKQorCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZF QygzMix2YWRkaHcsIlZkZDMyPXZhZGRoKFZ1MzIsVnYzMikiLCJWZGQzMi53PXZhZGQoVnUzMi5o LFZ2MzIuaCkiLAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMi LAorICAgIFZkZFYudlswXS53W2ldID0gZkdFVEhBTEYoMCwgVnVWLndbaV0pICsgZkdFVEhBTEYo MCwgVnZWLndbaV0pOworICAgIFZkZFYudlsxXS53W2ldID0gZkdFVEhBTEYoMSwgVnVWLndbaV0p ICsgZkdFVEhBTEYoMSwgVnZWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZzdWJodywiVmRkMzI9dnN1YmgoVnUzMixWdjMyKSIsIlZkZDMyLnc9dnN1YihW dTMyLmgsVnYzMi5oKSIsCisiVmVjdG9yIHN1YnRyYWN0aW9uIHdpdGggd2lkZW4gaW50byB0d28g dmVjdG9ycyIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmR0VUSEFMRigwLCBWdVYud1tpXSkgLSBm R0VUSEFMRigwLCBWdlYud1tpXSk7CisgICAgVmRkVi52WzFdLndbaV0gPSBmR0VUSEFMRigxLCBW dVYud1tpXSkgLSBmR0VUSEFMRigxLCBWdlYud1tpXSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygzMix2YWRkdWh3LCJWZGQzMj12YWRkdWgoVnUzMixWdjMyKSIsIlZk ZDMyLnc9dmFkZChWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYWRkaXRpb24gd2l0aCB3aWRl biBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZaRTE2XzMyKGZHRVRV SEFMRigwLCBWdVYudXdbaV0pKSArIGZaRTE2XzMyKGZHRVRVSEFMRigwLCBWdlYudXdbaV0pKTsK KyAgICBWZGRWLnZbMV0ud1tpXSA9IGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKSAr IGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZ X1NMT1RfRE9VQkxFX1ZFQygzMix2c3VidWh3LCJWZGQzMj12c3VidWgoVnUzMixWdjMyKSIsIlZk ZDMyLnc9dnN1YihWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3Igc3VidHJhY3Rpb24gd2l0aCB3 aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZaRTE2XzMyKGZH RVRVSEFMRigwLCBWdVYudXdbaV0pKSAtIGZaRTE2XzMyKGZHRVRVSEFMRigwLCBWdlYudXdbaV0p KTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdVYudXdbaV0p KSAtIGZaRTE2XzMyKGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKSkKKworCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdmFkZGh3X2FjYywiVnh4MzIrPXZhZGRoKFZ1MzIs VnYzMikiLCJWeHgzMi53Kz12YWRkKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYWRkaXRpb24g d2l0aCB3aWRlbiBpbnRvIHR3byB2ZWN0b3JzIiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmR0VU SEFMRigwLCBWdVYud1tpXSkgKyBmR0VUSEFMRigwLCBWdlYud1tpXSk7CisgICAgVnh4Vi52WzFd LndbaV0gKz0gZkdFVEhBTEYoMSwgVnVWLndbaV0pICsgZkdFVEhBTEYoMSwgVnZWLndbaV0pKQor CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZhZGR1aHdfYWNjLCJWeHgz Mis9dmFkZHVoKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12YWRkKFZ1MzIudWgsVnYzMi51aCkiLAor IlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdvIHZlY3RvcnMiLAorICAgIFZ4eFYu dlswXS53W2ldICs9IGZHRVRVSEFMRigwLCBWdVYud1tpXSkgKyBmR0VUVUhBTEYoMCwgVnZWLndb aV0pOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZHRVRVSEFMRigxLCBWdVYud1tpXSkgKyBmR0VU VUhBTEYoMSwgVnZWLndbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDE2LHZhZGR1YmhfYWNjLCJWeHgzMis9dmFkZHViKFZ1MzIsVnYzMikiLCJWeHgzMi5oKz12YWRk KFZ1MzIudWIsVnYzMi51YikiLAorIlZlY3RvciBhZGRpdGlvbiB3aXRoIHdpZGVuIGludG8gdHdv IHZlY3RvcnMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZHRVRVQllURSgwLCBWdVYuaFtpXSkg KyBmR0VUVUJZVEUoMCwgVnZWLmhbaV0pOworICAgIFZ4eFYudlsxXS5oW2ldICs9IGZHRVRVQllU RSgxLCBWdVYuaFtpXSkgKyBmR0VUVUJZVEUoMSwgVnZWLmhbaV0pKQorCisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqCisqICAgQ29uZGl0aW9uYWwKKyoqKioqKioqKioqKioqKioqKioq KioqKioqKiovCisKKyNkZWZpbmUgQ09OREFERFNVQihXSURUSCxUQUdFTkQsTEhTWU4sUkhTWU4s REVTQ1IsTEhCRUgsUkhCRUgpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZhZGQj I1RBR0VORCMjcSwiaWYgKFF2NC4iI1RBR0VORCIpICJMSFNZTiIrPSJSSFNZTiwiaWYgKFF2NCkg IkxIU1lOIis9IlJIU1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhCRUgr UkhCRUgsTEhCRUgpKSBcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChXSURUSCx2c3ViIyNUQUdF TkQjI3EsImlmIChRdjQuIiNUQUdFTkQiKSAiTEhTWU4iLT0iUkhTWU4sImlmIChRdjQpICJMSFNZ TiItPSJSSFNZTixERVNDUixMSEJFSD1mQ09ORE1BU0sjI1dJRFRIKFF2VixpLExIQkVILVJIQkVI LExIQkVIKSkgXAorSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoV0lEVEgsdmFkZCMjVEFHRU5EIyNu cSwiaWYgKCFRdjQuIiNUQUdFTkQiKSAiTEhTWU4iKz0iUkhTWU4sImlmICghUXY0KSAiTEhTWU4i Kz0iUkhTWU4sREVTQ1IsTEhCRUg9ZkNPTkRNQVNLIyNXSURUSChRdlYsaSxMSEJFSCxMSEJFSCtS SEJFSCkpIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKFdJRFRILHZzdWIjI1RBR0VORCMjbnEs ImlmICghUXY0LiIjVEFHRU5EIikgIkxIU1lOIi09IlJIU1lOLCJpZiAoIVF2NCkgIkxIU1lOIi09 IlJIU1lOLERFU0NSLExIQkVIPWZDT05ETUFTSyMjV0lEVEgoUXZWLGksTEhCRUgsTEhCRUgtUkhC RUgpKSBcCisKK0NPTkRBRERTVUIoOCxiLCJWeDMyLmIiLCJWdTMyLmIiLCJDb25kaXRpb25hbCBh ZGQvc3ViIEJ5dGUiLFZ4Vi51YltpXSxWdVYudWJbaV0pCitDT05EQUREU1VCKDE2LGgsIlZ4MzIu aCIsIlZ1MzIuaCIsIkNvbmRpdGlvbmFsIGFkZC9zdWIgSGFsZiIsVnhWLmhbaV0sVnVWLmhbaV0p CitDT05EQUREU1VCKDMyLHcsIlZ4MzIudyIsIlZ1MzIudyIsIkNvbmRpdGlvbmFsIGFkZC9zdWIg V29yZCIsVnhWLndbaV0sVnVWLndbaV0pCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorIEFCU09MVVRFIFZBTFVFUworKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBWNjUKK0lURVJB VE9SX0lOU04yX0FOWV9TTE9UX05PVjEoOCx2YWJzYiwgICAgICAgICJWZDMyPXZhYnNiKFZ1MzIp IiwgICAgICJWZDMyLmI9dmFicyhWdTMyLmIpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUgdmFsdWUg b2YgYnl0ZXMiLCAgICBWZFYuYltpXSAgPSAgZkFCUyhWdVYuYltpXSkpCitJVEVSQVRPUl9JTlNO Ml9BTllfU0xPVF9OT1YxKDgsdmFic2Jfc2F0LCAgICAiVmQzMj12YWJzYihWdTMyKTpzYXQiLCAi VmQzMi5iPXZhYnMoVnUzMi5iKTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIGJ5dGVz IiwgICAgVmRWLmJbaV0gID0gIGZWU0FUQihmQUJTKGZTRThfMTYoVnVWLmJbaV0pKSkpCisKKwor SVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdmFic2gsICAgICAgICAiVmQzMj12YWJzaChWdTMy KSIsICAgICAiVmQzMi5oPXZhYnMoVnUzMi5oKSIsICAgICAiVmVjdG9yIGFic29sdXRlIHZhbHVl IG9mIGhhbGZ3b3JkcyIsICAgIFZkVi5oW2ldICA9ICBmQUJTKFZ1Vi5oW2ldKSkKK0lURVJBVE9S X0lOU04yX0FOWV9TTE9UKDE2LHZhYnNoX3NhdCwgICAgIlZkMzI9dmFic2goVnUzMik6c2F0Iiwg IlZkMzIuaD12YWJzKFZ1MzIuaCk6c2F0IiwgIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiBoYWxm d29yZHMiLCAgICBWZFYuaFtpXSAgPSAgZlZTQVRIKGZBQlMoZlNFMTZfMzIoVnVWLmhbaV0pKSkp CitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgzMix2YWJzdywgICAgICAgICJWZDMyPXZhYnN3KFZ1 MzIpIiwgICAgICJWZDMyLnc9dmFicyhWdTMyLncpIiwgICAgICJWZWN0b3IgYWJzb2x1dGUgdmFs dWUgb2Ygd29yZHMiLCAgICAgICAgVmRWLndbaV0gID0gIGZBQlMoVnVWLndbaV0pKQorSVRFUkFU T1JfSU5TTjJfQU5ZX1NMT1QoMzIsdmFic3dfc2F0LCAgICAiVmQzMj12YWJzdyhWdTMyKTpzYXQi LCAiVmQzMi53PXZhYnMoVnUzMi53KTpzYXQiLCAiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdv cmRzIiwgICAgICAgIFZkVi53W2ldICA9ICBmVlNBVFcoZkFCUyhmU0UzMl82NChWdVYud1tpXSkp KSkKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIE1NVkVDVE9SIE1VTFRJUExJQ0FUSU9OUwor ICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLworCisKKy8qIEJ5dGUgYnkgQnl0ZSAqLworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5YnYsIlZkZDMyPXZtcHliKFZ1MzIsVnYzMiki LCJWZGQzMi5oPXZtcHkoVnUzMi5iLFZ2MzIuYikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBv ZiB3b3JkcyIsCisgICAgVmRkVi52WzBdLmhbaV0gPSAgZk1QWThTUyhmR0VUQllURSgwLCBWdVYu aFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7CisgICAgVmRkVi52WzFdLmhbaV0gPSAgZk1Q WThTUyhmR0VUQllURSgxLCBWdVYuaFtpXSksIGZHRVRCWVRFKDEsIFZ2Vi5oW2ldKSkpCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ2X2FjYywiVnh4MzIrPXZt cHliKFZ1MzIsVnYzMikiLCJWeHgzMi5oKz12bXB5KFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3Ig YWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9ICBmTVBZOFNT KGZHRVRCWVRFKDAsIFZ1Vi5oW2ldKSwgZkdFVEJZVEUoMCwgVnZWLmhbaV0pKTsKKyAgICBWeHhW LnZbMV0uaFtpXSArPSAgZk1QWThTUyhmR0VUQllURSgxLCBWdVYuaFtpXSksIGZHRVRCWVRFKDEs IFZ2Vi5oW2ldKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2 bXB5dWJ2LCJWZGQzMj12bXB5dWIoVnUzMixWdjMyKSIsIlZkZDMyLnVoPXZtcHkoVnUzMi51YixW djMyLnViKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWZGRWLnZb MF0udWhbaV0gPSAgZk1QWThVVShmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKDAs IFZ2Vi51aFtpXSkgKTsKKyAgICBWZGRWLnZbMV0udWhbaV0gPSAgZk1QWThVVShmR0VUVUJZVEUo MSwgVnVWLnVoW2ldKSwgZkdFVFVCWVRFKDEsIFZ2Vi51aFtpXSkgKSkKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5dWJ2X2FjYywiVnh4MzIrPXZtcHl1YihWdTMy LFZ2MzIpIiwiVnh4MzIudWgrPXZtcHkoVnUzMi51YixWdjMyLnViKSIsCisiVmVjdG9yIGFic29s dXRlIHZhbHVlIG9mIHdvcmRzIiwKKyAgICBWeHhWLnZbMF0udWhbaV0gKz0gIGZNUFk4VVUoZkdF VFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRVQllURSgwLCBWdlYudWhbaV0pICk7CisgICAgVnh4 Vi52WzFdLnVoW2ldICs9ICBmTVBZOFVVKGZHRVRVQllURSgxLCBWdVYudWhbaV0pLCBmR0VUVUJZ VEUoMSwgVnZWLnVoW2ldKSApKQorCisKKworCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf RE9VQkxFX1ZFQygxNix2bXB5YnVzdiwiVmRkMzI9dm1weWJ1cyhWdTMyLFZ2MzIpIiwiVmRkMzIu aD12bXB5KFZ1MzIudWIsVnYzMi5iKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRz IiwKKyAgICBWZGRWLnZbMF0uaFtpXSAgPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdVYudWhbaV0p LCBmR0VUQllURSgwLCBWdlYuaFtpXSkpOworICAgIFZkZFYudlsxXS5oW2ldICA9IGZNUFk4VVMo ZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKDEsIFZ2Vi5oW2ldKSkpCisKK0lURVJB VE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWJ1c3ZfYWNjLCJWeHgzMis9dm1w eWJ1cyhWdTMyLFZ2MzIpIiwiVnh4MzIuaCs9dm1weShWdTMyLnViLFZ2MzIuYikiLAorIlZlY3Rv ciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVnh4Vi52WzBdLmhbaV0gICs9IGZNUFk4 VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKDAsIFZ2Vi5oW2ldKSk7CisgICAg Vnh4Vi52WzFdLmhbaV0gICs9IGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1Vi51aFtpXSksIGZHRVRC WVRFKDEsIFZ2Vi5oW2ldKSkpCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJM RV9WRUMoMTYsdm1wYWJ1c3YsIlZkZDMyPXZtcGFidXMoVnV1MzIsVnZ2MzIpIiwiVmRkMzIuaD12 bXBhKFZ1dTMyLnViLFZ2djMyLmIpIiwKKyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBW ZGRWLnZbMF0uaFtpXSA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1dVYudlswXS51aFtpXSksIGZH RVRCWVRFKDAsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVUyhmR0VUVUJZVEUoMCwgVnV1Vi52 WzFdLnVoW2ldKSwgZkdFVEJZVEUoMCwgVnZ2Vi52WzFdLnVoW2ldKSk7CisgICAgVmRkVi52WzFd LmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgxLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUQllURSgx LCBWdnZWLnZbMF0udWhbaV0pKSArIGZNUFk4VVMoZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51aFtp XSksIGZHRVRCWVRFKDEsIFZ2dlYudlsxXS51aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9NUFlf U0xPVF9ET1VCTEVfVkVDKDE2LHZtcGFidXV2LCJWZGQzMj12bXBhYnV1KFZ1dTMyLFZ2djMyKSIs IlZkZDMyLmg9dm1wYShWdXUzMi51YixWdnYzMi51YikiLAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlw bHkiLAorICAgIFZkZFYudlswXS5oW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzBd LnVoW2ldKSwgZkdFVFVCWVRFKDAsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVVShmR0VUVUJZ VEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDAsIFZ2dlYudlsxXS51aFtpXSkpOwor ICAgIFZkZFYudlsxXS5oW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ld KSwgZkdFVFVCWVRFKDEsIFZ2dlYudlswXS51aFtpXSkpICsgZk1QWThVVShmR0VUVUJZVEUoMSwg VnV1Vi52WzFdLnVoW2ldKSwgZkdFVFVCWVRFKDEsIFZ2dlYudlsxXS51aFtpXSkpKQorCisKKwor CisKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlodiwiVmRk MzI9dm1weWgoVnUzMixWdjMyKSIsIlZkZDMyLnc9dm1weShWdTMyLmgsVnYzMi5oKSIsCisiVmVj dG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0gPSBm TVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFZ2Vi53W2ldKSk7Cisg ICAgVmRkVi52WzFdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRI QUxGKDEsIFZ2Vi53W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMo MzIsdm1weWh2X2FjYywiVnh4MzIrPXZtcHloKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12bXB5KFZ1 MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAg ICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRI QUxGKDAsIFZ2Vi53W2ldKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhB TEYoMSwgVnVWLndbaV0pLCBmR0VUSEFMRigxLCBWdlYud1tpXSkpKQorCitJVEVSQVRPUl9JTlNO Ml9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHl1aHYsIlZkZDMyPXZtcHl1aChWdTMyLFZ2MzIp IiwiVmRkMzIudXc9dm1weShWdTMyLnVoLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIFVu c2lnbmVkIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0udXdbaV0gPSBmTVBZMTZV VShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAg IFZkZFYudlsxXS51d1tpXSA9IGZNUFkxNlVVKGZHRVRVSEFMRigxLCBWdVYudXdbaV0pLCBmR0VU VUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9W RUMoMzIsdm1weXVodl9hY2MsIlZ4eDMyKz12bXB5dWgoVnUzMixWdjMyKSIsIlZ4eDMyLnV3Kz12 bXB5KFZ1MzIudWgsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3IgVW5zaWduZWQgSGFsZndv cmQgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS51d1tpXSArPSBmTVBZMTZVVShmR0VUVUhBTEYo MCwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZ4eFYudlsxXS51 d1tpXSArPSBmTVBZMTZVVShmR0VUVUhBTEYoMSwgVnVWLnV3W2ldKSwgZkdFVFVIQUxGKDEsIFZ2 Vi51d1tpXSkpKQorCisKKworLyogVmVjdG9yIGJ5IFZlY3RvciAqLworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5aHZzcnMsIlZkMzI9dm1weWgoVnUzMixWdjMyKTo8 PDE6cm5kOnNhdCIsIlZkMzIuaD12bXB5KFZ1MzIuaCxWdjMyLmgpOjw8MTpybmQ6c2F0IiwKKyJW ZWN0b3IgaGFsZndvcmQgbXVsdGlwbHkgd2l0aCByb3VuZCwgc2hpZnQsIGFuZCBzYXQxNiIsCisg ICAgVmRWLmhbaV0gPSBmVlNBVEgoZkdFVEhBTEYoMSxmVlNBVChmUk9VTkQoKGZNUFkxNlNTKFZ1 Vi5oW2ldLFZ2Vi5oW2ldICAgICk8PDEpKSkpKSkKKworCisKKworCitJVEVSQVRPUl9JTlNOMl9N UFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlodXMsICJWZGQzMj12bXB5aHVzKFZ1MzIsVnYzMiki LCJWZGQzMi53PXZtcHkoVnUzMi5oLFZ2MzIudWgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3 b3JkIE11bHRpcGx5IiwKKyAgICBWZGRWLnZbMF0ud1tpXSA9IGZNUFkxNlNVKGZHRVRIQUxGKDAs IFZ1Vi53W2ldKSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tpXSkpOworICAgIFZkZFYudlsxXS53W2ld ID0gZk1QWTE2U1UoZkdFVEhBTEYoMSwgVnVWLndbaV0pLCBmR0VUVUhBTEYoMSwgVnZWLnV3W2ld KSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5aHVzX2Fj YywgIlZ4eDMyKz12bXB5aHVzKFZ1MzIsVnYzMikiLCJWeHgzMi53Kz12bXB5KFZ1MzIuaCxWdjMy LnVoKSIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0aXBseSIsCisgICAgVnh4Vi52 WzBdLndbaV0gKz0gZk1QWTE2U1UoZkdFVEhBTEYoMCwgVnVWLndbaV0pLCBmR0VUVUhBTEYoMCwg VnZWLnV3W2ldKSk7CisgICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1UoZkdFVEhBTEYoMSwg VnVWLndbaV0pLCBmR0VUVUhBTEYoMSwgVnZWLnV3W2ldKSkpCisKKworCisKK0lURVJBVE9SX0lO U04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWloLCJWZDMyPXZtcHlpaChWdTMyLFZ2MzIp IiwiVmQzMi5oPXZtcHlpKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3 b3JkIE11bHRpcGx5IiwKKyAgICBWZFYuaFtpXSA9IGZNUFkxNlNTKFZ1Vi5oW2ldLCBWdlYuaFtp XSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMTYsdm1weWloX2FjYywi VngzMis9dm1weWloKFZ1MzIsVnYzMikiLCJWeDMyLmgrPXZtcHlpKFZ1MzIuaCxWdjMyLmgpIiwK KyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3b3JkIE11bHRpcGx5IiwKKyAgICBWeFYuaFtpXSArPSBm TVBZMTZTUyhWdVYuaFtpXSwgVnZWLmhbaV0pKQorCisKKworLyogMzJ4MzIgaGlnaCBoYWxmIC8g ZnJhYyAqLworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWV3 dWgsIlZkMzI9dm1weWV3dWgoVnUzMixWdjMyKSIsIlZkMzIudz12bXB5ZShWdTMyLncsVnYzMi51 aCkiLAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorVmRWLndbaV0gPSBm TVBZMzIxNlNVKFZ1Vi53W2ldLCBmR0VUVUhBTEYoMCwgVnZWLndbaV0pKSA+PiAxNikKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5b3doLCJWZDMyPXZtcHlvd2go VnUzMixWdjMyKTo8PDE6c2F0IiwiVmQzMi53PXZtcHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpzYXQi LAorIlZlY3RvciBieSBWZWN0b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorVmRWLndbaV0gPSBmVlNB VFcoKCgoZk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSA+PiAxNCkg KyAwKSA+PiAxKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1w eW93aF9ybmQsIlZkMzI9dm1weW93aChWdTMyLFZ2MzIpOjw8MTpybmQ6c2F0IiwiVmQzMi53PXZt cHlvKFZ1MzIudyxWdjMyLmgpOjw8MTpybmQ6c2F0IiwKKyJWZWN0b3IgYnkgVmVjdG9yIEhhbGZ3 b3JkIE11bHRpcGx5IiwKK1ZkVi53W2ldID0gZlZTQVRXKCgoKGZNUFkzMjE2U1MoVnVWLndbaV0s IGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkgPj4gMTQpICsgMSkgPj4gMSkpKQorCitJVEVSQVRPUl9J TlNOX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWV3dWhfNjQsIlZkZDMyPXZtcHllKFZ1MzIu dyxWdjMyLnVoKSIsCisiV29yZCB0aW1lcyBIYWxmd29yZCBNdWx0aXBseSwgNjQtYml0IHJlc3Vs dCIsCisJZkhJREUoc2l6ZThzX3QgcHJvZDspCisJcHJvZCA9IGZNUFkzMlNVKFZ1Vi53W2ldLGZH RVRVSEFMRigwLFZ2Vi53W2ldKSk7CisJVmRkVi52WzFdLndbaV0gPSBwcm9kID4+IDE2OworCVZk ZFYudlswXS53W2ldID0gcHJvZCA8PCAxNikKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9ET1VC TEVfVkVDKDMyLHZtcHlvd2hfNjRfYWNjLCJWeHgzMis9dm1weW8oVnUzMi53LFZ2MzIuaCkiLAor IldvcmQgdGltZXMgSGFsZndvcmQgTXVsdGlwbHksIDY0LWJpdCByZXN1bHQiLAorCWZISURFKHNp emU4c190IHByb2Q7KQorCXByb2QgPSBmTVBZMzJTUyhWdVYud1tpXSxmR0VUSEFMRigxLFZ2Vi53 W2ldKSkgICsgZlNFMzJfNjQoVnh4Vi52WzFdLndbaV0pOworCVZ4eFYudlsxXS53W2ldID0gcHJv ZCA+PiAxNjsKKwlmU0VUSEFMRigwLCBWeHhWLnZbMF0ud1tpXSwgVnh4Vi52WzBdLndbaV0gPj4g MTYpOworCWZTRVRIQUxGKDEsIFZ4eFYudlswXS53W2ldLCBwcm9kICYgMHgwMDAwZmZmZikpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weW93aF9zYWNjLCJWeDMy Kz12bXB5b3doKFZ1MzIsVnYzMik6PDwxOnNhdDpzaGlmdCIsIlZ4MzIudys9dm1weW8oVnUzMi53 LFZ2MzIuaCk6PDwxOnNhdDpzaGlmdCIsCisiVmVjdG9yIGJ5IFZlY3RvciBIYWxmd29yZCBNdWx0 aXBseSIsCitJVjFERUFEKCkgVnhWLndbaV0gPSBmVlNBVFcoKCgoKFZ4Vi53W2ldICsgZk1QWTMy MTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0pKSkgPj4gMTQpICsgMCkgPj4gMSkp KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlvd2hfcm5kX3Nh Y2MsIlZ4MzIrPXZtcHlvd2goVnUzMixWdjMyKTo8PDE6cm5kOnNhdDpzaGlmdCIsIlZ4MzIudys9 dm1weW8oVnUzMi53LFZ2MzIuaCk6PDwxOnJuZDpzYXQ6c2hpZnQiLAorIlZlY3RvciBieSBWZWN0 b3IgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVBRCgpIFZ4Vi53W2ldID0gZlZTQVRXKCgoKChW eFYud1tpXSArIGZNUFkzMjE2U1MoVnVWLndbaV0sIGZHRVRIQUxGKDEsIFZ2Vi53W2ldKSkpID4+ IDE0KSArIDEpID4+IDEpKSkKKworLyogRm9yIDMyeDMyIGludGVnZXIgLyBsb3cgaGFsZiAqLwor CitJVEVSQVRPUl9JTlNOX01QWV9TTE9UKDMyLHZtcHlpZW9oLCJWZDMyLnc9dm1weWllbyhWdTMy LmgsVnYzMi5oKSIsIk9kZC9FdmVuIG11bHRpcGx5IGZvciAzMngzMiBsb3cgaGFsZiIsCisJVmRW LndbaV0gPSAoZkdFVEhBTEYoMCxWdVYud1tpXSkqZkdFVEhBTEYoMSxWdlYud1tpXSkpIDw8IDE2 KQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpZXd1aCwiVmQz Mj12bXB5aWV3dWgoVnUzMixWdjMyKSIsIlZkMzIudz12bXB5aWUoVnUzMi53LFZ2MzIudWgpIiwK KyJWZWN0b3IgYnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVBRCgp ICAgIFZkVi53W2ldID0gZk1QWTMyMTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53W2ld KSkgKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcHlpb3doLCJW ZDMyPXZtcHlpb3doKFZ1MzIsVnYzMikiLCJWZDMyLnc9dm1weWlvKFZ1MzIudyxWdjMyLmgpIiwK KyJWZWN0b3IgYnkgVmVjdG9yIFdvcmQgYnkgSGFsZndvcmQgTXVsdGlwbHkiLAorSVYxREVBRCgp ICAgIFZkVi53W2ldID0gZk1QWTMyMTZTUyhWdVYud1tpXSwgZkdFVEhBTEYoMSwgVnZWLndbaV0p KSApCisKKy8qIEFkZCBiYWNrIHRoZXNlLi4uICovCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0RPVUJMRV9WRUMoMzIsdm1weWlld2hfYWNjLCJWeDMyKz12bXB5aWV3aChWdTMyLFZ2MzIpIiwi VngzMi53Kz12bXB5aWUoVnUzMi53LFZ2MzIuaCkiLAorIlZlY3RvciBieSBWZWN0b3IgV29yZCBi eSBIYWxmd29yZCBNdWx0aXBseSIsCitWeFYud1tpXSA9IFZ4Vi53W2ldICsgZk1QWTMyMTZTUyhW dVYud1tpXSwgZkdFVEhBTEYoMCwgVnZWLndbaV0pKSApCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdm1weWlld3VoX2FjYywiVngzMis9dm1weWlld3VoKFZ1MzIsVnYz MikiLCJWeDMyLncrPXZtcHlpZShWdTMyLncsVnYzMi51aCkiLAorIlZlY3RvciBieSBWZWN0b3Ig V29yZCBieSBIYWxmd29yZCBNdWx0aXBseSIsCitWeFYud1tpXSA9IFZ4Vi53W2ldICsgZk1QWTMy MTZTVShWdVYud1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi53W2ldKSkgKQorCisKKworCisKKworCisv KiBWZWN0b3IgYnkgU2NhbGFyICovCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVD KDE2LHZtcHl1YiwiVmRkMzI9dm1weXViKFZ1MzIsUnQzMikiLCJWZGQzMi51aD12bXB5KFZ1MzIu dWIsUnQzMi51YikiLAorIlZlY3RvciBhYnNvbHV0ZSB2YWx1ZSBvZiB3b3JkcyIsCisgICAgVmRk Vi52WzBdLnVoW2ldICA9IGZNUFk4VVUoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRVQllU RSgoMippKzApJTQsIFJ0VikpOworICAgIFZkZFYudlsxXS51aFtpXSAgPSBmTVBZOFVVKGZHRVRV QllURSgxLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRFUkFU T1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5dWJfYWNjLCJWeHgzMis9dm1weXVi KFZ1MzIsUnQzMikiLCJWeHgzMi51aCs9dm1weShWdTMyLnViLFJ0MzIudWIpIiwKKyJWZWN0b3Ig YWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS51aFtpXSArPSBmTVBZOFVV KGZHRVRVQllURSgwLCBWdVYudWhbaV0pLCBmR0VUVUJZVEUoKDIqaSswKSU0LCBSdFYpKTsKKyAg ICBWeHhWLnZbMV0udWhbaV0gKz0gZk1QWThVVShmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdF VFVCWVRFKCgyKmkrMSklNCwgUnRWKSkpCisKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9V QkxFX1ZFQygxNix2bXB5YnVzLCJWZGQzMj12bXB5YnVzKFZ1MzIsUnQzMikiLCJWZGQzMi5oPXZt cHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAor ICAgIFZkZFYudlswXS5oW2ldICA9IGZNUFk4VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZH RVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7CisgICAgVmRkVi52WzFdLmhbaV0gID0gZk1QWThVUyhm R0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdFVEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygxNix2bXB5YnVzX2FjYywiVnh4MzIrPXZt cHlidXMoVnUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcHkoVnUzMi51YixSdDMyLmIpIiwKKyJWZWN0 b3IgYWJzb2x1dGUgdmFsdWUgb2Ygd29yZHMiLAorICAgIFZ4eFYudlswXS5oW2ldICs9IGZNUFk4 VVMoZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSksIGZHRVRCWVRFKCgyKmkrMCklNCwgUnRWKSk7Cisg ICAgVnh4Vi52WzFdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSwgZkdF VEJZVEUoKDIqaSsxKSU0LCBSdFYpKSkKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VC TEVfVkVDKDE2LHZtcGFidXMsIlZkZDMyPXZtcGFidXMoVnV1MzIsUnQzMikiLCJWZGQzMi5oPXZt cGEoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVmRk Vi52WzBdLmhbaV0gPSBmTVBZOFVTKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VU QllURSgwLCBSdFYpKSArIGZNUFkxNlNTKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBm R0VUQllURSgxLCBSdFYpKTsKKyAgICBWZGRWLnZbMV0uaFtpXSA9IGZNUFk4VVMoZkdFVFVCWVRF KDEsIFZ1dVYudlswXS51aFtpXSksIGZHRVRCWVRFKDIsIFJ0VikpICsgZk1QWTE2U1MoZkdFVFVC WVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRCWVRFKDMsIFJ0VikpKQorCitJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDE2LHZtcGFidXNfYWNjLCJWeHgzMis9dm1wYWJ1cyhW dXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcGEoVnV1MzIudWIsUnQzMi5iKSIsCisiVmVydGljYWwg Qnl0ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUo MCwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUoMCwgUnRWKSkgKyBmTVBZMTZTUyhmR0VUVUJZ VEUoMCwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZVEUoMSwgUnRWKSk7CisgICAgVnh4Vi52WzFd LmhbaV0gKz0gZk1QWThVUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzBdLnVoW2ldKSwgZkdFVEJZVEUo MiwgUnRWKSkgKyBmTVBZMTZTUyhmR0VUVUJZVEUoMSwgVnV1Vi52WzFdLnVoW2ldKSwgZkdFVEJZ VEUoMywgUnRWKSkpCisKKy8vIFY2NQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVf VkVDX05PVjEoMTYsdm1wYWJ1dSwiVmRkMzI9dm1wYWJ1dShWdXUzMixSdDMyKSIsIlZkZDMyLmg9 dm1wYShWdXUzMi51YixSdDMyLnViKSIsCisiVmVydGljYWwgQnl0ZSBNdWx0aXBseSIsCisgICAg VmRkVi52WzBdLnVoW2ldID0gZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzBdLnVoW2ldKSwg ZkdFVFVCWVRFKDAsIFJ0VikpICsgZk1QWThVVShmR0VUVUJZVEUoMCwgVnV1Vi52WzFdLnVoW2ld KSwgZkdFVFVCWVRFKDEsIFJ0VikpOworICAgIFZkZFYudlsxXS51aFtpXSA9IGZNUFk4VVUoZkdF VFVCWVRFKDEsIFZ1dVYudlswXS51aFtpXSksIGZHRVRVQllURSgyLCBSdFYpKSArIGZNUFk4VVUo ZkdFVFVCWVRFKDEsIFZ1dVYudlsxXS51aFtpXSksIGZHRVRVQllURSgzLCBSdFYpKSkKKworSVRF UkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQ19OT1YxKDE2LHZtcGFidXVfYWNjLCJWeHgz Mis9dm1wYWJ1dShWdXUzMixSdDMyKSIsIlZ4eDMyLmgrPXZtcGEoVnV1MzIudWIsUnQzMi51Yiki LAorIlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZ4eFYudlswXS51aFtpXSArPSBmTVBZ OFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMF0udWhbaV0pLCBmR0VUVUJZVEUoMCwgUnRWKSkgKyBm TVBZOFVVKGZHRVRVQllURSgwLCBWdXVWLnZbMV0udWhbaV0pLCBmR0VUVUJZVEUoMSwgUnRWKSk7 CisgICAgVnh4Vi52WzFdLnVoW2ldICs9IGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlswXS51 aFtpXSksIGZHRVRVQllURSgyLCBSdFYpKSArIGZNUFk4VVUoZkdFVFVCWVRFKDEsIFZ1dVYudlsx XS51aFtpXSksIGZHRVRVQllURSgzLCBSdFYpKSkKKworCisKKworLyogSGFsZiBieSBCeXRlICov CitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcGFoYiwiVmRkMzI9dm1w YWhiKFZ1dTMyLFJ0MzIpIiwiVmRkMzIudz12bXBhKFZ1dTMyLmgsUnQzMi5iKSIsCisiVmVydGlj YWwgQnl0ZSBNdWx0aXBseSIsCisgICAgVmRkVi52WzBdLndbaV0gPSBmTVBZMTZTUyhmR0VUSEFM RigwLCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMCwgUnRWKSkpICsgZk1QWTE2 U1MoZkdFVEhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDEsIFJ0Vikp KTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYudlswXS53 W2ldKSwgZlNFOF8xNihmR0VUQllURSgyLCBSdFYpKSkgKyBmTVBZMTZTUyhmR0VUSEFMRigxLCBW dXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMywgUnRWKSkpKQorCitJVEVSQVRPUl9J TlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZtcGFoYl9hY2MsIlZ4eDMyKz12bXBhaGIoVnV1 MzIsUnQzMikiLCJWeHgzMi53Kz12bXBhKFZ1dTMyLmgsUnQzMi5iKSIsCisiVmVydGljYWwgQnl0 ZSBNdWx0aXBseSIsCisgICAgVnh4Vi52WzBdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMCwg VnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAsIFJ0VikpKSArIGZNUFkxNlNTKGZH RVRIQUxGKDAsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgxLCBSdFYpKSk7Cisg ICAgVnh4Vi52WzFdLndbaV0gKz0gZk1QWTE2U1MoZkdFVEhBTEYoMSwgVnV1Vi52WzBdLndbaV0p LCBmU0U4XzE2KGZHRVRCWVRFKDIsIFJ0VikpKSArIGZNUFkxNlNTKGZHRVRIQUxGKDEsIFZ1dVYu dlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYpKSkpCisKKy8qIEhhbGYgYnkgQnl0 ZSAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXBhdWhiLCJWZGQz Mj12bXBhdWhiKFZ1dTMyLFJ0MzIpIiwiVmRkMzIudz12bXBhKFZ1dTMyLnVoLFJ0MzIuYikiLAor IlZlcnRpY2FsIEJ5dGUgTXVsdGlwbHkiLAorICAgIFZkZFYudlswXS53W2ldID0gZk1QWTE2VVMo ZkdFVFVIQUxGKDAsIFZ1dVYudlswXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgwLCBSdFYpKSkg KyBmTVBZMTZVUyhmR0VUVUhBTEYoMCwgVnV1Vi52WzFdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRF KDEsIFJ0VikpKTsKKyAgICBWZGRWLnZbMV0ud1tpXSA9IGZNUFkxNlVTKGZHRVRVSEFMRigxLCBW dXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2VVMoZkdF VFVIQUxGKDEsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYpKSkpCisK K0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1wYXVoYl9hY2MsIlZ4eDMy Kz12bXBhdWhiKFZ1dTMyLFJ0MzIpIiwiVnh4MzIudys9dm1wYShWdXUzMi51aCxSdDMyLmIpIiwK KyJWZXJ0aWNhbCBCeXRlIE11bHRpcGx5IiwKKyAgICBWeHhWLnZbMF0ud1tpXSArPSBmTVBZMTZV UyhmR0VUVUhBTEYoMCwgVnV1Vi52WzBdLndbaV0pLCBmU0U4XzE2KGZHRVRCWVRFKDAsIFJ0Vikp KSArIGZNUFkxNlVTKGZHRVRVSEFMRigwLCBWdXVWLnZbMV0ud1tpXSksIGZTRThfMTYoZkdFVEJZ VEUoMSwgUnRWKSkpOworICAgIFZ4eFYudlsxXS53W2ldICs9IGZNUFkxNlVTKGZHRVRVSEFMRigx LCBWdXVWLnZbMF0ud1tpXSksIGZTRThfMTYoZkdFVEJZVEUoMiwgUnRWKSkpICsgZk1QWTE2VVMo ZkdFVFVIQUxGKDEsIFZ1dVYudlsxXS53W2ldKSwgZlNFOF8xNihmR0VUQllURSgzLCBSdFYpKSkp CisKKworCisKKworCisKKy8qIEhhbGYgYnkgSGFsZiAqLworSVRFUkFUT1JfSU5TTjJfTVBZX1NM T1RfRE9VQkxFX1ZFQygzMix2bXB5aCwiVmRkMzI9dm1weWgoVnUzMixSdDMyKSIsIlZkZDMyLnc9 dm1weShWdTMyLmgsUnQzMi5oKSIsCisiVmVjdG9yIGFic29sdXRlIHZhbHVlIG9mIHdvcmRzIiwK KyAgICBWZGRWLnZbMF0ud1tpXSA9ICBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZH RVRIQUxGKDAsIFJ0VikpOworICAgIFZkZFYudlsxXS53W2ldID0gIGZNUFkxNlNTKGZHRVRIQUxG KDEsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMSwgUnRWKSkpCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUNfTk9WMSgzMix2bXB5aF9hY2MsIlZ4eDMyKz12bXB5aChWdTMyLFJ0MzIp IiwiVnh4MzIudys9dm1weShWdTMyLmgsUnQzMi5oKSIsCisiVmVjdG9yIGV2ZW4gaGFsZndvcmRz IHdpdGggc2NhbGFyIGxvd2VyIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggc2hpZnQgYW5kIHNhdDMy IiwKKyAgICBWeHhWLnZbMF0ud1tpXSA9ICBmQ0FTVDhzKFZ4eFYudlswXS53W2ldKSArIGZNUFkx NlNTKGZHRVRIQUxGKDAsIFZ1Vi53W2ldKSwgZkdFVEhBTEYoMCwgUnRWKSk7CisgICAgVnh4Vi52 WzFdLndbaV0gPSAgZkNBU1Q4cyhWeHhWLnZbMV0ud1tpXSkgKyBmTVBZMTZTUyhmR0VUSEFMRigx LCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKQorCisKK0lURVJBVE9SX0lOU04yX01QWV9T TE9UX0RPVUJMRV9WRUMoMzIsdm1weWhzYXRfYWNjLCJWeHgzMis9dm1weWgoVnUzMixSdDMyKTpz YXQiLCJWeHgzMi53Kz12bXB5KFZ1MzIuaCxSdDMyLmgpOnNhdCIsCisiVmVjdG9yIGV2ZW4gaGFs ZndvcmRzIHdpdGggc2NhbGFyIGxvd2VyIGhhbGZ3b3JkIG11bHRpcGx5IHdpdGggc2hpZnQgYW5k IHNhdDMyIiwKKyAgICBWeHhWLnZbMF0ud1tpXSA9ICBmVlNBVFcoZkNBU1Q4cyhWeHhWLnZbMF0u d1tpXSkgKyBmTVBZMTZTUyhmR0VUSEFMRigwLCBWdVYud1tpXSksIGZHRVRIQUxGKDAsIFJ0Vikp KTsKKyAgICBWeHhWLnZbMV0ud1tpXSA9ICBmVlNBVFcoZkNBU1Q4cyhWeHhWLnZbMV0ud1tpXSkg KyBmTVBZMTZTUyhmR0VUSEFMRigxLCBWdVYud1tpXSksIGZHRVRIQUxGKDEsIFJ0VikpKSkKKwor CisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWhzcywiVmQzMj12 bXB5aChWdTMyLFJ0MzIpOjw8MTpzYXQiLCJWZDMyLmg9dm1weShWdTMyLmgsUnQzMi5oKTo8PDE6 c2F0IiwKKyJWZWN0b3IgaGFsZndvcmQgYnkgaGFsZndvcmQgbXVsdGlwbHksIHNoaWZ0IGJ5IDEs IGFuZCB0YWtlIHVwcGVyIDE2IG1zYiIsCisgICAgICAgICAgZlNFVEhBTEYoMCxWZFYud1tpXSxm VlNBVEgoZkdFVEhBTEYoMSxmVlNBVCgoZk1QWTE2U1MoZkdFVEhBTEYoMCxWdVYud1tpXSksZkdF VEhBTEYoMCxSdFYpKTw8MSkpKSkpOworICAgICAgICAgIGZTRVRIQUxGKDEsVmRWLndbaV0sZlZT QVRIKGZHRVRIQUxGKDEsZlZTQVQoKGZNUFkxNlNTKGZHRVRIQUxGKDEsVnVWLndbaV0pLGZHRVRI QUxGKDEsUnRWKSk8PDEpKSkpKTsKKykKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfRE9VQkxF X1ZFQygzMix2bXB5aHNycywiVmQzMj12bXB5aChWdTMyLFJ0MzIpOjw8MTpybmQ6c2F0IiwiVmQz Mi5oPXZtcHkoVnUzMi5oLFJ0MzIuaCk6PDwxOnJuZDpzYXQiLAorIlZlY3RvciBoYWxmd29yZCB3 aXRoIHNjYWxhciBoYWxmd29yZCBtdWx0aXBseSB3aXRoIHJvdW5kLCBzaGlmdCwgYW5kIHNhdDE2 IiwKKyAgICAgICBmU0VUSEFMRigwLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZWU0FUKGZS T1VORCgoZk1QWTE2U1MoZkdFVEhBTEYoMCxWdVYud1tpXSksZkdFVEhBTEYoMCxSdFYpKTw8MSkp KSkpKTsKKyAgICAgICBmU0VUSEFMRigxLFZkVi53W2ldLGZWU0FUSChmR0VUSEFMRigxLGZWU0FU KGZST1VORCgoZk1QWTE2U1MoZkdFVEhBTEYoMSxWdVYud1tpXSksZkdFVEhBTEYoMSxSdFYpKTw8 MSkpKSkpKTsKKykKKworCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVF9ET1VCTEVfVkVDKDMyLHZt cHl1aCwiVmRkMzI9dm1weXVoKFZ1MzIsUnQzMikiLCJWZGQzMi51dz12bXB5KFZ1MzIudWgsUnQz Mi51aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5IGJ5IHNjYWxh ciIsCisgICAgVmRkVi52WzBdLnV3W2ldID0gZk1QWTE2VVUoZkdFVFVIQUxGKDAsIFZ1Vi51d1tp XSksZkdFVFVIQUxGKDAsUnRWKSk7CisgICAgVmRkVi52WzFdLnV3W2ldID0gZk1QWTE2VVUoZkdF VFVIQUxGKDEsIFZ1Vi51d1tpXSksZkdFVFVIQUxGKDEsUnRWKSkpCisKKworSVRFUkFUT1JfSU5T TjJfTVBZX1NMT1RfRE9VQkxFX1ZFQygzMix2bXB5dWhfYWNjLCJWeHgzMis9dm1weXVoKFZ1MzIs UnQzMikiLCJWeHgzMi51dys9dm1weShWdTMyLnVoLFJ0MzIudWgpIiwKKyJWZWN0b3IgZXZlbiBo YWxmd29yZCB1bnNpZ25lZCBtdWx0aXBseSBieSBzY2FsYXIiLAorICAgIFZ4eFYudlswXS51d1tp XSArPSBmTVBZMTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKTsK KyAgICBWeHhWLnZbMV0udXdbaV0gKz0gZk1QWTE2VVUoZkdFVFVIQUxGKDEsIFZ1Vi51d1tpXSks ZkdFVFVIQUxGKDEsUnRWKSkpCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorKiAgSEFMRiBCWSBCWVRFCisqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UKDE2LHZtcHlp aGIsIlZkMzI9dm1weWloYihWdTMyLFJ0MzIpIiwiVmQzMi5oPXZtcHlpKFZ1MzIuaCxSdDMyLmIp IiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2VyIHJlc3VsdCIsCitW ZFYuaFtpXSAgPSBmTVBZMTZTUyhWdVYuaFtpXSwgZkdFVEJZVEUoaSAlIDQsIFJ0VikgKSkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMTYsdm1weWloYl9hY2MsIlZ4MzIrPXZtcHlpaGIoVnUz MixSdDMyKSIsIlZ4MzIuaCs9dm1weWkoVnUzMi5oLFJ0MzIuYikiLAorIlZlY3RvciB3b3JkIGJ5 IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi5oW2ldICs9IGZNUFkxNlNT KFZ1Vi5oW2ldLCBmR0VUQllURShpICUgNCwgUnRWKSApKQorCisKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgV09SRCBCWSBCWVRFCisqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9T TE9UKDMyLHZtcHlpd2IsIlZkMzI9dm1weWl3YihWdTMyLFJ0MzIpIiwiVmQzMi53PXZtcHlpKFZ1 MzIudyxSdDMyLmIpIiwKKyJWZWN0b3Igd29yZCBieSBieXRlIG11bHRpcGx5LCBrZWVwIGxvd2Vy IHJlc3VsdCIsCitWZFYud1tpXSAgPSBmTVBZMzJTUyhWdVYud1tpXSwgZkdFVEJZVEUoaSAlIDQs IFJ0VikgKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1QoMzIsdm1weWl3Yl9hY2MsIlZ4MzIr PXZtcHlpd2IoVnUzMixSdDMyKSIsIlZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIuYikiLAorIlZl Y3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi53W2ld ICs9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUQllURShpICUgNCwgUnRWKSApKQorCitJVEVSQVRP Ul9JTlNOMl9NUFlfU0xPVCgzMix2bXB5aXd1YiwiVmQzMj12bXB5aXd1YihWdTMyLFJ0MzIpIiwi VmQzMi53PXZtcHlpKFZ1MzIudyxSdDMyLnViKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0 aXBseSwga2VlcCBsb3dlciByZXN1bHQiLAorVmRWLndbaV0gID0gZk1QWTMyU1MoVnVWLndbaV0s IGZHRVRVQllURShpICUgNCwgUnRWKSApKQorCitJVEVSQVRPUl9JTlNOMl9NUFlfU0xPVCgzMix2 bXB5aXd1Yl9hY2MsIlZ4MzIrPXZtcHlpd3ViKFZ1MzIsUnQzMikiLCJWeDMyLncrPXZtcHlpKFZ1 MzIudyxSdDMyLnViKSIsCisiVmVjdG9yIHdvcmQgYnkgYnl0ZSBtdWx0aXBseSwga2VlcCBsb3dl ciByZXN1bHQiLAorVnhWLndbaV0gKz0gZk1QWTMyU1MoVnVWLndbaV0sIGZHRVRVQllURShpICUg NCwgUnRWKSApKQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKiAgV09SRCBCWSBIQUxGCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KK0lURVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWl3 aCwiVmQzMj12bXB5aXdoKFZ1MzIsUnQzMikiLCJWZDMyLnc9dm1weWkoVnUzMi53LFJ0MzIuaCki LAorIlZlY3RvciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Zk Vi53W2ldICA9IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUSEFMRihpICUgMiwgUnRWKSkpCisKK0lU RVJBVE9SX0lOU04yX01QWV9TTE9UX0RPVUJMRV9WRUMoMzIsdm1weWl3aF9hY2MsIlZ4MzIrPXZt cHlpd2goVnUzMixSdDMyKSIsIlZ4MzIudys9dm1weWkoVnUzMi53LFJ0MzIuaCkiLAorIlZlY3Rv ciB3b3JkIGJ5IGJ5dGUgbXVsdGlwbHksIGtlZXAgbG93ZXIgcmVzdWx0IiwKK1Z4Vi53W2ldICs9 IGZNUFkzMlNTKFZ1Vi53W2ldLCBmR0VUSEFMRihpICUgMiwgUnRWKSkpCisKKworCisKKworCisK KworCisKKworCisKKworCisKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogTU1WRUNUT1Ig TE9HSUNBTCBPUEVSQVRJT05TCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitJVEVSQVRPUl9JTlNOX0FO WV9TTE9UKDE2LHZhbmQsIlZkMzI9dmFuZChWdTMyLFZ2MzIpIiwgIlZlY3RvciBMb2dpY2FsIEFu ZCIsIFZkVi51aFtpXSA9IFZ1Vi51aFtpXSAmIFZ2Vi5oW2ldKQorSVRFUkFUT1JfSU5TTl9BTllf U0xPVCgxNix2b3IsICJWZDMyPXZvcihWdTMyLFZ2MzIpIiwgICJWZWN0b3IgTG9naWNhbCBPciIs IFZkVi51aFtpXSA9IFZ1Vi51aFtpXSB8IFZ2Vi5oW2ldKQorSVRFUkFUT1JfSU5TTl9BTllfU0xP VCgxNix2eG9yLCJWZDMyPXZ4b3IoVnUzMixWdjMyKSIsICJWZWN0b3IgTG9naWNhbCBYT1IiLCAg ICBWZFYudWhbaV0gPSBWdVYudWhbaV0gXiBWdlYuaFtpXSkKK0lURVJBVE9SX0lOU05fQU5ZX1NM T1QoMTYsdm5vdCwiVmQzMj12bm90KFZ1MzIpIiwgICAgICJWZWN0b3IgTG9naWNhbCBOT1QiLCBW ZFYudWhbaV0gPSB+VnVWLnVoW2ldKQorCisKKworCisKK0lURVJBVE9SX0lOU04yX01QWV9TTE9U X0xBVEUoOCwgdmFuZHFydCwKKyJWZDMyLnViPXZhbmQoUXU0LnViLFJ0MzIudWIpIiwgIlZkMzI9 dmFuZChRdTQsUnQzMikiLCAiSW5zZXJ0IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAgVmRW LnViW2ldID0gZkdFVFFCSVQoUXVWLGkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkKKwor SVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kcXJ0X2FjYywKKyJWeDMyLnVifD12 YW5kKFF1NC51YixSdDMyLnViKSIsICJWeDMyfD12YW5kKFF1NCxSdDMyKSIsICAiSW5zZXJ0IFBy ZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAgVnhWLnViW2ldIHw9IChmR0VUUUJJVChRdVYsaSkp ID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1Rf TEFURSg4LCB2YW5kbnFydCwKKyJWZDMyLnViPXZhbmQoIVF1NC51YixSdDMyLnViKSIsICJWZDMy PXZhbmQoIVF1NCxSdDMyKSIsICJJbnNlcnQgUHJlZGljYXRlIGludG8gVmVjdG9yIiwKKyAgICBW ZFYudWJbaV0gPSAhZkdFVFFCSVQoUXVWLGkpID8gZkdFVFVCWVRFKGkgJSA0LCBSdFYpIDogMCkK KworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kbnFydF9hY2MsCisiVngzMi51 Ynw9dmFuZCghUXU0LnViLFJ0MzIudWIpIiwgIlZ4MzJ8PXZhbmQoIVF1NCxSdDMyKSIsICAiSW5z ZXJ0IFByZWRpY2F0ZSBpbnRvIFZlY3RvciIsCisgICAgVnhWLnViW2ldIHw9ICEoZkdFVFFCSVQo UXVWLGkpKSA/IGZHRVRVQllURShpICUgNCwgUnRWKSA6IDApCisKKworSVRFUkFUT1JfSU5TTjJf TVBZX1NMT1RfTEFURSg4LCB2YW5kdnJ0LAorIlFkNC51Yj12YW5kKFZ1MzIudWIsUnQzMi51Yiki LCAiUWQ0PXZhbmQoVnUzMixSdDMyKSIsICJJbnNlcnQgaW50byBQcmVkaWNhdGUiLAorICAgIGZT RVRRQklUKFFkVixpLCgoVnVWLnViW2ldICYgZkdFVFVCWVRFKGkgJSA0LCBSdFYpKSAhPSAwKSA/ IDEgOiAwKSkKKworSVRFUkFUT1JfSU5TTjJfTVBZX1NMT1RfTEFURSg4LCB2YW5kdnJ0X2FjYywK KyJReDQudWJ8PXZhbmQoVnUzMi51YixSdDMyLnViKSIsICJReDR8PXZhbmQoVnUzMixSdDMyKSIs ICJJbnNlcnQgaW50byBQcmVkaWNhdGUgIiwKKyAgICBmU0VUUUJJVChReFYsaSxmR0VUUUJJVChR eFYsaSl8KCgoVnVWLnViW2ldICYgZkdFVFVCWVRFKGkgJSA0LCBSdFYpKSAhPSAwKSA/IDEgOiAw KSkpCisKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1QoOCx2YW5kdnF2LCJWZDMyPXZhbmQoUXY0LFZ1 MzIpIiwiTWFzayBvZmYgYnl0ZXMiLAorVmRWLmJbaV0gPSBmR0VUUUJJVChRdlYsaSkgPyBWdVYu YltpXSA6IDApCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgsdmFuZHZucXYsIlZkMzI9dmFuZCgh UXY0LFZ1MzIpIiwiTWFzayBvZmYgYnl0ZXMiLAorVmRWLmJbaV0gPSAhZkdFVFFCSVQoUXZWLGkp ID8gVnVWLmJbaV0gOiAwKQorCisKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiBDb21wYXJlIFZlY3RvciB3aXRoIFZlY3RvcgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUg VkNNUChERVNULCBBU1JDLCBBU1JDT1AsIENNUCwgTiwgU1JDLCBNQVNLLCBXSURUSCkgICAgICAg IFwKK3sgXAorICAgICAgIGZvcihmSElERShpbnQpIGkgPSAwOyBpIDwgZlZCWVRFUygpOyBpICs9 IFdJRFRIKSB7IFwKKwkJZlNFVFFCSVRTKERFU1QsV0lEVEgsTUFTSyxpLEFTUkMgQVNSQ09QICgo VnVWLlNSQ1tpL1dJRFRIXSBDTVAgVnZWLlNSQ1tpL1dJRFRIXSkgPyBNQVNLIDogMCkpOyBcCisg ICAgfSBcCisgICAgICAgfQorCisKKyNkZWZpbmUgTU1WRUNfQ01QR1QoVFlQRSxUWVBFMixUWVBF MyxERVNDUixOLE1BU0ssV0lEVEgsU1JDKSBcCitFWFRJTlNOKFY2X3ZndCMjVFlQRSwgICAgICAg IlFkND12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsICBBVFRSSUJTKEFf RVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiIsIFwKKwlWQ01Q KFFkViwgLCAsID4sIE4sIFNSQywgTUFTSywgV0lEVEgpKSBcCitFWFRJTlNOKFY2X3ZndCMjVFlQ RSMjX2FuZCwgIlF4NCY9dmNtcC5ndChWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiB3 aXRoIHByZWRpY2F0ZS1hbmQiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFT SyxpKSwgJiwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmd0IyNUWVBF IyNfb3IsICAiUXg0fD12Y21wLmd0KFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsIEFU VFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZ3JlYXRlciB0aGFuIHdp dGggcHJlZGljYXRlLW9yIiwgXAorCVZDTVAoUXhWLCBmR0VUUUJJVFMoUXhWLFdJRFRILE1BU0ss aSksIHwsID4sIE4sIFNSQywgTUFTSywgV0lEVEgpKSBcCitFWFRJTlNOKFY2X3ZndCMjVFlQRSMj X3hvciwgIlF4NF49dmNtcC5ndChWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCBBVFRS SUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZBKSwgREVTQ1IiIGdyZWF0ZXIgdGhhbiB3aXRo IHByZWRpY2F0ZS14b3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxp KSwgXiwgPiwgTiwgU1JDLCBNQVNLLCBXSURUSCkpCisKKyNkZWZpbmUgTU1WRUNfQ01QKFRZUEUs VFlQRTIsVFlQRTMsREVTQ1IsTixNQVNLLCBXSURUSCwgU1JDKVwKK01NVkVDX0NNUEdUKFRZUEUs VFlQRTIsVFlQRTMsREVTQ1IsTixNQVNLLFdJRFRILFNSQykgXAorRVhUSU5TTihWNl92ZXEjI1RZ UEUsICAgICAgICJRZDQ9dmNtcC5lcShWdTMyLiIgVFlQRTIgIixWdjMyLiIgVFlQRTIgIikiLCAg QVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERFU0NSIiBlcXVhbCB0byIsIFwK KwlWQ01QKFFkViwgLCAsID09LCBOLCBTUkMsIE1BU0ssIFdJRFRIKSkgXAorRVhUSU5TTihWNl92 ZXEjI1RZUEUjI19hbmQsICJReDQmPXZjbXAuZXEoVnUzMi4iIFRZUEUyICIsVnYzMi4iIFRZUEUy ICIpIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WQSksIERFU0NSIiBlcXVhbHRv IHdpdGggcHJlZGljYXRlLWFuZCIsIFwKKwlWQ01QKFF4ViwgZkdFVFFCSVRTKFF4VixXSURUSCxN QVNLLGkpLCAmLCA9PSwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmVxIyNU WVBFIyNfb3IsICAiUXg0fD12Y21wLmVxKFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIs IEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZXF1YWx0byB3aXRo IHByZWRpY2F0ZS1vciIsIFwKKwlWQ01QKFF4ViwgZkdFVFFCSVRTKFF4VixXSURUSCxNQVNLLGkp LCB8LCA9PSwgTiwgU1JDLCBNQVNLLCBXSURUSCkpIFwKK0VYVElOU04oVjZfdmVxIyNUWVBFIyNf eG9yLCAiUXg0Xj12Y21wLmVxKFZ1MzIuIiBUWVBFMiAiLFZ2MzIuIiBUWVBFMiAiKSIsIEFUVFJJ QlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEpLCBERVNDUiIgZXF1YWx0byB3aXRoIHByZWRp Y2F0ZS14b3IiLCBcCisJVkNNUChReFYsIGZHRVRRQklUUyhReFYsV0lEVEgsTUFTSyxpKSwgXiwg PT0sIE4sIFNSQywgTUFTSywgV0lEVEgpKQorCisKK01NVkVDX0NNUCh3LCJ3IiwiIiwiVmVjdG9y IFdvcmQgQ29tcGFyZSAiLCBmVkVMRU0oMzIpLCAweEYsIDQsIHcpCitNTVZFQ19DTVAoaCwiaCIs IiIsIlZlY3RvciBIYWxmIENvbXBhcmUgIiwgZlZFTEVNKDE2KSwgMHgzLCAyLCBoKQorTU1WRUNf Q01QKGIsImIiLCIiLCJWZWN0b3IgSGFsZiBDb21wYXJlICIsIGZWRUxFTSg4KSwgIDB4MSwgMSwg YikKK01NVkVDX0NNUEdUKHV3LCJ1dyIsIiIsIlZlY3RvciBVbnNpZ25lZCBIYWxmIENvbXBhcmUg IiwgZlZFTEVNKDMyKSwgMHhGLCA0LHV3KQorTU1WRUNfQ01QR1QodWgsInVoIiwiIiwiVmVjdG9y IFVuc2lnbmVkIEhhbGYgQ29tcGFyZSAiLCBmVkVMRU0oMTYpLCAweDMsIDIsdWgpCitNTVZFQ19D TVBHVCh1YiwidWIiLCIiLCJWZWN0b3IgVW5zaWduZWQgQnl0ZSBDb21wYXJlICIsIGZWRUxFTSg4 KSwgIDB4MSwgMSx1YikKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKiBQcmVkaWNhdGUgT3BlcmF0aW9ucworKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTlNOKFY2X3ByZWRfc2Nh bGFyMiwgIlFkND12c2V0cShSdDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9WUCksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAgZkhJREUoaW50 IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJVChRZFYsaSwo aSA8IChSdFYgJiAoZlZCWVRFUygpLTEpKSkgPyAxIDogMCk7Cit9KQorCitFWFRJTlNOKFY2X3By ZWRfc2NhbGFyMnYyLCAiUWQ0PXZzZXRxMihSdDMyKSIsICAgICAgICAgQVRUUklCUyhBX0VYVEVO U0lPTixBX0NWSSxBX0NWSV9WUCksICAgIlNldCBWZWN0b3IgUHJlZGljYXRlICIsCit7CisgICAg ZkhJREUoaW50IGk7KQorICAgIGZvcihpID0gMDsgaSA8IGZWQllURVMoKTsgaSsrKSBmU0VUUUJJ VChRZFYsaSwoaSA8PSAoKFJ0Vi0xKSAmIChmVkJZVEVTKCktMSkpKSA/IDEgOiAwKTsKK30pCisK KworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHNodWZmZXF3LCAiUWQ0Lmg9 dnNodWZmZShRczQudyxRdDQudykiLCJTaHJpbmsgUHJlZGljYXRlIiwgZlNFVFFCSVQoUWRWLGks IChpICYgMikgPyBmR0VUUUJJVChRc1YsaS0yKSA6IGZHRVRRQklUKFF0VixpKSApICkKK0lURVJB VE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBzaHVmZmVxaCwgIlFkNC5iPXZzaHVmZmUo UXM0LmgsUXQ0LmgpIiwiU2hyaW5rIFByZWRpY2F0ZSIsIGZTRVRRQklUKFFkVixpLCAoaSAmIDEp ID8gZkdFVFFCSVQoUXNWLGktMSkgOiBmR0VUUUJJVChRdFYsaSkgKSApCitJVEVSQVRPUl9JTlNO X0FOWV9TTE9UX0RPVUJMRV9WRUMoOCwgcHJlZF9vciwgIlFkND1vcihRczQsUXQ0KSIsIlZlY3Rv ciBQcmVkaWNhdGUgT3IiLCBmU0VUUUJJVChRZFYsaSxmR0VUUUJJVChRc1YsaSkgfHwgZkdFVFFC SVQoUXRWLGkpICkgKQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRf YW5kLCAiUWQ0PWFuZChRczQsUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUgQW5kIiwgZlNFVFFCSVQo UWRWLGksZkdFVFFCSVQoUXNWLGkpICYmIGZHRVRRQklUKFF0VixpKSApICkKK0lURVJBVE9SX0lO U05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBwcmVkX3hvciwgIlFkND14b3IoUXM0LFF0NCkiLCJW ZWN0b3IgUHJlZGljYXRlIFhvciIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixpKSBeIGZH RVRRQklUKFF0VixpKSApICkKK0lURVJBVE9SX0lOU05fQU5ZX1NMT1RfRE9VQkxFX1ZFQyg4LCBw cmVkX29yX24sICJRZDQ9b3IoUXM0LCFRdDQpIiwiVmVjdG9yIFByZWRpY2F0ZSBPciB3aXRoIG5v dCIsIGZTRVRRQklUKFFkVixpLGZHRVRRQklUKFFzVixpKSB8fCAhZkdFVFFCSVQoUXRWLGkpICkg KQorSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsIHByZWRfYW5kX24sICJRZDQ9 YW5kKFFzNCwhUXQ0KSIsIlZlY3RvciBQcmVkaWNhdGUgQW5kICB3aXRoIG5vdCIsIGZTRVRRQklU KFFkVixpLGZHRVRRQklUKFFzVixpKSAmJiAhZkdFVFFCSVQoUXRWLGkpICkgKQorSVRFUkFUT1Jf SU5TTl9BTllfU0xPVCg4LCBwcmVkX25vdCwgIlFkND1ub3QoUXM0KSIsIlZlY3RvciBQcmVkaWNh dGUgTm90IiwgZlNFVFFCSVQoUWRWLGksIWZHRVRRQklUKFFzVixpKSApICkKKworCisKK0VYVElO U04oVjZfdmNtb3YsICAiaWYgKFBzNCkgVmQzMj1WdTMyIiwgIEFUVFJJQlMoQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVkEpLCAgICJDb25kaXRpb25hbCBNb3YiLAoreworaWYgKGZMU0JPTEQoUHNW KSkJeworCWZISURFKGludCBpOykKKwlmVkZPUkVBQ0goOCwgaSkgeworCQlWZFYudWJbaV0gPSBW dVYudWJbaV07CisJfQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKK0VYVElOU04oVjZfdm5jbW92 LCAgImlmICghUHM0KSBWZDMyPVZ1MzIiLCAgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9WQSksICAgIkNvbmRpdGlvbmFsIE1vdiIsCit7CitpZiAoZkxTQk9MRE5PVChQc1YpKQl7CisJ ZkhJREUoaW50IGk7KQorCWZWRk9SRUFDSCg4LCBpKSB7CisJCVZkVi51YltpXSA9IFZ1Vi51Yltp XTsKKwl9CisJfSBlbHNlIHtDQU5DRUw7fQorfSkKKworRVhUSU5TTihWNl92Y2NvbWJpbmUsICAi aWYgKFBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJT04s QV9DVkksQV9DVklfVkFfRFYpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNC T0xEKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRkVi52 WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07CisJ fQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKK0VYVElOU04oVjZfdm5jY29tYmluZSwgICJpZiAo IVBzNCkgVmRkMzI9dmNvbWJpbmUoVnUzMixWdjMyKSIsCUFUVFJJQlMoQV9FWFRFTlNJT04sQV9D VkksQV9DVklfVkFfRFYpLCAgICJDb25kaXRpb25hbCBDb21iaW5lIiwKK3sKK2lmIChmTFNCT0xE Tk9UKFBzVikpCXsKKwlmSElERShpbnQgaTspCisJZlZGT1JFQUNIKDgsIGkpIHsKKwkJVmRkVi52 WzBdLnViW2ldID0gVnZWLnViW2ldOworCQlWZGRWLnZbMV0udWJbaV0gPSBWdVYudWJbaV07CisJ fQorCX0gZWxzZSB7Q0FOQ0VMO30KK30pCisKKworCitJVEVSQVRPUl9JTlNOX0FOWV9TTE9UKDgs dm11eCwiVmQzMj12bXV4KFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU2VsZWN0IEVsZW1lbnQg OC1iaXQiLAorICAgIFZkVi51YltpXSA9IGZHRVRRQklUKFF0VixpKSA/IFZ1Vi51YltpXSA6IFZ2 Vi51YltpXSkKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdnN3YXAsIlZk ZDMyPXZzd2FwKFF0NCxWdTMyLFZ2MzIpIiwKKyJWZWN0b3IgU3dhcCBFbGVtZW50IDgtYml0IiwK KyAgICBWZGRWLnZbMF0udWJbaV0gPSAgZkdFVFFCSVQoUXRWLGkpID8gVnVWLnViW2ldIDogVnZW LnViW2ldOworCVZkZFYudlsxXS51YltpXSA9ICFmR0VUUUJJVChRdFYsaSkgPyBWdVYudWJbaV0g OiBWdlYudWJbaV0pCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgIE1NVkVDVE9SIFNP UlRJTkcKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgTU1WRUNfU09SVChUWVBF LFRZUEUyLERFU0NSLEVMRU1FTlRTSVpFLFNSQylcCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVChF TEVNRU5UU0laRSx2bWF4IyNUWVBFLCAiVmQzMj12bWF4IiBUWVBFMiAiKFZ1MzIsVnYzMikiLCAi VmQzMi4iI1NSQyI9dm1heChWdTMyLiIjU1JDIixWdjMyLiIjU1JDIikiLCAiVmVjdG9yICIgREVT Q1IgIiBtYXgiLCBWZFYuU1JDW2ldID0gKFZ1Vi5TUkNbaV0gPiBWdlYuU1JDW2ldKSA/IFZ1Vi5T UkNbaV0gOiAgVnZWLlNSQ1tpXSkgIFwKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKEVMRU1FTlRT SVpFLHZtaW4jI1RZUEUsICJWZDMyPXZtaW4iIFRZUEUyICIoVnUzMixWdjMyKSIsICJWZDMyLiIj U1JDIj12bWluKFZ1MzIuIiNTUkMiLFZ2MzIuIiNTUkMiKSIsICJWZWN0b3IgIiBERVNDUiAiIG1p biIsIFZkVi5TUkNbaV0gPSAoVnVWLlNSQ1tpXSA8IFZ2Vi5TUkNbaV0pID8gVnVWLlNSQ1tpXSA6 ICBWdlYuU1JDW2ldKQorCitNTVZFQ19TT1JUKGIsImIiLCAic2lnbmVkIGJ5dGUiLCAgICA4LCAg YikKK01NVkVDX1NPUlQodWIsInViIiwgInVuc2lnbmVkIGJ5dGUiLCAgICA4LCAgdWIpCitNTVZF Q19TT1JUKHVoLCJ1aCIsICJ1bnNpZ25lZCBoYWxmd29yZCIsMTYsIHVoKQorTU1WRUNfU09SVCho LCAgICJoIiwgICAgImhhbGZ3b3JkIiwgICAgICAgICAxNiwgaCkKK01NVkVDX1NPUlQodywgICAi dyIsICAgICJ3b3JkIiwgICAgICAgICAgICAgMzIsIHcpCisKKworCisKKworCisKKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorKiBTSFVGRkxFUworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdnNh dGh1YiwiVmQzMj12c2F0aHViKFZ1MzIsVnYzMikiLCJWZDMyLnViPXZzYXQoVnUzMi5oLFZ2MzIu aCkiLAorIlNhdHVyYXRlIGFuZCBwYWNrIDMyIGhhbGZ3b3JkcyB0byAzMiB1bnNpZ25lZCBieXRl cywgYW5kIGludGVybGVhdmUgdGhlbSIsCisgICAgZlNFVEJZVEUoMCwgVmRWLnVoW2ldLCBmVlNB VFVCKFZ2Vi5oW2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRWLnVoW2ldLCBmVlNBVFVCKFZ1Vi5o W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9UKDMyLHZzYXR3aCwiVmQzMj12c2F0d2go VnUzMixWdjMyKSIsIlZkMzIuaD12c2F0KFZ1MzIudyxWdjMyLncpIiwKKyJTYXR1cmF0ZSBhbmQg cGFjayAxNiB3b3JkcyB0byAxNiBoYWxmd29yZHMsIGFuZCBpbnRlcmxlYXZlIHRoZW0iLAorICAg IGZTRVRIQUxGKDAsIFZkVi53W2ldLCBmVlNBVEgoVnZWLndbaV0pKTsKKyAgICBmU0VUSEFMRigx LCBWZFYud1tpXSwgZlZTQVRIKFZ1Vi53W2ldKSkpCisKK0lURVJBVE9SX0lOU04yX0FOWV9TTE9U KDMyLHZzYXR1d3VoLCJWZDMyPXZzYXR1d3VoKFZ1MzIsVnYzMikiLCJWZDMyLnVoPXZzYXQoVnUz Mi51dyxWdjMyLnV3KSIsCisiU2F0dXJhdGUgYW5kIHBhY2sgMTYgd29yZHMgdG8gMTYgaGFsZndv cmRzLCBhbmQgaW50ZXJsZWF2ZSB0aGVtIiwKKyAgICBmU0VUSEFMRigwLCBWZFYud1tpXSwgZlZT QVRVSChWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZFYud1tpXSwgZlZTQVRVSChWdVYu dXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1QoMTYsdnNodWZmZWIsIlZkMzI9dnNo dWZmZWIoVnUzMixWdjMyKSIsIlZkMzIuYj12c2h1ZmZlKFZ1MzIuYixWdjMyLmIpIiwKKyJTaHVm ZmxlIGhhbGYgd29yZHMgd2l0aCBpbiBhIGxhbmUiLAorICAgIGZTRVRCWVRFKDAsIFZkVi51aFtp XSwgZkdFVFVCWVRFKDAsIFZ2Vi51aFtpXSkpOworICAgIGZTRVRCWVRFKDEsIFZkVi51aFtpXSwg ZkdFVFVCWVRFKDAsIFZ1Vi51aFtpXSkpKQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgxNix2 c2h1ZmZvYiwiVmQzMj12c2h1ZmZvYihWdTMyLFZ2MzIpIiwiVmQzMi5iPXZzaHVmZm8oVnUzMi5i LFZ2MzIuYikiLAorIlNodWZmbGUgaGFsZiB3b3JkcyB3aXRoIGluIGEgbGFuZSIsCisgICAgZlNF VEJZVEUoMCwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZWLnVoW2ldKSk7CisgICAgZlNFVEJZ VEUoMSwgVmRWLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnVWLnVoW2ldKSkpCisKK0lURVJBVE9SX0lO U04yX0FOWV9TTE9UKDMyLHZzaHVmZWgsIlZkMzI9dnNodWZmZWgoVnUzMixWdjMyKSIsIlZkMzIu aD12c2h1ZmZlKFZ1MzIuaCxWdjMyLmgpIiwKKyJTaHVmZmxlIGhhbGYgd29yZHMgd2l0aCBpbiBh IGxhbmUiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgZkdFVFVIQUxGKDAsIFZ2Vi51d1tp XSkpOworICAgIGZTRVRIQUxGKDEsIFZkVi51d1tpXSwgZkdFVFVIQUxGKDAsIFZ1Vi51d1tpXSkp KQorCitJVEVSQVRPUl9JTlNOMl9BTllfU0xPVCgzMix2c2h1Zm9oLCJWZDMyPXZzaHVmZm9oKFZ1 MzIsVnYzMikiLCJWZDMyLmg9dnNodWZmbyhWdTMyLmgsVnYzMi5oKSIsCisiU2h1ZmZsZSBoYWxm IHdvcmRzIHdpdGggaW4gYSBsYW5lIiwKKyAgICBmU0VUSEFMRigwLCBWZFYudXdbaV0sIGZHRVRV SEFMRigxLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIGZHRVRVSEFM RigxLCBWdVYudXdbaV0pKSkKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIERvdWJsZSBW ZWN0b3IgU2h1ZmZsZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitFWFRJTlNOKFY2X3ZzaHVmZiwg InZzaHVmZihWeTMyLFZ4MzIsUnQzMikiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9WUF9WUyksCisiMngyLT4yeDIgdHJhbnNwb3NlLCBmb3IgbXVsdGlwbGUgZGF0YSBzaXplcywg aW5wbGFjZSIsCit7CisJZkhJREUoaW50IG9mZnNldDspCisJZm9yIChvZmZzZXQ9MTsgb2Zmc2V0 PGZWQllURVMoKTsgb2Zmc2V0PDw9MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAg IGZISURFKGludCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYg b2Zmc2V0KSkgeworCQkJCQlmU1dBUEIoVnlWLnViW2tdLCBWeFYudWJbaytvZmZzZXRdKTsKKwkJ CQl9CisJCQl9CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92c2h1ZmZ2ZGQsICJWZGQzMj12 c2h1ZmYoVnUzMixWdjMyLFJ0OCkiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9W UF9WUyksCisiMngyLT4yeDIgdHJhbnNwb3NlIGZvciBtdWx0aXBsZSBkYXRhIHNpemVzIiwKK3sK KwlmSElERShpbnQgb2Zmc2V0OykKKwlWZGRWLnZbMF0gPSBWdlY7CisJVmRkVi52WzFdID0gVnVW OworCWZvciAob2Zmc2V0PTE7IG9mZnNldDxmVkJZVEVTKCk7IG9mZnNldDw8PTEpIHsKKwkJaWYg KCBSdFYgJiBvZmZzZXQpIHsKKwkJCSAgICBmSElERShpbnQgazspIFwKKwkJCQlmVkZPUkVBQ0go OCwgaykge1wKKwkJCQlpZiAoISggayAmIG9mZnNldCkpIHsKKwkJCQkJZlNXQVBCKFZkZFYudlsx XS51YltrXSwgVmRkVi52WzBdLnViW2srb2Zmc2V0XSk7CisJCQkJfQorCQkJfQorCQl9CisJfQor CX0pCisKK0VYVElOU04oVjZfdmRlYWwsICJ2ZGVhbChWeTMyLFZ4MzIsUnQzMikiLAorQVRUUklC UyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WUF9WUyksCisiIHZlY3RvciAtIHZlY3RvciBkZWFs IC0gb3IgZGVpbnRlcmxlYXZlLCBmb3IgbXVsdGlwbGUgZGF0YSBzaXplcywgaW5wbGFjZSIsCit7 CisJZkhJREUoaW50IG9mZnNldDspCisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+ MDsgb2Zmc2V0Pj49MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGlu dCBrOykgXAorCQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkg eworCQkJCQlmU1dBUEIoVnlWLnViW2tdLCBWeFYudWJbaytvZmZzZXRdKTsKKwkJCQl9CisJCQl9 CisJCX0KKwl9CisJfSkKKworRVhUSU5TTihWNl92ZGVhbHZkZCwgIlZkZDMyPXZkZWFsKFZ1MzIs VnYzMixSdDgpIiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlBfVlMpLAorIiB2 ZWN0b3IgLSB2ZWN0b3IgZGVhbCAtIG9yIGRlaW50ZXJsZWF2ZSwgZm9yIG11bHRpcGxlIGRhdGEg c2l6ZXMiLAoreworCWZISURFKGludCBvZmZzZXQ7KQorCVZkZFYudlswXSA9IFZ2VjsKKwlWZGRW LnZbMV0gPSBWdVY7CisJZm9yIChvZmZzZXQ9ZlZCWVRFUygpPj4xOyBvZmZzZXQ+MDsgb2Zmc2V0 Pj49MSkgeworCQlpZiAoIFJ0ViAmIG9mZnNldCkgeworCQkJICAgIGZISURFKGludCBrOykgXAor CQkJCWZWRk9SRUFDSCg4LCBrKSB7XAorCQkJCWlmICghKCBrICYgb2Zmc2V0KSkgeworCQkJCQlm U1dBUEIoVmRkVi52WzFdLnViW2tdLCBWZGRWLnZbMF0udWJbaytvZmZzZXRdKTsKKwkJCQl9CisJ CQl9CisJCX0KKwl9CisJfSkKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworSVRFUkFUT1Jf SU5TTjJfQU5ZX1NMT1RfRE9VQkxFX1ZFQygzMix2c2h1Zm9laCwiVmRkMzI9dnNodWZmb2VoKFZ1 MzIsVnYzMikiLCJWZGQzMi5oPXZzaHVmZm9lKFZ1MzIuaCxWdjMyLmgpIiwKKyJWZWN0b3IgU2h1 ZmZsZSBoYWxmIHdvcmRzIiwKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMF0udXdbaV0sIGZHRVRV SEFMRigwLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMF0udXdbaV0sIGZH RVRVSEFMRigwLCBWdVYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigwLCBWZGRWLnZbMV0udXdbaV0s IGZHRVRVSEFMRigxLCBWdlYudXdbaV0pKTsKKyAgICBmU0VUSEFMRigxLCBWZGRWLnZbMV0udXdb aV0sIGZHRVRVSEFMRigxLCBWdVYudXdbaV0pKSkKKworSVRFUkFUT1JfSU5TTjJfQU5ZX1NMT1Rf RE9VQkxFX1ZFQygxNix2c2h1Zm9lYiwiVmRkMzI9dnNodWZmb2ViKFZ1MzIsVnYzMikiLCJWZGQz Mi5iPXZzaHVmZm9lKFZ1MzIuYixWdjMyLmIpIiwKKyJWZWN0b3IgU2h1ZmZsZSBieXRlcyIsCisg ICAgZlNFVEJZVEUoMCwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnZWLnVoW2ldKSk7 CisgICAgZlNFVEJZVEUoMSwgVmRkVi52WzBdLnVoW2ldLCBmR0VUVUJZVEUoMCwgVnVWLnVoW2ld KSk7CisgICAgZlNFVEJZVEUoMCwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnZWLnVo W2ldKSk7CisgICAgZlNFVEJZVEUoMSwgVmRkVi52WzFdLnVoW2ldLCBmR0VUVUJZVEUoMSwgVnVW LnVoW2ldKSkpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorKiBEZWFsCisqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK0lURVJBVE9SX0lOU04y X1BFUk1VVEVfU0xPVCgzMiwgdmRlYWxoLCAiVmQzMj12ZGVhbGgoVnUzMikiLCAiVmQzMi5oPXZk ZWFsKFZ1MzIuaCkiLAorIkRlYWwgSGFsZndvcmRzIiwKKyAgICBWZFYudWhbaSAgXSA9IGZHRVRV SEFMRigwLCBWdVYudXdbaV0pOworICAgIFZkVi51aFtpK2ZWRUxFTSgzMildID0gZkdFVFVIQUxG KDEsIFZ1Vi51d1tpXSkpCisKK0lURVJBVE9SX0lOU04yX1BFUk1VVEVfU0xPVCgxNiwgdmRlYWxi LCAiVmQzMj12ZGVhbGIoVnUzMikiLCAiVmQzMi5iPXZkZWFsKFZ1MzIuYikiLAorIkRlYWwgSGFs ZndvcmRzIiwKKyAgICBWZFYudWJbaSAgIF0gPSBmR0VUVUJZVEUoMCwgVnVWLnVoW2ldKTsKKyAg ICBWZFYudWJbaStmVkVMRU0oMTYpXSA9IGZHRVRVQllURSgxLCBWdVYudWhbaV0pKQorCitJVEVS QVRPUl9JTlNOMl9QRVJNVVRFX1NMT1QoMzIsIHZkZWFsYjR3LCAgIlZkMzI9dmRlYWxiNHcoVnUz MixWdjMyKSIsICJWZDMyLmI9dmRlYWxlKFZ1MzIuYixWdjMyLmIpIiwKKyJEZWFsIFR3byBWZWN0 b3JzIEJ5dGVzIiwKKyAgICBWZFYudWJbMCtpIF0gPSBmR0VUVUJZVEUoMCwgVnZWLnV3W2ldKTsK KyAgICBWZFYudWJbZlZFTEVNKDMyKStpIF0gPSBmR0VUVUJZVEUoMiwgVnZWLnV3W2ldKTsKKyAg ICBWZFYudWJbMipmVkVMRU0oMzIpK2ldID0gZkdFVFVCWVRFKDAsIFZ1Vi51d1tpXSk7CisgICAg VmRWLnViWzMqZlZFTEVNKDMyKStpXSA9IGZHRVRVQllURSgyLCBWdVYudXdbaV0pKQorCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisqIHNodWZmbGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDMy LCB2c2h1ZmZoLCAiVmQzMj12c2h1ZmZoKFZ1MzIpIiwgIlZkMzIuaD12c2h1ZmYoVnUzMi5oKSIs CisiRGVhbCBIYWxmd29yZHMiLAorICAgIGZTRVRIQUxGKDAsIFZkVi51d1tpXSwgVnVWLnVoW2ld KTsKKyAgICBmU0VUSEFMRigxLCBWZFYudXdbaV0sIFZ1Vi51aFtpK2ZWRUxFTSgzMildKSkKKwor SVRFUkFUT1JfSU5TTjJfUEVSTVVURV9TTE9UKDE2LCB2c2h1ZmZiLCAiVmQzMj12c2h1ZmZiKFZ1 MzIpIiwgIlZkMzIuYj12c2h1ZmYoVnUzMi5iKSIsCisiRGVhbCBIYWxmd29yZHMiLAorICAgIGZT RVRCWVRFKDAsIFZkVi51aFtpXSwgVnVWLnViW2ldKTsKKyAgICBmU0VUQllURSgxLCBWZFYudWhb aV0sIFZ1Vi51YltpK2ZWRUxFTSgxNildKSkKKworCisKKworCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogSU5TRVJUIEFORCBF WFRSQUNUCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCitFWFRJTlNOKFY2X2V4dHJhY3R3LCAiUmQzMj12ZXh0cmFjdChWdTMyLFJzMzIp IiwKK0FUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVkEsQV9NRU1MSUtFLEFfUkVTVFJJ Q1RfU0xPVDBPTkxZKSwKKyJFeHRyYWN0IGFuIGVsZW1lbnQgZnJvbSBhIHZlY3RvciB0byBzY2Fs YXIiLAorZkhJREUod2FybigiUmROPSVkIFZ1Tj0lZCBSc049JWQgUnNWPTB4JTA4eCB3aWR4PSVk IixSZE4sVnVOLFJzTixSc1YsKChSc1YgJiAoZlZCWVRFUygpLTEpKSA+PiAyKSk7KQorUmRWID0g VnVWLnV3WyAoUnNWICYgKGZWQllURVMoKS0xKSkgPj4gMl07CitmSElERSh3YXJuKCJSZFY9MHgl MDh4IixSZFYpOykpCisKK0VYVElOU04oVjZfdmluc2VydHdyLCAiVngzMi53PXZpbnNlcnQoUnQz MikiLAorQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9WWCksCisiSW5zZXJ0IFdvcmQg U2NhbGFyIGludG8gVmVjdG9yIiwKK1Z4Vi51d1swXSA9IFJ0VjspCisKKworCisKK0lURVJBVE9S X0lOU05fTVBZX1NMT1RfTEFURSgzMixsdnNwbGF0dywgIlZkMzI9dnNwbGF0KFJ0MzIpIiwgIlJl cGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3Mgd29yZHMgaW4gdmVjdG9yIiwgVmRWLnV3W2ldID0gUnRW KQorCitJVEVSQVRPUl9JTlNOX01QWV9TTE9UX0xBVEUoMTYsbHZzcGxhdGgsICJWZDMyLmg9dnNw bGF0KFJ0MzIpIiwgIlJlcGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3MgaGFsdmVzIGluIHZlY3RvciIs IFZkVi51aFtpXSA9IFJ0VikKKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9MQVRFKDgsbHZzcGxh dGIsICJWZDMyLmI9dnNwbGF0KFJ0MzIpIiwgIlJlcGxpY2F0ZXMgc2NhbGFyIGFjY3Jvc3MgYnl0 ZXMgaW4gdmVjdG9yIiwgVmRWLnViW2ldID0gUnRWKQorCisKK0lURVJBVE9SX0lOU05fQU5ZX1NM T1QoMzIsdmFzc2lnbiwiVmQzMj1WdTMyIiwiQ29weSBhIHZlY3RvciIsVmRWLndbaV09VnVWLndb aV0pCisKKworSVRFUkFUT1JfSU5TTl9BTllfU0xPVF9ET1VCTEVfVkVDKDgsdmNvbWJpbmUsIlZk ZDMyPXZjb21iaW5lKFZ1MzIsVnYzMikiLAorIlZlY3RvciBhc3NpZ24sIEFueSB0d28gdG8gVmVj dG9yIFBhaXIiLAorICAgIFZkZFYudlswXS51YltpXSA9IFZ2Vi51YltpXTsKKyAgICBWZGRWLnZb MV0udWJbaV0gPSBWdVYudWJbaV0pCisKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisq IEdFTkVSQUwgUEVSTVVURSBORVRXT1JLUworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK0VYVElOU04oVjZfdmRlbHRhLCAiVmQz Mj12ZGVsdGEoVnUzMixWdjMyKSIsICAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklf VlApLAorIlJldmVyc2UgQmVuZXMgQnV0dGVyZmx5IG5ldHdvcmsgIiwKK3sKKyAgICBmSElERShp bnQgb2Zmc2V0OykKKyAgICBmSElERShpbnQgazspCisgICAgZkhJREUobW12ZWN0b3JfdCB0bXA7 KQorICAgIHRtcCA9IFZ1VjsKKyAgICBmb3IgKG9mZnNldD1mVkJZVEVTKCk7IChvZmZzZXQ+Pj0x KT4wOyApIHsKKyAgICAgICAgZm9yIChrID0gMDsgazxmVkJZVEVTKCk7IGsrKykgeworICAgICAg ICAgICAgVmRWLnViW2tdID0gKFZ2Vi51YltrXSZvZmZzZXQpID8gdG1wLnViW2teb2Zmc2V0XSA6 IHRtcC51YltrXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsg aysrKSB7CisgICAgICAgICAgICB0bXAudWJba10gPSBWZFYudWJba107CisgICAgICAgIH0KKyAg ICB9Cit9KQorCisKK0VYVElOU04oVjZfdnJkZWx0YSwgIlZkMzI9dnJkZWx0YShWdTMyLFZ2MzIp IiwgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlApLAorIkZvcndhcmQgQmVuZXMg QnV0dGVyZmx5IG5ldHdvcmsgIiwKK3sKKwlmSElERShpbnQgb2Zmc2V0OykKKyAgICBmSElERShp bnQgazspCisgICAgZkhJREUobW12ZWN0b3JfdCB0bXA7KQorICAgIHRtcCA9IFZ1VjsKKyAgICBm b3IgKG9mZnNldD0xOyBvZmZzZXQ8ZlZCWVRFUygpOyBvZmZzZXQ8PD0xKXsKKyAgICAgICAgZm9y IChrID0gMDsgazxmVkJZVEVTKCk7IGsrKykgeworICAgICAgICAgICAgVmRWLnViW2tdID0gKFZ2 Vi51YltrXSZvZmZzZXQpID8gdG1wLnViW2teb2Zmc2V0XSA6IHRtcC51YltrXTsKKyAgICAgICAg fQorICAgICAgICBmb3IgKGsgPSAwOyBrPGZWQllURVMoKTsgaysrKSB7CisgICAgICAgICAgICB0 bXAudWJba10gPSBWZFYudWJba107CisgICAgICAgIH0KKyAgICB9Cit9KQorCisKKworCisKK0lU RVJBVE9SX0lOU04yX1NISUZUX1NMT1QoMzIsdmNsMHcsIlZkMzI9dmNsMHcoVnUzMikiLCJWZDMy LnV3PXZjbDAoVnUzMi51dykiLCAgICAgICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdvcmQi LCAgICAgVmRWLnV3W2ldPWZDTDFfNCh+VnVWLnV3W2ldKSkKK0lURVJBVE9SX0lOU04yX1NISUZU X1NMT1QoMTYsdmNsMGgsIlZkMzI9dmNsMGgoVnUzMikiLCJWZDMyLnVoPXZjbDAoVnUzMi51aCki LCAgICAgICAgICJDb3VudCBMZWFkaW5nIFplcm9zIGluIFdvcmQiLCAgICBWZFYudWhbaV09ZkNM MV8yKH5WdVYudWhbaV0pKQorCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDMyLHZub3JtYW10 dywiVmQzMj12bm9ybWFtdHcoVnUzMikiLCJWZDMyLnc9dm5vcm1hbXQoVnUzMi53KSIsIk5vcm0g QW1vdW50IFdvcmQiLAorVmRWLndbaV09Zk1BWChmQ0wxXzQoflZ1Vi53W2ldKSxmQ0wxXzQoVnVW LndbaV0pKS0xOyBmSElERShJVjFERUFEKCk7KSkKK0lURVJBVE9SX0lOU04yX1NISUZUX1NMT1Qo MTYsdm5vcm1hbXRoLCJWZDMyPXZub3JtYW10aChWdTMyKSIsIlZkMzIuaD12bm9ybWFtdChWdTMy LmgpIiwiTm9ybSBBbW91bnQgSGFsZndvcmQiLAorVmRWLmhbaV09Zk1BWChmQ0wxXzIoflZ1Vi5o W2ldKSxmQ0wxXzIoVnVWLmhbaV0pKS0xOyBmSElERShJVjFERUFEKCk7KSkKKworSVRFUkFUT1Jf SU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMzIsdmFkZGNsYncsIlZkMzIudz12YWRkKHZjbGIoVnUz Mi53KSxWdjMyLncpIiwKKyJDb3VudCBsZWFkaW5nIGJpdHMgYW5kIGFkZCIsCitWZFYud1tpXSA9 IGZNQVgoZkNMMV80KH5WdVYud1tpXSksZkNMMV80KFZ1Vi53W2ldKSkgKyBWdlYud1tpXSkKKwor SVRFUkFUT1JfSU5TTl9TSElGVF9TTE9UX1ZWX0xBVEUoMTYsdmFkZGNsYmgsIlZkMzIuaD12YWRk KHZjbGIoVnUzMi5oKSxWdjMyLmgpIiwKKyJDb3VudCBsZWFkaW5nIGJpdHMgYW5kIGFkZCIsCitW ZFYuaFtpXSA9IGZNQVgoZkNMMV8yKH5WdVYuaFtpXSksZkNMMV8yKFZ1Vi5oW2ldKSkgKyBWdlYu aFtpXSkKKworCitJVEVSQVRPUl9JTlNOMl9TSElGVF9TTE9UKDE2LHZwb3Bjb3VudGgsIlZkMzI9 dnBvcGNvdW50aChWdTMyKSIsIlZkMzIuaD12cG9wY291bnQoVnUzMi5oKSIsICAgIkNvdW50IExl YWRpbmcgWmVyb3MgaW4gV29yZCIsICBWZFYudWhbaV09ZkNPVU5UT05FU18yKFZ1Vi51aFtpXSkp CisKKworI2RlZmluZSBmSElTVChJTlBVVFZFQykgXAorCWZVQVJDSF9OT1RFX1BVTVBfNFgoKTsg XAorCWZISURFKGludCBsYW5lOykgXAorCWZISURFKG1tdmVjdG9yX3QgdG1wOykgXAorCWZWRk9S RUFDSCgxMjgsIGxhbmUpIHsgXAorCQlmb3IgKGZISURFKGludCApaT0wOyBpPDEyOC84OyArK2kp IHsgXAorCQkJdW5zaWduZWQgY2hhciB2YWx1ZSA9IElOUFVUVkVDLnViWygxMjgvOCkqbGFuZStp XTsgXAorCQkJdW5zaWduZWQgY2hhciByZWdubyA9IHZhbHVlPj4zOyBcCisJCQl1bnNpZ25lZCBj aGFyIGVsZW1lbnQgPSB2YWx1ZSAmIDc7IFwKKwkJCVJFQURfRVhUX1ZSRUcocmVnbm8sdG1wLDAp OyBcCisJCQl0bXAudWhbKDEyOC8xNikqbGFuZSsoZWxlbWVudCldKys7IFwKKwkJCVdSSVRFX0VY VF9WUkVHKHJlZ25vLHRtcCxFWFRfTkVXKTsgXAorCQl9IFwKKwl9CisKKyNkZWZpbmUgZkhJU1RR KElOUFVUVkVDLFFWQUwpIFwKKwlmVUFSQ0hfTk9URV9QVU1QXzRYKCk7IFwKKwlmSElERShpbnQg bGFuZTspIFwKKwlmSElERShtbXZlY3Rvcl90IHRtcDspIFwKKwlmVkZPUkVBQ0goMTI4LCBsYW5l KSB7IFwKKwkJZm9yIChmSElERShpbnQgKWk9MDsgaTwxMjgvODsgKytpKSB7IFwKKwkJCXVuc2ln bmVkIGNoYXIgdmFsdWUgPSBJTlBVVFZFQy51YlsoMTI4LzgpKmxhbmUraV07IFwKKwkJCXVuc2ln bmVkIGNoYXIgcmVnbm8gPSB2YWx1ZT4+MzsgXAorCQkJdW5zaWduZWQgY2hhciBlbGVtZW50ID0g dmFsdWUgJiA3OyBcCisJCQlSRUFEX0VYVF9WUkVHKHJlZ25vLHRtcCwwKTsgXAorCQkJaWYgKGZH RVRRQklUKFFWQUwsMTI4LzgqbGFuZStpKSkgdG1wLnVoWygxMjgvMTYpKmxhbmUrKGVsZW1lbnQp XSsrOyBcCisJCQlXUklURV9FWFRfVlJFRyhyZWdubyx0bXAsRVhUX05FVyk7IFwKKwkJfSBcCisJ fQorCisKKworRVhUSU5TTihWNl92aGlzdCwgInZoaXN0IixBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJXzRTTE9UKSwgInZoaXN0IGluc3RydWN0aW9uIix7IGZISURFKG1tdmVjdG9yX3Qg aW5wdXRWZWM7KSBpbnB1dFZlYz1mVE1QVkRBVEEoKTsgZkhJU1QoaW5wdXRWZWMpOyB9KQorRVhU SU5TTihWNl92aGlzdHEsICJ2aGlzdChRdjQpIixBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFf Q1ZJXzRTTE9UKSwgInZoaXN0IGluc3RydWN0aW9uIix7IGZISURFKG1tdmVjdG9yX3QgaW5wdXRW ZWM7KSBpbnB1dFZlYz1mVE1QVkRBVEEoKTsgZkhJU1RRKGlucHV0VmVjLFF2Vik7IH0pCisKKyN1 bmRlZiBmSElTVAorI3VuZGVmIGZISVNUUQorCisKKy8qICoqKiogV0VJR0hURUQgSElTVE9HUkFN ICoqKiogKi8KKworCisjaWYgMQorI2RlZmluZSBXSElTVChFTCxNQVNLLEJTSElGVCxDT05ELFNB VEYpIFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIGJ1Y2tldCA9IGZHRVRVQllURSgwLGlucHV0Lmhb aV0pOyBcCisJZkhJREUodW5zaWduZWQgaW50KSB3ZWlnaHQgPSBmR0VUVUJZVEUoMSxpbnB1dC5o W2ldKTsgXAorCWZISURFKHVuc2lnbmVkIGludCkgdmluZGV4ID0gKGJ1Y2tldCA+PiAzKSAmIDB4 MUY7IFwKKwlmSElERSh1bnNpZ25lZCBpbnQpIGVsaW5kZXggPSAoKGk+PkJTSElGVCkgJiAofk1B U0spKSB8ICgoYnVja2V0Pj5CU0hJRlQpICYgTUFTSyk7IFwKKwlmSElERShtbXZlY3Rvcl90IHRt cDspIFwKKwlSRUFEX0VYVF9WUkVHKHZpbmRleCx0bXAsMCk7IFwKKwlDT05EIHRtcC5FTFtlbGlu ZGV4XSA9IFNBVEYodG1wLkVMW2VsaW5kZXhdICsgd2VpZ2h0KTsgXAorCVdSSVRFX0VYVF9WUkVH KHZpbmRleCx0bXAsRVhUX05FVyk7IFwKKwlmVUFSQ0hfTk9URV9QVU1QXzJYKCk7CisKK0lURVJB VE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDI1NiwidndoaXN0MjU2IiwidmVjdG9yIHdlaWdo dGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCwsKSkKK0lURVJB VE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDI1NnEsInZ3aGlzdDI1NihRdjQpIiwidmVjdG9y IHdlaWdodGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCxpZiAo ZkdFVFFCSVQoUXZWLDIqaSkpLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3Qy NTZfc2F0LCJ2d2hpc3QyNTY6c2F0IiwidmVjdG9yIHdlaWdodGVkIGhpc3RvZ3JhbSBoYWxmd29y ZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCwsZlZTQVRVSCkpCitJVEVSQVRPUl9JTlNOX1ZISVNU TElLRSgxNix2d2hpc3QyNTZxX3NhdCwidndoaXN0MjU2KFF2NCk6c2F0IiwidmVjdG9yIHdlaWdo dGVkIGhpc3RvZ3JhbSBoYWxmd29yZCBjb3VudGVycyIsIFdISVNUKHVoLDcsMCxpZiAoZkdFVFFC SVQoUXZWLDIqaSkpLGZWU0FUVUgpKQorSVRFUkFUT1JfSU5TTl9WSElTVExJS0UoMTYsdndoaXN0 MTI4LCJ2d2hpc3QxMjgiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRlcnMi LCBXSElTVCh1dywzLDEsLCkpCitJVEVSQVRPUl9JTlNOX1ZISVNUTElLRSgxNix2d2hpc3QxMjhx LCJ2d2hpc3QxMjgoUXY0KSIsInZlY3RvciB3ZWlnaHRlZCBoaXN0b2dyYW0gd29yZCBjb3VudGVy cyIsIFdISVNUKHV3LDMsMSxpZiAoZkdFVFFCSVQoUXZWLDIqaSkpLCkpCitJVEVSQVRPUl9JTlNO X1ZISVNUTElLRSgxNix2d2hpc3QxMjhtLCJ2d2hpc3QxMjgoI3UxKSIsInZlY3RvciB3ZWlnaHRl ZCBoaXN0b2dyYW0gd29yZCBjb3VudGVycyIsIFdISVNUKHV3LDMsMSxpZiAoKGJ1Y2tldCAmIDEp ID09IHVpViksKSkKK0lURVJBVE9SX0lOU05fVkhJU1RMSUtFKDE2LHZ3aGlzdDEyOHFtLCJ2d2hp c3QxMjgoUXY0LCN1MSkiLCJ2ZWN0b3Igd2VpZ2h0ZWQgaGlzdG9ncmFtIHdvcmQgY291bnRlcnMi LCBXSElTVCh1dywzLDEsaWYgKCgoYnVja2V0ICYgMSkgPT0gdWlWKSAmJiBmR0VUUUJJVChRdlYs MippKSksKSkKKworCisjZW5kaWYKKworCisKKy8qICoqKioqKiAgIGxvb2t1cCB0YWJsZSBpbnN0 cnVjdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqICAqLworCisvKiBV c2UgbG93IGJpdHMgZnJvbSBpZHggdG8gY2hvb3NlIG5leHQtYmlnZ2VyIGVsZW1lbnRzIGZyb20g dmVjdG9yLCB0aGVuIHVzZSBMU0IgZnJvbSBpZHggdG8gY2hvb3NlIG9kZCBvciBldmVuIGVsZW1l bnQgKi8KKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1QoOCx2bHV0dnZiLCJWZDMyLmI9dmx1 dDMyKFZ1MzIuYixWdjMyLmIsUnQ4KSIsInZlY3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZI SURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2Rk aGFsZjspCittYXRjaHZhbCA9IFJ0ViAmIDB4NzsKK29kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9H U0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IFZ1Vi51YltpXTsKK1ZkVi5iW2ldID0gKChpZHggJiAw eEUwKSA9PSAobWF0Y2h2YWwgPDwgNSkpID8gZkdFVEJZVEUob2RkaGFsZixWdlYuaFtpZHggJSBm VkVMRU0oMTYpXSkgOiAwKQorCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9W RUMoOCx2bHV0dnZiX29yYWNjLCJWeDMyLmJ8PXZsdXQzMihWdTMyLmIsVnYzMi5iLFJ0OCkiLCJ2 ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJ REUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBSdFYgJiAw eDc7CitvZGRoYWxmID0gKFJ0ViA+PiAoZlZFQ0xPR1NJWkUoKS02KSkgJiAweDE7CitpZHggPSBW dVYudWJbaV07CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkg PyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKK0lURVJB VE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdmx1dHZ3aCwiVmRkMzIuaD12bHV0 MTYoVnUzMi5iLFZ2MzIuaCxSdDgpIiwidmVjdG9yLXZlY3RvciB0YWJsZSBsb29rdXAiLAorZkhJ REUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZhbDspIGZISURFKGludCBvZGRo YWxmOykKK21hdGNodmFsID0gUnRWICYgMHhGOworb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dT SVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRFKDAsVnVWLnVoW2ldKTsKK1ZkZFYudlsw XS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2Rk aGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwOworaWR4ID0gZkdFVFVCWVRFKDEsVnVW LnVoW2ldKTsKK1ZkZFYudlsxXS5oW2ldID0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwg NCkpID8gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQorCitJ VEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xPVF9ET1VCTEVfVkVDKDE2LHZsdXR2d2hfb3JhY2MsIlZ4 eDMyLmh8PXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCkiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxv b2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJ REUoaW50IG9kZGhhbGY7KQorbWF0Y2h2YWwgPSBmR0VUVUJZVEUoMCxSdFYpICYgMHhGOworb2Rk aGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gZkdFVFVCWVRF KDAsVnVWLnVoW2ldKTsKK1Z4eFYudlswXS5oW2ldIHw9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNo dmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDog MDsKK2lkeCA9IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWeHhWLnZbMV0uaFtpXSB8PSAoKGlk eCAmIDB4RjApID09IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lk eCAlIGZWRUxFTSgzMildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UKDgsdmx1 dHZ2YmksIlZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYiwjdTMpIiwidmVjdG9yLXZlY3RvciB0 YWJsZSBsb29rdXAiLAorZkhJREUodW5zaWduZWQgaW50IGlkeDspIGZISURFKGludCBtYXRjaHZh bDspIGZISURFKGludCBvZGRoYWxmOykKK21hdGNodmFsID0gdWlWICYgMHg3Oworb2RkaGFsZiA9 ICh1aVYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworaWR4ID0gVnVWLnViW2ldOworVmRW LmJbaV0gPSAoKGlkeCAmIDB4RTApID09IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllURShvZGRo YWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgxNildKSA6IDApCisKKworSVRFUkFUT1JfSU5TTl9QRVJN VVRFX1NMT1RfRE9VQkxFX1ZFQyg4LHZsdXR2dmJfb3JhY2NpLCJWeDMyLmJ8PXZsdXQzMihWdTMy LmIsVnYzMi5iLCN1MykiLCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNp Z25lZCBpbnQgaWR4OykgZkhJREUoaW50IG1hdGNodmFsOykgZkhJREUoaW50IG9kZGhhbGY7KQor bWF0Y2h2YWwgPSB1aVYgJiAweDc7CitvZGRoYWxmID0gKHVpViA+PiAoZlZFQ0xPR1NJWkUoKS02 KSkgJiAweDE7CitpZHggPSBWdVYudWJbaV07CitWeFYuYltpXSB8PSAoKGlkeCAmIDB4RTApID09 IChtYXRjaHZhbCA8PCA1KSkgPyBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxFTSgx NildKSA6IDApCisKK0lURVJBVE9SX0lOU05fUEVSTVVURV9TTE9UX0RPVUJMRV9WRUMoMTYsdmx1 dHZ3aGksIlZkZDMyLmg9dmx1dDE2KFZ1MzIuYixWdjMyLmgsI3UzKSIsInZlY3Rvci12ZWN0b3Ig dGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShpbnQgbWF0Y2h2 YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAmIDB4RjsKK29kZGhhbGYg PSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IGZHRVRVQllURSgwLFZ1 Vi51aFtpXSk7CitWZGRWLnZbMF0uaFtpXSA9ICgoaWR4ICYgMHhGMCkgPT0gKG1hdGNodmFsIDw8 IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZFTEVNKDMyKV0pIDogMDsKK2lk eCA9IGZHRVRVQllURSgxLFZ1Vi51aFtpXSk7CitWZGRWLnZbMV0uaFtpXSA9ICgoaWR4ICYgMHhG MCkgPT0gKG1hdGNodmFsIDw8IDQpKSA/IGZHRVRIQUxGKG9kZGhhbGYsVnZWLndbaWR4ICUgZlZF TEVNKDMyKV0pIDogMCkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygx Nix2bHV0dndoX29yYWNjaSwiVnh4MzIuaHw9dmx1dDE2KFZ1MzIuYixWdjMyLmgsI3UzKSIsInZl Y3Rvci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElE RShpbnQgbWF0Y2h2YWw7KSBmSElERShpbnQgb2RkaGFsZjspCittYXRjaHZhbCA9IHVpViAmIDB4 RjsKK29kZGhhbGYgPSAodWlWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4MTsKK2lkeCA9IGZH RVRVQllURSgwLFZ1Vi51aFtpXSk7CitWeHhWLnZbMF0uaFtpXSB8PSAoKGlkeCAmIDB4RjApID09 IChtYXRjaHZhbCA8PCA0KSkgPyBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53W2lkeCAlIGZWRUxFTSgz MildKSA6IDA7CitpZHggPSBmR0VUVUJZVEUoMSxWdVYudWhbaV0pOworVnh4Vi52WzFdLmhbaV0g fD0gKChpZHggJiAweEYwKSA9PSAobWF0Y2h2YWwgPDwgNCkpID8gZkdFVEhBTEYob2RkaGFsZixW dlYud1tpZHggJSBmVkVMRU0oMzIpXSkgOiAwKQorCitJVEVSQVRPUl9JTlNOX1BFUk1VVEVfU0xP VCg4LHZsdXR2dmJfbm0sIlZkMzIuYj12bHV0MzIoVnUzMi5iLFZ2MzIuYixSdDgpOm5vbWF0Y2gi LCJ2ZWN0b3ItdmVjdG9yIHRhYmxlIGxvb2t1cCIsCitmSElERSh1bnNpZ25lZCBpbnQgaWR4Oykg ZkhJREUoaW50IG9kZGhhbGY7KSBmSElERShpbnQgbWF0Y2h2YWw7KQorICAgIG1hdGNodmFsID0g UnRWICYgMHg3OworICAgIG9kZGhhbGYgPSAoUnRWID4+IChmVkVDTE9HU0laRSgpLTYpKSAmIDB4 MTsKKyAgICBpZHggPSBWdVYudWJbaV07CisgICAgaWR4ID0gKGlkeCYweDFGKSB8IChtYXRjaHZh bDw8NSk7CisgICAgVmRWLmJbaV0gPSBmR0VUQllURShvZGRoYWxmLFZ2Vi5oW2lkeCAlIGZWRUxF TSgxNildKSkKKworSVRFUkFUT1JfSU5TTl9QRVJNVVRFX1NMT1RfRE9VQkxFX1ZFQygxNix2bHV0 dndoX25tLCJWZGQzMi5oPXZsdXQxNihWdTMyLmIsVnYzMi5oLFJ0OCk6bm9tYXRjaCIsInZlY3Rv ci12ZWN0b3IgdGFibGUgbG9va3VwIiwKK2ZISURFKHVuc2lnbmVkIGludCBpZHg7KSBmSElERShp bnQgb2RkaGFsZjspIGZISURFKGludCBtYXRjaHZhbDspCisgICAgbWF0Y2h2YWwgPSBSdFYgJiAw eEY7CisgICAgb2RkaGFsZiA9IChSdFYgPj4gKGZWRUNMT0dTSVpFKCktNikpICYgMHgxOworICAg IGlkeCA9IGZHRVRVQllURSgwLFZ1Vi51aFtpXSk7CisgICAgaWR4ID0gKGlkeCYweDBGKSB8ICht YXRjaHZhbDw8NCk7CisgICAgVmRkVi52WzBdLmhbaV0gPSBmR0VUSEFMRihvZGRoYWxmLFZ2Vi53 W2lkeCAlIGZWRUxFTSgzMildKTsKKyAgICBpZHggPSBmR0VUVUJZVEUoMSxWdVYudWhbaV0pOwor ICAgIGlkeCA9IChpZHgmMHgwRikgfCAobWF0Y2h2YWw8PDQpOworICAgIFZkZFYudlsxXS5oW2ld ID0gZkdFVEhBTEYob2RkaGFsZixWdlYud1tpZHggJSBmVkVMRU0oMzIpXSkpCisKKworCisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKK05PTiBMSU5FQVIgLSBWNjUKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisKK0lURVJBVE9SX0lOU05fU0xPVDJfRE9VQkxFX1ZFQygxNix2bXBhaGhzYXQsIlZ4 MzIuaD12bXBhKFZ4MzIuaCxWdTMyLmgsUnR0MzIuaCk6c2F0IiwicGllY2V3aXNlIGxpbmVhciBh cHByb3hpbWF0aW9uIiwKKyAgICBWeFYuaFtpXT0gZlZTQVRIKCAoICggZk1QWTE2U1MoVnhWLmhb aV0sVnVWLmhbaV0pPDwxKSArIChmR0VUSEFMRigoIChWdVYuaFtpXT4+MTQpJjB4MyksIFJ0dFYg KTw8MTUpKT4+MTYpKQorCisKK0lURVJBVE9SX0lOU05fU0xPVDJfRE9VQkxFX1ZFQygxNix2bXBh dWh1aHNhdCwiVngzMi5oPXZtcGEoVngzMi5oLFZ1MzIudWgsUnR0MzIudWgpOnNhdCIsInBpZWNl d2lzZSBsaW5lYXIgYXBwcm94aW1hdGlvbiIsCisgICAgVnhWLmhbaV09IGZWU0FUSCggKCAgZk1Q WTE2U1UoVnhWLmhbaV0sVnVWLnVoW2ldKSArIChmR0VUVUhBTEYoKChWdVYudWhbaV0+PjE0KSYw eDMpLCBSdHRWICk8PDE1KSk+PjE2KSkKKworSVRFUkFUT1JfSU5TTl9TTE9UMl9ET1VCTEVfVkVD KDE2LHZtcHN1aHVoc2F0LCJWeDMyLmg9dm1wcyhWeDMyLmgsVnUzMi51aCxSdHQzMi51aCk6c2F0 IiwicGllY2V3aXNlIGxpbmVhciBhcHByb3hpbWF0aW9uIiwKKyAgICBWeFYuaFtpXT0gZlZTQVRI KCAoICBmTVBZMTZTVShWeFYuaFtpXSxWdVYudWhbaV0pIC0gKGZHRVRVSEFMRigoKFZ1Vi51aFtp XT4+MTQpJjB4MyksIFJ0dFYgKTw8MTUpKT4+MTYpKQorCisKK0lURVJBVE9SX0lOU05fU0xPVDJf RE9VQkxFX1ZFQygxNix2bHV0NCwiVmQzMi5oPXZsdXQ0KFZ1MzIudWgsUnR0MzIuaCkiLCI0IGVu dHJ5IGxvb2t1cCB0YWJsZSIsCisgICAgVmRWLmhbaV09IGZHRVRIQUxGKCAgKChWdVYuaFtpXT4+ MTQpJjB4MyksIFJ0dFYgKSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1Y2NQorICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKworSVRFUkFUT1JfSU5TTl9NUFlfU0xPVF9OT1YxKDMyLHZt cHl1aGUsIlZkMzIudXc9dm1weWUoVnUzMi51aCxSdDMyLnVoKSIsCisiVmVjdG9yIGV2ZW4gaGFs ZndvcmQgdW5zaWduZWQgbXVsdGlwbHkgYnkgc2NhbGFyIiwKKyAgICBWZFYudXdbaV0gPSBmTVBZ MTZVVShmR0VUVUhBTEYoMCwgVnVWLnV3W2ldKSxmR0VUVUhBTEYoMCxSdFYpKSkKKworCitJVEVS QVRPUl9JTlNOX01QWV9TTE9UX05PVjEoMzIsdm1weXVoZV9hY2MsIlZ4MzIudXcrPXZtcHllKFZ1 MzIudWgsUnQzMi51aCkiLAorIlZlY3RvciBldmVuIGhhbGZ3b3JkIHVuc2lnbmVkIG11bHRpcGx5 IGJ5IHNjYWxhciIsCisgICAgVnhWLnV3W2ldICs9IGZNUFkxNlVVKGZHRVRVSEFMRigwLCBWdVYu dXdbaV0pLGZHRVRVSEFMRigwLFJ0VikpKQorCisKKworCitFWFRJTlNOKFY2X3ZnYXRoZXJtdywg ICJ2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncpLnciLCBBVFRSSUJTKEFfRVhURU5TSU9O LEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfTUVN TElLRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElERShpbnQg ZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdBVEhFUl9JTklUKCBSdFYsIE11ViwgZWxl bWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZB TElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAg IEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9HQVRIRVJfV09SRChFQSwg VnZWLnV3W2ldLCBpLE11Vik7CisgICAgfQorICAgIGZHQVRIRVJfRklOSVNIKCkKK30pCitFWFRJ TlNOKFY2X3ZnYXRoZXJtaCwgICJ2dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgiLCBB VFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxB X0NWSV9UTVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElE RShpbnQgaTspCisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZHQVRI RVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBl bGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9S RUFDSCgxNiwgaSkgeworICAgICAgICBFQSA9IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZWTE9H X1ZUQ01fR0FUSEVSX0hBTEZXT1JEKEVBLCBWdlYudWhbaV0sIGksTXVWKTsKKyAgICB9CisgICAg ZkdBVEhFUl9GSU5JU0goKQorfSkKKworCisKK0VYVElOU04oVjZfdmdhdGhlcm1odywgICJ2dG1w Lmg9dmdhdGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NW SSxBX0NWSV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX01FTUxJ S0UpLCAiR2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURF KGludCBqOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhF Ul9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JF QUNIKDMyLCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAg ICBFQSA9IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dBVEhF Ul9IQUxGV09SRF9EVihFQSwgVnZ2Vi52W2pdLnV3W2ldLCAoMippK2opLGksaixNdVYpOworICAg ICAgICB9CisgICAgfQorICAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKK0VYVElOU04oVjZf dmdhdGhlcm13cSwgICJpZiAoUXM0KSB2dG1wLnc9dmdhdGhlcihSdDMyLE11MixWdjMyLncpLnci LCBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9W TSxBX0NWSV9UTVBfRFNULEFfTUVNTElLRSksICJHYXRoZXIgV29yZHMiLAoreworICAgIGZISURF KGludCBpOykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZkdBVEhF Ul9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JF QUNIKDMyLCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51d1tpXTsKKyAgICAgICAgZlZMT0df VlRDTV9HQVRIRVJfV09SRFEoRUEsIFZ2Vi51d1tpXSwgaSxRc1YsTXVWKTsKKyAgICB9CisgICAg ZkdBVEhFUl9GSU5JU0goKQorfSkKK0VYVElOU04oVjZfdmdhdGhlcm1ocSwgICJpZiAoUXM0KSB2 dG1wLmg9dmdhdGhlcihSdDMyLE11MixWdjMyLmgpLmgiLCBBVFRSSUJTKEFfRVhURU5TSU9OLEFf Q1ZJLEFfQ1ZJX0dBVEhFUixBX0NWSV9WQSxBX0NWSV9WTSxBX0NWSV9UTVBfRFNULEFfTUVNTElL RSksICJHYXRoZXIgaGFsZndvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50 IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZHQVRIRVJfSU5JVCggUnRWLCBNdVYsIGVs ZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZW QUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgxNiwgaSkgeworICAgICAg ICBFQSA9IFJ0VitWdlYudWhbaV07CisgICAgICAgIGZWTE9HX1ZUQ01fR0FUSEVSX0hBTEZXT1JE UShFQSwgVnZWLnVoW2ldLCBpLFFzVixNdVYpOworICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgp Cit9KQorCisKKworRVhUSU5TTihWNl92Z2F0aGVybWh3cSwgICJpZiAoUXM0KSB2dG1wLmg9dmdh dGhlcihSdDMyLE11MixWdnYzMi53KS5oIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9HQVRIRVIsQV9DVklfVkFfRFYsQV9DVklfVk0sQV9DVklfVE1QX0RTVCxBX01FTUxJS0UpLCAi R2F0aGVyIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBq OykKKwlmSElERShpbnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZkdBVEhFUl9JTklU KCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRf c2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDMy LCBpKSB7CisgICAgICAgZm9yKGogPSAwOyBqIDwgMjsgaisrKSB7CisgICAgICAgICAgICBFQSA9 IFJ0VitWdnZWLnZbal0udXdbaV07CisgICAgICAgICAgICBmVkxPR19WVENNX0dBVEhFUl9IQUxG V09SRFFfRFYoRUEsIFZ2dlYudltqXS51d1tpXSwgKDIqaStqKSxpLGosUXNWLE11Vik7CisgICAg ICAgfQorICAgIH0KKyAgICBmR0FUSEVSX0ZJTklTSCgpCit9KQorCisKKworRVhUSU5TTihWNl92 c2NhdHRlcm13ICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIudykudz1WdzMyIiwgQVRUUklCUyhB X0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElL RSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTspCisJZkhJREUoaW50IGVs ZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0ViwgTXVWLCBlbGVt ZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkFM SUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsKKyAgICAgICAg RUEgPSBSdFYrVnZWLnV3W2ldOworICAgICAgICBmVkxPR19WVENNX1dPUkQoRUEsIFZ2Vi51d1tp XSwgVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisKKwor RVhUSU5TTihWNl92c2NhdHRlcm1oICwgInZzY2F0dGVyKFJ0MzIsTXUyLFZ2MzIuaCkuaD1WdzMy IiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJ X1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZXb3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7 KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklU KCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRf c2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDE2 LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2Vi51aFtpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9I QUxGV09SRChFQSxWdlYudWhbaV0sVndWLGksTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklO SVNIKDApCit9KQorCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtd19hZGQsICAidnNjYXR0ZXIoUnQz MixNdTIsVnYzMi53KS53Kz1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9T Q0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIFdvcmRzLUFkZCIs Cit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBBTElHTk1FTlQ9NDspCisJZkhJ REUoaW50IGVsZW1lbnRfc2l6ZSA9IDQ7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQoIFJ0Viwg TXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9zaXplKTsK KyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMzIsIGkpIHsK KyAgICAgICAgRUEgPSAoUnRWK2ZWQUxJR04oVnZWLnV3W2ldLEFMSUdOTUVOVCkpOworICAgICAg ICBmVkxPR19WVENNX1dPUkRfSU5DUkVNRU5UKEVBLFZ2Vi51d1tpXSxWd1YsaSxBTElHTk1FTlQs TXVWKTsKKyAgICB9CisgICAgZkhJREUoZkxPR19TQ0FUVEVSX09QKDQpOykKKyAgICBmU0NBVFRF Ul9GSU5JU0goMSkKK30pCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtaF9hZGQsICAidnNjYXR0ZXIo UnQzMixNdTIsVnYzMi5oKS5oKz1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NW SV9TQ0FUVEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZ3b3Jk LUFkZCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBBTElHTk1FTlQ9Mjsp CisJZkhJREUoaW50IGVsZW1lbnRfc2l6ZSA9IDI7KQorICAgIGZISURFKGZTQ0FUVEVSX0lOSVQo IFJ0ViwgTXVWLCBlbGVtZW50X3NpemUpOykKKyAgICBmVkxBU1RCWVRFKE11ViwgZWxlbWVudF9z aXplKTsKKyAgICBmVkFMSUdOKFJ0ViwgZWxlbWVudF9zaXplKTsKKyAgICBmVkZPUkVBQ0goMTYs IGkpIHsKKyAgICAgICAgRUEgPSAoUnRWK2ZWQUxJR04oVnZWLnVoW2ldLEFMSUdOTUVOVCkpOwor ICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JEX0lOQ1JFTUVOVChFQSxWdlYudWhbaV0sVndWLGks QUxJR05NRU5ULE11Vik7CisgICAgfQorICAgIGZISURFKGZMT0dfU0NBVFRFUl9PUCgyKTspCisg ICAgZlNDQVRURVJfRklOSVNIKDEpCit9KQorCisKK0VYVElOU04oVjZfdnNjYXR0ZXJtd3EsICAi aWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnYzMi53KS53PVZ3MzIiLCBBVFRSSUJTKEFfRVhU RU5TSU9OLEFfQ1ZJLEFfQ1ZJX1NDQVRURVIsQV9DVklfVkEsQV9DVklfVk0sQV9NRU1MSUtFKSwg IlNjYXR0ZXIgV29yZHMgY29uZGl0aW9uYWwiLAoreworICAgIGZISURFKGludCBpOykKKwlmSElE RShpbnQgZWxlbWVudF9zaXplID0gNDspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBN dVYsIGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOwor ICAgIGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgewor ICAgICAgICBFQSA9IFJ0VitWdlYudXdbaV07CisgICAgICAgIGZWTE9HX1ZUQ01fV09SRFEoRUEs VnZWLnV3W2ldLCBWd1YsaSxRc1YsTXVWKTsKKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDAp Cit9KQorCitFWFRJTlNOKFY2X3ZzY2F0dGVybWhxLCAgImlmIChRczQpIHZzY2F0dGVyKFJ0MzIs TXUyLFZ2MzIuaCkuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FU VEVSLEFfQ1ZJX1ZBLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIEhhbGZXb3JkcyBjb25k aXRpb25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorCWZISURFKGludCBlbGVtZW50X3NpemUg PSAyOykKKyAgICBmSElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTsp CisgICAgZlZMQVNUQllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVs ZW1lbnRfc2l6ZSk7CisgICAgZlZGT1JFQUNIKDE2LCBpKSB7CisgICAgICAgIEVBID0gUnRWK1Z2 Vi51aFtpXTsKKyAgICAgICAgZlZMT0dfVlRDTV9IQUxGV09SRFEoRUEsVnZWLnVoW2ldLFZ3Vixp LFFzVixNdVYpOworICAgIH0KKyAgICBmU0NBVFRFUl9GSU5JU0goMCkKK30pCisKKworCisKK0VY VElOU04oVjZfdnNjYXR0ZXJtaHcgLCAidnNjYXR0ZXIoUnQzMixNdTIsVnZ2MzIudykuaD1WdzMy IiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBX0RWLEFf Q1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIFdvcmRzIiwKK3sKKyAgICBmSElERShpbnQgaTsp CisgICAgZkhJREUoaW50IGo7KQorCWZISURFKGludCBlbGVtZW50X3NpemUgPSAyOykKKyAgICBm SElERShmU0NBVFRFUl9JTklUKCBSdFYsIE11ViwgZWxlbWVudF9zaXplKTspCisgICAgZlZMQVNU QllURShNdVYsIGVsZW1lbnRfc2l6ZSk7CisgICAgZlZBTElHTihSdFYsIGVsZW1lbnRfc2l6ZSk7 CisgICAgZlZGT1JFQUNIKDMyLCBpKSB7CisgICAgICAgIGZvcihqID0gMDsgaiA8IDI7IGorKykg eworICAgICAgICAgICAgRUEgPSBSdFYrVnZ2Vi52W2pdLnV3W2ldOworICAgICAgICAgICAgZlZM T0dfVlRDTV9IQUxGV09SRF9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksaSxqLE11 Vik7CisgICAgICAgIH0KKyAgICB9CisgICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCisKKwor RVhUSU5TTihWNl92c2NhdHRlcm1od3EsICAiaWYgKFFzNCkgdnNjYXR0ZXIoUnQzMixNdTIsVnZ2 MzIudykuaD1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lPTixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFf Q1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJTY2F0dGVyIGhhbGZ3b3JkcyBjb25kaXRp b25hbCIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKGludCBqOykKKwlmSElERShp bnQgZWxlbWVudF9zaXplID0gMjspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYs IGVsZW1lbnRfc2l6ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAg IGZWQUxJR04oUnRWLCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAg ICAgICBmb3IoaiA9IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICAgIEVBID0gUnRWK1Z2dlYu dltqXS51d1tpXTsKKyAgICAgICAgICAgIGZWTE9HX1ZUQ01fSEFMRldPUkRRX0RWKEVBLFZ2dlYu dltqXS51d1tpXSxWd1YsKDIqaStqKSxRc1YsaSxqLE11Vik7CisgICAgICAgIH0KKyAgICB9Cisg ICAgZlNDQVRURVJfRklOSVNIKDApCit9KQorCitFWFRJTlNOKFY2X3ZzY2F0dGVybWh3X2FkZCwg ICJ2c2NhdHRlcihSdDMyLE11MixWdnYzMi53KS5oKz1WdzMyIiwgQVRUUklCUyhBX0VYVEVOU0lP TixBX0NWSSxBX0NWSV9TQ0FUVEVSLEFfQ1ZJX1ZBX0RWLEFfQ1ZJX1ZNLEFfTUVNTElLRSksICJT Y2F0dGVyIGhhbGZ3b3Jkcy1hZGQiLAoreworICAgIGZISURFKGludCBpOykKKyAgICBmSElERShp bnQgajspCisgICAgZkhJREUoaW50IEFMSUdOTUVOVD0yOykKKwlmSElERShpbnQgZWxlbWVudF9z aXplID0gMjspCisgICAgZkhJREUoZlNDQVRURVJfSU5JVCggUnRWLCBNdVYsIGVsZW1lbnRfc2l6 ZSk7KQorICAgIGZWTEFTVEJZVEUoTXVWLCBlbGVtZW50X3NpemUpOworICAgIGZWQUxJR04oUnRW LCBlbGVtZW50X3NpemUpOworICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBmb3IoaiA9 IDA7IGogPCAyOyBqKyspIHsKKyAgICAgICAgICAgICBFQSA9ICBSdFYgKyBmVkFMSUdOKFZ2dlYu dltqXS51d1tpXSxBTElHTk1FTlQpOzsKKyAgICAgICAgICAgICBmVkxPR19WVENNX0hBTEZXT1JE X0lOQ1JFTUVOVF9EVihFQSxWdnZWLnZbal0udXdbaV0sVndWLCgyKmkraiksaSxqLEFMSUdOTUVO VCxNdVYpOworICAgICAgICB9CisgICAgfQorICAgIGZISURFKGZMT0dfU0NBVFRFUl9PUCgyKTsp CisgICAgZlNDQVRURVJfRklOSVNIKDEpCit9KQorCitFWFRJTlNOKFY2X3ZwcmVmaXhxYiwiVmQz Mi5iPXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJTKEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZT KSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9mIFEgaW50byBieXRlIiwKK3sKKyAgICBmSElERShp bnQgaTspCisgICAgZkhJREUoc2l6ZTF1X3QgYWNjID0gMDspCisgICAgZlZGT1JFQUNIKDgsIGkp IHsKKyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKTsKKyAgICAgICAgVmRWLnViW2ldID0g YWNjOworICAgIH0KKyAgICB9ICkKK0VYVElOU04oVjZfdnByZWZpeHFoLCJWZDMyLmg9cHJlZml4 c3VtKFF2NCkiLCAgIEFUVFJJQlMoQV9FWFRFTlNJT04sQV9DVkksQV9DVklfVlMpLCAgInBhcmFs bGVsIHByZWZpeCBzdW0gb2YgUSBpbnRvIGhhbGZ3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7 KQorICAgIGZISURFKHNpemUydV90IGFjYyA9IDA7KQorICAgIGZWRk9SRUFDSCgxNiwgaSkgewor ICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZWLGkqMiswKTsKKyAgICAgICAgYWNjICs9IGZHRVRR QklUKFF2VixpKjIrMSk7CisgICAgICAgIFZkVi51aFtpXSA9IGFjYzsKKyAgICB9CisgICAgfSAp CitFWFRJTlNOKFY2X3ZwcmVmaXhxdywiVmQzMi53PXByZWZpeHN1bShRdjQpIiwgICBBVFRSSUJT KEFfRVhURU5TSU9OLEFfQ1ZJLEFfQ1ZJX1ZTKSwgICJwYXJhbGxlbCBwcmVmaXggc3VtIG9mIFEg aW50byB3b3JkcyIsCit7CisgICAgZkhJREUoaW50IGk7KQorICAgIGZISURFKHNpemU0dV90IGFj YyA9IDA7KQorICAgIGZWRk9SRUFDSCgzMiwgaSkgeworICAgICAgICBhY2MgKz0gZkdFVFFCSVQo UXZWLGkqNCswKTsKKyAgICAgICAgYWNjICs9IGZHRVRRQklUKFF2VixpKjQrMSk7CisgICAgICAg IGFjYyArPSBmR0VUUUJJVChRdlYsaSo0KzIpOworICAgICAgICBhY2MgKz0gZkdFVFFCSVQoUXZW LGkqNCszKTsKKyAgICAgICAgVmRWLnV3W2ldID0gYWNjOworICAgIH0KKyAgICB9ICkKKworCisK KworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisgREVCVUcgVmVjdG9yL1JlZ2lzdGVyIFByaW50 aW5nCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIFBSSU5UX1ZVKFRZUEUsIFRZ UEUyLCBDT1VOVClcCisgICAgaW50IGk7ICBcCisgICAgc2l6ZTR1X3QgdmVjX2xlbiA9IGZWQllU RVMoKTtcCisgICAgZnByaW50ZihzdGRvdXQsIlYlMmQ6ICIsVnVOKTsgIFwKKyAgICBmb3IgKGk9 MDtpPHZlY19sZW4+PkNPVU5UO2krKykgeyAgICAgICAgIFwKKyAgICAgICAgZnByaW50ZihzdGRv dXQsVFlQRTIgIiAiLCBWdVYuVFlQRVtpXSk7IFwKKyAgICB9OyAgXAorICAgIGZwcmludGYoc3Rk b3V0LCJcXG4iKTsgIFwKKwlmZmx1c2goc3Rkb3V0KTtcCisKKyN1bmRlZiBBVFRSX1ZNRU0KKyN1 bmRlZiBBVFRSX1ZNRU1VCisjdW5kZWYgQVRUUl9WTUVNX05UCisKKyNlbmRpZiAvKiBOT19NTVZF QyAqLworCisjaWZkZWYgX19TRUxGX0RFRl9FWFRJTlNOCisjdW5kZWYgRVhUSU5TTgorI3VuZGVm IF9fU0VMRl9ERUZfRVhUSU5TTgorI2VuZGlmCi0tIAoyLjcuNAoK