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 EA78D4A49D for ; Thu, 30 May 2024 21:22:12 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 46A1A68D5AB; Fri, 31 May 2024 00:22:07 +0300 (EEST) Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1ACA168D547 for ; Fri, 31 May 2024 00:22:00 +0300 (EEST) Received: by mail-qv1-f41.google.com with SMTP id 6a1803df08f44-6ad8243dba8so6470026d6.3 for ; Thu, 30 May 2024 14:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717104118; x=1717708918; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Gj0GSKDikDatEKtH0BMER9Vj1g04h4VDnsBAeedIAlw=; b=QTlvB9O8EJbeNq2urlfgINIfngEQoVTOLvaPFdUab7rFUwev0BGvuPVmH6BwLnL0Ym sI/fd8dbX5Fm5n1wf9EdXcQa8655Du1Q0rbPEdFfxUeiBnZixQRYjLguDhPz/LVAAq9L Now0mYzxjb3icdaW42cEVwlWZRJy7QRke6DQKXF3h7QV9qCjX90vlQX1cID6wzRnxY1M YwJeAPBMx2g+vWZFjd2HvGVYVaxmvzqqnmWRgx1r3W0WX0e60Hj5R9oALOkb02M3K127 KvqrI+mb5CNXNjkQGUsdekXZ0wHgukJHUuq1vaZ/3X0/r2snz0LiDwB+eTCVsjyoiwb+ 1o2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717104118; x=1717708918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Gj0GSKDikDatEKtH0BMER9Vj1g04h4VDnsBAeedIAlw=; b=XNvwA8ZIeg0K8ro9vxBoVRXsBUKCZ5HNGMXSs4yA8C1iyyINRhiWLhIeXTFQIeANhZ EgdWoQAxS7Uac9w7TG80ihNDSj5v5XggsTZj8EelWsH1bDGfr2pfs1jAmENa7g3fi5hZ CAKcDPbF+L7TYDrr9+sB/NtofAaDS+xmyCMRq9ZODSI8QCXFsq1tj2Q6gr8GCZWHtSAi HGEEnB4AhchK3Q4MRtUnpQMrEQni4rNZ0fUq+XsRV44xFTrnZvI1HHPvoCKo5+sLOubs /mSKyjlwf3Er87Yqocd7nIZloME3veVxLBzvLdWog+FwI+iibm+s4l+zN+RCcwSMrHO+ 7kqQ== X-Gm-Message-State: AOJu0YwmWF+qRGlm8GcWE6mCdOaeqrm106p1NTHkpDOMOyLIEQTLxD39 bOqvmwzbHHBOGvWXkFLTW8rcYSBtUyCa6jyJCwncUgYyKFOsgy7Xyl2LAw== X-Google-Smtp-Source: AGHT+IHrpkL44h/WVoXfh0MTK8xHU2AnPuVjqdtgZKJuPAiTtmFV5Qol38SEtiJRPC9xJVmrNE4zxQ== X-Received: by 2002:a05:6214:318b:b0:6ae:4c1f:f2c7 with SMTP id 6a1803df08f44-6aecd5a39a0mr1438316d6.22.1717104116103; Thu, 30 May 2024 14:21:56 -0700 (PDT) Received: from elysia.seanmcgovern.ca ([2607:f2c0:9281:7600:3245:daec:3719:a4fb]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6ae4b4063eesm1758696d6.81.2024.05.30.14.21.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 14:21:55 -0700 (PDT) From: Sean McGovern To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 17:21:52 -0400 Message-Id: <20240530212152.1535360-2-gseanmcg@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240530212152.1535360-1-gseanmcg@gmail.com> References: <20240530212152.1535360-1-gseanmcg@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] [RFC] libavcodec: remove DSP acceleration code for DEC Alpha 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 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: LS0tCiBDaGFuZ2Vsb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogbGliYXZj b2RlYy9hbHBoYS9NYWtlZmlsZSAgICAgICAgICAgIHwgIDEwIC0KIGxpYmF2Y29kZWMvYWxwaGEv YXNtLmggICAgICAgICAgICAgICB8IDE1MyAtLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9hbHBo YS9ibG9ja2RzcF9hbHBoYS5jICAgIHwgIDQ5IC0tLS0tCiBsaWJhdmNvZGVjL2FscGhhL2hwZWxk c3BfYWxwaGEuYyAgICAgfCAyMTMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2RlYy9hbHBo YS9ocGVsZHNwX2FscGhhLmggICAgIHwgIDI4IC0tLQogbGliYXZjb2RlYy9hbHBoYS9ocGVsZHNw X2FscGhhX2FzbS5TIHwgMTI1IC0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhhL2lkY3Rkc3Bf YWxwaGEuYyAgICAgfCAxMjcgLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9h bHBoYS5oICAgICB8ICAzNCAtLS0KIGxpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYV9hc20u UyB8IDE2NyAtLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMg ICAgICB8IDI3OSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29kZWMvYWxwaGEvbWVf Y21wX212aV9hc20uUyAgICB8IDE3OSAtLS0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhh L21wZWd2aWRlb19hbHBoYS5jICAgfCAxMTAgLS0tLS0tLS0tLQogbGliYXZjb2RlYy9hbHBoYS9w aXhibG9ja2RzcF9hbHBoYS5jIHwgIDc5IC0tLS0tLS0KIGxpYmF2Y29kZWMvYWxwaGEvcmVnZGVm LmggICAgICAgICAgICB8ICA3NyAtLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhhL3NpbXBsZV9pZGN0 X2FscGhhLmMgfCAzMDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxNiBmaWxlcyBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMTkzMyBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBsaWJhdmNvZGVjL2FscGhhL01ha2VmaWxlCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2Rl Yy9hbHBoYS9hc20uaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvYmxvY2tk c3BfYWxwaGEuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9h bHBoYS5jCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hbHBoYS9ocGVsZHNwX2FscGhh LmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxwaGFfYXNt LlMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGEuYwog ZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYS5oCiBkZWxl dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhX2FzbS5TCiBkZWxl dGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hbHBoYS9tZV9jbXBfYWxwaGEuYwogZGVsZXRlIG1v ZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvbWVfY21wX212aV9hc20uUwogZGVsZXRlIG1vZGUg MTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvbXBlZ3ZpZGVvX2FscGhhLmMKIGRlbGV0ZSBtb2RlIDEw MDY0NCBsaWJhdmNvZGVjL2FscGhhL3BpeGJsb2NrZHNwX2FscGhhLmMKIGRlbGV0ZSBtb2RlIDEw MDY0NCBsaWJhdmNvZGVjL2FscGhhL3JlZ2RlZi5oCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZj b2RlYy9hbHBoYS9zaW1wbGVfaWRjdF9hbHBoYS5jCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlbG9nIGIv Q2hhbmdlbG9nCmluZGV4IDEyNzcwZTQyOTYuLmExYTQwMzk5ZjggMTAwNjQ0Ci0tLSBhL0NoYW5n ZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTExLDYgKzExLDcgQEAgdmVyc2lvbiA8bmV4dD46CiAt IHZmX3NjYWxlMnJlZiBkZXByZWNhdGVkCiAtIHFzdl9wYXJhbXMgb3B0aW9uIGFkZGVkIGZvciBR U1YgZW5jb2RlcnMKIC0gVlZDIGRlY29kZXIgY29tcGF0aWJsZSB3aXRoIERWQiB0ZXN0IGNvbnRl bnQKKy0gcmVtb3ZlZCBsaWJhdmNvZGVjIERTUCBjb2RlIGZvciB0aGUgREVDIEFscGhhCiAKIAog dmVyc2lvbiA3LjA6CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL01ha2VmaWxlIGIvbGli YXZjb2RlYy9hbHBoYS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk2 ZDk3NjJiMy4uMDAwMDAwMDAwMAotLS0gYS9saWJhdmNvZGVjL2FscGhhL01ha2VmaWxlCisrKyAv ZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotT0JKUy0kKENPTkZJR19CTE9DS0RTUCkgICAgICAg ICAgICAgICAgICs9IGFscGhhL2Jsb2NrZHNwX2FscGhhLm8KLU9CSlMtJChDT05GSUdfTUVfQ01Q KSAgICAgICAgICAgICAgICAgICArPSBhbHBoYS9tZV9jbXBfYWxwaGEubyAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYS9tZV9jbXBfbXZp X2FzbS5vCi1PQkpTLSQoQ09ORklHX0hQRUxEU1ApICAgICAgICAgICAgICAgICAgKz0gYWxwaGEv aHBlbGRzcF9hbHBoYS5vICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGEvaHBlbGRzcF9hbHBoYV9hc20ubwotT0JKUy0kKENPTkZJR19JRENU RFNQKSAgICAgICAgICAgICAgICAgICs9IGFscGhhL2lkY3Rkc3BfYWxwaGEubyAgICAgICAgXAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhL2lkY3Rkc3Bf YWxwaGFfYXNtLm8gICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFscGhhL3NpbXBsZV9pZGN0X2FscGhhLm8KLU9CSlMtJChDT05GSUdfTVBFR1ZJREVPKSAg ICAgICAgICAgICAgICArPSBhbHBoYS9tcGVndmlkZW9fYWxwaGEubwotT0JKUy0kKENPTkZJR19Q SVhCTE9DS0RTUCkgICAgICAgICAgICAgICs9IGFscGhhL3BpeGJsb2NrZHNwX2FscGhhLm8KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvYXNtLmggYi9saWJhdmNvZGVjL2FscGhhL2FzbS5o CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDg1MGNlY2M2Li4wMDAwMDAwMDAwCi0t LSBhL2xpYmF2Y29kZWMvYWxwaGEvYXNtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBA QAotLyoKLSAqIEFscGhhIG9wdGltaXplZCBEU1AgdXRpbHMKLSAqIENvcHlyaWdodCAoYykgMjAw MiBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5vcmc+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19BTFBIQV9BU01fSAotI2RlZmluZSBB VkNPREVDX0FMUEhBX0FTTV9ICi0KLSNpbmNsdWRlIDxpbnR0eXBlcy5oPgotCi0jaW5jbHVkZSAi bGliYXZ1dGlsL2NvbW1vbi5oIgotCi0jaWYgQVZfR0NDX1ZFUlNJT05fQVRfTEVBU1QoMiw5NikK LSMgZGVmaW5lIGxpa2VseSh4KSAgICAgIF9fYnVpbHRpbl9leHBlY3QoKHgpICE9IDAsIDEpCi0j IGRlZmluZSB1bmxpa2VseSh4KSAgICBfX2J1aWx0aW5fZXhwZWN0KCh4KSAhPSAwLCAwKQotI2Vs c2UKLSMgZGVmaW5lIGxpa2VseSh4KSAgICAgICh4KQotIyBkZWZpbmUgdW5saWtlbHkoeCkgICAg KHgpCi0jZW5kaWYKLQotI2RlZmluZSBBTUFTS19CV1ggKDEgPDwgMCkKLSNkZWZpbmUgQU1BU0tf RklYICgxIDw8IDEpCi0jZGVmaW5lIEFNQVNLX0NJWCAoMSA8PCAyKQotI2RlZmluZSBBTUFTS19N VkkgKDEgPDwgOCkKLQotc3RhdGljIGlubGluZSB1aW50NjRfdCBCWVRFX1ZFQyh1aW50NjRfdCB4 KQotewotICAgIHggfD0geCA8PCAgODsKLSAgICB4IHw9IHggPDwgMTY7Ci0gICAgeCB8PSB4IDw8 IDMyOwotICAgIHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSB1aW50NjRfdCBXT1JEX1ZFQyh1 aW50NjRfdCB4KQotewotICAgIHggfD0geCA8PCAxNjsKLSAgICB4IHw9IHggPDwgMzI7Ci0gICAg cmV0dXJuIHg7Ci19Ci0KLSNkZWZpbmUgc2V4dHcoeCkgKChpbnQxNl90KSAoeCkpCi0KLSNpZmRl ZiBfX0dOVUNfXwotI2RlZmluZSBsZHEocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKChjb25zdCB1bmlvbiB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVpbnQ2NF90IF9fbDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfX3R5cGVv Zl9fKCoocCkpIF9fc1tzaXplb2YgKHVpbnQ2NF90KSAvIHNpemVvZiAqKHApXTsgIFwKLSAgICB9 ICopIChwKSktPl9fbCkKLSNkZWZpbmUgbGRsKHApICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCgoY29uc3QgdW5pb24geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpbnQzMl90IF9fbDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX190 eXBlb2ZfXygqKHApKSBfX3Nbc2l6ZW9mIChpbnQzMl90KSAvIHNpemVvZiAqKHApXTsgICBcCi0g ICAgfSAqKSAocCkpLT5fX2wpCi0jZGVmaW5lIHN0cShsLCBwKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICgoKHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB1aW50NjRfdCBfX2w7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX3R5cGVvZl9f KCoocCkpIF9fc1tzaXplb2YgKHVpbnQ2NF90KSAvIHNpemVvZiAqKHApXTsgICAgICBcCi0gICAg ICAgIH0gKikgKHApKS0+X19sKSA9IGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc3RsKGwsIHApICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgKCgodW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGludDMyX3QgX19sOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg IF9fdHlwZW9mX18oKihwKSkgX19zW3NpemVvZiAoaW50MzJfdCkgLyBzaXplb2YgKihwKV07ICAg ICAgIFwKLSAgICAgICAgfSAqKSAocCkpLT5fX2wpID0gbDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotc3RydWN0IHVuYWxpZ25l ZF9sb25nIHsgdWludDY0X3QgbDsgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKLSNkZWZpbmUg bGRxX3UocCkgICAgICAgICgqKGNvbnN0IHVpbnQ2NF90ICopICgoKHVpbnQ2NF90KSAocCkpICYg fjd1bCkpCi0jZGVmaW5lIHVsZHEoYSkgICAgICAgICAoKChjb25zdCBzdHJ1Y3QgdW5hbGlnbmVk X2xvbmcgKikgKGEpKS0+bCkKLQotI2lmIEFWX0dDQ19WRVJTSU9OX0FUX0xFQVNUKDMsMykKLSNk ZWZpbmUgcHJlZmV0Y2gocCkgICAgIF9fYnVpbHRpbl9wcmVmZXRjaCgocCksIDAsIDEpCi0jZGVm aW5lIHByZWZldGNoX2VuKHApICBfX2J1aWx0aW5fcHJlZmV0Y2goKHApLCAwLCAwKQotI2RlZmlu ZSBwcmVmZXRjaF9tKHApICAgX19idWlsdGluX3ByZWZldGNoKChwKSwgMSwgMSkKLSNkZWZpbmUg cHJlZmV0Y2hfbWVuKHApIF9fYnVpbHRpbl9wcmVmZXRjaCgocCksIDEsIDApCi0jZGVmaW5lIGNt cGJnZSAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfY21wYmdlCi0vKiBBdm9pZCB3YXJuaW5ncy4g ICovCi0jZGVmaW5lIGV4dHFsKGEsIGIpICAgICBfX2J1aWx0aW5fYWxwaGFfZXh0cWwoYSwgKHVp bnQ2NF90KSAoYikpCi0jZGVmaW5lIGV4dHdsKGEsIGIpICAgICBfX2J1aWx0aW5fYWxwaGFfZXh0 d2woYSwgKHVpbnQ2NF90KSAoYikpCi0jZGVmaW5lIGV4dHFoKGEsIGIpICAgICBfX2J1aWx0aW5f YWxwaGFfZXh0cWgoYSwgKHVpbnQ2NF90KSAoYikpCi0jZGVmaW5lIHphcCAgICAgICAgICAgICBf X2J1aWx0aW5fYWxwaGFfemFwCi0jZGVmaW5lIHphcG5vdCAgICAgICAgICBfX2J1aWx0aW5fYWxw aGFfemFwbm90Ci0jZGVmaW5lIGFtYXNrICAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfYW1hc2sK LSNkZWZpbmUgaW1wbHZlciAgICAgICAgIF9fYnVpbHRpbl9hbHBoYV9pbXBsdmVyCi0jZGVmaW5l IHJwY2MgICAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfcnBjYwotI2Vsc2UKLSNkZWZpbmUgcHJl ZmV0Y2gocCkgICAgIF9fYXNtX18gdm9sYXRpbGUoImxkbCAkMzEsJTAiICA6IDogIm0iKCooY29u c3QgY2hhciAqKSAocCkpIDogIm1lbW9yeSIpCi0jZGVmaW5lIHByZWZldGNoX2VuKHApICBfX2Fz bV9fIHZvbGF0aWxlKCJsZHEgJDMxLCUwIiAgOiA6ICJtIigqKGNvbnN0IGNoYXIgKikgKHApKSA6 ICJtZW1vcnkiKQotI2RlZmluZSBwcmVmZXRjaF9tKHApICAgX19hc21fXyB2b2xhdGlsZSgibGRz ICRmMzEsJTAiIDogOiAibSIoKihjb25zdCBjaGFyICopIChwKSkgOiAibWVtb3J5IikKLSNkZWZp bmUgcHJlZmV0Y2hfbWVuKHApIF9fYXNtX18gdm9sYXRpbGUoImxkdCAkZjMxLCUwIiA6IDogIm0i KCooY29uc3QgY2hhciAqKSAocCkpIDogIm1lbW9yeSIpCi0jZGVmaW5lIGNtcGJnZShhLCBiKSAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJjbXBiZ2UgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIGV4dHFsKGEsIGIpICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHRxbCAgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIGV4dHdsKGEsIGIpICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHR3bCAgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIGV4dHFoKGEsIGIpICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHRxaCAgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIHphcChhLCBiKSAgICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJ6YXAgICAgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIHphcG5vdChhLCBiKSAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJ6YXBub3QgICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIGFtYXNrKGEpICAgICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJhbWFzayAgICUxLCUwIiAgICAgIDogIj1yIiAoX19y KSA6ICJySSIgIChhKSk7ICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5lIGltcGx2ZXIoKSAgICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJpbXBsdmVyICUwIiAgICAgICAgIDogIj1yIiAoX19y KSk7ICAgICAgICAgICAgICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5lIHJwY2MoKSAgICAgICAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gdm9sYXRpbGUgKCJycGNjICUwIiAgIDogIj1yIiAoX19y KSk7ICAgICAgICAgICAgICAgICAgICAgICBfX3I7IH0pCi0jZW5kaWYKLSNkZWZpbmUgd2g2NChw KSBfX2FzbV9fIHZvbGF0aWxlKCJ3aDY0ICglMCkiIDogOiAiciIocCkgOiAibWVtb3J5IikKLQot I2lmIEFWX0dDQ19WRVJTSU9OX0FUX0xFQVNUKDMsMykgJiYgZGVmaW5lZChfX2FscGhhX21heF9f KQotI2RlZmluZSBtaW51YjggIF9fYnVpbHRpbl9hbHBoYV9taW51YjgKLSNkZWZpbmUgbWluc2I4 ICBfX2J1aWx0aW5fYWxwaGFfbWluc2I4Ci0jZGVmaW5lIG1pbnV3NCAgX19idWlsdGluX2FscGhh X21pbnV3NAotI2RlZmluZSBtaW5zdzQgIF9fYnVpbHRpbl9hbHBoYV9taW5zdzQKLSNkZWZpbmUg bWF4dWI4ICBfX2J1aWx0aW5fYWxwaGFfbWF4dWI4Ci0jZGVmaW5lIG1heHNiOCAgX19idWlsdGlu X2FscGhhX21heHNiOAotI2RlZmluZSBtYXh1dzQgIF9fYnVpbHRpbl9hbHBoYV9tYXh1dzQKLSNk ZWZpbmUgbWF4c3c0ICBfX2J1aWx0aW5fYWxwaGFfbWF4c3c0Ci0jZGVmaW5lIHBlcnIgICAgX19i dWlsdGluX2FscGhhX3BlcnIKLSNkZWZpbmUgcGtsYiAgICBfX2J1aWx0aW5fYWxwaGFfcGtsYgot I2RlZmluZSBwa3diICAgIF9fYnVpbHRpbl9hbHBoYV9wa3diCi0jZGVmaW5lIHVucGtibCAgX19i dWlsdGluX2FscGhhX3VucGtibAotI2RlZmluZSB1bnBrYncgIF9fYnVpbHRpbl9hbHBoYV91bnBr YncKLSNlbHNlCi0jZGVmaW5lIG1pbnViOChhLCBiKSAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18g KCIuYXJjaCBldjY7IG1pbnViOCAgJXIxLCUyLCUwIiAgOiAiPXIiIChfX3IpIDogIiVySiIgKGEp LCAickkiIChiKSk7IF9fcjsgfSkKLSNkZWZpbmUgbWluc2I4KGEsIGIpICh7IHVpbnQ2NF90IF9f cjsgX19hc21fXyAoIi5hcmNoIGV2NjsgbWluc2I4ICAlcjEsJTIsJTAiICA6ICI9ciIgKF9fcikg OiAiJXJKIiAoYSksICJySSIgKGIpKTsgX19yOyB9KQotI2RlZmluZSBtaW51dzQoYSwgYikgKHsg dWludDY0X3QgX19yOyBfX2FzbV9fICgiLmFyY2ggZXY2OyBtaW51dzQgICVyMSwlMiwlMCIgIDog Ij1yIiAoX19yKSA6ICIlckoiIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIG1pbnN3 NChhLCBiKSAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IG1pbnN3NCAgJXIx LCUyLCUwIiAgOiAiPXIiIChfX3IpIDogIiVySiIgKGEpLCAickkiIChiKSk7IF9fcjsgfSkKLSNk ZWZpbmUgbWF4dWI4KGEsIGIpICh7IHVpbnQ2NF90IF9fcjsgX19hc21fXyAoIi5hcmNoIGV2Njsg bWF4dWI4ICAlcjEsJTIsJTAiICA6ICI9ciIgKF9fcikgOiAiJXJKIiAoYSksICJySSIgKGIpKTsg X19yOyB9KQotI2RlZmluZSBtYXhzYjgoYSwgYikgKHsgdWludDY0X3QgX19yOyBfX2FzbV9fICgi LmFyY2ggZXY2OyBtYXhzYjggICVyMSwlMiwlMCIgIDogIj1yIiAoX19yKSA6ICIlckoiIChhKSwg InJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIG1heHV3NChhLCBiKSAoeyB1aW50NjRfdCBfX3I7 IF9fYXNtX18gKCIuYXJjaCBldjY7IG1heHV3NCAgJXIxLCUyLCUwIiAgOiAiPXIiIChfX3IpIDog IiVySiIgKGEpLCAickkiIChiKSk7IF9fcjsgfSkKLSNkZWZpbmUgbWF4c3c0KGEsIGIpICh7IHVp bnQ2NF90IF9fcjsgX19hc21fXyAoIi5hcmNoIGV2NjsgbWF4c3c0ICAlcjEsJTIsJTAiICA6ICI9 ciIgKF9fcikgOiAiJXJKIiAoYSksICJySSIgKGIpKTsgX19yOyB9KQotI2RlZmluZSBwZXJyKGEs IGIpICAgKHsgdWludDY0X3QgX19yOyBfX2FzbV9fICgiLmFyY2ggZXY2OyBwZXJyICAgICVyMSwl cjIsJTAiIDogIj1yIiAoX19yKSA6ICIlckoiIChhKSwgInJKIiAoYikpOyBfX3I7IH0pCi0jZGVm aW5lIHBrbGIoYSkgICAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IHBr bGIgICAgJXIxLCUwIiAgICAgOiAiPXIiIChfX3IpIDogInJKIiAgKGEpKTsgICAgICAgICAgIF9f cjsgfSkKLSNkZWZpbmUgcGt3YihhKSAgICAgICh7IHVpbnQ2NF90IF9fcjsgX19hc21fXyAoIi5h cmNoIGV2NjsgcGt3YiAgICAlcjEsJTAiICAgICA6ICI9ciIgKF9fcikgOiAickoiICAoYSkpOyAg ICAgICAgICAgX19yOyB9KQotI2RlZmluZSB1bnBrYmwoYSkgICAgKHsgdWludDY0X3QgX19yOyBf X2FzbV9fICgiLmFyY2ggZXY2OyB1bnBrYmwgICVyMSwlMCIgICAgIDogIj1yIiAoX19yKSA6ICJy SiIgIChhKSk7ICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5lIHVucGtidyhhKSAgICAoeyB1aW50 NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IHVucGtidyAgJXIxLCUwIiAgICAgOiAiPXIi IChfX3IpIDogInJKIiAgKGEpKTsgICAgICAgICAgIF9fcjsgfSkKLSNlbmRpZgotCi0jZWxzZQot I2Vycm9yICJVbmtub3duIGNvbXBpbGVyISIKLSNlbmRpZgotCi0jZW5kaWYgLyogQVZDT0RFQ19B TFBIQV9BU01fSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9ibG9ja2RzcF9hbHBo YS5jIGIvbGliYXZjb2RlYy9hbHBoYS9ibG9ja2RzcF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBjNmYwOTY0NjA3Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxw aGEvYmxvY2tkc3BfYWxwaGEuYworKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0g KiBBbHBoYSBvcHRpbWlzZWQgYmxvY2sgb3BlcmF0aW9ucwotICogQ29weXJpZ2h0IChjKSAyMDAy IEZhbGsgSHVlZmZuZXIgPGZhbGtAZGViaWFuLm9yZz4KLSAqCi0gKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiBGRm1wZWcuCi0gKgotICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBG Rm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGgg RkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEw LTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGludC5oPgotCi0jaW5jbHVkZSAibGliYXZ1 dGlsL2F0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2Jsb2NrZHNwLmgiCi0jaW5j bHVkZSAiYXNtLmgiCi0KLXN0YXRpYyB2b2lkIGNsZWFyX2Jsb2Nrc19heHAoaW50MTZfdCAqYmxv Y2tzKSB7Ci0gICAgdWludDY0X3QgKnAgPSAodWludDY0X3QgKikgYmxvY2tzOwotICAgIGludCBu ID0gc2l6ZW9mKGludDE2X3QpICogNiAqIDY0OwotCi0gICAgZG8gewotICAgICAgICBwWzBdID0g MDsKLSAgICAgICAgcFsxXSA9IDA7Ci0gICAgICAgIHBbMl0gPSAwOwotICAgICAgICBwWzNdID0g MDsKLSAgICAgICAgcFs0XSA9IDA7Ci0gICAgICAgIHBbNV0gPSAwOwotICAgICAgICBwWzZdID0g MDsKLSAgICAgICAgcFs3XSA9IDA7Ci0gICAgICAgIHAgKz0gODsKLSAgICAgICAgbiAtPSA4ICog ODsKLSAgICB9IHdoaWxlIChuKTsKLX0KLQotYXZfY29sZCB2b2lkIGZmX2Jsb2NrZHNwX2luaXRf YWxwaGEoQmxvY2tEU1BDb250ZXh0ICpjKQotewotICAgIGMtPmNsZWFyX2Jsb2NrcyA9IGNsZWFy X2Jsb2Nrc19heHA7Ci19CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxw aGEuYyBiL2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA4ZDU0ODA3ZDhmLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxw aGEvaHBlbGRzcF9hbHBoYS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLS8qCi0g KiBBbHBoYSBvcHRpbWl6ZWQgRFNQIHV0aWxzCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRmFsayBI dWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4s IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV U0EKLSAqLwotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJs aWJhdmNvZGVjL2hwZWxkc3AuaCIKLSNpbmNsdWRlICJocGVsZHNwX2FscGhhLmgiCi0jaW5jbHVk ZSAiYXNtLmgiCi0KLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgYXZnMl9ub19ybmQodWludDY0X3Qg YSwgdWludDY0X3QgYikKLXsKLSAgICByZXR1cm4gKGEgJiBiKSArICgoKGEgXiBiKSAmIEJZVEVf VkVDKDB4ZmUpKSA+PiAxKTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50NjRfdCBhdmcyKHVpbnQ2 NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0gICAgcmV0dXJuIChhIHwgYikgLSAoKChhIF4gYikgJiBC WVRFX1ZFQygweGZlKSkgPj4gMSk7Ci19Ci0KLSNpZiAwCi0vKiBUaGUgWFkyIHJvdXRpbmVzIGJh c2ljYWxseSB1dGlsaXplIHRoaXMgc2NoZW1lLCBidXQgcmV1c2UgcGFydHMgaW4KLSAgIGVhY2gg aXRlcmF0aW9uLiAgKi8KLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgYXZnNCh1aW50NjRfdCBsMSwg dWludDY0X3QgbDIsIHVpbnQ2NF90IGwzLCB1aW50NjRfdCBsNCkKLXsKLSAgICB1aW50NjRfdCBy MSA9ICgobDEgJiB+QllURV9WRUMoMHgwMykpID4+IDIpCi0gICAgICAgICAgICAgICAgKyAoKGwy ICYgfkJZVEVfVkVDKDB4MDMpKSA+PiAyKQotICAgICAgICAgICAgICAgICsgKChsMyAmIH5CWVRF X1ZFQygweDAzKSkgPj4gMikKLSAgICAgICAgICAgICAgICArICgobDQgJiB+QllURV9WRUMoMHgw MykpID4+IDIpOwotICAgIHVpbnQ2NF90IHIyID0gKCggIChsMSAmIEJZVEVfVkVDKDB4MDMpKQot ICAgICAgICAgICAgICAgICAgICArIChsMiAmIEJZVEVfVkVDKDB4MDMpKQotICAgICAgICAgICAg ICAgICAgICArIChsMyAmIEJZVEVfVkVDKDB4MDMpKQotICAgICAgICAgICAgICAgICAgICArIChs NCAmIEJZVEVfVkVDKDB4MDMpKQotICAgICAgICAgICAgICAgICAgICArIEJZVEVfVkVDKDB4MDIp KSA+PiAyKSAmIEJZVEVfVkVDKDB4MDMpOwotICAgIHJldHVybiByMSArIHIyOwotfQotI2VuZGlm Ci0KLSNkZWZpbmUgT1AoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg U1RPUkUoTE9BRChwaXhlbHMpLCBibG9jayk7ICAgICAgICAgICAgIFwKLSAgICAgICAgcGl4ZWxz ICs9IGxpbmVfc2l6ZTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYmxvY2sgKz0gbGlu ZV9zaXplOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgtLWgpCi0KLSNkZWZp bmUgT1BfWDIoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICB1aW50NjRfdCBwaXgxLCBwaXgyOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHBpeDEgPSBMT0FEKHBp eGVscyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwaXgy ID0gcGl4MSA+PiA4IHwgKCh1aW50NjRfdCkgcGl4ZWxzWzhdIDw8IDU2KTsgICAgICAgIFwKLSAg ICAgICAgU1RPUkUoQVZHMihwaXgxLCBwaXgyKSwgYmxvY2spOyAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICBibG9jayArPSBsaW5lX3NpemU7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgtLWgpCi0KLSNkZWZpbmUg T1BfWTIoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdWludDY0X3QgcGl4 ID0gTE9BRChwaXhlbHMpOyAgICAgICAgICAgIFwKLSAgICAgICAgZG8geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ2NF90IG5leHRfcGl4OyAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7ICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgIG5leHRfcGl4ID0gTE9BRChwaXhlbHMpOyAgICAgICAgICAgIFwK LSAgICAgICAgICAgIFNUT1JFKEFWRzIocGl4LCBuZXh0X3BpeCksIGJsb2NrKTsgIFwKLSAgICAg ICAgICAgIGJsb2NrICs9IGxpbmVfc2l6ZTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg IHBpeCA9IG5leHRfcGl4OyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSB3aGlsZSAo LS1oKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVm aW5lIE9QX1hZMihMT0FELCBTVE9SRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdWludDY0X3Qg cGl4MSA9IExPQUQocGl4ZWxzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgIHVpbnQ2NF90IHBpeDIgPSBwaXgxID4+IDggfCAoKHVpbnQ2NF90KSBwaXhl bHNbOF0gPDwgNTYpOyAgICAgICAgICAgXAotICAgICAgICB1aW50NjRfdCBwaXhfbCA9IChwaXgx ICYgQllURV9WRUMoMHgwMykpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgKyAocGl4MiAmIEJZVEVfVkVDKDB4MDMpKTsgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgIHVpbnQ2NF90IHBpeF9oID0gKChwaXgxICYgfkJZVEVfVkVD KDB4MDMpKSA+PiAyKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAg ICArICgocGl4MiAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMik7ICAgICAgICAgICAgICAgICAgIFwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAg dWludDY0X3QgbnBpeDEsIG5waXgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ2NF90IG5waXhfbCwgbnBpeF9oOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB1aW50NjRfdCBhdmc7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBucGl4 MSA9IExPQUQocGl4ZWxzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgICAgbnBpeDIgPSBucGl4MSA+PiA4IHwgKCh1aW50NjRfdCkgcGl4ZWxz WzhdIDw8IDU2KTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5waXhfbCA9IChucGl4MSAm IEJZVEVfVkVDKDB4MDMpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICAgICAgICAgKyAobnBpeDIgJiBCWVRFX1ZFQygweDAzKSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgbnBpeF9oID0gKChucGl4MSAmIH5CWVRFX1ZFQygw eDAzKSkgPj4gMikgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAr ICgobnBpeDIgJiB+QllURV9WRUMoMHgwMykpID4+IDIpOyAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgICAgICBhdmcgPSAoKChwaXhfbCArIG5waXhfbCArIEFWRzRfUk9VTkRFUikgPj4g MikgJiBCWVRFX1ZFQygweDAzKSkgXAotICAgICAgICAgICAgICAgICsgcGl4X2ggKyBucGl4X2g7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg IFNUT1JFKGF2ZywgYmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgYmxvY2sgKz0gbGlu ZV9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgIHBpeF9sID0gbnBpeF9sOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwaXhfaCA9IG5waXhfaDsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9IHdoaWxl ICgtLWgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIE1BS0VfT1AoT1BOQU1FLCBTVUZGLCBP UEtJTkQsIFNUT1JFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIHZv aWQgT1BOQU1FICMjIF9waXhlbHMgIyMgU1VGRiAjIyBfYXhwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgKHVpbnQ4X3QgKnJlc3RyaWN0IGJsb2NrLCBjb25zdCB1aW50 OF90ICpyZXN0cmljdCBwaXhlbHMsICAgICAgICAgICBcCi0gICAgICAgICBwdHJkaWZmX3QgbGlu ZV9zaXplLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoKHNpemVfdCkgcGl4ZWxzICYgMHg3KSB7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9QS0lO RCh1bGRxLCBTVE9SRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT1BLSU5EKGxkcSwgU1RPUkUp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi1zdGF0aWMgdm9pZCBPUE5BTUUgIyMgX3BpeGVsczE2ICMjIFNVRkYgIyMgX2F4cCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodWludDhfdCAqcmVzdHJpY3QgYmxv Y2ssIGNvbnN0IHVpbnQ4X3QgKnJlc3RyaWN0IHBpeGVscywgICAgICAgICAgIFwKLSAgICAgICAg IHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE9QTkFNRSAjIyBfcGl4ZWxz ICMjIFNVRkYgIyMgX2F4cChibG9jaywgICAgIHBpeGVscywgICAgIGxpbmVfc2l6ZSwgaCk7IFwK LSAgICBPUE5BTUUgIyMgX3BpeGVscyAjIyBTVUZGICMjIF9heHAoYmxvY2sgKyA4LCBwaXhlbHMg KyA4LCBsaW5lX3NpemUsIGgpOyBcCi19Ci0KLSNkZWZpbmUgUElYT1AoT1BOQU1FLCBTVE9SRSkg ICAgICAgICAgICAgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgLCAgICAgT1AsICAgICBT VE9SRSkgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3gyLCAgT1BfWDIsICBTVE9SRSkg ICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3kyLCAgT1BfWTIsICBTVE9SRSkgICAgICAg IFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3h5MiwgT1BfWFkyLCBTVE9SRSkKLQotLyogUm91bmRp bmcgcHJpbWl0aXZlcy4gICovCi0jZGVmaW5lIEFWRzIgYXZnMgotI2RlZmluZSBBVkc0IGF2ZzQK LSNkZWZpbmUgQVZHNF9ST1VOREVSIEJZVEVfVkVDKDB4MDIpCi0jZGVmaW5lIFNUT1JFKGwsIGIp IHN0cShsLCBiKQotUElYT1AocHV0LCBTVE9SRSk7Ci0KLSN1bmRlZiBTVE9SRQotI2RlZmluZSBT VE9SRShsLCBiKSBzdHEoQVZHMihsLCBsZHEoYikpLCBiKTsKLVBJWE9QKGF2ZywgU1RPUkUpOwot Ci0vKiBOb3Qgcm91bmRpbmcgcHJpbWl0aXZlcy4gICovCi0jdW5kZWYgQVZHMgotI3VuZGVmIEFW RzQKLSN1bmRlZiBBVkc0X1JPVU5ERVIKLSN1bmRlZiBTVE9SRQotI2RlZmluZSBBVkcyIGF2ZzJf bm9fcm5kCi0jZGVmaW5lIEFWRzQgYXZnNF9ub19ybmQKLSNkZWZpbmUgQVZHNF9ST1VOREVSIEJZ VEVfVkVDKDB4MDEpCi0jZGVmaW5lIFNUT1JFKGwsIGIpIHN0cShsLCBiKQotUElYT1AocHV0X25v X3JuZCwgU1RPUkUpOwotCi0jdW5kZWYgU1RPUkUKLSNkZWZpbmUgU1RPUkUobCwgYikgc3RxKEFW RzIobCwgbGRxKGIpKSwgYik7Ci1QSVhPUChhdmdfbm9fcm5kLCBTVE9SRSk7Ci0KLXN0YXRpYyB2 b2lkIHB1dF9waXhlbHMxNl9heHBfYXNtKHVpbnQ4X3QgKmJsb2NrLCBjb25zdCB1aW50OF90ICpw aXhlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9z aXplLCBpbnQgaCkKLXsKLSAgICBwdXRfcGl4ZWxzX2F4cF9hc20oYmxvY2ssICAgICBwaXhlbHMs ICAgICBsaW5lX3NpemUsIGgpOwotICAgIHB1dF9waXhlbHNfYXhwX2FzbShibG9jayArIDgsIHBp eGVscyArIDgsIGxpbmVfc2l6ZSwgaCk7Ci19Ci0KLWF2X2NvbGQgdm9pZCBmZl9ocGVsZHNwX2lu aXRfYWxwaGEoSHBlbERTUENvbnRleHQgKmMsIGludCBmbGFncykKLXsKLSAgICBjLT5wdXRfcGl4 ZWxzX3RhYlswXVswXSA9IHB1dF9waXhlbHMxNl9heHBfYXNtOwotICAgIGMtPnB1dF9waXhlbHNf dGFiWzBdWzFdID0gcHV0X3BpeGVsczE2X3gyX2F4cDsKLSAgICBjLT5wdXRfcGl4ZWxzX3RhYlsw XVsyXSA9IHB1dF9waXhlbHMxNl95Ml9heHA7Ci0gICAgYy0+cHV0X3BpeGVsc190YWJbMF1bM10g PSBwdXRfcGl4ZWxzMTZfeHkyX2F4cDsKLQotICAgIGMtPnB1dF9ub19ybmRfcGl4ZWxzX3RhYlsw XVswXSA9IHB1dF9waXhlbHMxNl9heHBfYXNtOwotICAgIGMtPnB1dF9ub19ybmRfcGl4ZWxzX3Rh YlswXVsxXSA9IHB1dF9ub19ybmRfcGl4ZWxzMTZfeDJfYXhwOwotICAgIGMtPnB1dF9ub19ybmRf cGl4ZWxzX3RhYlswXVsyXSA9IHB1dF9ub19ybmRfcGl4ZWxzMTZfeTJfYXhwOwotICAgIGMtPnB1 dF9ub19ybmRfcGl4ZWxzX3RhYlswXVszXSA9IHB1dF9ub19ybmRfcGl4ZWxzMTZfeHkyX2F4cDsK LQotICAgIGMtPmF2Z19waXhlbHNfdGFiWzBdWzBdID0gYXZnX3BpeGVsczE2X2F4cDsKLSAgICBj LT5hdmdfcGl4ZWxzX3RhYlswXVsxXSA9IGF2Z19waXhlbHMxNl94Ml9heHA7Ci0gICAgYy0+YXZn X3BpeGVsc190YWJbMF1bMl0gPSBhdmdfcGl4ZWxzMTZfeTJfYXhwOwotICAgIGMtPmF2Z19waXhl bHNfdGFiWzBdWzNdID0gYXZnX3BpeGVsczE2X3h5Ml9heHA7Ci0KLSAgICBjLT5hdmdfbm9fcm5k X3BpeGVsc190YWJbMF0gPSBhdmdfbm9fcm5kX3BpeGVsczE2X2F4cDsKLSAgICBjLT5hdmdfbm9f cm5kX3BpeGVsc190YWJbMV0gPSBhdmdfbm9fcm5kX3BpeGVsczE2X3gyX2F4cDsKLSAgICBjLT5h dmdfbm9fcm5kX3BpeGVsc190YWJbMl0gPSBhdmdfbm9fcm5kX3BpeGVsczE2X3kyX2F4cDsKLSAg ICBjLT5hdmdfbm9fcm5kX3BpeGVsc190YWJbM10gPSBhdmdfbm9fcm5kX3BpeGVsczE2X3h5Ml9h eHA7Ci0KLSAgICBjLT5wdXRfcGl4ZWxzX3RhYlsxXVswXSA9IHB1dF9waXhlbHNfYXhwX2FzbTsK LSAgICBjLT5wdXRfcGl4ZWxzX3RhYlsxXVsxXSA9IHB1dF9waXhlbHNfeDJfYXhwOwotICAgIGMt PnB1dF9waXhlbHNfdGFiWzFdWzJdID0gcHV0X3BpeGVsc195Ml9heHA7Ci0gICAgYy0+cHV0X3Bp eGVsc190YWJbMV1bM10gPSBwdXRfcGl4ZWxzX3h5Ml9heHA7Ci0KLSAgICBjLT5wdXRfbm9fcm5k X3BpeGVsc190YWJbMV1bMF0gPSBwdXRfcGl4ZWxzX2F4cF9hc207Ci0gICAgYy0+cHV0X25vX3Ju ZF9waXhlbHNfdGFiWzFdWzFdID0gcHV0X25vX3JuZF9waXhlbHNfeDJfYXhwOwotICAgIGMtPnB1 dF9ub19ybmRfcGl4ZWxzX3RhYlsxXVsyXSA9IHB1dF9ub19ybmRfcGl4ZWxzX3kyX2F4cDsKLSAg ICBjLT5wdXRfbm9fcm5kX3BpeGVsc190YWJbMV1bM10gPSBwdXRfbm9fcm5kX3BpeGVsc194eTJf YXhwOwotCi0gICAgYy0+YXZnX3BpeGVsc190YWJbMV1bMF0gPSBhdmdfcGl4ZWxzX2F4cDsKLSAg ICBjLT5hdmdfcGl4ZWxzX3RhYlsxXVsxXSA9IGF2Z19waXhlbHNfeDJfYXhwOwotICAgIGMtPmF2 Z19waXhlbHNfdGFiWzFdWzJdID0gYXZnX3BpeGVsc195Ml9heHA7Ci0gICAgYy0+YXZnX3BpeGVs c190YWJbMV1bM10gPSBhdmdfcGl4ZWxzX3h5Ml9heHA7Ci19CmRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL2FscGhhL2hwZWxkc3BfYWxwaGEuaCBiL2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBo YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODUxODJjNjdiLi4wMDAwMDAwMDAw Ci0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5oCisrKyAvZGV2L251bGwKQEAg LTEsMjggKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0g KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0j aWZuZGVmIEFWQ09ERUNfQUxQSEFfSFBFTERTUF9BTFBIQV9ICi0jZGVmaW5lIEFWQ09ERUNfQUxQ SEFfSFBFTERTUF9BTFBIQV9ICi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzdGRk ZWYuaD4KLQotdm9pZCBwdXRfcGl4ZWxzX2F4cF9hc20odWludDhfdCAqYmxvY2ssIGNvbnN0IHVp bnQ4X3QgKnBpeGVscywKLSAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3Np emUsIGludCBoKTsKLQotI2VuZGlmIC8qIEFWQ09ERUNfQUxQSEFfSFBFTERTUF9BTFBIQV9IICov CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxwaGFfYXNtLlMgYi9saWJh dmNvZGVjL2FscGhhL2hwZWxkc3BfYWxwaGFfYXNtLlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGRmMzg2YzQyOWUuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBoYS9ocGVs ZHNwX2FscGhhX2FzbS5TCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiBB bHBoYSBvcHRpbWl6ZWQgRFNQIHV0aWxzCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRmFsayBIdWVm Zm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBl Zy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUx IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK LSAqLwotCi0vKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSBzY2hlZHVsZWQgZm9yIHBjYTU2LiBU aGV5IHNob3VsZCB3b3JrCi0gKiByZWFzb25hYmx5IG9uIGV2NiwgdGhvdWdoLgotICovCi0KLSNp bmNsdWRlICJyZWdkZWYuaCIKLQotCi0gICAgICAgIC5zZXQgbm9hdAotICAgICAgICAuc2V0IG5v cmVvcmRlcgotICAgICAgICAuYXJjaCBwY2E1NgotICAgICAgICAudGV4dAotCi0vKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCi0gKiB2b2lkIHB1dF9waXhlbHNfYXhwX2FzbSh1aW50OF90ICpibG9jaywgY29uc3Qg dWludDhfdCAqcGl4ZWxzLAotICogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVfc2l6 ZSwgaW50IGgpCi0gKi8KLSAgICAgICAgLmFsaWduIDYKLSAgICAgICAgLmdsb2JsIHB1dF9waXhl bHNfYXhwX2FzbQotICAgICAgICAuZW50IHB1dF9waXhlbHNfYXhwX2FzbQotcHV0X3BpeGVsc19h eHBfYXNtOgotICAgICAgICAuZnJhbWUgc3AsIDAsIHJhCi0gICAgICAgIC5wcm9sb2d1ZSAwCi0K LSAgICAgICAgYW5kICAgICBhMSwgNywgdDAKLSAgICAgICAgYmVxICAgICB0MCwgJGFsaWduZWQK LQotICAgICAgICAuYWxpZ24gNAotJHVuYWxpZ25lZDoKLSAgICAgICAgbGRxX3UgICB0MCwgMChh MSkKLSAgICAgICAgbGRxX3UgICB0MSwgOChhMSkKLSAgICAgICAgYWRkcSAgICBhMSwgYTIsIGEx Ci0gICAgICAgIG5vcAotCi0gICAgICAgIGxkcV91ICAgdDIsIDAoYTEpCi0gICAgICAgIGxkcV91 ICAgdDMsIDgoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQotICAgICAgICBub3AKLQot ICAgICAgICBsZHFfdSAgIHQ0LCAwKGExKQotICAgICAgICBsZHFfdSAgIHQ1LCA4KGExKQotICAg ICAgICBhZGRxICAgIGExLCBhMiwgYTEKLSAgICAgICAgbm9wCi0KLSAgICAgICAgbGRxX3UgICB0 NiwgMChhMSkKLSAgICAgICAgbGRxX3UgICB0NywgOChhMSkKLSAgICAgICAgZXh0cWwgICB0MCwg YTEsIHQwCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQotCi0gICAgICAgIGV4dHFoICAgdDEs IGExLCB0MQotICAgICAgICBhZGRxICAgIGEwLCBhMiwgdDgKLSAgICAgICAgZXh0cWwgICB0Miwg YTEsIHQyCi0gICAgICAgIGFkZHEgICAgdDgsIGEyLCB0OQotCi0gICAgICAgIGV4dHFoICAgdDMs IGExLCB0MwotICAgICAgICBhZGRxICAgIHQ5LCBhMiwgdGEKLSAgICAgICAgZXh0cWwgICB0NCwg YTEsIHQ0Ci0gICAgICAgIG9yICAgICAgdDAsIHQxLCB0MAotCi0gICAgICAgIGV4dHFoICAgdDUs IGExLCB0NQotICAgICAgICBvciAgICAgIHQyLCB0MywgdDIKLSAgICAgICAgZXh0cWwgICB0Niwg YTEsIHQ2Ci0gICAgICAgIG9yICAgICAgdDQsIHQ1LCB0NAotCi0gICAgICAgIGV4dHFoICAgdDcs IGExLCB0NwotICAgICAgICBvciAgICAgIHQ2LCB0NywgdDYKLSAgICAgICAgc3RxICAgICB0MCwg MChhMCkKLSAgICAgICAgc3RxICAgICB0MiwgMCh0OCkKLQotICAgICAgICBzdHEgICAgIHQ0LCAw KHQ5KQotICAgICAgICBzdWJxICAgIGEzLCA0LCBhMwotICAgICAgICBzdHEgICAgIHQ2LCAwKHRh KQotICAgICAgICBhZGRxICAgIHRhLCBhMiwgYTAKLQotICAgICAgICBibmUgICAgIGEzLCAkdW5h bGlnbmVkCi0gICAgICAgIHJldAotCi0gICAgICAgIC5hbGlnbiA0Ci0kYWxpZ25lZDoKLSAgICAg ICAgbGRxICAgICB0MCwgMChhMSkKLSAgICAgICAgYWRkcSAgICBhMSwgYTIsIGExCi0gICAgICAg IGxkcSAgICAgdDEsIDAoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQotCi0gICAgICAg IGxkcSAgICAgdDIsIDAoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQotICAgICAgICBs ZHEgICAgIHQzLCAwKGExKQotCi0gICAgICAgIGFkZHEgICAgYTAsIGEyLCB0NAotICAgICAgICBh ZGRxICAgIGExLCBhMiwgYTEKLSAgICAgICAgYWRkcSAgICB0NCwgYTIsIHQ1Ci0gICAgICAgIHN1 YnEgICAgYTMsIDQsIGEzCi0KLSAgICAgICAgc3RxICAgICB0MCwgMChhMCkKLSAgICAgICAgYWRk cSAgICB0NSwgYTIsIHQ2Ci0gICAgICAgIHN0cSAgICAgdDEsIDAodDQpCi0gICAgICAgIGFkZHEg ICAgdDYsIGEyLCBhMAotCi0gICAgICAgIHN0cSAgICAgdDIsIDAodDUpCi0gICAgICAgIHN0cSAg ICAgdDMsIDAodDYpCi0KLSAgICAgICAgYm5lICAgICBhMywgJGFsaWduZWQKLSAgICAgICAgcmV0 Ci0gICAgICAgIC5lbmQgcHV0X3BpeGVsc19heHBfYXNtCmRpZmYgLS1naXQgYS9saWJhdmNvZGVj L2FscGhhL2lkY3Rkc3BfYWxwaGEuYyBiL2xpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYS5j CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjc3MGMxNWZkLi4wMDAwMDAwMDAwCi0t LSBhL2xpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYS5jCisrKyAvZGV2L251bGwKQEAgLTEs MTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFs a0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0g KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0j aW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2F2 Y29kZWMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2lkY3Rkc3AuaCIKLSNpbmNsdWRlICJpZGN0 ZHNwX2FscGhhLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLXZvaWQgcHV0X3BpeGVsc19jbGFtcGVk X212aV9hc20oY29uc3QgaW50MTZfdCAqYmxvY2ssIHVpbnQ4X3QgKnBpeGVscywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSk7Ci12b2lkIGFkZF9w aXhlbHNfY2xhbXBlZF9tdmlfYXNtKGNvbnN0IGludDE2X3QgKmJsb2NrLCB1aW50OF90ICpwaXhl bHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUp OwotCi12b2lkICgqcHV0X3BpeGVsc19jbGFtcGVkX2F4cF9wKShjb25zdCBpbnQxNl90ICpibG9j aywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRy ZGlmZl90IGxpbmVfc2l6ZSk7Ci12b2lkICgqYWRkX3BpeGVsc19jbGFtcGVkX2F4cF9wKShjb25z dCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSk7Ci0KLSNpZiAwCi0vKiBUaGVzZSBmdW5j dGlvbnMgd2VyZSB0aGUgYmFzZSBmb3IgdGhlIG9wdGltaXplZCBhc3NlbWJsZXIgcm91dGluZXMs Ci0gICBhbmQgcmVtYWluIGhlcmUgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMuICAqLwotc3Rh dGljIHZvaWQgcHV0X3BpeGVsc19jbGFtcGVkX212aShjb25zdCBpbnQxNl90ICpibG9jaywgdWlu dDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZm X3QgbGluZV9zaXplKQotewotICAgIGludCBpID0gODsKLSAgICB1aW50NjRfdCBjbGFtcG1hc2sg PSB6YXAoLTEsIDB4YWEpOyAvKiAweDAwZmYwMGZmMDBmZjAwZmYgKi8KLQotICAgIGRvIHsKLSAg ICAgICAgdWludDY0X3Qgc2hvcnRzMCwgc2hvcnRzMTsKLQotICAgICAgICBzaG9ydHMwID0gbGRx KGJsb2NrKTsKLSAgICAgICAgc2hvcnRzMCA9IG1heHN3NChzaG9ydHMwLCAwKTsKLSAgICAgICAg c2hvcnRzMCA9IG1pbnN3NChzaG9ydHMwLCBjbGFtcG1hc2spOwotICAgICAgICBzdGwocGt3Yihz aG9ydHMwKSwgcGl4ZWxzKTsKLQotICAgICAgICBzaG9ydHMxID0gbGRxKGJsb2NrICsgNCk7Ci0g ICAgICAgIHNob3J0czEgPSBtYXhzdzQoc2hvcnRzMSwgMCk7Ci0gICAgICAgIHNob3J0czEgPSBt aW5zdzQoc2hvcnRzMSwgY2xhbXBtYXNrKTsKLSAgICAgICAgc3RsKHBrd2Ioc2hvcnRzMSksIHBp eGVscyArIDQpOwotCi0gICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7Ci0gICAgICAgIGJsb2Nr ICs9IDg7Ci0gICAgfSB3aGlsZSAoLS1pKTsKLX0KLQotdm9pZCBhZGRfcGl4ZWxzX2NsYW1wZWRf bXZpKGNvbnN0IGludDE2X3QgKmJsb2NrLCB1aW50OF90ICpwaXhlbHMsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSkKLXsKLSAgICBpbnQgaCA9IDg7Ci0g ICAgLyogS2VlcCB0aGlzIGZ1bmN0aW9uIGEgbGVhZiBmdW5jdGlvbiBieSBnZW5lcmF0aW5nIHRo ZSBjb25zdGFudHMKLSAgICAgICBtYW51YWxseSAobWFpbmx5IGZvciB0aGUgaGFjayB2YWx1ZSA7 LSkuICAqLwotICAgIHVpbnQ2NF90IGNsYW1wbWFzayA9IHphcCgtMSwgMHhhYSk7IC8qIDB4MDBm ZjAwZmYwMGZmMDBmZiAqLwotICAgIHVpbnQ2NF90IHNpZ25tYXNrICA9IHphcCgtMSwgMHgzMyk7 Ci0gICAgc2lnbm1hc2sgXj0gc2lnbm1hc2sgPj4gMTsgIC8qIDB4ODAwMDgwMDA4MDAwODAwMCAq LwotCi0gICAgZG8gewotICAgICAgICB1aW50NjRfdCBzaG9ydHMwLCBwaXgwLCBzaWduczA7Ci0g ICAgICAgIHVpbnQ2NF90IHNob3J0czEsIHBpeDEsIHNpZ25zMTsKLQotICAgICAgICBzaG9ydHMw ID0gbGRxKGJsb2NrKTsKLSAgICAgICAgc2hvcnRzMSA9IGxkcShibG9jayArIDQpOwotCi0gICAg ICAgIHBpeDAgICAgPSB1bnBrYncobGRsKHBpeGVscykpOwotICAgICAgICAvKiBTaWduZWQgc3Vi d29yZCBhZGQgKE1NWCBwYWRkdykuICAqLwotICAgICAgICBzaWduczAgID0gc2hvcnRzMCAmIHNp Z25tYXNrOwotICAgICAgICBzaG9ydHMwICY9IH5zaWdubWFzazsKLSAgICAgICAgc2hvcnRzMCAr PSBwaXgwOwotICAgICAgICBzaG9ydHMwIF49IHNpZ25zMDsKLSAgICAgICAgLyogQ2xhbXAuICov Ci0gICAgICAgIHNob3J0czAgPSBtYXhzdzQoc2hvcnRzMCwgMCk7Ci0gICAgICAgIHNob3J0czAg PSBtaW5zdzQoc2hvcnRzMCwgY2xhbXBtYXNrKTsKLQotICAgICAgICAvKiBOZXh0IDQuICAqLwot ICAgICAgICBwaXgxICAgID0gdW5wa2J3KGxkbChwaXhlbHMgKyA0KSk7Ci0gICAgICAgIHNpZ25z MSAgPSBzaG9ydHMxICYgc2lnbm1hc2s7Ci0gICAgICAgIHNob3J0czEgJj0gfnNpZ25tYXNrOwot ICAgICAgICBzaG9ydHMxICs9IHBpeDE7Ci0gICAgICAgIHNob3J0czEgXj0gc2lnbnMxOwotICAg ICAgICBzaG9ydHMxID0gbWF4c3c0KHNob3J0czEsIDApOwotICAgICAgICBzaG9ydHMxID0gbWlu c3c0KHNob3J0czEsIGNsYW1wbWFzayk7Ci0KLSAgICAgICAgc3RsKHBrd2Ioc2hvcnRzMCksIHBp eGVscyk7Ci0gICAgICAgIHN0bChwa3diKHNob3J0czEpLCBwaXhlbHMgKyA0KTsKLQotICAgICAg ICBwaXhlbHMgKz0gbGluZV9zaXplOwotICAgICAgICBibG9jayArPSA4OwotICAgIH0gd2hpbGUg KC0taCk7Ci19Ci0jZW5kaWYKLQotYXZfY29sZCB2b2lkIGZmX2lkY3Rkc3BfaW5pdF9hbHBoYShJ RENURFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0aCkKLXsKLSAgICAvKiBh bWFzayBjbGVhcnMgYWxsIGJpdHMgdGhhdCBjb3JyZXNwb25kIHRvIHByZXNlbnQgZmVhdHVyZXMu ICAqLwotICAgIGlmIChhbWFzayhBTUFTS19NVkkpID09IDApIHsKLSAgICAgICAgYy0+cHV0X3Bp eGVsc19jbGFtcGVkID0gcHV0X3BpeGVsc19jbGFtcGVkX212aV9hc207Ci0gICAgICAgIGMtPmFk ZF9waXhlbHNfY2xhbXBlZCA9IGFkZF9waXhlbHNfY2xhbXBlZF9tdmlfYXNtOwotICAgIH0KLQot ICAgIHB1dF9waXhlbHNfY2xhbXBlZF9heHBfcCA9IGMtPnB1dF9waXhlbHNfY2xhbXBlZDsKLSAg ICBhZGRfcGl4ZWxzX2NsYW1wZWRfYXhwX3AgPSBjLT5hZGRfcGl4ZWxzX2NsYW1wZWQ7Ci0KLSAg ICBpZiAoIWhpZ2hfYml0X2RlcHRoICYmICFhdmN0eC0+bG93cmVzICYmCi0gICAgICAgIChhdmN0 eC0+aWRjdF9hbGdvID09IEZGX0lEQ1RfQVVUTykpIHsKLSAgICAgICAgYy0+aWRjdF9wdXQgPSBm Zl9zaW1wbGVfaWRjdF9wdXRfYXhwOwotICAgICAgICBjLT5pZGN0X2FkZCA9IGZmX3NpbXBsZV9p ZGN0X2FkZF9heHA7Ci0gICAgICAgIGMtPmlkY3QgPSAgICAgZmZfc2ltcGxlX2lkY3RfYXhwOwot ICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYS5oIGIv bGliYXZjb2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDhjYzk2OWQ3ZGUuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBoYS9pZGN0 ZHNwX2FscGhhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogVGhpcyBm aWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh bG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19BTFBIQV9JRENURFNQ X0FMUEhBX0gKLSNkZWZpbmUgQVZDT0RFQ19BTFBIQV9JRENURFNQX0FMUEhBX0gKLQotI2luY2x1 ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgotCi1leHRlcm4gdm9pZCAoKnB1dF9w aXhlbHNfY2xhbXBlZF9heHBfcCkoY29uc3QgaW50MTZfdCAqYmxvY2ssIHVpbnQ4X3QgKnBpeGVs cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGlu ZV9zaXplKTsKLWV4dGVybiB2b2lkICgqYWRkX3BpeGVsc19jbGFtcGVkX2F4cF9wKShjb25zdCBp bnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUpOwotCi12b2lkIGZmX3NpbXBsZV9p ZGN0X2F4cChpbnQxNl90ICpibG9jayk7Ci12b2lkIGZmX3NpbXBsZV9pZGN0X3B1dF9heHAodWlu dDhfdCAqZGVzdCwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50MTZfdCAqYmxvY2spOwotdm9pZCBm Zl9zaW1wbGVfaWRjdF9hZGRfYXhwKHVpbnQ4X3QgKmRlc3QsIHB0cmRpZmZfdCBsaW5lX3NpemUs IGludDE2X3QgKmJsb2NrKTsKLQotI2VuZGlmIC8qIEFWQ09ERUNfQUxQSEFfSURDVERTUF9BTFBI QV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGFfYXNtLlMg Yi9saWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGFfYXNtLlMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGY1NDVkZjllNGYuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBo YS9pZGN0ZHNwX2FscGhhX2FzbS5TCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLS8q Ci0gKiBBbHBoYSBvcHRpbWl6ZWQgSURDVC1yZWxhdGVkIHJvdXRpbmVzCi0gKiBDb3B5cmlnaHQg KGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot ICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxv bmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0vKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSBzY2hl ZHVsZWQgZm9yIHBjYTU2LiBUaGV5IHNob3VsZCB3b3JrCi0gKiByZWFzb25hYmx5IG9uIGV2Niwg dGhvdWdoLgotICovCi0KLSNpbmNsdWRlICJyZWdkZWYuaCIKLQotICAgICAgICAuc2V0IG5vYXQK LSAgICAgICAgLnNldCBub3Jlb3JkZXIKLSAgICAgICAgLmFyY2ggcGNhNTYKLSAgICAgICAgLnRl eHQKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotICogdm9pZCBwdXRfcGl4ZWxzX2NsYW1wZWRfbXZpX2Fz bShjb25zdCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplKQotICovCi0gICAgICAgIC5h bGlnbiA2Ci0gICAgICAgIC5nbG9ibCBwdXRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbQotICAgICAg ICAuZW50IHB1dF9waXhlbHNfY2xhbXBlZF9tdmlfYXNtCi1wdXRfcGl4ZWxzX2NsYW1wZWRfbXZp X2FzbToKLSAgICAgICAgLmZyYW1lIHNwLCAwLCByYQotICAgICAgICAucHJvbG9ndWUgMAotCi0g ICAgICAgIGxkYSAgICAgdDgsIC0xCi0gICAgICAgIGxkYSAgICAgdDksIDggICAgICAgICAgICMg bG9vcCBjb3VudGVyCi0gICAgICAgIHphcCAgICAgdDgsIDB4YWEsIHQ4ICAgICMgMDBmZjAwZmYw MGZmMDBmZgotCi0gICAgICAgIC5hbGlnbiA0Ci0xOiAgICAgIGxkcSAgICAgdDAsICAwKGEwKQot ICAgICAgICBsZHEgICAgIHQxLCAgOChhMCkKLSAgICAgICAgbGRxICAgICB0MiwgMTYoYTApCi0g ICAgICAgIGxkcSAgICAgdDMsIDI0KGEwKQotCi0gICAgICAgIG1heHN3NCAgdDAsIHplcm8sIHQw Ci0gICAgICAgIHN1YnEgICAgdDksIDIsIHQ5Ci0gICAgICAgIG1heHN3NCAgdDEsIHplcm8sIHQx Ci0gICAgICAgIGxkYSAgICAgYTAsIDMyKGEwKQotCi0gICAgICAgIG1heHN3NCAgdDIsIHplcm8s IHQyCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCB0YQotICAgICAgICBtYXhzdzQgIHQzLCB6ZXJv LCB0MwotICAgICAgICBtaW5zdzQgIHQwLCB0OCwgdDAKLQotICAgICAgICBtaW5zdzQgIHQxLCB0 OCwgdDEKLSAgICAgICAgbWluc3c0ICB0MiwgdDgsIHQyCi0gICAgICAgIG1pbnN3NCAgdDMsIHQ4 LCB0MwotICAgICAgICBwa3diICAgIHQwLCB0MAotCi0gICAgICAgIHBrd2IgICAgdDEsIHQxCi0g ICAgICAgIHBrd2IgICAgdDIsIHQyCi0gICAgICAgIHBrd2IgICAgdDMsIHQzCi0gICAgICAgIHN0 bCAgICAgdDAsIDAoYTEpCi0KLSAgICAgICAgc3RsICAgICB0MSwgNChhMSkKLSAgICAgICAgYWRk cSAgICB0YSwgYTIsIGExCi0gICAgICAgIHN0bCAgICAgdDIsIDAodGEpCi0gICAgICAgIHN0bCAg ICAgdDMsIDQodGEpCi0KLSAgICAgICAgYm5lICAgICB0OSwgMWIKLSAgICAgICAgcmV0Ci0gICAg ICAgIC5lbmQgcHV0X3BpeGVsc19jbGFtcGVkX212aV9hc20KLQotLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICogdm9pZCBhZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbShjb25zdCBpbnQxNl90ICpibG9jaywg dWludDhfdCAqcGl4ZWxzLAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJk aWZmX3QgbGluZV9zaXplKQotICovCi0gICAgICAgIC5hbGlnbiA2Ci0gICAgICAgIC5nbG9ibCBh ZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbQotICAgICAgICAuZW50IGFkZF9waXhlbHNfY2xhbXBl ZF9tdmlfYXNtCi1hZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbToKLSAgICAgICAgLmZyYW1lIHNw LCAwLCByYQotICAgICAgICAucHJvbG9ndWUgMAotCi0gICAgICAgIGxkYSAgICAgdDEsIC0xCi0g ICAgICAgIGxkYSAgICAgdGgsIDgKLSAgICAgICAgemFwICAgICB0MSwgMHgzMywgdGcKLSAgICAg ICAgbm9wCi0KLSAgICAgICAgc3JsICAgICB0ZywgMSwgdDAKLSAgICAgICAgeG9yICAgICB0Zywg dDAsIHRnICAgICAgIyAweDgwMDA4MDAwODAwMDgwMDAKLSAgICAgICAgemFwICAgICB0MSwgMHhh YSwgdGYgICAgIyAweDAwZmYwMGZmMDBmZjAwZmYKLQotICAgICAgICAuYWxpZ24gNAotMTogICAg ICBsZGwgICAgIHQxLCAwKGExKSAgICAgICAjIHBpeDAgKHRyeSB0byBoaXQgY2FjaGUgbGluZSBz b29uKQotICAgICAgICBsZGwgICAgIHQ0LCA0KGExKSAgICAgICAjIHBpeDEKLSAgICAgICAgYWRk cSAgICBhMSwgYTIsIHRlICAgICAgIyBwaXhlbHMgKz0gbGluZV9zaXplCi0gICAgICAgIGxkcSAg ICAgdDAsIDAoYTApICAgICAgICMgc2hvcnRzMAotCi0gICAgICAgIGxkbCAgICAgdDcsIDAodGUp ICAgICAgICMgcGl4MiAodHJ5IHRvIGhpdCBjYWNoZSBsaW5lIHNvb24pCi0gICAgICAgIGxkbCAg ICAgdGEsIDQodGUpICAgICAgICMgcGl4MwotICAgICAgICBsZHEgICAgIHQzLCA4KGEwKSAgICAg ICAjIHNob3J0czEKLSAgICAgICAgbGRxICAgICB0NiwgMTYoYTApICAgICAgIyBzaG9ydHMyCi0K LSAgICAgICAgbGRxICAgICB0OSwgMjQoYTApICAgICAgIyBzaG9ydHMzCi0gICAgICAgIHVucGti dyAgdDEsIHQxICAgICAgICAgICMgMCAwIChxdWFydGVyL29wIG5vLikKLSAgICAgICAgYW5kICAg ICB0MCwgdGcsIHQyICAgICAgIyAwIDEKLSAgICAgICAgdW5wa2J3ICB0NCwgdDQgICAgICAgICAg IyAxIDAKLQotICAgICAgICBiaWMgICAgIHQwLCB0ZywgdDAgICAgICAjIDAgMgotICAgICAgICB1 bnBrYncgIHQ3LCB0NyAgICAgICAgICAjIDIgMAotICAgICAgICBhbmQgICAgIHQzLCB0ZywgdDUg ICAgICAjIDEgMQotICAgICAgICBhZGRxICAgIHQwLCB0MSwgdDAgICAgICAjIDAgMwotCi0gICAg ICAgIHhvciAgICAgdDAsIHQyLCB0MCAgICAgICMgMCA0Ci0gICAgICAgIHVucGtidyAgdGEsIHRh ICAgICAgICAgICMgMyAwCi0gICAgICAgIGFuZCAgICAgdDYsIHRnLCB0OCAgICAgICMgMiAxCi0g ICAgICAgIG1heHN3NCAgdDAsIHplcm8sIHQwICAgICMgMCA1Ci0KLSAgICAgICAgYmljICAgICB0 MywgdGcsIHQzICAgICAgIyAxIDIKLSAgICAgICAgYmljICAgICB0NiwgdGcsIHQ2ICAgICAgIyAy IDIKLSAgICAgICAgbWluc3c0ICB0MCwgdGYsIHQwICAgICAgIyAwIDYKLSAgICAgICAgYWRkcSAg ICB0MywgdDQsIHQzICAgICAgIyAxIDMKLQotICAgICAgICBwa3diICAgIHQwLCB0MCAgICAgICAg ICAjIDAgNwotICAgICAgICB4b3IgICAgIHQzLCB0NSwgdDMgICAgICAjIDEgNAotICAgICAgICBt YXhzdzQgIHQzLCB6ZXJvLCB0MyAgICAjIDEgNQotICAgICAgICBhZGRxICAgIHQ2LCB0NywgdDYg ICAgICAjIDIgMwotCi0gICAgICAgIHhvciAgICAgdDYsIHQ4LCB0NiAgICAgICMgMiA0Ci0gICAg ICAgIGFuZCAgICAgdDksIHRnLCB0YiAgICAgICMgMyAxCi0gICAgICAgIG1pbnN3NCAgdDMsIHRm LCB0MyAgICAgICMgMSA2Ci0gICAgICAgIGJpYyAgICAgdDksIHRnLCB0OSAgICAgICMgMyAyCi0K LSAgICAgICAgbWF4c3c0ICB0NiwgemVybywgdDYgICAgIyAyIDUKLSAgICAgICAgYWRkcSAgICB0 OSwgdGEsIHQ5ICAgICAgIyAzIDMKLSAgICAgICAgc3RsICAgICB0MCwgMChhMSkgICAgICAgIyAw IDgKLSAgICAgICAgbWluc3c0ICB0NiwgdGYsIHQ2ICAgICAgIyAyIDYKLQotICAgICAgICB4b3Ig ICAgIHQ5LCB0YiwgdDkgICAgICAjIDMgNAotICAgICAgICBtYXhzdzQgIHQ5LCB6ZXJvLCB0OSAg ICAjIDMgNQotICAgICAgICBsZGEgICAgIGEwLCAzMihhMCkgICAgICAjIGJsb2NrICs9IDE2Owot ICAgICAgICBwa3diICAgIHQzLCB0MyAgICAgICAgICAjIDEgNwotCi0gICAgICAgIG1pbnN3NCAg dDksIHRmLCB0OSAgICAgICMgMyA2Ci0gICAgICAgIHN1YnEgICAgdGgsIDIsIHRoCi0gICAgICAg IHBrd2IgICAgdDYsIHQ2ICAgICAgICAgICMgMiA3Ci0gICAgICAgIHBrd2IgICAgdDksIHQ5ICAg ICAgICAgICMgMyA3Ci0KLSAgICAgICAgc3RsICAgICB0MywgNChhMSkgICAgICAgIyAxIDgKLSAg ICAgICAgYWRkcSAgICB0ZSwgYTIsIGExICAgICAgIyBwaXhlbHMgKz0gbGluZV9zaXplCi0gICAg ICAgIHN0bCAgICAgdDYsIDAodGUpICAgICAgICMgMiA4Ci0gICAgICAgIHN0bCAgICAgdDksIDQo dGUpICAgICAgICMgMyA4Ci0KLSAgICAgICAgYm5lICAgICB0aCwgMWIKLSAgICAgICAgcmV0Ci0g ICAgICAgIC5lbmQgYWRkX3BpeGVsc19jbGFtcGVkX212aV9hc20KZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMgYi9saWJhdmNvZGVjL2FscGhhL21lX2NtcF9hbHBo YS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzFhNGE2MmM1Li4wMDAwMDAwMDAw Ci0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMKKysrIC9kZXYvbnVsbApAQCAt MSwyNzkgKzAsMCBAQAotLyoKLSAqIEFscGhhIG9wdGltaXplZCBEU1AgdXRpbHMKLSAqIENvcHly aWdodCAoYykgMjAwMiBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5vcmc+Ci0gKgotICogVGhp cyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv biAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot ICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z dG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmli dXRlcy5oIgotI2luY2x1ZGUgImxpYmF2Y29kZWMvbWVfY21wLmgiCi0jaW5jbHVkZSAiYXNtLmgi Ci0KLWludCBwaXhfYWJzMTZ4MTZfbXZpX2FzbShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnYsIGNv bnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOwotCi1zdGF0aWMgaW5saW5lIHVp bnQ2NF90IGF2ZzIodWludDY0X3QgYSwgdWludDY0X3QgYikKLXsKLSAgICByZXR1cm4gKGEgfCBi KSAtICgoKGEgXiBiKSAmIEJZVEVfVkVDKDB4ZmUpKSA+PiAxKTsKLX0KLQotc3RhdGljIGlubGlu ZSB1aW50NjRfdCBhdmc0KHVpbnQ2NF90IGwxLCB1aW50NjRfdCBsMiwgdWludDY0X3QgbDMsIHVp bnQ2NF90IGw0KQotewotICAgIHVpbnQ2NF90IHIxID0gKChsMSAmIH5CWVRFX1ZFQygweDAzKSkg Pj4gMikKLSAgICAgICAgICAgICAgICArICgobDIgJiB+QllURV9WRUMoMHgwMykpID4+IDIpCi0g ICAgICAgICAgICAgICAgKyAoKGwzICYgfkJZVEVfVkVDKDB4MDMpKSA+PiAyKQotICAgICAgICAg ICAgICAgICsgKChsNCAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMik7Ci0gICAgdWludDY0X3QgcjIg PSAoKCAgKGwxICYgQllURV9WRUMoMHgwMykpCi0gICAgICAgICAgICAgICAgICAgICsgKGwyICYg QllURV9WRUMoMHgwMykpCi0gICAgICAgICAgICAgICAgICAgICsgKGwzICYgQllURV9WRUMoMHgw MykpCi0gICAgICAgICAgICAgICAgICAgICsgKGw0ICYgQllURV9WRUMoMHgwMykpCi0gICAgICAg ICAgICAgICAgICAgICsgQllURV9WRUMoMHgwMikpID4+IDIpICYgQllURV9WRUMoMHgwMyk7Ci0g ICAgcmV0dXJuIHIxICsgcjI7Ci19Ci0KLXN0YXRpYyBpbnQgcGl4X2Ficzh4OF9tdmkoc3RydWN0 IE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpw aXgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQg aCkKLXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgIGlmICgoc2l6ZV90KSBwaXgyICYgMHg3 KSB7Ci0gICAgICAgIC8qIHdvcmtzIG9ubHkgd2hlbiBwaXgyIGlzIGFjdHVhbGx5IHVuYWxpZ25l ZCAqLwotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAvKiBkbyA4IHBpeGVsIGEgdGlt ZSAqLwotICAgICAgICAgICAgdWludDY0X3QgcDEsIHAyOwotCi0gICAgICAgICAgICBwMSAgPSBs ZHEocGl4MSk7Ci0gICAgICAgICAgICBwMiAgPSB1bGRxKHBpeDIpOwotICAgICAgICAgICAgcmVz dWx0ICs9IHBlcnIocDEsIHAyKTsKLQotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0g ICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgfSB3aGlsZSAoLS1oKTsKLSAg ICB9IGVsc2UgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICB1aW50NjRfdCBwMSwgcDI7Ci0K LSAgICAgICAgICAgIHAxID0gbGRxKHBpeDEpOwotICAgICAgICAgICAgcDIgPSBsZHEocGl4Mik7 Ci0gICAgICAgICAgICByZXN1bHQgKz0gcGVycihwMSwgcDIpOwotCi0gICAgICAgICAgICBwaXgx ICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgICAgIHBpeDIgKz0gbGluZV9zaXplOwotICAgICAgICB9 IHdoaWxlICgtLWgpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBp bnQgcGl4X2FiczE2eDE2X3gyX212aShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVp bnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpCi17Ci0gICAgaW50IHJlc3VsdCA9 IDA7Ci0gICAgdWludDY0X3QgZGlzYWxpZ24gPSAoc2l6ZV90KSBwaXgyICYgMHg3OwotCi0gICAg c3dpdGNoIChkaXNhbGlnbikgewotICAgIGNhc2UgMDoKLSAgICAgICAgZG8gewotICAgICAgICAg ICAgdWludDY0X3QgcDFfbCwgcDFfciwgcDJfbCwgcDJfcjsKLSAgICAgICAgICAgIHVpbnQ2NF90 IGwsIHI7Ci0KLSAgICAgICAgICAgIHAxX2wgPSBsZHEocGl4MSk7Ci0gICAgICAgICAgICBwMV9y ID0gbGRxKHBpeDEgKyA4KTsKLSAgICAgICAgICAgIGwgICAgPSBsZHEocGl4Mik7Ci0gICAgICAg ICAgICByICAgID0gbGRxKHBpeDIgKyA4KTsKLSAgICAgICAgICAgIHAyX2wgPSBhdmcyKGwsIChs ID4+IDgpIHwgKCh1aW50NjRfdCkgciA8PCA1NikpOwotICAgICAgICAgICAgcDJfciA9IGF2ZzIo ciwgKHIgPj4gOCkgfCAoKHVpbnQ2NF90KSBwaXgyWzE2XSA8PCA1NikpOwotICAgICAgICAgICAg cGl4MSArPSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLQotICAg ICAgICAgICAgcmVzdWx0ICs9IHBlcnIocDFfbCwgcDJfbCkKLSAgICAgICAgICAgICAgICAgICAg KyBwZXJyKHAxX3IsIHAyX3IpOwotICAgICAgICB9IHdoaWxlICgtLWgpOwotICAgICAgICBicmVh azsKLSAgICBjYXNlIDc6Ci0gICAgICAgIC8qIHwuLi4uLi4ubHxsbGxsbGxscnxycnJycnJyKnwK LSAgICAgICAgICAgVGhpcyBjYXNlIGlzIHNwZWNpYWwgYmVjYXVzZSBkaXNhbGlnbjEgd291bGQg YmUgOCwgd2hpY2gKLSAgICAgICAgICAgZ2V0cyB0cmVhdGVkIGFzIDAgYnkgZXh0cWguICBBdCBs ZWFzdCBpdCBpcyBhIGJpdCBmYXN0ZXIKLSAgICAgICAgICAgdGhhdCB3YXkgOikgICovCi0gICAg ICAgIGRvIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IHAxX2wsIHAxX3IsIHAyX2wsIHAyX3I7Ci0g ICAgICAgICAgICB1aW50NjRfdCBsLCBtLCByOwotCi0gICAgICAgICAgICBwMV9sID0gbGRxKHBp eDEpOwotICAgICAgICAgICAgcDFfciA9IGxkcShwaXgxICsgOCk7Ci0gICAgICAgICAgICBsICAg ICA9IGxkcV91KHBpeDIpOwotICAgICAgICAgICAgbSAgICAgPSBsZHFfdShwaXgyICsgOCk7Ci0g ICAgICAgICAgICByICAgICA9IGxkcV91KHBpeDIgKyAxNik7Ci0gICAgICAgICAgICBwMl9sICA9 IGF2ZzIoZXh0cWwobCwgZGlzYWxpZ24pIHwgZXh0cWgobSwgZGlzYWxpZ24pLCBtKTsKLSAgICAg ICAgICAgIHAyX3IgID0gYXZnMihleHRxbChtLCBkaXNhbGlnbikgfCBleHRxaChyLCBkaXNhbGln biksIHIpOwotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBwaXgy ICs9IGxpbmVfc2l6ZTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIocDFfbCwgcDJfbCkK LSAgICAgICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIHAyX3IpOwotICAgICAgICB9IHdoaWxl ICgtLWgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBkbyB7Ci0gICAg ICAgICAgICB1aW50NjRfdCBkaXNhbGlnbjEgPSBkaXNhbGlnbiArIDE7Ci0gICAgICAgICAgICB1 aW50NjRfdCBwMV9sLCBwMV9yLCBwMl9sLCBwMl9yOwotICAgICAgICAgICAgdWludDY0X3QgbCwg bSwgcjsKLQotICAgICAgICAgICAgcDFfbCAgPSBsZHEocGl4MSk7Ci0gICAgICAgICAgICBwMV9y ICA9IGxkcShwaXgxICsgOCk7Ci0gICAgICAgICAgICBsICAgICA9IGxkcV91KHBpeDIpOwotICAg ICAgICAgICAgbSAgICAgPSBsZHFfdShwaXgyICsgOCk7Ci0gICAgICAgICAgICByICAgICA9IGxk cV91KHBpeDIgKyAxNik7Ci0gICAgICAgICAgICBwMl9sICA9IGF2ZzIoZXh0cWwobCwgZGlzYWxp Z24pIHwgZXh0cWgobSwgZGlzYWxpZ24pLAotICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHFs KGwsIGRpc2FsaWduMSkgfCBleHRxaChtLCBkaXNhbGlnbjEpKTsKLSAgICAgICAgICAgIHAyX3Ig ID0gYXZnMihleHRxbChtLCBkaXNhbGlnbikgfCBleHRxaChyLCBkaXNhbGlnbiksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgZXh0cWwobSwgZGlzYWxpZ24xKSB8IGV4dHFoKHIsIGRpc2FsaWdu MSkpOwotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBwaXgyICs9 IGxpbmVfc2l6ZTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIocDFfbCwgcDJfbCkKLSAg ICAgICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIHAyX3IpOwotICAgICAgICB9IHdoaWxlICgt LWgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3Rh dGljIGludCBwaXhfYWJzMTZ4MTZfeTJfbXZpKHN0cnVjdCBNcGVnRW5jQ29udGV4dCAqdiwgY29u c3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkKLXsKLSAgICBpbnQgcmVz dWx0ID0gMDsKLQotICAgIGlmICgoc2l6ZV90KSBwaXgyICYgMHg3KSB7Ci0gICAgICAgIHVpbnQ2 NF90IHQsIHAyX2wsIHAyX3I7Ci0gICAgICAgIHQgICAgID0gbGRxX3UocGl4MiArIDgpOwotICAg ICAgICBwMl9sICA9IGV4dHFsKGxkcV91KHBpeDIpLCBwaXgyKSB8IGV4dHFoKHQsIHBpeDIpOwot ICAgICAgICBwMl9yICA9IGV4dHFsKHQsIHBpeDIpIHwgZXh0cWgobGRxX3UocGl4MiArIDE2KSwg cGl4Mik7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgdWludDY0X3QgcDFfbCwgcDFfciwg bnAyX2wsIG5wMl9yOwotICAgICAgICAgICAgdWludDY0X3QgdDsKLQotICAgICAgICAgICAgcDFf bCAgPSBsZHEocGl4MSk7Ci0gICAgICAgICAgICBwMV9yICA9IGxkcShwaXgxICsgOCk7Ci0gICAg ICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgICAgIHQgICAgID0gbGRxX3UocGl4 MiArIDgpOwotICAgICAgICAgICAgbnAyX2wgPSBleHRxbChsZHFfdShwaXgyKSwgcGl4MikgfCBl eHRxaCh0LCBwaXgyKTsKLSAgICAgICAgICAgIG5wMl9yID0gZXh0cWwodCwgcGl4MikgfCBleHRx aChsZHFfdShwaXgyICsgMTYpLCBwaXgyKTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIo cDFfbCwgYXZnMihwMl9sLCBucDJfbCkpCi0gICAgICAgICAgICAgICAgICAgICsgcGVycihwMV9y LCBhdmcyKHAyX3IsIG5wMl9yKSk7Ci0KLSAgICAgICAgICAgIHBpeDEgKz0gbGluZV9zaXplOwot ICAgICAgICAgICAgcDJfbCAgPSBucDJfbDsKLSAgICAgICAgICAgIHAyX3IgID0gbnAyX3I7Ci0K LSAgICAgICAgfSB3aGlsZSAoLS1oKTsKLSAgICB9IGVsc2UgewotICAgICAgICB1aW50NjRfdCBw Ml9sLCBwMl9yOwotICAgICAgICBwMl9sID0gbGRxKHBpeDIpOwotICAgICAgICBwMl9yID0gbGRx KHBpeDIgKyA4KTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgdWludDY0X3QgcDFfbCwgcDFf ciwgbnAyX2wsIG5wMl9yOwotCi0gICAgICAgICAgICBwMV9sID0gbGRxKHBpeDEpOwotICAgICAg ICAgICAgcDFfciA9IGxkcShwaXgxICsgOCk7Ci0gICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6 ZTsKLSAgICAgICAgICAgIG5wMl9sID0gbGRxKHBpeDIpOwotICAgICAgICAgICAgbnAyX3IgPSBs ZHEocGl4MiArIDgpOwotCi0gICAgICAgICAgICByZXN1bHQgKz0gcGVycihwMV9sLCBhdmcyKHAy X2wsIG5wMl9sKSkKLSAgICAgICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIGF2ZzIocDJfciwg bnAyX3IpKTsKLQotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBw Ml9sICA9IG5wMl9sOwotICAgICAgICAgICAgcDJfciAgPSBucDJfcjsKLSAgICAgICAgfSB3aGls ZSAoLS1oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludCBwaXhf YWJzMTZ4MTZfeHkyX212aShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3Qg KnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKQotewotICAgIGludCByZXN1bHQgPSAwOwot Ci0gICAgdWludDY0X3QgcDFfbCwgcDFfcjsKLSAgICB1aW50NjRfdCBwMl9sLCBwMl9yLCBwMl94 OwotCi0gICAgcDFfbCA9IGxkcShwaXgxKTsKLSAgICBwMV9yID0gbGRxKHBpeDEgKyA4KTsKLQot ICAgIGlmICgoc2l6ZV90KSBwaXgyICYgMHg3KSB7IC8qIGNvdWxkIGJlIG9wdGltaXplZCBhIGxv dCAqLwotICAgICAgICBwMl9sID0gdWxkcShwaXgyKTsKLSAgICAgICAgcDJfciA9IHVsZHEocGl4 MiArIDgpOwotICAgICAgICBwMl94ID0gKHVpbnQ2NF90KSBwaXgyWzE2XSA8PCA1NjsKLSAgICB9 IGVsc2UgewotICAgICAgICBwMl9sID0gbGRxKHBpeDIpOwotICAgICAgICBwMl9yID0gbGRxKHBp eDIgKyA4KTsKLSAgICAgICAgcDJfeCA9IGxkcShwaXgyICsgMTYpIDw8IDU2OwotICAgIH0KLQot ICAgIGRvIHsKLSAgICAgICAgdWludDY0X3QgbnAxX2wsIG5wMV9yOwotICAgICAgICB1aW50NjRf dCBucDJfbCwgbnAyX3IsIG5wMl94OwotCi0gICAgICAgIHBpeDEgKz0gbGluZV9zaXplOwotICAg ICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLQotICAgICAgICBucDFfbCA9IGxkcShwaXgxKTsKLSAg ICAgICAgbnAxX3IgPSBsZHEocGl4MSArIDgpOwotCi0gICAgICAgIGlmICgoc2l6ZV90KSBwaXgy ICYgMHg3KSB7IC8qIGNvdWxkIGJlIG9wdGltaXplZCBhIGxvdCAqLwotICAgICAgICAgICAgbnAy X2wgPSB1bGRxKHBpeDIpOwotICAgICAgICAgICAgbnAyX3IgPSB1bGRxKHBpeDIgKyA4KTsKLSAg ICAgICAgICAgIG5wMl94ID0gKHVpbnQ2NF90KSBwaXgyWzE2XSA8PCA1NjsKLSAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgIG5wMl9sID0gbGRxKHBpeDIpOwotICAgICAgICAgICAgbnAyX3Ig PSBsZHEocGl4MiArIDgpOwotICAgICAgICAgICAgbnAyX3ggPSBsZHEocGl4MiArIDE2KSA8PCA1 NjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdCArPSBwZXJyKHAxX2wsCi0gICAgICAgICAg ICAgICAgICAgICAgIGF2ZzQoIHAyX2wsICggcDJfbCA+PiA4KSB8ICgodWludDY0X3QpICBwMl9y IDw8IDU2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBucDJfbCwgKG5wMl9sID4+IDgp IHwgKCh1aW50NjRfdCkgbnAyX3IgPDwgNTYpKSkKLSAgICAgICAgICAgICAgICArIHBlcnIocDFf ciwKLSAgICAgICAgICAgICAgICAgICAgICAgYXZnNCggcDJfciwgKCBwMl9yID4+IDgpIHwgKCh1 aW50NjRfdCkgIHAyX3gpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5wMl9yLCAobnAy X3IgPj4gOCkgfCAoKHVpbnQ2NF90KSBucDJfeCkpKTsKLQotICAgICAgICBwMV9sID0gbnAxX2w7 Ci0gICAgICAgIHAxX3IgPSBucDFfcjsKLSAgICAgICAgcDJfbCA9IG5wMl9sOwotICAgICAgICBw Ml9yID0gbnAyX3I7Ci0gICAgICAgIHAyX3ggPSBucDJfeDsKLSAgICB9IHdoaWxlICgtLWgpOwot Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYXZfY29sZCB2b2lkIGZmX21lX2NtcF9pbml0X2Fs cGhhKE1FQ21wQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQotewotICAgIC8qIGFt YXNrIGNsZWFycyBhbGwgYml0cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJlc2VudCBmZWF0dXJlcy4g ICovCi0gICAgaWYgKGFtYXNrKEFNQVNLX01WSSkgPT0gMCkgewotICAgICAgICBjLT5zYWRbMF0g ICAgICAgICAgID0gcGl4X2FiczE2eDE2X212aV9hc207Ci0gICAgICAgIGMtPnNhZFsxXSAgICAg ICAgICAgPSBwaXhfYWJzOHg4X212aTsKLSAgICAgICAgYy0+cGl4X2Fic1swXVswXSAgICA9IHBp eF9hYnMxNngxNl9tdmlfYXNtOwotICAgICAgICBjLT5waXhfYWJzWzFdWzBdICAgID0gcGl4X2Fi czh4OF9tdmk7Ci0gICAgICAgIGMtPnBpeF9hYnNbMF1bMV0gICAgPSBwaXhfYWJzMTZ4MTZfeDJf bXZpOwotICAgICAgICBjLT5waXhfYWJzWzBdWzJdICAgID0gcGl4X2FiczE2eDE2X3kyX212aTsK LSAgICAgICAgYy0+cGl4X2Fic1swXVszXSAgICA9IHBpeF9hYnMxNngxNl94eTJfbXZpOwotICAg IH0KLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21wX212aV9hc20uUyBiL2xp YmF2Y29kZWMvYWxwaGEvbWVfY21wX212aV9hc20uUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMTgzZmVlYjQwYy4uMDAwMDAwMDAwMAotLS0gYS9saWJhdmNvZGVjL2FscGhhL21lX2Nt cF9tdmlfYXNtLlMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIEFscGhh IG9wdGltaXplZCBEU1AgdXRpbHMKLSAqIENvcHlyaWdodCAoYykgMjAwMiBGYWxrIEh1ZWZmbmVy IDxmYWxrQGRlYmlhbi5vcmc+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgot ICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICov Ci0KLSNpbmNsdWRlICJyZWdkZWYuaCIKLQotLyogU29tZSBuaWNlciByZWdpc3RlciBuYW1lcy4g ICovCi0jZGVmaW5lIHRhIHQxMAotI2RlZmluZSB0YiB0MTEKLSNkZWZpbmUgdGMgdDEyCi0jZGVm aW5lIHRkIEFUCi0vKiBEYW5nZXI6IHRoZXNlIG92ZXJsYXAgd2l0aCB0aGUgYXJndW1lbnQgbGlz dCBhbmQgdGhlIHJldHVybiB2YWx1ZSAqLwotI2RlZmluZSB0ZSBhNQotI2RlZmluZSB0ZiBhNAot I2RlZmluZSB0ZyBhMwotI2RlZmluZSB0aCB2MAotCi0gICAgICAgIC5zZXQgbm9hdAotICAgICAg ICAuc2V0IG5vcmVvcmRlcgotICAgICAgICAuYXJjaCBwY2E1NgotICAgICAgICAudGV4dAotCi0v KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKLSAqIGludCBwaXhfYWJzMTZ4MTZfbXZpX2FzbShjb25zdCB1 aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBpbnQgbGluZV9zaXplKQotICoKLSAq IFRoaXMgY29kZSBpcyB3cml0dGVuIHdpdGggYSBwY2E1NiBpbiBtaW5kLiBGb3IgZXY2LCBvbmUg c2hvdWxkCi0gKiByZWFsbHkgdGFrZSB0aGUgaW5jcmVhc2VkIGxhdGVuY3kgb2YgMyBjeWNsZXMg Zm9yIE1WSSBpbnN0cnVjdGlvbnMKLSAqIGludG8gYWNjb3VudC4KLSAqCi0gKiBJdCBpcyBpbXBv cnRhbnQgdG8ga2VlcCB0aGUgbG9hZGluZyBhbmQgZmlyc3QgdXNlIG9mIGEgcmVnaXN0ZXIgYXMK LSAqIGZhciBhcGFydCBhcyBwb3NzaWJsZSwgYmVjYXVzZSBpZiBhIHJlZ2lzdGVyIGlzIGFjY2Vz c2VkIGJlZm9yZSBpdAotICogaGFzIGJlZW4gZmV0Y2hlZCBmcm9tIG1lbW9yeSwgdGhlIENQVSB3 aWxsIHN0YWxsLgotICovCi0gICAgICAgIC5hbGlnbiA0Ci0gICAgICAgIC5nbG9ibCBwaXhfYWJz MTZ4MTZfbXZpX2FzbQotICAgICAgICAuZW50IHBpeF9hYnMxNngxNl9tdmlfYXNtCi1waXhfYWJz MTZ4MTZfbXZpX2FzbToKLSAgICAgICAgLmZyYW1lIHNwLCAwLCByYSwgMAotICAgICAgICAucHJv bG9ndWUgMAotCi0gICAgICAgIGFuZCAgICAgYTIsIDcsIHQwCi0gICAgICAgIGNsciAgICAgdjAK LSAgICAgICAgYmVxICAgICB0MCwgJGFsaWduZWQKLSAgICAgICAgLmFsaWduIDQKLSR1bmFsaWdu ZWQ6Ci0gICAgICAgIC8qIFJlZ2lzdGVyczoKLSAgICAgICAgICAgbGluZSAwOgotICAgICAgICAg ICB0MDogIGxlZnRfdSAtPiBsZWZ0IGxvIC0+IGxlZnQKLSAgICAgICAgICAgdDE6ICBtaWQKLSAg ICAgICAgICAgdDI6ICByaWdodF91IC0+IHJpZ2h0IGhpIC0+IHJpZ2h0Ci0gICAgICAgICAgIHQz OiAgcmVmIGxlZnQKLSAgICAgICAgICAgdDQ6ICByZWYgcmlnaHQKLSAgICAgICAgICAgbGluZSAx OgotICAgICAgICAgICB0NTogIGxlZnRfdSAtPiBsZWZ0IGxvIC0+IGxlZnQKLSAgICAgICAgICAg dDY6ICBtaWQKLSAgICAgICAgICAgdDc6ICByaWdodF91IC0+IHJpZ2h0IGhpIC0+IHJpZ2h0Ci0g ICAgICAgICAgIHQ4OiAgcmVmIGxlZnQKLSAgICAgICAgICAgdDk6ICByZWYgcmlnaHQKLSAgICAg ICAgICAgdGVtcDoKLSAgICAgICAgICAgdGE6ICBsZWZ0IGhpCi0gICAgICAgICAgIHRiOiAgcmln aHQgbG8KLSAgICAgICAgICAgdGM6ICBlcnJvciBsZWZ0Ci0gICAgICAgICAgIHRkOiAgZXJyb3Ig cmlnaHQgICovCi0KLSAgICAgICAgLyogbG9hZCBsaW5lIDAgKi8KLSAgICAgICAgbGRxX3UgICB0 MCwgMChhMikgICAgICAgIyBsZWZ0X3UKLSAgICAgICAgbGRxX3UgICB0MSwgOChhMikgICAgICAg IyBtaWQKLSAgICAgICAgbGRxX3UgICB0MiwgMTYoYTIpICAgICAgIyByaWdodF91Ci0gICAgICAg IGxkcSAgICAgdDMsIDAoYTEpICAgICAgICMgcmVmIGxlZnQKLSAgICAgICAgbGRxICAgICB0NCwg OChhMSkgICAgICAgIyByZWYgcmlnaHQKLSAgICAgICAgYWRkcSAgICBhMSwgYTMsIGExICAgICAg IyBwaXgxCi0gICAgICAgIGFkZHEgICAgYTIsIGEzLCBhMiAgICAgICMgcGl4MgotICAgICAgICAv KiBsb2FkIGxpbmUgMSAqLwotICAgICAgICBsZHFfdSAgIHQ1LCAwKGEyKSAgICAgICAjIGxlZnRf dQotICAgICAgICBsZHFfdSAgIHQ2LCA4KGEyKSAgICAgICAjIG1pZAotICAgICAgICBsZHFfdSAg IHQ3LCAxNihhMikgICAgICAjIHJpZ2h0X3UKLSAgICAgICAgbGRxICAgICB0OCwgMChhMSkgICAg ICAgIyByZWYgbGVmdAotICAgICAgICBsZHEgICAgIHQ5LCA4KGExKSAgICAgICAjIHJlZiByaWdo dAotICAgICAgICBhZGRxICAgIGExLCBhMywgYTEgICAgICAjIHBpeDEKLSAgICAgICAgYWRkcSAg ICBhMiwgYTMsIGEyICAgICAgIyBwaXgyCi0gICAgICAgIC8qIGNhbGMgbGluZSAwICovCi0gICAg ICAgIGV4dHFsICAgdDAsIGEyLCB0MCAgICAgICMgbGVmdCBsbwotICAgICAgICBleHRxaCAgIHQx LCBhMiwgdGEgICAgICAjIGxlZnQgaGkKLSAgICAgICAgZXh0cWwgICB0MSwgYTIsIHRiICAgICAg IyByaWdodCBsbwotICAgICAgICBvciAgICAgIHQwLCB0YSwgdDAgICAgICAjIGxlZnQKLSAgICAg ICAgZXh0cWggICB0MiwgYTIsIHQyICAgICAgIyByaWdodCBoaQotICAgICAgICBwZXJyICAgIHQz LCB0MCwgdGMgICAgICAjIGVycm9yIGxlZnQKLSAgICAgICAgb3IgICAgICB0MiwgdGIsIHQyICAg ICAgIyByaWdodAotICAgICAgICBwZXJyICAgIHQ0LCB0MiwgdGQgICAgICAjIGVycm9yIHJpZ2h0 Ci0gICAgICAgIGFkZHEgICAgdjAsIHRjLCB2MCAgICAgICMgYWRkIGVycm9yIGxlZnQKLSAgICAg ICAgYWRkcSAgICB2MCwgdGQsIHYwICAgICAgIyBhZGQgZXJyb3IgbGVmdAotICAgICAgICAvKiBj YWxjIGxpbmUgMSAqLwotICAgICAgICBleHRxbCAgIHQ1LCBhMiwgdDUgICAgICAjIGxlZnQgbG8K LSAgICAgICAgZXh0cWggICB0NiwgYTIsIHRhICAgICAgIyBsZWZ0IGhpCi0gICAgICAgIGV4dHFs ICAgdDYsIGEyLCB0YiAgICAgICMgcmlnaHQgbG8KLSAgICAgICAgb3IgICAgICB0NSwgdGEsIHQ1 ICAgICAgIyBsZWZ0Ci0gICAgICAgIGV4dHFoICAgdDcsIGEyLCB0NyAgICAgICMgcmlnaHQgaGkK LSAgICAgICAgcGVyciAgICB0OCwgdDUsIHRjICAgICAgIyBlcnJvciBsZWZ0Ci0gICAgICAgIG9y ICAgICAgdDcsIHRiLCB0NyAgICAgICMgcmlnaHQKLSAgICAgICAgcGVyciAgICB0OSwgdDcsIHRk ICAgICAgIyBlcnJvciByaWdodAotICAgICAgICBhZGRxICAgIHYwLCB0YywgdjAgICAgICAjIGFk ZCBlcnJvciBsZWZ0Ci0gICAgICAgIGFkZHEgICAgdjAsIHRkLCB2MCAgICAgICMgYWRkIGVycm9y IGxlZnQKLSAgICAgICAgLyogbG9vcCAqLwotICAgICAgICBzdWJxICAgIGE0LCAgMiwgYTQgICAg ICAjIGggLT0gMgotICAgICAgICBibmUgICAgIGE0LCAkdW5hbGlnbmVkCi0gICAgICAgIHJldAot Ci0gICAgICAgIC5hbGlnbiA0Ci0kYWxpZ25lZDoKLSAgICAgICAgLyogbG9hZCBsaW5lIDAgKi8K LSAgICAgICAgbGRxICAgICB0MCwgMChhMikgICAgICAgIyBsZWZ0Ci0gICAgICAgIGxkcSAgICAg dDEsIDgoYTIpICAgICAgICMgcmlnaHQKLSAgICAgICAgYWRkcSAgICBhMiwgYTMsIGEyICAgICAg IyBwaXgyCi0gICAgICAgIGxkcSAgICAgdDIsIDAoYTEpICAgICAgICMgcmVmIGxlZnQKLSAgICAg ICAgbGRxICAgICB0MywgOChhMSkgICAgICAgIyByZWYgcmlnaHQKLSAgICAgICAgYWRkcSAgICBh MSwgYTMsIGExICAgICAgIyBwaXgxCi0gICAgICAgIC8qIGxvYWQgbGluZSAxICovCi0gICAgICAg IGxkcSAgICAgdDQsIDAoYTIpICAgICAgICMgbGVmdAotICAgICAgICBsZHEgICAgIHQ1LCA4KGEy KSAgICAgICAjIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAgYTIsIGEzLCBhMiAgICAgICMgcGl4Mgot ICAgICAgICBsZHEgICAgIHQ2LCAwKGExKSAgICAgICAjIHJlZiBsZWZ0Ci0gICAgICAgIGxkcSAg ICAgdDcsIDgoYTEpICAgICAgICMgcmVmIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAgYTEsIGEzLCBh MSAgICAgICMgcGl4MQotICAgICAgICAvKiBsb2FkIGxpbmUgMiAqLwotICAgICAgICBsZHEgICAg IHQ4LCAwKGEyKSAgICAgICAjIGxlZnQKLSAgICAgICAgbGRxICAgICB0OSwgOChhMikgICAgICAg IyByaWdodAotICAgICAgICBhZGRxICAgIGEyLCBhMywgYTIgICAgICAjIHBpeDIKLSAgICAgICAg bGRxICAgICB0YSwgMChhMSkgICAgICAgIyByZWYgbGVmdAotICAgICAgICBsZHEgICAgIHRiLCA4 KGExKSAgICAgICAjIHJlZiByaWdodAotICAgICAgICBhZGRxICAgIGExLCBhMywgYTEgICAgICAj IHBpeDEKLSAgICAgICAgLyogbG9hZCBsaW5lIDMgKi8KLSAgICAgICAgbGRxICAgICB0YywgMChh MikgICAgICAgIyBsZWZ0Ci0gICAgICAgIGxkcSAgICAgdGQsIDgoYTIpICAgICAgICMgcmlnaHQK LSAgICAgICAgYWRkcSAgICBhMiwgYTMsIGEyICAgICAgIyBwaXgyCi0gICAgICAgIGxkcSAgICAg dGUsIDAoYTEpICAgICAgICMgcmVmIGxlZnQKLSAgICAgICAgbGRxICAgICBhMCwgOChhMSkgICAg ICAgIyByZWYgcmlnaHQKLSAgICAgICAgLyogY2FsYyBsaW5lIDAgKi8KLSAgICAgICAgcGVyciAg ICB0MCwgdDIsIHQwICAgICAgIyBlcnJvciBsZWZ0Ci0gICAgICAgIGFkZHEgICAgYTEsIGEzLCBh MSAgICAgICMgcGl4MQotICAgICAgICBwZXJyICAgIHQxLCB0MywgdDEgICAgICAjIGVycm9yIHJp Z2h0Ci0gICAgICAgIGFkZHEgICAgdjAsIHQwLCB2MCAgICAgICMgYWRkIGVycm9yIGxlZnQKLSAg ICAgICAgLyogY2FsYyBsaW5lIDEgKi8KLSAgICAgICAgcGVyciAgICB0NCwgdDYsIHQwICAgICAg IyBlcnJvciBsZWZ0Ci0gICAgICAgIGFkZHEgICAgdjAsIHQxLCB2MCAgICAgICMgYWRkIGVycm9y IHJpZ2h0Ci0gICAgICAgIHBlcnIgICAgdDUsIHQ3LCB0MSAgICAgICMgZXJyb3IgcmlnaHQKLSAg ICAgICAgYWRkcSAgICB2MCwgdDAsIHYwICAgICAgIyBhZGQgZXJyb3IgbGVmdAotICAgICAgICAv KiBjYWxjIGxpbmUgMiAqLwotICAgICAgICBwZXJyICAgIHQ4LCB0YSwgdDAgICAgICAjIGVycm9y IGxlZnQKLSAgICAgICAgYWRkcSAgICB2MCwgdDEsIHYwICAgICAgIyBhZGQgZXJyb3IgcmlnaHQK LSAgICAgICAgcGVyciAgICB0OSwgdGIsIHQxICAgICAgIyBlcnJvciByaWdodAotICAgICAgICBh ZGRxICAgIHYwLCB0MCwgdjAgICAgICAjIGFkZCBlcnJvciBsZWZ0Ci0gICAgICAgIC8qIGNhbGMg bGluZSAzICovCi0gICAgICAgIHBlcnIgICAgdGMsIHRlLCB0MCAgICAgICMgZXJyb3IgbGVmdAot ICAgICAgICBhZGRxICAgIHYwLCB0MSwgdjAgICAgICAjIGFkZCBlcnJvciByaWdodAotICAgICAg ICBwZXJyICAgIHRkLCBhMCwgdDEgICAgICAjIGVycm9yIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAg djAsIHQwLCB2MCAgICAgICMgYWRkIGVycm9yIGxlZnQKLSAgICAgICAgYWRkcSAgICB2MCwgdDEs IHYwICAgICAgIyBhZGQgZXJyb3IgcmlnaHQKLSAgICAgICAgLyogbG9vcCAqLwotICAgICAgICBz dWJxICAgIGE0LCAgNCwgYTQgICAgICAjIGggLT0gNAotICAgICAgICBibmUgICAgIGE0LCAkYWxp Z25lZAotICAgICAgICByZXQKLSAgICAgICAgLmVuZCBwaXhfYWJzMTZ4MTZfbXZpX2FzbQpkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9tcGVndmlkZW9fYWxwaGEuYyBiL2xpYmF2Y29kZWMv YWxwaGEvbXBlZ3ZpZGVvX2FscGhhLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEy NmZlMjY0YTEuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBoYS9tcGVndmlkZW9fYWxw aGEuYworKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQWxwaGEgb3B0aW1p emVkIERTUCB1dGlscwotICogQ29weXJpZ2h0IChjKSAyMDAyIEZhbGsgSHVlZmZuZXIgPGZhbGtA ZGViaWFuLm9yZz4KLSAqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCi0gKgotICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2lu Y2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCi0jaW5jbHVkZSAibGliYXZjb2RlYy9tcGVn dmlkZW8uaCIKLSNpbmNsdWRlICJhc20uaCIKLQotc3RhdGljIHZvaWQgZGN0X3VucXVhbnRpemVf aDI2M19heHAoaW50MTZfdCAqYmxvY2ssIGludCBuX2NvZWZmcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHFzY2FsZSwgdWludDY0X3QgcWFkZCkKLXsKLSAg ICB1aW50NjRfdCBxbXVsID0gcXNjYWxlIDw8IDE7Ci0gICAgdWludDY0X3QgY29ycmVjdGlvbiA9 IFdPUkRfVkVDKHFtdWwgKiAyNTUgPj4gOCk7Ci0gICAgaW50IGk7Ci0KLSAgICBxYWRkID0gV09S RF9WRUMocWFkZCk7Ci0KLSAgICBmb3IoaSA9IDA7IGkgPD0gbl9jb2VmZnM7IGJsb2NrICs9IDQs IGkgKz0gNCkgewotICAgICAgICB1aW50NjRfdCBsZXZlbHMsIG5lZ21hc2ssIHplcm9zLCBhZGQs IHN1YjsKLQotICAgICAgICBsZXZlbHMgPSBsZHEoYmxvY2spOwotICAgICAgICBpZiAobGV2ZWxz ID09IDApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotI2lmZGVmIF9fYWxwaGFfbWF4X18KLSAg ICAgICAgLyogSSBkb24ndCB0aGluayB0aGUgc3BlZWQgZGlmZmVyZW5jZSBqdXN0aWZpZXMgcnVu dGltZQotICAgICAgICAgICBkZXRlY3Rpb24uICAqLwotICAgICAgICBuZWdtYXNrID0gbWF4c3c0 KGxldmVscywgLTEpOyAvKiBuZWdhdGl2ZSAtPiBmZmZmICgtMSkgKi8KLSAgICAgICAgbmVnbWFz ayA9IG1pbnN3NChuZWdtYXNrLCAwKTsgLyogcG9zaXRpdmUgLT4gMDAwMCAoMCkgKi8KLSNlbHNl Ci0gICAgICAgIG5lZ21hc2sgPSBjbXBiZ2UoV09SRF9WRUMoMHg3ZmZmKSwgbGV2ZWxzKTsKLSAg ICAgICAgbmVnbWFzayAmPSAobmVnbWFzayA+PiAxKSB8ICgxIDw8IDcpOwotICAgICAgICBuZWdt YXNrID0gemFwKC0xLCBuZWdtYXNrKTsKLSNlbmRpZgotCi0gICAgICAgIHplcm9zID0gY21wYmdl KDAsIGxldmVscyk7Ci0gICAgICAgIHplcm9zICY9IHplcm9zID4+IDE7Ci0gICAgICAgIC8qIHpl cm9zIHw9IHplcm9zIDw8IDEgaXMgbm90IG5lZWRlZCBzaW5jZSBxYWRkIDw9IDI1NSwgc28KLSAg ICAgICAgICAgemFwcGluZyB0aGUgbG93ZXIgYnl0ZSBzdWZmaWNlcy4gICovCi0KLSAgICAgICAg bGV2ZWxzICo9IHFtdWw7Ci0gICAgICAgIGxldmVscyAtPSBjb3JyZWN0aW9uICYgKG5lZ21hc2sg PDwgMTYpOwotCi0gICAgICAgIGFkZCA9IHFhZGQgJiB+bmVnbWFzazsKLSAgICAgICAgc3ViID0g cWFkZCAmICBuZWdtYXNrOwotICAgICAgICAvKiBTZXQgcWFkZCB0byAwIGZvciBsZXZlbHMgPT0g MC4gICovCi0gICAgICAgIGFkZCA9IHphcChhZGQsIHplcm9zKTsKLSAgICAgICAgbGV2ZWxzICs9 IGFkZDsKLSAgICAgICAgbGV2ZWxzIC09IHN1YjsKLQotICAgICAgICBzdHEobGV2ZWxzLCBibG9j ayk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6ZV9oMjYzX2ludHJhX2F4 cChNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbiwgaW50IHFzY2FsZSkKLXsKLSAgICBpbnQgbl9jb2VmZnM7 Ci0gICAgdWludDY0X3QgcWFkZDsKLSAgICBpbnQxNl90IGJsb2NrMCA9IGJsb2NrWzBdOwotCi0g ICAgaWYgKCFzLT5oMjYzX2FpYykgewotICAgICAgICBpZiAobiA8IDQpCi0gICAgICAgICAgICBi bG9jazAgKj0gcy0+eV9kY19zY2FsZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYmxvY2sw ICo9IHMtPmNfZGNfc2NhbGU7Ci0gICAgICAgIHFhZGQgPSAocXNjYWxlIC0gMSkgfCAxOwotICAg IH0gZWxzZSB7Ci0gICAgICAgIHFhZGQgPSAwOwotICAgIH0KLQotICAgIGlmKHMtPmFjX3ByZWQp Ci0gICAgICAgIG5fY29lZmZzID0gNjM7Ci0gICAgZWxzZQotICAgICAgICBuX2NvZWZmcyA9IHMt PmludGVyX3NjYW50YWJsZS5yYXN0ZXJfZW5kW3MtPmJsb2NrX2xhc3RfaW5kZXhbbl1dOwotCi0g ICAgZGN0X3VucXVhbnRpemVfaDI2M19heHAoYmxvY2ssIG5fY29lZmZzLCBxc2NhbGUsIHFhZGQp OwotCi0gICAgYmxvY2tbMF0gPSBibG9jazA7Ci19Ci0KLXN0YXRpYyB2b2lkIGRjdF91bnF1YW50 aXplX2gyNjNfaW50ZXJfYXhwKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQxNl90ICpibG9jaywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCBpbnQgcXNjYWxlKQotewot ICAgIGludCBuX2NvZWZmcyA9IHMtPmludGVyX3NjYW50YWJsZS5yYXN0ZXJfZW5kW3MtPmJsb2Nr X2xhc3RfaW5kZXhbbl1dOwotICAgIGRjdF91bnF1YW50aXplX2gyNjNfYXhwKGJsb2NrLCBuX2Nv ZWZmcywgcXNjYWxlLCAocXNjYWxlIC0gMSkgfCAxKTsKLX0KLQotYXZfY29sZCB2b2lkIGZmX21w dl9jb21tb25faW5pdF9heHAoTXBlZ0VuY0NvbnRleHQgKnMpCi17Ci0gICAgcy0+ZGN0X3VucXVh bnRpemVfaDI2M19pbnRyYSA9IGRjdF91bnF1YW50aXplX2gyNjNfaW50cmFfYXhwOwotICAgIHMt PmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIgPSBkY3RfdW5xdWFudGl6ZV9oMjYzX2ludGVyX2F4 cDsKLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvcGl4YmxvY2tkc3BfYWxwaGEuYyBi L2xpYmF2Y29kZWMvYWxwaGEvcGl4YmxvY2tkc3BfYWxwaGEuYwpkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYzJmMWExZDc5Yy4uMDAwMDAwMDAwMAotLS0gYS9saWJhdmNvZGVjL2FscGhh L3BpeGJsb2NrZHNwX2FscGhhLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgot ICogU0lNRC1vcHRpbWl6ZWQgcGl4ZWwgb3BlcmF0aW9ucwotICoKLSAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRo ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAq IEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0 aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRp b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIx MTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSNp bmNsdWRlICJsaWJhdmNvZGVjL3BpeGJsb2NrZHNwLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLXN0 YXRpYyB2b2lkIGdldF9waXhlbHNfbXZpKGludDE2X3QgKnJlc3RyaWN0IGJsb2NrLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcmVzdHJpY3QgcGl4ZWxzLCBwdHJk aWZmX3Qgc3RyaWRlKQotewotICAgIGludCBoID0gODsKLQotICAgIGRvIHsKLSAgICAgICAgdWlu dDY0X3QgcDsKLQotICAgICAgICBwID0gbGRxKHBpeGVscyk7Ci0gICAgICAgIHN0cSh1bnBrYnco cCksICAgICAgIGJsb2NrKTsKLSAgICAgICAgc3RxKHVucGtidyhwID4+IDMyKSwgYmxvY2sgKyA0 KTsKLQotICAgICAgICBwaXhlbHMgKz0gc3RyaWRlOwotICAgICAgICBibG9jayArPSA4OwotICAg IH0gd2hpbGUgKC0taCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZmZfcGl4ZWxzX212aShpbnQxNl90 ICpibG9jaywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3QgKnMyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUpCi17Ci0gICAgaW50IGggPSA4Owot ICAgIHVpbnQ2NF90IG1hc2sgPSAweDQwNDA7Ci0KLSAgICBtYXNrIHw9IG1hc2sgPDwgMTY7Ci0g ICAgbWFzayB8PSBtYXNrIDw8IDMyOwotICAgIGRvIHsKLSAgICAgICAgdWludDY0X3QgeCwgeSwg YywgZCwgYTsKLSAgICAgICAgdWludDY0X3Qgc2lnbnM7Ci0KLSAgICAgICAgeCA9IGxkcShzMSk7 Ci0gICAgICAgIHkgPSBsZHEoczIpOwotICAgICAgICBjID0gY21wYmdlKHgsIHkpOwotICAgICAg ICBkID0geCAtIHk7Ci0gICAgICAgIGEgPSB6YXAobWFzaywgYyk7ICAgICAgIC8qIFdlIHVzZSAw eDQwNDA0MDQwNDA0MDQwNDAgaGVyZS4uLiAgKi8KLSAgICAgICAgZCArPSA0ICogYTsgICAgICAg ICAgICAgLyogLi4uc28gd2UgY2FuIHVzZSBzNGFkZHEgaGVyZS4gICAgICAqLwotICAgICAgICBz aWducyA9IHphcCgtMSwgYyk7Ci0KLSAgICAgICAgc3RxKHVucGtidyhkKSAgICAgICB8ICh1bnBr Yncoc2lnbnMpICAgICAgIDw8IDgpLCBibG9jayk7Ci0gICAgICAgIHN0cSh1bnBrYncoZCA+PiAz MikgfCAodW5wa2J3KHNpZ25zID4+IDMyKSA8PCA4KSwgYmxvY2sgKyA0KTsKLQotICAgICAgICBz MSArPSBzdHJpZGU7Ci0gICAgICAgIHMyICs9IHN0cmlkZTsKLSAgICAgICAgYmxvY2sgKz0gODsK LSAgICB9IHdoaWxlICgtLWgpOwotfQotCi1hdl9jb2xkIHZvaWQgZmZfcGl4YmxvY2tkc3BfaW5p dF9hbHBoYShQaXhibG9ja0RTUENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGhpZ2hfYml0X2Rl cHRoKQotewotICAgIGlmIChhbWFzayhBTUFTS19NVkkpID09IDApIHsKLSAgICAgICAgaWYgKCFo aWdoX2JpdF9kZXB0aCkKLSAgICAgICAgICAgIGMtPmdldF9waXhlbHMgPSBnZXRfcGl4ZWxzX212 aTsKLSAgICAgICAgYy0+ZGlmZl9waXhlbHMgPSBkaWZmX3BpeGVsc19tdmk7Ci0gICAgfQotfQpk aWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9yZWdkZWYuaCBiL2xpYmF2Y29kZWMvYWxwaGEv cmVnZGVmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNTU3N2E4OWIuLjAwMDAw MDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBoYS9yZWdkZWYuaAorKysgL2Rldi9udWxsCkBAIC0x LDc3ICswLDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWl6ZWQgRFNQIHV0aWxzCi0gKiBjb3B5cmln aHQgKGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug YWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAq IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv biwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0vKiBTb21lIEJTRHMgZG9uJ3Qgc2VlbSB0byBo YXZlIHJlZ2RlZi5oLi4uIHNpZ2ggICovCi0jaWZuZGVmIEFWQ09ERUNfQUxQSEFfUkVHREVGX0gK LSNkZWZpbmUgQVZDT0RFQ19BTFBIQV9SRUdERUZfSAotCi0jZGVmaW5lIHYwICAgICAgJDAgICAg ICAvKiBmdW5jdGlvbiByZXR1cm4gdmFsdWUgKi8KLQotI2RlZmluZSB0MCAgICAgICQxICAgICAg LyogdGVtcG9yYXJ5IHJlZ2lzdGVycyAoY2FsbGVyLXNhdmVkKSAqLwotI2RlZmluZSB0MSAgICAg ICQyCi0jZGVmaW5lIHQyICAgICAgJDMKLSNkZWZpbmUgdDMgICAgICAkNAotI2RlZmluZSB0NCAg ICAgICQ1Ci0jZGVmaW5lIHQ1ICAgICAgJDYKLSNkZWZpbmUgdDYgICAgICAkNwotI2RlZmluZSB0 NyAgICAgICQ4Ci0KLSNkZWZpbmUgczAgICAgICAkOSAgICAgIC8qIHNhdmVkLXJlZ2lzdGVycyAo Y2FsbGVlLXNhdmVkIHJlZ2lzdGVycykgKi8KLSNkZWZpbmUgczEgICAgICAkMTAKLSNkZWZpbmUg czIgICAgICAkMTEKLSNkZWZpbmUgczMgICAgICAkMTIKLSNkZWZpbmUgczQgICAgICAkMTMKLSNk ZWZpbmUgczUgICAgICAkMTQKLSNkZWZpbmUgczYgICAgICAkMTUKLSNkZWZpbmUgZnAgICAgICBz NiAgICAgIC8qIGZyYW1lLXBvaW50ZXIgKHM2IGluIGZyYW1lLWxlc3MgcHJvY2VkdXJlcykgKi8K LQotI2RlZmluZSBhMCAgICAgICQxNiAgICAgLyogYXJndW1lbnQgcmVnaXN0ZXJzIChjYWxsZXIt c2F2ZWQpICovCi0jZGVmaW5lIGExICAgICAgJDE3Ci0jZGVmaW5lIGEyICAgICAgJDE4Ci0jZGVm aW5lIGEzICAgICAgJDE5Ci0jZGVmaW5lIGE0ICAgICAgJDIwCi0jZGVmaW5lIGE1ICAgICAgJDIx Ci0KLSNkZWZpbmUgdDggICAgICAkMjIgICAgIC8qIG1vcmUgdGVtcHMgKGNhbGxlci1zYXZlZCkg Ki8KLSNkZWZpbmUgdDkgICAgICAkMjMKLSNkZWZpbmUgdDEwICAgICAkMjQKLSNkZWZpbmUgdDEx ICAgICAkMjUKLSNkZWZpbmUgcmEgICAgICAkMjYgICAgIC8qIHJldHVybiBhZGRyZXNzIHJlZ2lz dGVyICovCi0jZGVmaW5lIHQxMiAgICAgJDI3Ci0KLSNkZWZpbmUgcHYgICAgICB0MTIgICAgIC8q IHByb2NlZHVyZS12YXJpYWJsZSByZWdpc3RlciAqLwotI2RlZmluZSBBVCAgICAgICRhdCAgICAg LyogYXNzZW1ibGVyIHRlbXBvcmFyeSAqLwotI2RlZmluZSBncCAgICAgICQyOSAgICAgLyogZ2xv YmFsIHBvaW50ZXIgKi8KLSNkZWZpbmUgc3AgICAgICAkMzAgICAgIC8qIHN0YWNrIHBvaW50ZXIg Ki8KLSNkZWZpbmUgemVybyAgICAkMzEgICAgIC8qIHJlYWRzIGFzIHplcm8sIHdyaXRlcyBhcmUg bm9vcHMgKi8KLQotLyogU29tZSBuaWNlciByZWdpc3RlciBuYW1lcy4gICovCi0jZGVmaW5lIHRh IHQxMAotI2RlZmluZSB0YiB0MTEKLSNkZWZpbmUgdGMgdDEyCi0jZGVmaW5lIHRkIEFUCi0vKiBE YW5nZXI6IHRoZXNlIG92ZXJsYXAgd2l0aCB0aGUgYXJndW1lbnQgbGlzdCBhbmQgdGhlIHJldHVy biB2YWx1ZSAqLwotI2RlZmluZSB0ZSBhNQotI2RlZmluZSB0ZiBhNAotI2RlZmluZSB0ZyBhMwot I2RlZmluZSB0aCB2MAotCi0jZW5kaWYgLyogQVZDT0RFQ19BTFBIQV9SRUdERUZfSCAqLwpkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9zaW1wbGVfaWRjdF9hbHBoYS5jIGIvbGliYXZjb2Rl Yy9hbHBoYS9zaW1wbGVfaWRjdF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA2ZTM3N2VmMjQzLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvc2ltcGxlX2lk Y3RfYWxwaGEuYworKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0vKgotICogU2ltcGxl IElEQ1QgKEFscGhhIG9wdGltaXplZCkKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEgTWljaGFl bCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLSAqCi0gKiBiYXNlZCB1cG9uIHNvbWUg b3V0Y29tbWVudGVkIEMgY29kZSBmcm9tIG1wZWcyZGVjIChpZGN0X21teC5jCi0gKiB3cml0dGVu IGJ5IEFhcm9uIEhvbHR6bWFuIDxhaG9sdHptYUBlc3MuZW5nci51dmljLmNhPikKLSAqCi0gKiBB bHBoYSBvcHRpbWl6YXRpb25zIGJ5IE3DpW5zIFJ1bGxnw6VyZCA8bWFuc0BtYW5zci5jb20+Ci0g KiAgICAgICAgICAgICAgICAgICAgIGFuZCBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5vcmc+ Ci0gKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJpZGN0 ZHNwX2FscGhhLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLS8vIGNvcyhpICogTV9QSSAvIDE2KSAq IHNxcnQoMikgKiAoMSA8PCAxNCkKLS8vIFc0IGlzIGFjdHVhbGx5IGV4YWN0bHkgMTYzODQsIGJ1 dCB1c2luZyAxNjM4MyB3b3JrcyBhcm91bmQKLS8vIGFjY3VtdWxhdGluZyByb3VuZGluZyBlcnJv cnMgZm9yIHNvbWUgZW5jb2RlcnMKLSNkZWZpbmUgVzEgMjI3MjUKLSNkZWZpbmUgVzIgMjE0MDcK LSNkZWZpbmUgVzMgMTkyNjYKLSNkZWZpbmUgVzQgMTYzODMKLSNkZWZpbmUgVzUgMTI4NzMKLSNk ZWZpbmUgVzYgIDg4NjcKLSNkZWZpbmUgVzcgIDQ1MjAKLSNkZWZpbmUgUk9XX1NISUZUIDExCi0j ZGVmaW5lIENPTF9TSElGVCAyMAotCi0vKiAwOiBhbGwgZW50cmllcyAwLCAxOiBvbmx5IGZpcnN0 IGVudHJ5IG5vbnplcm8sIDI6IG90aGVyd2lzZSAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGlkY3Rf cm93KGludDE2X3QgKnJvdykKLXsKLSAgICBpbnQgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIs IGIzLCB0OwotICAgIHVpbnQ2NF90IGwsIHIsIHQyOwotICAgIGwgPSBsZHEocm93KTsKLSAgICBy ID0gbGRxKHJvdyArIDQpOwotCi0gICAgaWYgKGwgPT0gMCAmJiByID09IDApCi0gICAgICAgIHJl dHVybiAwOwotCi0gICAgYTAgPSBXNCAqIHNleHR3KGwpICsgKDEgPDwgKFJPV19TSElGVCAtIDEp KTsKLQotICAgIGlmICgoKGwgJiB+MHhmZmZmVUwpIHwgcikgPT0gMCkgewotICAgICAgICBhMCA+ Pj0gUk9XX1NISUZUOwotICAgICAgICB0MiA9ICh1aW50MTZfdCkgYTA7Ci0gICAgICAgIHQyIHw9 IHQyIDw8IDE2OwotICAgICAgICB0MiB8PSB0MiA8PCAzMjsKLQotICAgICAgICBzdHEodDIsIHJv dyk7Ci0gICAgICAgIHN0cSh0Miwgcm93ICsgNCk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0K LQotICAgIGExID0gYTA7Ci0gICAgYTIgPSBhMDsKLSAgICBhMyA9IGEwOwotCi0gICAgdCA9IGV4 dHdsKGwsIDQpOyAgICAgICAgICAgIC8qIHJvd1syXSAqLwotICAgIGlmICh0ICE9IDApIHsKLSAg ICAgICAgdCA9IHNleHR3KHQpOwotICAgICAgICBhMCArPSBXMiAqIHQ7Ci0gICAgICAgIGExICs9 IFc2ICogdDsKLSAgICAgICAgYTIgLT0gVzYgKiB0OwotICAgICAgICBhMyAtPSBXMiAqIHQ7Ci0g ICAgfQotCi0gICAgdCA9IGV4dHdsKHIsIDApOyAgICAgICAgICAgIC8qIHJvd1s0XSAqLwotICAg IGlmICh0ICE9IDApIHsKLSAgICAgICAgdCA9IHNleHR3KHQpOwotICAgICAgICBhMCArPSBXNCAq IHQ7Ci0gICAgICAgIGExIC09IFc0ICogdDsKLSAgICAgICAgYTIgLT0gVzQgKiB0OwotICAgICAg ICBhMyArPSBXNCAqIHQ7Ci0gICAgfQotCi0gICAgdCA9IGV4dHdsKHIsIDQpOyAgICAgICAgICAg IC8qIHJvd1s2XSAqLwotICAgIGlmICh0ICE9IDApIHsKLSAgICAgICAgdCA9IHNleHR3KHQpOwot ICAgICAgICBhMCArPSBXNiAqIHQ7Ci0gICAgICAgIGExIC09IFcyICogdDsKLSAgICAgICAgYTIg Kz0gVzIgKiB0OwotICAgICAgICBhMyAtPSBXNiAqIHQ7Ci0gICAgfQotCi0gICAgdCA9IGV4dHds KGwsIDIpOyAgICAgICAgICAgIC8qIHJvd1sxXSAqLwotICAgIGlmICh0ICE9IDApIHsKLSAgICAg ICAgdCA9IHNleHR3KHQpOwotICAgICAgICBiMCA9IFcxICogdDsKLSAgICAgICAgYjEgPSBXMyAq IHQ7Ci0gICAgICAgIGIyID0gVzUgKiB0OwotICAgICAgICBiMyA9IFc3ICogdDsKLSAgICB9IGVs c2UgewotICAgICAgICBiMCA9IDA7Ci0gICAgICAgIGIxID0gMDsKLSAgICAgICAgYjIgPSAwOwot ICAgICAgICBiMyA9IDA7Ci0gICAgfQotCi0gICAgdCA9IGV4dHdsKGwsIDYpOyAgICAgICAgICAg IC8qIHJvd1szXSAqLwotICAgIGlmICh0KSB7Ci0gICAgICAgIHQgPSBzZXh0dyh0KTsKLSAgICAg ICAgYjAgKz0gVzMgKiB0OwotICAgICAgICBiMSAtPSBXNyAqIHQ7Ci0gICAgICAgIGIyIC09IFcx ICogdDsKLSAgICAgICAgYjMgLT0gVzUgKiB0OwotICAgIH0KLQotCi0gICAgdCA9IGV4dHdsKHIs IDIpOyAgICAgICAgICAgIC8qIHJvd1s1XSAqLwotICAgIGlmICh0KSB7Ci0gICAgICAgIHQgPSBz ZXh0dyh0KTsKLSAgICAgICAgYjAgKz0gVzUgKiB0OwotICAgICAgICBiMSAtPSBXMSAqIHQ7Ci0g ICAgICAgIGIyICs9IFc3ICogdDsKLSAgICAgICAgYjMgKz0gVzMgKiB0OwotICAgIH0KLQotICAg IHQgPSBleHR3bChyLCA2KTsgICAgICAgICAgICAvKiByb3dbN10gKi8KLSAgICBpZiAodCkgewot ICAgICAgICB0ID0gc2V4dHcodCk7Ci0gICAgICAgIGIwICs9IFc3ICogdDsKLSAgICAgICAgYjEg LT0gVzUgKiB0OwotICAgICAgICBiMiArPSBXMyAqIHQ7Ci0gICAgICAgIGIzIC09IFcxICogdDsK LSAgICB9Ci0KLSAgICByb3dbMF0gPSAoYTAgKyBiMCkgPj4gUk9XX1NISUZUOwotICAgIHJvd1sx XSA9IChhMSArIGIxKSA+PiBST1dfU0hJRlQ7Ci0gICAgcm93WzJdID0gKGEyICsgYjIpID4+IFJP V19TSElGVDsKLSAgICByb3dbM10gPSAoYTMgKyBiMykgPj4gUk9XX1NISUZUOwotICAgIHJvd1s0 XSA9IChhMyAtIGIzKSA+PiBST1dfU0hJRlQ7Ci0gICAgcm93WzVdID0gKGEyIC0gYjIpID4+IFJP V19TSElGVDsKLSAgICByb3dbNl0gPSAoYTEgLSBiMSkgPj4gUk9XX1NISUZUOwotICAgIHJvd1s3 XSA9IChhMCAtIGIwKSA+PiBST1dfU0hJRlQ7Ci0KLSAgICByZXR1cm4gMjsKLX0KLQotc3RhdGlj IGlubGluZSB2b2lkIGlkY3RfY29sKGludDE2X3QgKmNvbCkKLXsKLSAgICBpbnQgYTAsIGExLCBh MiwgYTMsIGIwLCBiMSwgYjIsIGIzOwotCi0gICAgY29sWzBdICs9ICgxIDw8IChDT0xfU0hJRlQg LSAxKSkgLyBXNDsKLQotICAgIGEwID0gVzQgKiBjb2xbOCAqIDBdOwotICAgIGExID0gVzQgKiBj b2xbOCAqIDBdOwotICAgIGEyID0gVzQgKiBjb2xbOCAqIDBdOwotICAgIGEzID0gVzQgKiBjb2xb OCAqIDBdOwotCi0gICAgaWYgKGNvbFs4ICogMl0pIHsKLSAgICAgICAgYTAgKz0gVzIgKiBjb2xb OCAqIDJdOwotICAgICAgICBhMSArPSBXNiAqIGNvbFs4ICogMl07Ci0gICAgICAgIGEyIC09IFc2 ICogY29sWzggKiAyXTsKLSAgICAgICAgYTMgLT0gVzIgKiBjb2xbOCAqIDJdOwotICAgIH0KLQot ICAgIGlmIChjb2xbOCAqIDRdKSB7Ci0gICAgICAgIGEwICs9IFc0ICogY29sWzggKiA0XTsKLSAg ICAgICAgYTEgLT0gVzQgKiBjb2xbOCAqIDRdOwotICAgICAgICBhMiAtPSBXNCAqIGNvbFs4ICog NF07Ci0gICAgICAgIGEzICs9IFc0ICogY29sWzggKiA0XTsKLSAgICB9Ci0KLSAgICBpZiAoY29s WzggKiA2XSkgewotICAgICAgICBhMCArPSBXNiAqIGNvbFs4ICogNl07Ci0gICAgICAgIGExIC09 IFcyICogY29sWzggKiA2XTsKLSAgICAgICAgYTIgKz0gVzIgKiBjb2xbOCAqIDZdOwotICAgICAg ICBhMyAtPSBXNiAqIGNvbFs4ICogNl07Ci0gICAgfQotCi0gICAgaWYgKGNvbFs4ICogMV0pIHsK LSAgICAgICAgYjAgPSBXMSAqIGNvbFs4ICogMV07Ci0gICAgICAgIGIxID0gVzMgKiBjb2xbOCAq IDFdOwotICAgICAgICBiMiA9IFc1ICogY29sWzggKiAxXTsKLSAgICAgICAgYjMgPSBXNyAqIGNv bFs4ICogMV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYjAgPSAwOwotICAgICAgICBiMSA9IDA7 Ci0gICAgICAgIGIyID0gMDsKLSAgICAgICAgYjMgPSAwOwotICAgIH0KLQotICAgIGlmIChjb2xb OCAqIDNdKSB7Ci0gICAgICAgIGIwICs9IFczICogY29sWzggKiAzXTsKLSAgICAgICAgYjEgLT0g VzcgKiBjb2xbOCAqIDNdOwotICAgICAgICBiMiAtPSBXMSAqIGNvbFs4ICogM107Ci0gICAgICAg IGIzIC09IFc1ICogY29sWzggKiAzXTsKLSAgICB9Ci0KLSAgICBpZiAoY29sWzggKiA1XSkgewot ICAgICAgICBiMCArPSBXNSAqIGNvbFs4ICogNV07Ci0gICAgICAgIGIxIC09IFcxICogY29sWzgg KiA1XTsKLSAgICAgICAgYjIgKz0gVzcgKiBjb2xbOCAqIDVdOwotICAgICAgICBiMyArPSBXMyAq IGNvbFs4ICogNV07Ci0gICAgfQotCi0gICAgaWYgKGNvbFs4ICogN10pIHsKLSAgICAgICAgYjAg Kz0gVzcgKiBjb2xbOCAqIDddOwotICAgICAgICBiMSAtPSBXNSAqIGNvbFs4ICogN107Ci0gICAg ICAgIGIyICs9IFczICogY29sWzggKiA3XTsKLSAgICAgICAgYjMgLT0gVzEgKiBjb2xbOCAqIDdd OwotICAgIH0KLQotICAgIGNvbFs4ICogMF0gPSAoYTAgKyBiMCkgPj4gQ09MX1NISUZUOwotICAg IGNvbFs4ICogN10gPSAoYTAgLSBiMCkgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogMV0gPSAo YTEgKyBiMSkgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogNl0gPSAoYTEgLSBiMSkgPj4gQ09M X1NISUZUOwotICAgIGNvbFs4ICogMl0gPSAoYTIgKyBiMikgPj4gQ09MX1NISUZUOwotICAgIGNv bFs4ICogNV0gPSAoYTIgLSBiMikgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogM10gPSAoYTMg KyBiMykgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogNF0gPSAoYTMgLSBiMykgPj4gQ09MX1NI SUZUOwotfQotCi0vKiBJZiBhbGwgcm93cyBidXQgdGhlIGZpcnN0IG9uZSBhcmUgemVybyBhZnRl ciByb3cgdHJhbnNmb3JtYXRpb24sCi0gICBhbGwgcm93cyB3aWxsIGJlIGlkZW50aWNhbCBhZnRl ciBjb2x1bW4gdHJhbnNmb3JtYXRpb24uICAqLwotc3RhdGljIGlubGluZSB2b2lkIGlkY3RfY29s MihpbnQxNl90ICpjb2wpCi17Ci0gICAgaW50IGk7Ci0gICAgdWludDY0X3QgbCwgcjsKLQotICAg IGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgaW50IGEwID0gY29sW2ldICsgKDEg PDwgKENPTF9TSElGVCAtIDEpKSAvIFc0OwotCi0gICAgICAgIGEwICo9IFc0OwotICAgICAgICBj b2xbaV0gPSBhMCA+PiBDT0xfU0hJRlQ7Ci0gICAgfQotCi0gICAgbCA9IGxkcShjb2wgKyAwICog NCk7IHIgPSBsZHEoY29sICsgMSAqIDQpOwotICAgIHN0cShsLCBjb2wgKyAgMiAqIDQpOyBzdHEo ciwgY29sICsgIDMgKiA0KTsKLSAgICBzdHEobCwgY29sICsgIDQgKiA0KTsgc3RxKHIsIGNvbCAr ICA1ICogNCk7Ci0gICAgc3RxKGwsIGNvbCArICA2ICogNCk7IHN0cShyLCBjb2wgKyAgNyAqIDQp OwotICAgIHN0cShsLCBjb2wgKyAgOCAqIDQpOyBzdHEociwgY29sICsgIDkgKiA0KTsKLSAgICBz dHEobCwgY29sICsgMTAgKiA0KTsgc3RxKHIsIGNvbCArIDExICogNCk7Ci0gICAgc3RxKGwsIGNv bCArIDEyICogNCk7IHN0cShyLCBjb2wgKyAxMyAqIDQpOwotICAgIHN0cShsLCBjb2wgKyAxNCAq IDQpOyBzdHEociwgY29sICsgMTUgKiA0KTsKLX0KLQotdm9pZCBmZl9zaW1wbGVfaWRjdF9heHAo aW50MTZfdCAqYmxvY2spCi17Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgcm93c1plcm8gPSAxOyAg ICAgICAgICAgLyogYWxsIHJvd3MgZXhjZXB0IHJvdyAwIHplcm8gKi8KLSAgICBpbnQgcm93c0Nv bnN0YW50ID0gMTsgICAgICAgLyogYWxsIHJvd3MgY29uc2lzdCBvZiBhIGNvbnN0YW50IHZhbHVl ICovCi0KLSAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0gICAgICAgIGludCBzcGFyc2Vu ZXNzID0gaWRjdF9yb3coYmxvY2sgKyA4ICogaSk7Ci0KLSAgICAgICAgaWYgKGkgPiAwICYmIHNw YXJzZW5lc3MgPiAwKQotICAgICAgICAgICAgcm93c1plcm8gPSAwOwotICAgICAgICBpZiAoc3Bh cnNlbmVzcyA9PSAyKQotICAgICAgICAgICAgcm93c0NvbnN0YW50ID0gMDsKLSAgICB9Ci0KLSAg ICBpZiAocm93c1plcm8pIHsKLSAgICAgICAgaWRjdF9jb2wyKGJsb2NrKTsKLSAgICB9IGVsc2Ug aWYgKHJvd3NDb25zdGFudCkgewotICAgICAgICBpZGN0X2NvbChibG9jayk7Ci0gICAgICAgIGZv ciAoaSA9IDA7IGkgPCA4OyBpICs9IDIpIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IHYgPSAodWlu dDE2X3QpIGJsb2NrWzBdOwotICAgICAgICAgICAgdWludDY0X3QgdyA9ICh1aW50MTZfdCkgYmxv Y2tbOF07Ci0KLSAgICAgICAgICAgIHYgfD0gdiA8PCAxNjsKLSAgICAgICAgICAgIHcgfD0gdyA8 PCAxNjsKLSAgICAgICAgICAgIHYgfD0gdiA8PCAzMjsKLSAgICAgICAgICAgIHcgfD0gdyA8PCAz MjsKLSAgICAgICAgICAgIHN0cSh2LCBibG9jayArIDAgKiA0KTsKLSAgICAgICAgICAgIHN0cSh2 LCBibG9jayArIDEgKiA0KTsKLSAgICAgICAgICAgIHN0cSh3LCBibG9jayArIDIgKiA0KTsKLSAg ICAgICAgICAgIHN0cSh3LCBibG9jayArIDMgKiA0KTsKLSAgICAgICAgICAgIGJsb2NrICs9IDQg KiA0OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDg7 IGkrKykKLSAgICAgICAgICAgIGlkY3RfY29sKGJsb2NrICsgaSk7Ci0gICAgfQotfQotCi12b2lk IGZmX3NpbXBsZV9pZGN0X3B1dF9heHAodWludDhfdCAqZGVzdCwgcHRyZGlmZl90IGxpbmVfc2l6 ZSwgaW50MTZfdCAqYmxvY2spCi17Ci0gICAgZmZfc2ltcGxlX2lkY3RfYXhwKGJsb2NrKTsKLSAg ICBwdXRfcGl4ZWxzX2NsYW1wZWRfYXhwX3AoYmxvY2ssIGRlc3QsIGxpbmVfc2l6ZSk7Ci19Ci0K LXZvaWQgZmZfc2ltcGxlX2lkY3RfYWRkX2F4cCh1aW50OF90ICpkZXN0LCBwdHJkaWZmX3QgbGlu ZV9zaXplLCBpbnQxNl90ICpibG9jaykKLXsKLSAgICBmZl9zaW1wbGVfaWRjdF9heHAoYmxvY2sp OwotICAgIGFkZF9waXhlbHNfY2xhbXBlZF9heHBfcChibG9jaywgZGVzdCwgbGluZV9zaXplKTsK LX0KLS0gCjIuMzkuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpo dHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vi c2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBm Zm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=