From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 104239 invoked by alias); 29 Jan 2017 00:01:54 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 104225 invoked by uid 89); 29 Jan 2017 00:01:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=95, Three, Four, 20,16 X-HELO: mail-yw0-f181.google.com Received: from mail-yw0-f181.google.com (HELO mail-yw0-f181.google.com) (209.85.161.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Jan 2017 00:01:43 +0000 Received: by mail-yw0-f181.google.com with SMTP id w75so38075821ywg.1 for ; Sat, 28 Jan 2017 16:01:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=tiMyD58HCEoOmXAnojhSwUt5CaLpd5pTqLp7umoLHBA=; b=RiQ0xaoN/kdBL2GKL26N/IAabH7WVjKP5RKQf2o4Iiopm33jYrb1wJnX7W2ot2HQEU vQRAkRA2Oi3GEldR1jKFzBvqiezn5XOBNLRzEpJlHou6RVJDblYpp2t2ubMqmBpyOkkj abFHY7gKuFK3rdYiw92LYfI96zQHb/usLKzUA7X49aNPUHoIcy+ItrTOO0me9Wdsj/pK 2MpswUStgGq2O15QP6P0lAMHZwvxb3r8ROABcm+Xt8FpuIRVWYz8OH4fjv2byNpBmSpT WLAw1iaYbS28s9x6mmm28t7B2k6OvtYV9rtW2daTTo0cSQhWUSh1aL769gUYBMHJjajb SeWA== X-Gm-Message-State: AIkVDXIrYNSET8/xlkxAsHAfZrLBaOxC01iYoqo75JOl72JvPsnHMW6JvKWYkGO6pfuZfiWLzZYsn4D9267UCXpV X-Received: by 10.129.123.197 with SMTP id w188mr10182978ywc.267.1485648101350; Sat, 28 Jan 2017 16:01:41 -0800 (PST) MIME-Version: 1.0 Received: by 10.129.37.1 with HTTP; Sat, 28 Jan 2017 16:01:40 -0800 (PST) From: Jim Wilson Date: Sun, 29 Jan 2017 00:01:00 -0000 Message-ID: Subject: [PATCH] aarch64 sim load/store single struct implementation w/ ldnr bug fixes To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001a1149487857e96d054730675a X-SW-Source: 2017-01/txt/msg00638.txt.bz2 --001a1149487857e96d054730675a Content-Type: text/plain; charset=UTF-8 Content-length: 1923 This started as an attempt to implement one of the missing load single struct to one lane instructions, and by the time I figured out how get ti right, it turned out to be simpler to just add all of the missing ASIMD load and store instructions at the same time. So this is a larger patch than my previous ones. The bulk of the changes involve handling instruction bit 24 correctly in do_vec_load_store, by loading it into a variable called single, and changing code to use it, calling new functions for the ldn single and stn single instructions. This required re-indenting some code. The existing ldnr support is for instructions with this bit set, so had to be moved inside the new single support. Since I'm implementing all of the missing ASIMD load and store instructions here, I changed a number of HALT_NYI calls to HALT_UNALLOC. While doing this, I managed to find 4 bugs in the ldnr support. In do_vec_LDnR, there are loops using i, but only the loops in case 0 actually use i inside the loop. Cases 1 through 3 are broken. I fixed this by replacing the switch with a loop, which also allows me to remove a lot of duplicated code. As a result, I'm removing almost as many lines as I'm adding. In do_vec_load_store, there is a check that is using 0xE twice instead of 0xC and 0xE. This is fixed by using the new single var instead. In the post indexed addressing mode code, the 0xE case has 4 and 8 when it should be using 3 and 4 as these are register counts not data sizes. Also here, the multiply by 2 when full is set is wrong for ldnr, but this is fixed by moving it into the new single code. I added testcases for the ldn single and stn single instruction support that is new, and for the ldnr instruction support that is being fixed by this patch. The new testcases fail without the patch, and work with the patch. The GCC C testsuite unexpected failures drop from 2096 to 1701 (-395). Jim --001a1149487857e96d054730675a Content-Type: text/x-patch; charset=US-ASCII; name="aarch64-sim-ldn-single.patch" Content-Disposition: attachment; filename="aarch64-sim-ldn-single.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyhwh9o10 Content-length: 34953 CXNpbS9hYXJjaDY0LwoJKiBzaW11bGF0b3IuYzogKExEbl9TVG5fU0lOR0xF X0xBTkVfQU5EX1NJWkUpOiBOZXcuCgkoZG9fdmVjX0xEbl9zaW5nbGUsIGRv X3ZlY19TVG5fc2luZ2xlKTogTmV3LgoJKGRvX3ZlY19MRG5SKTogQWRkIGFu ZCBzZXQgbmV3IG5yZWdzIHZhci4gIFJlcGxhY2Ugc3dpdGNoIG9uIG5yZWdz IHdpdGgKCWxvb3Agb3ZlciBucmVncyB1c2luZyBuZXcgdmFyIG4uICBBZGQg biB0aW1lcyBzaXplIHRvIGFkZHJlc3MgaW4gbG9vcC4KCUFkZCBuIHRvIHZk IGluIGxvb3AuCgkoZG9fdmVjX2xvYWRfc3RvcmUpOiBBZGQgY29tbWVudCBm b3IgaW5zdHJ1Y3Rpb24gYml0IDI0LiAgTmV3IHZhcgoJc2luZ2xlIHRvIGhv bGQgaW5zdHJ1Y3Rpb24gYml0IDI0LiAgQWRkIG5ldyBjb2RlIHRvIHVzZSBz aW5nbGUuICBNb3ZlCglsZG5yIHN1cHBvcnQgaW5zaWRlIHNpbmdsZSBpZiBz dGF0ZW1lbnRzLiAgRml4IGxkbnIgcmVnaXN0ZXIgY291bnRzCglpbnNpZGUg cG9zdCBpZiBzdGF0ZW1lbnQuICBDaGFuZ2UgSEFMVF9OWUkgY2FsbHMgdG8g SEFMVF9VTkFMTE9DLgoKCXNpbS90ZXN0c3VpdGUvc2ltL2FhcmNoNjQvCgkq IGxkbl9zaW5nbGUuczogTmV3LgoJKiBsZG5yLnM6IE5ldy4KCSogc3RuX3Np bmdsZS5zOiBOZXcuCgogc2ltL2FhcmNoNjQvc2ltdWxhdG9yLmMgICAgICAg ICAgICAgICAgfCA1NzMgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tCiBzaW0vdGVzdHN1aXRlL3NpbS9hYXJjaDY0L2xkbl9zaW5nbGUucyB8 IDEwMCArKysrKysKIHNpbS90ZXN0c3VpdGUvc2ltL2FhcmNoNjQvbGRuci5z ICAgICAgIHwgMTc2ICsrKysrKysrKysKIHNpbS90ZXN0c3VpdGUvc2ltL2Fh cmNoNjQvc3RuX3NpbmdsZS5zIHwgMTIyICsrKysrKysKIDQgZmlsZXMgY2hh bmdlZCwgNjkxIGluc2VydGlvbnMoKyksIDI4MCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zaW0vYWFyY2g2NC9zaW11bGF0b3IuYyBiL3NpbS9hYXJj aDY0L3NpbXVsYXRvci5jCmluZGV4IGE0NGU3MGEuLjQwM2VkYjcgMTAwNjQ0 Ci0tLSBhL3NpbS9hYXJjaDY0L3NpbXVsYXRvci5jCisrKyBiL3NpbS9hYXJj aDY0L3NpbXVsYXRvci5jCkBAIC0xMTU2MCw2ICsxMTU2MCwxNzggQEAgU1Qx XzQgKHNpbV9jcHUgKmNwdSwgdWludDY0X3QgYWRkcmVzcykKICAgdmVjX3N0 b3JlIChjcHUsIGFkZHJlc3MsIDQpOwogfQogCisjZGVmaW5lIExEbl9TVG5f U0lOR0xFX0xBTkVfQU5EX1NJWkUoKQkJCQlcCisgIGRvCQkJCQkJCQlcCisg ICAgewkJCQkJCQkJXAorICAgICAgc3dpdGNoIChJTlNUUiAoMTUsIDE0KSkJ CQkJCVwKKwl7CQkJCQkJCVwKKwljYXNlIDA6CQkJCQkJCVwKKwkgIGxhbmUg PSAoZnVsbCA8PCAzKSB8IChzIDw8IDIpIHwgc2l6ZTsJCQlcCisJICBzaXpl ID0gMDsJCQkJCQlcCisJICBicmVhazsJCQkJCQlcCisJCQkJCQkJCVwKKwlj YXNlIDE6CQkJCQkJCVwKKwkgIGlmICgoc2l6ZSAmIDEpID09IDEpCQkJCQlc CisJICAgIEhBTFRfVU5BTExPQzsJCQkJCVwKKwkgIGxhbmUgPSAoZnVsbCA8 PCAyKSB8IChzIDw8IDEpIHwgKHNpemUgPj4gMSk7CQlcCisJICBzaXplID0g MTsJCQkJCQlcCisJICBicmVhazsJCQkJCQlcCisJCQkJCQkJCVwKKwljYXNl IDI6CQkJCQkJCVwKKwkgIGlmICgoc2l6ZSAmIDIpID09IDIpCQkJCQlcCisJ ICAgIEhBTFRfVU5BTExPQzsJCQkJCVwKKwkJCQkJCQkJXAorCSAgaWYgKChz aXplICYgMSkgPT0gMCkJCQkJCVwKKwkgICAgewkJCQkJCQlcCisJICAgICAg bGFuZSA9IChmdWxsIDw8IDEpIHwgczsJCQkJXAorCSAgICAgIHNpemUgPSAy OwkJCQkJCVwKKwkgICAgfQkJCQkJCQlcCisJICBlbHNlCQkJCQkJCVwKKwkg ICAgewkJCQkJCQlcCisJICAgICAgaWYgKHMpCQkJCQkJXAorCQlIQUxUX1VO QUxMT0M7CQkJCQlcCisJICAgICAgbGFuZSA9IGZ1bGw7CQkJCQlcCisJICAg ICAgc2l6ZSA9IDM7CQkJCQkJXAorCSAgICB9CQkJCQkJCVwKKwkgIGJyZWFr OwkJCQkJCVwKKwkJCQkJCQkJXAorCWRlZmF1bHQ6CQkJCQkJXAorCSAgSEFM VF9VTkFMTE9DOwkJCQkJCVwKKwl9CQkJCQkJCVwKKyAgICB9CQkJCQkJCQlc CisgIHdoaWxlICgwKQorCisvKiBMb2FkIHNpbmdsZSBzdHJ1Y3R1cmUgaW50 byBvbmUgbGFuZSBvZiBOIHJlZ2lzdGVycy4gICovCitzdGF0aWMgdm9pZAor ZG9fdmVjX0xEbl9zaW5nbGUgKHNpbV9jcHUgKmNwdSwgdWludDY0X3QgYWRk cmVzcykKK3sKKyAgLyogaW5zdHJbMzFdICAgID0gMAorICAgICBpbnN0clsz MF0gICAgPSBlbGVtZW50IHNlbGVjdG9yIDA9PmhhbGYsIDE9PmFsbCBlbGVt ZW50cworICAgICBpbnN0clsyOSwyNF0gPSAwMCAxMTAxCisgICAgIGluc3Ry WzIzXSAgICA9IDA9PnNpbXBsZSwgMT0+cG9zdAorICAgICBpbnN0clsyMl0g ICAgPSAxCisgICAgIGluc3RyWzIxXSAgICA9IHdpZHRoOiBMRDEtb3ItTEQz ICgwKSAvIExEMi1vci1MRDQgKDEpCisgICAgIGluc3RyWzIwLDE2XSA9IDAg MDAwMCAoc2ltcGxlKSwgVmluYyAocmVnLXBvc3QtaW5jLCBubyBTUCksCisg ICAgICAgICAgICAgICAgICAgICAgMTExMTEgKGltbWVkaWF0ZSBwb3N0IGlu YykKKyAgICAgaW5zdHJbMTUsMTNdID0gb3Bjb2RlCisgICAgIGluc3RyWzEy XSAgICA9IFMsIHVzZWQgZm9yIGxhbmUgbnVtYmVyCisgICAgIGluc3RyWzEx LDEwXSA9IHNpemUsIGFsc28gdXNlZCBmb3IgbGFuZSBudW1iZXIKKyAgICAg aW5zdHJbOSw1XSAgID0gYWRkcmVzcworICAgICBpbnN0cls0LDBdICAgPSBW ZCAgKi8KKworICB1bnNpZ25lZCBmdWxsID0gSU5TVFIgKDMwLCAzMCk7Cisg IHVuc2lnbmVkIHZkID0gSU5TVFIgKDQsIDApOworICB1bnNpZ25lZCBzaXpl ID0gSU5TVFIgKDExLCAxMCk7CisgIHVuc2lnbmVkIHMgPSBJTlNUUiAoMTIs IDEyKTsKKyAgaW50IG5yZWdzID0gKChJTlNUUiAoMTMsIDEzKSA8PCAxKSB8 IElOU1RSICgyMSwgMjEpKSArIDE7CisgIGludCBsYW5lID0gMDsKKyAgaW50 IGk7CisKKyAgTllJX2Fzc2VydCAoMjksIDI0LCAweDBEKTsKKyAgTllJX2Fz c2VydCAoMjIsIDIyLCAxKTsKKworICAvKiBDb21wdXRlIHRoZSBsYW5lIG51 bWJlciBmaXJzdCAodXNpbmcgc2l6ZSksIGFuZCB0aGVuIGNvbXB1dGUgc2l6 ZS4gICovCisgIExEbl9TVG5fU0lOR0xFX0xBTkVfQU5EX1NJWkUgKCk7CisK KyAgZm9yIChpID0gMDsgaSA8IG5yZWdzOyBpKyspCisgICAgc3dpdGNoIChz aXplKQorICAgICAgeworICAgICAgY2FzZSAwOgorCXsKKwkgIHVpbnQ4X3Qg dmFsID0gYWFyY2g2NF9nZXRfbWVtX3U4IChjcHUsIGFkZHJlc3MgKyBpKTsK KwkgIGFhcmNoNjRfc2V0X3ZlY191OCAoY3B1LCB2ZCArIGksIGxhbmUsIHZh bCk7CisJICBicmVhazsKKwl9CisKKyAgICAgIGNhc2UgMToKKwl7CisJICB1 aW50MTZfdCB2YWwgPSBhYXJjaDY0X2dldF9tZW1fdTE2IChjcHUsIGFkZHJl c3MgKyAoaSAqIDIpKTsKKwkgIGFhcmNoNjRfc2V0X3ZlY191MTYgKGNwdSwg dmQgKyBpLCBsYW5lLCB2YWwpOworCSAgYnJlYWs7CisJfQorCisgICAgICBj YXNlIDI6CisJeworCSAgdWludDMyX3QgdmFsID0gYWFyY2g2NF9nZXRfbWVt X3UzMiAoY3B1LCBhZGRyZXNzICsgKGkgKiA0KSk7CisJICBhYXJjaDY0X3Nl dF92ZWNfdTMyIChjcHUsIHZkICsgaSwgbGFuZSwgdmFsKTsKKwkgIGJyZWFr OworCX0KKworICAgICAgY2FzZSAzOgorCXsKKwkgIHVpbnQ2NF90IHZhbCA9 IGFhcmNoNjRfZ2V0X21lbV91NjQgKGNwdSwgYWRkcmVzcyArIChpICogOCkp OworCSAgYWFyY2g2NF9zZXRfdmVjX3U2NCAoY3B1LCB2ZCArIGksIGxhbmUs IHZhbCk7CisJICBicmVhazsKKwl9CisgICAgICB9Cit9CisKKy8qIFN0b3Jl IHNpbmdsZSBzdHJ1Y3R1cmUgZnJvbSBvbmUgbGFuZSBmcm9tIE4gcmVnaXN0 ZXJzLiAgKi8KK3N0YXRpYyB2b2lkCitkb192ZWNfU1RuX3NpbmdsZSAoc2lt X2NwdSAqY3B1LCB1aW50NjRfdCBhZGRyZXNzKQoreworICAvKiBpbnN0clsz MV0gICAgPSAwCisgICAgIGluc3RyWzMwXSAgICA9IGVsZW1lbnQgc2VsZWN0 b3IgMD0+aGFsZiwgMT0+YWxsIGVsZW1lbnRzCisgICAgIGluc3RyWzI5LDI0 XSA9IDAwIDExMDEKKyAgICAgaW5zdHJbMjNdICAgID0gMD0+c2ltcGxlLCAx PT5wb3N0CisgICAgIGluc3RyWzIyXSAgICA9IDAKKyAgICAgaW5zdHJbMjFd ICAgID0gd2lkdGg6IExEMS1vci1MRDMgKDApIC8gTEQyLW9yLUxENCAoMSkK KyAgICAgaW5zdHJbMjAsMTZdID0gMCAwMDAwIChzaW1wbGUpLCBWaW5jIChy ZWctcG9zdC1pbmMsIG5vIFNQKSwKKyAgICAgICAgICAgICAgICAgICAgICAx MTExMSAoaW1tZWRpYXRlIHBvc3QgaW5jKQorICAgICBpbnN0clsxNSwxM10g PSBvcGNvZGUKKyAgICAgaW5zdHJbMTJdICAgID0gUywgdXNlZCBmb3IgbGFu ZSBudW1iZXIKKyAgICAgaW5zdHJbMTEsMTBdID0gc2l6ZSwgYWxzbyB1c2Vk IGZvciBsYW5lIG51bWJlcgorICAgICBpbnN0cls5LDVdICAgPSBhZGRyZXNz CisgICAgIGluc3RyWzQsMF0gICA9IFZkICAqLworCisgIHVuc2lnbmVkIGZ1 bGwgPSBJTlNUUiAoMzAsIDMwKTsKKyAgdW5zaWduZWQgdmQgPSBJTlNUUiAo NCwgMCk7CisgIHVuc2lnbmVkIHNpemUgPSBJTlNUUiAoMTEsIDEwKTsKKyAg dW5zaWduZWQgcyA9IElOU1RSICgxMiwgMTIpOworICBpbnQgbnJlZ3MgPSAo KElOU1RSICgxMywgMTMpIDw8IDEpIHwgSU5TVFIgKDIxLCAyMSkpICsgMTsK KyAgaW50IGxhbmUgPSAwOworICBpbnQgaTsKKworICBOWUlfYXNzZXJ0ICgy OSwgMjQsIDB4MEQpOworICBOWUlfYXNzZXJ0ICgyMiwgMjIsIDApOworCisg IC8qIENvbXB1dGUgdGhlIGxhbmUgbnVtYmVyIGZpcnN0ICh1c2luZyBzaXpl KSwgYW5kIHRoZW4gY29tcHV0ZSBzaXplLiAgKi8KKyAgTERuX1NUbl9TSU5H TEVfTEFORV9BTkRfU0laRSAoKTsKKworICBmb3IgKGkgPSAwOyBpIDwgbnJl Z3M7IGkrKykKKyAgICBzd2l0Y2ggKHNpemUpCisgICAgICB7CisgICAgICBj YXNlIDA6CisJeworCSAgdWludDhfdCB2YWwgPSBhYXJjaDY0X2dldF92ZWNf dTggKGNwdSwgdmQgKyBpLCBsYW5lKTsKKwkgIGFhcmNoNjRfc2V0X21lbV91 OCAoY3B1LCBhZGRyZXNzICsgaSwgdmFsKTsKKwkgIGJyZWFrOworCX0KKwor ICAgICAgY2FzZSAxOgorCXsKKwkgIHVpbnQxNl90IHZhbCA9IGFhcmNoNjRf Z2V0X3ZlY191MTYgKGNwdSwgdmQgKyBpLCBsYW5lKTsKKwkgIGFhcmNoNjRf c2V0X21lbV91MTYgKGNwdSwgYWRkcmVzcyArIChpICogMiksIHZhbCk7CisJ ICBicmVhazsKKwl9CisKKyAgICAgIGNhc2UgMjoKKwl7CisJICB1aW50MzJf dCB2YWwgPSBhYXJjaDY0X2dldF92ZWNfdTMyIChjcHUsIHZkICsgaSwgbGFu ZSk7CisJICBhYXJjaDY0X3NldF9tZW1fdTMyIChjcHUsIGFkZHJlc3MgKyAo aSAqIDQpLCB2YWwpOworCSAgYnJlYWs7CisJfQorCisgICAgICBjYXNlIDM6 CisJeworCSAgdWludDY0X3QgdmFsID0gYWFyY2g2NF9nZXRfdmVjX3U2NCAo Y3B1LCB2ZCArIGksIGxhbmUpOworCSAgYWFyY2g2NF9zZXRfbWVtX3U2NCAo Y3B1LCBhZGRyZXNzICsgKGkgKiA4KSwgdmFsKTsKKwkgIGJyZWFrOworCX0K KyAgICAgIH0KK30KKworLyogTG9hZCBzaW5nbGUgc3RydWN0dXJlIGludG8g YWxsIGxhbmVzIG9mIE4gcmVnaXN0ZXJzLiAgKi8KIHN0YXRpYyB2b2lkCiBk b192ZWNfTERuUiAoc2ltX2NwdSAqY3B1LCB1aW50NjRfdCBhZGRyZXNzKQog ewpAQCAtMTE1ODIsMjYyICsxMTc1NCw1MiBAQCBkb192ZWNfTERuUiAoc2lt X2NwdSAqY3B1LCB1aW50NjRfdCBhZGRyZXNzKQogICB1bnNpZ25lZCBmdWxs ID0gSU5TVFIgKDMwLCAzMCk7CiAgIHVuc2lnbmVkIHZkID0gSU5TVFIgKDQs IDApOwogICB1bnNpZ25lZCBzaXplID0gSU5TVFIgKDExLCAxMCk7Ci0gIGlu dCBpOworICBpbnQgbnJlZ3MgPSAoKElOU1RSICgxMywgMTMpIDw8IDEpIHwg SU5TVFIgKDIxLCAyMSkpICsgMTsKKyAgaW50IGksIG47CiAKICAgTllJX2Fz c2VydCAoMjksIDI0LCAweDBEKTsKICAgTllJX2Fzc2VydCAoMjIsIDIyLCAx KTsKICAgTllJX2Fzc2VydCAoMTUsIDE0LCAzKTsKICAgTllJX2Fzc2VydCAo MTIsIDEyLCAwKTsKIAotICBzd2l0Y2ggKChJTlNUUiAoMTMsIDEzKSA8PCAx KSB8IElOU1RSICgyMSwgMjEpKQotICAgIHsKLSAgICBjYXNlIDA6IC8qIExE MVIuICAqLwotICAgICAgc3dpdGNoIChzaXplKQorICBmb3IgKG4gPSAwOyBu IDwgbnJlZ3M7IG4rKykKKyAgICBzd2l0Y2ggKHNpemUpCisgICAgICB7Cisg ICAgICBjYXNlIDA6CiAJewotCWNhc2UgMDoKLQkgIHsKLQkgICAgdWludDhf dCB2YWwgPSBhYXJjaDY0X2dldF9tZW1fdTggKGNwdSwgYWRkcmVzcyk7Ci0J ICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/IDE2IDogOCk7IGkrKykKLQkg ICAgICBhYXJjaDY0X3NldF92ZWNfdTggKGNwdSwgdmQsIGksIHZhbCk7Ci0J ICAgIGJyZWFrOwotCSAgfQotCi0JY2FzZSAxOgotCSAgewotCSAgICB1aW50 MTZfdCB2YWwgPSBhYXJjaDY0X2dldF9tZW1fdTE2IChjcHUsIGFkZHJlc3Mp OwotCSAgICBmb3IgKGkgPSAwOyBpIDwgKGZ1bGwgPyA4IDogNCk7IGkrKykK LQkgICAgICBhYXJjaDY0X3NldF92ZWNfdTE2IChjcHUsIHZkLCBpLCB2YWwp OwotCSAgICBicmVhazsKLQkgIH0KLQotCWNhc2UgMjoKLQkgIHsKLQkgICAg dWludDMyX3QgdmFsID0gYWFyY2g2NF9nZXRfbWVtX3UzMiAoY3B1LCBhZGRy ZXNzKTsKLQkgICAgZm9yIChpID0gMDsgaSA8IChmdWxsID8gNCA6IDIpOyBp KyspCi0JICAgICAgYWFyY2g2NF9zZXRfdmVjX3UzMiAoY3B1LCB2ZCwgaSwg dmFsKTsKLQkgICAgYnJlYWs7Ci0JICB9Ci0KLQljYXNlIDM6Ci0JICB7Ci0J ICAgIHVpbnQ2NF90IHZhbCA9IGFhcmNoNjRfZ2V0X21lbV91NjQgKGNwdSwg YWRkcmVzcyk7Ci0JICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/IDIgOiAx KTsgaSsrKQotCSAgICAgIGFhcmNoNjRfc2V0X3ZlY191NjQgKGNwdSwgdmQs IGksIHZhbCk7Ci0JICAgIGJyZWFrOwotCSAgfQotCi0JZGVmYXVsdDoKLQkg IEhBTFRfVU5BTExPQzsKKwkgIHVpbnQ4X3QgdmFsID0gYWFyY2g2NF9nZXRf bWVtX3U4IChjcHUsIGFkZHJlc3MgKyBuKTsKKwkgIGZvciAoaSA9IDA7IGkg PCAoZnVsbCA/IDE2IDogOCk7IGkrKykKKwkgICAgYWFyY2g2NF9zZXRfdmVj X3U4IChjcHUsIHZkICsgbiwgaSwgdmFsKTsKKwkgIGJyZWFrOwogCX0KLSAg ICAgIGJyZWFrOwogCi0gICAgY2FzZSAxOiAvKiBMRDJSLiAgKi8KLSAgICAg IHN3aXRjaCAoc2l6ZSkKKyAgICAgIGNhc2UgMToKIAl7Ci0JY2FzZSAwOgot CSAgewotCSAgICB1aW50OF90IHZhbDEgPSBhYXJjaDY0X2dldF9tZW1fdTgg KGNwdSwgYWRkcmVzcyk7Ci0JICAgIHVpbnQ4X3QgdmFsMiA9IGFhcmNoNjRf Z2V0X21lbV91OCAoY3B1LCBhZGRyZXNzICsgMSk7Ci0KLQkgICAgZm9yIChp ID0gMDsgaSA8IChmdWxsID8gMTYgOiA4KTsgaSsrKQotCSAgICAgIHsKLQkJ YWFyY2g2NF9zZXRfdmVjX3U4IChjcHUsIHZkLCAwLCB2YWwxKTsKLQkJYWFy Y2g2NF9zZXRfdmVjX3U4IChjcHUsIHZkICsgMSwgMCwgdmFsMik7Ci0JICAg ICAgfQotCSAgICBicmVhazsKLQkgIH0KLQotCWNhc2UgMToKLQkgIHsKLQkg ICAgdWludDE2X3QgdmFsMSA9IGFhcmNoNjRfZ2V0X21lbV91MTYgKGNwdSwg YWRkcmVzcyk7Ci0JICAgIHVpbnQxNl90IHZhbDIgPSBhYXJjaDY0X2dldF9t ZW1fdTE2IChjcHUsIGFkZHJlc3MgKyAyKTsKLQotCSAgICBmb3IgKGkgPSAw OyBpIDwgKGZ1bGwgPyA4IDogNCk7IGkrKykKLQkgICAgICB7Ci0JCWFhcmNo NjRfc2V0X3ZlY191MTYgKGNwdSwgdmQsIDAsIHZhbDEpOwotCQlhYXJjaDY0 X3NldF92ZWNfdTE2IChjcHUsIHZkICsgMSwgMCwgdmFsMik7Ci0JICAgICAg fQotCSAgICBicmVhazsKLQkgIH0KLQotCWNhc2UgMjoKLQkgIHsKLQkgICAg dWludDMyX3QgdmFsMSA9IGFhcmNoNjRfZ2V0X21lbV91MzIgKGNwdSwgYWRk cmVzcyk7Ci0JICAgIHVpbnQzMl90IHZhbDIgPSBhYXJjaDY0X2dldF9tZW1f dTMyIChjcHUsIGFkZHJlc3MgKyA0KTsKLQotCSAgICBmb3IgKGkgPSAwOyBp IDwgKGZ1bGwgPyA0IDogMik7IGkrKykKLQkgICAgICB7Ci0JCWFhcmNoNjRf c2V0X3ZlY191MzIgKGNwdSwgdmQsIDAsIHZhbDEpOwotCQlhYXJjaDY0X3Nl dF92ZWNfdTMyIChjcHUsIHZkICsgMSwgMCwgdmFsMik7Ci0JICAgICAgfQot CSAgICBicmVhazsKLQkgIH0KLQotCWNhc2UgMzoKLQkgIHsKLQkgICAgdWlu dDY0X3QgdmFsMSA9IGFhcmNoNjRfZ2V0X21lbV91NjQgKGNwdSwgYWRkcmVz cyk7Ci0JICAgIHVpbnQ2NF90IHZhbDIgPSBhYXJjaDY0X2dldF9tZW1fdTY0 IChjcHUsIGFkZHJlc3MgKyA4KTsKLQotCSAgICBmb3IgKGkgPSAwOyBpIDwg KGZ1bGwgPyAyIDogMSk7IGkrKykKLQkgICAgICB7Ci0JCWFhcmNoNjRfc2V0 X3ZlY191NjQgKGNwdSwgdmQsIDAsIHZhbDEpOwotCQlhYXJjaDY0X3NldF92 ZWNfdTY0IChjcHUsIHZkICsgMSwgMCwgdmFsMik7Ci0JICAgICAgfQotCSAg ICBicmVhazsKLQkgIH0KLQotCWRlZmF1bHQ6Ci0JICBIQUxUX1VOQUxMT0M7 CisJICB1aW50MTZfdCB2YWwgPSBhYXJjaDY0X2dldF9tZW1fdTE2IChjcHUs IGFkZHJlc3MgKyAobiAqIDIpKTsKKwkgIGZvciAoaSA9IDA7IGkgPCAoZnVs bCA/IDggOiA0KTsgaSsrKQorCSAgICBhYXJjaDY0X3NldF92ZWNfdTE2IChj cHUsIHZkICsgbiwgaSwgdmFsKTsKKwkgIGJyZWFrOwogCX0KLSAgICAgIGJy ZWFrOwogCi0gICAgY2FzZSAyOiAvKiBMRDNSLiAgKi8KLSAgICAgIHN3aXRj aCAoc2l6ZSkKKyAgICAgIGNhc2UgMjoKIAl7Ci0JY2FzZSAwOgotCSAgewot CSAgICB1aW50OF90IHZhbDEgPSBhYXJjaDY0X2dldF9tZW1fdTggKGNwdSwg YWRkcmVzcyk7Ci0JICAgIHVpbnQ4X3QgdmFsMiA9IGFhcmNoNjRfZ2V0X21l bV91OCAoY3B1LCBhZGRyZXNzICsgMSk7Ci0JICAgIHVpbnQ4X3QgdmFsMyA9 IGFhcmNoNjRfZ2V0X21lbV91OCAoY3B1LCBhZGRyZXNzICsgMik7Ci0KLQkg ICAgZm9yIChpID0gMDsgaSA8IChmdWxsID8gMTYgOiA4KTsgaSsrKQotCSAg ICAgIHsKLQkJYWFyY2g2NF9zZXRfdmVjX3U4IChjcHUsIHZkLCAwLCB2YWwx KTsKLQkJYWFyY2g2NF9zZXRfdmVjX3U4IChjcHUsIHZkICsgMSwgMCwgdmFs Mik7Ci0JCWFhcmNoNjRfc2V0X3ZlY191OCAoY3B1LCB2ZCArIDIsIDAsIHZh bDMpOwotCSAgICAgIH0KLQkgIH0KLQkgIGJyZWFrOwotCi0JY2FzZSAxOgot CSAgewotCSAgICB1aW50MzJfdCB2YWwxID0gYWFyY2g2NF9nZXRfbWVtX3Ux NiAoY3B1LCBhZGRyZXNzKTsKLQkgICAgdWludDMyX3QgdmFsMiA9IGFhcmNo NjRfZ2V0X21lbV91MTYgKGNwdSwgYWRkcmVzcyArIDIpOwotCSAgICB1aW50 MzJfdCB2YWwzID0gYWFyY2g2NF9nZXRfbWVtX3UxNiAoY3B1LCBhZGRyZXNz ICsgNCk7Ci0KLQkgICAgZm9yIChpID0gMDsgaSA8IChmdWxsID8gOCA6IDQp OyBpKyspCi0JICAgICAgewotCQlhYXJjaDY0X3NldF92ZWNfdTE2IChjcHUs IHZkLCAwLCB2YWwxKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3UxNiAoY3B1LCB2 ZCArIDEsIDAsIHZhbDIpOwotCQlhYXJjaDY0X3NldF92ZWNfdTE2IChjcHUs IHZkICsgMiwgMCwgdmFsMyk7Ci0JICAgICAgfQotCSAgfQorCSAgdWludDMy X3QgdmFsID0gYWFyY2g2NF9nZXRfbWVtX3UzMiAoY3B1LCBhZGRyZXNzICsg KG4gKiA0KSk7CisJICBmb3IgKGkgPSAwOyBpIDwgKGZ1bGwgPyA0IDogMik7 IGkrKykKKwkgICAgYWFyY2g2NF9zZXRfdmVjX3UzMiAoY3B1LCB2ZCArIG4s IGksIHZhbCk7CiAJICBicmVhazsKLQotCWNhc2UgMjoKLQkgIHsKLQkgICAg dWludDMyX3QgdmFsMSA9IGFhcmNoNjRfZ2V0X21lbV91MzIgKGNwdSwgYWRk cmVzcyk7Ci0JICAgIHVpbnQzMl90IHZhbDIgPSBhYXJjaDY0X2dldF9tZW1f dTMyIChjcHUsIGFkZHJlc3MgKyA0KTsKLQkgICAgdWludDMyX3QgdmFsMyA9 IGFhcmNoNjRfZ2V0X21lbV91MzIgKGNwdSwgYWRkcmVzcyArIDgpOwotCi0J ICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/IDQgOiAyKTsgaSsrKQotCSAg ICAgIHsKLQkJYWFyY2g2NF9zZXRfdmVjX3UzMiAoY3B1LCB2ZCwgMCwgdmFs MSk7Ci0JCWFhcmNoNjRfc2V0X3ZlY191MzIgKGNwdSwgdmQgKyAxLCAwLCB2 YWwyKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3UzMiAoY3B1LCB2ZCArIDIsIDAs IHZhbDMpOwotCSAgICAgIH0KLQkgIH0KLQkgIGJyZWFrOwotCi0JY2FzZSAz OgotCSAgewotCSAgICB1aW50NjRfdCB2YWwxID0gYWFyY2g2NF9nZXRfbWVt X3U2NCAoY3B1LCBhZGRyZXNzKTsKLQkgICAgdWludDY0X3QgdmFsMiA9IGFh cmNoNjRfZ2V0X21lbV91NjQgKGNwdSwgYWRkcmVzcyArIDgpOwotCSAgICB1 aW50NjRfdCB2YWwzID0gYWFyY2g2NF9nZXRfbWVtX3U2NCAoY3B1LCBhZGRy ZXNzICsgMTYpOwotCi0JICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/IDIg OiAxKTsgaSsrKQotCSAgICAgIHsKLQkJYWFyY2g2NF9zZXRfdmVjX3U2NCAo Y3B1LCB2ZCwgMCwgdmFsMSk7Ci0JCWFhcmNoNjRfc2V0X3ZlY191NjQgKGNw dSwgdmQgKyAxLCAwLCB2YWwyKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3U2NCAo Y3B1LCB2ZCArIDIsIDAsIHZhbDMpOwotCSAgICAgIH0KLQkgIH0KLQkgIGJy ZWFrOwotCi0JZGVmYXVsdDoKLQkgIEhBTFRfVU5BTExPQzsKIAl9Ci0gICAg ICBicmVhazsKIAotICAgIGNhc2UgMzogLyogTEQ0Ui4gICovCi0gICAgICBz d2l0Y2ggKHNpemUpCisgICAgICBjYXNlIDM6CiAJewotCWNhc2UgMDoKLQkg IHsKLQkgICAgdWludDhfdCB2YWwxID0gYWFyY2g2NF9nZXRfbWVtX3U4IChj cHUsIGFkZHJlc3MpOwotCSAgICB1aW50OF90IHZhbDIgPSBhYXJjaDY0X2dl dF9tZW1fdTggKGNwdSwgYWRkcmVzcyArIDEpOwotCSAgICB1aW50OF90IHZh bDMgPSBhYXJjaDY0X2dldF9tZW1fdTggKGNwdSwgYWRkcmVzcyArIDIpOwot CSAgICB1aW50OF90IHZhbDQgPSBhYXJjaDY0X2dldF9tZW1fdTggKGNwdSwg YWRkcmVzcyArIDMpOwotCi0JICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/ IDE2IDogOCk7IGkrKykKLQkgICAgICB7Ci0JCWFhcmNoNjRfc2V0X3ZlY191 OCAoY3B1LCB2ZCwgMCwgdmFsMSk7Ci0JCWFhcmNoNjRfc2V0X3ZlY191OCAo Y3B1LCB2ZCArIDEsIDAsIHZhbDIpOwotCQlhYXJjaDY0X3NldF92ZWNfdTgg KGNwdSwgdmQgKyAyLCAwLCB2YWwzKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3U4 IChjcHUsIHZkICsgMywgMCwgdmFsNCk7Ci0JICAgICAgfQotCSAgfQotCSAg YnJlYWs7Ci0KLQljYXNlIDE6Ci0JICB7Ci0JICAgIHVpbnQzMl90IHZhbDEg PSBhYXJjaDY0X2dldF9tZW1fdTE2IChjcHUsIGFkZHJlc3MpOwotCSAgICB1 aW50MzJfdCB2YWwyID0gYWFyY2g2NF9nZXRfbWVtX3UxNiAoY3B1LCBhZGRy ZXNzICsgMik7Ci0JICAgIHVpbnQzMl90IHZhbDMgPSBhYXJjaDY0X2dldF9t ZW1fdTE2IChjcHUsIGFkZHJlc3MgKyA0KTsKLQkgICAgdWludDMyX3QgdmFs NCA9IGFhcmNoNjRfZ2V0X21lbV91MTYgKGNwdSwgYWRkcmVzcyArIDYpOwot Ci0JICAgIGZvciAoaSA9IDA7IGkgPCAoZnVsbCA/IDggOiA0KTsgaSsrKQot CSAgICAgIHsKLQkJYWFyY2g2NF9zZXRfdmVjX3UxNiAoY3B1LCB2ZCwgMCwg dmFsMSk7Ci0JCWFhcmNoNjRfc2V0X3ZlY191MTYgKGNwdSwgdmQgKyAxLCAw LCB2YWwyKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3UxNiAoY3B1LCB2ZCArIDIs IDAsIHZhbDMpOwotCQlhYXJjaDY0X3NldF92ZWNfdTE2IChjcHUsIHZkICsg MywgMCwgdmFsNCk7Ci0JICAgICAgfQotCSAgfQotCSAgYnJlYWs7Ci0KLQlj YXNlIDI6Ci0JICB7Ci0JICAgIHVpbnQzMl90IHZhbDEgPSBhYXJjaDY0X2dl dF9tZW1fdTMyIChjcHUsIGFkZHJlc3MpOwotCSAgICB1aW50MzJfdCB2YWwy ID0gYWFyY2g2NF9nZXRfbWVtX3UzMiAoY3B1LCBhZGRyZXNzICsgNCk7Ci0J ICAgIHVpbnQzMl90IHZhbDMgPSBhYXJjaDY0X2dldF9tZW1fdTMyIChjcHUs IGFkZHJlc3MgKyA4KTsKLQkgICAgdWludDMyX3QgdmFsNCA9IGFhcmNoNjRf Z2V0X21lbV91MzIgKGNwdSwgYWRkcmVzcyArIDEyKTsKLQotCSAgICBmb3Ig KGkgPSAwOyBpIDwgKGZ1bGwgPyA0IDogMik7IGkrKykKLQkgICAgICB7Ci0J CWFhcmNoNjRfc2V0X3ZlY191MzIgKGNwdSwgdmQsIDAsIHZhbDEpOwotCQlh YXJjaDY0X3NldF92ZWNfdTMyIChjcHUsIHZkICsgMSwgMCwgdmFsMik7Ci0J CWFhcmNoNjRfc2V0X3ZlY191MzIgKGNwdSwgdmQgKyAyLCAwLCB2YWwzKTsK LQkJYWFyY2g2NF9zZXRfdmVjX3UzMiAoY3B1LCB2ZCArIDMsIDAsIHZhbDQp OwotCSAgICAgIH0KLQkgIH0KKwkgIHVpbnQ2NF90IHZhbCA9IGFhcmNoNjRf Z2V0X21lbV91NjQgKGNwdSwgYWRkcmVzcyArIChuICogOCkpOworCSAgZm9y IChpID0gMDsgaSA8IChmdWxsID8gMiA6IDEpOyBpKyspCisJICAgIGFhcmNo NjRfc2V0X3ZlY191NjQgKGNwdSwgdmQgKyBuLCBpLCB2YWwpOwogCSAgYnJl YWs7Ci0KLQljYXNlIDM6Ci0JICB7Ci0JICAgIHVpbnQ2NF90IHZhbDEgPSBh YXJjaDY0X2dldF9tZW1fdTY0IChjcHUsIGFkZHJlc3MpOwotCSAgICB1aW50 NjRfdCB2YWwyID0gYWFyY2g2NF9nZXRfbWVtX3U2NCAoY3B1LCBhZGRyZXNz ICsgOCk7Ci0JICAgIHVpbnQ2NF90IHZhbDMgPSBhYXJjaDY0X2dldF9tZW1f dTY0IChjcHUsIGFkZHJlc3MgKyAxNik7Ci0JICAgIHVpbnQ2NF90IHZhbDQg PSBhYXJjaDY0X2dldF9tZW1fdTY0IChjcHUsIGFkZHJlc3MgKyAyNCk7Ci0K LQkgICAgZm9yIChpID0gMDsgaSA8IChmdWxsID8gMiA6IDEpOyBpKyspCi0J ICAgICAgewotCQlhYXJjaDY0X3NldF92ZWNfdTY0IChjcHUsIHZkLCAwLCB2 YWwxKTsKLQkJYWFyY2g2NF9zZXRfdmVjX3U2NCAoY3B1LCB2ZCArIDEsIDAs IHZhbDIpOwotCQlhYXJjaDY0X3NldF92ZWNfdTY0IChjcHUsIHZkICsgMiwg MCwgdmFsMyk7Ci0JCWFhcmNoNjRfc2V0X3ZlY191NjQgKGNwdSwgdmQgKyAz LCAwLCB2YWw0KTsKLQkgICAgICB9Ci0JICB9Ci0JICBicmVhazsKLQotCWRl ZmF1bHQ6Ci0JICBIQUxUX1VOQUxMT0M7CiAJfQotICAgICAgYnJlYWs7CiAK LSAgICBkZWZhdWx0OgotICAgICAgSEFMVF9VTkFMTE9DOwotICAgIH0KKyAg ICAgIGRlZmF1bHQ6CisJSEFMVF9VTkFMTE9DOworICAgICAgfQogfQogCiBz dGF0aWMgdm9pZApAQCAtMTE4NDgsNyArMTE4MTAsNyBAQCBkb192ZWNfbG9h ZF9zdG9yZSAoc2ltX2NwdSAqY3B1KQogICAgICBpbnN0clszMV0gICAgPSAw CiAgICAgIGluc3RyWzMwXSAgICA9IGVsZW1lbnQgc2VsZWN0b3IgMD0+aGFs ZiwgMT0+YWxsIGVsZW1lbnRzCiAgICAgIGluc3RyWzI5LDI1XSA9IDAwMTEw Ci0gICAgIGluc3RyWzI0XSAgICA9ID8KKyAgICAgaW5zdHJbMjRdICAgID0g MD0+bXVsdGlwbGUgc3RydWN0LCAxPT5zaW5nbGUgc3RydWN0CiAgICAgIGlu c3RyWzIzXSAgICA9IDA9PnNpbXBsZSwgMT0+cG9zdAogICAgICBpbnN0clsy Ml0gICAgPSAwPT5zdG9yZSwgMT0+bG9hZAogICAgICBpbnN0clsyMV0gICAg PSAwIChMRG4pIC8gc21hbGwoMCktbGFyZ2UoMSkgc2VsZWN0b3IgKExEblIp CkBAIC0xMTg3Niw2ICsxMTgzOCw3IEBAIGRvX3ZlY19sb2FkX3N0b3JlIChz aW1fY3B1ICpjcHUpCiAgICAgIGluc3RyWzksNV0gICA9IFZuLCBjYW4gYmUg U1AKICAgICAgaW5zdHJbNCwwXSAgID0gVmQgICovCiAKKyAgaW50IHNpbmds ZTsKICAgaW50IHBvc3Q7CiAgIGludCBsb2FkOwogICB1bnNpZ25lZCB2bjsK QEAgLTExODg1LDE1ICsxMTg0OCwxNiBAQCBkb192ZWNfbG9hZF9zdG9yZSAo c2ltX2NwdSAqY3B1KQogICBpZiAoSU5TVFIgKDMxLCAzMSkgIT0gMCB8fCBJ TlNUUiAoMjksIDI1KSAhPSAweDA2KQogICAgIEhBTFRfTllJOwogCi0gIHR5 cGUgPSBJTlNUUiAoMTUsIDEyKTsKLSAgaWYgKHR5cGUgIT0gMHhFICYmIHR5 cGUgIT0gMHhFICYmIElOU1RSICgyMSwgMjEpICE9IDApCi0gICAgSEFMVF9O WUk7Ci0KKyAgc2luZ2xlID0gSU5TVFIgKDI0LCAyNCk7CiAgIHBvc3QgPSBJ TlNUUiAoMjMsIDIzKTsKICAgbG9hZCA9IElOU1RSICgyMiwgMjIpOworICB0 eXBlID0gSU5TVFIgKDE1LCAxMik7CiAgIHZuID0gSU5TVFIgKDksIDUpOwog ICBhZGRyZXNzID0gYWFyY2g2NF9nZXRfcmVnX3U2NCAoY3B1LCB2biwgU1Bf T0spOwogCisgIGlmICghIHNpbmdsZSAmJiBJTlNUUiAoMjEsIDIxKSAhPSAw KQorICAgIEhBTFRfVU5BTExPQzsKKwogICBpZiAocG9zdCkKICAgICB7CiAg ICAgICB1bnNpZ25lZCB2bSA9IElOU1RSICgyMCwgMTYpOwpAQCAtMTE5MDIs NDkgKzExODY2LDc4IEBAIGRvX3ZlY19sb2FkX3N0b3JlIChzaW1fY3B1ICpj cHUpCiAJewogCSAgdW5zaWduZWQgc2l6ZW9mX29wZXJhdGlvbjsKIAotCSAg c3dpdGNoICh0eXBlKQorCSAgaWYgKHNpbmdsZSkKIAkgICAgewotCSAgICBj YXNlIDA6IHNpemVvZl9vcGVyYXRpb24gPSAzMjsgYnJlYWs7Ci0JICAgIGNh c2UgNDogc2l6ZW9mX29wZXJhdGlvbiA9IDI0OyBicmVhazsKLQkgICAgY2Fz ZSA4OiBzaXplb2Zfb3BlcmF0aW9uID0gMTY7IGJyZWFrOwotCi0JICAgIGNh c2UgMHhDOgotCSAgICAgIHNpemVvZl9vcGVyYXRpb24gPSBJTlNUUiAoMjEs IDIxKSA/IDIgOiAxOwotCSAgICAgIHNpemVvZl9vcGVyYXRpb24gPDw9IElO U1RSICgxMSwgMTApOwotCSAgICAgIGJyZWFrOworCSAgICAgIGlmICgodHlw ZSA+PSAwKSAmJiAodHlwZSA8PSAxMSkpCisJCXsKKwkJICBpbnQgbnJlZ3Mg PSAoKElOU1RSICgxMywgMTMpIDw8IDEpIHwgSU5TVFIgKDIxLCAyMSkpICsg MTsKKwkJICBzd2l0Y2ggKElOU1RSICgxNSwgMTQpKQorCQkgICAgeworCQkg ICAgY2FzZSAwOgorCQkgICAgICBzaXplb2Zfb3BlcmF0aW9uID0gbnJlZ3Mg KiAxOworCQkgICAgICBicmVhazsKKwkJICAgIGNhc2UgMToKKwkJICAgICAg c2l6ZW9mX29wZXJhdGlvbiA9IG5yZWdzICogMjsKKwkJICAgICAgYnJlYWs7 CisJCSAgICBjYXNlIDI6CisJCSAgICAgIGlmIChJTlNUUiAoMTAsIDEwKSA9 PSAwKQorCQkJc2l6ZW9mX29wZXJhdGlvbiA9IG5yZWdzICogNDsKKwkJICAg ICAgZWxzZQorCQkJc2l6ZW9mX29wZXJhdGlvbiA9IG5yZWdzICogODsKKwkJ ICAgICAgYnJlYWs7CisJCSAgICBkZWZhdWx0OgorCQkgICAgICBIQUxUX1VO QUxMT0M7CisJCSAgICB9CisJCX0KKwkgICAgICBlbHNlIGlmICh0eXBlID09 IDB4QykKKwkJeworCQkgIHNpemVvZl9vcGVyYXRpb24gPSBJTlNUUiAoMjEs IDIxKSA/IDIgOiAxOworCQkgIHNpemVvZl9vcGVyYXRpb24gPDw9IElOU1RS ICgxMSwgMTApOworCQl9CisJICAgICAgZWxzZSBpZiAodHlwZSA9PSAweEUp CisJCXsKKwkJICBzaXplb2Zfb3BlcmF0aW9uID0gSU5TVFIgKDIxLCAyMSkg PyA0IDogMzsKKwkJICBzaXplb2Zfb3BlcmF0aW9uIDw8PSBJTlNUUiAoMTEs IDEwKTsKKwkJfQorCSAgICAgIGVsc2UKKwkJSEFMVF9VTkFMTE9DOworCSAg ICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKHR5cGUpCisJ CXsKKwkJY2FzZSAwOiBzaXplb2Zfb3BlcmF0aW9uID0gMzI7IGJyZWFrOwor CQljYXNlIDQ6IHNpemVvZl9vcGVyYXRpb24gPSAyNDsgYnJlYWs7CisJCWNh c2UgODogc2l6ZW9mX29wZXJhdGlvbiA9IDE2OyBicmVhazsKIAotCSAgICBj YXNlIDB4RToKLQkgICAgICBzaXplb2Zfb3BlcmF0aW9uID0gSU5TVFIgKDIx LCAyMSkgPyA4IDogNDsKLQkgICAgICBzaXplb2Zfb3BlcmF0aW9uIDw8PSBJ TlNUUiAoMTEsIDEwKTsKLQkgICAgICBicmVhazsKKwkJY2FzZSA3OgorCQkg IC8qIE9uZSByZWdpc3RlciwgaW1tZWRpYXRlIG9mZnNldCB2YXJpYW50LiAg Ki8KKwkJICBzaXplb2Zfb3BlcmF0aW9uID0gODsKKwkJICBicmVhazsKIAot CSAgICBjYXNlIDc6Ci0JICAgICAgLyogT25lIHJlZ2lzdGVyLCBpbW1lZGlh dGUgb2Zmc2V0IHZhcmlhbnQuICAqLwotCSAgICAgIHNpemVvZl9vcGVyYXRp b24gPSA4OwotCSAgICAgIGJyZWFrOworCQljYXNlIDEwOgorCQkgIC8qIFR3 byByZWdpc3RlcnMsIGltbWVkaWF0ZSBvZmZzZXQgdmFyaWFudC4gICovCisJ CSAgc2l6ZW9mX29wZXJhdGlvbiA9IDE2OworCQkgIGJyZWFrOwogCi0JICAg IGNhc2UgMTA6Ci0JICAgICAgLyogVHdvIHJlZ2lzdGVycywgaW1tZWRpYXRl IG9mZnNldCB2YXJpYW50LiAgKi8KLQkgICAgICBzaXplb2Zfb3BlcmF0aW9u ID0gMTY7Ci0JICAgICAgYnJlYWs7CisJCWNhc2UgNjoKKwkJICAvKiBUaHJl ZSByZWdpc3RlcnMsIGltbWVkaWF0ZSBvZmZzZXQgdmFyaWFudC4gICovCisJ CSAgc2l6ZW9mX29wZXJhdGlvbiA9IDI0OworCQkgIGJyZWFrOwogCi0JICAg IGNhc2UgNjoKLQkgICAgICAvKiBUaHJlZSByZWdpc3RlcnMsIGltbWVkaWF0 ZSBvZmZzZXQgdmFyaWFudC4gICovCi0JICAgICAgc2l6ZW9mX29wZXJhdGlv biA9IDI0OwotCSAgICAgIGJyZWFrOworCQljYXNlIDI6CisJCSAgLyogRm91 ciByZWdpc3RlcnMsIGltbWVkaWF0ZSBvZmZzZXQgdmFyaWFudC4gICovCisJ CSAgc2l6ZW9mX29wZXJhdGlvbiA9IDMyOworCQkgIGJyZWFrOwogCi0JICAg IGNhc2UgMjoKLQkgICAgICAvKiBGb3VyIHJlZ2lzdGVycywgaW1tZWRpYXRl IG9mZnNldCB2YXJpYW50LiAgKi8KLQkgICAgICBzaXplb2Zfb3BlcmF0aW9u ID0gMzI7Ci0JICAgICAgYnJlYWs7CisJCWRlZmF1bHQ6CisJCSAgSEFMVF9V TkFMTE9DOworCQl9CiAKLQkgICAgZGVmYXVsdDoKLQkgICAgICBIQUxUX1VO QUxMT0M7CisJICAgICAgaWYgKElOU1RSICgzMCwgMzApKQorCQlzaXplb2Zf b3BlcmF0aW9uICo9IDI7CiAJICAgIH0KIAotCSAgaWYgKElOU1RSICgzMCwg MzApKQotCSAgICBzaXplb2Zfb3BlcmF0aW9uICo9IDI7Ci0KIAkgIGFhcmNo NjRfc2V0X3JlZ191NjQgKGNwdSwgdm4sIFNQX09LLCBhZGRyZXNzICsgc2l6 ZW9mX29wZXJhdGlvbik7CiAJfQogICAgICAgZWxzZQpAQCAtMTE5NTYsNiAr MTE5NDksMjkgQEAgZG9fdmVjX2xvYWRfc3RvcmUgKHNpbV9jcHUgKmNwdSkK ICAgICAgIE5ZSV9hc3NlcnQgKDIwLCAxNiwgMCk7CiAgICAgfQogCisgIGlm IChzaW5nbGUpCisgICAgeworICAgICAgaWYgKGxvYWQpCisJeworCSAgaWYg KCh0eXBlID49IDApICYmICh0eXBlIDw9IDExKSkKKwkgICAgZG9fdmVjX0xE bl9zaW5nbGUgKGNwdSwgYWRkcmVzcyk7CisJICBlbHNlIGlmICgodHlwZSA9 PSAweEMpIHx8ICh0eXBlID09IDB4RSkpCisJICAgIGRvX3ZlY19MRG5SIChj cHUsIGFkZHJlc3MpOworCSAgZWxzZQorCSAgICBIQUxUX1VOQUxMT0M7CisJ ICByZXR1cm47CisJfQorCisgICAgICAvKiBTdG9yZXMuICAqLworICAgICAg aWYgKCh0eXBlID49IDApICYmICh0eXBlIDw9IDExKSkKKwl7CisJICBkb192 ZWNfU1RuX3NpbmdsZSAoY3B1LCBhZGRyZXNzKTsKKwkgIHJldHVybjsKKwl9 CisKKyAgICAgIEhBTFRfVU5BTExPQzsKKyAgICB9CisKICAgaWYgKGxvYWQp CiAgICAgewogICAgICAgc3dpdGNoICh0eXBlKQpAQCAtMTE5NjgsMTEgKzEx OTg0LDggQEAgZG9fdmVjX2xvYWRfc3RvcmUgKHNpbV9jcHUgKmNwdSkKIAlj YXNlIDEwOiBMRDFfMiAoY3B1LCBhZGRyZXNzKTsgcmV0dXJuOwogCWNhc2Ug NzogIExEMV8xIChjcHUsIGFkZHJlc3MpOyByZXR1cm47CiAKLQljYXNlIDB4 RToKLQljYXNlIDB4QzogZG9fdmVjX0xEblIgKGNwdSwgYWRkcmVzcyk7IHJl dHVybjsKLQogCWRlZmF1bHQ6Ci0JICBIQUxUX05ZSTsKKwkgIEhBTFRfVU5B TExPQzsKIAl9CiAgICAgfQogCkBAIC0xMTk4Nyw3ICsxMjAwMCw3IEBAIGRv X3ZlY19sb2FkX3N0b3JlIChzaW1fY3B1ICpjcHUpCiAgICAgY2FzZSAxMDog U1QxXzIgKGNwdSwgYWRkcmVzcyk7IHJldHVybjsKICAgICBjYXNlIDc6ICBT VDFfMSAoY3B1LCBhZGRyZXNzKTsgcmV0dXJuOwogICAgIGRlZmF1bHQ6Ci0g ICAgICBIQUxUX05ZSTsKKyAgICAgIEhBTFRfVU5BTExPQzsKICAgICB9CiB9 CiAKZGlmZiAtLWdpdCBhL3NpbS90ZXN0c3VpdGUvc2ltL2FhcmNoNjQvbGRu X3NpbmdsZS5zIGIvc2ltL3Rlc3RzdWl0ZS9zaW0vYWFyY2g2NC9sZG5fc2lu Z2xlLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEw MmU5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NpbS90ZXN0c3VpdGUvc2ltL2Fh cmNoNjQvbGRuX3NpbmdsZS5zCkBAIC0wLDAgKzEsMTAwIEBACisjIG1hY2g6 IGFhcmNoNjQKKworIyBDaGVjayB0aGUgbG9hZCBzaW5nbGUgMS1lbGVtZW50 IHN0cnVjdHVyZSB0byBvbmUgbGFuZSBpbnN0cnVjdGlvbnM6CisjIGxkMSwg bGQyLCBsZDMsIGxkNC4KKyMgQ2hlY2sgdGhlIGFkZHJlc3NpbmcgbW9kZXM6 IG5vIG9mZnNldCwgcG9zdC1pbmRleCBpbW1lZGlhdGUgb2Zmc2V0LAorIyBw b3N0LWluZGV4IHJlZ2lzdGVyIG9mZnNldC4KKworLmluY2x1ZGUgInRlc3R1 dGlscy5pbmMiCisKK2lucHV0OgorCS53b3JkIDB4MDQwMzAyMDEKKwkud29y ZCAweDA4MDcwNjA1CisJLndvcmQgMHgwYzBiMGEwOQorCS53b3JkIDB4MTAw ZjBlMGQKKwkud29yZCAweDE0MTMxMjExCisJLndvcmQgMHgxODE3MTYxNQor CS53b3JkIDB4MWMxYjFhMTkKKwkud29yZCAweDIwMWYxZTFkCisKKwlzdGFy dAorCWFkcnAgeDAsIGlucHV0CisJYWRkIHgwLCB4MCwgOmxvMTI6aW5wdXQK KworCW1vdiB4MiwgeDAKKwltb3YgeDMsICMxCisJbW92IHg0LCAjNAorCWxk MSB7djAuYn1bMF0sIFt4Ml0sIDEKKwlsZDEge3YwLmJ9WzFdLCBbeDJdLCB4 MworCWxkMSB7djAuaH1bMV0sIFt4Ml0sIDIKKwlsZDEge3YwLnN9WzFdLCBb eDJdLCB4NAorCWxkMSB7djAuZH1bMV0sIFt4Ml0KKwlhZGR2IGIxLCB2MC4x NmIKKwltb3YgeDUsIHYxLmRbMF0KKwljbXAgeDUsICMxMzYKKwlibmUgLkxm YWlsdXJlCisKKwltb3YgeDIsIHgwCisJbW92IHgzLCAjMTYKKwltb3YgeDQs ICM0CisJbGQyIHt2MC5kLCB2MS5kfVswXSwgW3gyXSwgeDMKKwlsZDIge3Yw LnMsIHYxLnN9WzJdLCBbeDJdLCA4CisJbGQyIHt2MC5oLCB2MS5ofVs2XSwg W3gyXSwgeDQKKwlsZDIge3YwLmIsIHYxLmJ9WzE0XSwgW3gyXSwgMgorCWxk MiB7djAuYiwgdjEuYn1bMTVdLCBbeDJdCisJYWRkdiBiMiwgdjAuMTZiCisJ YWRkdiBiMywgdjEuMTZiCisJbW92IHg1LCB2Mi5kWzBdCisJbW92IHg2LCB2 My5kWzBdCisJY21wIHg1LCAjMjIxCisJYm5lIC5MZmFpbHVyZQorCWNtcCB4 NiwgIzMwNworCWJuZSAuTGZhaWx1cmUKKworCW1vdiB4MiwgeDAKKwlsZDMg e3YwLnMsIHYxLnMsIHYyLnN9WzBdLCBbeDJdLCAxMgorCWxkMyB7djAucywg djEucywgdjIuc31bMV0sIFt4Ml0KKwltb3YgeDIsIHgwCisJbW92IHgzLCAj MTIKKwlsZDMge3YwLnMsIHYxLnMsIHYyLnN9WzJdLCBbeDJdLCB4MworCWxk MyB7djAucywgdjEucywgdjIuc31bM10sIFt4Ml0KKwlhZGR2IGIzLCB2MC4x NmIKKwlhZGR2IGI0LCB2MS4xNmIKKwlhZGR2IGI1LCB2Mi4xNmIKKwltb3Yg eDQsIHYzLmRbMF0KKwltb3YgeDUsIHY0LmRbMF0KKwltb3YgeDYsIHY1LmRb MF0KKwljbXAgeDQsICMxMzYKKwlibmUgLkxmYWlsdXJlCisJY21wIHg1LCAj MjAwCisJYm5lIC5MZmFpbHVyZQorCWNtcCB4NiwgIzI2NAorCWJuZSAuTGZh aWx1cmUKKworCW1vdiB4MiwgeDAKKwlsZDQge3YwLnMsIHYxLnMsIHYyLnMs IHYzLnN9WzBdLCBbeDJdLCAxNgorCWxkNCB7djAucywgdjEucywgdjIucywg djMuc31bMV0sIFt4Ml0KKwltb3YgeDIsIHgwCisJbW92IHgzLCAjMTYKKwls ZDQge3YwLnMsIHYxLnMsIHYyLnMsIHYzLnN9WzJdLCBbeDJdLCB4MworCWxk NCB7djAucywgdjEucywgdjIucywgdjMuc31bM10sIFt4Ml0KKwlhZGR2IGI0 LCB2MC4xNmIKKwlhZGR2IGI1LCB2MS4xNmIKKwlhZGR2IGI2LCB2Mi4xNmIK KwlhZGR2IGI3LCB2My4xNmIKKwltb3YgeDQsIHY0LmRbMF0KKwltb3YgeDUs IHY1LmRbMF0KKwltb3YgeDYsIHY2LmRbMF0KKwltb3YgeDcsIHY3LmRbMF0K KwljbXAgeDQsICMxNjgKKwlibmUgLkxmYWlsdXJlCisJY21wIHg1LCAjMjMy CisJYm5lIC5MZmFpbHVyZQorCWNtcCB4NiwgIzI5NgorCWJuZSAuTGZhaWx1 cmUKKwljbXAgeDcsICMzNjAKKwlibmUgLkxmYWlsdXJlCisKKwlwYXNzCisu TGZhaWx1cmU6CisJZmFpbApkaWZmIC0tZ2l0IGEvc2ltL3Rlc3RzdWl0ZS9z aW0vYWFyY2g2NC9sZG5yLnMgYi9zaW0vdGVzdHN1aXRlL3NpbS9hYXJjaDY0 L2xkbnIucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h NGJmZmZhCi0tLSAvZGV2L251bGwKKysrIGIvc2ltL3Rlc3RzdWl0ZS9zaW0v YWFyY2g2NC9sZG5yLnMKQEAgLTAsMCArMSwxNzYgQEAKKyMgbWFjaDogYWFy Y2g2NAorCisjIENoZWNrIHRoZSBsb2FkIHNpbmdsZSAxLWVsZW1lbnQgc3Ry dWN0dXJlIGFuZCByZXBsaWNhdGUgdG8gYWxsIGxhbmVzIGluc25zOgorIyBs ZDFyLCBsZDJyLCBsZDNyLCBsZDRyLgorIyBDaGVjayB0aGUgYWRkcmVzc2lu ZyBtb2Rlczogbm8gb2Zmc2V0LCBwb3N0LWluZGV4IGltbWVkaWF0ZSBvZmZz ZXQsCisjIHBvc3QtaW5kZXggcmVnaXN0ZXIgb2Zmc2V0LgorCisuaW5jbHVk ZSAidGVzdHV0aWxzLmluYyIKKworaW5wdXQ6CisJLndvcmQgMHgwNDAzMDIw MQorCS53b3JkIDB4MDgwNzA2MDUKKwkud29yZCAweDBjMGIwYTA5CisJLndv cmQgMHgxMDBmMGUwZAoraW5wdXQyOgorCS53b3JkIDB4MDAwMDAwMDEKKwku d29yZCAweDAwMDAwMDAyCisJLndvcmQgMHgwMDAwMDAwMworCS53b3JkIDB4 MDAwMDAwMDQKKwkud29yZCAweDAwMDAwMDA1CisJLndvcmQgMHgwMDAwMDAw NgorCS53b3JkIDB4MDAwMDAwMDcKKwkud29yZCAweDAwMDAwMDA4CisJLndv cmQgMHgwMDAwMDAwOQorCS53b3JkIDB4MDAwMDAwMGEKKwkud29yZCAweDAw MDAwMDBiCisJLndvcmQgMHgwMDAwMDAwYworCisJc3RhcnQKKwlhZHJwIHgw LCBpbnB1dAorCWFkZCB4MCwgeDAsIDpsbzEyOmlucHV0CisJYWRycCB4MSwg aW5wdXQyCisJYWRkIHgxLCB4MSwgOmxvMTI6aW5wdXQyCisKKwltb3YgeDIs IHgwCisJbW92IHgzLCAjMQorCWxkMXIge3YwLjhifSwgW3gyXSwgMQorCWxk MXIge3YxLjE2Yn0sIFt4Ml0sIHgzCisJbGQxciB7djIuNGh9LCBbeDJdLCAy CisJbGQxciB7djMuOGh9LCBbeDJdCisJYWRkdiBiMCwgdjAuOGIKKwlhZGR2 IGIxLCB2MS4xNmIKKwlhZGR2IGIyLCB2Mi44YgorCWFkZHYgYjMsIHYzLjE2 YgorCW1vdiB4MiwgdjAuZFswXQorCW1vdiB4MywgdjEuZFswXQorCW1vdiB4 NCwgdjIuZFswXQorCW1vdiB4NSwgdjMuZFswXQorCWNtcCB4MiwgIzgKKwli bmUgLkxmYWlsdXJlCisJY21wIHgzLCAjMzIKKwlibmUgLkxmYWlsdXJlCisJ Y21wIHg0LCAjMjgKKwlibmUgLkxmYWlsdXJlCisJY21wIHg1LCAjODgKKwli bmUgLkxmYWlsdXJlCisKKwltb3YgeDIsIHgxCisJbW92IHgzLCAjOAorCWxk MnIge3YwLjJzLCB2MS4yc30sIFt4Ml0sIDgKKwlsZDJyIHt2Mi40cywgdjMu NHN9LCBbeDJdLCB4MworCWxkMnIge3Y0LjFkLCB2NS4xZH0sIFt4Ml0sIDE2 CisJbGQyciB7djYuMmQsIHY3LjJkfSwgW3gyXQorCWFkZHAgdjAuMnMsIHYw LjJzLCB2MS4ycworCWFkZHYgczIsIHYyLjRzCisJYWRkdiBzMywgdjMuNHMK KwlhZGRwIHY0LjJzLCB2NC4ycywgdjUuMnMKKwlhZGR2IHM2LCB2Ni40cwor CWFkZHYgczcsIHY3LjRzCisJbW92IHcyLCB2MC5zWzBdCisJbW92IHczLCB2 MC5zWzFdCisJbW92IHg0LCB2Mi5kWzBdCisJbW92IHg1LCB2My5kWzBdCisJ bW92IHc2LCB2NC5zWzBdCisJbW92IHc3LCB2NC5zWzFdCisJbW92IHg4LCB2 Ni5kWzBdCisJbW92IHg5LCB2Ny5kWzBdCisJY21wIHcyLCAjMgorCWJuZSAu TGZhaWx1cmUKKwljbXAgdzMsICM0CisJYm5lIC5MZmFpbHVyZQorCWNtcCB4 NCwgIzEyCisJYm5lIC5MZmFpbHVyZQorCWNtcCB4NSwgIzE2CisJYm5lIC5M ZmFpbHVyZQorCWNtcCB3NiwgIzExCisJYm5lIC5MZmFpbHVyZQorCWNtcCB3 NywgIzE1CisJYm5lIC5MZmFpbHVyZQorCWNtcCB4OCwgIzM4CisJYm5lIC5M ZmFpbHVyZQorCWNtcCB4OSwgIzQ2CisJYm5lIC5MZmFpbHVyZQorCisJbW92 IHgyLCB4MAorCW1vdiB4MywgIzMKKwlsZDNyIHt2MC44YiwgdjEuOGIsIHYy LjhifSwgW3gyXSwgMworCWxkM3Ige3YzLjhiLCB2NC44YiwgdjUuOGJ9LCBb eDJdLCB4MworCWxkM3Ige3Y2LjhiLCB2Ny44YiwgdjguOGJ9LCBbeDJdCisJ YWRkdiBiMCwgdjAuOGIKKwlhZGR2IGIxLCB2MS44YgorCWFkZHYgYjIsIHYy LjhiCisJYWRkdiBiMywgdjMuOGIKKwlhZGR2IGI0LCB2NC44YgorCWFkZHYg YjUsIHY1LjhiCisJYWRkdiBiNiwgdjYuOGIKKwlhZGR2IGI3LCB2Ny44Ygor CWFkZHYgYjgsIHY4LjhiCisJYWRkdiBiOSwgdjkuOGIKKwltb3YgeDIsIHYw LmRbMF0KKwltb3YgeDMsIHYxLmRbMF0KKwltb3YgeDQsIHYyLmRbMF0KKwlt b3YgeDUsIHYzLmRbMF0KKwltb3YgeDYsIHY0LmRbMF0KKwltb3YgeDcsIHY1 LmRbMF0KKwltb3YgeDgsIHY2LmRbMF0KKwltb3YgeDksIHY3LmRbMF0KKwlt b3YgeDEwLCB2OC5kWzBdCisJY21wIHgyLCAjOAorCWJuZSAuTGZhaWx1cmUK KwljbXAgeDMsICMxNgorCWJuZSAuTGZhaWx1cmUKKwljbXAgeDQsICMyNAor CWJuZSAuTGZhaWx1cmUKKwljbXAgeDUsICMzMgorCWJuZSAuTGZhaWx1cmUK KwljbXAgeDYsICM0MAorCWJuZSAuTGZhaWx1cmUKKwljbXAgeDcsICM0OAor CWJuZSAuTGZhaWx1cmUKKwljbXAgeDgsICM1NgorCWJuZSAuTGZhaWx1cmUK KwljbXAgeDksICM2NAorCWJuZSAuTGZhaWx1cmUKKwljbXAgeDEwLCAjNzIK KwlibmUgLkxmYWlsdXJlCisKKwltb3YgeDIsIHgxCisJbGQ0ciB7djAuNHMs IHYxLjRzLCB2Mi40cywgdjMuNHN9LCBbeDJdLCAxNgorCWxkNHIge3Y0LjRz LCB2NS40cywgdjYuNHMsIHY3LjRzfSwgW3gyXQorCWFkZHYgczAsIHYwLjRz CisJYWRkdiBzMSwgdjEuNHMKKwlhZGR2IHMyLCB2Mi40cworCWFkZHYgczMs IHYzLjRzCisJYWRkdiBzNCwgdjQuNHMKKwlhZGR2IHM1LCB2NS40cworCWFk ZHYgczYsIHY2LjRzCisJYWRkdiBzNywgdjcuNHMKKwltb3YgeDIsIHYwLmRb MF0KKwltb3YgeDMsIHYxLmRbMF0KKwltb3YgeDQsIHYyLmRbMF0KKwltb3Yg eDUsIHYzLmRbMF0KKwltb3YgeDYsIHY0LmRbMF0KKwltb3YgeDcsIHY1LmRb MF0KKwltb3YgeDgsIHY2LmRbMF0KKwltb3YgeDksIHY3LmRbMF0KKwljbXAg eDIsICM0CisJYm5lIC5MZmFpbHVyZQorCWNtcCB4MywgIzgKKwlibmUgLkxm YWlsdXJlCisJY21wIHg0LCAjMTIKKwlibmUgLkxmYWlsdXJlCisJY21wIHg1 LCAjMTYKKwlibmUgLkxmYWlsdXJlCisJY21wIHg2LCAjMjAKKwlibmUgLkxm YWlsdXJlCisJY21wIHg3LCAjMjQKKwlibmUgLkxmYWlsdXJlCisJY21wIHg4 LCAjMjgKKwlibmUgLkxmYWlsdXJlCisJY21wIHg5LCAjMzIKKwlibmUgLkxm YWlsdXJlCisKKwlwYXNzCisuTGZhaWx1cmU6CisJZmFpbApkaWZmIC0tZ2l0 IGEvc2ltL3Rlc3RzdWl0ZS9zaW0vYWFyY2g2NC9zdG5fc2luZ2xlLnMgYi9z aW0vdGVzdHN1aXRlL3NpbS9hYXJjaDY0L3N0bl9zaW5nbGUucwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTI3Yzg0Ci0tLSAvZGV2 L251bGwKKysrIGIvc2ltL3Rlc3RzdWl0ZS9zaW0vYWFyY2g2NC9zdG5fc2lu Z2xlLnMKQEAgLTAsMCArMSwxMjIgQEAKKyMgbWFjaDogYWFyY2g2NAorCisj IENoZWNrIHRoZSBzdG9yZSBzaW5nbGUgMS1lbGVtZW50IHN0cnVjdHVyZSB0 byBvbmUgbGFuZSBpbnN0cnVjdGlvbnM6CisjIHN0MSwgc3QyLCBzdDMsIHN0 NC4KKyMgQ2hlY2sgdGhlIGFkZHJlc3NpbmcgbW9kZXM6IG5vIG9mZnNldCwg cG9zdC1pbmRleCBpbW1lZGlhdGUgb2Zmc2V0LAorIyBwb3N0LWluZGV4IHJl Z2lzdGVyIG9mZnNldC4KKworLmluY2x1ZGUgInRlc3R1dGlscy5pbmMiCisK K2lucHV0OgorCS53b3JkIDB4MDQwMzAyMDEKKwkud29yZCAweDA4MDcwNjA1 CisJLndvcmQgMHgwYzBiMGEwOQorCS53b3JkIDB4MTAwZjBlMGQKKwkud29y ZCAweDE0MTMxMjExCisJLndvcmQgMHgxODE3MTYxNQorCS53b3JkIDB4MWMx YjFhMTkKKwkud29yZCAweDIwMWYxZTFkCitvdXRwdXQ6CisJLnplcm8gNjQK KworCXN0YXJ0CisJYWRycCB4MCwgaW5wdXQKKwlhZGQgeDAsIHgwLCA6bG8x MjppbnB1dAorCWFkcnAgeDEsIG91dHB1dAorCWFkZCB4MSwgeDEsIDpsbzEy Om91dHB1dAorCisJbW92IHgyLCB4MAorCWxkciBxMCwgW3gyXSwgOAorCWxk ciBxMSwgW3gyXQorCW1vdiB4MiwgeDAKKwlsZHIgcTIsIFt4Ml0sIDgKKwls ZHIgcTMsIFt4Ml0KKworCW1vdiB4MiwgeDEKKwltb3YgeDMsICMxCisJbW92 IHg0LCAjNAorCXN0MSB7djAuYn1bMF0sIFt4Ml0sIDEKKwlzdDEge3YwLmJ9 WzFdLCBbeDJdLCB4MworCXN0MSB7djAuaH1bMV0sIFt4Ml0sIDIKKwlzdDEg e3YwLnN9WzFdLCBbeDJdLCB4NAorCXN0MSB7djAuZH1bMV0sIFt4Ml0KKwls ZHIgcTQsIFt4MV0KKwlhZGR2IGI0LCB2NC4xNmIKKwltb3YgeDUsIHY0LmRb MF0KKwljbXAgeDUsICMxMzYKKwlibmUgLkxmYWlsdXJlCisKKwltb3YgeDIs IHgxCisJbW92IHgzLCAjMTYKKwltb3YgeDQsICM0CisJc3QyIHt2MC5kLCB2 MS5kfVswXSwgW3gyXSwgeDMKKwlzdDIge3YwLnMsIHYxLnN9WzJdLCBbeDJd LCA4CisJc3QyIHt2MC5oLCB2MS5ofVs2XSwgW3gyXSwgeDQKKwlzdDIge3Yw LmIsIHYxLmJ9WzE0XSwgW3gyXSwgMgorCXN0MiB7djAuYiwgdjEuYn1bMTVd LCBbeDJdCisJbW92IHgyLCB4MQorCWxkciBxNCwgW3gyXSwgMTYKKwlsZHIg cTUsIFt4Ml0KKwlhZGR2IGI0LCB2NC4xNmIKKwlhZGR2IGI1LCB2NS4xNmIK Kwltb3YgeDUsIHY0LmRbMF0KKwltb3YgeDYsIHY1LmRbMF0KKwljbXAgeDUs ICMxMzYKKwlibmUgLkxmYWlsdXJlCisJY21wIHg2LCAjMjY0CisJYm5lIC5M ZmFpbHVyZQorCisJbW92IHgyLCB4MQorCW1vdiB4MywgIzEyCisJc3QzIHt2 MC5zLCB2MS5zLCB2Mi5zfVswXSwgW3gyXSwgMTIKKwlzdDMge3YwLnMsIHYx LnMsIHYyLnN9WzFdLCBbeDJdLCB4MworCXN0MyB7djAucywgdjEucywgdjIu c31bMl0sIFt4Ml0sIDEyCisJc3QzIHt2MC5zLCB2MS5zLCB2Mi5zfVszXSwg W3gyXQorCW1vdiB4MiwgeDEKKwlsZHIgcTQsIFt4Ml0sIDE2CisJbGRyIHE1 LCBbeDJdLCAxNgorCWxkciBxNiwgW3gyXQorCWFkZHYgYjQsIHY0LjE2Ygor CWFkZHYgYjUsIHY1LjE2YgorCWFkZHYgYjYsIHY2LjE2YgorCW1vdiB4NCwg djQuZFswXQorCW1vdiB4NSwgdjUuZFswXQorCW1vdiB4NiwgdjYuZFswXQor CWNtcCB4NCwgIzg4CisJYm5lIC5MZmFpbHVyZQorCWNtcCB4NSwgIzIwMAor CWJuZSAuTGZhaWx1cmUKKwljbXAgeDYsICMyNDgKKwlibmUgLkxmYWlsdXJl CisKKwltb3YgeDIsIHgxCisJbW92IHgzLCAjMTYKKwlzdDQge3YwLnMsIHYx LnMsIHYyLnMsIHYzLnN9WzBdLCBbeDJdLCAxNgorCXN0NCB7djAucywgdjEu cywgdjIucywgdjMuc31bMV0sIFt4Ml0sIHgzCisJc3Q0IHt2MC5zLCB2MS5z LCB2Mi5zLCB2My5zfVsyXSwgW3gyXSwgMTYKKwlzdDQge3YwLnMsIHYxLnMs IHYyLnMsIHYzLnN9WzNdLCBbeDJdCisJbW92IHgyLCB4MQorCWxkciBxNCwg W3gyXSwgMTYKKwlsZHIgcTUsIFt4Ml0sIDE2CisJbGRyIHE2LCBbeDJdLCAx NgorCWxkciBxNywgW3gyXQorCWFkZHYgYjQsIHY0LjE2YgorCWFkZHYgYjUs IHY1LjE2YgorCWFkZHYgYjYsIHY2LjE2YgorCWFkZHYgYjcsIHY3LjE2Ygor CW1vdiB4NCwgdjQuZFswXQorCW1vdiB4NSwgdjUuZFswXQorCW1vdiB4Niwg djYuZFswXQorCW1vdiB4NywgdjcuZFswXQorCWNtcCB4NCwgIzEwNAorCWJu ZSAuTGZhaWx1cmUKKwljbXAgeDUsICMxNjgKKwlibmUgLkxmYWlsdXJlCisJ Y21wIHg2LCAjMjMyCisJYm5lIC5MZmFpbHVyZQorCWNtcCB4NywgIzI5Ngor CWJuZSAuTGZhaWx1cmUKKworCXBhc3MKKy5MZmFpbHVyZToKKwlmYWlsCg== --001a1149487857e96d054730675a--