From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 76813 invoked by alias); 27 Jun 2017 19:40:37 -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 76312 invoked by uid 89); 27 Jun 2017 19:40:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy= X-HELO: mail-io0-f182.google.com Received: from mail-io0-f182.google.com (HELO mail-io0-f182.google.com) (209.85.223.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 27 Jun 2017 19:40:35 +0000 Received: by mail-io0-f182.google.com with SMTP id h134so23942884iof.2 for ; Tue, 27 Jun 2017 12:40:35 -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=dtbbZLBYkerR1Mttl55Oy+/tTc3MH7UxbK6L7w+F7YI=; b=Fb9uQKT0pCbaF+lPZhnfgzLAAGrYcGCMtmZlbROi55ctKD6wofW4Q+XBQejjO1UUgw Gdrk+QZNWRkM5Sk+twd49LcqyHI6q2SzOMDFjOLXFOLh4EAM+4bmQQoa6AHcAf4y9UdZ NgdhLwA/dMaQamlb7B3c+dcmS3F76k39PceqnXuCsyPiPsZBoxRgMWZ5Lk3LhDEKdxKX /PIhXOGBFms4NllVVvz7ngs6zj9eQ3XKigKhDlUr91UlirrApQRUCy13zNBtaD6SgSFL w6uvLf9WkU/R/4/W7vcAIIqB4cTU7a9RoB+E390xUEDdKw4VqeIAcNN2WGlLe96JJ73O s3/A== X-Gm-Message-State: AKS2vOxKx+E7v72+Ohf83N7VyIIN/WmgJJ1xFTtDu672zNmhpCCF4Q2f d5pzzeGlVJB59Ijx5kFY82GzPWSHhz6u X-Received: by 10.107.151.140 with SMTP id z134mr7245211iod.83.1498592433430; Tue, 27 Jun 2017 12:40:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.4.203 with HTTP; Tue, 27 Jun 2017 12:40:32 -0700 (PDT) From: Aditya Upadhyay Date: Tue, 27 Jun 2017 19:40:00 -0000 Message-ID: Subject: Adding long double complex methods from netbsd To: newlib@sourceware.org Content-Type: multipart/mixed; boundary="001a11402a52a8f7790552f63dcb" X-IsSubscribed: yes X-SW-Source: 2017/txt/msg00490.txt.bz2 --001a11402a52a8f7790552f63dcb Content-Type: text/plain; charset="UTF-8" Content-length: 335 Hello All, Is this the correct to send a patch ? I am attaching a single patch for previously individual sent patches. I am requesting you to please review the same and suggest me needed modification. Thanks Gedare and Corinna for helping me to understand the single patch generation from several patches. Regards, Aditya Upadhyay --001a11402a52a8f7790552f63dcb Content-Type: application/octet-stream; name=Adding_long_double_complex_methods Content-Disposition: attachment; filename=Adding_long_double_complex_methods Content-Transfer-Encoding: base64 X-Attachment-Id: f_j4fz8jti0 Content-length: 30191 ZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL2NvbXBsZXgvTWFrZWZpbGUuYW0g Yi9uZXdsaWIvbGlibS9jb21wbGV4L01ha2VmaWxlLmFtCmluZGV4IDQwMjA1 M2YuLmRlMmZjYTkgMTAwNjQ0Ci0tLSBhL25ld2xpYi9saWJtL2NvbXBsZXgv TWFrZWZpbGUuYW0KKysrIGIvbmV3bGliL2xpYm0vY29tcGxleC9NYWtlZmls ZS5hbQpAQCAtMTAsNyArMTAsOSBAQCBzcmMgPSBjYWJzLmMgY2Fjb3MuYyBj YWNvc2guYyBjYXJnLmMgY2FzaW4uYyBjYXNpbmguYyBcCiAgICAgICBjcG93 LmMgY3Byb2ouYyAgY3JlYWwuYyAgXAogICAgICAgY3Npbi5jIGNzaW5oLmMg Y3NxcnQuYyBjdGFuLmMgY3RhbmguYwogCi1sc3JjID0gY2Fic2wuYyBjcmVh bGwuYyBjaW1hZ2wuYyBjY29zaGwuYworbHNyYyA9IGNhYnNsLmMgY3JlYWxs LmMgY2ltYWdsLmMgY2Nvc2hsLmMgY2Fjb3NobC5jIFwgCisgICAgICAgY2xv Z2wuYyBjc3FydGwuYyBjYXJnbC5jIGNwcm9qbC5jIGNleHBsLmMgY2VwaGVz X3N1YnJsLmNcCisgICAgICAgY2Fjb3NsLmMgY2Nvc2wuYwogCiBmc3JjID0J Y2Fic2YuYyBjYXNpbmYuYyBjY29zZi5jIGNpbWFnZi5jIGNwcm9qZi5jICBc CiAgICAgICAgIGNzcXJ0Zi5jIGNhY29zZi5jIGNhc2luaGYuYyBjY29zaGYu YyBjbG9nZi5jIGNsb2cxMGYuYyBcCkBAIC00Myw0ICs0NSw0IEBAIENIQVBU RVJTID0gY29tcGxleC50ZXgKIAogIyBBIHBhcnRpYWwgZGVwZW5kZW5jeSBs aXN0LgogCi0kKGxpYl9hX09CSkVDVFMpOiAkKHNyY2RpcikvLi4vLi4vbGli Yy9pbmNsdWRlL2NvbXBsZXguaCAkKHNyY2RpcikvY2VwaGVzX3N1YnIuaCAk KHNyY2RpcikvY2VwaGVzX3N1YnJmLmgKKyQobGliX2FfT0JKRUNUUyk6ICQo c3JjZGlyKS8uLi8uLi9saWJjL2luY2x1ZGUvY29tcGxleC5oICQoc3JjZGly KS9jZXBoZXNfc3Vici5oICQoc3JjZGlyKS9jZXBoZXNfc3VicmYuaCAkKHNy Y2RpcikvY2VwaGVzX3N1YnJsLmgKZGlmZiAtLWdpdCBhL25ld2xpYi9saWJt L2NvbXBsZXgvY2Fjb3NobC5jIGIvbmV3bGliL2xpYm0vY29tcGxleC9jYWNv c2hsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0 ZTAwNgotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgv Y2Fjb3NobC5jCkBAIC0wLDAgKzEsNDUgQEAKKy8qICROZXRCU0Q6IGNhY29z aGwuYyx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNocmlzdG9zIEV4cCAk ICovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3IFRoZSBOZXRCU0Qg Rm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq CisgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIHdyaXR0 ZW4gYnkgU3RlcGhlbiBMLiBNb3NoaWVyLgorICogSXQgaXMgcmVkaXN0cmli dXRlZCBieSB0aGUgTmV0QlNEIEZvdW5kYXRpb24gYnkgcGVybWlzc2lvbiBv ZiB0aGUgYXV0aG9yLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJTRCBG T1VOREFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMn JyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05UUklCVVRPUlMK KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP RiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK KyNpbmNsdWRlIDxjb21wbGV4Lmg+CisKK2xvbmcgZG91YmxlIGNvbXBsZXgK K2NhY29zaGwobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxvbmcgZG91 YmxlIGNvbXBsZXggdzsKKworI2lmIDAgLyogZG9lcyBub3QgZ2l2ZSB0aGUg cHJpbmNpcGFsIHZhbHVlICovCisJdyA9IEkgKiBjYWNvc2woeik7CisjZWxz ZQorCXcgPSBjbG9nbCh6ICsgY3NxcnRsKHogKyAxKSAqIGNzcXJ0bCh6IC0g MSkpOworI2VuZGlmCisJcmV0dXJuIHc7Cit9CmRpZmYgLS1naXQgYS9uZXds aWIvbGlibS9jb21wbGV4L2NhY29zbC5jIGIvbmV3bGliL2xpYm0vY29tcGxl eC9jYWNvc2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li42YTA1YzhjCi0tLSAvZGV2L251bGwKKysrIGIvbmV3bGliL2xpYm0vY29t cGxleC9jYWNvc2wuYwpAQCAtMCwwICsxLDQ1IEBACisvKiAkTmV0QlNEOiBj YWNvc2wuYyx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNocmlzdG9zIEV4 cCAkICovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA3IFRoZSBOZXRC U0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyAqCisgKiBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIHdy aXR0ZW4gYnkgU3RlcGhlbiBMLiBNb3NoaWVyLgorICogSXQgaXMgcmVkaXN0 cmlidXRlZCBieSB0aGUgTmV0QlNEIEZvdW5kYXRpb24gYnkgcGVybWlzc2lv biBvZiB0aGUgYXV0aG9yLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5FVEJT RCBGT1VOREFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAqIGBgQVMg SVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05UUklCVVRP UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov CisKKyNpbmNsdWRlIDxjb21wbGV4Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgor I2luY2x1ZGUgImNlcGhlc19zdWJybC5oIgorCitsb25nIGRvdWJsZSBjb21w bGV4CitjYWNvc2wobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxvbmcg ZG91YmxlIGNvbXBsZXggdzsKKworCXcgPSBjYXNpbmwoeik7CisJdyA9IChN X1BJXzJMIC0gY3JlYWxsKHcpKSAtIGNpbWFnbCh3KSAqIEk7CisJcmV0dXJu IHc7Cit9CisKZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL2NvbXBsZXgvY2Fy Z2wuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2FyZ2wuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjg4NWE0Ci0tLSAvZGV2L251 bGwKKysrIGIvbmV3bGliL2xpYm0vY29tcGxleC9jYXJnbC5jCkBAIC0wLDAg KzEsMTggQEAKKy8qICROZXRCU0Q6IGNhcmdsLmMsdiAxLjEgMjAxNC8xMC8x MCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAgJCAqLworCisvKgorICogUHVibGlj IGRvbWFpbi4KKyAqLworCisjaW5jbHVkZSA8Y29tcGxleC5oPgorI2luY2x1 ZGUgPG1hdGguaD4KKworbG9uZyBkb3VibGUKK2NhcmdsKGxvbmcgZG91Ymxl IGNvbXBsZXggeikKK3sgICAgIAorICAgICAgICNpZmRlZiBfTERCTF9FUV9E QkwKKyAgICAgICAgIHJldHVybiBjYXJnICh6KTsKKyAgICAgICAjZWxzZQor ICAgICAgICAgcmV0dXJuIGF0YW4ybCAoaW1hZyAoeiksIHJlYWwgKHopKTsK KyAgICAgICAjZW5kaWYKK30KZGlmZiAtLWdpdCBhL25ld2xpYi9saWJtL2Nv bXBsZXgvY2Nvc2wuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2Nvc2wuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzEwZjQwCi0t LSAvZGV2L251bGwKKysrIGIvbmV3bGliL2xpYm0vY29tcGxleC9jY29zbC5j CkBAIC0wLDAgKzEsNDUgQEAKKy8qICROZXRCU0Q6IGNjb3NsLmMsdiAxLjEg MjAxNC8xMC8xMCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAgJCAqLworCisvKi0K KyAqIENvcHlyaWdodCAoYykgMjAwNyBUaGUgTmV0QlNEIEZvdW5kYXRpb24s IEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBj b2RlIGlzIGRlcml2ZWQgZnJvbSBzb2Z0d2FyZSB3cml0dGVuIGJ5IFN0ZXBo ZW4gTC4gTW9zaGllci4KKyAqIEl0IGlzIHJlZGlzdHJpYnV0ZWQgYnkgdGhl IE5ldEJTRCBGb3VuZGF0aW9uIGJ5IHBlcm1pc3Npb24gb2YgdGhlIGF1dGhv ci4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElPTiwg SU5DLiBBTkQgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElTJycgQU5EIEFOWSBF WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQ T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8 Y29tcGxleC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNsdWRlICJjZXBo ZXNfc3VicmwuaCIKKworbG9uZyBkb3VibGUgY29tcGxleAorY2Nvc2wobG9u ZyBkb3VibGUgY29tcGxleCB6KQoreworCWxvbmcgZG91YmxlIGNvbXBsZXgg dzsKKwlsb25nIGRvdWJsZSBjaCwgc2g7CisKKwlfY2Noc2hsKGNpbWFnbCh6 KSwgJmNoLCAmc2gpOworCXcgPSBjb3NsKGNyZWFsbCh6KSkgKiBjaCAtIChz aW5sKGNyZWFsbCh6KSkgKiBzaCkgKiBJOworCXJldHVybiB3OworfQpkaWZm IC0tZ2l0IGEvbmV3bGliL2xpYm0vY29tcGxleC9jZXBoZXNfc3VicmwuYyBi L25ld2xpYi9saWJtL2NvbXBsZXgvY2VwaGVzX3N1YnJsLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFmMTFkZgotLS0gL2Rldi9u dWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2VwaGVzX3N1YnJsLmMK QEAgLTAsMCArMSwxMjggQEAKKy8qICROZXRCU0Q6IGNlcGhlc19zdWJybC5j LHYgMS4yIDIwMTQvMTAvMTAgMTQ6MDY6NDAgY2hyaXN0b3MgRXhwICQgKi8K KworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE5ldEJTRCBGb3Vu ZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq IFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgd3JpdHRlbiBi eSBTdGVwaGVuIEwuIE1vc2hpZXIuCisgKiBJdCBpcyByZWRpc3RyaWJ1dGVk IGJ5IHRoZSBOZXRCU0QgRm91bmRhdGlvbiBieSBwZXJtaXNzaW9uIG9mIHRo ZSBhdXRob3IuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZPVU5E QVRJT04sIElOQy4gQU5EIENPTlRSSUJVVE9SUworICogYGBBUyBJUycnIEFO RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW RU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUworICog QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI RQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu Y2x1ZGUgPGNvbXBsZXguaD4KKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVk ZSAiY2VwaGVzX3N1YnJsLmgiCisKKy8qIGNhbGN1bGF0ZSBjb3NoIGFuZCBz aW5oICovCisKK3ZvaWQKK19jY2hzaGwobG9uZyBkb3VibGUgeCwgbG9uZyBk b3VibGUgKmMsIGxvbmcgZG91YmxlICpzKQoreworCWxvbmcgZG91YmxlIGUs IGVpOworCisJaWYgKGZhYnNsKHgpIDw9IDAuNUwpIHsKKwkJKmMgPSBjb3No bCh4KTsKKwkJKnMgPSBzaW5obCh4KTsKKwl9IGVsc2UgeworCQllID0gZXhw bCh4KTsKKwkJZWkgPSAwLjVMIC8gZTsKKwkJZSA9IDAuNUwgKiBlOworCQkq cyA9IGUgLSBlaTsKKwkJKmMgPSBlICsgZWk7CisJfQorfQorCisvKiBQcm9n cmFtIHRvIHN1YnRyYWN0IG5lYXJlc3QgaW50ZWdlciBtdWx0aXBsZSBvZiBQ SSAqLworCisvKiBleHRlbmRlZCBwcmVjaXNpb24gdmFsdWUgb2YgUEk6ICov CitzdGF0aWMgY29uc3QgbG9uZyBkb3VibGUgRFAxID0gMy4xNDE1OTI2NTM1 ODk3OTMyMzgyOTU5Njg1MjQ5MDkwODUzMTc2MzEyNUw7CitzdGF0aWMgY29u c3QgbG9uZyBkb3VibGUgRFAyID0gMS42NjY3NDg1ODM3MDQxNzU2NjU2NDAz NDI0ODI5MzAxOTk4NzAzMDA3ZS0xOUw7CisjaWZuZGVmIF9fdmF4X18KK3N0 YXRpYyBjb25zdCBsb25nIGRvdWJsZSBEUDMgPSAxLjg4MzA0MTA3NzY2MDc4 NTExNjc0NTkwOTU0ODQ1NjAzNDk0MDI3NTNlLTM5TDsKKyNkZWZpbmUgTUFD SEVQTCAxLjFlLTM4TAorI2Vsc2UKK3N0YXRpYyBjb25zdCBsb25nIGRvdWJs ZSBEUDMgPSAwTDsKKyNkZWZpbmUgTUFDSEVQTCAxLjFlLTE5TAorI2VuZGlm CisKK2xvbmcgZG91YmxlCitfcmVkdXBpbChsb25nIGRvdWJsZSB4KQorewor CWxvbmcgZG91YmxlIHQ7CisJbG9uZyBsb25nIGk7CisKKwl0ID0geCAvIE1f UElMOworCWlmICh0ID49IDAuMEwpCisJCXQgKz0gMC41TDsKKwllbHNlCisJ CXQgLT0gMC41TDsKKworCWkgPSB0OwkvKiB0aGUgbXVsdGlwbGUgKi8KKwl0 ID0gaTsKKwl0ID0gKCh4IC0gdCAqIERQMSkgLSB0ICogRFAyKSAtIHQgKiBE UDM7CisJcmV0dXJuIHQ7Cit9CisKKy8qIFRheWxvciBzZXJpZXMgZXhwYW5z aW9uIGZvciBjb3NoKDJ5KSAtIGNvcygyeCkgKi8KKworbG9uZyBkb3VibGUK K19jdGFuc2wobG9uZyBkb3VibGUgY29tcGxleCB6KQoreworCWxvbmcgZG91 YmxlIGYsIHgsIHgyLCB5LCB5Miwgcm4sIHQ7CisJbG9uZyBkb3VibGUgZDsK KworCXggPSBmYWJzbCgyLjBMICogY3JlYWxsKHopKTsKKwl5ID0gZmFic2wo Mi4wTCAqIGNpbWFnbCh6KSk7CisKKwl4ID0gX3JlZHVwaWwoeCk7CisKKwl4 ID0geCAqIHg7CisJeSA9IHkgKiB5OworCXgyID0gMS4wOworCXkyID0gMS4w OworCWYgPSAxLjA7CisJcm4gPSAwLjA7CisJZCA9IDAuMDsKKwlkbyB7CisJ CXJuICs9IDEuMEw7CisJCWYgKj0gcm47CisJCXJuICs9IDEuMEw7CisJCWYg Kj0gcm47CisJCXgyICo9IHg7CisJCXkyICo9IHk7CisJCXQgPSB5MiArIHgy OworCQl0IC89IGY7CisJCWQgKz0gdDsKKworCQlybiArPSAxLjBMOworCQlm ICo9IHJuOworCQlybiArPSAxLjBMOworCQlmICo9IHJuOworCQl4MiAqPSB4 OworCQl5MiAqPSB5OworCQl0ID0geTIgLSB4MjsKKwkJdCAvPSBmOworCQlk ICs9IHQ7CisJfSB3aGlsZSAoZmFic2wodC9kKSA+IE1BQ0hFUEwpOworCXJl dHVybiBkOworfQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vY29tcGxleC9j ZXBoZXNfc3VicmwuaCBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2VwaGVzX3N1 YnJsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM1 NGIyMwotLS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgv Y2VwaGVzX3N1YnJsLmgKQEAgLTAsMCArMSw5IEBACisvKiAkTmV0QlNEOiBj ZXBoZXNfc3VicmwuaCx2IDEuMSAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNocmlz dG9zIEV4cCAkICovCisKK3ZvaWQgX2NjaHNobChsb25nIGRvdWJsZSwgbG9u ZyBkb3VibGUgKiwgbG9uZyBkb3VibGUgKik7Citsb25nIGRvdWJsZSBfcmVk dXBpbChsb25nIGRvdWJsZSk7Citsb25nIGRvdWJsZSBfY3RhbnNsKGxvbmcg ZG91YmxlIGNvbXBsZXgpOworCisjZGVmaW5lCU1fUElMCTMuMTQxNTkyNjUz NTg5NzkzMjM4NDYyNjQzMzgzMjc5NTAyODBlKzAwTAorI2RlZmluZQlNX1BJ XzJMCTEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUxNDBlKzAw TAorCmRpZmYgLS1naXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2NleHBsLmMg Yi9uZXdsaWIvbGlibS9jb21wbGV4L2NleHBsLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1NjYzNAotLS0gL2Rldi9udWxsCisr KyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY2V4cGwuYwpAQCAtMCwwICsxLDQ2 IEBACisvKiAkTmV0QlNEOiBjZXhwbC5jLHYgMS4xIDIwMTQvMTAvMTAgMDA6 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+CisKK2xvbmcgZG91YmxlIGNvbXBsZXgKK2NleHBs KGxvbmcgZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nIGRvdWJsZSBjb21w bGV4IHc7CisJbG9uZyBkb3VibGUgciwgeCwgeTsKKworCXggPSBjcmVhbGwo eik7CisJeSA9IGNpbWFnbCh6KTsKKwlyID0gZXhwbCh4KTsKKwl3ID0gciAq IGNvc2woeSkgKyByICogc2lubCh5KSAqIEk7CisJcmV0dXJuIHc7Cit9CmRp ZmYgLS1naXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2Nsb2dsLmMgYi9uZXds aWIvbGlibS9jb21wbGV4L2Nsb2dsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMzY0NGE0NAotLS0gL2Rldi9udWxsCisrKyBiL25l d2xpYi9saWJtL2NvbXBsZXgvY2xvZ2wuYwpAQCAtMCwwICsxLDQ2IEBACisv KiAkTmV0QlNEOiBjbG9nbC5jLHYgMS4xIDIwMTQvMTAvMTAgMDA6NDg6MTgg Y2hyaXN0b3MgRXhwICQgKi8KKworLyotCisgKiBDb3B5cmlnaHQgKGMpIDIw MDcgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCisgKiBBbGwgcmlnaHRz IHJlc2VydmVkLgorICoKKyAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20g c29mdHdhcmUgd3JpdHRlbiBieSBTdGVwaGVuIEwuIE1vc2hpZXIuCisgKiBJ dCBpcyByZWRpc3RyaWJ1dGVkIGJ5IHRoZSBOZXRCU0QgRm91bmRhdGlvbiBi eSBwZXJtaXNzaW9uIG9mIHRoZSBhdXRob3IuCisgKgorICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0 cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgTkVUQlNEIEZPVU5EQVRJT04sIElOQy4gQU5EIENPTlRSSUJVVE9S UworICogYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9S IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRQorICogUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGNvbXBsZXguaD4KKyNpbmNsdWRl IDxtYXRoLmg+CisKK2xvbmcgZG91YmxlIGNvbXBsZXgKK2Nsb2dsKGxvbmcg ZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nIGRvdWJsZSBjb21wbGV4IHc7 CisJbG9uZyBkb3VibGUgcCwgcnI7CisKKwlyciA9IGNhYnNsKHopOworCXAg PSBsb2dsKHJyKTsKKwlyciA9IGF0YW4ybChjaW1hZ2woeiksIGNyZWFsbCh6 KSk7CisJdyA9IHAgKyByciAqIEk7CisJcmV0dXJuIHc7Cit9CmRpZmYgLS1n aXQgYS9uZXdsaWIvbGlibS9jb21wbGV4L2Nwcm9qbC5jIGIvbmV3bGliL2xp Ym0vY29tcGxleC9jcHJvamwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lNzFjNzczCi0tLSAvZGV2L251bGwKKysrIGIvbmV3bGli L2xpYm0vY29tcGxleC9jcHJvamwuYwpAQCAtMCwwICsxLDY0IEBACisvKgkk TmV0QlNEOiBjcHJvamwuYyx2IDEuNyAyMDE0LzEwLzEwIDAwOjQ4OjE4IGNo cmlzdG9zIEV4cCAkCSovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDEw IFRoZSBOZXRCU0QgRm91bmRhdGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv 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 CisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1 ZGUgPHN5cy9jZGVmcy5oPgorX19SQ1NJRCgiJE5ldEJTRDogY3Byb2psLmMs diAxLjcgMjAxNC8xMC8xMCAwMDo0ODoxOCBjaHJpc3RvcyBFeHAgJCIpOwor CisjaW5jbHVkZSA8Y29tcGxleC5oPgorI2luY2x1ZGUgPG1hdGguaD4KKwor I2luY2x1ZGUgIi4uL2NvbW1vbi9mZGxpYm0uaCIKKworLyoKKyAqIGNwcm9q bChsb25nIGRvdWJsZSBjb21wbGV4IHopCisgKgorICogVGhlc2UgZnVuY3Rp b25zIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByb2plY3Rpb24gKG5vdCBz dGVyZW9ncmFwaGljISkKKyAqIG9udG8gdGhlIFJpZW1hbm4gc3BoZXJlLgor ICoKKyAqIHogcHJvamVjdHMgdG8geiwgZXhjZXB0IHRoYXQgYWxsIGNvbXBs ZXggaW5maW5pdGllcyAoZXZlbiB0aG9zZSB3aXRoIG9uZQorICogaW5maW5p dGUgcGFydCBhbmQgb25lIE5hTiBwYXJ0KSBwcm9qZWN0IHRvIHBvc2l0aXZl IGluZmluaXR5IG9uIHRoZSByZWFsIGF4aXMuCisgKiBJZiB6IGhhcyBhbiBp bmZpbml0ZSBwYXJ0LCB0aGVuIGNwcm9qKHopIHNoYWxsIGJlIGVxdWl2YWxl bnQgdG86CisgKgorICogSU5GSU5JVFkgKyBJICogY29weXNpZ24oMC4wLCBj aW1hZyh6KSkKKyAqLworbG9uZyBkb3VibGUgY29tcGxleAorY3Byb2psKGxv bmcgZG91YmxlIGNvbXBsZXggeikKK3sKKwlsb25nX2RvdWJsZV9jb21wbGV4 IHcgPSB7IC56ID0geiB9OworCisJLypDT05TVENPTkQqLworCWlmIChpc2lu ZihjcmVhbGwoeikpIHx8IGlzaW5mKGNpbWFnbCh6KSkpIHsKKyNpZmRlZiBf X0lORklOSVRZCisJCVJFQUxfUEFSVCh3KSA9IEhVR0VfVkFMOworI2Vsc2UK KwkJUkVBTF9QQVJUKHcpID0gSU5GSU5JVFk7CisjZW5kaWYKKwkJSU1BR19Q QVJUKHcpID0gY29weXNpZ25sKDAuMEwsIGNpbWFnbCh6KSk7CisJfQorCisJ cmV0dXJuICh3LnopOworfQpkaWZmIC0tZ2l0IGEvbmV3bGliL2xpYm0vY29t cGxleC9jc3FydGwuYyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY3NxcnRsLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwYTEyNgot LS0gL2Rldi9udWxsCisrKyBiL25ld2xpYi9saWJtL2NvbXBsZXgvY3NxcnRs LmMKQEAgLTAsMCArMSwxMTIgQEAKKy8qLQorICogQ29weXJpZ2h0IChjKSAy MDA3LTIwMDggRGF2aWQgU2NodWx0eiA8ZGFzQEZyZWVCU0QuT1JHPgorICog QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkg RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICog Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT VUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikK KyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJ VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lz L2NkZWZzLmg+CisjaWYgMAorX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL2xp Yi9tc3VuL3NyYy9zX2NzcXJ0bC5jIDE4MTQwMiAyMDA4LTA4LTA4IDAwOjE1 OjE2WiBkYXMgJCIpOworI2Vsc2UKK19fUkNTSUQoIiROZXRCU0Q6IGNzcXJ0 bC5jLHYgMS4yIDIwMTQvMTAvMTEgMDA6NDM6NTEgY2hyaXN0b3MgRXhwICQi KTsKKyNlbmRpZgorCisjaW5jbHVkZSA8Y29tcGxleC5oPgorI2luY2x1ZGUg PGZsb2F0Lmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHN0ZGJv b2wuaD4KKy8qCisgKiBnY2MgZG9lc24ndCBpbXBsZW1lbnQgY29tcGxleCBt dWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiBjb3JyZWN0bHksCisgKiBzbyB3 ZSBuZWVkIHRvIGhhbmRsZSBpbmZpbml0aWVzIHNwZWNpYWxseS4gV2UgdHVy biBvbiB0aGlzIHByYWdtYSB0bworICogbm90aWZ5IGNvbmZvcm1pbmcgYzk5 IGNvbXBpbGVycyB0aGF0IHRoZSBmYXN0LWJ1dC1pbmNvcnJlY3QgY29kZSB0 aGF0CisgKiBnY2MgZ2VuZXJhdGVzIGlzIGFjY2VwdGFibGUsIHNpbmNlIHRo ZSBzcGVjaWFsIGNhc2VzIGhhdmUgYWxyZWFkeSBiZWVuCisgKiBoYW5kbGVk LgorICovCisvLyAjcHJhZ21hCVNUREMgQ1hfTElNSVRFRF9SQU5HRQlPTgor CisvKiBXZSByaXNrIHNwdXJpb3VzIG92ZXJmbG93IGZvciBjb21wb25lbnRz ID49IExEQkxfTUFYIC8gKDEgKyBzcXJ0KDIpKS4gKi8KKyNkZWZpbmUJVEhS RVNICShMREJMX01BWCAvIDIuNDE0MjEzNTYyMzczMDk1MDQ4ODAxNjg4NzI0 MjA5Njk4TCkKKworI2RlZmluZSBjcGFja2wociwgaSkgKChyKSArIChpKSAq IEkpCisKK2xvbmcgZG91YmxlIGNvbXBsZXgKK2NzcXJ0bChsb25nIGRvdWJs ZSBjb21wbGV4IHopCit7CisJbG9uZyBkb3VibGUgY29tcGxleCByZXN1bHQ7 CisJbG9uZyBkb3VibGUgYSwgYjsKKwlsb25nIGRvdWJsZSB0OworCWJvb2wg c2NhbGU7CisKKwlhID0gY3JlYWxsKHopOworCWIgPSBjaW1hZ2woeik7CisK KwkvKiBIYW5kbGUgc3BlY2lhbCBjYXNlcy4gKi8KKwlpZiAoeiA9PSAwLjBM KQorCQlyZXR1cm4gKGNwYWNrbCgwLjBMLCBiKSk7CisJaWYgKGlzaW5mKGIp KQorCQlyZXR1cm4gKGNwYWNrbChJTkZJTklUWSwgYikpOworCWlmIChpc25h bihhKSkgeworCQl0ID0gKGIgLSBiKSAvIChiIC0gYik7CS8qIHJhaXNlIGlu dmFsaWQgaWYgYiBpcyBub3QgYSBOYU4gKi8KKwkJcmV0dXJuIChjcGFja2wo YSwgdCkpOwkvKiByZXR1cm4gTmFOICsgTmFOIGkgKi8KKwl9CisJaWYgKGlz aW5mKGEpKSB7CisJCS8qCisJCSAqIGNzcXJ0KGluZiArIE5hTiBpKSAgPSBp bmYgKyAgTmFOIGkKKwkJICogY3NxcnQoaW5mICsgeSBpKSAgICA9IGluZiAr ICAwIGkKKwkJICogY3NxcnQoLWluZiArIE5hTiBpKSA9IE5hTiArLSBpbmYg aQorCQkgKiBjc3FydCgtaW5mICsgeSBpKSAgID0gMCAgICsgIGluZiBpCisJ CSAqLworCQlpZiAoc2lnbmJpdChhKSkKKwkJCXJldHVybiAoY3BhY2tsKGZh YnNsKGIgLSBiKSwgY29weXNpZ25sKGEsIGIpKSk7CisJCWVsc2UKKwkJCXJl dHVybiAoY3BhY2tsKGEsIGNvcHlzaWdubChiIC0gYiwgYikpKTsKKwl9CisJ LyoKKwkgKiBUaGUgcmVtYWluaW5nIHNwZWNpYWwgY2FzZSAoYiBpcyBOYU4p IGlzIGhhbmRsZWQganVzdCBmaW5lIGJ5CisJICogdGhlIG5vcm1hbCBjb2Rl IHBhdGggYmVsb3cuCisJICovCisKKwkvKiBTY2FsZSB0byBhdm9pZCBvdmVy Zmxvdy4gKi8KKwlpZiAoZmFic2woYSkgPj0gVEhSRVNIIHx8IGZhYnNsKGIp ID49IFRIUkVTSCkgeworCQlhICo9IDAuMjVMOworCQliICo9IDAuMjVMOwor CQlzY2FsZSA9IHRydWU7CisJfSBlbHNlIHsKKwkJc2NhbGUgPSBmYWxzZTsK Kwl9CisKKwkvKiBBbGdvcml0aG0gMzEyLCBDQUNNIHZvbCAxMCwgT2N0IDE5 NjcuICovCisJaWYgKGEgPj0gMEwpIHsKKwkJdCA9IHNxcnRsKChhICsgaHlw b3RsKGEsIGIpKSAqIDAuNUwpOworCQlyZXN1bHQgPSBjcGFja2wodCwgYiAv ICgyLjBMICogdCkpOworCX0gZWxzZSB7CisJCXQgPSBzcXJ0bCgoLWEgKyBo eXBvdGwoYSwgYikpICogMC41TCk7CisJCXJlc3VsdCA9IGNwYWNrbChmYWJz bChiKSAvICgyLjBMICogdCksIGNvcHlzaWdubCh0LCBiKSk7CisJfQorCisJ LyogUmVzY2FsZS4gKi8KKwlpZiAoc2NhbGUpCisJCXJldHVybiAocmVzdWx0 ICogMi4wTCk7CisJZWxzZQorCQlyZXR1cm4gKHJlc3VsdCk7Cit9Cg== --001a11402a52a8f7790552f63dcb--