From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 82169 invoked by alias); 26 Jun 2017 09:13:22 -0000 Mailing-List: contact newlib-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: newlib-owner@sourceware.org Received: (qmail 81572 invoked by uid 89); 26 Jun 2017 09:13:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.5 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-ot0-f174.google.com Received: from mail-ot0-f174.google.com (HELO mail-ot0-f174.google.com) (74.125.82.174) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 26 Jun 2017 09:13:17 +0000 Received: by mail-ot0-f174.google.com with SMTP id 95so63649475ott.3 for ; Mon, 26 Jun 2017 02:13:16 -0700 (PDT) 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=Dbv51TLPrP4wDndM8vs9kN9/JPtPHF6+3nQ8ozdwejQ=; b=sgmZBRqbnqZQ3k9kS0igXOPzS0J+dSZCYSipoWSJblPDJ3Kkgxjmgv+nukzKqg3uIW Rj1JSodIO+7pyA8pzTWYMreYOUVo1U0m8219uhiGUmn/x3e/nohC3UK4B/6mJ0LJ/74+ AMIr/5BBImn22gQKWkRzLIB2cTopv9m0cGqrVuOXz6L1YtAVNd33S5E6rcbEozShWbDN Vl8wktO85j3JZbDShM6ipDONgiHSuzmcEoZqVkIZNITNghOFNJmXqtylpdD849H/rFoQ Rg1qFckLlo6Usdei444aUIROvxKMo6K9pke3gFywDu+b4lWz5VjSi8I9c9vjaVtak9Y9 Ml+A== X-Gm-Message-State: AKS2vOwngMwsIiJ7ABNR3qTKAHW5lPDqD/QpGhYf0ynNS2YOwAMkXI/g NWNiLutyLkn5nY1s1annVo0w1orLLA== X-Received: by 10.157.60.84 with SMTP id j20mr11886256ote.38.1498468395293; Mon, 26 Jun 2017 02:13:15 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.4.118 with HTTP; Mon, 26 Jun 2017 02:13:14 -0700 (PDT) From: Aditya Upadhyay Date: Mon, 26 Jun 2017 09:13:00 -0000 Message-ID: Subject: Adding some long double complex methods from NetBSD To: newlib@sourceware.org Content-Type: multipart/mixed; boundary="001a11c0293268c2560552d95c43" X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00481.txt.bz2 --001a11c0293268c2560552d95c43 Content-Type: text/plain; charset="UTF-8" Content-length: 204 Hello Developers, I have ported some of the long double complex methods from NetBSD. I am requesting you to please review the patch and suggest me needed modification. Thanks & Regards, Aditya Upadhyay --001a11c0293268c2560552d95c43 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Importing-some-long-double-complex-methods-from-NetB.patch" Content-Disposition: attachment; filename="0001-Importing-some-long-double-complex-methods-from-NetB.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4dxbr690 Content-length: 32103 RnJvbSBhZWRjNzExOGZjMGI3MTAzOTgyZjU0NGFkNzM3ZTEyZDY2ZjRmOGJk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBZGl0eWEgVXBhZGh5 YXkgPGFhZGl0MDQwMkBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgSnVuIDIw MTcgMTQ6Mzg6MzggKzA1MzAKU3ViamVjdDogW1BBVENIXSBJbXBvcnRpbmcg c29tZSBsb25nIGRvdWJsZSBjb21wbGV4IG1ldGhvZHMgZnJvbSBOZXRCU0Qu CgotLS0KIG5ld2xpYi9saWJtL2NvbXBsZXgvTWFrZWZpbGUuYW0gICAgfCAg IDQgKy0KIG5ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3NobC5jICAgICAgfCAg NDUgKysrKysrKysrKysrKwogbmV3bGliL2xpYm0vY29tcGxleC9jYWNvc2wu YyAgICAgICB8ICA0NSArKysrKysrKysrKysrCiBuZXdsaWIvbGlibS9jb21w bGV4L2NhcmdsLmMgICAgICAgIHwgIDE4ICsrKysrKwogbmV3bGliL2xpYm0v Y29tcGxleC9jY29zbC5jICAgICAgICB8ICA0NSArKysrKysrKysrKysrCiBu ZXdsaWIvbGlibS9jb21wbGV4L2NlcGhlc19zdWJybC5jIHwgMTI4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIG5ld2xpYi9saWJt L2NvbXBsZXgvY2VwaGVzX3N1YnJsLmggfCAgIDkgKysrCiBuZXdsaWIvbGli bS9jb21wbGV4L2NleHBsLmMgICAgICAgIHwgIDQ2ICsrKysrKysrKysrKysK IG5ld2xpYi9saWJtL2NvbXBsZXgvY2xvZ2wuYyAgICAgICAgfCAgNDYgKysr KysrKysrKysrKwogbmV3bGliL2xpYm0vY29tcGxleC9jcHJvamwuYyAgICAg ICB8ICA2NCArKysrKysrKysrKysrKysrKysrCiBuZXdsaWIvbGlibS9jb21w bGV4L2NzcXJ0bC5jICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA1NjAgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXds aWIvbGlibS9jb21wbGV4L2NhY29zaGwuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IG5ld2xpYi9saWJtL2NvbXBsZXgvY2Fjb3NsLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBuZXdsaWIvbGlibS9jb21wbGV4L2NhcmdsLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBuZXdsaWIvbGlibS9jb21wbGV4L2Njb3NsLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBuZXdsaWIvbGlibS9jb21wbGV4L2NlcGhlc19zdWJybC5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgbmV3bGliL2xpYm0vY29tcGxleC9jZXBo ZXNfc3VicmwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJtL2Nv bXBsZXgvY2V4cGwuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9saWJt L2NvbXBsZXgvY2xvZ2wuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IG5ld2xpYi9s aWJtL2NvbXBsZXgvY3Byb2psLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXds aWIvbGlibS9jb21wbGV4L2NzcXJ0bC5jCgpkaWZmIC0tZ2l0IGEvbmV3bGli L2xpYm0vY29tcGxleC9NYWtlZmlsZS5hbSBiL25ld2xpYi9saWJtL2NvbXBs ZXgvTWFrZWZpbGUuYW0KaW5kZXggNDAyMDUzZi4uYmIzZmZlZiAxMDA2NDQK LS0tIGEvbmV3bGliL2xpYm0vY29tcGxleC9NYWtlZmlsZS5hbQorKysgYi9u ZXdsaWIvbGlibS9jb21wbGV4L01ha2VmaWxlLmFtCkBAIC0xMCw3ICsxMCw3 IEBAIHNyYyA9IGNhYnMuYyBjYWNvcy5jIGNhY29zaC5jIGNhcmcuYyBjYXNp bi5jIGNhc2luaC5jIFwKICAgICAgIGNwb3cuYyBjcHJvai5jICBjcmVhbC5j ICBcCiAgICAgICBjc2luLmMgY3NpbmguYyBjc3FydC5jIGN0YW4uYyBjdGFu aC5jCiAKLWxzcmMgPSBjYWJzbC5jIGNyZWFsbC5jIGNpbWFnbC5jIGNjb3No bC5jCitsc3JjID0gY2Fic2wuYyBjcmVhbGwuYyBjaW1hZ2wuYyBjY29zaGwu YyBjYWNvc2hsLmMgY3NxcnRsLmMgY2xvZ2wuYyBjZXBoZXNfc3VicmwuYyBj YXJnbC5jIGNwcm9qbC5jIGNleHBsLmMgY2Fjb3NsLmMgY2Nvc2wuYwogCiBm c3JjID0JY2Fic2YuYyBjYXNpbmYuYyBjY29zZi5jIGNpbWFnZi5jIGNwcm9q Zi5jICBcCiAgICAgICAgIGNzcXJ0Zi5jIGNhY29zZi5jIGNhc2luaGYuYyBj Y29zaGYuYyBjbG9nZi5jIGNsb2cxMGYuYyBcCkBAIC00Myw0ICs0Myw0IEBA IENIQVBURVJTID0gY29tcGxleC50ZXgKIAogIyBBIHBhcnRpYWwgZGVwZW5k ZW5jeSBsaXN0LgogCi0kKGxpYl9hX09CSkVDVFMpOiAkKHNyY2RpcikvLi4v Li4vbGliYy9pbmNsdWRlL2NvbXBsZXguaCAkKHNyY2RpcikvY2VwaGVzX3N1 YnIuaCAkKHNyY2RpcikvY2VwaGVzX3N1YnJmLmgKKyQobGliX2FfT0JKRUNU Uyk6ICQoc3JjZGlyKS8uLi8uLi9saWJjL2luY2x1ZGUvY29tcGxleC5oICQo c3JjZGlyKS9jZXBoZXNfc3Vici5oICQoc3JjZGlyKS9jZXBoZXNfc3VicmYu aCAkKHNyY2RpcikvY2VwaGVzX3N1YnJsLmgKZGlmZiAtLWdpdCBhL25ld2xp Yi9saWJtL2NvbXBsZXgvY2Fjb3NobC5jIGIvbmV3bGliL2xpYm0vY29tcGxl eC9jYWNvc2hsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNGU0ZTAwNgotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2Nv bXBsZXgvY2Fjb3NobC5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qICROZXRCU0Q6 IGNhY29zaGwuYyx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNocmlzdG9z IEV4cCAkICovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3IFRoZSBO ZXRCU0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKyAqCisgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJl IHdyaXR0ZW4gYnkgU3RlcGhlbiBMLiBNb3NoaWVyLgorICogSXQgaXMgcmVk aXN0cmlidXRlZCBieSB0aGUgTmV0QlNEIEZvdW5kYXRpb24gYnkgcGVybWlz c2lvbiBvZiB0aGUgYXV0aG9yLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5F VEJTRCBGT1VOREFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAqIGBg QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05UUklC VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor ICovCisKKyNpbmNsdWRlIDxjb21wbGV4Lmg+CisKK2xvbmcgZG91YmxlIGNv bXBsZXgKK2NhY29zaGwobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxv bmcgZG91YmxlIGNvbXBsZXggdzsKKworI2lmIDAgLyogZG9lcyBub3QgZ2l2 ZSB0aGUgcHJpbmNpcGFsIHZhbHVlICovCisJdyA9IEkgKiBjYWNvc2woeik7 CisjZWxzZQorCXcgPSBjbG9nbCh6ICsgY3NxcnRsKHogKyAxKSAqIGNzcXJ0 bCh6IC0gMSkpOworI2VuZGlmCisJcmV0dXJuIHc7Cit9CmRpZmYgLS1naXQg YS9uZXdsaWIvbGlibS9jb21wbGV4L2NhY29zbC5jIGIvbmV3bGliL2xpYm0v Y29tcGxleC9jYWNvc2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42YTA1YzhjCi0tLSAvZGV2L251bGwKKysrIGIvbmV3bGliL2xp Ym0vY29tcGxleC9jYWNvc2wuYwpAQCAtMCwwICsxLDQ1IEBACisvKiAkTmV0 QlNEOiBjYWNvc2wuYyx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNocmlz dG9zIEV4cCAkICovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3IFRo ZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3 YXJlIHdyaXR0ZW4gYnkgU3RlcGhlbiBMLiBNb3NoaWVyLgorICogSXQgaXMg cmVkaXN0cmlidXRlZCBieSB0aGUgTmV0QlNEIEZvdW5kYXRpb24gYnkgcGVy bWlzc2lvbiBvZiB0aGUgYXV0aG9yLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0 OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0 aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF IE5FVEJTRCBGT1VOREFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAq IGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05U UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF LgorICovCisKKyNpbmNsdWRlIDxjb21wbGV4Lmg+CisjaW5jbHVkZSA8bWF0 aC5oPgorI2luY2x1ZGUgImNlcGhlc19zdWJybC5oIgorCitsb25nIGRvdWJs ZSBjb21wbGV4CitjYWNvc2wobG9uZyBkb3VibGUgY29tcGxleCB6KQorewor CWxvbmcgZG91YmxlIGNvbXBsZXggdzsKKworCXcgPSBjYXNpbmwoeik7CisJ dyA9IChNX1BJXzJMIC0gY3JlYWxsKHcpKSAtIGNpbWFnbCh3KSAqIEk7CisJ cmV0dXJuIHc7Cit9CisKZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL2NvbXBs ZXgvY2FyZ2wuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2FyZ2wuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjg4NWE0Ci0tLSAv ZGV2L251bGwKKysrIGIvbmV3bGliL2xpYm0vY29tcGxleC9jYXJnbC5jCkBA IC0wLDAgKzEsMTggQEAKKy8qICROZXRCU0Q6IGNhcmdsLmMsdiAxLjEgMjAx NC8xMC8xMCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAgJCAqLworCisvKgorICog UHVibGljIGRvbWFpbi4KKyAqLworCisjaW5jbHVkZSA8Y29tcGxleC5oPgor I2luY2x1ZGUgPG1hdGguaD4KKworbG9uZyBkb3VibGUKK2NhcmdsKGxvbmcg ZG91YmxlIGNvbXBsZXggeikKK3sgICAgIAorICAgICAgICNpZmRlZiBfTERC TF9FUV9EQkwKKyAgICAgICAgIHJldHVybiBjYXJnICh6KTsKKyAgICAgICAj ZWxzZQorICAgICAgICAgcmV0dXJuIGF0YW4ybCAoaW1hZyAoeiksIHJlYWwg KHopKTsKKyAgICAgICAjZW5kaWYKK30KZGlmZiAtLWdpdCBhL25ld2xpYi9s aWJtL2NvbXBsZXgvY2Nvc2wuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2Nv c2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzEw ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvbmV3bGliL2xpYm0vY29tcGxleC9j Y29zbC5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qICROZXRCU0Q6IGNjb3NsLmMs diAxLjEgMjAxNC8xMC8xMCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAgJCAqLwor CisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwNyBUaGUgTmV0QlNEIEZvdW5k YXRpb24sIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog VGhpcyBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0d2FyZSB3cml0dGVuIGJ5 IFN0ZXBoZW4gTC4gTW9zaGllci4KKyAqIEl0IGlzIHJlZGlzdHJpYnV0ZWQg YnkgdGhlIE5ldEJTRCBGb3VuZGF0aW9uIGJ5IHBlcm1pc3Npb24gb2YgdGhl IGF1dGhvci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRB VElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElTJycgQU5E IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JTCisgKiBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j bHVkZSA8Y29tcGxleC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRl ICJjZXBoZXNfc3VicmwuaCIKKworbG9uZyBkb3VibGUgY29tcGxleAorY2Nv c2wobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxvbmcgZG91YmxlIGNv bXBsZXggdzsKKwlsb25nIGRvdWJsZSBjaCwgc2g7CisKKwlfY2Noc2hsKGNp bWFnbCh6KSwgJmNoLCAmc2gpOworCXcgPSBjb3NsKGNyZWFsbCh6KSkgKiBj aCAtIChzaW5sKGNyZWFsbCh6KSkgKiBzaCkgKiBJOworCXJldHVybiB3Owor fQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vY29tcGxleC9jZXBoZXNfc3Vi cmwuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2VwaGVzX3N1YnJsLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFmMTFkZgotLS0g L2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2VwaGVzX3N1 YnJsLmMKQEAgLTAsMCArMSwxMjggQEAKKy8qICROZXRCU0Q6IGNlcGhlc19z dWJybC5jLHYgMS4yIDIwMTQvMTAvMTAgMTQ6MDY6NDAgY2hyaXN0b3MgRXhw ICQgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE5ldEJT RCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgor ICoKKyAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgd3Jp dHRlbiBieSBTdGVwaGVuIEwuIE1vc2hpZXIuCisgKiBJdCBpcyByZWRpc3Ry aWJ1dGVkIGJ5IHRoZSBOZXRCU0QgRm91bmRhdGlvbiBieSBwZXJtaXNzaW9u IG9mIHRoZSBhdXRob3IuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNE IEZPVU5EQVRJT04sIElOQy4gQU5EIENPTlRSSUJVVE9SUworICogYGBBUyBJ UycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO IE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9S UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE IE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K KworI2luY2x1ZGUgPGNvbXBsZXguaD4KKyNpbmNsdWRlIDxtYXRoLmg+Cisj aW5jbHVkZSAiY2VwaGVzX3N1YnJsLmgiCisKKy8qIGNhbGN1bGF0ZSBjb3No IGFuZCBzaW5oICovCisKK3ZvaWQKK19jY2hzaGwobG9uZyBkb3VibGUgeCwg bG9uZyBkb3VibGUgKmMsIGxvbmcgZG91YmxlICpzKQoreworCWxvbmcgZG91 YmxlIGUsIGVpOworCisJaWYgKGZhYnNsKHgpIDw9IDAuNUwpIHsKKwkJKmMg PSBjb3NobCh4KTsKKwkJKnMgPSBzaW5obCh4KTsKKwl9IGVsc2UgeworCQll ID0gZXhwbCh4KTsKKwkJZWkgPSAwLjVMIC8gZTsKKwkJZSA9IDAuNUwgKiBl OworCQkqcyA9IGUgLSBlaTsKKwkJKmMgPSBlICsgZWk7CisJfQorfQorCisv KiBQcm9ncmFtIHRvIHN1YnRyYWN0IG5lYXJlc3QgaW50ZWdlciBtdWx0aXBs ZSBvZiBQSSAqLworCisvKiBleHRlbmRlZCBwcmVjaXNpb24gdmFsdWUgb2Yg UEk6ICovCitzdGF0aWMgY29uc3QgbG9uZyBkb3VibGUgRFAxID0gMy4xNDE1 OTI2NTM1ODk3OTMyMzgyOTU5Njg1MjQ5MDkwODUzMTc2MzEyNUw7CitzdGF0 aWMgY29uc3QgbG9uZyBkb3VibGUgRFAyID0gMS42NjY3NDg1ODM3MDQxNzU2 NjU2NDAzNDI0ODI5MzAxOTk4NzAzMDA3ZS0xOUw7CisjaWZuZGVmIF9fdmF4 X18KK3N0YXRpYyBjb25zdCBsb25nIGRvdWJsZSBEUDMgPSAxLjg4MzA0MTA3 NzY2MDc4NTExNjc0NTkwOTU0ODQ1NjAzNDk0MDI3NTNlLTM5TDsKKyNkZWZp bmUgTUFDSEVQTCAxLjFlLTM4TAorI2Vsc2UKK3N0YXRpYyBjb25zdCBsb25n IGRvdWJsZSBEUDMgPSAwTDsKKyNkZWZpbmUgTUFDSEVQTCAxLjFlLTE5TAor I2VuZGlmCisKK2xvbmcgZG91YmxlCitfcmVkdXBpbChsb25nIGRvdWJsZSB4 KQoreworCWxvbmcgZG91YmxlIHQ7CisJbG9uZyBsb25nIGk7CisKKwl0ID0g eCAvIE1fUElMOworCWlmICh0ID49IDAuMEwpCisJCXQgKz0gMC41TDsKKwll bHNlCisJCXQgLT0gMC41TDsKKworCWkgPSB0OwkvKiB0aGUgbXVsdGlwbGUg Ki8KKwl0ID0gaTsKKwl0ID0gKCh4IC0gdCAqIERQMSkgLSB0ICogRFAyKSAt IHQgKiBEUDM7CisJcmV0dXJuIHQ7Cit9CisKKy8qIFRheWxvciBzZXJpZXMg ZXhwYW5zaW9uIGZvciBjb3NoKDJ5KSAtIGNvcygyeCkgKi8KKworbG9uZyBk b3VibGUKK19jdGFuc2wobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxv bmcgZG91YmxlIGYsIHgsIHgyLCB5LCB5Miwgcm4sIHQ7CisJbG9uZyBkb3Vi bGUgZDsKKworCXggPSBmYWJzbCgyLjBMICogY3JlYWxsKHopKTsKKwl5ID0g ZmFic2woMi4wTCAqIGNpbWFnbCh6KSk7CisKKwl4ID0gX3JlZHVwaWwoeCk7 CisKKwl4ID0geCAqIHg7CisJeSA9IHkgKiB5OworCXgyID0gMS4wOworCXky ID0gMS4wOworCWYgPSAxLjA7CisJcm4gPSAwLjA7CisJZCA9IDAuMDsKKwlk byB7CisJCXJuICs9IDEuMEw7CisJCWYgKj0gcm47CisJCXJuICs9IDEuMEw7 CisJCWYgKj0gcm47CisJCXgyICo9IHg7CisJCXkyICo9IHk7CisJCXQgPSB5 MiArIHgyOworCQl0IC89IGY7CisJCWQgKz0gdDsKKworCQlybiArPSAxLjBM OworCQlmICo9IHJuOworCQlybiArPSAxLjBMOworCQlmICo9IHJuOworCQl4 MiAqPSB4OworCQl5MiAqPSB5OworCQl0ID0geTIgLSB4MjsKKwkJdCAvPSBm OworCQlkICs9IHQ7CisJfSB3aGlsZSAoZmFic2wodC9kKSA+IE1BQ0hFUEwp OworCXJldHVybiBkOworfQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vY29t cGxleC9jZXBoZXNfc3VicmwuaCBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2Vw aGVzX3N1YnJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNjM1NGIyMwotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2Nv bXBsZXgvY2VwaGVzX3N1YnJsLmgKQEAgLTAsMCArMSw5IEBACisvKiAkTmV0 QlNEOiBjZXBoZXNfc3VicmwuaCx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4 IGNocmlzdG9zIEV4cCAkICovCisKK3ZvaWQgX2NjaHNobChsb25nIGRvdWJs ZSwgbG9uZyBkb3VibGUgKiwgbG9uZyBkb3VibGUgKik7Citsb25nIGRvdWJs ZSBfcmVkdXBpbChsb25nIGRvdWJsZSk7Citsb25nIGRvdWJsZSBfY3RhbnNs KGxvbmcgZG91YmxlIGNvbXBsZXgpOworCisjZGVmaW5lCU1fUElMCTMuMTQx NTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODBlKzAwTAorI2RlZmlu ZQlNX1BJXzJMCTEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUx NDBlKzAwTAorCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2Nl eHBsLmMgYi9uZXdsaWIvbGlibS9jb21wbGV4L2NleHBsLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1NjYzNAotLS0gL2Rldi9u dWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2V4cGwuYwpAQCAtMCww ICsxLDQ2IEBACisvKiAkTmV0QlNEOiBjZXhwbC5jLHYgMS4xIDIwMTQvMTAv MTAgMDA6NDg6MTggY2hyaXN0b3MgRXhwICQgKi8KKworLyotCisgKiBDb3B5 cmlnaHQgKGMpIDIwMDcgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCisg KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgY29kZSBpcyBk ZXJpdmVkIGZyb20gc29mdHdhcmUgd3JpdHRlbiBieSBTdGVwaGVuIEwuIE1v c2hpZXIuCisgKiBJdCBpcyByZWRpc3RyaWJ1dGVkIGJ5IHRoZSBOZXRCU0Qg Rm91bmRhdGlvbiBieSBwZXJtaXNzaW9uIG9mIHRoZSBhdXRob3IuCisgKgor ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5E IENPTlRSSUJVVE9SUworICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBG T1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGNvbXBsZXgu aD4KKyNpbmNsdWRlIDxtYXRoLmg+CisKK2xvbmcgZG91YmxlIGNvbXBsZXgK K2NleHBsKGxvbmcgZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nIGRvdWJs ZSBjb21wbGV4IHc7CisJbG9uZyBkb3VibGUgciwgeCwgeTsKKworCXggPSBj cmVhbGwoeik7CisJeSA9IGNpbWFnbCh6KTsKKwlyID0gZXhwbCh4KTsKKwl3 ID0gciAqIGNvc2woeSkgKyByICogc2lubCh5KSAqIEk7CisJcmV0dXJuIHc7 Cit9CmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2Nsb2dsLmMg Yi9uZXdsaWIvbGlibS9jb21wbGV4L2Nsb2dsLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzY0NGE0NAotLS0gL2Rldi9udWxsCisr KyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2xvZ2wuYwpAQCAtMCwwICsxLDQ2 IEBACisvKiAkTmV0QlNEOiBjbG9nbC5jLHYgMS4xIDIwMTQvMTAvMTAgMDA6 NDg6MTggY2hyaXN0b3MgRXhwICQgKi8KKworLyotCisgKiBDb3B5cmlnaHQg KGMpIDIwMDcgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgY29kZSBpcyBkZXJpdmVk IGZyb20gc29mdHdhcmUgd3JpdHRlbiBieSBTdGVwaGVuIEwuIE1vc2hpZXIu CisgKiBJdCBpcyByZWRpc3RyaWJ1dGVkIGJ5IHRoZSBOZXRCU0QgRm91bmRh dGlvbiBieSBwZXJtaXNzaW9uIG9mIHRoZSBhdXRob3IuCisgKgorICogUmVk aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50 YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W SURFRCBCWSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5EIENPTlRS SUJVVE9SUworICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisg KiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFU SU9OIE9SIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0Yg U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGNvbXBsZXguaD4KKyNp bmNsdWRlIDxtYXRoLmg+CisKK2xvbmcgZG91YmxlIGNvbXBsZXgKK2Nsb2ds KGxvbmcgZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nIGRvdWJsZSBjb21w bGV4IHc7CisJbG9uZyBkb3VibGUgcCwgcnI7CisKKwlyciA9IGNhYnNsKHop OworCXAgPSBsb2dsKHJyKTsKKwlyciA9IGF0YW4ybChjaW1hZ2woeiksIGNy ZWFsbCh6KSk7CisJdyA9IHAgKyByciAqIEk7CisJcmV0dXJuIHc7Cit9CmRp ZmYgLS1naXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2Nwcm9qbC5jIGIvbmV3 bGliL2xpYm0vY29tcGxleC9jcHJvamwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lNzFjNzczCi0tLSAvZGV2L251bGwKKysrIGIv bmV3bGliL2xpYm0vY29tcGxleC9jcHJvamwuYwpAQCAtMCwwICsxLDY0IEBA CisvKgkkTmV0QlNEOiBjcHJvamwuYyx2IDEuNyAyMDE0LzEwLzEwIDAwOjQ4 OjE4IGNocmlzdG9zIEV4cCAkCSovCisKKy8qLQorICogQ29weXJpZ2h0IChj KSAyMDEwIFRoZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJp Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0 aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0Qg Rk9VTkRBVElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElT JycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g Tk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JT CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg T0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorX19SQ1NJRCgiJE5ldEJTRDogY3By b2psLmMsdiAxLjcgMjAxNC8xMC8xMCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAg JCIpOworCisjaW5jbHVkZSA8Y29tcGxleC5oPgorI2luY2x1ZGUgPG1hdGgu aD4KKworI2luY2x1ZGUgIi4uL2NvbW1vbi9mZGxpYm0uaCIKKworLyoKKyAq IGNwcm9qbChsb25nIGRvdWJsZSBjb21wbGV4IHopCisgKgorICogVGhlc2Ug ZnVuY3Rpb25zIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByb2plY3Rpb24g KG5vdCBzdGVyZW9ncmFwaGljISkKKyAqIG9udG8gdGhlIFJpZW1hbm4gc3Bo ZXJlLgorICoKKyAqIHogcHJvamVjdHMgdG8geiwgZXhjZXB0IHRoYXQgYWxs IGNvbXBsZXggaW5maW5pdGllcyAoZXZlbiB0aG9zZSB3aXRoIG9uZQorICog aW5maW5pdGUgcGFydCBhbmQgb25lIE5hTiBwYXJ0KSBwcm9qZWN0IHRvIHBv c2l0aXZlIGluZmluaXR5IG9uIHRoZSByZWFsIGF4aXMuCisgKiBJZiB6IGhh cyBhbiBpbmZpbml0ZSBwYXJ0LCB0aGVuIGNwcm9qKHopIHNoYWxsIGJlIGVx dWl2YWxlbnQgdG86CisgKgorICogSU5GSU5JVFkgKyBJICogY29weXNpZ24o MC4wLCBjaW1hZyh6KSkKKyAqLworbG9uZyBkb3VibGUgY29tcGxleAorY3By b2psKGxvbmcgZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nX2RvdWJsZV9j b21wbGV4IHcgPSB7IC56ID0geiB9OworCisJLypDT05TVENPTkQqLworCWlm IChpc2luZihjcmVhbGwoeikpIHx8IGlzaW5mKGNpbWFnbCh6KSkpIHsKKyNp ZmRlZiBfX0lORklOSVRZCisJCVJFQUxfUEFSVCh3KSA9IEhVR0VfVkFMOwor I2Vsc2UKKwkJUkVBTF9QQVJUKHcpID0gSU5GSU5JVFk7CisjZW5kaWYKKwkJ SU1BR19QQVJUKHcpID0gY29weXNpZ25sKDAuMEwsIGNpbWFnbCh6KSk7CisJ fQorCisJcmV0dXJuICh3LnopOworfQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xp Ym0vY29tcGxleC9jc3FydGwuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY3Nx cnRsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEw YTEyNgotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgv Y3NxcnRsLmMKQEAgLTAsMCArMSwxMTIgQEAKKy8qLQorICogQ29weXJpZ2h0 IChjKSAyMDA3LTIwMDggRGF2aWQgU2NodWx0eiA8ZGFzQEZyZWVCU0QuT1JH PgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1 dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ IFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisg KiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFH RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBP RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ VElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBM SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP U1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk ZSA8c3lzL2NkZWZzLmg+CisjaWYgMAorX19GQlNESUQoIiRGcmVlQlNEOiBo ZWFkL2xpYi9tc3VuL3NyYy9zX2NzcXJ0bC5jIDE4MTQwMiAyMDA4LTA4LTA4 IDAwOjE1OjE2WiBkYXMgJCIpOworI2Vsc2UKK19fUkNTSUQoIiROZXRCU0Q6 IGNzcXJ0bC5jLHYgMS4yIDIwMTQvMTAvMTEgMDA6NDM6NTEgY2hyaXN0b3Mg RXhwICQiKTsKKyNlbmRpZgorCisjaW5jbHVkZSA8Y29tcGxleC5oPgorI2lu Y2x1ZGUgPGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg PHN0ZGJvb2wuaD4KKy8qCisgKiBnY2MgZG9lc24ndCBpbXBsZW1lbnQgY29t cGxleCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiBjb3JyZWN0bHksCisg KiBzbyB3ZSBuZWVkIHRvIGhhbmRsZSBpbmZpbml0aWVzIHNwZWNpYWxseS4g V2UgdHVybiBvbiB0aGlzIHByYWdtYSB0bworICogbm90aWZ5IGNvbmZvcm1p bmcgYzk5IGNvbXBpbGVycyB0aGF0IHRoZSBmYXN0LWJ1dC1pbmNvcnJlY3Qg Y29kZSB0aGF0CisgKiBnY2MgZ2VuZXJhdGVzIGlzIGFjY2VwdGFibGUsIHNp bmNlIHRoZSBzcGVjaWFsIGNhc2VzIGhhdmUgYWxyZWFkeSBiZWVuCisgKiBo YW5kbGVkLgorICovCisvLyAjcHJhZ21hCVNUREMgQ1hfTElNSVRFRF9SQU5H RQlPTgorCisvKiBXZSByaXNrIHNwdXJpb3VzIG92ZXJmbG93IGZvciBjb21w b25lbnRzID49IExEQkxfTUFYIC8gKDEgKyBzcXJ0KDIpKS4gKi8KKyNkZWZp bmUJVEhSRVNICShMREJMX01BWCAvIDIuNDE0MjEzNTYyMzczMDk1MDQ4ODAx Njg4NzI0MjA5Njk4TCkKKworI2RlZmluZSBjcGFja2wociwgaSkgKChyKSAr IChpKSAqIEkpCisKK2xvbmcgZG91YmxlIGNvbXBsZXgKK2NzcXJ0bChsb25n IGRvdWJsZSBjb21wbGV4IHopCit7CisJbG9uZyBkb3VibGUgY29tcGxleCBy ZXN1bHQ7CisJbG9uZyBkb3VibGUgYSwgYjsKKwlsb25nIGRvdWJsZSB0Owor CWJvb2wgc2NhbGU7CisKKwlhID0gY3JlYWxsKHopOworCWIgPSBjaW1hZ2wo eik7CisKKwkvKiBIYW5kbGUgc3BlY2lhbCBjYXNlcy4gKi8KKwlpZiAoeiA9 PSAwLjBMKQorCQlyZXR1cm4gKGNwYWNrbCgwLjBMLCBiKSk7CisJaWYgKGlz aW5mKGIpKQorCQlyZXR1cm4gKGNwYWNrbChJTkZJTklUWSwgYikpOworCWlm IChpc25hbihhKSkgeworCQl0ID0gKGIgLSBiKSAvIChiIC0gYik7CS8qIHJh aXNlIGludmFsaWQgaWYgYiBpcyBub3QgYSBOYU4gKi8KKwkJcmV0dXJuIChj cGFja2woYSwgdCkpOwkvKiByZXR1cm4gTmFOICsgTmFOIGkgKi8KKwl9CisJ aWYgKGlzaW5mKGEpKSB7CisJCS8qCisJCSAqIGNzcXJ0KGluZiArIE5hTiBp KSAgPSBpbmYgKyAgTmFOIGkKKwkJICogY3NxcnQoaW5mICsgeSBpKSAgICA9 IGluZiArICAwIGkKKwkJICogY3NxcnQoLWluZiArIE5hTiBpKSA9IE5hTiAr LSBpbmYgaQorCQkgKiBjc3FydCgtaW5mICsgeSBpKSAgID0gMCAgICsgIGlu ZiBpCisJCSAqLworCQlpZiAoc2lnbmJpdChhKSkKKwkJCXJldHVybiAoY3Bh Y2tsKGZhYnNsKGIgLSBiKSwgY29weXNpZ25sKGEsIGIpKSk7CisJCWVsc2UK KwkJCXJldHVybiAoY3BhY2tsKGEsIGNvcHlzaWdubChiIC0gYiwgYikpKTsK Kwl9CisJLyoKKwkgKiBUaGUgcmVtYWluaW5nIHNwZWNpYWwgY2FzZSAoYiBp cyBOYU4pIGlzIGhhbmRsZWQganVzdCBmaW5lIGJ5CisJICogdGhlIG5vcm1h bCBjb2RlIHBhdGggYmVsb3cuCisJICovCisKKwkvKiBTY2FsZSB0byBhdm9p ZCBvdmVyZmxvdy4gKi8KKwlpZiAoZmFic2woYSkgPj0gVEhSRVNIIHx8IGZh YnNsKGIpID49IFRIUkVTSCkgeworCQlhICo9IDAuMjVMOworCQliICo9IDAu MjVMOworCQlzY2FsZSA9IHRydWU7CisJfSBlbHNlIHsKKwkJc2NhbGUgPSBm YWxzZTsKKwl9CisKKwkvKiBBbGdvcml0aG0gMzEyLCBDQUNNIHZvbCAxMCwg T2N0IDE5NjcuICovCisJaWYgKGEgPj0gMEwpIHsKKwkJdCA9IHNxcnRsKChh ICsgaHlwb3RsKGEsIGIpKSAqIDAuNUwpOworCQlyZXN1bHQgPSBjcGFja2wo dCwgYiAvICgyLjBMICogdCkpOworCX0gZWxzZSB7CisJCXQgPSBzcXJ0bCgo LWEgKyBoeXBvdGwoYSwgYikpICogMC41TCk7CisJCXJlc3VsdCA9IGNwYWNr bChmYWJzbChiKSAvICgyLjBMICogdCksIGNvcHlzaWdubCh0LCBiKSk7CisJ fQorCisJLyogUmVzY2FsZS4gKi8KKwlpZiAoc2NhbGUpCisJCXJldHVybiAo cmVzdWx0ICogMi4wTCk7CisJZWxzZQorCQlyZXR1cm4gKHJlc3VsdCk7Cit9 Ci0tIAoyLjcuNAoK --001a11c0293268c2560552d95c43--