From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.8.2-15 Date: Mon, 29 Jun 2026 12:26:05 GMT Message-ID: <178273596578.1.12637082658863905586.rpms-gcc-39b12a1a1bbf@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 39b12a1a1bbfcd2ab70cecb4221db2b49cb913cf QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMzliMTJhMWExYmJmY2QyYWI3MGNlY2I0MjIxZGIyYjQ5 Y2I5MTNjZgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE0LTAyLTIwVDIxOjIyOjI0KzAxOjAwClN0YXRzICA6ICsxNDIwLy00IGluIDQgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2djYy9jLzM5YjEy YTFhMWJiZmNkMmFiNzBjZWNiNDIyMWRiMmI0OWNiOTEzY2Y/YnJhbmNoPXJoZWwtZjQxLWJhc2UK CkxvZzoKNC44LjItMTUKCi0tLQpkaWZmIC0tZ2l0IGEvZ2NjLnNwZWMgYi9nY2Muc3BlYwppbmRl eCBiNjZlZmNjLi4yZmExY2UxIDEwMDY0NAotLS0gYS9nY2Muc3BlYworKysgYi9nY2Muc3BlYwpA QCAtMyw3ICszLDcgQEAKICVnbG9iYWwgZ2NjX3ZlcnNpb24gNC44LjIKICMgTm90ZSwgZ2NjX3Jl bGVhc2UgbXVzdCBiZSBpbnRlZ2VyLCBpZiB5b3Ugd2FudCB0byBhZGQgc3VmZml4ZXMgdG8KICMg JXtyZWxlYXNlfSwgYXBwZW5kIHRoZW0gYWZ0ZXIgJXtnY2NfcmVsZWFzZX0gb24gUmVsZWFzZTog bGluZS4KLSVnbG9iYWwgZ2NjX3JlbGVhc2UgMTQKKyVnbG9iYWwgZ2NjX3JlbGVhc2UgMTUKICVn bG9iYWwgX3VucGFja2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxkIDAKICVnbG9iYWwgX3BlcmZv cm1hbmNlX2J1aWxkIDEKICVnbG9iYWwgbXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBw cGM2NHA3IHMzOTB4IHg4Nl82NApAQCAtNDksNiArNDksMTEgQEAKICVlbmRpZgogJWdsb2JhbCBi dWlsZF9jbG9vZyAxCiAlZ2xvYmFsIGJ1aWxkX2xpYnN0ZGN4eF9kb2NzIDEKKyVpZmFyY2ggJXtp eDg2fSB4ODZfNjQgcHBjIHBwYzY0IHBwYzY0cDcgczM5MCBzMzkweCAle2FybX0gYWFyY2g2NAor JWdsb2JhbCBhdHRyX2lmdW5jIDEKKyVlbHNlCislZ2xvYmFsIGF0dHJfaWZ1bmMgMAorJWVuZGlm CiAjIElmIHlvdSBkb24ndCBoYXZlIGFscmVhZHkgYSB1c2FibGUgZ2NjLWphdmEgYW5kIGxpYmdj aiBmb3IgeW91ciBhcmNoLAogIyBkbyBvbiBzb21lIGFyY2ggd2hpY2ggaGFzIGl0IHJwbWJ1aWxk IC1iYyAtLXdpdGggamF2YV90YXIgZ2NjLnNwZWMKICMgd2hpY2ggY3JlYXRlcyBsaWJqYXZhLWNs YXNzZXMtJXt2ZXJzaW9ufS0le3JlbGVhc2V9LnRhci5iejIKQEAgLTE5OCw3ICsyMDMsMTAgQEAg UGF0Y2gxMzogZ2NjNDgtcHI1NjU2NC5wYXRjaAogUGF0Y2gxNDogZ2NjNDgtcHI1NjQ5My5wYXRj aAogUGF0Y2gxNTogZ2NjNDgtY29sb3ItYXV0by5wYXRjaAogUGF0Y2gxNjogZ2NjNDgtcHIyODg2 NS5wYXRjaAotUGF0Y2gxNzogZ2NjNDgtcHI2MDAxMC5wYXRjaAorUGF0Y2gxNzogZ2NjNDgtbGli Z28tcDIyNC5wYXRjaAorUGF0Y2gxODogZ2NjNDgtcHI2MDEzNy5wYXRjaAorUGF0Y2gxOTogZ2Nj NDgtcHI2MDAxMC5wYXRjaAorUGF0Y2gyMDogZ2NjNDgtcHI2MDA0Ni5wYXRjaAogCiBQYXRjaDEw MDA6IGZhc3RqYXItMC45Ny1zZWdmYXVsdC5wYXRjaAogUGF0Y2gxMDAxOiBmYXN0amFyLTAuOTct bGVuMS5wYXRjaApAQCAtNzU5LDcgKzc2NywxMSBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5n IHRoaXMgcGFja2FnZS4KICVwYXRjaDE1IC1wMCAtYiAuY29sb3ItYXV0b34KICVlbmRpZgogJXBh dGNoMTYgLXAwIC1iIC5wcjI4ODY1fgotJXBhdGNoMTcgLXAwIC1iIC5wcjYwMDEwfgorJXBhdGNo MTcgLXAwIC1iIC5saWJnby1wMjI0fgorcm0gLWYgbGliZ28vZ28vY3J5cHRvL2VsbGlwdGljL3Ay MjR7LF90ZXN0fS5nbworJXBhdGNoMTggLXAwIC1iIC5wcjYwMTM3fgorJXBhdGNoMTkgLXAwIC1i IC5wcjYwMDEwfgorJXBhdGNoMjAgLXAwIC1iIC5wcjYwMDQ2fgogCiAlaWYgMCV7P19lbmFibGVf ZGVidWdfcGFja2FnZXN9CiBjYXQgPiBzcGxpdC1kZWJ1Z2luZm8uc2ggPDxcRU9GCkBAIC0xMDQy LDYgKzEwNTQsMTEgQEAgQ0M9IiRDQyIgQ0ZMQUdTPSIkT1BUX0ZMQUdTIiBcCiAlZWxzZQogCS0t d2l0aG91dC1pc2wgLS13aXRob3V0LWNsb29nIFwKICVlbmRpZgorJWlmIDAlez9mZWRvcmF9ID49 IDIxIHx8IDAlez9yaGVsfSA+PSA3CislaWYgJXthdHRyX2lmdW5jfQorCS0tZW5hYmxlLWdudS1p bmRpcmVjdC1mdW5jdGlvbiBcCislZW5kaWYKKyVlbmRpZgogJWlmYXJjaCAle2FybX0KIAktLWRp c2FibGUtc2psai1leGNlcHRpb25zIFwKICVlbmRpZgpAQCAtMzAyNyw4ICszMDQ0LDE2IEBAIGZp CiAle19wcmVmaXh9L2xpYmV4ZWMvZ2NjLyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVy c2lvbn0vcGx1Z2luCiAKICVjaGFuZ2Vsb2cKLSogRnJpIEphbiAzMSAyMDE0IEt5bGUgTWNNYXJ0 aW4gPGt5bGVAcmVkaGF0LmNvbT4gNC44LjItMTQKKyogVGh1IEZlYiAyMCAyMDE0IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQuOC4yLTE1CistIGZpeCBleGNlcHRpb24gc3BlYyBp bnN0YW50aWF0aW9uIElDRSAoIzEwNjczOTgsIFBSIGMrKy82MDA0NikKIC0gZml4IHBjaCBvbiBh YXJjaDY0ICgjMTA1ODk5MSwgUFIgcGNoLzYwMDEwKQorLSBjb25maWd1cmUgd2l0aCAtLWVuYWJs ZS1nbnUtaW5kaXJlY3QtZnVuY3Rpb24gb24gYXJjaGl0ZWN0dXJlcworICBhbmQgZGlzdHJvcyB0 aGF0IHN1cHBvcnQgaXQgYW5kIGRvbid0IHN1cHBvcnQgaXQgYnkgZGVmYXVsdAorICB5ZXQgKCMx MDY3MjQ1KQorCisqIFdlZCBGZWIgMTkgMjAxNCBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPiA0LjguMi0xNAorLSByZW1vdmUgbGliZ28gUC4yMjQgZWxsaXB0aWMgY3VydmUgKCMxMDY2 NTM5KQorLSBmaXggLW1jcHU9cG93ZXI4IElDRSAoIzEwNjQyNDIsIFBSIHRhcmdldC82MDEzNykK IAogKiBUdWUgSmFuIDIxIDIwMTQgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC44 LjItMTMKIC0gd2hlbiByZW1vdmluZyAtV2FsbCBmcm9tIENYWEZMQUdTLCBpZiAtV2Vycm9yPWZv cm1hdC1zZWN1cml0eQoKZGlmZiAtLWdpdCBhL2djYzQ4LWxpYmdvLXAyMjQucGF0Y2ggYi9nY2M0 OC1saWJnby1wMjI0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUw NDYxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0OC1saWJnby1wMjI0LnBhdGNoCkBAIC0wLDAg KzEsMTMwMiBAQAorLS0tIGxpYmdvL01ha2VmaWxlLmFtLmpqCTIwMTMtMTItMTIgMTk6MDE6NDku MDAwMDAwMDAwICswMTAwCisrKysgbGliZ28vTWFrZWZpbGUuYW0JMjAxNC0wMi0xOCAxNzozMTo1 NC43OTg0ODQ2NTcgKzAxMDAKK0BAIC0xMTA5LDggKzExMDksNyBAQCBnb19jcnlwdG9fZHNhX2Zp bGVzID0gXAorIGdvX2NyeXB0b19lY2RzYV9maWxlcyA9IFwKKyAJZ28vY3J5cHRvL2VjZHNhL2Vj ZHNhLmdvCisgZ29fY3J5cHRvX2VsbGlwdGljX2ZpbGVzID0gXAorLQlnby9jcnlwdG8vZWxsaXB0 aWMvZWxsaXB0aWMuZ28gXAorLQlnby9jcnlwdG8vZWxsaXB0aWMvcDIyNC5nbworKwlnby9jcnlw dG8vZWxsaXB0aWMvZWxsaXB0aWMuZ28KKyBnb19jcnlwdG9faG1hY19maWxlcyA9IFwKKyAJZ28v Y3J5cHRvL2htYWMvaG1hYy5nbworIGdvX2NyeXB0b19tZDVfZmlsZXMgPSBcCistLS0gbGliZ28v TWFrZWZpbGUuaW4uamoJMjAxMy0xMi0xMiAxOTowMTo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBs aWJnby9NYWtlZmlsZS5pbgkyMDE0LTAyLTE4IDE3OjMyOjExLjM1MDM4OTE5MSArMDEwMAorQEAg LTEyNzQsOCArMTI3NCw3IEBAIGdvX2NyeXB0b19lY2RzYV9maWxlcyA9IFwKKyAJZ28vY3J5cHRv L2VjZHNhL2VjZHNhLmdvCisgCisgZ29fY3J5cHRvX2VsbGlwdGljX2ZpbGVzID0gXAorLQlnby9j cnlwdG8vZWxsaXB0aWMvZWxsaXB0aWMuZ28gXAorLQlnby9jcnlwdG8vZWxsaXB0aWMvcDIyNC5n bworKwlnby9jcnlwdG8vZWxsaXB0aWMvZWxsaXB0aWMuZ28KKyAKKyBnb19jcnlwdG9faG1hY19m aWxlcyA9IFwKKyAJZ28vY3J5cHRvL2htYWMvaG1hYy5nbworLS0tIGxpYmdvL2dvL2NyeXB0by9l bGxpcHRpYy9lbGxpcHRpYy5nby5qagkyMDEyLTEyLTEzIDExOjMyOjAyLjY0MDAzOTUzNyArMDEw MAorKysrIGxpYmdvL2dvL2NyeXB0by9lbGxpcHRpYy9lbGxpcHRpYy5nbwkyMDE0LTAyLTE4IDE3 OjI4OjIyLjkwOTY5MjAyMiArMDEwMAorQEAgLTMyNyw3ICszMjcsNiBAQCB2YXIgcDM4NCAqQ3Vy dmVQYXJhbXMKKyB2YXIgcDUyMSAqQ3VydmVQYXJhbXMKKyAKKyBmdW5jIGluaXRBbGwoKSB7Cist CWluaXRQMjI0KCkKKyAJaW5pdFAyNTYoKQorIAlpbml0UDM4NCgpCisgCWluaXRQNTIxKCkKKy0t LSBsaWJnby9nby9jcnlwdG8vZWxsaXB0aWMvZWxsaXB0aWNfdGVzdC5nby5qagkyMDEyLTEyLTEz IDExOjMyOjAyLjY0MDAzOTUzNyArMDEwMAorKysrIGxpYmdvL2dvL2NyeXB0by9lbGxpcHRpYy9l bGxpcHRpY190ZXN0LmdvCTIwMTQtMDItMTggMTc6MzE6MDQuMDUyNzc0MjY1ICswMTAwCitAQCAt NSwzMjkgKzUsMTQgQEAKKyBwYWNrYWdlIGVsbGlwdGljCisgCisgaW1wb3J0ICgKKy0JImNyeXB0 by9yYW5kIgorLQkiZW5jb2RpbmcvaGV4IgorLQkiZm10IgorLQkibWF0aC9iaWciCisgCSJ0ZXN0 aW5nIgorICkKKyAKKy1mdW5jIFRlc3RPbkN1cnZlKHQgKnRlc3RpbmcuVCkgeworLQlwMjI0IDo9 IFAyMjQoKQorLQlpZiAhcDIyNC5Jc09uQ3VydmUocDIyNC5QYXJhbXMoKS5HeCwgcDIyNC5QYXJh bXMoKS5HeSkgeworLQkJdC5FcnJvcmYoIkZBSUwiKQorLQl9CistfQorLQorLXR5cGUgYmFzZU11 bHRUZXN0IHN0cnVjdCB7CistCWsgICAgc3RyaW5nCistCXgsIHkgc3RyaW5nCistfQorLQorLXZh ciBwMjI0QmFzZU11bHRUZXN0cyA9IFtdYmFzZU11bHRUZXN0eworLQl7CistCQkiMSIsCistCQki YjcwZTBjYmQ2YmI0YmY3ZjMyMTM5MGI5NGEwM2MxZDM1NmMyMTEyMjM0MzI4MGQ2MTE1YzFkMjEi LAorLQkJImJkMzc2Mzg4YjVmNzIzZmI0YzIyZGZlNmNkNDM3NWEwNWEwNzQ3NjQ0NGQ1ODE5OTg1 MDA3ZTM0IiwKKy0JfSwKKy0JeworLQkJIjIiLAorLQkJIjcwNmE0NmRjNzZkY2I3Njc5OGU2MGU2 ZDg5NDc0Nzg4ZDE2ZGMxODAzMmQyNjhmZDFhNzA0ZmE2IiwKKy0JCSIxYzJiNzZhN2JjMjVlNzcw MmE3MDRmYTk4Njg5Mjg0OWZjYTYyOTQ4N2FjZjM3MDlkMmU0ZThiYiIsCistCX0sCistCXsKKy0J CSIzIiwKKy0JCSJkZjFiMWQ2NmE1NTFkMGQzMWVmZjgyMjU1OGI5ZDJjYzc1YzIxODAyNzlmZTBk MDhmZDg5NmQwNCIsCistCQkiYTNmN2YwM2NhZGQwYmU0NDRjMGFhNTY4MzAxMzBkZGY3N2QzMTcz NDRlMWFmMzU5MTk4MWE5MjUiLAorLQl9LAorLQl7CistCQkiNCIsCistCQkiYWU5OWZlZWJiNWQy Njk0NWI1NDg5MjA5MmE4YWVlMDI5MTI5MzBmYTQxY2QxMTRlNDA0NDczMDEiLAorLQkJIjQ4MjU4 MGEwZWM1YmM0N2U4OGJjOGMzNzg2MzJjZDE5NmNiM2ZhMDU4YTcxMTRlYjAzMDU0YzkiLAorLQl9 LAorLQl7CistCQkiNSIsCistCQkiMzFjNDlhZTc1YmNlNzgwN2NkZmYyMjA1NWQ5NGVlOTAyMWZl ZGJiNWFiNTFjNTc1MjZmMDExYWEiLAorLQkJIjI3ZThiZmYxNzQ1NjM1ZWM1YmEwYzlmMWMyZWRl MTU0MTRjNjUwN2QyOWZmZTM3ZTc5MGEwNzliIiwKKy0JfSwKKy0JeworLQkJIjYiLAorLQkJIjFm MjQ4M2Y4MjU3MjI1MWZjYTk3NWZlYTQwZGI4MjFkZjhhZDgyYTNjMDAyZWU2YzU3MTEyNDA4IiwK Ky0JCSI4OWZhZjBjY2I3NTBkOTliNTUzYzU3NGZhZDdlY2ZiMDQzODU4NmViMzk1MmFmNWI0YjE1 M2M3ZSIsCistCX0sCistCXsKKy0JCSI3IiwKKy0JCSJkYjJmNmJlNjMwZTI0NmE1Y2Y3ZDk5Yjg1 MTk0YjEyM2Q0ODdlMmQ0NjZiOTRiMjRhMDNjM2UyOCIsCistCQkiZjNhMzAwODU0OTdmMmY2MTFl ZTI1MTdiMTYzZWY4YzUzYjcxNWQxOGJiNGU0ODA4ZDAyYjk2MyIsCistCX0sCistCXsKKy0JCSI4 IiwKKy0JCSI4NThlNmY5Y2M2YzEyYzMxZjVkZjEyNGFhNzc3NjdiMDVjOGJjMDIxYmQ2ODNkMmI1 NTU3MTU1MCIsCistCQkiNDZkY2QzZWE1YzQzODk4YzVjNWZjNGZkYWM3ZGIzOWMyZjAyZWJlZTRl MzU0MWQxZTc4MDQ3YSIsCistCX0sCistCXsKKy0JCSI5IiwKKy0JCSIyZmRjY2NmZWU3MjBhNzdl ZjZjYjNiZmJiNDQ3ZjkzODMxMTdlM2RhYTRhMDdlMzZlZDE1Zjc4ZCIsCistCQkiMzcxNzMyZTRm NDFiZjRmNzg4MzAzNWU2YTc5ZmNlZGMwZTE5NmViMDdiNDgxNzE2OTc1MTc0NjMiLAorLQl9LAor LQl7CistCQkiMTAiLAorLQkJImFlYTllMTdhMzA2NTE3ZWI4OTE1MmFhNzA5NmQyYzM4MWVjODEz YzUxYWE4ODBlN2JlZTJjMGZkIiwKKy0JCSIzOWJiMzBlYWIzMzdlMGE1MjFiNmNiYTFhYmU0YjJi M2EzZTUyNGMxNGEzZmUzZWIxMTZiNjU1ZiIsCistCX0sCistCXsKKy0JCSIxMSIsCistCQkiZWY1 M2I2Mjk0YWNhNDMxZjBmM2MyMmRjODJlYjkwNTAzMjRmMWQ4OGQzNzdlNzE2NDQ4ZTUwN2MiLAor LQkJIjIwYjUxMDAwNDA5MmU5NjYzNmNmYjdlMzJlZmRlZDgyNjVjMjY2ZGZiNzU0ZmE2ZDY0OTFh NmRhIiwKKy0JfSwKKy0JeworLQkJIjEyIiwKKy0JCSI2ZTMxZWUxZGMxMzdmODFiMDU2NzUyZTRk ZWFiMTQ0M2E0ODEwMzNlOWI0YzkzYTMwNDRmNGY3YSIsCistCQkiMjA3ZGRkZjAzODViZmRlYWI2 ZTlhY2RhOGRhMDZiM2JiZWYyMjRhOTNhYjFlOWUwMzYxMDlkMTMiLAorLQl9LAorLQl7CistCQki MTMiLAorLQkJIjM0ZThlMTdhNDMwZTQzMjg5NzkzYzM4M2ZhYzk3NzQyNDdiNDBlOWViZDMzNjY5 ODFmY2ZhZWNhIiwKKy0JCSIyNTI4MTlmNzFjN2ZiN2ZiY2IxNTliZTMzN2QzN2QzMzM2ZDdmZWI5 NjM3MjRmZGZiMGVjYjc2NyIsCistCX0sCistCXsKKy0JCSIxNCIsCistCQkiYTUzNjQwYzgzZGMy MDg2MDNkZWQ4M2U0ZWNmNzU4ZjI0YzM1N2Q3Y2Y0ODA4OGIyY2UwMWU5ZmEiLAorLQkJImQ1ODE0 Y2Q3MjQxOTljNGE1Yjk3NGE0MzY4NWZiZjViOGJhYzY5NDU5Yzk0NjliYzhmMjNjY2FmIiwKKy0J fSwKKy0JeworLQkJIjE1IiwKKy0JCSJiYWE0ZDg2MzU1MTFhN2QyODhhZWJlZWRkMTJjZTUyOWZm MTAyYzkxZjk3Zjg2N2UyMTkxNmJmOSIsCistCQkiOTc5YTVmNDc1OWY4MGY0ZmI0ZWMyZTM0ZjU1 NjZkNTk1NjgwYTExNzM1ZTdiNjEwNDYxMjc5ODkiLAorLQl9LAorLQl7CistCQkiMTYiLAorLQkJ ImI2ZWM0ZmUxNzc3MzgyNDA0ZWY2Nzk5OTdiYThkMWNjNWNkOGU4NTM0OTI1OWY1OTBjNGM2NmQi LAorLQkJIjMzOTlkNDY0MzQ1OTA2YjExYjAwZTM2M2VmNDI5MjIxZjJlYzcyMGQyZjY2NWQ3ZGVh ZDViNDgyIiwKKy0JfSwKKy0JeworLQkJIjE3IiwKKy0JCSJiODM1N2MzYTZjZWVmMjg4MzEwZTE3 YjhiZmVmZjkyMDA4NDZjYThjMTk0MjQ5N2M0ODQ0MDNiYyIsCistCQkiZmYxNDllZmE2NjA2YTZi ZDIwZWY3ZDFiMDZiZDkyZjY5MDQ2MzlkY2U1MTc0ZGI2Y2M1NTRhMjYiLAorLQl9LAorLQl7Cist CQkiMTgiLAorLQkJImM5ZmY2MWIwNDA4NzRjMDU2ODQ3OTIxNjgyNGExNWVhYjFhODM4YTc5N2Qx ODk3NDYyMjZlNGNjIiwKKy0JCSJlYTk4ZDYwZTVmZmM5YjhmY2Y5OTlmYWIxZGY3ZTdlZjcwODRm MjBkZGI2MWJiMDQ1YTZjZTAwMiIsCistCX0sCistCXsKKy0JCSIxOSIsCistCQkiYTFlODFjMDRm MzBjZTIwMWM3YzlhY2U3ODVlZDQ0Y2MzM2I0NTVhMDIyZjJhY2RiYzZjYWU4M2MiLAorLQkJImRj ZjFmNmMzZGIwOWM3MGFjYzI1MzkxZDQ5MmZlMjViNGExODBiYWJkNmNlYTM1NmMwNDcxOWNkIiwK Ky0JfSwKKy0JeworLQkJIjIwIiwKKy0JCSJmY2M3ZjJiNDVkZjFjZDVhM2MwYzA3MzFjYTQ3YThh Zjc1Y2ZiMDM0N2U4MzU0ZWVmZTc4MjQ1NSIsCistCQkiZDVkNzExMDI3NGNiYTdjZGVlOTBlMWE4 YjBkMzk0YzM3NmE1NTczZGI2YmUwYmYyNzQ3ZjUzMCIsCistCX0sCistCXsKKy0JCSIxMTIyMzM0 NDU1NjY3Nzg4OTkiLAorLQkJIjYxZjA3N2M2ZjYyZWQ4MDJkYWQ3YzJmMzhmNWM2N2YyY2M0NTM2 MDFlNjFiZDA3NmJiNDYxNzllIiwKKy0JCSIyMjcyZjllOWY1OTMzZTcwMzg4ZWU2NTI1MTM0NDNi NWUyODlkZDEzNWRjYzBkMDI5OWIyMjVlNCIsCistCX0sCistCXsKKy0JCSIxMTIyMzM0NDU1NjY3 Nzg4OTkxMTIyMzM0NDU1NjY3Nzg4OTkiLAorLQkJIjI5ODk1ZjBhZjQ5NmJmYzYyYjZlZjhkOGE2 NWM4OGM2MTM5NDliMDM2NjhhYWI0ZjA0MjllMzUiLAorLQkJIjNlYTZlNTNmOWE4NDFmMjAxOWVj MjRiZGUxYTc1Njc3YWE5YjU5MDJlNjEwODFjMDEwNjRkZTkzIiwKKy0JfSwKKy0JeworLQkJIjY5 NTA1MTE2MTk5NjU4Mzk0NTA5ODg5MDA2ODgxNTA3MTI3NzgwMTU3Mzc5ODM5NDA2OTE5NjgwNTE5 MDAzMTk2ODAiLAorLQkJImFiNjg5OTMwYmNhZTRhNGFhNWY1Y2IwODVlODIzZThhZTMwZmQzNjVl YjFkYTRhYmE5Y2YwMzc5IiwKKy0JCSIzMzQ1YTEyMWJiZDIzMzU0OGFmMGQyMTA2NTRlYjQwYmFi Nzg4YTAzNjY2NDE5YmU2ZmJkMzRlNyIsCistCX0sCistCXsKKy0JCSIxMzQ3OTk3MjkzMzQxMDA2 MDMyNzAzNTc4OTAyMDUwOTQzMTY5NTA5NDkwMjQzNTQ5NDI5NTMzODU3MDYwMjExOTQyMyIsCist CQkiYmRiNmE4ODE3YzFmODlkYTFjMmYzZGQ4ZTk3ZmViNDQ5NGYyZWQzMDJhNGNlMmJjN2Y1ZjQw MjUiLAorLQkJIjRjNzAyMGQ1N2MwMDQxMTg4OTQ2MmQ3N2E1NDM4YmI0ZTk3ZDE3NzcwMGJmNzI0 M2EwN2YxNjgwIiwKKy0JfSwKKy0JeworLQkJIjEzNDc5OTcxNzUxNzQ1NjgyNTgxMzUxNDU1MzEx MzE0MjA4MDkzODk4NjA3MjI5NDI5NzQwNjE4MzkwMzkwNzAyMDc5IiwKKy0JCSJkNThiNjFhYTQx YzMyZGQ1ZWJhNDYyNjQ3ZGJhNzVjNWQ2N2M4MzYwNmMwYWYyYmQ5Mjg0NDZhOSIsCistCQkiZDI0 YmE2YTgzN2JlMDQ2MGRkMTA3YWU3NzcyNTY5NmQyMTE0NDZjNTYwOWI0NTk1OTc2YjE2YmQiLAor LQl9LAorLQl7CistCQkiMTM0Nzk5NzI5MzE4NjUzMjgxMDY0ODY5NzE1NDYzMjQ0NjUzOTI5NTI5 NzU5ODAzNDMyMjgxNjA5NjI3MDI4Njg0NzkiLAorLQkJImRjOWZhNzc5NzhhMDA1NTEwOTgwZTky OWExNDg1ZjYzNzE2ZGY2OTVkN2EwYzE4YmI1MThkZjAzIiwKKy0JCSJlZGUyYjAxNmYyZGRmZmMy YThjMDE1YjEzNDkyODI3NWNlMDllNTY2MWI3YWIxNGNlMGQxZDQwMyIsCistCX0sCistCXsKKy0J CSIxMTc5NTc3MzcwODgzNDkxNjAyNjQwNDE0MjQzNDE1MTA2NTUwNjkzMTYwNzM0MTUyMzM4ODE0 MDIyNTQ0MzI2NTUzNiIsCistCQkiNDk5ZDhiMjgyOWNmYjg3OWM5MDFmN2Q4NWQzNTcwNDVlZGFi NTUwMjg4MjRkMGYwNWJhMjc5YmEiLAorLQkJImJmOTI5NTM3YjA2ZTQwMTU5MTk2MzlkOTRmNTc4 MzhmYTMzZmMzZDk1MjU5OGRjZGJiNDRkNjM4IiwKKy0JfSwKKy0JeworLQkJIjc4NDI1NDU5MzA0 MzgyNjIzNjU3Mjg0NzU5NTk5MTM0NjQzNTQ2NzE3NzY2MjE4OTM5MTU3NzA5MCIsCistCQkiODI0 NmM5OTkxMzcxODY2MzJjNWY5ZWRkZjNiMWIwZTE3NjRjNWU4YmQwZTBkOGE1NTRiOWNiNzciLAor LQkJImU4MGVkODY2MGJjMWNiMTdhYzdkODQ1YmU0MGE3YTAyMmQzMzA2ZjExNmFlOWY4MWZlYTY1 OTQ3IiwKKy0JfSwKKy0JeworLQkJIjEzNDc5NzY3NjQ1NTA1NjU0NzQ2NjIzODg3Nzk3NzgzMzg3 ODUzNTc2MTc0MTkzNDgwNjk1ODI2NDQyODU4MDEyNjcxIiwKKy0JCSI2NjcwYzIwYWZjY2VhZWE2 NzJjOTdmNzVlMmU5ZGQ1Yzg0NjBlNTRiYjM4NTM4ZWJiNGJkMzBlYiIsCistCQkiZjI4MGQ4MDA4 ZDA3YTRjYWY1NDI3MWY5OTM1MjdkNDZmZjNmZjQ2ZmQxMTkwYTNmMWZhYTRmNzQiLAorLQl9LAor LQl7CistCQkiMjA1Njg4MDY5NjY1MTUwNzUzODQyMTI2MTc3MzcyMDE1NTQ0ODc0NTUwNTE4OTY2 MTY4NzM1NTg5NTk3MTgzIiwKKy0JCSJlY2E5MzQyNDc0MjVjZmQ5NDliNzk1Y2I1Y2UxZWZmNDAx NTUwMzg2ZTI4ZDFhNGM1YThlYiIsCistCQkiZDRjMDEwNDBkYmExOTYyODkzMWJjODg1NTM3MDMx N2M3MjJjYmQ5Y2E2MTU2OTg1ZjFjMmU5Y2UiLAorLQl9LAorLQl7CistCQkiMTM0Nzk5NjY5MzA5 MTkzMzc3Mjg4OTUxNjg0NjIwOTA2ODMyNDkxNTk3MDI5NzcxMTM4MjMzODQ2MTgyODIxMjMyOTUi LAorLQkJImVmMzUzYmY1YzczY2Q1NTFiOTZkNTk2ZmJjOWE2N2YxNmQ2MWRkOWZlNTZhZjE5ZGUx ZmJhOWNkIiwKKy0JCSIyMTc3MWI5Y2RjZTNlODQzMGMwOWIzODM4YmU3MGI0OGMyMWUxNWJjMDll ZTFmMmQ3OTQ1YjkxZiIsCistCX0sCistCXsKKy0JCSI1MDIxMDczMTc5MTQxNTYxMjQ4Nzc1NjQ0 MTM0MTg1MTg5NTU4NDM5MzcxNzQ1MzEyOTAwNzQ5NzIxNiIsCistCQkiNDAzNjA1MmEzMDkxZWI0 ODEwNDZhZDMyODljOTVkM2FjOTA1Y2EwMDIzZGUyYzAzZWNkNDUxY2YiLAorLQkJImQ3NjgxNjVh MzhhMmI5NmY4MTI1ODZhOWQ1OWQ0MTM2MDM1ZDljODUzYTViZjJlMWM4NmE0OTkzIiwKKy0JfSwK Ky0JeworLQkJIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0 NDI0MzkxNzIxNjgyNzIyMzY4MDQxIiwKKy0JCSJmY2M3ZjJiNDVkZjFjZDVhM2MwYzA3MzFjYTQ3 YThhZjc1Y2ZiMDM0N2U4MzU0ZWVmZTc4MjQ1NSIsCistCQkiZjJhMjhlZWZkOGIzNDU4MzIxMTZm MWU1NzRmMmM2YjJjODk1YWE4YzI0OTQxZjQwZDhiODBhZDEiLAorLQl9LAorLQl7CistCQkiMjY5 NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3 MjIzNjgwNDIiLAorLQkJImExZTgxYzA0ZjMwY2UyMDFjN2M5YWNlNzg1ZWQ0NGNjMzNiNDU1YTAy MmYyYWNkYmM2Y2FlODNjIiwKKy0JCSIyMzBlMDkzYzI0ZjYzOGY1MzNkYWM2ZTJiNmQwMWRhM2I1 ZTdmNDU0MjkzMTVjYTkzZmI4ZTYzNCIsCistCX0sCistCXsKKy0JCSIyNjk1OTk0NjY2NzE1MDYz OTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA0MyIsCist CQkiYzlmZjYxYjA0MDg3NGMwNTY4NDc5MjE2ODI0YTE1ZWFiMWE4MzhhNzk3ZDE4OTc0NjIyNmU0 Y2MiLAorLQkJIjE1NjcyOWYxYTAwMzY0NzAzMDY2NjA1NGUyMDgxODBmOGY3YjBkZjIyNDllNDRm YmE1OTMxZmZmIiwKKy0JfSwKKy0JeworLQkJIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3 MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQ0IiwKKy0JCSJiODM1N2MzYTZj ZWVmMjg4MzEwZTE3YjhiZmVmZjkyMDA4NDZjYThjMTk0MjQ5N2M0ODQ0MDNiYyIsCistCQkiZWI2 MTA1OTlmOTU5NDJkZjEwODJlNGY5NDI2ZDA4NmZiOWM2MjMxYWU4YjI0OTMzYWFiNWRiIiwKKy0J fSwKKy0JeworLQkJIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3 NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQ1IiwKKy0JCSJiNmVjNGZlMTc3NzM4MjQwNGVmNjc5OTk3 YmE4ZDFjYzVjZDhlODUzNDkyNTlmNTkwYzRjNjZkIiwKKy0JCSJjYzY2MmI5YmNiYTZmOTRlZTRm ZjFjOWMxMGJkNmRkZDBkMTM4ZGYyZDA5OWEyODIxNTJhNGI3ZiIsCistCX0sCistCXsKKy0JCSIy Njk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4 MjcyMjM2ODA0NiIsCistCQkiYmFhNGQ4NjM1NTExYTdkMjg4YWViZWVkZDEyY2U1MjlmZjEwMmM5 MWY5N2Y4NjdlMjE5MTZiZjkiLAorLQkJIjY4NjVhMGI4YTYwN2YwYjA0YjEzZDFjYjBhYTk5MmE1 YTk3ZjVlZThjYTE4NDllZmI5ZWQ4Njc4IiwKKy0JfSwKKy0JeworLQkJIjI2OTU5OTQ2NjY3MTUw NjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQ3IiwK Ky0JCSJhNTM2NDBjODNkYzIwODYwM2RlZDgzZTRlY2Y3NThmMjRjMzU3ZDdjZjQ4MDg4YjJjZTAx ZTlmYSIsCistCQkiMmE3ZWIzMjhkYmU2NjNiNWE0NjhiNWJjOTdhMDQwYTM3NDUzOTZiYTYzNmI5 NjQzNzBkYzMzNTIiLAorLQl9LAorLQl7CistCQkiMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUw ODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNDgiLAorLQkJIjM0ZThlMTdh NDMwZTQzMjg5NzkzYzM4M2ZhYzk3NzQyNDdiNDBlOWViZDMzNjY5ODFmY2ZhZWNhIiwKKy0JCSJk YWQ3ZTYwOGUzODA0ODA0MzRlYTY0MWNjODJjODJjYmM5MjgwMTQ2OWM4ZGIwMjA0ZjEzNDg5YSIs CistCX0sCistCXsKKy0JCSIyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1 NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA0OSIsCistCQkiNmUzMWVlMWRjMTM3ZjgxYjA1Njc1 MmU0ZGVhYjE0NDNhNDgxMDMzZTliNGM5M2EzMDQ0ZjRmN2EiLAorLQkJImRmODIyMjBmYzdhNDAy MTU0OTE2NTMyNTcyNWY5NGMzNDEwZGRiNTZjNTRlMTYxZmM5ZWY2MmVlIiwKKy0JfSwKKy0Jewor LQkJIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0Mzkx NzIxNjgyNzIyMzY4MDUwIiwKKy0JCSJlZjUzYjYyOTRhY2E0MzFmMGYzYzIyZGM4MmViOTA1MDMy NGYxZDg4ZDM3N2U3MTY0NDhlNTA3YyIsCistCQkiZGY0YWVmZmZiZjZkMTY5OWM5MzA0ODFjZDEw MjEyN2M5YTNkOTkyMDQ4YWIwNTkyOWI2ZTU5MjciLAorLQl9LAorLQl7CistCQkiMjY5NTk5NDY2 NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgw NTEiLAorLQkJImFlYTllMTdhMzA2NTE3ZWI4OTE1MmFhNzA5NmQyYzM4MWVjODEzYzUxYWE4ODBl N2JlZTJjMGZkIiwKKy0JCSJjNjQ0Y2YxNTRjYzgxZjVhZGU0OTM0NWU1NDFiNGQ0YjVjMWFkYjNl YjVjMDFjMTRlZTk0OWFhMiIsCistCX0sCistCXsKKy0JCSIyNjk1OTk0NjY2NzE1MDYzOTc5NDY2 NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA1MiIsCistCQkiMmZk Y2NjZmVlNzIwYTc3ZWY2Y2IzYmZiYjQ0N2Y5MzgzMTE3ZTNkYWE0YTA3ZTM2ZWQxNWY3OGQiLAor LQkJImM4ZThjZDFiMGJlNDBiMDg3N2NmY2ExOTU4NjAzMTIyZjFlNjkxNGY4NGI3ZThlOTY4YWU4 YjllIiwKKy0JfSwKKy0JeworLQkJIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1 OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDUzIiwKKy0JCSI4NThlNmY5Y2M2YzEyYzMx ZjVkZjEyNGFhNzc3NjdiMDVjOGJjMDIxYmQ2ODNkMmI1NTU3MTU1MCIsCistCQkiZmI5MjMyYzE1 YTNiYzc2NzNhM2EwM2IwMjUzODI0YzUzZDBmZDE0MTFiMWNhYmUyZTE4N2ZiODciLAorLQl9LAor LQl7CistCQkiMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0 MjQzOTE3MjE2ODI3MjIzNjgwNTQiLAorLQkJImRiMmY2YmU2MzBlMjQ2YTVjZjdkOTliODUxOTRi MTIzZDQ4N2UyZDQ2NmI5NGIyNGEwM2MzZTI4IiwKKy0JCSJmMGM1Y2ZmN2FiNjgwZDA5ZWUxMWRh ZTg0ZTljMTA3MmFjNDhlYTJlNzQ0YjFiN2Y3MmZkNDY5ZSIsCistCX0sCistCXsKKy0JCSIyNjk1 OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4Mjcy MjM2ODA1NSIsCistCQkiMWYyNDgzZjgyNTcyMjUxZmNhOTc1ZmVhNDBkYjgyMWRmOGFkODJhM2Mw MDJlZTZjNTcxMTI0MDgiLAorLQkJIjc2MDUwZjMzNDhhZjI2NjRhYWMzYThiMDUyODEzMDRlYmM3 YTc5MTRjNmFkNTBhNGI0ZWFjMzgzIiwKKy0JfSwKKy0JeworLQkJIjI2OTU5OTQ2NjY3MTUwNjM5 Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDU2IiwKKy0J CSIzMWM0OWFlNzViY2U3ODA3Y2RmZjIyMDU1ZDk0ZWU5MDIxZmVkYmI1YWI1MWM1NzUyNmYwMTFh YSIsCistCQkiZDgxNzQwMGU4YmE5Y2ExM2E0NWYzNjBlM2QxMjFlYWFlYjM5YWY4MmQ2MDAxYzgx ODZmNWY4NjYiLAorLQl9LAorLQl7CistCQkiMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcw MTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNTciLAorLQkJImFlOTlmZWViYjVk MjY5NDViNTQ4OTIwOTJhOGFlZTAyOTEyOTMwZmE0MWNkMTE0ZTQwNDQ3MzAxIiwKKy0JCSJmYjdk YTdmNWYxM2E0M2I4MTc3NDM3M2M4NzljZDMyZDY5MzRjMDVmYTc1OGVlYjE0ZmNmYWIzOCIsCist CX0sCistCXsKKy0JCSIyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1Nzgw NzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA1OCIsCistCQkiZGYxYjFkNjZhNTUxZDBkMzFlZmY4MjI1 NThiOWQyY2M3NWMyMTgwMjc5ZmUwZDA4ZmQ4OTZkMDQiLAorLQkJIjVjMDgwZmMzNTIyZjQxYmJi M2Y1NWE5N2NmZWNmMjFmODgyY2U4Y2JiMWU1MGNhNmU2N2U1NmRjIiwKKy0JfSwKKy0JeworLQkJ IjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIx NjgyNzIyMzY4MDU5IiwKKy0JCSI3MDZhNDZkYzc2ZGNiNzY3OThlNjBlNmQ4OTQ3NDc4OGQxNmRj MTgwMzJkMjY4ZmQxYTcwNGZhNiIsCistCQkiZTNkNDg5NTg0M2RhMTg4ZmQ1OGZiMDU2Nzk3NmQ3 YjUwMzU5ZDZiNzg1MzBjOGY2MmQxYjE3NDYiLAorLQl9LAorLQl7CistCQkiMjY5NTk5NDY2Njcx NTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNjAi LAorLQkJImI3MGUwY2JkNmJiNGJmN2YzMjEzOTBiOTRhMDNjMWQzNTZjMjExMjIzNDMyODBkNjEx NWMxZDIxIiwKKy0JCSI0MmM4OWM3NzRhMDhkYzA0YjNkZDIwMTkzMmJjOGE1ZWE1ZjhiODliYmIy YTdlNjY3YWZmODFjZCIsCistCX0sCistfQorLQorLWZ1bmMgVGVzdEJhc2VNdWx0KHQgKnRlc3Rp bmcuVCkgeworLQlwMjI0IDo9IFAyMjQoKQorLQlmb3IgaSwgZSA6PSByYW5nZSBwMjI0QmFzZU11 bHRUZXN0cyB7CistCQlrLCBvayA6PSBuZXcoYmlnLkludCkuU2V0U3RyaW5nKGUuaywgMTApCist CQlpZiAhb2sgeworLQkJCXQuRXJyb3JmKCIlZDogYmFkIHZhbHVlIGZvciBrOiAlcyIsIGksIGUu aykKKy0JCX0KKy0JCXgsIHkgOj0gcDIyNC5TY2FsYXJCYXNlTXVsdChrLkJ5dGVzKCkpCistCQlp ZiBmbXQuU3ByaW50ZigiJXgiLCB4KSAhPSBlLnggfHwgZm10LlNwcmludGYoIiV4IiwgeSkgIT0g ZS55IHsKKy0JCQl0LkVycm9yZigiJWQ6IGJhZCBvdXRwdXQgZm9yIGs9JXM6IGdvdCAoJXgsICV4 KSwgd2FudCAoJXMsICVzKSIsIGksIGUuaywgeCwgeSwgZS54LCBlLnkpCistCQl9CistCQlpZiB0 ZXN0aW5nLlNob3J0KCkgJiYgaSA+IDUgeworLQkJCWJyZWFrCistCQl9CistCX0KKy19CistCist ZnVuYyBUZXN0R2VuZXJpY0Jhc2VNdWx0KHQgKnRlc3RpbmcuVCkgeworLQkvLyBXZSB1c2UgdGhl IFAyMjQgQ3VydmVQYXJhbXMgZGlyZWN0bHkgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZ2VuZXJpYyBp bXBsZW1lbnRhdGlvbi4KKy0JcDIyNCA6PSBQMjI0KCkuUGFyYW1zKCkKKy0JZm9yIGksIGUgOj0g cmFuZ2UgcDIyNEJhc2VNdWx0VGVzdHMgeworLQkJaywgb2sgOj0gbmV3KGJpZy5JbnQpLlNldFN0 cmluZyhlLmssIDEwKQorLQkJaWYgIW9rIHsKKy0JCQl0LkVycm9yZigiJWQ6IGJhZCB2YWx1ZSBm b3IgazogJXMiLCBpLCBlLmspCistCQl9CistCQl4LCB5IDo9IHAyMjQuU2NhbGFyQmFzZU11bHQo ay5CeXRlcygpKQorLQkJaWYgZm10LlNwcmludGYoIiV4IiwgeCkgIT0gZS54IHx8IGZtdC5TcHJp bnRmKCIleCIsIHkpICE9IGUueSB7CistCQkJdC5FcnJvcmYoIiVkOiBiYWQgb3V0cHV0IGZvciBr PSVzOiBnb3QgKCV4LCAleCksIHdhbnQgKCVzLCAlcykiLCBpLCBlLmssIHgsIHksIGUueCwgZS55 KQorLQkJfQorLQkJaWYgdGVzdGluZy5TaG9ydCgpICYmIGkgPiA1IHsKKy0JCQlicmVhaworLQkJ fQorLQl9CistfQorLQorIGZ1bmMgVGVzdEluZmluaXR5KHQgKnRlc3RpbmcuVCkgeworIAl0ZXN0 cyA6PSBbXXN0cnVjdCB7CisgCQluYW1lICBzdHJpbmcKKyAJCWN1cnZlIEN1cnZlCisgCX17Cist CQl7InAyMjQiLCBQMjI0KCl9LAorIAkJeyJwMjU2IiwgUDI1NigpfSwKKyAJfQorIAorQEAgLTM1 OSw0MyArNDQsMyBAQCBmdW5jIFRlc3RJbmZpbml0eSh0ICp0ZXN0aW5nLlQpIHsKKyAJCX0KKyAJ fQorIH0KKy0KKy1mdW5jIEJlbmNobWFya0Jhc2VNdWx0KGIgKnRlc3RpbmcuQikgeworLQliLlJl c2V0VGltZXIoKQorLQlwMjI0IDo9IFAyMjQoKQorLQllIDo9IHAyMjRCYXNlTXVsdFRlc3RzWzI1 XQorLQlrLCBfIDo9IG5ldyhiaWcuSW50KS5TZXRTdHJpbmcoZS5rLCAxMCkKKy0JYi5TdGFydFRp bWVyKCkKKy0JZm9yIGkgOj0gMDsgaSA8IGIuTjsgaSsrIHsKKy0JCXAyMjQuU2NhbGFyQmFzZU11 bHQoay5CeXRlcygpKQorLQl9CistfQorLQorLWZ1bmMgVGVzdE1hcnNoYWwodCAqdGVzdGluZy5U KSB7CistCXAyMjQgOj0gUDIyNCgpCistCV8sIHgsIHksIGVyciA6PSBHZW5lcmF0ZUtleShwMjI0 LCByYW5kLlJlYWRlcikKKy0JaWYgZXJyICE9IG5pbCB7CistCQl0LkVycm9yKGVycikKKy0JCXJl dHVybgorLQl9CistCXNlcmlhbGl6ZWQgOj0gTWFyc2hhbChwMjI0LCB4LCB5KQorLQl4eCwgeXkg Oj0gVW5tYXJzaGFsKHAyMjQsIHNlcmlhbGl6ZWQpCistCWlmIHh4ID09IG5pbCB7CistCQl0LkVy cm9yKCJmYWlsZWQgdG8gdW5tYXJzaGFsIikKKy0JCXJldHVybgorLQl9CistCWlmIHh4LkNtcCh4 KSAhPSAwIHx8IHl5LkNtcCh5KSAhPSAwIHsKKy0JCXQuRXJyb3IoInVubWFyc2hhbCByZXR1cm5l ZCBkaWZmZXJlbnQgdmFsdWVzIikKKy0JCXJldHVybgorLQl9CistfQorLQorLWZ1bmMgVGVzdFAy MjRPdmVyZmxvdyh0ICp0ZXN0aW5nLlQpIHsKKy0JLy8gVGhpcyB0ZXN0cyBmb3IgYSBzcGVjaWZp YyBidWcgaW4gdGhlIFAyMjQgaW1wbGVtZW50YXRpb24uCistCXAyMjQgOj0gUDIyNCgpCistCXBv aW50RGF0YSwgXyA6PSBoZXguRGVjb2RlU3RyaW5nKCIwNDlCNTM1QjQ1RkIwQTIwNzIzOThBNjgz MTgzNDYyNEM3RTMyQ0NGRDVBNEI5MzNCQ0VBRjc3RjFERDk0NUUwOEJCRTUxNzhGNUVERjVFNzMz Mzg4RjE5NkQyQTYzMUQyRTA3NUJCMTZDQkZFRUExNUIiKQorLQl4LCB5IDo9IFVubWFyc2hhbChw MjI0LCBwb2ludERhdGEpCistCWlmICFwMjI0LklzT25DdXJ2ZSh4LCB5KSB7CistCQl0LkVycm9y KCJQMjI0IGZhaWxlZCB0byB2YWxpZGF0ZSBhIGNvcnJlY3QgcG9pbnQiKQorLQl9CistfQorLS0t IGxpYmdvL2dvL2NyeXB0by9lY2RzYS9lY2RzYV90ZXN0LmdvLmpqCTIwMTItMTItMTMgMTE6MzI6 MDIuNTg5MDM5NzgyICswMTAwCisrKysgbGliZ28vZ28vY3J5cHRvL2VjZHNhL2VjZHNhX3Rlc3Qu Z28JMjAxNC0wMi0xOCAxNzoyODoyMi45MDk2OTIwMjIgKzAxMDAKK0BAIC0zMyw3ICszMyw2IEBA IGZ1bmMgdGVzdEtleUdlbmVyYXRpb24odCAqdGVzdGluZy5ULCBjIGUKKyB9CisgCisgZnVuYyBU ZXN0S2V5R2VuZXJhdGlvbih0ICp0ZXN0aW5nLlQpIHsKKy0JdGVzdEtleUdlbmVyYXRpb24odCwg ZWxsaXB0aWMuUDIyNCgpLCAicDIyNCIpCisgCWlmIHRlc3RpbmcuU2hvcnQoKSB7CisgCQlyZXR1 cm4KKyAJfQorQEAgLTYzLDcgKzYyLDYgQEAgZnVuYyB0ZXN0U2lnbkFuZFZlcmlmeSh0ICp0ZXN0 aW5nLlQsIGMgZQorIH0KKyAKKyBmdW5jIFRlc3RTaWduQW5kVmVyaWZ5KHQgKnRlc3RpbmcuVCkg eworLQl0ZXN0U2lnbkFuZFZlcmlmeSh0LCBlbGxpcHRpYy5QMjI0KCksICJwMjI0IikKKyAJaWYg dGVzdGluZy5TaG9ydCgpIHsKKyAJCXJldHVybgorIAl9CitAQCAtMTI5LDggKzEyNyw2IEBAIGZ1 bmMgVGVzdFZlY3RvcnModCAqdGVzdGluZy5UKSB7CisgCQkJcGFydHMgOj0gc3RyaW5ncy5TcGxp dE4obGluZSwgIiwiLCAyKQorIAorIAkJCXN3aXRjaCBwYXJ0c1swXSB7CistCQkJY2FzZSAiUC0y MjQiOgorLQkJCQlwdWIuQ3VydmUgPSBlbGxpcHRpYy5QMjI0KCkKKyAJCQljYXNlICJQLTI1NiI6 CisgCQkJCXB1Yi5DdXJ2ZSA9IGVsbGlwdGljLlAyNTYoKQorIAkJCWNhc2UgIlAtMzg0IjoKKy0t LSBsaWJnby9nby9jcnlwdG8veDUwOS94NTA5LmdvLmpqCTIwMTMtMDgtMTQgMTM6NTU6MDguOTM5 ODQzNjA3ICswMjAwCisrKysgbGliZ28vZ28vY3J5cHRvL3g1MDkveDUwOS5nbwkyMDE0LTAyLTE4 IDE3OjI4OjIyLjk0MzY5MTc2NCArMDEwMAorQEAgLTI4Myw5ICsyODMsNiBAQCBmdW5jIGdldFB1 YmxpY0tleUFsZ29yaXRobUZyb21PSUQob2lkIGFzCisgCisgLy8gUkZDIDU0ODAsIDIuMS4xLjEu IE5hbWVkIEN1cnZlCisgLy8KKy0vLyBzZWNwMjI0cjEgT0JKRUNUIElERU5USUZJRVIgOjo9IHsK Ky0vLyAgIGlzbygxKSBpZGVudGlmaWVkLW9yZ2FuaXphdGlvbigzKSBjZXJ0aWNvbSgxMzIpIGN1 cnZlKDApIDMzIH0KKy0vLworIC8vIHNlY3AyNTZyMSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gewor IC8vICAgaXNvKDEpIG1lbWJlci1ib2R5KDIpIHVzKDg0MCkgYW5zaS1YOS02MigxMDA0NSkgY3Vy dmVzKDMpCisgLy8gICBwcmltZSgxKSA3IH0KK0BAIC0yOTgsNyArMjk1LDYgQEAgZnVuYyBnZXRQ dWJsaWNLZXlBbGdvcml0aG1Gcm9tT0lEKG9pZCBhcworIC8vCisgLy8gTkI6IHNlY3AyNTZyMSBp cyBlcXVpdmFsZW50IHRvIHByaW1lMjU2djEKKyB2YXIgKAorLQlvaWROYW1lZEN1cnZlUDIyNCA9 IGFzbjEuT2JqZWN0SWRlbnRpZmllcnsxLCAzLCAxMzIsIDAsIDMzfQorIAlvaWROYW1lZEN1cnZl UDI1NiA9IGFzbjEuT2JqZWN0SWRlbnRpZmllcnsxLCAyLCA4NDAsIDEwMDQ1LCAzLCAxLCA3fQor IAlvaWROYW1lZEN1cnZlUDM4NCA9IGFzbjEuT2JqZWN0SWRlbnRpZmllcnsxLCAzLCAxMzIsIDAs IDM0fQorIAlvaWROYW1lZEN1cnZlUDUyMSA9IGFzbjEuT2JqZWN0SWRlbnRpZmllcnsxLCAzLCAx MzIsIDAsIDM1fQorQEAgLTMwNiw4ICszMDIsNiBAQCB2YXIgKAorIAorIGZ1bmMgbmFtZWRDdXJ2 ZUZyb21PSUQob2lkIGFzbjEuT2JqZWN0SWRlbnRpZmllcikgZWxsaXB0aWMuQ3VydmUgeworIAlz d2l0Y2ggeworLQljYXNlIG9pZC5FcXVhbChvaWROYW1lZEN1cnZlUDIyNCk6CistCQlyZXR1cm4g ZWxsaXB0aWMuUDIyNCgpCisgCWNhc2Ugb2lkLkVxdWFsKG9pZE5hbWVkQ3VydmVQMjU2KToKKyAJ CXJldHVybiBlbGxpcHRpYy5QMjU2KCkKKyAJY2FzZSBvaWQuRXF1YWwob2lkTmFtZWRDdXJ2ZVAz ODQpOgorQEAgLTMyMCw4ICszMTQsNiBAQCBmdW5jIG5hbWVkQ3VydmVGcm9tT0lEKG9pZCBhc24x Lk9iamVjdElkCisgCisgZnVuYyBvaWRGcm9tTmFtZWRDdXJ2ZShjdXJ2ZSBlbGxpcHRpYy5DdXJ2 ZSkgKGFzbjEuT2JqZWN0SWRlbnRpZmllciwgYm9vbCkgeworIAlzd2l0Y2ggY3VydmUgeworLQlj YXNlIGVsbGlwdGljLlAyMjQoKToKKy0JCXJldHVybiBvaWROYW1lZEN1cnZlUDIyNCwgdHJ1ZQor IAljYXNlIGVsbGlwdGljLlAyNTYoKToKKyAJCXJldHVybiBvaWROYW1lZEN1cnZlUDI1NiwgdHJ1 ZQorIAljYXNlIGVsbGlwdGljLlAzODQoKToKK0BAIC0xMjEyLDcgKzEyMDQsNyBAQCBmdW5jIENy ZWF0ZUNlcnRpZmljYXRlKHJhbmQgaW8uUmVhZGVyLCB0CisgCQloYXNoRnVuYyA9IGNyeXB0by5T SEExCisgCWNhc2UgKmVjZHNhLlByaXZhdGVLZXk6CisgCQlzd2l0Y2ggcHJpdi5DdXJ2ZSB7Cist CQljYXNlIGVsbGlwdGljLlAyMjQoKSwgZWxsaXB0aWMuUDI1NigpOgorKwkJY2FzZSBlbGxpcHRp Yy5QMjU2KCk6CisgCQkJaGFzaEZ1bmMgPSBjcnlwdG8uU0hBMjU2CisgCQkJc2lnbmF0dXJlQWxn b3JpdGhtLkFsZ29yaXRobSA9IG9pZFNpZ25hdHVyZUVDRFNBV2l0aFNIQTI1NgorIAkJY2FzZSBl bGxpcHRpYy5QMzg0KCk6CistLS0gbGliZ28vZ28vY3J5cHRvL2VsbGlwdGljL3AyMjQuZ28uamoJ MjAxMi0xMi0xMyAxMTozMjowMi42NDEwMzk1MzMgKzAxMDAKKysrKyBsaWJnby9nby9jcnlwdG8v ZWxsaXB0aWMvcDIyNC5nbwkyMDE0LTAyLTE1IDExOjQwOjU2LjE5MTU1NzkyOCArMDEwMAorQEAg LTEsNzY1ICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgMjAxMiBUaGUgR28gQXV0aG9ycy4gIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCistLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg YnkgYSBCU0Qtc3R5bGUKKy0vLyBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNF TlNFIGZpbGUuCistCistcGFja2FnZSBlbGxpcHRpYworLQorLS8vIFRoaXMgaXMgYSBjb25zdGFu dC10aW1lLCAzMi1iaXQgaW1wbGVtZW50YXRpb24gb2YgUDIyNC4gU2VlIEZJUFMgMTg2LTMsCist Ly8gc2VjdGlvbiBELjIuMi4KKy0vLworLS8vIFNlZSBodHRwOi8vd3d3LmltcGVyaWFsdmlvbGV0 Lm9yZy8yMDEwLzEyLzA0L2VjYy5odG1sIChbMV0pIGZvciBiYWNrZ3JvdW5kLgorLQorLWltcG9y dCAoCistCSJtYXRoL2JpZyIKKy0pCistCistdmFyIHAyMjQgcDIyNEN1cnZlCistCistdHlwZSBw MjI0Q3VydmUgc3RydWN0IHsKKy0JKkN1cnZlUGFyYW1zCistCWd4LCBneSwgYiBwMjI0RmllbGRF bGVtZW50CistfQorLQorLWZ1bmMgaW5pdFAyMjQoKSB7CistCS8vIFNlZSBGSVBTIDE4Ni0zLCBz ZWN0aW9uIEQuMi4yCistCXAyMjQuQ3VydmVQYXJhbXMgPSBuZXcoQ3VydmVQYXJhbXMpCistCXAy MjQuUCwgXyA9IG5ldyhiaWcuSW50KS5TZXRTdHJpbmcoIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3 MDE1MDg3MDE5NjMwNjczNTU3OTE2MjYwMDI2MzA4MTQzNTEwMDY2Mjk4ODgxIiwgMTApCistCXAy MjQuTiwgXyA9IG5ldyhiaWcuSW50KS5TZXRTdHJpbmcoIjI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3 MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDYxIiwgMTApCistCXAy MjQuQiwgXyA9IG5ldyhiaWcuSW50KS5TZXRTdHJpbmcoImI0MDUwYTg1MGMwNGIzYWJmNTQxMzI1 NjUwNDRiMGI3ZDdiZmQ4YmEyNzBiMzk0MzIzNTVmZmI0IiwgMTYpCistCXAyMjQuR3gsIF8gPSBu ZXcoYmlnLkludCkuU2V0U3RyaW5nKCJiNzBlMGNiZDZiYjRiZjdmMzIxMzkwYjk0YTAzYzFkMzU2 YzIxMTIyMzQzMjgwZDYxMTVjMWQyMSIsIDE2KQorLQlwMjI0Lkd5LCBfID0gbmV3KGJpZy5JbnQp LlNldFN0cmluZygiYmQzNzYzODhiNWY3MjNmYjRjMjJkZmU2Y2Q0Mzc1YTA1YTA3NDc2NDQ0ZDU4 MTk5ODUwMDdlMzQiLCAxNikKKy0JcDIyNC5CaXRTaXplID0gMjI0CistCistCXAyMjRGcm9tQmln KCZwMjI0Lmd4LCBwMjI0Lkd4KQorLQlwMjI0RnJvbUJpZygmcDIyNC5neSwgcDIyNC5HeSkKKy0J cDIyNEZyb21CaWcoJnAyMjQuYiwgcDIyNC5CKQorLX0KKy0KKy0vLyBQMjI0IHJldHVybnMgYSBD dXJ2ZSB3aGljaCBpbXBsZW1lbnRzIFAtMjI0IChzZWUgRklQUyAxODYtMywgc2VjdGlvbiBELjIu MikKKy1mdW5jIFAyMjQoKSBDdXJ2ZSB7CistCWluaXRvbmNlLkRvKGluaXRBbGwpCistCXJldHVy biBwMjI0CistfQorLQorLWZ1bmMgKGN1cnZlIHAyMjRDdXJ2ZSkgUGFyYW1zKCkgKkN1cnZlUGFy YW1zIHsKKy0JcmV0dXJuIGN1cnZlLkN1cnZlUGFyYW1zCistfQorLQorLWZ1bmMgKGN1cnZlIHAy MjRDdXJ2ZSkgSXNPbkN1cnZlKGJpZ1gsIGJpZ1kgKmJpZy5JbnQpIGJvb2wgeworLQl2YXIgeCwg eSBwMjI0RmllbGRFbGVtZW50CistCXAyMjRGcm9tQmlnKCZ4LCBiaWdYKQorLQlwMjI0RnJvbUJp ZygmeSwgYmlnWSkKKy0KKy0JLy8gecKyID0geMKzIC0gM3ggKyBiCistCXZhciB0bXAgcDIyNExh cmdlRmllbGRFbGVtZW50CistCXZhciB4MyBwMjI0RmllbGRFbGVtZW50CistCXAyMjRTcXVhcmUo JngzLCAmeCwgJnRtcCkKKy0JcDIyNE11bCgmeDMsICZ4MywgJngsICZ0bXApCistCistCWZvciBp IDo9IDA7IGkgPCA4OyBpKysgeworLQkJeFtpXSAqPSAzCistCX0KKy0JcDIyNFN1YigmeDMsICZ4 MywgJngpCistCXAyMjRSZWR1Y2UoJngzKQorLQlwMjI0QWRkKCZ4MywgJngzLCAmY3VydmUuYikK Ky0JcDIyNENvbnRyYWN0KCZ4MywgJngzKQorLQorLQlwMjI0U3F1YXJlKCZ5LCAmeSwgJnRtcCkK Ky0JcDIyNENvbnRyYWN0KCZ5LCAmeSkKKy0KKy0JZm9yIGkgOj0gMDsgaSA8IDg7IGkrKyB7Cist CQlpZiB5W2ldICE9IHgzW2ldIHsKKy0JCQlyZXR1cm4gZmFsc2UKKy0JCX0KKy0JfQorLQlyZXR1 cm4gdHJ1ZQorLX0KKy0KKy1mdW5jIChwMjI0Q3VydmUpIEFkZChiaWdYMSwgYmlnWTEsIGJpZ1gy LCBiaWdZMiAqYmlnLkludCkgKHgsIHkgKmJpZy5JbnQpIHsKKy0JdmFyIHgxLCB5MSwgejEsIHgy LCB5MiwgejIsIHgzLCB5MywgejMgcDIyNEZpZWxkRWxlbWVudAorLQorLQlwMjI0RnJvbUJpZygm eDEsIGJpZ1gxKQorLQlwMjI0RnJvbUJpZygmeTEsIGJpZ1kxKQorLQlpZiBiaWdYMS5TaWduKCkg IT0gMCB8fCBiaWdZMS5TaWduKCkgIT0gMCB7CistCQl6MVswXSA9IDEKKy0JfQorLQlwMjI0RnJv bUJpZygmeDIsIGJpZ1gyKQorLQlwMjI0RnJvbUJpZygmeTIsIGJpZ1kyKQorLQlpZiBiaWdYMi5T aWduKCkgIT0gMCB8fCBiaWdZMi5TaWduKCkgIT0gMCB7CistCQl6MlswXSA9IDEKKy0JfQorLQor LQlwMjI0QWRkSmFjb2JpYW4oJngzLCAmeTMsICZ6MywgJngxLCAmeTEsICZ6MSwgJngyLCAmeTIs ICZ6MikKKy0JcmV0dXJuIHAyMjRUb0FmZmluZSgmeDMsICZ5MywgJnozKQorLX0KKy0KKy1mdW5j IChwMjI0Q3VydmUpIERvdWJsZShiaWdYMSwgYmlnWTEgKmJpZy5JbnQpICh4LCB5ICpiaWcuSW50 KSB7CistCXZhciB4MSwgeTEsIHoxLCB4MiwgeTIsIHoyIHAyMjRGaWVsZEVsZW1lbnQKKy0KKy0J cDIyNEZyb21CaWcoJngxLCBiaWdYMSkKKy0JcDIyNEZyb21CaWcoJnkxLCBiaWdZMSkKKy0JejFb MF0gPSAxCistCistCXAyMjREb3VibGVKYWNvYmlhbigmeDIsICZ5MiwgJnoyLCAmeDEsICZ5MSwg JnoxKQorLQlyZXR1cm4gcDIyNFRvQWZmaW5lKCZ4MiwgJnkyLCAmejIpCistfQorLQorLWZ1bmMg KHAyMjRDdXJ2ZSkgU2NhbGFyTXVsdChiaWdYMSwgYmlnWTEgKmJpZy5JbnQsIHNjYWxhciBbXWJ5 dGUpICh4LCB5ICpiaWcuSW50KSB7CistCXZhciB4MSwgeTEsIHoxLCB4MiwgeTIsIHoyIHAyMjRG aWVsZEVsZW1lbnQKKy0KKy0JcDIyNEZyb21CaWcoJngxLCBiaWdYMSkKKy0JcDIyNEZyb21CaWco JnkxLCBiaWdZMSkKKy0JejFbMF0gPSAxCistCistCXAyMjRTY2FsYXJNdWx0KCZ4MiwgJnkyLCAm ejIsICZ4MSwgJnkxLCAmejEsIHNjYWxhcikKKy0JcmV0dXJuIHAyMjRUb0FmZmluZSgmeDIsICZ5 MiwgJnoyKQorLX0KKy0KKy1mdW5jIChjdXJ2ZSBwMjI0Q3VydmUpIFNjYWxhckJhc2VNdWx0KHNj YWxhciBbXWJ5dGUpICh4LCB5ICpiaWcuSW50KSB7CistCXZhciB6MSwgeDIsIHkyLCB6MiBwMjI0 RmllbGRFbGVtZW50CistCistCXoxWzBdID0gMQorLQlwMjI0U2NhbGFyTXVsdCgmeDIsICZ5Miwg JnoyLCAmY3VydmUuZ3gsICZjdXJ2ZS5neSwgJnoxLCBzY2FsYXIpCistCXJldHVybiBwMjI0VG9B ZmZpbmUoJngyLCAmeTIsICZ6MikKKy19CistCistLy8gRmllbGQgZWxlbWVudCBmdW5jdGlvbnMu CistLy8KKy0vLyBUaGUgZmllbGQgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggaXMg4oSkL3DihKQg d2hlcmUgcCA9IDIqKjIyNCAtIDIqKjk2ICsgMS4KKy0vLworLS8vIEZpZWxkIGVsZW1lbnRzIGFy ZSByZXByZXNlbnRlZCBieSBhIEZpZWxkRWxlbWVudCwgd2hpY2ggaXMgYSB0eXBlZGVmIHRvIGFu CistLy8gYXJyYXkgb2YgOCB1aW50MzIncy4gVGhlIHZhbHVlIG9mIGEgRmllbGRFbGVtZW50LCBh LCBpczoKKy0vLyAgIGFbMF0gKyAyKioyOMK3YVsxXSArIDIqKjU2wrdhWzFdICsgLi4uICsgMioq MTk2wrdhWzddCistLy8KKy0vLyBVc2luZyAyOC1iaXQgbGltYnMgbWVhbnMgdGhhdCB0aGVyZSdz IG9ubHkgNCBiaXRzIG9mIGhlYWRyb29tLCB3aGljaCBpcyBsZXNzCistLy8gdGhhbiB3ZSB3b3Vs ZCByZWFsbHkgbGlrZS4gQnV0IGl0IGhhcyB0aGUgdXNlZnVsIGZlYXR1cmUgdGhhdCB3ZSBoaXQg MioqMjI0CistLy8gZXhhY3RseSwgbWFraW5nIHRoZSByZWZsZWN0aW9ucyBkdXJpbmcgYSByZWR1 Y2UgbXVjaCBuaWNlci4KKy10eXBlIHAyMjRGaWVsZEVsZW1lbnQgWzhddWludDMyCistCistLy8g cDIyNFAgaXMgdGhlIG9yZGVyIG9mIHRoZSBmaWVsZCwgcmVwcmVzZW50ZWQgYXMgYSBwMjI0Rmll bGRFbGVtZW50LgorLXZhciBwMjI0UCA9IFs4XXVpbnQzMnsxLCAwLCAwLCAweGZmZmYwMDAsIDB4 ZmZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmZmZmYsIDB4ZmZmZmZmZn0KKy0KKy0vLyBwMjI0SXNa ZXJvIHJldHVybnMgMSBpZiBhID09IDAgbW9kIHAgYW5kIDAgb3RoZXJ3aXNlLgorLS8vCistLy8g YVtpXSA8IDIqKjI5CistZnVuYyBwMjI0SXNaZXJvKGEgKnAyMjRGaWVsZEVsZW1lbnQpIHVpbnQz MiB7CistCS8vIFNpbmNlIGEgcDIyNEZpZWxkRWxlbWVudCBjb250YWlucyAyMjQgYml0cyB0aGVy ZSBhcmUgdHdvIHBvc3NpYmxlCistCS8vIHJlcHJlc2VudGF0aW9ucyBvZiAwOiAwIGFuZCBwLgor LQl2YXIgbWluaW1hbCBwMjI0RmllbGRFbGVtZW50CistCXAyMjRDb250cmFjdCgmbWluaW1hbCwg YSkKKy0KKy0JdmFyIGlzWmVybywgaXNQIHVpbnQzMgorLQlmb3IgaSwgdiA6PSByYW5nZSBtaW5p bWFsIHsKKy0JCWlzWmVybyB8PSB2CistCQlpc1AgfD0gdiAtIHAyMjRQW2ldCistCX0KKy0KKy0J Ly8gSWYgZWl0aGVyIGlzWmVybyBvciBpc1AgaXMgMCwgdGhlbiB3ZSBzaG91bGQgcmV0dXJuIDEu CistCWlzWmVybyB8PSBpc1plcm8gPj4gMTYKKy0JaXNaZXJvIHw9IGlzWmVybyA+PiA4CistCWlz WmVybyB8PSBpc1plcm8gPj4gNAorLQlpc1plcm8gfD0gaXNaZXJvID4+IDIKKy0JaXNaZXJvIHw9 IGlzWmVybyA+PiAxCistCistCWlzUCB8PSBpc1AgPj4gMTYKKy0JaXNQIHw9IGlzUCA+PiA4Cist CWlzUCB8PSBpc1AgPj4gNAorLQlpc1AgfD0gaXNQID4+IDIKKy0JaXNQIHw9IGlzUCA+PiAxCist CistCS8vIEZvciBpc1plcm8gYW5kIGlzUCwgdGhlIExTQiBpcyAwIGlmZiBhbGwgdGhlIGJpdHMg YXJlIHplcm8uCistCXJlc3VsdCA6PSBpc1plcm8gJiBpc1AKKy0JcmVzdWx0ID0gKF5yZXN1bHQp ICYgMQorLQorLQlyZXR1cm4gcmVzdWx0CistfQorLQorLS8vIHAyMjRBZGQgY29tcHV0ZXMgKm91 dCA9IGErYgorLS8vCistLy8gYVtpXSArIGJbaV0gPCAyKiozMgorLWZ1bmMgcDIyNEFkZChvdXQs IGEsIGIgKnAyMjRGaWVsZEVsZW1lbnQpIHsKKy0JZm9yIGkgOj0gMDsgaSA8IDg7IGkrKyB7Cist CQlvdXRbaV0gPSBhW2ldICsgYltpXQorLQl9CistfQorLQorLWNvbnN0IHR3bzMxcDMgPSAxPDwz MSArIDE8PDMKKy1jb25zdCB0d28zMW0zID0gMTw8MzEgLSAxPDwzCistY29uc3QgdHdvMzFtMTVt MyA9IDE8PDMxIC0gMTw8MTUgLSAxPDwzCistCistLy8gcDIyNFplcm9Nb2RQMzEgaXMgMCBtb2Qg cCB3aGVyZSBiaXQgMzEgaXMgc2V0IGluIGFsbCBsaW1icyBzbyB0aGF0IHdlIGNhbgorLS8vIHN1 YnRyYWN0IHNtYWxsZXIgYW1vdW50cyB3aXRob3V0IHVuZGVyZmxvdy4gU2VlIHRoZSBzZWN0aW9u ICJTdWJ0cmFjdGlvbiIgaW4KKy0vLyBbMV0gZm9yIHJlYXNvbmluZy4KKy12YXIgcDIyNFplcm9N b2RQMzEgPSBbXXVpbnQzMnt0d28zMXAzLCB0d28zMW0zLCB0d28zMW0zLCB0d28zMW0xNW0zLCB0 d28zMW0zLCB0d28zMW0zLCB0d28zMW0zLCB0d28zMW0zfQorLQorLS8vIHAyMjRTdWIgY29tcHV0 ZXMgKm91dCA9IGEtYgorLS8vCistLy8gYVtpXSwgYltpXSA8IDIqKjMwCistLy8gb3V0W2ldIDwg MioqMzIKKy1mdW5jIHAyMjRTdWIob3V0LCBhLCBiICpwMjI0RmllbGRFbGVtZW50KSB7CistCWZv ciBpIDo9IDA7IGkgPCA4OyBpKysgeworLQkJb3V0W2ldID0gYVtpXSArIHAyMjRaZXJvTW9kUDMx W2ldIC0gYltpXQorLQl9CistfQorLQorLS8vIExhcmdlRmllbGRFbGVtZW50IGFsc28gcmVwcmVz ZW50cyBhbiBlbGVtZW50IG9mIHRoZSBmaWVsZC4gVGhlIGxpbWJzIGFyZQorLS8vIHN0aWxsIHNw YWNlZCAyOC1iaXRzIGFwYXJ0IGFuZCBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLiBTbyB0aGUgbGlt YnMgYXJlIGF0CistLy8gMCwgMjgsIDU2LCAuLi4sIDM5MiBiaXRzLCBlYWNoIDY0LWJpdHMgd2lk ZS4KKy10eXBlIHAyMjRMYXJnZUZpZWxkRWxlbWVudCBbMTVddWludDY0CistCistY29uc3QgdHdv NjNwMzUgPSAxPDw2MyArIDE8PDM1CistY29uc3QgdHdvNjNtMzUgPSAxPDw2MyAtIDE8PDM1Cist Y29uc3QgdHdvNjNtMzVtMTkgPSAxPDw2MyAtIDE8PDM1IC0gMTw8MTkKKy0KKy0vLyBwMjI0WmVy b01vZFA2MyBpcyAwIG1vZCBwIHdoZXJlIGJpdCA2MyBpcyBzZXQgaW4gYWxsIGxpbWJzLiBTZWUg dGhlIHNlY3Rpb24KKy0vLyAiU3VidHJhY3Rpb24iIGluIFsxXSBmb3Igd2h5LgorLXZhciBwMjI0 WmVyb01vZFA2MyA9IFs4XXVpbnQ2NHt0d282M3AzNSwgdHdvNjNtMzUsIHR3bzYzbTM1LCB0d282 M20zNSwgdHdvNjNtMzVtMTksIHR3bzYzbTM1LCB0d282M20zNSwgdHdvNjNtMzV9CistCistY29u c3QgYm90dG9tMTJCaXRzID0gMHhmZmYKKy1jb25zdCBib3R0b20yOEJpdHMgPSAweGZmZmZmZmYK Ky0KKy0vLyBwMjI0TXVsIGNvbXB1dGVzICpvdXQgPSBhKmIKKy0vLworLS8vIGFbaV0gPCAyKioy OSwgYltpXSA8IDIqKjMwIChvciB2aWNlIHZlcnNhKQorLS8vIG91dFtpXSA8IDIqKjI5CistZnVu YyBwMjI0TXVsKG91dCwgYSwgYiAqcDIyNEZpZWxkRWxlbWVudCwgdG1wICpwMjI0TGFyZ2VGaWVs ZEVsZW1lbnQpIHsKKy0JZm9yIGkgOj0gMDsgaSA8IDE1OyBpKysgeworLQkJdG1wW2ldID0gMAor LQl9CistCistCWZvciBpIDo9IDA7IGkgPCA4OyBpKysgeworLQkJZm9yIGogOj0gMDsgaiA8IDg7 IGorKyB7CistCQkJdG1wW2kral0gKz0gdWludDY0KGFbaV0pICogdWludDY0KGJbal0pCistCQl9 CistCX0KKy0KKy0JcDIyNFJlZHVjZUxhcmdlKG91dCwgdG1wKQorLX0KKy0KKy0vLyBTcXVhcmUg Y29tcHV0ZXMgKm91dCA9IGEqYQorLS8vCistLy8gYVtpXSA8IDIqKjI5CistLy8gb3V0W2ldIDwg MioqMjkKKy1mdW5jIHAyMjRTcXVhcmUob3V0LCBhICpwMjI0RmllbGRFbGVtZW50LCB0bXAgKnAy MjRMYXJnZUZpZWxkRWxlbWVudCkgeworLQlmb3IgaSA6PSAwOyBpIDwgMTU7IGkrKyB7CistCQl0 bXBbaV0gPSAwCistCX0KKy0KKy0JZm9yIGkgOj0gMDsgaSA8IDg7IGkrKyB7CistCQlmb3IgaiA6 PSAwOyBqIDw9IGk7IGorKyB7CistCQkJciA6PSB1aW50NjQoYVtpXSkgKiB1aW50NjQoYVtqXSkK Ky0JCQlpZiBpID09IGogeworLQkJCQl0bXBbaStqXSArPSByCistCQkJfSBlbHNlIHsKKy0JCQkJ dG1wW2kral0gKz0gciA8PCAxCistCQkJfQorLQkJfQorLQl9CistCistCXAyMjRSZWR1Y2VMYXJn ZShvdXQsIHRtcCkKKy19CistCistLy8gUmVkdWNlTGFyZ2UgY29udmVydHMgYSBwMjI0TGFyZ2VG aWVsZEVsZW1lbnQgdG8gYSBwMjI0RmllbGRFbGVtZW50LgorLS8vCistLy8gaW5baV0gPCAyKio2 MgorLWZ1bmMgcDIyNFJlZHVjZUxhcmdlKG91dCAqcDIyNEZpZWxkRWxlbWVudCwgaW4gKnAyMjRM YXJnZUZpZWxkRWxlbWVudCkgeworLQlmb3IgaSA6PSAwOyBpIDwgODsgaSsrIHsKKy0JCWluW2ld ICs9IHAyMjRaZXJvTW9kUDYzW2ldCistCX0KKy0KKy0JLy8gRWxpbWluYXRlIHRoZSBjb2VmZmlj aWVudHMgYXQgMioqMjI0IGFuZCBncmVhdGVyLgorLQlmb3IgaSA6PSAxNDsgaSA+PSA4OyBpLS0g eworLQkJaW5baS04XSAtPSBpbltpXQorLQkJaW5baS01XSArPSAoaW5baV0gJiAweGZmZmYpIDw8 IDEyCistCQlpbltpLTRdICs9IGluW2ldID4+IDE2CistCX0KKy0JaW5bOF0gPSAwCistCS8vIGlu WzAuLjhdIDwgMioqNjQKKy0KKy0JLy8gQXMgdGhlIHZhbHVlcyBiZWNvbWUgc21hbGwgZW5vdWdo LCB3ZSBzdGFydCB0byBzdG9yZSB0aGVtIGluIHxvdXR8CistCS8vIGFuZCB1c2UgMzItYml0IG9w ZXJhdGlvbnMuCistCWZvciBpIDo9IDE7IGkgPCA4OyBpKysgeworLQkJaW5baSsxXSArPSBpbltp XSA+PiAyOAorLQkJb3V0W2ldID0gdWludDMyKGluW2ldICYgYm90dG9tMjhCaXRzKQorLQl9Cist CWluWzBdIC09IGluWzhdCistCW91dFszXSArPSB1aW50MzIoaW5bOF0mMHhmZmZmKSA8PCAxMgor LQlvdXRbNF0gKz0gdWludDMyKGluWzhdID4+IDE2KQorLQkvLyBpblswXSA8IDIqKjY0CistCS8v IG91dFszXSA8IDIqKjI5CistCS8vIG91dFs0XSA8IDIqKjI5CistCS8vIG91dFsxLDIsNS4uN10g PCAyKioyOAorLQorLQlvdXRbMF0gPSB1aW50MzIoaW5bMF0gJiBib3R0b20yOEJpdHMpCistCW91 dFsxXSArPSB1aW50MzIoKGluWzBdID4+IDI4KSAmIGJvdHRvbTI4Qml0cykKKy0Jb3V0WzJdICs9 IHVpbnQzMihpblswXSA+PiA1NikKKy0JLy8gb3V0WzBdIDwgMioqMjgKKy0JLy8gb3V0WzEuLjRd IDwgMioqMjkKKy0JLy8gb3V0WzUuLjddIDwgMioqMjgKKy19CistCistLy8gUmVkdWNlIHJlZHVj ZXMgdGhlIGNvZWZmaWNpZW50cyBvZiBhIHRvIHNtYWxsZXIgYm91bmRzLgorLS8vCistLy8gT24g ZW50cnk6IGFbaV0gPCAyKiozMSArIDIqKjMwCistLy8gT24gZXhpdDogYVtpXSA8IDIqKjI5Cist ZnVuYyBwMjI0UmVkdWNlKGEgKnAyMjRGaWVsZEVsZW1lbnQpIHsKKy0JZm9yIGkgOj0gMDsgaSA8 IDc7IGkrKyB7CistCQlhW2krMV0gKz0gYVtpXSA+PiAyOAorLQkJYVtpXSAmPSBib3R0b20yOEJp dHMKKy0JfQorLQl0b3AgOj0gYVs3XSA+PiAyOAorLQlhWzddICY9IGJvdHRvbTI4Qml0cworLQor LQkvLyB0b3AgPCAyKio0CistCW1hc2sgOj0gdG9wCistCW1hc2sgfD0gbWFzayA+PiAyCistCW1h c2sgfD0gbWFzayA+PiAxCistCW1hc2sgPDw9IDMxCistCW1hc2sgPSB1aW50MzIoaW50MzIobWFz aykgPj4gMzEpCistCS8vIE1hc2sgaXMgYWxsIG9uZXMgaWYgdG9wICE9IDAsIGFsbCB6ZXJvIG90 aGVyd2lzZQorLQorLQlhWzBdIC09IHRvcAorLQlhWzNdICs9IHRvcCA8PCAxMgorLQorLQkvLyBX ZSBtYXkgaGF2ZSBqdXN0IG1hZGUgYVswXSBuZWdhdGl2ZSBidXQsIGlmIHdlIGRpZCwgdGhlbiB3 ZSBtdXN0CistCS8vIGhhdmUgYWRkZWQgc29tZXRoaW5nIHRvIGFbM10sIHRoaXMgaXQncyA+IDIq KjEyLiBUaGVyZWZvcmUgd2UgY2FuCistCS8vIGNhcnJ5IGRvd24gdG8gYVswXS4KKy0JYVszXSAt PSAxICYgbWFzaworLQlhWzJdICs9IG1hc2sgJiAoMTw8MjggLSAxKQorLQlhWzFdICs9IG1hc2sg JiAoMTw8MjggLSAxKQorLQlhWzBdICs9IG1hc2sgJiAoMSA8PCAyOCkKKy19CistCistLy8gcDIy NEludmVydCBjYWxjdWxhdGVzICpvdXQgPSBpbioqLTEgYnkgY29tcHV0aW5nIGluKiooMioqMjI0 IC0gMioqOTYgLSAxKSwKKy0vLyBpLmUuIEZlcm1hdCdzIGxpdHRsZSB0aGVvcmVtLgorLWZ1bmMg cDIyNEludmVydChvdXQsIGluICpwMjI0RmllbGRFbGVtZW50KSB7CistCXZhciBmMSwgZjIsIGYz LCBmNCBwMjI0RmllbGRFbGVtZW50CistCXZhciBjIHAyMjRMYXJnZUZpZWxkRWxlbWVudAorLQor LQlwMjI0U3F1YXJlKCZmMSwgaW4sICZjKSAgICAvLyAyCistCXAyMjRNdWwoJmYxLCAmZjEsIGlu LCAmYykgIC8vIDIqKjIgLSAxCistCXAyMjRTcXVhcmUoJmYxLCAmZjEsICZjKSAgIC8vIDIqKjMg LSAyCistCXAyMjRNdWwoJmYxLCAmZjEsIGluLCAmYykgIC8vIDIqKjMgLSAxCistCXAyMjRTcXVh cmUoJmYyLCAmZjEsICZjKSAgIC8vIDIqKjQgLSAyCistCXAyMjRTcXVhcmUoJmYyLCAmZjIsICZj KSAgIC8vIDIqKjUgLSA0CistCXAyMjRTcXVhcmUoJmYyLCAmZjIsICZjKSAgIC8vIDIqKjYgLSA4 CistCXAyMjRNdWwoJmYxLCAmZjEsICZmMiwgJmMpIC8vIDIqKjYgLSAxCistCXAyMjRTcXVhcmUo JmYyLCAmZjEsICZjKSAgIC8vIDIqKjcgLSAyCistCWZvciBpIDo9IDA7IGkgPCA1OyBpKysgeyAg IC8vIDIqKjEyIC0gMioqNgorLQkJcDIyNFNxdWFyZSgmZjIsICZmMiwgJmMpCistCX0KKy0JcDIy NE11bCgmZjIsICZmMiwgJmYxLCAmYykgLy8gMioqMTIgLSAxCistCXAyMjRTcXVhcmUoJmYzLCAm ZjIsICZjKSAgIC8vIDIqKjEzIC0gMgorLQlmb3IgaSA6PSAwOyBpIDwgMTE7IGkrKyB7ICAvLyAy KioyNCAtIDIqKjEyCistCQlwMjI0U3F1YXJlKCZmMywgJmYzLCAmYykKKy0JfQorLQlwMjI0TXVs KCZmMiwgJmYzLCAmZjIsICZjKSAvLyAyKioyNCAtIDEKKy0JcDIyNFNxdWFyZSgmZjMsICZmMiwg JmMpICAgLy8gMioqMjUgLSAyCistCWZvciBpIDo9IDA7IGkgPCAyMzsgaSsrIHsgIC8vIDIqKjQ4 IC0gMioqMjQKKy0JCXAyMjRTcXVhcmUoJmYzLCAmZjMsICZjKQorLQl9CistCXAyMjRNdWwoJmYz LCAmZjMsICZmMiwgJmMpIC8vIDIqKjQ4IC0gMQorLQlwMjI0U3F1YXJlKCZmNCwgJmYzLCAmYykg ICAvLyAyKio0OSAtIDIKKy0JZm9yIGkgOj0gMDsgaSA8IDQ3OyBpKysgeyAgLy8gMioqOTYgLSAy Kio0OAorLQkJcDIyNFNxdWFyZSgmZjQsICZmNCwgJmMpCistCX0KKy0JcDIyNE11bCgmZjMsICZm MywgJmY0LCAmYykgLy8gMioqOTYgLSAxCistCXAyMjRTcXVhcmUoJmY0LCAmZjMsICZjKSAgIC8v IDIqKjk3IC0gMgorLQlmb3IgaSA6PSAwOyBpIDwgMjM7IGkrKyB7ICAvLyAyKioxMjAgLSAyKioy NAorLQkJcDIyNFNxdWFyZSgmZjQsICZmNCwgJmMpCistCX0KKy0JcDIyNE11bCgmZjIsICZmNCwg JmYyLCAmYykgLy8gMioqMTIwIC0gMQorLQlmb3IgaSA6PSAwOyBpIDwgNjsgaSsrIHsgICAvLyAy KioxMjYgLSAyKio2CistCQlwMjI0U3F1YXJlKCZmMiwgJmYyLCAmYykKKy0JfQorLQlwMjI0TXVs KCZmMSwgJmYxLCAmZjIsICZjKSAvLyAyKioxMjYgLSAxCistCXAyMjRTcXVhcmUoJmYxLCAmZjEs ICZjKSAgIC8vIDIqKjEyNyAtIDIKKy0JcDIyNE11bCgmZjEsICZmMSwgaW4sICZjKSAgLy8gMioq MTI3IC0gMQorLQlmb3IgaSA6PSAwOyBpIDwgOTc7IGkrKyB7ICAvLyAyKioyMjQgLSAyKio5Nwor LQkJcDIyNFNxdWFyZSgmZjEsICZmMSwgJmMpCistCX0KKy0JcDIyNE11bChvdXQsICZmMSwgJmYz LCAmYykgLy8gMioqMjI0IC0gMioqOTYgLSAxCistfQorLQorLS8vIHAyMjRDb250cmFjdCBjb252 ZXJ0cyBhIEZpZWxkRWxlbWVudCB0byBpdHMgdW5pcXVlLCBtaW5pbWFsIGZvcm0uCistLy8KKy0v LyBPbiBlbnRyeSwgaW5baV0gPCAyKioyOQorLS8vIE9uIGV4aXQsIGluW2ldIDwgMioqMjgKKy1m dW5jIHAyMjRDb250cmFjdChvdXQsIGluICpwMjI0RmllbGRFbGVtZW50KSB7CistCWNvcHkob3V0 WzpdLCBpbls6XSkKKy0KKy0JZm9yIGkgOj0gMDsgaSA8IDc7IGkrKyB7CistCQlvdXRbaSsxXSAr PSBvdXRbaV0gPj4gMjgKKy0JCW91dFtpXSAmPSBib3R0b20yOEJpdHMKKy0JfQorLQl0b3AgOj0g b3V0WzddID4+IDI4CistCW91dFs3XSAmPSBib3R0b20yOEJpdHMKKy0KKy0Jb3V0WzBdIC09IHRv cAorLQlvdXRbM10gKz0gdG9wIDw8IDEyCistCistCS8vIFdlIG1heSBqdXN0IGhhdmUgbWFkZSBv dXRbaV0gbmVnYXRpdmUuIFNvIHdlIGNhcnJ5IGRvd24uIElmIHdlIG1hZGUKKy0JLy8gb3V0WzBd IG5lZ2F0aXZlIHRoZW4gd2Uga25vdyB0aGF0IG91dFszXSBpcyBzdWZmaWNpZW50bHkgcG9zaXRp dmUKKy0JLy8gYmVjYXVzZSB3ZSBqdXN0IGFkZGVkIHRvIGl0LgorLQlmb3IgaSA6PSAwOyBpIDwg MzsgaSsrIHsKKy0JCW1hc2sgOj0gdWludDMyKGludDMyKG91dFtpXSkgPj4gMzEpCistCQlvdXRb aV0gKz0gKDEgPDwgMjgpICYgbWFzaworLQkJb3V0W2krMV0gLT0gMSAmIG1hc2sKKy0JfQorLQor LQkvLyBXZSBtaWdodCBoYXZlIHB1c2hlZCBvdXRbM10gb3ZlciAyKioyOCBzbyB3ZSBwZXJmb3Jt IGFub3RoZXIsIHBhcnRpYWwsCistCS8vIGNhcnJ5IGNoYWluLgorLQlmb3IgaSA6PSAzOyBpIDwg NzsgaSsrIHsKKy0JCW91dFtpKzFdICs9IG91dFtpXSA+PiAyOAorLQkJb3V0W2ldICY9IGJvdHRv bTI4Qml0cworLQl9CistCXRvcCA9IG91dFs3XSA+PiAyOAorLQlvdXRbN10gJj0gYm90dG9tMjhC aXRzCistCistCS8vIEVsaW1pbmF0ZSB0b3Agd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHNhbWUgdmFs dWUgbW9kIHAuCistCW91dFswXSAtPSB0b3AKKy0Jb3V0WzNdICs9IHRvcCA8PCAxMgorLQorLQkv LyBUaGVyZSBhcmUgdHdvIGNhc2VzIHRvIGNvbnNpZGVyIGZvciBvdXRbM106CistCS8vICAgMSkg VGhlIGZpcnN0IHRpbWUgdGhhdCB3ZSBlbGltaW5hdGVkIHRvcCwgd2UgZGlkbid0IHB1c2ggb3V0 WzNdIG92ZXIKKy0JLy8gICAgICAyKioyOC4gSW4gdGhpcyBjYXNlLCB0aGUgcGFydGlhbCBjYXJy eSBjaGFpbiBkaWRuJ3QgY2hhbmdlIGFueSB2YWx1ZXMKKy0JLy8gICAgICBhbmQgdG9wIGlzIHpl cm8uCistCS8vICAgMikgV2UgZGlkIHB1c2ggb3V0WzNdIG92ZXIgMioqMjggdGhlIGZpcnN0IHRp bWUgdGhhdCB3ZSBlbGltaW5hdGVkIHRvcC4KKy0JLy8gICAgICBUaGUgZmlyc3QgdmFsdWUgb2Yg dG9wIHdhcyBpbiBbMC4uMTYpLCB0aGVyZWZvcmUsIHByaW9yIHRvIGVsaW1pbmF0aW5nCistCS8v ICAgICAgdGhlIGZpcnN0IHRvcCwgMHhmZmYxMDAwIDw9IG91dFszXSA8PSAweGZmZmZmZmYuIFRo ZXJlZm9yZSwgYWZ0ZXIKKy0JLy8gICAgICBvdmVyZmxvd2luZyBhbmQgYmVpbmcgcmVkdWNlZCBi eSB0aGUgc2Vjb25kIGNhcnJ5IGNoYWluLCBvdXRbM10gPD0KKy0JLy8gICAgICAweGYwMDAuIFRo dXMgaXQgY2Fubm90IGhhdmUgb3ZlcmZsb3dlZCB3aGVuIHdlIGVsaW1pbmF0ZWQgdG9wIGZvciB0 aGUKKy0JLy8gICAgICBzZWNvbmQgdGltZS4KKy0KKy0JLy8gQWdhaW4sIHdlIG1heSBqdXN0IGhh dmUgbWFkZSBvdXRbMF0gbmVnYXRpdmUsIHNvIGRvIHRoZSBzYW1lIGNhcnJ5IGRvd24uCistCS8v IEFzIGJlZm9yZSwgaWYgd2UgbWFkZSBvdXRbMF0gbmVnYXRpdmUgdGhlbiB3ZSBrbm93IHRoYXQg b3V0WzNdIGlzCistCS8vIHN1ZmZpY2llbnRseSBwb3NpdGl2ZS4KKy0JZm9yIGkgOj0gMDsgaSA8 IDM7IGkrKyB7CistCQltYXNrIDo9IHVpbnQzMihpbnQzMihvdXRbaV0pID4+IDMxKQorLQkJb3V0 W2ldICs9ICgxIDw8IDI4KSAmIG1hc2sKKy0JCW91dFtpKzFdIC09IDEgJiBtYXNrCistCX0KKy0K Ky0JLy8gTm93IHdlIHNlZSBpZiB0aGUgdmFsdWUgaXMgPj0gcCBhbmQsIGlmIHNvLCBzdWJ0cmFj dCBwLgorLQorLQkvLyBGaXJzdCB3ZSBidWlsZCBhIG1hc2sgZnJvbSB0aGUgdG9wIGZvdXIgbGlt YnMsIHdoaWNoIG11c3QgYWxsIGJlCistCS8vIGVxdWFsIHRvIGJvdHRvbTI4Qml0cyBpZiB0aGUg d2hvbGUgdmFsdWUgaXMgPj0gcC4gSWYgdG9wNEFsbE9uZXMKKy0JLy8gZW5kcyB1cCB3aXRoIGFu eSB6ZXJvIGJpdHMgaW4gdGhlIGJvdHRvbSAyOCBiaXRzLCB0aGVuIHRoaXMgd2Fzbid0CistCS8v IHRydWUuCistCXRvcDRBbGxPbmVzIDo9IHVpbnQzMigweGZmZmZmZmZmKQorLQlmb3IgaSA6PSA0 OyBpIDwgODsgaSsrIHsKKy0JCXRvcDRBbGxPbmVzICY9IG91dFtpXQorLQl9CistCXRvcDRBbGxP bmVzIHw9IDB4ZjAwMDAwMDAKKy0JLy8gTm93IHdlIHJlcGxpY2F0ZSBhbnkgemVybyBiaXRzIHRv IGFsbCB0aGUgYml0cyBpbiB0b3A0QWxsT25lcy4KKy0JdG9wNEFsbE9uZXMgJj0gdG9wNEFsbE9u ZXMgPj4gMTYKKy0JdG9wNEFsbE9uZXMgJj0gdG9wNEFsbE9uZXMgPj4gOAorLQl0b3A0QWxsT25l cyAmPSB0b3A0QWxsT25lcyA+PiA0CistCXRvcDRBbGxPbmVzICY9IHRvcDRBbGxPbmVzID4+IDIK Ky0JdG9wNEFsbE9uZXMgJj0gdG9wNEFsbE9uZXMgPj4gMQorLQl0b3A0QWxsT25lcyA9IHVpbnQz MihpbnQzMih0b3A0QWxsT25lczw8MzEpID4+IDMxKQorLQorLQkvLyBOb3cgd2UgdGVzdCB3aGV0 aGVyIHRoZSBib3R0b20gdGhyZWUgbGltYnMgYXJlIG5vbi16ZXJvLgorLQlib3R0b20zTm9uWmVy byA6PSBvdXRbMF0gfCBvdXRbMV0gfCBvdXRbMl0KKy0JYm90dG9tM05vblplcm8gfD0gYm90dG9t M05vblplcm8gPj4gMTYKKy0JYm90dG9tM05vblplcm8gfD0gYm90dG9tM05vblplcm8gPj4gOAor LQlib3R0b20zTm9uWmVybyB8PSBib3R0b20zTm9uWmVybyA+PiA0CistCWJvdHRvbTNOb25aZXJv IHw9IGJvdHRvbTNOb25aZXJvID4+IDIKKy0JYm90dG9tM05vblplcm8gfD0gYm90dG9tM05vblpl cm8gPj4gMQorLQlib3R0b20zTm9uWmVybyA9IHVpbnQzMihpbnQzMihib3R0b20zTm9uWmVybzw8 MzEpID4+IDMxKQorLQorLQkvLyBFdmVyeXRoaW5nIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIG91 dFszXS4KKy0JLy8gICAgSWYgaXQncyA+IDB4ZmZmZjAwMCBhbmQgdG9wNEFsbE9uZXMgIT0gMCB0 aGVuIHRoZSB3aG9sZSB2YWx1ZSBpcyA+PSBwCistCS8vICAgIElmIGl0J3MgPSAweGZmZmYwMDAg YW5kIHRvcDRBbGxPbmVzICE9IDAgYW5kIGJvdHRvbTNOb25aZXJvICE9IDAsCistCS8vICAgICAg dGhlbiB0aGUgd2hvbGUgdmFsdWUgaXMgPj0gcAorLQkvLyAgICBJZiBpdCdzIDwgMHhmZmZmMDAw LCB0aGVuIHRoZSB3aG9sZSB2YWx1ZSBpcyA8IHAKKy0JbiA6PSBvdXRbM10gLSAweGZmZmYwMDAK Ky0Jb3V0M0VxdWFsIDo9IG4KKy0Jb3V0M0VxdWFsIHw9IG91dDNFcXVhbCA+PiAxNgorLQlvdXQz RXF1YWwgfD0gb3V0M0VxdWFsID4+IDgKKy0Jb3V0M0VxdWFsIHw9IG91dDNFcXVhbCA+PiA0Cist CW91dDNFcXVhbCB8PSBvdXQzRXF1YWwgPj4gMgorLQlvdXQzRXF1YWwgfD0gb3V0M0VxdWFsID4+ IDEKKy0Jb3V0M0VxdWFsID0gXnVpbnQzMihpbnQzMihvdXQzRXF1YWw8PDMxKSA+PiAzMSkKKy0K Ky0JLy8gSWYgb3V0WzNdID4gMHhmZmZmMDAwIHRoZW4gbidzIE1TQiB3aWxsIGJlIHplcm8uCist CW91dDNHVCA6PSBedWludDMyKGludDMyKG4pID4+IDMxKQorLQorLQltYXNrIDo9IHRvcDRBbGxP bmVzICYgKChvdXQzRXF1YWwgJiBib3R0b20zTm9uWmVybykgfCBvdXQzR1QpCistCW91dFswXSAt PSAxICYgbWFzaworLQlvdXRbM10gLT0gMHhmZmZmMDAwICYgbWFzaworLQlvdXRbNF0gLT0gMHhm ZmZmZmZmICYgbWFzaworLQlvdXRbNV0gLT0gMHhmZmZmZmZmICYgbWFzaworLQlvdXRbNl0gLT0g MHhmZmZmZmZmICYgbWFzaworLQlvdXRbN10gLT0gMHhmZmZmZmZmICYgbWFzaworLX0KKy0KKy0v LyBHcm91cCBlbGVtZW50IGZ1bmN0aW9ucy4KKy0vLworLS8vIFRoZXNlIGZ1bmN0aW9ucyBkZWFs IHdpdGggZ3JvdXAgZWxlbWVudHMuIFRoZSBncm91cCBpcyBhbiBlbGxpcHRpYyBjdXJ2ZQorLS8v IGdyb3VwIHdpdGggYSA9IC0zIGRlZmluZWQgaW4gRklQUyAxODYtMywgc2VjdGlvbiBELjIuMi4K Ky0KKy0vLyBwMjI0QWRkSmFjb2JpYW4gY29tcHV0ZXMgKm91dCA9IGErYiB3aGVyZSBhICE9IGIu CistZnVuYyBwMjI0QWRkSmFjb2JpYW4oeDMsIHkzLCB6MywgeDEsIHkxLCB6MSwgeDIsIHkyLCB6 MiAqcDIyNEZpZWxkRWxlbWVudCkgeworLQkvLyBTZWUgaHR0cDovL2h5cGVyZWxsaXB0aWMub3Jn L0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2FkZGl0aW9uLXAyMjRBZGQtMjAw Ny1ibAorLQl2YXIgejF6MSwgejJ6MiwgdTEsIHUyLCBzMSwgczIsIGgsIGksIGosIHIsIHYgcDIy NEZpZWxkRWxlbWVudAorLQl2YXIgYyBwMjI0TGFyZ2VGaWVsZEVsZW1lbnQKKy0KKy0JejFJc1pl cm8gOj0gcDIyNElzWmVybyh6MSkKKy0JejJJc1plcm8gOj0gcDIyNElzWmVybyh6MikKKy0KKy0J Ly8gWjFaMSA9IFoxwrIKKy0JcDIyNFNxdWFyZSgmejF6MSwgejEsICZjKQorLQkvLyBaMloyID0g WjLCsgorLQlwMjI0U3F1YXJlKCZ6MnoyLCB6MiwgJmMpCistCS8vIFUxID0gWDEqWjJaMgorLQlw MjI0TXVsKCZ1MSwgeDEsICZ6MnoyLCAmYykKKy0JLy8gVTIgPSBYMipaMVoxCistCXAyMjRNdWwo JnUyLCB4MiwgJnoxejEsICZjKQorLQkvLyBTMSA9IFkxKloyKloyWjIKKy0JcDIyNE11bCgmczEs IHoyLCAmejJ6MiwgJmMpCistCXAyMjRNdWwoJnMxLCB5MSwgJnMxLCAmYykKKy0JLy8gUzIgPSBZ MipaMSpaMVoxCistCXAyMjRNdWwoJnMyLCB6MSwgJnoxejEsICZjKQorLQlwMjI0TXVsKCZzMiwg eTIsICZzMiwgJmMpCistCS8vIEggPSBVMi1VMQorLQlwMjI0U3ViKCZoLCAmdTIsICZ1MSkKKy0J cDIyNFJlZHVjZSgmaCkKKy0JeEVxdWFsIDo9IHAyMjRJc1plcm8oJmgpCistCS8vIEkgPSAoMipI KcKyCistCWZvciBqIDo9IDA7IGogPCA4OyBqKysgeworLQkJaVtqXSA9IGhbal0gPDwgMQorLQl9 CistCXAyMjRSZWR1Y2UoJmkpCistCXAyMjRTcXVhcmUoJmksICZpLCAmYykKKy0JLy8gSiA9IEgq SQorLQlwMjI0TXVsKCZqLCAmaCwgJmksICZjKQorLQkvLyByID0gMiooUzItUzEpCistCXAyMjRT dWIoJnIsICZzMiwgJnMxKQorLQlwMjI0UmVkdWNlKCZyKQorLQl5RXF1YWwgOj0gcDIyNElzWmVy bygmcikKKy0JaWYgeEVxdWFsID09IDEgJiYgeUVxdWFsID09IDEgJiYgejFJc1plcm8gPT0gMCAm JiB6MklzWmVybyA9PSAwIHsKKy0JCXAyMjREb3VibGVKYWNvYmlhbih4MywgeTMsIHozLCB4MSwg eTEsIHoxKQorLQkJcmV0dXJuCistCX0KKy0JZm9yIGkgOj0gMDsgaSA8IDg7IGkrKyB7CistCQly W2ldIDw8PSAxCistCX0KKy0JcDIyNFJlZHVjZSgmcikKKy0JLy8gViA9IFUxKkkKKy0JcDIyNE11 bCgmdiwgJnUxLCAmaSwgJmMpCistCS8vIFozID0gKChaMStaMinCsi1aMVoxLVoyWjIpKkgKKy0J cDIyNEFkZCgmejF6MSwgJnoxejEsICZ6MnoyKQorLQlwMjI0QWRkKCZ6MnoyLCB6MSwgejIpCist CXAyMjRSZWR1Y2UoJnoyejIpCistCXAyMjRTcXVhcmUoJnoyejIsICZ6MnoyLCAmYykKKy0JcDIy NFN1Yih6MywgJnoyejIsICZ6MXoxKQorLQlwMjI0UmVkdWNlKHozKQorLQlwMjI0TXVsKHozLCB6 MywgJmgsICZjKQorLQkvLyBYMyA9IHLCsi1KLTIqVgorLQlmb3IgaSA6PSAwOyBpIDwgODsgaSsr IHsKKy0JCXoxejFbaV0gPSB2W2ldIDw8IDEKKy0JfQorLQlwMjI0QWRkKCZ6MXoxLCAmaiwgJnox ejEpCistCXAyMjRSZWR1Y2UoJnoxejEpCistCXAyMjRTcXVhcmUoeDMsICZyLCAmYykKKy0JcDIy NFN1Yih4MywgeDMsICZ6MXoxKQorLQlwMjI0UmVkdWNlKHgzKQorLQkvLyBZMyA9IHIqKFYtWDMp LTIqUzEqSgorLQlmb3IgaSA6PSAwOyBpIDwgODsgaSsrIHsKKy0JCXMxW2ldIDw8PSAxCistCX0K Ky0JcDIyNE11bCgmczEsICZzMSwgJmosICZjKQorLQlwMjI0U3ViKCZ6MXoxLCAmdiwgeDMpCist CXAyMjRSZWR1Y2UoJnoxejEpCistCXAyMjRNdWwoJnoxejEsICZ6MXoxLCAmciwgJmMpCistCXAy MjRTdWIoeTMsICZ6MXoxLCAmczEpCistCXAyMjRSZWR1Y2UoeTMpCistCistCXAyMjRDb3B5Q29u ZGl0aW9uYWwoeDMsIHgyLCB6MUlzWmVybykKKy0JcDIyNENvcHlDb25kaXRpb25hbCh4MywgeDEs IHoySXNaZXJvKQorLQlwMjI0Q29weUNvbmRpdGlvbmFsKHkzLCB5MiwgejFJc1plcm8pCistCXAy MjRDb3B5Q29uZGl0aW9uYWwoeTMsIHkxLCB6MklzWmVybykKKy0JcDIyNENvcHlDb25kaXRpb25h bCh6MywgejIsIHoxSXNaZXJvKQorLQlwMjI0Q29weUNvbmRpdGlvbmFsKHozLCB6MSwgejJJc1pl cm8pCistfQorLQorLS8vIHAyMjREb3VibGVKYWNvYmlhbiBjb21wdXRlcyAqb3V0ID0gYSthLgor LWZ1bmMgcDIyNERvdWJsZUphY29iaWFuKHgzLCB5MywgejMsIHgxLCB5MSwgejEgKnAyMjRGaWVs ZEVsZW1lbnQpIHsKKy0JdmFyIGRlbHRhLCBnYW1tYSwgYmV0YSwgYWxwaGEsIHQgcDIyNEZpZWxk RWxlbWVudAorLQl2YXIgYyBwMjI0TGFyZ2VGaWVsZEVsZW1lbnQKKy0KKy0JcDIyNFNxdWFyZSgm ZGVsdGEsIHoxLCAmYykKKy0JcDIyNFNxdWFyZSgmZ2FtbWEsIHkxLCAmYykKKy0JcDIyNE11bCgm YmV0YSwgeDEsICZnYW1tYSwgJmMpCistCistCS8vIGFscGhhID0gMyooWDEtZGVsdGEpKihYMStk ZWx0YSkKKy0JcDIyNEFkZCgmdCwgeDEsICZkZWx0YSkKKy0JZm9yIGkgOj0gMDsgaSA8IDg7IGkr KyB7CistCQl0W2ldICs9IHRbaV0gPDwgMQorLQl9CistCXAyMjRSZWR1Y2UoJnQpCistCXAyMjRT dWIoJmFscGhhLCB4MSwgJmRlbHRhKQorLQlwMjI0UmVkdWNlKCZhbHBoYSkKKy0JcDIyNE11bCgm YWxwaGEsICZhbHBoYSwgJnQsICZjKQorLQorLQkvLyBaMyA9IChZMStaMSnCsi1nYW1tYS1kZWx0 YQorLQlwMjI0QWRkKHozLCB5MSwgejEpCistCXAyMjRSZWR1Y2UoejMpCistCXAyMjRTcXVhcmUo ejMsIHozLCAmYykKKy0JcDIyNFN1Yih6MywgejMsICZnYW1tYSkKKy0JcDIyNFJlZHVjZSh6MykK Ky0JcDIyNFN1Yih6MywgejMsICZkZWx0YSkKKy0JcDIyNFJlZHVjZSh6MykKKy0KKy0JLy8gWDMg PSBhbHBoYcKyLTgqYmV0YQorLQlmb3IgaSA6PSAwOyBpIDwgODsgaSsrIHsKKy0JCWRlbHRhW2ld ID0gYmV0YVtpXSA8PCAzCistCX0KKy0JcDIyNFJlZHVjZSgmZGVsdGEpCistCXAyMjRTcXVhcmUo eDMsICZhbHBoYSwgJmMpCistCXAyMjRTdWIoeDMsIHgzLCAmZGVsdGEpCistCXAyMjRSZWR1Y2Uo eDMpCistCistCS8vIFkzID0gYWxwaGEqKDQqYmV0YS1YMyktOCpnYW1tYcKyCistCWZvciBpIDo9 IDA7IGkgPCA4OyBpKysgeworLQkJYmV0YVtpXSA8PD0gMgorLQl9CistCXAyMjRTdWIoJmJldGEs ICZiZXRhLCB4MykKKy0JcDIyNFJlZHVjZSgmYmV0YSkKKy0JcDIyNFNxdWFyZSgmZ2FtbWEsICZn YW1tYSwgJmMpCistCWZvciBpIDo9IDA7IGkgPCA4OyBpKysgeworLQkJZ2FtbWFbaV0gPDw9IDMK Ky0JfQorLQlwMjI0UmVkdWNlKCZnYW1tYSkKKy0JcDIyNE11bCh5MywgJmFscGhhLCAmYmV0YSwg JmMpCistCXAyMjRTdWIoeTMsIHkzLCAmZ2FtbWEpCistCXAyMjRSZWR1Y2UoeTMpCistfQorLQor LS8vIHAyMjRDb3B5Q29uZGl0aW9uYWwgc2V0cyAqb3V0ID0gKmluIGlmZiB0aGUgbGVhc3Qtc2ln bmlmaWNhbnQtYml0IG9mIGNvbnRyb2wKKy0vLyBpcyB0cnVlLCBhbmQgaXQgcnVucyBpbiBjb25z dGFudCB0aW1lLgorLWZ1bmMgcDIyNENvcHlDb25kaXRpb25hbChvdXQsIGluICpwMjI0RmllbGRF bGVtZW50LCBjb250cm9sIHVpbnQzMikgeworLQljb250cm9sIDw8PSAzMQorLQljb250cm9sID0g dWludDMyKGludDMyKGNvbnRyb2wpID4+IDMxKQorLQorLQlmb3IgaSA6PSAwOyBpIDwgODsgaSsr IHsKKy0JCW91dFtpXSBePSAob3V0W2ldIF4gaW5baV0pICYgY29udHJvbAorLQl9CistfQorLQor LWZ1bmMgcDIyNFNjYWxhck11bHQob3V0WCwgb3V0WSwgb3V0WiwgaW5YLCBpblksIGluWiAqcDIy NEZpZWxkRWxlbWVudCwgc2NhbGFyIFtdYnl0ZSkgeworLQl2YXIgeHgsIHl5LCB6eiBwMjI0Rmll bGRFbGVtZW50CistCWZvciBpIDo9IDA7IGkgPCA4OyBpKysgeworLQkJb3V0WFtpXSA9IDAKKy0J CW91dFlbaV0gPSAwCistCQlvdXRaW2ldID0gMAorLQl9CistCistCWZvciBfLCBieXRlIDo9IHJh bmdlIHNjYWxhciB7CistCQlmb3IgYml0TnVtIDo9IHVpbnQoMCk7IGJpdE51bSA8IDg7IGJpdE51 bSsrIHsKKy0JCQlwMjI0RG91YmxlSmFjb2JpYW4ob3V0WCwgb3V0WSwgb3V0Wiwgb3V0WCwgb3V0 WSwgb3V0WikKKy0JCQliaXQgOj0gdWludDMyKChieXRlID4+ICg3IC0gYml0TnVtKSkgJiAxKQor LQkJCXAyMjRBZGRKYWNvYmlhbigmeHgsICZ5eSwgJnp6LCBpblgsIGluWSwgaW5aLCBvdXRYLCBv dXRZLCBvdXRaKQorLQkJCXAyMjRDb3B5Q29uZGl0aW9uYWwob3V0WCwgJnh4LCBiaXQpCistCQkJ cDIyNENvcHlDb25kaXRpb25hbChvdXRZLCAmeXksIGJpdCkKKy0JCQlwMjI0Q29weUNvbmRpdGlv bmFsKG91dFosICZ6eiwgYml0KQorLQkJfQorLQl9CistfQorLQorLS8vIHAyMjRUb0FmZmluZSBj b252ZXJ0cyBmcm9tIEphY29iaWFuIHRvIGFmZmluZSBmb3JtLgorLWZ1bmMgcDIyNFRvQWZmaW5l KHgsIHksIHogKnAyMjRGaWVsZEVsZW1lbnQpICgqYmlnLkludCwgKmJpZy5JbnQpIHsKKy0JdmFy IHppbnYsIHppbnZzcSwgb3V0eCwgb3V0eSBwMjI0RmllbGRFbGVtZW50CistCXZhciB0bXAgcDIy NExhcmdlRmllbGRFbGVtZW50CistCistCWlmIGlzUG9pbnRBdEluZmluaXR5IDo9IHAyMjRJc1pl cm8oeik7IGlzUG9pbnRBdEluZmluaXR5ID09IDEgeworLQkJcmV0dXJuIG5ldyhiaWcuSW50KSwg bmV3KGJpZy5JbnQpCistCX0KKy0KKy0JcDIyNEludmVydCgmemludiwgeikKKy0JcDIyNFNxdWFy ZSgmemludnNxLCAmemludiwgJnRtcCkKKy0JcDIyNE11bCh4LCB4LCAmemludnNxLCAmdG1wKQor LQlwMjI0TXVsKCZ6aW52c3EsICZ6aW52c3EsICZ6aW52LCAmdG1wKQorLQlwMjI0TXVsKHksIHks ICZ6aW52c3EsICZ0bXApCistCistCXAyMjRDb250cmFjdCgmb3V0eCwgeCkKKy0JcDIyNENvbnRy YWN0KCZvdXR5LCB5KQorLQlyZXR1cm4gcDIyNFRvQmlnKCZvdXR4KSwgcDIyNFRvQmlnKCZvdXR5 KQorLX0KKy0KKy0vLyBnZXQyOEJpdHNGcm9tRW5kIHJldHVybnMgdGhlIGxlYXN0LXNpZ25pZmlj YW50IDI4IGJpdHMgZnJvbSBidWY+PnNoaWZ0LAorLS8vIHdoZXJlIGJ1ZiBpcyBpbnRlcnByZXRl ZCBhcyBhIGJpZy1lbmRpYW4gbnVtYmVyLgorLWZ1bmMgZ2V0MjhCaXRzRnJvbUVuZChidWYgW11i eXRlLCBzaGlmdCB1aW50KSAodWludDMyLCBbXWJ5dGUpIHsKKy0JdmFyIHJldCB1aW50MzIKKy0K Ky0JZm9yIGkgOj0gdWludCgwKTsgaSA8IDQ7IGkrKyB7CistCQl2YXIgYiBieXRlCistCQlpZiBs IDo9IGxlbihidWYpOyBsID4gMCB7CistCQkJYiA9IGJ1ZltsLTFdCistCQkJLy8gV2UgZG9uJ3Qg cmVtb3ZlIHRoZSBieXRlIGlmIHdlJ3JlIGFib3V0IHRvIHJldHVybiBhbmQgd2UncmUgbm90Cist CQkJLy8gcmVhZGluZyBhbGwgb2YgaXQuCistCQkJaWYgaSAhPSAzIHx8IHNoaWZ0ID09IDQgewor LQkJCQlidWYgPSBidWZbOmwtMV0KKy0JCQl9CistCQl9CistCQlyZXQgfD0gdWludDMyKGIpIDw8 ICg4ICogaSkgPj4gc2hpZnQKKy0JfQorLQlyZXQgJj0gYm90dG9tMjhCaXRzCistCXJldHVybiBy ZXQsIGJ1ZgorLX0KKy0KKy0vLyBwMjI0RnJvbUJpZyBzZXRzICpvdXQgPSAqaW4uCistZnVuYyBw MjI0RnJvbUJpZyhvdXQgKnAyMjRGaWVsZEVsZW1lbnQsIGluICpiaWcuSW50KSB7CistCWJ5dGVz IDo9IGluLkJ5dGVzKCkKKy0Jb3V0WzBdLCBieXRlcyA9IGdldDI4Qml0c0Zyb21FbmQoYnl0ZXMs IDApCistCW91dFsxXSwgYnl0ZXMgPSBnZXQyOEJpdHNGcm9tRW5kKGJ5dGVzLCA0KQorLQlvdXRb Ml0sIGJ5dGVzID0gZ2V0MjhCaXRzRnJvbUVuZChieXRlcywgMCkKKy0Jb3V0WzNdLCBieXRlcyA9 IGdldDI4Qml0c0Zyb21FbmQoYnl0ZXMsIDQpCistCW91dFs0XSwgYnl0ZXMgPSBnZXQyOEJpdHNG cm9tRW5kKGJ5dGVzLCAwKQorLQlvdXRbNV0sIGJ5dGVzID0gZ2V0MjhCaXRzRnJvbUVuZChieXRl cywgNCkKKy0Jb3V0WzZdLCBieXRlcyA9IGdldDI4Qml0c0Zyb21FbmQoYnl0ZXMsIDApCistCW91 dFs3XSwgYnl0ZXMgPSBnZXQyOEJpdHNGcm9tRW5kKGJ5dGVzLCA0KQorLX0KKy0KKy0vLyBwMjI0 VG9CaWcgcmV0dXJucyBpbiBhcyBhIGJpZy5JbnQuCistZnVuYyBwMjI0VG9CaWcoaW4gKnAyMjRG aWVsZEVsZW1lbnQpICpiaWcuSW50IHsKKy0JdmFyIGJ1ZiBbMjhdYnl0ZQorLQlidWZbMjddID0g Ynl0ZShpblswXSkKKy0JYnVmWzI2XSA9IGJ5dGUoaW5bMF0gPj4gOCkKKy0JYnVmWzI1XSA9IGJ5 dGUoaW5bMF0gPj4gMTYpCistCWJ1ZlsyNF0gPSBieXRlKCgoaW5bMF0gPj4gMjQpICYgMHgwZikg fCAoaW5bMV08PDQpJjB4ZjApCistCistCWJ1ZlsyM10gPSBieXRlKGluWzFdID4+IDQpCistCWJ1 ZlsyMl0gPSBieXRlKGluWzFdID4+IDEyKQorLQlidWZbMjFdID0gYnl0ZShpblsxXSA+PiAyMCkK Ky0KKy0JYnVmWzIwXSA9IGJ5dGUoaW5bMl0pCistCWJ1ZlsxOV0gPSBieXRlKGluWzJdID4+IDgp CistCWJ1ZlsxOF0gPSBieXRlKGluWzJdID4+IDE2KQorLQlidWZbMTddID0gYnl0ZSgoKGluWzJd ID4+IDI0KSAmIDB4MGYpIHwgKGluWzNdPDw0KSYweGYwKQorLQorLQlidWZbMTZdID0gYnl0ZShp blszXSA+PiA0KQorLQlidWZbMTVdID0gYnl0ZShpblszXSA+PiAxMikKKy0JYnVmWzE0XSA9IGJ5 dGUoaW5bM10gPj4gMjApCistCistCWJ1ZlsxM10gPSBieXRlKGluWzRdKQorLQlidWZbMTJdID0g Ynl0ZShpbls0XSA+PiA4KQorLQlidWZbMTFdID0gYnl0ZShpbls0XSA+PiAxNikKKy0JYnVmWzEw XSA9IGJ5dGUoKChpbls0XSA+PiAyNCkgJiAweDBmKSB8IChpbls1XTw8NCkmMHhmMCkKKy0KKy0J YnVmWzldID0gYnl0ZShpbls1XSA+PiA0KQorLQlidWZbOF0gPSBieXRlKGluWzVdID4+IDEyKQor LQlidWZbN10gPSBieXRlKGluWzVdID4+IDIwKQorLQorLQlidWZbNl0gPSBieXRlKGluWzZdKQor LQlidWZbNV0gPSBieXRlKGluWzZdID4+IDgpCistCWJ1Zls0XSA9IGJ5dGUoaW5bNl0gPj4gMTYp CistCWJ1ZlszXSA9IGJ5dGUoKChpbls2XSA+PiAyNCkgJiAweDBmKSB8IChpbls3XTw8NCkmMHhm MCkKKy0KKy0JYnVmWzJdID0gYnl0ZShpbls3XSA+PiA0KQorLQlidWZbMV0gPSBieXRlKGluWzdd ID4+IDEyKQorLQlidWZbMF0gPSBieXRlKGluWzddID4+IDIwKQorLQorLQlyZXR1cm4gbmV3KGJp Zy5JbnQpLlNldEJ5dGVzKGJ1Zls6XSkKKy19CistLS0gbGliZ28vZ28vY3J5cHRvL2VsbGlwdGlj L3AyMjRfdGVzdC5nby5qagkyMDE0LTAyLTE4IDE4OjAzOjMxLjYxNTU5ODU2MSArMDEwMAorKysr IGxpYmdvL2dvL2NyeXB0by9lbGxpcHRpYy9wMjI0X3Rlc3QuZ28JMjAxNC0wMi0xNSAxMTo0MDo1 Ni4xOTE1NTc5MjggKzAxMDAKK0BAIC0xLDQ3ICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgMjAxMiBU aGUgR28gQXV0aG9ycy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistLy8gVXNlIG9mIHRoaXMgc291 cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKKy0vLyBsaWNlbnNlIHRoYXQgY2Fu IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCistCistcGFja2FnZSBlbGxpcHRpYworLQor LWltcG9ydCAoCistCSJtYXRoL2JpZyIKKy0JInRlc3RpbmciCistKQorLQorLXZhciB0b0Zyb21C aWdUZXN0cyA9IFtdc3RyaW5neworLQkiMCIsCistCSIxIiwKKy0JIjIzIiwKKy0JImI3MGUwY2I0 NmJiNGJmN2YzMjEzOTBiOTRhMDNjMWQzNTZjMDExMjIzNDMyODBkNjEwNWMxZDIxIiwKKy0JIjcw NmE0NmQ0NzZkY2I3Njc5OGU2MDQ2ZDg5NDc0Nzg4ZDE2NGMxODAzMmQyNjhmZDEwNzA0ZmE2IiwK Ky19CistCistZnVuYyBwMjI0QWx0ZXJuYXRpdmVUb0JpZyhpbiAqcDIyNEZpZWxkRWxlbWVudCkg KmJpZy5JbnQgeworLQlyZXQgOj0gbmV3KGJpZy5JbnQpCistCXRtcCA6PSBuZXcoYmlnLkludCkK Ky0KKy0JZm9yIGkgOj0gdWludCgwKTsgaSA8IDg7IGkrKyB7CistCQl0bXAuU2V0SW50NjQoaW50 NjQoaW5baV0pKQorLQkJdG1wLkxzaCh0bXAsIDI4KmkpCistCQlyZXQuQWRkKHJldCwgdG1wKQor LQl9CistCXJldC5Nb2QocmV0LCBwMjI0LlApCistCXJldHVybiByZXQKKy19CistCistZnVuYyBU ZXN0VG9Gcm9tQmlnKHQgKnRlc3RpbmcuVCkgeworLQlmb3IgaSwgdGVzdCA6PSByYW5nZSB0b0Zy b21CaWdUZXN0cyB7CistCQluLCBfIDo9IG5ldyhiaWcuSW50KS5TZXRTdHJpbmcodGVzdCwgMTYp CistCQl2YXIgeCBwMjI0RmllbGRFbGVtZW50CistCQlwMjI0RnJvbUJpZygmeCwgbikKKy0JCW0g Oj0gcDIyNFRvQmlnKCZ4KQorLQkJaWYgbi5DbXAobSkgIT0gMCB7CistCQkJdC5FcnJvcmYoIiMl ZDogJXggIT0gJXgiLCBpLCBuLCBtKQorLQkJfQorLQkJcSA6PSBwMjI0QWx0ZXJuYXRpdmVUb0Jp ZygmeCkKKy0JCWlmIG4uQ21wKHEpICE9IDAgeworLQkJCXQuRXJyb3JmKCIjJWQ6ICV4ICE9ICV4 IChhbHRlcm5hdGl2ZSkiLCBpLCBuLCBtKQorLQkJfQorLQl9CistfQoKZGlmZiAtLWdpdCBhL2dj YzQ4LXByNjAwNDYucGF0Y2ggYi9nY2M0OC1wcjYwMDQ2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmZkZTZkYTkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0OC1wcjYw MDQ2LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKKzIwMTQtMDItMTkgIEphc29uIE1lcnJpbGwgIDxq YXNvbkByZWRoYXQuY29tPgorCisJUFIgYysrLzYwMDQ2CisJKiBwdC5jIChtYXliZV9pbnN0YW50 aWF0ZV9ub2V4Y2VwdCk6IERvbid0IGluc3RhbnRpYXRlIGV4Y2VwdGlvbgorCXNwZWMgZnJvbSB0 ZW1wbGF0ZSBjb250ZXh0LgorCistLS0gZ2NjL2NwL3B0LmMJKHJldmlzaW9uIDIwNzkyMCkKKysr KyBnY2MvY3AvcHQuYwkocmV2aXNpb24gMjA3OTIxKQorQEAgLTE4NTY3LDYgKzE4NTY3LDEwIEBA IG1heWJlX2luc3RhbnRpYXRlX25vZXhjZXB0ICh0cmVlIGZuKQorIHsKKyAgIHRyZWUgZm50eXBl LCBzcGVjLCBub2V4LCBjbG9uZTsKKyAKKysgIC8qIERvbid0IGluc3RhbnRpYXRlIGEgbm9leGNl cHQtc3BlY2lmaWNhdGlvbiBmcm9tIHRlbXBsYXRlIGNvbnRleHQuICAqLworKyAgaWYgKHByb2Nl c3NpbmdfdGVtcGxhdGVfZGVjbCkKKysgICAgcmV0dXJuOworKworICAgaWYgKERFQ0xfQ0xPTkVE X0ZVTkNUSU9OX1AgKGZuKSkKKyAgICAgZm4gPSBERUNMX0NMT05FRF9GVU5DVElPTiAoZm4pOwor ICAgZm50eXBlID0gVFJFRV9UWVBFIChmbik7CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvY3Bw MHgvbm9leGNlcHQyMi5DCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2Nw cDB4L25vZXhjZXB0MjIuQwkocmV2aXNpb24gMjA3OTIxKQorQEAgLTAsMCArMSwyMSBAQAorKy8v IFBSIGMrKy82MDA0NgorKy8vIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IGMrKzExIH0K KysKKytjb25zdGV4cHIgYm9vbCBmb28gKCkgeyByZXR1cm4gbm9leGNlcHQgKHRydWUpOyB9Cisr dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisrc3RydWN0IFYKKyt7CisrICB2b2lkIGJhciAoViAmKSBu b2V4Y2VwdCAoZm9vICgpKSB7fQorK307CisrdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisrc3RydWN0 IFcgOiBwdWJsaWMgViA8aW50PgorK3sKKysgIHZvaWQgYmFyIChXICZ4KSB7IFYgPGludD46OmJh ciAoeCk7IH0KKyt9OworKworK2ludAorK21haW4gKCkKKyt7CisrICBXIDxpbnQ+IGEsIGI7Cisr ICBhLmJhciAoYik7CisrfQoKZGlmZiAtLWdpdCBhL2djYzQ4LXByNjAxMzcucGF0Y2ggYi9nY2M0 OC1wcjYwMTM3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0Y2Q5 OTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0OC1wcjYwMTM3LnBhdGNoCkBAIC0wLDAgKzEsNDYg QEAKKzIwMTQtMDItMTEgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0Lmli bS5jb20+CisKKwlQUiB0YXJnZXQvNjAxMzcKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICgx MjgtYml0IEdQUiBzcGxpdHRlcik6IEFkZCBhIHNwbGl0dGVyCisJZm9yIFZTWC9BbHRpdmVjIHZl Y3RvcnMgdGhhdCBsYW5kIGluIEdQUiByZWdpc3RlcnMuCisKKwkqIGdjYy50YXJnZXQvcG93ZXJw Yy9wcjYwMTM3LmM6IE5ldyBmaWxlLgorCistLS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1k CShyZXZpc2lvbiAyMDc2OTgpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCShyZXZp c2lvbiAyMDc2OTkpCitAQCAtOTk2Myw2ICs5OTYzLDE1IEBAIChkZWZpbmVfaW5zbl9hbmRfc3Bs aXQgInJlbG9hZF92c3hfZnJvbV8KKyAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjEyIikKKyAgICAo c2V0X2F0dHIgInR5cGUiICJ0aHJlZSIpXSkKKyAKKysoZGVmaW5lX3NwbGl0CisrICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpGTU9WRTEyOF9HUFIgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIiKQor KwkobWF0Y2hfb3BlcmFuZDpGTU9WRTEyOF9HUFIgMSAiaW5wdXRfb3BlcmFuZCIgIiIpKV0KKysg ICJyZWxvYWRfY29tcGxldGVkCisrICAgJiYgKGludF9yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0s IDxNT0RFPm1vZGUpCisrICAgICAgIHx8IGludF9yZWdfb3BlcmFuZCAob3BlcmFuZHNbMV0sIDxN T0RFPm1vZGUpKSIKKysgIFsocGMpXQorK3sgcnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUgKG9w ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IERPTkU7IH0pCisrCisgOzsgTW92ZSBTRm1vZGUgdG8g YSBWU1ggZnJvbSBhIEdQUiByZWdpc3Rlci4gIEJlY2F1c2Ugc2NhbGFyIGZsb2F0aW5nIHBvaW50 CisgOzsgdHlwZSBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBkb3VibGUgcHJlY2lzaW9uIGluIHRo ZSBWU1ggcmVnaXN0ZXJzLCB3ZSBoYXZlCisgOzsgdG8gY29udmVydCBpdCBmcm9tIHRoZSB2ZWN0 b3IgZm9ybWF0LgorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ByNjAxMzcu YwkocmV2aXNpb24gMCkKKysrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wcjYw MTM3LmMJKHJldmlzaW9uIDIwNzY5OSkKK0BAIC0wLDAgKzEsMTcgQEAKKysvKiB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgeyBwb3dlcnBjKi0qLSogfSB9IH0gKi8KKysvKiB7IGRnLXNraXAtaWYg IiIgeyBwb3dlcnBjKi0qLWRhcndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICovCisrLyogeyBkZy1y ZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcG93ZXJwY19wOHZlY3Rvcl9vayB9ICovCisrLyogeyBk Zy1vcHRpb25zICItbWNwdT1wb3dlcjggLU8zIC1tbm8tdnN4IiB9ICovCisrCisrLyogdGFyZ2V0 LzYwMTM3LCBjb21waWxlciBnb3QgYSAnY291bGQgbm90IHNwbGl0IGluc24gZXJyb3InLiAgKi8K KysKKytleHRlcm4gaW50IHRhcmdldF9mbGFnczsKKytleHRlcm4gY2hhciBmaXhlZF9yZWdzWzUz XTsKKytleHRlcm4gY2hhciBjYWxsX3VzZWRfcmVnc1s1M107CisrCisrdm9pZCBpbml0X3JlZ19z ZXRzXzEodm9pZCkKKyt7CisrICBpbnQgaTsKKysgIGZvciAoaSA9IDA7IGkgPCA1MzsgaSsrKQor KyAgICBmaXhlZF9yZWdzW2ldID0gY2FsbF91c2VkX3JlZ3NbaV0gPSAoY2FsbF91c2VkX3JlZ3Nb aV0gJigodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMSkpICE9IDA7CisrfQo=