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 A9B0845AB4 for ; Fri, 14 Apr 2023 19:15:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 80CF668BF17; Fri, 14 Apr 2023 22:15:05 +0300 (EEST) Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8C24368BF02 for ; Fri, 14 Apr 2023 22:14:58 +0300 (EEST) Received: by mail-pl1-f171.google.com with SMTP id p17so8121636pla.3 for ; Fri, 14 Apr 2023 12:14:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681499696; x=1684091696; 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=vj2ku/woBnfMxSU3B43EggFRA7L+SKsn9bAEaR6b4QU=; b=FQMOuXGidUvQEu6FgdXNGE4ypWVO60xQgzu860DSoaZVOn6QK6RYKn+Cc4YBeglbtR iqADS29vUg5AQlmhseA3lmXp3ey7IzxoGTk4C8qZbNrsHZz/smCBaLQoZTNhbIYYdFRl Rm+eHK3Yzkovz5HUgusZ5UXOxjMNrDbZGM9NZdRWMhtlsF0HTZ2a99kC6IsXsIBZAYOx KyoeJFpCqAAx2wdCBNzutzJ2gVOSXDxQ19cCQVb21arfoXMjWiuxi4zKcAJpnokGZf0H 31L4IvHV0F4IbkcqrwY6QW2Apdx9IrkyAYbaW/WznE3bJL2LxuCen57GZOIi+2mjO4+5 Xv2w== X-Gm-Message-State: AAQBX9eNd9Ov/A7H34dPGJxO4ZsMX4vf5164qgzCmX7o0o36rTO2HZmI jxTAsu2jo1Yc4u3KXdiykWCjNOXfxyY= X-Google-Smtp-Source: AKy350aWByI5ESiMhWgygU+ZL9oAhlJzdD8g4kHooD12aol0I9+WyRy3SBITIFHl/IOmsQ7x9weWoQ== X-Received: by 2002:a17:902:ce81:b0:19a:b754:4053 with SMTP id f1-20020a170902ce8100b0019ab7544053mr5026985plg.26.1681499695358; Fri, 14 Apr 2023 12:14:55 -0700 (PDT) Received: from localhost (76-14-89-2.sf-cable.astound.net. [76.14.89.2]) by smtp.gmail.com with ESMTPSA id c5-20020a170902848500b001a0742b0806sm3374510plo.108.2023.04.14.12.14.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Apr 2023 12:14:54 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Fri, 14 Apr 2023 12:14:48 -0700 From: pal@sandflow.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 14 Apr 2023 12:14:42 -0700 Message-Id: <20230414191443.32606-2-pal@sandflow.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230414191443.32606-1-pal@sandflow.com> References: <20230414191443.32606-1-pal@sandflow.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 2/3] avcodec/jpeg2000dec: add support for HTJ2K block decoding 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: caleb 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: RnJvbTogY2FsZWIgPGV0ZW1lc2ljYWxlYkBnbWFpbC5jb20+CgotLS0KIGxpYmF2Y29kZWMvTWFr ZWZpbGUgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9qcGVnMjAwMC5oICAgICAgfCAgICA1 ICstCiBsaWJhdmNvZGVjL2pwZWcyMDAwZGVjLmMgICB8ICAgNjYgKy0KIGxpYmF2Y29kZWMvanBl ZzIwMDBodGRlYy5jIHwgMTQ1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGxpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oIHwgICAzNCArCiA1IGZpbGVzIGNoYW5nZWQsIDE1 MzkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2pw ZWcyMDAwaHRkZWMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNv ZGVjL01ha2VmaWxlCmluZGV4IGFhMTBmYmZjZjguLjA1M2MwNzRmMmYgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtNDY5LDcgKzQ2 OSw3IEBAIE9CSlMtJChDT05GSUdfSkFDT1NVQl9ERUNPREVSKSAgICAgICAgICs9IGphY29zdWJk ZWMubyBhc3MubwogT0JKUy0kKENPTkZJR19KUEVHMjAwMF9FTkNPREVSKSAgICAgICAgKz0gajJr ZW5jLm8gbXFjZW5jLm8gbXFjLm8ganBlZzIwMDAubyBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3dC5vCiBPQkpTLSQoQ09ORklHX0pQRUcyMDAw X0RFQ09ERVIpICAgICAgICArPSBqcGVnMjAwMGRlYy5vIGpwZWcyMDAwLm8ganBlZzIwMDBkc3Au byBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3 dC5vIG1xY2RlYy5vIG1xYy5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqcGVnMjAwMGR3dC5vIG1xY2RlYy5vIG1xYy5vIGpwZWcyMDAwaHRkZWMubwogT0JKUy0k KENPTkZJR19KUEVHTFNfREVDT0RFUikgICAgICAgICAgKz0ganBlZ2xzZGVjLm8ganBlZ2xzLm8K IE9CSlMtJChDT05GSUdfSlBFR0xTX0VOQ09ERVIpICAgICAgICAgICs9IGpwZWdsc2VuYy5vIGpw ZWdscy5vCiBPQkpTLSQoQ09ORklHX0pWX0RFQ09ERVIpICAgICAgICAgICAgICArPSBqdmRlYy5v CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2pwZWcyMDAwLmggYi9saWJhdmNvZGVjL2pwZWcyMDAw LmgKaW5kZXggZTVlY2I0Y2JmOS4uZDAwNGMwOGYxMCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9q cGVnMjAwMC5oCisrKyBiL2xpYmF2Y29kZWMvanBlZzIwMDAuaApAQCAtMTExLDcgKzExMSw3IEBA IGVudW0gSnBlZzIwMDBRdWFudHN0eSB7IC8vIHF1YW50aXphdGlvbiBzdHlsZQogI2RlZmluZSBK UEVHMjAwMF9DU1RZX1NPUCAgICAgICAweDAyIC8vIFNPUCBtYXJrZXIgcHJlc2VudAogI2RlZmlu ZSBKUEVHMjAwMF9DU1RZX0VQSCAgICAgICAweDA0IC8vIEVQSCBtYXJrZXIgcHJlc2VudAogI2Rl ZmluZSBKUEVHMjAwMF9DVFNZX0hUSjJLX0YgICAweDQwIC8vIE9ubHkgSFQgY29kZS1ibG9ja3Mg KFJlYy4gSVRVLVQgVC44MTQgfCBJU08vSUVDIDE1NDQ0LTE1KSBhcmUgcHJlc2VudAotI2RlZmlu ZSBKUEVHMjAwMF9DVFNZX0hUSjJLX00gICAweEMwIC8vIEhUIGNvZGUgYmxvY2tzIChSZWMuIElU VS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNSkgY2FuIGJlIHByZXNlbnQKKyNkZWZpbmUgSlBF RzIwMDBfQ1RTWV9IVEoyS19NICAgMHhDMCAvLyBIVCBjb2RlLWJsb2NrcyAoUmVjLiBJVFUtVCBU LjgxNCB8IElTTy9JRUMgMTU0NDQtMTUpIGNhbiBiZSBwcmVzZW50CiAKIC8vIFByb2dyZXNzaW9u IG9yZGVycwogI2RlZmluZSBKUEVHMjAwMF9QR09EX0xSQ1AgICAgICAweDAwICAvLyBMYXllci1y ZXNvbHV0aW9uIGxldmVsLWNvbXBvbmVudC1wb3NpdGlvbiBwcm9ncmVzc2lvbgpAQCAtMTg5LDYg KzE4OSw5IEBAIHR5cGVkZWYgc3RydWN0IEpwZWcyMDAwQ2JsayB7CiAgICAgSnBlZzIwMDBQYXNz ICpwYXNzZXM7CiAgICAgSnBlZzIwMDBMYXllciAqbGF5ZXJzOwogICAgIGludCBjb29yZFsyXVsy XTsgLy8gYm9yZGVyIGNvb3JkaW5hdGVzIHt7eDAsIHgxfSwge3kwLCB5MX19CisgICAgLyogc3Bl Y2lmaWMgdG8gSFQgY29kZS1ibG9ja3MgKi8KKyAgICBpbnQgemJwOworICAgIGludCBwYXNzX2xl bmd0aHNbMl07CiB9IEpwZWcyMDAwQ2JsazsgLy8gY29kZSBibG9jawogCiB0eXBlZGVmIHN0cnVj dCBKcGVnMjAwMFByZWMgewpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jIGIv bGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jCmluZGV4IDU5OTRlMjlhZTMuLjBjNWM3MjNmZGYgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuYworKysgYi9saWJhdmNvZGVjL2pwZWcy MDAwZGVjLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJqcGVnMjAwMGRzcC5oIgogI2lu Y2x1ZGUgInByb2ZpbGVzLmgiCiAjaW5jbHVkZSAianBlZzIwMDBkZWMuaCIKKyNpbmNsdWRlICJq cGVnMjAwMGh0ZGVjLmgiCiAKICNkZWZpbmUgSlAyX1NJR19UWVBFICAgIDB4NkE1MDIwMjAKICNk ZWZpbmUgSlAyX1NJR19WQUxVRSAgIDB4MEQwQTg3MEEKQEAgLTQzNiwxMiArNDM3LDEyIEBAIHN0 YXRpYyBpbnQgZ2V0X2NveChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENvZGlu Z1N0eWxlICpjKQogICAgIGMtPmNibGtfc3R5bGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJnMt PmcpOwogICAgIGlmIChjLT5jYmxrX3N0eWxlICE9IDApIHsgLy8gY2JsayBzdHlsZQogICAgICAg ICBpZiAoYy0+Y2Jsa19zdHlsZSAmIEpQRUcyMDAwX0NUU1lfSFRKMktfTSB8fCBjLT5jYmxrX3N0 eWxlICYgSlBFRzIwMDBfQ1RTWV9IVEoyS19GKSB7Ci0gICAgICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19FUlJPUiwgIlN1cHBvcnQgZm9yIEhpZ2ggdGhyb3VnaHB1dCBKUEVHIDIwMDAg aXMgbm90IHlldCBhdmFpbGFibGVcbiIpOwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFU Q0hXRUxDT01FOworICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LEFWX0xPR19UUkFDRSwiSGln aCBUaHJvdWdocHV0IGpwZWcgMjAwMCBjb2Rlc3RyZWFtLlxuIik7CisgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiZXh0cmEgY2Js ayBzdHlsZXMgJVhcbiIsIGMtPmNibGtfc3R5bGUpOworICAgICAgICAgICAgaWYgKGMtPmNibGtf c3R5bGUgJiBKUEVHMjAwMF9DQkxLX0JZUEFTUykKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+ YXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiU2VsZWN0aXZlIGFyaXRobWV0aWMgY29kaW5nIGJ5cGFz c1xuIik7CiAgICAgICAgIH0KLSAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklO RywgImV4dHJhIGNibGsgc3R5bGVzICVYXG4iLCBjLT5jYmxrX3N0eWxlKTsKLSAgICAgICAgaWYg KGMtPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DQkxLX0JZUEFTUykKLSAgICAgICAgICAgIGF2X2xv ZyhzLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcsICJTZWxlY3RpdmUgYXJpdGhtZXRpYyBjb2Rpbmcg YnlwYXNzXG4iKTsKICAgICB9CiAgICAgYy0+dHJhbnNmb3JtID0gYnl0ZXN0cmVhbTJfZ2V0X2J5 dGV1KCZzLT5nKTsgLy8gRFdUIHRyYW5zZm9ybWF0aW9uIHR5cGUKICAgICAvKiBzZXQgaW50ZWdl ciA5LzcgRFdUIGluIGNhc2Ugb2YgQklURVhBQ1QgZmxhZyAqLwpAQCAtMTA2NiwxMyArMTA2Nywx NSBAQCBzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9wYWNrZXQoSnBlZzIwMDBEZWNvZGVyQ29u dGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxlLAogICAgICAgICAgICAgICAgIHJldHVybiBpbmNs OwogCiAgICAgICAgICAgICBpZiAoIWNibGstPm5wYXNzZXMpIHsKLSAgICAgICAgICAgICAgICBp bnQgdiA9IGV4cG5bYmFuZG5vXSArIG51bWdiaXRzIC0gMSAtCi0gICAgICAgICAgICAgICAgICAg ICAgICB0YWdfdHJlZV9kZWNvZGUocywgcHJlYy0+emVyb2JpdHMgKyBjYmxrbm8sIDEwMCk7Cisg ICAgICAgICAgICAgICAgaW50IHpicCA9IHRhZ190cmVlX2RlY29kZShzLCBwcmVjLT56ZXJvYml0 cyArIGNibGtubywgMTAwKTsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IGV4cG5bYmFuZG5vXSAr IG51bWdiaXRzIC0gMSAtIHpicDsKKwogICAgICAgICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID4g MzApIHsKICAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1Is CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uemVyb2JpdHMgJWQgaW52YWxpZCBvciB1 bnN1cHBvcnRlZFxuIiwgdik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lO VkFMSUREQVRBOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYmxrLT56YnAg PSB6YnA7CiAgICAgICAgICAgICAgICAgY2Jsay0+bm9uemVyb2JpdHMgPSB2OwogICAgICAgICAg ICAgfQogICAgICAgICAgICAgaWYgKChuZXdwYXNzZXMgPSBnZXRucGFzc2VzKHMpKSA8IDApCkBA IC0xMTEzLDggKzExMTYsMjMgQEAgc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfcGFja2V0KEpw ZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZSAqdGlsZSwKICAgICAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgocmV0 ID0gZ2V0X2JpdHMocywgYXZfbG9nMihuZXdwYXNzZXMxKSArIGNibGstPmxibG9jaykpIDwgMCkK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgICAgICBpZiAobmV3 cGFzc2VzID4gMSAmJiAoY29kc3R5LT5jYmxrX3N0eWxlICYgSlBFRzIwMDBfQ1RTWV9IVEoyS19G KSkgeworICAgICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBwYXNzIGxlbmd0aHMgZm9yIGVh Y2ggcGFzcworICAgICAgICAgICAgICAgICAgICBpbnQgaHJlZl9wYXNzZXMgPSAgKGNibGstPm5w YXNzZXMgKyBuZXdwYXNzZXMgLSAxKSAlIDM7CisgICAgICAgICAgICAgICAgICAgIGludCBlYiA9 IGF2X2xvZzIobmV3cGFzc2VzIC0gaHJlZl9wYXNzZXMpOworICAgICAgICAgICAgICAgICAgICBp bnQgZXh0cmFfYml0ID0gbmV3cGFzc2VzID4gMiA/IDEgOiAwOworICAgICAgICAgICAgICAgICAg ICBpZiAoKHJldCA9IGdldF9iaXRzKHMsIGxsZW4gKyBlYiArIDMpKSA8IDApCisgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNz X2xlbmd0aHNbMF0gPSByZXQ7CisgICAgICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZ2V0X2Jp dHMocywgbGxlbiArIDMgKyBleHRyYV9iaXQpKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xlbmd0aHNbMV0g PSByZXQ7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGNibGstPnBhc3NfbGVuZ3Roc1swXSAr IGNibGstPnBhc3NfbGVuZ3Roc1sxXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICBpZiAoKHJldCA9IGdldF9iaXRzKHMsIGF2X2xvZzIobmV3cGFzc2VzMSkg KyBjYmxrLT5sYmxvY2spKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0 OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xlbmd0aHNbMF0gPSByZXQ7CisgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChyZXQgPiBjYmxrLT5kYXRhX2FsbG9j YXRlZCkgewogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBGRk1BWCgyKmNi bGstPmRhdGFfYWxsb2NhdGVkLCByZXQpOwogICAgICAgICAgICAgICAgICAgICB2b2lkICpuZXcg PSBhdl9yZWFsbG9jKGNibGstPmRhdGEsIG5ld19zaXplKTsKQEAgLTE4NjMsOSArMTg4MSwxMiBA QCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKGNvbnN0IEpwZWcyMDAwRGVjb2Rl ckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZQogCiAgICAgLyogTG9vcCBvbiB0aWxlIGNvbXBvbmVu dHMgKi8KICAgICBmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHMtPm5jb21wb25lbnRzOyBjb21w bm8rKykgewotICAgICAgICBKcGVnMjAwMENvbXBvbmVudCAqY29tcCAgICAgPSB0aWxlLT5jb21w ICsgY29tcG5vOwotICAgICAgICBKcGVnMjAwMENvZGluZ1N0eWxlICpjb2RzdHkgPSB0aWxlLT5j b2RzdHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29tcG9uZW50ICpjb21wICAgICAgPSB0 aWxlLT5jb21wICAgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmNvZHN0 eSAgPSB0aWxlLT5jb2RzdHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwUXVhbnRTdHlsZSAq cXVhbnRzdHkgPSB0aWxlLT5xbnRzdHkgKyBjb21wbm87CisKICAgICAgICAgaW50IGNvZGVkID0g MDsKKyAgICAgICAgaW50IHN1YmJhbmRubyA9IDA7CiAKICAgICAgICAgdDEuc3RyaWRlID0gKDE8 PGNvZHN0eS0+bG9nMl9jYmxrX3dpZHRoKSArIDI7CiAKQEAgLTE4NzMsNyArMTg5NCw3IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCB0aWxlX2NvZGVibG9ja3MoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29u dGV4dCAqcywgSnBlZzIwMDBUaWxlCiAgICAgICAgIGZvciAocmVzbGV2ZWxubyA9IDA7IHJlc2xl dmVsbm8gPCBjb2RzdHktPm5yZXNsZXZlbHMyZGVjb2RlOyByZXNsZXZlbG5vKyspIHsKICAgICAg ICAgICAgIEpwZWcyMDAwUmVzTGV2ZWwgKnJsZXZlbCA9IGNvbXAtPnJlc2xldmVsICsgcmVzbGV2 ZWxubzsKICAgICAgICAgICAgIC8qIExvb3Agb24gYmFuZHMgKi8KLSAgICAgICAgICAgIGZvciAo YmFuZG5vID0gMDsgYmFuZG5vIDwgcmxldmVsLT5uYmFuZHM7IGJhbmRubysrKSB7CisgICAgICAg ICAgICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJsZXZlbC0+bmJhbmRzOyBiYW5kbm8rKywg c3ViYmFuZG5vKyspIHsKICAgICAgICAgICAgICAgICBpbnQgbmJfcHJlY2luY3RzLCBwcmVjbm87 CiAgICAgICAgICAgICAgICAgSnBlZzIwMDBCYW5kICpiYW5kID0gcmxldmVsLT5iYW5kICsgYmFu ZG5vOwogICAgICAgICAgICAgICAgIGludCBjYmxrbm8gPSAwLCBiYW5kcG9zOwpAQCAtMTg5Mywx MiArMTkxNCwyMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKGNvbnN0IEpw ZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZQogICAgICAgICAgICAgICAgICAg ICBmb3IgKGNibGtubyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsa25vIDwgcHJl Yy0+bmJfY29kZWJsb2Nrc193aWR0aCAqIHByZWMtPm5iX2NvZGVibG9ja3NfaGVpZ2h0OwogICAg ICAgICAgICAgICAgICAgICAgICAgIGNibGtubysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCB5LCByZXQ7CisgICAg ICAgICAgICAgICAgICAgICAgICAvKiBTZWUgUmVjLiBJVFUtVCBULjgwMCwgRXF1YXRpb24gRS0y ICovCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFncCA9IHF1YW50c3R5LT5leHBuW3N1 YmJhbmRub10gKyBxdWFudHN0eS0+bmd1YXJkYml0cyAtIDE7CisKICAgICAgICAgICAgICAgICAg ICAgICAgIEpwZWcyMDAwQ2JsayAqY2JsayA9IHByZWMtPmNibGsgKyBjYmxrbm87Ci0gICAgICAg ICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gZGVjb2RlX2NibGsocywgY29kc3R5LCAmdDEsIGNi bGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFswXVsx XSAtIGNibGstPmNvb3JkWzBdWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2Jsay0+Y29vcmRbMV1bMV0gLSBjYmxrLT5jb29yZFsxXVswXSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJhbmRwb3MsIGNvbXAtPnJvaV9zaGlmdCk7CisKKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIChjb2RzdHktPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DVFNZ X0hUSjJLX0YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZmZfanBlZzIwMDBf ZGVjb2RlX2h0ajJrKHMsIGNvZHN0eSwgJnQxLCBjYmxrLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFswXVsxXSAt IGNibGstPmNvb3JkWzBdWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5jb29yZFsxXVsxXSAtIGNibGstPmNvb3JkWzFd WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYWdwLCBjb21wLT5yb2lfc2hpZnQpOworICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGRlY29kZV9jYmxrKHMsIGNv ZHN0eSwgJnQxLCBjYmxrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNibGstPmNvb3JkWzBdWzFdIC0gY2Jsay0+Y29vcmRbMF1bMF0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+Y29vcmRbMV1bMV0gLSBj YmxrLT5jb29yZFsxXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiYW5kcG9zLCBjb21wLT5yb2lfc2hpZnQpOworCiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAocmV0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVkID0gMTsKICAg ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvanBlZzIw MDBodGRlYy5jIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uNTFjZDk2ZTBmMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2 Y29kZWMvanBlZzIwMDBodGRlYy5jCkBAIC0wLDAgKzEsMTQ1MSBAQAorLyoKKyAqIENvcHlyaWdo dCAoYykgMjAyMiBDYWxlYiBFdGVtZXNpIDxldGVtZXNpY2FsZWJAZ21haWwuY29tPgorICoKKyAq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisvKgorICogQ29weXJpZ2h0IDIwMTkg LSAyMDIxLCBPc2FtdSBXYXRhbmFiZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisg KiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCisgKiAgICBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UsCisgKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCisgKiAgICBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRo ZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAqICAgIHNwZWNpZmljIHByaW9y IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTIOKAnEFTIElT4oCdIEFORAor ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj aW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvY29t bW9uLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAianBlZzIw MDBodGRlYy5oIgorI2luY2x1ZGUgImpwZWcyMDAwLmgiCisjaW5jbHVkZSAianBlZzIwMDBkZWMu aCIKKworI2RlZmluZSBKMktfUTEgMAorI2RlZmluZSBKMktfUTIgMQorCisjZGVmaW5lIEhUX1NI SUZUX1NJR01BIDAKKyNkZWZpbmUgSFRfU0hJRlRfU0NBTiA0CisjZGVmaW5lIEhUX1NISUZUX1JF RiAzCisjZGVmaW5lIEhUX1NISUZUX1JFRl9JTkQgMgorCisvKiBTZWUgUmVjLiBJVFUtVCBULjgw MCwgVGFibGUgMiAqLworY29uc3Qgc3RhdGljIHVpbnQ4X3QgbWVsX2VbMTNdID0geyAwLCAwLCAw LCAxLCAxLCAxLCAyLCAyLCAyLCAzLCAzLCA0LCA1IH07CisKK3N0YXRpYyBjb25zdCB1aW50MTZf dCBkZWNfY3h0X3ZsY190YWJsZTFbMTAyNF07CitzdGF0aWMgY29uc3QgdWludDE2X3QgZGVjX2N4 dF92bGNfdGFibGUwWzEwMjRdOworCit0eXBlZGVmIHN0cnVjdCBTdGF0ZVZhcnMgeworICAgIGlu dDMyX3QgcG9zOworICAgIHVpbnQzMl90IGJpdHM7CisgICAgdWludDMyX3QgdG1wOworICAgIHVp bnQzMl90IGxhc3Q7CisgICAgdWludDhfdCBiaXRzX2xlZnQ7CisgICAgdWludDY0X3QgYml0X2J1 ZjsKK30gU3RhdGVWYXJzOworCit0eXBlZGVmIHN0cnVjdCBNZWxEZWNvZGVyU3RhdGUgeworICAg IHVpbnQ4X3QgazsKKyAgICB1aW50OF90IHJ1bjsKKyAgICB1aW50OF90IG9uZTsKK30gTWVsRGVj b2RlclN0YXRlOworCisvKioKKyAqICBHaXZlbiBhIHByZWNvbXB1dGVkIGMsIGNoZWNrcyB3aGV0 aGVyIG4gJSBkID09IDAuIGMgaXMgcHJlY29tcHV0ZWQgZnJvbSBkCisgKiAgdXNpbmcgcHJlY29t cHV0ZV9jKCkuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50MzJfdCBpc19kaXZp c2libGUodWludDMyX3QgbiwgdWludDY0X3QgYykKK3sKKyAgICByZXR1cm4gbiAqIGMgPD0gYyAt IDE7Cit9CisKKy8qKgorICogIFByZWNvbXB1dGUgdGhlIG51bWJlciBjIHVzZWQgYnkgaXNfZGl2 aXNpYmxlKCkuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBwcmVjb21w dXRlX2ModWludDMyX3QgZCkKK3sKKyAgICByZXR1cm4gMSArICgweGZmZmZmZmZmZmZmZmZmZmZ1 bGwgLyBkKTsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF96ZXJvKFN0YXRlVmFycyAq cykKK3sKKyAgICBzLT5iaXRzX2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgICA9IDA7CisgICAg cy0+dG1wICAgICAgID0gMDsKKyAgICBzLT5iaXRzICAgICAgPSAwOworICAgIHMtPnBvcyAgICAg ICA9IDA7CisgICAgcy0+bGFzdCAgICAgID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBf aW5pdF9tZWwoU3RhdGVWYXJzICpzLCB1aW50MzJfdCBQY3VwKQoreworICAgIGpwZWcyMDAwX2lu aXRfemVybyhzKTsKKyAgICBzLT5wb3MgPSBQY3VwOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAw MF9pbml0X21hZ19yZWYoU3RhdGVWYXJzICpzLCB1aW50MzJfdCBMcmVmKQoreworICAgIHMtPnBv cyAgICAgICA9IExyZWYgLSAyOworICAgIHMtPmJpdHMgICAgICA9IDA7CisgICAgcy0+bGFzdCAg ICAgID0gMHhGRjsKKyAgICBzLT50bXAgICAgICAgPSAwOworICAgIHMtPmJpdHNfbGVmdCA9IDA7 CisgICAgcy0+Yml0X2J1ZiAgID0gMDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF9t ZWxfZGVjb2RlcihNZWxEZWNvZGVyU3RhdGUgKm1lbF9zdGF0ZSkKK3sKKyAgICBtZWxfc3RhdGUt PmsgICA9IDA7CisgICAgbWVsX3N0YXRlLT5ydW4gPSAwOworICAgIG1lbF9zdGF0ZS0+b25lID0g MDsKK30KKworLyoqCisgKiBSZWZpbGwgdGhlIGJ1ZmZlciBiYWNrd2FyZHMgaW4gbGl0dGxlIGVu ZGlhbiB3aGlsZSBza2lwcGluZyBvdmVyIHN0dWZmaW5nCisgKiBiaXRzLiBTdHVmZmluZyBiaXRz IGFyZSB0aG9zZSB0aGF0IGFwcGVhciBpbiB0aGUgcG9zaXRpb24gb2YgYW55IGJ5dGUgd2hvc2UK KyAqIExTQnMgYXJlIGFsbCAxJ3MgaWYgdGhlIGxhc3QgY29uc3VtZWQgYnl0ZSB3YXMgbGFyZ2Vy IHRoYW4gMHg4Ri4KKyAqLworc3RhdGljIGludCBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3 YXJkcyhTdGF0ZVZhcnMgKmJ1ZmZlciwgY29uc3QgdWludDhfdCAqYXJyYXkpCit7CisgICAgdWlu dDY0X3QgdG1wID0gMDsKKyAgICBpbnQzMl90IHBvc2l0aW9uID0gYnVmZmVyLT5wb3M7CisgICAg dWludDMyX3QgbmV3X2JpdHMgPSAzMjsKKworICAgIGlmIChidWZmZXItPmJpdHNfbGVmdCA+PSAz MikKKyAgICAgICAgcmV0dXJuIDA7IC8vIGVub3VnaCBkYXRhLCBubyBuZWVkIHRvIHB1bGwgaW4g bW9yZSBiaXRzCisKKyAgICAvKioKKyAgICAgKiBXZSBhcmUgcmVhZGluZyBieXRlcyBmcm9tIGVu ZCB0byBzdGFydCBhbmQgbmVlZCB0byBoYW5kbGUgYmVpbmcgY2xvc2UgdG8KKyAgICAgKiB0aGUg ZW5kLiBTdWJ0cmFjdGluZyBieSA0IG1lYW5zIHdlIHdpbGwgcmVhZCBzb21lIG9mIHRoZSBieXRl cyBvZiB0aGUgTUVMCisgICAgICogYnl0ZSBzdHJlYW0gc2luY2UgdGhlIE1FTCBieXRlIHN0cmVh bSBlbmRzIGF0IHRoZSBzdGFydCBvZiB0aGUgVkxDIGJ5dGUKKyAgICAgKiBzdHJlYW0uIFRoaXMg aXMgb2theSBhcyB0aGV5IGFyZSBtYXNrZWQgYXdheSBzaW5jZSB3ZSBjaGVjayBmb3IgY2FzZXMK KyAgICAgKiB3aGVyZSB0aGF0IG9jY3VycyAod2hlbiB0aGUgcG9zaXRpb24gaXMgbGVzcyB0aGFu IDQpLgorICAgICAqLworICAgIHBvc2l0aW9uIC09IDQ7CisKKyAgICB0bXAgPSBBVl9SQjMyKCZh cnJheVtwb3NpdGlvbiArIDFdKTsKKworICAgIGlmIChidWZmZXItPnBvcyA8IDQpeworICAgICAg ICAvKiBtYXNrIHVuLW5lZWRlZCBiaXRzIGlmIHdlIGFyZSBjbG9zZSB0byBpbnB1dCBlbmQgKi8K KyAgICAgICAgdWludDY0X3QgbWFzayA9ICgxdWxsIDw8IChidWZmZXItPnBvcyArIDEpICogOCkg LSAxOworICAgICAgICB0bXAgJj0gbWFzazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiAgVW5z dHVmZiBiaXRzLiBMb2FkIGEgdGVtcG9yYXJ5IGJ5dGUsIHdoaWNoIHByZWNlZGVzIHRoZSBwb3Np dGlvbiB3ZQorICAgICAqICBjdXJyZW50bHkgYXQsIHRvIGVuc3VyZSB0aGF0IHdlIGNhbiBhbHNv IHVuLXN0dWZmIGlmIHRoZSBzdHVmZmVkIGJpdCBpcworICAgICAqICB0aGUgYm90dG9tIG1vc3Qg Yml0cy4KKyAgICAgKi8KKyAgICB0bXAgPDw9IDg7CisgICAgdG1wIHw9IGFycmF5W2J1ZmZlci0+ cG9zICsgMV07CisKKyAgICBpZiAoKHRtcCAmIDB4N0ZGRjAwMDAwMCkgPiAweDdGOEYwMDAwMDAp IHsKKyAgICAgICAgdG1wICY9IDB4N0ZGRkZGRkZGRjsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAg ICB9CisgICAgaWYgKCh0bXAgJiAweDAwN0ZGRjAwMDApID4gMHgwMDdGOEYwMDAwKSB7CisgICAg ICAgIHRtcCA9ICh0bXAgJiAweDAwN0ZGRkZGRkYpICsgKCh0bXAgJiAweEZGMDAwMDAwMDApID4+ IDEpOworICAgICAgICBuZXdfYml0cy0tOworICAgIH0KKyAgICBpZiAoKHRtcCAmIDB4MDAwMDdG RkYwMCkgPiAweDAwMDA3RjhGMDApIHsKKyAgICAgICAgdG1wID0gKHRtcCAmIDB4MDAwMDdGRkZG RikgKyAoKHRtcCAmIDB4RkZGRjAwMDAwMCkgPj4gMSk7CisgICAgICAgIG5ld19iaXRzLS07Cisg ICAgfQorICAgIGlmICgodG1wICYgMHgwMDAwMDA3RkZGKSA+IDB4MDAwMDAwN0Y4RikgeworICAg ICAgICB0bXAgPSAodG1wICYgMHgwMDAwMDA3RkZGKSArICgodG1wICYgMHhGRkZGRkYwMDAwKSA+ PiAxKTsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAgICB9CisKKyAgICB0bXAgPj49IDg7IC8vIFJl bW92ZSB0ZW1wb3JhcnkgYnl0ZSBsb2FkZWQKKworICAgIC8qIEFkZCBiaXRzIHRvIHRoZSBNU0Ig b2YgdGhlIGJpdCBidWZmZXIgKi8KKyAgICBidWZmZXItPmJpdF9idWYgfD0gdG1wIDw8IGJ1ZmZl ci0+Yml0c19sZWZ0OworICAgIGJ1ZmZlci0+Yml0c19sZWZ0ICs9IG5ld19iaXRzOworICAgIGJ1 ZmZlci0+cG9zID0gRkZNQVgoMCwgcG9zaXRpb24pOworICAgIHJldHVybiAwOworfQorCisvKioK KyAqIFJlZmlsbCB0aGUgYml0LWJ1ZmZlciByZWFkaW5nIG5ldyBiaXRzIGdvaW5nIGZvcndhcmQK KyAqIGluIHRoZSBzdHJlYW0gd2hpbGUgc2tpcHBpbmcgb3ZlciBzdHVmZmVkIGJpdHMuCisgKi8K K3N0YXRpYyB2b2lkIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfZm9yd2FyZChTdGF0ZVZhcnMgKmJ1 ZmZlciwgY29uc3QgdWludDhfdCAqYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoKQoreworICAgIHdoaWxlIChidWZmZXItPmJp dHNfbGVmdCA8IDMyKSB7CisgICAgICAgIGJ1ZmZlci0+dG1wID0gMHhGRjsKKyAgICAgICAgYnVm ZmVyLT5iaXRzID0gKGJ1ZmZlci0+bGFzdCA9PSAweEZGKSA/IDcgOiA4OworICAgICAgICBpZiAo YnVmZmVyLT5wb3MgPD0gbGVuZ3RoKSB7CisgICAgICAgICAgICBidWZmZXItPnRtcCA9IGFycmF5 W2J1ZmZlci0+cG9zXTsKKyAgICAgICAgICAgIGJ1ZmZlci0+cG9zICs9IDE7CisgICAgICAgICAg ICBidWZmZXItPmxhc3QgPSBidWZmZXItPnRtcDsKKyAgICAgICAgfQorICAgICAgICBidWZmZXIt PmJpdF9idWYgfD0gKCh1aW50NjRfdCkgYnVmZmVyLT50bXApIDw8IGJ1ZmZlci0+Yml0c19sZWZ0 OworICAgICAgICBidWZmZXItPmJpdHNfbGVmdCArPSBidWZmZXItPmJpdHM7CisgICAgfQorfQor CisvKioKKyAqIERyb3BzIGJpdHMgZnJvbSBsb3dlciBiaXRzIGluIHRoZSBiaXQgYnVmZmVyLiBi dWYgY29udGFpbnMgdGhlIGJpdCBidWZmZXJzLgorICogbmJpdHMgaXMgdGhlIG51bWJlciBvZiBi aXRzIHRvIHJlbW92ZS4KKyAqLworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHZvaWQganBlZzIw MDBfYml0YnVmX2Ryb3BfYml0c19sc2IoU3RhdGVWYXJzICpidWYsIHVpbnQ4X3QgbmJpdHMpCit7 CisgICAgYXZfYXNzZXJ0MihidWYtPmJpdHNfbGVmdCA+PSBuYml0cyk7IC8vIGNhbm5vdCByZWFk IG1vcmUgYml0cyB0aGFuIGF2YWlsYWJsZQorICAgIGJ1Zi0+Yml0X2J1ZiA+Pj0gbmJpdHM7Cisg ICAgYnVmLT5iaXRzX2xlZnQgLT0gbmJpdHM7Cit9CisKKy8qKgorICogR2V0IGJpdHMgZnJvbSB0 aGUgYml0IGJ1ZmZlciByZWFkaW5nIHRoZW0gZnJvbSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0 cworICogbW92aW5nIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMuIEluIGNhc2UgdGhlcmUg YXJlIGZld2VyIGJpdHMsIHJlZmlsbAorICogZnJvbSBidWYgbW92aW5nIGJhY2t3YXJkcy4KKyAq LworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHVpbnQ2NF90IGpwZWcyMDAwX2JpdGJ1Zl9nZXRf Yml0c19sc2IoU3RhdGVWYXJzICpiaXRfc3RyZWFtLCB1aW50OF90IG5iaXRzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmKQor eworICAgIHVpbnQ2NF90IGJpdHM7CisgICAgdWludDY0X3QgbWFzayA9ICgxdWxsIDw8IG5iaXRz KSAtIDE7CisgICAgaWYgKGJpdF9zdHJlYW0tPmJpdHNfbGVmdCA8IG5iaXRzKQorICAgICAgICBq cGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyhiaXRfc3RyZWFtLCBidWYpOworICAgIGJp dHMgPSBiaXRfc3RyZWFtLT5iaXRfYnVmICYgbWFzazsKKyAgICBqcGVnMjAwMF9iaXRidWZfZHJv cF9iaXRzX2xzYihiaXRfc3RyZWFtLCBuYml0cyk7CisgICAgcmV0dXJuIGJpdHM7Cit9CisKKy8q KgorICogR2V0IGJpdHMgZnJvbSB0aGUgYml0IGJ1ZmZlciByZWFkaW5nIHRoZW0gZnJvbSB0aGUg bGVhc3Qgc2lnbmlmaWNhbnQgYml0cworICogbW92aW5nIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50 IGJpdHMuIEluIGNhc2UgdGhlcmUgYXJlIGZld2VyIGJpdHMsIHJlZmlsbCBmcm9tCisgKiBidWYg bW92aW5nIGZvcndhcmQuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBq cGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiX2ZvcndhcmQoU3RhdGVWYXJzICpiaXRfc3RyZWFt LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50OF90IG5iaXRzLCBjb25zdCB1aW50OF90ICpidWYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICB1 aW50NjRfdCBiaXRzOworICAgIHVpbnQ2NF90IG1hc2sgPSAoMXVsbCA8PCBuYml0cykgLSAxOwor CisgICAgaWYgKGJpdF9zdHJlYW0tPmJpdHNfbGVmdCA8PSBuYml0cykKKyAgICAgICAganBlZzIw MDBfYml0YnVmX3JlZmlsbF9mb3J3YXJkKGJpdF9zdHJlYW0sIGJ1ZiwgbGVuZ3RoKTsKKyAgICBi aXRzID0gYml0X3N0cmVhbS0+Yml0X2J1ZiAmIG1hc2s7CisgICAganBlZzIwMDBfYml0YnVmX2Ry b3BfYml0c19sc2IoYml0X3N0cmVhbSwgbmJpdHMpOworICAgIHJldHVybiBiaXRzOworfQorCisv KioKKyAqIExvb2sgYWhlYWQgYml0IGJ1ZmZlciB3aXRob3V0IGRpc2NhcmRpbmcgYml0cy4KKyAq LworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHVpbnQ2NF90IGpwZWcyMDAwX2JpdGJ1Zl9wZWVr X2JpdHNfbHNiKFN0YXRlVmFycyAqc3RyZWFtLCB1aW50OF90IG5iaXRzKQoreworICAgIHVpbnQ2 NF90IG1hc2sgPSAoMXVsbCA8PCBuYml0cykgLSAxOworICAgIHJldHVybiBzdHJlYW0tPmJpdF9i dWYgJiBtYXNrOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9pbml0X3ZsYyhTdGF0ZVZhcnMg KnMsIHVpbnQzMl90IExjdXAsIHVpbnQzMl90IFBjdXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1aW50OF90ICpEY3VwKQoreworICAgIHMtPmJpdHNfbGVmdCA9IDA7Cisg ICAgcy0+Yml0X2J1ZiAgID0gMDsKKyAgICBzLT5wb3MgICAgICAgPSBMY3VwIC0gMiAtIFBjdXA7 CisgICAgcy0+bGFzdCAgICAgID0gRGN1cFtMY3VwIC0gMl07CisgICAgcy0+dG1wICAgICAgID0g KHMtPmxhc3QpID4+IDQ7CisgICAgcy0+Yml0cyAgICAgID0gKChzLT50bXAgJiA3KSA8IDcpID8g NCA6IDM7CisKKyAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyhzLCBEY3VwICsg UGN1cCk7CisgICAganBlZzIwMDBfYml0YnVmX2Ryb3BfYml0c19sc2IocywgNCk7Cit9CisKKy8q KgorICogRGVjb2RlIHByZWZpeCBjb2RlcyBmb3IgVkxDIHNlZ21lbnQuIFNlZSBSZWMuIElUVS1U IFQuODE0LCA3LjMuNS4KKyAqLworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIGludCAganBlZzIw MDBfZGVjb2RlX2N0eF92bGMoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29u c3QgdWludDE2X3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdWludDhfdCAqRGN1cCwgdWludDhfdCAqc2lnX3BhdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnJlc19vZmYsIHVpbnQ4X3QgKmVtYl9wYXRfaywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmVtYl9wYXRfMSwg dWludDhfdCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBQY3VwLCB1aW50MTZfdCBjb250ZXh0KQoreworICAgIHVpbnQzMl90IHZhbHVlOworICAgIHVp bnQ4X3QgbGVuOworICAgIHVpbnQ2NF90IGluZGV4OworICAgIHVpbnQ2NF90IGNvZGVfd29yZDsK KworICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfYmFja3dhcmRzKHZsY19zdHJlYW0sIERjdXAg KyBQY3VwKTsKKworICAgIGNvZGVfd29yZCA9IHZsY19zdHJlYW0tPmJpdF9idWYgJiAweDdmOwor ICAgIGluZGV4ID0gY29kZV93b3JkICsgKGNvbnRleHQgPDwgNyk7CisKKyAgICBhdl9hc3NlcnQw KGluZGV4IDwgMTAyNCk7IC8vIFRoZSBDeHRWTEMgdGFibGUgaGFzIDEwMjQgZW50cmllcy4KKwor ICAgIHZhbHVlID0gdGFibGVbaW5kZXhdOworCisgICAgbGVuID0gKHZhbHVlICYgMHgwMDBGKSA+ PiAxOworCisgICAgcmVzX29mZltwb3NdID0gKHVpbnQ4X3QpICh2YWx1ZSAmIDEpOworICAgIHNp Z19wYXRbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgwMEYwKSA+PiA0KTsKKyAgICBlbWJf cGF0X2tbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgwRjAwKSA+PiA4KTsKKyAgICBlbWJf cGF0XzFbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHhGMDAwKSA+PiAxMik7CisKKyAgICBq cGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCBsZW4pOworICAgIHJldHVy biAwOworfQorCisvKioKKyAqIERlY29kZSB2YXJpYWJsZSBsZW5ndGggdS12bGMgcHJlZml4LiBT ZWUgZGVjb2RlVVByZWZpeCBwcm9jZWR1cmUgYXQgUmVjLgorICogSVRVLVQgVC44MTQsIDcuMy42 LgorICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgdWludDhfdCB2bGNfZGVjb2RlX3VfcHJl Zml4KFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29uc3QgdWludDhfdCAqcmVmaWxsX2FycmF5KQor eworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IHJldHVybl92YWx1ZVs4XSA9IHsgNSwgMSwgMiwg MSwgMywgMSwgMiwgMSB9OworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGRyb3BfYml0c1s4XSAg ICA9IHsgMywgMSwgMiwgMSwgMywgMSwgMiwgMSB9OworCisgICAgdWludDhfdCBiaXRzOworCisg ICAgaWYgKHZsY19zdHJlYW0tPmJpdHNfbGVmdCA8IDMpCisgICAgICAgIGpwZWcyMDAwX2JpdGJ1 Zl9yZWZpbGxfYmFja3dhcmRzKHZsY19zdHJlYW0sIHJlZmlsbF9hcnJheSk7CisKKyAgICBiaXRz ID0ganBlZzIwMDBfYml0YnVmX3BlZWtfYml0c19sc2IodmxjX3N0cmVhbSwgMyk7CisKKyAgICBq cGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3RyZWFtLCBkcm9wX2JpdHNbYml0c10p OworICAgIHJldHVybiByZXR1cm5fdmFsdWVbYml0c107Cit9CisKKy8qKgorICogRGVjb2RlIHZh cmlhYmxlIGxlbmd0aCB1LXZsYyBzdWZmaXguIFNlZSBkZWNvZGVVU3VmZml4IHByb2NlZHVyZSBh dCBSZWMuCisgKiBJVFUtVCBULjgxNCwgNy4zLjYuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0 YXRpYyB1aW50OF90IHZsY19kZWNvZGVfdV9zdWZmaXgoU3RhdGVWYXJzICp2bGNfc3RyZWFtLCB1 aW50OF90IHN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDhfdCAqcmVmaWxsX2FycmF5KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1tdICAg ICAgPSB7IDEsIDMxIH07CisgICAgc3RhdGljIGNvbnN0IGludCBkcm9wX2JpdHNbXSA9IHsgMSwg NSAgfTsKKworICAgIHVpbnQ4X3QgYml0czsKKyAgICBpbnQgY29uZCA9IHN1ZmZpeCAhPSAzOwor ICAgIGlmIChzdWZmaXggPCAzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh2bGNfc3Ry ZWFtLT5iaXRzX2xlZnQgPCA1KQorICAgICAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3 YXJkcyh2bGNfc3RyZWFtLCByZWZpbGxfYXJyYXkpOworCisgICAgYml0cyA9IGpwZWcyMDAwX2Jp dGJ1Zl9wZWVrX2JpdHNfbHNiKHZsY19zdHJlYW0sIDUpOworCisgICAganBlZzIwMDBfYml0YnVm X2Ryb3BfYml0c19sc2IodmxjX3N0cmVhbSwgZHJvcF9iaXRzW2NvbmRdKTsKKyAgICByZXR1cm4g Yml0cyAmIG1hc2tbY29uZF07Cit9CisKKy8qKgorICogRGVjb2RlIHUtdmxjIGV4dGVuc2lvbiB2 YWx1ZXMuIFNlZSBkZWNvZGVVRXh0ZW5zaW9uIHByb2NlZHVyZSBhdCBSZWMuIElUVS1UCisgKiBU LjgxNCwgNy4zLjYuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50OF90IHZsY19k ZWNvZGVfdV9leHRlbnNpb24oU3RhdGVWYXJzICp2bGNfc3RyZWFtLCB1aW50OF90IHN1ZmZpeCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcmVm aWxsX2FycmF5KQoreworICAgIHJldHVybiBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHZs Y19zdHJlYW0sIDQgKiAoc3VmZml4ID49IDI4KSwgcmVmaWxsX2FycmF5KTsKK30KKworLyoqCisg KiBNYWduaXR1ZGUgYW5kIFNpZ24gZGVjb2RlIHByb2NlZHVyZXMuIFNlZSBkZWNvZGVNYWdTZ25W YWx1ZSBwcm9jZWR1cmUgYXQgUmVjLgorICogSVRVLVQgVC44MTQsIDcuMy44LgorICovCithdl9h bHdheXNfaW5saW5lCitzdGF0aWMgaW50MzJfdCBqcGVnMjAwMF9kZWNvZGVfbWFnX3NnbihTdGF0 ZVZhcnMgKm1hZ19zZ25fc3RyZWFtLCBpbnQzMl90IG1fbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDMyX3QgaV9uLCBjb25zdCB1aW50OF90ICpidWYsIHVpbnQz Ml90IGxlbmd0aCkKK3sKKyAgICBpbnQzMl90IHZhbCA9IDA7CisgICAgaWYgKG1fbiA+IDApIHsK KyAgICAgICAgdmFsID0ganBlZzIwMDBfYml0YnVmX2dldF9iaXRzX2xzYl9mb3J3YXJkKG1hZ19z Z25fc3RyZWFtLG1fbixidWYsbGVuZ3RoKTsKKyAgICAgICAgdmFsICs9IChpX24gPDwgbV9uKTsK KyAgICB9CisgICAgcmV0dXJuIHZhbDsKK30KKworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHZv aWQgcmVjb3Zlcl9tYWdfc2duKFN0YXRlVmFycyAqbWFnX3NnbiwgdWludDhfdCBwb3MsIHVpbnQx Nl90IHEsIGludDMyX3QgbV9uWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy X3Qga25vd25fMVsyXSwgY29uc3QgdWludDhfdCBlbWJfcGF0XzFbMl0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50MzJfdCB2WzJdWzRdLCBpbnQzMl90IG1bMl1bNF0sIHVpbnQ4X3Qg KkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKm11X24sIGNvbnN0IHVp bnQ4X3QgKkRjdXAsIHVpbnQzMl90IFBjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgcExTQikKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgeworICAg ICAgICBpbnQzMl90IG4gPSA0ICogcSArIGk7CisgICAgICAgIG1fbltwb3NdID0gbVtwb3NdW2ld OworICAgICAgICBrbm93bl8xW3Bvc10gPSAoZW1iX3BhdF8xW3Bvc10gPj4gaSkgJiAxOworICAg ICAgICB2W3Bvc11baV0gPSBqcGVnMjAwMF9kZWNvZGVfbWFnX3NnbihtYWdfc2duLCBtX25bcG9z XSwga25vd25fMVtwb3NdLCBEY3VwLCBQY3VwKTsKKworICAgICAgICBpZiAobV9uW3Bvc10gIT0g MCkgeworICAgICAgICAgICAgRVtuXSA9IDMyIC0gZmZfY2x6KHZbcG9zXVtpXSB8IDEpOworICAg ICAgICAgICAgbXVfbltuXSA9ICh2W3Bvc11baV0gPj4gMSkgKyAxOworICAgICAgICAgICAgbXVf bltuXSA8PD0gcExTQjsKKyAgICAgICAgICAgIG11X25bbl0gfD0gKCh1aW50MzJfdCkgKHZbcG9z XVtpXSAmIDEpKSA8PCAzMTsgLy8gc2lnbiBiaXQuCisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0 YXRpYyBpbnQganBlZzIwMDBfaW1wb3J0X2JpdChTdGF0ZVZhcnMgKnN0cmVhbSwgY29uc3QgdWlu dDhfdCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBpbnQgY29uZCA9IHN0cmVhbS0+ cG9zIDw9IGxlbmd0aDsKKyAgICBpbnQgcG9zID0gRkZNSU4oc3RyZWFtLT5wb3MsIGxlbmd0aCk7 CisgICAgaWYgKHN0cmVhbS0+Yml0cyA9PSAwKSB7CisgICAgICAgIHN0cmVhbS0+Yml0cyA9IChz dHJlYW0tPnRtcCA9PSAweEZGKSA/IDcgOiA4OworICAgICAgICBzdHJlYW0tPnBvcyArPSBjb25k OworICAgICAgICBzdHJlYW0tPnRtcCA9IGNvbmQgPyBhcnJheVtwb3NdIDogMHhGRjsKKyAgICB9 CisgICAgc3RyZWFtLT5iaXRzIC09IDE7CisgICAgcmV0dXJuIChzdHJlYW0tPnRtcCA+PiBzdHJl YW0tPmJpdHMpICYgMTsKK30KKworc3RhdGljIGludCBqcGVnMjAwMF9wZWVrX2JpdChTdGF0ZVZh cnMgKnN0cmVhbSwgY29uc3QgdWludDhfdCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAg ICBpZiAoc3RyZWFtLT5iaXRzID09IDApIHsKKyAgICAgICAgaW50IGNvbmQgPSBzdHJlYW0tPnBv cyA8PSBsZW5ndGg7CisgICAgICAgIGludCBwb3MgPSBGRk1JTihzdHJlYW0tPnBvcywgbGVuZ3Ro KTsKKyAgICAgICAgc3RyZWFtLT5iaXRzID0gKHN0cmVhbS0+dG1wID09IDB4RkYpID8gNyA6IDg7 CisgICAgICAgIHN0cmVhbS0+cG9zICs9IGNvbmQ7CisgICAgICAgIHN0cmVhbS0+dG1wID0gY29u ZCA/IGFycmF5W3Bvc10gOiAweEZGOworICAgIH0KKyAgICByZXR1cm4gKHN0cmVhbS0+dG1wID4+ IHN0cmVhbS0+Yml0cykgJiAxOworfQorCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29kZV9tZWxf c3ltKE1lbERlY29kZXJTdGF0ZSAqbWVsX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTdGF0ZVZhcnMgKm1lbF9zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKkRjdXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IExjdXApCit7CisKKyAgICBpZiAobWVsX3N0YXRlLT5ydW4g PT0gMCAmJiBtZWxfc3RhdGUtPm9uZSA9PSAwKSB7CisgICAgICAgIHVpbnQ4X3QgZXZhbDsKKyAg ICAgICAgdWludDhfdCBiaXQ7CisKKyAgICAgICAgZXZhbCA9IG1lbF9lW21lbF9zdGF0ZS0+a107 CisgICAgICAgIGJpdCA9IGpwZWcyMDAwX2ltcG9ydF9iaXQobWVsX3N0cmVhbSwgRGN1cCwgTGN1 cCk7CisgICAgICAgIGlmIChiaXQgPT0gMSkgeworICAgICAgICAgICAgbWVsX3N0YXRlLT5ydW4g PSAxIDw8IGV2YWw7CisgICAgICAgICAgICBtZWxfc3RhdGUtPmsgPSBGRk1JTigxMiwgbWVsX3N0 YXRlLT5rICsgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZWxfc3RhdGUtPnJ1 biA9IDA7CisgICAgICAgICAgICB3aGlsZSAoZXZhbCA+IDApIHsKKyAgICAgICAgICAgICAgICBi aXQgPSBqcGVnMjAwMF9pbXBvcnRfYml0KG1lbF9zdHJlYW0sIERjdXAsIExjdXApOworICAgICAg ICAgICAgICAgIG1lbF9zdGF0ZS0+cnVuID0gKDIgKiAobWVsX3N0YXRlLT5ydW4pKSArIGJpdDsK KyAgICAgICAgICAgICAgICBldmFsIC09IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt ZWxfc3RhdGUtPmsgPSBGRk1BWCgwLCBtZWxfc3RhdGUtPmsgLSAxKTsKKyAgICAgICAgICAgIG1l bF9zdGF0ZS0+b25lID0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobWVsX3N0YXRlLT5y dW4gPiAwKSB7CisgICAgICAgIG1lbF9zdGF0ZS0+cnVuIC09IDE7CisgICAgICAgIHJldHVybiAw OworICAgIH0gZWxzZSB7CisgICAgICAgIG1lbF9zdGF0ZS0+b25lID0gMDsKKyAgICAgICAgcmV0 dXJuIDE7CisgICAgfQorfQorCisvKioKKyAqIE1hZ3JlZiBkZWNvZGluZyBwcm9jZWR1cmVzLgor ICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgaW50IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZf Yml0KFN0YXRlVmFycyAqc3RyZWFtLCBjb25zdCB1aW50OF90ICphcnJheSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoKQoreworICAgIHJldHVy biBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHN0cmVhbSwgMSwgYXJyYXkpOworfQorCisv KioKKyAqIFNpZ25hbCBFTUIgZGVjb2RlLgorICovCitzdGF0aWMgaW50IGpwZWcyMDAwX2RlY29k ZV9zaWdfZW1iKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIE1lbERlY29kZXJTdGF0 ZSAqbWVsX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZVZh cnMgKm1lbF9zdHJlYW0sIFN0YXRlVmFycyAqdmxjX3N0cmVhbSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnZsY190YWJsZSwgY29uc3QgdWludDhf dCAqRGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqc2ln X3BhdCwgdWludDhfdCAqcmVzX29mZiwgdWludDhfdCAqZW1iX3BhdF9rLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICplbWJfcGF0XzEsIHVpbnQ4X3QgcG9zLCB1 aW50MTZfdCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwKQoreworICAgIGlmIChjb250ZXh0ID09IDApIHsKKyAg ICAgICAgdWludDhfdCBzeW07CisgICAgICAgIHN5bSA9IGpwZWcyMDAwX2RlY29kZV9tZWxfc3lt KG1lbF9zdGF0ZSwgbWVsX3N0cmVhbSwgRGN1cCwgTGN1cCk7CisgICAgICAgIGlmIChzeW0gPT0g MCkgeworICAgICAgICAgICAgc2lnX3BhdFtwb3NdID0gMDsKKyAgICAgICAgICAgIHJlc19vZmZb cG9zXSA9IDA7CisgICAgICAgICAgICBlbWJfcGF0X2tbcG9zXSA9IDA7CisgICAgICAgICAgICBl bWJfcGF0XzFbcG9zXSA9IDA7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAg IH0KKyAgICByZXR1cm4ganBlZzIwMDBfZGVjb2RlX2N0eF92bGMocywgdmxjX3N0cmVhbSwgdmxj X3RhYmxlLCBEY3VwLCBzaWdfcGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNfb2ZmLCBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgcG9zLCBQY3VwLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KTsKK30KKworYXZfYWx3YXlzX2lubGluZQor c3RhdGljIGludCBqcGVnMjAwMF9nZXRfc3RhdGUoaW50IHgxLCBpbnQgeDIsIGludCB3aWR0aCwg aW50IHNoaWZ0X2J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf dCAqYmxvY2tfc3RhdGVzKQoreworICAgIHJldHVybiAoYmxvY2tfc3RhdGVzWyh4MSArIDEpICog KHdpZHRoICsgMikgKyAoeDIgKyAxKV0gPj4gc2hpZnRfYnkpICYgMTsKK30KKworYXZfYWx3YXlz X2lubGluZQorc3RhdGljIHZvaWQganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGludCB4MSwgaW50IHgy LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUs IHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICBibG9ja19zdGF0ZXNbKHgxICsgMSkgKiAo d2lkdGggKyAyKSArICh4MiArIDEpXSB8PSB2YWx1ZTsKK30KKworYXZfYWx3YXlzX2lubGluZQor c3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51cF9zZWdtZW50KGNvbnN0IEpwZWcy MDAwRGVjb2RlckNvbnRleHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSnBlZzIwMDBDYmxrICpjYmxrLCBKcGVnMjAwMFQxQ29udGV4dCAqdDEsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVsRGVjb2RlclN0 YXRlICptZWxfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdGVWYXJzICptZWxfc3RyZWFtLCBTdGF0ZVZhcnMgKnZsY19zdHJlYW0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVWYXJzICptYWdf c2duX3N0cmVhbSwgY29uc3QgdWludDhfdCAqRGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwLCB1aW50 OF90IHBMU0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQzMl90ICpzYW1wbGVfYnVmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykK K3sKKyAgICB1aW50MTZfdCBxICAgICAgICAgICAgICAgICAgICAgID0gMDsgICAgIC8vIFJlcHJl c2VudHMgY3VycmVudCBxdWFkIHBvc2l0aW9uCisgICAgdWludDE2X3QgcTEsIHEyOworICAgIHVp bnQxNl90IGNvbnRleHQxLCBjb250ZXh0MjsKKyAgICB1aW50MTZfdCBjb250ZXh0ICAgICAgICAg ICAgICAgID0gMDsKKworICAgIHVpbnQ4X3Qgc2lnX3BhdFsyXSAgICAgICAgICAgICAgPSB7IDAg fTsgLy8gc2lnbmlmaWNhbmNlIHBhdHRlcm4KKyAgICB1aW50OF90IHJlc19vZmZbMl0gICAgICAg ICAgICAgID0geyAwIH07IC8vIHJlc2lkdWFsIG9mZnNldAorICAgIHVpbnQ4X3QgZW1iX3BhdF9r WzJdICAgICAgICAgICAgPSB7IDAgfTsgLy8gZXhwb25lbnQgTWF4IEJvdW5kIHBhdHRlcm4gSwor ICAgIHVpbnQ4X3QgZW1iX3BhdF8xWzJdICAgICAgICAgICAgPSB7IDAgfTsgLy8gZXhwb25lbnQg TWF4IEJvdW5kIHBhdHRlcm4gMQorICAgIHVpbnQ4X3QgZ2FtbWFbMl0gICAgICAgICAgICAgICAg PSB7IDAgfTsKKworICAgIHVpbnQ4X3QgRV9uWzJdICAgICAgICAgICAgICAgICAgPSB7IDAgfTsK KyAgICB1aW50OF90IEVfbmVbMl0gICAgICAgICAgICAgICAgID0geyAwIH07CisgICAgdWludDhf dCBFX253WzJdICAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIHVpbnQ4X3QgRV9uZlsyXSAg ICAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIHVpbnQ4X3QgbWF4X2VbMl0gICAgICAgICAg ICAgICAgPSB7IDAgfTsKKyAgICB1aW50OF90IHVfcGZ4WzJdICAgICAgICAgICAgICAgID0geyAw IH07CisgICAgdWludDhfdCB1X3NmeFsyXSAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIHVp bnQ4X3QgdV9leHRbMl0gICAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIGludDMyX3QgdVsy XSAgICAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAgICBpbnQzMl90IFVbMl0gICAgICAgICAg ICAgICAgICAgID0geyAwIH07IC8vIGV4cG9uZW50IGJvdW5kCisgICAgaW50MzJfdCBtX25bMl0g ICAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIGludDMyX3Qga25vd25fMVsyXSAgICAgICAg ICAgICAgPSB7IDAgfTsKKworICAgIGludDMyX3QgbVsyXVs0XSAgICAgICAgICAgICAgICAgPSB7 IDAgfTsKKyAgICBpbnQzMl90IHZbMl1bNF0gICAgICAgICAgICAgICAgID0geyAwIH07CisKKyAg ICB1aW50OF90IGthcHBhWzJdICAgICAgICAgICAgICAgID0geyAxLCAxIH07CisKKyAgICBpbnQg cmV0ICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKworICAgIGludCBzcDsKKworICAgIHVp bnQ2NF90IGM7CisKKyAgICB1aW50OF90ICpzaWdtYTsKKyAgICB1aW50MzJfdCAqbXU7CisKKyAg ICBjb25zdCB1aW50OF90ICp2bGNfYnVmID0gRGN1cCArIFBjdXA7CisKKyAgICAvKiBjb252ZXJ0 IHRvIHJhc3Rlci1zY2FuICovCisgICAgY29uc3QgdWludDE2X3QgaXNfYm9yZGVyX3ggPSB3aWR0 aCAlIDI7CisgICAgY29uc3QgdWludDE2X3QgaXNfYm9yZGVyX3kgPSBoZWlnaHQgJSAyOworCisg ICAgY29uc3QgdWludDE2X3QgcXVhZF93aWR0aCAgPSBmZl9qcGVnMjAwMF9jZWlsZGl2cG93Mih3 aWR0aCwgMSk7CisgICAgY29uc3QgdWludDE2X3QgcXVhZF9oZWlnaHQgPSBmZl9qcGVnMjAwMF9j ZWlsZGl2cG93MihoZWlnaHQsIDEpOworCisgICAgc2l6ZV90IGJ1Zl9zaXplID0gNCAqIHF1YWRf d2lkdGggKiBxdWFkX2hlaWdodDsKKworICAgIHVpbnQ4X3QgKnNpZ21hX24gPSBhdl9jYWxsb2Mo YnVmX3NpemUsIHNpemVvZih1aW50OF90KSk7CisgICAgdWludDhfdCAqRSAgICAgICA9IGF2X2Nh bGxvYyhidWZfc2l6ZSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAgICB1aW50MzJfdCAqbXVfbiAgID0g YXZfY2FsbG9jKGJ1Zl9zaXplLCBzaXplb2YodWludDMyX3QpKTsKKworICAgIGlmICghc2lnbWFf biB8fCAhRSB8fCAhbXVfbikgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAg ICAgIGdvdG8gZnJlZTsKKyAgICB9CisKKyAgICBzaWdtYSA9IHNpZ21hX247CisgICAgbXUgPSBt dV9uOworCisgICAgd2hpbGUgKHEgPCBxdWFkX3dpZHRoIC0gMSkgeworICAgICAgICBxMSA9IHE7 CisgICAgICAgIHEyID0gcTEgKyAxOworCisgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVj b2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19jeHRfdmxjX3RhYmxlMCwg RGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0LCBMY3VwLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjdXApKSA8IDApCisg ICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp KyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+ PiBpKSAmIDE7CisKKyAgICAgICAgLyogY2FsY3VsYXRlIGNvbnRleHQgKi8KKyAgICAgICAgY29u dGV4dCAgPSBzaWdtYV9uWzQgKiBxMV07ICAgICAgICAgICAvLyBmCisgICAgICAgIGNvbnRleHQg fD0gc2lnbWFfbls0ICogcTEgKyAxXTsgICAgICAgLy8gc2YKKyAgICAgICAgY29udGV4dCArPSBz aWdtYV9uWzQgKiBxMSArIDJdIDw8IDE7ICAvLyB3IDw8IDEKKyAgICAgICAgY29udGV4dCArPSBz aWdtYV9uWzQgKiBxMSArIDNdIDw8IDI7CisKKyAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9k ZWNvZGVfc2lnX2VtYihzLCBtZWxfc3RhdGUsIG1lbF9zdHJlYW0sIHZsY19zdHJlYW0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2N4dF92bGNfdGFibGUw LCBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTIsIGNvbnRleHQsIExjdXAs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkpIDwgMCkK KyAgICAgICAgICAgIGdvdG8gZnJlZTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7 IGkrKykKKyAgICAgICAgICAgIHNpZ21hX25bNCAqIHEyICsgaV0gPSAoc2lnX3BhdFtKMktfUTJd ID4+IGkpICYgMTsKKworICAgICAgICAvKiBjYWxjdWxhdGUgY29udGV4dCBmb3IgdGhlIG5leHQg cXVhZCAqLworICAgICAgICBjb250ZXh0ICA9IHNpZ21hX25bNCAqIHEyXTsgICAgICAgICAgIC8v IGYKKyAgICAgICAgY29udGV4dCB8PSBzaWdtYV9uWzQgKiBxMiArIDFdOyAgICAgICAvLyBzZgor ICAgICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsgMl0gPDwgMTsgIC8vIHcgPDwgMQor ICAgICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsgM10gPDwgMjsgIC8vIHN3IDw8IDIK KworICAgICAgICB1WzBdID0gMDsKKyAgICAgICAgdVsxXSA9IDA7CisKKyAgICAgICAganBlZzIw MDBfYml0YnVmX3JlZmlsbF9iYWNrd2FyZHModmxjX3N0cmVhbSwgdmxjX2J1Zik7CisKKyAgICAg ICAgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisK KyAgICAgICAgICAgIGlmIChqcGVnMjAwMF9kZWNvZGVfbWVsX3N5bShtZWxfc3RhdGUsIG1lbF9z dHJlYW0sIERjdXAsIExjdXApID09IDEpIHsKKworICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19R MV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAg ICAgICAgIHVfcGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZs Y19idWYpOworCisgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9z dWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAg ICAgdV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhb SjJLX1EyXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxj X2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsK KyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2 bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVb SjJLX1ExXSA9IDIgKyB1X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArICh1X2V4dFtKMktf UTFdICogNCk7CisgICAgICAgICAgICAgICAgdVtKMktfUTJdID0gMiArIHVfcGZ4W0oyS19RMl0g KyB1X3NmeFtKMktfUTJdICsgKHVfZXh0W0oyS19RMl0gKiA0KTsKKworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3ByZWZp eCh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIGlmICh1X3BmeFtKMktf UTFdID4gMikgeworICAgICAgICAgICAgICAgICAgICB1W0oyS19RMl0gPSBqcGVnMjAwMF9iaXRi dWZfZ2V0X2JpdHNfbHNiKHZsY19zdHJlYW0sIDEsIHZsY19idWYpICsgMTsKKyAgICAgICAgICAg ICAgICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwg dV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAgIHVfZXh0W0oyS19R MV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZs Y19idWYpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVf cGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOwor ICAgICAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2 bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICAgICAg dV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJL X1EyXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2bGNf ZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYpOwor ICAgICAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29kZV91X2V4dGVuc2lv bih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICAg ICAgdVtKMktfUTJdID0gdV9wZnhbSjJLX1EyXSArIHVfc2Z4W0oyS19RMl0gKyAodV9leHRbSjJL X1EyXSAqIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBTZWUgUmVj LiBJVFUtVCBULjgxNCwgNy4zLjYoMykgKi8KKyAgICAgICAgICAgICAgICB1W0oyS19RMV0gPSB1 X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArICh1X2V4dFtKMktfUTFdICogNCk7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChyZXNfb2ZmW0oyS19RMV0gPT0gMSB8fCBy ZXNfb2ZmW0oyS19RMl0gPT0gMSkgeworICAgICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2Zm W0oyS19RMV0gPT0gMSA/IDAgOiAxOworICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19kZWNv ZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisgICAgICAgICAgICB1X3NmeFtwb3Nd ID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtwb3NdLCB2bGNfYnVmKTsK KyAgICAgICAgICAgIHVfZXh0W3Bvc10gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJl YW0sIHVfc2Z4W3Bvc10sIHZsY19idWYpOworICAgICAgICAgICAgdVtwb3NdID0gdV9wZnhbcG9z XSArIHVfc2Z4W3Bvc10gKyAodV9leHRbcG9zXSAqIDQpOworICAgICAgICB9CisgICAgICAgIFVb SjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07CisgICAgICAgIFVbSjJLX1EyXSA9 IGthcHBhW0oyS19RMl0gKyB1W0oyS19RMl07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCA0OyBpKyspIHsKKyAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsg aV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFdID4+IGkpICYgMSk7CisgICAgICAg ICAgICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBxMiArIGldICogVVtKMktfUTJdIC0gKChl bWJfcGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAgICAgICB9CisKKyAgICAgICAgcmVjb3Zl cl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHExLCBtX24sIGtub3duXzEsIGVtYl9w YXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEUsIG11X24sIERjdXAsIFBjdXAs IHBMU0IpOworCisgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1Ey LCBxMiwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAg ICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICBxICs9IDI7IC8vIE1v dmUgdG8gdGhlIG5leHQgcXVhZCBwYWlyCisgICAgfQorCisgICAgaWYgKHF1YWRfd2lkdGggJSAy ID09IDEpIHsKKyAgICAgICAgcTEgPSBxOworCisgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBf ZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY19jeHRfdmxjX3RhYmxl MCwgRGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0LCBMY3Vw LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjdXApKSA8IDAp CisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0 OyBpKyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1Ex XSA+PiBpKSAmIDE7CisKKyAgICAgICAgdVtKMktfUTFdID0gMDsKKworICAgICAgICBpZiAocmVz X29mZltKMktfUTFdID09IDEpIHsKKyAgICAgICAgICAgIHVfcGZ4W0oyS19RMV0gPSB2bGNfZGVj b2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAgICAgdV9zZnhbSjJL X1ExXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxj X2J1Zik7CisgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lv bih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgIHVbSjJL X1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFdICsgKHVfZXh0W0oyS19RMV0gKiA0 KTsKKyAgICAgICAgfQorCisgICAgICAgIFVbSjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oy S19RMV07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAg ICBtW0oyS19RMV1baV0gPSBzaWdtYV9uWzQgKiBxMSArIGldICogVVtKMktfUTFdIC0gKChlbWJf cGF0X2tbSjJLX1ExXSA+PiBpKSAmIDEpOworCisgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdf c2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisg ICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAg ICAgICBxKys7IC8vIG1vdmUgdG8gbmV4dCBxdWFkIHBhaXIKKyAgICB9CisKKyAgICAvKioKKyAg ICAgKiBJbml0aWFsIGxpbmUgcGFpciBlbmQuIEFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuIHJl cGxhY2UgbW9kdWxvCisgICAgICogb3BlcmF0aW9ucyB3aXRoIGNoZWNraW5nIGlmIGEgbnVtYmVy IGlzIGRpdmlzaWJsZSAsIHNpbmNlIHRoYXQncyB0aGUgb25seQorICAgICAqIHRoaW5nIHdlIG5l ZWQuIFRoaXMgaXMgcGFpcmVkIHdpdGggaXNfZGl2aXNpYmxlLiBDcmVkaXRzIHRvIERhbmllbCBM ZW1pcmUKKyAgICAgKiBibG9nIHBvc3QgWzFdLgorICAgICAqCisgICAgICogWzFdCisgICAgICog aHR0cHM6Ly9sZW1pcmUubWUvYmxvZy8yMDE5LzAyLzA4L2Zhc3Rlci1yZW1haW5kZXJzLXdoZW4t dGhlLWRpdmlzb3ItaXMtYS1jb25zdGFudC1iZWF0aW5nLWNvbXBpbGVycy1hbmQtbGliZGl2aWRl LworICAgICAqCisgICAgICogSXQncyBVQiBvbiB6ZXJvLCBidXQgdGhlIHNwZWMgZG9lc24ndCBh bGxvdyBhIHF1YWQgYmVpbmcgemVybywgc28gd2UKKyAgICAgKiBlcnJvciBvdXQgZWFybHkgaW4g Y2FzZSB0aGF0J3MgdGhlIGNhc2UuCisgICAgICovCisgICAgYyA9IHByZWNvbXB1dGVfYyhxdWFk X3dpZHRoKTsKKworICAgIGZvciAoaW50IHJvdyA9IDE7IHJvdyA8IHF1YWRfaGVpZ2h0OyByb3cr KykgeworICAgICAgICB3aGlsZSAoKHEgLSAocm93ICogcXVhZF93aWR0aCkpIDwgcXVhZF93aWR0 aCAtIDEgJiYgcSA8IChxdWFkX2hlaWdodCAqIHF1YWRfd2lkdGgpKSB7CisgICAgICAgICAgICBx MSA9IHE7CisgICAgICAgICAgICBxMiA9IHEgKyAxOworICAgICAgICAgICAgY29udGV4dDEgID0g c2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAgICAgICAgIGNvbnRleHQx ICs9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgM10gPDwgMjsgICAgICAgICAgICAg IC8vIG5lCisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExLCBjKSkgeworICAgICAg ICAgICAgICAgIGNvbnRleHQxIHw9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMV07 ICAgICAgICAgICAgICAgLy8gbncKKyAgICAgICAgICAgICAgICBjb250ZXh0MSArPSAoc2lnbWFf bls0ICogcTEgLSAxXSB8IHNpZ21hX25bNCAqIHExIC0gMl0pIDw8IDE7IC8vIHN3IHwgcQorICAg ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTEgKyAxLCBjKSkKKyAg ICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSAr IDVdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19l bWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNfY3h0X3ZsY190YWJsZTEsIERjdXAs IHNpZ19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktfUTEsIGNvbnRleHQxLCBMY3VwLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY3VwKSkKKyAg ICAgICAgICAgICAgICA8IDApCisgICAgICAgICAgICAgICAgZ290byBmcmVlOworCisgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgICAgICBzaWdtYV9u WzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBpKSAmIDE7CisKKyAgICAgICAgICAg IGNvbnRleHQyICA9IHNpZ21hX25bNCAqIChxMiAtIHF1YWRfd2lkdGgpICsgMV07CisgICAgICAg ICAgICBjb250ZXh0MiArPSBzaWdtYV9uWzQgKiAocTIgLSBxdWFkX3dpZHRoKSArIDNdIDw8IDI7 CisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEyLCBjKSkgeworICAgICAgICAgICAg ICAgIGNvbnRleHQyIHw9IHNpZ21hX25bNCAqIChxMiAtIHF1YWRfd2lkdGgpIC0gMV07CisgICAg ICAgICAgICAgICAgY29udGV4dDIgKz0gKHNpZ21hX25bNCAqIHEyIC0gMV0gfCBzaWdtYV9uWzQg KiBxMiAtIDJdKSA8PCAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19kaXZp c2libGUocTIgKyAxLCBjKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0MiB8PSBzaWdtYV9uWzQg KiAocTIgLSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0g anBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3Ry ZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNf Y3h0X3ZsY190YWJsZTEsIERjdXAsIHNpZ19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktf UTIsIGNvbnRleHQyLCBMY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQY3VwKSkKKyAgICAgICAgICAgICAgICA8IDApCisgICAgICAgICAgICAgICAg Z290byBmcmVlOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAg ICAgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiArIGldID0gKHNpZ19wYXRbSjJLX1EyXSA+PiBp KSAmIDE7CisKKyAgICAgICAgICAgIHVbSjJLX1ExXSA9IDA7CisgICAgICAgICAgICB1W0oyS19R Ml0gPSAwOworCisgICAgICAgICAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyh2 bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgaWYgKHJlc19vZmZbSjJLX1ExXSA9 PSAxICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAgICAgICAgICAgICAgdV9wZnhbSjJL X1ExXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisgICAgICAg ICAgICAgICAgdV9wZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwg dmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91 X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAg ICAgICB1X3NmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3Bm eFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2 bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYp OworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9u KHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMl0sIHZsY19idWYpOworCisgICAgICAgICAgICAgICAg dVtKMktfUTFdID0gdV9wZnhbSjJLX1ExXSArIHVfc2Z4W0oyS19RMV0gKyAodV9leHRbSjJLX1Ex XSA8PCAyKTsKKyAgICAgICAgICAgICAgICB1W0oyS19RMl0gPSB1X3BmeFtKMktfUTJdICsgdV9z ZnhbSjJLX1EyXSArICh1X2V4dFtKMktfUTJdIDw8IDIpOworCisgICAgICAgICAgICB9IGVsc2Ug aWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxIHx8IHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAg ICAgICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2ZmW0oyS19RMV0gPT0gMSA/IDAgOiAxOwor CisgICAgICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0 cmVhbSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgdV9zZnhbcG9zXSA9IHZsY19kZWNvZGVf dV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbcG9zXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAg ICAgdV9leHRbcG9zXSA9IHZsY19kZWNvZGVfdV9leHRlbnNpb24odmxjX3N0cmVhbSwgdV9zZnhb cG9zXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1W3Bvc10gPSB1X3BmeFtwb3NdICsg dV9zZnhbcG9zXSArICh1X2V4dFtwb3NdIDw8IDIpOworICAgICAgICAgICAgfQorICAgICAgICAg ICAgc3AgPSBzaWdfcGF0W0oyS19RMV07CisKKyAgICAgICAgICAgIGdhbW1hW0oyS19RMV0gPSAx OworCisgICAgICAgICAgICBpZiAoc3AgPT0gMCB8fCBzcCA9PSAxIHx8IHNwID09IDIgfHwgc3Ag PT0gNCB8fCBzcCA9PSA4KQorICAgICAgICAgICAgICAgIGdhbW1hW0oyS19RMV0gPSAwOworCisg ICAgICAgICAgICBzcCA9IHNpZ19wYXRbSjJLX1EyXTsKKworICAgICAgICAgICAgZ2FtbWFbSjJL X1EyXSA9IDE7CisKKyAgICAgICAgICAgIGlmIChzcCA9PSAwIHx8IHNwID09IDEgfHwgc3AgPT0g MiB8fCBzcCA9PSA0IHx8IHNwID09IDgpCisgICAgICAgICAgICAgICAgZ2FtbWFbSjJLX1EyXSA9 IDA7CisKKyAgICAgICAgICAgIEVfbltKMktfUTFdID0gRVs0ICogKHExIC0gcXVhZF93aWR0aCkg KyAxXTsKKyAgICAgICAgICAgIEVfbltKMktfUTJdID0gRVs0ICogKHEyIC0gcXVhZF93aWR0aCkg KyAxXTsKKworICAgICAgICAgICAgRV9uZVtKMktfUTFdID0gRVs0ICogKHExIC0gcXVhZF93aWR0 aCkgKyAzXTsKKyAgICAgICAgICAgIEVfbmVbSjJLX1EyXSA9IEVbNCAqIChxMiAtIHF1YWRfd2lk dGgpICsgM107CisKKyAgICAgICAgICAgIEVfbndbSjJLX1ExXSA9ICghaXNfZGl2aXNpYmxlKHEx LCBjKSkgKiBFW0ZGTUFYKCg0ICogKHExIC0gcXVhZF93aWR0aCkgLSAxKSwgMCldOworICAgICAg ICAgICAgRV9ud1tKMktfUTJdID0gKCFpc19kaXZpc2libGUocTIsIGMpKSAqIEVbRkZNQVgoKDQg KiAocTIgLSBxdWFkX3dpZHRoKSAtIDEpLCAwKV07CisKKyAgICAgICAgICAgIEVfbmZbSjJLX1Ex XSA9ICghaXNfZGl2aXNpYmxlKHExICsgMSwgYykpICogRVs0ICogKHExIC0gcXVhZF93aWR0aCkg KyA1XTsKKyAgICAgICAgICAgIEVfbmZbSjJLX1EyXSA9ICghaXNfZGl2aXNpYmxlKHEyICsgMSwg YykpICogRVs0ICogKHEyIC0gcXVhZF93aWR0aCkgKyA1XTsKKworICAgICAgICAgICAgbWF4X2Vb SjJLX1ExXSA9IEZGTUFYKEVfbndbSjJLX1ExXSwgRkZNQVgzKEVfbltKMktfUTFdLCBFX25lW0oy S19RMV0sIEVfbmZbSjJLX1ExXSkpOworICAgICAgICAgICAgbWF4X2VbSjJLX1EyXSA9IEZGTUFY KEVfbndbSjJLX1EyXSwgRkZNQVgzKEVfbltKMktfUTJdLCBFX25lW0oyS19RMl0sIEVfbmZbSjJL X1EyXSkpOworCisgICAgICAgICAgICBrYXBwYVtKMktfUTFdID0gRkZNQVgoMSwgZ2FtbWFbSjJL X1ExXSAqIChtYXhfZVtKMktfUTFdIC0gMSkpOworICAgICAgICAgICAga2FwcGFbSjJLX1EyXSA9 IEZGTUFYKDEsIGdhbW1hW0oyS19RMl0gKiAobWF4X2VbSjJLX1EyXSAtIDEpKTsKKworICAgICAg ICAgICAgVVtKMktfUTFdID0ga2FwcGFbSjJLX1ExXSArIHVbSjJLX1ExXTsKKyAgICAgICAgICAg IFVbSjJLX1EyXSA9IGthcHBhW0oyS19RMl0gKyB1W0oyS19RMl07CisKKyAgICAgICAgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVtKMktfUTFdW2ld ID0gc2lnbWFfbls0ICogcTEgKyBpXSAqIFVbSjJLX1ExXSAtICgoZW1iX3BhdF9rW0oyS19RMV0g Pj4gaSkgJiAxKTsKKyAgICAgICAgICAgICAgICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBx MiArIGldICogVVtKMktfUTJdIC0gKChlbWJfcGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBK MktfUTEsIHExLCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAg cmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTIsIHEyLCBtX24sIGtub3duXzEs IGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBE Y3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAgcSArPSAyOyAvLyBNb3ZlIHRvIHRoZSBu ZXh0IHF1YWQgcGFpcgorICAgICAgICB9CisKKyAgICAgICAgaWYgKHF1YWRfd2lkdGggJSAyID09 IDEpIHsKKyAgICAgICAgICAgIHExID0gcTsKKworICAgICAgICAgICAgLyogY2FsY3VsYXRlIGNv bnRleHQgZm9yIGN1cnJlbnQgcXVhZCAqLworICAgICAgICAgICAgY29udGV4dDEgID0gc2lnbWFf bls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAgICAgICAgIGNvbnRleHQxICs9IChz aWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdIDw8IDIpOworCisgICAgICAgICAgICBp ZiAoIWlzX2RpdmlzaWJsZShxMSwgYykpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBz aWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSAtIDFdOworICAgICAgICAgICAgICAgIGNvbnRl eHQxICs9IChzaWdtYV9uWzQgKiBxMSAtIDFdIHwgc2lnbWFfbls0ICogcTEgLSAyXSkgPDwgMTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExICsgMSwgYykp CisgICAgICAgICAgICAgICAgY29udGV4dDEgfD0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0 aCkgKyA1XSA8PCAyOworCisgICAgICAgICAgICBpZiAoKHJldCA9IGpwZWcyMDAwX2RlY29kZV9z aWdfZW1iKHMsIG1lbF9zdGF0ZSwgbWVsX3N0cmVhbSwgdmxjX3N0cmVhbSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjX2N4dF92bGNfdGFibGUxLCBE Y3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJLX1ExLCBjb250ZXh0MSwgTGN1 cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGN1cCkp IDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgIHNpZ21hX25bNCAqIHExICsgaV0g PSAoc2lnX3BhdFtKMktfUTFdID4+IGkpICYgMTsKKworICAgICAgICAgICAgdVtKMktfUTFdID0g MDsKKworICAgICAgICAgICAgLyogUmVjb3ZlciBtYWdfc2duIHZhbHVlICovCisgICAgICAgICAg ICBpZiAocmVzX29mZltKMktfUTFdID09IDEpIHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktf UTFdID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKyAgICAgICAg ICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1 X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0g dmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVm KTsKKworICAgICAgICAgICAgICAgIHVbSjJLX1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtK MktfUTFdICsgKHVfZXh0W0oyS19RMV0gPDwgMik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIHNwID0gc2lnX3BhdFtKMktfUTFdOworCisgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0g MTsKKworICAgICAgICAgICAgaWYgKHNwID09IDAgfHwgc3AgPT0gMSB8fCBzcCA9PSAyIHx8IHNw ID09IDQgfHwgc3AgPT0gOCkKKyAgICAgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMDsKKwor ICAgICAgICAgICAgRV9uW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDFdOwor CisgICAgICAgICAgICBFX25lW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNd OworCisgICAgICAgICAgICBFX253W0oyS19RMV0gPSAoIWlzX2RpdmlzaWJsZShxMSwgYykpICog RVtGRk1BWCgoNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMSksIDApXTsKKworICAgICAgICAgICAg RV9uZltKMktfUTFdID0gKCFpc19kaXZpc2libGUocTEgKyAxLCBjKSkgKiBFWzQgKiAocTEgLSBx dWFkX3dpZHRoKSArIDVdOworCisgICAgICAgICAgICBtYXhfZVtKMktfUTFdID0gRkZNQVgoRV9u d1tKMktfUTFdLCBGRk1BWDMoRV9uW0oyS19RMV0sIEVfbmVbSjJLX1ExXSwgRV9uZltKMktfUTFd KSk7CisKKyAgICAgICAgICAgIGthcHBhW0oyS19RMV0gPSBGRk1BWCgxLCBnYW1tYVtKMktfUTFd ICogKG1heF9lW0oyS19RMV0gLSAxKSk7CisKKyAgICAgICAgICAgIFVbSjJLX1ExXSA9IGthcHBh W0oyS19RMV0gKyB1W0oyS19RMV07CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg NDsgaSsrKQorICAgICAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsg aV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFdID4+IGkpICYgMSk7CisKKyAgICAg ICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBr bm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSwg bXVfbiwgRGN1cCwgUGN1cCwgcExTQik7CisgICAgICAgICAgICBxICs9IDE7CisgICAgICAgIH0K KyAgICB9CisKKyAgICAvLyBjb252ZXJ0IHRvIHJhc3Rlci1zY2FuCisgICAgZm9yIChpbnQgeSA9 IDA7IHkgPCBxdWFkX2hlaWdodDsgeSsrKSB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg cXVhZF93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBpbnQgajEsIGoyOworICAgICAgICAgICAg aW50IHgxLCB4MiAsIHgzOworCisgICAgICAgICAgICBqMSA9IDIgKiB5OworICAgICAgICAgICAg ajIgPSAyICogeDsKKworICAgICAgICAgICAgc2FtcGxlX2J1ZltqMiArIChqMSAqIHdpZHRoKV0g PSAoaW50MzJfdCkqbXU7CisgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoajEsIGoy LCB3aWR0aCwgKnNpZ21hLCBibG9ja19zdGF0ZXMpOworICAgICAgICAgICAgc2lnbWEgKz0gMTsK KyAgICAgICAgICAgIG11ICs9IDE7CisKKyAgICAgICAgICAgIHgxID0geSAhPSBxdWFkX2hlaWdo dCAtIDEgfHwgaXNfYm9yZGVyX3kgPT0gMDsKKyAgICAgICAgICAgIHNhbXBsZV9idWZbajIgKyAo KGoxICsgMSkgKiB3aWR0aCldID0gKChpbnQzMl90KSptdSkgKiB4MTsKKyAgICAgICAgICAgIGpw ZWcyMDAwX21vZGlmeV9zdGF0ZShqMSArIDEsIGoyLCB3aWR0aCwgKCpzaWdtYSkgKiB4MSwgYmxv Y2tfc3RhdGVzKTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAx OworCisgICAgICAgICAgICB4MiA9IHggIT0gcXVhZF93aWR0aCAtIDEgfHwgaXNfYm9yZGVyX3gg PT0gMDsKKyAgICAgICAgICAgIHNhbXBsZV9idWZbKGoyICsgMSkgKyAoajEgKiB3aWR0aCldID0g KChpbnQzMl90KSptdSkgKiB4MjsKKyAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShq MSwgajIgKyAxLCB3aWR0aCwgKCpzaWdtYSkgKiB4MiwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAg ICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAxOworCisgICAgICAgICAgICB4MyA9 IHgxIHwgeDI7CisgICAgICAgICAgICBzYW1wbGVfYnVmWyhqMiArIDEpICsgKGoxICsgMSkgKiB3 aWR0aF0gPSAoKGludDMyX3QpKm11KSAqIHgzOworICAgICAgICAgICAganBlZzIwMDBfbW9kaWZ5 X3N0YXRlKGoxICsgMSwgajIgKyAxLCB3aWR0aCwgKCpzaWdtYSkgKiB4MywgYmxvY2tfc3RhdGVz KTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAxOworICAgICAg ICB9CisgICAgfQorICAgIHJldCA9IDE7CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzaWdtYV9uKTsK KyAgICBhdl9mcmVlcCgmRSk7CisgICAgYXZfZnJlZXAoJm11X24pOworICAgIHJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2NhbGNfbWJyKHVpbnQ4X3QgKm1iciwgY29uc3Qg dWludDE2X3QgaSwgY29uc3QgdWludDE2X3QgaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQzMl90IG1icl9pbmZvLCB1aW50OF90IGNhdXNhbF9jb25kLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYmxvY2tfc3RhdGVzLCBpbnQgd2lkdGgp Cit7CisgICAgaW50IGxvY2FsX21iciA9IDA7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBf Z2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0 ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAwLCB3 aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7CisgICAgbG9jYWxfbWJyIHw9IGpw ZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxv Y2tfc3RhdGVzKTsKKworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAs IGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7CisgICAgbG9jYWxf bWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9T SUdNQSwgYmxvY2tfc3RhdGVzKTsKKworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3Rh dGUoaSArIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgKiBj YXVzYWxfY29uZDsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBq ICsgMCwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpICogY2F1c2FsX2NvbmQ7 CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDEsIHdpZHRo LCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOworCisgICAgbG9j YWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElG VF9SRUYsICAgYmxvY2tfc3RhdGVzKSAqCisgICAgICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9z dGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCAgYmxvY2tfc3RhdGVzKTsK KyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqICsgMCwgd2lkdGgs IEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKKyAgICAgICAgICAgICAgICAganBlZzIw MDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sICBibG9ja19z dGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAx LCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRlcykgKgorICAgICAgICAgICAgICAg ICBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwg IGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkg KyAwLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKKyAgICAg ICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqIC0gMSwgd2lkdGgsIEhUX1NI SUZUX1NDQU4sICBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRf c3RhdGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRlcykg KgorICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGogKyAxLCB3aWR0 aCwgSFRfU0hJRlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0ganBl ZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgIGJsb2Nr X3N0YXRlcykgKgorICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGog LSAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3RhdGVzKSAqIGNhdXNhbF9jb25kOwor ICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogKyAwLCB3aWR0aCwg SFRfU0hJRlRfUkVGLCAgYmxvY2tfc3RhdGVzKSAqCisgICAgICAgICAgICAgICAgIGpwZWcyMDAw X2dldF9zdGF0ZShpICsgMSwgaiArIDAsIHdpZHRoLCBIVF9TSElGVF9TQ0FOLCBibG9ja19zdGF0 ZXMpICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShp ICsgMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9SRUYsICBibG9ja19zdGF0ZXMpICoKKyAgICAg ICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMSwgd2lkdGgsIEhUX1NI SUZUX1NDQU4sIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKKworICAgICptYnIgfD0gbG9j YWxfbWJyOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2so U3RhdGVWYXJzICpzaWdfcHJvcCwgaW50IGlfcywgaW50IGpfcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJp ZGUsIGludCBwTFNCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICptYWdyZWZfc2VnbWVudCwg dWludDMyX3QgbWFncmVmX2xlbmd0aCkKK3sKKyAgICBmb3IgKGludCBqID0gal9zOyBqIDwgal9z ICsgd2lkdGg7IGorKykgeworICAgICAgICB1aW50MzJfdCAgbWJyX2luZm8gPSAwOworICAgICAg ICBmb3IgKGludCBpID0gaV9zOyBpIDwgaV9zICsgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAg IGludCBtb2RpZnlfc3RhdGUsIGNvbmQ7CisgICAgICAgICAgICB1aW50OF90IGJpdDsKKyAgICAg ICAgICAgIHVpbnQ4X3QgY2F1c2FsX2NvbmQgPSBpICE9IChpX3MgKyBoZWlnaHQgLSAxKTsKKyAg ICAgICAgICAgIGludDMyX3QgKnNwID0gJnNhbXBsZV9idWZbaiArIChpICogKHN0cmlkZSAtIDIp KV07CisgICAgICAgICAgICB1aW50OF90IG1iciA9IDA7CisKKyAgICAgICAgICAgIGlmIChqcGVn MjAwMF9nZXRfc3RhdGUoaSwgaiwgc3RyaWRlIC0gMiwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0 YXRlcykgPT0gMCkKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9jYWxjX21icigmbWJyLCBpLCBq LCBtYnJfaW5mbyAmIDB4MUVGLCBjYXVzYWxfY29uZCwgYmxvY2tfc3RhdGVzLCBzdHJpZGUgLSAy KTsKKyAgICAgICAgICAgIG1icl9pbmZvID4+PSAzOworICAgICAgICAgICAgY29uZCA9IG1iciAh PSAwOworICAgICAgICAgICAgYml0ID0ganBlZzIwMDBfcGVla19iaXQoc2lnX3Byb3AsIG1hZ3Jl Zl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKTsKKyAgICAgICAgICAgICpzcCB8PSAoYml0ICogY29u ZCkgPDwgcExTQjsKKyAgICAgICAgICAgIHNpZ19wcm9wLT5iaXRzIC09IGNvbmQ7CisgICAgICAg ICAgICBtb2RpZnlfc3RhdGUgPSAoKCgxIDw8IEhUX1NISUZUX1JFRl9JTkQpIHwgKDEgPDwgSFRf U0hJRlRfUkVGKSkgKiBjb25kKSB8IDEgPDwgSFRfU0hJRlRfU0NBTjsKKyAgICAgICAgICAgIGpw ZWcyMDAwX21vZGlmeV9zdGF0ZShpLCBqLCBzdHJpZGUgLSAyLCBtb2RpZnlfc3RhdGUsIGJsb2Nr X3N0YXRlcyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKgorICogU2VlIHByb2NlZHVyZSBk ZWNvZGVTaWdQcm9wTWFnIGF0IFJlYy4gSVRVLVQgVC44MTQsIDcuNC4KKyovCithdl9ub2lubGlu ZQorc3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChKcGVnMjAwMENi bGsgKmNibGssIHVpbnQxNl90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MTZfdCBoZWlnaHQsIHVpbnQ4X3QgKm1hZ3JlZl9zZWdtZW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBtYWdy ZWZfbGVuZ3RoLCB1aW50OF90IHBMU0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykK K3sKKyAgICBTdGF0ZVZhcnMgc3BfZGVjOworCisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3Ry aXBlID0gaGVpZ2h0IC8gNDsKKyAgICBjb25zdCB1aW50MTZfdCBudW1faF9zdHJpcGUgPSB3aWR0 aCAvIDQ7CisgICAgaW50IGJfd2lkdGggICAgICAgICAgICAgICAgID0gNDsKKyAgICBpbnQgYl9o ZWlnaHQgICAgICAgICAgICAgICAgPSA0OworICAgIGludCBzdHJpZGUgICAgICAgICAgICAgICAg ICA9IHdpZHRoICsgMjsKKworICAgIGludCBsYXN0X3dpZHRoOworICAgIHVpbnQxNl90IGkgPSAw LCBqID0gMDsKKworICAgIGpwZWcyMDAwX2luaXRfemVybygmc3BfZGVjKTsKKworICAgIGZvciAo aW50IG4xID0gMDsgbjEgPCBudW1fdl9zdHJpcGU7IG4xKyspIHsKKyAgICAgICAgaiA9IDA7Cisg ICAgICAgIGZvciAoaW50IG4yID0gMDsgbjIgPCBudW1faF9zdHJpcGU7IG4yKyspIHsKKyAgICAg ICAgICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBiX3dp ZHRoLCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBMU0IsIHNhbXBsZV9idWYsIGJsb2NrX3N0YXRlcywgbWFncmVmX3NlZ21lbnQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFncmVmX2xlbmd0 aCk7CisgICAgICAgICAgICBqICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgbGFzdF93aWR0aCA9 IHdpZHRoICUgNDsKKyAgICAgICAgaWYgKGxhc3Rfd2lkdGgpCisgICAgICAgICAgICBqcGVnMjAw MF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwgaiwgbGFzdF93aWR0aCwgYl9oZWln aHQsIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw TFNCLCBzYW1wbGVfYnVmLCBibG9ja19zdGF0ZXMsIG1hZ3JlZl9zZWdtZW50LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworICAgICAg ICBpICs9IDQ7CisgICAgfQorCisgICAgLyogRGVjb2RlIHJlbWFpbmluZyBoZWlnaHQgc3RyaXBl cyAqLworICAgIGJfaGVpZ2h0ID0gaGVpZ2h0ICUgNDsKKyAgICBqID0gMDsKKyAgICBmb3IgKGlu dCBuMiA9IDA7IG4yIDwgbnVtX2hfc3RyaXBlOyBuMisrKSB7CisgICAgICAgIGpwZWcyMDAwX3By b2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBiX3dpZHRoLCBiX2hlaWdodCwgc3Ry aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExTQiwgc2FtcGxl X2J1ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworICAgICAgICBqICs9IDQ7CisgICAg fQorICAgIGxhc3Rfd2lkdGggPSB3aWR0aCAlIDQ7CisgICAgaWYgKGxhc3Rfd2lkdGgpCisgICAg ICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBsYXN0X3dp ZHRoLCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOworfQor CisvKioKKyAqIFNlZSBwcm9jZWR1cmUgZGVjb2RlU2lnUHJvcE1hZyBhdCBSZWMuIElUVS1UIFQu ODE0LCA3LjUuCisqLworc3RhdGljIGludAoranBlZzIwMDBfZGVjb2RlX21hZ3JlZl9zZWdtZW50 KEpwZWcyMDAwQ2JsayAqY2JsaywgdWludDE2X3Qgd2lkdGgsIHVpbnQxNl90IGJsb2NrX2hlaWdo dCwgdWludDhfdCAqbWFncmVmX3NlZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IG1hZ3JlZl9sZW5ndGgsIHVpbnQ4X3QgcExTQiwgaW50MzJfdCAqc2FtcGxlX2J1ZiwgdWlu dDhfdCAqYmxvY2tfc3RhdGVzKQoreworCisgICAgU3RhdGVWYXJzIG1hZ19yZWYgICAgICAgICAg ID0geyAwIH07CisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zfc3RyaXBlID0gYmxvY2tfaGVpZ2h0 IC8gNDsKKyAgICB1aW50MTZfdCBoZWlnaHQgICAgICAgICAgICAgPSA0OworICAgIHVpbnQxNl90 IGlfc3RhcnQgICAgICAgICAgICA9IDA7CisgICAgaW50MzJfdCAqc3A7CisKKyAgICBqcGVnMjAw MF9pbml0X21hZ19yZWYoJm1hZ19yZWYsIG1hZ3JlZl9sZW5ndGgpOworCisgICAgZm9yIChpbnQg bjEgPSAwOyBuMSA8IG51bV92X3N0cmlwZTsgbjErKykgeworICAgICAgICBmb3IgKGludCBqID0g MDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBpX3N0YXJ0OyBp IDwgaV9zdGFydCArIGhlaWdodDsgaSsrKSB7CisgICAgICAgICAgICAgICAgLyoqCisgICAgICAg ICAgICAgICAgICogIFdlIG1vdmUgY29sdW1uIHdpc2UsIGdvaW5nIGZyb20gb25lIHF1YWQgdG8g YW5vdGhlci4gU2VlCisgICAgICAgICAgICAgICAgICogIFJlYy4gSVRVLVQgVC44MTQsIEZpZ3Vy ZSA3LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHNwID0gJnNhbXBsZV9i dWZbaiArIGkgKiB3aWR0aF07CisgICAgICAgICAgICAgICAgaWYgKGpwZWcyMDAwX2dldF9zdGF0 ZShpLCBqLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgIT0gMCkgeworICAg ICAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoaSwgaiwgd2lkdGgsIDEgPDwg SFRfU0hJRlRfUkVGX0lORCwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgICAgICAgICAgKnNw IHw9IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0KCZtYWdfcmVmLCBtYWdyZWZfc2VnbWVudCwg bWFncmVmX2xlbmd0aCkgPDwgcExTQjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICAgICAgaV9zdGFydCArPSA0OworICAgIH0KKyAgICBoZWlnaHQgPSBi bG9ja19oZWlnaHQgJSA0OworICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewor ICAgICAgICBmb3IgKGludCBpID0gaV9zdGFydDsgaSA8IGlfc3RhcnQgKyBoZWlnaHQ7IGkrKykg eworICAgICAgICAgICAgc3AgPSAmc2FtcGxlX2J1ZltqICsgaSAqIHdpZHRoXTsKKyAgICAgICAg ICAgIGlmIChqcGVnMjAwMF9nZXRfc3RhdGUoaSwgaiwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBi bG9ja19zdGF0ZXMpICE9IDApIHsKKyAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3Rh dGUoaSwgaiwgd2lkdGgsIDEgPDwgSFRfU0hJRlRfUkVGX0lORCwgYmxvY2tfc3RhdGVzKTsKKyAg ICAgICAgICAgICAgICAqc3AgfD0ganBlZzIwMDBfaW1wb3J0X21hZ3JlZl9iaXQoJm1hZ19yZWYs IG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKSA8PCBwTFNCOworICAgICAgICAgICAgfQor ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQorCisKK2ludAorZmZfanBlZzIwMDBf ZGVjb2RlX2h0ajJrKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwQ29k aW5nU3R5bGUgKmNvZHN0eSwgSnBlZzIwMDBUMUNvbnRleHQgKnQxLCBKcGVnMjAwMENibGsgKmNi bGssCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQg bWFncCwgdWludDhfdCByb2lfc2hpZnQpCit7CisgICAgdWludDhfdCBwMCA9IDA7ICAgICAgICAg ICAgIC8vIE51bWJlciBvZiBwbGFjZWhvbGRlciBwYXNzZXMKKyAgICB1aW50MzJfdCBMY3VwOyAg ICAgICAgICAgICAgLy8gTGVuZ3RoIG9mIEhUIGNsZWFudXAgc2VnbWVudAorICAgIHVpbnQzMl90 IExyZWY7ICAgICAgICAgICAgICAvLyBMZW5ndGggb2YgUmVmaW5lbWVudCBzZWdtZW50CisgICAg dWludDMyX3QgU2N1cDsgICAgICAgICAgICAgIC8vIEhUIGNsZWFudXAgc2VnbWVudCBzdWZmaXgg bGVuZ3RoCisgICAgdWludDMyX3QgUGN1cDsgICAgICAgICAgICAgIC8vIEhUIGNsZWFudXAgc2Vn bWVudCBwcmVmaXggbGVuZ3RoCisKKyAgICB1aW50OF90IFNfYmxrOyAgICAgICAgICAgICAgLy8g TnVtYmVyIG9mIHNraXBwZWQgbWFnbml0dWRlIGJpdHBsYW5lcworICAgIHVpbnQ4X3QgcExTQjsK KworICAgIHVpbnQ4X3QgKkRjdXA7ICAgICAgICAgICAgICAvLyBCeXRlIG9mIGFuIEhUIGNsZWFu dXAgc2VnbWVudAorICAgIHVpbnQ4X3QgKkRyZWY7ICAgICAgICAgICAgICAvLyBCeXRlIG9mIGFu IEhUIHJlZmluZW1lbnQgc2VnbWVudAorCisgICAgaW50IHpfYmxrOyAgICAgICAgICAgICAgICAg IC8vIE51bWJlciBvZiBodCBjb2RpbmcgcGFzcworCisgICAgdWludDhfdCBlbXB0eV9wYXNzZXM7 CisKKyAgICBTdGF0ZVZhcnMgbWFnX3NnbjsgICAgICAgICAgLy8gTWFnbml0dWRlIGFuZCBTaWdu CisgICAgU3RhdGVWYXJzIG1lbDsgICAgICAgICAgICAgIC8vIEFkYXB0aXZlIHJ1bi1sZW5ndGgg Y29kaW5nCisgICAgU3RhdGVWYXJzIHZsYzsgICAgICAgICAgICAgIC8vIFZhcmlhYmxlIExlbmd0 aCBjb2RpbmcKKyAgICBTdGF0ZVZhcnMgc2lnX3Byb3A7ICAgICAgICAgLy8gU2lnbmlmaWNhbmNl IHByb3BhZ2F0aW9uCisKKyAgICBNZWxEZWNvZGVyU3RhdGUgbWVsX3N0YXRlOworCisgICAgaW50 IHJldDsKKworICAgIC8qIFRlbXBvcmFyeSBidWZmZXJzICovCisgICAgaW50MzJfdCAqc2FtcGxl X2J1ZjsKKyAgICB1aW50OF90ICpibG9ja19zdGF0ZXM7CisKKyAgICBpbnQzMl90IG4sIHZhbDsg ICAgICAgICAgICAgLy8gUG9zdC1wcm9jZXNzaW5nCisKKyAgICBpbnQzMl90IE1fYiA9IG1hZ3A7 CisKKyAgICAvKiBjb2RlYmxvY2sgc2l6ZSBhcyBjb25zdHJhaW5lZCBieSBSZWMuIElUVS1UIFQu ODAwLCBUYWJsZSBBLjE4ICovCisgICAgYXZfYXNzZXJ0MCh3aWR0aCA8PSAxMDI0VSAmJiBoZWln aHQgPD0gMTAyNFUpOworICAgIGF2X2Fzc2VydDAod2lkdGggKiBoZWlnaHQgPD0gNDA5Nik7Cisg ICAgYXZfYXNzZXJ0MCh3aWR0aCAqIGhlaWdodCA+IDApOworCisgICAgbWVtc2V0KHQxLT5kYXRh LCAwLCB0MS0+c3RyaWRlICogaGVpZ2h0ICogc2l6ZW9mKCp0MS0+ZGF0YSkpOworICAgIG1lbXNl dCh0MS0+ZmxhZ3MsIDAsIHQxLT5zdHJpZGUgKiAoaGVpZ2h0ICsgMikgKiBzaXplb2YoKnQxLT5m bGFncykpOworCisgICAgaWYgKGNibGstPm5wYXNzZXMgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7 CisKKyAgICBpZiAoY2Jsay0+bnBhc3NlcyA+IDMpCisgICAgICAgIHAwID0gMDsKKyAgICBlbHNl IGlmIChjYmxrLT5sZW5ndGggPT0gMCkKKyAgICAgICAgcDAgPSAxOworCisgICAgZW1wdHlfcGFz c2VzID0gcDAgKiAzOworICAgIHpfYmxrID0gY2Jsay0+bnBhc3NlcyAtIGVtcHR5X3Bhc3NlczsK KworICAgIGlmICh6X2JsayA8PSAwKQorICAgICAgICByZXR1cm4gMDsgLy8gTm8gcGFzc2VzIHdp dGhpbiB0aGlzIHNldCwgY29udGludWUKKworICAgIExjdXAgPSBjYmxrLT5wYXNzX2xlbmd0aHNb MF07CisgICAgTHJlZiA9IGNibGstPnBhc3NfbGVuZ3Roc1sxXTsKKworICAgIGlmIChMY3VwIDwg MikgeworICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAg ICAgICJDbGVhbnVwIHBhc3MgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgMiBieXRlcyBpbiBsZW5n dGhcbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisgICAg RGN1cCA9IGNibGstPmRhdGE7CisgICAgRHJlZiAgPSBjYmxrLT5kYXRhICsgTGN1cDsgLy8gRHJl ZiBjb21lcyBhZnRlciB0aGUgcmVmaW5lbWVudCBzZWdtZW50CisgICAgU19ibGsgPSBwMCArIGNi bGstPnpicDsKKyAgICBwTFNCICA9IDMwIC0gU19ibGs7CisKKyAgICBTY3VwID0gKERjdXBbTGN1 cCAtIDFdIDw8IDQpICsgKERjdXBbTGN1cCAtIDJdICYgMHgwRik7CisKKyAgICBpZiAoU2N1cCA8 IDIgfHwgU2N1cCA+IExjdXAgfHwgU2N1cCA+IDQwNzkpIHsKKyAgICAgICAgYXZfbG9nKHMtPmF2 Y3R4LCBBVl9MT0dfRVJST1IsICJDbGVhbnVwIHBhc3Mgc3VmZml4IGxlbmd0aCBpcyBpbnZhbGlk ICVkXG4iLAorICAgICAgICAgICAgICAgU2N1cCk7CisgICAgICAgIHJldCA9IEFWRVJST1JfSU5W QUxJRERBVEE7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisgICAgUGN1cCA9IExjdXAgLSBT Y3VwOworCisgICAgLyogbW9kRGN1cCBzaGFsbCBiZSBkb25lIGJlZm9yZSB0aGUgY3JlYXRpb24g b2YgdmxjIGluc3RhbmNlLiAqLworICAgIERjdXBbTGN1cCAtIDFdID0gMHhGRjsKKyAgICBEY3Vw W0xjdXAgLSAyXSB8PSAweDBGOworCisgICAgLyogTWFnbml0dWRlIGFuZCByZWZpbmVtZW50ICov CisgICAganBlZzIwMDBfaW5pdF96ZXJvKCZtYWdfc2duKTsKKyAgICBqcGVnMjAwMF9iaXRidWZf cmVmaWxsX2ZvcndhcmQoJm1hZ19zZ24sIERjdXAsIFBjdXApOworCisgICAgLyogU2lnbmlmaWNh bmNlIHByb3BhZ2F0aW9uICovCisgICAganBlZzIwMDBfaW5pdF96ZXJvKCZzaWdfcHJvcCk7CisK KyAgICAvKiBBZGFwdGl2ZSBydW4gbGVuZ3RoICovCisgICAganBlZzIwMDBfaW5pdF9tZWwoJm1l bCwgUGN1cCk7CisKKyAgICAvKiBWYXJpYWJsZSBMZW5ndGggY29kaW5nICovCisgICAganBlZzIw MDBfaW5pdF92bGMoJnZsYywgTGN1cCwgUGN1cCwgRGN1cCk7CisKKyAgICBqcGVnMjAwMF9pbml0 X21lbF9kZWNvZGVyKCZtZWxfc3RhdGUpOworCisgICAgc2FtcGxlX2J1ZiA9IGF2X2NhbGxvYygo d2lkdGggKyA0KSAqIChoZWlnaHQgKyA0KSwgc2l6ZW9mKGludDMyX3QpKTsKKyAgICBibG9ja19z dGF0ZXMgPSBhdl9jYWxsb2MoKHdpZHRoICsgNCkgKiAoaGVpZ2h0ICsgNCksIHNpemVvZih1aW50 OF90KSk7CisKKyAgICBpZiAoIXNhbXBsZV9idWYgfHwgIWJsb2NrX3N0YXRlcykgeworICAgICAg ICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisgICAg aWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51cF9zZWdtZW50KHMsIGNibGssIHQx LCAmbWVsX3N0YXRlLCAmbWVsLCAmdmxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm1hZ19zZ24sIERjdXAsIExjdXAsIFBjdXAsIHBMU0IsIHdpZHRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBzYW1wbGVfYnVm LCBibG9ja19zdGF0ZXMpKSA8IDApCisgICAgICAgIGdvdG8gZnJlZTsKKworICAgIGlmIChjYmxr LT5ucGFzc2VzID4gMSkKKyAgICAgICAganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVudChj YmxrLCB3aWR0aCwgaGVpZ2h0LCBEcmVmLCBMcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwTFNCIC0gMSwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzKTsKKworICAgIGlmIChj YmxrLT5ucGFzc2VzID4gMikKKyAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfbWFn cmVmX3NlZ21lbnQoY2Jsaywgd2lkdGgsIGhlaWdodCwgRHJlZiwgTHJlZiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMU0IgLSAxLCBzYW1wbGVfYnVmLCBibG9j a19zdGF0ZXMpKSA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICBwTFNCID0gMzEg LSBNX2I7CisKKyAgICAvKiBSZWNvbnN0cnVjdCB0aGUgc2FtcGxlIHZhbHVlcyAqLworICAgIGZv ciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7 IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBuID0geCArICh5ICogdDEtPnN0cmlkZSk7 CisgICAgICAgICAgICB2YWwgPSBzYW1wbGVfYnVmW3ggKyAoeSAqIHdpZHRoKV07CisgICAgICAg ICAgICAvKiBDb252ZXJ0IHNpZ24tbWFnbml0dWRlIHRvIHR3bydzIGNvbXBsZW1lbnQuICovCisg ICAgICAgICAgICB2YWwgPSB2YWwgPj4gMzEgPyAweDgwMDAwMDAwIC0gdmFsIDogdmFsOworICAg ICAgICAgICAgdmFsID4+PSAocExTQiAtIDEpOworICAgICAgICAgICAgdDEtPmRhdGFbbl0gPSB2 YWw7CisgICAgICAgIH0KKyAgICB9CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzYW1wbGVfYnVmKTsK KyAgICBhdl9mcmVlcCgmYmxvY2tfc3RhdGVzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKioK KyAqIEN0eFZMQyB0YWJsZXMgKHNlZSBSZWMuIElUVS1UIFQuODAwLCBBbm5leCBDKSBhcyBmb3Vu ZCBhdAorICogaHR0cHM6Ly9naXRodWIuY29tL29zYW11NjIwL09wZW5IVEoySyAoYXV0aG9yOiBP c2FtdSBXYXRhbmFiZSkKKyAqLworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19jeHRfdmxjX3Rh YmxlMVsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHgwMERELCAw eDAwODYsIDB4ODg4QiwgMHgwMDI2LCAweDQ0NEQsIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4 ODhBRCwgMHgwMDg2LAorICAgICAgICAweDAwM0EsIDB4MDAyNiwgMHgwMERFLCAweDAwMTYsIDB4 MDBDQSwgMHgwMDQ2LCAweDAwOUQsIDB4MDA4NiwgMHgwMDVBLCAweDAwMjYsIDB4MjIyRCwgMHgw MDE2LCAweDAwOUEsCisgICAgICAgIDB4MDA0NiwgMHgwMDdELCAweDAwODYsIDB4MDFGRCwgMHgw MDI2LCAweDAwN0UsIDB4MDAxNiwgMHgwMDZBLCAweDAwNDYsIDB4ODhDRCwgMHgwMDg2LCAweDg4 OEIsIDB4MDAyNiwKKyAgICAgICAgMHgxMTFELCAweDAwMTYsIDB4MDBBQSwgMHgwMDQ2LCAweDAw NUQsIDB4MDA4NiwgMHgwMDNBLCAweDAwMjYsIDB4MDBFRSwgMHgwMDE2LCAweDAwQ0EsIDB4MDA0 NiwgMHgwMEJELAorICAgICAgICAweDAwODYsIDB4MDA1QSwgMHgwMDI2LCAweDExRkYsIDB4MDAx NiwgMHgwMDlBLCAweDAwNDYsIDB4MDAzRCwgMHgwMDg2LCAweDA0RUQsIDB4MDAyNiwgMHgyQUFG LCAweDAwMTYsCisgICAgICAgIDB4MDA2QSwgMHgwMDQ2LCAweDAwREQsIDB4MDA4NiwgMHg4ODhC LCAweDAwMjYsIDB4NDQ0RCwgMHgwMDE2LCAweDAwQUEsIDB4MDA0NiwgMHg4OEFELCAweDAwODYs IDB4MDAzQSwKKyAgICAgICAgMHgwMDI2LCAweDQ0RUYsIDB4MDAxNiwgMHgwMENBLCAweDAwNDYs IDB4MDA5RCwgMHgwMDg2LCAweDAwNUEsIDB4MDAyNiwgMHgyMjJELCAweDAwMTYsIDB4MDA5QSwg MHgwMDQ2LAorICAgICAgICAweDAwN0QsIDB4MDA4NiwgMHgwMUZELCAweDAwMjYsIDB4MDBCRSwg MHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHg4OENELCAweDAwODYsIDB4ODg4QiwgMHgwMDI2LCAw eDExMUQsCisgICAgICAgIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4MDA1RCwgMHgwMDg2LCAw eDAwM0EsIDB4MDAyNiwgMHg0Q0NGLCAweDAwMTYsIDB4MDBDQSwgMHgwMDQ2LCAweDAwQkQsIDB4 MDA4NiwKKyAgICAgICAgMHgwMDVBLCAweDAwMjYsIDB4MDBGRSwgMHgwMDE2LCAweDAwOUEsIDB4 MDA0NiwgMHgwMDNELCAweDAwODYsIDB4MDRFRCwgMHgwMDI2LCAweDAwNkYsIDB4MDAwMiwgMHgw MDg4LAorICAgICAgICAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgw MERFLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwOUMsIDB4MDAwMiwgMHgwMDRBLCAweDAw MDIsCisgICAgICAgIDB4MDA3RSwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMENDLCAweDAw MDIsIDB4MDAxOCwgMHgwMDAyLCAweDg4OEYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDBG RSwKKyAgICAgICAgMHgwMDAyLCAweDAwM0EsIDB4MDAwMiwgMHgyMjJGLCAweDAwMDIsIDB4MDA4 OCwgMHgwMDAyLCAweDA0RkQsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4MDBCRSwgMHgwMDAy LAorICAgICAgICAweDAwMjgsIDB4MDAwMiwgMHgwMEJGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAy LCAweDAwNkUsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAwMTgs CisgICAgICAgIDB4MDAwMiwgMHg0NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwRUUs IDB4MDAwMiwgMHgwMDNBLCAweDAwMDIsIDB4MTEzRiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwK KyAgICAgICAgMHgwMDVDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwQ0YsIDB4MDAwMiwg MHgwMDI4LCAweDAwMDIsIDB4MDA5QywgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDZGLAor ICAgICAgICAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAweDAwQ0MsIDB4MDAwMiwgMHgwMDE4LCAw eDAwMDIsIDB4MDA5RiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgwMEVGLCAweDAwMDIsCisg ICAgICAgIDB4MDAzQSwgMHgwMDAyLCAweDIzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4 MDRGRCwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEFGLCAweDAwMDIsIDB4MDAyOCwKKyAg ICAgICAgMHgwMDAyLCAweDQ0RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA1RiwgMHgw MDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLAorICAg ICAgICAweDAwN0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDBERiwgMHgwMDAyLCAweDAw M0EsIDB4MDAwMiwgMHgxMTFGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwNUMsCisgICAg ICAgIDB4MDAwMiwgMHgwMDhBLCAweDAwMDIsIDB4MDBCRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAw MiwgMHgwMEZFLCAweDAwMDIsIDB4MDBDQywgMHgwMDAyLCAweDAwN0UsIDB4MDAwMiwKKyAgICAg ICAgMHgwMDI4LCAweDAwMDIsIDB4OEZGRiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDdG LCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwREYsIDB4MDAwMiwgMHgwMEFDLAorICAgICAg ICAweDAwMDIsIDB4MTMzRiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgyMjJELCAweDAwMDIs IDB4MDA4QSwgMHgwMDAyLCAweDAwQkUsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsCisgICAgICAg IDB4NDRFRiwgMHgwMDAyLCAweDJBQUQsIDB4MDAwMiwgMHgwMDZFLCAweDAwMDIsIDB4MDAyOCwg MHgwMDAyLCAweDE1RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA5RSwKKyAgICAgICAg MHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMENGLCAweDAwMDIsIDB4MDAzQywgMHgwMDAyLCAw eDIyM0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLAorICAgICAgICAw eDAwOEEsIDB4MDAwMiwgMHgyQkJGLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDA0RUYsIDB4 MDAwMiwgMHgwMENDLCAweDAwMDIsIDB4MDA2RiwgMHgwMDAyLCAweDAwMjgsCisgICAgICAgIDB4 MDAwMiwgMHgyN0ZGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAweDAwOUYsIDB4MDAwMiwgMHgw MDE4LCAweDAwMDIsIDB4MDBERSwgMHgwMDAyLCAweDAwQUMsIDB4MDAwMiwKKyAgICAgICAgMHg0 NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDIyMkQsIDB4MDAwMiwgMHgwMDhBLCAweDAw MDIsIDB4OEFBRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEVFLAorICAgICAgICAweDAw MDIsIDB4MkFBRCwgMHgwMDAyLCAweDAwNUYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4NDRG RiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHg4ODhGLCAweDAwMDIsCisgICAgICAgIDB4MDAx OCwgMHgwMDAyLCAweEFBQUYsIDB4MDAwMiwgMHgwMDNDLCAweDAwMDIsIDB4MTExRiwgMHgwMDA0 LCAweDhGRkQsIDB4MDAyOCwgMHgwMDVDLCAweDAwMDQsIDB4MDBCQywKKyAgICAgICAgMHgwMDhB LCAweDY2RkYsIDB4MDAwNCwgMHgwMENELCAweDAwMTgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUMs IDB4MDAzQSwgMHg4QUFGLCAweDAwMDQsIDB4MDBGQywgMHgwMDI4LAorICAgICAgICAweDEzM0Qs IDB4MDAwNCwgMHgwMEFDLCAweDAwNEEsIDB4M0JCRiwgMHgwMDA0LCAweDJCQkQsIDB4MDAxOCwg MHg1RkZGLCAweDAwMDQsIDB4MDA2QywgMHgxNTdELCAweDQ1NUYsCisgICAgICAgIDB4MDAwNCwg MHgyRkZELCAweDAwMjgsIDB4MjIyRCwgMHgwMDA0LCAweDIyQUQsIDB4MDA4QSwgMHg0NEVGLCAw eDAwMDQsIDB4MDBDQywgMHgwMDE4LCAweDRGRkYsIDB4MDAwNCwKKyAgICAgICAgMHgwMDdDLCAw eDAwM0EsIDB4NDQ3RiwgMHgwMDA0LCAweDA0REQsIDB4MDAyOCwgMHgyMzNELCAweDAwMDQsIDB4 MDA5RCwgMHgwMDRBLCAweDAwREUsIDB4MDAwNCwgMHg4OEJELAorICAgICAgICAweDAwMTgsIDB4 QUZGRiwgMHgwMDA0LCAweDExNUQsIDB4MUZGRCwgMHg0NDRGLCAweDAwMDQsIDB4OEZGRCwgMHgw MDI4LCAweDAwNUMsIDB4MDAwNCwgMHgwMEJDLCAweDAwOEEsCisgICAgICAgIDB4OENFRiwgMHgw MDA0LCAweDAwQ0QsIDB4MDAxOCwgMHgxMTFELCAweDAwMDQsIDB4MDA5QywgMHgwMDNBLCAweDg4 OEYsIDB4MDAwNCwgMHgwMEZDLCAweDAwMjgsIDB4MTMzRCwKKyAgICAgICAgMHgwMDA0LCAweDAw QUMsIDB4MDA0QSwgMHg0NERGLCAweDAwMDQsIDB4MkJCRCwgMHgwMDE4LCAweDhBRkYsIDB4MDAw NCwgMHgwMDZDLCAweDE1N0QsIDB4MDA2RiwgMHgwMDA0LAorICAgICAgICAweDJGRkQsIDB4MDAy OCwgMHgyMjJELCAweDAwMDQsIDB4MjJBRCwgMHgwMDhBLCAweDAwRUUsIDB4MDAwNCwgMHgwMEND LCAweDAwMTgsIDB4MkVFRiwgMHgwMDA0LCAweDAwN0MsCisgICAgICAgIDB4MDAzQSwgMHgyNzdG LCAweDAwMDQsIDB4MDRERCwgMHgwMDI4LCAweDIzM0QsIDB4MDAwNCwgMHgwMDlELCAweDAwNEEs IDB4MUJCRiwgMHgwMDA0LCAweDg4QkQsIDB4MDAxOCwKKyAgICAgICAgMHgzN0ZGLCAweDAwMDQs IDB4MTE1RCwgMHgxRkZELCAweDMzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDJFRCwg MHgwMDAyLCAweDAwQ0EsIDB4MDAwMiwgMHg0Q0NGLAorICAgICAgICAweDAwMDIsIDB4MDA0OCwg MHgwMDAyLCAweDIzRkYsIDB4MDAwMiwgMHgwMDFBLCAweDAwMDIsIDB4ODg4RiwgMHgwMDAyLCAw eDAwODgsIDB4MDAwMiwgMHgwMDZDLCAweDAwMDIsCisgICAgICAgIDB4MDAyQSwgMHgwMDAyLCAw eDAwQUYsIDB4MDAwMiwgMHgwMDQ4LCAweDAwMDIsIDB4MjJFRiwgMHgwMDAyLCAweDAwQUMsIDB4 MDAwMiwgMHgwMDVGLCAweDAwMDIsIDB4MDA4OCwKKyAgICAgICAgMHgwMDAyLCAweDQ0NEQsIDB4 MDAwMiwgMHgwMENBLCAweDAwMDIsIDB4Q0NDRiwgMHgwMDAyLCAweDAwNDgsIDB4MDAwMiwgMHgw MEZFLCAweDAwMDIsIDB4MDAxQSwgMHgwMDAyLAorICAgICAgICAweDAwNkYsIDB4MDAwMiwgMHgw MDg4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMkEsIDB4MDAwMiwgMHgwMDlGLCAweDAw MDIsIDB4MDA0OCwgMHgwMDAyLCAweDAwREYsCisgICAgICAgIDB4MDAwMiwgMHgwM0ZELCAweDAw MDIsIDB4MjIyRiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMkVELCAweDAwMDIsIDB4MDBD QSwgMHgwMDAyLCAweDhDQ0YsIDB4MDAwMiwKKyAgICAgICAgMHgwMDQ4LCAweDAwMDIsIDB4MTFG RiwgMHgwMDAyLCAweDAwMUEsIDB4MDAwMiwgMHgwMDdFLCAweDAwMDIsIDB4MDA4OCwgMHgwMDAy LCAweDAwNkMsIDB4MDAwMiwgMHgwMDJBLAorICAgICAgICAweDAwMDIsIDB4MDA3RiwgMHgwMDAy LCAweDAwNDgsIDB4MDAwMiwgMHgwMEVFLCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAwM0Us IDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsCisgICAgICAgIDB4NDQ0RCwgMHgwMDAyLCAweDAwQ0Es IDB4MDAwMiwgMHgwMEJFLCAweDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAweDAwQkYsIDB4MDAwMiwg MHgwMDFBLCAweDAwMDIsIDB4MDAzRiwKKyAgICAgICAgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwg MHgwMDVDLCAweDAwMDIsIDB4MDAyQSwgMHgwMDAyLCAweDAwOUUsIDB4MDAwMiwgMHgwMDQ4LCAw eDAwMDIsIDB4MDBERSwgMHgwMDAyLAorICAgICAgICAweDAzRkQsIDB4MDAwMiwgMHgxMTFGLCAw eDAwMDQsIDB4OEFFRCwgMHgwMDQ4LCAweDg4OEQsIDB4MDAwNCwgMHgwMERDLCAweDAwQ0EsIDB4 M0ZGRiwgMHgwMDA0LCAweENGRkQsCisgICAgICAgIDB4MDAyQSwgMHgwMDNELCAweDAwMDQsIDB4 MDBCQywgMHgwMDVBLCAweDhEREYsIDB4MDAwNCwgMHg4RkZELCAweDAwNDgsIDB4MDA2QywgMHgw MDA0LCAweDAyN0QsIDB4MDA4QSwKKyAgICAgICAgMHg5OUZGLCAweDAwMDQsIDB4MDBFQywgMHgw MEZBLCAweDAwM0MsIDB4MDAwNCwgMHgwMEFDLCAweDAwMUEsIDB4MDA5RiwgMHgwMDA0LCAweDJG RkQsIDB4MDA0OCwgMHgwMDdDLAorICAgICAgICAweDAwMDQsIDB4NDRDRCwgMHgwMENBLCAweDY3 RkYsIDB4MDAwNCwgMHgxRkZELCAweDAwMkEsIDB4NDQ0RCwgMHgwMDA0LCAweDAwQUQsIDB4MDA1 QSwgMHg4Q0NGLCAweDAwMDQsCisgICAgICAgIDB4NEZGRCwgMHgwMDQ4LCAweDQ0NUQsIDB4MDAw NCwgMHgwMUJELCAweDAwOEEsIDB4NEVFRiwgMHgwMDA0LCAweDQ1REQsIDB4MDBGQSwgMHgxMTFE LCAweDAwMDQsIDB4MDA5QywKKyAgICAgICAgMHgwMDFBLCAweDIyMkYsIDB4MDAwNCwgMHg4QUVE LCAweDAwNDgsIDB4ODg4RCwgMHgwMDA0LCAweDAwREMsIDB4MDBDQSwgMHhBRkZGLCAweDAwMDQs IDB4Q0ZGRCwgMHgwMDJBLAorICAgICAgICAweDAwM0QsIDB4MDAwNCwgMHgwMEJDLCAweDAwNUEs IDB4MTFCRiwgMHgwMDA0LCAweDhGRkQsIDB4MDA0OCwgMHgwMDZDLCAweDAwMDQsIDB4MDI3RCwg MHgwMDhBLCAweDIyRUYsCisgICAgICAgIDB4MDAwNCwgMHgwMEVDLCAweDAwRkEsIDB4MDAzQywg MHgwMDA0LCAweDAwQUMsIDB4MDAxQSwgMHgyMjdGLCAweDAwMDQsIDB4MkZGRCwgMHgwMDQ4LCAw eDAwN0MsIDB4MDAwNCwKKyAgICAgICAgMHg0NENELCAweDAwQ0EsIDB4NURGRiwgMHgwMDA0LCAw eDFGRkQsIDB4MDAyQSwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDVBLCAweDAwNkYsIDB4 MDAwNCwgMHg0RkZELAorICAgICAgICAweDAwNDgsIDB4NDQ1RCwgMHgwMDA0LCAweDAxQkQsIDB4 MDA4QSwgMHgxMURGLCAweDAwMDQsIDB4NDVERCwgMHgwMEZBLCAweDExMUQsIDB4MDAwNCwgMHgw MDlDLCAweDAwMUEsCisgICAgICAgIDB4MTU1RiwgMHgwMDA2LCAweDAwRkMsIDB4MDAxOCwgMHgx MTFELCAweDAwNDgsIDB4ODg4RCwgMHgwMEFBLCAweDREREYsIDB4MDAwNiwgMHgyQUFELCAweDAw NUEsIDB4NjdGRiwKKyAgICAgICAgMHgwMDI4LCAweDIyM0QsIDB4MDBCQywgMHhBQUFGLCAweDAw MDYsIDB4MDBFQywgMHgwMDE4LCAweDVGRkYsIDB4MDA0OCwgMHgwMDZDLCAweDAwOEEsIDB4Q0ND RiwgMHgwMDA2LAorICAgICAgICAweDAwOUQsIDB4MDBDQSwgMHg0NEVGLCAweDAwMjgsIDB4MDAz QywgMHg4RkZELCAweDEzN0YsIDB4MDAwNiwgMHg4RUVELCAweDAwMTgsIDB4MUZGRiwgMHgwMDQ4 LCAweDAwN0MsCisgICAgICAgIDB4MDBBQSwgMHg0Q0NGLCAweDAwMDYsIDB4MjI3RCwgMHgwMDVB LCAweDFEREYsIDB4MDAyOCwgMHg0NDRELCAweDRGRkQsIDB4MTU1RiwgMHgwMDA2LCAweDAwREMs IDB4MDAxOCwKKyAgICAgICAgMHgyRUVGLCAweDAwNDgsIDB4NDQ1RCwgMHgwMDhBLCAweDIyQkYs IDB4MDAwNiwgMHgwMDlDLCAweDAwQ0EsIDB4OENERiwgMHgwMDI4LCAweDIyMkQsIDB4MkZGRCwg MHgyMjZGLAorICAgICAgICAweDAwMDYsIDB4MDBGQywgMHgwMDE4LCAweDExMUQsIDB4MDA0OCwg MHg4ODhELCAweDAwQUEsIDB4MUJCRiwgMHgwMDA2LCAweDJBQUQsIDB4MDA1QSwgMHgzM0ZGLCAw eDAwMjgsCisgICAgICAgIDB4MjIzRCwgMHgwMEJDLCAweDhBQUYsIDB4MDAwNiwgMHgwMEVDLCAw eDAwMTgsIDB4OUJGRiwgMHgwMDQ4LCAweDAwNkMsIDB4MDA4QSwgMHg4QUJGLCAweDAwMDYsIDB4 MDA5RCwKKyAgICAgICAgMHgwMENBLCAweDRFRUYsIDB4MDAyOCwgMHgwMDNDLCAweDhGRkQsIDB4 NDY2RiwgMHgwMDA2LCAweDhFRUQsIDB4MDAxOCwgMHhDRkZGLCAweDAwNDgsIDB4MDA3QywgMHgw MEFBLAorICAgICAgICAweDhDQ0YsIDB4MDAwNiwgMHgyMjdELCAweDAwNUEsIDB4QUVFRiwgMHgw MDI4LCAweDQ0NEQsIDB4NEZGRCwgMHg0NzdGLCAweDAwMDYsIDB4MDBEQywgMHgwMDE4LCAweEFG RkYsCisgICAgICAgIDB4MDA0OCwgMHg0NDVELCAweDAwOEEsIDB4MkJCRiwgMHgwMDA2LCAweDAw OUMsIDB4MDBDQSwgMHg0NERGLCAweDAwMjgsIDB4MjIyRCwgMHgyRkZELCAweDEzM0YsIDB4MDBG NiwKKyAgICAgICAgMHhBRkZELCAweDFGRkIsIDB4MDAzQywgMHgwMDA4LCAweDIzQkQsIDB4MDA3 QSwgMHgxMURGLCAweDAwRjYsIDB4NDVERCwgMHgyRkZCLCAweDRFRUYsIDB4MDBEQSwgMHgxNzdE LAorICAgICAgICAweENGRkQsIDB4Mzc3RiwgMHgwMEY2LCAweDNGRkQsIDB4OEZGQiwgMHgxMTFE LCAweDAwMDgsIDB4MDA5QywgMHgwMDVBLCAweDFCQkYsIDB4MDBGNiwgMHgwMENELCAweDAwQkEs CisgICAgICAgIDB4OERERiwgMHg0RkZCLCAweDAwNkMsIDB4OUJGRCwgMHg0NTVGLCAweDAwRjYs IDB4NjdGRCwgMHgxRkZCLCAweDAwMkMsIDB4MDAwOCwgMHgwMEFDLCAweDAwN0EsIDB4MDA5RiwK KyAgICAgICAgMHgwMEY2LCAweDAwQUQsIDB4MkZGQiwgMHg3RkZGLCAweDAwREEsIDB4MDA0Qywg MHg1RkZELCAweDQ3N0YsIDB4MDBGNiwgMHgwMEVDLCAweDhGRkIsIDB4MDAxQywgMHgwMDA4LAor ICAgICAgICAweDAwOEMsIDB4MDA1QSwgMHg4ODhGLCAweDAwRjYsIDB4MDBDQywgMHgwMEJBLCAw eDJFRUYsIDB4NEZGQiwgMHgxMTVELCAweDhBRUQsIDB4MTEzRiwgMHgwMEY2LCAweEFGRkQsCisg ICAgICAgIDB4MUZGQiwgMHgwMDNDLCAweDAwMDgsIDB4MjNCRCwgMHgwMDdBLCAweDFEREYsIDB4 MDBGNiwgMHg0NURELCAweDJGRkIsIDB4QkZGRiwgMHgwMERBLCAweDE3N0QsIDB4Q0ZGRCwKKyAg ICAgICAgMHg0NDdGLCAweDAwRjYsIDB4M0ZGRCwgMHg4RkZCLCAweDExMUQsIDB4MDAwOCwgMHgw MDlDLCAweDAwNUEsIDB4Mjc3RiwgMHgwMEY2LCAweDAwQ0QsIDB4MDBCQSwgMHgyMkVGLAorICAg ICAgICAweDRGRkIsIDB4MDA2QywgMHg5QkZELCAweDQ0NEYsIDB4MDBGNiwgMHg2N0ZELCAweDFG RkIsIDB4MDAyQywgMHgwMDA4LCAweDAwQUMsIDB4MDA3QSwgMHgxMUJGLCAweDAwRjYsCisgICAg ICAgIDB4MDBBRCwgMHgyRkZCLCAweEZGRkYsIDB4MDBEQSwgMHgwMDRDLCAweDVGRkQsIDB4MjMz RiwgMHgwMEY2LCAweDAwRUMsIDB4OEZGQiwgMHgwMDFDLCAweDAwMDgsIDB4MDA4QywKKyAgICAg ICAgMHgwMDVBLCAweDAwNkYsIDB4MDBGNiwgMHgwMENDLCAweDAwQkEsIDB4OEJCRiwgMHg0RkZC LCAweDExNUQsIDB4OEFFRCwgMHgyMjJGfTsKKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19j eHRfdmxjX3RhYmxlMFsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDI2LCAweDAwQUEsIDB4MDA0Niwg MHgwMDZDLCAweDAwODYsIDB4OEFFRCwgMHgwMDE4LCAweDhEREYsIDB4MDAyNiwgMHgwMUJELCAw eDAwNDYsIDB4NUZGRiwgMHgwMDg2LAorICAgICAgICAweDAyN0QsIDB4MDA1QSwgMHgxNTVGLCAw eDAwMjYsIDB4MDAzQSwgMHgwMDQ2LCAweDQ0NEQsIDB4MDA4NiwgMHg0Q0NELCAweDAwMTgsIDB4 Q0NDRiwgMHgwMDI2LCAweDJFRkQsCisgICAgICAgIDB4MDA0NiwgMHg5OUZGLCAweDAwODYsIDB4 MDA5QywgMHgwMENBLCAweDEzM0YsIDB4MDAyNiwgMHgwMEFBLCAweDAwNDYsIDB4NDQ1RCwgMHgw MDg2LCAweDhDQ0QsIDB4MDAxOCwKKyAgICAgICAgMHgxMURGLCAweDAwMjYsIDB4NEZGRCwgMHgw MDQ2LCAweENGRkYsIDB4MDA4NiwgMHgwMDlELCAweDAwNUEsIDB4MDA3RSwgMHgwMDI2LCAweDAw M0EsIDB4MDA0NiwgMHgxRkZGLAorICAgICAgICAweDAwODYsIDB4ODhBRCwgMHgwMDE4LCAweDAw QkUsIDB4MDAyNiwgMHg4RkZELCAweDAwNDYsIDB4NEVFRiwgMHgwMDg2LCAweDg4OEQsIDB4MDBD QSwgMHgxMTFGLCAweDAwMjYsCisgICAgICAgIDB4MDBBQSwgMHgwMDQ2LCAweDAwNkMsIDB4MDA4 NiwgMHg4QUVELCAweDAwMTgsIDB4NDVERiwgMHgwMDI2LCAweDAxQkQsIDB4MDA0NiwgMHgyMkVG LCAweDAwODYsIDB4MDI3RCwKKyAgICAgICAgMHgwMDVBLCAweDIyN0YsIDB4MDAyNiwgMHgwMDNB LCAweDAwNDYsIDB4NDQ0RCwgMHgwMDg2LCAweDRDQ0QsIDB4MDAxOCwgMHgxMUJGLCAweDAwMjYs IDB4MkVGRCwgMHgwMDQ2LAorICAgICAgICAweDAwRkUsIDB4MDA4NiwgMHgwMDlDLCAweDAwQ0Es IDB4MjIzRiwgMHgwMDI2LCAweDAwQUEsIDB4MDA0NiwgMHg0NDVELCAweDAwODYsIDB4OENDRCwg MHgwMDE4LCAweDAwREUsCisgICAgICAgIDB4MDAyNiwgMHg0RkZELCAweDAwNDYsIDB4QUJGRiwg MHgwMDg2LCAweDAwOUQsIDB4MDA1QSwgMHgwMDZGLCAweDAwMjYsIDB4MDAzQSwgMHgwMDQ2LCAw eDZFRkYsIDB4MDA4NiwKKyAgICAgICAgMHg4OEFELCAweDAwMTgsIDB4MkFBRiwgMHgwMDI2LCAw eDhGRkQsIDB4MDA0NiwgMHgwMEVFLCAweDAwODYsIDB4ODg4RCwgMHgwMENBLCAweDIyMkYsIDB4 MDAwNCwgMHgwMENBLAorICAgICAgICAweDAwODgsIDB4MDI3RCwgMHgwMDA0LCAweDRDQ0QsIDB4 MDAyOCwgMHgwMEZFLCAweDAwMDQsIDB4MkFGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHgw MDlELCAweDAwMTgsCisgICAgICAgIDB4MDBERSwgMHgwMDA0LCAweDAxQkQsIDB4MDA4OCwgMHgw MDZDLCAweDAwMDQsIDB4ODhBRCwgMHgwMDI4LCAweDExREYsIDB4MDAwNCwgMHg4QUVELCAweDAw NDgsIDB4MDAzQywKKyAgICAgICAgMHgwMDA0LCAweDg4OEQsIDB4MDAxOCwgMHgxMTFGLCAweDAw MDQsIDB4MDBDQSwgMHgwMDg4LCAweDAwNkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4ODhG RiwgMHgwMDA0LAorICAgICAgICAweDhCRkQsIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDA5 QywgMHgwMDE4LCAweDAwQkUsIDB4MDAwNCwgMHg0RUZELCAweDAwODgsIDB4NDQ1RCwgMHgwMDA0 LCAweDAwQUMsCisgICAgICAgIDB4MDAyOCwgMHgwMEVFLCAweDAwMDQsIDB4NDVERCwgMHgwMDQ4 LCAweDIyMkQsIDB4MDAwNCwgMHgwMDNELCAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwQ0Es IDB4MDA4OCwKKyAgICAgICAgMHgwMjdELCAweDAwMDQsIDB4NENDRCwgMHgwMDI4LCAweDFGRkYs IDB4MDAwNCwgMHgyQUZELCAweDAwNDgsIDB4MDA1QywgMHgwMDA0LCAweDAwOUQsIDB4MDAxOCwg MHgxMUJGLAorICAgICAgICAweDAwMDQsIDB4MDFCRCwgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwg MHg4OEFELCAweDAwMjgsIDB4MjJFRiwgMHgwMDA0LCAweDhBRUQsIDB4MDA0OCwgMHgwMDNDLCAw eDAwMDQsCisgICAgICAgIDB4ODg4RCwgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHgwMENBLCAw eDAwODgsIDB4MDA2RCwgMHgwMDA0LCAweDg4Q0QsIDB4MDAyOCwgMHg0RUVGLCAweDAwMDQsIDB4 OEJGRCwKKyAgICAgICAgMHgwMDQ4LCAweDQ0NEQsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgsIDB4 MkFBRiwgMHgwMDA0LCAweDRFRkQsIDB4MDA4OCwgMHg0NDVELCAweDAwMDQsIDB4MDBBQywgMHgw MDI4LAorICAgICAgICAweDhEREYsIDB4MDAwNCwgMHg0NURELCAweDAwNDgsIDB4MjIyRCwgMHgw MDA0LCAweDAwM0QsIDB4MDAxOCwgMHgxNTVGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDAw NkMsCisgICAgICAgIDB4MDAwNCwgMHg4OERELCAweDAwMjgsIDB4MjNGRiwgMHgwMDA0LCAweDEx RkQsIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDE4LCAweDAwQkUsIDB4MDAw NCwKKyAgICAgICAgMHgxMzdELCAweDAwODgsIDB4MTU1RCwgMHgwMDA0LCAweDAwQ0MsIDB4MDAy OCwgMHgwMERFLCAweDAwMDQsIDB4MDJFRCwgMHgwMDQ4LCAweDExMUQsIDB4MDAwNCwgMHgwMDlE LAorICAgICAgICAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwNUEsIDB4MDA4OCwgMHg0NTVE LCAweDAwMDQsIDB4NDRDRCwgMHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHgxRkZELCAweDAwNDgs CisgICAgICAgIDB4MDAzQywgMHgwMDA0LCAweDAwQUMsIDB4MDAxOCwgMHg1NTVGLCAweDAwMDQs IDB4NDdGRCwgMHgwMDg4LCAweDExM0QsIDB4MDAwNCwgMHgwMkJELCAweDAwMjgsIDB4NDc3RiwK KyAgICAgICAgMHgwMDA0LCAweDRDREQsIDB4MDA0OCwgMHg4RkZGLCAweDAwMDQsIDB4MDA5Qywg MHgwMDE4LCAweDIyMkYsIDB4MDAwNCwgMHgwMDVBLCAweDAwODgsIDB4MDA2QywgMHgwMDA0LAor ICAgICAgICAweDg4REQsIDB4MDAyOCwgMHgwMEZFLCAweDAwMDQsIDB4MTFGRCwgMHgwMDQ4LCAw eDQ0NEQsIDB4MDAwNCwgMHgwMEFELCAweDAwMTgsIDB4ODg4RiwgMHgwMDA0LCAweDEzN0QsCisg ICAgICAgIDB4MDA4OCwgMHgxNTVELCAweDAwMDQsIDB4MDBDQywgMHgwMDI4LCAweDhDQ0YsIDB4 MDAwNCwgMHgwMkVELCAweDAwNDgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUQsIDB4MDAxOCwKKyAg ICAgICAgMHgwMDZGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDQ1NUQsIDB4MDAwNCwgMHg0 NENELCAweDAwMjgsIDB4MURERiwgMHgwMDA0LCAweDFGRkQsIDB4MDA0OCwgMHgwMDNDLAorICAg ICAgICAweDAwMDQsIDB4MDBBQywgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHg0N0ZELCAweDAw ODgsIDB4MTEzRCwgMHgwMDA0LCAweDAyQkQsIDB4MDAyOCwgMHgyMkJGLCAweDAwMDQsCisgICAg ICAgIDB4NENERCwgMHgwMDQ4LCAweDIyRUYsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgsIDB4MjMz RiwgMHgwMDA2LCAweDREREQsIDB4NEZGQiwgMHhDRkZGLCAweDAwMTgsIDB4MTEzRCwKKyAgICAg ICAgMHgwMDVBLCAweDg4OEYsIDB4MDAwNiwgMHgyM0JELCAweDAwOEEsIDB4MDBFRSwgMHgwMDJB LCAweDE1NUQsIDB4QUFGRCwgMHgyNzdGLCAweDAwMDYsIDB4NDRDRCwgMHg4RkZCLAorICAgICAg ICAweDQ0RUYsIDB4MDAxOCwgMHg0NjdELCAweDAwNEEsIDB4MkFBRiwgMHgwMDA2LCAweDAwQUMs IDB4NTU1QiwgMHg5OURGLCAweDFGRkIsIDB4MDAzQywgMHg1RkZELCAweDI2NkYsCisgICAgICAg IDB4MDAwNiwgMHgxRERELCAweDRGRkIsIDB4NkVGRiwgMHgwMDE4LCAweDE3N0QsIDB4MDA1QSwg MHgxQkJGLCAweDAwMDYsIDB4ODhBRCwgMHgwMDhBLCAweDVEREYsIDB4MDAyQSwKKyAgICAgICAg MHg0NDRELCAweDJGRkQsIDB4NjY3RiwgMHgwMDA2LCAweDAwQ0MsIDB4OEZGQiwgMHgyRUVGLCAw eDAwMTgsIDB4NDU1RCwgMHgwMDRBLCAweDExOUYsIDB4MDAwNiwgMHgwMDlDLAorICAgICAgICAw eDU1NUIsIDB4OENDRiwgMHgxRkZCLCAweDExMUQsIDB4OENFRCwgMHgwMDZFLCAweDAwMDYsIDB4 NERERCwgMHg0RkZCLCAweDNGRkYsIDB4MDAxOCwgMHgxMTNELCAweDAwNUEsCisgICAgICAgIDB4 MTFCRiwgMHgwMDA2LCAweDIzQkQsIDB4MDA4QSwgMHg4RERGLCAweDAwMkEsIDB4MTU1RCwgMHhB QUZELCAweDIyMkYsIDB4MDAwNiwgMHg0NENELCAweDhGRkIsIDB4MDBGRSwKKyAgICAgICAgMHgw MDE4LCAweDQ2N0QsIDB4MDA0QSwgMHg4OTlGLCAweDAwMDYsIDB4MDBBQywgMHg1NTVCLCAweDAw REUsIDB4MUZGQiwgMHgwMDNDLCAweDVGRkQsIDB4NDQ2RiwgMHgwMDA2LAorICAgICAgICAweDFE REQsIDB4NEZGQiwgMHg5QkZGLCAweDAwMTgsIDB4MTc3RCwgMHgwMDVBLCAweDAwQkUsIDB4MDAw NiwgMHg4OEFELCAweDAwOEEsIDB4Q0RERiwgMHgwMDJBLCAweDQ0NEQsCisgICAgICAgIDB4MkZG RCwgMHgwMDdFLCAweDAwMDYsIDB4MDBDQywgMHg4RkZCLCAweDRFRUYsIDB4MDAxOCwgMHg0NTVE LCAweDAwNEEsIDB4Mzc3RiwgMHgwMDA2LCAweDAwOUMsIDB4NTU1QiwKKyAgICAgICAgMHg4QkJG LCAweDFGRkIsIDB4MTExRCwgMHg4Q0VELCAweDIzM0YsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgs IDB4MDQ3RCwgMHgwMDA0LCAweDAxREQsIDB4MDAyOCwgMHgxMURGLAorICAgICAgICAweDAwMDQs IDB4MjdGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHg4QUFELCAweDAwMTgsIDB4MkJCRiwg MHgwMDA0LCAweDAwOUMsIDB4MDA4OCwgMHgwMDZDLCAweDAwMDQsCisgICAgICAgIDB4MDBDQywg MHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHg4Q0VELCAweDAwNDgsIDB4MjIyRCwgMHgwMDA0LCAw eDg4OEQsIDB4MDAxOCwgMHgwMDdFLCAweDAwMDQsIDB4MDBBQSwKKyAgICAgICAgMHgwMDg4LCAw eDAwNkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4MDBGRSwgMHgwMDA0LCAweDE5RkQsIDB4 MDA0OCwgMHgwMDNDLCAweDAwMDQsIDB4MkFBRCwgMHgwMDE4LAorICAgICAgICAweEFBQUYsIDB4 MDAwNCwgMHg4QkZELCAweDAwODgsIDB4MDA1RCwgMHgwMDA0LCAweDAwQkQsIDB4MDAyOCwgMHg0 Q0NGLCAweDAwMDQsIDB4NDRFRCwgMHgwMDQ4LCAweDRGRkYsCisgICAgICAgIDB4MDAwNCwgMHgy MjNELCAweDAwMTgsIDB4MTExRiwgMHgwMDA0LCAweDAwQUEsIDB4MDA4OCwgMHgwNDdELCAweDAw MDQsIDB4MDFERCwgMHgwMDI4LCAweDk5RkYsIDB4MDAwNCwKKyAgICAgICAgMHgyN0ZELCAweDAw NDgsIDB4MDA1QywgMHgwMDA0LCAweDhBQUQsIDB4MDAxOCwgMHgwMEJFLCAweDAwMDQsIDB4MDA5 QywgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwgMHgwMENDLAorICAgICAgICAweDAwMjgsIDB4MDBE RSwgMHgwMDA0LCAweDhDRUQsIDB4MDA0OCwgMHgyMjJELCAweDAwMDQsIDB4ODg4RCwgMHgwMDE4 LCAweDQ0NEYsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgsCisgICAgICAgIDB4MDA2RCwgMHgwMDA0 LCAweDg4Q0QsIDB4MDAyOCwgMHgyRUVGLCAweDAwMDQsIDB4MTlGRCwgMHgwMDQ4LCAweDAwM0Ms IDB4MDAwNCwgMHgyQUFELCAweDAwMTgsIDB4NDQ3RiwKKyAgICAgICAgMHgwMDA0LCAweDhCRkQs IDB4MDA4OCwgMHgwMDVELCAweDAwMDQsIDB4MDBCRCwgMHgwMDI4LCAweDAwOUYsIDB4MDAwNCwg MHg0NEVELCAweDAwNDgsIDB4NjdGRiwgMHgwMDA0LAorICAgICAgICAweDIyM0QsIDB4MDAxOCwg MHgxMzNGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDlERkYsIDB4MkZGQiwgMHg0NjdELCAw eDFGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDJBQUQsCisgICAgICAgIDB4MDAyQSwgMHg2NkVGLCAw eDRGRkIsIDB4MDA1QywgMHgyRUVELCAweDM3N0YsIDB4MDAwNiwgMHg4OUJELCAweDAwNEEsIDB4 MDBGRSwgMHg4RkZCLCAweDAwNkMsIDB4NjdGRCwKKyAgICAgICAgMHg4ODlGLCAweDAwMDYsIDB4 ODg4RCwgMHgwMDFBLCAweDVEREYsIDB4MDBBQSwgMHgyMjJELCAweDg5REQsIDB4NDQ0RiwgMHgw MDA2LCAweDJCQkQsIDB4MDA4QSwgMHhDRkZGLAorICAgICAgICAweDJGRkIsIDB4MjI2RCwgMHgw MDlDLCAweDAwQkUsIDB4MDAwNiwgMHhBQUFELCAweDAwMkEsIDB4MURERiwgMHg0RkZCLCAweDAw M0MsIDB4NERERCwgMHg0NjZGLCAweDAwMDYsCisgICAgICAgIDB4OEFBRCwgMHgwMDRBLCAweEFF RUYsIDB4OEZGQiwgMHg0NDVELCAweDhFRUQsIDB4MTc3RiwgMHgwMDA2LCAweDIzM0QsIDB4MDAx QSwgMHg0Q0NGLCAweDAwQUEsIDB4QUZGRiwKKyAgICAgICAgMHg4OENELCAweDEzM0YsIDB4MDAw NiwgMHgwMENDLCAweDAwOEEsIDB4NzdGRiwgMHgyRkZCLCAweDQ2N0QsIDB4MUZGRCwgMHgzQkJG LCAweDAwMDYsIDB4MkFBRCwgMHgwMDJBLAorICAgICAgICAweDAwRUUsIDB4NEZGQiwgMHgwMDVD LCAweDJFRUQsIDB4MDA3RSwgMHgwMDA2LCAweDg5QkQsIDB4MDA0QSwgMHg0RUVGLCAweDhGRkIs IDB4MDA2QywgMHg2N0ZELCAweDY2N0YsCisgICAgICAgIDB4MDAwNiwgMHg4ODhELCAweDAwMUEs IDB4MDBERSwgMHgwMEFBLCAweDIyMkQsIDB4ODlERCwgMHgzMzNGLCAweDAwMDYsIDB4MkJCRCwg MHgwMDhBLCAweDU3RkYsIDB4MkZGQiwKKyAgICAgICAgMHgyMjZELCAweDAwOUMsIDB4MTk5Riwg MHgwMDA2LCAweEFBQUQsIDB4MDAyQSwgMHg5OURGLCAweDRGRkIsIDB4MDAzQywgMHg0RERELCAw eDE1NUYsIDB4MDAwNiwgMHg4QUFELAorICAgICAgICAweDAwNEEsIDB4Q0VFRiwgMHg4RkZCLCAw eDQ0NUQsIDB4OEVFRCwgMHgyNzdGLCAweDAwMDYsIDB4MjMzRCwgMHgwMDFBLCAweDFCQkYsIDB4 MDBBQSwgMHgzRkZGLCAweDg4Q0QsCisgICAgICAgIDB4MTExRiwgMHgwMDA2LCAweDQ1REQsIDB4 MkZGQiwgMHgxMTFELCAweDAwMTgsIDB4NDY3RCwgMHg4RkZELCAweENDQ0YsIDB4MDAwNiwgMHgx OUJELCAweDAwNEEsIDB4MjJFRiwKKyAgICAgICAgMHgwMDJBLCAweDIyMkQsIDB4M0ZGRCwgMHg4 ODhGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDAwRkUsIDB4MDAxOCwgMHgxMTVELCAweENG RkQsIDB4OEFBRiwgMHgwMDA2LAorICAgICAgICAweDAwQUMsIDB4MDAzQSwgMHg4Q0RGLCAweDFG RkIsIDB4MTMzRCwgMHg2NkZELCAweDQ2NkYsIDB4MDAwNiwgMHg4Q0NELCAweDJGRkIsIDB4NUZG RiwgMHgwMDE4LCAweDAwNkMsCisgICAgICAgIDB4NEZGRCwgMHhBQkJGLCAweDAwMDYsIDB4MjJB RCwgMHgwMDRBLCAweDAwRUUsIDB4MDAyQSwgMHgyMzNELCAweEFFRkQsIDB4Mzc3RiwgMHgwMDA2 LCAweDJCQkQsIDB4MDA4QSwKKyAgICAgICAgMHg1NURGLCAweDAwMTgsIDB4MDA1QywgMHgxNzdE LCAweDExOUYsIDB4MDAwNiwgMHgwMDlDLCAweDAwM0EsIDB4NENDRiwgMHgxRkZCLCAweDMzM0Qs IDB4OEVFRCwgMHg0NDRGLAorICAgICAgICAweDAwMDYsIDB4NDVERCwgMHgyRkZCLCAweDExMUQs IDB4MDAxOCwgMHg0NjdELCAweDhGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDE5QkQsIDB4MDA0QSwg MHgyRUVGLCAweDAwMkEsCisgICAgICAgIDB4MjIyRCwgMHgzRkZELCAweDY2N0YsIDB4MDAwNiwg MHgwMENDLCAweDAwOEEsIDB4NEVFRiwgMHgwMDE4LCAweDExNUQsIDB4Q0ZGRCwgMHg4OTlGLCAw eDAwMDYsIDB4MDBBQywKKyAgICAgICAgMHgwMDNBLCAweDAwREUsIDB4MUZGQiwgMHgxMzNELCAw eDY2RkQsIDB4MjI2RiwgMHgwMDA2LCAweDhDQ0QsIDB4MkZGQiwgMHg5QkZGLCAweDAwMTgsIDB4 MDA2QywgMHg0RkZELAorICAgICAgICAweDAwQkUsIDB4MDAwNiwgMHgyMkFELCAweDAwNEEsIDB4 MURERiwgMHgwMDJBLCAweDIzM0QsIDB4QUVGRCwgMHgwMDdFLCAweDAwMDYsIDB4MkJCRCwgMHgw MDhBLCAweENFRUYsCisgICAgICAgIDB4MDAxOCwgMHgwMDVDLCAweDE3N0QsIDB4Mjc3RiwgMHgw MDA2LCAweDAwOUMsIDB4MDAzQSwgMHg4QkJGLCAweDFGRkIsIDB4MzMzRCwgMHg4RUVELCAweDQ1 NUYsIDB4MUZGOSwKKyAgICAgICAgMHgxRERELCAweEFGRkIsIDB4MDBERSwgMHg4RkY5LCAweDAw MUMsIDB4RkZGQiwgMHg0NzdGLCAweDRGRjksIDB4MTc3RCwgMHgzRkZCLCAweDNCQkYsIDB4MkZG OSwgMHhBRUVGLAorICAgICAgICAweDhFRUQsIDB4NDQ0RiwgMHgxRkY5LCAweDIyQUQsIDB4MDAw QSwgMHg4QkJGLCAweDhGRjksIDB4MDBGRSwgMHhDRkZELCAweDAwN0UsIDB4NEZGOSwgMHgxMTVE LCAweDVGRkIsCisgICAgICAgIDB4NTc3RiwgMHgyRkY5LCAweDhEREYsIDB4MkVFRCwgMHgzMzNG LCAweDFGRjksIDB4MkJCRCwgMHhBRkZCLCAweDg4Q0YsIDB4OEZGOSwgMHhCRkZGLCAweEZGRkIs IDB4Mzc3RiwKKyAgICAgICAgMHg0RkY5LCAweDAwNkQsIDB4M0ZGQiwgMHgwMEJFLCAweDJGRjks IDB4NjZFRiwgMHg5RkZELCAweDEzM0YsIDB4MUZGOSwgMHgwMDlELCAweDAwMEEsIDB4QUJCRiwg MHg4RkY5LAorICAgICAgICAweERGRkYsIDB4NkZGRCwgMHgwMDZFLCAweDRGRjksIDB4MDAyQywg MHg1RkZCLCAweDg4OEYsIDB4MkZGOSwgMHhDRERGLCAweDREREQsIDB4MjIyRiwgMHgxRkY5LCAw eDFEREQsCisgICAgICAgIDB4QUZGQiwgMHg0Q0NGLCAweDhGRjksIDB4MDAxQywgMHhGRkZCLCAw eDI3N0YsIDB4NEZGOSwgMHgxNzdELCAweDNGRkIsIDB4OTlCRiwgMHgyRkY5LCAweENFRUYsIDB4 OEVFRCwKKyAgICAgICAgMHgwMDRFLCAweDFGRjksIDB4MjJBRCwgMHgwMDBBLCAweDAwQUUsIDB4 OEZGOSwgMHg3RkZGLCAweENGRkQsIDB4MDA1RSwgMHg0RkY5LCAweDExNUQsIDB4NUZGQiwgMHgw MDlFLAorICAgICAgICAweDJGRjksIDB4NURERiwgMHgyRUVELCAweDAwM0UsIDB4MUZGOSwgMHgy QkJELCAweEFGRkIsIDB4MDBDRSwgMHg4RkY5LCAweEVGRkYsIDB4RkZGQiwgMHg2NjdGLCAweDRG RjksCisgICAgICAgIDB4MDA2RCwgMHgzRkZCLCAweDhBQUYsIDB4MkZGOSwgMHgwMEVFLCAweDlG RkQsIDB4MjMzRiwgMHgxRkY5LCAweDAwOUQsIDB4MDAwQSwgMHgxQkJGLCAweDhGRjksIDB4NEVF RiwKKyAgICAgICAgMHg2RkZELCAweDQ1NUYsIDB4NEZGOSwgMHgwMDJDLCAweDVGRkIsIDB4MDA4 RSwgMHgyRkY5LCAweDk5REYsIDB4NERERCwgMHgxMTFGfTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvanBlZzIwMDBodGRlYy5oIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTcyZDA5NWM5MgotLS0gL2Rldi9udWxsCisr KyBiL2xpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBD b3B5cmlnaHQgKGMpIDIwMjIgQ2FsZWIgRXRlbWVzaSA8ZXRlbWVzaWNhbGViQGdtYWlsLmNvbT4K KyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy CisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo IEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVD X0pQRUcyMDAwSFRERUNfSAorI2RlZmluZSBBVkNPREVDX0pQRUcyMDAwSFRERUNfSAorCisjaW5j bHVkZSAianBlZzIwMDBkZWMuaCIKKworLyoqCisgKiBIVCBCbG9jayBkZWNvZGVyIGFzIHNwZWNp ZmllZCBpbiBSZWMuIElUVS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNQorICovCisKK2ludCBm Zl9qcGVnMjAwMF9kZWNvZGVfaHRqMmsoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywg SnBlZzIwMDBDb2RpbmdTdHlsZSAqY29kc3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IEpwZWcyMDAwVDFDb250ZXh0ICp0MSwgSnBlZzIwMDBDYmxrICpjYmxrLCBpbnQgd2lkdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IG1hZ3AsIHVpbnQ4X3Qg cm9pX3NoaWZ0KTsKKworI2VuZGlmIC8qIEFWQ09ERUNfSlBFRzIwMDBIVERFQ19IICovCi0tIAoy LjI1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZm bXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9m Zm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwg dmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9y ZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K