From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11700 invoked by alias); 24 Aug 2011 08:48:45 -0000 Received: (qmail 11685 invoked by uid 22791); 24 Aug 2011 08:48:44 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_ZJ X-Spam-Check-By: sourceware.org Received: from mail-yw0-f47.google.com (HELO mail-yw0-f47.google.com) (209.85.213.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 24 Aug 2011 08:48:07 +0000 Received: by ywa12 with SMTP id 12so724356ywa.20 for ; Wed, 24 Aug 2011 01:48:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.236.179.72 with SMTP id g48mr28879143yhm.50.1314175686649; Wed, 24 Aug 2011 01:48:06 -0700 (PDT) Received: by 10.236.44.74 with HTTP; Wed, 24 Aug 2011 01:48:06 -0700 (PDT) In-Reply-To: References: Date: Wed, 24 Aug 2011 10:06:00 -0000 Message-ID: Subject: Re: [PATCH, i386, testsuite] FMA intrinsics From: Ilya Tocar To: Uros Bizjak Cc: gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary=20cf303ddbc4f9a6b304ab3c5e9f X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-08/txt/msg01972.txt.bz2 --20cf303ddbc4f9a6b304ab3c5e9f Content-Type: text/plain; charset=ISO-8859-1 Content-length: 492 Removed extra blank lines and pass tests through "indent". 2011/8/23 Uros Bizjak : > On Tue, Aug 23, 2011 at 4:19 PM, Ilya Tocar wrote: >> I removed unnecessary expands/builtins and tests are now compiled with -O2. >> Is this version ok? > > OK with minor comments: > > - Please remove extra blank lines you introduced in sse.md > - Also, I'd recomend you to pass new testcases through "indent" > command to fix formatting. > > Thanks, > Uros. > --20cf303ddbc4f9a6b304ab3c5e9f Content-Type: application/octet-stream; name=patch Content-Disposition: attachment; filename=patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_grq26v1z0 Content-length: 57751 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MK aW5kZXggZWMxM2Q5My4uMzg3OWEyYSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy5nY2MKKysrIGIvZ2NjL2NvbmZpZy5nY2MKQEAgLTM1Miw3ICszNTIsNyBA QCBpWzM0NTY3XTg2LSotKikKIAkJICAgICAgIG5tbWludHJpbi5oIGJtbWlu dHJpbi5oIGZtYTRpbnRyaW4uaCB3bW1pbnRyaW4uaAogCQkgICAgICAgaW1t aW50cmluLmggeDg2aW50cmluLmggYXZ4aW50cmluLmggeG9waW50cmluLmgK IAkJICAgICAgIGlhMzJpbnRyaW4uaCBjcm9zcy1zdGRhcmcuaCBsd3BpbnRy aW4uaCBwb3BjbnRpbnRyaW4uaAotCQkgICAgICAgbHpjbnRpbnRyaW4uaCBi bWlpbnRyaW4uaCB0Ym1pbnRyaW4uaCIKKwkJICAgICAgIGx6Y250aW50cmlu LmggYm1paW50cmluLmggdGJtaW50cmluLmggZm1haW50cmluLmgiCiAJOzsK IHg4Nl82NC0qLSopCiAJY3B1X3R5cGU9aTM4NgpAQCAtMzY0LDcgKzM2NCw3 IEBAIHg4Nl82NC0qLSopCiAJCSAgICAgICBubW1pbnRyaW4uaCBibW1pbnRy aW4uaCBmbWE0aW50cmluLmggd21taW50cmluLmgKIAkJICAgICAgIGltbWlu dHJpbi5oIHg4NmludHJpbi5oIGF2eGludHJpbi5oIHhvcGludHJpbi5oCiAJ CSAgICAgICBpYTMyaW50cmluLmggY3Jvc3Mtc3RkYXJnLmggbHdwaW50cmlu LmggcG9wY250aW50cmluLmgKLQkJICAgICAgIGx6Y250aW50cmluLmggYm1p aW50cmluLmggdGJtaW50cmluLmgiCisJCSAgICAgICBsemNudGludHJpbi5o IGJtaWludHJpbi5oIHRibWludHJpbi5oIGZtYWludHJpbi5oIgogCW5lZWRf NjRiaXRfaHdpbnQ9eWVzCiAJOzsKIGlhNjQtKi0qKQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9pMzg2L2ZtYWludHJpbi5oIGIvZ2NjL2NvbmZpZy9pMzg2 L2ZtYWludHJpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjJjZGU1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2kz ODYvZm1haW50cmluLmgKQEAgLTAsMCArMSwyMzMgQEAKKy8qIENvcHlyaWdo dCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0NDLgorCisgICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFu eSBsYXRlciB2ZXJzaW9uLgorCisgICBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBVbmRl ciBTZWN0aW9uIDcgb2YgR1BMIHZlcnNpb24gMywgeW91IGFyZSBncmFudGVk IGFkZGl0aW9uYWwKKyAgIHBlcm1pc3Npb25zIGRlc2NyaWJlZCBpbiB0aGUg R0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24sIHZlcnNpb24KKyAgIDMu MSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgYSBjb3B5 IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsKKyAgIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMg YW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNl ZQorICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2lmbmRlZiBfWDg2SU5UUklOX0hfSU5DTFVERUQKKyMgZXJyb3IgIk5ldmVy IHVzZSA8Zm1haW50cmluLmg+IGRpcmVjdGx5OyBpbmNsdWRlIDx4ODZpbnRy aW4uaD4gaW5zdGVhZC4iCisjZW5kaWYKKworI2lmbmRlZiBfRk1BSU5UUklO X0hfSU5DTFVERUQKKyNkZWZpbmUgX0ZNQUlOVFJJTl9IX0lOQ0xVREVECisK KyNpZm5kZWYgX19GTUFfXworIyBlcnJvciAiRk1BIGluc3RydWN0aW9uIHNl dCBub3QgZW5hYmxlZCIKKyNlbHNlCisKKyNpbmNsdWRlIDxpbW1pbnRyaW4u aD4KKworCisKK2V4dGVybiBfX2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQorX21tX2ZtYWRkX3BkIChfX20xMjhkIF9fQSwgX19tMTI4 ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQpX19i dWlsdGluX2lhMzJfdmZtYWRkcGQgKChfX3YyZGYpX19BLCAoX192MmRmKV9f QiwgKF9fdjJkZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUgX19tMjU2 ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5s aW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbTI1Nl9mbWFkZF9wZCAoX19t MjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9fQykKK3sKKyAgcmV0 dXJuIChfX20yNTZkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgoX192 NGRmKV9fQSwgKF9fdjRkZilfX0IsIChfX3Y0ZGYpX19DKTsKK30KKworZXh0 ZXJuIF9faW5saW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19t bV9mbWFkZF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9f QykKK3sKKyAgcmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRk cHMgKChfX3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOwor fQorCitleHRlcm4gX19pbmxpbmUgX19tMjU2IF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQorX21tMjU2X2ZtYWRkX3BzIChfX20yNTYgX19BLCBfX20yNTYgX19C LCBfX20yNTYgX19DKQoreworICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5f aWEzMl92Zm1hZGRwczI1NiAoKF9fdjhzZilfX0EsIChfX3Y4c2YpX19CLCAo X192OHNmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20xMjhkIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQorX21tX2ZtYWRkX3NkIChfX20xMjhkIF9f QSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICByZXR1cm4gKF9f bTEyOGQpIF9fYnVpbHRpbl9pYTMyX3ZmbWFkZHNkMyAoKF9fdjJkZilfX0Es IChfX3YyZGYpX19CLCAoX192MmRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lu bGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9f YWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm1hZGRf c3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7Cisg IHJldHVybiAoX19tMTI4KSBfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMgKChf X3Y0c2YpX19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOworfQorCitl eHRlcm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK K19tbV9mbXN1Yl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20x MjhkIF9fQykKK3sKKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMy X3ZmbWFkZHBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRm KV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20yNTZkIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19h cnRpZmljaWFsX18pKQorX21tMjU2X2Ztc3ViX3BkIChfX20yNTZkIF9fQSwg X19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQoreworICByZXR1cm4gKF9fbTI1 NmQpX19idWlsdGluX2lhMzJfdmZtYWRkcGQyNTYgKChfX3Y0ZGYpX19BLCAo X192NGRmKV9fQiwgLShfX3Y0ZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5s aW5lIF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19h bHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbXN1Yl9w cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAg cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMgKChfX3Y0 c2YpX19BLCAoX192NHNmKV9fQiwgLShfX3Y0c2YpX19DKTsKK30KKworZXh0 ZXJuIF9faW5saW5lIF9fbTI1NiBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19t bTI1Nl9mbXN1Yl9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2 IF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZt YWRkcHMyNTYgKChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgLShfX3Y4c2Yp X19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCitfbW1fZm1zdWJfc2QgKF9fbTEyOGQgX19BLCBfX20x MjhkIF9fQiwgX19tMTI4ZCBfX0MpCit7CisgIHJldHVybiAoX19tMTI4ZClf X2J1aWx0aW5faWEzMl92Zm1hZGRzZDMgKChfX3YyZGYpX19BLCAoX192MmRm KV9fQiwgLShfX3YyZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9f bTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbXN1Yl9zcyAoX19t MTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAgcmV0dXJu IChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzICgoX192NHNmKV9f QSwgKF9fdjRzZilfX0IsIC0oX192NHNmKV9fQyk7Cit9CisKK2V4dGVybiBf X2lubGluZSBfX20xMjhkIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2Zu bWFkZF9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9f QykKK3sKKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFk ZHBkICgtKF9fdjJkZilfX0EsIChfX3YyZGYpX19CLCAoX192MmRmKV9fQyk7 Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20yNTZkIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQorX21tMjU2X2ZubWFkZF9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1 NmQgX19CLCBfX20yNTZkIF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTZkKV9f YnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgtKF9fdjRkZilfX0EsIChfX3Y0 ZGYpX19CLCAoX192NGRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBf X20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlz X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm5tYWRkX3BzIChf X20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICByZXR1 cm4gKF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRwcyAoLShfX3Y0c2Yp X19BLCAoX192NHNmKV9fQiwgKF9fdjRzZilfX0MpOworfQorCitleHRlcm4g X19pbmxpbmUgX19tMjU2IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f LCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tMjU2 X2ZubWFkZF9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwgX19tMjU2IF9f QykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lhMzJfdmZtYWRk cHMyNTYgKC0oX192OHNmKV9fQSwgKF9fdjhzZilfX0IsIChfX3Y4c2YpX19D KTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCitfbW1fZm5tYWRkX3NkIChfX20xMjhkIF9fQSwgX19tMTI4 ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQpX19i dWlsdGluX2lhMzJfdmZtYWRkc2QzICgtKF9fdjJkZilfX0EsIChfX3YyZGYp X19CLCAoX192MmRmKV9fQyk7Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20x MjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm5tYWRkX3NzIChfX20x MjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICByZXR1cm4g KF9fbTEyOClfX2J1aWx0aW5faWEzMl92Zm1hZGRzczMgKC0oX192NHNmKV9f QSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19DKTsKK30KKworZXh0ZXJuIF9f aW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18s IF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1fZm5t c3ViX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19D KQoreworICByZXR1cm4gKF9fbTEyOGQpX19idWlsdGluX2lhMzJfdmZtYWRk cGQgKC0oX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRmKV9fQyk7 Cit9CisKK2V4dGVybiBfX2lubGluZSBfX20yNTZkIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQorX21tMjU2X2ZubXN1Yl9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1 NmQgX19CLCBfX20yNTZkIF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTZkKV9f YnVpbHRpbl9pYTMyX3ZmbWFkZHBkMjU2ICgtKF9fdjRkZilfX0EsIChfX3Y0 ZGYpX19CLCAtKF9fdjRkZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUg X19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZubXN1Yl9wcyAo X19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAgcmV0 dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkcHMgKC0oX192NHNm KV9fQSwgKF9fdjRzZilfX0IsIC0oX192NHNmKV9fQyk7Cit9CisKK2V4dGVy biBfX2lubGluZSBfX20yNTYgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW0y NTZfZm5tc3ViX3BzIChfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYg X19DKQoreworICByZXR1cm4gKF9fbTI1NilfX2J1aWx0aW5faWEzMl92Zm1h ZGRwczI1NiAoLShfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwgLShfX3Y4c2Yp X19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTEyOGQgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2Fy dGlmaWNpYWxfXykpCitfbW1fZm5tc3ViX3NkIChfX20xMjhkIF9fQSwgX19t MTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICByZXR1cm4gKF9fbTEyOGQp X19idWlsdGluX2lhMzJfdmZtYWRkc2QzICgtKF9fdjJkZilfX0EsIChfX3Yy ZGYpX19CLCAtKF9fdjJkZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUg X19tMTI4IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fLCBfX2Fsd2F5 c19pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQorX21tX2ZubXN1Yl9zcyAo X19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAgcmV0 dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3MzICgtKF9fdjRz ZilfX0EsIChfX3Y0c2YpX19CLCAtKF9fdjRzZilfX0MpOworfQorCitleHRl cm4gX19pbmxpbmUgX19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19t bV9mbWFkZHN1Yl9wZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20x MjhkIF9fQykKK3sKKyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMy X3ZmbWFkZHN1YnBkICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIChfX3Yy ZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTI1NmQgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCitfbW0yNTZfZm1hZGRzdWJfcGQgKF9fbTI1NmQg X19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHJldHVybiAo X19tMjU2ZClfX2J1aWx0aW5faWEzMl92Zm1hZGRzdWJwZDI1NiAoKF9fdjRk ZilfX0EsIChfX3Y0ZGYpX19CLCAoX192NGRmKV9fQyk7Cit9CisKK2V4dGVy biBfX2lubGluZSBfX20xMjggX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18sIF9fYWx3YXlzX2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCitfbW1f Zm1hZGRzdWJfcHMgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBf X0MpCit7CisgIHJldHVybiAoX19tMTI4KV9fYnVpbHRpbl9pYTMyX3ZmbWFk ZHN1YnBzICgoX192NHNmKV9fQSwgKF9fdjRzZilfX0IsIChfX3Y0c2YpX19D KTsKK30KKworZXh0ZXJuIF9faW5saW5lIF9fbTI1NiBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKK19tbTI1Nl9mbWFkZHN1Yl9wcyAoX19tMjU2IF9fQSwgX19t MjU2IF9fQiwgX19tMjU2IF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19i dWlsdGluX2lhMzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpX19BLCAoX192 OHNmKV9fQiwgKF9fdjhzZilfX0MpOworfQorCitleHRlcm4gX19pbmxpbmUg X19tMTI4ZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbXN1YmFkZF9w ZCAoX19tMTI4ZCBfX0EsIF9fbTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sK KyAgcmV0dXJuIChfX20xMjhkKV9fYnVpbHRpbl9pYTMyX3ZmbWFkZHN1YnBk ICgoX192MmRmKV9fQSwgKF9fdjJkZilfX0IsIC0oX192MmRmKV9fQyk7Cit9 CisKK2V4dGVybiBfX2lubGluZSBfX20yNTZkIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fLCBfX2Fsd2F5c19pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQorX21tMjU2X2Ztc3ViYWRkX3BkIChfX20yNTZkIF9fQSwgX19tMjU2 ZCBfX0IsIF9fbTI1NmQgX19DKQoreworICByZXR1cm4gKF9fbTI1NmQpX19i dWlsdGluX2lhMzJfdmZtYWRkc3VicGQyNTYgKChfX3Y0ZGYpX19BLCAoX192 NGRmKV9fQiwgLShfX3Y0ZGYpX19DKTsKK30KKworZXh0ZXJuIF9faW5saW5l IF9fbTEyOCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdh eXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKK19tbV9mbXN1YmFkZF9w cyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAg cmV0dXJuIChfX20xMjgpX19idWlsdGluX2lhMzJfdmZtYWRkc3VicHMgKChf X3Y0c2YpX19BLCAoX192NHNmKV9fQiwgLShfX3Y0c2YpX19DKTsKK30KKwor ZXh0ZXJuIF9faW5saW5lIF9fbTI1NiBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkK K19tbTI1Nl9mbXN1YmFkZF9wcyAoX19tMjU2IF9fQSwgX19tMjU2IF9fQiwg X19tMjU2IF9fQykKK3sKKyAgcmV0dXJuIChfX20yNTYpX19idWlsdGluX2lh MzJfdmZtYWRkc3VicHMyNTYgKChfX3Y4c2YpX19BLCAoX192OHNmKV9fQiwg LShfX3Y4c2YpX19DKTsKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0t Z2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4 Ni9pMzg2LmMKaW5kZXggZmU2Y2NiZS4uMDc0NjFlMyAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9pMzg2L2kzODYuYworKysgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni5jCkBAIC0yMzg4OCw3ICsyMzg4OCw3IEBAIGVudW0gaXg4Nl9idWls dGlucwogICBJWDg2X0JVSUxUSU5fVkVDX1BFUk1fVjRERiwKICAgSVg4Nl9C VUlMVElOX1ZFQ19QRVJNX1Y4U0YsCiAKLSAgLyogRk1BNCBhbmQgWE9QIGlu c3RydWN0aW9ucy4gICovCisgIC8qIEZNQTQgaW5zdHJ1Y3Rpb25zLiAgKi8K ICAgSVg4Nl9CVUlMVElOX1ZGTUFERFNTLAogICBJWDg2X0JVSUxUSU5fVkZN QUREU0QsCiAgIElYODZfQlVJTFRJTl9WRk1BRERQUywKQEAgLTIzOTAwLDYg KzIzOTAwLDExIEBAIGVudW0gaXg4Nl9idWlsdGlucwogICBJWDg2X0JVSUxU SU5fVkZNQUREU1VCUFMyNTYsCiAgIElYODZfQlVJTFRJTl9WRk1BRERTVUJQ RDI1NiwKIAorICAvKiBGTUEzIGluc3RydWN0aW9ucy4gICovCisgIElYODZf QlVJTFRJTl9WRk1BRERTUzMsCisgIElYODZfQlVJTFRJTl9WRk1BRERTRDMs CisKKyAgLyogWE9QIGluc3RydWN0aW9ucy4gICovCiAgIElYODZfQlVJTFRJ Tl9WUENNT1YsCiAgIElYODZfQlVJTFRJTl9WUENNT1ZfVjJESSwKICAgSVg4 Nl9CVUlMVElOX1ZQQ01PVl9WNFNJLApAQCAtMjUxMDAsNiArMjUxMDUsMTMg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIGJk ZXNjX211bHRpX2FyZ1tdID0KICAgICAiX19idWlsdGluX2lhMzJfdmZtYWRk c2QiLCBJWDg2X0JVSUxUSU5fVkZNQUREU0QsCiAgICAgVU5LTk9XTiwgKGlu dClNVUxUSV9BUkdfM19ERiB9LAogCisgIHsgT1BUSU9OX01BU0tfSVNBX0ZN QSwgQ09ERV9GT1JfZm1haV92bWZtYWRkX3Y0c2YsCisgICAgIl9fYnVpbHRp bl9pYTMyX3ZmbWFkZHNzMyIsIElYODZfQlVJTFRJTl9WRk1BRERTUzMsCisg ICAgVU5LTk9XTiwgKGludClNVUxUSV9BUkdfM19TRiB9LAorICB7IE9QVElP Tl9NQVNLX0lTQV9GTUEsIENPREVfRk9SX2ZtYWlfdm1mbWFkZF92MmRmLAor ICAgICJfX2J1aWx0aW5faWEzMl92Zm1hZGRzZDMiLCBJWDg2X0JVSUxUSU5f VkZNQUREU0QzLAorICAgIFVOS05PV04sIChpbnQpTVVMVElfQVJHXzNfREYg fSwKKwogICB7IE9QVElPTl9NQVNLX0lTQV9GTUEgfCBPUFRJT05fTUFTS19J U0FfRk1BNCwgQ09ERV9GT1JfZm1hNGlfZm1hZGRfdjRzZiwKICAgICAiX19i dWlsdGluX2lhMzJfdmZtYWRkcHMiLCBJWDg2X0JVSUxUSU5fVkZNQUREUFMs CiAgICAgVU5LTk9XTiwgKGludClNVUxUSV9BUkdfM19TRiB9LApAQCAtMjUx MTMsNiArMjUxMjUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1aWx0aW5f ZGVzY3JpcHRpb24gYmRlc2NfbXVsdGlfYXJnW10gPQogICAgICJfX2J1aWx0 aW5faWEzMl92Zm1hZGRwZDI1NiIsIElYODZfQlVJTFRJTl9WRk1BRERQRDI1 NiwKICAgICBVTktOT1dOLCAoaW50KU1VTFRJX0FSR18zX0RGMiB9LAogCisK KworCiAgIHsgT1BUSU9OX01BU0tfSVNBX0ZNQSB8IE9QVElPTl9NQVNLX0lT QV9GTUE0LCBDT0RFX0ZPUl9mbWFkZHN1Yl92NHNmLAogICAgICJfX2J1aWx0 aW5faWEzMl92Zm1hZGRzdWJwcyIsIElYODZfQlVJTFRJTl9WRk1BRERTVUJQ UywKICAgICBVTktOT1dOLCAoaW50KU1VTFRJX0FSR18zX1NGIH0sCmRpZmYg LS1naXQgYS9nY2MvY29uZmlnL2kzODYvc3NlLm1kIGIvZ2NjL2NvbmZpZy9p Mzg2L3NzZS5tZAppbmRleCBlOWY2YzNkLi4wYjQ1NWE1IDEwMDY0NAotLS0g YS9nY2MvY29uZmlnL2kzODYvc3NlLm1kCisrKyBiL2djYy9jb25maWcvaTM4 Ni9zc2UubWQKQEAgLTE1OTMsNiArMTU5Myw4OSBAQAogICBvcGVyYW5kc1s0 XSA9IENPTlNUMF9SVFggKDxNT0RFPm1vZGUpOwogfSkKIAorKGRlZmluZV9l eHBhbmQgImZtYWlfdm1mbWFkZF88bW9kZT4iCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZGXzEyOCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKwkodmVjX21l cmdlOlZGXzEyOAorCSAgKGZtYTpWRl8xMjgKKwkgICAgKG1hdGNoX29wZXJh bmQ6VkZfMTI4IDEgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKKwkgICAgKG1h dGNoX29wZXJhbmQ6VkZfMTI4IDIgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikK KwkgICAgKG1hdGNoX29wZXJhbmQ6VkZfMTI4IDMgIm5vbmltbWVkaWF0ZV9v cGVyYW5kIikpCisJICAobWF0Y2hfZHVwIDApCisJICAoY29uc3RfaW50IDEp KSldCisgICJUQVJHRVRfRk1BIikKKworKGRlZmluZV9pbnNuICIqZm1haV9m bWFkZF88bW9kZT4iCisgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZGXzEyOCAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXgseCx4IikKKyAgICAgICAgKHZlY19t ZXJnZTpWRl8xMjgKKwkgIChmbWE6VkZfMTI4CisJICAgIChtYXRjaF9vcGVy YW5kOlZGXzEyOCAxICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIiUwLCAwLHgi KQorCSAgICAobWF0Y2hfb3BlcmFuZDpWRl8xMjggMiAibm9uaW1tZWRpYXRl X29wZXJhbmQiICJ4bSwgeCx4bSIpCisJICAgIChtYXRjaF9vcGVyYW5kOlZG XzEyOCAzICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIiB4LHhtLDAiKSkKKwkg IChtYXRjaF9kdXAgMCkKKwkgIChjb25zdF9pbnQgMSkpKV0KKyAgIlRBUkdF VF9GTUEiCisgICJACisgICB2Zm1hZGQxMzI8c3Nlc2NhbGFybW9kZXN1ZmZp eD5cdHslMiwgJTMsICUwfCUwLCAlMywgJTJ9CisgICB2Zm1hZGQyMTM8c3Nl c2NhbGFybW9kZXN1ZmZpeD5cdHslMywgJTIsICUwfCUwLCAlMiwgJTN9Cisg ICB2Zm1hZGQyMzE8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHslMiwgJTEsICUw fCUwLCAlMSwgJTJ9IgorICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbXVsYWRk IikKKyAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmlu ZV9pbnNuICIqZm1haV9mbXN1Yl88bW9kZT4iCisgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZGXzEyOCAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXgseCx4IikK KyAgICAgICAgKHZlY19tZXJnZTpWRl8xMjgKKwkgIChmbWE6VkZfMTI4CisJ ICAgIChtYXRjaF9vcGVyYW5kOlZGXzEyOCAgIDEgIm5vbmltbWVkaWF0ZV9v cGVyYW5kIiAiJTAsIDAseCIpCisJICAgIChtYXRjaF9vcGVyYW5kOlZGXzEy OCAgIDIgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAieG0sIHgseG0iKQorCSAg ICAobmVnOlZGXzEyOAorCSAgICAgIChtYXRjaF9vcGVyYW5kOlZGXzEyOCAz ICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIiB4LHhtLDAiKSkpCisJICAobWF0 Y2hfZHVwIDApCisJICAoY29uc3RfaW50IDEpKSldCisgICJUQVJHRVRfRk1B IgorICAiQAorICAgdmZtc3ViMTMyPHNzZXNjYWxhcm1vZGVzdWZmaXg+XHR7 JTIsICUzLCAlMHwlMCwgJTMsICUyfQorICAgdmZtc3ViMjEzPHNzZXNjYWxh cm1vZGVzdWZmaXg+XHR7JTMsICUyLCAlMHwlMCwgJTIsICUzfQorICAgdmZt c3ViMjMxPHNzZXNjYWxhcm1vZGVzdWZmaXg+XHR7JTIsICUxLCAlMHwlMCwg JTEsICUyfSIKKyAgWyhzZXRfYXR0ciAidHlwZSIgInNzZW11bGFkZCIpCisg ICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5z biAiKmZtYWlfZm5tYWRkXzxtb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VkZfMTI4IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9eCx4LHgiKQorICAg ICAgICAodmVjX21lcmdlOlZGXzEyOAorCSAgKGZtYTpWRl8xMjgKKwkgICAg KG5lZzpWRl8xMjgKKwkgICAgICAobWF0Y2hfb3BlcmFuZDpWRl8xMjggMSAi bm9uaW1tZWRpYXRlX29wZXJhbmQiICIlMCwgMCx4IikpCisJICAgIChtYXRj aF9vcGVyYW5kOlZGXzEyOCAgIDIgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAi eG0sIHgseG0iKQorCSAgICAobWF0Y2hfb3BlcmFuZDpWRl8xMjggICAzICJu b25pbW1lZGlhdGVfb3BlcmFuZCIgIiB4LHhtLDAiKSkKKwkgIChtYXRjaF9k dXAgMCkKKwkgIChjb25zdF9pbnQgMSkpKV0KKyAgIlRBUkdFVF9GTUEiCisg ICJACisgICB2Zm5tYWRkMTMyPHNzZXNjYWxhcm1vZGVzdWZmaXg+XHR7JTIs ICUzLCAlMHwlMCwgJTMsICUyfQorICAgdmZubWFkZDIxMzxzc2VzY2FsYXJt b2Rlc3VmZml4Plx0eyUzLCAlMiwgJTB8JTAsICUyLCAlM30KKyAgIHZmbm1h ZGQyMzE8c3Nlc2NhbGFybW9kZXN1ZmZpeD5cdHslMiwgJTEsICUwfCUwLCAl MSwgJTJ9IgorICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbXVsYWRkIikKKyAg IChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9pbnNu ICIqZm1haV9mbm1zdWJfPG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWRl8xMjggMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj14LHgseCIpCisgICAg ICAgICh2ZWNfbWVyZ2U6VkZfMTI4CisJICAoZm1hOlZGXzEyOAorCSAgICAo bmVnOlZGXzEyOAorCSAgICAgIChtYXRjaF9vcGVyYW5kOlZGXzEyOCAxICJu b25pbW1lZGlhdGVfb3BlcmFuZCIgIiUwLCAwLHgiKSkKKwkgICAgKG1hdGNo X29wZXJhbmQ6VkZfMTI4ICAgMiAibm9uaW1tZWRpYXRlX29wZXJhbmQiICJ4 bSwgeCx4bSIpCisJICAgIChuZWc6VkZfMTI4CisJICAgICAgKG1hdGNoX29w ZXJhbmQ6VkZfMTI4IDMgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIHgseG0s MCIpKSkKKwkgIChtYXRjaF9kdXAgMCkKKwkgIChjb25zdF9pbnQgMSkpKV0K KyAgIlRBUkdFVF9GTUEiCisgICJACisgICB2Zm5tc3ViMTMyPHNzZXNjYWxh cm1vZGVzdWZmaXg+XHR7JTIsICUzLCAlMHwlMCwgJTMsICUyfQorICAgdmZu bXN1YjIxMzxzc2VzY2FsYXJtb2Rlc3VmZml4Plx0eyUzLCAlMiwgJTB8JTAs ICUyLCAlM30KKyAgIHZmbm1zdWIyMzE8c3Nlc2NhbGFybW9kZXN1ZmZpeD5c dHslMiwgJTEsICUwfCUwLCAlMSwgJTJ9IgorICBbKHNldF9hdHRyICJ0eXBl IiAic3NlbXVsYWRkIikKKyAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIp XSkKKwogKGRlZmluZV9pbnNuICIqZm1hNGlfdm1mbWFkZF88bW9kZT4iCiAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlZGXzEyOCAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXgseCIpCiAJKHZlY19tZXJnZTpWRl8xMjgKZGlmZiAtLWdpdCBh L2djYy9jb25maWcvaTM4Ni94ODZpbnRyaW4uaCBiL2djYy9jb25maWcvaTM4 Ni94ODZpbnRyaW4uaAppbmRleCA4ODQ1NmY5Li41NDZiOGE4IDEwMDY0NAot LS0gYS9nY2MvY29uZmlnL2kzODYveDg2aW50cmluLmgKKysrIGIvZ2NjL2Nv bmZpZy9pMzg2L3g4NmludHJpbi5oCkBAIC05Myw0ICs5Myw4IEBACiAjaW5j bHVkZSA8cG9wY250aW50cmluLmg+CiAjZW5kaWYKIAorI2lmZGVmIF9fRk1B X18KKyNpbmNsdWRlIDxmbWFpbnRyaW4uaD4KKyNlbmRpZgorCiAjZW5kaWYg LyogX1g4NklOVFJJTl9IX0lOQ0xVREVEICovCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZtYWRkWFguYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS0yNTYtZm1hZGRY WC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNzM0 MDIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9mbWEtMjU2LWZtYWRkWFguYwpAQCAtMCwwICsxLDYxIEBACisv KiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZl LXRhcmdldCBmbWEgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1mbWEi IH0gKi8KKworI2luY2x1ZGUgImZtYS1jaGVjay5oIgorCisjaW5jbHVkZSA8 eDg2aW50cmluLmg+CisjaW5jbHVkZSAibTI1Ni1jaGVjay5oIgorCit2b2lk CitjaGVja19tbTI1Nl9mbWFkZF9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQg X19CLCBfX20yNTZkIF9fQykKK3sKKyAgdW5pb24yNTZkIGEsIGIsIGMsIGU7 CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7Cisg IGRvdWJsZSBkWzRdOworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2ZtYWRk X3BkIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkr KykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgYy5h W2ldOworICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2ZCAoZSwgZCkpCisg ICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tMjU2X2ZtYWRkX3Bz IChfX20yNTYgX19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQoreworICB1 bmlvbjI1NiBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9f QjsKKyAgYy54ID0gX19DOworICBmbG9hdCBkWzhdOworICBpbnQgaTsKKyAg ZS54ID0gX21tMjU2X2ZtYWRkX3BzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9y IChpID0gMDsgaSA8IDg7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5h W2ldICogYi5hW2ldICsgYy5hW2ldOworICAgIH0KKyAgaWYgKGNoZWNrX3Vu aW9uMjU2IChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKworc3RhdGljIHZv aWQKK2ZtYV90ZXN0ICh2b2lkKQoreworICB1bmlvbjI1NiBjWzNdOworICB1 bmlvbjI1NmQgZFszXTsKKyAgaW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkg PCAzOyBpKyspCisgICAgeworICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGor KykKKwljW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICAgIGZvciAoaiA9 IDA7IGogPCA0OyBqKyspCisJZFtpXS5hW2pdID0gaSAqIGogKyAzLjU7Cisg ICAgfQorICBjaGVja19tbTI1Nl9mbWFkZF9wZCAoZFswXS54LCBkWzFdLngs IGRbMl0ueCk7CisgIGNoZWNrX21tMjU2X2ZtYWRkX3BzIChjWzBdLngsIGNb MV0ueCwgY1syXS54KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ZtYS0yNTYtZm1hZGRzdWJYWC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbWFkZHN1YlhYLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI2MWFkNQot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L2ZtYS0yNTYtZm1hZGRzdWJYWC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8q IHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUt dGFyZ2V0IGZtYSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZtYSIg fSAqLworCisjaW5jbHVkZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRlIDx4 ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3ZvaWQK K2NoZWNrX21tMjU2X2ZtYWRkc3ViX3BzIChfX20yNTYgX19BLCBfX20yNTYg X19CLCBfX20yNTYgX19DKQoreworICB1bmlvbjI1NiBhLCBiLCBjLCBlOwor ICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBm bG9hdCBkWzhdOworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2ZtYWRkc3Vi X3BzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8IDg7IGkr KykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ldICsgKGkg JSAyID09IDEgPyBjLmFbaV0gOiAtYy5hW2ldKTsKKyAgICB9CisgIGlmIChj aGVja191bmlvbjI1NiAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3Zv aWQKK2NoZWNrX21tMjU2X2ZtYWRkc3ViX3BkIChfX20yNTZkIF9fQSwgX19t MjU2ZCBfX0IsIF9fbTI1NmQgX19DKQoreworICB1bmlvbjI1NmQgYSwgYiwg YywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9f QzsKKyAgZG91YmxlIGRbNF07CisgIGludCBpOworICBlLnggPSBfbW0yNTZf Zm1hZGRzdWJfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0gKiBiLmFb aV0gKyAoaSAlIDIgPT0gMSA/IGMuYVtpXSA6IC1jLmFbaV0pOworICAgIH0K KyAgaWYgKGNoZWNrX3VuaW9uMjU2ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7 Cit9CisKK3N0YXRpYyB2b2lkCitmbWFfdGVzdCAodm9pZCkKK3sKKyAgdW5p b24yNTYgY1szXTsKKyAgdW5pb24yNTZkIGRbM107CisgIGludCBpLCBqOwor ICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorICAgIHsKKyAgICAgIGZvciAo aiA9IDA7IGogPCA4OyBqKyspCisJY1tpXS5hW2pdID0gaSAqIGogKyAzLjU7 CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCWRbaV0uYVtqXSA9 IGkgKiBqICsgMy41OworICAgIH0KKyAgY2hlY2tfbW0yNTZfZm1hZGRzdWJf cGQgKGRbMF0ueCwgZFsxXS54LCBkWzJdLngpOworICBjaGVja19tbTI1Nl9m bWFkZHN1Yl9wcyAoY1swXS54LCBjWzFdLngsIGNbMl0ueCk7Cit9CmRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2 LWZtc3ViWFguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Zt YS0yNTYtZm1zdWJYWC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmQ5MmFlYzAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZtc3ViWFguYwpAQCAtMCww ICsxLDYyIEBACisvKiB7IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCBmbWEgfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLW1mbWEiIH0gKi8KKworI2luY2x1ZGUgImZtYS1jaGVjay5oIgor CisjaW5jbHVkZSA8eDg2aW50cmluLmg+CisjaW5jbHVkZSAibTI1Ni1jaGVj ay5oIgorCisKK3ZvaWQKK2NoZWNrX21tMjU2X2Ztc3ViX3BkIChfX20yNTZk IF9fQSwgX19tMjU2ZCBfX0IsIF9fbTI1NmQgX19DKQoreworICB1bmlvbjI1 NmQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7Cisg IGMueCA9IF9fQzsKKyAgZG91YmxlIGRbNF07CisgIGludCBpOworICBlLngg PSBfbW0yNTZfZm1zdWJfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkg PSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0g KiBiLmFbaV0gLSBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24y NTZkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKwordm9pZAorY2hlY2tf bW0yNTZfZm1zdWJfcHMgKF9fbTI1NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1 NiBfX0MpCit7CisgIHVuaW9uMjU2IGEsIGIsIGMsIGU7CisgIGEueCA9IF9f QTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGZsb2F0IGRbOF07 CisgIGludCBpOworICBlLnggPSBfbW0yNTZfZm1zdWJfcHMgKF9fQSwgX19C LCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorICAgIHsKKyAg ICAgIGRbaV0gPSBhLmFbaV0gKiBiLmFbaV0gLSBjLmFbaV07CisgICAgfQor ICBpZiAoY2hlY2tfdW5pb24yNTYgKGUsIGQpKQorICAgIGFib3J0ICgpOwor fQorCitzdGF0aWMgdm9pZAorZm1hX3Rlc3QgKHZvaWQpCit7CisgIHVuaW9u MjU2IGNbM107CisgIHVuaW9uMjU2ZCBkWzNdOworICBpbnQgaSwgajsKKyAg Zm9yIChpID0gMDsgaSA8IDM7IGkrKykKKyAgICB7CisgICAgICBmb3IgKGog PSAwOyBqIDwgODsgaisrKQorCWNbaV0uYVtqXSA9IGkgKiBqICsgMy41Owor ICAgICAgZm9yIChqID0gMDsgaiA8IDQ7IGorKykKKwlkW2ldLmFbal0gPSBp ICogaiArIDMuNTsKKyAgICB9CisgIGNoZWNrX21tMjU2X2Ztc3ViX3BkIChk WzBdLngsIGRbMV0ueCwgZFsyXS54KTsKKyAgY2hlY2tfbW0yNTZfZm1zdWJf cHMgKGNbMF0ueCwgY1sxXS54LCBjWzJdLngpOworfQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbXN1YmFk ZFhYLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtMjU2 LWZtc3ViYWRkWFguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44NGE0MWM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1mbXN1YmFkZFhYLmMKQEAgLTAs MCArMSw2MSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBkZy1yZXF1 aXJlLWVmZmVjdGl2ZS10YXJnZXQgZm1hIH0gKi8KKy8qIHsgZGctb3B0aW9u cyAiLU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRlICJmbWEtY2hlY2suaCIK KworI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1ZGUgIm0yNTYtY2hl Y2suaCIKKwordm9pZAorY2hlY2tfbW0yNTZfZm1zdWJhZGRfcHMgKF9fbTI1 NiBfX0EsIF9fbTI1NiBfX0IsIF9fbTI1NiBfX0MpCit7CisgIHVuaW9uMjU2 IGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBj LnggPSBfX0M7CisgIGZsb2F0IGRbOF07CisgIGludCBpOworICBlLnggPSBf bW0yNTZfZm1zdWJhZGRfcHMgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkg PSAwOyBpIDwgODsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0g KiBiLmFbaV0gKyAoaSAlIDIgPT0gMSA/IC1jLmFbaV0gOiBjLmFbaV0pOwor ICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMjU2IChlLCBkKSkKKyAgICBhYm9y dCAoKTsKK30KKwordm9pZAorY2hlY2tfbW0yNTZfZm1zdWJhZGRfcGQgKF9f bTI1NmQgX19BLCBfX20yNTZkIF9fQiwgX19tMjU2ZCBfX0MpCit7CisgIHVu aW9uMjU2ZCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9f QjsKKyAgYy54ID0gX19DOworICBkb3VibGUgZFs0XTsKKyAgaW50IGk7Cisg IGUueCA9IF9tbTI1Nl9mbXN1YmFkZF9wZCAoX19BLCBfX0IsIF9fQyk7Cisg IGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgeworICAgICAgZFtpXSA9 IGEuYVtpXSAqIGIuYVtpXSArIChpICUgMiA9PSAxID8gLWMuYVtpXSA6IGMu YVtpXSk7CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24yNTZkIChlLCBkKSkK KyAgICBhYm9ydCAoKTsKK30KKworc3RhdGljIHZvaWQKK2ZtYV90ZXN0ICh2 b2lkKQoreworICB1bmlvbjI1NiBjWzNdOworICB1bmlvbjI1NmQgZFszXTsK KyAgaW50IGksIGo7CisgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspCisgICAg eworICAgICAgZm9yIChqID0gMDsgaiA8IDg7IGorKykKKwljW2ldLmFbal0g PSBpICogaiArIDMuNTsKKyAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKysp CisJZFtpXS5hW2pdID0gaSAqIGogKyAzLjU7CisgICAgfQorICBjaGVja19t bTI1Nl9mbXN1YmFkZF9wZCAoZFswXS54LCBkWzFdLngsIGRbMl0ueCk7Cisg IGNoZWNrX21tMjU2X2Ztc3ViYWRkX3BzIChjWzBdLngsIGNbMV0ueCwgY1sy XS54KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9pMzg2L2ZtYS0yNTYtZm5tYWRkWFguYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ZtYS0yNTYtZm5tYWRkWFguYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGRmYTY5Ci0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLTI1Ni1m bm1hZGRYWC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qIHsgZGctZG8gcnVuIH0g Ki8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZtYSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZtYSIgfSAqLworCisjaW5jbHVk ZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNp bmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3ZvaWQKK2NoZWNrX21tMjU2X2Zu bWFkZF9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZkIF9f QykKK3sKKyAgdW5pb24yNTZkIGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsK KyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJsZSBkWzRdOwor ICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2ZubWFkZF9wZCAoX19BLCBfX0Is IF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgeworICAg ICAgZFtpXSA9IC1hLmFbaV0gKiBiLmFbaV0gKyBjLmFbaV07CisgICAgfQor ICBpZiAoY2hlY2tfdW5pb24yNTZkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsK K30KKwordm9pZAorY2hlY2tfbW0yNTZfZm5tYWRkX3BzIChfX20yNTYgX19B LCBfX20yNTYgX19CLCBfX20yNTYgX19DKQoreworICB1bmlvbjI1NiBhLCBi LCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0g X19DOworICBmbG9hdCBkWzhdOworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2 X2ZubWFkZF9wcyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkg PCA4OyBpKyspCisgICAgeworICAgICAgZFtpXSA9IC1hLmFbaV0gKiBiLmFb aV0gKyBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24yNTYgKGUs IGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAorZm1hX3Rl c3QgKHZvaWQpCit7CisgIHVuaW9uMjU2IGNbM107CisgIHVuaW9uMjU2ZCBk WzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykK KyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgODsgaisrKQorCWNbaV0u YVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsgaiA8IDQ7 IGorKykKKwlkW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9CisgIGNo ZWNrX21tMjU2X2ZubWFkZF9wZCAoZFswXS54LCBkWzFdLngsIGRbMl0ueCk7 CisgIGNoZWNrX21tMjU2X2ZubWFkZF9wcyAoY1swXS54LCBjWzFdLngsIGNb Ml0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9mbWEtMjU2LWZubXN1YlhYLmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9mbWEtMjU2LWZubXN1YlhYLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM0NzA1ZQotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS0yNTYt Zm5tc3ViWFguYwpAQCAtMCwwICsxLDYyIEBACisvKiB7IGRnLWRvIHJ1biB9 ICovCisvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBmbWEgfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLW1mbWEiIH0gKi8KKworI2luY2x1 ZGUgImZtYS1jaGVjay5oIgorCisjaW5jbHVkZSA8eDg2aW50cmluLmg+Cisj aW5jbHVkZSAibTI1Ni1jaGVjay5oIgorCisKK3ZvaWQKK2NoZWNrX21tMjU2 X2ZubXN1Yl9wZCAoX19tMjU2ZCBfX0EsIF9fbTI1NmQgX19CLCBfX20yNTZk IF9fQykKK3sKKyAgdW5pb24yNTZkIGEsIGIsIGMsIGU7CisgIGEueCA9IF9f QTsKKyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGRvdWJsZSBkWzRd OworICBpbnQgaTsKKyAgZS54ID0gX21tMjU2X2ZubXN1Yl9wZCAoX19BLCBf X0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgewor ICAgICAgZFtpXSA9IC1hLmFbaV0gKiBiLmFbaV0gLSBjLmFbaV07CisgICAg fQorICBpZiAoY2hlY2tfdW5pb24yNTZkIChlLCBkKSkKKyAgICBhYm9ydCAo KTsKK30KKwordm9pZAorY2hlY2tfbW0yNTZfZm5tc3ViX3BzIChfX20yNTYg X19BLCBfX20yNTYgX19CLCBfX20yNTYgX19DKQoreworICB1bmlvbjI1NiBh LCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54 ID0gX19DOworICBmbG9hdCBkWzhdOworICBpbnQgaTsKKyAgZS54ID0gX21t MjU2X2ZubXN1Yl9wcyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7 IGkgPCA4OyBpKyspCisgICAgeworICAgICAgZFtpXSA9IC1hLmFbaV0gKiBi LmFbaV0gLSBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24yNTYg KGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAorZm1h X3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMjU2IGNbM107CisgIHVuaW9uMjU2 ZCBkWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7IGkr KykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgODsgaisrKQorCWNb aV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsgaiA8 IDQ7IGorKykKKwlkW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9Cisg IGNoZWNrX21tMjU2X2ZubXN1Yl9wZCAoZFswXS54LCBkWzFdLngsIGRbMl0u eCk7CisgIGNoZWNrX21tMjU2X2ZubXN1Yl9wcyAoY1swXS54LCBjWzFdLngs IGNbMl0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9mbWEtY2hlY2suaCBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ZtYS1jaGVjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjY5NmM0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtY2hlY2suaApAQCAtMCww ICsxLDI1IEBACisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJj cHVpZC5oIgorCitzdGF0aWMgdm9pZCBmbWFfdGVzdCAodm9pZCk7CisKK3N0 YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpIGRvX3Rlc3Qg KHZvaWQpCit7CisgIGZtYV90ZXN0ICgpOworfQorCitpbnQKK21haW4gKCkK K3sKKyAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsKKworICBp ZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KSkK KyAgICByZXR1cm4gMDsKKworICAvKiBSdW4gRk1BIHRlc3Qgb25seSBpZiBo b3N0IGhhcyBGTUEgc3VwcG9ydC4gICovCisgIGlmIChlY3ggJiBiaXRfRk1B KQorICAgIGRvX3Rlc3QgKCk7CisKKyAgZXhpdCAoMCk7Cit9CmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtY29tcGls ZS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWNvbXBp bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDVk YWE1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvZm1hLWNvbXBpbGUuYwpAQCAtMCwwICsxLDIyMSBAQAorLyog VGVzdCB0aGF0IHRoZSBjb21waWxlciBwcm9wZXJseSBnZW5lcmF0ZXMgZmxv YXRpbmcgcG9pbnQgbXVsdGlwbHkKKyAgIGFuZCBhZGQgaW5zdHJ1Y3Rpb25z IEZNQSBzeXN0ZW1zLiAgKi8KKworLyogeyBkZy1kbyBjb21waWxlIH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRl IDx4ODZpbnRyaW4uaD4KKworX19tMTI4ZAorY2hlY2tfbW1fZm1hZGRfcGQg KF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMpCit7CisgIHJldHVy biBfbW1fZm1hZGRfcGQgKGEsIGIsIGMpOworfQorCitfX20yNTZkCitjaGVj a19tbTI1Nl9mbWFkZF9wZCAoX19tMjU2ZCBhLCBfX20yNTZkIGIsIF9fbTI1 NmQgYykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbWFkZF9wZCAoYSwgYiwgYyk7 Cit9CisKK19fbTEyOAorY2hlY2tfbW1fZm1hZGRfcHMgKF9fbTEyOCBhLCBf X20xMjggYiwgX19tMTI4IGMpCit7CisgIHJldHVybiBfbW1fZm1hZGRfcHMg KGEsIGIsIGMpOworfQorCitfX20yNTYKK2NoZWNrX21tMjU2X2ZtYWRkX3Bz IChfX20yNTYgYSwgX19tMjU2IGIsIF9fbTI1NiBjKQoreworICByZXR1cm4g X21tMjU2X2ZtYWRkX3BzIChhLCBiLCBjKTsKK30KKworX19tMTI4ZAorY2hl Y2tfbW1fZm1hZGRfc2QgKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhk IGMpCit7CisgIHJldHVybiBfbW1fZm1hZGRfc2QgKGEsIGIsIGMpOworfQor CitfX20xMjgKK2NoZWNrX21tX2ZtYWRkX3NzIChfX20xMjggYSwgX19tMTI4 IGIsIF9fbTEyOCBjKQoreworICByZXR1cm4gX21tX2ZtYWRkX3NzIChhLCBi LCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm1zdWJfcGQgKF9fbTEy OGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMpCit7CisgIHJldHVybiBfbW1f Zm1zdWJfcGQgKGEsIGIsIGMpOworfQorCitfX20yNTZkCitjaGVja19tbTI1 Nl9mbXN1Yl9wZCAoX19tMjU2ZCBhLCBfX20yNTZkIGIsIF9fbTI1NmQgYykK K3sKKyAgcmV0dXJuIF9tbTI1Nl9mbXN1Yl9wZCAoYSwgYiwgYyk7Cit9CisK K19fbTEyOAorY2hlY2tfbW1fZm1zdWJfcHMgKF9fbTEyOCBhLCBfX20xMjgg YiwgX19tMTI4IGMpCit7CisgIHJldHVybiBfbW1fZm1zdWJfcHMgKGEsIGIs IGMpOworfQorCitfX20yNTYKK2NoZWNrX21tMjU2X2Ztc3ViX3BzIChfX20y NTYgYSwgX19tMjU2IGIsIF9fbTI1NiBjKQoreworICByZXR1cm4gX21tMjU2 X2Ztc3ViX3BzIChhLCBiLCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1f Zm1zdWJfc2QgKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMpCit7 CisgIHJldHVybiBfbW1fZm1zdWJfc2QgKGEsIGIsIGMpOworfQorCitfX20x MjgKK2NoZWNrX21tX2Ztc3ViX3NzIChfX20xMjggYSwgX19tMTI4IGIsIF9f bTEyOCBjKQoreworICByZXR1cm4gX21tX2Ztc3ViX3NzIChhLCBiLCBjKTsK K30KKworX19tMTI4ZAorY2hlY2tfbW1fZm5tYWRkX3BkIChfX20xMjhkIGEs IF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21tX2ZubWFk ZF9wZCAoYSwgYiwgYyk7Cit9CisKK19fbTI1NmQKK2NoZWNrX21tMjU2X2Zu bWFkZF9wZCAoX19tMjU2ZCBhLCBfX20yNTZkIGIsIF9fbTI1NmQgYykKK3sK KyAgcmV0dXJuIF9tbTI1Nl9mbm1hZGRfcGQgKGEsIGIsIGMpOworfQorCitf X20xMjgKK2NoZWNrX21tX2ZubWFkZF9wcyAoX19tMTI4IGEsIF9fbTEyOCBi LCBfX20xMjggYykKK3sKKyAgcmV0dXJuIF9tbV9mbm1hZGRfcHMgKGEsIGIs IGMpOworfQorCitfX20yNTYKK2NoZWNrX21tMjU2X2ZubWFkZF9wcyAoX19t MjU2IGEsIF9fbTI1NiBiLCBfX20yNTYgYykKK3sKKyAgcmV0dXJuIF9tbTI1 Nl9mbm1hZGRfcHMgKGEsIGIsIGMpOworfQorCitfX20xMjhkCitjaGVja19t bV9mbm1hZGRfc2QgKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMp Cit7CisgIHJldHVybiBfbW1fZm5tYWRkX3NkIChhLCBiLCBjKTsKK30KKwor X19tMTI4CitjaGVja19tbV9mbm1hZGRfc3MgKF9fbTEyOCBhLCBfX20xMjgg YiwgX19tMTI4IGMpCit7CisgIHJldHVybiBfbW1fZm5tYWRkX3NzIChhLCBi LCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm5tc3ViX3BkIChfX20x MjhkIGEsIF9fbTEyOGQgYiwgX19tMTI4ZCBjKQoreworICByZXR1cm4gX21t X2ZubXN1Yl9wZCAoYSwgYiwgYyk7Cit9CisKK19fbTI1NmQKK2NoZWNrX21t MjU2X2ZubXN1Yl9wZCAoX19tMjU2ZCBhLCBfX20yNTZkIGIsIF9fbTI1NmQg YykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbm1zdWJfcGQgKGEsIGIsIGMpOwor fQorCitfX20xMjgKK2NoZWNrX21tX2ZubXN1Yl9wcyAoX19tMTI4IGEsIF9f bTEyOCBiLCBfX20xMjggYykKK3sKKyAgcmV0dXJuIF9tbV9mbm1zdWJfcHMg KGEsIGIsIGMpOworfQorCitfX20yNTYKK2NoZWNrX21tMjU2X2ZubXN1Yl9w cyAoX19tMjU2IGEsIF9fbTI1NiBiLCBfX20yNTYgYykKK3sKKyAgcmV0dXJu IF9tbTI1Nl9mbm1zdWJfcHMgKGEsIGIsIGMpOworfQorCitfX20xMjhkCitj aGVja19tbV9mbm1zdWJfc2QgKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20x MjhkIGMpCit7CisgIHJldHVybiBfbW1fZm5tc3ViX3NkIChhLCBiLCBjKTsK K30KKworX19tMTI4CitjaGVja19tbV9mbm1zdWJfc3MgKF9fbTEyOCBhLCBf X20xMjggYiwgX19tMTI4IGMpCit7CisgIHJldHVybiBfbW1fZm5tc3ViX3Nz IChhLCBiLCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm1hZGRzdWJf cGQgKF9fbTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMpCit7CisgIHJl dHVybiBfbW1fZm1hZGRzdWJfcGQgKGEsIGIsIGMpOworfQorCitfX20yNTZk CitjaGVja19tbTI1Nl9mbWFkZHN1Yl9wZCAoX19tMjU2ZCBhLCBfX20yNTZk IGIsIF9fbTI1NmQgYykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbWFkZHN1Yl9w ZCAoYSwgYiwgYyk7Cit9CisKK19fbTEyOAorY2hlY2tfbW1fZm1hZGRzdWJf cHMgKF9fbTEyOCBhLCBfX20xMjggYiwgX19tMTI4IGMpCit7CisgIHJldHVy biBfbW1fZm1hZGRzdWJfcHMgKGEsIGIsIGMpOworfQorCitfX20yNTYKK2No ZWNrX21tMjU2X2ZtYWRkc3ViX3BzIChfX20yNTYgYSwgX19tMjU2IGIsIF9f bTI1NiBjKQoreworICByZXR1cm4gX21tMjU2X2ZtYWRkc3ViX3BzIChhLCBi LCBjKTsKK30KKworX19tMTI4ZAorY2hlY2tfbW1fZm1zdWJhZGRfcGQgKF9f bTEyOGQgYSwgX19tMTI4ZCBiLCBfX20xMjhkIGMpCit7CisgIHJldHVybiBf bW1fZm1zdWJhZGRfcGQgKGEsIGIsIGMpOworfQorCitfX20yNTZkCitjaGVj a19tbTI1Nl9mbXN1YmFkZF9wZCAoX19tMjU2ZCBhLCBfX20yNTZkIGIsIF9f bTI1NmQgYykKK3sKKyAgcmV0dXJuIF9tbTI1Nl9mbXN1YmFkZF9wZCAoYSwg YiwgYyk7Cit9CisKK19fbTEyOAorY2hlY2tfbW1fZm1zdWJhZGRfcHMgKF9f bTEyOCBhLCBfX20xMjggYiwgX19tMTI4IGMpCit7CisgIHJldHVybiBfbW1f Zm1zdWJhZGRfcHMgKGEsIGIsIGMpOworfQorCitfX20yNTYKK2NoZWNrX21t MjU2X2Ztc3ViYWRkX3BzIChfX20yNTYgYSwgX19tMjU2IGIsIF9fbTI1NiBj KQoreworICByZXR1cm4gX21tMjU2X2Ztc3ViYWRkX3BzIChhLCBiLCBjKTsK K30KKworCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg InZmbWFkZFtec10uLnBzIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm1zdWJbXnNdLi5wcyIgMiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZubWFk ZC4uLnBzIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzICJ2Zm5tc3ViLi4ucHMiIDIgfSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbWFkZHN1Yi4uLnBzIiAy IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz ICJ2Zm1zdWJhZGQuLi5wcyIgMiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAidmZtYWRkW15zXS4ucGQiIDIgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbXN1 Yltec10uLnBkIiAyIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzICJ2Zm5tYWRkLi4ucGQiIDIgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbm1zdWIuLi5wZCIg MiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyAidmZtYWRkc3ViLi4ucGQiIDIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbXN1YmFkZC4uLnBkIiAyIH0gfSAq LworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm1h ZGRbXnNdLi5zcyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyAidmZtc3ViW15zXS4uc3MiIDEgfSB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgInZmbm1hZGQuLi5z cyIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAidmZubXN1Yi4uLnNzIiAxIH0gfSAqLworLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJ2Zm1hZGRbXnNdLi5zZCIgMSB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZt c3ViW15zXS4uc2QiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgInZmbm1hZGQuLi5zZCIgMSB9IH0gKi8KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAidmZubXN1Yi4uLnNk IiAxIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvZm1hLWZtYWRkWFguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ZtYS1mbWFkZFhYLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDNlZjllOAotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1mbWFkZFhYLmMKQEAg LTAsMCArMSwxMDIgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGct cmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZtYSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtbWZtYSIgfSAqLworCisjaW5jbHVkZSAiZm1hLWNoZWNr LmgiCisKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJtMjU2 LWNoZWNrLmgiCisKK3ZvaWQKK2NoZWNrX21tX2ZtYWRkX3BkIChfX20xMjhk IF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1bmlvbjEy OGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7Cisg IGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOworICBlLngg PSBfbW1fZm1hZGRfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAw OyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0gKiBi LmFbaV0gKyBjLmFbaV07CisgICAgfQorCisgIGlmIChjaGVja191bmlvbjEy OGQgKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19t bV9mbWFkZF9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9fQiwgX19tMTI4IF9f QykKK3sKKyAgdW5pb24xMjggYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOwor ICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxvYXQgZFs0XTsKKyAg aW50IGk7CisgIGUueCA9IF9tbV9mbWFkZF9wcyAoX19BLCBfX0IsIF9fQyk7 CisgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgeworICAgICAgZFtp XSA9IGEuYVtpXSAqIGIuYVtpXSArIGMuYVtpXTsKKyAgICB9CisgIGlmIChj aGVja191bmlvbjEyOCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3Zv aWQKK2NoZWNrX21tX2ZtYWRkX3NkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBf X0IsIF9fbTEyOGQgX19DKQoreworICB1bmlvbjEyOGQgYSwgYiwgYywgZTsK KyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAg ZG91YmxlIGRbMl07CisgIGludCBpOworICBlLnggPSBfbW1fZm1hZGRfc2Qg KF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAxOyBpIDwgMjsgaSsrKQor ICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV07CisgICAgfQorICBkWzBdID0g YS5hWzBdICogYi5hWzBdICsgYy5hWzBdOworICBpZiAoY2hlY2tfdW5pb24x MjhkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKwordm9pZAorY2hlY2tf bW1fZm1hZGRfc3MgKF9fbTEyOCBfX0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBf X0MpCit7CisgIHVuaW9uMTI4IGEsIGIsIGMsIGU7CisgIGEueCA9IF9fQTsK KyAgYi54ID0gX19COworICBjLnggPSBfX0M7CisgIGZsb2F0IGRbNF07Cisg IGludCBpOworICBlLnggPSBfbW1fZm1hZGRfc3MgKF9fQSwgX19CLCBfX0Mp OworICBmb3IgKGkgPSAxOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgIGRb aV0gPSBhLmFbaV07CisgICAgfQorICBkWzBdID0gYS5hWzBdICogYi5hWzBd ICsgYy5hWzBdOworICBpZiAoY2hlY2tfdW5pb24xMjggKGUsIGQpKQorICAg IGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAorZm1hX3Rlc3QgKHZvaWQp Cit7CisgIHVuaW9uMTI4IGFbM107CisgIHVuaW9uMTI4ZCBiWzNdOworICBp bnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKyAgICB7Cisg ICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCWFbaV0uYVtqXSA9IGkg KiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKKwli W2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9CisgIGNoZWNrX21tX2Zt YWRkX3BkIChiWzBdLngsIGJbMV0ueCwgYlsyXS54KTsKKyAgY2hlY2tfbW1f Zm1hZGRfc2QgKGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19t bV9mbWFkZF9wcyAoYVswXS54LCBhWzFdLngsIGFbMl0ueCk7CisgIGNoZWNr X21tX2ZtYWRkX3NzIChhWzBdLngsIGFbMV0ueCwgYVsyXS54KTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ZtYS1m bWFkZHN1YlhYLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9m bWEtZm1hZGRzdWJYWC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjg5YzgxNjMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm1hZGRzdWJYWC5jCkBAIC0wLDAg KzEsNjEgQEAKKy8qIHsgZGctZG8gcnVuIH0gKi8KKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IGZtYSB9ICovCisvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtbWZtYSIgfSAqLworCisjaW5jbHVkZSAiZm1hLWNoZWNrLmgiCisK KyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNpbmNsdWRlICJtMjU2LWNoZWNr LmgiCisKK3ZvaWQKK2NoZWNrX21tX2ZtYWRkc3ViX3BzIChfX20xMjggX19B LCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICB1bmlvbjEyOCBhLCBi LCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0g X19DOworICBmbG9hdCBkWzRdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2Zt YWRkc3ViX3BzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMDsgaSA8 IDQ7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldICogYi5hW2ld ICsgKGkgJSAyID09IDEgPyBjLmFbaV0gOiAtYy5hW2ldKTsKKyAgICB9Cisg IGlmIChjaGVja191bmlvbjEyOCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9 CisKK3ZvaWQKK2NoZWNrX21tX2ZtYWRkc3ViX3BkIChfX20xMjhkIF9fQSwg X19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1bmlvbjEyOGQgYSwg YiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9 IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOworICBlLnggPSBfbW1f Zm1hZGRzdWJfcGQgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBp IDwgMjsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV0gKiBiLmFb aV0gKyAoaSAlIDIgPT0gMSA/IGMuYVtpXSA6IC1jLmFbaV0pOworICAgIH0K KyAgaWYgKGNoZWNrX3VuaW9uMTI4ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7 Cit9CisKK3N0YXRpYyB2b2lkCitmbWFfdGVzdCAodm9pZCkKK3sKKyAgdW5p b24xMjggYVszXTsKKyAgdW5pb24xMjhkIGJbM107CisgIGludCBpLCBqOwor ICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorICAgIHsKKyAgICAgIGZvciAo aiA9IDA7IGogPCA0OyBqKyspCisJYVtpXS5hW2pdID0gaSAqIGogKyAzLjU7 CisgICAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKQorCWJbaV0uYVtqXSA9 IGkgKiBqICsgMy41OworICAgIH0KKyAgY2hlY2tfbW1fZm1hZGRzdWJfcGQg KGJbMF0ueCwgYlsxXS54LCBiWzJdLngpOworICBjaGVja19tbV9mbWFkZHN1 Yl9wcyAoYVswXS54LCBhWzFdLngsIGFbMl0ueCk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm1zdWJYWC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZm1hLWZtc3ViWFgu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDkyZDRi Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvZm1hLWZtc3ViWFguYwpAQCAtMCwwICsxLDEwMSBAQAorLyogeyBk Zy1kbyBydW4gfSAqLworLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJn ZXQgZm1hIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZm1hIiB9ICov CisKKyNpbmNsdWRlICJmbWEtY2hlY2suaCIKKworI2luY2x1ZGUgPHg4Nmlu dHJpbi5oPgorI2luY2x1ZGUgIm0yNTYtY2hlY2suaCIKKwordm9pZAorY2hl Y2tfbW1fZm1zdWJfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19t MTI4ZCBfX0MpCit7CisgIHVuaW9uMTI4ZCBhLCBiLCBjLCBlOworICBhLngg PSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBkb3VibGUg ZFsyXTsKKyAgaW50IGk7CisgIGUueCA9IF9tbV9mbXN1Yl9wZCAoX19BLCBf X0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCisgICAgewor ICAgICAgZFtpXSA9IGEuYVtpXSAqIGIuYVtpXSAtIGMuYVtpXTsKKyAgICB9 CisgIGlmIChjaGVja191bmlvbjEyOGQgKGUsIGQpKQorICAgIGFib3J0ICgp OworfQorCit2b2lkCitjaGVja19tbV9mbXN1Yl9wcyAoX19tMTI4IF9fQSwg X19tMTI4IF9fQiwgX19tMTI4IF9fQykKK3sKKyAgdW5pb24xMjggYSwgYiwg YywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9f QzsKKyAgZmxvYXQgZFs0XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbV9mbXN1 Yl9wcyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7IGkgPCA0OyBp KyspCisgICAgeworICAgICAgZFtpXSA9IGEuYVtpXSAqIGIuYVtpXSAtIGMu YVtpXTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjEyOCAoZSwgZCkpCisg ICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tX2Ztc3ViX3NkIChf X20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1 bmlvbjEyOGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBf X0I7CisgIGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOwor ICBlLnggPSBfbW1fZm1zdWJfc2QgKF9fQSwgX19CLCBfX0MpOworICBmb3Ig KGkgPSAxOyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFb aV07CisgICAgfQorICBkWzBdID0gYS5hWzBdICogYi5hWzBdIC0gYy5hWzBd OworICBpZiAoY2hlY2tfdW5pb24xMjhkIChlLCBkKSkKKyAgICBhYm9ydCAo KTsKK30KKwordm9pZAorY2hlY2tfbW1fZm1zdWJfc3MgKF9fbTEyOCBfX0Es IF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7CisgIHVuaW9uMTI4IGEsIGIs IGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBf X0M7CisgIGZsb2F0IGRbNF07CisgIGludCBpOworICBlLnggPSBfbW1fZm1z dWJfc3MgKF9fQSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAxOyBpIDwgNDsg aSsrKQorICAgIHsKKyAgICAgIGRbaV0gPSBhLmFbaV07CisgICAgfQorICBk WzBdID0gYS5hWzBdICogYi5hWzBdIC0gYy5hWzBdOworICBpZiAoY2hlY2tf dW5pb24xMjggKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMg dm9pZAorZm1hX3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMTI4IGFbM107Cisg IHVuaW9uMTI4ZCBiWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsg aSA8IDM7IGkrKykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsg aisrKQorCWFbaV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChq ID0gMDsgaiA8IDI7IGorKykKKwliW2ldLmFbal0gPSBpICogaiArIDMuNTsK KyAgICB9CisgIGNoZWNrX21tX2Ztc3ViX3BkIChiWzBdLngsIGJbMV0ueCwg YlsyXS54KTsKKyAgY2hlY2tfbW1fZm1zdWJfc2QgKGJbMF0ueCwgYlsxXS54 LCBiWzJdLngpOworICBjaGVja19tbV9mbXN1Yl9wcyAoYVswXS54LCBhWzFd LngsIGFbMl0ueCk7CisgIGNoZWNrX21tX2Ztc3ViX3NzIChhWzBdLngsIGFb MV0ueCwgYVsyXS54KTsKK30KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L2ZtYS1mbXN1YmFkZFhYLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm1zdWJhZGRYWC5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwM2Y4NzUKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEt Zm1zdWJhZGRYWC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qIHsgZGctZG8gcnVu IH0gKi8KKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGZtYSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWZtYSIgfSAqLworCisjaW5j bHVkZSAiZm1hLWNoZWNrLmgiCisKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4K KyNpbmNsdWRlICJtMjU2LWNoZWNrLmgiCisKK3ZvaWQKK2NoZWNrX21tX2Zt c3ViYWRkX3BzIChfX20xMjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19D KQoreworICB1bmlvbjEyOCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7Cisg IGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBmbG9hdCBkWzRdOworICBp bnQgaTsKKyAgZS54ID0gX21tX2Ztc3ViYWRkX3BzIChfX0EsIF9fQiwgX19D KTsKKyAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICB7CisgICAgICBk W2ldID0gYS5hW2ldICogYi5hW2ldICsgKGkgJSAyID09IDEgPyAtYy5hW2ld IDogYy5hW2ldKTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjEyOCAoZSwg ZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3ZvaWQKK2NoZWNrX21tX2Ztc3Vi YWRkX3BkIChfX20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19D KQoreworICB1bmlvbjEyOGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOwor ICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07Cisg IGludCBpOworICBlLnggPSBfbW1fZm1zdWJhZGRfcGQgKF9fQSwgX19CLCBf X0MpOworICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAg IGRbaV0gPSBhLmFbaV0gKiBiLmFbaV0gKyAoaSAlIDIgPT0gMSA/IC1jLmFb aV0gOiBjLmFbaV0pOworICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMTI4ZCAo ZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3N0YXRpYyB2b2lkCitmbWFf dGVzdCAodm9pZCkKK3sKKyAgdW5pb24xMjggYVszXTsKKyAgdW5pb24xMjhk IGJbM107CisgIGludCBpLCBqOworICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsr KQorICAgIHsKKyAgICAgIGZvciAoaiA9IDA7IGogPCA0OyBqKyspCisJYVtp XS5hW2pdID0gaSAqIGogKyAzLjU7CisgICAgICBmb3IgKGogPSAwOyBqIDwg MjsgaisrKQorCWJbaV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgIH0KKyAg Y2hlY2tfbW1fZm1zdWJhZGRfcGQgKGJbMF0ueCwgYlsxXS54LCBiWzJdLngp OworICBjaGVja19tbV9mbXN1YmFkZF9wcyAoYVswXS54LCBhWzFdLngsIGFb Ml0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9mbWEtZm5tYWRkWFguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2ZtYS1mbm1hZGRYWC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmYyM2E2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm5tYWRkWFguYwpA QCAtMCwwICsxLDEwMSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyogeyBk Zy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgZm1hIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRlICJmbWEtY2hl Y2suaCIKKworI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1ZGUgIm0y NTYtY2hlY2suaCIKKwordm9pZAorY2hlY2tfbW1fZm5tYWRkX3BzIChfX20x MjggX19BLCBfX20xMjggX19CLCBfX20xMjggX19DKQoreworICB1bmlvbjEy OCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAg Yy54ID0gX19DOworICBmbG9hdCBkWzRdOworICBpbnQgaTsKKyAgZS54ID0g X21tX2ZubWFkZF9wcyAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDA7 IGkgPCA0OyBpKyspCisgICAgeworICAgICAgZFtpXSA9IC1hLmFbaV0gKiBi LmFbaV0gKyBjLmFbaV07CisgICAgfQorICBpZiAoY2hlY2tfdW5pb24xMjgg KGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCit2b2lkCitjaGVja19tbV9m bm1hZGRfcGQgKF9fbTEyOGQgX19BLCBfX20xMjhkIF9fQiwgX19tMTI4ZCBf X0MpCit7CisgIHVuaW9uMTI4ZCBhLCBiLCBjLCBlOworICBhLnggPSBfX0E7 CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBkb3VibGUgZFsyXTsK KyAgaW50IGk7CisgIGUueCA9IF9tbV9mbm1hZGRfcGQgKF9fQSwgX19CLCBf X0MpOworICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQorICAgIHsKKyAgICAg IGRbaV0gPSAtYS5hW2ldICogYi5hW2ldICsgYy5hW2ldOworICAgIH0KKyAg aWYgKGNoZWNrX3VuaW9uMTI4ZCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9 CisKK3ZvaWQKK2NoZWNrX21tX2ZubWFkZF9zZCAoX19tMTI4ZCBfX0EsIF9f bTEyOGQgX19CLCBfX20xMjhkIF9fQykKK3sKKyAgdW5pb24xMjhkIGEsIGIs IGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLnggPSBf X0M7CisgIGRvdWJsZSBkWzJdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2Zu bWFkZF9zZCAoX19BLCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDE7IGkgPCAy OyBpKyspCisgICAgeworICAgICAgZFtpXSA9IGEuYVtpXTsKKyAgICB9Cisg IGRbMF0gPSAtYS5hWzBdICogYi5hWzBdICsgYy5hWzBdOworICBpZiAoY2hl Y2tfdW5pb24xMjhkIChlLCBkKSkKKyAgICBhYm9ydCAoKTsKK30KKwordm9p ZAorY2hlY2tfbW1fZm5tYWRkX3NzIChfX20xMjggX19BLCBfX20xMjggX19C LCBfX20xMjggX19DKQoreworICB1bmlvbjEyOCBhLCBiLCBjLCBlOworICBh LnggPSBfX0E7CisgIGIueCA9IF9fQjsKKyAgYy54ID0gX19DOworICBmbG9h dCBkWzRdOworICBpbnQgaTsKKyAgZS54ID0gX21tX2ZubWFkZF9zcyAoX19B LCBfX0IsIF9fQyk7CisgIGZvciAoaSA9IDE7IGkgPCA0OyBpKyspCisgICAg eworICAgICAgZFtpXSA9IGEuYVtpXTsKKyAgICB9CisgIGRbMF0gPSAtYS5h WzBdICogYi5hWzBdICsgYy5hWzBdOworICBpZiAoY2hlY2tfdW5pb24xMjgg KGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAorZm1h X3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMTI4IGFbM107CisgIHVuaW9uMTI4 ZCBiWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7IGkr KykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQorCWFb aV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsgaiA8 IDI7IGorKykKKwliW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9Cisg IGNoZWNrX21tX2ZubWFkZF9wZCAoYlswXS54LCBiWzFdLngsIGJbMl0ueCk7 CisgIGNoZWNrX21tX2ZubWFkZF9zZCAoYlswXS54LCBiWzFdLngsIGJbMl0u eCk7CisgIGNoZWNrX21tX2ZubWFkZF9wcyAoYVswXS54LCBhWzFdLngsIGFb Ml0ueCk7CisgIGNoZWNrX21tX2ZubWFkZF9zcyAoYVswXS54LCBhWzFdLngs IGFbMl0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvaTM4Ni9mbWEtZm5tc3ViWFguYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9pMzg2L2ZtYS1mbm1zdWJYWC5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQxN2M3ZjIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mbWEtZm5tc3ViWFgu YwpAQCAtMCwwICsxLDEwMSBAQAorLyogeyBkZy1kbyBydW4gfSAqLworLyog eyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgZm1hIH0gKi8KKy8qIHsg ZGctb3B0aW9ucyAiLU8yIC1tZm1hIiB9ICovCisKKyNpbmNsdWRlICJmbWEt Y2hlY2suaCIKKworI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2luY2x1ZGUg Im0yNTYtY2hlY2suaCIKKwordm9pZAorY2hlY2tfbW1fZm5tc3ViX3NkIChf X20xMjhkIF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1 bmlvbjEyOGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBf X0I7CisgIGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOwor ICBlLnggPSBfbW1fZm5tc3ViX3NkIChfX0EsIF9fQiwgX19DKTsKKyAgZm9y IChpID0gMTsgaSA8IDI7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5h W2ldOworICAgIH0KKyAgZFswXSA9IC1hLmFbMF0gKiBiLmFbMF0gLSBjLmFb MF07CisgIGlmIChjaGVja191bmlvbjEyOGQgKGUsIGQpKQorICAgIGFib3J0 ICgpOworfQorCit2b2lkCitjaGVja19tbV9mbm1zdWJfc3MgKF9fbTEyOCBf X0EsIF9fbTEyOCBfX0IsIF9fbTEyOCBfX0MpCit7CisgIHVuaW9uMTI4IGEs IGIsIGMsIGU7CisgIGEueCA9IF9fQTsKKyAgYi54ID0gX19COworICBjLngg PSBfX0M7CisgIGZsb2F0IGRbNF07CisgIGludCBpOworICBlLnggPSBfbW1f Zm5tc3ViX3NzIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0gMTsgaSA8 IDQ7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gYS5hW2ldOworICAgIH0K KyAgZFswXSA9IC1hLmFbMF0gKiBiLmFbMF0gLSBjLmFbMF07CisgIGlmIChj aGVja191bmlvbjEyOCAoZSwgZCkpCisgICAgYWJvcnQgKCk7Cit9CisKK3Zv aWQKK2NoZWNrX21tX2ZubXN1Yl9wcyAoX19tMTI4IF9fQSwgX19tMTI4IF9f QiwgX19tMTI4IF9fQykKK3sKKyAgdW5pb24xMjggYSwgYiwgYywgZTsKKyAg YS54ID0gX19BOworICBiLnggPSBfX0I7CisgIGMueCA9IF9fQzsKKyAgZmxv YXQgZFs0XTsKKyAgaW50IGk7CisgIGUueCA9IF9tbV9mbm1zdWJfcHMgKF9f QSwgX19CLCBfX0MpOworICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAg IHsKKyAgICAgIGRbaV0gPSAtYS5hW2ldICogYi5hW2ldIC0gYy5hW2ldOwor ICAgIH0KKyAgaWYgKGNoZWNrX3VuaW9uMTI4IChlLCBkKSkKKyAgICBhYm9y dCAoKTsKK30KKwordm9pZAorY2hlY2tfbW1fZm5tc3ViX3BkIChfX20xMjhk IF9fQSwgX19tMTI4ZCBfX0IsIF9fbTEyOGQgX19DKQoreworICB1bmlvbjEy OGQgYSwgYiwgYywgZTsKKyAgYS54ID0gX19BOworICBiLnggPSBfX0I7Cisg IGMueCA9IF9fQzsKKyAgZG91YmxlIGRbMl07CisgIGludCBpOworICBlLngg PSBfbW1fZm5tc3ViX3BkIChfX0EsIF9fQiwgX19DKTsKKyAgZm9yIChpID0g MDsgaSA8IDI7IGkrKykKKyAgICB7CisgICAgICBkW2ldID0gLWEuYVtpXSAq IGIuYVtpXSAtIGMuYVtpXTsKKyAgICB9CisgIGlmIChjaGVja191bmlvbjEy OGQgKGUsIGQpKQorICAgIGFib3J0ICgpOworfQorCitzdGF0aWMgdm9pZAor Zm1hX3Rlc3QgKHZvaWQpCit7CisgIHVuaW9uMTI4IGFbM107CisgIHVuaW9u MTI4ZCBiWzNdOworICBpbnQgaSwgajsKKyAgZm9yIChpID0gMDsgaSA8IDM7 IGkrKykKKyAgICB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgNDsgaisrKQor CWFbaV0uYVtqXSA9IGkgKiBqICsgMy41OworICAgICAgZm9yIChqID0gMDsg aiA8IDI7IGorKykKKwliW2ldLmFbal0gPSBpICogaiArIDMuNTsKKyAgICB9 CisgIGNoZWNrX21tX2ZubXN1Yl9wZCAoYlswXS54LCBiWzFdLngsIGJbMl0u eCk7CisgIGNoZWNrX21tX2ZubXN1Yl9zZCAoYlswXS54LCBiWzFdLngsIGJb Ml0ueCk7CisgIGNoZWNrX21tX2ZubXN1Yl9wcyAoYVswXS54LCBhWzFdLngs IGFbMl0ueCk7CisgIGNoZWNrX21tX2ZubXN1Yl9zcyAoYVswXS54LCBhWzFd LngsIGFbMl0ueCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvaTM4Ni9pMzg2LmV4cCBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L2kzODYuZXhwCmluZGV4IDE2N2I3OWIuLjQzZWQ4NDEgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2kzODYu ZXhwCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2kzODYu ZXhwCkBAIC0xNzIsNiArMTcyLDIwIEBAIHByb2MgY2hlY2tfZWZmZWN0aXZl X3RhcmdldF9mbWE0IHsgfSB7CiAgICAgfSAiLU8yIC1tZm1hNCIgXQogfQog CisjIFJldHVybiAxIGlmIGZtYSBpbnN0cnVjdGlvbnMgY2FuIGJlIGNvbXBp bGVkLgorcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X2ZtYSB7IH0gewor ICAgIHJldHVybiBbY2hlY2tfbm9fY29tcGlsZXJfbWVzc2FnZXMgZm1hIG9i amVjdCB7CisgICAgICAgIHR5cGVkZWYgZmxvYXQgX19tMTI4IF9fYXR0cmli dXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOworCXR5cGVkZWYgZmxv YXQgX192NHNmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2 KSkpOworCV9fbTEyOCBfbW1fbWFjY19wcyhfX20xMjggX19BLCBfX20xMjgg X19CLCBfX20xMjggX19DKQorCXsKKwkgICAgcmV0dXJuIChfX20xMjgpIF9f YnVpbHRpbl9pYTMyX3ZmbWFkZHBzICgoX192NHNmKV9fQSwKKwkJCQkJCSAg ICAgKF9fdjRzZilfX0IsCisJCQkJCQkgICAgIChfX3Y0c2YpX19DKTsKKwl9 CisgICAgfSAiLU8yIC1tZm1hIiBdCit9CisKICMgUmV0dXJuIDEgaWYgeG9w IGluc3RydWN0aW9ucyBjYW4gYmUgY29tcGlsZWQuCiBwcm9jIGNoZWNrX2Vm ZmVjdGl2ZV90YXJnZXRfeG9wIHsgfSB7CiAgICAgcmV0dXJuIFtjaGVja19u b19jb21waWxlcl9tZXNzYWdlcyB4b3Agb2JqZWN0IHsK --20cf303ddbc4f9a6b304ab3c5e9f--