From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 4263745704 for ; Sun, 21 May 2023 13:04:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BE5AF68C149; Sun, 21 May 2023 16:03:45 +0300 (EEST) Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 393FB68C125 for ; Sun, 21 May 2023 16:03:38 +0300 (EEST) Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-64d30ab1ef2so1751928b3a.2 for ; Sun, 21 May 2023 06:03:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684674216; x=1687266216; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iA3RV7oVydu4/ZTdJosSHLi2t+/NF2N9OZqI9avpdFA=; b=E7eMq7qXFsCRIaqjDZOL82JYJ7rkRl94lOUSv3/jwKSq3RLhcmwL7M6ODb8uEmQs53 ksXRU9kALCkyOAlBqVyIqwikCiaOj31PVShtIMaVMi4sQu1zCm3pwXNPyDIig3H9oi5f iv+lB2kn9UOP8QWOL4zzSWsCxKOOWftpVS+s+h6EXC+RGlwvMhs5qKoLkv8IfZf/FmTo GWEzA9O7Usyksee0mqwtXy02Eihq6q5xPmC1MCjEBs1zw2p/LCwHtsqt/9MQSv0fpTeQ 2Y0vktrjjXW8IQCtXPER8FvOu34FwGJhRH1qagr6+Mhizoi44px6uaO+IOW5xli9B1yz aJeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684674216; x=1687266216; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iA3RV7oVydu4/ZTdJosSHLi2t+/NF2N9OZqI9avpdFA=; b=Qiv1/piS77cRLWBvosWZ3rw+7GB8XGgzOBh6ND78qKniBSOyqmGrMRMrrcNM9+U2Tx pM0uOMocMdR1W0Yfes5pzk1LPaf4s5Tzef+amUGalUulW2G6JiHJN64pXAUjKl6jdsoO C06yJbP6NPEizzDImzIQWpdUVMfR/naoS2XDrkgGQIH4FxVB9egaN73+KmNuTYTLnsEP 57n7etqzwSJnVErHmJIHyy7aNyZFyXfMX3+hNywIU6C7huR713KqMYhXIryNOuQo+rnX ACthfFUVE3jfx1DXeINPO+Esg+5/9YEM54gWq3HOxXX61+Nt8qoaA48ato6LfMO4TQiS uYPA== X-Gm-Message-State: AC+VfDxurAGRxsXfdsqPmYvZ9+2BjRAVCB9xlGovl3Vyb55O/FeChj4N s/QMNx4GgMbqIJkFM9hCLX2a+G5be36XmQ== X-Google-Smtp-Source: ACHHUZ4hnF8eooSr7Pet8k7kKxWQ9lc+JZg9Fa1d7b/JSGGfjil9oaABukvC6VN0kl+2XX6yrFucyg== X-Received: by 2002:a05:6a21:33aa:b0:10a:b2a2:a301 with SMTP id yy42-20020a056a2133aa00b0010ab2a2a301mr5127153pzb.12.1684674214781; Sun, 21 May 2023 06:03:34 -0700 (PDT) Received: from NuoMi.localdomain ([112.64.8.97]) by smtp.gmail.com with ESMTPSA id t9-20020aa79389000000b0064d45eea573sm1671872pfe.41.2023.05.21.06.03.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 21 May 2023 06:03:34 -0700 (PDT) From: Nuo Mi To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 May 2023 21:03:09 +0800 Message-Id: <20230521130319.13813-5-nuomi2021@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230521130319.13813-1-nuomi2021@gmail.com> References: <20230521130319.13813-1-nuomi2021@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/14] vvcdec: add cabac decoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nuo Mi Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: YWRkIENvbnRleHQtYmFzZWQgQWRhcHRpdmUgQmluYXJ5IEFyaXRobWV0aWMgQ29kaW5nIChDQUJB QykgZGVjb2RlcgotLS0KIGxpYmF2Y29kZWMvdnZjL01ha2VmaWxlICAgIHwgICAgMSArCiBsaWJh dmNvZGVjL3Z2Yy92dmNfY2FiYWMuYyB8IDI0MjMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBsaWJhdmNvZGVjL3Z2Yy92dmNfY2FiYWMuaCB8ICAxMjYgKysKIGxpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuaCAgIHwgIDM4NyArKysrKysKIGxpYmF2Y29kZWMvdnZjL3Z2Y2RlYy5o ICAgIHwgICAgNSArCiA1IGZpbGVzIGNoYW5nZWQsIDI5NDIgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvdnZjL3Z2Y19jYWJhYy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNv ZGVjL3Z2Yy92dmNfY3R1LmgKCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Z2Yy9NYWtlZmlsZSBi L2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCmluZGV4IDNkYmZiNzA0MDcuLmY3MGNjN2E2ZjIgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvdnZjL01ha2VmaWxlCisrKyBiL2xpYmF2Y29kZWMvdnZjL01h a2VmaWxlCkBAIC01LDMgKzUsNCBAQCBPQkpTLSQoQ09ORklHX1ZWQ19ERUNPREVSKSAgICAgICAg ICArPSAgdnZjL3Z2Y2RlYy5vICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZ2Yy92dmNfZXhlY3V0b3IubyAgICAgIFwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2dmMvdnZjX3BzLm8gICAgICAgICAgICBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZjL3Z2Y19kYXRhLm8gICAgICAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ2Yy92dmNfY2Fi YWMubwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMgYi9saWJhdmNvZGVj L3Z2Yy92dmNfY2FiYWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43 M2E5NWMyZDZiCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmMK QEAgLTAsMCArMSwyNDIzIEBACisvKgorICogVlZDIENBQkFDIGRlY29kZXIKKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMjEgTnVvIE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVn LgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQor ICovCisjaW5jbHVkZSAibGliYXZjb2RlYy9jYWJhY19mdW5jdGlvbnMuaCIKKworI2luY2x1ZGUg InZ2Y19jYWJhYy5oIgorI2luY2x1ZGUgInZ2Y19jdHUuaCIKKyNpbmNsdWRlICJ2dmNfZGF0YS5o IgorCisjZGVmaW5lIENBQkFDX01BWF9CSU4gMzEKKworI2RlZmluZSBDTlUgMzUKKworZW51bSBT eW50YXhFbGVtZW50IHsKKyAgICBBTEZfQ1RCX0ZMQUcgICAgICAgICAgICAgICAgICAgID0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgIEFMRl9VU0VfQVBTX0ZMQUcgICAg ICAgICAgICAgICAgPSBBTEZfQ1RCX0ZMQUcgICAgICAgICAgICAgICAgICArIDksCisgICAgQUxG X0NUQl9DQ19DQl9JREMsCisgICAgQUxGX0NUQl9DQ19DUl9JREMgICAgICAgICAgICAgICA9IEFM Rl9DVEJfQ0NfQ0JfSURDICAgICAgICAgICAgICsgMywKKyAgICBBTEZfQ1RCX0ZJTFRFUl9BTFRf SURYICAgICAgICAgID0gQUxGX0NUQl9DQ19DUl9JREMgICAgICAgICAgICAgKyAzLAorICAgIFNB T19NRVJHRV9GTEFHICAgICAgICAgICAgICAgICAgPSBBTEZfQ1RCX0ZJTFRFUl9BTFRfSURYICAg ICAgICArIDIsCisgICAgU0FPX1RZUEVfSURYLAorICAgIFNQTElUX0NVX0ZMQUcsCisgICAgU1BM SVRfUVRfRkxBRyAgICAgICAgICAgICAgICAgICA9IFNQTElUX0NVX0ZMQUcgICAgICAgICAgICAg ICAgICsgOSwKKyAgICBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyAgICAgID0gU1BMSVRfUVRf RkxBRyAgICAgICAgICAgICAgICAgKyA2LAorICAgIE1UVF9TUExJVF9DVV9CSU5BUllfRkxBRyAg ICAgICAgPSBNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyAgICArIDUsCisgICAgTk9OX0lOVEVS X0ZMQUcgICAgICAgICAgICAgICAgICA9IE1UVF9TUExJVF9DVV9CSU5BUllfRkxBRyAgICAgICsg NCwKKyAgICBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICAgID0gTk9OX0lOVEVSX0ZMQUcg ICAgICAgICAgICAgICAgKyAyLAorICAgIFBSRURfTU9ERV9JQkNfRkxBRyAgICAgICAgICAgICAg PSBDVV9TS0lQX0ZMQUcgICAgICAgICAgICAgICAgICArIDMsCisgICAgUFJFRF9NT0RFX0ZMQUcg ICAgICAgICAgICAgICAgICA9IFBSRURfTU9ERV9JQkNfRkxBRyAgICAgICAgICAgICsgMywKKyAg ICBQUkVEX01PREVfUExUX0ZMQUcgICAgICAgICAgICAgID0gUFJFRF9NT0RFX0ZMQUcgICAgICAg ICAgICAgICAgKyAyLAorICAgIENVX0FDVF9FTkFCTEVEX0ZMQUcsCisgICAgSU5UUkFfQkRQQ01f TFVNQV9GTEFHLAorICAgIElOVFJBX0JEUENNX0xVTUFfRElSX0ZMQUcsCisgICAgSU5UUkFfTUlQ X0ZMQUcsCisgICAgSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAgICAgICA9IElOVFJBX01JUF9G TEFHICAgICAgICAgICAgICAgICsgNCwKKyAgICBJTlRSQV9TVUJQQVJUSVRJT05TX01PREVfRkxB RyAgID0gSU5UUkFfTFVNQV9SRUZfSURYICAgICAgICAgICAgKyAyLAorICAgIElOVFJBX1NVQlBB UlRJVElPTlNfU1BMSVRfRkxBRywKKyAgICBJTlRSQV9MVU1BX01QTV9GTEFHLAorICAgIElOVFJB X0xVTUFfTk9UX1BMQU5BUl9GTEFHLAorICAgIElOVFJBX0JEUENNX0NIUk9NQV9GTEFHICAgICAg ICAgPSBJTlRSQV9MVU1BX05PVF9QTEFOQVJfRkxBRyAgICArIDIsCisgICAgSU5UUkFfQkRQQ01f Q0hST01BX0RJUl9GTEFHLAorICAgIENDTE1fTU9ERV9GTEFHLAorICAgIENDTE1fTU9ERV9JRFgs CisgICAgSU5UUkFfQ0hST01BX1BSRURfTU9ERSwKKyAgICBHRU5FUkFMX01FUkdFX0ZMQUcsCisg ICAgSU5URVJfUFJFRF9JREMsCisgICAgSU5URVJfQUZGSU5FX0ZMQUcgICAgICAgICAgICAgICA9 IElOVEVSX1BSRURfSURDICAgICAgICAgICAgICAgICsgNiwKKyAgICBDVV9BRkZJTkVfVFlQRV9G TEFHICAgICAgICAgICAgID0gSU5URVJfQUZGSU5FX0ZMQUcgICAgICAgICAgICAgKyAzLAorICAg IFNZTV9NVkRfRkxBRywKKyAgICBSRUZfSURYX0xYLAorICAgIE1WUF9MWF9GTEFHICAgICAgICAg ICAgICAgICAgICAgPSBSRUZfSURYX0xYICAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQU1W Ul9GTEFHLAorICAgIEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAgICAgICAgPSBBTVZSX0ZMQUcg ICAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQkNXX0lEWCAgICAgICAgICAgICAgICAgICAg ICAgICA9IEFNVlJfUFJFQ0lTSU9OX0lEWCAgICAgICAgICAgICsgMywKKyAgICBDVV9DT0RFRF9G TEFHLAorICAgIENVX1NCVF9GTEFHLAorICAgIENVX1NCVF9RVUFEX0ZMQUcgICAgICAgICAgICAg ICAgPSBDVV9TQlRfRkxBRyAgICAgICAgICAgICAgICAgICArIDIsCisgICAgQ1VfU0JUX0hPUkla T05UQUxfRkxBRywKKyAgICBDVV9TQlRfUE9TX0ZMQUcgICAgICAgICAgICAgICAgID0gQ1VfU0JU X0hPUklaT05UQUxfRkxBRyAgICAgICAgKyAzLAorICAgIExGTlNUX0lEWCwKKyAgICBNVFNfSURY ICAgICAgICAgICAgICAgICAgICAgICAgID0gTEZOU1RfSURYICAgICAgICAgICAgICAgICAgICAg KyAzLAorICAgIENPUFlfQUJPVkVfUEFMRVRURV9JTkRJQ0VTX0ZMQUcgPSBNVFNfSURYICAgICAg ICAgICAgICAgICAgICAgICArIDQsCisgICAgUEFMRVRURV9UUkFOU1BPU0VfRkxBRywKKyAgICBS VU5fQ09QWV9GTEFHLAorICAgIFJFR1VMQVJfTUVSR0VfRkxBRyAgICAgICAgICAgICAgPSBSVU5f Q09QWV9GTEFHICAgICAgICAgICAgICAgICArIDgsCisgICAgTU1WRF9NRVJHRV9GTEFHICAgICAg ICAgICAgICAgICA9IFJFR1VMQVJfTUVSR0VfRkxBRyAgICAgICAgICAgICsgMiwKKyAgICBNTVZE X0NBTkRfRkxBRywKKyAgICBNTVZEX0RJU1RBTkNFX0lEWCwKKyAgICBDSUlQX0ZMQUcsCisgICAg TUVSR0VfU1VCQkxPQ0tfRkxBRywKKyAgICBNRVJHRV9TVUJCTE9DS19JRFggICAgICAgICAgICAg ID0gTUVSR0VfU1VCQkxPQ0tfRkxBRyAgICAgICAgICAgKyAzLAorICAgIE1FUkdFX0lEWCwKKyAg ICBBQlNfTVZEX0dSRUFURVIwX0ZMQUcsCisgICAgQUJTX01WRF9HUkVBVEVSMV9GTEFHLAorICAg IFRVX1lfQ09ERURfRkxBRywKKyAgICBUVV9DQl9DT0RFRF9GTEFHICAgICAgICAgICAgICAgID0g VFVfWV9DT0RFRF9GTEFHICAgICAgICAgICAgICAgKyA0LAorICAgIFRVX0NSX0NPREVEX0ZMQUcg ICAgICAgICAgICAgICAgPSBUVV9DQl9DT0RFRF9GTEFHICAgICAgICAgICAgICArIDIsCisgICAg Q1VfUVBfREVMVEFfQUJTICAgICAgICAgICAgICAgICA9IFRVX0NSX0NPREVEX0ZMQUcgICAgICAg ICAgICAgICsgMywKKyAgICBDVV9DSFJPTUFfUVBfT0ZGU0VUX0ZMQUcgICAgICAgID0gQ1VfUVBf REVMVEFfQUJTICAgICAgICAgICAgICAgKyAyLAorICAgIENVX0NIUk9NQV9RUF9PRkZTRVRfSURY LAorICAgIFRSQU5TRk9STV9TS0lQX0ZMQUcsCisgICAgVFVfSk9JTlRfQ0JDUl9SRVNJRFVBTF9G TEFHICAgICA9IFRSQU5TRk9STV9TS0lQX0ZMQUcgICAgICAgICAgICsgMiwKKyAgICBMQVNUX1NJ R19DT0VGRl9YX1BSRUZJWCAgICAgICAgID0gVFVfSk9JTlRfQ0JDUl9SRVNJRFVBTF9GTEFHICAg KyAzLAorICAgIExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAgICAgPSBMQVNUX1NJR19DT0VG Rl9YX1BSRUZJWCAgICAgICArMjMsCisgICAgU0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICAg ICA9IExBU1RfU0lHX0NPRUZGX1lfUFJFRklYICAgICAgICsyMywKKyAgICBTSUdfQ09FRkZfRkxB RyAgICAgICAgICAgICAgICAgID0gU0JfQ09ERURfRkxBRyAgICAgICAgICAgICAgICAgKyA3LAor ICAgIFBBUl9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICAgPSBTSUdfQ09FRkZfRkxBRyAgICAg ICAgICAgICAgICArNjMsCisgICAgQUJTX0xFVkVMX0dUWF9GTEFHICAgICAgICAgICAgICA9IFBB Ul9MRVZFTF9GTEFHICAgICAgICAgICAgICAgICszMywKKyAgICBDT0VGRl9TSUdOX0ZMQUcgICAg ICAgICAgICAgICAgID0gQUJTX0xFVkVMX0dUWF9GTEFHICAgICAgICAgICAgKzcyLAorICAgIFNZ TlRBWF9FTEVNRU5UX0xBU1QgICAgICAgICAgICAgPSBDT0VGRl9TSUdOX0ZMQUcgICAgICAgICAg ICAgICArIDYsCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBpbml0X3ZhbHVlc1s0XVtTWU5U QVhfRUxFTUVOVF9MQVNUXSA9IHsKKyAgICB7CisgICAgICAgIC8vYWxmX2N0Yl9mbGFnCisgICAg ICAgIDYyLCAgMzksICAzOSwgIDU0LCAgMzksICAzOSwgIDMxLCAgMzksICAzOSwKKyAgICAgICAg Ly9hbGZfdXNlX2Fwc19mbGFnCisgICAgICAgIDQ2LAorICAgICAgICAvL2FsZl9jdGJfY2NfY2Jf aWRjCisgICAgICAgIDE4LCAgMzAsICAzMSwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NyX2lkYwor ICAgICAgICAxOCwgIDMwLCAgMzEsCisgICAgICAgIC8vYWxmX2N0Yl9maWx0ZXJfYWx0X2lkeAor ICAgICAgICAxMSwgIDExLAorICAgICAgICAvL3Nhb19tZXJnZV9sZWZ0X2ZsYWcgYW5kIHNhb19t ZXJnZV91cF9mbGFnCisgICAgICAgIDYwLAorICAgICAgICAvL3Nhb190eXBlX2lkeF9sdW1hIGFu ZCBzYW9fdHlwZV9pZHhfY2hyb21hCisgICAgICAgIDEzLAorICAgICAgICAvL3NwbGl0X2N1X2Zs YWcKKyAgICAgICAgMTksICAyOCwgIDM4LCAgMjcsICAyOSwgIDM4LCAgMjAsICAzMCwgIDMxLAor ICAgICAgICAvL3NwbGl0X3F0X2ZsYWcKKyAgICAgICAgMjcsICAgNiwgIDE1LCAgMjUsICAxOSwg IDM3LAorICAgICAgICAvL210dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAg NDIsICAyOSwgIDI3LCAgNDQsCisgICAgICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisg ICAgICAgIDM2LCAgNDUsICAzNiwgIDQ1LAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAg ICAgIENOVSwgQ05VLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICAwLCAgMjYsICAy OCwKKyAgICAgICAgLy9wcmVkX21vZGVfaWJjX2ZsYWcKKyAgICAgICAgMTcsICA0MiwgIDM2LAor ICAgICAgICAvL3ByZWRfbW9kZV9mbGFnCisgICAgICAgIENOVSwgQ05VLAorICAgICAgICAvL3By ZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAyNSwKKyAgICAgICAgLy9jdV9hY3RfZW5hYmxlZF9m bGFnCisgICAgICAgIDUyLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxhZworICAgICAg ICAxOSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAgICAgIDM1LAor ICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgIDMzLCAgNDksICA1MCwgIDI1LAorICAg ICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAyNSwgIDYwLAorICAgICAgICAvL2lu dHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgIDMzLAorICAgICAgICAvL2ludHJh X3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICA0MywKKyAgICAgICAgLy9pbnRyYV9s dW1hX21wbV9mbGFnCisgICAgICAgIDQ1LAorICAgICAgICAvL2ludHJhX2x1bWFfbm90X3BsYW5h cl9mbGFnCisgICAgICAgIDEzLCAgMjgsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Zs YWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rpcl9mbGFnCisg ICAgICAgIDI3LAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgIDU5LAorICAgICAg ICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgMjcsCisgICAgICAgIC8vaW50cmFfY2hyb21hX3By ZWRfbW9kZQorICAgICAgICAzNCwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2ZsYWcKKyAgICAg ICAgMjYsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgQ05VLCBDTlUsIENOVSwg Q05VLCBDTlUsIENOVSwKKyAgICAgICAgLy9pbnRlcl9hZmZpbmVfZmxhZworICAgICAgICBDTlUs IENOVSwgQ05VLAorICAgICAgICAvL2N1X2FmZmluZV90eXBlX2ZsYWcKKyAgICAgICAgQ05VLAor ICAgICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vcmVmX2lkeF9s MCBhbmQgcmVmX2lkeF9sMQorICAgICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9tdnBfbDBfZmxh ZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vYW12cl9mbGFnCisgICAg ICAgIENOVSwgQ05VLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAzNSwg IDM0LCAgMzUsCisgICAgICAgIC8vYmN3X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vY3Vf Y29kZWRfZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9jdV9zYnRfZmxhZworICAgICAgICBD TlUsIENOVSwKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIENOVSwKKyAgICAg ICAgLy9jdV9zYnRfaG9yaXpvbnRhbF9mbGFnCisgICAgICAgIENOVSwgQ05VLCBDTlUsCisgICAg ICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisgICAgICAgIENOVSwKKyAgICAgICAgLy9sZm5zdF9pZHgK KyAgICAgICAgMjgsICA1MiwgIDQyLAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgMjksICAg MCwgIDI4LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZwor ICAgICAgICA0MiwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgIDQy LAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgNTAsICAzNywgIDQ1LCAgMzAsICA0 NiwgIDQ1LCAgMzgsICA0NiwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAg Q05VLCBDTlUsCisgICAgICAgIC8vbW12ZF9tZXJnZV9mbGFnCisgICAgICAgIENOVSwKKyAgICAg ICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAgICBDTlUsCisgICAgICAgIC8vbW12ZF9kaXN0YW5j ZV9pZHgKKyAgICAgICAgQ05VLAorICAgICAgICAvL2NpaXBfZmxhZworICAgICAgICBDTlUsCisg ICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZworICAgICAgICBDTlUsIENOVSwgQ05VLAorICAg ICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vbWVyZ2Vf aWR4LCBtZXJnZV9ncG1faWR4MCwgYW5kIG1lcmdlX2dwbV9pZHgxCisgICAgICAgIDM0LAorICAg ICAgICAvL2Fic19tdmRfZ3JlYXRlcjBfZmxhZworICAgICAgICAxNCwKKyAgICAgICAgLy9hYnNf bXZkX2dyZWF0ZXIxX2ZsYWcKKyAgICAgICAgNDUsCisgICAgICAgIC8vdHVfeV9jb2RlZF9mbGFn CisgICAgICAgIDE1LCAgMTIsICAgNSwgICA3LAorICAgICAgICAvL3R1X2NiX2NvZGVkX2ZsYWcK KyAgICAgICAgMTIsICAyMSwKKyAgICAgICAgLy90dV9jcl9jb2RlZF9mbGFnCisgICAgICAgIDMz LCAgMjgsICAzNiwKKyAgICAgICAgLy9jdV9xcF9kZWx0YV9hYnMKKyAgICAgICAgQ05VLCBDTlUs CisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9mbGFnCisgICAgICAgIENOVSwKKyAgICAg ICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeAorICAgICAgICBDTlUsCisgICAgICAgIC8vdHJh bnNmb3JtX3NraXBfZmxhZworICAgICAgICAyNSwgICA5LAorICAgICAgICAvL3R1X2pvaW50X2Ni Y3JfcmVzaWR1YWxfZmxhZworICAgICAgICAxMiwgIDIxLCAgMzUsCisgICAgICAgIC8vbGFzdF9z aWdfY29lZmZfeF9wcmVmaXgKKyAgICAgICAgMTMsICAgNSwgICA0LCAgMjEsICAxNCwgICA0LCAg IDYsICAxNCwgIDIxLCAgMTEsICAxNCwgICA3LCAgMTQsICAgNSwgIDExLCAgMjEsCisgICAgICAg IDMwLCAgMjIsICAxMywgIDQyLCAgMTIsICAgNCwgICAzLAorICAgICAgICAvL2xhc3Rfc2lnX2Nv ZWZmX3lfcHJlZml4CisgICAgICAgIDEzLCAgIDUsICAgNCwgICA2LCAgMTMsICAxMSwgIDE0LCAg IDYsICAgNSwgICAzLCAgMTQsICAyMiwgICA2LCAgIDQsICAgMywgICA2LAorICAgICAgICAyMiwg IDI5LCAgMjAsICAzNCwgIDEyLCAgIDQsICAgMywKKyAgICAgICAgLy9zYl9jb2RlZF9mbGFnCisg ICAgICAgIDE4LCAgMzEsICAyNSwgIDE1LCAgMTgsICAyMCwgIDM4LAorICAgICAgICAvL3NpZ19j b2VmZl9mbGFnCisgICAgICAgIDI1LCAgMTksICAyOCwgIDE0LCAgMjUsICAyMCwgIDI5LCAgMzAs ICAxOSwgIDM3LCAgMzAsICAzOCwgIDExLCAgMzgsICA0NiwgIDU0LAorICAgICAgICAyNywgIDM5 LCAgMzksICAzOSwgIDQ0LCAgMzksICAzOSwgIDM5LCAgMTgsICAzOSwgIDM5LCAgMzksICAyNywg IDM5LCAgMzksICAzOSwKKyAgICAgICAgIDAsICAzOSwgIDM5LCAgMzksICAyNSwgIDI3LCAgMjgs ICAzNywgIDM0LCAgNTMsICA1MywgIDQ2LCAgMTksICA0NiwgIDM4LCAgMzksCisgICAgICAgIDUy LCAgMzksICAzOSwgIDM5LCAgMTEsICAzOSwgIDM5LCAgMzksICAxOSwgIDM5LCAgMzksICAzOSwg IDI1LCAgMjgsICAzOCwKKyAgICAgICAgLy9wYXJfbGV2ZWxfZmxhZworICAgICAgICAzMywgIDI1 LCAgMTgsICAyNiwgIDM0LCAgMjcsICAyNSwgIDI2LCAgMTksICA0MiwgIDM1LCAgMzMsICAxOSwg IDI3LCAgMzUsICAzNSwKKyAgICAgICAgMzQsICA0MiwgIDIwLCAgNDMsICAyMCwgIDMzLCAgMjUs ICAyNiwgIDQyLCAgMTksICAyNywgIDI2LCAgNTAsICAzNSwgIDIwLCAgNDMsCisgICAgICAgIDEx LAorICAgICAgICAvL2Fic19sZXZlbF9ndHhfZmxhZworICAgICAgICAyNSwgIDI1LCAgMTEsICAy NywgIDIwLCAgMjEsICAzMywgIDEyLCAgMjgsICAyMSwgIDIyLCAgMzQsICAyOCwgIDI5LCAgMjks ICAzMCwKKyAgICAgICAgMzYsICAyOSwgIDQ1LCAgMzAsICAyMywgIDQwLCAgMzMsICAyNywgIDI4 LCAgMjEsICAzNywgIDM2LCAgMzcsICA0NSwgIDM4LCAgNDYsCisgICAgICAgIDI1LCAgIDEsICA0 MCwgIDI1LCAgMzMsICAxMSwgIDE3LCAgMjUsICAyNSwgIDE4LCAgIDQsICAxNywgIDMzLCAgMjYs ICAxOSwgIDEzLAorICAgICAgICAzMywgIDE5LCAgMjAsICAyOCwgIDIyLCAgNDAsICAgOSwgIDI1 LCAgMTgsICAyNiwgIDM1LCAgMjUsICAyNiwgIDM1LCAgMjgsICAzNywKKyAgICAgICAgMTEsICAg NSwgICA1LCAgMTQsICAxMCwgICAzLCAgIDMsICAgMywKKyAgICAgICAgLy9jb2VmZl9zaWduX2Zs YWcKKyAgICAgICAgMTIsICAxNywgIDQ2LCAgMjgsICAyNSwgIDQ2LAorICAgIH0sCisgICAgewor ICAgICAgICAvL2FsZl9jdGJfZmxhZworICAgICAgICAxMywgIDIzLCAgNDYsICAgNCwgIDYxLCAg NTQsICAxOSwgIDQ2LCAgNTQsCisgICAgICAgIC8vYWxmX3VzZV9hcHNfZmxhZworICAgICAgICA0 NiwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2NiX2lkYworICAgICAgICAxOCwgIDIxLCAgMzgsCisg ICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMKKyAgICAgICAgMTgsICAyMSwgIDM4LAorICAgICAg ICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgKKyAgICAgICAgMjAsICAxMiwKKyAgICAgICAgLy9z YW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9fbWVyZ2VfdXBfZmxhZworICAgICAgICA2MCwKKyAg ICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQorICAgICAg ICA1LAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAgMTEsICAzNSwgIDUzLCAgMTIs ICAgNiwgIDMwLCAgMTMsICAxNSwgIDMxLAorICAgICAgICAvL3NwbGl0X3F0X2ZsYWcKKyAgICAg ICAgMjAsICAxNCwgIDIzLCAgMTgsICAxOSwgICA2LAorICAgICAgICAvL210dF9zcGxpdF9jdV92 ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgMzUsICAzNywgIDM0LCAgNTIsCisgICAgICAgIC8v bXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDQzLCAgMzcsICAyMSwgIDIyLAorICAg ICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1LCAgMTIsCisgICAgICAgIC8vY3Vfc2tp cF9mbGFnCisgICAgICAgIDU3LCAgNTksICA0NSwKKyAgICAgICAgLy9wcmVkX21vZGVfaWJjX2Zs YWcKKyAgICAgICAgIDAsICA1NywgIDQ0LAorICAgICAgICAvL3ByZWRfbW9kZV9mbGFnCisgICAg ICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2RlX3BsdF9mbGFnCisgICAgICAgIDAsCisg ICAgICAgIC8vY3VfYWN0X2VuYWJsZWRfZmxhZworICAgICAgICA0NiwKKyAgICAgICAgLy9pbnRy YV9iZHBjbV9sdW1hX2ZsYWcKKyAgICAgICAgNDAsCisgICAgICAgIC8vaW50cmFfYmRwY21fbHVt YV9kaXJfZmxhZworICAgICAgICAzNiwKKyAgICAgICAgLy9pbnRyYV9taXBfZmxhZworICAgICAg ICA0MSwgIDU3LCAgNTgsICAyNiwKKyAgICAgICAgLy9pbnRyYV9sdW1hX3JlZl9pZHgKKyAgICAg ICAgMjUsICA1OCwKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZworICAg ICAgICAzMywKKyAgICAgICAgLy9pbnRyYV9zdWJwYXJ0aXRpb25zX3NwbGl0X2ZsYWcKKyAgICAg ICAgMzYsCisgICAgICAgIC8vaW50cmFfbHVtYV9tcG1fZmxhZworICAgICAgICAzNiwKKyAgICAg ICAgLy9pbnRyYV9sdW1hX25vdF9wbGFuYXJfZmxhZworICAgICAgICAxMiwgIDIwLAorICAgICAg ICAvL2ludHJhX2JkcGNtX2Nocm9tYV9mbGFnCisgICAgICAgICAwLAorICAgICAgICAvL2ludHJh X2JkcGNtX2Nocm9tYV9kaXJfZmxhZworICAgICAgICAxMywKKyAgICAgICAgLy9jY2xtX21vZGVf ZmxhZworICAgICAgICAzNCwKKyAgICAgICAgLy9jY2xtX21vZGVfaWR4CisgICAgICAgIDI3LAor ICAgICAgICAvL2ludHJhX2Nocm9tYV9wcmVkX21vZGUKKyAgICAgICAgMjUsCisgICAgICAgIC8v Z2VuZXJhbF9tZXJnZV9mbGFnCisgICAgICAgIDIxLAorICAgICAgICAvL2ludGVyX3ByZWRfaWRj CisgICAgICAgICA3LCAgIDYsICAgNSwgIDEyLCAgIDQsICA0MCwKKyAgICAgICAgLy9pbnRlcl9h ZmZpbmVfZmxhZworICAgICAgICAxMiwgIDEzLCAgMTQsCisgICAgICAgIC8vY3VfYWZmaW5lX3R5 cGVfZmxhZworICAgICAgICAzNSwKKyAgICAgICAgLy9zeW1fbXZkX2ZsYWcKKyAgICAgICAgMjgs CisgICAgICAgIC8vcmVmX2lkeF9sMCBhbmQgcmVmX2lkeF9sMQorICAgICAgICAyMCwgIDM1LAor ICAgICAgICAvL212cF9sMF9mbGFnIGFuZCBtdnBfbDFfZmxhZworICAgICAgICAzNCwKKyAgICAg ICAgLy9hbXZyX2ZsYWcKKyAgICAgICAgNTksICA1OCwKKyAgICAgICAgLy9hbXZyX3ByZWNpc2lv bl9pZHgKKyAgICAgICAgNjAsICA0OCwgIDYwLAorICAgICAgICAvL2Jjd19pZHgKKyAgICAgICAg IDQsCisgICAgICAgIC8vY3VfY29kZWRfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9jdV9z YnRfZmxhZworICAgICAgICA1NiwgIDU3LAorICAgICAgICAvL2N1X3NidF9xdWFkX2ZsYWcKKyAg ICAgICAgNDIsCisgICAgICAgIC8vY3Vfc2J0X2hvcml6b250YWxfZmxhZworICAgICAgICAyMCwg IDQzLCAgMTIsCisgICAgICAgIC8vY3Vfc2J0X3Bvc19mbGFnCisgICAgICAgIDI4LAorICAgICAg ICAvL2xmbnN0X2lkeAorICAgICAgICAzNywgIDQ1LCAgMjcsCisgICAgICAgIC8vbXRzX2lkeAor ICAgICAgICA0NSwgIDQwLCAgMjcsICAgMCwKKyAgICAgICAgLy9jb3B5X2Fib3ZlX3BhbGV0dGVf aW5kaWNlc19mbGFnCisgICAgICAgIDU5LAorICAgICAgICAvL3BhbGV0dGVfdHJhbnNwb3NlX2Zs YWcKKyAgICAgICAgNDIsCisgICAgICAgIC8vcnVuX2NvcHlfZmxhZworICAgICAgICA1MSwgIDMw LCAgMzAsICAzOCwgIDIzLCAgMzgsICA1MywgIDQ2LAorICAgICAgICAvL3JlZ3VsYXJfbWVyZ2Vf ZmxhZworICAgICAgICAzOCwgICA3LAorICAgICAgICAvL21tdmRfbWVyZ2VfZmxhZworICAgICAg ICAyNiwKKyAgICAgICAgLy9tbXZkX2NhbmRfZmxhZworICAgICAgICA0MywKKyAgICAgICAgLy9t bXZkX2Rpc3RhbmNlX2lkeAorICAgICAgICA2MCwKKyAgICAgICAgLy9jaWlwX2ZsYWcKKyAgICAg ICAgNTcsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfZmxhZworICAgICAgICA0OCwgIDU3LCAg NDQsCisgICAgICAgIC8vbWVyZ2Vfc3ViYmxvY2tfaWR4CisgICAgICAgICA1LAorICAgICAgICAv L21lcmdlX2lkeCwgbWVyZ2VfZ3BtX2lkeDAsIGFuZCBtZXJnZV9ncG1faWR4MQorICAgICAgICAy MCwKKyAgICAgICAgLy9hYnNfbXZkX2dyZWF0ZXIwX2ZsYWcKKyAgICAgICAgNDQsCisgICAgICAg IC8vYWJzX212ZF9ncmVhdGVyMV9mbGFnCisgICAgICAgIDQzLAorICAgICAgICAvL3R1X3lfY29k ZWRfZmxhZworICAgICAgICAyMywgICA1LCAgMjAsICAgNywKKyAgICAgICAgLy90dV9jYl9jb2Rl ZF9mbGFnCisgICAgICAgIDI1LCAgMjgsCisgICAgICAgIC8vdHVfY3JfY29kZWRfZmxhZworICAg ICAgICAyNSwgIDI5LCAgNDUsCisgICAgICAgIC8vY3VfcXBfZGVsdGFfYWJzCisgICAgICAgIENO VSwgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfZmxhZworICAgICAgICBDTlUs CisgICAgICAgIC8vY3VfY2hyb21hX3FwX29mZnNldF9pZHgKKyAgICAgICAgQ05VLAorICAgICAg ICAvL3RyYW5zZm9ybV9za2lwX2ZsYWcKKyAgICAgICAgMjUsICAgOSwKKyAgICAgICAgLy90dV9q b2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWcKKyAgICAgICAgMjcsICAzNiwgIDQ1LAorICAgICAgICAv L2xhc3Rfc2lnX2NvZWZmX3hfcHJlZml4CisgICAgICAgICA2LCAgMTMsICAxMiwgICA2LCAgIDYs ICAxMiwgIDE0LCAgMTQsICAxMywgIDEyLCAgMjksICAgNywgICA2LCAgMTMsICAzNiwgIDI4LAor ICAgICAgICAxNCwgIDEzLCAgIDUsICAyNiwgIDEyLCAgIDQsICAxOCwKKyAgICAgICAgLy9sYXN0 X3NpZ19jb2VmZl95X3ByZWZpeAorICAgICAgICAgNSwgICA1LCAgMTIsICAgNiwgICA2LCAgIDQs ICAgNiwgIDE0LCAgIDUsICAxMiwgIDE0LCAgIDcsICAxMywgICA1LCAgMTMsICAyMSwKKyAgICAg ICAgMTQsICAyMCwgIDEyLCAgMzQsICAxMSwgICA0LCAgMTgsCisgICAgICAgIC8vc2JfY29kZWRf ZmxhZworICAgICAgICAyNSwgIDMwLCAgMjUsICA0NSwgIDE4LCAgMTIsICAyOSwKKyAgICAgICAg Ly9zaWdfY29lZmZfZmxhZworICAgICAgICAxNywgIDQxLCAgNDIsICAyOSwgIDI1LCAgNDksICA0 MywgIDM3LCAgMzMsICA1OCwgIDUxLCAgMzAsICAxOSwgIDM4LCAgMzgsICA0NiwKKyAgICAgICAg MzQsICA1NCwgIDU0LCAgMzksICAgNiwgIDM5LCAgMzksICAzOSwgIDE5LCAgMzksICA1NCwgIDM5 LCAgMTksICAzOSwgIDM5LCAgMzksCisgICAgICAgIDU2LCAgMzksICAzOSwgIDM5LCAgMTcsICAz NCwgIDM1LCAgMjEsICA0MSwgIDU5LCAgNjAsICAzOCwgIDM1LCAgNDUsICA1MywgIDU0LAorICAg ICAgICA0NCwgIDM5LCAgMzksICAzOSwgIDM0LCAgMzgsICA2MiwgIDM5LCAgMjYsICAzOSwgIDM5 LCAgMzksICA0MCwgIDM1LCAgNDQsCisgICAgICAgIC8vcGFyX2xldmVsX2ZsYWcKKyAgICAgICAg MTgsICAxNywgIDMzLCAgMTgsICAyNiwgIDQyLCAgMjUsICAzMywgIDI2LCAgNDIsICAyNywgIDI1 LCAgMzQsICA0MiwgIDQyLCAgMzUsCisgICAgICAgIDI2LCAgMjcsICA0MiwgIDIwLCAgMjAsICAy NSwgIDI1LCAgMjYsICAxMSwgIDE5LCAgMjcsICAzMywgIDQyLCAgMzUsICAzNSwgIDQzLAorICAg ICAgICAgMywKKyAgICAgICAgLy9hYnNfbGV2ZWxfZ3R4X2ZsYWcKKyAgICAgICAgIDAsICAxNywg IDI2LCAgMTksICAzNSwgIDIxLCAgMjUsICAzNCwgIDIwLCAgMjgsICAyOSwgIDMzLCAgMjcsICAy OCwgIDI5LCAgMjIsCisgICAgICAgIDM0LCAgMjgsICA0NCwgIDM3LCAgMzgsICAgMCwgIDI1LCAg MTksICAyMCwgIDEzLCAgMTQsICA1NywgIDQ0LCAgMzAsICAzMCwgIDIzLAorICAgICAgICAxNywg ICAwLCAgIDEsICAxNywgIDI1LCAgMTgsICAgMCwgICA5LCAgMjUsICAzMywgIDM0LCAgIDksICAy NSwgIDE4LCAgMjYsICAyMCwKKyAgICAgICAgMjUsICAxOCwgIDE5LCAgMjcsICAyOSwgIDE3LCAg IDksICAyNSwgIDEwLCAgMTgsICAgNCwgIDE3LCAgMzMsICAxOSwgIDIwLCAgMjksCisgICAgICAg IDE4LCAgMTEsICAgNCwgIDI4LCAgIDIsICAxMCwgICAzLCAgIDMsCisgICAgICAgIC8vY29lZmZf c2lnbl9mbGFnCisgICAgICAgICA1LCAgMTAsICA1MywgIDQzLCAgMjUsICA0NiwKKyAgICB9LAor ICAgIHsKKyAgICAgICAgLy9hbGZfY3RiX2ZsYWcKKyAgICAgICAgMzMsICA1MiwgIDQ2LCAgMjUs ICA2MSwgIDU0LCAgMjUsICA2MSwgIDU0LAorICAgICAgICAvL2FsZl91c2VfYXBzX2ZsYWcKKyAg ICAgICAgNDYsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jYl9pZGMKKyAgICAgICAgMjUsICAzNSwg IDM4LAorICAgICAgICAvL2FsZl9jdGJfY2NfY3JfaWRjCisgICAgICAgIDI1LCAgMjgsICAzOCwK KyAgICAgICAgLy9hbGZfY3RiX2ZpbHRlcl9hbHRfaWR4CisgICAgICAgIDExLCAgMjYsCisgICAg ICAgIC8vc2FvX21lcmdlX2xlZnRfZmxhZyBhbmQgc2FvX21lcmdlX3VwX2ZsYWcKKyAgICAgICAg MiwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBhbmQgc2FvX3R5cGVfaWR4X2Nocm9tYQor ICAgICAgICAyLAorICAgICAgICAvL3NwbGl0X2N1X2ZsYWcKKyAgICAgICAgMTgsICAyNywgIDE1 LCAgMTgsICAyOCwgIDQ1LCAgMjYsICAgNywgIDIzLAorICAgICAgICAvL3NwbGl0X3F0X2ZsYWcK KyAgICAgICAgMjYsICAzNiwgIDM4LCAgMTgsICAzNCwgIDIxLAorICAgICAgICAvL210dF9zcGxp dF9jdV92ZXJ0aWNhbF9mbGFnCisgICAgICAgIDQzLCAgNDIsICAzNywgIDQyLCAgNDQsCisgICAg ICAgIC8vbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnCisgICAgICAgIDI4LCAgMjksICAyOCwgIDI5 LAorICAgICAgICAvL25vbl9pbnRlcl9mbGFnCisgICAgICAgIDI1LCAgMjAsCisgICAgICAgIC8v Y3Vfc2tpcF9mbGFnCisgICAgICAgIDU3LCAgNjAsICA0NiwKKyAgICAgICAgLy9wcmVkX21vZGVf aWJjX2ZsYWcKKyAgICAgICAgIDAsICA0MywgIDQ1LAorICAgICAgICAvL3ByZWRfbW9kZV9mbGFn CisgICAgICAgIDQwLCAgMzUsCisgICAgICAgIC8vcHJlZF9tb2RlX3BsdF9mbGFnCisgICAgICAg IDE3LAorICAgICAgICAvL2N1X2FjdF9lbmFibGVkX2ZsYWcKKyAgICAgICAgNDYsCisgICAgICAg IC8vaW50cmFfYmRwY21fbHVtYV9mbGFnCisgICAgICAgIDE5LAorICAgICAgICAvL2ludHJhX2Jk cGNtX2x1bWFfZGlyX2ZsYWcKKyAgICAgICAgMjEsCisgICAgICAgIC8vaW50cmFfbWlwX2ZsYWcK KyAgICAgICAgNTYsICA1NywgIDUwLCAgMjYsCisgICAgICAgIC8vaW50cmFfbHVtYV9yZWZfaWR4 CisgICAgICAgIDI1LCAgNTksCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19tb2RlX2Zs YWcKKyAgICAgICAgMzMsCisgICAgICAgIC8vaW50cmFfc3VicGFydGl0aW9uc19zcGxpdF9mbGFn CisgICAgICAgIDQzLAorICAgICAgICAvL2ludHJhX2x1bWFfbXBtX2ZsYWcKKyAgICAgICAgNDQs CisgICAgICAgIC8vaW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcKKyAgICAgICAgMTMsICAgNiwK KyAgICAgICAgLy9pbnRyYV9iZHBjbV9jaHJvbWFfZmxhZworICAgICAgICAgMCwKKyAgICAgICAg Ly9pbnRyYV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcKKyAgICAgICAgMjgsCisgICAgICAgIC8vY2Ns bV9tb2RlX2ZsYWcKKyAgICAgICAgMjYsCisgICAgICAgIC8vY2NsbV9tb2RlX2lkeAorICAgICAg ICAyNywKKyAgICAgICAgLy9pbnRyYV9jaHJvbWFfcHJlZF9tb2RlCisgICAgICAgIDI1LAorICAg ICAgICAvL2dlbmVyYWxfbWVyZ2VfZmxhZworICAgICAgICAgNiwKKyAgICAgICAgLy9pbnRlcl9w cmVkX2lkYworICAgICAgICAxNCwgIDEzLCAgIDUsICAgNCwgICAzLCAgNDAsCisgICAgICAgIC8v aW50ZXJfYWZmaW5lX2ZsYWcKKyAgICAgICAgMTksICAxMywgICA2LAorICAgICAgICAvL2N1X2Fm ZmluZV90eXBlX2ZsYWcKKyAgICAgICAgMzUsCisgICAgICAgIC8vc3ltX212ZF9mbGFnCisgICAg ICAgIDI4LAorICAgICAgICAvL3JlZl9pZHhfbDAgYW5kIHJlZl9pZHhfbDEKKyAgICAgICAgIDUs ICAzNSwKKyAgICAgICAgLy9tdnBfbDBfZmxhZyBhbmQgbXZwX2wxX2ZsYWcKKyAgICAgICAgMzQs CisgICAgICAgIC8vYW12cl9mbGFnCisgICAgICAgIDU5LCAgNTAsCisgICAgICAgIC8vYW12cl9w cmVjaXNpb25faWR4CisgICAgICAgIDM4LCAgMjYsICA2MCwKKyAgICAgICAgLy9iY3dfaWR4Cisg ICAgICAgICA1LAorICAgICAgICAvL2N1X2NvZGVkX2ZsYWcKKyAgICAgICAgMTIsCisgICAgICAg IC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgNDEsICA1NywKKyAgICAgICAgLy9jdV9zYnRfcXVhZF9m bGFnCisgICAgICAgIDQyLAorICAgICAgICAvL2N1X3NidF9ob3Jpem9udGFsX2ZsYWcKKyAgICAg ICAgMzUsICA1MSwgIDI3LAorICAgICAgICAvL2N1X3NidF9wb3NfZmxhZworICAgICAgICAyOCwK KyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAgNTIsICAzNywgIDI3LAorICAgICAgICAvL210 c19pZHgKKyAgICAgICAgNDUsICAyNSwgIDI3LCAgIDAsCisgICAgICAgIC8vY29weV9hYm92ZV9w YWxldHRlX2luZGljZXNfZmxhZworICAgICAgICA1MCwKKyAgICAgICAgLy9wYWxldHRlX3RyYW5z cG9zZV9mbGFnCisgICAgICAgIDM1LAorICAgICAgICAvL3J1bl9jb3B5X2ZsYWcKKyAgICAgICAg NTgsICA0NSwgIDQ1LCAgMzAsICAzOCwgIDQ1LCAgMzgsICA0NiwKKyAgICAgICAgLy9yZWd1bGFy X21lcmdlX2ZsYWcKKyAgICAgICAgNDYsICAxNSwKKyAgICAgICAgLy9tbXZkX21lcmdlX2ZsYWcK KyAgICAgICAgMjUsCisgICAgICAgIC8vbW12ZF9jYW5kX2ZsYWcKKyAgICAgICAgNDMsCisgICAg ICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAgICAgNTksCisgICAgICAgIC8vY2lpcF9mbGFn CisgICAgICAgIDU3LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2ZsYWcKKyAgICAgICAgMjUs ICA1OCwgIDQ1LAorICAgICAgICAvL21lcmdlX3N1YmJsb2NrX2lkeAorICAgICAgICAgNCwKKyAg ICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9pZHgwLCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAg ICAgICAgMTgsCisgICAgICAgIC8vYWJzX212ZF9ncmVhdGVyMF9mbGFnCisgICAgICAgIDUxLAor ICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxhZworICAgICAgICAzNiwKKyAgICAgICAgLy90 dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgMTUsICAgNiwgICA1LCAgMTQsCisgICAgICAgIC8vdHVf Y2JfY29kZWRfZmxhZworICAgICAgICAyNSwgIDM3LAorICAgICAgICAvL3R1X2NyX2NvZGVkX2Zs YWcKKyAgICAgICAgIDksICAzNiwgIDQ1LAorICAgICAgICAvL2N1X3FwX2RlbHRhX2FicworICAg ICAgICBDTlUsIENOVSwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zmc2V0X2ZsYWcKKyAgICAg ICAgQ05VLAorICAgICAgICAvL2N1X2Nocm9tYV9xcF9vZmZzZXRfaWR4CisgICAgICAgIENOVSwK KyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgICAgIDI1LCAgMTcsCisgICAgICAg IC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnCisgICAgICAgIDQyLCAgNDMsICA1MiwKKyAg ICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZpeAorICAgICAgICAgNiwgICA2LCAgMTIsICAx NCwgICA2LCAgIDQsICAxNCwgICA3LCAgIDYsICAgNCwgIDI5LCAgIDcsICAgNiwgICA2LCAgMTIs ICAyOCwKKyAgICAgICAgIDcsICAxMywgIDEzLCAgMzUsICAxOSwgICA1LCAgIDQsCisgICAgICAg IC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAgICAgICAgIDUsICAgNSwgIDIwLCAgMTMsICAx MywgIDE5LCAgMjEsICAgNiwgIDEyLCAgMTIsICAxNCwgIDE0LCAgIDUsICAgNCwgIDEyLCAgMTMs CisgICAgICAgICA3LCAgMTMsICAxMiwgIDQxLCAgMTEsICAgNSwgIDI3LAorICAgICAgICAvL3Ni X2NvZGVkX2ZsYWcKKyAgICAgICAgMjUsICA0NSwgIDI1LCAgMTQsICAxOCwgIDM1LCAgNDUsCisg ICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAgICAgMTcsICA0MSwgIDQ5LCAgMzYsICAgMSwg IDQ5LCAgNTAsICAzNywgIDQ4LCAgNTEsICA1OCwgIDQ1LCAgMjYsICA0NSwgIDUzLCAgNDYsCisg ICAgICAgIDQ5LCAgNTQsICA2MSwgIDM5LCAgMzUsICAzOSwgIDM5LCAgMzksICAxOSwgIDU0LCAg MzksICAzOSwgIDUwLCAgMzksICAzOSwgIDM5LAorICAgICAgICAgMCwgIDM5LCAgMzksICAzOSwg ICA5LCAgNDksICA1MCwgIDM2LCAgNDgsICA1OSwgIDU5LCAgMzgsICAzNCwgIDQ1LCAgMzgsICAz MSwKKyAgICAgICAgNTgsICAzOSwgIDM5LCAgMzksICAzNCwgIDM4LCAgNTQsICAzOSwgIDQxLCAg MzksICAzOSwgIDM5LCAgMjUsICA1MCwgIDM3LAorICAgICAgICAvL3Bhcl9sZXZlbF9mbGFnCisg ICAgICAgIDMzLCAgNDAsICAyNSwgIDQxLCAgMjYsICA0MiwgIDI1LCAgMzMsICAyNiwgIDM0LCAg MjcsICAyNSwgIDQxLCAgNDIsICA0MiwgIDM1LAorICAgICAgICAzMywgIDI3LCAgMzUsICA0Miwg IDQzLCAgMzMsICAyNSwgIDI2LCAgMzQsICAxOSwgIDI3LCAgMzMsICA0MiwgIDQzLCAgMzUsICA0 MywKKyAgICAgICAgMTEsCisgICAgICAgIC8vYWJzX2xldmVsX2d0eF9mbGFnCisgICAgICAgICAw LCAgIDAsICAzMywgIDM0LCAgMzUsICAyMSwgIDI1LCAgMzQsICAzNSwgIDI4LCAgMjksICA0MCwg IDQyLCAgNDMsICAyOSwgIDMwLAorICAgICAgICA0OSwgIDM2LCAgMzcsICA0NSwgIDM4LCAgIDAs ICA0MCwgIDM0LCAgNDMsICAzNiwgIDM3LCAgNTcsICA1MiwgIDQ1LCAgMzgsICA0NiwKKyAgICAg ICAgMjUsICAgMCwgICAwLCAgMTcsICAyNSwgIDI2LCAgIDAsICAgOSwgIDI1LCAgMzMsICAxOSwg ICAwLCAgMjUsICAzMywgIDI2LCAgMjAsCisgICAgICAgIDI1LCAgMzMsICAyNywgIDM1LCAgMjIs ICAyNSwgICAxLCAgMjUsICAzMywgIDI2LCAgMTIsICAyNSwgIDMzLCAgMjcsICAyOCwgIDM3LAor ICAgICAgICAxOSwgIDExLCAgIDQsICAgNiwgICAzLCAgIDQsICAgNCwgICA1LAorICAgICAgICAv L2NvZWZmX3NpZ25fZmxhZworICAgICAgICAzNSwgIDI1LCAgNDYsICAyOCwgIDMzLCAgMzgsCisg ICAgfSwKKyAgICAvL3NoaWZ0SWR4CisgICAgeworICAgICAgICAvL2FsZl9jdGJfZmxhZworICAg ICAgICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsCisgICAgICAg IC8vYWxmX3VzZV9hcHNfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9hbGZfY3RiX2NjX2Ni X2lkYworICAgICAgICAgNCwgICAxLCAgIDQsCisgICAgICAgIC8vYWxmX2N0Yl9jY19jcl9pZGMK KyAgICAgICAgIDQsICAgMSwgICA0LAorICAgICAgICAvL2FsZl9jdGJfZmlsdGVyX2FsdF9pZHgK KyAgICAgICAgIDAsICAgMCwKKyAgICAgICAgLy9zYW9fbWVyZ2VfbGVmdF9mbGFnIGFuZCBzYW9f bWVyZ2VfdXBfZmxhZworICAgICAgICAgMCwKKyAgICAgICAgLy9zYW9fdHlwZV9pZHhfbHVtYSBh bmQgc2FvX3R5cGVfaWR4X2Nocm9tYQorICAgICAgICAgNCwKKyAgICAgICAgLy9zcGxpdF9jdV9m bGFnCisgICAgICAgIDEyLCAgMTMsICAgOCwgICA4LCAgMTMsICAxMiwgICA1LCAgIDksICAgOSwK KyAgICAgICAgLy9zcGxpdF9xdF9mbGFnCisgICAgICAgICAwLCAgIDgsICAgOCwgIDEyLCAgMTIs ICAgOCwKKyAgICAgICAgLy9tdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZworICAgICAgICAgOSwg ICA4LCAgIDksICAgOCwgICA1LAorICAgICAgICAvL210dF9zcGxpdF9jdV9iaW5hcnlfZmxhZwor ICAgICAgICAxMiwgIDEzLCAgMTIsICAxMywKKyAgICAgICAgLy9ub25faW50ZXJfZmxhZworICAg ICAgICAgMSwgICAwLAorICAgICAgICAvL2N1X3NraXBfZmxhZworICAgICAgICAgNSwgICA0LCAg IDgsCisgICAgICAgIC8vcHJlZF9tb2RlX2liY19mbGFnCisgICAgICAgICAxLCAgIDUsICAgOCwK KyAgICAgICAgLy9wcmVkX21vZGVfZmxhZworICAgICAgICAgNSwgICAxLAorICAgICAgICAvL3By ZWRfbW9kZV9wbHRfZmxhZworICAgICAgICAgMSwKKyAgICAgICAgLy9jdV9hY3RfZW5hYmxlZF9m bGFnCisgICAgICAgICAxLAorICAgICAgICAvL2ludHJhX2JkcGNtX2x1bWFfZmxhZworICAgICAg ICAgMSwKKyAgICAgICAgLy9pbnRyYV9iZHBjbV9sdW1hX2Rpcl9mbGFnCisgICAgICAgICA0LAor ICAgICAgICAvL2ludHJhX21pcF9mbGFnCisgICAgICAgICA5LCAgMTAsICAgOSwgICA2LAorICAg ICAgICAvL2ludHJhX2x1bWFfcmVmX2lkeAorICAgICAgICAgNSwgICA4LAorICAgICAgICAvL2lu dHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnCisgICAgICAgICA5LAorICAgICAgICAvL2ludHJh X3N1YnBhcnRpdGlvbnNfc3BsaXRfZmxhZworICAgICAgICAgMiwKKyAgICAgICAgLy9pbnRyYV9s dW1hX21wbV9mbGFnCisgICAgICAgICA2LAorICAgICAgICAvL2ludHJhX2x1bWFfbm90X3BsYW5h cl9mbGFnCisgICAgICAgICAxLCAgIDUsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Zs YWcKKyAgICAgICAgIDEsCisgICAgICAgIC8vaW50cmFfYmRwY21fY2hyb21hX2Rpcl9mbGFnCisg ICAgICAgICAwLAorICAgICAgICAvL2NjbG1fbW9kZV9mbGFnCisgICAgICAgICA0LAorICAgICAg ICAvL2NjbG1fbW9kZV9pZHgKKyAgICAgICAgIDksCisgICAgICAgIC8vaW50cmFfY2hyb21hX3By ZWRfbW9kZQorICAgICAgICAgNSwKKyAgICAgICAgLy9nZW5lcmFsX21lcmdlX2ZsYWcKKyAgICAg ICAgIDQsCisgICAgICAgIC8vaW50ZXJfcHJlZF9pZGMKKyAgICAgICAgIDAsICAgMCwgICAxLCAg IDQsICAgNCwgICAwLAorICAgICAgICAvL2ludGVyX2FmZmluZV9mbGFnCisgICAgICAgICA0LCAg IDAsICAgMCwKKyAgICAgICAgLy9jdV9hZmZpbmVfdHlwZV9mbGFnCisgICAgICAgICA0LAorICAg ICAgICAvL3N5bV9tdmRfZmxhZworICAgICAgICAgNSwKKyAgICAgICAgLy9yZWZfaWR4X2wwIGFu ZCByZWZfaWR4X2wxCisgICAgICAgICAwLCAgIDQsCisgICAgICAgIC8vbXZwX2wwX2ZsYWcgYW5k IG12cF9sMV9mbGFnCisgICAgICAgIDEyLAorICAgICAgICAvL2FtdnJfZmxhZworICAgICAgICAg MCwgICAwLAorICAgICAgICAvL2FtdnJfcHJlY2lzaW9uX2lkeAorICAgICAgICAgNCwgICA1LCAg MCwKKyAgICAgICAgLy9iY3dfaWR4CisgICAgICAgICAxLAorICAgICAgICAvL2N1X2NvZGVkX2Zs YWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vY3Vfc2J0X2ZsYWcKKyAgICAgICAgIDEsICAgNSwK KyAgICAgICAgLy9jdV9zYnRfcXVhZF9mbGFnCisgICAgICAgIDEwLAorICAgICAgICAvL2N1X3Ni dF9ob3Jpem9udGFsX2ZsYWcKKyAgICAgICAgIDgsICAgNCwgICAxLAorICAgICAgICAvL2N1X3Ni dF9wb3NfZmxhZworICAgICAgICAxMywKKyAgICAgICAgLy9sZm5zdF9pZHgKKyAgICAgICAgIDks ICAgOSwgIDEwLAorICAgICAgICAvL210c19pZHgKKyAgICAgICAgIDgsICAgMCwgICA5LCAgIDAs CisgICAgICAgIC8vY29weV9hYm92ZV9wYWxldHRlX2luZGljZXNfZmxhZworICAgICAgICAgOSwK KyAgICAgICAgLy9wYWxldHRlX3RyYW5zcG9zZV9mbGFnCisgICAgICAgICA1LAorICAgICAgICAv L3J1bl9jb3B5X2ZsYWcKKyAgICAgICAgIDksICAgNiwgICA5LCAgMTAsICAgNSwgICAwLCAgIDks ICAgNSwKKyAgICAgICAgLy9yZWd1bGFyX21lcmdlX2ZsYWcKKyAgICAgICAgIDUsICAgNSwKKyAg ICAgICAgLy9tbXZkX21lcmdlX2ZsYWcKKyAgICAgICAgIDQsCisgICAgICAgIC8vbW12ZF9jYW5k X2ZsYWcKKyAgICAgICAgMTAsCisgICAgICAgIC8vbW12ZF9kaXN0YW5jZV9pZHgKKyAgICAgICAg IDAsCisgICAgICAgIC8vY2lpcF9mbGFnCisgICAgICAgICAxLAorICAgICAgICAvL21lcmdlX3N1 YmJsb2NrX2ZsYWcKKyAgICAgICAgIDQsICAgNCwgICA0LAorICAgICAgICAvL21lcmdlX3N1YmJs b2NrX2lkeAorICAgICAgICAgMCwKKyAgICAgICAgLy9tZXJnZV9pZHgsIG1lcmdlX2dwbV9pZHgw LCBhbmQgbWVyZ2VfZ3BtX2lkeDEKKyAgICAgICAgIDQsCisgICAgICAgIC8vYWJzX212ZF9ncmVh dGVyMF9mbGFnCisgICAgICAgICA5LAorICAgICAgICAvL2Fic19tdmRfZ3JlYXRlcjFfZmxhZwor ICAgICAgICAgNSwKKyAgICAgICAgLy90dV95X2NvZGVkX2ZsYWcKKyAgICAgICAgIDUsICAgMSwg ICA4LCAgIDksCisgICAgICAgIC8vdHVfY2JfY29kZWRfZmxhZworICAgICAgICAgNSwgICAwLAor ICAgICAgICAvL3R1X2NyX2NvZGVkX2ZsYWcKKyAgICAgICAgIDIsICAgMSwgICAwLAorICAgICAg ICAvL2N1X3FwX2RlbHRhX2FicworICAgICAgICAgOCwgICA4LAorICAgICAgICAvL2N1X2Nocm9t YV9xcF9vZmZzZXRfZmxhZworICAgICAgICAgOCwKKyAgICAgICAgLy9jdV9jaHJvbWFfcXBfb2Zm c2V0X2lkeAorICAgICAgICAgOCwKKyAgICAgICAgLy90cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAg ICAgICAxLCAgIDEsCisgICAgICAgIC8vdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnCisgICAg ICAgICAxLCAgIDEsICAgMCwKKyAgICAgICAgLy9sYXN0X3NpZ19jb2VmZl94X3ByZWZpeAorICAg ICAgICAgOCwgICA1LCAgIDQsICAgNSwgICA0LCAgIDQsICAgNSwgICA0LCAgIDEsICAgMCwgICA0 LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg NSwgICA0LCAgIDQsCisgICAgICAgIC8vbGFzdF9zaWdfY29lZmZfeV9wcmVmaXgKKyAgICAgICAg IDgsICAgNSwgICA4LCAgIDUsICAgNSwgICA0LCAgIDUsICAgNSwgICA0LCAgIDAsICAgNSwgICA0 LCAgIDEsICAgMCwgICAwLCAgIDEsCisgICAgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDYsICAg NSwgICA1LAorICAgICAgICAvL3NiX2NvZGVkX2ZsYWcKKyAgICAgICAgIDgsICAgNSwgICA1LCAg IDgsICAgNSwgICA4LCAgIDgsCisgICAgICAgIC8vc2lnX2NvZWZmX2ZsYWcKKyAgICAgICAgMTIs ICAgOSwgICA5LCAgMTAsICAgOSwgICA5LCAgIDksICAxMCwgICA4LCAgIDgsICAgOCwgIDEwLCAg IDksICAxMywgICA4LCAgIDgsCisgICAgICAgICA4LCAgIDgsICAgOCwgICA1LCAgIDgsICAgMCwg ICAwLCAgIDAsICAgOCwgICA4LCAgIDgsICAgOCwgICA4LCAgIDAsICAgNCwgICA0LAorICAgICAg ICAgMCwgICAwLCAgIDAsICAgMCwgIDEyLCAgMTIsICAgOSwgIDEzLCAgIDQsICAgNSwgICA4LCAg IDksICAgOCwgIDEyLCAgMTIsICAgOCwKKyAgICAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgOCwg ICA4LCAgIDgsICAgOCwgICA0LCAgIDAsICAgMCwgICAwLCAgMTMsICAxMywgICA4LAorICAgICAg ICAvL3Bhcl9sZXZlbF9mbGFnCisgICAgICAgICA4LCAgIDksICAxMiwgIDEzLCAgMTMsICAxMywg IDEwLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLCAgMTMsICAxMywgIDEzLAorICAgICAg ICAxMCwgIDEzLCAgMTMsICAxMywgIDEzLCAgIDgsICAxMiwgIDEyLCAgMTIsICAxMywgIDEzLCAg MTMsICAxMywgIDEzLCAgMTMsICAxMywKKyAgICAgICAgIDYsCisgICAgICAgIC8vYWJzX2xldmVs X2d0eF9mbGFnCisgICAgICAgICA5LCAgIDUsICAxMCwgIDEzLCAgMTMsICAxMCwgICA5LCAgMTAs ICAxMywgIDEzLCAgMTMsICAgOSwgIDEwLCAgMTAsICAxMCwgIDEzLAorICAgICAgICAgOCwgICA5 LCAgMTAsICAxMCwgIDEzLCAgIDgsICAgOCwgICA5LCAgMTIsICAxMiwgIDEwLCAgIDUsICAgOSwg ICA5LCAgIDksICAxMywKKyAgICAgICAgIDEsICAgNSwgICA5LCAgIDksICAgOSwgICA2LCAgIDUs ICAgOSwgIDEwLCAgMTAsICAgOSwgICA5LCAgIDksICAgOSwgICA5LCAgIDksCisgICAgICAgICA2 LCAgIDgsICAgOSwgICA5LCAgMTAsICAgMSwgICA1LCAgIDgsICAgOCwgICA5LCAgIDYsICAgNiwg ICA5LCAgIDgsICAgOCwgICA5LAorICAgICAgICAgNCwgICAyLCAgIDEsICAgNiwgICAxLCAgIDEs ICAgMSwgICAxLAorICAgICAgICAvL2NvZWZmX3NpZ25fZmxhZworICAgICAgICAgMSwgICA0LCAg IDQsICAgNSwgICA4LCAgIDgsCisgICAgfQorfTsKKworI2RlZmluZSBNQVhfU1VCX0JMT0NLUyAx NgorI2RlZmluZSBNQVhfU1VCX0JMT0NLX1NJWkUgNAorI2RlZmluZSBNQVhfVEJfU0laRSA2NAor Cit0eXBlZGVmIHN0cnVjdCBSZXNpZHVhbENvZGluZyB7CisgICAgLy9jb21tb24gZm9yIHRzIGFu ZCBub24gdHMKKyAgICBUcmFuc2Zvcm1CbG9jayAqdGI7CisKKyAgICBpbnQgbG9nMl9zYl93Owor ICAgIGludCBsb2cyX3NiX2g7CisgICAgaW50IGxhc3Rfc3ViX2Jsb2NrOworICAgIGludCBudW1f c2JfY29lZmY7CisgICAgaW50IHJlbV9iaW5zX3Bhc3MxOworCisgICAgaW50IHdpZHRoX2luX3Ni czsKKyAgICBpbnQgaGVpZ2h0X2luX3NiczsKKyAgICBpbnQgbmJfc2JzOworCisgICAgY29uc3Qg dWludDhfdCAqc2Jfc2Nhbl94X29mZjsKKyAgICBjb25zdCB1aW50OF90ICpzYl9zY2FuX3lfb2Zm OworICAgIGNvbnN0IHVpbnQ4X3QgKnNjYW5feF9vZmY7CisgICAgY29uc3QgdWludDhfdCAqc2Nh bl95X29mZjsKKworICAgIHVpbnQ4X3Qgc2JfY29kZWRfZmxhZ1tNQVhfU1VCX0JMT0NLUyAqIE1B WF9TVUJfQkxPQ0tTXTsKKyAgICBpbnQgc2lnX2NvZWZmX2ZsYWdbTUFYX1RCX1NJWkUgKiBNQVhf VEJfU0laRV07CisgICAgaW50IGFic19sZXZlbF9wYXNzMVtNQVhfVEJfU0laRSAqIE1BWF9UQl9T SVpFXTsgICAgICAgICAgICAgIC8vLzwgQWJzTGV2ZWxQYXNzMVtdW10KKyAgICBpbnQgYWJzX2xl dmVsW01BWF9UQl9TSVpFICogTUFYX1RCX1NJWkVdOworCisgICAgLy9mb3IgdHMgb25seQorICAg IHVpbnQ4X3QgaW5mZXJfc2JfY2JmOworICAgIGludCBjb2VmZl9zaWduX2xldmVsW01BWF9UQl9T SVpFICogTUFYX1RCX1NJWkVdOyAgICAgICAgICAgICAvLy88IENvZWZmU2lnbkxldmVsW11bXQor CisgICAgLy9mb3Igbm9uIHRzIG9ubHkKKyAgICBpbnQgcXN0YXRlOworICAgIGludCBsYXN0X3Nj YW5fcG9zOworICAgIGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3g7CisgICAgaW50IGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeTsKK30gUmVzaWR1YWxDb2Rpbmc7CisKK3N0YXRpYyBpbnQgY2Fi YWNfcmVpbml0KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIHNraXBfYnl0ZXMo JmxjLT5lcC0+Y2MsIDApID09IE5VTEwgPyBBVkVSUk9SX0lOVkFMSUREQVRBIDogMDsKK30KKwor c3RhdGljIHZvaWQgY2FiYWNfaW5pdF9zdGF0ZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IGNvbnN0IFZWQ1NIICpzaCA9ICZsYy0+c2MtPnNoOworICAgIGNvbnN0IGludCBxcCAgICA9IGF2 X2NsaXBfdWludHAyKHNoLT5zbGljZV9xcF95LCA2KTsKKyAgICBpbnQgaW5pdF90eXBlICAgPSAy IC0gc2gtPnNsaWNlX3R5cGU7CisKKyAgICBhdl9hc3NlcnQwKFZWQ19DT05URVhUUyA9PSBTWU5U QVhfRUxFTUVOVF9MQVNUKTsKKworICAgIGlmIChzaC0+Y2FiYWNfaW5pdF9mbGFnICYmIHNoLT5z bGljZV90eXBlICE9IFZWQ19TTElDRV9UWVBFX0kpCisgICAgICAgIGluaXRfdHlwZSBePSAzOwor CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWVkNfQ09OVEVYVFM7IGkrKykgeworICAgICAgICBW VkNDYWJhY1N0YXRlICpzdGF0ZSA9ICZsYy0+ZXAtPmNhYmFjX3N0YXRlW2ldOworICAgICAgICBj b25zdCBpbnQgaW5pdF92YWx1ZSA9IGluaXRfdmFsdWVzW2luaXRfdHlwZV1baV07CisgICAgICAg IGNvbnN0IGludCBzaGlmdF9pZHggID0gaW5pdF92YWx1ZXNbM11baV07CisgICAgICAgIGNvbnN0 IGludCBtID0gKGluaXRfdmFsdWUgPj4gMykgLSA0OworICAgICAgICBjb25zdCBpbnQgbiA9ICgo aW5pdF92YWx1ZSAmIDcpICogMTgpICsgMTsKKyAgICAgICAgY29uc3QgaW50IHByZSA9IGF2X2Ns aXAoKChtICogKHFwIC0gMTYpKSA+PiAxKSArIG4sIDEsIDEyNyk7CisKKyAgICAgICAgc3RhdGUt PnN0YXRlWzBdID0gcHJlIDw8IDM7CisgICAgICAgIHN0YXRlLT5zdGF0ZVsxXSA9IHByZSA8PCA3 OworICAgICAgICBzdGF0ZS0+c2hpZnRbMF0gPSAoc2hpZnRfaWR4ID4+IDIgKSArIDI7CisgICAg ICAgIHN0YXRlLT5zaGlmdFsxXSA9IChzaGlmdF9pZHggJiAzICkgKyAzICsgc3RhdGUtPnNoaWZ0 WzBdOworICAgIH0KK30KKworaW50IGZmX3Z2Y19jYWJhY19pbml0KFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCBjdGJfYWRkciwKKyAgICBjb25zdCBpbnQgY3RiX2FkZHJfeCwgY29uc3Qg aW50IGN0Yl9hZGRyX3kpCit7CisgICAgaW50IHJldCA9IDA7CisgICAgY29uc3QgVlZDUFBTICpw cHMgICAgICAgICAgICAgICA9IGxjLT5mYy0+cHMucHBzOworICAgIGNvbnN0IGludCBmaXJzdF9j dGJfaW5fc2xpY2UgICAgPSAhY3RiX2FkZHI7CisgICAgY29uc3QgaW50IGZpcnN0X2N0Yl9pbl90 aWxlICAgICA9IGN0Yl9hZGRyX3ggPT0gcHBzLT5jdGJfdG9fY29sX2JkW2N0Yl9hZGRyX3hdICYm IGN0Yl9hZGRyX3kgPT0gcHBzLT5jdGJfdG9fcm93X2JkW2N0Yl9hZGRyX3ldOworCisgICAgaWYg KGZpcnN0X2N0Yl9pbl9zbGljZXx8IGZpcnN0X2N0Yl9pbl90aWxlKSB7CisgICAgICAgIGlmIChs Yy0+c2MtPm5iX2VwcyA9PSAxICYmICFmaXJzdF9jdGJfaW5fc2xpY2UpCisgICAgICAgICAgICBy ZXQgPSBjYWJhY19yZWluaXQobGMpOworICAgICAgICBpZiAocmV0ID09IDApCisgICAgICAgICAg ICBjYWJhY19pbml0X3N0YXRlKGxjKTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworLy9m aXhtZQorc3RhdGljIHZvaWQgdnZjX3JlZmlsbDIoQ0FCQUNDb250ZXh0KiBjKSB7CisgICAgaW50 IGk7CisgICAgdW5zaWduZWQgeDsKKyNpZiAhSEFWRV9GQVNUX0NMWgorICAgIHggPSBjLT5sb3cg XiAoYy0+bG93IC0gMSk7CisgICAgaSA9IDcgLSBmZl9oMjY0X25vcm1fc2hpZnRbeCA+PiAoQ0FC QUNfQklUUyAtIDEpXTsKKyNlbHNlCisgICAgaSA9IGZmX2N0eihjLT5sb3cpIC0gQ0FCQUNfQklU UzsKKyNlbmRpZgorCisgICAgeCA9IC1DQUJBQ19NQVNLOworCisjaWYgQ0FCQUNfQklUUyA9PSAx NgorICAgIHggKz0gKGMtPmJ5dGVzdHJlYW1bMF0gPDwgOSkgKyAoYy0+Ynl0ZXN0cmVhbVsxXSA8 PCAxKTsKKyNlbHNlCisgICAgeCArPSBjLT5ieXRlc3RyZWFtWzBdIDw8IDE7CisjZW5kaWYKKwor ICAgIGMtPmxvdyArPSB4IDw8IGk7CisjaWYgIVVOQ0hFQ0tFRF9CSVRTVFJFQU1fUkVBREVSCisg ICAgaWYgKGMtPmJ5dGVzdHJlYW0gPCBjLT5ieXRlc3RyZWFtX2VuZCkKKyNlbmRpZgorICAgICAg ICBjLT5ieXRlc3RyZWFtICs9IENBQkFDX0JJVFMgLyA4OworfQorCitzdGF0aWMgaW50IGlubGlu ZSB2dmNfZ2V0X2NhYmFjKENBQkFDQ29udGV4dCAqYywgVlZDQ2FiYWNTdGF0ZSogYmFzZSwgY29u c3QgaW50IGN0eCkKK3sKKyAgICBWVkNDYWJhY1N0YXRlICpzID0gYmFzZSArIGN0eDsKKyAgICBj b25zdCBpbnQgcVJhbmdlSWR4ID0gYy0+cmFuZ2UgPj4gNTsKKyAgICBjb25zdCBpbnQgcFN0YXRl ID0gcy0+c3RhdGVbMV0gKyAocy0+c3RhdGVbMF0gPDwgNCk7CisgICAgY29uc3QgaW50IHZhbE1w cyA9IHBTdGF0ZSA+PiAxNDsKKyAgICBjb25zdCBpbnQgUmFuZ2VMUFMgPSAocVJhbmdlSWR4ICog KCh2YWxNcHMgPyAzMjc2NyAtIHBTdGF0ZSA6IHBTdGF0ZSkgPj4gOSApID4+IDEpICsgNDsKKyAg ICBpbnQgYml0LCBscHNfbWFzazsKKworICAgIGMtPnJhbmdlIC09IFJhbmdlTFBTOworICAgIGxw c19tYXNrID0gKChjLT5yYW5nZTw8KENBQkFDX0JJVFMrMSkpIC0gYy0+bG93KT4+MzE7CisKKyAg ICBjLT5sb3cgLT0gKGMtPnJhbmdlPDwoQ0FCQUNfQklUUysxKSkgJiBscHNfbWFzazsKKyAgICBj LT5yYW5nZSArPSAoUmFuZ2VMUFMgLSBjLT5yYW5nZSkgJiBscHNfbWFzazsKKworICAgIGJpdCA9 IHZhbE1wcyBeIChscHNfbWFzayAmIDEpOworCisgICAgbHBzX21hc2sgPSBmZl9oMjY0X25vcm1f c2hpZnRbYy0+cmFuZ2VdOworICAgIGMtPnJhbmdlIDw8PSBscHNfbWFzazsKKyAgICBjLT5sb3cg IDw8PSBscHNfbWFzazsKKworICAgIGlmICghKGMtPmxvdyAmIENBQkFDX01BU0spKQorICAgICAg ICB2dmNfcmVmaWxsMihjKTsKKyAgICBzLT5zdGF0ZVswXSA9IHMtPnN0YXRlWzBdIC0gKHMtPnN0 YXRlWzBdID4+IHMtPnNoaWZ0WzBdKSArICgxMDIzICogYml0ID4+IHMtPnNoaWZ0WzBdKTsKKyAg ICBzLT5zdGF0ZVsxXSA9IHMtPnN0YXRlWzFdIC0gKHMtPnN0YXRlWzFdID4+IHMtPnNoaWZ0WzFd KSArICgxNjM4MyAqIGJpdCA+PiBzLT5zaGlmdFsxXSk7CisgICAgcmV0dXJuIGJpdDsKK30KKwor I2RlZmluZSBHRVRfQ0FCQUMoY3R4KSB2dmNfZ2V0X2NhYmFjKCZsYy0+ZXAtPmNjLCBsYy0+ZXAt PmNhYmFjX3N0YXRlLCBjdHgpCisKK3N0YXRpYyBhdl9hbHdheXNfaW5saW5lIGludCB2dmNfZ2V0 X2NhYmFjX2J5cGFzcyhDQUJBQ0NvbnRleHQgKmMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY19i eXBhc3MoYyk7Cit9CisKKy8vOS4zLjMuNCBUcnVuY2F0ZWQgYmluYXJ5IChUQikgYmluYXJpemF0 aW9uIHByb2Nlc3MKK3N0YXRpYyBpbnQgdHJ1bmNhdGVkX2JpbmFyeV9kZWNvZGUoVlZDTG9jYWxD b250ZXh0ICpsYywgY29uc3QgaW50IGNfbWF4KQoreworICAgIGNvbnN0IGludCBuID0gY19tYXgg KyAxOworICAgIGNvbnN0IGludCBrID0gYXZfbG9nMihuKTsKKyAgICBjb25zdCBpbnQgdSA9ICgx IDw8IChrKzEpKSAtIG47CisgICAgaW50IHYgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg azsgaSsrKQorICAgICAgICB2ID0gKHYgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMt PmVwLT5jYyk7CisgICAgaWYgKHYgPj0gdSkgeworICAgICAgICB2ID0gKHYgPDwgMSkgfCB2dmNf Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgICAgIHYgLT0gdTsKKyAgICB9Cisg ICAgcmV0dXJuIHY7Cit9CisKKy8vIDkuMy4zLjYgTGltaXRlZCBrLXRoIG9yZGVyIEV4cC1Hb2xv bWIgYmluYXJpemF0aW9uIHByb2Nlc3MKK3N0YXRpYyBpbnQgbGltaXRlZF9rdGhfb3JkZXJfZWdr X2RlY29kZShDQUJBQ0NvbnRleHQgKmMsIGNvbnN0IGludCBrLCBjb25zdCBpbnQgbWF4X3ByZV9l eHRfbGVuLCBjb25zdCBpbnQgdHJ1bmNfc3VmZml4X2xlbikKK3sKKyAgICBpbnQgcHJlX2V4dF9s ZW4gPSAwOworICAgIGludCBlc2NhcGVfbGVuZ3RoOworICAgIGludCB2YWwgPSAwOworICAgIHdo aWxlICgocHJlX2V4dF9sZW4gPCBtYXhfcHJlX2V4dF9sZW4pICYmIHZ2Y19nZXRfY2FiYWNfYnlw YXNzKGMpKQorICAgICAgICBwcmVfZXh0X2xlbisrOworICAgIGlmIChwcmVfZXh0X2xlbiA9PSBt YXhfcHJlX2V4dF9sZW4pCisgICAgICAgIGVzY2FwZV9sZW5ndGggPSB0cnVuY19zdWZmaXhfbGVu OworICAgIGVsc2UKKyAgICAgICAgZXNjYXBlX2xlbmd0aCA9IHByZV9leHRfbGVuICsgazsKKyAg ICB3aGlsZSAoZXNjYXBlX2xlbmd0aC0tID4gMCkgeworICAgICAgICB2YWwgPSAodmFsIDw8IDEp ICsgdnZjX2dldF9jYWJhY19ieXBhc3MoYyk7CisgICAgfQorICAgIHZhbCArPSAoKDEgPDwgcHJl X2V4dF9sZW4pIC0gMSkgPDwgazsKKyAgICByZXR1cm4gdmFsOworfQorCitzdGF0aWMgYXZfYWx3 YXlzX2lubGluZQordm9pZCBnZXRfbGVmdF90b3AoY29uc3QgVlZDTG9jYWxDb250ZXh0ICpsYywg dWludDhfdCAqbGVmdCwgdWludDhfdCAqdG9wLAorICAgIGNvbnN0IGludCB4MCwgY29uc3QgaW50 IHkwLCBjb25zdCB1aW50OF90ICpsZWZ0X2N0eCwgY29uc3QgdWludDhfdCAqdG9wX2N0eCkKK3sK KyAgICBjb25zdCBWVkNGcmFtZUNvbnRleHQgKmZjICAgPSBsYy0+ZmM7CisgICAgY29uc3QgVlZD U1BTICpzcHMgICAgICAgICAgID0gZmMtPnBzLnNwczsKKyAgICBjb25zdCBpbnQgbWluX2NiX3dp ZHRoICAgICAgPSBmYy0+cHMucHBzLT5taW5fY2Jfd2lkdGg7CisgICAgY29uc3QgaW50IHgwYiA9 IGF2X21vZF91aW50cDIoeDAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICBjb25zdCBpbnQg eTBiID0gYXZfbW9kX3VpbnRwMih5MCwgc3BzLT5jdGJfbG9nMl9zaXplX3kpOworICAgIGNvbnN0 IGludCB4X2NiID0geDAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgY29uc3QgaW50 IHlfY2IgPSB5MCA+PiBzcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKworICAgIGlmIChsYy0+Y3Ri X2xlZnRfZmxhZyB8fCB4MGIpCisgICAgICAgICpsZWZ0ID0gU0FNUExFX0NUQihsZWZ0X2N0eCwg eF9jYiAtIDEsIHlfY2IpOworICAgIGlmIChsYy0+Y3RiX3VwX2ZsYWcgfHwgeTBiKQorICAgICAg ICAqdG9wID0gU0FNUExFX0NUQih0b3BfY3R4LCB4X2NiLCB5X2NiIC0gMSk7Cit9CisKK3N0YXRp YyBhdl9hbHdheXNfaW5saW5lCit1aW50OF90IGdldF9pbmMoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgdWludDhfdCAqY3R4KQoreworICAgIHVpbnQ4X3QgbGVmdCA9IDAsIHRvcCA9IDA7Cisg ICAgZ2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgbGMtPmN1LT54MCwgbGMtPmN1LT55MCwg Y3R4LCBjdHgpOworICAgIHJldHVybiBsZWZ0ICsgdG9wOworfQorCitpbnQgZmZfdnZjX3Nhb19t ZXJnZV9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRf Q0FCQUMoU0FPX01FUkdFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX3Nhb190eXBlX2lkeF9kZWNv ZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpZiAoIUdFVF9DQUJBQyhTQU9fVFlQRV9J RFgpKQorICAgICAgICByZXR1cm4gU0FPX05PVF9BUFBMSUVEOworCisgICAgaWYgKCF2dmNfZ2V0 X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIHJldHVybiBTQU9fQkFORDsKKyAg ICByZXR1cm4gU0FPX0VER0U7Cit9CisKK2ludCBmZl92dmNfc2FvX2JhbmRfcG9zaXRpb25fZGVj b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgaW50IHZhbHVlID0g dnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgZm9yIChpID0gMDsgaSA8 IDQ7IGkrKykKKyAgICAgICAgdmFsdWUgPSAodmFsdWUgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitpbnQgZmZfdnZjX3Nh b19vZmZzZXRfYWJzX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBpID0g MDsKKyAgICBpbnQgbGVuZ3RoID0gKDEgPDwgKEZGTUlOKGxjLT5mYy0+cHMuc3BzLT5iaXRfZGVw dGgsIDEwKSAtIDUpKSAtIDE7CisKKyAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiB2dmNfZ2V0X2Nh YmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30K KworaW50IGZmX3Z2Y19zYW9fb2Zmc2V0X3NpZ25fZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMp Cit7CisgICAgcmV0dXJuIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKK30KKwor aW50IGZmX3Z2Y19zYW9fZW9fY2xhc3NfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgaW50IHJldCA9IHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSA8PCAxOworICAg IHJldCAgICB8PSB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgcmV0dXJu IHJldDsKK30KKworaW50IGZmX3Z2Y19hbGZfY3RiX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IHJ4LCBjb25zdCBpbnQgcnksIGNvbnN0IGludCBjX2lkeCkKK3sKKyAgICBpbnQg aW5jID0gY19pZHggKiAzOworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7 CisgICAgaWYgKGxjLT5jdGJfbGVmdF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFMRlBhcmFtcyAq bGVmdCA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4IC0gMSwgcnkpOworICAgICAgICBpbmMgKz0gbGVm dC0+Y3RiX2ZsYWdbY19pZHhdOworICAgIH0KKyAgICBpZiAobGMtPmN0Yl91cF9mbGFnKSB7Cisg ICAgICAgIGNvbnN0IEFMRlBhcmFtcyAqYWJvdmUgPSAmQ1RCKGZjLT50YWIuYWxmLCByeCwgcnkg LSAxKTsKKyAgICAgICAgaW5jICs9IGFib3ZlLT5jdGJfZmxhZ1tjX2lkeF07CisgICAgfQorICAg IHJldHVybiBHRVRfQ0FCQUMoQUxGX0NUQl9GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19h bGZfdXNlX2Fwc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9D QUJBQyhBTEZfVVNFX0FQU19GTEFHKTsKK30KKworaW50IGZmX3Z2Y19hbGZfbHVtYV9wcmV2X2Zp bHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdHJ1bmNhdGVkX2Jp bmFyeV9kZWNvZGUobGMsIGxjLT5zYy0+c2guYWxmLm51bV9hcHNfaWRzX2x1bWEgLSAxKTsKK30K KworaW50IGZmX3Z2Y19hbGZfbHVtYV9maXhlZF9maWx0ZXJfaWR4KFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgcmV0dXJuIHRydW5jYXRlZF9iaW5hcnlfZGVjb2RlKGxjLCAxNSk7Cit9CisK K2ludCBmZl92dmNfYWxmX2N0Yl9maWx0ZXJfYWx0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBj b25zdCBpbnQgY19pZHgsIGNvbnN0IGludCBudW1fY2hyb21hX2ZpbHRlcnMpCit7CisgICAgaW50 IGkgPSAwOworICAgIGNvbnN0IGludCBsZW5ndGggPSBudW1fY2hyb21hX2ZpbHRlcnMgLSAxOwor CisgICAgd2hpbGUgKGkgPCBsZW5ndGggJiYgR0VUX0NBQkFDKEFMRl9DVEJfRklMVEVSX0FMVF9J RFggKyBjX2lkeCAtIDEpKQorICAgICAgICBpKys7CisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBm Zl92dmNfYWxmX2N0Yl9jY19pZGMoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHJ4LCBj b25zdCBpbnQgcnksIGNvbnN0IGludCBpZHgsIGNvbnN0IGludCBjY19maWx0ZXJzX3NpZ25hbGxl ZCkKK3sKKyAgICBpbnQgaW5jID0gIWlkeCA/IEFMRl9DVEJfQ0NfQ0JfSURDIDogQUxGX0NUQl9D Q19DUl9JREM7CisgICAgaW50IGkgPSAwOworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMg PSBsYy0+ZmM7CisgICAgaWYgKGxjLT5jdGJfbGVmdF9mbGFnKSB7CisgICAgICAgIGNvbnN0IEFM RlBhcmFtcyAqbGVmdCA9ICZDVEIoZmMtPnRhYi5hbGYsIHJ4IC0gMSwgcnkpOworICAgICAgICBp bmMgKz0gbGVmdC0+Y3RiX2NjX2lkY1tpZHhdICE9IDA7CisgICAgfQorICAgIGlmIChsYy0+Y3Ri X3VwX2ZsYWcpIHsKKyAgICAgICAgY29uc3QgQUxGUGFyYW1zICphYm92ZSA9ICZDVEIoZmMtPnRh Yi5hbGYsIHJ4LCByeSAtIDEpOworICAgICAgICBpbmMgKz0gYWJvdmUtPmN0Yl9jY19pZGNbaWR4 XSAhPSAwOworICAgIH0KKworICAgIGlmICghR0VUX0NBQkFDKGluYykpCisgICAgICAgIHJldHVy biAwOworICAgIGkrKzsKKyAgICB3aGlsZSAoaSA8IGNjX2ZpbHRlcnNfc2lnbmFsbGVkICYmIHZ2 Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgaSsrOworICAgIHJldHVy biBpOworfQorCitpbnQgZmZfdnZjX3NwbGl0X2N1X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAsCisgICAgY29uc3QgaW50IGNiX3dpZHRoLCBjb25z dCBpbnQgY2JfaGVpZ2h0LCBjb25zdCBpbnQgaXNfY2hyb21hLCBjb25zdCBWVkNBbGxvd2VkU3Bs aXQgKmEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAgICBj b25zdCBWVkNQUFMgKnBwcyAgID0gZmMtPnBzLnBwczsKKyAgICBjb25zdCBpbnQgaXNfaW5zaWRl ID0gKHgwICsgY2Jfd2lkdGggPD0gcHBzLT53aWR0aCkgJiYgKHkwICsgY2JfaGVpZ2h0IDw9IHBw cy0+aGVpZ2h0KTsKKworICAgIGlmICgoYS0+YnR2IHx8IGEtPmJ0aCB8fCBhLT50dHYgfHwgYS0+ dHRoIHx8IGEtPnF0KSAmJiBpc19pbnNpZGUpCisgICAgeworICAgICAgICB1aW50OF90IGluYyA9 IDAsIGxlZnRfaGVpZ2h0ID0gY2JfaGVpZ2h0LCB0b3Bfd2lkdGggPSBjYl93aWR0aDsKKworICAg ICAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X2hlaWdodCwgJnRvcF93aWR0aCwgeDAsIHkwLCBm Yy0+dGFiLmNiX2hlaWdodFtpc19jaHJvbWFdLCBmYy0+dGFiLmNiX3dpZHRoW2lzX2Nocm9tYV0p OworICAgICAgICBpbmMgKz0gbGVmdF9oZWlnaHQgPCBjYl9oZWlnaHQ7CisgICAgICAgIGluYyAr PSB0b3Bfd2lkdGggICA8IGNiX3dpZHRoOworICAgICAgICBpbmMgKz0gKGEtPmJ0diArIGEtPmJ0 aCArIGEtPnR0diArIGEtPnR0aCArIDIgKiBhLT5xdCAtIDEpIC8gMiAqIDM7CisKKyAgICAgICAg cmV0dXJuIEdFVF9DQUJBQyhTUExJVF9DVV9GTEFHICsgaW5jKTsKKworICAgIH0KKyAgICByZXR1 cm4gIWlzX2luc2lkZTsKK30KKworc3RhdGljIGludCBzcGxpdF9xdF9mbGFnX2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwgY29uc3QgaW50IGNo X3R5cGUsIGNvbnN0IGludCBjcXRfZGVwdGgpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0 ICpmYyA9IGxjLT5mYzsKKyAgICBpbnQgaW5jID0gMDsKKyAgICB1aW50OF90IGRlcHRoX2xlZnQg PSAwLCBkZXB0aF90b3AgPSAwOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAgJmRlcHRoX2xlZnQs ICZkZXB0aF90b3AsIHgwLCB5MCwgZmMtPnRhYi5jcXRfZGVwdGhbY2hfdHlwZV0sIGZjLT50YWIu Y3F0X2RlcHRoW2NoX3R5cGVdKTsKKyAgICBpbmMgKz0gZGVwdGhfbGVmdCA+IGNxdF9kZXB0aDsK KyAgICBpbmMgKz0gZGVwdGhfdG9wICA+IGNxdF9kZXB0aDsKKyAgICBpbmMgKz0gKGNxdF9kZXB0 aCA+PSAyKSAqIDM7CisKKyAgICByZXR1cm4gR0VUX0NBQkFDKFNQTElUX1FUX0ZMQUcgKyBpbmMp OworfQorCitzdGF0aWMgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnX2RlY29kZShWVkNM b2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgeDAsIGNvbnN0IGludCB5MCwKKyAgICBjb25zdCBp bnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsIGNvbnN0IGludCBjaF90eXBlLCBjb25z dCBWVkNBbGxvd2VkU3BsaXQqIGEpCit7CisgICAgaWYgKChhLT5idGggfHwgYS0+dHRoKSAmJiAo YS0+YnR2IHx8IGEtPnR0dikpIHsKKyAgICAgICAgaW50IGluYzsKKyAgICAgICAgY29uc3QgaW50 IHYgPSBhLT5idHYgKyBhLT50dHY7CisgICAgICAgIGNvbnN0IGludCBoID0gYS0+YnRoICsgYS0+ dHRoOworICAgICAgICBpZiAodiA+IGgpCisgICAgICAgICAgICBpbmMgPSA0OworICAgICAgICBl bHNlIGlmICh2IDwgaCkKKyAgICAgICAgICAgIGluYyA9IDM7CisgICAgICAgIGVsc2UgeworICAg ICAgICAgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyAgID0gbGMtPmZjOworICAgICAgICAg ICAgY29uc3QgVlZDU1BTICpzcHMgICAgICAgICAgID0gZmMtPnBzLnNwczsKKyAgICAgICAgICAg IGNvbnN0IGludCBtaW5fY2Jfd2lkdGggICAgICA9IGZjLT5wcy5wcHMtPm1pbl9jYl93aWR0aDsK KyAgICAgICAgICAgIGNvbnN0IGludCB4MGIgICAgICAgICAgICAgICA9IGF2X21vZF91aW50cDIo eDAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAgICAgICAgICAgIGNvbnN0IGludCB5MGIgICAg ICAgICAgICAgICA9IGF2X21vZF91aW50cDIoeTAsIHNwcy0+Y3RiX2xvZzJfc2l6ZV95KTsKKyAg ICAgICAgICAgIGNvbnN0IGludCB4X2NiICAgICAgICAgICAgICA9IHgwID4+IHNwcy0+bWluX2Ni X2xvZzJfc2l6ZV95OworICAgICAgICAgICAgY29uc3QgaW50IHlfY2IgICAgICAgICAgICAgID0g eTAgPj4gc3BzLT5taW5fY2JfbG9nMl9zaXplX3k7CisgICAgICAgICAgICBjb25zdCBpbnQgYXZh aWxhYmxlX2EgICAgICAgPSBsYy0+Y3RiX3VwX2ZsYWcgfHwgeTBiOworICAgICAgICAgICAgY29u c3QgaW50IGF2YWlsYWJsZV9sICAgICAgID0gbGMtPmN0Yl9sZWZ0X2ZsYWcgfHwgeDBiOworICAg ICAgICAgICAgY29uc3QgaW50IGRhICAgICAgICAgICAgICAgID0gY2Jfd2lkdGggIC8gKGF2YWls YWJsZV9hID8gU0FNUExFX0NUQihmYy0+dGFiLmNiX3dpZHRoW2NoX3R5cGVdLCB4X2NiLCB5X2Ni IC0gMSkgOiAxKTsKKyAgICAgICAgICAgIGNvbnN0IGludCBkbCAgICAgICAgICAgICAgICA9IGNi X2hlaWdodCAvIChhdmFpbGFibGVfbCA/IFNBTVBMRV9DVEIoZmMtPnRhYi5jYl9oZWlnaHRbY2hf dHlwZV0sIHhfY2IgLSAxLCB5X2NiKSA6IDEpOworCisgICAgICAgICAgICBpZiAoZGEgPT0gZGwg fHwgIWF2YWlsYWJsZV9hIHx8ICFhdmFpbGFibGVfbCkKKyAgICAgICAgICAgICAgICBpbmMgPSAw OworICAgICAgICAgICAgZWxzZSBpZiAoZGEgPCBkbCkKKyAgICAgICAgICAgICAgICBpbmMgPSAx OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluYyA9IDI7CisgICAgICAgIH0K KyAgICAgICAgcmV0dXJuIEdFVF9DQUJBQyhNVFRfU1BMSVRfQ1VfVkVSVElDQUxfRkxBRyArIGlu Yyk7CisgICAgfQorICAgIHJldHVybiAhKGEtPmJ0aCB8fCBhLT50dGgpOworfQorCitzdGF0aWMg aW50IG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywg Y29uc3QgaW50IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnLCBjb25zdCBpbnQgbXR0X2RlcHRo KQoreworICAgIGludCBpbmMgPSAoMiAqIG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnKSArICgo bXR0X2RlcHRoIDw9IDEpID8gMSA6IDApOworICAgIHJldHVybiBHRVRfQ0FCQUMoTVRUX1NQTElU X0NVX0JJTkFSWV9GTEFHICsgaW5jKTsKK30KKworVlZDU3BsaXRNb2RlIGZmX3Z2Y19zcGxpdF9t b2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB4MCwgY29uc3QgaW50IHkwLCBjb25z dCBpbnQgY2Jfd2lkdGgsIGNvbnN0IGludCBjYl9oZWlnaHQsCisgICAgY29uc3QgaW50IGNxdF9k ZXB0aCwgY29uc3QgaW50IG10dF9kZXB0aCwgY29uc3QgaW50IGNoX3R5cGUsIGNvbnN0IFZWQ0Fs bG93ZWRTcGxpdCAqYSkKK3sKKyAgICBpbnQgYWxsb3dfbm9fcXQgPSBhLT5idHYgfHwgYS0+YnRo IHx8IGEtPnR0diB8fCBhLT50dGg7CisgICAgaW50IHNwbGl0X3F0X2ZsYWc7CisgICAgaW50IG10 dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOworICAgIGludCBtdHRfc3BsaXRfY3VfYmluYXJ5X2Zs YWc7CisgICAgY29uc3QgVlZDU3BsaXRNb2RlIG10dF9zcGxpdF9tb2Rlc1tdID0geworICAgICAg ICBTUExJVF9UVF9IT1IsIFNQTElUX0JUX0hPUiwgU1BMSVRfVFRfVkVSLCBTUExJVF9CVF9WRVIs CisgICAgfTsKKyAgICBpZiAoYWxsb3dfbm9fcXQgJiYgYS0+cXQpIHsKKyAgICAgICAgc3BsaXRf cXRfZmxhZyA9IHNwbGl0X3F0X2ZsYWdfZGVjb2RlKGxjLCB4MCwgeTAsIGNoX3R5cGUsIGNxdF9k ZXB0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3BsaXRfcXRfZmxhZyA9ICFhbGxvd19ub19x dCB8fCBhLT5xdDsKKyAgICB9CisgICAgaWYgKHNwbGl0X3F0X2ZsYWcpCisgICAgICAgIHJldHVy biBTUExJVF9RVDsKKyAgICBtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZyA9IG10dF9zcGxpdF9j dV92ZXJ0aWNhbF9mbGFnX2RlY29kZShsYywgeDAsIHkwLCBjYl93aWR0aCwgY2JfaGVpZ2h0LCBj aF90eXBlLCBhKTsKKyAgICBpZiAoKGEtPmJ0diAmJiBhLT50dHYgJiYgbXR0X3NwbGl0X2N1X3Zl cnRpY2FsX2ZsYWcpIHx8CisgICAgICAgIChhLT5idGggJiYgYS0+dHRoICYmICFtdHRfc3BsaXRf Y3VfdmVydGljYWxfZmxhZykpIHsKKyAgICAgICAgbXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnID0g bXR0X3NwbGl0X2N1X2JpbmFyeV9mbGFnX2RlY29kZShsYywgbXR0X3NwbGl0X2N1X3ZlcnRpY2Fs X2ZsYWcsIG10dF9kZXB0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFhLT5idHYgJiYg IWEtPmJ0aCkKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5hcnlfZmxhZyA9IDA7CisgICAg ICAgIGVsc2UgaWYgKCFhLT50dHYgJiYgIWEtPnR0aCkKKyAgICAgICAgICAgIG10dF9zcGxpdF9j dV9iaW5hcnlfZmxhZyA9IDE7CisgICAgICAgIGVsc2UgaWYgKGEtPmJ0aCAmJiBhLT50dHYpCisg ICAgICAgICAgICBtdHRfc3BsaXRfY3VfYmluYXJ5X2ZsYWcgPSAxIC0gbXR0X3NwbGl0X2N1X3Zl cnRpY2FsX2ZsYWc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG10dF9zcGxpdF9jdV9iaW5h cnlfZmxhZyA9IG10dF9zcGxpdF9jdV92ZXJ0aWNhbF9mbGFnOworICAgIH0KKyAgICByZXR1cm4g bXR0X3NwbGl0X21vZGVzWyhtdHRfc3BsaXRfY3VfdmVydGljYWxfZmxhZyA8PCAxKSArIG10dF9z cGxpdF9jdV9iaW5hcnlfZmxhZ107Cit9CisKK2ludCBmZl92dmNfbm9uX2ludGVyX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAsIGNvbnN0IGludCBj aF90eXBlKQoreworICAgIGNvbnN0IFZWQ0ZyYW1lQ29udGV4dCAqZmMgPSBsYy0+ZmM7CisgICAg dWludDhfdCBpbmMsIGxlZnQgPSAwLCB0b3AgPSAwOworCisgICAgZ2V0X2xlZnRfdG9wKGxjLCAm bGVmdCwgJnRvcCwgeDAsIHkwLCBmYy0+dGFiLmNwbVtjaF90eXBlXSwgZmMtPnRhYi5jcG1bY2hf dHlwZV0pOworICAgIGluYyA9IGxlZnQgfHwgdG9wOworICAgIHJldHVybiBHRVRfQ0FCQUMoTk9O X0lOVEVSX0ZMQUcgKyBpbmMpOworfQorCitpbnQgZmZfdnZjX3ByZWRfbW9kZV9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpc19jaHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJh bWVDb250ZXh0ICpmYyAgICA9IGxjLT5mYzsKKyAgICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAg ICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBpbmMsIGxlZnQgPSAwLCB0b3AgPSAwOworCisgICAg Z2V0X2xlZnRfdG9wKGxjLCAmbGVmdCwgJnRvcCwgY3UtPngwLCBjdS0+eTAsIGZjLT50YWIuY3Bt W2lzX2Nocm9tYV0sIGZjLT50YWIuY3BtW2lzX2Nocm9tYV0pOworICAgIGluYyA9IGxlZnQgfHwg dG9wOworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX0ZMQUcgKyBpbmMpOworfQorCitp bnQgZmZfdnZjX3ByZWRfbW9kZV9wbHRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX1BMVF9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19p bnRyYV9iZHBjbV9sdW1hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKElOVFJBX0JEUENNX0xVTUFfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFf YmRwY21fbHVtYV9kaXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBH RVRfQ0FCQUMoSU5UUkFfQkRQQ01fTFVNQV9ESVJfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50 cmFfYmRwY21fY2hyb21hX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9GTEFHKTsKK30KKworaW50IGZmX3Z2Y19pbnRy YV9iZHBjbV9jaHJvbWFfZGlyX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKElOVFJBX0JEUENNX0NIUk9NQV9ESVJfRkxBRyk7Cit9CisKK2ludCBmZl92 dmNfY3Vfc2tpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1X3Nr aXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgaW5jID0gZ2V0X2luYyhsYywgY3Vfc2tpcF9mbGFn KTsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NLSVBfRkxBRyArIGluYyk7Cit9CisKK2ludCBm Zl92dmNfcHJlZF9tb2RlX2liY19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBp c19jaHJvbWEpCit7CisgICAgY29uc3QgVlZDRnJhbWVDb250ZXh0ICpmYyA9IGxjLT5mYzsKKyAg ICBjb25zdCBDb2RpbmdVbml0ICpjdSAgICAgICAgPSBsYy0+Y3U7CisgICAgdWludDhfdCBsZWZ0 X21vZGUgPSBNT0RFX0lOVEVSLCB0b3BfbW9kZSA9IE1PREVfSU5URVI7CisgICAgaW50IGluYzsK KworICAgIGdldF9sZWZ0X3RvcChsYywgJmxlZnRfbW9kZSwgJnRvcF9tb2RlLCBjdS0+eDAsIGN1 LT55MCwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSwgZmMtPnRhYi5jcG1baXNfY2hyb21hXSk7Cisg ICAgaW5jID0gKGxlZnRfbW9kZSA9PSBNT0RFX0lCQykgKyAodG9wX21vZGUgPT0gTU9ERV9JQkMp OworICAgIHJldHVybiBHRVRfQ0FCQUMoUFJFRF9NT0RFX0lCQ19GTEFHICsgaW5jKTsKK30KKwor aW50IGZmX3Z2Y19pbnRyYV9taXBfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCB1aW50 OF90ICppbnRyYV9taXBfZmxhZykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNi X3dpZHRoOworICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNv bnN0IGludCBpbmMgICA9ICAodyA+IGggKiAyIHx8IGggPiB3ICogMikgPyAzIDogZ2V0X2luYyhs YywgaW50cmFfbWlwX2ZsYWcpOworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfTUlQX0ZMQUcg KyBpbmMpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF90cmFuc3Bvc2VkX2ZsYWcoVlZDTG9j YWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2ludHJhX21pcF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgY29uc3QgaW50IHcgICAgID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25z dCBpbnQgaCAgICAgPSBsYy0+Y3UtPmNiX2hlaWdodDsKKyAgICBjb25zdCBpbnQgY19tYXggPSAo dyA9PSA0ICYmIGggPT0gNCkgPyAxNSA6CisgICAgICAgICgodyA9PSA0IHx8IGggPT0gNCkgfHwg KHcgPT0gOCAmJiBoID09IDgpKSA/IDc6IDU7CisgICAgcmV0dXJuIHRydW5jYXRlZF9iaW5hcnlf ZGVjb2RlKGxjLCBjX21heCk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9yZWZfaWR4KFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDI7 IGkrKykgeworICAgICAgICBpZiAoIUdFVF9DQUJBQyhJTlRSQV9MVU1BX1JFRl9JRFggKyBpKSkK KyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KKworaW50IGZm X3Z2Y19pbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfU1VCUEFSVElUSU9OU19NT0RFX0ZMQUcpOwor fQorCitlbnVtIElzcFR5cGUgZmZfdnZjX2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGNvbnN0IGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZykKK3sKKyAgICBpZiAo IWludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKQorICAgICAgICByZXR1cm4gSVNQX05PX1NQ TElUOworICAgIHJldHVybiAxICsgR0VUX0NBQkFDKElOVFJBX1NVQlBBUlRJVElPTlNfU1BMSVRf RkxBRyk7Cit9CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9tcG1fZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoSU5UUkFfTFVNQV9NUE1fRkxBRyk7Cit9 CisKK2ludCBmZl92dmNfaW50cmFfbHVtYV9ub3RfcGxhbmFyX2ZsYWcoVlZDTG9jYWxDb250ZXh0 ICpsYywgY29uc3QgaW50IGludHJhX3N1YnBhcnRpdGlvbnNfbW9kZV9mbGFnKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoSU5UUkFfTFVNQV9OT1RfUExBTkFSX0ZMQUcgKyAhaW50cmFfc3VicGFy dGl0aW9uc19tb2RlX2ZsYWcpOworfQorCitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCA0 ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBu b3RoaW5nICovOworICAgIHJldHVybiBpOworfQorCitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBt X3JlbWFpbmRlcihWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB0cnVuY2F0ZWRf YmluYXJ5X2RlY29kZShsYywgNjApOworfQorCitpbnQgZmZfdnZjX2NjbG1fbW9kZV9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDQ0xNX01PREVfRkxB Ryk7Cit9CisKK2ludCBmZl92dmNfY2NsbV9tb2RlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKQor eworICAgIGlmICghR0VUX0NBQkFDKENDTE1fTU9ERV9JRFgpKQorICAgICAgICByZXR1cm4gMDsK KyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpICsgMTsKK30KKwor aW50IGZmX3Z2Y19pbnRyYV9jaHJvbWFfcHJlZF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgaWYgKCFHRVRfQ0FCQUMoSU5UUkFfQ0hST01BX1BSRURfTU9ERSkpCisgICAgICAgIHJl dHVybiA0OworICAgIHJldHVybiAodnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpIDw8 IDEpIHwgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCitpbnQgZmZfdnZj X2dlbmVyYWxfbWVyZ2VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBH RVRfQ0FCQUMoR0VORVJBTF9NRVJHRV9GTEFHKTsKK30KKworc3RhdGljIGludCBnZXRfaW50ZXJf ZmxhZ19pbmMoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IHgwLCBjb25zdCBpbnQgeTAp Cit7CisgICAgdWludDhfdCBsZWZ0X21lcmdlID0gMCwgIHRvcF9tZXJnZSA9IDA7CisgICAgdWlu dDhfdCBsZWZ0X2FmZmluZSA9IDAsIHRvcF9hZmZpbmUgPSAwOworICAgIGNvbnN0IFZWQ0ZyYW1l Q29udGV4dCAqZmMgPSBsYy0+ZmM7CisKKyAgICBnZXRfbGVmdF90b3AobGMsICZsZWZ0X21lcmdl LCAmdG9wX21lcmdlLCB4MCwgeTAsIGZjLT50YWIubXNmLCBmYy0+dGFiLm1zZik7CisgICAgZ2V0 X2xlZnRfdG9wKGxjLCAmbGVmdF9hZmZpbmUsICZ0b3BfYWZmaW5lLCB4MCwgeTAsIGZjLT50YWIu aWFmLCBmYy0+dGFiLmlhZik7CisgICAgcmV0dXJuIChsZWZ0X21lcmdlIHx8IGxlZnRfYWZmaW5l KSArICh0b3BfbWVyZ2UgKyB0b3BfYWZmaW5lKTsKK30KKworaW50IGZmX3Z2Y19tZXJnZV9zdWJi bG9ja19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGluYyA9IGdl dF9pbnRlcl9mbGFnX2luYyhsYywgbGMtPmN1LT54MCwgbGMtPmN1LT55MCk7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhNRVJHRV9TVUJCTE9DS19GTEFHICsgaW5jKTsKK30KKworaW50IGZmX3Z2Y19t ZXJnZV9zdWJibG9ja19pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IG1heF9udW1f c3ViYmxvY2tfbWVyZ2VfY2FuZCkKK3sKKyAgICBpbnQgaTsKKyAgICBpZiAoIUdFVF9DQUJBQyhN RVJHRV9TVUJCTE9DS19JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAxOyBp IDwgbWF4X251bV9zdWJibG9ja19tZXJnZV9jYW5kIC0gMSAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFz cygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAgLyogbm90aGluZyAqLzsKKyAgICByZXR1cm4g aTsKK30KKworaW50IGZmX3Z2Y19yZWd1bGFyX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICps YywgY29uc3QgaW50IGN1X3NraXBfZmxhZykKK3sKKyAgICBpbnQgaW5jID0gIWN1X3NraXBfZmxh ZzsKKyAgICByZXR1cm4gR0VUX0NBQkFDKFJFR1VMQVJfTUVSR0VfRkxBRyArIGluYyk7Cit9CisK K2ludCBmZl92dmNfbW12ZF9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAg cmV0dXJuIEdFVF9DQUJBQyhNTVZEX01FUkdFX0ZMQUcpOworfQorCitpbnQgZmZfdnZjX21tdmRf Y2FuZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhN TVZEX0NBTkRfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgbW12ZF9kaXN0YW5jZV9pZHhfZGVjb2Rl KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgaW50IGk7CisgICAgaWYgKCFHRVRfQ0FCQUMo TU1WRF9ESVNUQU5DRV9JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKGkgPSAxOyBp IDwgNyAmJiB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7IGkrKykKKyAgICAgICAg Lyogbm90aGluZyAqLzsKKyAgICByZXR1cm4gaTsKK30KKworc3RhdGljIGludCBtbXZkX2RpcmVj dGlvbl9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuICh2dmNf Z2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykgPDwgMSkgfCB2dmNfZ2V0X2NhYmFjX2J5cGFz cygmbGMtPmVwLT5jYyk7Cit9CisKK3ZvaWQgZmZfdnZjX21tdmRfb2Zmc2V0X2NvZGluZyhWVkNM b2NhbENvbnRleHQgKmxjLCBNdiAqbW12ZF9vZmZzZXQsIGNvbnN0IGludCBwaF9tbXZkX2Z1bGxw ZWxfb25seV9mbGFnKQoreworICAgIGNvbnN0IGludCBzaGlmdCA9IHBoX21tdmRfZnVsbHBlbF9v bmx5X2ZsYWcgPyA0IDogMjsKKyAgICBjb25zdCBpbnQgbW12ZF9kaXN0YW5jZSA9IDEgPDwgKG1t dmRfZGlzdGFuY2VfaWR4X2RlY29kZShsYykgKyBzaGlmdCk7CisgICAgY29uc3QgaW50IG1tdmRf ZGlyZWN0aW9uX2lkeCA9IG1tdmRfZGlyZWN0aW9uX2lkeF9kZWNvZGUobGMpOworICAgIGNvbnN0 IGludCBtbXZkX3NpZ25zW11bMl0gPSB7IHsxLCAwfSwgey0xLCAwfSwgezAsIDF9LCB7MCwgLTF9 IH07CisgICAgbW12ZF9vZmZzZXQtPnggPSBtbXZkX2Rpc3RhbmNlICogbW12ZF9zaWduc1ttbXZk X2RpcmVjdGlvbl9pZHhdWzBdOworICAgIG1tdmRfb2Zmc2V0LT55ID0gbW12ZF9kaXN0YW5jZSAq IG1tdmRfc2lnbnNbbW12ZF9kaXJlY3Rpb25faWR4XVsxXTsKK30KKworc3RhdGljIFByZWRNb2Rl IGdldF9sdW1hX3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IFZW Q0ZyYW1lQ29udGV4dCAqZmMgID0gbGMtPmZjOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ID0g bGMtPmN1OworICAgIFByZWRNb2RlIHByZWRfbW9kZTsKKyAgICBpZiAoY3UtPnRyZWVfdHlwZSAh PSBEVUFMX1RSRUVfQ0hST01BKSB7CisgICAgICAgIHByZWRfbW9kZSA9IGN1LT5wcmVkX21vZGU7 CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgaW50IHhfY2IgICAgICAgICAgID0gY3UtPngw ID4+IGZjLT5wcy5zcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsKKyAgICAgICAgY29uc3QgaW50IHlf Y2IgICAgICAgICAgID0gY3UtPnkwID4+IGZjLT5wcy5zcHMtPm1pbl9jYl9sb2cyX3NpemVfeTsK KyAgICAgICAgY29uc3QgaW50IG1pbl9jYl93aWR0aCAgID0gZmMtPnBzLnBwcy0+bWluX2NiX3dp ZHRoOworICAgICAgICBwcmVkX21vZGUgPSBTQU1QTEVfQ1RCKGZjLT50YWIuY3BtWzBdLCB4X2Ni LCB5X2NiKTsKKyAgICB9CisgICAgcmV0dXJuIHByZWRfbW9kZTsKK30KKworaW50IGZmX3Z2Y19t ZXJnZV9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBWVkNTUFMgKnNwcyA9 IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IGludCBpc19pYmMgPSBnZXRfbHVtYV9wcmVkX21v ZGUobGMpID09IE1PREVfSUJDOworICAgIGNvbnN0IGludCBjX21heCA9IChpc19pYmMgPyBzcHMt Pm1heF9udW1faWJjX21lcmdlX2NhbmQgOiBzcHMtPm1heF9udW1fbWVyZ2VfY2FuZCkgLSAxOwor ICAgIGludCBpOworCisgICAgaWYgKCFHRVRfQ0FCQUMoTUVSR0VfSURYKSkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICBmb3IgKGkgPSAxOyBpIDwgY19tYXggJiYgdnZjX2dldF9jYWJhY19ieXBh c3MoJmxjLT5lcC0+Y2MpOyBpKyspCisgICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgcmV0dXJu IGk7Cit9CisKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX3BhcnRpdGlvbl9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICBpbnQgaSA9IDA7CisKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IDY7 IGorKykKKyAgICAgICAgaSA9IChpIDw8IDEpIHwgdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5l cC0+Y2MpOworCisgICAgcmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX2lkeChW VkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaWR4KQoreworICAgIGNvbnN0IGludCBjX21h eCA9IGxjLT5mYy0+cHMuc3BzLT5tYXhfbnVtX2dwbV9tZXJnZV9jYW5kIC0gaWR4IC0gMTsKKyAg ICBpbnQgaTsKKworICAgIGlmICghR0VUX0NBQkFDKE1FUkdFX0lEWCkpCisgICAgICAgIHJldHVy biAwOworCisgICAgZm9yIChpID0gMTsgaSA8IGNfbWF4ICYmIHZ2Y19nZXRfY2FiYWNfYnlwYXNz KCZsYy0+ZXAtPmNjKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOworCisgICAgcmV0dXJu IGk7Cit9CisKK2ludCBmZl92dmNfY2lpcF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgcmV0dXJuIEdFVF9DQUJBQyhDSUlQX0ZMQUcpOworfQorCitQcmVkRmxhZyBmZl92dmNfcHJl ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpc19iKQoreworICAgIGNvbnN0 IGludCB3ID0gbGMtPmN1LT5jYl93aWR0aDsKKyAgICBjb25zdCBpbnQgaCA9IGxjLT5jdS0+Y2Jf aGVpZ2h0OworICAgIGlmICghaXNfYikKKyAgICAgICAgcmV0dXJuICBQRl9MMDsKKyAgICBpZiAo dyArIGggPiAxMikgeworICAgICAgICBjb25zdCBpbnQgbG9nMiA9IGF2X2xvZzIodykgKyBhdl9s b2cyKGgpOworICAgICAgICBjb25zdCBpbnQgaW5jID0gNyAtICgoMSArIGxvZzIpPj4xKTsKKyAg ICAgICAgaWYgKEdFVF9DQUJBQyhJTlRFUl9QUkVEX0lEQyArIGluYykpCisgICAgICAgICAgICBy ZXR1cm4gUEZfQkk7CisgICAgfQorICAgIHJldHVybiBQRl9MMCArIEdFVF9DQUJBQyhJTlRFUl9Q UkVEX0lEQyArIDUpOworfQorCitpbnQgZmZfdnZjX2ludGVyX2FmZmluZV9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpCit7CisgICAgY29uc3QgaW50IGluYyA9IGdldF9pbnRlcl9mbGFnX2luYyhs YywgbGMtPmN1LT54MCwgbGMtPmN1LT55MCk7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhJTlRFUl9B RkZJTkVfRkxBRyArIGluYyk7Cit9CisKK2ludCBmZl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfQUZGSU5FX1RZ UEVfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc3ltX212ZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhTWU1fTVZEX0ZMQUcpOworfQorCitpbnQgZmZf dnZjX3JlZl9pZHhfbHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgdWludDhfdCBuYl9yZWZz KQoreworICAgIGNvbnN0IGludCBjX21heCA9IG5iX3JlZnMgLSAxOworICAgIGNvbnN0IGludCBt YXhfY3R4ID0gRkZNSU4oY19tYXgsIDIpOworICAgIGludCBpID0gMDsKKworICAgIHdoaWxlIChp IDwgbWF4X2N0eCAmJiBHRVRfQ0FCQUMoUkVGX0lEWF9MWCArIGkpKQorICAgICAgICBpKys7Cisg ICAgaWYgKGkgPT0gMikgeworICAgICAgICB3aGlsZSAoaSA8IGNfbWF4ICYmIHZ2Y19nZXRfY2Fi YWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICB9CisgICAgcmV0 dXJuIGk7Cit9CisKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMF9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhBQlNfTVZEX0dSRUFURVIwX0ZMQUcp OworfQorCitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjFfZmxhZyhWVkNMb2NhbENvbnRleHQg KmxjKQoreworICAgIHJldHVybiBHRVRfQ0FCQUMoQUJTX01WRF9HUkVBVEVSMV9GTEFHKTsKK30K KworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAg IHJldHVybiBsaW1pdGVkX2t0aF9vcmRlcl9lZ2tfZGVjb2RlKCZsYy0+ZXAtPmNjLCAxLCAxNSwg MTcpOworfQorCitpbnQgZmZfdnZjX212ZF9zaWduX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gdnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCitp bnQgZmZfdnZjX212cF9seF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJu IEdFVF9DQUJBQyhNVlBfTFhfRkxBRyk7Cit9CisKK3N0YXRpYyBpbnQgYW12cl9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbnRlcl9hZmZpbmVfZmxhZykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKEFNVlJfRkxBRyArIGludGVyX2FmZmluZV9mbGFnKTsKK30KKworc3RhdGlj IGludCBhbXZyX3ByZWNpc2lvbl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlu YywgY29uc3QgaW50IGNfbWF4KQoreworICAgIGludCBpID0gMDsKKyAgICBpZiAoIUdFVF9DQUJB QyhBTVZSX1BSRUNJU0lPTl9JRFggKyBpbmMpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpKys7 CisgICAgaWYgKGkgPCBjX21heCAmJiBHRVRfQ0FCQUMoQU1WUl9QUkVDSVNJT05fSURYICsgMSkp CisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30KKworaW50IGZmX3Z2Y19hbXZyX3NoaWZ0 KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBpbnRlcl9hZmZpbmVfZmxhZywKKyAgICBj b25zdCBQcmVkTW9kZSBwcmVkX21vZGUsIGNvbnN0IGludCBoYXNfYW12cl9mbGFnKQoreworICAg IGludCBhbXZyX3NoaWZ0ID0gMjsKKyAgICBpZiAoaGFzX2FtdnJfZmxhZykgeworICAgICAgICBp ZiAoYW12cl9mbGFnKGxjLCBpbnRlcl9hZmZpbmVfZmxhZykpIHsKKyAgICAgICAgICAgIGludCBp ZHg7CisgICAgICAgICAgICBpZiAoaW50ZXJfYWZmaW5lX2ZsYWcpIHsKKyAgICAgICAgICAgICAg ICBpZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgobGMsIDIsIDEpOworICAgICAgICAgICAgICAgIGFt dnJfc2hpZnQgPSBpZHggKiA0OworICAgICAgICAgICAgfSBlbHNlIGlmIChwcmVkX21vZGUgPT0g TU9ERV9JQkMpIHsKKyAgICAgICAgICAgICAgICBpZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgobGMs IDEsIDEpOworICAgICAgICAgICAgICAgIGFtdnJfc2hpZnQgPSA0ICsgaWR4ICogMjsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGludCBzaGlmdHNb XSA9IHszLCA0LCA2fTsKKyAgICAgICAgICAgICAgICBpZHggPSBhbXZyX3ByZWNpc2lvbl9pZHgo bGMsIDAsIDIpOworICAgICAgICAgICAgICAgIGFtdnJfc2hpZnQgPSBzaGlmdHNbaWR4XTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYW12cl9zaGlmdDsKK30K KworaW50IGZmX3Z2Y19iY3dfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCBub19i YWNrd2FyZF9wcmVkX2ZsYWcpCit7CisgICAgY29uc3QgaW50IGNfbWF4ID0gbm9fYmFja3dhcmRf cHJlZF9mbGFnID8gNCA6IDI7CisgICAgaW50IGkgPSAxOworICAgIGlmICghR0VUX0NBQkFDKEJD V19JRFgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB3aGlsZSAoaSA8IGNfbWF4ICYmIHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKSkKKyAgICAgICAgaSsrOworICAgIHJldHVybiBp OworfQorCitpbnQgZmZfdnZjX3R1X2NiX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFRVX0NCX0NPREVEX0ZMQUcgKyBsYy0+Y3UtPmJkcGNt X2ZsYWdbMV0pOworfQorCitpbnQgZmZfdnZjX3R1X2NyX2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250 ZXh0ICpsYywgaW50IHR1X2NiX2NvZGVkX2ZsYWcpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhU VV9DUl9DT0RFRF9GTEFHICsgKGxjLT5jdS0+YmRwY21fZmxhZ1sxXSA/IDIgOiB0dV9jYl9jb2Rl ZF9mbGFnKSk7Cit9CisKK2ludCBmZl92dmNfdHVfeV9jb2RlZF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMpCit7CisgICAgY29uc3QgQ29kaW5nVW5pdCAqY3UgPSBsYy0+Y3U7CisgICAgaW50IGlu YzsKKyAgICBpZiAoY3UtPmJkcGNtX2ZsYWdbMF0pCisgICAgICAgIGluYyA9IDE7CisgICAgZWxz ZSBpZiAoY3UtPmlzcF9zcGxpdF90eXBlID09IElTUF9OT19TUExJVCkKKyAgICAgICAgaW5jID0g MDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IDIgKyBsYy0+cGFyc2UucHJldl90dV9jYmZfeTsK KyAgICBsYy0+cGFyc2UucHJldl90dV9jYmZfeSA9IEdFVF9DQUJBQyhUVV9ZX0NPREVEX0ZMQUcg KyBpbmMpOworICAgIHJldHVybiBsYy0+cGFyc2UucHJldl90dV9jYmZfeTsKK30KKworaW50IGZm X3Z2Y19jdV9xcF9kZWx0YV9hYnMoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICBpbnQgdiwg aSwgazsKKyAgICBpZiAoIUdFVF9DQUJBQyhDVV9RUF9ERUxUQV9BQlMpKQorICAgICAgICByZXR1 cm4gMDsKKworICAgIC8vIHByZWZpeFZhbAorICAgIGZvciAodiA9IDE7IHYgPCA1ICYmIEdFVF9D QUJBQyhDVV9RUF9ERUxUQV9BQlMgKyAxKTsgdisrKQorICAgICAgICAvKiBub3RoaW5nICovOwor ICAgIGlmICh2IDwgNSkKKyAgICAgICAgcmV0dXJuIHY7CisKKyAgICAvLyA5LjMuMy41IGstdGgg b3JkZXIgRXhwLUdvbG9tYiBiaW5hcml6YXRpb24gcHJvY2VzcworICAgIC8vIHN1ZmZpeFZhbAor CisgICAgLy8gQ3VRcERlbHRhVmFsIHNoYWxsIGluIHRoZSByYW5nZSBvZiDiiJIoIDMyICsgUXBC ZE9mZnNldCAvIDIgKSB0byArKCAzMSArIFFwQmRPZmZzZXQgLyAyICkKKyAgICAvLyBzbyBrID0g NiBzaG91bGQgZW5vdWdoCisgICAgZm9yIChrID0gMDsgayA8IDYgJiYgdnZjX2dldF9jYWJhY19i eXBhc3MoJmxjLT5lcC0+Y2MpOyBrKyspCisgICAgICAgIC8qIG5vdGhpbmcgKi87CisgICAgaSA9 ICgxIDw8IGspIC0gMTsKKyAgICB2ID0gMDsKKyAgICB3aGlsZSAoay0tKQorICAgICAgICB2ID0g KHYgPDwgMSkgKyB2dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYyk7CisgICAgdiArPSBp OworCisgICAgcmV0dXJuIHYgKyA1OworfQorCitpbnQgZmZfdnZjX2N1X3FwX2RlbHRhX3NpZ25f ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiB2dmNfZ2V0X2NhYmFjX2J5 cGFzcygmbGMtPmVwLT5jYyk7Cit9CisKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9DSFJP TUFfUVBfT0ZGU0VUX0ZMQUcpOworfQoraW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0X2lk eChWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIGNvbnN0IGludCBjX21heCA9IGxjLT5mYy0+ cHMucHBzLT5jaHJvbWFfcXBfb2Zmc2V0X2xpc3RfbGVuX21pbnVzMTsKKyAgICBpbnQgaTsKKyAg ICBmb3IgKGkgPSAwOyBpIDwgY19tYXggJiYgR0VUX0NBQkFDKENVX0NIUk9NQV9RUF9PRkZTRVRf SURYKTsgaSsrKQorICAgICAgICAvKiBub3RoaW5nICovOworICAgIHJldHVybiBpOworfQorCitz dGF0aWMgYXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl94eV9wcmVm aXgoVlZDTG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9nMl90Yl9zaXplLCBjb25z dCBpbnQgbG9nMl96b190Yl9zaXplLCBjb25zdCBpbnQgY19pZHgsIGNvbnN0IGludCBjdHgpCit7 CisgICAgaW50IGkgPSAwOworICAgIGludCBtYXggPSAobG9nMl96b190Yl9zaXplIDw8IDEpIC0g MTsKKyAgICBpbnQgY3R4X29mZnNldCwgY3R4X3NoaWZ0OworICAgIGlmICghbG9nMl90Yl9zaXpl KQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWNfaWR4KSB7CisgICAgICAgIGNvbnN0IGlu dCBvZmZzZXRfeVtdID0gezAsIDAsIDMsIDYsIDEwLCAxNX07CisgICAgICAgIGN0eF9vZmZzZXQg PSBvZmZzZXRfeVtsb2cyX3RiX3NpemUgLSAxXTsKKyAgICAgICAgY3R4X3NoaWZ0ICA9IChsb2cy X3RiX3NpemUgKyAxKSA+PiAyOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IGludCBzaGlm dHNbXSA9IHswLCAwLCAwLCAxLCAyLCAyLCAyfTsKKyAgICAgICAgY3R4X29mZnNldCA9IDIwOwor ICAgICAgICBjdHhfc2hpZnQgID0gc2hpZnRzW2xvZzJfdGJfc2l6ZV07CisgICAgfQorICAgIHdo aWxlIChpIDwgbWF4ICYmIEdFVF9DQUJBQyhjdHggKyAoaSA+PiBjdHhfc2hpZnQpICsgY3R4X29m ZnNldCkpCisgICAgICAgIGkrKzsKKyAgICByZXR1cm4gaTsKK30KKworc3RhdGljIGF2X2Fsd2F5 c19pbmxpbmUgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeF9wcmVmaXhfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJfdGJfd2lkdGgsIGNvbnN0IGludCBs b2cyX3pvX3RiX3dpZHRoLCBjb25zdCBpbnQgY19pZHgpCit7CisgICAgcmV0dXJuIGxhc3Rfc2ln bmlmaWNhbnRfY29lZmZfeHlfcHJlZml4KGxjLCBsb2cyX3RiX3dpZHRoLCBsb2cyX3pvX3RiX3dp ZHRoLCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWF9QUkVGSVgpOworfQorCitzdGF0aWMgYXZfYWx3 YXlzX2lubGluZSBpbnQgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95X3ByZWZpeF9kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywKKyAgICBjb25zdCBpbnQgbG9nMl90Yl9oZWlnaHQsIGNvbnN0IGlu dCBsb2cyX3pvX3RiX2hlaWdodCwgY29uc3QgaW50IGNfaWR4KQoreworICAgIHJldHVybiBsYXN0 X3NpZ25pZmljYW50X2NvZWZmX3h5X3ByZWZpeChsYywgbG9nMl90Yl9oZWlnaHQsIGxvZzJfem9f dGJfaGVpZ2h0LCBjX2lkeCwgTEFTVF9TSUdfQ09FRkZfWV9QUkVGSVgpOworfQorCitzdGF0aWMg YXZfYWx3YXlzX2lubGluZSBpbnQgbGFzdF9zaWdfY29lZmZfc3VmZml4X2RlY29kZShWVkNMb2Nh bENvbnRleHQgKmxjLAorICAgIGNvbnN0IGludCBsYXN0X3NpZ25pZmljYW50X2NvZWZmX3lfcHJl Zml4KQoreworICAgIGludCBpOworICAgIGNvbnN0IGludCBsZW5ndGggPSAobGFzdF9zaWduaWZp Y2FudF9jb2VmZl95X3ByZWZpeCA+PiAxKSAtIDE7CisgICAgaW50IHZhbHVlID0gdnZjX2dldF9j YWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworCisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsg aSsrKQorICAgICAgICB2YWx1ZSA9ICh2YWx1ZSA8PCAxKSB8IHZ2Y19nZXRfY2FiYWNfYnlwYXNz KCZsYy0+ZXAtPmNjKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2ludCBmZl92dmNfdHVfam9p bnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IGludCB0dV9j Yl9jb2RlZF9mbGFnLCBjb25zdCBpbnQgdHVfY3JfY29kZWRfZmxhZykKK3sKKyAgICByZXR1cm4g R0VUX0NBQkFDKFRVX0pPSU5UX0NCQ1JfUkVTSURVQUxfRkxBRyArIDIgKiB0dV9jYl9jb2RlZF9m bGFnICsgdHVfY3JfY29kZWRfZmxhZyAtIDEpOworfQorCitpbnQgZmZfdnZjX3RyYW5zZm9ybV9z a2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGluYykKK3sKKyAgICByZXR1 cm4gR0VUX0NBQkFDKFRSQU5TRk9STV9TS0lQX0ZMQUcgKyBpbmMpOworfQorCisvLzkuMy40LjIu NyBEZXJpdmF0aW9uIHByb2Nlc3MgZm9yIHRoZSB2YXJpYWJsZXMgbG9jTnVtU2lnLCBsb2NTdW1B YnNQYXNzMQorc3RhdGljIGludCBnZXRfbG9jYWxfc3VtKGNvbnN0IGludCAqbGV2ZWwsIGNvbnN0 IGludCB3LCBjb25zdCBpbnQgaCwKKyAgICBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sK KyAgICBpbnQgbG9jX3N1bSA9IDA7CisgICAgbGV2ZWwgKz0gdyAqIHljICsgeGM7CisgICAgaWYg KHhjIDwgdyAtIDEpIHsKKyAgICAgICAgbG9jX3N1bSArPSBsZXZlbFsxXTsKKyAgICAgICAgaWYg KHhjIDwgdyAtIDIpCisgICAgICAgICAgICBsb2Nfc3VtICs9IGxldmVsWzJdOworICAgICAgICBp ZiAoeWMgPCBoIC0gMSkKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbdyArIDFdOworICAg IH0KKyAgICBpZiAoeWMgPCBoIC0gMSkgeworICAgICAgICBsb2Nfc3VtICs9IGxldmVsW3ddOwor ICAgICAgICBpZiAoeWMgPCBoIC0gMikKKyAgICAgICAgICAgIGxvY19zdW0gKz0gbGV2ZWxbdyA8 PCAxXTsKKyAgICB9CisgICAgcmV0dXJuIGxvY19zdW07Cit9CisKKy8vOS4zLjQuMi43IERlcml2 YXRpb24gcHJvY2VzcyBmb3IgdGhlIHZhcmlhYmxlcyBsb2NOdW1TaWcsIGxvY1N1bUFic1Bhc3Mx CitzdGF0aWMgaW50IGdldF9sb2NhbF9zdW1fdHMoY29uc3QgaW50ICpsZXZlbCwgY29uc3QgaW50 IHcsIGNvbnN0IGludCBoLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBpbnQg bG9jX3N1bSA9IDA7CisgICAgbGV2ZWwgKz0gdyAqIHljICsgeGM7CisgICAgaWYgKHhjID4gMCkK KyAgICAgICAgbG9jX3N1bSArPSBsZXZlbFstMV07CisgICAgaWYgKHljID4gMCkKKyAgICAgICAg bG9jX3N1bSArPSBsZXZlbFstd107CisgICAgcmV0dXJuIGxvY19zdW07Cit9CisKK3N0YXRpYyBp bnQgZ2V0X2d0eF9mbGFnX2luYyhjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCB4 YywgY29uc3QgaW50IHljLCBjb25zdCBpbnQgbGFzdCkKK3sKKyAgICBjb25zdCBUcmFuc2Zvcm1C bG9jayAqdGIgPSByYy0+dGI7CisgICAgaW50IGluYzsKKyAgICBpZiAobGFzdCkgeworICAgICAg ICBjb25zdCBpbnQgaW5jc1tdID0gezAsIDIxLCAyMX07CisgICAgICAgIGluYyA9ICBpbmNzW3Ri LT5jX2lkeF07CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgaW50IGQgPSB4YyArIHljOwor ICAgICAgICBjb25zdCBpbnQgbG9jYWxfc3VtX3NpZyA9IGdldF9sb2NhbF9zdW0ocmMtPnNpZ19j b2VmZl9mbGFnLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7CisgICAgICAg IGNvbnN0IGludCBsb2Nfc3VtX2Fic19wYXNzMSA9IGdldF9sb2NhbF9zdW0ocmMtPmFic19sZXZl bF9wYXNzMSwgdGItPnRiX3dpZHRoLCB0Yi0+dGJfaGVpZ2h0LCB4YywgeWMpOworICAgICAgICBj b25zdCBpbnQgb2Zmc2V0ID0gRkZNSU4obG9jX3N1bV9hYnNfcGFzczEgLSBsb2NhbF9zdW1fc2ln LCA0KTsKKworICAgICAgICBpZiAoIXRiLT5jX2lkeCkKKyAgICAgICAgICAgIGluYyA9ICAxICsg b2Zmc2V0ICsgKCFkID8gMTUgOiAoZCA8IDMgPyAxMCA6IChkIDwgMTAgPyA1IDogMCkpKTsKKyAg ICAgICAgZWxzZQorICAgICAgICAgICAgaW5jID0gMjIgKyBvZmZzZXQgKyAoIWQgPyA1IDogMCk7 CisgICAgfQorICAgIHJldHVybiBpbmM7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2xldmVsX2d0eF9m bGFnX2RlY29kZShWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW5jKQoreworICAgIHJl dHVybiBHRVRfQ0FCQUMoQUJTX0xFVkVMX0dUWF9GTEFHICsgaW5jKTsKK30KKworc3RhdGljIGlu dCBwYXJfbGV2ZWxfZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGlu YykKK3sKKyAgICByZXR1cm4gR0VUX0NBQkFDKFBBUl9MRVZFTF9GTEFHICsgaW5jKTsKK30KKwor c3RhdGljIGludCBwYXJfbGV2ZWxfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykK K3sKKyAgICBjb25zdCBpbnQgaW5jID0gMzI7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhQQVJfTEVW RUxfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgc2JfY29kZWRfZmxhZ19kZWNvZGUoVlZD TG9jYWxDb250ZXh0ICpsYywgY29uc3QgdWludDhfdCAqc2JfY29kZWRfZmxhZywKKyAgICBjb25z dCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0IGludCB4cywgY29uc3QgaW50IHlzKQoreworICAg IGNvbnN0IFZWQ1NIICpzaCAgICAgICAgICA9ICZsYy0+c2MtPnNoOworICAgIGNvbnN0IFRyYW5z Zm9ybUJsb2NrICp0YiA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgdyA9IHJjLT53aWR0aF9pbl9z YnM7CisgICAgY29uc3QgaW50IGggPSByYy0+aGVpZ2h0X2luX3NiczsKKyAgICBpbnQgaW5jOwor CisgICAgaWYgKHRiLT50cyAmJiAhc2gtPnRzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFn KSB7CisgICAgICAgIGNvbnN0IGludCBsZWZ0ID0geHMgPiAwID8gc2JfY29kZWRfZmxhZ1stMV0g OiAwOworICAgICAgICBjb25zdCBpbnQgYWJvdmUgPSB5cyA+IDAgPyBzYl9jb2RlZF9mbGFnWy13 XSA6IDA7CisgICAgICAgIGluYyA9IGxlZnQgKyBhYm92ZSArIDQ7CisgICAgfSBlbHNlIHsKKyAg ICAgICAgY29uc3QgaW50IHJpZ2h0ICA9ICh4cyA8IHcgLSAxKSA/IHNiX2NvZGVkX2ZsYWdbMV0g OiAwOworICAgICAgICBjb25zdCBpbnQgYm90dG9tID0gKHlzIDwgaCAtIDEpID8gc2JfY29kZWRf ZmxhZ1t3XSA6IDA7CisgICAgICAgIGluYyA9IChyaWdodCB8IGJvdHRvbSkgKyAodGItPmNfaWR4 ID8gMiA6IDApOworICAgIH0KKyAgICByZXR1cm4gR0VUX0NBQkFDKFNCX0NPREVEX0ZMQUcgKyBp bmMpOworfQorCitzdGF0aWMgaW50IHNpZ19jb2VmZl9mbGFnX2RlY29kZShWVkNMb2NhbENvbnRl eHQgKmxjLCBjb25zdCBSZXNpZHVhbENvZGluZyogcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50 IHljKQoreworICAgIGNvbnN0IFZWQ1NIICpzaCAgICAgICAgICA9ICZsYy0+c2MtPnNoOworICAg IGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiA9IHJjLT50YjsKKyAgICBpbnQgaW5jOworCisgICAg aWYgKHRiLT50cyAmJiAhc2gtPnRzX3Jlc2lkdWFsX2NvZGluZ19kaXNhYmxlZF9mbGFnKSB7Cisg ICAgICAgIGNvbnN0IGludCBsb2NhbF9udW1fc2lnID0gZ2V0X2xvY2FsX3N1bV90cyhyYy0+c2ln X2NvZWZmX2ZsYWcsIHRiLT50Yl93aWR0aCwgdGItPnRiX2hlaWdodCwgeGMsIHljKTsKKyAgICAg ICAgaW5jID0gNjAgKyBsb2NhbF9udW1fc2lnOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0 IGludCBkID0geGMgKyB5YzsKKyAgICAgICAgY29uc3QgaW50IGxvY19zdW1fYWJzX3Bhc3MxID0g Z2V0X2xvY2FsX3N1bShyYy0+YWJzX2xldmVsX3Bhc3MxLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9o ZWlnaHQsIHhjLCB5Yyk7CisKKyAgICAgICAgaWYgKCF0Yi0+Y19pZHgpIHsKKyAgICAgICAgICAg IGluYyA9IDEyICogRkZNQVgoMCwgcmMtPnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJz X3Bhc3MxICsgMSkgPj4gMSwgMykgKyAoKGQgPCAyKSA/IDggOiAoZCA8IDUgPyA0IDogMCkpOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5jID0gMzYgKyA4ICogRkZNQVgoMCwgcmMt PnFzdGF0ZSAtIDEpICsgRkZNSU4oKGxvY19zdW1fYWJzX3Bhc3MxICsgMSkgPj4gMSwgMykgKyAo ZCA8IDIgPyA0IDogMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEdFVF9DQUJBQyhT SUdfQ09FRkZfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX2dldF9yaWNlX3BhcmFt KGNvbnN0IFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IHhjLCBjb25zdCBpbnQgeWMsIGNv bnN0IGludCBiYXNlX2xldmVsKQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrKiB0YiA9IHJj LT50YjsKKyAgICBjb25zdCBpbnQgcmljZV9wYXJhbXNbXSA9IHsKKyAgICAgICAgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgMiwKKyAgICAgICAgMiwgMiwgMiwg MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywKKyAgICB9OworICAgIGludCBs b2Nfc3VtX2FiczsKKworICAgIGxvY19zdW1fYWJzID0gZ2V0X2xvY2FsX3N1bShyYy0+YWJzX2xl dmVsLCB0Yi0+dGJfd2lkdGgsIHRiLT50Yl9oZWlnaHQsIHhjLCB5Yyk7CisgICAgbG9jX3N1bV9h YnMgPSBhdl9jbGlwX3VpbnRwMihsb2Nfc3VtX2FicyAtIGJhc2VfbGV2ZWwgKiA1LCA1KTsKKyAg ICByZXR1cm4gcmljZV9wYXJhbXNbbG9jX3N1bV9hYnNdOworfQorCitzdGF0aWMgaW50IGFic19k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgaW50IGNfcmljZV9wYXJhbSkKK3sKKyAg ICBjb25zdCBpbnQgTUFYX0JJTiA9IDY7CisgICAgaW50IHByZWZpeCA9IDA7CisgICAgaW50IHN1 ZmZpeCA9IDA7CisgICAgaW50IGk7CisKKyAgICB3aGlsZSAocHJlZml4IDwgTUFYX0JJTiAmJiB2 dmNfZ2V0X2NhYmFjX2J5cGFzcygmbGMtPmVwLT5jYykpCisgICAgICAgIHByZWZpeCsrOworICAg IGlmIChwcmVmaXggPCBNQVhfQklOKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjX3JpY2Vf cGFyYW07IGkrKykgeworICAgICAgICAgICAgc3VmZml4ID0gKHN1ZmZpeCA8PCAxKSB8IHZ2Y19n ZXRfY2FiYWNfYnlwYXNzKCZsYy0+ZXAtPmNjKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg ICAgICAgIHN1ZmZpeCA9IGxpbWl0ZWRfa3RoX29yZGVyX2Vna19kZWNvZGUoJmxjLT5lcC0+Y2Ms IGNfcmljZV9wYXJhbSArIDEsIDExLCAxNSk7CisgICAgfQorICAgIHJldHVybiBzdWZmaXggKyAo cHJlZml4IDw8IGNfcmljZV9wYXJhbSk7Cit9CisKK3N0YXRpYyBpbnQgYWJzX3JlbWFpbmRlcl9k ZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3QgUmVzaWR1YWxDb2RpbmcqIHJjLCBjb25z dCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBjb25zdCBpbnQgY19yaWNlX3BhcmFtID0g YWJzX2dldF9yaWNlX3BhcmFtKHJjLCB4YywgeWMsIDQpOworICAgIGNvbnN0IGludCByZW0gPSBh YnNfZGVjb2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIHJldHVybiByZW07Cit9CisKK3N0YXRp YyBpbnQgYWJzX3JlbWFpbmRlcl90c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg UmVzaWR1YWxDb2RpbmcqIHJjLCBjb25zdCBpbnQgeGMsIGNvbnN0IGludCB5YykKK3sKKyAgICBj b25zdCBpbnQgY19yaWNlX3BhcmFtID0gMTsKKyAgICBjb25zdCBpbnQgcmVtID0gYWJzX2RlY29k ZShsYywgY19yaWNlX3BhcmFtKTsKKyAgICByZXR1cm4gcmVtOworfQorCitzdGF0aWMgaW50IGNv ZWZmX3NpZ25fZmxhZ19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYykKK3sKKyAgICByZXR1cm4g dnZjX2dldF9jYWJhY19ieXBhc3MoJmxjLT5lcC0+Y2MpOworfQorCisvLzkuMy40LjIuMTAgRGVy aXZhdGlvbiBwcm9jZXNzIG9mIGN0eEluYyBmb3IgdGhlIHN5bnRheCBlbGVtZW50IGNvZWZmX3Np Z25fZmxhZyBmb3IgdHJhbnNmb3JtIHNraXAgbW9kZQorc3RhdGljIGludCBjb2VmZl9zaWduX2Zs YWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IENvZGluZ1VuaXQgKmN1LCBj b25zdCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0IGludCB4YywgY29uc3QgaW50IHljKQorewor ICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0YiAgICA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQg dyAgICAgICAgICAgICAgICAgPSB0Yi0+dGJfd2lkdGg7CisgICAgY29uc3QgaW50ICpsZXZlbCAg ICAgICAgICAgID0gcmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyB5YyAqIHcgKyB4YzsKKyAgICBjb25z dCBpbnQgbGVmdF9zaWduICAgICAgICAgPSAoeGMgPT0gMCkgPyAwIDogbGV2ZWxbLTFdOworICAg IGNvbnN0IGludCBhYm92ZV9zaWduICAgICAgICA9ICh5YyA9PSAwKSA/IDAgOiBsZXZlbFstd107 CisgICAgY29uc3QgaW50IGJkcGNtX2ZsYWcgICAgICAgID0gY3UtPmJkcGNtX2ZsYWdbdGItPmNf aWR4XTsKKyAgICBpbnQgaW5jOworCisgICAgaWYgKGxlZnRfc2lnbiA9PSAtYWJvdmVfc2lnbikK KyAgICAgICAgaW5jID0gYmRwY21fZmxhZyA9PSAwID8gMCA6IDM7CisgICAgZWxzZSBpZiAobGVm dF9zaWduID49IDAgJiYgYWJvdmVfc2lnbiA+PSAwKQorICAgICAgICBpbmMgPSBiZHBjbV9mbGFn ID09IDAgPyAxIDogNDsKKyAgICBlbHNlCisgICAgICAgIGluYyA9IGJkcGNtX2ZsYWcgPT0gMCA/ IDIgOiA1OworICAgIHJldHVybiBHRVRfQ0FCQUMoQ09FRkZfU0lHTl9GTEFHICsgaW5jKTsKK30K Kworc3RhdGljIGludCBhYnNfbGV2ZWxfZ3QxX2ZsYWdfdHNfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IENvZGluZ1VuaXQgKmN1LCBjb25zdCBSZXNpZHVhbENvZGluZyAqcmMsIGNv bnN0IGludCB4YywgY29uc3QgaW50IHljKQoreworICAgIGNvbnN0IFRyYW5zZm9ybUJsb2NrICp0 YiA9IHJjLT50YjsKKyAgICBjb25zdCBpbnQgKnNpZ19jb2VmZl9mbGFnID0gcmMtPnNpZ19jb2Vm Zl9mbGFnICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKyAgICBpbnQgaW5jOworCisgICAgaWYg KGN1LT5iZHBjbV9mbGFnW3RiLT5jX2lkeF0pIHsKKyAgICAgICAgaW5jID0gNjc7CisgICAgfSBl bHNlIHsKKyAgICAgICAgY29uc3QgaW50IGwgPSB4YyA+IDAgPyBzaWdfY29lZmZfZmxhZ1stMV0g OiAwOworICAgICAgICBjb25zdCBpbnQgYSA9IHljID4gMCA/IHNpZ19jb2VmZl9mbGFnWy10Yi0+ dGJfd2lkdGhdIDogMDsKKyAgICAgICAgaW5jID0gNjQgKyBhICsgbDsKKyAgICB9CisgICAgcmV0 dXJuIEdFVF9DQUJBQyhBQlNfTEVWRUxfR1RYX0ZMQUcgKyBpbmMpOworfQorCitzdGF0aWMgaW50 IGFic19sZXZlbF9ndHhfZmxhZ190c19kZWNvZGUoVlZDTG9jYWxDb250ZXh0ICpsYywgY29uc3Qg aW50IGopCit7CisgICAgY29uc3QgaW50IGluYyA9IDY3ICsgajsKKyAgICByZXR1cm4gR0VUX0NB QkFDKEFCU19MRVZFTF9HVFhfRkxBRyArIGluYyk7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50OF90 IHFzdGF0ZV90cmFuc2xhdGVfdGFibGVbXVsyXSA9IHsKKyAgICB7IDAsIDIgfSwgeyAyLCAwIH0s IHsgMSwgMyB9LCB7IDMsIDEgfQorfTsKKworc3RhdGljIGludCBhYnNfbGV2ZWxfZGVjb2RlKFZW Q0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3QgaW50IHhj LCBjb25zdCBpbnQgeWMpCit7CisgICAgY29uc3QgaW50IGNfcmljZV9wYXJhbSA9IGFic19nZXRf cmljZV9wYXJhbShyYywgeGMsIHljLCAwKTsKKyAgICBpbnQgYWJzX2RlY19sZXZlbCA9ICBhYnNf ZGVjb2RlKGxjLCBjX3JpY2VfcGFyYW0pOworICAgIGNvbnN0IGludCB6ZXJvX3BvcyA9IChyYy0+ cXN0YXRlIDwgMiA/IDEgOiAyKSA8PCBjX3JpY2VfcGFyYW07CisgICAgaWYgKGFic19kZWNfbGV2 ZWwgIT0gemVyb19wb3MpIHsKKyAgICAgICAgaWYgKGFic19kZWNfbGV2ZWwgPCB6ZXJvX3BvcykK KyAgICAgICAgICAgIGFic19kZWNfbGV2ZWwrKzsKKyAgICB9IGVsc2UgeworICAgICAgICBhYnNf ZGVjX2xldmVsID0gMDsKKyAgICB9CisgICAgcmV0dXJuIGFic19kZWNfbGV2ZWw7Cit9CisKK3N0 YXRpYyB2b2lkIGluaXRfcmVzaWR1YWxfY29kaW5nKFJlc2lkdWFsQ29kaW5nICpyYywgY29uc3Qg aW50IGxvZzJfem9fdGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCwgVHJhbnNm b3JtQmxvY2sgKnRiKQoreworICAgIGludCBsb2cyX3NiX3cgPSAoRkZNSU4obG9nMl96b190Yl93 aWR0aCwgbG9nMl96b190Yl9oZWlnaHQgKSA8IDIgPyAxIDogMiApOworICAgIGludCBsb2cyX3Ni X2ggPSBsb2cyX3NiX3c7CisKKyAgICBpZiAoIGxvZzJfem9fdGJfd2lkdGggKyBsb2cyX3pvX3Ri X2hlaWdodCA+IDMgKSB7CisgICAgICAgIGlmICggbG9nMl96b190Yl93aWR0aCA8IDIgKSB7Cisg ICAgICAgICAgICBsb2cyX3NiX3cgPSBsb2cyX3pvX3RiX3dpZHRoOworICAgICAgICAgICAgbG9n Ml9zYl9oID0gNCAtIGxvZzJfc2JfdzsKKyAgICAgICAgfSBlbHNlIGlmICggbG9nMl96b190Yl9o ZWlnaHQgPCAyICkgeworICAgICAgICAgICAgbG9nMl9zYl9oID0gbG9nMl96b190Yl9oZWlnaHQ7 CisgICAgICAgICAgICBsb2cyX3NiX3cgPSA0IC0gbG9nMl9zYl9oOworICAgICAgICB9CisgICAg fQorICAgIHJjLT5sb2cyX3NiX3cgPSBsb2cyX3NiX3c7CisgICAgcmMtPmxvZzJfc2JfaCA9IGxv ZzJfc2JfaDsKKyAgICByYy0+bnVtX3NiX2NvZWZmICAgPSAxIDw8IChsb2cyX3NiX3cgKyBsb2cy X3NiX2gpOworICAgIHJjLT5sYXN0X3N1Yl9ibG9jayA9ICggMSA8PCAoIGxvZzJfem9fdGJfd2lk dGggKyBsb2cyX3pvX3RiX2hlaWdodCAtIChsb2cyX3NiX3cgKyBsb2cyX3NiX2gpKSkgLSAxOwor ICAgIHJjLT5yZW1fYmluc19wYXNzMSA9ICgoIDEgPDwgKCBsb2cyX3pvX3RiX3dpZHRoICsgbG9n Ml96b190Yl9oZWlnaHQpKSAqIDcgKSA+PiAyOworCisKKyAgICByYy0+c2Jfc2Nhbl94X29mZiA9 IGZmX3Z2Y19kaWFnX3NjYW5feFtsb2cyX3pvX3RiX3dpZHRoIC0gbG9nMl9zYl93XVtsb2cyX3pv X3RiX2hlaWdodCAtIGxvZzJfc2JfaF07CisgICAgcmMtPnNiX3NjYW5feV9vZmYgPSBmZl92dmNf ZGlhZ19zY2FuX3lbbG9nMl96b190Yl93aWR0aCAtIGxvZzJfc2Jfd11bbG9nMl96b190Yl9oZWln aHQgLSBsb2cyX3NiX2hdOworCisgICAgcmMtPnNjYW5feF9vZmYgPSBmZl92dmNfZGlhZ19zY2Fu X3hbbG9nMl9zYl93XVtsb2cyX3NiX2hdOworICAgIHJjLT5zY2FuX3lfb2ZmID0gZmZfdnZjX2Rp YWdfc2Nhbl95W2xvZzJfc2Jfd11bbG9nMl9zYl9oXTsKKworICAgIHJjLT5pbmZlcl9zYl9jYmYg PSAxOworCisgICAgcmMtPndpZHRoX2luX3NicyAgPSAoMSA8PCAobG9nMl96b190Yl93aWR0aCAt IGxvZzJfc2JfdykpOworICAgIHJjLT5oZWlnaHRfaW5fc2JzID0gKDEgPDwgKGxvZzJfem9fdGJf aGVpZ2h0IC0gbG9nMl9zYl9oKSk7CisgICAgcmMtPm5iX3NicyAgICAgICAgPSByYy0+d2lkdGhf aW5fc2JzICogcmMtPmhlaWdodF9pbl9zYnM7CisKKyAgICByYy0+bGFzdF9zY2FuX3BvcyA9IHJj LT5udW1fc2JfY29lZmY7CisgICAgcmMtPnFzdGF0ZSAgICAgICAgPSAwOworCisgICAgcmMtPnRi ID0gdGI7Cit9CisKK3N0YXRpYyBpbnQgcmVzaWR1YWxfdHNfY29kaW5nX3N1YmJsb2NrKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIFJlc2lkdWFsQ29kaW5nKiByYywgY29uc3QgaW50IGkpCit7CisgICAg Y29uc3QgQ29kaW5nVW5pdCAqY3UgICAgPSBsYy0+Y3U7CisgICAgVHJhbnNmb3JtQmxvY2sgKnRi ICAgICAgPSByYy0+dGI7CisgICAgY29uc3QgaW50IGJkcGNtX2ZsYWcgICAgPSBjdS0+YmRwY21f ZmxhZ1t0Yi0+Y19pZHhdOworICAgIGNvbnN0IGludCB4cyAgICAgICAgICAgID0gcmMtPnNiX3Nj YW5feF9vZmZbaV07CisgICAgY29uc3QgaW50IHlzICAgICAgICAgICAgPSByYy0+c2Jfc2Nhbl95 X29mZltpXTsKKyAgICB1aW50OF90ICpzYl9jb2RlZF9mbGFnICA9IHJjLT5zYl9jb2RlZF9mbGFn ICsgeXMgKiByYy0+d2lkdGhfaW5fc2JzICsgeHM7CisgICAgaW50IGluZmVyX3NiX3NpZ19jb2Vm Zl9mbGFnID0gMTsKKyAgICBpbnQgbGFzdF9zY2FuX3Bvc19wYXNzMSA9IC0xLCBsYXN0X3NjYW5f cG9zX3Bhc3MyID0gLTEsIG47CisgICAgaW50IGFic19sZXZlbF9ndHhfZmxhZ1tNQVhfU1VCX0JM T0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGludCBhYnNfbGV2ZWxfcGFzczJb TUFYX1NVQl9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFXTsgICAgICAgLy8vPCBBYnNM ZXZlbFBhc3MyCisKKyAgICBpZiAoaSAhPSByYy0+bGFzdF9zdWJfYmxvY2sgfHwgIXJjLT5pbmZl cl9zYl9jYmYpCisgICAgICAgICpzYl9jb2RlZF9mbGFnID0gc2JfY29kZWRfZmxhZ19kZWNvZGUo bGMsIHNiX2NvZGVkX2ZsYWcsIHJjLCB4cywgeXMpOworICAgIGVsc2UKKyAgICAgICAgKnNiX2Nv ZGVkX2ZsYWcgPSAxOworICAgIGlmICgqc2JfY29kZWRfZmxhZyAmJiBpIDwgcmMtPmxhc3Rfc3Vi X2Jsb2NrKQorICAgICAgICByYy0+aW5mZXJfc2JfY2JmID0gMDsKKworICAgIC8vZmlyc3Qgc2Nh biBwYXNzCisgICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2JfY29lZmYgJiYgcmMtPnJlbV9i aW5zX3Bhc3MxID49IDQ7IG4rKykgeworICAgICAgICBjb25zdCBpbnQgeGMgID0gKHhzIDw8IHJj LT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAg PSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29u c3QgaW50IG9mZiA9IHljICogdGItPnRiX3dpZHRoICsgeGM7CisgICAgICAgIGludCAqc2lnX2Nv ZWZmX2ZsYWcgICA9IHJjLT5zaWdfY29lZmZfZmxhZyArIG9mZjsKKyAgICAgICAgaW50ICphYnNf bGV2ZWxfcGFzczEgID0gcmMtPmFic19sZXZlbF9wYXNzMSArIG9mZjsKKyAgICAgICAgaW50ICpj b2VmZl9zaWduX2xldmVsID0gcmMtPmNvZWZmX3NpZ25fbGV2ZWwgKyBvZmY7CisgICAgICAgIGlu dCBwYXJfbGV2ZWxfZmxhZyAgICA9IDA7CisKKyAgICAgICAgYWJzX2xldmVsX2d0eF9mbGFnW25d ID0gMDsKKyAgICAgICAgbGFzdF9zY2FuX3Bvc19wYXNzMSA9IG47CisgICAgICAgIGlmICgqc2Jf Y29kZWRfZmxhZyAmJiAobiAhPSByYy0+bnVtX3NiX2NvZWZmIC0gMSB8fCAhaW5mZXJfc2Jfc2ln X2NvZWZmX2ZsYWcpKSB7CisgICAgICAgICAgICAqc2lnX2NvZWZmX2ZsYWcgPSBzaWdfY29lZmZf ZmxhZ19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bh c3MxLS07CisgICAgICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFnKQorICAgICAgICAgICAgICAg IGluZmVyX3NiX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgICpzaWdfY29lZmZfZmxhZyA9IChuID09IHJjLT5udW1fc2JfY29lZmYgLSAxKSAmJiBpbmZl cl9zYl9zaWdfY29lZmZfZmxhZyAmJiAqc2JfY29kZWRfZmxhZzsKKyAgICAgICAgfQorICAgICAg ICAqY29lZmZfc2lnbl9sZXZlbCA9IDA7CisgICAgICAgIGlmICgqc2lnX2NvZWZmX2ZsYWcpIHsK KyAgICAgICAgICAgICpjb2VmZl9zaWduX2xldmVsID0gMSAtIDIgKiBjb2VmZl9zaWduX2ZsYWdf dHNfZGVjb2RlKGxjLCBjdSwgcmMsIHhjLCB5Yyk7CisgICAgICAgICAgICBhYnNfbGV2ZWxfZ3R4 X2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3QxX2ZsYWdfdHNfZGVjb2RlKGxjLCBjdSwgcmMsIHhjLCB5 Yyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEgLT0gMjsKKyAgICAgICAgICAgIGlm IChhYnNfbGV2ZWxfZ3R4X2ZsYWdbbl0pIHsKKyAgICAgICAgICAgICAgICBwYXJfbGV2ZWxfZmxh ZyA9IHBhcl9sZXZlbF9mbGFnX3RzX2RlY29kZShsYyk7CisgICAgICAgICAgICAgICAgcmMtPnJl bV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKmFic19s ZXZlbF9wYXNzMSA9ICpzaWdfY29lZmZfZmxhZyArIHBhcl9sZXZlbF9mbGFnICsgYWJzX2xldmVs X2d0eF9mbGFnW25dOworICAgIH0KKworICAgIC8vZ3JlYXRlciB0aGFuIHggc2NhbiBwYXNzCisg ICAgZm9yIChuID0gMDsgbiA8IHJjLT5udW1fc2JfY29lZmYgJiYgcmMtPnJlbV9iaW5zX3Bhc3Mx ID49IDQ7IG4rKykgeworICAgICAgICBjb25zdCBpbnQgeGMgID0gKHhzIDw8IHJjLT5sb2cyX3Ni X3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCB5YyAgPSAoeXMgPDwg cmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29mZltuXTsKKyAgICAgICAgY29uc3QgaW50IG9m ZiA9IHljICogdGItPnRiX3dpZHRoICsgeGM7CisKKyAgICAgICAgYWJzX2xldmVsX3Bhc3MyW25d ID0gcmMtPmFic19sZXZlbF9wYXNzMVtvZmZdOworICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8 IDUgJiYgYWJzX2xldmVsX2d0eF9mbGFnW25dOyBqKyspIHsKKyAgICAgICAgICAgIGFic19sZXZl bF9ndHhfZmxhZ1tuXSA9IGFic19sZXZlbF9ndHhfZmxhZ190c19kZWNvZGUobGMsIGopOworICAg ICAgICAgICAgYWJzX2xldmVsX3Bhc3MyW25dICs9IGFic19sZXZlbF9ndHhfZmxhZ1tuXSA8PCAx OworICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgIH0KKyAgICAgICAg bGFzdF9zY2FuX3Bvc19wYXNzMiA9IG47CisgICAgfQorCisgICAgLyogcmVtYWluZGVyIHNjYW4g cGFzcyAqLworICAgIGZvciAobiA9IDA7IG4gPCByYy0+bnVtX3NiX2NvZWZmOyBuKyspIHsKKyAg ICAgICAgY29uc3QgaW50IHhjICA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hf b2ZmW25dOworICAgICAgICBjb25zdCBpbnQgeWMgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsg cmMtPnNjYW5feV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93 aWR0aCArIHhjOworICAgICAgICBjb25zdCBpbnQgKmFic19sZXZlbF9wYXNzMSAgPSByYy0+YWJz X2xldmVsX3Bhc3MxICsgb2ZmOworICAgICAgICBpbnQgKmFic19sZXZlbCAgICAgICAgICAgICAg PSByYy0+YWJzX2xldmVsICsgb2ZmOworICAgICAgICBpbnQgKmNvZWZmX3NpZ25fbGV2ZWwgICAg ICAgPSByYy0+Y29lZmZfc2lnbl9sZXZlbCArIG9mZjsKKyAgICAgICAgaW50IGFic19yZW1haW5k ZXIgPSAwOworCisgICAgICAgIGlmICgobiA8PSBsYXN0X3NjYW5fcG9zX3Bhc3MyICYmIGFic19s ZXZlbF9wYXNzMltuXSA+PSAxMCkgfHwKKyAgICAgICAgICAgIChuID4gbGFzdF9zY2FuX3Bvc19w YXNzMiAmJiBuIDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczEgJiYKKyAgICAgICAgICAgICphYnNfbGV2 ZWxfcGFzczEgPj0gMikgfHwKKyAgICAgICAgICAgIChuID4gbGFzdF9zY2FuX3Bvc19wYXNzMSAm JiAgKnNiX2NvZGVkX2ZsYWcpKQorICAgICAgICAgICAgYWJzX3JlbWFpbmRlciA9IGFic19yZW1h aW5kZXJfdHNfZGVjb2RlKGxjLCByYywgeGMsIHljKTsKKyAgICAgICAgaWYgKG4gPD0gbGFzdF9z Y2FuX3Bvc19wYXNzMikgeworICAgICAgICAgICAgKmFic19sZXZlbCA9IGFic19sZXZlbF9wYXNz MltuXSArIDIgKiBhYnNfcmVtYWluZGVyOworICAgICAgICB9IGVsc2UgaWYgKG4gPD0gbGFzdF9z Y2FuX3Bvc19wYXNzMSkgeworICAgICAgICAgICAgKmFic19sZXZlbCA9ICphYnNfbGV2ZWxfcGFz czEgKyAyICogYWJzX3JlbWFpbmRlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICph YnNfbGV2ZWwgPSBhYnNfcmVtYWluZGVyOworICAgICAgICAgICAgaWYgKGFic19yZW1haW5kZXIp IHsKKyAgICAgICAgICAgICAgICAvL24gPiBsYXN0U2NhblBvc1Bhc3MxCisgICAgICAgICAgICAg ICAgKmNvZWZmX3NpZ25fbGV2ZWwgPSAxIC0gMiAqIGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUobGMp OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghYmRwY21fZmxhZyAmJiBu IDw9IGxhc3Rfc2Nhbl9wb3NfcGFzczEpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0ICA9 IHhjID4gMCA/IGFic19sZXZlbFstMV0gOiAwOworICAgICAgICAgICAgY29uc3QgaW50IGFib3Zl ID0geWMgPiAwID8gYWJzX2xldmVsWy10Yi0+dGJfd2lkdGhdIDogMDsKKyAgICAgICAgICAgIGNv bnN0IGludCBwcmVkID0gRkZNQVgobGVmdCwgYWJvdmUpOworCisgICAgICAgICAgICBpZiAoKmFi c19sZXZlbCA9PSAxICYmIHByZWQgPiAwKQorICAgICAgICAgICAgICAgICphYnNfbGV2ZWwgPSBw cmVkOworICAgICAgICAgICAgZWxzZSBpZiAoKmFic19sZXZlbCA+IDAgJiYgKmFic19sZXZlbCA8 PSBwcmVkKQorICAgICAgICAgICAgICAgICgqYWJzX2xldmVsKS0tOworICAgICAgICB9CisgICAg ICAgIGlmICgqYWJzX2xldmVsKSB7CisgICAgICAgICAgICB0Yi0+Y29lZmZzW29mZl0gPSAqY29l ZmZfc2lnbl9sZXZlbCAqICphYnNfbGV2ZWw7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feCA9 IEZGTUFYKHhjLCB0Yi0+bWF4X3NjYW5feCk7CisgICAgICAgICAgICB0Yi0+bWF4X3NjYW5feSA9 IEZGTUFYKHljLCB0Yi0+bWF4X3NjYW5feSk7CisgICAgICAgICAgICB0Yi0+bWluX3NjYW5feCA9 IEZGTUlOKHhjLCB0Yi0+bWluX3NjYW5feCk7CisgICAgICAgICAgICB0Yi0+bWluX3NjYW5feSA9 IEZGTUlOKHljLCB0Yi0+bWluX3NjYW5feSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICB0Yi0+Y29lZmZzW29mZl0gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgaGxzX3Jlc2lkdWFsX3RzX2NvZGluZyhWVkNMb2NhbENvbnRleHQg KmxjLCBUcmFuc2Zvcm1CbG9jayAqdGIpCit7CisgICAgUmVzaWR1YWxDb2RpbmcgcmM7CisgICAg dGItPm1pbl9zY2FuX3ggPSB0Yi0+bWluX3NjYW5feSA9IElOVF9NQVg7CisgICAgaW5pdF9yZXNp ZHVhbF9jb2RpbmcoJnJjLCB0Yi0+bG9nMl90Yl93aWR0aCwgdGItPmxvZzJfdGJfaGVpZ2h0LCB0 Yik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gcmMubGFzdF9zdWJfYmxvY2s7IGkrKykgewor ICAgICAgICBpbnQgcmV0ID0gcmVzaWR1YWxfdHNfY29kaW5nX3N1YmJsb2NrKGxjLCAmcmMsIGkp OworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQor CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHJlc2lkdWFsX2NvZGluZ19z dWJibG9jayhWVkNMb2NhbENvbnRleHQgKmxjLCBSZXNpZHVhbENvZGluZyAqcmMsIGNvbnN0IGlu dCBpKQoreworICAgIGNvbnN0IFZWQ1NIICpzaCAgICAgPSAmbGMtPnNjLT5zaDsKKyAgICBUcmFu c2Zvcm1CbG9jayAqdGIgID0gcmMtPnRiOworICAgIGludCBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2Is IGxhc3Rfc2lnX3NjYW5fcG9zX3NiOworICAgIGludCBmaXJzdF9wb3NfbW9kZTAsIGZpcnN0X3Bv c19tb2RlMTsKKyAgICBpbnQgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAwOworICAgIGlu dCBuLCBzaWdfaGlkZGVuX2ZsYWcsIHN1bSA9IDA7CisgICAgaW50IGFic19sZXZlbF9ndDJfZmxh Z1tNQVhfU1VCX0JMT0NLX1NJWkUgKiBNQVhfU1VCX0JMT0NLX1NJWkVdOworICAgIGNvbnN0IGlu dCBzdGFydF9xc3RhdGVfc2IgPSByYy0+cXN0YXRlOworICAgIGNvbnN0IGludCB4cyA9IHJjLT5z Yl9zY2FuX3hfb2ZmW2ldOworICAgIGNvbnN0IGludCB5cyA9IHJjLT5zYl9zY2FuX3lfb2ZmW2ld OworICAgIHVpbnQ4X3QgKnNiX2NvZGVkX2ZsYWcgPSByYy0+c2JfY29kZWRfZmxhZyArIHlzICog cmMtPndpZHRoX2luX3NicyArIHhzOworCisKKyAgICBhdl9hc3NlcnQwKHJjLT5udW1fc2JfY29l ZmYgPD0gTUFYX1NVQl9CTE9DS19TSVpFICogTUFYX1NVQl9CTE9DS19TSVpFKTsKKyAgICBpZiAo aSA8IHJjLT5sYXN0X3N1Yl9ibG9jayAmJiBpID4gMCkgeworICAgICAgICAqc2JfY29kZWRfZmxh ZyA9IHNiX2NvZGVkX2ZsYWdfZGVjb2RlKGxjLCBzYl9jb2RlZF9mbGFnLCByYywgeHMsIHlzKTsK KyAgICAgICAgaW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcgPSAxOworICAgIH0gZWxzZSB7Cisg ICAgICAgICpzYl9jb2RlZF9mbGFnID0gMTsKKyAgICB9CisgICAgaWYgKCpzYl9jb2RlZF9mbGFn ICYmICh4cyA+IDMgfHwgeXMgPiAzKSAmJiB0Yi0+Y19pZHggPT0gMCkKKyAgICAgICAgbGMtPnBh cnNlLm10c196ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisKKyAgICBpZiAoISpzYl9jb2Rl ZF9mbGFnKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9 IHJjLT5udW1fc2JfY29lZmY7CisgICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSAtMTsKKyAgICBm aXJzdF9wb3NfbW9kZTAgPSAoaSA9PSByYy0+bGFzdF9zdWJfYmxvY2sgPyByYy0+bGFzdF9zY2Fu X3BvcyA6IHJjLT5udW1fc2JfY29lZmYgLTEpOworICAgIGZpcnN0X3Bvc19tb2RlMSA9IGZpcnN0 X3Bvc19tb2RlMDsKKyAgICBmb3IgKG4gPSBmaXJzdF9wb3NfbW9kZTA7IG4gPj0gMCAmJiByYy0+ cmVtX2JpbnNfcGFzczEgPj0gNDsgbi0tKSB7CisgICAgICAgIGNvbnN0IGludCB4YyAgID0gKHhz IDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNvbnN0IGlu dCB5YyAgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAg ICAgIGNvbnN0IGludCBsYXN0ID0gKHhjID09IHJjLT5sYXN0X3NpZ25pZmljYW50X2NvZWZmX3gg JiYgeWMgPT0gcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSk7CisgICAgICAgIGludCAqYWJz X2xldmVsX3Bhc3MxID0gcmMtPmFic19sZXZlbF9wYXNzMSArIHljICogdGItPnRiX3dpZHRoICsg eGM7CisgICAgICAgIGludCAqc2lnX2NvZWZmX2ZsYWcgID0gcmMtPnNpZ19jb2VmZl9mbGFnICsg eWMgKiB0Yi0+dGJfd2lkdGggKyB4YzsKKworICAgICAgICBpZiAoKG4gPiAwIHx8ICFpbmZlcl9z Yl9kY19zaWdfY29lZmZfZmxhZyApICYmICFsYXN0KSB7CisgICAgICAgICAgICAqc2lnX2NvZWZm X2ZsYWcgPSBzaWdfY29lZmZfZmxhZ19kZWNvZGUobGMsIHJjLCB4YywgeWMpOworICAgICAgICAg ICAgcmMtPnJlbV9iaW5zX3Bhc3MxLS07CisgICAgICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFn KQorICAgICAgICAgICAgICAgIGluZmVyX3NiX2RjX3NpZ19jb2VmZl9mbGFnID0gMDsKKyAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpzaWdfY29lZmZfZmxhZyA9IGxhc3QgfHwgKCFyYy0+ c2Nhbl94X29mZltuXSAmJiAhcmMgLT5zY2FuX3lfb2ZmW25dICYmCisgICAgICAgICAgICAgICAg aW5mZXJfc2JfZGNfc2lnX2NvZWZmX2ZsYWcpOworICAgICAgICB9CisgICAgICAgICphYnNfbGV2 ZWxfcGFzczEgPSAwOworICAgICAgICBpZiAoKnNpZ19jb2VmZl9mbGFnKSB7CisgICAgICAgICAg ICBpbnQgYWJzX2xldmVsX2d0MV9mbGFnLCBwYXJfbGV2ZWxfZmxhZyA9IDA7CisgICAgICAgICAg ICBjb25zdCBpbnQgaW5jID0gZ2V0X2d0eF9mbGFnX2luYyhyYywgeGMsIHljLCBsYXN0KTsKKyAg ICAgICAgICAgIGFic19sZXZlbF9ndDFfZmxhZyA9IGFic19sZXZlbF9ndHhfZmxhZ19kZWNvZGUo bGMsIGluYyk7CisgICAgICAgICAgICByYy0+cmVtX2JpbnNfcGFzczEtLTsKKyAgICAgICAgICAg IGlmIChhYnNfbGV2ZWxfZ3QxX2ZsYWcpIHsKKyAgICAgICAgICAgICAgICBwYXJfbGV2ZWxfZmxh ZyA9IHBhcl9sZXZlbF9mbGFnX2RlY29kZShsYywgaW5jKTsKKyAgICAgICAgICAgICAgICBhYnNf bGV2ZWxfZ3QyX2ZsYWdbbl0gPSBhYnNfbGV2ZWxfZ3R4X2ZsYWdfZGVjb2RlKGxjLCBpbmMgKyAz Mik7CisgICAgICAgICAgICAgICAgcmMtPnJlbV9iaW5zX3Bhc3MxIC09IDI7CisgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFic19sZXZlbF9ndDJfZmxhZ1tuXSA9IDA7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPT0gLTEp CisgICAgICAgICAgICAgICAgbGFzdF9zaWdfc2Nhbl9wb3Nfc2IgPSBuOworICAgICAgICAgICAg Zmlyc3Rfc2lnX3NjYW5fcG9zX3NiID0gbjsKKworICAgICAgICAgICAgKmFic19sZXZlbF9wYXNz MSA9CisgICAgICAgICAgICAgICAgMSAgKyBwYXJfbGV2ZWxfZmxhZyArIGFic19sZXZlbF9ndDFf ZmxhZyArIChhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPDwgMSk7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBhYnNfbGV2ZWxfZ3QyX2ZsYWdbbl0gPSAwOworICAgICAgICB9CisKKyAgICAg ICAgaWYgKHNoLT5kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAgICAgICAgcmMtPnFzdGF0ZSA9 IHFzdGF0ZV90cmFuc2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFic19sZXZlbF9wYXNzMSAmIDFd OworCisgICAgICAgIGZpcnN0X3Bvc19tb2RlMSA9IG4gLSAxOworICAgIH0KKyAgICBmb3IgKG4g PSBmaXJzdF9wb3NfbW9kZTA7IG4gPiBmaXJzdF9wb3NfbW9kZTE7IG4tLSkgeworICAgICAgICBj b25zdCBpbnQgeGMgPSAoeHMgPDwgcmMtPmxvZzJfc2JfdykgKyByYy0+c2Nhbl94X29mZltuXTsK KyAgICAgICAgY29uc3QgaW50IHljID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5f eV9vZmZbbl07CisgICAgICAgIGNvbnN0IGludCAqYWJzX2xldmVsX3Bhc3MxICA9IHJjLT5hYnNf bGV2ZWxfcGFzczEgKyB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBpbnQgKmFic19s ZXZlbCAgICAgICAgICAgICAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJfd2lkdGggKyB4 YzsKKworICAgICAgICAqYWJzX2xldmVsID0gKmFic19sZXZlbF9wYXNzMTsKKyAgICAgICAgaWYg KGFic19sZXZlbF9ndDJfZmxhZ1tuXSkKKyAgICAgICAgICAgICphYnNfbGV2ZWwgKz0gYWJzX3Jl bWFpbmRlcl9kZWNvZGUobGMsIHJjLCB4YywgeWMpIDw8IDE7CisgICAgfQorICAgIGZvciAobiA9 IGZpcnN0X3Bvc19tb2RlMTsgbiA+PSAwOyBuLS0pIHsKKyAgICAgICAgY29uc3QgaW50IHhjICAg ID0gKHhzIDw8IHJjLT5sb2cyX3NiX3cpICsgcmMtPnNjYW5feF9vZmZbbl07CisgICAgICAgIGNv bnN0IGludCB5YyAgICA9ICh5cyA8PCByYy0+bG9nMl9zYl9oKSArIHJjLT5zY2FuX3lfb2ZmW25d OworICAgICAgICBpbnQgKmFic19sZXZlbCAgPSByYy0+YWJzX2xldmVsICsgeWMgKiB0Yi0+dGJf d2lkdGggKyB4YzsKKworICAgICAgICAqYWJzX2xldmVsID0gYWJzX2xldmVsX2RlY29kZShsYywg cmMsIHhjLCB5Yyk7CisgICAgICAgIGlmICgqYWJzX2xldmVsID4gMCkgeworICAgICAgICAgICAg aWYgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiID09IC0xKQorICAgICAgICAgICAgICAgIGxhc3Rfc2ln X3NjYW5fcG9zX3NiID0gbjsKKyAgICAgICAgICAgIGZpcnN0X3NpZ19zY2FuX3Bvc19zYiA9IG47 CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNoLT5kZXBfcXVhbnRfdXNlZF9mbGFnKQorICAgICAg ICAgICAgcmMtPnFzdGF0ZSA9IHFzdGF0ZV90cmFuc2xhdGVfdGFibGVbcmMtPnFzdGF0ZV1bKmFi c19sZXZlbCAmIDFdOworICAgIH0KKyAgICBzaWdfaGlkZGVuX2ZsYWcgPSBzaC0+c2lnbl9kYXRh X2hpZGluZ191c2VkX2ZsYWcgJiYKKyAgICAgICAgKGxhc3Rfc2lnX3NjYW5fcG9zX3NiIC0gZmly c3Rfc2lnX3NjYW5fcG9zX3NiID4gMyA/IDEgOiAwKTsKKworICAgIGlmIChzaC0+ZGVwX3F1YW50 X3VzZWRfZmxhZykKKyAgICAgICAgcmMtPnFzdGF0ZSA9IHN0YXJ0X3FzdGF0ZV9zYjsKKyAgICBu ID0gKGkgPT0gcmMtPmxhc3Rfc3ViX2Jsb2NrID8gcmMtPmxhc3Rfc2Nhbl9wb3MgOiByYy0+bnVt X3NiX2NvZWZmIC0xKTsKKyAgICBmb3IgKC8qIG5vdGhpbmcgKi87IG4gPj0gMDsgbi0tKSB7Cisg ICAgICAgIGludCB0cmFuc19jb2VmZl9sZXZlbDsKKyAgICAgICAgY29uc3QgaW50IHhjICA9ICh4 cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW25dOworICAgICAgICBjb25zdCBp bnQgeWMgID0gKHlzIDw8IHJjLT5sb2cyX3NiX2gpICsgcmMtPnNjYW5feV9vZmZbbl07CisgICAg ICAgIGNvbnN0IGludCBvZmYgPSB5YyAqIHRiLT50Yl93aWR0aCArIHhjOworICAgICAgICBjb25z dCBpbnQgKmFic19sZXZlbCA9IHJjLT5hYnNfbGV2ZWwgKyBvZmY7CisKKyAgICAgICAgaWYgKCph YnNfbGV2ZWwgPiAwKSB7CisgICAgICAgICAgICBpbnQgc2lnbiA9IDE7CisgICAgICAgICAgICBp ZiAoIXNpZ19oaWRkZW5fZmxhZyB8fCAobiAhPSBmaXJzdF9zaWdfc2Nhbl9wb3Nfc2IpKQorICAg ICAgICAgICAgICAgIHNpZ24gPSAxIC0gMiAqIGNvZWZmX3NpZ25fZmxhZ19kZWNvZGUobGMpOwor ICAgICAgICAgICAgaWYgKHNoLT5kZXBfcXVhbnRfdXNlZF9mbGFnKSB7CisgICAgICAgICAgICAg ICAgdHJhbnNfY29lZmZfbGV2ZWwgPSAoMiAqICphYnNfbGV2ZWwgLSAocmMtPnFzdGF0ZSA+IDEp KSAqIHNpZ247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRyYW5zX2Nv ZWZmX2xldmVsID0gKmFic19sZXZlbCAqIHNpZ247CisgICAgICAgICAgICAgICAgaWYgKHNpZ19o aWRkZW5fZmxhZykgeworICAgICAgICAgICAgICAgICAgICBzdW0gKz0gKmFic19sZXZlbDsKKyAg ICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gZmlyc3Rfc2lnX3NjYW5fcG9zX3NiICYmIChzdW0g JSAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zX2NvZWZmX2xldmVsID0gLXRyYW5z X2NvZWZmX2xldmVsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHRiLT5jb2VmZnNbb2ZmXSA9IHRyYW5zX2NvZWZmX2xldmVsOworICAgICAgICAgICAgdGIt Pm1heF9zY2FuX3ggPSBGRk1BWCh4YywgdGItPm1heF9zY2FuX3gpOworICAgICAgICAgICAgdGIt Pm1heF9zY2FuX3kgPSBGRk1BWCh5YywgdGItPm1heF9zY2FuX3kpOworICAgICAgICB9CisgICAg ICAgIGlmIChzaC0+ZGVwX3F1YW50X3VzZWRfZmxhZykKKyAgICAgICAgICAgIHJjLT5xc3RhdGUg PSBxc3RhdGVfdHJhbnNsYXRlX3RhYmxlW3JjLT5xc3RhdGVdWyphYnNfbGV2ZWwgJiAxXTsKKyAg ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGVyaXZlX2xhc3Rfc2Nhbl9w b3MoUmVzaWR1YWxDb2RpbmcgKnJjLAorICAgIGNvbnN0IGludCBsb2cyX3pvX3RiX3dpZHRoLCBp bnQgbG9nMl96b190Yl9oZWlnaHQpCit7CisgICAgaW50IHhjLCB5YywgeHMsIHlzOworICAgIGRv IHsKKyAgICAgICAgaWYgKHJjLT5sYXN0X3NjYW5fcG9zID09IDApIHsKKyAgICAgICAgICAgIHJj LT5sYXN0X3NjYW5fcG9zID0gcmMtPm51bV9zYl9jb2VmZjsKKyAgICAgICAgICAgIHJjLT5sYXN0 X3N1Yl9ibG9jay0tOworICAgICAgICB9CisgICAgICAgIHJjLT5sYXN0X3NjYW5fcG9zLS07Cisg ICAgICAgIHhzID0gcmMtPnNiX3NjYW5feF9vZmZbcmMtPmxhc3Rfc3ViX2Jsb2NrXTsKKyAgICAg ICAgeXMgPSByYy0+c2Jfc2Nhbl95X29mZltyYy0+bGFzdF9zdWJfYmxvY2tdOworICAgICAgICB4 YyA9ICh4cyA8PCByYy0+bG9nMl9zYl93KSArIHJjLT5zY2FuX3hfb2ZmW3JjLT5sYXN0X3NjYW5f cG9zXTsKKyAgICAgICAgeWMgPSAoeXMgPDwgcmMtPmxvZzJfc2JfaCkgKyByYy0+c2Nhbl95X29m ZltyYy0+bGFzdF9zY2FuX3Bvc107CisgICAgfSB3aGlsZSAoKHhjICE9IHJjLT5sYXN0X3NpZ25p ZmljYW50X2NvZWZmX3gpIHx8ICh5YyAhPSByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95KSk7 Cit9CisKK3N0YXRpYyB2b2lkIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeF95X2RlY29kZShSZXNp ZHVhbENvZGluZyAqcmMsIFZWQ0xvY2FsQ29udGV4dCAqbGMsCisgICAgY29uc3QgaW50IGxvZzJf em9fdGJfd2lkdGgsIGNvbnN0IGludCBsb2cyX3pvX3RiX2hlaWdodCkKK3sKKyAgICBjb25zdCBU cmFuc2Zvcm1CbG9jayAqdGIgPSByYy0+dGI7CisgICAgaW50IGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeCwgbGFzdF9zaWduaWZpY2FudF9jb2VmZl95OworCisgICAgbGFzdF9zaWduaWZpY2FudF9j b2VmZl94ID0gbGFzdF9zaWduaWZpY2FudF9jb2VmZl94X3ByZWZpeF9kZWNvZGUobGMsCisgICAg ICAgICAgICB0Yi0+bG9nMl90Yl93aWR0aCwgbG9nMl96b190Yl93aWR0aCwgdGItPmNfaWR4KTsK KworICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9IGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eV9wcmVmaXhfZGVjb2RlKGxjLAorICAgICAgICB0Yi0+bG9nMl90Yl9oZWlnaHQsIGxvZzJfem9f dGJfaGVpZ2h0LCB0Yi0+Y19pZHgpOworCisgICAgaWYgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZf eCA+IDMpIHsKKyAgICAgICAgaW50IHN1ZmZpeCA9IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNv ZGUobGMsIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCk7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNh bnRfY29lZmZfeCA9ICgxIDw8ICgobGFzdF9zaWduaWZpY2FudF9jb2VmZl94ID4+IDEpIC0gMSkp ICoKKyAgICAgICAgICAgICgyICsgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCAmIDEpKSArIHN1 ZmZpeDsKKyAgICB9CisgICAgaWYgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA+IDMpIHsKKyAg ICAgICAgaW50IHN1ZmZpeCA9IGxhc3Rfc2lnX2NvZWZmX3N1ZmZpeF9kZWNvZGUobGMsIGxhc3Rf c2lnbmlmaWNhbnRfY29lZmZfeSk7CisgICAgICAgIGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSA9 ICgxIDw8ICgobGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID4+IDEpIC0gMSkpICoKKyAgICAgICAg ICAgICgyICsgKGxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeSAmIDEpKSArIHN1ZmZpeDsKKyAgICB9 CisgICAgcmMtPmxhc3Rfc2lnbmlmaWNhbnRfY29lZmZfeCA9IGxhc3Rfc2lnbmlmaWNhbnRfY29l ZmZfeDsKKyAgICByYy0+bGFzdF9zaWduaWZpY2FudF9jb2VmZl95ID0gbGFzdF9zaWduaWZpY2Fu dF9jb2VmZl95OworfQorCitzdGF0aWMgaW50IGhsc19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxD b250ZXh0ICpsYywgVHJhbnNmb3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IFZWQ1NQUyAqc3Bz ICAgICAgICAgICA9IGxjLT5mYy0+cHMuc3BzOworICAgIGNvbnN0IENvZGluZ1VuaXQgKmN1ICAg ICAgICA9IGxjLT5jdTsKKyAgICBjb25zdCBpbnQgbG9nMl90Yl93aWR0aCAgICAgPSB0Yi0+bG9n Ml90Yl93aWR0aDsKKyAgICBjb25zdCBpbnQgbG9nMl90Yl9oZWlnaHQgICAgPSB0Yi0+bG9nMl90 Yl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGNfaWR4ICAgICAgICAgICAgID0gdGItPmNfaWR4Owor ICAgIGludCBsb2cyX3pvX3RiX3dpZHRoLCBsb2cyX3pvX3RiX2hlaWdodDsKKyAgICBSZXNpZHVh bENvZGluZyByYzsKKworICAgIGlmIChzcHMtPm10c19lbmFibGVkX2ZsYWcgJiYgY3UtPnNidF9m bGFnICYmIGNfaWR4ID09IDAgJiYgbG9nMl90Yl93aWR0aCA9PSA1ICYmIGxvZzJfdGJfaGVpZ2h0 IDwgNikKKyAgICAgICAgbG9nMl96b190Yl93aWR0aCA9IDQ7CisgICAgZWxzZQorICAgICAgICBs b2cyX3pvX3RiX3dpZHRoID0gRkZNSU4obG9nMl90Yl93aWR0aCwgNSApOworCisgICAgaWYgKHNw cy0+bXRzX2VuYWJsZWRfZmxhZyAmJiBjdS0+c2J0X2ZsYWcgJiYgY19pZHggPT0gMCAmJiBsb2cy X3RiX3dpZHRoIDwgNiAmJiBsb2cyX3RiX2hlaWdodCA9PSA1ICkKKyAgICAgICAgbG9nMl96b190 Yl9oZWlnaHQgPSA0OworICAgIGVsc2UKKyAgICAgICAgbG9nMl96b190Yl9oZWlnaHQgPSBGRk1J Tihsb2cyX3RiX2hlaWdodCwgNSk7CisKKyAgICBpbml0X3Jlc2lkdWFsX2NvZGluZygmcmMsIGxv ZzJfem9fdGJfd2lkdGgsIGxvZzJfem9fdGJfaGVpZ2h0LCB0Yik7CisgICAgbGFzdF9zaWduaWZp Y2FudF9jb2VmZl94X3lfZGVjb2RlKCZyYywgbGMsIGxvZzJfem9fdGJfd2lkdGgsIGxvZzJfem9f dGJfaGVpZ2h0KTsKKyAgICBkZXJpdmVfbGFzdF9zY2FuX3BvcygmcmMsIGxvZzJfem9fdGJfd2lk dGgsIGxvZzJfem9fdGJfaGVpZ2h0KTsKKworICAgIGlmIChyYy5sYXN0X3N1Yl9ibG9jayA9PSAw ICYmIGxvZzJfdGJfd2lkdGggPj0gMiAmJiBsb2cyX3RiX2hlaWdodCA+PSAyICYmICF0Yi0+dHMg JiYgcmMubGFzdF9zY2FuX3BvcyA+IDApCisgICAgICAgIGxjLT5wYXJzZS5sZm5zdF9kY19vbmx5 ID0gMDsKKyAgICBpZiAoKHJjLmxhc3Rfc3ViX2Jsb2NrID4gMCAmJiBsb2cyX3RiX3dpZHRoID49 IDIgJiYgbG9nMl90Yl9oZWlnaHQgPj0gMiApIHx8CisgICAgICAgICAocmMubGFzdF9zY2FuX3Bv cyA+IDcgJiYgKGxvZzJfdGJfd2lkdGggPT0gMiB8fCBsb2cyX3RiX3dpZHRoID09IDMgKSAmJgor ICAgICAgICAgbG9nMl90Yl93aWR0aCA9PSBsb2cyX3RiX2hlaWdodCkpCisgICAgICAgIGxjLT5w YXJzZS5sZm5zdF96ZXJvX291dF9zaWdfY29lZmZfZmxhZyA9IDA7CisgICAgaWYgKChyYy5sYXN0 X3N1Yl9ibG9jayA+IDAgfHwgcmMubGFzdF9zY2FuX3BvcyA+IDAgKSAmJiBjX2lkeCA9PSAwKQor ICAgICAgICBsYy0+cGFyc2UubXRzX2RjX29ubHkgPSAwOworCisgICAgbWVtc2V0KHRiLT5jb2Vm ZnMsIDAsIHRiLT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YoKnRiLT5jb2VmZnMp KTsKKyAgICBtZW1zZXQocmMuYWJzX2xldmVsLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+dGJfaGVp Z2h0ICogc2l6ZW9mKHJjLmFic19sZXZlbFswXSkpOworICAgIG1lbXNldChyYy5zYl9jb2RlZF9m bGFnLCAwLCByYy5uYl9zYnMpOworICAgIG1lbXNldChyYy5hYnNfbGV2ZWxfcGFzczEsIDAsIHRi LT50Yl93aWR0aCAqIHRiLT50Yl9oZWlnaHQgKiBzaXplb2YocmMuYWJzX2xldmVsX3Bhc3MxWzBd KSk7CisgICAgbWVtc2V0KHJjLnNpZ19jb2VmZl9mbGFnLCAwLCB0Yi0+dGJfd2lkdGggKiB0Yi0+ dGJfaGVpZ2h0ICogc2l6ZW9mKHJjLnNpZ19jb2VmZl9mbGFnWzBdKSk7CisKKyAgICBmb3IgKGlu dCBpID0gcmMubGFzdF9zdWJfYmxvY2s7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIGludCByZXQg PSByZXNpZHVhbF9jb2Rpbmdfc3ViYmxvY2sobGMsICZyYywgaSk7CisgICAgICAgIGlmIChyZXQg PCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30K KworaW50IGZmX3Z2Y19yZXNpZHVhbF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgVHJhbnNm b3JtQmxvY2sgKnRiKQoreworICAgIGNvbnN0IFZWQ1NIICpzaCAgICAgPSAmbGMtPnNjLT5zaDsK KyAgICBjb25zdCBpbnQgdHMgICAgICAgID0gIXNoLT50c19yZXNpZHVhbF9jb2RpbmdfZGlzYWJs ZWRfZmxhZyAmJiB0Yi0+dHM7CisKKyAgICByZXR1cm4gdHMgPyBobHNfcmVzaWR1YWxfdHNfY29k aW5nKGxjLCB0YikgOiBobHNfcmVzaWR1YWxfY29kaW5nKGxjLCB0Yik7Cit9CisKK2ludCBmZl92 dmNfY3VfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKQoreworICAgIHJldHVybiBHRVRf Q0FCQUMoQ1VfQ09ERURfRkxBRyk7Cit9CisKK2ludCBmZl92dmNfc2J0X2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYykKK3sKKyAgICBjb25zdCBpbnQgdyAgICAgPSBsYy0+Y3UtPmNiX3dpZHRoOwor ICAgIGNvbnN0IGludCBoICAgICA9IGxjLT5jdS0+Y2JfaGVpZ2h0OworICAgIGNvbnN0IGludCBp bmMgICA9IHcgKiBoIDw9IDI1NjsKKyAgICByZXR1cm4gR0VUX0NBQkFDKENVX1NCVF9GTEFHICsg aW5jKTsKK30KKworaW50IGZmX3Z2Y19zYnRfcXVhZF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMp Cit7CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRfUVVBRF9GTEFHKTsKK30KKworaW50IGZm X3Z2Y19zYnRfaG9yaXpvbnRhbF9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7CisgICAgY29u c3QgaW50IHcgPSBsYy0+Y3UtPmNiX3dpZHRoOworICAgIGNvbnN0IGludCBoID0gbGMtPmN1LT5j Yl9oZWlnaHQ7CisgICAgY29uc3QgaW50IGluYyA9ICh3ID09IGgpID8gMCA6ICgodyA8IGgpID8g MSA6IDIpOworICAgIHJldHVybiBHRVRfQ0FCQUMoQ1VfU0JUX0hPUklaT05UQUxfRkxBRyArIGlu Yyk7Cit9CisKK2ludCBmZl92dmNfc2J0X3Bvc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7 CisgICAgcmV0dXJuIEdFVF9DQUJBQyhDVV9TQlRfUE9TX0ZMQUcpOworfQorCitpbnQgZmZfdnZj X2xmbnN0X2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBjb25zdCBpbnQgaW5jKQoreworICAgIGlm ICghR0VUX0NBQkFDKExGTlNUX0lEWCArIGluYykpCisgICAgICAgIHJldHVybiAwOworICAgIGlm ICghR0VUX0NBQkFDKExGTlNUX0lEWCArIDIpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1 cm4gMjsKK30KKworaW50IGZmX3Z2Y19tdHNfaWR4KFZWQ0xvY2FsQ29udGV4dCAqbGMpCit7Cisg ICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICBpZiAoIUdF VF9DQUJBQyhNVFNfSURYICsgaSkpCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAg cmV0dXJuIGk7Cit9CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdfZGVjb2RlKFZWQ0xv Y2FsQ29udGV4dCAqbGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY190ZXJtaW5hdGUoJmxjLT5l cC0+Y2MpOworfQorCitpbnQgZmZfdnZjX2VuZF9vZl90aWxlX29uZV9iaXQoVlZDTG9jYWxDb250 ZXh0ICpsYykKK3sKKyAgICByZXR1cm4gZ2V0X2NhYmFjX3Rlcm1pbmF0ZSgmbGMtPmVwLT5jYyk7 Cit9CisKK2ludCBmZl92dmNfZW5kX29mX3N1YnNldF9vbmVfYml0KFZWQ0xvY2FsQ29udGV4dCAq bGMpCit7CisgICAgcmV0dXJuIGdldF9jYWJhY190ZXJtaW5hdGUoJmxjLT5lcC0+Y2MpOworfQpk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmggYi9saWJhdmNvZGVjL3Z2Yy92 dmNfY2FiYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42ZjU2ZjYz ODUyCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy92dmMvdnZjX2NhYmFjLmgKQEAgLTAs MCArMSwxMjYgQEAKKy8qCisgKiBWVkMgQ0FCQUMgZGVjb2RlcgorICoKKyAqIENvcHlyaWdodCAo QykgMjAyMiBOdW8gTWkKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgor ICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKwor I2lmbmRlZiBBVkNPREVDX1ZWQ19DQUJBQ19ICisjZGVmaW5lIEFWQ09ERUNfVlZDX0NBQkFDX0gK KworI2luY2x1ZGUgInZ2Y19jdHUuaCIKKworaW50IGZmX3Z2Y19jYWJhY19pbml0KFZWQ0xvY2Fs Q29udGV4dCAqbGMsIGludCBjdGJfYWRkciwgaW50IGN0Yl9hZGRyX3gsIGludCBjdGJfYWRkcl95 KTsKKworLy9zYW8KK2ludCBmZl92dmNfc2FvX21lcmdlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fdHlwZV9pZHhfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpOworaW50IGZmX3Z2Y19zYW9fYmFuZF9wb3NpdGlvbl9kZWNvZGUoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX3Nhb19vZmZzZXRfYWJzX2RlY29kZShWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX29mZnNldF9zaWduX2RlY29kZShWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfc2FvX2VvX2NsYXNzX2RlY29kZShWVkNMb2NhbENvbnRleHQg KmxjKTsKKworLy9hbGYKK2ludCBmZl92dmNfYWxmX2N0Yl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGludCByeCwgaW50IHJ5LCBpbnQgY19pZHgpOworaW50IGZmX3Z2Y19hbGZfdXNlX2Fwc19m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hbGZfbHVtYV9wcmV2X2ZpbHRl cl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2FsZl9sdW1hX2ZpeGVkX2Zp bHRlcl9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2FsZl9jdGJfZmlsdGVy X2FsdF9pZHgoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGNfaWR4LCBpbnQgbnVtX2Nocm9tYV9m aWx0ZXJzKTsKK2ludCBmZl92dmNfYWxmX2N0Yl9jY19pZGMoVlZDTG9jYWxDb250ZXh0ICpsYywg aW50IHJ4LCBpbnQgcnksIGludCBpZHgsIGludCBjY19maWx0ZXJzX3NpZ25hbGxlZCk7CisKKy8v Y29kaW5nX3RyZWUKK2ludCBmZl92dmNfc3BsaXRfY3VfZmxhZyhWVkNMb2NhbENvbnRleHQqIGxj LCBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dpZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBj aF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOworVlZDU3BsaXRNb2RlIGZmX3Z2Y19z cGxpdF9tb2RlKFZWQ0xvY2FsQ29udGV4dCAqbGMsICBpbnQgeDAsIGludCB5MCwgaW50IGNiX3dp ZHRoLCBpbnQgY2JfaGVpZ2h0LAorICAgIGludCBjcXRfZGVwdGgsIGludCBtdHRfZGVwdGgsIGlu dCBjaF90eXBlLCBjb25zdCBWVkNBbGxvd2VkU3BsaXQgKmEpOworaW50IGZmX3Z2Y19ub25faW50 ZXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgeDAsIGludCB5MCwgaW50IGNoX3R5cGUp OworCisvL2NvZGluZyB1bml0CitpbnQgZmZfdnZjX3ByZWRfbW9kZV9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMsIGludCBpc19jaHJvbWEpOworaW50IGZmX3Z2Y19wcmVkX21vZGVfcGx0X2ZsYWco VlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2x1bWFfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfYmRwY21fbHVtYV9kaXJfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfYmRwY21fY2hyb21hX2Zs YWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2JkcGNtX2Nocm9tYV9k aXJfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3Vfc2tpcF9mbGFnKFZW Q0xvY2FsQ29udGV4dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmN1X3NraXBfZmxhZyk7CitpbnQgZmZf dnZjX3ByZWRfbW9kZV9pYmNfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgY2hfdHlwZSk7 CitpbnQgZmZfdnZjX2N1X2NvZGVkX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZf dnZjX2N1X3FwX2RlbHRhX2FicyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3Vf cXBfZGVsdGFfc2lnbl9mbGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19zYnRf ZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3F1YWRfZmxhZyhWVkNM b2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X2hvcml6b250YWxfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc2J0X3Bvc19mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMpOworCisvL2ludHJhCitpbnQgZmZfdnZjX2ludHJhX21pcF9mbGFnKFZWQ0xvY2FsQ29udGV4 dCAqbGMsIGNvbnN0IHVpbnQ4X3QgKmludHJhX21pcF9mbGFnKTsKK2ludCBmZl92dmNfaW50cmFf bWlwX3RyYW5zcG9zZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50 cmFfbWlwX21vZGUoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFf cmVmX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfc3VicGFydGl0 aW9uc19tb2RlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitlbnVtIElzcFR5cGUgZmZfdnZj X2lzcF9zcGxpdF90eXBlKFZWQ0xvY2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRp b25zX21vZGVfZmxhZyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbXBtX2ZsYWcoVlZDTG9jYWxD b250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2ludHJhX2x1bWFfbm90X3BsYW5hcl9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGludCBpbnRyYV9zdWJwYXJ0aXRpb25zX21vZGVfZmxhZyk7CitpbnQg ZmZfdnZjX2ludHJhX2x1bWFfbXBtX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92 dmNfaW50cmFfbHVtYV9tcG1fcmVtYWluZGVyKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZm X3Z2Y19jY2xtX21vZGVfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY2Ns bV9tb2RlX2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfaW50cmFfY2hyb21h X3ByZWRfbW9kZShWVkNMb2NhbENvbnRleHQgKmxjKTsKKworLy9pbnRlcgoraW50IGZmX3Z2Y19n ZW5lcmFsX21lcmdlX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdl X3N1YmJsb2NrX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21lcmdlX3N1 YmJsb2NrX2lkeChWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbWF4X251bV9zdWJibG9ja19tZXJn ZV9jYW5kKTsKK2ludCBmZl92dmNfcmVndWxhcl9tZXJnZV9mbGFnKFZWQ0xvY2FsQ29udGV4dCAq bGMsIGludCBjdV9za2lwX2ZsYWcpOworaW50IGZmX3Z2Y19tZXJnZV9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYyk7CitpbnQgZmZfdnZjX21tdmRfbWVyZ2VfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxj KTsKK2ludCBmZl92dmNfbW12ZF9jYW5kX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7Cit2b2lk IGZmX3Z2Y19tbXZkX29mZnNldF9jb2RpbmcoVlZDTG9jYWxDb250ZXh0ICpsYywgTXYgKm12ZF9v ZmZzZXQsIGludCBwaF9tbXZkX2Z1bGxwZWxfb25seV9mbGFnKTsKK2ludCBmZl92dmNfY2lpcF9m bGFnKFZWQ0xvY2FsQ29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19tZXJnZV9ncG1fcGFydGl0aW9u X2lkeChWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfbWVyZ2VfZ3BtX2lkeChWVkNM b2NhbENvbnRleHQgKmxjLCBpbnQgaWR4KTsKK1ByZWRGbGFnIGZmX3Z2Y19wcmVkX2ZsYWcoVlZD TG9jYWxDb250ZXh0ICpsYywgaW50IGlzX2IpOworaW50IGZmX3Z2Y19pbnRlcl9hZmZpbmVfZmxh ZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfY3VfYWZmaW5lX3R5cGVfZmxhZyhW VkNMb2NhbENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfc3ltX212ZF9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworaW50IGZmX3Z2Y19yZWZfaWR4X2x4KFZWQ0xvY2FsQ29udGV4dCAqbGMsIHVp bnQ4X3QgbmJfcmVmcyk7CitpbnQgZmZfdnZjX2Fic19tdmRfZ3JlYXRlcjBfZmxhZyhWVkNMb2Nh bENvbnRleHQgKmxjKTsKK2ludCBmZl92dmNfYWJzX212ZF9ncmVhdGVyMV9mbGFnKFZWQ0xvY2Fs Q29udGV4dCAqbGMpOworaW50IGZmX3Z2Y19hYnNfbXZkX21pbnVzMihWVkNMb2NhbENvbnRleHQg KmxjKTsKK2ludCBmZl92dmNfbXZkX3NpZ25fZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsKK2lu dCBmZl92dmNfbXZwX2x4X2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYyk7CitpbnQgZmZfdnZjX2Ft dnJfc2hpZnQoVlZDTG9jYWxDb250ZXh0ICpsYywgaW50IGludGVyX2FmZmluZV9mbGFnLCBQcmVk TW9kZSBwcmVkX21vZGUsIGludCBoYXNfYW12cl9mbGFnKTsKK2ludCBmZl92dmNfYmN3X2lkeChW VkNMb2NhbENvbnRleHQgKmxjLCBpbnQgbm9fYmFja3dhcmRfcHJlZF9mbGFnKTsKKworLy90cmFu c2Zvcm0KK2ludCBmZl92dmNfdHVfY2JfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjKTsK K2ludCBmZl92dmNfdHVfY3JfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRleHQgKmxjLCBpbnQgdHVf Y2JfY29kZWRfZmxhZyk7CitpbnQgZmZfdnZjX3R1X3lfY29kZWRfZmxhZyhWVkNMb2NhbENvbnRl eHQgKmxjKTsKK2ludCBmZl92dmNfY3VfY2hyb21hX3FwX29mZnNldF9mbGFnKFZWQ0xvY2FsQ29u dGV4dCAqbGMpOworaW50IGZmX3Z2Y19jdV9jaHJvbWFfcXBfb2Zmc2V0X2lkeChWVkNMb2NhbENv bnRleHQgKmxjKTsKK2ludCBmZl92dmNfdHVfam9pbnRfY2Jjcl9yZXNpZHVhbF9mbGFnKFZWQ0xv Y2FsQ29udGV4dCAqbGMsIGludCB0dV9jYl9jb2RlZF9mbGFnLCBpbnQgdHVfY3JfY29kZWRfZmxh Zyk7CitpbnQgZmZfdnZjX3RyYW5zZm9ybV9za2lwX2ZsYWcoVlZDTG9jYWxDb250ZXh0ICpsYywg aW50IGN0eCk7CitpbnQgZmZfdnZjX3Jlc2lkdWFsX2NvZGluZyhWVkNMb2NhbENvbnRleHQgKmxj LCBUcmFuc2Zvcm1CbG9jayAqdGIpOworaW50IGZmX3Z2Y19sZm5zdF9pZHgoVlZDTG9jYWxDb250 ZXh0ICpsYywgaW50IGluYyk7CitpbnQgZmZfdnZjX210c19pZHgoVlZDTG9jYWxDb250ZXh0ICps Yyk7CisKK2ludCBmZl92dmNfZW5kX29mX3NsaWNlX2ZsYWdfZGVjb2RlKFZWQ0xvY2FsQ29udGV4 dCAqbGMpOworaW50IGZmX3Z2Y19lbmRfb2ZfdGlsZV9vbmVfYml0KFZWQ0xvY2FsQ29udGV4dCAq bGMpOworaW50IGZmX3Z2Y19lbmRfb2Zfc3Vic2V0X29uZV9iaXQoVlZDTG9jYWxDb250ZXh0ICps Yyk7CisKKyNlbmRpZiAvL0FWQ09ERUNfVlZDX0NBQkFDX0gKZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvdnZjL3Z2Y19jdHUuaCBiL2xpYmF2Y29kZWMvdnZjL3Z2Y19jdHUuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi43ZGE5ZTE1YjQ1Ci0tLSAvZGV2L251bGwKKysrIGIv bGliYXZjb2RlYy92dmMvdnZjX2N0dS5oCkBAIC0wLDAgKzEsMzg3IEBACisvKgorICogVlZDIENU VShDb2RpbmcgVHJlZSBVbml0KSBwYXJzZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgTnVv IE1pCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpZm5kZWYgQVZD T0RFQ19WVkNfQ1RVX0gKKyNkZWZpbmUgQVZDT0RFQ19WVkNfQ1RVX0gKKworI2luY2x1ZGUgInZ2 Y2RlYy5oIgorCitlbnVtIFNBT1R5cGUgeworICAgIFNBT19OT1RfQVBQTElFRCA9IDAsCisgICAg U0FPX0JBTkQsCisgICAgU0FPX0VER0UsCisgICAgU0FPX0FQUExJRUQKK307CisKK2VudW0gU0FP RU9DbGFzcyB7CisgICAgU0FPX0VPX0hPUklaID0gMCwKKyAgICBTQU9fRU9fVkVSVCwKKyAgICBT QU9fRU9fMTM1RCwKKyAgICBTQU9fRU9fNDVELAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgTmVpZ2hi b3VyQXZhaWxhYmxlIHsKKyAgICBpbnQgY2FuZF9sZWZ0OworICAgIGludCBjYW5kX3VwOworICAg IGludCBjYW5kX3VwX2xlZnQ7CisgICAgaW50IGNhbmRfdXBfcmlnaHQ7CisgICAgaW50IGNhbmRf dXBfcmlnaHRfc2FwOworfSBOZWlnaGJvdXJBdmFpbGFibGU7CisKK2VudW0gSXNwVHlwZXsKKyAg ICBJU1BfTk9fU1BMSVQsCisgICAgSVNQX0hPUl9TUExJVCwKKyAgICBJU1BfVkVSX1NQTElULAor fTsKKwordHlwZWRlZiBlbnVtIFZWQ1NwbGl0TW9kZSB7CisgICAgU1BMSVRfTk9ORSwKKyAgICBT UExJVF9UVF9IT1IsCisgICAgU1BMSVRfQlRfSE9SLAorICAgIFNQTElUX1RUX1ZFUiwKKyAgICBT UExJVF9CVF9WRVIsCisgICAgU1BMSVRfUVQsCit9IFZWQ1NwbGl0TW9kZTsKKwordHlwZWRlZiBl bnVtIE10c0lkeCB7CisgICAgTVRTX0RDVDJfRENUMiwKKyAgICBNVFNfRFNUN19EU1Q3LAorICAg IE1UU19EU1Q3X0RDVDgsCisgICAgTVRTX0RDVDhfRFNUNywKKyAgICBNVFNfRENUOF9EQ1Q4LAor fSBNdHNJZHg7CisKK3R5cGVkZWYgc3RydWN0IFRyYW5zZm9ybUJsb2NrIHsKKyAgICB1aW50OF90 IGhhc19jb2VmZnM7CisgICAgdWludDhfdCBjX2lkeDsKKyAgICB1aW50OF90IHRzOyAgICAgICAg ICAgICAvLy88ICB0cmFuc2Zvcm1fc2tpcF9mbGFnCisgICAgaW50IHgwOworICAgIGludCB5MDsK KworICAgIGludCB0Yl93aWR0aDsKKyAgICBpbnQgdGJfaGVpZ2h0OworICAgIGludCBsb2cyX3Ri X3dpZHRoOworICAgIGludCBsb2cyX3RiX2hlaWdodDsKKworICAgIGludCBtYXhfc2Nhbl94Owor ICAgIGludCBtYXhfc2Nhbl95OworICAgIGludCBtaW5fc2Nhbl94OworICAgIGludCBtaW5fc2Nh bl95OworCisgICAgaW50IHFwOworICAgIGludCByZWN0X25vbl90c19mbGFnOworICAgIGludCBi ZF9zaGlmdDsKKyAgICBpbnQgYmRfb2Zmc2V0OworCisgICAgaW50ICpjb2VmZnM7Cit9IFRyYW5z Zm9ybUJsb2NrOworCit0eXBlZGVmIGVudW0gVlZDVHJlZVR5cGUgeworICAgIFNJTkdMRV9UUkVF LAorICAgIERVQUxfVFJFRV9MVU1BLAorICAgIERVQUxfVFJFRV9DSFJPTUEsCit9IFZWQ1RyZWVU eXBlOworCit0eXBlZGVmIHN0cnVjdCBUcmFuc2Zvcm1Vbml0IHsKKyAgICBpbnQgeDA7CisgICAg aW50IHkwOworICAgIGludCB3aWR0aDsKKyAgICBpbnQgaGVpZ2h0OworCisgICAgdWludDhfdCBq b2ludF9jYmNyX3Jlc2lkdWFsX2ZsYWc7ICAgICAgICAgICAgICAgICAgIC8vLzwgdHVfam9pbnRf Y2Jjcl9yZXNpZHVhbF9mbGFnCisKKyAgICB1aW50OF90IGNvZGVkX2ZsYWdbVlZDX01BWF9TQU1Q TEVfQVJSQVlTXTsgICAgICAgICAgLy8vPCB0dV95X2NvZGVkX2ZsYWcsIHR1X2NiX2NvZGVkX2Zs YWcsIHR1X2NyX2NvZGVkX2ZsYWcKKyAgICB1aW50OF90IG5iX3RiczsKKyAgICBUcmFuc2Zvcm1C bG9jayB0YnNbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsKK30gVHJhbnNmb3JtVW5pdDsKKwordHlw ZWRlZiBlbnVtIFByZWRNb2RlIHsKKyAgICBNT0RFX0lOVEVSLAorICAgIE1PREVfSU5UUkEsCisg ICAgTU9ERV9TS0lQLAorICAgIE1PREVfUExULAorICAgIE1PREVfSUJDLAorfSBQcmVkTW9kZTsK KwordHlwZWRlZiBzdHJ1Y3QgTXYgeworICAgIGludCB4OyAgLy8vPCBob3Jpem9udGFsIGNvbXBv bmVudCBvZiBtb3Rpb24gdmVjdG9yCisgICAgaW50IHk7ICAvLy88IHZlcnRpY2FsIGNvbXBvbmVu dCBvZiBtb3Rpb24gdmVjdG9yCit9IE12OworCit0eXBlZGVmIHN0cnVjdCBNdkZpZWxkIHsKKyAg ICBERUNMQVJFX0FMSUdORUQoNCwgTXYsIG12KVsyXTsgIC8vLzwgbXZMMCwgdnZMMQorICAgIGlu dDhfdCAgcmVmX2lkeFsyXTsgICAgICAgICAgICAgLy8vPCByZWZJZHhMMCwgcmVmSWR4TDEKKyAg ICB1aW50OF90IGhwZWxfaWZfaWR4OyAgICAgICAgICAgIC8vLzwgaHBlbElmSWR4CisgICAgdWlu dDhfdCBiY3dfaWR4OyAgICAgICAgICAgICAgICAvLy88IGJjd0lkeAorICAgIHVpbnQ4X3QgcHJl ZF9mbGFnOworICAgIHVpbnQ4X3QgY2lpcF9mbGFnOyAgICAgICAgICAgICAgLy8vPCBjaWlwX2Zs YWcKK30gTXZGaWVsZDsKKwordHlwZWRlZiBzdHJ1Y3QgRE1WUkluZm8geworICAgIERFQ0xBUkVf QUxJR05FRCg0LCBNdiwgbXYpWzJdOyAgLy8vPCBtdkwwLCB2dkwxCisgICAgdWludDhfdCBkbXZy X2VuYWJsZWQ7Cit9IERNVlJJbmZvOworCit0eXBlZGVmIGVudW0gTW90aW9uTW9kZWxJZGMgewor ICAgIE1PVElPTl9UUkFOU0xBVElPTiwKKyAgICBNT1RJT05fNF9QQVJBTVNfQUZGSU5FLAorICAg IE1PVElPTl82X1BBUkFNU19BRkZJTkUsCit9IE1vdGlvbk1vZGVsSWRjOworCit0eXBlZGVmIGVu dW0gUHJlZEZsYWcgeworICAgIFBGX0lOVFJBID0gMHgwLAorICAgIFBGX0wwICAgID0gMHgxLAor ICAgIFBGX0wxICAgID0gMHgyLAorICAgIFBGX0JJICAgID0gMHgzLAorfSBQcmVkRmxhZzsKKwor dHlwZWRlZiBlbnVtIEludHJhUHJlZE1vZGUgeworICAgIElOVFJBX1BMQU5BUiAgICA9IDAsCisg ICAgSU5UUkFfREMsCisgICAgSU5UUkFfSE9SWiAgICAgID0gMTgsCisgICAgSU5UUkFfRElBRyAg ICAgID0gMzQsCisgICAgSU5UUkFfVkVSVCAgICAgID0gNTAsCisgICAgSU5UUkFfVkRJQUcgICAg ID0gNjYsCisgICAgSU5UUkFfTFRfQ0NMTSAgID0gODEsCisgICAgSU5UUkFfTF9DQ0xNLAorICAg IElOVFJBX1RfQ0NMTQorfSBJbnRyYVByZWRNb2RlOworCit0eXBlZGVmIHN0cnVjdCBNb3Rpb25J bmZvIHsKKyAgICBNb3Rpb25Nb2RlbElkYyBtb3Rpb25fbW9kZWxfaWRjOyAvLy88IE1vdGlvbk1v ZGVsSWRjCisgICAgaW50OF90ICAgcmVmX2lkeFsyXTsgICAgICAgICAgICAgLy8vPCByZWZJZHhM MCwgcmVmSWR4TDEKKyAgICB1aW50OF90ICBocGVsX2lmX2lkeDsgICAgICAgICAgICAvLy88IGhw ZWxJZklkeAorICAgIHVpbnQ4X3QgIGJjd19pZHg7ICAgICAgICAgICAgICAgIC8vLzwgYmN3SWR4 CisgICAgUHJlZEZsYWcgcHJlZF9mbGFnOworCisgICAgTXYgbXZbMl1bTUFYX0NPTlRST0xfUE9J TlRTXTsKKworICAgIGludCBudW1fc2JfeCwgbnVtX3NiX3k7Cit9IE1vdGlvbkluZm87CisKK3R5 cGVkZWYgc3RydWN0IFByZWRpY3Rpb25Vbml0IHsKKyAgICB1aW50OF90IGdlbmVyYWxfbWVyZ2Vf ZmxhZzsKKyAgICB1aW50OF90IG1tdmRfbWVyZ2VfZmxhZzsKKyAgICAvL0ludGVyUHJlZElkYyBp bnRlcl9wcmVkX2lkYzsKKyAgICB1aW50OF90IGludGVyX2FmZmluZV9mbGFnOworCisgICAgLy9z dWJibG9jayBwcmVkaWN0CisgICAgdWludDhfdCBtZXJnZV9zdWJibG9ja19mbGFnOworCisgICAg dWludDhfdCBtZXJnZV9ncG1fZmxhZzsKKyAgICB1aW50OF90IGdwbV9wYXJ0aXRpb25faWR4Owor ICAgIE12RmllbGQgZ3BtX212WzJdOworCisgICAgaW50IHN5bV9tdmRfZmxhZzsKKworICAgIE1v dGlvbkluZm8gbWk7CisKKyAgICBpbnQxNl90IGRpZmZfbXZfeFsyXVtBRkZJTkVfTUlOX0JMT0NL X1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NLX1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQx Nl90IGRpZmZfbXZfeVsyXVtBRkZJTkVfTUlOX0JMT0NLX1NJWkUgKiBBRkZJTkVfTUlOX0JMT0NL X1NJWkVdOyAgIC8vLzwgZGlmZk12TFgKKyAgICBpbnQgY2JfcHJvZl9mbGFnWzJdOworfSBQcmVk aWN0aW9uVW5pdDsKKworc3RydWN0IENvZGluZ1VuaXQ7Cit0eXBlZGVmIHN0cnVjdCBDb2RpbmdV bml0IHsKKyAgICBBVkJ1ZmZlclJlZiAqYnVmOworCisgICAgVlZDVHJlZVR5cGUgdHJlZV90eXBl OworICAgIGludCB4MDsKKyAgICBpbnQgeTA7CisgICAgaW50IGNiX3dpZHRoOworICAgIGludCBj Yl9oZWlnaHQ7CisgICAgaW50IGNoX3R5cGU7CisgICAgaW50IGNxdF9kZXB0aDsKKworICAgIHVp bnQ4X3QgY29kZWRfZmxhZzsKKworICAgIHVpbnQ4X3Qgc2J0X2ZsYWc7CisgICAgdWludDhfdCBz YnRfaG9yaXpvbnRhbF9mbGFnOworICAgIHVpbnQ4X3Qgc2J0X3Bvc19mbGFnOworCisgICAgaW50 IGxmbnN0X2lkeDsKKyAgICBNdHNJZHggbXRzX2lkeDsKKworICAgIHVpbnQ4X3QgYWN0X2VuYWJs ZWRfZmxhZzsKKworICAgIHVpbnQ4X3QgaW50cmFfbHVtYV9yZWZfaWR4OyAgICAgICAgICAgICAg ICAgICAgIC8vLzwgSW50cmFMdW1hUmVmTGluZUlkeFtdW10KKyAgICB1aW50OF90IGludHJhX21p cF9mbGFnOyAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGludHJhX21pcF9mbGFnCisgICAg dWludDhfdCBza2lwX2ZsYWc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBjdV9z a2lwX2ZsYWc7CisKKyAgICAvL2ludGVyCisgICAgdWludDhfdCBjaWlwX2ZsYWc7CisKKyAgICAv LyBJbmZlcnJlZCBwYXJhbWV0ZXJzCisgICAgZW51bSBJc3BUeXBlIGlzcF9zcGxpdF90eXBlOyAg ICAgICAgICAgICAgICAgICAgLy8vPCBJbnRyYVN1YlBhcnRpdGlvbnNTcGxpdFR5cGUKKworICAg IGVudW0gUHJlZE1vZGUgcHJlZF9tb2RlOyAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgUHJl ZE1vZGUKKworICAgIGludCBudW1faW50cmFfc3VicGFydGl0aW9uczsKKworICAgIEludHJhUHJl ZE1vZGUgaW50cmFfcHJlZF9tb2RlX3k7ICAgICAgICAgICAgICAgIC8vLzwgSW50cmFQcmVkTW9k ZVkKKyAgICBJbnRyYVByZWRNb2RlIGludHJhX3ByZWRfbW9kZV9jOyAgICAgICAgICAgICAgICAv Ly88IEludHJhUHJlZE1vZGVDCisgICAgaW50IG1pcF9jaHJvbWFfZGlyZWN0X2ZsYWc7ICAgICAg ICAgICAgICAgICAgICAgLy8vPCBNaXBDaHJvbWFEaXJlY3RGbGFnCisKKyAgICBpbnQgYmRwY21f ZmxhZ1tWVkNfTUFYX1NBTVBMRV9BUlJBWVNdOyAgICAgICAgICAvLy88IEJkcGNtRmxhZworCisg ICAgaW50IGFwcGx5X2xmbnN0X2ZsYWdbVlZDX01BWF9TQU1QTEVfQVJSQVlTXTsgICAgLy8vPCBB cHBseUxmbnN0RmxhZ1tdCisKKyAgICBUcmFuc2Zvcm1Vbml0IHR1c1tNQVhfVFVTX0lOX0NVXTsK KyAgICBpbnQgbnVtX3R1czsKKworICAgIGludDhfdCBxcFs0XTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vLzwgUXBZLCBRcOKAskNiLCBRcOKAskNyLCBRcOKAskNiQ3IKKwor ICAgIFByZWRpY3Rpb25Vbml0IHB1OworCisgICAgc3RydWN0IENvZGluZ1VuaXQgKm5leHQ7Cit9 IENvZGluZ1VuaXQ7CisKK3N0cnVjdCBDVFUgeworICAgIENvZGluZ1VuaXQgKmN1czsKK307CisK K3R5cGVkZWYgc3RydWN0IFJlY29uc3RydWN0ZWRBcmVhIHsKKyAgICBpbnQgeDsKKyAgICBpbnQg eTsKKyAgICBpbnQgdzsKKyAgICBpbnQgaDsKK30gUmVjb25zdHJ1Y3RlZEFyZWE7CisKK3R5cGVk ZWYgc3RydWN0IFZWQ0NhYmFjU3RhdGUgeworICAgIHVpbnQxNl90IHN0YXRlWzJdOworICAgIHVp bnQ4X3QgIHNoaWZ0WzJdOworfSBWVkNDYWJhY1N0YXRlOworCisvLyBWVkNfQ09OVEVYVFMgbWF0 Y2hlZCB3aXRoIFNZTlRBWF9FTEVNRU5UX0xBU1QsIGl0J3MgY2hlY2tlZCBieSBjYWJhY19pbml0 X3N0YXRlLgorI2RlZmluZSBWVkNfQ09OVEVYVFMgMzc4Cit0eXBlZGVmIHN0cnVjdCBFbnRyeVBv aW50IHsKKyAgICBpbnQ4X3QgcXBfeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLzwgUXBZCisKKyAgICBWVkNDYWJhY1N0YXRlIGNhYmFjX3N0YXRlW1ZWQ19DT05URVhUU107 CisgICAgQ0FCQUNDb250ZXh0IGNjOworCisgICAgVlZDVGFzayAqcGFyc2VfdGFzazsKKyAgICBp bnQgY3R1X2FkZHJfbGFzdDsKKworICAgIHVpbnQ4X3QgaXNfZmlyc3RfcWc7CisgICAgTXZGaWVs ZCBobXZwW01BWF9OVU1fSE1WUF9DQU5EU107ICAgICAgICAgICAgICAgLy8vPCBIbXZwQ2FuZExp c3QKKyAgICBpbnQgICAgIG51bV9obXZwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv Ly88IE51bUhtdnBDYW5kCit9IEVudHJ5UG9pbnQ7CisKK3N0cnVjdCBWVkNMb2NhbENvbnRleHQg eworICAgIHVpbnQ4X3QgY3RiX2xlZnRfZmxhZzsKKyAgICB1aW50OF90IGN0Yl91cF9mbGFnOwor ICAgIHVpbnQ4X3QgY3RiX3VwX3JpZ2h0X2ZsYWc7CisgICAgdWludDhfdCBjdGJfdXBfbGVmdF9m bGFnOworICAgIGludCAgICAgZW5kX29mX3RpbGVzX3g7CisgICAgaW50ICAgICBlbmRfb2ZfdGls ZXNfeTsKKworICAgIC8qICs3IGlzIGZvciBzdWJwaXhlbCBpbnRlcnBvbGF0aW9uLCAqMiBmb3Ig aGlnaCBiaXQgZGVwdGhzICovCisgICAgREVDTEFSRV9BTElHTkVEKDMyLCB1aW50OF90LCBlZGdl X2VtdV9idWZmZXIpWyhNQVhfUEJfU0laRSArIDcpICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAq IDJdOworICAgIC8qIFRoZSBleHRlbmRlZCBzaXplIGJldHdlZW4gdGhlIG5ldyBlZGdlIGVtdSBi dWZmZXIgaXMgYWJ1c2VkIGJ5IFNBTyAqLworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhf dCwgZWRnZV9lbXVfYnVmZmVyMilbKE1BWF9QQl9TSVpFICsgNykgKiBFREdFX0VNVV9CVUZGRVJf U1RSSURFICogMl07CisgICAgREVDTEFSRV9BTElHTkVEKDMyLCBpbnQxNl90LCB0bXApW01BWF9Q Ql9TSVpFICogTUFYX1BCX1NJWkVdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgaW50MTZfdCwg dG1wMSlbTUFYX1BCX1NJWkUgKiBNQVhfUEJfU0laRV07CisgICAgREVDTEFSRV9BTElHTkVEKDMy LCB1aW50OF90LCBjaWlwX3RtcDEpW01BWF9QQl9TSVpFICogTUFYX1BCX1NJWkUgKiAyXTsKKyAg ICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGNpaXBfdG1wMilbTUFYX1BCX1NJWkUgKiBN QVhfUEJfU0laRSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwgdWludDhfdCwgc2FvX2J1 ZmZlcilbKE1BWF9DVFVfU0laRSArIDIgKiBTQU9fUEFERElOR19TSVpFKSAqIEVER0VfRU1VX0JV RkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3QsIGFsZl9i dWZmZXJfbHVtYSlbKE1BWF9DVFVfU0laRSArIDIgKiBBTEZfUEFERElOR19TSVpFKSAqIEVER0Vf RU1VX0JVRkZFUl9TVFJJREUgKiAyXTsKKyAgICBERUNMQVJFX0FMSUdORUQoMzIsIHVpbnQ4X3Qs IGFsZl9idWZmZXJfY2hyb21hKVsoTUFYX0NUVV9TSVpFICsgMiAqIEFMRl9QQURESU5HX1NJWkUp ICogRURHRV9FTVVfQlVGRkVSX1NUUklERSAqIDJdOworICAgIERFQ0xBUkVfQUxJR05FRCgzMiwg aW50MzJfdCwgYWxmX2dyYWRpZW50X3RtcClbQUxGX0dSQURJRU5UX1NJWkUgKiBBTEZfR1JBRElF TlRfU0laRSAqIEFMRl9OVU1fRElSXTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGludCBzYnRf bnVtX2ZvdXJ0aHNfdGIwOyAgICAgICAgICAgICAgICAvLy88IFNidE51bUZvdXJ0aHNUYjAKKwor ICAgICAgICB1aW50OF90IGlzX2N1X3FwX2RlbHRhX2NvZGVkOyAgICAgICAgICAgLy8vPCBJc0N1 UXBEZWx0YUNvZGVkCisgICAgICAgIGludCBjdV9xZ190b3BfbGVmdF94OyAgICAgICAgICAgICAg ICAgICAvLy88IEN1UWdUb3BMZWZ0WAorICAgICAgICBpbnQgY3VfcWdfdG9wX2xlZnRfeTsgICAg ICAgICAgICAgICAgICAgLy8vPCBDdVFnVG9wTGVmdFkKKyAgICAgICAgaW50IGlzX2N1X2Nocm9t YV9xcF9vZmZzZXRfY29kZWQ7ICAgICAgIC8vLzwgSXNDdUNocm9tYVFwT2Zmc2V0Q29kZWQKKyAg ICAgICAgaW50IGNocm9tYV9xcF9vZmZzZXRbM107ICAgICAgICAgICAgICAgIC8vLzwgQ3VRcE9m ZnNldENiLCBDdVFwT2Zmc2V0Q3IsIEN1UXBPZmZzZXRDYkNyCisKKyAgICAgICAgaW50IGluZmVy X3R1X2NiZl9sdW1hOyAgICAgICAgICAgICAgICAgIC8vLzwgSW5mZXJUdUNiZkx1bWEKKyAgICAg ICAgaW50IHByZXZfdHVfY2JmX3k7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgcHJldlR1Q2Jm WTsKKworICAgICAgICBpbnQgbGZuc3RfZGNfb25seTsgICAgICAgICAgICAgICAgICAgICAgLy8v PCBMZm5zdERjT25seQorICAgICAgICBpbnQgbGZuc3RfemVyb19vdXRfc2lnX2NvZWZmX2ZsYWc7 ICAgICAgLy8vPCBMZm5zdFplcm9PdXRTaWdDb2VmZkZsYWcKKworICAgICAgICBpbnQgbXRzX2Rj X29ubHk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBNdHNEY09ubHkKKyAgICAgICAgaW50 IG10c196ZXJvX291dF9zaWdfY29lZmZfZmxhZzsgICAgICAgIC8vLzwgTXRzWmVyb091dFNpZ0Nv ZWZmRmxhZzsKKyAgICB9IHBhcnNlOworCisgICAgc3RydWN0IHsKKyAgICAgICAgLy8gbG1jcyBj YWNoZSwgZm9yIHJlY29uIG9ubHkKKyAgICAgICAgaW50IGNocm9tYV9zY2FsZTsKKyAgICAgICAg aW50IHhfdnBkdTsKKyAgICAgICAgaW50IHlfdnBkdTsKKyAgICB9IGxtY3M7CisKKyAgICBDb2Rp bmdVbml0ICpjdTsKKyAgICBSZWNvbnN0cnVjdGVkQXJlYSByYXNbMl1bTUFYX1BBUlRTX0lOX0NU VV07CisgICAgaW50ICBudW1fcmFzWzJdOworCisgICAgTmVpZ2hib3VyQXZhaWxhYmxlIG5hOwor CisjZGVmaW5lIEJPVU5EQVJZX0xFRlRfU0xJQ0UgICAgICgxIDw8IDApCisjZGVmaW5lIEJPVU5E QVJZX0xFRlRfVElMRSAgICAgICgxIDw8IDEpCisjZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1NMSUNF ICAgICgxIDw8IDIpCisjZGVmaW5lIEJPVU5EQVJZX1VQUEVSX1RJTEUgICAgICgxIDw8IDMpCisg ICAgLyogcHJvcGVydGllcyBvZiB0aGUgYm91bmRhcnkgb2YgdGhlIGN1cnJlbnQgQ1RCIGZvciB0 aGUgcHVycG9zZXMKKyAgICAgKiBvZiB0aGUgZGVibG9ja2luZyBmaWx0ZXIgKi8KKyAgICBpbnQg Ym91bmRhcnlfZmxhZ3M7CisKKyAgICBTbGljZUNvbnRleHQgKnNjOworICAgIFZWQ0ZyYW1lQ29u dGV4dCAqZmM7CisgICAgRW50cnlQb2ludCAqZXA7CisgICAgaW50ICpjb2VmZnM7Cit9IDsKKwor dHlwZWRlZiBzdHJ1Y3QgVlZDQWxsb3dlZFNwbGl0IHsKKyAgICBpbnQgcXQ7CisgICAgaW50IGJ0 djsKKyAgICBpbnQgYnRoOworICAgIGludCB0dHY7CisgICAgaW50IHR0aDsKK30gVlZDQWxsb3dl ZFNwbGl0OworCitzdHJ1Y3QgU0FPUGFyYW1zIHsKKyAgICBpbnQgb2Zmc2V0X2Fic1szXVs0XTsg ICAgICAgICAgICAgICAvLy88IHNhb19vZmZzZXRfYWJzCisgICAgaW50IG9mZnNldF9zaWduWzNd WzRdOyAgICAgICAgICAgICAgLy8vPCBzYW9fb2Zmc2V0X3NpZ24KKworICAgIHVpbnQ4X3QgYmFu ZF9wb3NpdGlvblszXTsgICAgICAgICAgIC8vLzwgc2FvX2JhbmRfcG9zaXRpb24KKworICAgIGlu dCBlb19jbGFzc1szXTsgICAgICAgICAgICAgICAgICAgIC8vLzwgc2FvX2VvX2NsYXNzCisKKyAg ICBpbnQxNl90IG9mZnNldF92YWxbM11bNV07ICAgICAgICAgICAvLy88U2FvT2Zmc2V0VmFsCisK KyAgICB1aW50OF90IHR5cGVfaWR4WzNdOyAgICAgICAgICAgICAgICAvLy88IHNhb190eXBlX2lk eAorfTsKKworc3RydWN0IEFMRlBhcmFtcyB7CisgICAgdWludDhfdCBjdGJfZmxhZ1szXTsgICAg ICAgICAgICAgICAgLy8vPCBhbGZfY3RiX2ZsYWdbXQorICAgIHVpbnQ4X3QgY3RiX2ZpbHRfc2V0 X2lkeF95OyAgICAgICAgIC8vLzwgQWxmQ3RiRmlsdFNldElkeFkKKyAgICB1aW50OF90IGFsZl9j dGJfZmlsdGVyX2FsdF9pZHhbMl07ICAvLy88IGFsZl9jdGJfZmlsdGVyX2FsdF9pZHhbXQorICAg IHVpbnQ4X3QgY3RiX2NjX2lkY1syXTsgICAgICAgICAgICAgIC8vLzwgYWxmX2N0Yl9jY19jYl9p ZGMsIGFsZl9jdGJfY2NfY3JfaWRjCisKKyAgICB1aW50OF90IGFwcGxpZWRbM107Cit9OworCisj ZW5kaWYgLy8gQVZDT0RFQ19WVkNfQ1RVX0gKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZjL3Z2 Y2RlYy5oIGIvbGliYXZjb2RlYy92dmMvdnZjZGVjLmgKaW5kZXggMmIwMWFlOTRmZi4uOWRhY2Q4 MWRkMyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy92dmMvdnZjZGVjLmgKKysrIGIvbGliYXZjb2Rl Yy92dmMvdnZjZGVjLmgKQEAgLTE2Nyw2ICsxNjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBWVkNGcmFt ZSB7CiAKIHN0cnVjdCBTbGljZUNvbnRleHQgewogICAgIGludCBzbGljZV9pZHg7CisgICAgVlZD U0ggc2g7CiAgICAgRW50cnlQb2ludCAqZXBzOwogICAgIGludCBuYl9lcHM7CiB9OwpAQCAtMTc5 LDYgKzE4MCw3IEBAIHN0cnVjdCBWVkNGcmFtZUNvbnRleHQgewogCiAgICAgQVZGcmFtZSAqZnJh bWU7CiAgICAgQVZGcmFtZSAqb3V0cHV0X2ZyYW1lOworICAgIFZWQ0ZyYW1lUGFyYW1TZXRzIHBz OwogCiAgICAgU2xpY2VDb250ZXh0ICAqKnNsaWNlczsKICAgICBpbnQgbmJfc2xpY2VzOwpAQCAt MjAzLDYgKzIwNSw5IEBAIHN0cnVjdCBWVkNGcmFtZUNvbnRleHQgewogICAgIHN0cnVjdCB7CiAg ICAgICAgIGludDE2X3QgKnNsaWNlX2lkeDsKIAorICAgICAgICBEQlBhcmFtcyAgKmRlYmxvY2s7 CisgICAgICAgIFNBT1BhcmFtcyAqc2FvOworICAgICAgICBBTEZQYXJhbXMgKmFsZjsKICAgICAg ICAgRE1WUkluZm8gICpkbXZyOwogCiAgICAgICAgIGludCAgICAgKmNiX3Bvc194WzJdOyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgQ2JQb3NYW11bXVtdCi0tIAoyLjI1LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K