Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1td8gX-0055v8-Bi for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Jan 2025 14:04:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1td8gT-007Bwo-PR for pgsql-hackers@arkaria.postgresql.org; Wed, 29 Jan 2025 14:04:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1td8gS-007Bwg-TP for pgsql-hackers@lists.postgresql.org; Wed, 29 Jan 2025 14:04:49 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1td8gN-0027pa-2v for pgsql-hackers@lists.postgresql.org; Wed, 29 Jan 2025 14:04:47 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-ab69712eaffso84417866b.3 for ; Wed, 29 Jan 2025 06:04:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738159483; x=1738764283; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Wx5EQ0kUBaKkwV9QM46g4ufiGeQi7XvfDFDusDRXgAE=; b=Pr4BNMn1juvNSR23fwe1EvJMqnA1UEkqR7MFQiTDuV+5juG6QTWMwWeDhijLFi2JGj kvVuJVQGsoFmQp7LAFaTVu5p1WTN5LqGgsoWwwx4E5uEMgxxzI9Tc0Maz2YW++lLP0WB W48F6L7vJoucYbXkbcStHw7ADKy/hcGBOFK/oOckOpaVnXYKjC6GWUQZS4tlsQs9N4Mt HIBvMwSmE85JOsFp9FG23DN62QYWfT4tWqZmJEnMwbBSSK63JHHlHePSNLFDZASlNFHX i+Hb9k25Fb90FisGFt5XAVqntk89tX4fCgwTFKUVS69iMYQl8NgXD7BHqKXh5YNKin4i 6BXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738159483; x=1738764283; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Wx5EQ0kUBaKkwV9QM46g4ufiGeQi7XvfDFDusDRXgAE=; b=exHP7WqdWizKbrD4huxSJ3KPPztZiPG2QVC27RQ4nnR8qTLZNEuiloDkq5X7Svj82C f1RFLnhnns3lb+i2EgbWmnuaiyw9nXbrfUvrwFqnPV/JsPWTIS7BKZ7fZNIz+NfJ/af0 v55B4fgukfaGRUQNTG1E4FL2C4d7EmLmt1FZLaAR7g3wYghk3e2wDc0dit34vd0pzBhS 6G+pViUnUtELQF3/N1ghii1tVexRjdCeqPUPldsy3pSKwS6CmLSpJJNSp8luRJJNMWwj IQLTO2Nf5ZT2xnu+HCGhEPjt/FqQR1hVOMitfTZWjhc6rNRz2IidHAyhxB40GBHWc0Qd 5khQ== X-Forwarded-Encrypted: i=1; AJvYcCWBOBmWNsOqHKRtSo6D+2/aQkIVRYcCk24UCL/HfPcxezkGcwxUsg2hd0s1GAsSlgfmLIr2X7uX2wUWKpvf@lists.postgresql.org X-Gm-Message-State: AOJu0YxpdTaxhQJSDSd8er77DLQTTVqzbGP8hrRpn1qGkVkOcqggk615 r/jiIZErnfTjVuxrg7ye8Y6Gx1Qn+Ew520ANALSh0Y1Y0Kt4+/vLC7ZFKj4ltTywIdgLPZgrXNm lfas+dJZGUUqB+mpQ4Ir/EXMvqXM= X-Gm-Gg: ASbGncvwNU2w7raxENJNp6FA9dT0+spzbP52952l7CAMXqMPlKkr7pCAzzql9/TG1hP 3wHHRx5SGXq0qR4hXaIuL1S8dUtlZfKwol76/ijcTHy/4peeENEc/Ip9MYfhT9rip9bH4cIKf X-Google-Smtp-Source: AGHT+IHVTYgf/z6gERc19SkQyzN0PPDWYbPMFctYrW0vf+hgSyxe4EHETSgyYWhQenQ+XKBoELbQS+hnRMMxDyGreSQ= X-Received: by 2002:a17:907:6ea4:b0:ab6:92dc:8b98 with SMTP id a640c23a62f3a-ab6cfdb4785mr116221966b.8.1738159482117; Wed, 29 Jan 2025 06:04:42 -0800 (PST) MIME-Version: 1.0 References: <5ecc35f5-1111-47fc-8a02-36d89490a50d@iki.fi> <24b3deb6-a732-4256-847a-560f4bf39d59@iki.fi> <4535f3aa-3220-4760-b1f5-2bc91f248e03@iki.fi> <2bc58592-9d74-4af0-bdd1-1a88e8683f7c@iki.fi> In-Reply-To: From: Maxim Orlov Date: Wed, 29 Jan 2025 17:04:28 +0300 X-Gm-Features: AWEUYZkBcmsLPIM_WYagXQRp4KmBlWS8cCcFa6kGKPTmBVW5yD3spFalSsXM8kQ Message-ID: Subject: Re: POC: make mxidoff 64 bits To: wenhui qiu Cc: Heikki Linnakangas , Alexander Korotkov , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000007f0165062cd8ca3f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f0165062cd8ca3f Content-Type: multipart/alternative; boundary="0000000000007f0163062cd8ca3d" --0000000000007f0163062cd8ca3d Content-Type: text/plain; charset="UTF-8" Here is a v13 version with small changes to make cf bot happy. -- Best regards, Maxim Orlov. --0000000000007f0163062cd8ca3d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Here is a v13 version with small changes to make cf b= ot happy.

--
Best rega= rds,
Maxim Orlov.
--0000000000007f0163062cd8ca3d-- --0000000000007f0165062cd8ca3f Content-Type: text/plain; charset="US-ASCII"; name="v13-0005-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch.txt" Content-Disposition: attachment; filename="v13-0005-TEST-add-src-bin-pg_upgrade-t-005_offset.pl.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gta4 RnJvbSBhOTg5YzU4YWJmYWJiMDdjODc3OGRlMzM5ZDYxNzY5MGY2NjU0Zjc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFR1ZSwgMTkgTm92IDIwMjQgMTc6MDg6MTAgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMyA1Lzdd IFRFU1Q6IGFkZCBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsCgotLS0KIHNyYy9i aW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwgfCA1NjMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1NjMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3Qv MDA1X29mZnNldC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kZjg0 MTg2ZGU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA1X29mZnNl dC5wbApAQCAtMCwwICsxLDU2MyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFU QUwgPT4gJ2FsbCc7CisKK3VzZSBGaWxlOjpGaW5kIHF3KGZpbmQpOworCit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIFRoaXMgcGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBzaWduaWZpY2FudGx5 IG1vcmUgbWVtYmVyIHNlZ21lbnRzIHRoYW4gb2Zmc2V0CisjIHNlZ21lbnRzLgorc3ViIHByZXAK K3sKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICR0YmwgPSBzaGlmdDsKKworCSRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNSRUFURSBUQUJMRSAke3RibH0gKEkgSU5UIFBSSU1BUlkg S0VZLCBOX1VQREFURUQgSU5UKSAiIC4KKwkJIiAgICAgICBXSVRIIChBVVRPVkFDVVVNX0VOQUJM RUQ9RkFMU0UpOyIgLgorCQkiSU5TRVJUIElOVE8gJHt0Ymx9IFNFTEVDVCBHLCAwIEZST00gR0VO RVJBVEVfU0VSSUVTKDEsIDUwKSBHOyIpOworfQorCitzdWIgZmlsbAoreworCW15ICRub2RlID0g c2hpZnQ7CisJbXkgJHRibCA9IHNoaWZ0OworCisJbXkgJG5jbGllbnRzID0gNTA7CisJbXkgJHVw ZGF0ZV9ldmVyeSA9IDkwOworCW15IEBjb25uZWN0aW9ucyA9ICgpOworCisJZm9yICgwLi4kbmNs aWVudHMpCisJeworCQlteSAkY29ubiA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7CisJCSRjb25uLT5xdWVyeV9zYWZlKCJCRUdJTiIpOworCisJCXB1c2goQGNvbm5lY3Rpb25z LCAkY29ubik7CisJfQorCisJZm9yIChteSAkaSA9IDA7ICRpIDwgMjAwMDA7ICRpKyspCisJewor CQlteSAkY29ubiA9ICRjb25uZWN0aW9uc1skaSAlICRuY2xpZW50c107CisKKwkJJGNvbm4tPnF1 ZXJ5X3NhZmUoIkNPTU1JVDsiKTsKKwkJJGNvbm4tPnF1ZXJ5X3NhZmUoIkJFR0lOIik7CisKKwkJ aWYgKCRpICUgJHVwZGF0ZV9ldmVyeSA9PSAwKQorCQl7CisJCQkkY29ubi0+cXVlcnlfc2FmZSgK KwkJCQkiVVBEQVRFICR7dGJsfSBTRVQgIiAuCisJCQkJIk5fVVBEQVRFRCA9IE5fVVBEQVRFRCAr IDEgIiAuCisJCQkJIldIRVJFIEkgPSAke2l9ICUgNTAiKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CSRjb25uLT5xdWVyeV9zYWZlKAorCQkJCSJTRUxFQ1QgKiBGUk9NICR7dGJsfSBGT1IgS0VZIFNI QVJFIik7CisJCX0KKwl9CisKKwlmb3IgbXkgJGNvbm4gKEBjb25uZWN0aW9ucykKKwl7CisJCSRj b25uLT5xdWl0KCk7CisJfQorfQorCisjIFRoaXMgcGFpciBvZiBjYWxscyB3aWxsIGNyZWF0ZSBt b3JlIG9yIGxlc3MgdGhlIHNhbWUgYW1vdW50IG9mIG1lbWJzZXJzIGFuZAorIyBvZmZzZXRzIHNl Z21lbnRzLgorc3ViIHByZXAyCit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hp ZnQ7CisKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDUkVBVEUgVEFCTEUgJHt0 Ymx9KEJBUiBJTlQgUFJJTUFSWSBLRVksIEJBWiBJTlQpOyAiIC4KKwkJIkNSRUFURSBPUiBSRVBM QUNFIFBST0NFRFVSRSBNWElERklMTEVSKE5fU1RFUFMgSU5UIERFRkFVTFQgMTAwMCkgIiAuCisJ CSJMQU5HVUFHRSBQTFBHU1FMICIgLgorCQkiQVMgXCRcJCAiIC4KKwkJIkJFR0lOICIgLgorCQki CUZPUiBJIElOIDEuLk5fU1RFUFMgTE9PUCAiIC4KKwkJIgkJVVBEQVRFICR7dGJsfSBTRVQgQkFa ID0gUkFORE9NKDEsIDEwMDApICIgLgorCQkiCQlXSEVSRSBCQVIgSU4gKFNFTEVDVCBCQVIgRlJP TSAke3RibH0gIiAuCisJCSIJCQkJCQlUQUJMRVNBTVBMRSBCRVJOT1VMTEkoODApKTsgIiAuCisJ CSIJCUNPTU1JVDsgIiAuCisJCSIJRU5EIExPT1A7ICIgLgorCQkiRU5EOyBcJFwkOyAiIC4KKwkJ IklOU0VSVCBJTlRPICR7dGJsfSAoQkFSLCBCQVopICIgLgorCQkiU0VMRUNUIElELCBJRCBGUk9N IEdFTkVSQVRFX1NFUklFUygxLCAxMDI0KSBJRDsiKTsKK30KKworc3ViIGZpbGwyCit7CisJbXkg JG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8g MTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkJFR0lOOyAiIC4KKwkJIlNF TEVDVCAqIEZST00gJHt0Ymx9IEZPUiBLRVkgU0hBUkU7ICIgLgorCQkiUFJFUEFSRSBUUkFOU0FD VElPTiAnQSc7ICIgLgorCQkiQ0FMTCBNWElERklMTEVSKCgzNjUgKiAke3NjYWxlfSk6OmludCk7 ICIgLgorCQkiQ09NTUlUIFBSRVBBUkVEICdBJzsiKTsKK30KKworCisjIGdlbmVyYXRlIGFyb3Vu ZCAyIG9mZnNldCBzZWdtZW50cyBhbmQgNTUgbWVtYmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4x Cit7CisJbXkgJG5vZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisKKwlwcmVwKCRub2Rl LCAkdGJsKTsKKwlmaWxsKCRub2RlLCAkdGJsKTsKKworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcShDSEVDS1BPSU5UKSk7Cit9CisKKyMgZ2VuZXJhdGUgYXJvdW5kIDEwIG9mZnNldCBz ZWdtZW50cyBhbmQgMTIgbWVtYmVyIHNlZ21lbnRzCitzdWIgbXhpZF9nZW4yCit7CisJbXkgJG5v ZGUgPSBzaGlmdDsKKwlteSAkdGJsID0gc2hpZnQ7CisJbXkgJHNjYWxlID0gc2hpZnQgLy8gMTsK KworCXByZXAyKCRub2RlLCAkdGJsKTsKKwlmaWxsMigkbm9kZSwgJHRibCwgJHNjYWxlKTsKKwor CSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDSEVDS1BPSU5UKSk7Cit9CisKKyMgRmV0 Y2ggbGF0ZXN0IG11bHRpeGFjdCBjaGVja3BvaW50IHZhbHVlcy4KK3N1YiBtdWx0aV9ib3VuZHMK K3sKKwlteSAoJG5vZGUpID0gQF87CisJbXkgJHBhdGggPSAkbm9kZS0+Y29uZmlnX2RhdGEoJy0t YmluZGlyJyk7CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpID0gcnVuX2NvbW1hbmQoWworCQkJCQkJ CQkJJHBhdGggLiAnL3BnX2NvbnRyb2xkYXRhJywKKwkJCQkJCQkJCSRub2RlLT5kYXRhX2Rpcgor CQkJCQkJCQldKTsKKwlteSBAY29udHJvbF9kYXRhID0gc3BsaXQoIlxuIiwgJHN0ZG91dCk7CisJ bXkgJG5leHQgPSB1bmRlZjsKKwlteSAkb2xkZXN0ID0gdW5kZWY7CisJbXkgJG5leHRfb2Zmc2V0 ID0gdW5kZWY7CisKKwlmb3JlYWNoIChAY29udHJvbF9kYXRhKQorCXsKKwkJaWYgKCRfID1+IC9e TGF0ZXN0IGNoZWNrcG9pbnQncyBOZXh0TXVsdGlYYWN0SWQ6XHMqKC4qKSQvbWcpCisJCXsKKwkJ CSRuZXh0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIsICIg LiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoJF8gPX4gL15MYXRlc3QgY2hlY2twb2ludCdzIG9s ZGVzdE11bHRpWGlkOlxzKiguKikkL21nKQorCQl7CisJCQkkb2xkZXN0ID0gJDE7CisJCQlwcmlu dCAiPj4+IEAgbm9kZSAiLiAkbm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0KKwor CQlpZiAoJF8gPX4gL15MYXRlc3QgY2hlY2twb2ludCdzIE5leHRNdWx0aU9mZnNldDpccyooLiop JC9tZykKKwkJeworCQkJJG5leHRfb2Zmc2V0ID0gJDE7CisJCQlwcmludCAiPj4+IEAgbm9kZSAi LiAkbm9kZS0+bmFtZSAuICIsICIgLiAkXyAuICJcbiI7CisJCX0KKworCQlpZiAoZGVmaW5lZCgk b2xkZXN0KSAmJiBkZWZpbmVkKCRuZXh0KSAmJiBkZWZpbmVkKCRuZXh0X29mZnNldCkpCisJCXsK KwkJCWxhc3Q7CisJCX0KKwl9CisKKwlkaWUgIkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRp WGFjdElkIG5vdCBmb3VuZCBpbiBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG5l eHQpOworCisJZGllICJMYXRlc3QgY2hlY2twb2ludCdzIG9sZGVzdE11bHRpWGlkIG5vdCBmb3Vu ZCBpbiBjb250cm9sIGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG9sZGVzdCk7CisKKwlkaWUg IkxhdGVzdCBjaGVja3BvaW50J3MgTmV4dE11bHRpT2Zmc2V0IG5vdCBmb3VuZCBpbiBjb250cm9s IGZpbGUhXG4iCisJdW5sZXNzIGRlZmluZWQoJG5leHRfb2Zmc2V0KTsKKworCXJldHVybiAoJG9s ZGVzdCwgJG5leHQsICRuZXh0X29mZnNldCk7Cit9CisKKyMgQ3JlYXRlIG5vZGUgZnJvbSBleGlz dGluZyBiaW5zLgorc3ViIGNyZWF0ZV9uZXdfbm9kZQoreworCW15ICgkbmFtZSwgJXBhcmFtcykg PSBAXzsKKworCWNyZWF0ZV9ub2RlKDAsIEBfKTsKK30KKworIyBDcmVhdGUgbm9kZSBmcm9tIEVO ViBvbGRpbnN0YWxsCitzdWIgY3JlYXRlX29sZF9ub2RlCit7CisJbXkgKCRuYW1lLCAlcGFyYW1z KSA9IEBfOworCisJaWYgKCFkZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQorCXsKKwkJZGllICJv bGRpbnN0YWxsIGlzIG5vdCBkZWZpbmVkIjsKKwl9CisKKwljcmVhdGVfbm9kZSgxLCBAXyk7Cit9 CisKK3N1YiBjcmVhdGVfbm9kZQoreworCW15ICgkaW5zdGFsbF9wYXRoX2Zyb21fZW52LCAkbmFt ZSwgJXBhcmFtcykgPSBAXzsKKwlteSAkc2NhbGUgPSBkZWZpbmVkICRwYXJhbXN7c2NhbGV9ID8g JHBhcmFtc3tzY2FsZX0gOiAxOworCW15ICRtdWx0aSA9IGRlZmluZWQgJHBhcmFtc3ttdWx0aX0g PyAkcGFyYW1ze211bHRpfSA6IHVuZGVmOworCW15ICRvZmZzZXQgPSBkZWZpbmVkICRwYXJhbXN7 b2Zmc2V0fSA/ICRwYXJhbXN7b2Zmc2V0fSA6IHVuZGVmOworCisJbXkgJG5vZGUgPQorCQkkaW5z dGFsbF9wYXRoX2Zyb21fZW52ID8KKwkJCVBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygk bmFtZSwKKwkJCQkJaW5zdGFsbF9wYXRoID0+ICRFTlZ7b2xkaW5zdGFsbH0pIDoKKwkJCVBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygkbmFtZSk7CisKKwkkbm9kZS0+aW5pdChmb3JjZV9p bml0ZGIgPT4gMSwKKwkJZXh0cmEgPT4gWworCQkJJG11bHRpID8gKCctbScsICRtdWx0aSkgOiAo KSwKKwkJCSRvZmZzZXQgPyAoJy1vJywgJG9mZnNldCkgOiAoKSwKKwkJCSgnLWsnKSwKKwkJXSk7 CisKKwkjIEZpeHVwIE1PWCBwYXRjaCBxdWlyaworCWlmICgkbXVsdGkpCisJeworCQl1bmxpbmsg JG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwJzsKKwl9CisJaWYg KCRvZmZzZXQpCisJeworCQl1bmxpbmsgJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ19tdWx0aXhhY3Qv bWVtYmVycy8wMDAwJzsKKwl9CisKKwkkbm9kZS0+YXBwZW5kX2NvbmYoJ2ZzeW5jJywgJ29mZicp OworCSRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgJ21heF9wcmVwYXJlZF90 cmFuc2FjdGlvbnMgPSAyJyk7CisKKwkkbm9kZS0+c3RhcnQoKTsKKwlteGlkX2dlbjIoJG5vZGUs ICdGT08nLCAkc2NhbGUpOworCW14aWRfZ2VuMSgkbm9kZSwgJ0JBUicsICRzY2FsZSk7CisJJG5v ZGUtPnJlc3RhcnQoKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoU0VMRUNUICog RlJPTSBGT08pKTsJCSMganVzdCBpbiBjYXNlLi4uCisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxKENIRUNLUE9JTlQpKTsKKwkkbm9kZS0+c3RvcCgpOworCisJcmV0dXJuICRub2RlOworfQor CitzdWIgZG9fdXBncmFkZQoreworCW15ICgkb2xkbm9kZSwgJG5ld25vZGUpID0gQF87CisKKwlj b21tYW5kX29rKAorCQlbCisJCQkncGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQkJJy1kJywg JG9sZG5vZGUtPmRhdGFfZGlyLAorCQkJJy1EJywgJG5ld25vZGUtPmRhdGFfZGlyLAorCQkJJy1i JywgJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1CJywgJG5ld25vZGUt PmNvbmZpZ19kYXRhKCctLWJpbmRpcicpLAorCQkJJy1zJywgJG5ld25vZGUtPmhvc3QsCisJCQkn LXAnLCAkb2xkbm9kZS0+cG9ydCwKKwkJCSctUCcsICRuZXdub2RlLT5wb3J0LAorCQkJJy0tY2hl Y2snCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOworCisJY29tbWFuZF9vaygKKwkJWwor CQkJJ3BnX3VwZ3JhZGUnLCAnLS1uby1zeW5jJywKKwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2Rp ciwKKwkJCSctRCcsICRuZXdub2RlLT5kYXRhX2RpciwKKwkJCSctYicsICRvbGRub2RlLT5jb25m aWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctQicsICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1i aW5kaXInKSwKKwkJCSctcycsICRuZXdub2RlLT5ob3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBv cnQsCisJCQknLVAnLCAkbmV3bm9kZS0+cG9ydCwKKwkJCSctLWNvcHknCisJCV0sCisJCSdydW4g b2YgcGdfdXBncmFkZScpOworCisJJG9sZG5vZGUtPnN0YXJ0KCk7CisJJG5ld25vZGUtPnN0YXJ0 KCk7CisKKwlteSAkb2xkZm9vID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNF TEVDVCAqIEZST00gRk9PKSk7CisJbXkgJG5ld2ZvbyA9ICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEZPTykpOworCWlzKCRvbGRmb28sICRuZXdmb28sICJz ZWxlY3QgZm9vIGVxIik7CisKKwlteSAkb2xkYmFyID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKFNFTEVDVCAqIEZST00gQkFSKSk7CisJbXkgJG5ld2JhciA9ICRuZXdub2RlLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgcShTRUxFQ1QgKiBGUk9NIEJBUikpOworCWlzKCRvbGRiYXIs ICRuZXdiYXIsICJzZWxlY3QgYmFyIGVxIik7CisKKwkkb2xkbm9kZS0+c3RvcCgpOworCSRuZXdu b2RlLT5zdG9wKCk7CisKKwltdWx0aV9ib3VuZHMoJG9sZG5vZGUpOworCW11bHRpX2JvdW5kcygk bmV3bm9kZSk7Cit9CisKK215IEBURVNUUyA9ICgKKwkjIHRlc3RzIHdpdGhvdXQgRU5WIG9sZGlu c3RhbGwKKwkwLCAxLCAyLCAzLCA0LCA1LCA2LAorCSMgdGVzdHMgd2l0aCAicmVhbCIgcGdfdXBn cmFkZQorCTEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwKKwkjIHNlbGYgdXBncmFk ZQorCTEwMDAsCispOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEJhc2ljIHNhbml0eSB0 ZXN0cyBvbiBhIE5FVyBiaW4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBzdGFydHMgZnJv bSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDA7CisJc2tpcCAiZG8gbm90IHRl c3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVT VFMgKSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tbycsCisJCQkJ CQlzY2FsZSA9PiAxKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNU X05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZQorU0tJUDoK K3sKKwlteSAkVEVTVF9OTyA9IDE7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIs IDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJG5v ZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9NbycsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAor CQkJCQkJbXVsdGkgPT4gJzB4MTIzNDAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsKKwlvaygx LCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRo ZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDI7CisJc2tpcCAiZG8gbm90IHRlc3Qg Y2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMg KSApOworCisJbXkgJG5vZGUgPSBjcmVhdGVfbmV3X25vZGUoJ3NpbXBsZV9tTycsCisJCQkJCQlz Y2FsZSA9PiAxLjE1LAorCQkJCQkJb2Zmc2V0ID0+ICcweDQzMjEwMCcpOworCW11bHRpX2JvdW5k cygkbm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkg YW5kIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlCitTS0lQOgoreworCW15ICRURVNUX05P ID0gMzsKKwlza2lwICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBn cmVwKCAvXiRURVNUX05PJC8sIEBURVNUUyApICk7CisKKwlteSAkbm9kZSA9IGNyZWF0ZV9uZXdf bm9kZSgnc2ltcGxlX01PJywKKwkJCQkJCXNjYWxlID0+IDEuMTUsCisJCQkJCQltdWx0aSA9PiAn MHhERUFEMDAnLCBvZmZzZXQgPT4gJzB4QkVFRjAwJyk7CisJbXVsdGlfYm91bmRzKCRub2RlKTsK KwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJv bSB0aGUgdmFsdWUsIG11bHRpIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA0OworCXNr aXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRF U1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1w bGVfTW9fd3JhcCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4RkZG RjcwMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBB U1NFRCIpOworfQorCisjIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHdy YXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2Ug JFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsK KworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdzaW1wbGVfbU9fd3JhcCcsCisJCQkJCQlz Y2FsZSA9PiAxLjE1LAorCQkJCQkJb2Zmc2V0ID0+ICcweEZGRkZGQzAwJyk7CisJbXVsdGlfYm91 bmRzKCRub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0 aSBzdGFydHMgZnJvbSB0aGUgdmFsdWUsIG9mZnNldHMgc3RhcnRzIGZyb20gdGhlIHZhbHVlLAor IyBtdWx0aSB3cmFwLCBvZmZzZXRzIHdyYXAKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSA2Owor CXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9e JFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRub2RlID0gY3JlYXRlX25ld19ub2RlKCdz aW1wbGVfTU9fd3JhcCcsCisJCQkJCQlzY2FsZSA9PiAxLjE1LAorCQkJCQkJbXVsdGkgPT4gJzB4 RkZGRjcwMDAnLCBvZmZzZXQgPT4gJzB4RkZGRkZDMDAnKTsKKwltdWx0aV9ib3VuZHMoJG5vZGUp OworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIHBnX3VwZ2FyZGUgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBz dGFydHMgZnJvbSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMDsKKwlza2lw ICJkbyBub3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNU X05PJC8sIEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ21vJzsKKwlteSAkb2xkbm9kZSA9 IGNyZWF0ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMSk7CisJbXkg JG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7 CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsK KwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKworIyBtdWx0aSBzdGFydHMgZnJv bSB0aGUgdmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1RfTk8gPSAxMDE7CisJc2tpcCAiZG8gbm90 IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBA VEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdNbyc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVf b2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRp ID0+ICcweDEyMzQwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRl KCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9 CisKKyMgb2Zmc2V0cyBzdGFydHMgZnJvbSB0aGUgdmFsdWUKK1NLSVA6Cit7CisJbXkgJFRFU1Rf Tk8gPSAxMDI7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNz ICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdtTyc7 CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNj YWxlID0+IDEuMiwKKwkJCQkJCW9mZnNldCA9PiAnMHg0MzIxMDAnKTsKKwlteSAkbmV3bm9kZSA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9k ZS0+aW5pdCgpOworCisJZG9fdXBncmFkZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJU RVNUICRURVNUX05PIFBBU1NFRCIpOworfQorCisjIG11bHRpIGFuZCBvZmZzZXRzIHN0YXJ0cyBm cm9tIHRoZSB2YWx1ZQorU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDEwMzsKKwlza2lwICJkbyBu b3QgdGVzdCBjYXNlICRURVNUX05PIiwgMQorCQl1bmxlc3MgKCBncmVwKCAvXiRURVNUX05PJC8s IEBURVNUUyApICk7CisKKwlteSAkZGJuYW1lID0gJ01PJzsKKwlteSAkb2xkbm9kZSA9IGNyZWF0 ZV9vbGRfbm9kZSgib2xkXyRkYm5hbWUiLAorCQkJCQkJc2NhbGUgPT4gMS4yLAorCQkJCQkJbXVs dGkgPT4gJzB4REVBRDAwJywgb2Zmc2V0ID0+ICcweEJFRUYwMCcpOworCW15ICRuZXdub2RlID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2Rl LT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRvbGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRF U1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKKyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVl LCBtdWx0aSB3cmFwCitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA0OworCXNraXAgImRvIG5v dCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywg QFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTW9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBj cmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJ CW11bHRpID0+ICcweEZGRkY3MDAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRv X3VwZ3JhZGUoJG9sZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNT RUQiKTsKK30KKworIyBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2YWx1ZSwgb2Zmc2V0cyB3cmFw CitTS0lQOgoreworCW15ICRURVNUX05PID0gMTA1OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2Ug JFRFU1RfTk8iLCAxCisJCXVubGVzcyAoIGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsK KworCW15ICRkYm5hbWUgPSAnbU9fd3JhcCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25v ZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJCXNjYWxlID0+IDEuMiwKKwkJCQkJCW9mZnNldCA9PiAn MHhGRkZGRkMwMCcpOworCW15ICRuZXdub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCJuZXdfJGRibmFtZSIpOworCSRuZXdub2RlLT5pbml0KCk7CisKKwlkb191cGdyYWRlKCRv bGRub2RlLCAkbmV3bm9kZSk7CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisK KyMgbXVsdGkgc3RhcnRzIGZyb20gdGhlIHZhbHVlLCBvZmZzZXRzIHN0YXJ0cyBmcm9tIHRoZSB2 YWx1ZSwKKyMgbXVsdGkgd3JhcCwgb2Zmc2V0cyB3cmFwCitTS0lQOgoreworCW15ICRURVNUX05P ID0gMTA2OworCXNraXAgImRvIG5vdCB0ZXN0IGNhc2UgJFRFU1RfTk8iLCAxCisJCXVubGVzcyAo IGdyZXAoIC9eJFRFU1RfTk8kLywgQFRFU1RTICkgKTsKKworCW15ICRkYm5hbWUgPSAnTU9fd3Jh cCc7CisJbXkgJG9sZG5vZGUgPSBjcmVhdGVfb2xkX25vZGUoIm9sZF8kZGJuYW1lIiwKKwkJCQkJ CXNjYWxlID0+IDEuMiwKKwkJCQkJCW11bHRpID0+ICcweEZGRkY3MDAwJywgb2Zmc2V0ID0+ICcw eEZGRkZGQzAwJyk7CisJbXkgJG5ld25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoIm5ld18kZGJuYW1lIik7CisJJG5ld25vZGUtPmluaXQoKTsKKworCWRvX3VwZ3JhZGUoJG9s ZG5vZGUsICRuZXdub2RlKTsKKwlvaygxLCAiVEVTVCAkVEVTVF9OTyBQQVNTRUQiKTsKK30KKwor IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBTZWxmIHVwZ3JhZGUKKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworIyBzdGFydHMgZnJvbSB0aGUgemVybworU0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9 IDEwMDA7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAkVEVTVF9OTyIsIDEKKwkJdW5sZXNzICgg Z3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOworCisJbXkgJGRibmFtZSA9ICdzZWxmX3Vw Z3JhZGUnOworCW15ICRvbGRub2RlID0gY3JlYXRlX25ld19ub2RlKCJvbGRfJGRibmFtZSIsCisJ CQkJCQlzY2FsZSA9PiAxKTsKKwlteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwkkbmV3bm9kZS0+aW5pdCgpOworCisJZG9fdXBncmFk ZSgkb2xkbm9kZSwgJG5ld25vZGUpOworCW9rKDEsICJURVNUICRURVNUX05PIFBBU1NFRCIpOwor fQorCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --0000000000007f0165062cd8ca3f Content-Type: application/octet-stream; name="v13-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Disposition: attachment; filename="v13-0003-Make-pg_upgrade-convert-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gt22 RnJvbSBlMTVmODkxNDNkZDhhZWY3MDk1N2U4N2Q1OWMxNzdmYWI2NmY5Y2UyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogVHVlLCAxMyBBdWcgMjAyNCAxNDo0NDo1MCArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEz IDMvN10gTWFrZSBwZ191cGdyYWRlIGNvbnZlcnQgbXVsdGl4YWN0IG9mZnNldHMuCgpBdXRob3I6 IEhlaWtraSBMaW5uYWthbmdhcyA8aGVpa2tpLmxpbm5ha2FuZ2FzQGlraS5maT4KQXV0aG9yOiBN YXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkF1dGhvcjogWXVyYSBTb2tvbG92IDx5LnNv a29sb3ZAcG9zdGdyZXNwcm8ucnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVs dGl4YWN0LmMgfCAgMzUgKy0tCiBzcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUgICAgICAgICAg ICB8ICAgMyArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMyAr CiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5jICAgICB8IDMzOCArKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5oICAgICB8 ICAxMiArCiBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYyB8IDIzOCArKysr KysrKysrKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgfCAg MjkgKystCiBzcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oICAgICAgICB8ICAxMyArLQog c3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYyAgICAgICAgICAgfCAyMTEgKysrKysrKysrKysr KysrCiBzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oICAgICAgICAgICB8ICAyMyArKwogMTAg ZmlsZXMgY2hhbmdlZCwgODczIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X29sZC5oCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9yZXdyaXRlLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v bXVsdGl4YWN0LmMKaW5kZXggY2Q5ZGI1MmU5NS4uZDYzYWUxNzMzMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTExMDMsNyArMTEwMyw2IEBAIEdldE11bHRpWGFj dElkTWVtYmVycyhNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0TWVtYmVyICoqbWVtYmVycywK IAlNdWx0aVhhY3RPZmZzZXQgKm9mZnB0cjsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogCWlu dAkJCWxlbmd0aDsKLQlpbnQJCQl0cnVlbGVuZ3RoOwogCU11bHRpWGFjdElkIG9sZGVzdE1YYWN0 OwogCU11bHRpWGFjdElkIG5leHRNWGFjdDsKIAlNdWx0aVhhY3RJZCB0bXBNWGFjdDsKQEAgLTEy MDIsMTUgKzEyMDEsNiBAQCBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoTXVsdGlYYWN0SWQgbXVsdGks IE11bHRpWGFjdE1lbWJlciAqKm1lbWJlcnMsCiAJICogd2UgaGF2ZSBqdXN0IGZvciB0aGlzOyB0 aGUgcHJvY2VzcyBpbiBjaGFyZ2Ugd2lsbCBzaWduYWwgdGhlIENWIGFzIHNvb24KIAkgKiBhcyBp dCBoYXMgZmluaXNoZWQgd3JpdGluZyB0aGUgbXVsdGl4YWN0IG9mZnNldC4KIAkgKgotCSAqIDMu IEJlY2F1c2UgR2V0TmV3TXVsdGlYYWN0SWQgaW5jcmVtZW50cyBvZmZzZXQgemVybyB0byBvZmZz ZXQgb25lIHRvCi0JICogaGFuZGxlIGNhc2UgIzIsIHRoZXJlIGlzIGFuIGFtYmlndWl0eSBuZWFy IHRoZSBwb2ludCBvZiBvZmZzZXQKLQkgKiB3cmFwYXJvdW5kLiAgSWYgd2Ugc2VlIG5leHQgbXVs dGl4YWN0J3Mgb2Zmc2V0IGlzIG9uZSwgaXMgdGhhdCBvdXIKLQkgKiBtdWx0aXhhY3QncyBhY3R1 YWwgZW5kcG9pbnQsIG9yIGRpZCBpdCBlbmQgYXQgemVybyB3aXRoIGEgc3Vic2VxdWVudAotCSAq IGluY3JlbWVudD8gIFdlIGhhbmRsZSB0aGlzIHVzaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBpZiB0 aGUgemVybyd0aAotCSAqIG1lbWJlciBzbG90IHdhc24ndCBmaWxsZWQsIGl0J2xsIGNvbnRhaW4g emVybywgYW5kIHplcm8gaXNuJ3QgYSB2YWxpZAotCSAqIHRyYW5zYWN0aW9uIElEIHNvIGl0IGNh bid0IGJlIGEgbXVsdGl4YWN0IG1lbWJlci4gIFRoZXJlZm9yZSwgaWYgd2UKLQkgKiByZWFkIGEg emVybyBmcm9tIHRoZSBtZW1iZXJzIGFycmF5LCBqdXN0IGlnbm9yZSBpdC4KLQkgKgogCSAqIFRo aXMgaXMgYWxsIHByZXR0eSBtZXNzeSwgYnV0IHRoZSBtZXNzIG9jY3VycyBvbmx5IGluIGluZnJl cXVlbnQgY29ybmVyCiAJICogY2FzZXMsIHNvIGl0IHNlZW1zIGJldHRlciB0aGFuIGhvbGRpbmcg dGhlIE11bHRpWGFjdEdlbkxvY2sgZm9yIGEgbG9uZwogCSAqIHRpbWUgb24gZXZlcnkgbXVsdGl4 YWN0IGNyZWF0aW9uLgpAQCAtMTI5Nyw2ICsxMjg3LDkgQEAgcmV0cnk6CiAJTFdMb2NrUmVsZWFz ZShsb2NrKTsKIAlsb2NrID0gTlVMTDsKIAorCS8qIEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJl cnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlBc3NlcnQobGVuZ3RoID4gMCk7CisKIAkvKgogCSAq IElmIHdlIHNsZXB0IGFib3ZlLCBjbGVhbiB1cCBzdGF0ZTsgaXQncyBubyBsb25nZXIgbmVlZGVk LgogCSAqLwpAQCAtMTMwNSw3ICsxMjk4LDYgQEAgcmV0cnk6CiAKIAlwdHIgPSAoTXVsdGlYYWN0 TWVtYmVyICopIHBhbGxvYyhsZW5ndGggKiBzaXplb2YoTXVsdGlYYWN0TWVtYmVyKSk7CiAKLQl0 cnVlbGVuZ3RoID0gMDsKIAlwcmV2X3BhZ2VubyA9IC0xOwogCWZvciAoaW50IGkgPSAwOyBpIDwg bGVuZ3RoOyBpKyssIG9mZnNldCsrKQogCXsKQEAgLTEzNDMsMzYgKzEzMzUsMjcgQEAgcmV0cnk6 CiAJCXhhY3RwdHIgPSAoVHJhbnNhY3Rpb25JZCAqKQogCQkJKE11bHRpWGFjdE1lbWJlckN0bC0+ c2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dICsgbWVtYmVyb2ZmKTsKIAotCQlpZiAoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKCp4YWN0cHRyKSkKLQkJewotCQkJLyogQ29ybmVyIGNhc2UgMzogd2Ug bXVzdCBiZSBsb29raW5nIGF0IHVudXNlZCBzbG90IHplcm8gKi8KLQkJCUFzc2VydChvZmZzZXQg PT0gMCk7Ci0JCQljb250aW51ZTsKLQkJfQorCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo KnhhY3RwdHIpKTsKIAogCQlmbGFnc29mZiA9IE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQp OwogCQlic2hpZnQgPSBNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChvZmZzZXQpOwogCQlmbGFnc3B0 ciA9ICh1aW50MzIgKikgKE11bHRpWGFjdE1lbWJlckN0bC0+c2hhcmVkLT5wYWdlX2J1ZmZlcltz bG90bm9dICsgZmxhZ3NvZmYpOwogCi0JCXB0clt0cnVlbGVuZ3RoXS54aWQgPSAqeGFjdHB0cjsK LQkJcHRyW3RydWVsZW5ndGhdLnN0YXR1cyA9ICgqZmxhZ3NwdHIgPj4gYnNoaWZ0KSAmIE1YQUNU X01FTUJFUl9YQUNUX0JJVE1BU0s7Ci0JCXRydWVsZW5ndGgrKzsKKwkJcHRyW2ldLnhpZCA9ICp4 YWN0cHRyOworCQlwdHJbaV0uc3RhdHVzID0gKCpmbGFnc3B0ciA+PiBic2hpZnQpICYgTVhBQ1Rf TUVNQkVSX1hBQ1RfQklUTUFTSzsKIAl9CiAKIAlMV0xvY2tSZWxlYXNlKGxvY2spOwogCi0JLyog QSBtdWx0aXhpZCB3aXRoIHplcm8gbWVtYmVycyBzaG91bGQgbm90IGhhcHBlbiAqLwotCUFzc2Vy dCh0cnVlbGVuZ3RoID4gMCk7Ci0KIAkvKgogCSAqIENvcHkgdGhlIHJlc3VsdCBpbnRvIHRoZSBs b2NhbCBjYWNoZS4KIAkgKi8KLQltWGFjdENhY2hlUHV0KG11bHRpLCB0cnVlbGVuZ3RoLCBwdHIp OworCW1YYWN0Q2FjaGVQdXQobXVsdGksIGxlbmd0aCwgcHRyKTsKIAogCWRlYnVnX2Vsb2czKERF QlVHMiwgIkdldE1lbWJlcnM6IG5vIGNhY2hlIGZvciAlcyIsCi0JCQkJbXhpZF90b19zdHJpbmco bXVsdGksIHRydWVsZW5ndGgsIHB0cikpOworCQkJCW14aWRfdG9fc3RyaW5nKG11bHRpLCBsZW5n dGgsIHB0cikpOwogCSptZW1iZXJzID0gcHRyOwotCXJldHVybiB0cnVlbGVuZ3RoOworCXJldHVy biBsZW5ndGg7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZp bGUgYi9zcmMvYmluL3BnX3VwZ3JhZGUvTWFrZWZpbGUKaW5kZXggZjgzZDJiNWQzMC4uYjRhZDAx YzAwYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL01ha2VmaWxlCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9NYWtlZmlsZQpAQCAtMTksMTEgKzE5LDE0IEBAIE9CSlMgPSBcCiAJZmls ZS5vIFwKIAlmdW5jdGlvbi5vIFwKIAlpbmZvLm8gXAorCW11bHRpeGFjdF9vbGQubyBcCisJbXVs dGl4YWN0X3Jld3JpdGUubyBcCiAJb3B0aW9uLm8gXAogCXBhcmFsbGVsLm8gXAogCXBnX3VwZ3Jh ZGUubyBcCiAJcmVsZmlsZW51bWJlci5vIFwKIAlzZXJ2ZXIubyBcCisJc2xydV9pby5vIFwKIAl0 YWJsZXNwYWNlLm8gXAogCXRhc2subyBcCiAJdXRpbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfdXBncmFkZS9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApp bmRleCBjYzJiYTk3ZDlhLi43NmM4ZjIwMDVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3Jh ZGUvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCkBAIC04 LDExICs4LDE0IEBAIHBnX3VwZ3JhZGVfc291cmNlcyA9IGZpbGVzKAogICAnZmlsZS5jJywKICAg J2Z1bmN0aW9uLmMnLAogICAnaW5mby5jJywKKyAgJ211bHRpeGFjdF9vbGQuYycsCisgICdtdWx0 aXhhY3RfcmV3cml0ZS5jJywKICAgJ29wdGlvbi5jJywKICAgJ3BhcmFsbGVsLmMnLAogICAncGdf dXBncmFkZS5jJywKICAgJ3JlbGZpbGVudW1iZXIuYycsCiAgICdzZXJ2ZXIuYycsCisgICdzbHJ1 X2lvLmMnLAogICAndGFibGVzcGFjZS5jJywKICAgJ3Rhc2suYycsCiAgICd1dGlsLmMnLApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuYyBiL3NyYy9iaW4vcGdf dXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMDQ0MjkyOGU4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9t dWx0aXhhY3Rfb2xkLmMKQEAgLTAsMCArMSwzMzggQEAKKy8qCisgKgltdWx0aXhhY3Rfb2xkLmMK KyAqCisgKglTdXBwb3J0IGZvciByZWFkaW5nIHByZS12MTggZm9ybWF0IHBnX211bHRpeGFjdCBm aWxlcworICoKKyAqCUNvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCXNyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xkLmMKKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgi CisjaW5jbHVkZSAicGdfdXBncmFkZS5oIgorI2luY2x1ZGUgIm11bHRpeGFjdF9vbGQuaCIKKyNp bmNsdWRlICJzbHJ1X2lvLmgiCisKKy8qCisgKiBCZWxvdyBhcmUgYSBidW5jaCBvZiBkZWZpbml0 aW9ucyB0aGF0IGFyZSBjb3B5LXBhc3RlZCBmcm9tIG11bHRpeGFjdC5jIGZyb20KKyAqIHZlcnNp b24gMTcuIFRoZXkgc2hhZG93IHRoZSBuZXcgZGVmaW5pdGlvbnMgaW4gYWNjZXNzL211bHRpeGFj dC5oLCBzbyBpdCdzCisgKiBpbXBvcnRhbnQgdGhhdCB3ZSAqZG9uJ3QqIGluY2x1ZGUgdGhhdCBo ZXJlLiBUaGF0J3MgaXMgYSBiaWcgcmVhc29uIHRoaXMKKyAqIGNvZGUgaGFzIHRvIGJlIGluIGEg c2VwYXJhdGUgc291cmNlIGZpbGUuCisgKgorICogQWxsIHJlZmVyZW5jZXMgdG8gTXVsdGlYYWN0 T2Zmc2V0IGhhdmUgYmVlbiByZXBsYWNlZCB3aXRoIE9sZE11bHRpWGFjdE9mZnNldDsKKyAqLwor dHlwZWRlZiB1aW50MzIgT2xkTXVsdGlYYWN0T2Zmc2V0OworCisjZGVmaW5lIEZpcnN0TXVsdGlY YWN0SWQJKChNdWx0aVhhY3RJZCkgMSkKKworLyoKKyAqIFBvc3NpYmxlIG11bHRpeGFjdCBsb2Nr IG1vZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3QgZm91ciBtb2RlcyBhcmUgZm9yCisgKiB0dXBs ZSBsb2NrcyAoRk9SIEtFWSBTSEFSRSwgRk9SIFNIQVJFLCBGT1IgTk8gS0VZIFVQREFURSwgRk9S IFVQREFURSk7IHRoZQorICogbmV4dCB0d28gYXJlIHVzZWQgZm9yIHVwZGF0ZSBhbmQgZGVsZXRl IG1vZGVzLgorICovCit0eXBlZGVmIGVudW0KK3sKKwlNdWx0aVhhY3RTdGF0dXNGb3JLZXlTaGFy ZSA9IDB4MDAsCisJTXVsdGlYYWN0U3RhdHVzRm9yU2hhcmUgPSAweDAxLAorCU11bHRpWGFjdFN0 YXR1c0Zvck5vS2V5VXBkYXRlID0gMHgwMiwKKwlNdWx0aVhhY3RTdGF0dXNGb3JVcGRhdGUgPSAw eDAzLAorCS8qIGFuIHVwZGF0ZSB0aGF0IGRvZXNuJ3QgdG91Y2ggImtleSIgY29sdW1ucyAqLwor CU11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlID0gMHgwNCwKKwkvKiBvdGhlciB1cGRhdGVzLCBh bmQgZGVsZXRlICovCisJTXVsdGlYYWN0U3RhdHVzVXBkYXRlID0gMHgwNSwKK30gTXVsdGlYYWN0 U3RhdHVzOworCisvKiBkb2VzIGEgc3RhdHVzIHZhbHVlIGNvcnJlc3BvbmQgdG8gYSB0dXBsZSB1 cGRhdGU/ICovCisjZGVmaW5lIElTVVBEQVRFX2Zyb21fbXhzdGF0dXMoc3RhdHVzKSBcCisJCQko KHN0YXR1cykgPiBNdWx0aVhhY3RTdGF0dXNGb3JVcGRhdGUpCisKKy8qCisgKiBEZWZpbmVzIGZv ciBPbGRNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXplcy4gIEEgcGFnZSBpcyB0aGUgc2FtZSBCTENL U1ogYXMgaXMKKyAqIHVzZWQgZXZlcnl3aGVyZSBlbHNlIGluIFBvc3RncmVzLgorICoKKyAqIE5v dGU6IGJlY2F1c2UgT2xkTXVsdGlYYWN0T2Zmc2V0cyBhcmUgMzIgYml0cyBhbmQgd3JhcCBhcm91 bmQgYXQgMHhGRkZGRkZGRiwKKyAqIE11bHRpWGFjdCBwYWdlIG51bWJlcmluZyBhbHNvIHdyYXBz IGFyb3VuZCBhdAorICogMHhGRkZGRkZGRi9NVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSwgYW5k IHNlZ21lbnQgbnVtYmVyaW5nIGF0CisgKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BF Ul9QQUdFL1NMUlVfUEFHRVNfUEVSX1NFR01FTlQuICBXZSBuZWVkCisgKiB0YWtlIG5vIGV4cGxp Y2l0IG5vdGljZSBvZiB0aGF0IGZhY3QgaW4gdGhpcyBtb2R1bGUsIGV4Y2VwdCB3aGVuIGNvbXBh cmluZworICogc2VnbWVudCBhbmQgcGFnZSBudW1iZXJzIGluIFRydW5jYXRlTXVsdGlYYWN0IChz ZWUKKyAqIE9sZE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlcykuCisgKi8KKworLyogV2UgbmVl ZCBmb3VyIGJ5dGVzIHBlciBvZmZzZXQgKi8KKyNkZWZpbmUgTVVMVElYQUNUX09GRlNFVFNfUEVS X1BBR0UgKEJMQ0tTWiAvIHNpemVvZih1aW50MzIpKQorCitzdGF0aWMgaW5saW5lIGludDY0CitN dWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4gbXVs dGkgLyBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGluZSBpbnQK K011bHRpWGFjdElkVG9PZmZzZXRFbnRyeShNdWx0aVhhY3RJZCBtdWx0aSkKK3sKKwlyZXR1cm4g bXVsdGkgJSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRTsKK30KKworc3RhdGljIGlubGluZSBp bnQ2NAorTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQoTXVsdGlYYWN0SWQgbXVsdGkpCit7CisJ cmV0dXJuIE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKSAvIFNMUlVfUEFHRVNfUEVSX1NF R01FTlQ7Cit9CisKKy8qCisgKiBUaGUgc2l0dWF0aW9uIGZvciBtZW1iZXJzIGlzIGEgYml0IG1v cmUgY29tcGxleDogd2Ugc3RvcmUgb25lIGJ5dGUgb2YKKyAqIGFkZGl0aW9uYWwgZmxhZyBiaXRz IGZvciBlYWNoIFRyYW5zYWN0aW9uSWQuICBUbyBkbyB0aGlzIHdpdGhvdXQgZ2V0dGluZworICog aW50byBhbGlnbm1lbnQgaXNzdWVzLCB3ZSBzdG9yZSBmb3VyIGJ5dGVzIG9mIGZsYWdzLCBhbmQg dGhlbiB0aGUKKyAqIGNvcnJlc3BvbmRpbmcgNCBYaWRzLiAgRWFjaCBzdWNoIDUtd29yZCAoMjAt Ynl0ZSkgc2V0IHdlIGNhbGwgYSAiZ3JvdXAiLCBhbmQKKyAqIGFyZSBzdG9yZWQgYXMgYSB3aG9s ZSBpbiBwYWdlcy4gIFRodXMsIHdpdGggOGtCIEJMQ0tTWiwgd2Uga2VlcCA0MDkgZ3JvdXBzCisg KiBwZXIgcGFnZS4gIFRoaXMgd2FzdGVzIDEyIGJ5dGVzIHBlciBwYWdlLCBidXQgdGhhdCdzIE9L IC0tIHNpbXBsaWNpdHkgKGFuZAorICogcGVyZm9ybWFuY2UpIHRydW1wcyBzcGFjZSBlZmZpY2ll bmN5IGhlcmUuCisgKgorICogTm90ZSB0aGF0IHRoZSAib2Zmc2V0IiBtYWNyb3Mgd29yayB3aXRo IGJ5dGUgb2Zmc2V0LCBub3QgYXJyYXkgaW5kZXhlcywgc28KKyAqIGFyaXRobWV0aWMgbXVzdCBi ZSBkb25lIHVzaW5nICJjaGFyICoiIHBvaW50ZXJzLgorICovCisvKiBXZSBuZWVkIGVpZ2h0IGJp dHMgcGVyIHhhY3QsIHNvIG9uZSB4YWN0IGZpdHMgaW4gYSBieXRlICovCisjZGVmaW5lIE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUCQkJOAorI2RlZmluZSBNWEFDVF9NRU1CRVJfRkxBR1NfUEVS X0JZVEUJCQkxCisjZGVmaW5lIE1YQUNUX01FTUJFUl9YQUNUX0JJVE1BU0sJKCgxIDw8IE1YQUNU X01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpCisKKy8qIGhvdyBtYW55IGZ1bGwgYnl0ZXMgb2Yg ZmxhZ3MgYXJlIHRoZXJlIGluIGEgZ3JvdXA/ICovCisjZGVmaW5lIE1VTFRJWEFDVF9GTEFHQllU RVNfUEVSX0dST1VQCQk0CisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9V UAlcCisJKE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQICogTVhBQ1RfTUVNQkVSX0ZMQUdT X1BFUl9CWVRFKQorLyogc2l6ZSBpbiBieXRlcyBvZiBhIGNvbXBsZXRlIGdyb3VwICovCisjZGVm aW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFIFwKKwkoc2l6ZW9mKFRyYW5zYWN0aW9uSWQp ICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQICsgTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVApCisjZGVmaW5lIE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKEJM Q0tTWiAvIE1VTFRJWEFDVF9NRU1CRVJHUk9VUF9TSVpFKQorI2RlZmluZSBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRQlcCisJKE1VTFRJWEFDVF9NRU1CRVJHUk9VUFNfUEVSX1BBR0UgKiBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVApCisKKy8qIHBhZ2UgaW4gd2hpY2ggYSBtZW1i ZXIgaXMgdG8gYmUgZm91bmQgKi8KK3N0YXRpYyBpbmxpbmUgaW50NjQKK01YT2Zmc2V0VG9NZW1i ZXJQYWdlKE9sZE11bHRpWGFjdE9mZnNldCBvZmZzZXQpCit7CisJcmV0dXJuIG9mZnNldCAvIE1V TFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFOworfQorCisvKiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQg d2l0aGluIHBhZ2UpIG9mIGZsYWcgd29yZCBmb3IgYSBnaXZlbiBtZW1iZXIgKi8KK3N0YXRpYyBp bmxpbmUgaW50CitNWE9mZnNldFRvRmxhZ3NPZmZzZXQoT2xkTXVsdGlYYWN0T2Zmc2V0IG9mZnNl dCkKK3sKKwlPbGRNdWx0aVhhY3RPZmZzZXQgZ3JvdXAgPSBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfTUVNQkVSR1JPVVA7CisJaW50CQkJZ3JvdXBvbnBnID0gZ3JvdXAgJSBNVUxUSVhB Q1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFOworCWludAkJCWJ5dGVvZmYgPSBncm91cG9ucGcgKiBN VUxUSVhBQ1RfTUVNQkVSR1JPVVBfU0laRTsKKworCXJldHVybiBieXRlb2ZmOworfQorCitzdGF0 aWMgaW5saW5lIGludAorTVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQoT2xkTXVsdGlYYWN0T2Zmc2V0 IG9mZnNldCkKK3sKKwlpbnQJCQltZW1iZXJfaW5fZ3JvdXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1Rf TUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7CisJaW50CQkJYnNoaWZ0ID0gbWVtYmVyX2luX2dyb3Vw ICogTVhBQ1RfTUVNQkVSX0JJVFNfUEVSX1hBQ1Q7CisKKwlyZXR1cm4gYnNoaWZ0OworfQorCisv KiBMb2NhdGlvbiAoYnl0ZSBvZmZzZXQgd2l0aGluIHBhZ2UpIG9mIFRyYW5zYWN0aW9uSWQgb2Yg Z2l2ZW4gbWVtYmVyICovCitzdGF0aWMgaW5saW5lIGludAorTVhPZmZzZXRUb01lbWJlck9mZnNl dChPbGRNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQoreworCWludAkJCW1lbWJlcl9pbl9ncm91cCA9 IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUDsKKworCXJldHVybiBN WE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KSArCisJCU1VTFRJWEFDVF9GTEFHQllURVNfUEVS X0dST1VQICsKKwkJbWVtYmVyX2luX2dyb3VwICogc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworfQor Cit0eXBlZGVmIHN0cnVjdCBPbGRNdWx0aVhhY3RSZWFkZXIKK3sKKwlNdWx0aVhhY3RJZCBuZXh0 TVhhY3Q7CisJdWludDMyCW5leHRPZmZzZXQ7CisKKwlTbHJ1U2VnU3RhdGUgKm9mZnNldDsKKwlT bHJ1U2VnU3RhdGUgKm1lbWJlcnM7Cit9IE9sZE11bHRpWGFjdFJlYWRlcjsKKworT2xkTXVsdGlY YWN0UmVhZGVyICoKK1N0YXJ0T2xkTXVsdGlYYWN0UmVhZCh2b2lkKQoreworCU9sZE11bHRpWGFj dFJlYWRlciAqc3RhdGU7CisJY2hhcgkgICAqZGlyOworCisJc3RhdGUgPSBwZ19tYWxsb2Moc2l6 ZW9mKE9sZE11bHRpWGFjdFJlYWRlcikpOworCXN0YXRlLT5uZXh0TVhhY3QgPSBvbGRfY2x1c3Rl ci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGk7CisJc3RhdGUtPm5leHRPZmZzZXQgPSBvbGRf Y2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisKKwlkaXIgPSBwc3ByaW50Zigi JXMvcGdfbXVsdGl4YWN0L29mZnNldHMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOworCXN0YXRlLT5v ZmZzZXQgPSBPcGVuU2xydVJlYWQoZGlyKTsKKwlwZ19mcmVlKGRpcik7CisKKwlkaXIgPSBwc3By aW50ZigiJXMvcGdfbXVsdGl4YWN0L21lbWJlcnMiLCBvbGRfY2x1c3Rlci5wZ2RhdGEpOworCXN0 YXRlLT5tZW1iZXJzID0gT3BlblNscnVSZWFkKGRpcik7CisJcGdfZnJlZShkaXIpOworCisJcmV0 dXJuIHN0YXRlOworfQorCisvKgorICogVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0 aGUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKCkgc2VydmVyIGZ1bmN0aW9uLgorICoKKyAqIC0gT25s eSByZXR1cm4gdGhlIHVwZGF0aW5nIG1lbWJlciwgaWYgYW55LiBVcGdyYWRlIG9ubHkgY2FyZXMg YWJvdXQgdGhlIHVwZGF0ZXJzLgorICogICBJZiB0aGVyZSBpcyBubyB1cGRhdGluZyBtZW1iZXIs IHJldHVybiB0aGUgZmlyc3QgbG9ja2luZy1vbmx5IG1lbWJlci4gV2UgZG9uJ3QKKyAqICAgaGF2 ZSBhbnkgd2F5IHRvIHJlcHJlc2VudCAibm8gbWVtYmVycyIsIGJ1dCB3ZSBhbHNvIGRvbid0IG5l ZWQgdG8gcHJlc2VydmUgYWxsCisgKiAgIHRoZSBsb2NraW5nIG1lbWJlcnMuCisgKgorICogLSBX ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGxvY2tpbmcgYW5kIHNvbWUgY29ybmVyIGNhc2Vz IGJlY2F1c2UgdGhlcmUncworICogICBubyBjb25jdXJyZW50IGFjdGl2aXR5LgorICovCit2b2lk CitHZXRPbGRNdWx0aVhhY3RJZFNpbmdsZU1lbWJlcihPbGRNdWx0aVhhY3RSZWFkZXIgKnN0YXRl LCBNdWx0aVhhY3RJZCBtdWx0aSwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgKnJlc3VsdCwgYm9v bCAqaXN1cGRhdGUpCit7CisJVHJhbnNhY3Rpb25JZCByZXN1bHRfeGlkOworCWJvb2wJCXJlc3Vs dF9pc3VwZGF0ZTsKKwlpbnQ2NAkJcGFnZW5vOworCWludDY0CQlwcmV2X3BhZ2VubzsKKwlpbnQJ CQllbnRyeW5vOworCU9sZE11bHRpWGFjdE9mZnNldCAqb2ZmcHRyOworCU9sZE11bHRpWGFjdE9m ZnNldCBvZmZzZXQ7CisJaW50CQkJbGVuZ3RoOworCU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwlN dWx0aVhhY3RJZCB0bXBNWGFjdDsKKwlPbGRNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKKwlj aGFyCSAgICpidWY7CisKKwluZXh0TVhhY3QgPSBzdGF0ZS0+bmV4dE1YYWN0OworCW5leHRPZmZz ZXQgPSBzdGF0ZS0+bmV4dE9mZnNldDsKKworCS8qCisJICogRmluZCBvdXQgdGhlIG9mZnNldCBh dCB3aGljaCB3ZSBuZWVkIHRvIHN0YXJ0IHJlYWRpbmcgTXVsdGlYYWN0TWVtYmVycworCSAqIGFu ZCB0aGUgbnVtYmVyIG9mIG1lbWJlcnMgaW4gdGhlIG11bHRpeGFjdC4gIFdlIGRldGVybWluZSB0 aGUgbGF0dGVyIGFzCisJICogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIG11bHRpeGFjdCdz IHN0YXJ0aW5nIG9mZnNldCBhbmQgdGhlIG5leHQKKwkgKiBvbmUncy4gIEhvd2V2ZXIsIHRoZXJl IGFyZSBzb21lIGNvcm5lciBjYXNlcyB0byB3b3JyeSBhYm91dDoKKwkgKgorCSAqIDEuIFRoaXMg bXVsdGl4YWN0IG1heSBiZSB0aGUgbGF0ZXN0IG9uZSBjcmVhdGVkLCBpbiB3aGljaCBjYXNlIHRo ZXJlIGlzCisJICogbm8gbmV4dCBvbmUgdG8gbG9vayBhdC4gIEluIHRoaXMgY2FzZSB0aGUgbmV4 dE9mZnNldCB2YWx1ZSB3ZSBqdXN0CisJICogc2F2ZWQgaXMgdGhlIGNvcnJlY3QgZW5kcG9pbnQu CisJICoKKwkgKiAyLiAodGhpcyBjYW5ub3QgaGFwcGVuIGR1cmluZyB1cGdyYWRlKQorCSAqCisJ ICogMy4gQmVjYXVzZSBHZXROZXdNdWx0aVhhY3RJZCBpbmNyZW1lbnRzIG9mZnNldCB6ZXJvIHRv IG9mZnNldCBvbmUgdG8KKwkgKiBoYW5kbGUgY2FzZSAjMiwgdGhlcmUgaXMgYW4gYW1iaWd1aXR5 IG5lYXIgdGhlIHBvaW50IG9mIG9mZnNldAorCSAqIHdyYXBhcm91bmQuICBJZiB3ZSBzZWUgbmV4 dCBtdWx0aXhhY3QncyBvZmZzZXQgaXMgb25lLCBpcyB0aGF0IG91cgorCSAqIG11bHRpeGFjdCdz IGFjdHVhbCBlbmRwb2ludCwgb3IgZGlkIGl0IGVuZCBhdCB6ZXJvIHdpdGggYSBzdWJzZXF1ZW50 CisJICogaW5jcmVtZW50PyAgV2UgaGFuZGxlIHRoaXMgdXNpbmcgdGhlIGtub3dsZWRnZSB0aGF0 IGlmIHRoZSB6ZXJvJ3RoCisJICogbWVtYmVyIHNsb3Qgd2Fzbid0IGZpbGxlZCwgaXQnbGwgY29u dGFpbiB6ZXJvLCBhbmQgemVybyBpc24ndCBhIHZhbGlkCisJICogdHJhbnNhY3Rpb24gSUQgc28g aXQgY2FuJ3QgYmUgYSBtdWx0aXhhY3QgbWVtYmVyLiAgVGhlcmVmb3JlLCBpZiB3ZQorCSAqIHJl YWQgYSB6ZXJvIGZyb20gdGhlIG1lbWJlcnMgYXJyYXksIGp1c3QgaWdub3JlIGl0LgorCSAqLwor CXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG11bHRpKTsKKwllbnRyeW5vID0gTXVs dGlYYWN0SWRUb09mZnNldEVudHJ5KG11bHRpKTsKKworCWJ1ZiA9IFNscnVSZWFkU3dpdGNoUGFn ZShzdGF0ZS0+b2Zmc2V0LCBwYWdlbm8pOworCW9mZnB0ciA9IChPbGRNdWx0aVhhY3RPZmZzZXQg KikgYnVmOworCW9mZnB0ciArPSBlbnRyeW5vOworCW9mZnNldCA9ICpvZmZwdHI7CisKKwlBc3Nl cnQob2Zmc2V0ICE9IDApOworCisJLyoKKwkgKiBVc2UgdGhlIHNhbWUgaW5jcmVtZW50IHJ1bGUg YXMgR2V0TmV3TXVsdGlYYWN0SWQoKSwgdGhhdCBpcywgZG9uJ3QKKwkgKiBoYW5kbGUgd3JhcGFy b3VuZCBleHBsaWNpdGx5IHVudGlsIG5lZWRlZC4KKwkgKi8KKwl0bXBNWGFjdCA9IG11bHRpICsg MTsKKworCWlmIChuZXh0TVhhY3QgPT0gdG1wTVhhY3QpCisJeworCQkvKiBDb3JuZXIgY2FzZSAx OiB0aGVyZSBpcyBubyBuZXh0IG11bHRpeGFjdCAqLworCQlsZW5ndGggPSBuZXh0T2Zmc2V0IC0g b2Zmc2V0OworCX0KKwllbHNlCisJeworCQlPbGRNdWx0aVhhY3RPZmZzZXQgbmV4dE1YT2Zmc2V0 OworCisJCS8qIGhhbmRsZSB3cmFwYXJvdW5kIGlmIG5lZWRlZCAqLworCQlpZiAodG1wTVhhY3Qg PCBGaXJzdE11bHRpWGFjdElkKQorCQkJdG1wTVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOworCisJ CXByZXZfcGFnZW5vID0gcGFnZW5vOworCisJCXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQ YWdlKHRtcE1YYWN0KTsKKwkJZW50cnlubyA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeSh0bXBN WGFjdCk7CisKKwkJaWYgKHBhZ2VubyAhPSBwcmV2X3BhZ2VubykKKwkJeworCQkJYnVmID0gU2xy dVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5vZmZzZXQsIHBhZ2Vubyk7CisJCX0KKworCQlvZmZwdHIg PSAoT2xkTXVsdGlYYWN0T2Zmc2V0ICopIGJ1ZjsKKwkJb2ZmcHRyICs9IGVudHJ5bm87CisJCW5l eHRNWE9mZnNldCA9ICpvZmZwdHI7CisKKwkJaWYgKG5leHRNWE9mZnNldCA9PSAwKQorCQl7CisJ CQkvKiBDb3JuZXIgY2FzZSAyOiBuZXh0IG11bHRpeGFjdCBpcyBzdGlsbCBiZWluZyBmaWxsZWQg aW4gKi8KKwkJCUFzc2VydChmYWxzZSk7IC8qIHNob3VsZG4ndCBoYXBwZW4gZHVyaW5nIHVwZ3Jh ZGUgKi8KKwkJfQorCisJCWxlbmd0aCA9IG5leHRNWE9mZnNldCAtIG9mZnNldDsKKwl9CisKKwly ZXN1bHRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcmVzdWx0X2lzdXBkYXRlID0gZmFs c2U7CisJcHJldl9wYWdlbm8gPSAtMTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr LCBvZmZzZXQrKykKKwl7CisJCVRyYW5zYWN0aW9uSWQgKnhhY3RwdHI7CisJCXVpbnQzMgkgICAq ZmxhZ3NwdHI7CisJCWludAkJCWZsYWdzb2ZmOworCQlpbnQJCQlic2hpZnQ7CisJCWludAkJCW1l bWJlcm9mZjsKKwkJTXVsdGlYYWN0U3RhdHVzIHN0YXR1czsKKworCQlwYWdlbm8gPSBNWE9mZnNl dFRvTWVtYmVyUGFnZShvZmZzZXQpOworCQltZW1iZXJvZmYgPSBNWE9mZnNldFRvTWVtYmVyT2Zm c2V0KG9mZnNldCk7CisKKwkJaWYgKHBhZ2VubyAhPSBwcmV2X3BhZ2VubykKKwkJeworCQkJYnVm ID0gU2xydVJlYWRTd2l0Y2hQYWdlKHN0YXRlLT5tZW1iZXJzLCBwYWdlbm8pOworCQkJcHJldl9w YWdlbm8gPSBwYWdlbm87CisJCX0KKworCQl4YWN0cHRyID0gKFRyYW5zYWN0aW9uSWQgKikgKGJ1 ZiArIG1lbWJlcm9mZik7CisKKwkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqeGFjdHB0cikp CisJCXsKKwkJCS8qIENvcm5lciBjYXNlIDM6IHdlIG11c3QgYmUgbG9va2luZyBhdCB1bnVzZWQg c2xvdCB6ZXJvICovCisJCQlBc3NlcnQob2Zmc2V0ID09IDApOworCQkJY29udGludWU7CisJCX0K KworCQlmbGFnc29mZiA9IE1YT2Zmc2V0VG9GbGFnc09mZnNldChvZmZzZXQpOworCQlic2hpZnQg PSBNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChvZmZzZXQpOworCQlmbGFnc3B0ciA9ICh1aW50MzIg KikgKGJ1ZiArIGZsYWdzb2ZmKTsKKworCQlzdGF0dXMgPSAoKmZsYWdzcHRyID4+IGJzaGlmdCkg JiBNWEFDVF9NRU1CRVJfWEFDVF9CSVRNQVNLOworCisJCS8qIFZlcmlmeSB0aGF0IHRoZXJlIGlz IGEgc2luZ2xlIHVwZGF0ZSBYaWQgYW1vbmcgdGhlIGdpdmVuIG1lbWJlcnMuICovCisJCWlmIChJ U1VQREFURV9mcm9tX214c3RhdHVzKHN0YXR1cykpCisJCXsKKwkJCWlmIChyZXN1bHRfaXN1cGRh dGUpCisJCQkJcGdfZmF0YWwoIm11bHRpeGFjdCAldSBoYXMgbW9yZSB0aGFuIG9uZSB1cGRhdGlu ZyBtZW1iZXIiLAorCQkJCQkJIG11bHRpKTsKKwkJCXJlc3VsdF94aWQgPSAqeGFjdHB0cjsKKwkJ CXJlc3VsdF9pc3VwZGF0ZSA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHJlc3VsdF94aWQpKQorCQkJcmVzdWx0X3hpZCA9ICp4YWN0cHRyOworCX0KKworCS8q IEEgbXVsdGl4aWQgd2l0aCB6ZXJvIG1lbWJlcnMgc2hvdWxkIG5vdCBoYXBwZW4gKi8KKwlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQocmVzdWx0X3hpZCkpOworCisJKnJlc3VsdCA9IHJlc3Vs dF94aWQ7CisJKmlzdXBkYXRlID0gcmVzdWx0X2lzdXBkYXRlOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0 aXhhY3Rfb2xkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzA4MDBj MWNkYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3Rfb2xk LmgKQEAgLTAsMCArMSwxMiBAQAorLyoKKyAqCW11bHRpeGFjdF9vbGQuaAorICoKKyAqCUNvcHly aWdodCAoYykgMjAxMC0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoJc3JjL2Jpbi9wZ191cGdyYWRlL211bHRpeGFjdF9vbGQuaAorICovCisKK3R5cGVkZWYgc3Ry dWN0IE9sZE11bHRpWGFjdFJlYWRlciBPbGRNdWx0aVhhY3RSZWFkZXI7CisKK2V4dGVybiBPbGRN dWx0aVhhY3RSZWFkZXIgKlN0YXJ0T2xkTXVsdGlYYWN0UmVhZCh2b2lkKTsKK2V4dGVybiB2b2lk IEdldE9sZE11bHRpWGFjdElkU2luZ2xlTWVtYmVyKE9sZE11bHRpWGFjdFJlYWRlciAqc3RhdGUs IE11bHRpWGFjdElkIG11bHRpLAorCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCAqcmVzdWx0LCBi b29sICppc3VwZGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0 X3Jld3JpdGUuYyBiL3NyYy9iaW4vcGdfdXBncmFkZS9tdWx0aXhhY3RfcmV3cml0ZS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhjM2Y1MzhjYzkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYwpAQCAtMCwwICsx LDIzOCBAQAorLyoKKyAqCW11bHRpeGFjdF9yZXdyaXRlLmMKKyAqCisgKglSZXdyaXRlIHByZS12 MTggbXVsdGl4YWN0cyB0byBuZXcgZm9ybWF0IHdpdGggNjQtYml0IE11bHRpWGFjdE9mZnNldHMK KyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKglzcmMvYmluL3BnX3VwZ3JhZGUvbXVsdGl4YWN0X3Jld3JpdGUuYworICovCisK KyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSAibXVsdGl4YWN0X29sZC5oIgor I2luY2x1ZGUgInBnX3VwZ3JhZGUuaCIKKyNpbmNsdWRlICJzbHJ1X2lvLmgiCisKKyNpbmNsdWRl ICJhY2Nlc3MvbXVsdGl4YWN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdF9pbnRlcm5h bC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworCU11bHRpWGFjdElkIG5leHRNWGFjdDsKKwlNdWx0 aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKKworCVNscnVTZWdTdGF0ZSAqb2Zmc2V0OworCVNscnVT ZWdTdGF0ZSAqbWVtYmVyczsKK30gTXVsdGlYYWN0V3JpdGVyOworCitzdGF0aWMgTXVsdGlYYWN0 V3JpdGVyICpTdGFydE11bHRpWGFjdFdyaXRlKE11bHRpWGFjdElkIGZpcnN0TXVsdGksIE11bHRp WGFjdE9mZnNldCBmaXJzdE9mZnNldCk7CitzdGF0aWMgTXVsdGlYYWN0SWQgR2V0TmV3TXVsdGlY YWN0SWQoTXVsdGlYYWN0V3JpdGVyICpzdGF0ZSwgaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZz ZXQgKm9mZnNldCk7CitzdGF0aWMgdm9pZCBSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0V3Jp dGVyICpzdGF0ZSwKKwkJCQkJCQkgICBNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0LAorCQkJCQkJCSAg IE11bHRpWGFjdElkIG11bHRpLAorCQkJCQkJCSAgIGludCBubWVtYmVycywgTXVsdGlYYWN0TWVt YmVyICptZW1iZXJzKTsKK3N0YXRpYyB2b2lkIENsb3NlTXVsdGlYYWN0V3JpdGUoTXVsdGlYYWN0 V3JpdGVyICpzdGF0ZSk7CisKKworLyoKKyAqIENvbnZlcnQgcGdfbXVsdGl4YWN0L29mZnNldCBh bmQgL21lbWJlcnMgdG8gbmV3IGZvcm1hdCB3aXRoIDY0LWJpdCBvZmZzZXRzLgorICovCit2b2lk Citjb252ZXJ0X211bHRpeGFjdHMoTXVsdGlYYWN0SWQgKm5ld19ueHRtdWx0aSwgTXVsdGlYYWN0 T2Zmc2V0ICpuZXdfbnh0bXhvZmYpCit7CisJTXVsdGlYYWN0V3JpdGVyCSAgICpuZXdfd3JpdGVy OworCU11bHRpWGFjdElkCQkJb2xkZXN0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJvbGRhdGEu Y2hrcG50X29sZHN0TXVsdGksCisJCQkJCQluZXh0X211bHRpID0gb2xkX2NsdXN0ZXIuY29udHJv bGRhdGEuY2hrcG50X254dG11bHRpLAorCQkJCQkJbXVsdGk7CisJT2xkTXVsdGlYYWN0UmVhZGVy ICpvbGRfcmVhZGVyOworCisJaWYgKG5leHRfbXVsdGkgPCBGaXJzdE11bHRpWGFjdElkKQorCQlu ZXh0X211bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKworCW9sZF9yZWFkZXIgPSBTdGFydE9sZE11 bHRpWGFjdFJlYWQoKTsKKwluZXdfd3JpdGVyID0gU3RhcnRNdWx0aVhhY3RXcml0ZShvbGRlc3Rf bXVsdGksIDEpOworCisJLyoKKwkgKiBSZWFkIG11bHRpeGlkcyBmcm9tIG9sZCBmaWxlcyBvbmUg Ynkgb25lLCBhbmQgd3JpdGUgdGhlbSBiYWNrIGluIHRoZQorCSAqIG5ldyBmb3JtYXQuCisJICoK KwkgKiBUaGUgbG9ja2luZy1vbmx5IFhJRHMgdGhhdCBtYXkgYmUgcGFydCBvZiBtdWx0aS14aWRz IGRvbid0IG1hdHRlciBhZnRlcgorCSAqIHVwZ3JhZGUsIGFzIHRoZXJlIGNhbiBiZSBubyB0cmFu c2FjdGlvbnMgcnVubmluZyBhY3Jvc3MgdXBncmFkZS4gU28gYXMKKwkgKiBhIGxpdHRsZSBvcHRp bWl6YXRpb24sIHdlIG9ubHkgcmVhZCBvbmUgbWVtYmVyIGZyb20gZWFjaCBtdWx0aXhpZDogdGhl CisJICogb25lIHVwZGF0aW5nIG9uZSwgb3IgaWYgdGhlcmUgd2FzIG5vIHVwZGF0ZSwgYXJiaXRy YXJpbHkgdGhlIGZpcnN0CisJICogbG9ja2luZyB4aWQuCisJICovCisJZm9yIChtdWx0aSA9IG9s ZGVzdF9tdWx0aTsgbXVsdGkgIT0gbmV4dF9tdWx0aTspCisJeworCQlUcmFuc2FjdGlvbklkIHhp ZDsKKwkJYm9vbAkJaXN1cGRhdGU7CisJCU11bHRpWGFjdE1lbWJlciBtZW1iZXI7CisJCU11bHRp WGFjdElkIG5ld211bHRpIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKwkJTXVsdGlYYWN0T2Zm c2V0IG9mZnNldDsKKworCQkvKiBSZWFkIHRoZSBvbGQgbXVsdGl4aWQgKi8KKwkJR2V0T2xkTXVs dGlYYWN0SWRTaW5nbGVNZW1iZXIob2xkX3JlYWRlciwgbXVsdGksICZ4aWQsICZpc3VwZGF0ZSk7 CisKKwkJLyogV3JpdGUgaXQgb3V0IGluIG5ldyBmb3JtYXQgKi8KKwkJbWVtYmVyLnhpZCA9IHhp ZDsKKwkJbWVtYmVyLnN0YXR1cyA9IGlzdXBkYXRlID8gTXVsdGlYYWN0U3RhdHVzVXBkYXRlIDog TXVsdGlYYWN0U3RhdHVzRm9yS2V5U2hhcmU7CisJCW5ld211bHRpID0gR2V0TmV3TXVsdGlYYWN0 SWQobmV3X3dyaXRlciwgMSwgJm9mZnNldCk7CisJCUFzc2VydChuZXdtdWx0aSA9PSBtdWx0aSk7 CisJCVJlY29yZE5ld011bHRpWGFjdChuZXdfd3JpdGVyLCBvZmZzZXQsIG11bHRpLCAxLCAmbWVt YmVyKTsKKworCQltdWx0aSsrOworCQlpZiAobXVsdGkgPCBGaXJzdE11bHRpWGFjdElkKQorCQkJ bXVsdGkgPSBGaXJzdE11bHRpWGFjdElkOworCX0KKworCS8qCisJICogVXBkYXRlIHRoZSBuZXh0 TVhhY3QvT2Zmc2V0IHZhbHVlcyBpbiB0aGUgY29udHJvbCBmaWxlIHRvIG1hdGNoIHdoYXQgd2UK KwkgKiB3cm90ZS4gVGhlIG5leHRNWGFjdCBzaG91bGQgYmUgdW5jaGFuZ2VkLCBidXQgYmVjYXVz ZSB3ZSBpZ25vcmVkIHRoZQorCSAqIGxvY2tpbmcgWElEcyBtZW1iZXJzLCB0aGUgbmV4dE9mZnNl dCB3aWxsIGJlIGRpZmZlcmVudC4KKwkgKi8KKwlBc3NlcnQobmV3X3dyaXRlci0+bmV4dE1YYWN0 ID09IG5leHRfbXVsdGkpOworCSpuZXdfbnh0bXVsdGkgPSBuZXh0X211bHRpOworCSpuZXdfbnh0 bXhvZmYgPSBuZXdfd3JpdGVyLT5uZXh0T2Zmc2V0OworCisJLyogUmVsZWFzZSByZXNvdXJjZXMg Ki8KKwlDbG9zZU11bHRpWGFjdFdyaXRlKG5ld193cml0ZXIpOworfQorCisvKiBTdXBwb3J0IHJv dXRpbmVzIGZvciB3cml0aW5nIHRoZSBuZXcgZm9ybWF0ICovCisKK3N0YXRpYyBNdWx0aVhhY3RX cml0ZXIgKgorU3RhcnRNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RJZCBmaXJzdE11bHRpLCBNdWx0 aVhhY3RPZmZzZXQgZmlyc3RPZmZzZXQpCit7CisJTXVsdGlYYWN0V3JpdGVyICpzdGF0ZTsKKwlj aGFyCSAgICpkaXI7CisKKwlzdGF0ZSA9IHBnX21hbGxvYyhzaXplb2YoTXVsdGlYYWN0V3JpdGVy KSk7CisJc3RhdGUtPm5leHRNWGFjdCA9IGZpcnN0TXVsdGk7CisJc3RhdGUtPm5leHRPZmZzZXQg PSBmaXJzdE9mZnNldDsKKworCWRpciA9IHBzcHJpbnRmKCIlcy9wZ19tdWx0aXhhY3Qvb2Zmc2V0 cyIsIG5ld19jbHVzdGVyLnBnZGF0YSk7CisJc3RhdGUtPm9mZnNldCA9IE9wZW5TbHJ1V3JpdGUo ZGlyLCBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShmaXJzdE11bHRpKSk7CisJcGdfZnJlZShkaXIp OworCisJZGlyID0gcHNwcmludGYoIiVzL3BnX211bHRpeGFjdC9tZW1iZXJzIiwgbmV3X2NsdXN0 ZXIucGdkYXRhKTsKKwlzdGF0ZS0+bWVtYmVycyA9IE9wZW5TbHJ1V3JpdGUoZGlyLCBNWE9mZnNl dFRvTWVtYmVyUGFnZSgxKSk7CisJcGdfZnJlZShkaXIpOworCisJcmV0dXJuIHN0YXRlOworfQor CitzdGF0aWMgdm9pZAorQ2xvc2VNdWx0aVhhY3RXcml0ZShNdWx0aVhhY3RXcml0ZXIgKnN0YXRl KQoreworCUNsb3NlU2xydVdyaXRlKHN0YXRlLT5vZmZzZXQpOworCUNsb3NlU2xydVdyaXRlKHN0 YXRlLT5tZW1iZXJzKTsKKwlwZ19mcmVlKHN0YXRlKTsKK30KKworLyoKKyAqIFNpbXBsaWZpZWQg Y29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzZXJ2ZXIgZnVuY3Rpb24KKyAqLworc3RhdGljIE11 bHRpWGFjdElkCitHZXROZXdNdWx0aVhhY3RJZChNdWx0aVhhY3RXcml0ZXIgKnN0YXRlLCBpbnQg bm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQoreworCU11bHRpWGFjdElkCQlyZXN1 bHQ7CisKKwkvKiBIYW5kbGUgd3JhcGFyb3VuZCBvZiB0aGUgbmV4dE1YYWN0IGNvdW50ZXIgKi8K KwlpZiAoc3RhdGUtPm5leHRNWGFjdCA8IEZpcnN0TXVsdGlYYWN0SWQpCisJCXN0YXRlLT5uZXh0 TVhhY3QgPSBGaXJzdE11bHRpWGFjdElkOworCisJLyogQXNzaWduIHRoZSBNWElEICovCisJcmVz dWx0ID0gc3RhdGUtPm5leHRNWGFjdDsKKworCS8qCisJICogUmVzZXJ2ZSB0aGUgbWVtYmVycyBz cGFjZSwgc2ltaWxhcmx5IHRvIGFib3ZlLgorCSAqLworCSpvZmZzZXQgPSBzdGF0ZS0+bmV4dE9m ZnNldDsKKworCS8qCisJICogQWR2YW5jZSBjb3VudGVycy4gIEFzIGluIEdldE5ld1RyYW5zYWN0 aW9uSWQoKSwgdGhpcyBtdXN0IG5vdCBoYXBwZW4KKwkgKiB1bnRpbCBhZnRlciBmaWxlIGV4dGVu c2lvbiBoYXMgc3VjY2VlZGVkIQorCSAqCisJICogV2UgZG9uJ3QgY2FyZSBhYm91dCBNdWx0aVhh Y3RJZCB3cmFwYXJvdW5kIGhlcmU7IGl0IHdpbGwgYmUgaGFuZGxlZCBieQorCSAqIHRoZSBuZXh0 IGl0ZXJhdGlvbi4gIEJ1dCBub3RlIHRoYXQgbmV4dE1YYWN0IG1heSBiZSBJbnZhbGlkTXVsdGlY YWN0SWQKKwkgKiBvciB0aGUgZmlyc3QgdmFsdWUgb24gYSBzZWdtZW50LWJlZ2lubmluZyBwYWdl IGFmdGVyIHRoaXMgcm91dGluZQorCSAqIGV4aXRzLCBzbyBhbnlvbmUgZWxzZSBsb29raW5nIGF0 IHRoZSB2YXJpYWJsZSBtdXN0IGJlIHByZXBhcmVkIHRvIGRlYWwKKwkgKiB3aXRoIGVpdGhlciBj YXNlLiAgU2ltaWxhcmx5LCBuZXh0T2Zmc2V0IG1heSBiZSB6ZXJvLCBidXQgd2Ugd29uJ3QgdXNl CisJICogdGhhdCBhcyB0aGUgYWN0dWFsIHN0YXJ0IG9mZnNldCBvZiB0aGUgbmV4dCBtdWx0aXhh Y3QuCisJICovCisJKHN0YXRlLT5uZXh0TVhhY3QpKys7CisKKwlzdGF0ZS0+bmV4dE9mZnNldCAr PSBubWVtYmVyczsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBXcml0ZSBhIG5ldyBt dWx0aXhhY3Qgd2l0aCBtZW1iZXJzLgorICoKKyAqIFNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0aGUg Y29ycmVzcG9kaW5nIHNlcnZlciBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1JlY29yZE5l d011bHRpWGFjdChNdWx0aVhhY3RXcml0ZXIgKnN0YXRlLCBNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0 LAorCQkJCSAgIE11bHRpWGFjdElkIG11bHRpLAorCQkJCSAgIGludCBubWVtYmVycywgTXVsdGlY YWN0TWVtYmVyICptZW1iZXJzKQoreworCWludDY0CQlwYWdlbm87CisJaW50NjQJCXByZXZfcGFn ZW5vOworCWludAkJCWVudHJ5bm87CisKKwljaGFyCSAgICpidWY7CisJTXVsdGlYYWN0T2Zmc2V0 ICpvZmZwdHI7CisKKwlwYWdlbm8gPSBNdWx0aVhhY3RJZFRvT2Zmc2V0UGFnZShtdWx0aSk7CisJ ZW50cnlubyA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeShtdWx0aSk7CisKKwkvKgorCSAqIE5v dGU6IHdlIHBhc3MgdGhlIE11bHRpWGFjdElkIHRvIFNpbXBsZUxydVJlYWRQYWdlIGFzIHRoZSAi dHJhbnNhY3Rpb24iCisJICogdG8gY29tcGxhaW4gYWJvdXQgaWYgdGhlcmUncyBhbnkgSS9PIGVy cm9yLiAgVGhpcyBpcyBraW5kYSBib2d1cywgYnV0CisJICogc2luY2UgdGhlIGVycm9ycyB3aWxs IGFsd2F5cyBnaXZlIHRoZSBmdWxsIHBhdGhuYW1lLCBpdCBzaG91bGQgYmUgY2xlYXIKKwkgKiBl bm91Z2ggdGhhdCBhIE11bHRpWGFjdElkIGlzIHJlYWxseSBpbnZvbHZlZC4gIFBlcmhhcHMgc29t ZWRheSB3ZSdsbAorCSAqIHRha2UgdGhlIHRyb3VibGUgdG8gZ2VuZXJhbGl6ZSB0aGUgc2xydS5j IGVycm9yIHJlcG9ydGluZyBjb2RlLgorCSAqLworCWJ1ZiA9IFNscnVXcml0ZVN3aXRjaFBhZ2Uo c3RhdGUtPm9mZnNldCwgcGFnZW5vKTsKKwlvZmZwdHIgPSAoTXVsdGlYYWN0T2Zmc2V0ICopIGJ1 ZjsKKwlvZmZwdHIgKz0gZW50cnlubzsKKworCSpvZmZwdHIgPSBvZmZzZXQ7CisKKwlwcmV2X3Bh Z2VubyA9IC0xOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBubWVtYmVyczsgaSsrLCBvZmZzZXQr KykKKwl7CisJCVRyYW5zYWN0aW9uSWQgKm1lbWJlcnB0cjsKKwkJdWludDMyCSAgICpmbGFnc3B0 cjsKKwkJdWludDMyCQlmbGFnc3ZhbDsKKwkJaW50CQkJYnNoaWZ0OworCQlpbnQJCQlmbGFnc29m ZjsKKwkJaW50CQkJbWVtYmVyb2ZmOworCisJCUFzc2VydChtZW1iZXJzW2ldLnN0YXR1cyA8PSBN dWx0aVhhY3RTdGF0dXNVcGRhdGUpOworCisJCXBhZ2VubyA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdl KG9mZnNldCk7CisJCW1lbWJlcm9mZiA9IE1YT2Zmc2V0VG9NZW1iZXJPZmZzZXQob2Zmc2V0KTsK KwkJZmxhZ3NvZmYgPSBNWE9mZnNldFRvRmxhZ3NPZmZzZXQob2Zmc2V0KTsKKwkJYnNoaWZ0ID0g TVhPZmZzZXRUb0ZsYWdzQml0U2hpZnQob2Zmc2V0KTsKKworCQlpZiAocGFnZW5vICE9IHByZXZf cGFnZW5vKQorCQl7CisJCQlidWYgPSBTbHJ1V3JpdGVTd2l0Y2hQYWdlKHN0YXRlLT5tZW1iZXJz LCBwYWdlbm8pOworCQkJcHJldl9wYWdlbm8gPSBwYWdlbm87CisJCX0KKworCQltZW1iZXJwdHIg PSAoVHJhbnNhY3Rpb25JZCAqKSAoYnVmICsgbWVtYmVyb2ZmKTsKKworCQkqbWVtYmVycHRyID0g bWVtYmVyc1tpXS54aWQ7CisKKwkJZmxhZ3NwdHIgPSAodWludDMyICopIChidWYgKyBmbGFnc29m Zik7CisKKwkJZmxhZ3N2YWwgPSAqZmxhZ3NwdHI7CisJCWZsYWdzdmFsICY9IH4oKCgxIDw8IE1Y QUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUKSAtIDEpIDw8IGJzaGlmdCk7CisJCWZsYWdzdmFsIHw9 IChtZW1iZXJzW2ldLnN0YXR1cyA8PCBic2hpZnQpOworCQkqZmxhZ3NwdHIgPSBmbGFnc3ZhbDsK Kwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCAzNmM3ZjM4NzlkLi45YmYxOTFiOTg0 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCisrKyBiL3NyYy9i aW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTc1MCw4ICs3NTAsMjcgQEAgY29weV94YWN0 X3hsb2dfeGlkKHZvaWQpCiAJaWYgKG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIgPj0g TVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSICYmCiAJCW5ld19jbHVzdGVyLmNvbnRyb2xk YXRhLmNhdF92ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQogCXsKLQkJY29w eV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFjdC9vZmZzZXRzIiwgInBnX211bHRpeGFjdC9vZmZz ZXRzIik7Ci0JCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsICJwZ19t dWx0aXhhY3QvbWVtYmVycyIpOworCQlNdWx0aVhhY3RJZCBuZXdfbnh0bXVsdGkgPSBvbGRfY2x1 c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGk7CisJCU11bHRpWGFjdE9mZnNldCBuZXdf bnh0bXhvZmYgPSBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhvZmY7CisKKwkJ LyoKKwkJICogSWYgdGhlIG9sZCBzZXJ2ZXIgaXMgYmVmb3JlIHRoZSBNVUxUSVhBQ1RPRkZTRVRf Rk9STUFUQ0hBTkdFX0NBVF9WRVIKKwkJICogaXQgbXVzdCBoYXZlIDMyLWJpdCBtdWx0aXhpZCBv ZmZzZXRzLCB0aHVzIGl0IHNob3VsZCBiZSBjb252ZXJ0ZWQuCisJCSAqLworCQlpZiAob2xkX2Ns dXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA8IE1VTFRJWEFDVE9GRlNFVF9GT1JNQVRDSEFOR0Vf Q0FUX1ZFUiAmJgorCQkJbmV3X2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhB Q1RPRkZTRVRfRk9STUFUQ0hBTkdFX0NBVF9WRVIpCisJCXsKKwkJCXJlbW92ZV9uZXdfc3ViZGly KCJwZ19tdWx0aXhhY3QvbWVtYmVycyIsIGZhbHNlKTsKKwkJCXJlbW92ZV9uZXdfc3ViZGlyKCJw Z19tdWx0aXhhY3Qvb2Zmc2V0cyIsIGZhbHNlKTsKKwkJCXByZXBfc3RhdHVzKCJDb252ZXJ0aW5n IHBnX211bHRpeGFjdC9vZmZzZXRzIHRvIDY0LWJpdCIpOworCQkJY29udmVydF9tdWx0aXhhY3Rz KCZuZXdfbnh0bXVsdGksICZuZXdfbnh0bXhvZmYpOworCQkJY2hlY2tfb2soKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWNvcHlfc3ViZGlyX2ZpbGVzKCJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsICJw Z19tdWx0aXhhY3Qvb2Zmc2V0cyIpOworCQkJY29weV9zdWJkaXJfZmlsZXMoInBnX211bHRpeGFj dC9tZW1iZXJzIiwgInBnX211bHRpeGFjdC9tZW1iZXJzIik7CisJCX0KIAogCQlwcmVwX3N0YXR1 cygiU2V0dGluZyBuZXh0IG11bHRpeGFjdCBJRCBhbmQgb2Zmc2V0IGZvciBuZXcgY2x1c3RlciIp OwogCkBAIC03NjAsMTAgKzc3OSwxMCBAQCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAkJICog Y291bnRlcnMgaGVyZSBhbmQgdGhlIG9sZGVzdCBtdWx0aSBwcmVzZW50IG9uIHN5c3RlbS4KIAkJ ICovCiAJCWV4ZWNfcHJvZyhVVElMSVRZX0xPR19GSUxFLCBOVUxMLCB0cnVlLCB0cnVlLAotCQkJ CSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtTyAldSAtbSAldSwldSBcIiVzXCIiLAorCQkJCSAgIlwi JXMvcGdfcmVzZXR3YWxcIiAtTyAlbGx1IC1tICV1LCV1IFwiJXNcIiIsCiAJCQkJICBuZXdfY2x1 c3Rlci5iaW5kaXIsCi0JCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXhv ZmYsCi0JCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0bXVsdGksCisJCQkJ ICAodW5zaWduZWQgbG9uZyBsb25nKSBuZXdfbnh0bXhvZmYsCisJCQkJICBuZXdfbnh0bXVsdGks CiAJCQkJICBvbGRfY2x1c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfb2xkc3RNdWx0aSwKIAkJCQkg IG5ld19jbHVzdGVyLnBnZGF0YSk7CiAJCWNoZWNrX29rKCk7CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUu aAppbmRleCAwY2RkNjc1ZTRmLi45YjNkNjQ1YjA4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Vw Z3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgK QEAgLTExNCw2ICsxMTQsMTMgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxlc1tdOwogICovCiAj ZGVmaW5lIE1VTFRJWEFDVF9GT1JNQVRDSEFOR0VfQ0FUX1ZFUiAyMDEzMDEyMzEKIAorLyoKKyAq IFN3aWN0aCBmcm9tIDMyLWJpdCB0byA2NC1iaXQgZm9yIG11bHRpeGlkIG9mZnNldHMuCisgKgor ICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFMT0dfVkVSU0lPTl9O TyBvbiBjb21taXQuCisgKi8KKyNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5HRV9D QVRfVkVSIDIwMjQwOTA0MQorCiAvKgogICogbGFyZ2Ugb2JqZWN0IGNodW5rIHNpemUgYWRkZWQg dG8gcGdfY29udHJvbGRhdGEsCiAgKiBjb21taXQgNWY5M2MzNzgwNWU3NDg1NDg4NDgwOTE2YjQ1 ODVlMDk4ZDNjYzg4MwpAQCAtMjMwLDcgKzIzNyw3IEBAIHR5cGVkZWYgc3RydWN0CiAJdWludDMy CQljaGtwbnRfbnh0ZXBvY2g7CiAJdWludDMyCQljaGtwbnRfbnh0b2lkOwogCXVpbnQzMgkJY2hr cG50X254dG11bHRpOwotCXVpbnQzMgkJY2hrcG50X254dG14b2ZmOworCXVpbnQ2NAkJY2hrcG50 X254dG14b2ZmOwogCXVpbnQzMgkJY2hrcG50X29sZHN0TXVsdGk7CiAJdWludDMyCQljaGtwbnRf b2xkc3R4aWQ7CiAJdWludDMyCQlhbGlnbjsKQEAgLTUxNSwzICs1MjIsNyBAQCB0eXBlZGVmIHN0 cnVjdAogCUZJTEUJICAgKmZpbGU7CiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogfSBVcGdyYWRl VGFza1JlcG9ydDsKKworLyogbXVsdGl4YWN0X3Jld3JpdGUuYyAqLworCit2b2lkIGNvbnZlcnRf bXVsdGl4YWN0cyhNdWx0aVhhY3RJZCAqbmV3X254dG11bHRpLCBNdWx0aVhhY3RPZmZzZXQgKm5l d19ueHRteG9mZik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5jIGIv c3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi44N2FjZjE2NzMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdy YWRlL3NscnVfaW8uYwpAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAqCXNscnVfaW8uYworICoKKyAq CVJvdXRpbmVzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIFNMUlUgZmlsZXMgZHVyaW5nIHVwZ3Jh ZGUuCisgKgorICoJQ29weXJpZ2h0IChjKSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoJc3JjL2Jpbi9wZ191cGdyYWRlL3NscnVfaW8uYworICovCisKKyNpbmNs dWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgInBn X3VwZ3JhZGUuaCIKKyNpbmNsdWRlICJzbHJ1X2lvLmgiCisKKyNpbmNsdWRlICJjb21tb24vZmls ZV9wZXJtLmgiCisjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJwb3J0 L3BnX2lvdmVjLmgiCisKKy8qCisgKiBTdGF0ZSBmb3IgcmVhZGluZyBvciB3cml0aW5nIGFuIFNM UlUsIHdpdGggYSBvbmUgcGFnZSBidWZmZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNscnVTZWdT dGF0ZQoreworCWJvb2wJCXdyaXRpbmc7CisKKwljaGFyCSAgICpkaXI7CisJY2hhcgkgICAqZm47 CisJaW50CQkJZmQ7CisJaW50NjQJCXNlZ25vOworCXVpbnQ2NAkJcGFnZW5vOworCisJUEdBbGln bmVkQmxvY2sgYnVmOworfSBTbHJ1U2VnU3RhdGU7CisKK3N0YXRpYyB2b2lkIFNscnVGbHVzaChT bHJ1U2VnU3RhdGUgKnN0YXRlKTsKKworCitTbHJ1U2VnU3RhdGUgKgorT3BlblNscnVSZWFkKGNo YXIgKmRpcikKK3sKKwlTbHJ1U2VnU3RhdGUgKnN0YXRlOworCisJc3RhdGUgPSBwZ19tYWxsb2Mo c2l6ZW9mKFNscnVTZWdTdGF0ZSkpOworCXN0YXRlLT53cml0aW5nID0gZmFsc2U7CisJc3RhdGUt PnNlZ25vID0gLTE7CisJc3RhdGUtPnBhZ2VubyA9IDA7CisJc3RhdGUtPmRpciA9IHBzdHJkdXAo ZGlyKTsKKwlzdGF0ZS0+ZmQgPSAtMTsKKwlzdGF0ZS0+Zm4gPSBOVUxMOworCisJcmV0dXJuIHN0 YXRlOworfQorCit2b2lkCitDbG9zZVNscnVSZWFkKFNscnVTZWdTdGF0ZSAqc3RhdGUpCit7CisJ QXNzZXJ0KCFzdGF0ZS0+d3JpdGluZyk7CisJY2xvc2Uoc3RhdGUtPmZkKTsKKwlwZ19mcmVlKHN0 YXRlKTsKK30KKworU2xydVNlZ1N0YXRlICoKK09wZW5TbHJ1V3JpdGUoY2hhciAqZGlyLCBpbnQ2 NCBzdGFydFBhZ2VubykKK3sKKwlTbHJ1U2VnU3RhdGUgKnN0YXRlOworCisJc3RhdGUgPSBwZ19t YWxsb2Moc2l6ZW9mKFNscnVTZWdTdGF0ZSkpOworCXN0YXRlLT53cml0aW5nID0gdHJ1ZTsKKwlz dGF0ZS0+c2Vnbm8gPSAtMTsKKwlzdGF0ZS0+cGFnZW5vID0gMDsKKwlzdGF0ZS0+ZGlyID0gcHN0 cmR1cChkaXIpOworCXN0YXRlLT5mZCA9IC0xOworCXN0YXRlLT5mbiA9IE5VTEw7CisKKwlyZXR1 cm4gc3RhdGU7Cit9CisKK3ZvaWQKK0Nsb3NlU2xydVdyaXRlKFNscnVTZWdTdGF0ZSAqc3RhdGUp Cit7CisJQXNzZXJ0KHN0YXRlLT53cml0aW5nKTsKKwlTbHJ1Rmx1c2goc3RhdGUpOworCisJY2xv c2Uoc3RhdGUtPmZkKTsKKwlwZ19mcmVlKHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK1NscnVG bHVzaChTbHJ1U2VnU3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBpb3ZlYyBpb3ZlYyA9IHsKKwkJ Lmlvdl9iYXNlID0gJnN0YXRlLT5idWYsCisJCS5pb3ZfbGVuID0gQkxDS1NaLAorCX07CisJb2Zm X3QJCW9mZnNldDsKKworCWlmIChzdGF0ZS0+c2Vnbm8gPT0gLTEpCisJCXJldHVybjsKKworCW9m ZnNldCA9IChzdGF0ZS0+cGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCkgKiBCTENLU1o7 CisKKwlpZiAocGdfcHdyaXRldl93aXRoX3JldHJ5KHN0YXRlLT5mZCwgJmlvdmVjLCAxLCBvZmZz ZXQpIDwgMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBz dGF0ZS0+Zm4pOworfQorCisvKgorICogT3BlbiB0aGUgZ2l2ZW4gcGFnZSBmb3Igd3JpdGluZy4K KyAqCisgKiBOT1RFOiBUaGlzIHVzZXMgT19FWENMIHdoZW4gc3RlcHBpbmcgdG8gYSBuZXcgc2Vn bWVudCwgc28gdGhpcyBhc3N1bWVzIHRoYXQKKyAqIGVhY2ggc2VnbWVudCBpcyB3cml0dGVuIGlu IGZ1bGwgYmVmb3JlIG1vdmluZyBvbiB0byBuZXh0IG9uZS4gVGhpcworICogbGltaXRhdGlvbiB3 b3VsZCBiZSBlYXN5IHRvIGxpZnQgaWYgbmVlZGVkLCBidXQgaXQgZml0cyB0aGUgdXNhZ2UgcGF0 dGVybgorICogb2YgY3VycmVudCBjYWxsZXJzLgorICovCitjaGFyICoKK1NscnVXcml0ZVN3aXRj aFBhZ2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdWludDY0IHBhZ2VubykKK3sKKwlpbnQ2NAkJc2Vn bm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworCW9mZl90CQlvZmZzZXQ7CisK KwlpZiAoc3RhdGUtPnNlZ25vICE9IC0xICYmIHBhZ2VubyA9PSBzdGF0ZS0+cGFnZW5vKQorCQly ZXR1cm4gc3RhdGUtPmJ1Zi5kYXRhOworCisJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BF Ul9TRUdNRU5UOworCW9mZnNldCA9IChwYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAq IEJMQ0tTWjsKKworCVNscnVGbHVzaChzdGF0ZSk7CisJbWVtc2V0KHN0YXRlLT5idWYuZGF0YSwg MCwgQkxDS1NaKTsKKworCWlmIChzZWdubyAhPSBzdGF0ZS0+c2Vnbm8pCisJeworCQlpZiAoc3Rh dGUtPnNlZ25vICE9IC0xKQorCQl7CisJCQljbG9zZShzdGF0ZS0+ZmQpOworCQkJc3RhdGUtPmZk ID0gLTE7CisJCQlwZ19mcmVlKHN0YXRlLT5mbik7CisJCQlzdGF0ZS0+Zm4gPSBOVUxMOworCQl9 CisKKwkJLyogQ3JlYXRlIHRoZSBzZWdtZW50ICovCisJCXN0YXRlLT5mbiA9IHBzcHJpbnRmKCIl cy8lMDRYIiwgc3RhdGUtPmRpciwgKHVuc2lnbmVkIGludCkgc2Vnbm8pOworCQlpZiAoKHN0YXRl LT5mZCA9IG9wZW4oc3RhdGUtPmZuLCBPX1JEV1IgfCBPX0NSRUFUIHwgT19FWENMIHwgUEdfQklO QVJZLAorCQkJCQkJCSAgcGdfZmlsZV9jcmVhdGVfbW9kZSkpIDwgMCkKKwkJeworCQkJcGdfZmF0 YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwkJfQor CQlzdGF0ZS0+c2Vnbm8gPSBzZWdubzsKKworCQlpZiAob2Zmc2V0ID4gMCkKKwkJeworCQkJaWYg KHBnX3B3cml0ZV96ZXJvcyhzdGF0ZS0+ZmQsIG9mZnNldCwgMCkgPCAwKQorCQkJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgc3RhdGUtPmZuKTsKKwkJfQorCX0K KworCXN0YXRlLT5wYWdlbm8gPSBwYWdlbm87CisJcmV0dXJuIHN0YXRlLT5idWYuZGF0YTsKK30K KworLyoKKyAqIE9wZW4gZ2l2ZW4gcGFnZSBmb3IgcmVhZGluZy4KKyAqCisgKiBSZWFkaW5nIGNh biBiZSBkb25lIGluIHJhbmRvbSBvcmRlci4KKyAqLworY2hhciAqCitTbHJ1UmVhZFN3aXRjaFBh Z2UoU2xydVNlZ1N0YXRlICpzdGF0ZSwgdWludDY0IHBhZ2VubykKK3sKKwlpbnQ2NAkJc2Vnbm87 CisKKwlpZiAoc3RhdGUtPnNlZ25vICE9IC0xICYmIHBhZ2VubyA9PSBzdGF0ZS0+cGFnZW5vKQor CQlyZXR1cm4gc3RhdGUtPmJ1Zi5kYXRhOworCisJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UOworCisJaWYgKHNlZ25vICE9IHN0YXRlLT5zZWdubykKKwl7CisJCWlmIChz dGF0ZS0+c2Vnbm8gIT0gLTEpCisJCXsKKwkJCWNsb3NlKHN0YXRlLT5mZCk7CisJCQlzdGF0ZS0+ ZmQgPSAtMTsKKwkJCXBnX2ZyZWUoc3RhdGUtPmZuKTsKKwkJCXN0YXRlLT5mbiA9IE5VTEw7CisJ CX0KKworCQkvKiBPcGVuIG5ldyBzZWdtZW50ICovCisJCXN0YXRlLT5mbiA9IHBzcHJpbnRmKCIl cy8lMDRYIiwgc3RhdGUtPmRpciwgKHVuc2lnbmVkIGludCkgc2Vnbm8pOworCQlpZiAoKHN0YXRl LT5mZCA9IG9wZW4oc3RhdGUtPmZuLCBPX1JET05MWSB8IFBHX0JJTkFSWSwgMCkpIDwgMCkKKwkJ eworCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIHN0YXRlLT5m bik7CisJCX0KKwkJc3RhdGUtPnNlZ25vID0gc2Vnbm87CisJfQorCisJeworCQlzdHJ1Y3QgaW92 ZWMgaW92ZWMgPSB7CisJCQkuaW92X2Jhc2UgPSAmc3RhdGUtPmJ1ZiwKKwkJCS5pb3ZfbGVuID0g QkxDS1NaLAorCQl9OworCQlvZmZfdAkJb2Zmc2V0OworCisJCW9mZnNldCA9IChwYWdlbm8gJSBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAqIEJMQ0tTWjsKKworCQlpZiAocGdfcHJlYWR2KHN0YXRl LT5mZCwgJmlvdmVjLCAxLCBvZmZzZXQpIDwgMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVh ZCBmaWxlIFwiJXNcIjogJW0iLCBzdGF0ZS0+Zm4pOworCisJCXN0YXRlLT5wYWdlbm8gPSBwYWdl bm87CisJfQorCisJcmV0dXJuIHN0YXRlLT5idWYuZGF0YTsKK30KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfdXBncmFkZS9zbHJ1X2lvLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUxYTljMDYzMTMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUvc2xydV9pby5oCkBAIC0wLDAgKzEsMjMgQEAK Ky8qCisgKglzbHJ1X2lvLmgKKyAqCisgKglDb3B5cmlnaHQgKGMpIDIwMTAtMjAyNCwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCXNyYy9iaW4vcGdfdXBncmFkZS9zbHJ1 X2lvLmgKKyAqLworCisvKiBYWFg6IGNvcGllZCBmcm9tIHNscnUuaCAqLworI2RlZmluZSBTTFJV X1BBR0VTX1BFUl9TRUdNRU5UCTMyCisKKy8qCisgKiBTb21lIGtpbmQgb2YgaXRlcmF0b3IgYXNz b2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciBTTFJVIHNlZ21lbnQuICBUaGUgaWRlYSBpcworICog dG8gc3BlY2lmeSB0aGUgc2VnbWVudCBhbmQgcGFnZSBudW1iZXIgYW5kIHRoZW4gbW92ZSB0aHJv dWdoIHRoZSBwYWdlcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2xydVNlZ1N0YXRlIFNscnVTZWdT dGF0ZTsKKworZXh0ZXJuIFNscnVTZWdTdGF0ZSAqT3BlblNscnVSZWFkKGNoYXIgKmRpcik7Citl eHRlcm4gdm9pZCBDbG9zZVNscnVSZWFkKFNscnVTZWdTdGF0ZSAqc3RhdGUpOworZXh0ZXJuIGNo YXIgKlNscnVSZWFkU3dpdGNoUGFnZShTbHJ1U2VnU3RhdGUgKnN0YXRlLCB1aW50NjQgcGFnZW5v KTsKKworZXh0ZXJuIFNscnVTZWdTdGF0ZSAqT3BlblNscnVXcml0ZShjaGFyICpkaXIsIGludDY0 IHN0YXJ0UGFnZW5vKTsKK2V4dGVybiB2b2lkIENsb3NlU2xydVdyaXRlKFNscnVTZWdTdGF0ZSAq c3RhdGUpOworZXh0ZXJuIGNoYXIgKlNscnVXcml0ZVN3aXRjaFBhZ2UoU2xydVNlZ1N0YXRlICpz dGF0ZSwgdWludDY0IHBhZ2Vubyk7Ci0tIAoyLjQzLjAKCg== --0000000000007f0165062cd8ca3f Content-Type: text/plain; charset="US-ASCII"; name="v13-0004-TEST-initdb-option-to-initialize-cluster-with-no.patch.txt" Content-Disposition: attachment; filename="v13-0004-TEST-initdb-option-to-initialize-cluster-with-no.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gt63 RnJvbSBiZTkwNmE5YzIxNjFlNjk3MmEzOTZhOWQyODNiYjc2Y2EwMjNhODA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA0IE1heSAyMDIyIDE1OjUzOjM2ICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTMg NC83XSBURVNUOiBpbml0ZGIgb3B0aW9uIHRvIGluaXRpYWxpemUgY2x1c3RlciB3aXRoCiBub24t c3RhbmRhcmQgeGlkL214aWQvbXhvZmYKClRvIGRhdGUgdGVzdGluZyBkYXRhYmFzZSBjbHVzdGVy IHdyYXBhcnVuZCB3YXMgbm90IGVhc3kgYXMgaW5pdGRiIGhhcyBhbHdheXMKaW5pdGVkIGl0IHdp dGggZGVmYXVsdCB4aWQvbXhpZC9teG9mZi4gVGhlIG9wdGlvbiB0byBzcGVjaWZ5IGFueSB2YWxp ZAp4aWQvbXhpZC9teG9mZiBhdCBjbHVzdGVyIHN0YXJ0dXAgd2lsbCBtYWtlIHRoZXNlIHRoaW5n cyBlYXNpZXIuCgpBdXRob3I6IE1heGltIE9ybG92IDxvcmxvdm1nQGdtYWlsLmNvbT4KQXV0aG9y OiBQYXZlbCBCb3Jpc292IDxwYXNoa2luLmVsZmVAZ21haWwuY29tPgpBdXRob3I6IFN2ZXRsYW5h IERlcmV2eWFua28gPHMuZGVyZXZ5YW5rb0Bwb3N0Z3Jlc3Byby5ydT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBQ0clM0RlemFhNHZxWWpK MTZ5b3hncnBhLSUzRGdYbmYwVnYzRXk5YmpHclJSRk4yWXlXRlElNDBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgIHwgIDIxICsrKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyB8ICA1MyArKysrKysrKysrKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgICAgICB8ICAxNSArKy0tCiBzcmMvYmFja2VuZC9i b290c3RyYXAvYm9vdHN0cmFwLmMgICAgICB8ICA1MCArKysrKysrKysrKy0KIHNyYy9iYWNrZW5k L21haW4vbWFpbi5jICAgICAgICAgICAgICAgIHwgICA2ICsrCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bvc3RtYXN0ZXIuYyAgICB8ICAxNCArKystCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgICAgICAgICAgICB8ICA1MyArKysrKysrKysrKy0KIHNyYy9iaW4vaW5pdGRiL2luaXRkYi5j ICAgICAgICAgICAgICAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iaW4v aW5pdGRiL3QvMDAxX2luaXRkYi5wbCAgICAgICAgIHwgIDYwICsrKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9j LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2NsYXNzLmggICAgICAgICB8ICAgMiArLQogMTMgZmlsZXMgY2hhbmdlZCwgMzgyIGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL2Nsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCAw ZDU1NmMwMGI4Li44OTUxNmU5ZjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCkBAIC04 MzQsNiArODM0LDcgQEAgQm9vdFN0cmFwQ0xPRyh2b2lkKQogewogCWludAkJCXNsb3RubzsKIAlM V0xvY2sJICAgKmxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhYYWN0Q3RsLCAwKTsKKwlpbnQ2 NAkJcGFnZW5vOwogCiAJTFdMb2NrQWNxdWlyZShsb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC04 NDQsNiArODQ1LDI2IEBAIEJvb3RTdHJhcENMT0codm9pZCkKIAlTaW1wbGVMcnVXcml0ZVBhZ2Uo WGFjdEN0bCwgc2xvdG5vKTsKIAlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtz bG90bm9dKTsKIAorCXBhZ2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKFRyYW5zYW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlpZiAocGFnZW5vICE9IDAp CisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soWGFjdEN0bCwg cGFnZW5vKTsKKworCQlpZiAobmV4dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFz ZShsb2NrKTsKKwkJCUxXTG9ja0FjcXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQls b2NrID0gbmV4dGxvY2s7CisJCX0KKworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBh Z2Ugb2YgdGhlIGNvbW1pdCBsb2cgKi8KKwkJc2xvdG5vID0gWmVyb0NMT0dQYWdlKHBhZ2Vubywg ZmFsc2UpOworCisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxy dVdyaXRlUGFnZShYYWN0Q3RsLCBzbG90bm8pOworCQlBc3NlcnQoIVhhY3RDdGwtPnNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IGQ2M2FlMTczMzAuLjcwYzlk MmY2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xODE1LDYg KzE4MTUsNyBAQCBCb290U3RyYXBNdWx0aVhhY3Qodm9pZCkKIHsKIAlpbnQJCQlzbG90bm87CiAJ TFdMb2NrCSAgICpsb2NrOworCWludDY0CQlwYWdlbm87CiAKIAlsb2NrID0gU2ltcGxlTHJ1R2V0 QmFua0xvY2soTXVsdGlYYWN0T2Zmc2V0Q3RsLCAwKTsKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExX X0VYQ0xVU0lWRSk7CkBAIC0xODI2LDYgKzE4MjcsMjYgQEAgQm9vdFN0cmFwTXVsdGlYYWN0KHZv aWQpCiAJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFjdE9mZnNldEN0bCwgc2xvdG5vKTsKIAlB c3NlcnQoIU11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2RpcnR5W3Nsb3Rub10pOwog CisJcGFnZW5vID0gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UoTXVsdGlYYWN0U3RhdGUtPm5leHRN WGFjdCk7CisJaWYgKHBhZ2VubyAhPSAwKQorCXsKKwkJTFdMb2NrICpuZXh0bG9jayA9IFNpbXBs ZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9mZnNldEN0bCwgcGFnZW5vKTsKKworCQlpZiAobmV4 dGxvY2sgIT0gbG9jaykKKwkJeworCQkJTFdMb2NrUmVsZWFzZShsb2NrKTsKKwkJCUxXTG9ja0Fj cXVpcmUobmV4dGxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCQlsb2NrID0gbmV4dGxvY2s7CisJCX0K KworCQkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIG9mZnNldHMgbG9n ICovCisJCXNsb3RubyA9IFplcm9NdWx0aVhhY3RPZmZzZXRQYWdlKHBhZ2VubywgZmFsc2UpOwor CisJCS8qIE1ha2Ugc3VyZSBpdCdzIHdyaXR0ZW4gb3V0ICovCisJCVNpbXBsZUxydVdyaXRlUGFn ZShNdWx0aVhhY3RPZmZzZXRDdGwsIHNsb3Rubyk7CisJCUFzc2VydCghTXVsdGlYYWN0T2Zmc2V0 Q3RsLT5zaGFyZWQtPnBhZ2VfZGlydHlbc2xvdG5vXSk7CisJfQorCiAJTFdMb2NrUmVsZWFzZShs b2NrKTsKIAogCWxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhNdWx0aVhhY3RNZW1iZXJDdGws IDApOwpAQCAtMTgzOCw3ICsxODU5LDM5IEBAIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKQogCVNp bXBsZUxydVdyaXRlUGFnZShNdWx0aVhhY3RNZW1iZXJDdGwsIHNsb3Rubyk7CiAJQXNzZXJ0KCFN dWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJlZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKIAorCXBhZ2Vu byA9IE1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0KTsKKwlp ZiAocGFnZW5vICE9IDApCisJeworCQlMV0xvY2sgKm5leHRsb2NrID0gU2ltcGxlTHJ1R2V0QmFu a0xvY2soTXVsdGlYYWN0TWVtYmVyQ3RsLCBwYWdlbm8pOworCisJCWlmIChuZXh0bG9jayAhPSBs b2NrKQorCQl7CisJCQlMV0xvY2tSZWxlYXNlKGxvY2spOworCQkJTFdMb2NrQWNxdWlyZShuZXh0 bG9jaywgTFdfRVhDTFVTSVZFKTsKKwkJCWxvY2sgPSBuZXh0bG9jazsKKwkJfQorCisJCS8qIENy ZWF0ZSBhbmQgemVybyB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgbWVtYmVycyBsb2cgKi8KKwkJc2xv dG5vID0gWmVyb011bHRpWGFjdE1lbWJlclBhZ2UocGFnZW5vLCBmYWxzZSk7CisKKwkJLyogTWFr ZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KKwkJU2ltcGxlTHJ1V3JpdGVQYWdlKE11bHRpWGFj dE1lbWJlckN0bCwgc2xvdG5vKTsKKwkJQXNzZXJ0KCFNdWx0aVhhY3RNZW1iZXJDdGwtPnNoYXJl ZC0+cGFnZV9kaXJ0eVtzbG90bm9dKTsKKwl9CisKIAlMV0xvY2tSZWxlYXNlKGxvY2spOworCisJ LyoKKwkgKiBJZiB3ZSdyZSBzdGFydGluZyBub3QgZnJvbSB6ZXJvIG9mZnNldCwgaW5pdGlsaXpl IGR1bW15IG11bHRpeGFjdCB0bworCSAqIGV2YWRlIHRvbyBsb25nIGxvb3AgaW4gUGVyZm9ybU1l bWJlcnNUcnVuY2F0aW9uKCkuCisJICovCisJaWYgKE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0 ID4gMCAmJiBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID4gMCkKKwl7CisJCVJlY29yZE5ld011 bHRpWGFjdChGaXJzdE11bHRpWGFjdElkLAorCQkJCQkJICAgTXVsdGlYYWN0U3RhdGUtPm5leHRP ZmZzZXQsIDAsIE5VTEwpOworCQlSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0U3RhdGUtPm5l eHRNWGFjdCwKKwkJCQkJCSAgIE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0LCAwLCBOVUxMKTsK Kwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0 cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCAxNTE1 MzYxOGZhLi4yMTg2NzVmYTYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK QEAgLTI3MCwxMiArMjcwLDE2IEBAIHZvaWQKIEJvb3RTdHJhcFNVQlRSQU5TKHZvaWQpCiB7CiAJ aW50CQkJc2xvdG5vOwotCUxXTG9jawkgICAqbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKFN1 YlRyYW5zQ3RsLCAwKTsKKwlMV0xvY2sJICAgKmxvY2s7CisJaW50NjQJCXBhZ2VubzsKKworCXBh Z2VubyA9IFRyYW5zYWN0aW9uSWRUb1BhZ2UoWGlkRnJvbUZ1bGxUcmFuc2FjdGlvbklkKFRyYW5z YW1WYXJpYWJsZXMtPm5leHRYaWQpKTsKKwlsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soU3Vi VHJhbnNDdGwsIHBhZ2Vubyk7CiAKIAlMV0xvY2tBY3F1aXJlKGxvY2ssIExXX0VYQ0xVU0lWRSk7 CiAKIAkvKiBDcmVhdGUgYW5kIHplcm8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIHN1YnRyYW5zIGxv ZyAqLwotCXNsb3RubyA9IFplcm9TVUJUUkFOU1BhZ2UoMCk7CisJc2xvdG5vID0gWmVyb1NVQlRS QU5TUGFnZShwYWdlbm8pOwogCiAJLyogTWFrZSBzdXJlIGl0J3Mgd3JpdHRlbiBvdXQgKi8KIAlT aW1wbGVMcnVXcml0ZVBhZ2UoU3ViVHJhbnNDdGwsIHNsb3Rubyk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nLmMKaW5kZXggYTgxM2EwOTBmYS4uOWY3OGEzZTM0YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2cuYwpAQCAtMTM2LDYgKzEzNiwxMCBAQCBpbnQJCQltYXhfc2xvdF93YWxfa2VlcF9z aXplX21iID0gLTE7CiBpbnQJCQl3YWxfZGVjb2RlX2J1ZmZlcl9zaXplID0gNTEyICogMTAyNDsK IGJvb2wJCXRyYWNrX3dhbF9pb190aW1pbmcgPSBmYWxzZTsKIAorVHJhbnNhY3Rpb25JZAkJc3Rh cnRfeGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworTXVsdGlYYWN0SWQJCQlzdGFydF9t eGlkID0gRmlyc3RNdWx0aVhhY3RJZDsKK011bHRpWGFjdE9mZnNldAkJc3RhcnRfbXhvZmYgPSAw OworCiAjaWZkZWYgV0FMX0RFQlVHCiBib29sCQlYTE9HX0RFQlVHID0gZmFsc2U7CiAjZW5kaWYK QEAgLTUwODAsMTMgKzUwODQsMTQgQEAgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9jaGVja3N1 bV92ZXJzaW9uKQogCWNoZWNrUG9pbnQuZnVsbFBhZ2VXcml0ZXMgPSBmdWxsUGFnZVdyaXRlczsK IAljaGVja1BvaW50LndhbF9sZXZlbCA9IHdhbF9sZXZlbDsKIAljaGVja1BvaW50Lm5leHRYaWQg PQotCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5z YWN0aW9uSWQpOworCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZCgwLCBNYXgoRmly c3ROb3JtYWxUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJc3RhcnRfeGlkKSk7CiAJY2hlY2tQ b2ludC5uZXh0T2lkID0gRmlyc3RHZW5ia2lPYmplY3RJZDsKLQljaGVja1BvaW50Lm5leHRNdWx0 aSA9IEZpcnN0TXVsdGlYYWN0SWQ7Ci0JY2hlY2tQb2ludC5uZXh0TXVsdGlPZmZzZXQgPSAxOwot CWNoZWNrUG9pbnQub2xkZXN0WGlkID0gRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkOworCWNoZWNr UG9pbnQubmV4dE11bHRpID0gTWF4KEZpcnN0TXVsdGlYYWN0SWQsIHN0YXJ0X214aWQpOworCWNo ZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gTWF4KDEsIHN0YXJ0X214b2ZmKTsKKwljaGVja1Bv aW50Lm9sZGVzdFhpZCA9IFhpZEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVja1BvaW50Lm5leHRY aWQpOwogCWNoZWNrUG9pbnQub2xkZXN0WGlkREIgPSBUZW1wbGF0ZTFEYk9pZDsKLQljaGVja1Bv aW50Lm9sZGVzdE11bHRpID0gRmlyc3RNdWx0aVhhY3RJZDsKKwljaGVja1BvaW50Lm9sZGVzdE11 bHRpID0gY2hlY2tQb2ludC5uZXh0TXVsdGk7CiAJY2hlY2tQb2ludC5vbGRlc3RNdWx0aURCID0g VGVtcGxhdGUxRGJPaWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RDb21taXRUc1hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogCWNoZWNrUG9pbnQubmV3ZXN0Q29tbWl0VHNYaWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAu YyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCAzNTlmNThhOGY5Li5i Njk3MTM4YjdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCkBAIC0yMTgsNyArMjE4LDcg QEAgQm9vdHN0cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19v bmx5KQogCWFyZ3YrKzsKIAlhcmdjLS07CiAKLQl3aGlsZSAoKGZsYWcgPSBnZXRvcHQoYXJnYywg YXJndiwgIkI6YzpkOkQ6RmtyOlg6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0 KGFyZ2MsIGFyZ3YsICJCOmM6ZDpEOkZrbTpvOnI6WDp4Oi06IikpICE9IC0xKQogCXsKIAkJc3dp dGNoIChmbGFnKQogCQl7CkBAIC0yODYsMTIgKzI4Niw2MCBAQCBCb290c3RyYXBNb2RlTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJCQljYXNlICdrJzoKIAkJ CQlib290c3RyYXBfZGF0YV9jaGVja3N1bV92ZXJzaW9uID0gUEdfREFUQV9DSEVDS1NVTV9WRVJT SU9OOwogCQkJCWJyZWFrOworCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAgICplbmRw dHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQob3B0YXJn LCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9 ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1ZhbGlkKHN0 YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQgaW5pdGlh bCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJ YnJlYWs7CisJCQljYXNlICdvJzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJ CQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214b2ZmID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRy LCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwg ZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0T2Zmc2V0SXNWYWxpZChzdGFydF9t eG9mZikpCisJCQkJCXsKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiaW52YWxpZCBpbml0aWFsIGRh dGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldCIpKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJ YnJlYWs7CiAJCQljYXNlICdyJzoKIAkJCQlzdHJsY3B5KE91dHB1dEZpbGVOYW1lLCBvcHRhcmcs IE1BWFBHUEFUSCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICdYJzoKIAkJCQlTZXRDb25maWdPcHRp b24oIndhbF9zZWdtZW50X3NpemUiLCBvcHRhcmcsIFBHQ19JTlRFUk5BTCwgUEdDX1NfRFlOQU1J Q19ERUZBVUxUKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ3gnOgorCQkJCXsKKwkJCQkJY2hhcgkg ICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlkID0gc3RydG91NjQo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5k cHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJhbnNhY3Rpb25JZElz VmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlk IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQgdmFsdWUiKSkpOworCQkJCQl9CisJCQkJfQor CQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVzIC0taGVs cFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbWFpbi9tYWluLmMgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpp bmRleCBlOGVmZmU1MDI0Li5mZjI1MmRmZmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9tYWlu L21haW4uYworKysgYi9zcmMvYmFja2VuZC9tYWluL21haW4uYwpAQCAtNDI2LDEyICs0MjYsMTgg QEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtRSAgICAgICAgICAg ICAgICAgZWNobyBzdGF0ZW1lbnQgYmVmb3JlIGV4ZWN1dGlvblxuIikpOwogCXByaW50ZihfKCIg IC1qICAgICAgICAgICAgICAgICBkbyBub3QgdXNlIG5ld2xpbmUgYXMgaW50ZXJhY3RpdmUgcXVl cnkgZGVsaW1pdGVyXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIgRklMRU5BTUUgICAgICAgIHNlbmQg c3Rkb3V0IGFuZCBzdGRlcnIgdG8gZ2l2ZW4gZmlsZVxuIikpOworCXByaW50ZihfKCIgIC1tIFNU QVJUX01YSUQgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxu IikpOworCXByaW50ZihfKCIgIC1vIFNUQVJUX01YT0ZGICAgICBzZXQgaW5pdGlhbCBkYXRhYmFz ZSBjbHVzdGVyIG11bHRpeGFjdCBvZmZzZXRcbiIpKTsKKwlwcmludGYoXygiICAteCBTVEFSVF9Y SUQgICAgICAgc2V0IGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWRcbiIpKTsKIAogCXByaW50 ZihfKCJcbk9wdGlvbnMgZm9yIGJvb3RzdHJhcHBpbmcgbW9kZTpcbiIpKTsKIAlwcmludGYoXygi ICAtLWJvb3QgICAgICAgICAgICAgc2VsZWN0cyBib290c3RyYXBwaW5nIG1vZGUgKG11c3QgYmUg Zmlyc3QgYXJndW1lbnQpXG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1jaGVjayAgICAgICAgICAgIHNl bGVjdHMgY2hlY2sgbW9kZSAobXVzdCBiZSBmaXJzdCBhcmd1bWVudClcbiIpKTsKIAlwcmludGYo XygiICBEQk5BTUUgICAgICAgICAgICAgZGF0YWJhc2UgbmFtZSAobWFuZGF0b3J5IGFyZ3VtZW50 IGluIGJvb3RzdHJhcHBpbmcgbW9kZSlcbiIpKTsKIAlwcmludGYoXygiICAtciBGSUxFTkFNRSAg ICAgICAgc2VuZCBzdGRvdXQgYW5kIHN0ZGVyciB0byBnaXZlbiBmaWxlXG4iKSk7CisJcHJpbnRm KF8oIiAgLW0gU1RBUlRfTVhJRCAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVs dGl4YWN0IGlkXG4iKSk7CisJcHJpbnRmKF8oIiAgLW8gU1RBUlRfTVhPRkYgICAgIHNldCBpbml0 aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIikpOworCXByaW50ZihfKCIg IC14IFNUQVJUX1hJRCAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZFxuIikp OwogCiAJcHJpbnRmKF8oIlxuUGxlYXNlIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBj b21wbGV0ZSBsaXN0IG9mIHJ1bi10aW1lXG4iCiAJCQkgImNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mg YW5kIGhvdyB0byBzZXQgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluXG4iCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGJiMjJiMTNhZGUuLjAyOGE3MzQ1MTcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC01ODUsNyArNTg1LDcgQEAgUG9zdG1hc3Rl ck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKiB0Y29wL3Bvc3RncmVzLmMgKHRoZSBv cHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aCB0aGUKIAkgKiBjb21tb24g aGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxlICgob3B0ID0gZ2V0 b3B0KGFyZ2MsIGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bE46T1BwOnI6UzpzVHQ6Vzot OiIpKSAhPSAtMSkKKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6 ZDpFZUZmOmg6aWprOmxtOk46T286UHA6cjpTOnNUdDpXOng6LToiKSkgIT0gLTEpCiAJewogCQlz d2l0Y2ggKG9wdCkKIAkJewpAQCAtNjk1LDEwICs2OTUsMTggQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlTZXRDb25maWdPcHRpb24oIm1heF9jb25uZWN0aW9u cyIsIG9wdGFyZywgUEdDX1BPU1RNQVNURVIsIFBHQ19TX0FSR1YpOwogCQkJCWJyZWFrOwogCisJ CQljYXNlICdtJzoKKwkJCQkvKiBvbmx5IHVzZWQgYnkgc2luZ2xlLXVzZXIgYmFja2VuZCAqLwor CQkJCWJyZWFrOworCiAJCQljYXNlICdPJzoKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5 c3RlbV90YWJsZV9tb2RzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdDX1NfQVJHVik7CiAJ CQkJYnJlYWs7CiAKKwkJCWNhc2UgJ28nOgorCQkJCS8qIG9ubHkgdXNlZCBieSBzaW5nbGUtdXNl ciBiYWNrZW5kICovCisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ1AnOgogCQkJCVNldENvbmZpZ09w dGlvbigiaWdub3JlX3N5c3RlbV9pbmRleGVzIiwgInRydWUiLCBQR0NfUE9TVE1BU1RFUiwgUEdD X1NfQVJHVik7CiAJCQkJYnJlYWs7CkBAIC03NDksNiArNzU3LDEwIEBAIFBvc3RtYXN0ZXJNYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJwb3N0X2F1dGhf ZGVsYXkiLCBvcHRhcmcsIFBHQ19QT1NUTUFTVEVSLCBQR0NfU19BUkdWKTsKIAkJCQlicmVhazsK IAorCQkJY2FzZSAneCc6CisJCQkJLyogb25seSB1c2VkIGJ5IHNpbmdsZS11c2VyIGJhY2tlbmQg Ki8KKwkJCQlicmVhazsKKwogCQkJZGVmYXVsdDoKIAkJCQl3cml0ZV9zdGRlcnIoIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKIAkJCQkJCQkgcHJvZ25hbWUpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDU2NTUzNDhhMmUuLjljMTcwZjQ5MDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKQEAgLTM3ODgsNyArMzc4OCw3IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSwgR3VjQ29udGV4dCBjdHgsCiAJICogcG9zdG1hc3Rlci9wb3N0bWFz dGVyLmMgKHRoZSBvcHRpb24gc2V0cyBzaG91bGQgbm90IGNvbmZsaWN0KSBhbmQgd2l0aAogCSAq IHRoZSBjb21tb24gaGVscCgpIGZ1bmN0aW9uIGluIG1haW4vbWFpbi5jLgogCSAqLwotCXdoaWxl ICgoZmxhZyA9IGdldG9wdChhcmdjLCBhcmd2LCAiQjpiQzpjOkQ6ZDpFZUZmOmg6aWprOmxOOm5P UHA6cjpTOnNUdDp2Olc6LToiKSkgIT0gLTEpCisJd2hpbGUgKChmbGFnID0gZ2V0b3B0KGFyZ2Ms IGFyZ3YsICJCOmJDOmM6RDpkOkVlRmY6aDppams6bG06TjpuT286UHA6cjpTOnNUdDp2Olc6eDot OiIpKSAhPSAtMSkKIAl7CiAJCXN3aXRjaCAoZmxhZykKIAkJewpAQCAtMzg5Myw2ICszODkzLDIz IEBAIHByb2Nlc3NfcG9zdGdyZXNfc3dpdGNoZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgR3Vj Q29udGV4dCBjdHgsCiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJzc2wiLCAidHJ1ZSIsIGN0eCwgZ3Vj c291cmNlKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSAnbSc6CisJCQkJeworCQkJCQljaGFyCSAg ICplbmRwdHI7CisKKwkJCQkJZXJybm8gPSAwOworCQkJCQlzdGFydF9teGlkID0gc3RydG91NjQo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5k cHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0TXVsdGlYYWN0SWRJc1Zh bGlkKHN0YXJ0X214aWQpKQorCQkJCQl7CisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2coImludmFsaWQg aW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZCIpKSk7CisJCQkJCX0KKwkJCQl9 CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ04nOgogCQkJCVNldENvbmZpZ09wdGlvbigibWF4X2Nv bm5lY3Rpb25zIiwgb3B0YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CkBAIC0zOTA1 LDYgKzM5MjIsMjMgQEAgcHJvY2Vzc19wb3N0Z3Jlc19zd2l0Y2hlcyhpbnQgYXJnYywgY2hhciAq YXJndltdLCBHdWNDb250ZXh0IGN0eCwKIAkJCQlTZXRDb25maWdPcHRpb24oImFsbG93X3N5c3Rl bV90YWJsZV9tb2RzIiwgInRydWUiLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJ CWNhc2UgJ28nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0g MDsKKwkJCQkJc3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJ CQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAw IHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJ CQkJeworCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5U QVhfRVJST1IpLAorCQkJCQkJCQkgZXJybXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1 c3RlciBtdWx0aXhhY3Qgb2Zmc2V0IikpKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwog CQkJY2FzZSAnUCc6CiAJCQkJU2V0Q29uZmlnT3B0aW9uKCJpZ25vcmVfc3lzdGVtX2luZGV4ZXMi LCAidHJ1ZSIsIGN0eCwgZ3Vjc291cmNlKTsKIAkJCQlicmVhazsKQEAgLTM5NTksNiArMzk5Mywy MyBAQCBwcm9jZXNzX3Bvc3RncmVzX3N3aXRjaGVzKGludCBhcmdjLCBjaGFyICphcmd2W10sIEd1 Y0NvbnRleHQgY3R4LAogCQkJCVNldENvbmZpZ09wdGlvbigicG9zdF9hdXRoX2RlbGF5Iiwgb3B0 YXJnLCBjdHgsIGd1Y3NvdXJjZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgJ3gnOgorCQkJCXsK KwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsKKwkJCQkJc3RhcnRfeGlk ID0gc3RydG91NjQob3B0YXJnLCAmZW5kcHRyLCAwKTsKKworCQkJCQlpZiAoZW5kcHRyID09IG9w dGFyZyB8fCAqZW5kcHRyICE9ICdcMCcgfHwgZXJybm8gIT0gMCB8fAorCQkJCQkJIVN0YXJ0VHJh bnNhY3Rpb25JZElzVmFsaWQoc3RhcnRfeGlkKSkKKwkJCQkJeworCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJy bXNnKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciB4aWQiKSkpOworCQkJCQl9CisJ CQkJfQorCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCWVycnMrKzsKIAkJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jIGIvc3JjL2Jpbi9pbml0ZGIvaW5p dGRiLmMKaW5kZXggNzU5NjcyYTliOS4uMTI1YmZiNjczNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9p bml0ZGIvaW5pdGRiLmMKKysrIGIvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMKQEAgLTE2OCw2ICsx NjgsOSBAQCBzdGF0aWMgYm9vbCBkYXRhX2NoZWNrc3VtcyA9IHRydWU7CiBzdGF0aWMgY2hhciAq eGxvZ19kaXIgPSBOVUxMOwogc3RhdGljIGludAl3YWxfc2VnbWVudF9zaXplX21iID0gKERFRkFV TFRfWExPR19TRUdfU0laRSkgLyAoMTAyNCAqIDEwMjQpOwogc3RhdGljIERhdGFEaXJTeW5jTWV0 aG9kIHN5bmNfbWV0aG9kID0gREFUQV9ESVJfU1lOQ19NRVRIT0RfRlNZTkM7CitzdGF0aWMgVHJh bnNhY3Rpb25JZCBzdGFydF94aWQgPSAwOworc3RhdGljIE11bHRpWGFjdElkIHN0YXJ0X214aWQg PSAwOworc3RhdGljIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZiA9IDA7CiAKIAogLyogaW50 ZXJuYWwgdmFycyAqLwpAQCAtMTU5Niw2ICsxNTk5LDExIEBAIGJvb3RzdHJhcF90ZW1wbGF0ZTEo dm9pZCkKIAlia2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlBPU1RHUkVTIiwK IAkJCQkJCQkgIGVzY2FwZV9xdW90ZXNfYmtpKHVzZXJuYW1lKSk7CiAKKwkvKiByZWxmcm96ZW54 aWQgbXVzdCBub3QgYmUgbGVzcyB0aGFuIEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCAqLworCXNw cmludGYoYnVmLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIE1heChzdGFydF94aWQsIDMp KTsKKwlia2lfbGluZXMgPSByZXBsYWNlX3Rva2VuKGJraV9saW5lcywgIlJFQ0VOVFhNSU4iLAor CQkJCQkJCSAgYnVmKTsKKwogCWJraV9saW5lcyA9IHJlcGxhY2VfdG9rZW4oYmtpX2xpbmVzLCAi RU5DT0RJTkciLAogCQkJCQkJCSAgZW5jb2RpbmdpZF90b19zdHJpbmcoZW5jb2RpbmdpZCkpOwog CkBAIC0xNjIxLDYgKzE2MjksOSBAQCBib290c3RyYXBfdGVtcGxhdGUxKHZvaWQpCiAKIAlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiIC0tYm9vdCAlcyAlcyIsIGJhY2tlbmRfZXhlYywg Ym9vdF9vcHRpb25zLCBleHRyYV9vcHRpb25zKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAi IC1YICVkIiwgd2FsX3NlZ21lbnRfc2l6ZV9tYiAqICgxMDI0ICogMTAyNCkpOworCWFwcGVuZFBR RXhwQnVmZmVyKCZjbWQsICIgLW0gJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X214 aWQpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZjbWQsICIgLW8gJWxsdSIsICh1bnNpZ25lZCBsb25n IGxvbmcpIHN0YXJ0X214b2ZmKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlcigmY21kLCAiIC14ICVsbHUi LCAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOwogCWlmIChkYXRhX2NoZWNrc3VtcykK IAkJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtayIpOwogCWlmIChkZWJ1ZykKQEAgLTI1NjIs MTIgKzI1NzMsMjAgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAg LWQsIC0tZGVidWcgICAgICAgICAgICAgICBnZW5lcmF0ZSBsb3RzIG9mIGRlYnVnZ2luZyBvdXRw dXRcbiIpKTsKIAlwcmludGYoXygiICAgICAgLS1kaXNjYXJkLWNhY2hlcyAgICAgIHNldCBkZWJ1 Z19kaXNjYXJkX2NhY2hlcz0xXG4iKSk7CiAJcHJpbnRmKF8oIiAgLUwgRElSRUNUT1JZICAgICAg ICAgICAgICB3aGVyZSB0byBmaW5kIHRoZSBpbnB1dCBmaWxlc1xuIikpOworCXByaW50ZihfKCIg IC1tLCAtLW11bHRpeGFjdC1pZD1TVEFSVF9NWElEXG4iCisJCQkgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFjdCBpZFxuIgor CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikp OwogCXByaW50ZihfKCIgIC1uLCAtLW5vLWNsZWFuICAgICAgICAgICAgZG8gbm90IGNsZWFuIHVw IGFmdGVyIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1OLCAtLW5vLXN5bmMgICAgICAgICAg ICAgZG8gbm90IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBzYWZlbHkgdG8gZGlza1xu IikpOwogCXByaW50ZihfKCIgICAgICAtLW5vLWluc3RydWN0aW9ucyAgICAgZG8gbm90IHByaW50 IGluc3RydWN0aW9ucyBmb3IgbmV4dCBzdGVwc1xuIikpOworCXByaW50ZihfKCIgIC1vLCAtLW11 bHRpeGFjdC1vZmZzZXQ9U1RBUlRfTVhPRkZcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldFxuIgor CQkJICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4IHZhbHVlIGlzIDJeNjItMVxuIikp OwogCXByaW50ZihfKCIgIC1zLCAtLXNob3cgICAgICAgICAgICAgICAgc2hvdyBpbnRlcm5hbCBz ZXR0aW5ncywgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgICAgIC0tc3luYy1tZXRob2Q9 TUVUSE9EICBzZXQgbWV0aG9kIGZvciBzeW5jaW5nIGZpbGVzIHRvIGRpc2tcbiIpKTsKIAlwcmlu dGYoXygiICAtUywgLS1zeW5jLW9ubHkgICAgICAgICAgIG9ubHkgc3luYyBkYXRhYmFzZSBmaWxl cyB0byBkaXNrLCB0aGVuIGV4aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS14aWQ9U1RBUlRf WElEICAgICAgIHNldCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkXG4iCisJCQkgIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXggdmFsdWUgaXMgMl42Mi0xXG4iKSk7CiAJcHJpbnRm KF8oIlxuT3RoZXIgb3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAg ICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlw cmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwLCB0aGVu IGV4aXRcbiIpKTsKQEAgLTMxMDIsNiArMzEyMSwxOCBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0 b3J5KHZvaWQpCiAJLyogTm93IGNyZWF0ZSBhbGwgdGhlIHRleHQgY29uZmlnIGZpbGVzICovCiAJ c2V0dXBfY29uZmlnKCk7CiAKKwlpZiAoc3RhcnRfbXhpZCAhPSAwKQorCQlwcmludGYoXygic2Vs ZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IGlkIC4uLiAlbGx1XG4iKSwKKwkJCQkgKHVuc2lnbmVk IGxvbmcgbG9uZykgc3RhcnRfbXhpZCk7CisKKwlpZiAoc3RhcnRfbXhvZmYgIT0gMCkKKwkJcHJp bnRmKF8oInNlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBvZmZzZXQgLi4uICVsbHVcbiIpLAor CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF9teG9mZik7CisKKwlpZiAoc3RhcnRfeGlk ICE9IDApCisJCXByaW50ZihfKCJzZWxlY3RpbmcgaW5pdGlhbCB4aWQgLi4uICVsbHVcbiIpLAor CQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBzdGFydF94aWQpOworCiAJLyogQm9vdHN0cmFwIHRl bXBsYXRlMSAqLwogCWJvb3RzdHJhcF90ZW1wbGF0ZTEoKTsKIApAQCAtMzExOCw4ICszMTQ5LDEy IEBAIGluaXRpYWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAlmZmx1c2goc3Rkb3V0KTsKIAog CWluaXRQUUV4cEJ1ZmZlcigmY21kKTsKLQlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wi ICVzICVzIHRlbXBsYXRlMSA+JXMiLAotCQkJCQkgIGJhY2tlbmRfZXhlYywgYmFja2VuZF9vcHRp b25zLCBleHRyYV9vcHRpb25zLCBERVZOVUxMKTsKKwlwcmludGZQUUV4cEJ1ZmZlcigmY21kLCAi XCIlc1wiICVzICVzIiwKKwkJCQkJICBiYWNrZW5kX2V4ZWMsIGJhY2tlbmRfb3B0aW9ucywgZXh0 cmFfb3B0aW9ucyk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAtbSAlbGx1IiwgKHVuc2ln bmVkIGxvbmcgbG9uZykgc3RhcnRfbXhpZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiAt byAlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnRfbXhvZmYpOworCWFwcGVuZFBRRXhw QnVmZmVyKCZjbWQsICIgLXggJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0X3hpZCk7 CisJYXBwZW5kUFFFeHBCdWZmZXIoJmNtZCwgIiB0ZW1wbGF0ZTEgPiVzIiwgREVWTlVMTCk7CiAK IAlQR19DTURfT1BFTihjbWQuZGF0YSk7CiAKQEAgLTMyMDYsNiArMzI0MSw5IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJeyJpY3UtcnVsZXMiLCByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgMTh9LAogCQl7InN5bmMtbWV0aG9kIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDE5 fSwKIAkJeyJuby1kYXRhLWNoZWNrc3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAyMH0sCisJCXsi eGlkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4J30sCisJCXsibXVsdGl4YWN0LWlkIiwg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdtJ30sCisJCXsibXVsdGl4YWN0LW9mZnNldCIsIHJl cXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbyd9LAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9Owog CkBAIC0zMjQ3LDcgKzMyODUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkv KiBwcm9jZXNzIGNvbW1hbmQtbGluZSBvcHRpb25zICovCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRf bG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm5Oc1NUOlU6V1g6IiwKKwl3aGlsZSAoKGMg PSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiQTpjOmREOkU6Z2tMOm06bk5vOnNTVDpVOld4Olg6 IiwKIAkJCQkJCQlsb25nX29wdGlvbnMsICZvcHRpb25faW5kZXgpKSAhPSAtMSkKIAl7CiAJCXN3 aXRjaCAoYykKQEAgLTMzMDUsNiArMzM0MywzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJCQkJZGVidWcgPSB0cnVlOwogCQkJCXByaW50ZihfKCJSdW5uaW5nIGluIGRlYnVnIG1v ZGUuXG4iKSk7CiAJCQkJYnJlYWs7CisJCQljYXNlICdtJzoKKwkJCQl7CisJCQkJCWNoYXIJICAg KmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJCXN0YXJ0X214aWQgPSBzdHJ0b3U2NChv cHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRw dHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RJZElzVmFs aWQoc3RhcnRfbXhpZCkpCisJCQkJCXsKKwkJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBpbml0 aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlkIik7CisJCQkJCQlleGl0KDEpOworCQkJ CQl9CisJCQkJCWVsc2UgaWYgKHN0YXJ0X214aWQgPCAxKSAvKiBGaXJzdE11bHRpWGFjdElkICov CisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBXZSBhdm9pZCBteGlkIHRvIGJlIHNpbGVudGx5 IHNldCB0bworCQkJCQkJICogRmlyc3RNdWx0aVhhY3RJZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhh cm0uCisJCQkJCQkgKi8KKwkJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl4YWN0IGlkIHNob3VsZCBi ZSBncmVhdGVyIHRoYW4gMCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQli cmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCW5vY2xlYW4gPSB0cnVlOwogCQkJCXByaW50ZihfKCJS dW5uaW5nIGluIG5vLWNsZWFuIG1vZGUuICBNaXN0YWtlcyB3aWxsIG5vdCBiZSBjbGVhbmVkIHVw LlxuIikpOwpAQCAtMzMxMiw2ICszMzc0LDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJCWNhc2UgJ04nOgogCQkJCWRvX3N5bmMgPSBmYWxzZTsKIAkJCQlicmVhazsKKwkJCWNh c2UgJ28nOgorCQkJCXsKKwkJCQkJY2hhcgkgICAqZW5kcHRyOworCisJCQkJCWVycm5vID0gMDsK KwkJCQkJc3RhcnRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZlbmRwdHIsIDApOworCisJCQkJ CWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8fCBlcnJubyAhPSAwIHx8 CisJCQkJCQkhU3RhcnRNdWx0aVhhY3RPZmZzZXRJc1ZhbGlkKHN0YXJ0X214b2ZmKSkKKwkJCQkJ eworCQkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGluaXRpYWwgZGF0YWJhc2UgY2x1c3RlciBt dWx0aXhhY3Qgb2Zmc2V0Iik7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJfQorCQkJCWJy ZWFrOwogCQkJY2FzZSAnUyc6CiAJCQkJc3luY19vbmx5ID0gdHJ1ZTsKIAkJCQlicmVhazsKQEAg LTM0MDAsNiArMzQ3NywzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNl IDIwOgogCQkJCWRhdGFfY2hlY2tzdW1zID0gZmFsc2U7CiAJCQkJYnJlYWs7CisJCQljYXNlICd4 JzoKKwkJCQl7CisJCQkJCWNoYXIJICAgKmVuZHB0cjsKKworCQkJCQllcnJubyA9IDA7CisJCQkJ CXN0YXJ0X3hpZCA9IHN0cnRvdTY0KG9wdGFyZywgJmVuZHB0ciwgMCk7CisKKwkJCQkJaWYgKGVu ZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVycm5vICE9IDAgfHwKKwkJCQkJ CSFTdGFydFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0YXJ0X3hpZCkpCisJCQkJCXsKKwkJCQkJCXBn X2xvZ19lcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhp ZCIpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdGFydF94aWQgPCAz KSAvKiBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQgKi8KKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJ CSAqIFdlIGF2b2lkIHhpZCB0byBiZSBzaWxlbnRseSBzZXQgdG8KKwkJCQkJCSAqIEZpcnN0Tm9y bWFsVHJhbnNhY3Rpb25JZCwgdGhvdWdoIGl0IGRvZXMgbm90IGhhcm0uCisJCQkJCQkgKi8KKwkJ CQkJCXBnX2xvZ19lcnJvcigieGlkIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMiIpOworCQkJCQkJ ZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyog Z2V0b3B0X2xvbmcgYWxyZWFkeSBlbWl0dGVkIGEgY29tcGxhaW50ICovCiAJCQkJcGdfbG9nX2Vy cm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2du YW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbCBiL3NyYy9i aW4vaW5pdGRiL3QvMDAxX2luaXRkYi5wbAppbmRleCAwMWNjNGExNjAyLi44YjAxN2ViOTA3IDEw MDY0NAotLS0gYS9zcmMvYmluL2luaXRkYi90LzAwMV9pbml0ZGIucGwKKysrIGIvc3JjL2Jpbi9p bml0ZGIvdC8wMDFfaW5pdGRiLnBsCkBAIC0zMjksNCArMzI5LDY0IEBAIGNvbW1hbmRfZmFpbHMo CiAJWyAncGdfY2hlY2tzdW1zJywgJy0tcGdkYXRhJyA9PiAkZGF0YWRpcl9ub2NoZWNrc3VtcyBd LAogCSJwZ19jaGVja3N1bXMgZmFpbHMgd2l0aCBkYXRhIGNoZWNrc3VtIGRpc2FibGVkIik7CiAK KyMgU2V0IG5vbi1zdGFuZGFyZCBpbml0aWFsIG14aWQvbXhvZmYveGlkLgorY29tbWFuZF9mYWls c19saWtlKAorCVsgJ2luaXRkYicsICctbScsICdzZXZlbicsICRkYXRhZGlyIF0sCisJcXIvaW5p dGRiOiBlcnJvcjogaW52YWxpZCBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgbXVsdGl4YWN0IGlk LywKKwknZmFpbHMgZm9yIGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIG11bHRpeGFj dCBpZCcpOworY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ2luaXRkYicsICctbycsICdzZXZlbics ICRkYXRhZGlyIF0sCisJcXIvaW5pdGRiOiBlcnJvcjogaW52YWxpZCBpbml0aWFsIGRhdGFiYXNl IGNsdXN0ZXIgbXVsdGl4YWN0IG9mZnNldC8sCisJJ2ZhaWxzIGZvciBpbnZhbGlkIGluaXRpYWwg ZGF0YWJhc2UgY2x1c3RlciBtdWx0aXhhY3Qgb2Zmc2V0Jyk7Citjb21tYW5kX2ZhaWxzX2xpa2Uo CisJWyAnaW5pdGRiJywgJy14JywgJ3NldmVuJywgJGRhdGFkaXIgXSwKKwlxci9pbml0ZGI6IGVy cm9yOiBpbnZhbGlkIHZhbHVlIGZvciBpbml0aWFsIGRhdGFiYXNlIGNsdXN0ZXIgeGlkLywKKwkn ZmFpbHMgZm9yIGludmFsaWQgaW5pdGlhbCBkYXRhYmFzZSBjbHVzdGVyIHhpZCcpOworCitjb21t YW5kX2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy1tJywgJzY1NTM1JywgIiR0ZW1wZGlyL2Rh dGEtbTY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBpZCAu Li4gNjU1MzUvXSwKKwlbXSwKKwknc2VsZWN0aW5nIGluaXRpYWwgbXVsdGl4YWN0IGlkJyk7Citj b21tYW5kX2NoZWNrc19hbGwoCisJWyAnaW5pdGRiJywgJy1vJywgJzY1NTM1JywgIiR0ZW1wZGly L2RhdGEtbzY1NTM1IiBdLAorCTAsCisJW3FyL3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBv ZmZzZXQgLi4uIDY1NTM1L10sCisJW10sCisJJ3NlbGVjdGluZyBpbml0aWFsIG11bHRpeGFjdCBv ZmZzZXQnKTsKK2NvbW1hbmRfY2hlY2tzX2FsbCgKKwlbICdpbml0ZGInLCAnLXgnLCAnNjU1MzUn LCAiJHRlbXBkaXIvZGF0YS14NjU1MzUiIF0sCisJMCwKKwlbcXIvc2VsZWN0aW5nIGluaXRpYWwg eGlkIC4uLiA2NTUzNS9dLAorCVtdLAorCSdzZWxlY3RpbmcgaW5pdGlhbCB4aWQnKTsKKworIyBT ZXR1cCBuZXcgY2x1c3RlciB3aXRoIGdpdmVuIG14aWQvbXhvZmYveGlkLgorbXkgJG5vZGU7Citt eSAkcmVzdWx0OworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygndGVz dC1teGlkJyk7Ciskbm9kZS0+aW5pdChleHRyYSA9PiBbJy1tJywgJzE2Nzc3MjE1J10pOyAjIDB4 RkZGRkZGCiskbm9kZS0+c3RhcnQ7CiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIG5leHRfbXVsdGl4YWN0X2lkIEZST00gcGdfY29udHJvbF9jaGVja3BvaW50 KCk7Iik7CitvaygkcmVzdWx0ID49IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVu IG14aWQnKTsKKyRub2RlLT5zdG9wOworCiskbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygndGVzdC1teG9mZicpOworJG5vZGUtPmluaXQoZXh0cmEgPT4gWyctbycsICcxNjc3 NzIxNSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0YXJ0OworJHJlc3VsdCA9ICRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBuZXh0X211bHRpX29mZnNldCBGUk9NIHBnX2NvbnRy b2xfY2hlY2twb2ludCgpOyIpOworb2soJHJlc3VsdCA+PSAxNjc3NzIxNSwgJ3NldHVwIGNsdXN0 ZXIgd2l0aCBnaXZlbiBteG9mZicpOworJG5vZGUtPnN0b3A7CisKKyRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0ZXN0LXhpZCcpOworJG5vZGUtPmluaXQoZXh0cmEgPT4g WycteCcsICcxNjc3NzIxNSddKTsgIyAweEZGRkZGRgorJG5vZGUtPnN0YXJ0OworJHJlc3VsdCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCB0eGlkX2N1cnJlbnQoKTsiKTsK K29rKCRyZXN1bHQgPj0gMTY3NzcyMTUsICdzZXR1cCBjbHVzdGVyIHdpdGggZ2l2ZW4geGlkIC0g Y2hlY2sgMScpOworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBvbGRlc3RfeGlkIEZST00gcGdfY29udHJvbF9jaGVja3BvaW50KCk7Iik7CitvaygkcmVzdWx0 ID49IDE2Nzc3MjE1LCAnc2V0dXAgY2x1c3RlciB3aXRoIGdpdmVuIHhpZCAtIGNoZWNrIDInKTsK KyRub2RlLT5zdG9wOworCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IDQ0MTFjMTQ2 OGEuLjhlYjM0ODQ2ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtOTQsNiArOTQsOSBAQCB0eXBlZGVmIGVu dW0gUmVjb3ZlcnlTdGF0ZQogfSBSZWNvdmVyeVN0YXRlOwogCiBleHRlcm4gUEdETExJTVBPUlQg aW50IHdhbF9sZXZlbDsKK2V4dGVybiBQR0RMTElNUE9SVCBUcmFuc2FjdGlvbklkIHN0YXJ0X3hp ZDsKK2V4dGVybiBQR0RMTElNUE9SVCBNdWx0aVhhY3RJZCBzdGFydF9teGlkOworZXh0ZXJuIFBH RExMSU1QT1JUIE11bHRpWGFjdE9mZnNldCBzdGFydF9teG9mZjsKIAogLyogSXMgV0FMIGFyY2hp dmluZyBlbmFibGVkIChhbHdheXMgb3Igb25seSB3aGlsZSBzZXJ2ZXIgaXMgcnVubmluZyBub3Jt YWxseSk/ICovCiAjZGVmaW5lIFhMb2dBcmNoaXZpbmdBY3RpdmUoKSBcCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jLmggYi9zcmMvaW5jbHVkZS9jLmgKaW5kZXggMzE4MTk0Zjc4ZC4uNGYyYjU0 MzJlNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYy5oCisrKyBiL3NyYy9pbmNsdWRlL2MuaApA QCAtNjIyLDYgKzYyMiwxMCBAQCB0eXBlZGVmIHVpbnQ2NCBNdWx0aVhhY3RPZmZzZXQ7CiAKIHR5 cGVkZWYgdWludDMyIENvbW1hbmRJZDsKIAorI2RlZmluZSBTdGFydFRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkJCQkoKHhpZCkgPD0gMHhGRkZGRkZGRikKKyNkZWZpbmUgU3RhcnRNdWx0aVhhY3RJ ZElzVmFsaWQobXhpZCkJCQkoKG14aWQpIDw9IDB4RkZGRkZGRkYpCisjZGVmaW5lIFN0YXJ0TXVs dGlYYWN0T2Zmc2V0SXNWYWxpZChvZmZzZXQpCQkoKG9mZnNldCkgPD0gMHhGRkZGRkZGRikKKwog I2RlZmluZSBGaXJzdENvbW1hbmRJZAkoKENvbW1hbmRJZCkgMCkKICNkZWZpbmUgSW52YWxpZENv bW1hbmRJZAkofihDb21tYW5kSWQpMCkKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmluZGV4IGYwZDYx MmNhNDguLjVjNjMyOTBhNzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xh c3MuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKQEAgLTEyMyw3ICsxMjMs NyBAQCBDQVRBTE9HKHBnX2NsYXNzLDEyNTksUmVsYXRpb25SZWxhdGlvbklkKSBCS0lfQk9PVFNU UkFQIEJLSV9ST1dUWVBFX09JRCg4MyxSZWxhdAogCU9pZAkJCXJlbHJld3JpdGUgQktJX0RFRkFV TFQoMCkgQktJX0xPT0tVUF9PUFQocGdfY2xhc3MpOwogCiAJLyogYWxsIFhpZHMgPCB0aGlzIGFy ZSBmcm96ZW4gaW4gdGhpcyByZWwgKi8KLQlUcmFuc2FjdGlvbklkIHJlbGZyb3plbnhpZCBCS0lf REVGQVVMVCgzKTsJLyogRmlyc3ROb3JtYWxUcmFuc2FjdGlvbklkICovCisJVHJhbnNhY3Rpb25J ZCByZWxmcm96ZW54aWQgQktJX0RFRkFVTFQoUkVDRU5UWE1JTik7CS8qIEZpcnN0Tm9ybWFsVHJh bnNhY3Rpb25JZCAqLwogCiAJLyogYWxsIG11bHRpeGFjdHMgaW4gdGhpcyByZWwgYXJlID49IHRo aXM7IGl0IGlzIHJlYWxseSBhIE11bHRpWGFjdElkICovCiAJVHJhbnNhY3Rpb25JZCByZWxtaW5t eGlkIEJLSV9ERUZBVUxUKDEpOwkvKiBGaXJzdE11bHRpWGFjdElkICovCi0tIAoyLjQzLjAKCg== --0000000000007f0165062cd8ca3f Content-Type: application/octet-stream; name="v13-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Disposition: attachment; filename="v13-0001-Use-64-bit-format-output-for-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gs00 RnJvbSBiYTM0NTUxMGY4ZTUyYzQ1MDRjMjM4Yjg1NTEyYmZlODY0YThhNmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNyBBdWcgMjAyNCAxNjozNToyMiArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDEvN10g VXNlIDY0LWJpdCBmb3JtYXQgb3V0cHV0IGZvciBtdWx0aXhhY3Qgb2Zmc2V0cwoKQXV0aG9yOiBN YXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL214YWN0ZGVzYy5jICAgfCAgOSArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL3hsb2dkZXNjLmMgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYyAgICB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8ICA1ICsrKy0tCiBzcmMvYmluL3BnX2Nv bnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMgICB8ICA0ICsrLS0KIHNyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYyAgICAgICAgIHwgIDggKysrLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAz MSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbXhhY3RkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRl c2MvbXhhY3RkZXNjLmMKaW5kZXggOGJkM2Q1YjYzYy4uYjc5MmU5ZDkzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL214YWN0ZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9ybWdyZGVzYy9teGFjdGRlc2MuYwpAQCAtNjUsOCArNjUsOCBAQCBtdWx0aXhhY3Rf ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCXhsX211bHRp eGFjdF9jcmVhdGUgKnhscmVjID0gKHhsX211bHRpeGFjdF9jcmVhdGUgKikgcmVjOwogCQlpbnQJ CQlpOwogCi0JCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXUgb2Zmc2V0ICV1IG5tZW1iZXJzICVk OiAiLCB4bHJlYy0+bWlkLAotCQkJCQkJIHhscmVjLT5tb2ZmLCB4bHJlYy0+bm1lbWJlcnMpOwor CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiV1IG9mZnNldCAlbGx1IG5tZW1iZXJzICVkOiAiLCB4 bHJlYy0+bWlkLAorCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVjLT5tb2ZmLCB4bHJl Yy0+bm1lbWJlcnMpOwogCQlmb3IgKGkgPSAwOyBpIDwgeGxyZWMtPm5tZW1iZXJzOyBpKyspCiAJ CQlvdXRfbWVtYmVyKGJ1ZiwgJnhscmVjLT5tZW1iZXJzW2ldKTsKIAl9CkBAIC03NCw5ICs3NCwx MCBAQCBtdWx0aXhhY3RfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJewogCQl4bF9tdWx0aXhhY3RfdHJ1bmNhdGUgKnhscmVjID0gKHhsX211bHRpeGFjdF90 cnVuY2F0ZSAqKSByZWM7CiAKLQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZzZXRzIFsldSwg JXUpLCBtZW1iZXJzIFsldSwgJXUpIiwKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJvZmZzZXRz IFsldSwgJXUpLCBtZW1iZXJzIFslbGx1LCAlbGx1KSIsCiAJCQkJCQkgeGxyZWMtPnN0YXJ0VHJ1 bmNPZmYsIHhscmVjLT5lbmRUcnVuY09mZiwKLQkJCQkJCSB4bHJlYy0+c3RhcnRUcnVuY01lbWIs IHhscmVjLT5lbmRUcnVuY01lbWIpOworCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIHhscmVj LT5zdGFydFRydW5jTWVtYiwKKwkJCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSB4bHJlYy0+ZW5k VHJ1bmNNZW1iKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdy ZGVzYy94bG9nZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMK aW5kZXggNTgwNDBmMjg2NS4uZTUyYTU2MjVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL3hsb2dkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNj L3hsb2dkZXNjLmMKQEAgLTY2LDcgKzY2LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJQ2hlY2tQb2ludCAqY2hlY2twb2ludCA9IChDaGVj a1BvaW50ICopIHJlYzsKIAogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInJlZG8gJVgvJVg7ICIK LQkJCQkJCSAidGxpICV1OyBwcmV2IHRsaSAldTsgZnB3ICVzOyB3YWxfbGV2ZWwgJXM7IHhpZCAl dToldTsgb2lkICV1OyBtdWx0aSAldTsgb2Zmc2V0ICV1OyAiCisJCQkJCQkgInRsaSAldTsgcHJl diB0bGkgJXU7IGZwdyAlczsgd2FsX2xldmVsICVzOyB4aWQgJXU6JXU7IG9pZCAldTsgbXVsdGkg JXU7IG9mZnNldCAlbGx1OyAiCiAJCQkJCQkgIm9sZGVzdCB4aWQgJXUgaW4gREIgJXU7IG9sZGVz dCBtdWx0aSAldSBpbiBEQiAldTsgIgogCQkJCQkJICJvbGRlc3QvbmV3ZXN0IGNvbW1pdCB0aW1l c3RhbXAgeGlkOiAldS8ldTsgIgogCQkJCQkJICJvbGRlc3QgcnVubmluZyB4aWQgJXU7ICVzIiwK QEAgLTc5LDcgKzc5LDcgQEAgeGxvZ19kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkJCQkJCSBYaWRGcm9tRnVsbFRyYW5zYWN0aW9uSWQoY2hlY2twb2ludC0+ bmV4dFhpZCksCiAJCQkJCQkgY2hlY2twb2ludC0+bmV4dE9pZCwKIAkJCQkJCSBjaGVja3BvaW50 LT5uZXh0TXVsdGksCi0JCQkJCQkgY2hlY2twb2ludC0+bmV4dE11bHRpT2Zmc2V0LAorCQkJCQkJ ICh1bnNpZ25lZCBsb25nIGxvbmcpIGNoZWNrcG9pbnQtPm5leHRNdWx0aU9mZnNldCwKIAkJCQkJ CSBjaGVja3BvaW50LT5vbGRlc3RYaWQsCiAJCQkJCQkgY2hlY2twb2ludC0+b2xkZXN0WGlkREIs CiAJCQkJCQkgY2hlY2twb2ludC0+b2xkZXN0TXVsdGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L211bHRpeGFjdC5jCmluZGV4IDI3Y2NkZjk1MDAuLjYyM2ZjOGJkYWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xMjY0LDcgKzEyNjQsOCBAQCBHZXROZXdNdWx0 aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCiAJTFdMb2Nr UmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAotCWRlYnVnX2Vsb2c0KERFQlVHMiwgIkdldE5l dzogcmV0dXJuaW5nICV1IG9mZnNldCAldSIsIHJlc3VsdCwgKm9mZnNldCk7CisJZGVidWdfZWxv ZzQoREVCVUcyLCAiR2V0TmV3OiByZXR1cm5pbmcgJXUgb2Zmc2V0ICVsbHUiLCByZXN1bHQsCisJ CQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgKm9mZnNldCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApA QCAtMjI5Myw4ICsyMjk0LDkgQEAgTXVsdGlYYWN0R2V0Q2hlY2twdE11bHRpKGJvb2wgaXNfc2h1 dGRvd24sCiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKIAogCWRlYnVnX2Vsb2c2 KERFQlVHMiwKLQkJCQkiTXVsdGlYYWN0OiBjaGVja3BvaW50IGlzIG5leHRNdWx0aSAldSwgbmV4 dE9mZnNldCAldSwgb2xkZXN0TXVsdGkgJXUgaW4gREIgJXUiLAotCQkJCSpuZXh0TXVsdGksICpu ZXh0TXVsdGlPZmZzZXQsICpvbGRlc3RNdWx0aSwgKm9sZGVzdE11bHRpREIpOworCQkJCSJNdWx0 aVhhY3Q6IGNoZWNrcG9pbnQgaXMgbmV4dE11bHRpICV1LCBuZXh0T2Zmc2V0ICVsbHUsIG9sZGVz dE11bHRpICV1IGluIERCICV1IiwKKwkJCQkqbmV4dE11bHRpLCAodW5zaWduZWQgbG9uZyBsb25n KSAqbmV4dE11bHRpT2Zmc2V0LCAqb2xkZXN0TXVsdGksCisJCQkJKm9sZGVzdE11bHRpREIpOwog fQogCiAvKgpAQCAtMjMyOCw4ICsyMzMwLDggQEAgdm9pZAogTXVsdGlYYWN0U2V0TmV4dE1YYWN0 KE11bHRpWGFjdElkIG5leHRNdWx0aSwKIAkJCQkJICBNdWx0aVhhY3RPZmZzZXQgbmV4dE11bHRp T2Zmc2V0KQogewotCWRlYnVnX2Vsb2c0KERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBuZXh0 IG11bHRpIHRvICV1IG9mZnNldCAldSIsCi0JCQkJbmV4dE11bHRpLCBuZXh0TXVsdGlPZmZzZXQp OworCWRlYnVnX2Vsb2c0KERFQlVHMiwgIk11bHRpWGFjdDogc2V0dGluZyBuZXh0IG11bHRpIHRv ICV1IG9mZnNldCAlbGx1IiwKKwkJCQluZXh0TXVsdGksICh1bnNpZ25lZCBsb25nIGxvbmcpIG5l eHRNdWx0aU9mZnNldCk7CiAJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19FWENM VVNJVkUpOwogCU11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3QgPSBuZXh0TXVsdGk7CiAJTXVsdGlY YWN0U3RhdGUtPm5leHRPZmZzZXQgPSBuZXh0TXVsdGlPZmZzZXQ7CkBAIC0yNTE5LDggKzI1MjEs OCBAQCBNdWx0aVhhY3RBZHZhbmNlTmV4dE1YYWN0KE11bHRpWGFjdElkIG1pbk11bHRpLAogCX0K IAlpZiAoTXVsdGlYYWN0T2Zmc2V0UHJlY2VkZXMoTXVsdGlYYWN0U3RhdGUtPm5leHRPZmZzZXQs IG1pbk11bHRpT2Zmc2V0KSkKIAl7Ci0JCWRlYnVnX2Vsb2czKERFQlVHMiwgIk11bHRpWGFjdDog c2V0dGluZyBuZXh0IG9mZnNldCB0byAldSIsCi0JCQkJCW1pbk11bHRpT2Zmc2V0KTsKKwkJZGVi dWdfZWxvZzMoREVCVUcyLCAiTXVsdGlYYWN0OiBzZXR0aW5nIG5leHQgb2Zmc2V0IHRvICVsbHUi LAorCQkJCQkodW5zaWduZWQgbG9uZyBsb25nKSBtaW5NdWx0aU9mZnNldCk7CiAJCU11bHRpWGFj dFN0YXRlLT5uZXh0T2Zmc2V0ID0gbWluTXVsdGlPZmZzZXQ7CiAJfQogCUxXTG9ja1JlbGVhc2Uo TXVsdGlYYWN0R2VuTG9jayk7CkBAIC0zMjExLDExICszMjEzLDEyIEBAIFRydW5jYXRlTXVsdGlY YWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11bHRpLCBPaWQgbmV3T2xkZXN0TXVsdGlEQikKIAog CWVsb2coREVCVUcxLCAicGVyZm9ybWluZyBtdWx0aXhhY3QgdHJ1bmNhdGlvbjogIgogCQkgIm9m ZnNldHMgWyV1LCAldSksIG9mZnNldHMgc2VnbWVudHMgWyVsbHgsICVsbHgpLCAiCi0JCSAibWVt YmVycyBbJXUsICV1KSwgbWVtYmVycyBzZWdtZW50cyBbJWxseCwgJWxseCkiLAorCQkgIm1lbWJl cnMgWyVsbHUsICVsbHUpLCBtZW1iZXJzIHNlZ21lbnRzIFslbGx4LCAlbGx4KSIsCiAJCSBvbGRl c3RNdWx0aSwgbmV3T2xkZXN0TXVsdGksCiAJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNdWx0aVhh Y3RJZFRvT2Zmc2V0U2VnbWVudChvbGRlc3RNdWx0aSksCiAJCSAodW5zaWduZWQgbG9uZyBsb25n KSBNdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChuZXdPbGRlc3RNdWx0aSksCi0JCSBvbGRlc3RP ZmZzZXQsIG5ld09sZGVzdE9mZnNldCwKKwkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG9sZGVzdE9m ZnNldCwKKwkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG5ld09sZGVzdE9mZnNldCwKIAkJICh1bnNp Z25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50KG9sZGVzdE9mZnNldCksCiAJ CSAodW5zaWduZWQgbG9uZyBsb25nKSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChuZXdPbGRlc3RP ZmZzZXQpKTsKIApAQCAtMzQ3MSwxMSArMzQ3NCwxMiBAQCBtdWx0aXhhY3RfcmVkbyhYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAogCQllbG9nKERFQlVHMSwgInJlcGxheWluZyBtdWx0aXhhY3Qg dHJ1bmNhdGlvbjogIgogCQkJICJvZmZzZXRzIFsldSwgJXUpLCBvZmZzZXRzIHNlZ21lbnRzIFsl bGx4LCAlbGx4KSwgIgotCQkJICJtZW1iZXJzIFsldSwgJXUpLCBtZW1iZXJzIHNlZ21lbnRzIFsl bGx4LCAlbGx4KSIsCisJCQkgIm1lbWJlcnMgWyVsbHUsICVsbHUpLCBtZW1iZXJzIHNlZ21lbnRz IFslbGx4LCAlbGx4KSIsCiAJCQkgeGxyZWMuc3RhcnRUcnVuY09mZiwgeGxyZWMuZW5kVHJ1bmNP ZmYsCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTXVsdGlYYWN0SWRUb09mZnNldFNlZ21lbnQo eGxyZWMuc3RhcnRUcnVuY09mZiksCiAJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgTXVsdGlYYWN0 SWRUb09mZnNldFNlZ21lbnQoeGxyZWMuZW5kVHJ1bmNPZmYpLAotCQkJIHhscmVjLnN0YXJ0VHJ1 bmNNZW1iLCB4bHJlYy5lbmRUcnVuY01lbWIsCisJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxy ZWMuc3RhcnRUcnVuY01lbWIsCisJCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgeGxyZWMuZW5kVHJ1 bmNNZW1iLAogCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIE1YT2Zmc2V0VG9NZW1iZXJTZWdtZW50 KHhscmVjLnN0YXJ0VHJ1bmNNZW1iKSwKIAkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBNWE9mZnNl dFRvTWVtYmVyU2VnbWVudCh4bHJlYy5lbmRUcnVuY01lbWIpKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBjZjJiMDA3ODA2Li5kNTQ2NGQ0MjZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAtODc2LDggKzg3 Niw5IEBAIEluaXRXYWxSZWNvdmVyeShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xGaWxlLCBib29s ICp3YXNTaHV0ZG93bl9wdHIsCiAJCQkJCQkJIFU2NEZyb21GdWxsVHJhbnNhY3Rpb25JZChjaGVj a1BvaW50Lm5leHRYaWQpLAogCQkJCQkJCSBjaGVja1BvaW50Lm5leHRPaWQpKSk7CiAJZXJlcG9y dChERUJVRzEsCi0JCQkoZXJybXNnX2ludGVybmFsKCJuZXh0IE11bHRpWGFjdElkOiAldTsgbmV4 dCBNdWx0aVhhY3RPZmZzZXQ6ICV1IiwKLQkJCQkJCQkgY2hlY2tQb2ludC5uZXh0TXVsdGksIGNo ZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0KSkpOworCQkJKGVycm1zZ19pbnRlcm5hbCgibmV4dCBN dWx0aVhhY3RJZDogJXU7IG5leHQgTXVsdGlYYWN0T2Zmc2V0OiAlbGx1IiwKKwkJCQkJCQkgY2hl Y2tQb2ludC5uZXh0TXVsdGksCisJCQkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGNoZWNrUG9p bnQubmV4dE11bHRpT2Zmc2V0KSkpOwogCWVyZXBvcnQoREVCVUcxLAogCQkJKGVycm1zZ19pbnRl cm5hbCgib2xkZXN0IHVuZnJvemVuIHRyYW5zYWN0aW9uIElEOiAldSwgaW4gZGF0YWJhc2UgJXUi LAogCQkJCQkJCSBjaGVja1BvaW50Lm9sZGVzdFhpZCwgY2hlY2tQb2ludC5vbGRlc3RYaWREQikp KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYyBi L3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYwppbmRleCA5M2EwNWQ4MGNh Li40M2I2NzI3NTcwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRy b2xkYXRhLmMKKysrIGIvc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jCkBA IC0yNTMsOCArMjUzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkgICBDb250 cm9sRmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVj a3BvaW50J3MgTmV4dE11bHRpWGFjdElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmlsZS0+Y2hl Y2tQb2ludENvcHkubmV4dE11bHRpKTsKLQlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBO ZXh0TXVsdGlPZmZzZXQ6ICAldVxuIiksCi0JCSAgIENvbnRyb2xGaWxlLT5jaGVja1BvaW50Q29w eS5uZXh0TXVsdGlPZmZzZXQpOworCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2ludCdzIE5leHRN dWx0aU9mZnNldDogICVsbHVcbiIpLAorCQkgICAodW5zaWduZWQgbG9uZyBsb25nKSBDb250cm9s RmlsZS0+Y2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0ZXN0 IGNoZWNrcG9pbnQncyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xGaWxl LT5jaGVja1BvaW50Q29weS5vbGRlc3RYaWQpOwogCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2lu dCdzIG9sZGVzdFhJRCdzIERCOiAgICV1XG4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVz ZXR3YWwvcGdfcmVzZXR3YWwuYyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpp bmRleCBlZDczNjA3YTQ2Li5mZmY0MDFlNDY5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5j CkBAIC03MzcsOCArNzM3LDggQEAgUHJpbnRDb250cm9sVmFsdWVzKGJvb2wgZ3Vlc3NlZCkKIAkJ ICAgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE9pZCk7CiAJcHJpbnRmKF8oIkxhdGVz dCBjaGVja3BvaW50J3MgTmV4dE11bHRpWGFjdElkOiAgJXVcbiIpLAogCQkgICBDb250cm9sRmls ZS5jaGVja1BvaW50Q29weS5uZXh0TXVsdGkpOwotCXByaW50ZihfKCJMYXRlc3QgY2hlY2twb2lu dCdzIE5leHRNdWx0aU9mZnNldDogICV1XG4iKSwKLQkJICAgQ29udHJvbEZpbGUuY2hlY2tQb2lu dENvcHkubmV4dE11bHRpT2Zmc2V0KTsKKwlwcmludGYoXygiTGF0ZXN0IGNoZWNrcG9pbnQncyBO ZXh0TXVsdGlPZmZzZXQ6ICAlbGx1XG4iKSwKKwkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgQ29u dHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11bHRpT2Zmc2V0KTsKIAlwcmludGYoXygiTGF0 ZXN0IGNoZWNrcG9pbnQncyBvbGRlc3RYSUQ6ICAgICAgICAldVxuIiksCiAJCSAgIENvbnRyb2xG aWxlLmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZCk7CiAJcHJpbnRmKF8oIkxhdGVzdCBjaGVja3Bv aW50J3Mgb2xkZXN0WElEJ3MgREI6ICAgJXVcbiIpLApAQCAtODA5LDggKzgwOSw4IEBAIFByaW50 TmV3Q29udHJvbFZhbHVlcyh2b2lkKQogCiAJaWYgKHNldF9teG9mZiAhPSAtMSkKIAl7Ci0JCXBy aW50ZihfKCJOZXh0TXVsdGlPZmZzZXQ6ICAgICAgICAgICAgICAgICAgICAgICV1XG4iKSwKLQkJ CSAgIENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm5leHRNdWx0aU9mZnNldCk7CisJCXByaW50 ZihfKCJOZXh0TXVsdGlPZmZzZXQ6ICAgICAgICAgICAgICAgICAgICAgICVsbHVcbiIpLAorCQkJ ICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHkubmV4dE11 bHRpT2Zmc2V0KTsKIAl9CiAKIAlpZiAoc2V0X29pZCAhPSAwKQotLSAKMi40My4wCgo= --0000000000007f0165062cd8ca3f Content-Type: application/octet-stream; name="v13-0002-Use-64-bit-multixact-offsets.patch" Content-Disposition: attachment; filename="v13-0002-Use-64-bit-multixact-offsets.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gsy1 RnJvbSBmMzQ5OTEwMmUyODkzZTRiMmUyNGQ0ODk3NWNiYmQ0OTM4NWUxOTBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8bS5vcmxvdkBwb3N0Z3Jlc3Byby5ydT4K RGF0ZTogV2VkLCA2IE1hciAyMDI0IDExOjExOjMzICswMzAwClN1YmplY3Q6IFtQQVRDSCB2MTMg Mi83XSBVc2UgNjQtYml0IG11bHRpeGFjdCBvZmZzZXRzLgoKQXV0aG9yOiBNYXhpbSBPcmxvdiA8 b3Jsb3ZtZ0BnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4 YWN0LmMgIHwgNTQxICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYyAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5jICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jICAgICAg IHwgICAyICstCiBzcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsICAgICAgfCAgIDIg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCAgICAgICAgICB8ICAgMyArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oIHwgMTE1ICsrKysrCiBzcmMvaW5j bHVkZS9jLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIDkgZmlsZXMgY2hhbmdl ZCwgMTU2IGluc2VydGlvbnMoKyksIDUxNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDYyM2ZjOGJkYWMuLmNkOWRiNTJlOTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC02OSw2ICs2OSw3IEBACiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKKyNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3NscnUu aCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFz ZS5oIgpAQCAtOTIsMTMwICs5MywxNCBAQAogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2lu dC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKLQotLyoKLSAqIERlZmluZXMgZm9y IE11bHRpWGFjdE9mZnNldCBwYWdlIHNpemVzLiAgQSBwYWdlIGlzIHRoZSBzYW1lIEJMQ0tTWiBh cyBpcwotICogdXNlZCBldmVyeXdoZXJlIGVsc2UgaW4gUG9zdGdyZXMuCi0gKgotICogTm90ZTog YmVjYXVzZSBNdWx0aVhhY3RPZmZzZXRzIGFyZSAzMiBiaXRzIGFuZCB3cmFwIGFyb3VuZCBhdCAw eEZGRkZGRkZGLAotICogTXVsdGlYYWN0IHBhZ2UgbnVtYmVyaW5nIGFsc28gd3JhcHMgYXJvdW5k IGF0Ci0gKiAweEZGRkZGRkZGL01VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFLCBhbmQgc2VnbWVu dCBudW1iZXJpbmcgYXQKLSAqIDB4RkZGRkZGRkYvTVVMVElYQUNUX09GRlNFVFNfUEVSX1BBR0Uv U0xSVV9QQUdFU19QRVJfU0VHTUVOVC4gIFdlIG5lZWQKLSAqIHRha2Ugbm8gZXhwbGljaXQgbm90 aWNlIG9mIHRoYXQgZmFjdCBpbiB0aGlzIG1vZHVsZSwgZXhjZXB0IHdoZW4gY29tcGFyaW5nCi0g KiBzZWdtZW50IGFuZCBwYWdlIG51bWJlcnMgaW4gVHJ1bmNhdGVNdWx0aVhhY3QgKHNlZQotICog TXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKS4KLSAqLwotCi0vKiBXZSBuZWVkIGZvdXIgYnl0 ZXMgcGVyIG9mZnNldCAqLwotI2RlZmluZSBNVUxUSVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSAoQkxD S1NaIC8gc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkpCi0KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU11 bHRpWGFjdElkVG9PZmZzZXRQYWdlKE11bHRpWGFjdElkIG11bHRpKQotewotCXJldHVybiBtdWx0 aSAvIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGludAot TXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KE11bHRpWGFjdElkIG11bHRpKQotewotCXJldHVybiBt dWx0aSAlIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGlu dDY0Ci1NdWx0aVhhY3RJZFRvT2Zmc2V0U2VnbWVudChNdWx0aVhhY3RJZCBtdWx0aSkKLXsKLQly ZXR1cm4gTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UobXVsdGkpIC8gU0xSVV9QQUdFU19QRVJfU0VH TUVOVDsKLX0KLQotLyoKLSAqIFRoZSBzaXR1YXRpb24gZm9yIG1lbWJlcnMgaXMgYSBiaXQgbW9y ZSBjb21wbGV4OiB3ZSBzdG9yZSBvbmUgYnl0ZSBvZgotICogYWRkaXRpb25hbCBmbGFnIGJpdHMg Zm9yIGVhY2ggVHJhbnNhY3Rpb25JZC4gIFRvIGRvIHRoaXMgd2l0aG91dCBnZXR0aW5nCi0gKiBp bnRvIGFsaWdubWVudCBpc3N1ZXMsIHdlIHN0b3JlIGZvdXIgYnl0ZXMgb2YgZmxhZ3MsIGFuZCB0 aGVuIHRoZQotICogY29ycmVzcG9uZGluZyA0IFhpZHMuICBFYWNoIHN1Y2ggNS13b3JkICgyMC1i eXRlKSBzZXQgd2UgY2FsbCBhICJncm91cCIsIGFuZAotICogYXJlIHN0b3JlZCBhcyBhIHdob2xl IGluIHBhZ2VzLiAgVGh1cywgd2l0aCA4a0IgQkxDS1NaLCB3ZSBrZWVwIDQwOSBncm91cHMKLSAq IHBlciBwYWdlLiAgVGhpcyB3YXN0ZXMgMTIgYnl0ZXMgcGVyIHBhZ2UsIGJ1dCB0aGF0J3MgT0sg LS0gc2ltcGxpY2l0eSAoYW5kCi0gKiBwZXJmb3JtYW5jZSkgdHJ1bXBzIHNwYWNlIGVmZmljaWVu Y3kgaGVyZS4KLSAqCi0gKiBOb3RlIHRoYXQgdGhlICJvZmZzZXQiIG1hY3JvcyB3b3JrIHdpdGgg Ynl0ZSBvZmZzZXQsIG5vdCBhcnJheSBpbmRleGVzLCBzbwotICogYXJpdGhtZXRpYyBtdXN0IGJl IGRvbmUgdXNpbmcgImNoYXIgKiIgcG9pbnRlcnMuCi0gKi8KLS8qIFdlIG5lZWQgZWlnaHQgYml0 cyBwZXIgeGFjdCwgc28gb25lIHhhY3QgZml0cyBpbiBhIGJ5dGUgKi8KLSNkZWZpbmUgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QJCQk4Ci0jZGVmaW5lIE1YQUNUX01FTUJFUl9GTEFHU19QRVJf QllURQkJCTEKLSNkZWZpbmUgTVhBQ1RfTUVNQkVSX1hBQ1RfQklUTUFTSwkoKDEgPDwgTVhBQ1Rf TUVNQkVSX0JJVFNfUEVSX1hBQ1QpIC0gMSkKLQotLyogaG93IG1hbnkgZnVsbCBieXRlcyBvZiBm bGFncyBhcmUgdGhlcmUgaW4gYSBncm91cD8gKi8KLSNkZWZpbmUgTVVMVElYQUNUX0ZMQUdCWVRF U19QRVJfR1JPVVAJCTQKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQ CVwKLQkoTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKiBNWEFDVF9NRU1CRVJfRkxBR1Nf UEVSX0JZVEUpCi0vKiBzaXplIGluIGJ5dGVzIG9mIGEgY29tcGxldGUgZ3JvdXAgKi8KLSNkZWZp bmUgTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUgXAotCShzaXplb2YoVHJhbnNhY3Rpb25JZCkg KiBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAgKyBNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCkKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAoQkxD S1NaIC8gTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkUpCi0jZGVmaW5lIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFCVwKLQkoTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRSAqIE1VTFRJ WEFDVF9NRU1CRVJTX1BFUl9NRU1CRVJHUk9VUCkKLQogLyoKLSAqIEJlY2F1c2UgdGhlIG51bWJl ciBvZiBpdGVtcyBwZXIgcGFnZSBpcyBub3QgYSBkaXZpc29yIG9mIHRoZSBsYXN0IGl0ZW0KLSAq IG51bWJlciAobWVtYmVyIDB4RkZGRkZGRkYpLCB0aGUgbGFzdCBzZWdtZW50IGRvZXMgbm90IHVz ZSB0aGUgbWF4aW11bSBudW1iZXIKLSAqIG9mIHBhZ2VzLCBhbmQgbW9yZW92ZXIgdGhlIGxhc3Qg dXNlZCBwYWdlIHRoZXJlaW4gZG9lcyBub3QgdXNlIHRoZSBzYW1lCi0gKiBudW1iZXIgb2YgaXRl bXMgYXMgcHJldmlvdXMgcGFnZXMuICAoQW5vdGhlciB3YXkgdG8gc2F5IGl0IGlzIHRoYXQgdGhl Ci0gKiAweEZGRkZGRkZGIG1lbWJlciBpcyBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUg bGFzdCBwYWdlLCBzbyB0aGUgcGFnZQotICogaGFzIHNvbWUgZW1wdHkgc3BhY2UgYWZ0ZXIgdGhh dCBpdGVtLikKLSAqCi0gKiBUaGlzIGNvbnN0YW50IGlzIHRoZSBudW1iZXIgb2YgbWVtYmVycyBp biB0aGUgbGFzdCBwYWdlIG9mIHRoZSBsYXN0IHNlZ21lbnQuCisgKiBNdWx0aXhhY3QgbWVtYmVy cyB3YXJuaW5nIHRocmVzaG9sZC4KKyAqCisgKiBJZiBkaWZmZXJlbmNlIGJldHR3ZWVuIG5leHRP ZmZzZXQgYW5kIG9sZGVzdE9mZnNldCBleGNlZWQgdGhpcyB2YWx1ZSwgd2UKKyAqIHRyaWdnZXIg YXV0b3ZhY3V1bWluIG9yZGVyIHRvIHJlbGVhc2UgdGhlIGRpc2sgc3BhY2UsIHJlZHVjZSB0YWJs ZSBibG9hdCBpZgorICogcG9zc2libGUuCiAgKi8KLSNkZWZpbmUgTUFYX01FTUJFUlNfSU5fTEFT VF9NRU1CRVJTX1BBR0UgXAotCQkoKHVpbnQzMikgKCgweEZGRkZGRkZGICUgTVVMVElYQUNUX01F TUJFUlNfUEVSX1BBR0UpICsgMSkpCi0KLS8qIHBhZ2UgaW4gd2hpY2ggYSBtZW1iZXIgaXMgdG8g YmUgZm91bmQgKi8KLXN0YXRpYyBpbmxpbmUgaW50NjQKLU1YT2Zmc2V0VG9NZW1iZXJQYWdlKE11 bHRpWGFjdE9mZnNldCBvZmZzZXQpCi17Ci0JcmV0dXJuIG9mZnNldCAvIE1VTFRJWEFDVF9NRU1C RVJTX1BFUl9QQUdFOwotfQotCi1zdGF0aWMgaW5saW5lIGludDY0Ci1NWE9mZnNldFRvTWVtYmVy U2VnbWVudChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQotewotCXJldHVybiBNWE9mZnNldFRvTWVt YmVyUGFnZShvZmZzZXQpIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKLX0KLQotLyogTG9jYXRp b24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBmbGFnIHdvcmQgZm9yIGEgZ2l2ZW4gbWVt YmVyICovCi1zdGF0aWMgaW5saW5lIGludAotTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KE11bHRpWGFj dE9mZnNldCBvZmZzZXQpCi17Ci0JTXVsdGlYYWN0T2Zmc2V0IGdyb3VwID0gb2Zmc2V0IC8gTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwotCWludAkJCWdyb3Vwb25wZyA9IGdyb3Vw ICUgTVVMVElYQUNUX01FTUJFUkdST1VQU19QRVJfUEFHRTsKLQlpbnQJCQlieXRlb2ZmID0gZ3Jv dXBvbnBnICogTVVMVElYQUNUX01FTUJFUkdST1VQX1NJWkU7Ci0KLQlyZXR1cm4gYnl0ZW9mZjsK LX0KLQotc3RhdGljIGlubGluZSBpbnQKLU1YT2Zmc2V0VG9GbGFnc0JpdFNoaWZ0KE11bHRpWGFj dE9mZnNldCBvZmZzZXQpCi17Ci0JaW50CQkJbWVtYmVyX2luX2dyb3VwID0gb2Zmc2V0ICUgTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOwotCWludAkJCWJzaGlmdCA9IG1lbWJlcl9p bl9ncm91cCAqIE1YQUNUX01FTUJFUl9CSVRTX1BFUl9YQUNUOwotCi0JcmV0dXJuIGJzaGlmdDsK LX0KLQotLyogTG9jYXRpb24gKGJ5dGUgb2Zmc2V0IHdpdGhpbiBwYWdlKSBvZiBUcmFuc2FjdGlv bklkIG9mIGdpdmVuIG1lbWJlciAqLwotc3RhdGljIGlubGluZSBpbnQKLU1YT2Zmc2V0VG9NZW1i ZXJPZmZzZXQoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCkKLXsKLQlpbnQJCQltZW1iZXJfaW5fZ3Jv dXAgPSBvZmZzZXQgJSBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVA7Ci0KLQlyZXR1 cm4gTVhPZmZzZXRUb0ZsYWdzT2Zmc2V0KG9mZnNldCkgKwotCQlNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCArCi0JCW1lbWJlcl9pbl9ncm91cCAqIHNpemVvZihUcmFuc2FjdGlvbklkKTsK LX0KLQotLyogTXVsdGl4YWN0IG1lbWJlcnMgd3JhcGFyb3VuZCB0aHJlc2hvbGRzLiAqLwotI2Rl ZmluZSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xECQkoTWF4TXVsdGlYYWN0T2Zmc2V0 IC8gMikKLSNkZWZpbmUgTVVMVElYQUNUX01FTUJFUl9EQU5HRVJfVEhSRVNIT0xECVwKLQkoTWF4 TXVsdGlYYWN0T2Zmc2V0IC0gTWF4TXVsdGlYYWN0T2Zmc2V0IC8gNCkKKyNkZWZpbmUgTVVMVElY QUNUX01FTUJFUl9BVVRPVkFDX1RIUkVTSE9MRAkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRikKIAog c3RhdGljIGlubGluZSBNdWx0aVhhY3RJZAogUHJldmlvdXNNdWx0aVhhY3RJZChNdWx0aVhhY3RJ ZCBtdWx0aSkKQEAgLTI2MCwxMSArMTQ1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgTXVsdGlYYWN0U3Rh dGVEYXRhCiAKIAkvKgogCSAqIE9sZGVzdCBtdWx0aXhhY3Qgb2Zmc2V0IHRoYXQgaXMgcG90ZW50 aWFsbHkgcmVmZXJlbmNlZCBieSBhIG11bHRpeGFjdAotCSAqIHJlZmVyZW5jZWQgYnkgYSByZWxh dGlvbi4gIFdlIGRvbid0IGFsd2F5cyBrbm93IHRoaXMgdmFsdWUsIHNvIHRoZXJlJ3MKLQkgKiBh IGZsYWcgaGVyZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB3ZSBjdXJyZW50bHkgZG8uCisJ ICogcmVmZXJlbmNlZCBieSBhIHJlbGF0aW9uLgogCSAqLwogCU11bHRpWGFjdE9mZnNldCBvbGRl c3RPZmZzZXQ7Ci0JYm9vbAkJb2xkZXN0T2Zmc2V0S25vd247CiAKIAkvKiBzdXBwb3J0IGZvciBh bnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KIAlNdWx0aVhhY3RJZCBtdWx0aVZhY0xpbWl0OwpA QCAtMjcyLDkgKzE1NSw2IEBAIHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdFN0YXRlRGF0YQogCU11 bHRpWGFjdElkIG11bHRpU3RvcExpbWl0OwogCU11bHRpWGFjdElkIG11bHRpV3JhcExpbWl0Owog Ci0JLyogc3VwcG9ydCBmb3IgbWVtYmVycyBhbnRpLXdyYXBhcm91bmQgbWVhc3VyZXMgKi8KLQlN dWx0aVhhY3RPZmZzZXQgb2Zmc2V0U3RvcExpbWl0OwkvKiBrbm93biBpZiBvbGRlc3RPZmZzZXRL bm93biAqLwotCiAJLyoKIAkgKiBUaGlzIGlzIHVzZWQgdG8gc2xlZXAgdW50aWwgYSBtdWx0aXhh Y3Qgb2Zmc2V0IGlzIHdyaXR0ZW4gd2hlbiB3ZSB3YW50CiAJICogdG8gY3JlYXRlIHRoZSBuZXh0 IG9uZS4KQEAgLTQwOSwxMCArMjg5LDggQEAgc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UHJl Y2VkZXMoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDEsCiAJCQkJCQkJCQlNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0Mik7CiBzdGF0aWMgdm9pZCBFeHRlbmRNdWx0aVhhY3RPZmZzZXQoTXVsdGlYYWN0SWQg bXVsdGkpOwogc3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0TWVtYmVyKE11bHRpWGFjdE9mZnNl dCBvZmZzZXQsIGludCBubWVtYmVycyk7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RPZmZzZXRXb3Vs ZFdyYXAoTXVsdGlYYWN0T2Zmc2V0IGJvdW5kYXJ5LAotCQkJCQkJCQkJIE11bHRpWGFjdE9mZnNl dCBzdGFydCwgdWludDMyIGRpc3RhbmNlKTsKIHN0YXRpYyBib29sIFNldE9mZnNldFZhY3V1bUxp bWl0KGJvb2wgaXNfc3RhcnR1cCk7Ci1zdGF0aWMgYm9vbCBmaW5kX211bHRpeGFjdF9zdGFydChN dWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpOworc3RhdGljIE11bHRp WGFjdE9mZnNldCBmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0 aWMgdm9pZCBXcml0ZU1aZXJvUGFnZVhsb2dSZWMoaW50NjQgcGFnZW5vLCB1aW50OCBpbmZvKTsK IHN0YXRpYyB2b2lkIFdyaXRlTVRydW5jYXRlWGxvZ1JlYyhPaWQgb2xkZXN0TXVsdGlEQiwKIAkJ CQkJCQkJICBNdWx0aVhhY3RJZCBzdGFydFRydW5jT2ZmLApAQCAtMTA1NCw5ICs5MzIsNyBAQCBH ZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQog CSAqIGFnYWluc3QgY2F0YXN0cm9waGljIGRhdGEgbG9zcyBkdWUgdG8gbXVsdGl4YWN0IHdyYXBh cm91bmQuICBUaGUgYmFzaWMKIAkgKiBydWxlcyBhcmU6CiAJICoKLQkgKiBJZiB3ZSdyZSBwYXN0 IG11bHRpVmFjTGltaXQgb3IgdGhlIHNhZmUgdGhyZXNob2xkIGZvciBtZW1iZXIgc3RvcmFnZQot CSAqIHNwYWNlLCBvciB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHNhZmUgdGhyZXNob2xkIGZvciBt ZW1iZXIgc3RvcmFnZSBpcywKLQkgKiBzdGFydCB0cnlpbmcgdG8gZm9yY2UgYXV0b3ZhY3V1bSBj eWNsZXMuCisJICogSWYgd2UncmUgcGFzdCBtdWx0aVZhY0xpbWl0LCBzdGFydCB0cnlpbmcgdG8g Zm9yY2UgYXV0b3ZhY3V1bSBjeWNsZXMuCiAJICogSWYgd2UncmUgcGFzdCBtdWx0aVdhcm5MaW1p dCwgc3RhcnQgaXNzdWluZyB3YXJuaW5ncy4KIAkgKiBJZiB3ZSdyZSBwYXN0IG11bHRpU3RvcExp bWl0LCByZWZ1c2UgdG8gY3JlYXRlIG5ldyBNdWx0aVhhY3RJZHMuCiAJICoKQEAgLTExNTEsOTAg KzEwMjcsMTAgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBNdWx0aVhhY3RPZmZz ZXQgKm9mZnNldCkKIAlFeHRlbmRNdWx0aVhhY3RPZmZzZXQocmVzdWx0KTsKIAogCS8qCi0JICog UmVzZXJ2ZSB0aGUgbWVtYmVycyBzcGFjZSwgc2ltaWxhcmx5IHRvIGFib3ZlLiAgQWxzbywgYmUg Y2FyZWZ1bCBub3QgdG8KLQkgKiByZXR1cm4gemVybyBhcyB0aGUgc3RhcnRpbmcgb2Zmc2V0IGZv ciBhbnkgbXVsdGl4YWN0LiBTZWUKLQkgKiBHZXRNdWx0aVhhY3RJZE1lbWJlcnMoKSBmb3IgbW90 aXZhdGlvbi4KKwkgKiBSZXNlcnZlIHRoZSBtZW1iZXJzIHNwYWNlLCBzaW1pbGFybHkgdG8gYWJv dmUuCiAJICovCiAJbmV4dE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0OwotCWlm IChuZXh0T2Zmc2V0ID09IDApCi0JewotCQkqb2Zmc2V0ID0gMTsKLQkJbm1lbWJlcnMrKzsJCQkJ LyogYWxsb2NhdGUgbWVtYmVyIHNsb3QgMCB0b28gKi8KLQl9Ci0JZWxzZQotCQkqb2Zmc2V0ID0g bmV4dE9mZnNldDsKLQotCS8qLS0tLS0tLS0tLQotCSAqIFByb3RlY3QgYWdhaW5zdCBvdmVycnVu IG9mIHRoZSBtZW1iZXJzIHNwYWNlIGFzIHdlbGwsIHdpdGggdGhlCi0JICogZm9sbG93aW5nIHJ1 bGVzOgotCSAqCi0JICogSWYgd2UncmUgcGFzdCBvZmZzZXRTdG9wTGltaXQsIHJlZnVzZSB0byBn ZW5lcmF0ZSBtb3JlIG11bHRpcy4KLQkgKiBJZiB3ZSdyZSBjbG9zZSB0byBvZmZzZXRTdG9wTGlt aXQsIGVtaXQgYSB3YXJuaW5nLgotCSAqCi0JICogQXJiaXRyYXJpbHksIHdlIHN0YXJ0IGVtaXR0 aW5nIHdhcm5pbmdzIHdoZW4gd2UncmUgMjAgc2VnbWVudHMgb3IgbGVzcwotCSAqIGZyb20gb2Zm c2V0U3RvcExpbWl0LgotCSAqCi0JICogTm90ZSB3ZSBoYXZlbid0IHVwZGF0ZWQgdGhlIHNoYXJl ZCBzdGF0ZSB5ZXQsIHNvIGlmIHdlIGZhaWwgYXQgdGhpcwotCSAqIHBvaW50LCB0aGUgbXVsdGl4 YWN0IElEIHdlIGdyYWJiZWQgY2FuIHN0aWxsIGJlIHVzZWQgYnkgdGhlIG5leHQgZ3V5LgotCSAq Ci0JICogTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHBvaW50IGluIGZvcmNpbmcgYXV0b3ZhY3V1bSBy dW5zIGhlcmU6IHRoZQotCSAqIG11bHRpeGFjdCBmcmVlemUgc2V0dGluZ3Mgd291bGQgaGF2ZSB0 byBiZSByZWR1Y2VkIGZvciB0aGF0IHRvIGhhdmUgYW55Ci0JICogZWZmZWN0LgotCSAqLS0tLS0t LS0tLQotCSAqLwotI2RlZmluZSBPRkZTRVRfV0FSTl9TRUdNRU5UUwkyMAotCWlmIChNdWx0aVhh Y3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYKLQkJTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFw KE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQsIG5leHRPZmZzZXQsCi0JCQkJCQkJCSBu bWVtYmVycykpCi0JewotCQkvKiBzZWUgY29tbWVudCBpbiB0aGUgY29ycmVzcG9uZGluZyBvZmZz ZXRzIHdyYXBhcm91bmQgY2FzZSAqLwotCQlTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNJR05BTF9T VEFSVF9BVVRPVkFDX0xBVU5DSEVSKTsKLQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURFRCksCi0JCQkJIGVycm1zZygibXVsdGl4YWN0 IFwibWVtYmVyc1wiIGxpbWl0IGV4Y2VlZGVkIiksCi0JCQkJIGVycmRldGFpbF9wbHVyYWwoIlRo aXMgY29tbWFuZCB3b3VsZCBjcmVhdGUgYSBtdWx0aXhhY3Qgd2l0aCAldSBtZW1iZXJzLCBidXQg dGhlIHJlbWFpbmluZyBzcGFjZSBpcyBvbmx5IGVub3VnaCBmb3IgJXUgbWVtYmVyLiIsCi0JCQkJ CQkJCSAgIlRoaXMgY29tbWFuZCB3b3VsZCBjcmVhdGUgYSBtdWx0aXhhY3Qgd2l0aCAldSBtZW1i ZXJzLCBidXQgdGhlIHJlbWFpbmluZyBzcGFjZSBpcyBvbmx5IGVub3VnaCBmb3IgJXUgbWVtYmVy cy4iLAotCQkJCQkJCQkgIE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zm c2V0IC0gMSwKLQkJCQkJCQkJICBubWVtYmVycywKLQkJCQkJCQkJICBNdWx0aVhhY3RTdGF0ZS0+ b2Zmc2V0U3RvcExpbWl0IC0gbmV4dE9mZnNldCAtIDEpLAotCQkJCSBlcnJoaW50KCJFeGVjdXRl IGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gZGF0YWJhc2Ugd2l0aCBPSUQgJXUgd2l0aCByZWR1 Y2VkIFwidmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWluX2FnZVwiIGFuZCBcInZhY3V1bV9tdWx0 aXhhY3RfZnJlZXplX3RhYmxlX2FnZVwiIHNldHRpbmdzLiIsCi0JCQkJCQkgTXVsdGlYYWN0U3Rh dGUtPm9sZGVzdE11bHRpWGFjdERCKSkpOwotCX0KLQotCS8qCi0JICogQ2hlY2sgd2hldGhlciB3 ZSBzaG91bGQga2ljayBhdXRvdmFjdXVtIGludG8gYWN0aW9uLCB0byBwcmV2ZW50IG1lbWJlcnMK LQkgKiB3cmFwYXJvdW5kLiBOQiB3ZSB1c2UgYSBtdWNoIGxhcmdlciB3aW5kb3cgdG8gdHJpZ2dl ciBhdXRvdmFjdXVtIHRoYW4KLQkgKiBqdXN0IHRoZSB3YXJuaW5nIGxpbWl0LiBUaGUgd2Fybmlu ZyBpcyBqdXN0IGEgbWVhc3VyZSBvZiBsYXN0IHJlc29ydCAtCi0JICogdGhpcyBpcyBpbiBsaW5l IHdpdGggR2V0TmV3VHJhbnNhY3Rpb25JZCdzIGJlaGF2aW91ci4KLQkgKi8KLQlpZiAoIU11bHRp WGFjdFN0YXRlLT5vbGRlc3RPZmZzZXRLbm93biB8fAotCQkoTXVsdGlYYWN0U3RhdGUtPm5leHRP ZmZzZXQgLSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0Ci0JCSA+IE1VTFRJWEFDVF9NRU1C RVJfU0FGRV9USFJFU0hPTEQpKQotCXsKLQkJLyoKLQkJICogVG8gYXZvaWQgc3dhbXBpbmcgdGhl IHBvc3RtYXN0ZXIgd2l0aCBzaWduYWxzLCB3ZSBpc3N1ZSB0aGUgYXV0b3ZhYwotCQkgKiByZXF1 ZXN0IG9ubHkgd2hlbiBjcm9zc2luZyBhIHNlZ21lbnQgYm91bmRhcnkuIFdpdGggZGVmYXVsdAot CQkgKiBjb21waWxhdGlvbiBzZXR0aW5ncyB0aGF0J3Mgcm91Z2hseSBhZnRlciA1MGsgbWVtYmVy cy4gIFRoaXMgc3RpbGwKLQkJICogZ2l2ZXMgcGxlbnR5IG9mIGNoYW5jZXMgYmVmb3JlIHdlIGdl dCBpbnRvIHJlYWwgdHJvdWJsZS4KLQkJICovCi0JCWlmICgoTVhPZmZzZXRUb01lbWJlclBhZ2Uo bmV4dE9mZnNldCkgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UKSAhPQotCQkJKE1YT2Zmc2V0VG9N ZW1iZXJQYWdlKG5leHRPZmZzZXQgKyBubWVtYmVycykgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U KSkKLQkJCVNlbmRQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNI RVIpOwotCX0KLQotCWlmIChNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gJiYKLQkJ TXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQs Ci0JCQkJCQkJCSBuZXh0T2Zmc2V0LAotCQkJCQkJCQkgbm1lbWJlcnMgKyBNVUxUSVhBQ1RfTUVN QkVSU19QRVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgKiBPRkZTRVRfV0FSTl9TRUdN RU5UUykpCi0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST0dSQU1f TElNSVRfRVhDRUVERUQpLAotCQkJCSBlcnJtc2dfcGx1cmFsKCJkYXRhYmFzZSB3aXRoIE9JRCAl dSBtdXN0IGJlIHZhY3V1bWVkIGJlZm9yZSAlZCBtb3JlIG11bHRpeGFjdCBtZW1iZXIgaXMgdXNl ZCIsCi0JCQkJCQkJICAgImRhdGFiYXNlIHdpdGggT0lEICV1IG11c3QgYmUgdmFjdXVtZWQgYmVm b3JlICVkIG1vcmUgbXVsdGl4YWN0IG1lbWJlcnMgYXJlIHVzZWQiLAotCQkJCQkJCSAgIE11bHRp WGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0ICsgbm1lbWJlcnMsCi0JCQkJ CQkJICAgTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE11bHRpWGFjdERCLAotCQkJCQkJCSAgIE11bHRp WGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQgLSBuZXh0T2Zmc2V0ICsgbm1lbWJlcnMpLAotCQkJ CSBlcnJoaW50KCJFeGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNVVU0gaW4gdGhhdCBkYXRhYmFz ZSB3aXRoIHJlZHVjZWQgXCJ2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlXCIgYW5kIFwi dmFjdXVtX211bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlXCIgc2V0dGluZ3MuIikpKTsKKwkqb2Zm c2V0ID0gbmV4dE9mZnNldDsKIAogCUV4dGVuZE11bHRpWGFjdE1lbWJlcihuZXh0T2Zmc2V0LCBu bWVtYmVycyk7CiAKQEAgLTI2MjAsMjIgKzI0MTYsOSBAQCBFeHRlbmRNdWx0aVhhY3RNZW1iZXIo TXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKQogCQl9CiAKIAkJLyoKLQkJICog Q29tcHV0ZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRpbGwgZW5kIG9mIGN1cnJlbnQgcGFnZS4gIENh cmVmdWw6IGlmCi0JCSAqIGFkZGl0aW9uIG9mIHVuc2lnbmVkIGludHMgd3JhcHMgYXJvdW5kLCB3 ZSdyZSBhdCB0aGUgbGFzdCBwYWdlIG9mCi0JCSAqIHRoZSBsYXN0IHNlZ21lbnQ7IHNpbmNlIHRo YXQgcGFnZSBob2xkcyBhIGRpZmZlcmVudCBudW1iZXIgb2YgaXRlbXMKLQkJICogdGhhbiBvdGhl ciBwYWdlcywgd2UgbmVlZCB0byBkbyBpdCBkaWZmZXJlbnRseS4KKwkJICogQ29tcHV0ZSB0aGUg bnVtYmVyIG9mIGl0ZW1zIHRpbGwgZW5kIG9mIGN1cnJlbnQgcGFnZS4KIAkJICovCi0JCWlmIChv ZmZzZXQgKyBNQVhfTUVNQkVSU19JTl9MQVNUX01FTUJFUlNfUEFHRSA8IG9mZnNldCkKLQkJewot CQkJLyoKLQkJCSAqIFRoaXMgaXMgdGhlIGxhc3QgcGFnZSBvZiB0aGUgbGFzdCBzZWdtZW50OyB3 ZSBjYW4gY29tcHV0ZSB0aGUKLQkJCSAqIG51bWJlciBvZiBpdGVtcyBsZWZ0IHRvIGFsbG9jYXRl IGluIGl0IHdpdGhvdXQgbW9kdWxvCi0JCQkgKiBhcml0aG1ldGljLgotCQkJICovCi0JCQlkaWZm ZXJlbmNlID0gTWF4TXVsdGlYYWN0T2Zmc2V0IC0gb2Zmc2V0ICsgMTsKLQkJfQotCQllbHNlCi0J CQlkaWZmZXJlbmNlID0gTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UgLSBvZmZzZXQgJSBNVUxU SVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKKwkJZGlmZmVyZW5jZSA9IE1VTFRJWEFDVF9NRU1CRVJT X1BFUl9QQUdFIC0gb2Zmc2V0ICUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0U7CiAKIAkJLyoK IAkJICogQWR2YW5jZSB0byBuZXh0IHBhZ2UsIHRha2luZyBjYXJlIHRvIHByb3Blcmx5IGhhbmRs ZSB0aGUgd3JhcGFyb3VuZApAQCAtMjcwMSwxNSArMjQ4NCwxMyBAQCBHZXRPbGRlc3RNdWx0aVhh Y3RJZCh2b2lkKQogfQogCiAvKgotICogRGV0ZXJtaW5lIGhvdyBhZ2dyZXNzaXZlbHkgd2UgbmVl ZCB0byB2YWN1dW0gaW4gb3JkZXIgdG8gcHJldmVudCBtZW1iZXIKLSAqIHdyYXBhcm91bmQuCisg KiBEZXRlcm1pbmUgaWYgd2UgbmVlZCB0byB2YWN1dW0gZm9yIG1lbWJlciBvciBub3QuCiAgKgog ICogVG8gZG8gc28gZGV0ZXJtaW5lIHdoYXQncyB0aGUgb2xkZXN0IG1lbWJlciBvZmZzZXQgYW5k IGluc3RhbGwgdGhlIGxpbWl0CiAgKiBpbmZvIGluIE11bHRpWGFjdFN0YXRlLCB3aGVyZSBpdCBj YW4gYmUgdXNlZCB0byBwcmV2ZW50IG92ZXJydW4gb2Ygb2xkIGRhdGEKICAqIGluIHRoZSBtZW1i ZXJzIFNMUlUgYXJlYS4KICAqCi0gKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgZW1lcmdl bmN5IGF1dG92YWN1dW0gaXMgcmVxdWlyZWQgYW5kIGZhbHNlCi0gKiBvdGhlcndpc2UuCisgKiBU aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgYXV0b3ZhY3V1bSBpcyByZXF1aXJlZCBhbmQgZmFs c2Ugb3RoZXJ3aXNlLgogICovCiBzdGF0aWMgYm9vbAogU2V0T2Zmc2V0VmFjdXVtTGltaXQoYm9v bCBpc19zdGFydHVwKQpAQCAtMjcxNywxMiArMjQ5OCw3IEBAIFNldE9mZnNldFZhY3V1bUxpbWl0 KGJvb2wgaXNfc3RhcnR1cCkKIAlNdWx0aVhhY3RJZCBvbGRlc3RNdWx0aVhhY3RJZDsKIAlNdWx0 aVhhY3RJZCBuZXh0TVhhY3Q7CiAJTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldCA9IDA7CS8q IHBsYWNhdGUgY29tcGlsZXIgKi8KLQlNdWx0aVhhY3RPZmZzZXQgcHJldk9sZGVzdE9mZnNldDsK IAlNdWx0aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93biA9 IGZhbHNlOwotCWJvb2wJCXByZXZPbGRlc3RPZmZzZXRLbm93bjsKLQlNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0U3RvcExpbWl0ID0gMDsKLQlNdWx0aVhhY3RPZmZzZXQgcHJldk9mZnNldFN0b3BMaW1p dDsKIAogCS8qCiAJICogTkI6IEhhdmUgdG8gcHJldmVudCBjb25jdXJyZW50IHRydW5jYXRpb24s IHdlIG1pZ2h0IG90aGVyd2lzZSB0cnkgdG8KQEAgLTI3MzUsOSArMjUxMSw2IEBAIFNldE9mZnNl dFZhY3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAlvbGRlc3RNdWx0aVhhY3RJZCA9IE11bHRp WGFjdFN0YXRlLT5vbGRlc3RNdWx0aVhhY3RJZDsKIAluZXh0TVhhY3QgPSBNdWx0aVhhY3RTdGF0 ZS0+bmV4dE1YYWN0OwogCW5leHRPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE9mZnNldDsK LQlwcmV2T2xkZXN0T2Zmc2V0S25vd24gPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25v d247Ci0JcHJldk9sZGVzdE9mZnNldCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RPZmZzZXQ7Ci0J cHJldk9mZnNldFN0b3BMaW1pdCA9IE11bHRpWGFjdFN0YXRlLT5vZmZzZXRTdG9wTGltaXQ7CiAJ QXNzZXJ0KE11bHRpWGFjdFN0YXRlLT5maW5pc2hlZFN0YXJ0dXApOwogCUxXTG9ja1JlbGVhc2Uo TXVsdGlYYWN0R2VuTG9jayk7CiAKQEAgLTI3NTUsMTM5ICsyNTI4LDMxIEBAIFNldE9mZnNldFZh Y3V1bUxpbWl0KGJvb2wgaXNfc3RhcnR1cCkKIAkJICogb2Zmc2V0LgogCQkgKi8KIAkJb2xkZXN0 T2Zmc2V0ID0gbmV4dE9mZnNldDsKLQkJb2xkZXN0T2Zmc2V0S25vd24gPSB0cnVlOwogCX0KIAll bHNlCi0JewotCQkvKgotCQkgKiBGaWd1cmUgb3V0IHdoZXJlIHRoZSBvbGRlc3QgZXhpc3Rpbmcg bXVsdGl4YWN0J3Mgb2Zmc2V0cyBhcmUKLQkJICogc3RvcmVkLiBEdWUgdG8gYnVncyBpbiBlYXJs eSByZWxlYXNlIG9mIFBvc3RncmVTUUwgOS4zLlggYW5kIDkuNC5YLAotCQkgKiB0aGUgc3VwcG9z ZWRseS1lYXJsaWVzdCBtdWx0aXhhY3QgbWlnaHQgbm90IHJlYWxseSBleGlzdC4gIFdlIGFyZQot CQkgKiBjYXJlZnVsIG5vdCB0byBmYWlsIGluIHRoYXQgY2FzZS4KLQkJICovCi0JCW9sZGVzdE9m ZnNldEtub3duID0KLQkJCWZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9sZGVzdE11bHRpWGFjdElkLCAm b2xkZXN0T2Zmc2V0KTsKLQotCQlpZiAob2xkZXN0T2Zmc2V0S25vd24pCi0JCQllcmVwb3J0KERF QlVHMSwKLQkJCQkJKGVycm1zZ19pbnRlcm5hbCgib2xkZXN0IE11bHRpWGFjdElkIG1lbWJlciBp cyBhdCBvZmZzZXQgJXUiLAotCQkJCQkJCQkJIG9sZGVzdE9mZnNldCkpKTsKLQkJZWxzZQotCQkJ ZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2coIk11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3VuZCBw cm90ZWN0aW9ucyBhcmUgZGlzYWJsZWQgYmVjYXVzZSBvbGRlc3QgY2hlY2twb2ludGVkIE11bHRp WGFjdCAldSBkb2VzIG5vdCBleGlzdCBvbiBkaXNrIiwKLQkJCQkJCQlvbGRlc3RNdWx0aVhhY3RJ ZCkpKTsKLQl9CisJCW9sZGVzdE9mZnNldCA9IGZpbmRfbXVsdGl4YWN0X3N0YXJ0KG9sZGVzdE11 bHRpWGFjdElkKTsKIAogCUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0VHJ1bmNhdGlvbkxvY2spOwog Ci0JLyoKLQkgKiBJZiB3ZSBjYW4sIGNvbXB1dGUgbGltaXRzIChhbmQgaW5zdGFsbCB0aGVtIE11 bHRpWGFjdFN0YXRlKSB0byBwcmV2ZW50Ci0JICogb3ZlcnJ1biBvZiBvbGQgZGF0YSBpbiB0aGUg bWVtYmVycyBTTFJVIGFyZWEuIFdlIGNhbiBvbmx5IGRvIHNvIGlmIHRoZQotCSAqIG9sZGVzdCBv ZmZzZXQgaXMga25vd24gdGhvdWdoLgotCSAqLwotCWlmIChvbGRlc3RPZmZzZXRLbm93bikKLQl7 Ci0JCS8qIG1vdmUgYmFjayB0byBzdGFydCBvZiB0aGUgY29ycmVzcG9uZGluZyBzZWdtZW50ICov Ci0JCW9mZnNldFN0b3BMaW1pdCA9IG9sZGVzdE9mZnNldCAtIChvbGRlc3RPZmZzZXQgJQotCQkJ CQkJCQkJCSAgKE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9QQUdFICogU0xSVV9QQUdFU19QRVJfU0VH TUVOVCkpOwotCi0JCS8qIGFsd2F5cyBsZWF2ZSBvbmUgc2VnbWVudCBiZWZvcmUgdGhlIHdyYXBh cm91bmQgcG9pbnQgKi8KLQkJb2Zmc2V0U3RvcExpbWl0IC09IChNVUxUSVhBQ1RfTUVNQkVSU19Q RVJfUEFHRSAqIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQpOwotCi0JCWlmICghcHJldk9sZGVzdE9m ZnNldEtub3duICYmICFpc19zdGFydHVwKQotCQkJZXJlcG9ydChMT0csCi0JCQkJCShlcnJtc2co Ik11bHRpWGFjdCBtZW1iZXIgd3JhcGFyb3VuZCBwcm90ZWN0aW9ucyBhcmUgbm93IGVuYWJsZWQi KSkpOwotCi0JCWVyZXBvcnQoREVCVUcxLAotCQkJCShlcnJtc2dfaW50ZXJuYWwoIk11bHRpWGFj dCBtZW1iZXIgc3RvcCBsaW1pdCBpcyBub3cgJXUgYmFzZWQgb24gTXVsdGlYYWN0ICV1IiwKLQkJ CQkJCQkJIG9mZnNldFN0b3BMaW1pdCwgb2xkZXN0TXVsdGlYYWN0SWQpKSk7Ci0JfQotCWVsc2Ug aWYgKHByZXZPbGRlc3RPZmZzZXRLbm93bikKLQl7Ci0JCS8qCi0JCSAqIElmIHdlIGZhaWxlZCB0 byBnZXQgdGhlIG9sZGVzdCBvZmZzZXQgdGhpcyB0aW1lLCBidXQgd2UgaGF2ZSBhCi0JCSAqIHZh bHVlIGZyb20gYSBwcmV2aW91cyBwYXNzIHRocm91Z2ggdGhpcyBmdW5jdGlvbiwgdXNlIHRoZSBv bGQKLQkJICogdmFsdWVzIHJhdGhlciB0aGFuIGF1dG9tYXRpY2FsbHkgZm9yY2luZyBhbiBlbWVy Z2VuY3kgYXV0b3ZhY3V1bQotCQkgKiBjeWNsZSBhZ2Fpbi4KLQkJICovCi0JCW9sZGVzdE9mZnNl dCA9IHByZXZPbGRlc3RPZmZzZXQ7Ci0JCW9sZGVzdE9mZnNldEtub3duID0gdHJ1ZTsKLQkJb2Zm c2V0U3RvcExpbWl0ID0gcHJldk9mZnNldFN0b3BMaW1pdDsKLQl9Ci0KIAkvKiBJbnN0YWxsIHRo ZSBjb21wdXRlZCB2YWx1ZXMgKi8KIAlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExX X0VYQ0xVU0lWRSk7CiAJTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldCA9IG9sZGVzdE9mZnNl dDsKLQlNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0S25vd24gPSBvbGRlc3RPZmZzZXRLbm93 bjsKLQlNdWx0aVhhY3RTdGF0ZS0+b2Zmc2V0U3RvcExpbWl0ID0gb2Zmc2V0U3RvcExpbWl0Owog CUxXTG9ja1JlbGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7CiAKIAkvKgotCSAqIERvIHdlIG5lZWQg YW4gZW1lcmdlbmN5IGF1dG92YWN1dW0/CUlmIHdlJ3JlIG5vdCBzdXJlLCBhc3N1bWUgeWVzLgot CSAqLwotCXJldHVybiAhb2xkZXN0T2Zmc2V0S25vd24gfHwKLQkJKG5leHRPZmZzZXQgLSBvbGRl c3RPZmZzZXQgPiBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xEKTsKLX0KLQotLyoKLSAq IFJldHVybiB3aGV0aGVyIGFkZGluZyAiZGlzdGFuY2UiIHRvICJzdGFydCIgd291bGQgbW92ZSBw YXN0ICJib3VuZGFyeSIuCi0gKgotICogV2UgdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg dGhlIGFkZGl0aW9uIGlzICJ3cmFwcGluZyBhcm91bmQiIHRoZQotICogYm91bmRhcnkgcG9pbnQs IGhlbmNlIHRoZSBuYW1lLiAgVGhlIHJlYXNvbiB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgcmVn dWxhcgotICogMl4zMS1tb2R1bG8gYXJpdGhtZXRpYyBoZXJlIGlzIHRoYXQgd2Ugd2FudCB0byBi ZSBhYmxlIHRvIHVzZSB0aGUgd2hvbGUgb2YKLSAqIHRoZSAyXjMyLTEgc3BhY2UgaGVyZSwgYWxs b3dpbmcgZm9yIG1vcmUgbXVsdGl4YWN0cyB0aGFuIHdvdWxkIGZpdAotICogb3RoZXJ3aXNlLgot ICovCi1zdGF0aWMgYm9vbAotTXVsdGlYYWN0T2Zmc2V0V291bGRXcmFwKE11bHRpWGFjdE9mZnNl dCBib3VuZGFyeSwgTXVsdGlYYWN0T2Zmc2V0IHN0YXJ0LAotCQkJCQkJIHVpbnQzMiBkaXN0YW5j ZSkKLXsKLQlNdWx0aVhhY3RPZmZzZXQgZmluaXNoOwotCi0JLyoKLQkgKiBOb3RlIHRoYXQgb2Zm c2V0IG51bWJlciAwIGlzIG5vdCB1c2VkIChzZWUgR2V0TXVsdGlYYWN0SWRNZW1iZXJzKSwgc28K LQkgKiBpZiB0aGUgYWRkaXRpb24gd3JhcHMgYXJvdW5kIHRoZSBVSU5UX01BWCBib3VuZGFyeSwg c2tpcCB0aGF0IHZhbHVlLgotCSAqLwotCWZpbmlzaCA9IHN0YXJ0ICsgZGlzdGFuY2U7Ci0JaWYg KGZpbmlzaCA8IHN0YXJ0KQotCQlmaW5pc2grKzsKLQotCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgKiBX aGVuIHRoZSBib3VuZGFyeSBpcyBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHN0YXJ0aW5n IHBvaW50LCBhbnkKLQkgKiB2YWx1ZSBudW1lcmljYWxseSBiZXR3ZWVuIHRoZSB0d28gaXMgbm90 IHdyYXBwZWQ6Ci0JICoKLQkgKgk8LS0tLVMtLS0tQi0tLS0+Ci0JICoJWy0tLSkJCQkgPSBGIHdy YXBwZWQgcGFzdCBCIChhbmQgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiBub3Qgd3JhcHBl ZAotCSAqCQkJICBbLS0tLV0gPSBGIHdyYXBwZWQgcGFzdCBCCi0JICoKLQkgKiBXaGVuIHRoZSBi b3VuZGFyeSBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4gdGhlIHN0YXJ0aW5nIHBvaW50IChpLmUu IHRoZQotCSAqIFVJTlRfTUFYIHdyYXBhcm91bmQgb2NjdXJzIHNvbWV3aGVyZSBpbiBiZXR3ZWVu KSB0aGVuIGFsbCB2YWx1ZXMgaW4KLQkgKiBiZXR3ZWVuIGFyZSB3cmFwcGVkOgotCSAqCi0JICoJ PC0tLS1CLS0tLVMtLS0tPgotCSAqCVstLS0pCQkJID0gRiBub3Qgd3JhcHBlZCBwYXN0IEIgKGJ1 dCB3cmFwcGVkIHBhc3QgVUlOVF9NQVgpCi0JICoJCSBbLS0tKQkJID0gRiB3cmFwcGVkIHBhc3Qg QiAoYW5kIFVJTlRfTUFYKQotCSAqCQkJICBbLS0tLV0gPSBGIG5vdCB3cmFwcGVkCi0JICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorCSAqIERvIHdlIG5lZWQgYXV0b3ZhY3V1bT8KIAkgKi8KLQlpZiAoc3RhcnQg PCBib3VuZGFyeSkKLQkJcmV0dXJuIGZpbmlzaCA+PSBib3VuZGFyeSB8fCBmaW5pc2ggPCBzdGFy dDsKLQllbHNlCi0JCXJldHVybiBmaW5pc2ggPj0gYm91bmRhcnkgJiYgZmluaXNoIDwgc3RhcnQ7 CisJcmV0dXJuIChuZXh0T2Zmc2V0IC0gb2xkZXN0T2Zmc2V0ID4gTVVMVElYQUNUX01FTUJFUl9B VVRPVkFDX1RIUkVTSE9MRCk7CiB9CiAKIC8qCiAgKiBGaW5kIHRoZSBzdGFydGluZyBvZmZzZXQg b2YgdGhlIGdpdmVuIE11bHRpWGFjdElkLgogICoKLSAqIFJldHVybnMgZmFsc2UgaWYgdGhlIGZp bGUgY29udGFpbmluZyB0aGUgbXVsdGkgZG9lcyBub3QgZXhpc3Qgb24gZGlzay4KLSAqIE90aGVy d2lzZSwgcmV0dXJucyB0cnVlIGFuZCBzZXRzICpyZXN1bHQgdG8gdGhlIHN0YXJ0aW5nIG1lbWJl ciBvZmZzZXQuCi0gKgogICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwcmV2ZW50IGNvbmN1cnJl bnQgdHJ1bmNhdGlvbiwgc28gaWYgdGhhdCdzCiAgKiByZXF1aXJlZCwgdGhlIGNhbGxlciBoYXMg dG8gcHJvdGVjdCBhZ2FpbnN0IHRoYXQuCiAgKi8KLXN0YXRpYyBib29sCi1maW5kX211bHRpeGFj dF9zdGFydChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCitzdGF0 aWMgTXVsdGlYYWN0T2Zmc2V0CitmaW5kX211bHRpeGFjdF9zdGFydChNdWx0aVhhY3RJZCBtdWx0 aSkKIHsKIAlNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0OwogCWludDY0CQlwYWdlbm87CkBAIC0yOTAw LDE1ICsyNTY1LDYgQEAgZmluZF9tdWx0aXhhY3Rfc3RhcnQoTXVsdGlYYWN0SWQgbXVsdGksIE11 bHRpWGFjdE9mZnNldCAqcmVzdWx0KQogCXBhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQYWdl KG11bHRpKTsKIAllbnRyeW5vID0gTXVsdGlYYWN0SWRUb09mZnNldEVudHJ5KG11bHRpKTsKIAot CS8qCi0JICogV3JpdGUgb3V0IGRpcnR5IGRhdGEsIHNvIFBoeXNpY2FsUGFnZUV4aXN0cyBjYW4g d29yayBjb3JyZWN0bHkuCi0JICovCi0JU2ltcGxlTHJ1V3JpdGVBbGwoTXVsdGlYYWN0T2Zmc2V0 Q3RsLCB0cnVlKTsKLQlTaW1wbGVMcnVXcml0ZUFsbChNdWx0aVhhY3RNZW1iZXJDdGwsIHRydWUp OwotCi0JaWYgKCFTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoTXVsdGlYYWN0T2Zmc2V0 Q3RsLCBwYWdlbm8pKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAkvKiBsb2NrIGlzIGFjcXVpcmVkIGJ5 IFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5ICovCiAJc2xvdG5vID0gU2ltcGxlTHJ1UmVhZFBh Z2VfUmVhZE9ubHkoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8sIG11bHRpKTsKIAlvZmZwdHIg PSAoTXVsdGlYYWN0T2Zmc2V0ICopIE11bHRpWGFjdE9mZnNldEN0bC0+c2hhcmVkLT5wYWdlX2J1 ZmZlcltzbG90bm9dOwpAQCAtMjkxNiwxMDIgKzI1NzIsNyBAQCBmaW5kX211bHRpeGFjdF9zdGFy dChNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0T2Zmc2V0ICpyZXN1bHQpCiAJb2Zmc2V0ID0g Km9mZnB0cjsKIAlMV0xvY2tSZWxlYXNlKFNpbXBsZUxydUdldEJhbmtMb2NrKE11bHRpWGFjdE9m ZnNldEN0bCwgcGFnZW5vKSk7CiAKLQkqcmVzdWx0ID0gb2Zmc2V0OwotCXJldHVybiB0cnVlOwot fQotCi0vKgotICogRGV0ZXJtaW5lIGhvdyBtYW55IG11bHRpeGFjdHMsIGFuZCBob3cgbWFueSBt dWx0aXhhY3QgbWVtYmVycywgY3VycmVudGx5Ci0gKiBleGlzdC4gIFJldHVybiBmYWxzZSBpZiB1 bmFibGUgdG8gZGV0ZXJtaW5lLgotICovCi1zdGF0aWMgYm9vbAotUmVhZE11bHRpWGFjdENvdW50 cyh1aW50MzIgKm11bHRpeGFjdHMsIE11bHRpWGFjdE9mZnNldCAqbWVtYmVycykKLXsKLQlNdWx0 aVhhY3RPZmZzZXQgbmV4dE9mZnNldDsKLQlNdWx0aVhhY3RPZmZzZXQgb2xkZXN0T2Zmc2V0Owot CU11bHRpWGFjdElkIG9sZGVzdE11bHRpWGFjdElkOwotCU11bHRpWGFjdElkIG5leHRNdWx0aVhh Y3RJZDsKLQlib29sCQlvbGRlc3RPZmZzZXRLbm93bjsKLQotCUxXTG9ja0FjcXVpcmUoTXVsdGlY YWN0R2VuTG9jaywgTFdfU0hBUkVEKTsKLQluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3RhdGUtPm5l eHRPZmZzZXQ7Ci0Jb2xkZXN0TXVsdGlYYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0TXVs dGlYYWN0SWQ7Ci0JbmV4dE11bHRpWGFjdElkID0gTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdDsK LQlvbGRlc3RPZmZzZXQgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0T2Zmc2V0OwotCW9sZGVzdE9m ZnNldEtub3duID0gTXVsdGlYYWN0U3RhdGUtPm9sZGVzdE9mZnNldEtub3duOwotCUxXTG9ja1Jl bGVhc2UoTXVsdGlYYWN0R2VuTG9jayk7Ci0KLQlpZiAoIW9sZGVzdE9mZnNldEtub3duKQotCQly ZXR1cm4gZmFsc2U7Ci0KLQkqbWVtYmVycyA9IG5leHRPZmZzZXQgLSBvbGRlc3RPZmZzZXQ7Ci0J Km11bHRpeGFjdHMgPSBuZXh0TXVsdGlYYWN0SWQgLSBvbGRlc3RNdWx0aVhhY3RJZDsKLQlyZXR1 cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIE11bHRpeGFjdCBtZW1iZXJzIGNhbiBiZSByZW1vdmVkIG9u Y2UgdGhlIG11bHRpeGFjdHMgdGhhdCByZWZlciB0byB0aGVtCi0gKiBhcmUgb2xkZXIgdGhhbiBl dmVyeSBkYXRtaW5teGlkLiAgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgYW5k Ci0gKiB2YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2Ugd29yayB0b2dldGhlciB0byBt YWtlIHN1cmUgd2UgbmV2ZXIgaGF2ZQotICogdG9vIG1hbnkgbXVsdGl4YWN0czsgd2UgaG9wZSB0 aGF0LCBhdCBsZWFzdCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcywKLSAqIHRoaXMgd2lsbCBh bHNvIGJlIHN1ZmZpY2llbnQgdG8ga2VlcCB1cyBmcm9tIHVzaW5nIHRvbyBtYW55IG9mZnNldHMu Ci0gKiBIb3dldmVyLCBpZiB0aGUgYXZlcmFnZSBtdWx0aXhhY3QgaGFzIG1hbnkgbWVtYmVycywg d2UgbWlnaHQgZXhoYXVzdCB0aGUKLSAqIG1lbWJlcnMgc3BhY2Ugd2hpbGUgc3RpbGwgdXNpbmcg ZmV3IGVub3VnaCBtZW1iZXJzIHRoYXQgdGhlc2UgbGltaXRzIGZhaWwKLSAqIHRvIHRyaWdnZXIg cmVsbWlubXhpZCBhZHZhbmNlbWVudCBieSBWQUNVVU0uICBBdCB0aGF0IHBvaW50LCB3ZSdkIGhh dmUgbm8KLSAqIGNob2ljZSBidXQgdG8gc3RhcnQgZmFpbGluZyBtdWx0aXhhY3QtY3JlYXRpbmcg b3BlcmF0aW9ucyB3aXRoIGFuIGVycm9yLgotICoKLSAqIFRvIHByZXZlbnQgdGhhdCwgaWYgbW9y ZSB0aGFuIGEgdGhyZXNob2xkIHBvcnRpb24gb2YgdGhlIG1lbWJlcnMgc3BhY2UgaXMKLSAqIHVz ZWQsIHdlIGVmZmVjdGl2ZWx5IHJlZHVjZSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSBhbmQKLSAqIHRvIGEgdmFsdWUganVzdCBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBtdWx0 aXhhY3RzIGluIHVzZS4gIFdlIGhvcGUgdGhhdAotICogdGhpcyB3aWxsIHF1aWNrbHkgdHJpZ2dl ciBhdXRvdmFjdXVtaW5nIG9uIHRoZSB0YWJsZSBvciB0YWJsZXMgd2l0aCB0aGUKLSAqIG9sZGVz dCByZWxtaW5teGlkLCB0aHVzIGFsbG93aW5nIGRhdG1pbm14aWQgdmFsdWVzIHRvIGFkdmFuY2Ug YW5kIHJlbW92aW5nCi0gKiBzb21lIG1lbWJlcnMuCi0gKgotICogQXMgdGhlIGZyYWN0aW9uIG9m IHRoZSBtZW1iZXIgc3BhY2UgY3VycmVudGx5IGluIHVzZSBncm93cywgd2UgYmVjb21lCi0gKiBt b3JlIGFnZ3Jlc3NpdmUgaW4gY2xhbXBpbmcgdGhpcyB2YWx1ZS4gIFRoYXQgbm90IG9ubHkgY2F1 c2VzIGF1dG92YWN1dW0KLSAqIHRvIHJhbXAgdXAsIGJ1dCBhbHNvIG1ha2VzIGFueSBtYW51YWwg dmFjdXVtcyB0aGUgdXNlciBpc3N1ZXMgbW9yZQotICogYWdncmVzc2l2ZS4gIFRoaXMgaGFwcGVu cyBiZWNhdXNlIHZhY3V1bV9nZXRfY3V0b2ZmcygpIHdpbGwgY2xhbXAgdGhlCi0gKiBmcmVlemUg dGFibGUgYW5kIHRoZSBtaW5pbXVtIGZyZWV6ZSBhZ2UgY3V0b2ZmcyBiYXNlZCBvbiB0aGUgZWZm ZWN0aXZlCi0gKiBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSB0aGlzIGZ1bmN0 aW9uIHJldHVybnMuICBJbiB0aGUgd29yc3QKLSAqIGNhc2UsIHdlJ2xsIGNsYWltIHRoZSBmcmVl emVfbWF4X2FnZSB0byB6ZXJvLCBhbmQgZXZlcnkgdmFjdXVtIG9mIGFueQotICogdGFibGUgd2ls bCBmcmVlemUgZXZlcnkgbXVsdGl4YWN0LgotICovCi1pbnQKLU11bHRpWGFjdE1lbWJlckZyZWV6 ZVRocmVzaG9sZCh2b2lkKQotewotCU11bHRpWGFjdE9mZnNldCBtZW1iZXJzOwotCXVpbnQzMgkJ bXVsdGl4YWN0czsKLQl1aW50MzIJCXZpY3RpbV9tdWx0aXhhY3RzOwotCWRvdWJsZQkJZnJhY3Rp b247Ci0JaW50CQkJcmVzdWx0OwotCi0JLyogSWYgd2UgY2FuJ3QgZGV0ZXJtaW5lIG1lbWJlciBz cGFjZSB1dGlsaXphdGlvbiwgYXNzdW1lIHRoZSB3b3JzdC4gKi8KLQlpZiAoIVJlYWRNdWx0aVhh Y3RDb3VudHMoJm11bHRpeGFjdHMsICZtZW1iZXJzKSkKLQkJcmV0dXJuIDA7Ci0KLQkvKiBJZiBt ZW1iZXIgc3BhY2UgdXRpbGl6YXRpb24gaXMgbG93LCBubyBzcGVjaWFsIGFjdGlvbiBpcyByZXF1 aXJlZC4gKi8KLQlpZiAobWVtYmVycyA8PSBNVUxUSVhBQ1RfTUVNQkVSX1NBRkVfVEhSRVNIT0xE KQotCQlyZXR1cm4gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2U7Ci0KLQkvKgot CSAqIENvbXB1dGUgYSB0YXJnZXQgZm9yIHJlbG1pbm14aWQgYWR2YW5jZW1lbnQuICBUaGUgbnVt YmVyIG9mIG11bHRpeGFjdHMKLQkgKiB3ZSB0cnkgdG8gZWxpbWluYXRlIGZyb20gdGhlIHN5c3Rl bSBpcyBiYXNlZCBvbiBob3cgZmFyIHdlIGFyZSBwYXN0Ci0JICogTVVMVElYQUNUX01FTUJFUl9T QUZFX1RIUkVTSE9MRC4KLQkgKi8KLQlmcmFjdGlvbiA9IChkb3VibGUpIChtZW1iZXJzIC0gTVVM VElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCkgLwotCQkoTVVMVElYQUNUX01FTUJFUl9EQU5H RVJfVEhSRVNIT0xEIC0gTVVMVElYQUNUX01FTUJFUl9TQUZFX1RIUkVTSE9MRCk7Ci0JdmljdGlt X211bHRpeGFjdHMgPSBtdWx0aXhhY3RzICogZnJhY3Rpb247Ci0KLQkvKiBmcmFjdGlvbiBjb3Vs ZCBiZSA+IDEuMCwgYnV0IGxvd2VzdCBwb3NzaWJsZSBmcmVlemUgYWdlIGlzIHplcm8gKi8KLQlp ZiAodmljdGltX211bHRpeGFjdHMgPiBtdWx0aXhhY3RzKQotCQlyZXR1cm4gMDsKLQlyZXN1bHQg PSBtdWx0aXhhY3RzIC0gdmljdGltX211bHRpeGFjdHM7Ci0KLQkvKgotCSAqIENsYW1wIHRvIGF1 dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCBzbyB0aGF0IHdlIG5ldmVyIG1ha2UK LQkgKiBhdXRvdmFjdXVtIGxlc3MgYWdncmVzc2l2ZSB0aGFuIGl0IHdvdWxkIG90aGVyd2lzZSBi ZS4KLQkgKi8KLQlyZXR1cm4gTWluKHJlc3VsdCwgYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXpl X21heF9hZ2UpOworCXJldHVybiBvZmZzZXQ7CiB9CiAKIHR5cGVkZWYgc3RydWN0IG14dHJ1bmNp bmZvCkBAIC0zMDM5LDM3ICsyNjAwLDEzIEBAIFNscnVTY2FuRGlyQ2JGaW5kRWFybGllc3QoU2xy dUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhCiAKIAog LyoKLSAqIERlbGV0ZSBtZW1iZXJzIHNlZ21lbnRzIFtvbGRlc3QsIG5ld09sZGVzdCkKLSAqCi0g KiBUaGUgbWVtYmVycyBTTFJVIGNhbiwgaW4gY29udHJhc3QgdG8gdGhlIG9mZnNldHMgb25lLCBi ZSBmaWxsZWQgdG8gYWxtb3N0Ci0gKiB0aGUgZnVsbCByYW5nZSBhdCBvbmNlLiBUaGlzIG1lYW5z IFNpbXBsZUxydVRydW5jYXRlKCkgY2FuJ3QgdHJpdmlhbGx5IGJlCi0gKiB1c2VkIC0gaW5zdGVh ZCB0aGUgdG8tYmUtZGVsZXRlZCByYW5nZSBpcyBjb21wdXRlZCB1c2luZyB0aGUgb2Zmc2V0cwot ICogU0xSVS4gQy5mLiBUcnVuY2F0ZU11bHRpWGFjdCgpLgorICogRGVsZXRlIG1lbWJlcnMgc2Vn bWVudHMgYmVmb3JlIHRoZSBuZXdPbGRlc3RPZmZzZXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1QZXJm b3JtTWVtYmVyc1RydW5jYXRpb24oTXVsdGlYYWN0T2Zmc2V0IG9sZGVzdE9mZnNldCwgTXVsdGlY YWN0T2Zmc2V0IG5ld09sZGVzdE9mZnNldCkKK1BlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihNdWx0 aVhhY3RPZmZzZXQgbmV3T2xkZXN0T2Zmc2V0KQogewotCWNvbnN0IGludDY0IG1heHNlZ21lbnQg PSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChNYXhNdWx0aVhhY3RPZmZzZXQpOwotCWludDY0CQlz dGFydHNlZ21lbnQgPSBNWE9mZnNldFRvTWVtYmVyU2VnbWVudChvbGRlc3RPZmZzZXQpOwotCWlu dDY0CQllbmRzZWdtZW50ID0gTVhPZmZzZXRUb01lbWJlclNlZ21lbnQobmV3T2xkZXN0T2Zmc2V0 KTsKLQlpbnQ2NAkJc2VnbWVudCA9IHN0YXJ0c2VnbWVudDsKLQotCS8qCi0JICogRGVsZXRlIGFs bCB0aGUgc2VnbWVudHMgYnV0IHRoZSBsYXN0IG9uZS4gVGhlIGxhc3Qgc2VnbWVudCBjYW4gc3Rp bGwKLQkgKiBjb250YWluLCBwb3NzaWJseSBwYXJ0aWFsbHksIHZhbGlkIGRhdGEuCi0JICovCi0J d2hpbGUgKHNlZ21lbnQgIT0gZW5kc2VnbWVudCkKLQl7Ci0JCWVsb2coREVCVUcyLCAidHJ1bmNh dGluZyBtdWx0aXhhY3QgbWVtYmVycyBzZWdtZW50ICVsbHgiLAotCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIHNlZ21lbnQpOwotCQlTbHJ1RGVsZXRlU2VnbWVudChNdWx0aVhhY3RNZW1iZXJDdGws IHNlZ21lbnQpOwotCi0JCS8qIG1vdmUgdG8gbmV4dCBzZWdtZW50LCBoYW5kbGluZyB3cmFwYXJv dW5kIGNvcnJlY3RseSAqLwotCQlpZiAoc2VnbWVudCA9PSBtYXhzZWdtZW50KQotCQkJc2VnbWVu dCA9IDA7Ci0JCWVsc2UKLQkJCXNlZ21lbnQgKz0gMTsKLQl9CisJU2ltcGxlTHJ1VHJ1bmNhdGUo TXVsdGlYYWN0TWVtYmVyQ3RsLAorCQkJCQkgIE1YT2Zmc2V0VG9NZW1iZXJQYWdlKG5ld09sZGVz dE9mZnNldCkpOwogfQogCiAvKgpAQCAtMzE3NCwyMyArMjcxMSwxNSBAQCBUcnVuY2F0ZU11bHRp WGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0aSwgT2lkIG5ld09sZGVzdE11bHRpREIpCiAJ LyoKIAkgKiBGaXJzdCwgY29tcHV0ZSB0aGUgc2FmZSB0cnVuY2F0aW9uIHBvaW50IGZvciBNdWx0 aVhhY3RNZW1iZXIuIFRoaXMgaXMKIAkgKiB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBvbGRl c3QgbXVsdGl4YWN0LgotCSAqCi0JICogSG9wZWZ1bGx5LCBmaW5kX211bHRpeGFjdF9zdGFydCB3 aWxsIGFsd2F5cyB3b3JrIGhlcmUsIGJlY2F1c2Ugd2UndmUKLQkgKiBhbHJlYWR5IGNoZWNrZWQg dGhhdCBpdCBkb2Vzbid0IHByZWNlZGUgdGhlIGVhcmxpZXN0IE11bHRpWGFjdCBvbiBkaXNrLgot CSAqIEJ1dCBpZiBpdCBmYWlscywgZG9uJ3QgdHJ1bmNhdGUgYW55dGhpbmcsIGFuZCBsb2cgYSBt ZXNzYWdlLgogCSAqLwogCWlmIChvbGRlc3RNdWx0aSA9PSBuZXh0TXVsdGkpCiAJewogCQkvKiB0 aGVyZSBhcmUgTk8gTXVsdGlYYWN0cyAqLwogCQlvbGRlc3RPZmZzZXQgPSBuZXh0T2Zmc2V0Owog CX0KLQllbHNlIGlmICghZmluZF9tdWx0aXhhY3Rfc3RhcnQob2xkZXN0TXVsdGksICZvbGRlc3RP ZmZzZXQpKQorCWVsc2UKIAl7Ci0JCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coIm9sZGVzdCBN dWx0aVhhY3QgJXUgbm90IGZvdW5kLCBlYXJsaWVzdCBNdWx0aVhhY3QgJXUsIHNraXBwaW5nIHRy dW5jYXRpb24iLAotCQkJCQkJb2xkZXN0TXVsdGksIGVhcmxpZXN0KSkpOwotCQlMV0xvY2tSZWxl YXNlKE11bHRpWGFjdFRydW5jYXRpb25Mb2NrKTsKLQkJcmV0dXJuOworCQlvbGRlc3RPZmZzZXQg PSBmaW5kX211bHRpeGFjdF9zdGFydChvbGRlc3RNdWx0aSk7CiAJfQogCiAJLyoKQEAgLTMyMDIs MTMgKzI3MzEsOSBAQCBUcnVuY2F0ZU11bHRpWGFjdChNdWx0aVhhY3RJZCBuZXdPbGRlc3RNdWx0 aSwgT2lkIG5ld09sZGVzdE11bHRpREIpCiAJCS8qIHRoZXJlIGFyZSBOTyBNdWx0aVhhY3RzICov CiAJCW5ld09sZGVzdE9mZnNldCA9IG5leHRPZmZzZXQ7CiAJfQotCWVsc2UgaWYgKCFmaW5kX211 bHRpeGFjdF9zdGFydChuZXdPbGRlc3RNdWx0aSwgJm5ld09sZGVzdE9mZnNldCkpCisJZWxzZQog CXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygiY2Fubm90IHRydW5jYXRlIHVwIHRvIE11 bHRpWGFjdCAldSBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0IG9uIGRpc2ssIHNraXBwaW5nIHRy dW5jYXRpb24iLAotCQkJCQkJbmV3T2xkZXN0TXVsdGkpKSk7Ci0JCUxXTG9ja1JlbGVhc2UoTXVs dGlYYWN0VHJ1bmNhdGlvbkxvY2spOwotCQlyZXR1cm47CisJCW5ld09sZGVzdE9mZnNldCA9IGZp bmRfbXVsdGl4YWN0X3N0YXJ0KG5ld09sZGVzdE11bHRpKTsKIAl9CiAKIAllbG9nKERFQlVHMSwg InBlcmZvcm1pbmcgbXVsdGl4YWN0IHRydW5jYXRpb246ICIKQEAgLTMyNTgsNyArMjc4Myw3IEBA IFRydW5jYXRlTXVsdGlYYWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11bHRpLCBPaWQgbmV3T2xk ZXN0TXVsdGlEQikKIAlMV0xvY2tSZWxlYXNlKE11bHRpWGFjdEdlbkxvY2spOwogCiAJLyogRmly c3QgdHJ1bmNhdGUgbWVtYmVycyAqLwotCVBlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbihvbGRlc3RP ZmZzZXQsIG5ld09sZGVzdE9mZnNldCk7CisJUGVyZm9ybU1lbWJlcnNUcnVuY2F0aW9uKG5ld09s ZGVzdE9mZnNldCk7CiAKIAkvKiBUaGVuIG9mZnNldHMgKi8KIAlQZXJmb3JtT2Zmc2V0c1RydW5j YXRpb24ob2xkZXN0TXVsdGksIG5ld09sZGVzdE11bHRpKTsKQEAgLTMzNDUsNyArMjg3MCw3IEBA IE11bHRpWGFjdElkUHJlY2VkZXNPckVxdWFscyhNdWx0aVhhY3RJZCBtdWx0aTEsIE11bHRpWGFj dElkIG11bHRpMikKIHN0YXRpYyBib29sCiBNdWx0aVhhY3RPZmZzZXRQcmVjZWRlcyhNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0MSwgTXVsdGlYYWN0T2Zmc2V0IG9mZnNldDIpCiB7Ci0JaW50MzIJCWRp ZmYgPSAoaW50MzIpIChvZmZzZXQxIC0gb2Zmc2V0Mik7CisJaW50NjQJCWRpZmYgPSAoaW50NjQp IChvZmZzZXQxIC0gb2Zmc2V0Mik7CiAKIAlyZXR1cm4gKGRpZmYgPCAwKTsKIH0KQEAgLTM0OTIs NyArMzAxNyw3IEBAIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkg Ki8KIAkJU2V0TXVsdGlYYWN0SWRMaW1pdCh4bHJlYy5lbmRUcnVuY09mZiwgeGxyZWMub2xkZXN0 TXVsdGlEQiwgZmFsc2UpOwogCi0JCVBlcmZvcm1NZW1iZXJzVHJ1bmNhdGlvbih4bHJlYy5zdGFy dFRydW5jTWVtYiwgeGxyZWMuZW5kVHJ1bmNNZW1iKTsKKwkJUGVyZm9ybU1lbWJlcnNUcnVuY2F0 aW9uKHhscmVjLmVuZFRydW5jTWVtYik7CiAKIAkJLyoKIAkJICogRHVyaW5nIFhMT0cgcmVwbGF5 LCBsYXRlc3RfcGFnZV9udW1iZXIgaXNuJ3QgbmVjZXNzYXJpbHkgc2V0IHVwCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKaW5kZXggYmYzZGJkYTkwMS4uYTgxM2EwOTBmYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYwpAQCAtNTA4Myw3ICs1MDgzLDcgQEAgQm9vdFN0cmFwWExPRyh1aW50 MzIgZGF0YV9jaGVja3N1bV92ZXJzaW9uKQogCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFu ZFhpZCgwLCBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQpOwogCWNoZWNrUG9pbnQubmV4dE9pZCA9 IEZpcnN0R2VuYmtpT2JqZWN0SWQ7CiAJY2hlY2tQb2ludC5uZXh0TXVsdGkgPSBGaXJzdE11bHRp WGFjdElkOwotCWNoZWNrUG9pbnQubmV4dE11bHRpT2Zmc2V0ID0gMDsKKwljaGVja1BvaW50Lm5l eHRNdWx0aU9mZnNldCA9IDE7CiAJY2hlY2tQb2ludC5vbGRlc3RYaWQgPSBGaXJzdE5vcm1hbFRy YW5zYWN0aW9uSWQ7CiAJY2hlY2tQb2ludC5vbGRlc3RYaWREQiA9IFRlbXBsYXRlMURiT2lkOwog CWNoZWNrUG9pbnQub2xkZXN0TXVsdGkgPSBGaXJzdE11bHRpWGFjdElkOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1 dW0uYwppbmRleCBlNjc0NWU2MTQ1Li5jOTZmYmYwMDRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpA QCAtMTEzNCw3ICsxMTM0LDcgQEAgdmFjdXVtX2dldF9jdXRvZmZzKFJlbGF0aW9uIHJlbCwgY29u c3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJICogbm9ybWFsbHkgYXV0b3ZhY3V1bV9tdWx0aXhh Y3RfZnJlZXplX21heF9hZ2UsIGJ1dCBtYXkgYmUgbGVzcyBpZiB3ZSBhcmUKIAkgKiBzaG9ydCBv ZiBtdWx0aXhhY3QgbWVtYmVyIHNwYWNlLgogCSAqLwotCWVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJl ZXplX21heF9hZ2UgPSBNdWx0aVhhY3RNZW1iZXJGcmVlemVUaHJlc2hvbGQoKTsKKwllZmZlY3Rp dmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlID0gYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXpl X21heF9hZ2U7CiAKIAkvKgogCSAqIEFsbW9zdCByZWFkeSB0byBzZXQgZnJlZXplIG91dHB1dCBw YXJhbWV0ZXJzOyBjaGVjayBpZiBPbGRlc3RYbWluIG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jCmluZGV4IDBhYjkyMWExNjkuLmVkNWZjMDljMzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv YXV0b3ZhY3V1bS5jCkBAIC0xMTM0LDcgKzExMzQsNyBAQCBkb19zdGFydF93b3JrZXIodm9pZCkK IAogCS8qIEFsc28gZGV0ZXJtaW5lIHRoZSBvbGRlc3QgZGF0bWlubXhpZCB3ZSB3aWxsIGNvbnNp ZGVyLiAqLwogCXJlY2VudE11bHRpID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOwotCW11bHRpRm9y Y2VMaW1pdCA9IHJlY2VudE11bHRpIC0gTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKCk7 CisJbXVsdGlGb3JjZUxpbWl0ID0gcmVjZW50TXVsdGkgLSBhdXRvdmFjdXVtX211bHRpeGFjdF9m cmVlemVfbWF4X2FnZTsKIAlpZiAobXVsdGlGb3JjZUxpbWl0IDwgRmlyc3RNdWx0aVhhY3RJZCkK IAkJbXVsdGlGb3JjZUxpbWl0IC09IEZpcnN0TXVsdGlYYWN0SWQ7CiAKQEAgLTE5MjIsNyArMTky Miw3IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkgKiBub3JtYWxseSBhdXRvdmFjdXVtX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSwgYnV0IG1heSBiZSBsZXNzIGlmIHdlIGFyZQogCSAqIHNob3J0 IG9mIG11bHRpeGFjdCBtZW1iZXIgc3BhY2UuCiAJICovCi0JZWZmZWN0aXZlX211bHRpeGFjdF9m cmVlemVfbWF4X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCWVmZmVj dGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UgPSBhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVl emVfbWF4X2FnZTsKIAogCS8qCiAJICogRmluZCB0aGUgcGdfZGF0YWJhc2UgZW50cnkgYW5kIHNl bGVjdCB0aGUgZGVmYXVsdCBmcmVlemUgYWdlcy4gV2UgdXNlCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0 d2FsLmMKaW5kZXggZmZmNDAxZTQ2OS4uNGFkNjRjZjFlZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVz ZXR3YWwuYwpAQCAtMjY0LDcgKzI2NCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCQkJY2FzZSAnTyc6CiAJCQkJZXJybm8gPSAwOwotCQkJCXNldF9teG9mZiA9IHN0cnRvdWwo b3B0YXJnLCAmZW5kcHRyLCAwKTsKKwkJCQlzZXRfbXhvZmYgPSBzdHJ0b3U2NChvcHRhcmcsICZl bmRwdHIsIDApOwogCQkJCWlmIChlbmRwdHIgPT0gb3B0YXJnIHx8ICplbmRwdHIgIT0gJ1wwJyB8 fCBlcnJubyAhPSAwKQogCQkJCXsKIAkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50 IGZvciBvcHRpb24gJXMiLCAiLU8iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmVzZXR3YWwv dC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jhc2ljLnBsCmluZGV4 IDMyM2NkNDgzY2YuLmUxMDc2NDY4NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwv dC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbApA QCAtMjA3LDcgKzIwNyw3IEBAIHB1c2ggQGNtZCwKICAgc3ByaW50ZigiJWQsJWQiLCBoZXgoJGZp bGVzWzBdKSA9PSAwID8gMyA6IGhleCgkZmlsZXNbMF0pLCBoZXgoJGZpbGVzWy0xXSkpOwogCiBA ZmlsZXMgPSBnZXRfc2xydV9maWxlcygncGdfbXVsdGl4YWN0L29mZnNldHMnKTsKLSRtdWx0ID0g MzIgKiAkYmxja3N6IC8gNDsKKyRtdWx0ID0gMzIgKiAkYmxja3N6IC8gODsKICMgLS1tdWx0aXhh Y3QtaWRzIGFyZ3VtZW50IGlzICJuZXcsb2xkIgogcHVzaCBAY21kLAogICAnLS1tdWx0aXhhY3Qt aWRzJyA9PiBzcHJpbnRmKCIlZCwlZCIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv bXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKaW5kZXggNGU2YjBl ZWMyZi4uNWVlNjMyZGZlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFj dC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApAQCAtMjcsNyArMjcsNyBA QAogCiAjZGVmaW5lIE11bHRpWGFjdElkSXNWYWxpZChtdWx0aSkgKChtdWx0aSkgIT0gSW52YWxp ZE11bHRpWGFjdElkKQogCi0jZGVmaW5lIE1heE11bHRpWGFjdE9mZnNldAkoKE11bHRpWGFjdE9m ZnNldCkgMHhGRkZGRkZGRikKKyNkZWZpbmUgTWF4TXVsdGlYYWN0T2Zmc2V0CVVJTlQ2NENPTlNU KDB4RkZGRkZGRkZGRkZGRkZGRikKIAogLyoKICAqIFBvc3NpYmxlIG11bHRpeGFjdCBsb2NrIG1v ZGVzICgic3RhdHVzIikuICBUaGUgZmlyc3QgZm91ciBtb2RlcyBhcmUgZm9yCkBAIC0xNDMsNyAr MTQzLDYgQEAgZXh0ZXJuIHZvaWQgTXVsdGlYYWN0U2V0TmV4dE1YYWN0KE11bHRpWGFjdElkIG5l eHRNdWx0aSwKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFkdmFuY2VOZXh0TVhhY3QoTXVsdGlYYWN0 SWQgbWluTXVsdGksCiAJCQkJCQkJCQkgIE11bHRpWGFjdE9mZnNldCBtaW5NdWx0aU9mZnNldCk7 CiBleHRlcm4gdm9pZCBNdWx0aVhhY3RBZHZhbmNlT2xkZXN0KE11bHRpWGFjdElkIG9sZGVzdE11 bHRpLCBPaWQgb2xkZXN0TXVsdGlEQik7Ci1leHRlcm4gaW50CU11bHRpWGFjdE1lbWJlckZyZWV6 ZVRocmVzaG9sZCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292 ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJICAgdm9pZCAqcmVj ZGF0YSwgdWludDMyIGxlbik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4 YWN0X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0X2ludGVybmFsLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzllNzRhMjFjNwotLS0gL2Rl di9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3RfaW50ZXJuYWwuaApAQCAt MCwwICsxLDExNSBAQAorLyoKKyAqIG11bHRpeGFjdF9pbnRlcm5hbC5oCisgKgorICogSW50ZXJu YWwgZGVmaW5pdGlvbnMgZm9yIHRoZSBvbi1kaXNrIGZvcm1hdCBvZiBtdWx0aXhhY3QgbWFuYWdl ci4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwg UmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1 ZGUvYWNjZXNzL211bHRpeGFjdF9pbnRlcm5hbC5oCisgKi8KKyNpZm5kZWYgTVVMVElYQUNUX0lO VEVSTkFMX0gKKyNkZWZpbmUgTVVMVElYQUNUX0lOVEVSTkFMX0gKKworLyogRklYTUU6IGhhZCB0 byBkdXBsaWNhdGUgdGhpcyAqLworI2RlZmluZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UCTMyCisK Ky8qCisgKiBEZWZpbmVzIGZvciBNdWx0aVhhY3RPZmZzZXQgcGFnZSBzaXplcy4gIEEgcGFnZSBp cyB0aGUgc2FtZSBCTENLU1ogYXMgaXMKKyAqIHVzZWQgZXZlcnl3aGVyZSBlbHNlIGluIFBvc3Rn cmVzLgorICovCisKKy8qIFdlIG5lZWQgZm91ciBieXRlcyBwZXIgb2Zmc2V0ICovCisjZGVmaW5l IE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFIChCTENLU1ogLyBzaXplb2YoTXVsdGlYYWN0T2Zm c2V0KSkKKworc3RhdGljIGlubGluZSBpbnQ2NAorTXVsdGlYYWN0SWRUb09mZnNldFBhZ2UoTXVs dGlYYWN0SWQgbXVsdGkpCit7CisJcmV0dXJuIG11bHRpIC8gTVVMVElYQUNUX09GRlNFVFNfUEVS X1BBR0U7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitNdWx0aVhhY3RJZFRvT2Zmc2V0RW50cnko TXVsdGlYYWN0SWQgbXVsdGkpCit7CisJcmV0dXJuIG11bHRpICUgTVVMVElYQUNUX09GRlNFVFNf UEVSX1BBR0U7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50NjQKK011bHRpWGFjdElkVG9PZmZzZXRT ZWdtZW50KE11bHRpWGFjdElkIG11bHRpKQoreworCXJldHVybiBNdWx0aVhhY3RJZFRvT2Zmc2V0 UGFnZShtdWx0aSkgLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOworfQorCisvKgorICogVGhlIHNp dHVhdGlvbiBmb3IgbWVtYmVycyBpcyBhIGJpdCBtb3JlIGNvbXBsZXg6IHdlIHN0b3JlIG9uZSBi eXRlIG9mCisgKiBhZGRpdGlvbmFsIGZsYWcgYml0cyBmb3IgZWFjaCBUcmFuc2FjdGlvbklkLiAg VG8gZG8gdGhpcyB3aXRob3V0IGdldHRpbmcKKyAqIGludG8gYWxpZ25tZW50IGlzc3Vlcywgd2Ug c3RvcmUgZm91ciBieXRlcyBvZiBmbGFncywgYW5kIHRoZW4gdGhlCisgKiBjb3JyZXNwb25kaW5n IDQgWGlkcy4gIEVhY2ggc3VjaCA1LXdvcmQgKDIwLWJ5dGUpIHNldCB3ZSBjYWxsIGEgImdyb3Vw IiwgYW5kCisgKiBhcmUgc3RvcmVkIGFzIGEgd2hvbGUgaW4gcGFnZXMuICBUaHVzLCB3aXRoIDhr QiBCTENLU1osIHdlIGtlZXAgNDA5IGdyb3VwcworICogcGVyIHBhZ2UuICBUaGlzIHdhc3RlcyAx MiBieXRlcyBwZXIgcGFnZSwgYnV0IHRoYXQncyBPSyAtLSBzaW1wbGljaXR5IChhbmQKKyAqIHBl cmZvcm1hbmNlKSB0cnVtcHMgc3BhY2UgZWZmaWNpZW5jeSBoZXJlLgorICoKKyAqIE5vdGUgdGhh dCB0aGUgIm9mZnNldCIgbWFjcm9zIHdvcmsgd2l0aCBieXRlIG9mZnNldCwgbm90IGFycmF5IGlu ZGV4ZXMsIHNvCisgKiBhcml0aG1ldGljIG11c3QgYmUgZG9uZSB1c2luZyAiY2hhciAqIiBwb2lu dGVycy4KKyAqLworLyogV2UgbmVlZCBlaWdodCBiaXRzIHBlciB4YWN0LCBzbyBvbmUgeGFjdCBm aXRzIGluIGEgYnl0ZSAqLworI2RlZmluZSBNWEFDVF9NRU1CRVJfQklUU19QRVJfWEFDVAkJCTgK KyNkZWZpbmUgTVhBQ1RfTUVNQkVSX0ZMQUdTX1BFUl9CWVRFCQkJMQorI2RlZmluZSBNWEFDVF9N RU1CRVJfWEFDVF9CSVRNQVNLCSgoMSA8PCBNWEFDVF9NRU1CRVJfQklUU19QRVJfWEFDVCkgLSAx KQorCisvKiBob3cgbWFueSBmdWxsIGJ5dGVzIG9mIGZsYWdzIGFyZSB0aGVyZSBpbiBhIGdyb3Vw PyAqLworI2RlZmluZSBNVUxUSVhBQ1RfRkxBR0JZVEVTX1BFUl9HUk9VUAkJNAorI2RlZmluZSBN VUxUSVhBQ1RfTUVNQkVSU19QRVJfTUVNQkVSR1JPVVAJXAorCShNVUxUSVhBQ1RfRkxBR0JZVEVT X1BFUl9HUk9VUCAqIE1YQUNUX01FTUJFUl9GTEFHU19QRVJfQllURSkKKy8qIHNpemUgaW4gYnl0 ZXMgb2YgYSBjb21wbGV0ZSBncm91cCAqLworI2RlZmluZSBNVUxUSVhBQ1RfTUVNQkVSR1JPVVBf U0laRSBcCisJKHNpemVvZihUcmFuc2FjdGlvbklkKSAqIE1VTFRJWEFDVF9NRU1CRVJTX1BFUl9N RU1CRVJHUk9VUCArIE1VTFRJWEFDVF9GTEFHQllURVNfUEVSX0dST1VQKQorI2RlZmluZSBNVUxU SVhBQ1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFIChCTENLU1ogLyBNVUxUSVhBQ1RfTUVNQkVSR1JP VVBfU0laRSkKKyNkZWZpbmUgTVVMVElYQUNUX01FTUJFUlNfUEVSX1BBR0UJXAorCShNVUxUSVhB Q1RfTUVNQkVSR1JPVVBTX1BFUl9QQUdFICogTVVMVElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdS T1VQKQorCisvKiBwYWdlIGluIHdoaWNoIGEgbWVtYmVyIGlzIHRvIGJlIGZvdW5kICovCitzdGF0 aWMgaW5saW5lIGludDY0CitNWE9mZnNldFRvTWVtYmVyUGFnZShNdWx0aVhhY3RPZmZzZXQgb2Zm c2V0KQoreworCXJldHVybiBvZmZzZXQgLyBNVUxUSVhBQ1RfTUVNQkVSU19QRVJfUEFHRTsKK30K Kworc3RhdGljIGlubGluZSBpbnQ2NAorTVhPZmZzZXRUb01lbWJlclNlZ21lbnQoTXVsdGlYYWN0 T2Zmc2V0IG9mZnNldCkKK3sKKwlyZXR1cm4gTVhPZmZzZXRUb01lbWJlclBhZ2Uob2Zmc2V0KSAv IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7Cit9CisKKy8qIExvY2F0aW9uIChieXRlIG9mZnNldCB3 aXRoaW4gcGFnZSkgb2YgZmxhZyB3b3JkIGZvciBhIGdpdmVuIG1lbWJlciAqLworc3RhdGljIGlu bGluZSBpbnQKK01YT2Zmc2V0VG9GbGFnc09mZnNldChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQor eworCU11bHRpWGFjdE9mZnNldCBncm91cCA9IG9mZnNldCAvIE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9NRU1CRVJHUk9VUDsKKwlpbnQJCQlncm91cG9ucGcgPSBncm91cCAlIE1VTFRJWEFDVF9NRU1C RVJHUk9VUFNfUEVSX1BBR0U7CisJaW50CQkJYnl0ZW9mZiA9IGdyb3Vwb25wZyAqIE1VTFRJWEFD VF9NRU1CRVJHUk9VUF9TSVpFOworCisJcmV0dXJuIGJ5dGVvZmY7Cit9CisKK3N0YXRpYyBpbmxp bmUgaW50CitNWE9mZnNldFRvRmxhZ3NCaXRTaGlmdChNdWx0aVhhY3RPZmZzZXQgb2Zmc2V0KQor eworCWludAkJCW1lbWJlcl9pbl9ncm91cCA9IG9mZnNldCAlIE1VTFRJWEFDVF9NRU1CRVJTX1BF Ul9NRU1CRVJHUk9VUDsKKwlpbnQJCQlic2hpZnQgPSBtZW1iZXJfaW5fZ3JvdXAgKiBNWEFDVF9N RU1CRVJfQklUU19QRVJfWEFDVDsKKworCXJldHVybiBic2hpZnQ7Cit9CisKKy8qIExvY2F0aW9u IChieXRlIG9mZnNldCB3aXRoaW4gcGFnZSkgb2YgVHJhbnNhY3Rpb25JZCBvZiBnaXZlbiBtZW1i ZXIgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitNWE9mZnNldFRvTWVtYmVyT2Zmc2V0KE11bHRpWGFj dE9mZnNldCBvZmZzZXQpCit7CisJaW50CQkJbWVtYmVyX2luX2dyb3VwID0gb2Zmc2V0ICUgTVVM VElYQUNUX01FTUJFUlNfUEVSX01FTUJFUkdST1VQOworCisJcmV0dXJuIE1YT2Zmc2V0VG9GbGFn c09mZnNldChvZmZzZXQpICsKKwkJTVVMVElYQUNUX0ZMQUdCWVRFU19QRVJfR1JPVVAgKworCQlt ZW1iZXJfaW5fZ3JvdXAgKiBzaXplb2YoVHJhbnNhY3Rpb25JZCk7Cit9CisKKyNlbmRpZgkJCQkJ CQkvKiBNVUxUSVhBQ1RfSU5URVJOQUxfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYy5o IGIvc3JjL2luY2x1ZGUvYy5oCmluZGV4IGExNGM2MzE1MTYuLjMxODE5NGY3OGQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTYxOCw3ICs2MTgs NyBAQCB0eXBlZGVmIHVpbnQzMiBTdWJUcmFuc2FjdGlvbklkOwogLyogTXVsdGlYYWN0SWQgbXVz dCBiZSBlcXVpdmFsZW50IHRvIFRyYW5zYWN0aW9uSWQsIHRvIGZpdCBpbiB0X3htYXggKi8KIHR5 cGVkZWYgVHJhbnNhY3Rpb25JZCBNdWx0aVhhY3RJZDsKIAotdHlwZWRlZiB1aW50MzIgTXVsdGlY YWN0T2Zmc2V0OwordHlwZWRlZiB1aW50NjQgTXVsdGlYYWN0T2Zmc2V0OwogCiB0eXBlZGVmIHVp bnQzMiBDb21tYW5kSWQ7CiAKLS0gCjIuNDMuMAoK --0000000000007f0165062cd8ca3f Content-Type: text/plain; charset="US-ASCII"; name="v13-0006-TEST-try-to-replicate-buggy-oldest-offset.patch.txt" Content-Disposition: attachment; filename="v13-0006-TEST-try-to-replicate-buggy-oldest-offset.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gte5 RnJvbSA0YTJlNjRiNDRjZjhlYzIyYTI2NGQ4ZmE0OTU0MzJmNTM1NDgyZmI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgMjcgRGVjIDIwMjQgMTk6Mzk6NTggKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMyA2Lzdd IFRFU1Q6IHRyeSB0byByZXBsaWNhdGUgYnVnZ3kgb2xkZXN0IG9mZnNldAoKLS0tCiBzcmMvYmlu L3BnX3VwZ3JhZGUvdC8wMDVfb2Zmc2V0LnBsIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDVfb2Zmc2V0LnBsCmluZGV4IGRmODQxODZkZTQuLjJkOTFkMTAxZmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdXBncmFkZS90LzAwNV9vZmZzZXQucGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3QvMDA1X29mZnNldC5wbApAQCAtMzA1LDYgKzMwNSw4IEBAIG15IEBURVNUUyA9ICgKIAkxMDAs IDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsCiAJIyBzZWxmIHVwZ3JhZGUKIAkxMDAwLAor CSMgYnVnZ3kKKwkyMDAwCiApOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NjAsNCAr NTYyLDYxIEBAIFNLSVA6CiAJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7CiB9CiAKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKyMgQnVnZ3kKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor U0tJUDoKK3sKKwlteSAkVEVTVF9OTyA9IDIwMDA7CisJc2tpcCAiZG8gbm90IHRlc3QgY2FzZSAk VEVTVF9OTyIsIDEKKwkJdW5sZXNzICggZ3JlcCggL14kVEVTVF9OTyQvLCBAVEVTVFMgKSApOwor CisJaWYgKCFkZWZpbmVkKCRFTlZ7b2xkaW5zdGFsbH0pKQorCXsKKwkJZGllICJvbGRpbnN0YWxs IGlzIG5vdCBkZWZpbmVkIjsKKwl9CisKKwlteSAkZGJuYW1lID0gJ2J1Z2d5JzsKKwlteSAkbmV3 bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygibmV3XyRkYm5hbWUiKTsKKwlt eSAkb2xkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygib2xkXyRkYm5hbWUi LAorCQkJCQlpbnN0YWxsX3BhdGggPT4gJEVOVntvbGRpbnN0YWxsfSk7CisJJG5ld25vZGUtPmlu aXQ7CisJJG9sZG5vZGUtPmluaXQoZm9yY2VfaW5pdGRiID0+IDEpOworCisJJG9sZG5vZGUtPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxKAorCQlhdXRvdmFjdXVtID0gb2ZmCisJCW1h eF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAyCisJCWZzeW5jID0gb2ZmCisJKSk7CisJJG9sZG5v ZGUtPnN0YXJ0OworCisJbXhpZF9nZW4yKCRvbGRub2RlLCAnRk9PJywgMS4yNSk7CisJbXhpZF9n ZW4yKCRvbGRub2RlLCAnQkFSJywgMS4yNSk7CisKKwkkb2xkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoCisJCURST1AgVEFCTEUgQkFSOworCQlDSEVDS1BPSU5UOworCSkpOworCSRvbGRu b2RlLT5zdG9wOworCisJdW5saW5rKCRvbGRub2RlLT5kYXRhX2RpciAuICIvcGdfbXVsdGl4YWN0 L29mZnNldHMvMDAwMCIpOworCisJY29tbWFuZF9vaygKKwkJWworCQkJJ3BnX3VwZ3JhZGUnLCAn LS1uby1zeW5jJywKKwkJCSctZCcsICRvbGRub2RlLT5kYXRhX2RpciwKKwkJCSctRCcsICRuZXdu b2RlLT5kYXRhX2RpciwKKwkJCSctYicsICRvbGRub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXIn KSwKKwkJCSctQicsICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXInKSwKKwkJCSctcycs ICRuZXdub2RlLT5ob3N0LAorCQkJJy1wJywgJG9sZG5vZGUtPnBvcnQsCisJCQknLVAnLCAkbmV3 bm9kZS0+cG9ydCwKKwkJCSctLWNvcHknCisJCV0sCisJCSdydW4gb2YgcGdfdXBncmFkZScpOwor CisJb2soMSwgIlRFU1QgJFRFU1RfTk8gUEFTU0VEIik7Cit9CisKIGRvbmVfdGVzdGluZygpOwot LSAKMi40My4wCgo= --0000000000007f0165062cd8ca3f Content-Type: text/plain; charset="US-ASCII"; name="v13-0007-TEST-bump-catver.patch.txt" Content-Disposition: attachment; filename="v13-0007-TEST-bump-catver.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6hz8gtk6 RnJvbSA1MmI3MDE5YjRiOTY0YmQyMjFkZTJjODkxZDJiMWYwNzNiNzQ2NWJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXhpbSBPcmxvdiA8b3Jsb3ZtZ0BnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTMgTm92IDIwMjQgMTY6MzQ6MzQgKzAzMDAKU3ViamVjdDogW1BBVENIIHYxMyA3Lzdd IFRFU1Q6IGJ1bXAgY2F0dmVyCgotLS0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgg IHwgMiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggfCAyICstCiAyIGZpbGVz IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3Vw Z3JhZGUuaAppbmRleCA5YjNkNjQ1YjA4Li4wZmQ3OTFjNDQyIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdy YWRlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gY2hhciAqb3V0cHV0X2ZpbGVzW107CiAg KgogICogWFhYOiBzaG91bGQgYmUgY2hhbmdlZCB0byB0aGUgYWN0dWFsIENBVEFMT0dfVkVSU0lP Tl9OTyBvbiBjb21taXQuCiAgKi8KLSNkZWZpbmUgTVVMVElYQUNUT0ZGU0VUX0ZPUk1BVENIQU5H RV9DQVRfVkVSIDIwMjQwOTA0MQorI2RlZmluZSBNVUxUSVhBQ1RPRkZTRVRfRk9STUFUQ0hBTkdF X0NBVF9WRVIgMjAyNTAxMjgzCiAKIC8qCiAgKiBsYXJnZSBvYmplY3QgY2h1bmsgc2l6ZSBhZGRl ZCB0byBwZ19jb250cm9sZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggNmVkYWEy MDM2OC4uZGZjYjk0MDUwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKQEAgLTU3LDYgKzU3 LDYgQEAKICAqLwogCiAvKgkJCQkJCQl5eXl5bW1kZE4gKi8KLSNkZWZpbmUgQ0FUQUxPR19WRVJT SU9OX05PCTIwMjUwMTI4MgorI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNTAxMjgzCiAK ICNlbmRpZgotLSAKMi40My4wCgo= --0000000000007f0165062cd8ca3f--