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 1u0QWz-000qEE-II for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Apr 2025 19:47:18 +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 1u0QWy-00AQZY-8T for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Apr 2025 19:47:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u0QWx-00AQZP-Ay for pgsql-hackers@lists.postgresql.org; Thu, 03 Apr 2025 19:47:15 +0000 Received: from mail-qk1-x72f.google.com ([2607:f8b0:4864:20::72f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u0QWt-003DyL-1e for pgsql-hackers@lists.postgresql.org; Thu, 03 Apr 2025 19:47:14 +0000 Received: by mail-qk1-x72f.google.com with SMTP id af79cd13be357-7c559b3eb0bso77946685a.1 for ; Thu, 03 Apr 2025 12:47:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1743709629; x=1744314429; darn=lists.postgresql.org; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:from:to:cc:subject :date:message-id:reply-to; bh=V/eGhk1wgDge1SonrAUmpCCZjH4UpYVI3Za5qkES9Qg=; b=Y98O4HtaQA+J9pGKc1UfCJELE60/2Ls8T9eSDZCh+QWNLijcbw+oIYWsSnD8lh/9Nd FH8L31rKBvgHceHtSduQEm/ZPEntAjvss5n/5K9N5xriaNDOOPXGgs94G/WDJx2/VHql QuFzkmjt0EwHDj5eIxWm3/PD55LeZG2xFyQ0iPDIeQu6GtRBK6y/fn65Trv4oS3OTzzZ +YPxbTJt7GV0XhEKNerLypRucZPfcLvOxGR/ehlOwGVvMK/ShyfF3sKo/NujmpKGH2sQ TyFHBiJLLswnqoEp7uit7TMfj+AS6MC4pcoIhEyx9GxF1MrF3Szjdp0WjYNWj0/RWQST gPVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743709629; x=1744314429; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=V/eGhk1wgDge1SonrAUmpCCZjH4UpYVI3Za5qkES9Qg=; b=df1QrY8TpHzNyNOshH0A6T/tXov0RVWlNW6cMIk0sRKvGwIgGBo8VxfHzgPCta1dtS 0R2lZ5geu88vHdw91x8mfm2T4cimX1tfngBx/qc2Y4QCywAIQsp94CPQsTg7iFUzeqWz HJ5DJ7Q06xoiPH5chqn6VuLSkyeO1HlajaOtWsbIWxu8PW5lP1B8vVkA8cjd/i4BlQz3 6dt6qcyUGgCmXRHRlFUJ+S4LUXQjgO8rhKD93nGOepmzVB1YFiGO53AaRCuWC/0egIrL gMvQqdCXtQsTLQ/7uc1J4YIK9r/5pktj9VN5qZGSoQTHd+8BXYb8s21RjBdsV2tuAqbz fs7Q== X-Forwarded-Encrypted: i=1; AJvYcCXBUZETs2pJs5KzdnzP7zMq8eJWqOkoFtArAY0DSDktHadAYOH5A0mUft6aaoZJAxvmULIuvYMP3GhZyVhD@lists.postgresql.org X-Gm-Message-State: AOJu0YwqmfmP7fzFEuR8ULhvZUDxw1hJdN9ifBrfyW+t6d2HvoxGT/D1 US/rayauwxsDHe4XuvHZZcp1cuiOPPpugohmxR5MyVOK1rR0E7J3Qd+nMKtfsgM= X-Gm-Gg: ASbGncusbYuSjKG8uZ3EaNIzX2Y3fT9pag8tqlEULUaGmCS4LEaRoHoSAtxC4s6NbXC O3A9/bi7146blQLFXQMMzIKeTwcNzOpPscK9kLmHrAUwd9YLmL7sx54fyGMM+6+6kmDUlL/RWcQ qKlGD48/ZXiUIFAMoyfle25e5Iz4FhBu5DfWPTWt3eaBxB4zKx9NdrYT1ZimL8Y3ClxvziIrWRz KPH1kc4KriE7IMV+u1oIBKNksurQn+59b7mIw2igQyBC9gz9JDcJ/Z97VhJA0xh5FLEZR7sSN5T Df8av2hz/XAZ7ovhY4Itd6+WPPPUvb4lm9ox1sI/+56mwavc5R5FNqU= X-Google-Smtp-Source: AGHT+IHYhULSEH56ozAmxr2Otg6PKtWOvrDvEOPyKse+s1/jesikpqHKtv6x4G2kTVPlbwaPxuUAnQ== X-Received: by 2002:a05:6214:21c4:b0:6e6:6477:de09 with SMTP id 6a1803df08f44-6f064b6d12fmr3344206d6.43.1743709628500; Thu, 03 Apr 2025 12:47:08 -0700 (PDT) Received: from ?IPV6:2605:a601:a681:6b00::1cb? ([2605:a601:a681:6b00::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-6ef0f00f158sm11243396d6.35.2025.04.03.12.47.06 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 03 Apr 2025 12:47:07 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------gUQH0rLy2TceccnJKPIksSaq" Message-ID: <616efe2c-3986-43cf-b88c-4435849acf9e@dunslane.net> Date: Thu, 3 Apr 2025 15:47:05 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Non-text mode for pg_dumpall To: Mahendra Singh Thalor , =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: jian he , Srinath Reddy , pgsql-hackers@lists.postgresql.org References: <202503311812.vxg5b7rzfgf6@alvherre.pgsql> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAmwQTAQgARQIbAwIX gAIZAQULCQgHAgMiAgEGFQoJCAsCBBYCAwECHgcWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUC ZFlxxwUJGVGAbgAKCRCZ+n/LWfw7gXikB/9ZdcUy6CTBFIIuL/bVsc1eLEW/gJBjJBF6HxNY xgEkAgXAp4Lg4A5U+QB9GouFr7+GYxF0BU4hzoGhNPUWltxnHdMWP8nC/38LAqgMi8L/bbsm HW5YPBdWYaAZAPJQVfOAgjTbRUb26KSprpyrrJKW0ZmrZfjhNPcQ72jpWzoPLQqx2X6B0fru 1jq+cBh8lb6r1mJTim1T3JIn+F/v5VpdQS+EL8xqsHkfzKjIPsW3CIXpkypSk6saA55Rkkbl 26AW8ftPVB0Q6Lnn6FLt9CP0MGNixBQ55yq8r1K+nCBvCCjvQjM8RDm0UUum0WNl+ifQgTLO E8TWEnwVtkBf+3QWzsBNBE7KWFkBCADRnOM0FCzsYW6jtncg+dWIagjUZpvaClmqn/sJluLa Q3v1VXMQJzYs3eC1gh386W+XBwLRpDj3jzH81lX+p73Re3d3oJW7X+ffsxuzu5ZVdMUkqBYo nkAbKxr6gyJ12F/+JkUVzLcoTN+d/7YsQvUVi7NaKH8mJgjz112O4fUe3p9wfAaFa0RXHc5S GPzRTYRRlv/XZBIho4J2tkZOnteZJZ+GbxQVlINt6fd8P6al3MWOvpP/ExJPguEfjOsO6Njy xjo3WfpD4lHMOR/Oc3/8mScEF84rF2jXbsFgelWnbPWAvXY+pD0dXOFRkagGmC/viwBDqq5b 5tk76kKmUbZxABEBAAHCwHwEGAEIACYCGwwWIQTkPlhGHfx8v0RpFaWZ+n/LWfw7gQUCZFlx 5wUJGVGAjgAKCRCZ+n/LWfw7gf+iB/4g8CPY5jihf5r/8EsoIGe2H+dpVmpPF8YGBzTIvCz/ fQoOq8AX/pE76QEuFnFZWfjw+wgBXgCVmkox2Eflkk6z4ND3pcwGZ6CfCxTQCDk/dij+2DQ4 6bmDCy/sBgcbz9mTpoLC11HLoPae6YN9nBNQRZDcEFEu54OaVOqlIdbA6m+POIBCXZdHOFc0 WoDTgxHRzC1jgQNidyd6tKqcsVJs0dzF0oKTmFFmUAqTdJO12LBuNA1rlqrR3EtpYk8B/wtS 5dIMD7Q8hwQpL+4C6GNpb6ZKnPkLi47pDOLhz2qBrqN+rqUEsT3YnExYpzj5yOBi+FlmV1Hw 49QYe1sn2ZPs In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------gUQH0rLy2TceccnJKPIksSaq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2025-04-01 Tu 1:59 AM, Mahendra Singh Thalor wrote: > On Mon, 31 Mar 2025 at 23:43, Álvaro Herrera wrote: >> Hi >> >> FWIW I don't think the on_exit_nicely business is in final shape just >> yet. We're doing something super strange and novel about keeping track >> of an array index, so that we can modify it later. Or something like >> that, I think? That doesn't sound all that nice to me. Elsewhere it >> was suggested that we need some way to keep track of the list of things >> that need cleanup (a list of connections IIRC?) -- perhaps in a >> thread-local variable or a global or something -- and we install the >> cleanup function once, and that reads from the variable. The program >> can add things to the list, or remove them, at will; and we don't need >> to modify the cleanup function in any way. >> >> -- >> Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/ > Thanks Álvaro for the feedback. > > I removed the old handling of on_exit_nicely_list from the last patch > set and added one simple function to just update the archive handle in > shutdown_info. (shutdown_info.AHX = AHX;) > > For first database, we will add entry into on_exit_nicely_list array > and for rest database, we will update only shutdown_info as we already > closed connection for previous database.With this fix, we will not > touch entry of on_exit_nicely_list for each database. > > Here, I am attaching updated patches. > OK, looks good. here's my latest. I'm currently working on tidying up docco and comments. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------gUQH0rLy2TceccnJKPIksSaq Content-Type: text/x-patch; charset=UTF-8; name="v20250403-0001-Move-common-pg_dump-code-related-to-connec.patch" Content-Disposition: attachment; filename*0="v20250403-0001-Move-common-pg_dump-code-related-to-connec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhZWE0YWI0MGY0ZDQ2MTE0MWJhOTJiNTA5ODZiNjhmMDM2ZDA0NGNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVu QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwMToxODo0NiArMDUzMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjUwNDAzIDEvNF0gTW92ZSBjb21tb24gcGdfZHVtcCBjb2RlIHJl bGF0ZWQgdG8gY29ubmVjdGlvbnMKIHRvIGEgbmV3IGZpbGUKCkNvbm5lY3REYXRhYmFzZSBp cyB1c2VkIGJ5IHBnX2R1bXBhbGwsIHBnX3Jlc3RvcmUgYW5kIHBnX2R1bXAgc28gbW92ZQpj b21tb24gY29kZSB0byBuZXcgZmlsZS4KCm5ldyBmaWxlIG5hbWU6IGNvbm5lY3RkYi5jCgpB dXRob3I6ICAgIE1haGVuZHJhIFNpbmdoIFRoYWxvciA8bWFoaTZydW5AZ21haWwuY29tPgot LS0KIHNyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgNSArLQogc3Jj L2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5jICAgICAgICAgIHwgMjk0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKwogc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5oICAgICAgICAgIHwg IDI2ICsrKwogc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkICAgICAgICAgIHwgICAxICsK IHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaCAgICAgICAgICB8ICAgNiArLQogc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIHwgICA2ICstCiBzcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2RiLmMgICAgICAgfCAgNzkgKy0tLS0tLQogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cGFsbC5jICAgICAgICAgfCAyNzggKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogOSBmaWxl cyBjaGFuZ2VkLCAzNTIgaW5zZXJ0aW9ucygrKSwgMzQ1IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuaAoKZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmlsZQppbmRleCAy MzNhZDE1Y2E3NS4uZmE3OTU4ODNlOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9N YWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKQEAgLTMxLDYgKzMxLDcg QEAgT0JKUyA9IFwKIAljb21wcmVzc19sejQubyBcCiAJY29tcHJlc3Nfbm9uZS5vIFwKIAlj b21wcmVzc196c3RkLm8gXAorCWNvbm5lY3RkYi5vIFwKIAlkdW1wdXRpbHMubyBcCiAJZmls dGVyLm8gXAogCXBhcmFsbGVsLm8gXApAQCAtNTAsOCArNTEsOCBAQCBwZ19kdW1wOiBwZ19k dW1wLm8gY29tbW9uLm8gcGdfZHVtcF9zb3J0Lm8gJChPQkpTKSB8IHN1Ym1ha2UtbGlicHEg c3VibWFrZS1saWJwZwogcGdfcmVzdG9yZTogcGdfcmVzdG9yZS5vICQoT0JKUykgfCBzdWJt YWtlLWxpYnBxIHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChD QykgJChDRkxBR1MpIHBnX3Jlc3RvcmUubyAkKE9CSlMpICQoTERGTEFHUykgJChMREZMQUdT X0VYKSAkKExJQlMpIC1vICRAJChYKQogCi1wZ19kdW1wYWxsOiBwZ19kdW1wYWxsLm8gZHVt cHV0aWxzLm8gZmlsdGVyLm8gJChXSU4zMlJFUykgfCBzdWJtYWtlLWxpYnBxIHN1Ym1ha2Ut bGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCi0JJChDQykgJChDRkxBR1MpIHBnX2R1 bXBhbGwubyBkdW1wdXRpbHMubyBmaWx0ZXIubyAkKFdJTjMyUkVTKSAkKExERkxBR1MpICQo TERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKK3BnX2R1bXBhbGw6IHBnX2R1bXBhbGwu byAkKE9CSlMpIHwgc3VibWFrZS1saWJwcSBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxp YnBnZmV1dGlscworCSQoQ0MpICQoQ0ZMQUdTKSBwZ19kdW1wYWxsLm8gJChPQkpTKSAkKExE RkxBR1MpICQoTERGTEFHU19FWCkgJChMSUJTKSAtbyAkQCQoWCkKIAogaW5zdGFsbDogYWxs IGluc3RhbGxkaXJzCiAJJChJTlNUQUxMX1BST0dSQU0pIHBnX2R1bXAkKFgpICckKERFU1RE SVIpJChiaW5kaXIpJy9wZ19kdW1wJChYKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L2Nvbm5lY3RkYi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZTU5M2I3MGU4MQotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYwpAQCAtMCwwICsxLDI5NCBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogY29ubmVjdGRiLmMKKyAqICAgIFRoaXMg aXMgYSBjb21tb24gZmlsZSBjb25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZS4KKyAqCisgKiBQ b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJ T04KKyAqICAgIHNyYy9iaW4vcGdfZHVtcC9jb25uZWN0ZGIuYworICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVk ZSAiY29tbW9uL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2lu Y2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJjb25uZWN0ZGIuaCIKKyNpbmNs dWRlICJkdW1wdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIK Kworc3RhdGljIGNoYXIgKmNvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtleXdvcmRz LCBjb25zdCBjaGFyICoqdmFsdWVzKTsKKworLyoKKyAqIENvbm5lY3REYXRhYmFzZQorICoK KyAqIE1ha2UgYSBkYXRhYmFzZSBjb25uZWN0aW9uIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRl cnMuICBBbgorICogaW50ZXJhY3RpdmUgcGFzc3dvcmQgcHJvbXB0IGlzIGF1dG9tYXRpY2Fs bHkgaXNzdWVkIGlmIHJlcXVpcmVkLgorICoKKyAqIElmIGZhaWxfb25fZXJyb3IgaXMgZmFs c2UsIHdlIHJldHVybiBOVUxMIHdpdGhvdXQgcHJpbnRpbmcgYW55IG1lc3NhZ2UKKyAqIG9u IGZhaWx1cmUsIGJ1dCBwcmVzZXJ2ZSBhbnkgcHJvbXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBu ZXh0IHRyeS4KKyAqCisgKiBPbiBzdWNjZXNzLCB0aGUgJ2Nvbm5zdHInIGlzIHNldCB0byBh IGNvbm5lY3Rpb24gc3RyaW5nIGNvbnRhaW5pbmcKKyAqIHRoZSBvcHRpb25zIHVzZWQgYW5k ICdzZXJ2ZXJfdmVyc2lvbicgaXMgc2V0IHRvIHZlcnNpb24gc28gdGhhdCBjYWxsZXIKKyAq IGNhbiB1c2UgdGhlbS4KKyAqLworUEdjb25uICoKK0Nvbm5lY3REYXRhYmFzZShjb25zdCBj aGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fc3RyaW5nLAorCQkJCWNvbnN0 IGNoYXIgKnBnaG9zdCwgY29uc3QgY2hhciAqcGdwb3J0LCBjb25zdCBjaGFyICpwZ3VzZXIs CisJCQkJdHJpdmFsdWUgcHJvbXB0X3Bhc3N3b3JkLCBib29sIGZhaWxfb25fZXJyb3IsIGNv bnN0IGNoYXIgKnByb2duYW1lLAorCQkJCWNvbnN0IGNoYXIgKipjb25uc3RyLCBpbnQgKnNl cnZlcl92ZXJzaW9uLCBjaGFyICpwYXNzd29yZCwKKwkJCQljaGFyICpvdmVycmlkZV9kYm5h bWUpCit7CisJUEdjb25uCSAgICpjb25uOworCWJvb2wJCW5ld19wYXNzOworCWNvbnN0IGNo YXIgKnJlbW90ZXZlcnNpb25fc3RyOworCWludAkJCW15X3ZlcnNpb247CisJY29uc3QgY2hh ciAqKmtleXdvcmRzID0gTlVMTDsKKwljb25zdCBjaGFyICoqdmFsdWVzID0gTlVMTDsKKwlQ UWNvbm5pbmZvT3B0aW9uICpjb25uX29wdHMgPSBOVUxMOworCWludAkJCXNlcnZlcl92ZXJz aW9uX3RlbXA7CisKKwlpZiAocHJvbXB0X3Bhc3N3b3JkID09IFRSSV9ZRVMgJiYgIXBhc3N3 b3JkKQorCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9tcHQoIlBhc3N3b3JkOiAiLCBmYWxzZSk7 CisKKwkvKgorCSAqIFN0YXJ0IHRoZSBjb25uZWN0aW9uLiAgTG9vcCB1bnRpbCB3ZSBoYXZl IGEgcGFzc3dvcmQgaWYgcmVxdWVzdGVkIGJ5CisJICogYmFja2VuZC4KKwkgKi8KKwlkbwor CXsKKwkJaW50CQkJYXJnY291bnQgPSA4OworCQlQUWNvbm5pbmZvT3B0aW9uICpjb25uX29w dDsKKwkJY2hhcgkgICAqZXJyX21zZyA9IE5VTEw7CisJCWludAkJCWkgPSAwOworCisJCWZy ZWUoa2V5d29yZHMpOworCQlmcmVlKHZhbHVlcyk7CisJCVBRY29ubmluZm9GcmVlKGNvbm5f b3B0cyk7CisKKwkJLyoKKwkJICogTWVyZ2UgdGhlIGNvbm5lY3Rpb24gaW5mbyBpbnB1dHMg Z2l2ZW4gaW4gZm9ybSBvZiBjb25uZWN0aW9uIHN0cmluZworCQkgKiBhbmQgb3RoZXIgb3B0 aW9ucy4gIEV4cGxpY2l0bHkgZGlzY2FyZCBhbnkgZGJuYW1lIHZhbHVlIGluIHRoZQorCQkg KiBjb25uZWN0aW9uIHN0cmluZzsgb3RoZXJ3aXNlLCBQUWNvbm5lY3RkYlBhcmFtcygpIHdv dWxkIGludGVycHJldAorCQkgKiB0aGF0IHZhbHVlIGFzIGJlaW5nIGl0c2VsZiBhIGNvbm5l Y3Rpb24gc3RyaW5nLgorCQkgKi8KKwkJaWYgKGNvbm5lY3Rpb25fc3RyaW5nKQorCQl7CisJ CQljb25uX29wdHMgPSBQUWNvbm5pbmZvUGFyc2UoY29ubmVjdGlvbl9zdHJpbmcsICZlcnJf bXNnKTsKKwkJCWlmIChjb25uX29wdHMgPT0gTlVMTCkKKwkJCQlwZ19mYXRhbCgiJXMiLCBl cnJfbXNnKTsKKworCQkJZm9yIChjb25uX29wdCA9IGNvbm5fb3B0czsgY29ubl9vcHQtPmtl eXdvcmQgIT0gTlVMTDsgY29ubl9vcHQrKykKKwkJCXsKKwkJCQlpZiAoY29ubl9vcHQtPnZh bCAhPSBOVUxMICYmIGNvbm5fb3B0LT52YWxbMF0gIT0gJ1wwJyAmJgorCQkJCQlzdHJjbXAo Y29ubl9vcHQtPmtleXdvcmQsICJkYm5hbWUiKSAhPSAwKQorCQkJCQlhcmdjb3VudCsrOwor CQkJfQorCisJCQlrZXl3b3JkcyA9IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkgKiBzaXpl b2YoKmtleXdvcmRzKSk7CisJCQl2YWx1ZXMgPSBwZ19tYWxsb2MwKChhcmdjb3VudCArIDEp ICogc2l6ZW9mKCp2YWx1ZXMpKTsKKworCQkJZm9yIChjb25uX29wdCA9IGNvbm5fb3B0czsg Y29ubl9vcHQtPmtleXdvcmQgIT0gTlVMTDsgY29ubl9vcHQrKykKKwkJCXsKKwkJCQlpZiAo Y29ubl9vcHQtPnZhbCAhPSBOVUxMICYmIGNvbm5fb3B0LT52YWxbMF0gIT0gJ1wwJyAmJgor CQkJCQlzdHJjbXAoY29ubl9vcHQtPmtleXdvcmQsICJkYm5hbWUiKSAhPSAwKQorCQkJCXsK KwkJCQkJa2V5d29yZHNbaV0gPSBjb25uX29wdC0+a2V5d29yZDsKKwkJCQkJdmFsdWVzW2ld ID0gY29ubl9vcHQtPnZhbDsKKwkJCQkJaSsrOworCQkJCX0KKwkJCX0KKwkJfQorCQllbHNl CisJCXsKKwkJCWtleXdvcmRzID0gcGdfbWFsbG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVv Zigqa2V5d29yZHMpKTsKKwkJCXZhbHVlcyA9IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkg KiBzaXplb2YoKnZhbHVlcykpOworCQl9CisKKwkJaWYgKHBnaG9zdCkKKwkJeworCQkJa2V5 d29yZHNbaV0gPSAiaG9zdCI7CisJCQl2YWx1ZXNbaV0gPSBwZ2hvc3Q7CisJCQlpKys7CisJ CX0KKwkJaWYgKHBncG9ydCkKKwkJeworCQkJa2V5d29yZHNbaV0gPSAicG9ydCI7CisJCQl2 YWx1ZXNbaV0gPSBwZ3BvcnQ7CisJCQlpKys7CisJCX0KKwkJaWYgKHBndXNlcikKKwkJewor CQkJa2V5d29yZHNbaV0gPSAidXNlciI7CisJCQl2YWx1ZXNbaV0gPSBwZ3VzZXI7CisJCQlp Kys7CisJCX0KKwkJaWYgKHBhc3N3b3JkKQorCQl7CisJCQlrZXl3b3Jkc1tpXSA9ICJwYXNz d29yZCI7CisJCQl2YWx1ZXNbaV0gPSBwYXNzd29yZDsKKwkJCWkrKzsKKwkJfQorCQlpZiAo ZGJuYW1lKQorCQl7CisJCQlrZXl3b3Jkc1tpXSA9ICJkYm5hbWUiOworCQkJdmFsdWVzW2ld ID0gZGJuYW1lOworCQkJaSsrOworCQl9CisJCWlmIChvdmVycmlkZV9kYm5hbWUpCisJCXsK KwkJCWtleXdvcmRzW2ldID0gImRibmFtZSI7CisJCQl2YWx1ZXNbaSsrXSA9IG92ZXJyaWRl X2RibmFtZTsKKwkJfQorCisJCWtleXdvcmRzW2ldID0gImZhbGxiYWNrX2FwcGxpY2F0aW9u X25hbWUiOworCQl2YWx1ZXNbaV0gPSBwcm9nbmFtZTsKKwkJaSsrOworCisJCW5ld19wYXNz ID0gZmFsc2U7CisJCWNvbm4gPSBQUWNvbm5lY3RkYlBhcmFtcyhrZXl3b3JkcywgdmFsdWVz LCB0cnVlKTsKKworCQlpZiAoIWNvbm4pCisJCQlwZ19mYXRhbCgiY291bGQgbm90IGNvbm5l Y3QgdG8gZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsKKworCQlpZiAoUFFzdGF0dXMoY29u bikgPT0gQ09OTkVDVElPTl9CQUQgJiYKKwkJCVBRY29ubmVjdGlvbk5lZWRzUGFzc3dvcmQo Y29ubikgJiYKKwkJCSFwYXNzd29yZCAmJgorCQkJcHJvbXB0X3Bhc3N3b3JkICE9IFRSSV9O TykKKwkJeworCQkJUFFmaW5pc2goY29ubik7CisJCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9t cHQoIlBhc3N3b3JkOiAiLCBmYWxzZSk7CisJCQluZXdfcGFzcyA9IHRydWU7CisJCX0KKwl9 IHdoaWxlIChuZXdfcGFzcyk7CisKKwkvKiBjaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2Vu ZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLworCWlmIChQUXN0YXR1cyhj b25uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwl7CisJCWlmIChmYWlsX29uX2Vycm9yKQorCQkJ cGdfZmF0YWwoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQllbHNlCisJCXsKKwkJ CVBRZmluaXNoKGNvbm4pOworCisJCQlmcmVlKGtleXdvcmRzKTsKKwkJCWZyZWUodmFsdWVz KTsKKwkJCVBRY29ubmluZm9GcmVlKGNvbm5fb3B0cyk7CisKKwkJCXJldHVybiBOVUxMOwor CQl9CisJfQorCisJLyoKKwkgKiBPaywgY29ubmVjdGVkIHN1Y2Nlc3NmdWxseS4gSWYgcmVx dWVzdGVkLCByZW1lbWJlciB0aGUgb3B0aW9ucyB1c2VkLCBpbgorCSAqIHRoZSBmb3JtIG9m IGEgY29ubmVjdGlvbiBzdHJpbmcuCisJICovCisJaWYgKGNvbm5zdHIpCisJCSpjb25uc3Ry ID0gY29uc3RydWN0Q29ublN0cihrZXl3b3JkcywgdmFsdWVzKTsKKworCWZyZWUoa2V5d29y ZHMpOworCWZyZWUodmFsdWVzKTsKKwlQUWNvbm5pbmZvRnJlZShjb25uX29wdHMpOworCisJ LyogQ2hlY2sgdmVyc2lvbiAqLworCXJlbW90ZXZlcnNpb25fc3RyID0gUFFwYXJhbWV0ZXJT dGF0dXMoY29ubiwgInNlcnZlcl92ZXJzaW9uIik7CisJaWYgKCFyZW1vdGV2ZXJzaW9uX3N0 cikKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBnZXQgc2VydmVyIHZlcnNpb24iKTsKKworCXNl cnZlcl92ZXJzaW9uX3RlbXAgPSBQUXNlcnZlclZlcnNpb24oY29ubik7CisJaWYgKHNlcnZl cl92ZXJzaW9uX3RlbXAgPT0gMCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBwYXJzZSBzZXJ2 ZXIgdmVyc2lvbiBcIiVzXCIiLAorCQkJCSByZW1vdGV2ZXJzaW9uX3N0cik7CisKKwkvKiBJ ZiByZXF1ZXN0ZWQsIHRoZW4gY29weSBzZXJ2ZXIgdmVyc2lvbiB0byBvdXQgdmFyaWFibGUu ICovCisJaWYgKHNlcnZlcl92ZXJzaW9uKQorCQkqc2VydmVyX3ZlcnNpb24gPSBzZXJ2ZXJf dmVyc2lvbl90ZW1wOworCisJbXlfdmVyc2lvbiA9IFBHX1ZFUlNJT05fTlVNOworCisJLyoK KwkgKiBXZSBhbGxvdyB0aGUgc2VydmVyIHRvIGJlIGJhY2sgdG8gOS4yLCBhbmQgdXAgdG8g YW55IG1pbm9yIHJlbGVhc2Ugb2YKKwkgKiBvdXIgb3duIG1ham9yIHZlcnNpb24uICAoU2Vl IGFsc28gdmVyc2lvbiBjaGVjayBpbiBwZ19kdW1wLmMuKQorCSAqLworCWlmIChteV92ZXJz aW9uICE9IHNlcnZlcl92ZXJzaW9uX3RlbXAKKwkJJiYgKHNlcnZlcl92ZXJzaW9uX3RlbXAg PCA5MDIwMCB8fAorCQkJKHNlcnZlcl92ZXJzaW9uX3RlbXAgLyAxMDApID4gKG15X3ZlcnNp b24gLyAxMDApKSkKKwl7CisJCXBnX2xvZ19lcnJvcigiYWJvcnRpbmcgYmVjYXVzZSBvZiBz ZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaCIpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJzZXJ2 ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNpb246ICVzIiwKKwkJCQkJCQlyZW1vdGV2ZXJzaW9u X3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOworCQlleGl0X25pY2VseSgxKTsKKwl9CisK KwlQUWNsZWFyKGV4ZWN1dGVRdWVyeShjb25uLCBBTFdBWVNfU0VDVVJFX1NFQVJDSF9QQVRI X1NRTCkpOworCisJcmV0dXJuIGNvbm47Cit9CisKKy8qCisgKiBjb25zdHJ1Y3RDb25uU3Ry CisgKgorICogQ29uc3RydWN0IGEgY29ubmVjdGlvbiBzdHJpbmcgZnJvbSB0aGUgZ2l2ZW4g a2V5d29yZC92YWx1ZSBwYWlycy4gSXQgaXMKKyAqIHVzZWQgdG8gcGFzcyB0aGUgY29ubmVj dGlvbiBvcHRpb25zIHRvIHRoZSBwZ19kdW1wIHN1YnByb2Nlc3MuCisgKgorICogVGhlIGZv bGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBleGNsdWRlZDoKKyAqCWRibmFtZQkJLSB2YXJpZXMg aW4gZWFjaCBwZ19kdW1wIGludm9jYXRpb24KKyAqCXBhc3N3b3JkCS0gaXQncyBub3Qgc2Vj dXJlIHRvIHBhc3MgYSBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lCisgKglmYWxsYmFj a19hcHBsaWNhdGlvbl9uYW1lIC0gd2UnbGwgbGV0IHBnX2R1bXAgc2V0IGl0CisgKi8KK3N0 YXRpYyBjaGFyICoKK2NvbnN0cnVjdENvbm5TdHIoY29uc3QgY2hhciAqKmtleXdvcmRzLCBj b25zdCBjaGFyICoqdmFsdWVzKQoreworCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CisJY2hhcgkgICAqY29ubnN0cjsKKwlpbnQJCQlpOworCWJvb2wJCWZpcnN0 a2V5d29yZCA9IHRydWU7CisKKwkvKiBDb25zdHJ1Y3QgYSBuZXcgY29ubmVjdGlvbiBzdHJp bmcgaW4ga2V5PSd2YWx1ZScgZm9ybWF0LiAqLworCWZvciAoaSA9IDA7IGtleXdvcmRzW2ld ICE9IE5VTEw7IGkrKykKKwl7CisJCWlmIChzdHJjbXAoa2V5d29yZHNbaV0sICJkYm5hbWUi KSA9PSAwIHx8CisJCQlzdHJjbXAoa2V5d29yZHNbaV0sICJwYXNzd29yZCIpID09IDAgfHwK KwkJCXN0cmNtcChrZXl3b3Jkc1tpXSwgImZhbGxiYWNrX2FwcGxpY2F0aW9uX25hbWUiKSA9 PSAwKQorCQkJY29udGludWU7CisKKwkJaWYgKCFmaXJzdGtleXdvcmQpCisJCQlhcHBlbmRQ UUV4cEJ1ZmZlckNoYXIoYnVmLCAnICcpOworCQlmaXJzdGtleXdvcmQgPSBmYWxzZTsKKwkJ YXBwZW5kUFFFeHBCdWZmZXIoYnVmLCAiJXM9Iiwga2V5d29yZHNbaV0pOworCQlhcHBlbmRD b25uU3RyVmFsKGJ1ZiwgdmFsdWVzW2ldKTsKKwl9CisKKwljb25uc3RyID0gcGdfc3RyZHVw KGJ1Zi0+ZGF0YSk7CisJZGVzdHJveVBRRXhwQnVmZmVyKGJ1Zik7CisJcmV0dXJuIGNvbm5z dHI7Cit9CisKKy8qCisgKiBleGVjdXRlUXVlcnkKKyAqCisgKiBSdW4gYSBxdWVyeSwgcmV0 dXJuIHRoZSByZXN1bHRzLCBleGl0IHByb2dyYW0gb24gZmFpbHVyZS4KKyAqLworUEdyZXN1 bHQgKgorZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpCit7 CisJUEdyZXN1bHQgICAqcmVzOworCisJcGdfbG9nX2luZm8oImV4ZWN1dGluZyAlcyIsIHF1 ZXJ5KTsKKworCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeSk7CisJaWYgKCFyZXMgfHwKKwkJ UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJeworCQlwZ19sb2df ZXJyb3IoInF1ZXJ5IGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBn X2xvZ19lcnJvcl9kZXRhaWwoIlF1ZXJ5IHdhczogJXMiLCBxdWVyeSk7CisJCVBRZmluaXNo KGNvbm4pOworCQlleGl0X25pY2VseSgxKTsKKwl9CisKKwlyZXR1cm4gcmVzOworfQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2Nvbm5lY3RkYi5oIGIvc3JjL2Jpbi9wZ19kdW1w L2Nvbm5lY3RkYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42 YzFlMTk1NDc2OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9jb25uZWN0 ZGIuaApAQCAtMCwwICsxLDI2IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBj b25uZWN0ZGIuaAorICogICAgICBDb21tb24gaGVhZGVyIGZpbGUgZm9yIGNvbm5lY3Rpb24g dG8gdGhlIGRhdGFiYXNlLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICogICAgc3JjL2Jpbi9wZ19kdW1wL2Nv bm5lY3RkYi5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgQ09O TkVDVERCX0gKKyNkZWZpbmUgQ09OTkVDVERCX0gKKworI2luY2x1ZGUgInBnX2JhY2t1cC5o IgorI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgorCitleHRlcm4gUEdjb25uICpDb25u ZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9u X3N0cmluZywgY29uc3QgY2hhciAqcGdob3N0LAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBn cG9ydCwgY29uc3QgY2hhciAqcGd1c2VyLAorCQkJCQkJCSAgIHRyaXZhbHVlIHByb21wdF9w YXNzd29yZCwgYm9vbCBmYWlsX29uX2Vycm9yLAorCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBy b2duYW1lLCBjb25zdCBjaGFyICoqY29ubnN0ciwgaW50ICpzZXJ2ZXJfdmVyc2lvbiwKKwkJ CQkJCQkgICBjaGFyICpwYXNzd29yZCwgY2hhciAqb3ZlcnJpZGVfZGJuYW1lKTsKK2V4dGVy biBQR3Jlc3VsdCAqZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVl cnkpOworI2VuZGlmCQkJCQkJCS8qIENPTk5FQ1REQl9IICovCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQK aW5kZXggNjAzYmE2Y2ZiZjAuLjI1OTg5ZThmMTZiIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL21lc29uLmJ1aWxkCkBA IC02LDYgKzYsNyBAQCBwZ19kdW1wX2NvbW1vbl9zb3VyY2VzID0gZmlsZXMoCiAgICdjb21w cmVzc19sejQuYycsCiAgICdjb21wcmVzc19ub25lLmMnLAogICAnY29tcHJlc3NfenN0ZC5j JywKKyAgJ2Nvbm5lY3RkYi5jJywKICAgJ2R1bXB1dGlscy5jJywKICAgJ2ZpbHRlci5jJywK ICAgJ3BhcmFsbGVsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IDY1ODk4NmRlNmY4Li40 OWJjMWVlNzFlZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtMjkzLDkgKzI5Myw5IEBAIHR5 cGVkZWYgdm9pZCAoKlNldHVwV29ya2VyUHRyVHlwZSkgKEFyY2hpdmUgKkFIKTsKICAqIE1h aW4gYXJjaGl2ZXIgaW50ZXJmYWNlLgogICovCiAKLWV4dGVybiB2b2lkIENvbm5lY3REYXRh YmFzZShBcmNoaXZlICpBSFgsCi0JCQkJCQkJY29uc3QgQ29ublBhcmFtcyAqY3BhcmFtcywK LQkJCQkJCQlib29sIGlzUmVjb25uZWN0KTsKK2V4dGVybiB2b2lkIENvbm5lY3REYXRhYmFz ZUFoeChBcmNoaXZlICpBSFgsCisJCQkJCQkJICAgY29uc3QgQ29ublBhcmFtcyAqY3BhcmFt cywKKwkJCQkJCQkgICBib29sIGlzUmVjb25uZWN0KTsKIGV4dGVybiB2b2lkIERpc2Nvbm5l Y3REYXRhYmFzZShBcmNoaXZlICpBSFgpOwogZXh0ZXJuIFBHY29ubiAqR2V0Q29ubmVjdGlv bihBcmNoaXZlICpBSFgpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMK aW5kZXggMWQxMzFlNWE1N2QuLjNmNTlmOGY5ZDlkIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF9hcmNoaXZlci5jCkBAIC00MTUsNyArNDE1LDcgQEAgUmVzdG9yZUFyY2hpdmUoQXJj aGl2ZSAqQUhYKQogCQlBSFgtPm1pblJlbW90ZVZlcnNpb24gPSAwOwogCQlBSFgtPm1heFJl bW90ZVZlcnNpb24gPSA5OTk5OTk5OwogCi0JCUNvbm5lY3REYXRhYmFzZShBSFgsICZyb3B0 LT5jcGFyYW1zLCBmYWxzZSk7CisJCUNvbm5lY3REYXRhYmFzZUFoeChBSFgsICZyb3B0LT5j cGFyYW1zLCBmYWxzZSk7CiAKIAkJLyoKIAkJICogSWYgd2UncmUgdGFsa2luZyB0byB0aGUg REIgZGlyZWN0bHksIGRvbid0IHNlbmQgY29tbWVudHMgc2luY2UgdGhleQpAQCAtNDQ1OCw3 ICs0NDU4LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wb3N0Zm9yayhBcmNoaXZlSGFuZGxl ICpBSCwgVG9jRW50cnkgKnBlbmRpbmdfbGlzdCkKIAkvKgogCSAqIE5vdyByZWNvbm5lY3Qg dGhlIHNpbmdsZSBwYXJlbnQgY29ubmVjdGlvbi4KIAkgKi8KLQlDb25uZWN0RGF0YWJhc2Uo KEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFyYW1zLCB0cnVlKTsKKwlDb25uZWN0RGF0YWJh c2VBaHgoKEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFyYW1zLCB0cnVlKTsKIAogCS8qIHJl LWVzdGFibGlzaCBmaXhlZCBzdGF0ZSAqLwogCV9kb1NldEZpeGVkT3V0cHV0U3RhdGUoQUgp OwpAQCAtNTA3Niw3ICs1MDc2LDcgQEAgQ2xvbmVBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFI KQogCSAqIENvbm5lY3Qgb3VyIG5ldyBjbG9uZSBvYmplY3QgdG8gdGhlIGRhdGFiYXNlLCB1 c2luZyB0aGUgc2FtZSBjb25uZWN0aW9uCiAJICogcGFyYW1ldGVycyB1c2VkIGZvciB0aGUg b3JpZ2luYWwgY29ubmVjdGlvbi4KIAkgKi8KLQlDb25uZWN0RGF0YWJhc2UoKEFyY2hpdmUg KikgY2xvbmUsICZjbG9uZS0+cHVibGljLnJvcHQtPmNwYXJhbXMsIHRydWUpOworCUNvbm5l Y3REYXRhYmFzZUFoeCgoQXJjaGl2ZSAqKSBjbG9uZSwgJmNsb25lLT5wdWJsaWMucm9wdC0+ Y3BhcmFtcywgdHJ1ZSk7CiAKIAkvKiByZS1lc3RhYmxpc2ggZml4ZWQgc3RhdGUgKi8KIAlp ZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVSZWFkKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kYi5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jCmlu ZGV4IDcxYzU1ZDI0NjZhLi41YzM0OTI3OWJlYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9kYi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIu YwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2Nvbm5lY3QuaCIKICNp bmNsdWRlICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVkZSAiY29ubmVjdGRiLmgiCiAjaW5j bHVkZSAicGFyYWxsZWwuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKICNp bmNsdWRlICJwZ19iYWNrdXBfZGIuaCIKQEAgLTg2LDkgKzg3LDkgQEAgUmVjb25uZWN0VG9T ZXJ2ZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmRibmFtZSkKIAkgKiBBcmNo aXZlSGFuZGxlJ3MgY29ubkNhbmNlbCwgYmVmb3JlIGNsb3Npbmcgb2xkIGNvbm5lY3Rpb24u ICBPdGhlcndpc2UKIAkgKiBhbiBpbGwtdGltZWQgU0lHSU5UIGNvdWxkIHRyeSB0byBhY2Nl c3MgYSBkZWFkIGNvbm5lY3Rpb24uCiAJICovCi0JQUgtPmNvbm5lY3Rpb24gPSBOVUxMOwkJ LyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNlICovCisJQUgtPmNvbm5l Y3Rpb24gPSBOVUxMOwkJLyogZG9kZ2UgZXJyb3IgY2hlY2sgaW4gQ29ubmVjdERhdGFiYXNl QWh4ICovCiAKLQlDb25uZWN0RGF0YWJhc2UoKEFyY2hpdmUgKikgQUgsICZyb3B0LT5jcGFy YW1zLCB0cnVlKTsKKwlDb25uZWN0RGF0YWJhc2VBaHgoKEFyY2hpdmUgKikgQUgsICZyb3B0 LT5jcGFyYW1zLCB0cnVlKTsKIAogCVBRZmluaXNoKG9sZENvbm4pOwogfQpAQCAtMTA1LDE0 ICsxMDYsMTMgQEAgUmVjb25uZWN0VG9TZXJ2ZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0 IGNoYXIgKmRibmFtZSkKICAqIHVzZXJuYW1lIG5ldmVyIGRvZXMgY2hhbmdlLCBzbyBvbmUg c2F2ZWRQYXNzd29yZCBpcyBzdWZmaWNpZW50LgogICovCiB2b2lkCi1Db25uZWN0RGF0YWJh c2UoQXJjaGl2ZSAqQUhYLAotCQkJCWNvbnN0IENvbm5QYXJhbXMgKmNwYXJhbXMsCi0JCQkJ Ym9vbCBpc1JlY29ubmVjdCkKK0Nvbm5lY3REYXRhYmFzZUFoeChBcmNoaXZlICpBSFgsCisJ CQkJICAgY29uc3QgQ29ublBhcmFtcyAqY3BhcmFtcywKKwkJCQkgICBib29sIGlzUmVjb25u ZWN0KQogewogCUFyY2hpdmVIYW5kbGUgKkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhYOwog CXRyaXZhbHVlCXByb21wdF9wYXNzd29yZDsKIAljaGFyCSAgICpwYXNzd29yZDsKLQlib29s CQluZXdfcGFzczsKIAogCWlmIChBSC0+Y29ubmVjdGlvbikKIAkJcGdfZmF0YWwoImFscmVh ZHkgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UiKTsKQEAgLTEyNSw2OSArMTI1LDEwIEBAIENv bm5lY3REYXRhYmFzZShBcmNoaXZlICpBSFgsCiAJaWYgKHByb21wdF9wYXNzd29yZCA9PSBU UklfWUVTICYmIHBhc3N3b3JkID09IE5VTEwpCiAJCXBhc3N3b3JkID0gc2ltcGxlX3Byb21w dCgiUGFzc3dvcmQ6ICIsIGZhbHNlKTsKIAotCS8qCi0JICogU3RhcnQgdGhlIGNvbm5lY3Rp b24uICBMb29wIHVudGlsIHdlIGhhdmUgYSBwYXNzd29yZCBpZiByZXF1ZXN0ZWQgYnkKLQkg KiBiYWNrZW5kLgotCSAqLwotCWRvCi0JewotCQljb25zdCBjaGFyICprZXl3b3Jkc1s4XTsK LQkJY29uc3QgY2hhciAqdmFsdWVzWzhdOwotCQlpbnQJCQlpID0gMDsKLQotCQkvKgotCQkg KiBJZiBkYm5hbWUgaXMgYSBjb25uc3RyaW5nLCBpdHMgZW50cmllcyBjYW4gb3ZlcnJpZGUg dGhlIG90aGVyCi0JCSAqIHZhbHVlcyBvYnRhaW5lZCBmcm9tIGNwYXJhbXM7IGJ1dCBpbiB0 dXJuLCBvdmVycmlkZV9kYm5hbWUgY2FuCi0JCSAqIG92ZXJyaWRlIHRoZSBkYm5hbWUgY29t cG9uZW50IG9mIGl0LgotCQkgKi8KLQkJa2V5d29yZHNbaV0gPSAiaG9zdCI7Ci0JCXZhbHVl c1tpKytdID0gY3BhcmFtcy0+cGdob3N0OwotCQlrZXl3b3Jkc1tpXSA9ICJwb3J0IjsKLQkJ dmFsdWVzW2krK10gPSBjcGFyYW1zLT5wZ3BvcnQ7Ci0JCWtleXdvcmRzW2ldID0gInVzZXIi OwotCQl2YWx1ZXNbaSsrXSA9IGNwYXJhbXMtPnVzZXJuYW1lOwotCQlrZXl3b3Jkc1tpXSA9 ICJwYXNzd29yZCI7Ci0JCXZhbHVlc1tpKytdID0gcGFzc3dvcmQ7Ci0JCWtleXdvcmRzW2ld ID0gImRibmFtZSI7Ci0JCXZhbHVlc1tpKytdID0gY3BhcmFtcy0+ZGJuYW1lOwotCQlpZiAo Y3BhcmFtcy0+b3ZlcnJpZGVfZGJuYW1lKQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJkYm5h bWUiOwotCQkJdmFsdWVzW2krK10gPSBjcGFyYW1zLT5vdmVycmlkZV9kYm5hbWU7Ci0JCX0K LQkJa2V5d29yZHNbaV0gPSAiZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSI7Ci0JCXZhbHVl c1tpKytdID0gcHJvZ25hbWU7Ci0JCWtleXdvcmRzW2ldID0gTlVMTDsKLQkJdmFsdWVzW2kr K10gPSBOVUxMOwotCQlBc3NlcnQoaSA8PSBsZW5ndGhvZihrZXl3b3JkcykpOwotCi0JCW5l d19wYXNzID0gZmFsc2U7Ci0JCUFILT5jb25uZWN0aW9uID0gUFFjb25uZWN0ZGJQYXJhbXMo a2V5d29yZHMsIHZhbHVlcywgdHJ1ZSk7Ci0KLQkJaWYgKCFBSC0+Y29ubmVjdGlvbikKLQkJ CXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSIpOwotCi0JCWlmIChQ UXN0YXR1cyhBSC0+Y29ubmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQgJiYKLQkJCVBRY29u bmVjdGlvbk5lZWRzUGFzc3dvcmQoQUgtPmNvbm5lY3Rpb24pICYmCi0JCQlwYXNzd29yZCA9 PSBOVUxMICYmCi0JCQlwcm9tcHRfcGFzc3dvcmQgIT0gVFJJX05PKQotCQl7Ci0JCQlQUWZp bmlzaChBSC0+Y29ubmVjdGlvbik7Ci0JCQlwYXNzd29yZCA9IHNpbXBsZV9wcm9tcHQoIlBh c3N3b3JkOiAiLCBmYWxzZSk7Ci0JCQluZXdfcGFzcyA9IHRydWU7Ci0JCX0KLQl9IHdoaWxl IChuZXdfcGFzcyk7Ci0KLQkvKiBjaGVjayB0byBzZWUgdGhhdCB0aGUgYmFja2VuZCBjb25u ZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLwotCWlmIChQUXN0YXR1cyhBSC0+Y29u bmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQpCi0JewotCQlpZiAoaXNSZWNvbm5lY3QpCi0J CQlwZ19mYXRhbCgicmVjb25uZWN0aW9uIGZhaWxlZDogJXMiLAotCQkJCQkgUFFlcnJvck1l c3NhZ2UoQUgtPmNvbm5lY3Rpb24pKTsKLQkJZWxzZQotCQkJcGdfZmF0YWwoIiVzIiwKLQkJ CQkJIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7Ci0JfQorCUFILT5jb25uZWN0 aW9uID0gQ29ubmVjdERhdGFiYXNlKGNwYXJhbXMtPmRibmFtZSwgTlVMTCwgY3BhcmFtcy0+ cGdob3N0LAorCQkJCQkJCQkJIGNwYXJhbXMtPnBncG9ydCwgY3BhcmFtcy0+dXNlcm5hbWUs CisJCQkJCQkJCQkgcHJvbXB0X3Bhc3N3b3JkLCB0cnVlLAorCQkJCQkJCQkJIHByb2duYW1l LCBOVUxMLCBOVUxMLCBwYXNzd29yZCwgY3BhcmFtcy0+b3ZlcnJpZGVfZGJuYW1lKTsKIAog CS8qIFN0YXJ0IHN0cmljdDsgbGF0ZXIgcGhhc2VzIG1heSBvdmVycmlkZSB0aGlzLiAqLwog CVBRY2xlYXIoRXhlY3V0ZVNxbFF1ZXJ5Rm9yU2luZ2xlUm93KChBcmNoaXZlICopIEFILApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKaW5kZXggMDRjODdiYTg4NTQuLmQ5MGI2MTgzNzkyIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTk2Niw3ICs5NjYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkgKiBPcGVuIHRoZSBkYXRhYmFzZSB1c2luZyB0aGUgQXJjaGl2ZXIsIHNvIGl0IGtub3dz IGFib3V0IGl0LiBFcnJvcnMgbWVhbgogCSAqIGRlYXRoLgogCSAqLwotCUNvbm5lY3REYXRh YmFzZShmb3V0LCAmZG9wdC5jcGFyYW1zLCBmYWxzZSk7CisJQ29ubmVjdERhdGFiYXNlQWh4 KGZvdXQsICZkb3B0LmNwYXJhbXMsIGZhbHNlKTsKIAlzZXR1cF9jb25uZWN0aW9uKGZvdXQs IGR1bXBlbmNvZGluZywgZHVtcHNuYXBzaG90LCB1c2Vfcm9sZSk7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMKaW5kZXggMmVhNTc0YjBmMDYuLjU3M2E4YjYxYTQ1IDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMKQEAgLTI0LDExICsyNCwxMSBAQAogI2luY2x1ZGUgImNvbW1vbi9oYXNo Zm5fdW5zdGFibGUuaCIKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUg ImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRlICJjb25uZWN0ZGIuaCIKICNpbmNsdWRlICJk dW1wdXRpbHMuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNs dWRlICJmaWx0ZXIuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgotI2luY2x1ZGUgInBn X2JhY2t1cC5oIgogCiAvKiB2ZXJzaW9uIHN0cmluZyB3ZSBleHBlY3QgYmFjayBmcm9tIHBn X2R1bXAgKi8KICNkZWZpbmUgUEdEVU1QX1ZFUlNJT05TVFIgInBnX2R1bXAgKFBvc3RncmVT UUwpICIgUEdfVkVSU0lPTiAiXG4iCkBAIC03MSwyMSArNzEsMTQgQEAgc3RhdGljIHZvaWQg YnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmNh dGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLAogCQkJCQkJCSBjb25zdCBjaGFyICpvYmp0eXBl LCBjb25zdCBjaGFyICpvYmpuYW1lLAogCQkJCQkJCSBQUUV4cEJ1ZmZlciBidWZmZXIpOwot c3RhdGljIFBHY29ubiAqY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwKLQkJ CQkJCQkgICBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywgY29uc3QgY2hhciAqcGdo b3N0LAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnBncG9ydCwgY29uc3QgY2hhciAqcGd1c2Vy LAotCQkJCQkJCSAgIHRyaXZhbHVlIHByb21wdF9wYXNzd29yZCwgYm9vbCBmYWlsX29uX2Vy cm9yKTsKLXN0YXRpYyBjaGFyICpjb25zdHJ1Y3RDb25uU3RyKGNvbnN0IGNoYXIgKiprZXl3 b3JkcywgY29uc3QgY2hhciAqKnZhbHVlcyk7Ci1zdGF0aWMgUEdyZXN1bHQgKmV4ZWN1dGVR dWVyeShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsKIHN0YXRpYyB2b2lkIGV4 ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkpOwogc3RhdGlj IHZvaWQgZXhwYW5kX2RibmFtZV9wYXR0ZXJucyhQR2Nvbm4gKmNvbm4sIFNpbXBsZVN0cmlu Z0xpc3QgKnBhdHRlcm5zLAogCQkJCQkJCQkgICBTaW1wbGVTdHJpbmdMaXN0ICpuYW1lcyk7 CiBzdGF0aWMgdm9pZCByZWFkX2R1bXBhbGxfZmlsdGVycyhjb25zdCBjaGFyICpmaWxlbmFt ZSwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybik7CiAKIHN0YXRpYyBjaGFyIHBnX2R1bXBf YmluW01BWFBHUEFUSF07Ci1zdGF0aWMgY29uc3QgY2hhciAqcHJvZ25hbWU7CiBzdGF0aWMg UFFFeHBCdWZmZXIgcGdkdW1wb3B0czsKLXN0YXRpYyBjaGFyICpjb25uc3RyID0gIiI7Citz dGF0aWMgY29uc3QgY2hhciAqY29ubnN0ciA9ICIiOwogc3RhdGljIGJvb2wgb3V0cHV0X2Ns ZWFuID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBza2lwX2FjbHMgPSBmYWxzZTsKIHN0YXRpYyBi b29sIHZlcmJvc2UgPSBmYWxzZTsKQEAgLTEyOSw4ICsxMjIsNiBAQCBzdGF0aWMgY2hhciAq ZmlsZW5hbWUgPSBOVUxMOwogc3RhdGljIFNpbXBsZVN0cmluZ0xpc3QgZGF0YWJhc2VfZXhj bHVkZV9wYXR0ZXJucyA9IHtOVUxMLCBOVUxMfTsKIHN0YXRpYyBTaW1wbGVTdHJpbmdMaXN0 IGRhdGFiYXNlX2V4Y2x1ZGVfbmFtZXMgPSB7TlVMTCwgTlVMTH07CiAKLSNkZWZpbmUgZXhp dF9uaWNlbHkoY29kZSkgZXhpdChjb2RlKQotCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIHsKQEAgLTQ5OSwxOSArNDkwLDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgKi8KIAlpZiAocGdkYikKIAl7Ci0JCWNvbm4gPSBjb25uZWN0RGF0YWJh c2UocGdkYiwgY29ubnN0ciwgcGdob3N0LCBwZ3BvcnQsIHBndXNlciwKLQkJCQkJCQkgICBw cm9tcHRfcGFzc3dvcmQsIGZhbHNlKTsKKwkJY29ubiA9IENvbm5lY3REYXRhYmFzZShwZ2Ri LCBjb25uc3RyLCBwZ2hvc3QsIHBncG9ydCwgcGd1c2VyLAorCQkJCQkJCSAgIHByb21wdF9w YXNzd29yZCwgZmFsc2UsCisJCQkJCQkJICAgcHJvZ25hbWUsICZjb25uc3RyLCAmc2VydmVy X3ZlcnNpb24sIE5VTEwsIE5VTEwpOwogCiAJCWlmICghY29ubikKIAkJCXBnX2ZhdGFsKCJj b3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBwZ2RiKTsKIAl9CiAJZWxz ZQogCXsKLQkJY29ubiA9IGNvbm5lY3REYXRhYmFzZSgicG9zdGdyZXMiLCBjb25uc3RyLCBw Z2hvc3QsIHBncG9ydCwgcGd1c2VyLAotCQkJCQkJCSAgIHByb21wdF9wYXNzd29yZCwgZmFs c2UpOworCQljb25uID0gQ29ubmVjdERhdGFiYXNlKCJwb3N0Z3JlcyIsIGNvbm5zdHIsIHBn aG9zdCwgcGdwb3J0LCBwZ3VzZXIsCisJCQkJCQkJICAgcHJvbXB0X3Bhc3N3b3JkLCBmYWxz ZSwKKwkJCQkJCQkgICBwcm9nbmFtZSwgJmNvbm5zdHIsICZzZXJ2ZXJfdmVyc2lvbiwgTlVM TCwgTlVMTCk7CiAJCWlmICghY29ubikKLQkJCWNvbm4gPSBjb25uZWN0RGF0YWJhc2UoInRl bXBsYXRlMSIsIGNvbm5zdHIsIHBnaG9zdCwgcGdwb3J0LCBwZ3VzZXIsCi0JCQkJCQkJCSAg IHByb21wdF9wYXNzd29yZCwgdHJ1ZSk7CisJCQljb25uID0gQ29ubmVjdERhdGFiYXNlKCJ0 ZW1wbGF0ZTEiLCBjb25uc3RyLCBwZ2hvc3QsIHBncG9ydCwgcGd1c2VyLAorCQkJCQkJCQkg ICBwcm9tcHRfcGFzc3dvcmQsIHRydWUsCisJCQkJCQkJCSAgIHByb2duYW1lLCAmY29ubnN0 ciwgJnNlcnZlcl92ZXJzaW9uLCBOVUxMLCBOVUxMKTsKIAogCQlpZiAoIWNvbm4pCiAJCXsK QEAgLTE3MzgsMjU2ICsxNzMyLDYgQEAgYnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLAogCWRlc3Ryb3lQUUV4 cEJ1ZmZlcihzcWwpOwogfQogCi0vKgotICogTWFrZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24g d2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIEFuCi0gKiBpbnRlcmFjdGl2ZSBwYXNzd29y ZCBwcm9tcHQgaXMgYXV0b21hdGljYWxseSBpc3N1ZWQgaWYgcmVxdWlyZWQuCi0gKgotICog SWYgZmFpbF9vbl9lcnJvciBpcyBmYWxzZSwgd2UgcmV0dXJuIE5VTEwgd2l0aG91dCBwcmlu dGluZyBhbnkgbWVzc2FnZQotICogb24gZmFpbHVyZSwgYnV0IHByZXNlcnZlIGFueSBwcm9t cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5leHQgdHJ5LgotICoKLSAqIE9uIHN1Y2Nlc3MsIHRo ZSBnbG9iYWwgdmFyaWFibGUgJ2Nvbm5zdHInIGlzIHNldCB0byBhIGNvbm5lY3Rpb24gc3Ry aW5nCi0gKiBjb250YWluaW5nIHRoZSBvcHRpb25zIHVzZWQuCi0gKi8KLXN0YXRpYyBQR2Nv bm4gKgotY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAq Y29ubmVjdGlvbl9zdHJpbmcsCi0JCQkJY29uc3QgY2hhciAqcGdob3N0LCBjb25zdCBjaGFy ICpwZ3BvcnQsIGNvbnN0IGNoYXIgKnBndXNlciwKLQkJCQl0cml2YWx1ZSBwcm9tcHRfcGFz c3dvcmQsIGJvb2wgZmFpbF9vbl9lcnJvcikKLXsKLQlQR2Nvbm4JICAgKmNvbm47Ci0JYm9v bAkJbmV3X3Bhc3M7Ci0JY29uc3QgY2hhciAqcmVtb3RldmVyc2lvbl9zdHI7Ci0JaW50CQkJ bXlfdmVyc2lvbjsKLQljb25zdCBjaGFyICoqa2V5d29yZHMgPSBOVUxMOwotCWNvbnN0IGNo YXIgKip2YWx1ZXMgPSBOVUxMOwotCVBRY29ubmluZm9PcHRpb24gKmNvbm5fb3B0cyA9IE5V TEw7Ci0Jc3RhdGljIGNoYXIgKnBhc3N3b3JkID0gTlVMTDsKLQotCWlmIChwcm9tcHRfcGFz c3dvcmQgPT0gVFJJX1lFUyAmJiAhcGFzc3dvcmQpCi0JCXBhc3N3b3JkID0gc2ltcGxlX3By b21wdCgiUGFzc3dvcmQ6ICIsIGZhbHNlKTsKLQotCS8qCi0JICogU3RhcnQgdGhlIGNvbm5l Y3Rpb24uICBMb29wIHVudGlsIHdlIGhhdmUgYSBwYXNzd29yZCBpZiByZXF1ZXN0ZWQgYnkK LQkgKiBiYWNrZW5kLgotCSAqLwotCWRvCi0JewotCQlpbnQJCQlhcmdjb3VudCA9IDY7Ci0J CVBRY29ubmluZm9PcHRpb24gKmNvbm5fb3B0OwotCQljaGFyCSAgICplcnJfbXNnID0gTlVM TDsKLQkJaW50CQkJaSA9IDA7Ci0KLQkJZnJlZShrZXl3b3Jkcyk7Ci0JCWZyZWUodmFsdWVz KTsKLQkJUFFjb25uaW5mb0ZyZWUoY29ubl9vcHRzKTsKLQotCQkvKgotCQkgKiBNZXJnZSB0 aGUgY29ubmVjdGlvbiBpbmZvIGlucHV0cyBnaXZlbiBpbiBmb3JtIG9mIGNvbm5lY3Rpb24g c3RyaW5nCi0JCSAqIGFuZCBvdGhlciBvcHRpb25zLiAgRXhwbGljaXRseSBkaXNjYXJkIGFu eSBkYm5hbWUgdmFsdWUgaW4gdGhlCi0JCSAqIGNvbm5lY3Rpb24gc3RyaW5nOyBvdGhlcndp c2UsIFBRY29ubmVjdGRiUGFyYW1zKCkgd291bGQgaW50ZXJwcmV0Ci0JCSAqIHRoYXQgdmFs dWUgYXMgYmVpbmcgaXRzZWxmIGEgY29ubmVjdGlvbiBzdHJpbmcuCi0JCSAqLwotCQlpZiAo Y29ubmVjdGlvbl9zdHJpbmcpCi0JCXsKLQkJCWNvbm5fb3B0cyA9IFBRY29ubmluZm9QYXJz ZShjb25uZWN0aW9uX3N0cmluZywgJmVycl9tc2cpOwotCQkJaWYgKGNvbm5fb3B0cyA9PSBO VUxMKQotCQkJCXBnX2ZhdGFsKCIlcyIsIGVycl9tc2cpOwotCi0JCQlmb3IgKGNvbm5fb3B0 ID0gY29ubl9vcHRzOyBjb25uX29wdC0+a2V5d29yZCAhPSBOVUxMOyBjb25uX29wdCsrKQot CQkJewotCQkJCWlmIChjb25uX29wdC0+dmFsICE9IE5VTEwgJiYgY29ubl9vcHQtPnZhbFsw XSAhPSAnXDAnICYmCi0JCQkJCXN0cmNtcChjb25uX29wdC0+a2V5d29yZCwgImRibmFtZSIp ICE9IDApCi0JCQkJCWFyZ2NvdW50Kys7Ci0JCQl9Ci0KLQkJCWtleXdvcmRzID0gcGdfbWFs bG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqa2V5d29yZHMpKTsKLQkJCXZhbHVlcyA9 IHBnX21hbGxvYzAoKGFyZ2NvdW50ICsgMSkgKiBzaXplb2YoKnZhbHVlcykpOwotCi0JCQlm b3IgKGNvbm5fb3B0ID0gY29ubl9vcHRzOyBjb25uX29wdC0+a2V5d29yZCAhPSBOVUxMOyBj b25uX29wdCsrKQotCQkJewotCQkJCWlmIChjb25uX29wdC0+dmFsICE9IE5VTEwgJiYgY29u bl9vcHQtPnZhbFswXSAhPSAnXDAnICYmCi0JCQkJCXN0cmNtcChjb25uX29wdC0+a2V5d29y ZCwgImRibmFtZSIpICE9IDApCi0JCQkJewotCQkJCQlrZXl3b3Jkc1tpXSA9IGNvbm5fb3B0 LT5rZXl3b3JkOwotCQkJCQl2YWx1ZXNbaV0gPSBjb25uX29wdC0+dmFsOwotCQkJCQlpKys7 Ci0JCQkJfQotCQkJfQotCQl9Ci0JCWVsc2UKLQkJewotCQkJa2V5d29yZHMgPSBwZ19tYWxs b2MwKChhcmdjb3VudCArIDEpICogc2l6ZW9mKCprZXl3b3JkcykpOwotCQkJdmFsdWVzID0g cGdfbWFsbG9jMCgoYXJnY291bnQgKyAxKSAqIHNpemVvZigqdmFsdWVzKSk7Ci0JCX0KLQot CQlpZiAocGdob3N0KQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJob3N0IjsKLQkJCXZhbHVl c1tpXSA9IHBnaG9zdDsKLQkJCWkrKzsKLQkJfQotCQlpZiAocGdwb3J0KQotCQl7Ci0JCQlr ZXl3b3Jkc1tpXSA9ICJwb3J0IjsKLQkJCXZhbHVlc1tpXSA9IHBncG9ydDsKLQkJCWkrKzsK LQkJfQotCQlpZiAocGd1c2VyKQotCQl7Ci0JCQlrZXl3b3Jkc1tpXSA9ICJ1c2VyIjsKLQkJ CXZhbHVlc1tpXSA9IHBndXNlcjsKLQkJCWkrKzsKLQkJfQotCQlpZiAocGFzc3dvcmQpCi0J CXsKLQkJCWtleXdvcmRzW2ldID0gInBhc3N3b3JkIjsKLQkJCXZhbHVlc1tpXSA9IHBhc3N3 b3JkOwotCQkJaSsrOwotCQl9Ci0JCWlmIChkYm5hbWUpCi0JCXsKLQkJCWtleXdvcmRzW2ld ID0gImRibmFtZSI7Ci0JCQl2YWx1ZXNbaV0gPSBkYm5hbWU7Ci0JCQlpKys7Ci0JCX0KLQkJ a2V5d29yZHNbaV0gPSAiZmFsbGJhY2tfYXBwbGljYXRpb25fbmFtZSI7Ci0JCXZhbHVlc1tp XSA9IHByb2duYW1lOwotCQlpKys7Ci0KLQkJbmV3X3Bhc3MgPSBmYWxzZTsKLQkJY29ubiA9 IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2YWx1ZXMsIHRydWUpOwotCi0JCWlmICgh Y29ubikKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVz XCIiLCBkYm5hbWUpOwotCi0JCWlmIChQUXN0YXR1cyhjb25uKSA9PSBDT05ORUNUSU9OX0JB RCAmJgotCQkJUFFjb25uZWN0aW9uTmVlZHNQYXNzd29yZChjb25uKSAmJgotCQkJIXBhc3N3 b3JkICYmCi0JCQlwcm9tcHRfcGFzc3dvcmQgIT0gVFJJX05PKQotCQl7Ci0JCQlQUWZpbmlz aChjb25uKTsKLQkJCXBhc3N3b3JkID0gc2ltcGxlX3Byb21wdCgiUGFzc3dvcmQ6ICIsIGZh bHNlKTsKLQkJCW5ld19wYXNzID0gdHJ1ZTsKLQkJfQotCX0gd2hpbGUgKG5ld19wYXNzKTsK LQotCS8qIGNoZWNrIHRvIHNlZSB0aGF0IHRoZSBiYWNrZW5kIGNvbm5lY3Rpb24gd2FzIHN1 Y2Nlc3NmdWxseSBtYWRlICovCi0JaWYgKFBRc3RhdHVzKGNvbm4pID09IENPTk5FQ1RJT05f QkFEKQotCXsKLQkJaWYgKGZhaWxfb25fZXJyb3IpCi0JCQlwZ19mYXRhbCgiJXMiLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7Ci0JCWVsc2UKLQkJewotCQkJUFFmaW5pc2goY29ubik7Ci0K LQkJCWZyZWUoa2V5d29yZHMpOwotCQkJZnJlZSh2YWx1ZXMpOwotCQkJUFFjb25uaW5mb0Zy ZWUoY29ubl9vcHRzKTsKLQotCQkJcmV0dXJuIE5VTEw7Ci0JCX0KLQl9Ci0KLQkvKgotCSAq IE9rLCBjb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5LiBSZW1lbWJlciB0aGUgb3B0aW9ucyB1c2Vk LCBpbiB0aGUgZm9ybSBvZiBhCi0JICogY29ubmVjdGlvbiBzdHJpbmcuCi0JICovCi0JY29u bnN0ciA9IGNvbnN0cnVjdENvbm5TdHIoa2V5d29yZHMsIHZhbHVlcyk7Ci0KLQlmcmVlKGtl eXdvcmRzKTsKLQlmcmVlKHZhbHVlcyk7Ci0JUFFjb25uaW5mb0ZyZWUoY29ubl9vcHRzKTsK LQotCS8qIENoZWNrIHZlcnNpb24gKi8KLQlyZW1vdGV2ZXJzaW9uX3N0ciA9IFBRcGFyYW1l dGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIpOwotCWlmICghcmVtb3RldmVyc2lv bl9zdHIpCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgZ2V0IHNlcnZlciB2ZXJzaW9uIik7Ci0J c2VydmVyX3ZlcnNpb24gPSBQUXNlcnZlclZlcnNpb24oY29ubik7Ci0JaWYgKHNlcnZlcl92 ZXJzaW9uID09IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3QgcGFyc2Ugc2VydmVyIHZlcnNp b24gXCIlc1wiIiwKLQkJCQkgcmVtb3RldmVyc2lvbl9zdHIpOwotCi0JbXlfdmVyc2lvbiA9 IFBHX1ZFUlNJT05fTlVNOwotCi0JLyoKLQkgKiBXZSBhbGxvdyB0aGUgc2VydmVyIHRvIGJl IGJhY2sgdG8gOS4yLCBhbmQgdXAgdG8gYW55IG1pbm9yIHJlbGVhc2Ugb2YKLQkgKiBvdXIg b3duIG1ham9yIHZlcnNpb24uICAoU2VlIGFsc28gdmVyc2lvbiBjaGVjayBpbiBwZ19kdW1w LmMuKQotCSAqLwotCWlmIChteV92ZXJzaW9uICE9IHNlcnZlcl92ZXJzaW9uCi0JCSYmIChz ZXJ2ZXJfdmVyc2lvbiA8IDkwMjAwIHx8Ci0JCQkoc2VydmVyX3ZlcnNpb24gLyAxMDApID4g KG15X3ZlcnNpb24gLyAxMDApKSkKLQl7Ci0JCXBnX2xvZ19lcnJvcigiYWJvcnRpbmcgYmVj YXVzZSBvZiBzZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaCIpOwotCQlwZ19sb2dfZXJyb3JfZGV0 YWlsKCJzZXJ2ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNpb246ICVzIiwKLQkJCQkJCQlyZW1v dGV2ZXJzaW9uX3N0ciwgcHJvZ25hbWUsIFBHX1ZFUlNJT04pOwotCQlleGl0X25pY2VseSgx KTsKLQl9Ci0KLQlQUWNsZWFyKGV4ZWN1dGVRdWVyeShjb25uLCBBTFdBWVNfU0VDVVJFX1NF QVJDSF9QQVRIX1NRTCkpOwotCi0JcmV0dXJuIGNvbm47Ci19Ci0KLS8qIC0tLS0tLS0tLS0K LSAqIENvbnN0cnVjdCBhIGNvbm5lY3Rpb24gc3RyaW5nIGZyb20gdGhlIGdpdmVuIGtleXdv cmQvdmFsdWUgcGFpcnMuIEl0IGlzCi0gKiB1c2VkIHRvIHBhc3MgdGhlIGNvbm5lY3Rpb24g b3B0aW9ucyB0byB0aGUgcGdfZHVtcCBzdWJwcm9jZXNzLgotICoKLSAqIFRoZSBmb2xsb3dp bmcgcGFyYW1ldGVycyBhcmUgZXhjbHVkZWQ6Ci0gKglkYm5hbWUJCS0gdmFyaWVzIGluIGVh Y2ggcGdfZHVtcCBpbnZvY2F0aW9uCi0gKglwYXNzd29yZAktIGl0J3Mgbm90IHNlY3VyZSB0 byBwYXNzIGEgcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZQotICoJZmFsbGJhY2tfYXBw bGljYXRpb25fbmFtZSAtIHdlJ2xsIGxldCBwZ19kdW1wIHNldCBpdAotICogLS0tLS0tLS0t LQotICovCi1zdGF0aWMgY2hhciAqCi1jb25zdHJ1Y3RDb25uU3RyKGNvbnN0IGNoYXIgKipr ZXl3b3JkcywgY29uc3QgY2hhciAqKnZhbHVlcykKLXsKLQlQUUV4cEJ1ZmZlciBidWYgPSBj cmVhdGVQUUV4cEJ1ZmZlcigpOwotCWNoYXIJICAgKmNvbm5zdHI7Ci0JaW50CQkJaTsKLQli b29sCQlmaXJzdGtleXdvcmQgPSB0cnVlOwotCi0JLyogQ29uc3RydWN0IGEgbmV3IGNvbm5l Y3Rpb24gc3RyaW5nIGluIGtleT0ndmFsdWUnIGZvcm1hdC4gKi8KLQlmb3IgKGkgPSAwOyBr ZXl3b3Jkc1tpXSAhPSBOVUxMOyBpKyspCi0JewotCQlpZiAoc3RyY21wKGtleXdvcmRzW2ld LCAiZGJuYW1lIikgPT0gMCB8fAotCQkJc3RyY21wKGtleXdvcmRzW2ldLCAicGFzc3dvcmQi KSA9PSAwIHx8Ci0JCQlzdHJjbXAoa2V5d29yZHNbaV0sICJmYWxsYmFja19hcHBsaWNhdGlv bl9uYW1lIikgPT0gMCkKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghZmlyc3RrZXl3b3JkKQot CQkJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKGJ1ZiwgJyAnKTsKLQkJZmlyc3RrZXl3b3JkID0g ZmFsc2U7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKGJ1ZiwgIiVzPSIsIGtleXdvcmRzW2ldKTsK LQkJYXBwZW5kQ29ublN0clZhbChidWYsIHZhbHVlc1tpXSk7Ci0JfQotCi0JY29ubnN0ciA9 IHBnX3N0cmR1cChidWYtPmRhdGEpOwotCWRlc3Ryb3lQUUV4cEJ1ZmZlcihidWYpOwotCXJl dHVybiBjb25uc3RyOwotfQotCi0vKgotICogUnVuIGEgcXVlcnksIHJldHVybiB0aGUgcmVz dWx0cywgZXhpdCBwcm9ncmFtIG9uIGZhaWx1cmUuCi0gKi8KLXN0YXRpYyBQR3Jlc3VsdCAq Ci1leGVjdXRlUXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVyeSkKLXsKLQlQ R3Jlc3VsdCAgICpyZXM7Ci0KLQlwZ19sb2dfaW5mbygiZXhlY3V0aW5nICVzIiwgcXVlcnkp OwotCi0JcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5KTsKLQlpZiAoIXJlcyB8fAotCQlQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKLQl7Ci0JCXBnX2xvZ19lcnJv cigicXVlcnkgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJcGdfbG9n X2Vycm9yX2RldGFpbCgiUXVlcnkgd2FzOiAlcyIsIHF1ZXJ5KTsKLQkJUFFmaW5pc2goY29u bik7Ci0JCWV4aXRfbmljZWx5KDEpOwotCX0KLQotCXJldHVybiByZXM7Ci19Ci0KIC8qCiAg KiBBcyBhYm92ZSBmb3IgYSBTUUwgY29tbWFuZCAod2hpY2ggcmV0dXJucyBub3RoaW5nKS4K ICAqLwotLSAKMi4zNC4xCgo= --------------gUQH0rLy2TceccnJKPIksSaq Content-Type: text/x-patch; charset=UTF-8; name="v20250403-0002-add-new-list-type-simple_oid_string_list-t.patch" Content-Disposition: attachment; filename*0="v20250403-0002-add-new-list-type-simple_oid_string_list-t.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNjdlY2Q0ZjY4NzBmOTQwMmEyMjU0MTUyYmJmN2U5N2ZmMWYyYTIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogRnJpLCAyOCBNYXIgMjAyNSAxODoxMDoyNCAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjUwNDAzIDIvNF0gYWRkIG5ldyBsaXN0IHR5cGUgc2ltcGxlX29pZF9zdHJp bmdfbGlzdCB0bwogZmUtdXRpbHMvc2ltcGxlX2xpc3QKClRoaXMgdHlwZSBjb250YWlucyBi b3RoIGFuIG9pZCBhbmQgYSBzdHJpbmcuCgpUaGlzIHdpbGwgYmUgdXNlZCBpbiBmb3J0aGNv bWluZyBjaGFuZ2VzIHRvIHBnX3Jlc3RvcmUuCgpBdXRob3I6IEFuZHJldyBEdW5zdGFuIDxh bmRyZXdAZHVuc2xhbmUubmV0PgotLS0KIHNyYy9mZV91dGlscy9zaW1wbGVfbGlzdC5jICAg ICAgICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRl L2ZlX3V0aWxzL3NpbXBsZV9saXN0LmggfCAxNiArKysrKysrKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgfCAgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA1OSBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2ZlX3V0aWxzL3NpbXBsZV9saXN0LmMg Yi9zcmMvZmVfdXRpbHMvc2ltcGxlX2xpc3QuYwppbmRleCA0ODNkNTQ1NTU5NC4uYjA2ODZl NTdjNGEgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9zaW1wbGVfbGlzdC5jCisrKyBiL3Ny Yy9mZV91dGlscy9zaW1wbGVfbGlzdC5jCkBAIC0xOTIsMyArMTkyLDQ0IEBAIHNpbXBsZV9w dHJfbGlzdF9kZXN0cm95KFNpbXBsZVB0ckxpc3QgKmxpc3QpCiAJCWNlbGwgPSBuZXh0Owog CX0KIH0KKworLyoKKyAqIEFkZCB0byBhbiBvaWRfc3RyaW5nIGxpc3QKKyAqLwordm9pZAor c2ltcGxlX29pZF9zdHJpbmdfbGlzdF9hcHBlbmQoU2ltcGxlT2lkU3RyaW5nTGlzdCAqbGlz dCwgT2lkIG9pZCwgY29uc3QgY2hhciAqc3RyKQoreworCVNpbXBsZU9pZFN0cmluZ0xpc3RD ZWxsICpjZWxsOworCisJY2VsbCA9IChTaW1wbGVPaWRTdHJpbmdMaXN0Q2VsbCAqKQorCQlw Z19tYWxsb2Mob2Zmc2V0b2YoU2ltcGxlT2lkU3RyaW5nTGlzdENlbGwsIHN0cikgKyBzdHJs ZW4oc3RyKSArIDEpOworCisJY2VsbC0+bmV4dCA9IE5VTEw7CisJY2VsbC0+b2lkID0gb2lk OworCXN0cmNweShjZWxsLT5zdHIsIHN0cik7CisKKwlpZiAobGlzdC0+dGFpbCkKKwkJbGlz dC0+dGFpbC0+bmV4dCA9IGNlbGw7CisJZWxzZQorCQlsaXN0LT5oZWFkID0gY2VsbDsKKwls aXN0LT50YWlsID0gY2VsbDsKK30KKworLyoKKyAqIERlc3Ryb3kgYW4gb2lkX3N0cmluZyBs aXN0CisgKi8KK3ZvaWQKK3NpbXBsZV9vaWRfc3RyaW5nX2xpc3RfZGVzdHJveShTaW1wbGVP aWRTdHJpbmdMaXN0ICpsaXN0KQoreworCVNpbXBsZU9pZFN0cmluZ0xpc3RDZWxsICpjZWxs OworCisJY2VsbCA9IGxpc3QtPmhlYWQ7CisJd2hpbGUgKGNlbGwgIT0gTlVMTCkKKwl7CisJ CVNpbXBsZU9pZFN0cmluZ0xpc3RDZWxsICpuZXh0OworCisJCW5leHQgPSBjZWxsLT5uZXh0 OworCQlwZ19mcmVlKGNlbGwpOworCQljZWxsID0gbmV4dDsKKwl9Cit9CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9mZV91dGlscy9zaW1wbGVfbGlzdC5oIGIvc3JjL2luY2x1ZGUvZmVf dXRpbHMvc2ltcGxlX2xpc3QuaAppbmRleCAzYjhlMzg0MTRlYy4uYTUzNzM5MzI1NTUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3NpbXBsZV9saXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvZmVfdXRpbHMvc2ltcGxlX2xpc3QuaApAQCAtNTUsNiArNTUsMTkgQEAgdHlw ZWRlZiBzdHJ1Y3QgU2ltcGxlUHRyTGlzdAogCVNpbXBsZVB0ckxpc3RDZWxsICp0YWlsOwog fSBTaW1wbGVQdHJMaXN0OwogCit0eXBlZGVmIHN0cnVjdCBTaW1wbGVPaWRTdHJpbmdMaXN0 Q2VsbAoreworCXN0cnVjdCBTaW1wbGVPaWRTdHJpbmdMaXN0Q2VsbCAqbmV4dDsKKwlPaWQJ CQlvaWQ7CisJY2hhcgkJc3RyW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07IC8qIG51bGwtdGVy bWluYXRlZCBzdHJpbmcgaGVyZSAqLworfQkJCVNpbXBsZU9pZFN0cmluZ0xpc3RDZWxsOwor Cit0eXBlZGVmIHN0cnVjdCBTaW1wbGVPaWRTdHJpbmdMaXN0Cit7CisJU2ltcGxlT2lkU3Ry aW5nTGlzdENlbGwgKmhlYWQ7CisJU2ltcGxlT2lkU3RyaW5nTGlzdENlbGwgKnRhaWw7Cit9 IFNpbXBsZU9pZFN0cmluZ0xpc3Q7CisKIGV4dGVybiB2b2lkIHNpbXBsZV9vaWRfbGlzdF9h cHBlbmQoU2ltcGxlT2lkTGlzdCAqbGlzdCwgT2lkIHZhbCk7CiBleHRlcm4gYm9vbCBzaW1w bGVfb2lkX2xpc3RfbWVtYmVyKFNpbXBsZU9pZExpc3QgKmxpc3QsIE9pZCB2YWwpOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX29pZF9saXN0X2Rlc3Ryb3koU2ltcGxlT2lkTGlzdCAqbGlzdCk7 CkBAIC02OCw0ICs4MSw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpzaW1wbGVfc3RyaW5nX2xp c3Rfbm90X3RvdWNoZWQoU2ltcGxlU3RyaW5nTGlzdCAqbGlzdCk7CiBleHRlcm4gdm9pZCBz aW1wbGVfcHRyX2xpc3RfYXBwZW5kKFNpbXBsZVB0ckxpc3QgKmxpc3QsIHZvaWQgKnB0cik7 CiBleHRlcm4gdm9pZCBzaW1wbGVfcHRyX2xpc3RfZGVzdHJveShTaW1wbGVQdHJMaXN0ICps aXN0KTsKIAorZXh0ZXJuIHZvaWQgc2ltcGxlX29pZF9zdHJpbmdfbGlzdF9hcHBlbmQoU2lt cGxlT2lkU3RyaW5nTGlzdCAqbGlzdCwgT2lkIG9pZCwgY29uc3QgY2hhciAqc3RyKTsKK2V4 dGVybiB2b2lkIHNpbXBsZV9vaWRfc3RyaW5nX2xpc3RfZGVzdHJveShTaW1wbGVPaWRTdHJp bmdMaXN0ICpsaXN0KTsKKwogI2VuZGlmCQkJCQkJCS8qIFNJTVBMRV9MSVNUX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOGYyOGQ4ZmYyOGUuLjhiZTYyYzkyMTZh IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjc0NCw2ICsyNzQ0LDggQEAg U2ltcGxlQWN0aW9uTGlzdENlbGwKIFNpbXBsZUVjb250ZXh0U3RhY2tFbnRyeQogU2ltcGxl T2lkTGlzdAogU2ltcGxlT2lkTGlzdENlbGwKK1NpbXBsZU9pZFN0cmluZ0xpc3QKK1NpbXBs ZU9pZExpc3RTdHJpbmdDZWxsCiBTaW1wbGVQdHJMaXN0CiBTaW1wbGVQdHJMaXN0Q2VsbAog U2ltcGxlU3RhdHMKLS0gCjIuMzQuMQoK --------------gUQH0rLy2TceccnJKPIksSaq Content-Type: text/x-patch; charset=UTF-8; name="v20250403-0003-Non-text-modes-for-pg_dumpall-correspondin.patch" Content-Disposition: attachment; filename*0="v20250403-0003-Non-text-modes-for-pg_dumpall-correspondin.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NjIxNGNlOGEyYTc2N2E2OGYzMGU3MmY0Zjc5Zjg1ODgwMjQxZTUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWhlbmRyYSBTaW5naCBUaGFsb3IgPG1haGk2cnVu QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAxIEFwciAyMDI1IDEwOjQ4OjUyICswNTMwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyNTA0MDMgMy80XSBOb24gdGV4dCBtb2RlcyBmb3IgcGdfZHVtcGFs bCwgY29ycmVzcG9uZGluZ2x5CiBjaGFuZ2UgcGdfcmVzdG9yZQpNSU1FLVZlcnNpb246IDEu MApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFu c2Zlci1FbmNvZGluZzogOGJpdAoKcGdfZHVtcGFsbCBhY3F1aXJlcyBhIG5ldyAtRi8tLWZv cm1hdCBvcHRpb24sIHdpdGggdGhlIHNhbWUgbWVhbmluZ3MgYXMKcGdfZHVtcC4gVGhlIGRl ZmF1bHQgaXMgcCwgbWVhbmluZyBwbGFpbiB0ZXh0LiBGb3IgYW55IG90aGVyIHZhbHVlLCBh CmRpcmVjdG9yeSBpcyBjcmVhdGVkIGNvbnRhaW5pbmcgdHdvIGZpbGVzLCBnbG9iYWxzLmRh dGEgYW5kIG1hcC5kYXQuIFRoZQpmaXJzdCBjb250YWlucyBTUUwgZm9yIHJlc3RvcmluZyB0 aGUgZ2xvYmFsIGRhdGEsIGFuZCB0aGUgc2Vjb25kCmNvbnRhaW5zIGEgbWFwIGZyb20gb2lk cyB0byBkYXRhYmFzZSBuYW1lcy4gSXQgd2lsbCBhbHNvIGNvbnRhaW4gYQpzdWJkaXJlY3Rv cnkgY2FsbGVkIGRhdGFiYXNlcywgaW5zaWRlIHdoaWNoIGl0IHdpbGwgY3JlYXRlIGFyY2hp dmVzIGluCnRoZSBzcGVjaWZpZWQgZm9ybWF0LCBuYW1lZCB1c2luZyB0aGUgZGF0YWJhc2Ug b2lkcy4KCkluIHRoZXNlIGNhc2VzcyB0aGUgLWYgYXJndW1lbnQgaXMgcmVxdWlyZWQuCgpJ ZiBwZ19yZXN0b3JlIGVuY291bnRlcnMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBnbG9iYWxz LmRhdCwgYW5kIG5vCnRvYy5kYXQsIGl0IHJlc3RvcmVzIHRoZSBnbG9iYWwgc2V0dGluZ3Mg YW5kIHRoZW4gcmVzdG9yZXMgZWFjaApkYXRhYmFzZS4KCnBnX3Jlc3RvcmUgYWNxdWlyZXMg dHdvIG5ldyBvcHRpb25zOiAtZy8tLWdsb2JhbHMtb25seSB3aGljaCBzdXBwcmVzc2VzCnJl c3RvcmF0aW9uIG9mIGFueSBkYXRhYmFzZXMsIGFuZCAtLWV4Y2x1ZGUtZGF0YWJhc2Ugd2hp Y2ggaW5oaWJpdHMKcmVzdG9yYXRpb24gb2YgcGFydGljdWFsciBkYXRhYmFzZShzKSBpbiB0 aGUgc2FtZSB3YXkgdGhlIHNhbWUgb3B0aW9uCndvcmtzIGluIHBnX2R1bXBhbGwuCgpBdXRo b3I6IE1haGVuZHJhIFNpbmdoIFRoYWxvciA8bWFoaTZydW5AZ21haWwuY29tPgpDby1hdXRo b3JlZC1ieTogIEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdl ZC1ieTogamlhbiBoZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgpSZXZpZXdlZC1i eTogU3JpbmF0aCBSZWRkeSA8c3JpbmF0aDIxMzNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTog w4FsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vY2IxMDM2MjMtOGVlNi00YmE1LWEyYzktZjMyZTNhNDkz M2ZhQGR1bnNsYW5lLm5ldAotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21s ICAgICB8ICA4NiArKy0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sICAgICB8 ICA2NiArKy0KIHNyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jICAgICAgICAgICB8ICAxMCAr CiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggICAgICAgICAgfCAgIDIgKy0KIHNyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyB8ICAyMCArLQogc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfdGFyLmMgICAgICB8ICAgMiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jICAgICAg ICAgfCAyOTUgKysrKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyAgICAg ICAgIHwgODAwICsrKysrKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2Jpbi9wZ19kdW1w L3QvMDAxX2Jhc2ljLnBsICAgICAgIHwgICA5ICsKIDExIGZpbGVzIGNoYW5nZWQsIDEyMDgg aW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9wZ19kdW1wYWxsLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXBhbGwu c2dtbAppbmRleCA3NjViMzBhM2E2Ni4uNDNmZGFiMmQ3N2UgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvcGdfZHVtcGFsbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdf ZHVtcGFsbC5zZ21sCkBAIC0xNiw3ICsxNiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlv bgogCiAgPHJlZm5hbWVkaXY+CiAgIDxyZWZuYW1lPnBnX2R1bXBhbGw8L3JlZm5hbWU+Ci0g IDxyZWZwdXJwb3NlPmV4dHJhY3QgYSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVj dG5hbWU+IGRhdGFiYXNlIGNsdXN0ZXIgaW50byBhIHNjcmlwdCBmaWxlPC9yZWZwdXJwb3Nl PgorICA8cmVmcHVycG9zZT5leHRyYWN0IGEgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3By b2R1Y3RuYW1lPiBkYXRhYmFzZSBjbHVzdGVyIHVzaW5nIGEgc3BlY2lmaWVkIGR1bXAgZm9y bWF0PC9yZWZwdXJwb3NlPgogIDwvcmVmbmFtZWRpdj4KIAogIDxyZWZzeW5vcHNpc2Rpdj4K QEAgLTMzLDcgKzMzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgIDxwYXJhPgog ICAgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPiBpcyBhIHV0aWxpdHkg Zm9yIHdyaXRpbmcgb3V0CiAgICAoPHF1b3RlPmR1bXBpbmc8L3F1b3RlPikgYWxsIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGF0YWJhc2VzCi0gICBvZiBhIGNs dXN0ZXIgaW50byBvbmUgc2NyaXB0IGZpbGUuICBUaGUgc2NyaXB0IGZpbGUgY29udGFpbnMK KyAgIG9mIGEgY2x1c3RlciBpbnRvIGFuIGFyY2hpdmUuICBUaGUgYXJjaGl2ZSBjb250YWlu cwogICAgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBjb21tYW5kcyB0aGF0IGNhbiBiZSB1c2Vk IGFzIGlucHV0IHRvIDx4cmVmCiAgICBsaW5rZW5kPSJhcHAtcHNxbCIvPiB0byByZXN0b3Jl IHRoZSBkYXRhYmFzZXMuICBJdCBkb2VzIHRoaXMgYnkKICAgIGNhbGxpbmcgPHhyZWYgbGlu a2VuZD0iYXBwLXBnZHVtcCIvPiBmb3IgZWFjaCBkYXRhYmFzZSBpbiB0aGUgY2x1c3Rlci4K QEAgLTUyLDExICs1MiwxNiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgPC9wYXJh PgogCiAgIDxwYXJhPgotICAgVGhlIFNRTCBzY3JpcHQgd2lsbCBiZSB3cml0dGVuIHRvIHRo ZSBzdGFuZGFyZCBvdXRwdXQuICBVc2UgdGhlCisgICBQbGFpbiB0ZXh0IFNRTCBzY3JpcHRz IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LiAgVXNlIHRoZQogICAg PG9wdGlvbj4tZjwvb3B0aW9uPi88b3B0aW9uPi0tZmlsZTwvb3B0aW9uPiBvcHRpb24gb3Ig c2hlbGwgb3BlcmF0b3JzIHRvCiAgICByZWRpcmVjdCBpdCBpbnRvIGEgZmlsZS4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgQXJjaGl2ZXMgaW4gb3RoZXIgZm9ybWF0cyB3aWxsIGJl IHBsYWNlZCBpbiBhIGRpcmVjdG9yeSBuYW1lZCB1c2luZyB0aGUKKyAgIDxvcHRpb24+LWY8 L29wdGlvbj4vPG9wdGlvbj4tLWZpbGU8L29wdGlvbj4sIHdoaWNoIGlzIHJlcXVpcmVkIGlu IHRoaXMgY2FzZS4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICA8YXBwbGljYXRpb24+cGdf ZHVtcGFsbDwvYXBwbGljYXRpb24+IG5lZWRzIHRvIGNvbm5lY3Qgc2V2ZXJhbAogICB0aW1l cyB0byB0aGUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzZXJ2ZXIg KG9uY2UgcGVyCkBAIC0xMjEsMTAgKzEyNiw4NSBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRp b24KICAgICAgICA8cGFyYT4KICAgICAgICAgU2VuZCBvdXRwdXQgdG8gdGhlIHNwZWNpZmll ZCBmaWxlLiAgSWYgdGhpcyBpcyBvbWl0dGVkLCB0aGUKICAgICAgICAgc3RhbmRhcmQgb3V0 cHV0IGlzIHVzZWQuCisgICAgICAgIE5vdGU6IFRoaXMgb3B0aW9uIGNhbiBvbmx5IGJlIG9t aXR0ZWQgd2hlbiA8b3B0aW9uPi0tZm9ybWF0PC9vcHRpb24+IGlzIHBsYWluCiAgICAgICAg PC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LUYgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmZvcm1hdDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJt PgorICAgICAgPHRlcm0+PG9wdGlvbj4tLWZvcm1hdD08cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Zm9ybWF0PC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNwZWNpZnkgdGhlIGZvcm1hdCBv ZiBkdW1wIGZpbGVzLiAgSW4gcGxhaW4gZm9ybWF0LCBhbGwgdGhlIGR1bXAgZGF0YSBpcwor ICAgICAgICBzZW50IGluIGEgc2luZ2xlIHRleHQgc3RyZWFtLiBUaGlzIGlzIHRoZSBkZWZh dWx0LgorCisgICAgICAgIEluIGFsbCBvdGhlciBtb2RlcywgPGFwcGxpY2F0aW9uPnBnX2R1 bXBhbGw8L2FwcGxpY2F0aW9uPiBmaXJzdCBjcmVhdGVzIHR3byBmaWxlczoKKyAgICAgICAg PGZpbGVuYW1lPmdsb2JhbC5kYXQ8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPm1hcC5kYXQ8 L2ZpbGVuYW1lPiwgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICBzcGVjaWZpZWQgYnkgPG9w dGlvbj4tLWZpbGU8L29wdGlvbj4uCisgICAgICAgIFRoZSBmaXJzdCBmaWxlIGNvbnRhaW5z IGdsb2JhbCBkYXRhLCBzdWNoIGFzIHJvbGVzIGFuZCB0YWJsZXNwYWNlcy4gVGhlIHNlY29u ZAorICAgICAgICBjb250YWlucyBhIG1hcHBpbmcgYmV0d2VlbiBkYXRhYmFzZSBvaWRzIGFu ZCBuYW1lcy4gVGhlc2UgZmlsZXMgYXJlIHVzZWQgYnkKKyAgICAgICAgPGFwcGxpY2F0aW9u PnBnX3Jlc3RvcmU8L2FwcGxpY2F0aW9uPi4gRGF0YSBmb3IgaW5kaXZpZHVhbCBkYXRhYmFz ZXMgaXMgcGxhY2VkIGluCisgICAgICAgIDxmaWxlbmFtZT5kYXRhYmFzZXM8L2ZpbGVuYW1l PiBzdWJkaXJlY3RvcnksIG5hbWVkIHVzaW5nIHRoZSBkYXRhYmFzZSdzIDx0eXBlPm9pZDwv dHlwZT4uCisKKyAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICA8dmFybGlzdGVudHJ5 PgorICAgICAgICAgPHRlcm0+PGxpdGVyYWw+ZDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAg ICA8dGVybT48bGl0ZXJhbD5kaXJlY3Rvcnk8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAg PGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICBPdXRwdXQgZGlyZWN0 b3J5LWZvcm1hdCBhcmNoaXZlcyBmb3IgZWFjaCBkYXRhYmFzZSwKKyAgICAgICAgICAgc3Vp dGFibGUgZm9yIGlucHV0IGludG8gcGdfcmVzdG9yZS4gVGhlIGRpcmVjdG9yeQorICAgICAg ICAgICB3aWxsIGhhdmUgZGF0YWJhc2UgPHR5cGU+b2lkPC90eXBlPiBhcyBpdHMgbmFtZS4K KyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L3Zh cmxpc3RlbnRyeT4KKworICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgPHRlcm0+ PGxpdGVyYWw+cDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICA8dGVybT48bGl0ZXJhbD5w bGFpbjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg PHBhcmE+CisgICAgICAgICAgIE91dHB1dCBhIHBsYWluLXRleHQgU1FMIHNjcmlwdCBmaWxl ICh0aGUgZGVmYXVsdCkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgPHZhcmxpc3RlbnRyeT4K KyAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAg PHRlcm0+PGxpdGVyYWw+Y3VzdG9tPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgT3V0cHV0IGEgY3VzdG9tLWZv cm1hdCBhcmNoaXZlIGZvciBlYWNoIGRhdGFiYXNlLAorICAgICAgICAgICBzdWl0YWJsZSBm b3IgaW5wdXQgaW50byBwZ19yZXN0b3JlLiBUaGUgYXJjaGl2ZQorICAgICAgICAgICB3aWxs IGJlIG5hbWVkIDxmaWxlbmFtZT5kYm9pZC5kbXA8L2ZpbGVuYW1lPiB3aGVyZSA8dHlwZT5k Ym9pZDwvdHlwZT4gaXMgdGhlCisgICAgICAgICAgIDx0eXBlPm9pZDwvdHlwZT4gb2YgdGhl IGRhdGFiYXNlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgICAgPHRlcm0+PGxpdGVyYWw+dDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICA8dGVy bT48bGl0ZXJhbD50YXI8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgPGxpc3RpdGVtPgor ICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICBPdXRwdXQgYSB0YXItZm9ybWF0IGFyY2hp dmUgZm9yIGVhY2ggZGF0YWJhc2UsCisgICAgICAgICAgIHN1aXRhYmxlIGZvciBpbnB1dCBp bnRvIHBnX3Jlc3RvcmUuIFRoZSBhcmNoaXZlCisgICAgICAgICAgIHdpbGwgYmUgbmFtZWQg PGZpbGVuYW1lPmRib2lkLnRhcjwvZmlsZW5hbWU+IHdoZXJlIDx0eXBlPmRib2lkPC90eXBl PiBpcyB0aGUKKyAgICAgICAgICAgPHR5cGU+b2lkPC90eXBlPiBvZiB0aGUgZGF0YWJhc2Uu CisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICAgICBOb3Rl OiBzZWUgPHhyZWYgbGlua2VuZD0iYXBwLXBnZHVtcCIvPiBmb3IgZGV0YWlscworICAgICAg IG9mIGhvdyB0aGUgdmFyaW91cyBub24gcGxhaW4gdGV4dCBhcmNoaXZlcyB3b3JrLgorCisg ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi0tZmlsdGVy PTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5maWxlbmFtZTwvcmVwbGFjZWFibGU+ PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3JlZi9wZ19yZXN0b3JlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3Rv cmUuc2dtbAppbmRleCBjODQwYTgwN2FlOS4uZjE0ZTU4NjZmNmMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cGdfcmVzdG9yZS5zZ21sCkBAIC0xOCw4ICsxOCw5IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRh dGlvbgogICA8cmVmbmFtZT5wZ19yZXN0b3JlPC9yZWZuYW1lPgogCiAgIDxyZWZwdXJwb3Nl PgotICAgcmVzdG9yZSBhIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4g ZGF0YWJhc2UgZnJvbSBhbgotICAgYXJjaGl2ZSBmaWxlIGNyZWF0ZWQgYnkgPGFwcGxpY2F0 aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPgorICAgcmVzdG9yZSBhIDxwcm9kdWN0bmFtZT5Q b3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGF0YWJhc2Ugb3IgY2x1c3RlcgorICAgZnJvbSBh biBhcmNoaXZlIGNyZWF0ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9u PiBvcgorICAgPGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPgogICA8L3Jl ZnB1cnBvc2U+CiAgPC9yZWZuYW1lZGl2PgogCkBAIC0zOCwxMyArMzksMTQgQEAgUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCiAKICAgPHBhcmE+CiAgICA8YXBwbGljYXRpb24+cGdfcmVz dG9yZTwvYXBwbGljYXRpb24+IGlzIGEgdXRpbGl0eSBmb3IgcmVzdG9yaW5nIGEKLSAgIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGF0YWJhc2UgZnJvbSBhbiBh cmNoaXZlCi0gICBjcmVhdGVkIGJ5IDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ2R1bXAiLz4gaW4g b25lIG9mIHRoZSBub24tcGxhaW4tdGV4dAorICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8 L3Byb2R1Y3RuYW1lPiBkYXRhYmFzZSBvciBjbHVzdGVyIGZyb20gYW4gYXJjaGl2ZQorICAg Y3JlYXRlZCBieSA8eHJlZiBsaW5rZW5kPSJhcHAtcGdkdW1wIi8+IG9yCisgICA8eHJlZiBs aW5rZW5kPSJhcHAtcGctZHVtcGFsbCIvPiBpbiBvbmUgb2YgdGhlIG5vbi1wbGFpbi10ZXh0 CiAgICBmb3JtYXRzLiAgSXQgd2lsbCBpc3N1ZSB0aGUgY29tbWFuZHMgbmVjZXNzYXJ5IHRv IHJlY29uc3RydWN0IHRoZQotICAgZGF0YWJhc2UgdG8gdGhlIHN0YXRlIGl0IHdhcyBpbiBh dCB0aGUgdGltZSBpdCB3YXMgc2F2ZWQuICBUaGUKLSAgIGFyY2hpdmUgZmlsZXMgYWxzbyBh bGxvdyA8YXBwbGljYXRpb24+cGdfcmVzdG9yZTwvYXBwbGljYXRpb24+IHRvCisgICBkYXRh YmFzZSBvciBjbHVzdGVyIHRvIHRoZSBzdGF0ZSBpdCB3YXMgaW4gYXQgdGhlIHRpbWUgaXQg d2FzIHNhdmVkLiBUaGUKKyAgIGFyY2hpdmVzIGFsc28gYWxsb3cgPGFwcGxpY2F0aW9uPnBn X3Jlc3RvcmU8L2FwcGxpY2F0aW9uPiB0bwogICAgYmUgc2VsZWN0aXZlIGFib3V0IHdoYXQg aXMgcmVzdG9yZWQsIG9yIGV2ZW4gdG8gcmVvcmRlciB0aGUgaXRlbXMKLSAgIHByaW9yIHRv IGJlaW5nIHJlc3RvcmVkLiBUaGUgYXJjaGl2ZSBmaWxlcyBhcmUgZGVzaWduZWQgdG8gYmUK KyAgIHByaW9yIHRvIGJlaW5nIHJlc3RvcmVkLiBUaGUgYXJjaGl2ZSBmb3JtYXRzIGFyZSBk ZXNpZ25lZCB0byBiZQogICAgcG9ydGFibGUgYWNyb3NzIGFyY2hpdGVjdHVyZXMuCiAgIDwv cGFyYT4KIApAQCAtNTIsMTAgKzU0LDE3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog ICAgPGFwcGxpY2F0aW9uPnBnX3Jlc3RvcmU8L2FwcGxpY2F0aW9uPiBjYW4gb3BlcmF0ZSBp biB0d28gbW9kZXMuCiAgICBJZiBhIGRhdGFiYXNlIG5hbWUgaXMgc3BlY2lmaWVkLCA8YXBw bGljYXRpb24+cGdfcmVzdG9yZTwvYXBwbGljYXRpb24+CiAgICBjb25uZWN0cyB0byB0aGF0 IGRhdGFiYXNlIGFuZCByZXN0b3JlcyBhcmNoaXZlIGNvbnRlbnRzIGRpcmVjdGx5IGludG8K LSAgIHRoZSBkYXRhYmFzZS4gIE90aGVyd2lzZSwgYSBzY3JpcHQgY29udGFpbmluZyB0aGUg U1FMCi0gICBjb21tYW5kcyBuZWNlc3NhcnkgdG8gcmVidWlsZCB0aGUgZGF0YWJhc2UgaXMg Y3JlYXRlZCBhbmQgd3JpdHRlbgorICAgdGhlIGRhdGFiYXNlLgorICAgV2hlbiByZXN0b3Jp bmcgZnJvbSBhIGR1bXAgbWFkZSBieTxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNh dGlvbj4sCisgICBlYWNoIGRhdGFiYXNlIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlbiB0aGUg cmVzdG9yYXRpb24gd2lsbCBiZSBydW4gaW4gdGhhdAorICAgZGF0YWJhc2UuCisKKyAgIE90 aGVyd2lzZSwgd2hlbiBhIGRhdGFiYXNlIG5hbWUgaXMgbm90IHNwZWNpZmllZCwgYSBzY3Jp cHQgY29udGFpbmluZyB0aGUgU1FMCisgICBjb21tYW5kcyBuZWNlc3NhcnkgdG8gcmVidWls ZCB0aGUgZGF0YWJhc2Ugb3IgY2x1c3RlciBpcyBjcmVhdGVkIGFuZCB3cml0dGVuCiAgICB0 byBhIGZpbGUgb3Igc3RhbmRhcmQgb3V0cHV0LiAgVGhpcyBzY3JpcHQgb3V0cHV0IGlzIGVx dWl2YWxlbnQgdG8KLSAgIHRoZSBwbGFpbiB0ZXh0IG91dHB1dCBmb3JtYXQgb2YgPGFwcGxp Y2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPi4KKyAgIHRoZSBwbGFpbiB0ZXh0IG91dHB1 dCBmb3JtYXQgb2YgPGFwcGxpY2F0aW9uPnBnX2R1bXA8L2FwcGxpY2F0aW9uPiBvcgorICAg PGFwcGxpY2F0aW9uPnBnX2R1bXBhbGw8L2FwcGxpY2F0aW9uPi4KKwogICAgU29tZSBvZiB0 aGUgb3B0aW9ucyBjb250cm9sbGluZyB0aGUgb3V0cHV0IGFyZSB0aGVyZWZvcmUgYW5hbG9n b3VzIHRvCiAgICA8YXBwbGljYXRpb24+cGdfZHVtcDwvYXBwbGljYXRpb24+IG9wdGlvbnMu CiAgIDwvcGFyYT4KQEAgLTE0MCw2ICsxNDksOCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRp b24KICAgICAgICAgY29tbWFuZHMgdGhhdCBtZW50aW9uIHRoaXMgZGF0YWJhc2UuCiAgICAg ICAgIEFjY2VzcyBwcml2aWxlZ2VzIGZvciB0aGUgZGF0YWJhc2UgaXRzZWxmIGFyZSBhbHNv IHJlc3RvcmVkLAogICAgICAgICB1bmxlc3MgPG9wdGlvbj4tLW5vLWFjbDwvb3B0aW9uPiBp cyBzcGVjaWZpZWQuCisgICAgICAgIDxvcHRpb24+LS1jcmVhdGU8L29wdGlvbj4gaXMgcmVx dWlyZWQgd2hlbiByZXN0b3JpbmcgbXVsdGlwbGUgZGF0YWJhc2VzCisgICAgICAgIGZyb20g YW4gYXJjaGl2ZSBjcmVhdGVkIGJ5IDxhcHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNh dGlvbj4uCiAgICAgICAgPC9wYXJhPgogCiAgICAgICAgPHBhcmE+CkBAIC0xNjYsNiArMTc3 LDI4IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgIDx0ZXJt PjxvcHRpb24+LS1leGNsdWRlLWRhdGFiYXNlPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5wYXR0ZXJuPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIERvIG5vdCByZXN0b3JlIGRhdGFiYXNl cyB3aG9zZSBuYW1lIG1hdGNoZXMKKyAgICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgTXVsdGlwbGUgcGF0dGVy bnMgY2FuIGJlIGV4Y2x1ZGVkIGJ5IHdyaXRpbmcgbXVsdGlwbGUKKyAgICAgICAgPG9wdGlv bj4tLWV4Y2x1ZGUtZGF0YWJhc2U8L29wdGlvbj4gc3dpdGNoZXMuICBUaGUKKyAgICAgICAg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2VhYmxlPiBw YXJhbWV0ZXIgaXMKKyAgICAgICAgaW50ZXJwcmV0ZWQgYXMgYSBwYXR0ZXJuIGFjY29yZGlu ZyB0byB0aGUgc2FtZSBydWxlcyB1c2VkIGJ5CisgICAgICAgIDxhcHBsaWNhdGlvbj5wc3Fs PC9hcHBsaWNhdGlvbj4ncyA8bGl0ZXJhbD5cZDwvbGl0ZXJhbD4KKyAgICAgICAgY29tbWFu ZHMgKHNlZSA8eHJlZiBsaW5rZW5kPSJhcHAtcHNxbC1wYXR0ZXJucyIvPiksCisgICAgICAg IHNvIG11bHRpcGxlIGRhdGFiYXNlcyBjYW4gYWxzbyBiZSBleGNsdWRlZCBieSB3cml0aW5n IHdpbGRjYXJkCisgICAgICAgIGNoYXJhY3RlcnMgaW4gdGhlIHBhdHRlcm4uICBXaGVuIHVz aW5nIHdpbGRjYXJkcywgYmUgY2FyZWZ1bCB0bworICAgICAgICBxdW90ZSB0aGUgcGF0dGVy biBpZiBuZWVkZWQgdG8gcHJldmVudCBzaGVsbCB3aWxkY2FyZCBleHBhbnNpb24uCisgICAg ICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIG9wdGlvbiBpcyBvbmx5 IHJlbGV2YW50IHdoZW4gcmVzdG9yaW5nIGZyb20gYW4gYXJjaGl2ZSBtYWRlIHVzaW5nIDxh cHBsaWNhdGlvbj5wZ19kdW1wYWxsPC9hcHBsaWNhdGlvbj4uCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxp c3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LWU8L29wdGlvbj48L3Rlcm0+CiAgICAg ICA8dGVybT48b3B0aW9uPi0tZXhpdC1vbi1lcnJvcjwvb3B0aW9uPjwvdGVybT4KQEAgLTMx NSw2ICszNDgsMTkgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgPHRlcm0+PG9wdGlvbj4tZzwvb3B0aW9uPjwvdGVybT4KKyAgICAgIDx0ZXJtPjxvcHRp b24+LS1nbG9iYWxzLW9ubHk8L29wdGlvbj48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFJlc3RvcmUgb25seSBnbG9iYWwgb2JqZWN0cyAocm9s ZXMgYW5kIHRhYmxlc3BhY2VzKSwgbm8gZGF0YWJhc2VzLgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBvcHRpb24gaXMgb25seSByZWxldmFudCB3aGVu IHJlc3RvcmluZyBmcm9tIGFuIGFyY2hpdmUgbWFkZSB1c2luZyA8YXBwbGljYXRpb24+cGdf ZHVtcGFsbDwvYXBwbGljYXRpb24+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAg ICA8dGVybT48b3B0aW9uPi1JIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRl eDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPHRlcm0+PG9wdGlvbj4t LWluZGV4PTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleDwvcmVwbGFjZWFi bGU+PC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BhcmFs bGVsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGFyYWxsZWwuYwppbmRleCAwODZhZGNkYzUwMi4u NTk3NGQ2NzA2ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jCkBAIC0zMzMsNiArMzMzLDE2IEBAIG9u X2V4aXRfY2xvc2VfYXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJb25fZXhpdF9uaWNlbHkoYXJj aGl2ZV9jbG9zZV9jb25uZWN0aW9uLCAmc2h1dGRvd25faW5mbyk7CiB9CiAKKy8qCisgKiBX aGVuIHBnX3Jlc3RvcmUgcmVzdG9yZXMgbXVsdGlwbGUgZGF0YWJhc2VzLCB0aGVuIHVwZGF0 ZSBhbHJlYWR5IGFkZGVkIGVudHJ5CisgKiBpbnRvIGFycmF5IGZvciBjbGVhbnVwLgorICov Cit2b2lkCityZXBsYWNlX29uX2V4aXRfY2xvc2VfYXJjaGl2ZShBcmNoaXZlICpBSFgpCit7 CisJc2h1dGRvd25faW5mby5BSFggPSBBSFg7Cit9CisKIC8qCiAgKiBvbl9leGl0X25pY2Vs eSBoYW5kbGVyIGZvciBzaHV0dGluZyBkb3duIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGFuZAog ICogd29ya2VyIHByb2Nlc3NlcyBjbGVhbmx5LgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2JhY2t1cC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCmluZGV4IDQ5 YmMxZWU3MWVmLi4xN2Q2ZTA2ZWMyNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtMzExLDcg KzMxMSw3IEBAIGV4dGVybiB2b2lkIFNldEFyY2hpdmVPcHRpb25zKEFyY2hpdmUgKkFILCBE dW1wT3B0aW9ucyAqZG9wdCwgUmVzdG9yZU9wdGlvbnMgKnJvCiAKIGV4dGVybiB2b2lkIFBy b2Nlc3NBcmNoaXZlUmVzdG9yZU9wdGlvbnMoQXJjaGl2ZSAqQUhYKTsKIAotZXh0ZXJuIHZv aWQgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKTsKK2V4dGVybiB2b2lkIFJlc3RvcmVB cmNoaXZlKEFyY2hpdmUgKkFIWCwgYm9vbCBhcHBlbmRfZGF0YSk7CiAKIC8qIE9wZW4gYW4g ZXhpc3RpbmcgYXJjaGl2ZSAqLwogZXh0ZXJuIEFyY2hpdmUgKk9wZW5BcmNoaXZlKGNvbnN0 IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCk7CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggM2Y1OWY4ZjlkOWQuLjU0ZWI0NzI4OTI4 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC04NSw3ICs4NSw3 IEBAIHN0YXRpYyBpbnQJUmVzdG9yaW5nVG9EQihBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0 aWMgdm9pZCBkdW1wX2xvX2J1ZihBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBk dW1wVGltZXN0YW1wKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICptc2csIHRpbWVf dCB0aW0pOwogc3RhdGljIHZvaWQgU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25z dCBjaGFyICpmaWxlbmFtZSwKLQkJCQkJICBjb25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0 aW9uIGNvbXByZXNzaW9uX3NwZWMpOworCQkJCQkgIGNvbnN0IHBnX2NvbXByZXNzX3NwZWNp ZmljYXRpb24gY29tcHJlc3Npb25fc3BlYywgYm9vbCBhcHBlbmRfZGF0YSk7CiBzdGF0aWMg Q29tcHJlc3NGaWxlSGFuZGxlICpTYXZlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0 YXRpYyB2b2lkIFJlc3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzRmls ZUhhbmRsZSAqc2F2ZWRPdXRwdXQpOwogCkBAIC0zMzgsOSArMzM4LDE0IEBAIFByb2Nlc3NB cmNoaXZlUmVzdG9yZU9wdGlvbnMoQXJjaGl2ZSAqQUhYKQogCQlTdHJpY3ROYW1lc0NoZWNr KHJvcHQpOwogfQogCi0vKiBQdWJsaWMgKi8KKy8qCisgKiBSZXN0b3JlQXJjaGl2ZQorICoK KyAqIElmIGFwcGVuZF9kYXRhIGlzIHNldCwgdGhlbiBhcHBlbmQgZGF0YSBpbnRvIGZpbGUg YXMgd2UgYXJlIHJlc3RvcmluZyBkdW1wCisgKiBvZiBtdWx0aXBsZSBkYXRhYmFzZXMgd2hp Y2ggd2FzIHRha2VuIGJ5IHBnX2R1bXBhbGwuCisgKi8KIHZvaWQKLVJlc3RvcmVBcmNoaXZl KEFyY2hpdmUgKkFIWCkKK1Jlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCwgYm9vbCBhcHBl bmRfZGF0YSkKIHsKIAlBcmNoaXZlSGFuZGxlICpBSCA9IChBcmNoaXZlSGFuZGxlICopIEFI WDsKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJsaWMucm9wdDsKQEAgLTQ1Nyw3 ICs0NjIsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJICovCiAJc2F2ID0g U2F2ZU91dHB1dChBSCk7CiAJaWYgKHJvcHQtPmZpbGVuYW1lIHx8IHJvcHQtPmNvbXByZXNz aW9uX3NwZWMuYWxnb3JpdGhtICE9IFBHX0NPTVBSRVNTSU9OX05PTkUpCi0JCVNldE91dHB1 dChBSCwgcm9wdC0+ZmlsZW5hbWUsIHJvcHQtPmNvbXByZXNzaW9uX3NwZWMpOworCQlTZXRP dXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1lLCByb3B0LT5jb21wcmVzc2lvbl9zcGVjLCBhcHBl bmRfZGF0YSk7CiAKIAlhaHByaW50ZihBSCwgIi0tXG4tLSBQb3N0Z3JlU1FMIGRhdGFiYXNl IGR1bXBcbi0tXG5cbiIpOwogCkBAIC0xMjkzLDcgKzEyOTgsNyBAQCBQcmludFRPQ1N1bW1h cnkoQXJjaGl2ZSAqQUhYKQogCiAJc2F2ID0gU2F2ZU91dHB1dChBSCk7CiAJaWYgKHJvcHQt PmZpbGVuYW1lKQotCQlTZXRPdXRwdXQoQUgsIHJvcHQtPmZpbGVuYW1lLCBvdXRfY29tcHJl c3Npb25fc3BlYyk7CisJCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUsIG91dF9jb21w cmVzc2lvbl9zcGVjLCBmYWxzZSk7CiAKIAlpZiAoc3RyZnRpbWUoc3RhbXBfc3RyLCBzaXpl b2Yoc3RhbXBfc3RyKSwgUEdEVU1QX1NUUkZUSU1FX0ZNVCwKIAkJCQkgbG9jYWx0aW1lKCZB SC0+Y3JlYXRlRGF0ZSkpID09IDApCkBAIC0xNjcyLDcgKzE2NzcsOCBAQCBhcmNocHJpbnRm KEFyY2hpdmUgKkFILCBjb25zdCBjaGFyICpmbXQsLi4uKQogCiBzdGF0aWMgdm9pZAogU2V0 T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKLQkJICBj b25zdCBwZ19jb21wcmVzc19zcGVjaWZpY2F0aW9uIGNvbXByZXNzaW9uX3NwZWMpCisJCSAg Y29uc3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiBjb21wcmVzc2lvbl9zcGVjLAorCQkg IGJvb2wgYXBwZW5kX2RhdGEpCiB7CiAJQ29tcHJlc3NGaWxlSGFuZGxlICpDRkg7CiAJY29u c3QgY2hhciAqbW9kZTsKQEAgLTE2OTIsNyArMTY5OCw3IEBAIFNldE91dHB1dChBcmNoaXZl SGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAJZWxzZQogCQlmbiA9IGZpbGVu byhzdGRvdXQpOwogCi0JaWYgKEFILT5tb2RlID09IGFyY2hNb2RlQXBwZW5kKQorCWlmIChh cHBlbmRfZGF0YSB8fCBBSC0+bW9kZSA9PSBhcmNoTW9kZUFwcGVuZCkKIAkJbW9kZSA9IFBH X0JJTkFSWV9BOwogCWVsc2UKIAkJbW9kZSA9IFBHX0JJTkFSWV9XOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5oCmluZGV4IGEyMDY0ZjQ3MWVkLi5lZDAyMzhjY2E0NyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaApAQCAtMzg2LDYgKzM4Niw3 IEBAIHN0cnVjdCBfdG9jRW50cnkKIAogZXh0ZXJuIGludAlwYXJhbGxlbF9yZXN0b3JlKEFy Y2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpOwogZXh0ZXJuIHZvaWQgb25fZXhpdF9j bG9zZV9hcmNoaXZlKEFyY2hpdmUgKkFIWCk7CitleHRlcm4gdm9pZCByZXBsYWNlX29uX2V4 aXRfY2xvc2VfYXJjaGl2ZShBcmNoaXZlICpBSFgpOwogCiBleHRlcm4gdm9pZCB3YXJuX29y X2V4aXRfaG9ycmlibHkoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZtdCwuLi4p IHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19iYWNrdXBfdGFyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5j CmluZGV4IGI1YmEzYjQ2ZGQ5Li5kOTRkMGRlMmE1ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF90YXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X3Rhci5jCkBAIC04MjYsNyArODI2LDcgQEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxl ICpBSCkKIAkJc2F2VmVyYm9zZSA9IEFILT5wdWJsaWMudmVyYm9zZTsKIAkJQUgtPnB1Ymxp Yy52ZXJib3NlID0gMDsKIAotCQlSZXN0b3JlQXJjaGl2ZSgoQXJjaGl2ZSAqKSBBSCk7CisJ CVJlc3RvcmVBcmNoaXZlKChBcmNoaXZlICopIEFILCBmYWxzZSk7CiAKIAkJU2V0QXJjaGl2 ZU9wdGlvbnMoKEFyY2hpdmUgKikgQUgsIHNhdkRvcHQsIHNhdlJvcHQpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCBkOTBiNjE4Mzc5Mi4uOWRjZGE2M2I0YjggMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpA QCAtMTIxOSw3ICsxMjE5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICog cmlnaHQgbm93LgogCSAqLwogCWlmIChwbGFpblRleHQpCi0JCVJlc3RvcmVBcmNoaXZlKGZv dXQpOworCQlSZXN0b3JlQXJjaGl2ZShmb3V0LCBmYWxzZSk7CiAKIAlDbG9zZUFyY2hpdmUo Zm91dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wYWxsLmMgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4IDU3M2E4YjYxYTQ1Li4yNDhhZmM0 YmUyOCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCkBAIC0xNSw2ICsxNSw3IEBACiAKICNpbmNs dWRlICJwb3N0Z3Jlc19mZS5oIgogCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRl IDx0aW1lLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKQEAgLTY0LDkgKzY1LDEwIEBAIHN0 YXRpYyB2b2lkIGRyb3BUYWJsZXNwYWNlcyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZvaWQg ZHVtcFRhYmxlc3BhY2VzKFBHY29ubiAqY29ubik7CiBzdGF0aWMgdm9pZCBkcm9wREJzKFBH Y29ubiAqY29ubik7CiBzdGF0aWMgdm9pZCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnVzZXJuYW1lKTsKLXN0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdj b25uICpjb25uKTsKK3N0YXRpYyB2b2lkIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBB cmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0KTsKIHN0YXRpYyB2b2lkIGR1bXBUaW1lc3Rh bXAoY29uc3QgY2hhciAqbXNnKTsKLXN0YXRpYyBpbnQJcnVuUGdEdW1wKGNvbnN0IGNoYXIg KmRibmFtZSwgY29uc3QgY2hhciAqY3JlYXRlX29wdHMpOworc3RhdGljIGludAlydW5QZ0R1 bXAoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cywKKwkJCQkJ ICBjaGFyICpkYmZpbGUsIEFyY2hpdmVGb3JtYXQgYXJjaER1bXBGb3JtYXQpOwogc3RhdGlj IHZvaWQgYnVpbGRTaFNlY0xhYmVscyhQR2Nvbm4gKmNvbm4sCiAJCQkJCQkJIGNvbnN0IGNo YXIgKmNhdGFsb2dfbmFtZSwgT2lkIG9iamVjdElkLAogCQkJCQkJCSBjb25zdCBjaGFyICpv Ymp0eXBlLCBjb25zdCBjaGFyICpvYmpuYW1lLApAQCAtNzUsNiArNzcsOCBAQCBzdGF0aWMg dm9pZCBleGVjdXRlQ29tbWFuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnF1ZXJ5KTsK IHN0YXRpYyB2b2lkIGV4cGFuZF9kYm5hbWVfcGF0dGVybnMoUEdjb25uICpjb25uLCBTaW1w bGVTdHJpbmdMaXN0ICpwYXR0ZXJucywKIAkJCQkJCQkJICAgU2ltcGxlU3RyaW5nTGlzdCAq bmFtZXMpOwogc3RhdGljIHZvaWQgcmVhZF9kdW1wYWxsX2ZpbHRlcnMoY29uc3QgY2hhciAq ZmlsZW5hbWUsIFNpbXBsZVN0cmluZ0xpc3QgKnBhdHRlcm4pOworc3RhdGljIHZvaWQgY3Jl YXRlX29yX29wZW5fZGlyKGNvbnN0IGNoYXIgKmRpcm5hbWUpOworc3RhdGljIEFyY2hpdmVG b3JtYXQgcGFyc2VEdW1wRm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCk7CiAKIHN0YXRpYyBj aGFyIHBnX2R1bXBfYmluW01BWFBHUEFUSF07CiBzdGF0aWMgUFFFeHBCdWZmZXIgcGdkdW1w b3B0czsKQEAgLTE0Niw2ICsxNTAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJCXsicGFzc3dvcmQiLCBub19hcmd1bWVudCwgTlVMTCwgJ1cnfSwKIAkJeyJuby1wcml2 aWxlZ2VzIiwgbm9fYXJndW1lbnQsIE5VTEwsICd4J30sCiAJCXsibm8tYWNsIiwgbm9fYXJn dW1lbnQsIE5VTEwsICd4J30sCisJCXsiZm9ybWF0IiwgcmVxdWlyZWRfYXJndW1lbnQsIE5V TEwsICdGJ30sCiAKIAkJLyoKIAkJICogdGhlIGZvbGxvd2luZyBvcHRpb25zIGRvbid0IGhh dmUgYW4gZXF1aXZhbGVudCBzaG9ydCBvcHRpb24gbGV0dGVyCkBAIC0xOTUsNiArMjAwLDgg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNoYXIJICAgKnBnZGIgPSBOVUxM OwogCWNoYXIJICAgKnVzZV9yb2xlID0gTlVMTDsKIAljb25zdCBjaGFyICpkdW1wZW5jb2Rp bmcgPSBOVUxMOworCUFyY2hpdmVGb3JtYXQgYXJjaER1bXBGb3JtYXQgPSBhcmNoTnVsbDsK Kwljb25zdCBjaGFyICpmb3JtYXROYW1lID0gInAiOwogCXRyaXZhbHVlCXByb21wdF9wYXNz d29yZCA9IFRSSV9ERUZBVUxUOwogCWJvb2wJCWRhdGFfb25seSA9IGZhbHNlOwogCWJvb2wJ CWdsb2JhbHNfb25seSA9IGZhbHNlOwpAQCAtMjQ0LDcgKzI1MSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXBnZHVtcG9wdHMgPSBjcmVhdGVQUUV4cEJ1ZmZlcigp OwogCi0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFjZDpFOmY6Z2g6 bDpPcDpyc1M6dFU6dndXeCIsIGxvbmdfb3B0aW9ucywgJm9wdGluZGV4KSkgIT0gLTEpCisJ d2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFjZDpFOmY6RjpnaDpsOk9w OnJzUzp0VTp2d1d4IiwgbG9uZ19vcHRpb25zLCAmb3B0aW5kZXgpKSAhPSAtMSkKIAl7CiAJ CXN3aXRjaCAoYykKIAkJewpAQCAtMjcyLDcgKzI3OSw5IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihwZ2R1bXBvcHRzLCAiIC1m ICIpOwogCQkJCWFwcGVuZFNoZWxsU3RyaW5nKHBnZHVtcG9wdHMsIGZpbGVuYW1lKTsKIAkJ CQlicmVhazsKLQorCQkJY2FzZSAnRic6CisJCQkJZm9ybWF0TmFtZSA9IHBnX3N0cmR1cChv cHRhcmcpOworCQkJCWJyZWFrOwogCQkJY2FzZSAnZyc6CiAJCQkJZ2xvYmFsc19vbmx5ID0g dHJ1ZTsKIAkJCQlicmVhazsKQEAgLTQyMSw2ICs0MzAsMjEgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKKwkvKiBHZXQgZm9ybWF0 IGZvciBkdW1wLiAqLworCWFyY2hEdW1wRm9ybWF0ID0gcGFyc2VEdW1wRm9ybWF0KGZvcm1h dE5hbWUpOworCisJLyoKKwkgKiBJZiBhIG5vbi1wbGFpbiBmb3JtYXQgaXMgc3BlY2lmaWVk LCBhIGZpbGUgbmFtZSBpcyBhbHNvIHJlcXVpcmVkIGFzIHRoZQorCSAqIHBhdGggdG8gdGhl IG1haW4gZGlyZWN0b3J5LgorCSAqLworCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVs bCAmJgorCQkoIWZpbGVuYW1lIHx8IHN0cmNtcChmaWxlbmFtZSwgIiIpID09IDApKQorCXsK KwkJcGdfbG9nX2Vycm9yKCJvcHRpb24gLUYvLS1mb3JtYXQ9ZHxjfHQgcmVxdWlyZXMgb3B0 aW9uIC1mLy0tZmlsZSIpOworCQlwZ19sb2dfZXJyb3JfaGludCgiVHJ5IFwiJXMgLS1oZWxw XCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiwgcHJvZ25hbWUpOworCQlleGl0X25pY2VseSgx KTsKKwl9CisKIAkvKgogCSAqIElmIHBhc3N3b3JkIHZhbHVlcyBhcmUgbm90IHJlcXVpcmVk IGluIHRoZSBkdW1wLCBzd2l0Y2ggdG8gdXNpbmcKIAkgKiBwZ19yb2xlcyB3aGljaCBpcyBl cXVhbGx5IHVzZWZ1bCwganVzdCBtb3JlIGxpa2VseSB0byBoYXZlIHVucmVzdHJpY3RlZApA QCAtNDgzLDYgKzUwNywzMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaWYg KHN0YXRpc3RpY3Nfb25seSkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdkdW1wb3B0cywg IiAtLXN0YXRpc3RpY3Mtb25seSIpOwogCisJLyoKKwkgKiBPcGVuIHRoZSBvdXRwdXQgZmls ZSBpZiByZXF1aXJlZCwgb3RoZXJ3aXNlIHVzZSBzdGRvdXQuICBJZiByZXF1aXJlZCwKKwkg KiB0aGVuIGNyZWF0ZSBuZXcgZGlyZWN0b3J5IGFuZCBnbG9iYWwuZGF0IGZpbGUuCisJICov CisJaWYgKGFyY2hEdW1wRm9ybWF0ICE9IGFyY2hOdWxsKQorCXsKKwkJY2hhcgkJZ2xvYmFs X3BhdGhbTUFYUEdQQVRIXTsKKworCQkvKiBDcmVhdGUgbmV3IGRpcmVjdG9yeSBvciBhY2Nl cHQgdGhlIGVtcHR5IGV4aXN0aW5nIGRpcmVjdG9yeS4gKi8KKwkJY3JlYXRlX29yX29wZW5f ZGlyKGZpbGVuYW1lKTsKKworCQlzbnByaW50ZihnbG9iYWxfcGF0aCwgTUFYUEdQQVRILCAi JXMvZ2xvYmFsLmRhdCIsIGZpbGVuYW1lKTsKKworCQlPUEYgPSBmb3BlbihnbG9iYWxfcGF0 aCwgUEdfQklOQVJZX1cpOworCQlpZiAoIU9QRikKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg b3BlbiBnbG9iYWwuZGF0IGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisJZWxz ZSBpZiAoZmlsZW5hbWUpCisJeworCQlPUEYgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZ X1cpOworCQlpZiAoIU9QRikKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQg ZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJIGZpbGVuYW1lKTsKKwl9CisJZWxzZQorCQlPUEYg PSBzdGRvdXQ7CisKIAkvKgogCSAqIElmIHRoZXJlIHdhcyBhIGRhdGFiYXNlIHNwZWNpZmll ZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB1c2UgdGhhdCwKIAkgKiBvdGhlcndpc2UgdHJ5IHRv IGNvbm5lY3QgdG8gZGF0YWJhc2UgInBvc3RncmVzIiwgYW5kIGZhaWxpbmcgdGhhdApAQCAt NTIyLDE5ICs1NzMsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJZXhwYW5k X2RibmFtZV9wYXR0ZXJucyhjb25uLCAmZGF0YWJhc2VfZXhjbHVkZV9wYXR0ZXJucywKIAkJ CQkJCSAgICZkYXRhYmFzZV9leGNsdWRlX25hbWVzKTsKIAotCS8qCi0JICogT3BlbiB0aGUg b3V0cHV0IGZpbGUgaWYgcmVxdWlyZWQsIG90aGVyd2lzZSB1c2Ugc3Rkb3V0Ci0JICovCi0J aWYgKGZpbGVuYW1lKQotCXsKLQkJT1BGID0gZm9wZW4oZmlsZW5hbWUsIFBHX0JJTkFSWV9X KTsKLQkJaWYgKCFPUEYpCi0JCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZp bGUgXCIlc1wiOiAlbSIsCi0JCQkJCSBmaWxlbmFtZSk7Ci0JfQotCWVsc2UKLQkJT1BGID0g c3Rkb3V0OwotCiAJLyoKIAkgKiBTZXQgdGhlIGNsaWVudCBlbmNvZGluZyBpZiByZXF1ZXN0 ZWQuCiAJICovCkBAIC02MzQsNyArNjcyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCX0KIAogCWlmICghZ2xvYmFsc19vbmx5ICYmICFyb2xlc19vbmx5ICYmICF0YWJs ZXNwYWNlc19vbmx5KQotCQlkdW1wRGF0YWJhc2VzKGNvbm4pOworCQlkdW1wRGF0YWJhc2Vz KGNvbm4sIGFyY2hEdW1wRm9ybWF0KTsKIAogCVBRZmluaXNoKGNvbm4pOwogCkBAIC02NDcs NyArNjg1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlmY2xvc2UoT1BG KTsKIAogCQkvKiBzeW5jIHRoZSByZXN1bHRpbmcgZmlsZSwgZXJyb3JzIGFyZSBub3QgZmF0 YWwgKi8KLQkJaWYgKGRvc3luYykKKwkJaWYgKGRvc3luYyAmJiAoYXJjaER1bXBGb3JtYXQg PT0gYXJjaE51bGwpKQogCQkJKHZvaWQpIGZzeW5jX2ZuYW1lKGZpbGVuYW1lLCBmYWxzZSk7 CiAJfQogCkBAIC02NTgsMTIgKzY5NiwxNCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiBzdGF0aWMgdm9pZAogaGVscCh2b2lkKQogewotCXByaW50ZihfKCIlcyBleHRyYWN0 cyBhIFBvc3RncmVTUUwgZGF0YWJhc2UgY2x1c3RlciBpbnRvIGFuIFNRTCBzY3JpcHQgZmls ZS5cblxuIiksIHByb2duYW1lKTsKKwlwcmludGYoXygiJXMgZXh0cmFjdHMgYSBQb3N0Z3Jl U1FMIGRhdGFiYXNlIGNsdXN0ZXIgYmFzZWQgb24gc3BlY2lmaWVkIGR1bXAgZm9ybWF0Llxu XG4iKSwgcHJvZ25hbWUpOwogCXByaW50ZihfKCJVc2FnZTpcbiIpKTsKIAlwcmludGYoXygi ICAlcyBbT1BUSU9OXS4uLlxuIiksIHByb2duYW1lKTsKIAogCXByaW50ZihfKCJcbkdlbmVy YWwgb3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtZiwgLS1maWxlPUZJTEVOQU1FICAg ICAgICAgIG91dHB1dCBmaWxlIG5hbWVcbiIpKTsKKwlwcmludGYoXygiICAtRiwgLS1mb3Jt YXQ9Y3xkfHR8cCAgICAgICAgIG91dHB1dCBmaWxlIGZvcm1hdCAoY3VzdG9tLCBkaXJlY3Rv cnksIHRhcixcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWlu IHRleHQgKGRlZmF1bHQpKVxuIikpOwogCXByaW50ZihfKCIgIC12LCAtLXZlcmJvc2UgICAg ICAgICAgICAgICAgdmVyYm9zZSBtb2RlXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVy c2lvbiAgICAgICAgICAgICAgICBvdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiwgdGhlbiBl eGl0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLS1sb2NrLXdhaXQtdGltZW91dD1USU1FT1VUICBm YWlsIGFmdGVyIHdhaXRpbmcgVElNRU9VVCBmb3IgYSB0YWJsZSBsb2NrXG4iKSk7CkBAIC05 NjksOSArMTAwOSw2IEBAIGR1bXBSb2xlcyhQR2Nvbm4gKmNvbm4pCiAJICogV2UgZG8gaXQg dGhpcyB3YXkgYmVjYXVzZSBjb25maWcgc2V0dGluZ3MgZm9yIHJvbGVzIGNvdWxkIG1lbnRp b24gdGhlCiAJICogbmFtZXMgb2Ygb3RoZXIgcm9sZXMuCiAJICovCi0JaWYgKFBRbnR1cGxl cyhyZXMpID4gMCkKLQkJZnByaW50ZihPUEYsICJcbi0tXG4tLSBVc2VyIENvbmZpZ3VyYXRp b25zXG4tLVxuIik7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgUFFudHVwbGVzKHJlcyk7IGkrKykK IAkJZHVtcFVzZXJDb25maWcoY29ubiwgUFFnZXR2YWx1ZShyZXMsIGksIGlfcm9sbmFtZSkp OwogCkBAIC0xNDg1LDYgKzE1MjIsNyBAQCBkdW1wVXNlckNvbmZpZyhQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnVzZXJuYW1lKQogewogCVBRRXhwQnVmZmVyIGJ1ZiA9IGNyZWF0ZVBR RXhwQnVmZmVyKCk7CiAJUEdyZXN1bHQgICAqcmVzOworCXN0YXRpYyBib29sIGhlYWRlcl9k b25lID0gZmFsc2U7CiAKIAlwcmludGZQUUV4cEJ1ZmZlcihidWYsICJTRUxFQ1QgdW5uZXN0 KHNldGNvbmZpZykgRlJPTSBwZ19kYl9yb2xlX3NldHRpbmcgIgogCQkJCQkgICJXSEVSRSBz ZXRkYXRhYmFzZSA9IDAgQU5EIHNldHJvbGUgPSAiCkBAIC0xNDk2LDcgKzE1MzQsMTMgQEAg ZHVtcFVzZXJDb25maWcoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICp1c2VybmFtZSkKIAly ZXMgPSBleGVjdXRlUXVlcnkoY29ubiwgYnVmLT5kYXRhKTsKIAogCWlmIChQUW50dXBsZXMo cmVzKSA+IDApCisJeworCQlpZiAoIWhlYWRlcl9kb25lKQorCQkJZnByaW50ZihPUEYsICJc bi0tXG4tLSBVc2VyIENvbmZpZ3VyYXRpb25zXG4tLVxuIik7CisJCWhlYWRlcl9kb25lID0g dHJ1ZTsKKwogCQlmcHJpbnRmKE9QRiwgIlxuLS1cbi0tIFVzZXIgQ29uZmlnIFwiJXNcIlxu LS1cblxuIiwgdXNlcm5hbWUpOworCX0KIAogCWZvciAoaW50IGkgPSAwOyBpIDwgUFFudHVw bGVzKHJlcyk7IGkrKykKIAl7CkBAIC0xNTcwLDEwICsxNjE0LDEzIEBAIGV4cGFuZF9kYm5h bWVfcGF0dGVybnMoUEdjb25uICpjb25uLAogICogRHVtcCBjb250ZW50cyBvZiBkYXRhYmFz ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1kdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubikKK2R1 bXBEYXRhYmFzZXMoUEdjb25uICpjb25uLCBBcmNoaXZlRm9ybWF0IGFyY2hEdW1wRm9ybWF0 KQogewogCVBHcmVzdWx0ICAgKnJlczsKIAlpbnQJCQlpOworCWNoYXIJCWRiX3N1YmRpcltN QVhQR1BBVEhdOworCWNoYXIJCWRiZmlsZXBhdGhbTUFYUEdQQVRIXTsKKwlGSUxFCSAgICpt YXBfZmlsZSA9IE5VTEw7CiAKIAkvKgogCSAqIFNraXAgZGF0YWJhc2VzIG1hcmtlZCBub3Qg ZGF0YWxsb3djb25uLCBzaW5jZSB3ZSdkIGJlIHVuYWJsZSB0byBjb25uZWN0CkBAIC0xNTg3 LDE4ICsxNjM0LDQyIEBAIGR1bXBEYXRhYmFzZXMoUEdjb25uICpjb25uKQogCSAqIGRvZXNu J3QgaGF2ZSBzb21lIGZhaWx1cmUgbW9kZSB3aXRoIC0tY2xlYW4uCiAJICovCiAJcmVzID0g ZXhlY3V0ZVF1ZXJ5KGNvbm4sCi0JCQkJCSAgICJTRUxFQ1QgZGF0bmFtZSAiCisJCQkJCSAg ICJTRUxFQ1QgZGF0bmFtZSwgb2lkICIKIAkJCQkJICAgIkZST00gcGdfZGF0YWJhc2UgZCAi CiAJCQkJCSAgICJXSEVSRSBkYXRhbGxvd2Nvbm4gQU5EIGRhdGNvbm5saW1pdCAhPSAtMiAi CiAJCQkJCSAgICJPUkRFUiBCWSAoZGF0bmFtZSA8PiAndGVtcGxhdGUxJyksIGRhdG5hbWUi KTsKIAotCWlmIChQUW50dXBsZXMocmVzKSA+IDApCisJaWYgKGFyY2hEdW1wRm9ybWF0ID09 IGFyY2hOdWxsICYmIFBRbnR1cGxlcyhyZXMpID4gMCkKIAkJZnByaW50ZihPUEYsICItLVxu LS0gRGF0YWJhc2VzXG4tLVxuXG4iKTsKIAorCS8qCisJICogSWYgZGlyZWN0b3J5L3Rhci9j dXN0b20gZm9ybWF0IGlzIHNwZWNpZmllZCwgY3JlYXRlIGEgc3ViZGlyZWN0b3J5CisJICog dW5kZXIgdGhlIG1haW4gZGlyZWN0b3J5IGFuZCBlYWNoIGRhdGFiYXNlIGR1bXAgZmlsZSBv ciBzdWJkaXJlY3RvcnkKKwkgKiB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhhdCBzdWJkaXJlY3Rv cnkgYnkgcGdfZHVtcC4KKwkgKi8KKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwp CisJeworCQljaGFyCQltYXBfZmlsZV9wYXRoW01BWFBHUEFUSF07CisKKwkJc25wcmludGYo ZGJfc3ViZGlyLCBNQVhQR1BBVEgsICIlcy9kYXRhYmFzZXMiLCBmaWxlbmFtZSk7CisKKwkJ LyogQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IHdpdGggJ2RhdGFiYXNlcycgbmFtZSB1bmRlciBt YWluIGRpcmVjdG9yeS4gKi8KKwkJaWYgKG1rZGlyKGRiX3N1YmRpciwgMDc1NSkgIT0gMCkK KwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIHN1YmRpcmVjdG9yeSBcIiVzXCI6ICVt IiwgZGJfc3ViZGlyKTsKKworCQlzbnByaW50ZihtYXBfZmlsZV9wYXRoLCBNQVhQR1BBVEgs ICIlcy9tYXAuZGF0IiwgZmlsZW5hbWUpOworCisJCS8qIENyZWF0ZSBhIG1hcCBmaWxlICh0 byBzdG9yZSBkYm9pZCBhbmQgZGJuYW1lKSAqLworCQltYXBfZmlsZSA9IGZvcGVuKG1hcF9m aWxlX3BhdGgsIFBHX0JJTkFSWV9XKTsKKwkJaWYgKCFtYXBfZmlsZSkKKwkJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgb3BlbiBtYXAgZmlsZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworCX0K KwogCWZvciAoaSA9IDA7IGkgPCBQUW50dXBsZXMocmVzKTsgaSsrKQogCXsKIAkJY2hhcgkg ICAqZGJuYW1lID0gUFFnZXR2YWx1ZShyZXMsIGksIDApOwotCQljb25zdCBjaGFyICpjcmVh dGVfb3B0czsKKwkJY2hhcgkgICAqb2lkID0gUFFnZXR2YWx1ZShyZXMsIGksIDEpOworCQlj b25zdCBjaGFyICpjcmVhdGVfb3B0cyA9ICIiOwogCQlpbnQJCQlyZXQ7CiAKIAkJLyogU2tp cCB0ZW1wbGF0ZTAsIGV2ZW4gaWYgaXQncyBub3QgbWFya2VkICFkYXRhbGxvd2Nvbm4uICov CkBAIC0xNjEyLDkgKzE2ODMsMjcgQEAgZHVtcERhdGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJ CQljb250aW51ZTsKIAkJfQogCisJCS8qCisJCSAqIElmIHRoaXMgaXMgbm90IGEgcGxhaW4g Zm9ybWF0IGR1bXAsIHRoZW4gYXBwZW5kIGRib2lkIGFuZCBkYm5hbWUgdG8KKwkJICogdGhl IG1hcC5kYXQgZmlsZS4KKwkJICovCisJCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVs bCkKKwkJeworCQkJaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hDdXN0b20pCisJCQkJc25w cmludGYoZGJmaWxlcGF0aCwgTUFYUEdQQVRILCAiXCIlc1wiL1wiJXNcIi5kbXAiLCBkYl9z dWJkaXIsIG9pZCk7CisJCQllbHNlIGlmIChhcmNoRHVtcEZvcm1hdCA9PSBhcmNoVGFyKQor CQkJCXNucHJpbnRmKGRiZmlsZXBhdGgsIE1BWFBHUEFUSCwgIlwiJXNcIi9cIiVzXCIudGFy IiwgZGJfc3ViZGlyLCBvaWQpOworCQkJZWxzZQorCQkJCXNucHJpbnRmKGRiZmlsZXBhdGgs IE1BWFBHUEFUSCwgIlwiJXNcIi9cIiVzXCIiLCBkYl9zdWJkaXIsIG9pZCk7CisKKwkJCS8q IFB1dCBvbmUgbGluZSBlbnRyeSBmb3IgZGJvaWQgYW5kIGRibmFtZSBpbiBtYXAgZmlsZS4g Ki8KKwkJCWZwcmludGYobWFwX2ZpbGUsICIlcyAlc1xuIiwgb2lkLCBkYm5hbWUpOworCQl9 CisKIAkJcGdfbG9nX2luZm8oImR1bXBpbmcgZGF0YWJhc2UgXCIlc1wiIiwgZGJuYW1lKTsK IAotCQlmcHJpbnRmKE9QRiwgIi0tXG4tLSBEYXRhYmFzZSBcIiVzXCIgZHVtcFxuLS1cblxu IiwgZGJuYW1lKTsKKwkJaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hOdWxsKQorCQkJZnBy aW50ZihPUEYsICItLVxuLS0gRGF0YWJhc2UgXCIlc1wiIGR1bXBcbi0tXG5cbiIsIGRibmFt ZSk7CiAKIAkJLyoKIAkJICogV2UgYXNzdW1lIHRoYXQgInRlbXBsYXRlMSIgYW5kICJwb3N0 Z3JlcyIgYWxyZWFkeSBleGlzdCBpbiB0aGUKQEAgLTE2MjgsMTIgKzE3MTcsOSBAQCBkdW1w RGF0YWJhc2VzKFBHY29ubiAqY29ubikKIAkJewogCQkJaWYgKG91dHB1dF9jbGVhbikKIAkJ CQljcmVhdGVfb3B0cyA9ICItLWNsZWFuIC0tY3JlYXRlIjsKLQkJCWVsc2UKLQkJCXsKLQkJ CQljcmVhdGVfb3B0cyA9ICIiOwotCQkJCS8qIFNpbmNlIHBnX2R1bXAgd29uJ3QgZW1pdCBh IFxjb25uZWN0IGNvbW1hbmQsIHdlIG11c3QgKi8KKwkJCS8qIFNpbmNlIHBnX2R1bXAgd29u J3QgZW1pdCBhIFxjb25uZWN0IGNvbW1hbmQsIHdlIG11c3QgKi8KKwkJCWVsc2UgaWYgKGFy Y2hEdW1wRm9ybWF0ID09IGFyY2hOdWxsKQogCQkJCWZwcmludGYoT1BGLCAiXFxjb25uZWN0 ICVzXG5cbiIsIGRibmFtZSk7Ci0JCQl9CiAJCX0KIAkJZWxzZQogCQkJY3JlYXRlX29wdHMg PSAiLS1jcmVhdGUiOwpAQCAtMTY0MSwxOSArMTcyNywzMCBAQCBkdW1wRGF0YWJhc2VzKFBH Y29ubiAqY29ubikKIAkJaWYgKGZpbGVuYW1lKQogCQkJZmNsb3NlKE9QRik7CiAKLQkJcmV0 ID0gcnVuUGdEdW1wKGRibmFtZSwgY3JlYXRlX29wdHMpOworCQlyZXQgPSBydW5QZ0R1bXAo ZGJuYW1lLCBjcmVhdGVfb3B0cywgZGJmaWxlcGF0aCwgYXJjaER1bXBGb3JtYXQpOwogCQlp ZiAocmV0ICE9IDApCiAJCQlwZ19mYXRhbCgicGdfZHVtcCBmYWlsZWQgb24gZGF0YWJhc2Ug XCIlc1wiLCBleGl0aW5nIiwgZGJuYW1lKTsKIAogCQlpZiAoZmlsZW5hbWUpCiAJCXsKLQkJ CU9QRiA9IGZvcGVuKGZpbGVuYW1lLCBQR19CSU5BUllfQSk7CisJCQljaGFyCQlnbG9iYWxf cGF0aFtNQVhQR1BBVEhdOworCisJCQlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwp CisJCQkJc25wcmludGYoZ2xvYmFsX3BhdGgsIE1BWFBHUEFUSCwgIiVzL2dsb2JhbC5kYXQi LCBmaWxlbmFtZSk7CisJCQllbHNlCisJCQkJc25wcmludGYoZ2xvYmFsX3BhdGgsIE1BWFBH UEFUSCwgIiVzIiwgZmlsZW5hbWUpOworCisJCQlPUEYgPSBmb3BlbihnbG9iYWxfcGF0aCwg UEdfQklOQVJZX0EpOwogCQkJaWYgKCFPUEYpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBy ZS1vcGVuIHRoZSBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwKLQkJCQkJCSBmaWxlbmFtZSk7 CisJCQkJCQkgZ2xvYmFsX3BhdGgpOwogCQl9CiAJfQogCisJLyogQ2xvc2UgbWFwIGZpbGUg Ki8KKwlpZiAoYXJjaER1bXBGb3JtYXQgIT0gYXJjaE51bGwpCisJCWZjbG9zZShtYXBfZmls ZSk7CisKIAlQUWNsZWFyKHJlcyk7CiB9CiAKQEAgLTE2NjMsNyArMTc2MCw4IEBAIGR1bXBE YXRhYmFzZXMoUEdjb25uICpjb25uKQogICogUnVuIHBnX2R1bXAgb24gZGJuYW1lLCB3aXRo IHNwZWNpZmllZCBvcHRpb25zLgogICovCiBzdGF0aWMgaW50Ci1ydW5QZ0R1bXAoY29uc3Qg Y2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVhdGVfb3B0cykKK3J1blBnRHVtcChjb25z dCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNyZWF0ZV9vcHRzLCBjaGFyICpkYmZpbGUs CisJCSAgQXJjaGl2ZUZvcm1hdCBhcmNoRHVtcEZvcm1hdCkKIHsKIAlQUUV4cEJ1ZmZlckRh dGEgY29ubnN0cmJ1ZjsKIAlQUUV4cEJ1ZmZlckRhdGEgY21kOwpAQCAtMTY3MiwxNyArMTc3 MCwzNiBAQCBydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjcmVh dGVfb3B0cykKIAlpbml0UFFFeHBCdWZmZXIoJmNvbm5zdHJidWYpOwogCWluaXRQUUV4cEJ1 ZmZlcigmY21kKTsKIAotCXByaW50ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVzXCIgJXMgJXMi LCBwZ19kdW1wX2JpbiwKLQkJCQkJICBwZ2R1bXBvcHRzLT5kYXRhLCBjcmVhdGVfb3B0cyk7 Ci0KIAkvKgotCSAqIElmIHdlIGhhdmUgYSBmaWxlbmFtZSwgdXNlIHRoZSB1bmRvY3VtZW50 ZWQgcGxhaW4tYXBwZW5kIHBnX2R1bXAKLQkgKiBmb3JtYXQuCisJICogSWYgdGhpcyBpcyBu b3QgYSBwbGFpbiBmb3JtYXQgZHVtcCwgdGhlbiBhcHBlbmQgZmlsZSBuYW1lIGFuZCBkdW1w CisJICogZm9ybWF0IHRvIHRoZSBwZ19kdW1wIGNvbW1hbmQgdG8gZ2V0IGFyY2hpdmUgZHVt cC4KIAkgKi8KLQlpZiAoZmlsZW5hbWUpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjbWQs ICIgLUZhICIpOworCWlmIChhcmNoRHVtcEZvcm1hdCAhPSBhcmNoTnVsbCkKKwl7CisJCXBy aW50ZlBRRXhwQnVmZmVyKCZjbWQsICJcIiVzXCIgLWYgJXMgJXMiLCBwZ19kdW1wX2JpbiwK KwkJCQkJCSAgZGJmaWxlLCBjcmVhdGVfb3B0cyk7CisKKwkJaWYgKGFyY2hEdW1wRm9ybWF0 ID09IGFyY2hEaXJlY3RvcnkpCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiICAt LWZvcm1hdD1kaXJlY3RvcnkgIik7CisJCWVsc2UgaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFy Y2hDdXN0b20pCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiICAtLWZvcm1hdD1j dXN0b20gIik7CisJCWVsc2UgaWYgKGFyY2hEdW1wRm9ybWF0ID09IGFyY2hUYXIpCisJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmY21kLCAiICAtLWZvcm1hdD10YXIgIik7CisJfQogCWVs c2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNtZCwgIiAtRnAgIik7CisJeworCQlwcmlu dGZQUUV4cEJ1ZmZlcigmY21kLCAiXCIlc1wiICVzICVzIiwgcGdfZHVtcF9iaW4sCisJCQkJ CQkgIHBnZHVtcG9wdHMtPmRhdGEsIGNyZWF0ZV9vcHRzKTsKKworCQkvKgorCQkgKiBJZiB3 ZSBoYXZlIGEgZmlsZW5hbWUsIHVzZSB0aGUgdW5kb2N1bWVudGVkIHBsYWluLWFwcGVuZCBw Z19kdW1wCisJCSAqIGZvcm1hdC4KKwkJICovCisJCWlmIChmaWxlbmFtZSkKKwkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZjbWQsICIgLUZhICIpOworCQllbHNlCisJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmY21kLCAiIC1GcCAiKTsKKwl9CiAKIAkvKgogCSAqIEFwcGVuZCB0aGUg ZGF0YWJhc2UgbmFtZSB0byB0aGUgYWxyZWFkeS1jb25zdHJ1Y3RlZCBzdGVtIG9mIGNvbm5l Y3Rpb24KQEAgLTE4MjcsMyArMTk0NCw5MSBAQCByZWFkX2R1bXBhbGxfZmlsdGVycyhjb25z dCBjaGFyICpmaWxlbmFtZSwgU2ltcGxlU3RyaW5nTGlzdCAqcGF0dGVybikKIAogCWZpbHRl cl9mcmVlKCZmc3RhdGUpOwogfQorCisvKgorICogY3JlYXRlX29yX29wZW5fZGlyCisgKgor ICogVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBkaXJlY3Rvcnkgd2l0aCBnaXZlbiBuYW1lLiAg SWYgdGhlcmUgaXMgYWxyZWFkeSBzYW1lCisgKiBlbXB0eSBkaXJlY3RvcnkgZXhpc3QsIHRo ZW4gdXNlIGl0LgorICovCitzdGF0aWMgdm9pZAorY3JlYXRlX29yX29wZW5fZGlyKGNvbnN0 IGNoYXIgKmRpcm5hbWUpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJYm9vbAkJaXNfZW1wdHkg PSBmYWxzZTsKKworCS8qIHdlIGFjY2VwdCBhbiBlbXB0eSBleGlzdGluZyBkaXJlY3Rvcnkg Ki8KKwlpZiAoc3RhdChkaXJuYW1lLCAmc3QpID09IDAgJiYgU19JU0RJUihzdC5zdF9tb2Rl KSkKKwl7CisJCURJUgkJICAgKmRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisKKwkJaWYgKGRp cikKKwkJeworCQkJc3RydWN0IGRpcmVudCAqZDsKKworCQkJaXNfZW1wdHkgPSB0cnVlOwor CisJCQl3aGlsZSAoZXJybm8gPSAwLCAoZCA9IHJlYWRkaXIoZGlyKSkpCisJCQl7CisJCQkJ aWYgKHN0cmNtcChkLT5kX25hbWUsICIuIikgIT0gMCAmJiBzdHJjbXAoZC0+ZF9uYW1lLCAi Li4iKSAhPSAwKQorCQkJCXsKKwkJCQkJaXNfZW1wdHkgPSBmYWxzZTsKKwkJCQkJYnJlYWs7 CisJCQkJfQorCQkJfQorCisJCQlpZiAoZXJybm8pCisJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCSBkaXJuYW1lKTsKKworCQkJ aWYgKGNsb3NlZGlyKGRpcikpCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkgZGlybmFtZSk7CisJCX0KKworCQlpZiAoIWlz X2VtcHR5KQorCQl7CisJCQlwZ19sb2dfZXJyb3IoImRpcmVjdG9yeSBcIiVzXCIgZXhpc3Rz IGJ1dCBpcyBub3QgZW1wdHkiLCBkaXJuYW1lKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJJ ZiB5b3Ugd2FudCB0byBkdW1wIGRhdGEgb24gdGhpcyBkaXJlY3RvcnksIGVpdGhlciByZW1v dmUgb3IgZW1wdHkgIgorCQkJCQkJCSAgInRoaXMgZGlyZWN0b3J5IFwiJXNcIiBvciBydW4g JXMgIgorCQkJCQkJCSAgIndpdGggYW4gYXJndW1lbnQgb3RoZXIgdGhhbiBcIiVzXCIuIiwK KwkJCQkJCQkgIGRpcm5hbWUsIHByb2duYW1lLCBkaXJuYW1lKTsKKwkJCWV4aXRfbmljZWx5 KDEpOworCQl9CisJfQorCWVsc2UgaWYgKG1rZGlyKGRpcm5hbWUsIDA3MDApIDwgMCkKKwkJ cGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJu YW1lKTsKK30KKworLyoKKyAqIHBhcnNlRHVtcEZvcm1hdAorICoKKyAqIFRoaXMgd2lsbCB2 YWxpZGF0ZSBkdW1wIGZvcm1hdHMuCisgKi8KK3N0YXRpYyBBcmNoaXZlRm9ybWF0CitwYXJz ZUR1bXBGb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0KQoreworCUFyY2hpdmVGb3JtYXQgYXJj aER1bXBGb3JtYXQ7CisKKwlpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJjIikgPT0gMCkK KwkJYXJjaER1bXBGb3JtYXQgPSBhcmNoQ3VzdG9tOworCWVsc2UgaWYgKHBnX3N0cmNhc2Vj bXAoZm9ybWF0LCAiY3VzdG9tIikgPT0gMCkKKwkJYXJjaER1bXBGb3JtYXQgPSBhcmNoQ3Vz dG9tOworCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAiZCIpID09IDApCisJCWFy Y2hEdW1wRm9ybWF0ID0gYXJjaERpcmVjdG9yeTsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21w KGZvcm1hdCwgImRpcmVjdG9yeSIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0ID0gYXJjaERp cmVjdG9yeTsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInAiKSA9PSAwKQor CQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hOdWxsOworCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAo Zm9ybWF0LCAicGxhaW4iKSA9PSAwKQorCQlhcmNoRHVtcEZvcm1hdCA9IGFyY2hOdWxsOwor CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoZm9ybWF0LCAidCIpID09IDApCisJCWFyY2hEdW1w Rm9ybWF0ID0gYXJjaFRhcjsKKwllbHNlIGlmIChwZ19zdHJjYXNlY21wKGZvcm1hdCwgInRh ciIpID09IDApCisJCWFyY2hEdW1wRm9ybWF0ID0gYXJjaFRhcjsKKwllbHNlCisJCXBnX2Zh dGFsKCJ1bnJlY29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQgXCIlc1wiOyBwbGVhc2Ugc3BlY2lm eSBcImNcIiwgXCJkXCIsIFwicFwiLCBvciBcInRcIiIsCisJCQkJIGZvcm1hdCk7CisKKwly ZXR1cm4gYXJjaER1bXBGb3JtYXQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfcmVzdG9yZS5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwppbmRleCA0N2Y3 YjBkZDNhMS4uMTc1ZjI4YTc0MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19y ZXN0b3JlLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYwpAQCAtMiw3ICsy LDcgQEAKICAqCiAgKiBwZ19yZXN0b3JlLmMKICAqCXBnX3Jlc3RvcmUgaXMgYW4gdXRpbGl0 eSBleHRyYWN0aW5nIHBvc3RncmVzIGRhdGFiYXNlIGRlZmluaXRpb25zCi0gKglmcm9tIGEg YmFja3VwIGFyY2hpdmUgY3JlYXRlZCBieSBwZ19kdW1wIHVzaW5nIHRoZSBhcmNoaXZlcgor ICoJZnJvbSBhIGJhY2t1cCBhcmNoaXZlIGNyZWF0ZWQgYnkgcGdfZHVtcC9wZ19kdW1wYWxs IHVzaW5nIHRoZSBhcmNoaXZlcgogICoJaW50ZXJmYWNlLgogICoKICAqCXBnX3Jlc3RvcmUg d2lsbCByZWFkIHRoZSBiYWNrdXAgYXJjaGl2ZSBhbmQKQEAgLTQxLDExICs0MSwxNSBAQAog I2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1 ZGUgPHN5cy9zdGF0Lmg+CiAjaWZkZWYgSEFWRV9URVJNSU9TX0gKICNpbmNsdWRlIDx0ZXJt aW9zLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgImNvbW1vbi9zdHJpbmcuaCIKKyNpbmNsdWRl ICJjb25uZWN0ZGIuaCIKICNpbmNsdWRlICJmZV91dGlscy9vcHRpb25fdXRpbHMuaCIKKyNp bmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJmaWx0ZXIuaCIK ICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogI2luY2x1ZGUgInBhcmFsbGVsLmgiCkBAIC01 MywxOCArNTcsMzUgQEAKIAogc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25h bWUpOwogc3RhdGljIHZvaWQgcmVhZF9yZXN0b3JlX2ZpbHRlcnMoY29uc3QgY2hhciAqZmls ZW5hbWUsIFJlc3RvcmVPcHRpb25zICpvcHRzKTsKK3N0YXRpYyBib29sIGZpbGVfZXhpc3Rz X2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK K3N0YXRpYyBpbnQJcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hhciAqaW5wdXRGaWxl U3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCisJCQkJCQkJCSBpbnQgbnVtV29ya2Vycywg Ym9vbCBhcHBlbmRfZGF0YSwgaW50IG51bSk7CitzdGF0aWMgaW50CXJlYWRfb25lX3N0YXRl bWVudChTdHJpbmdJbmZvIGluQnVmLCBGSUxFICpwZmlsZSk7CitzdGF0aWMgaW50CXJlc3Rv cmVfYWxsX2RhdGFiYXNlcyhQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmR1bXBkaXJwYXRo LAorCQkJCQkJCQkgIFNpbXBsZVN0cmluZ0xpc3QgZGJfZXhjbHVkZV9wYXR0ZXJucywgUmVz dG9yZU9wdGlvbnMgKm9wdHMsIGludCBudW1Xb3JrZXJzKTsKK3N0YXRpYyBpbnQJcHJvY2Vz c19nbG9iYWxfc3FsX2NvbW1hbmRzKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZHVtcGRp cnBhdGgsCisJCQkJCQkJCQkJY29uc3QgY2hhciAqb3V0ZmlsZSk7CitzdGF0aWMgdm9pZCBj b3B5X29yX3ByaW50X2dsb2JhbF9maWxlKGNvbnN0IGNoYXIgKm91dGZpbGUsIEZJTEUgKnBm aWxlKTsKK3N0YXRpYyBpbnQJZ2V0X2RibmFtZXNfbGlzdF90b19yZXN0b3JlKFBHY29ubiAq Y29ubiwKKwkJCQkJCQkJCQlTaW1wbGVPaWRTdHJpbmdMaXN0ICpkYm5hbWVfb2lkX2xpc3Qs CisJCQkJCQkJCQkJU2ltcGxlU3RyaW5nTGlzdCBkYl9leGNsdWRlX3BhdHRlcm5zKTsKK3N0 YXRpYyBpbnQJZ2V0X2RibmFtZV9vaWRfbGlzdF9mcm9tX21maWxlKGNvbnN0IGNoYXIgKmR1 bXBkaXJwYXRoLAorCQkJCQkJCQkJCSAgIFNpbXBsZU9pZFN0cmluZ0xpc3QgKmRibmFtZV9v aWRfbGlzdCk7CitzdGF0aWMgc2l6ZV90IHF1b3RlX2xpdGVyYWxfaW50ZXJuYWwoY2hhciAq ZHN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBsZW4pOworc3RhdGljIGNoYXIgKnF1b3Rl X2xpdGVyYWxfY3N0cihjb25zdCBjaGFyICpyYXdzdHIpOwogCiBpbnQKIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogewogCVJlc3RvcmVPcHRpb25zICpvcHRzOwogCWludAkJCWM7 Ci0JaW50CQkJZXhpdF9jb2RlOwogCWludAkJCW51bVdvcmtlcnMgPSAxOwotCUFyY2hpdmUg ICAgKkFIOwogCWNoYXIJICAgKmlucHV0RmlsZVNwZWM7CiAJYm9vbAkJZGF0YV9vbmx5ID0g ZmFsc2U7CiAJYm9vbAkJc2NoZW1hX29ubHkgPSBmYWxzZTsKKwlpbnQJCQluX2Vycm9ycyA9 IDA7CisJYm9vbAkJZ2xvYmFsc19vbmx5ID0gZmFsc2U7CisJU2ltcGxlU3RyaW5nTGlzdCBk Yl9leGNsdWRlX3BhdHRlcm5zID0ge05VTEwsIE5VTEx9OwogCXN0YXRpYyBpbnQJZGlzYWJs ZV90cmlnZ2VycyA9IDA7CiAJc3RhdGljIGludAllbmFibGVfcm93X3NlY3VyaXR5ID0gMDsK IAlzdGF0aWMgaW50CWlmX2V4aXN0cyA9IDA7CkBAIC05MCw2ICsxMTEsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJjbGVhbiIsIDAsIE5VTEwsICdjJ30sCiAJCXsi Y3JlYXRlIiwgMCwgTlVMTCwgJ0MnfSwKIAkJeyJkYXRhLW9ubHkiLCAwLCBOVUxMLCAnYSd9 LAorCQl7Imdsb2JhbHMtb25seSIsIDAsIE5VTEwsICdnJ30sCiAJCXsiZGJuYW1lIiwgMSwg TlVMTCwgJ2QnfSwKIAkJeyJleGl0LW9uLWVycm9yIiwgMCwgTlVMTCwgJ2UnfSwKIAkJeyJl eGNsdWRlLXNjaGVtYSIsIDEsIE5VTEwsICdOJ30sCkBAIC0xNDQsNiArMTY2LDcgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsid2l0aC1zdGF0aXN0aWNzIiwgbm9fYXJn dW1lbnQsICZ3aXRoX3N0YXRpc3RpY3MsIDF9LAogCQl7InN0YXRpc3RpY3Mtb25seSIsIG5v X2FyZ3VtZW50LCAmc3RhdGlzdGljc19vbmx5LCAxfSwKIAkJeyJmaWx0ZXIiLCByZXF1aXJl ZF9hcmd1bWVudCwgTlVMTCwgNH0sCisJCXsiZXhjbHVkZS1kYXRhYmFzZSIsIHJlcXVpcmVk X2FyZ3VtZW50LCBOVUxMLCA2fSwKIAogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwpAQCAt MTcyLDcgKzE5NSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQog Ci0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImFjQ2Q6ZWY6RjpoOkk6 ajpsTDpuOk46T3A6UDpSc1M6dDpUOlU6dndXeDEiLAorCXdoaWxlICgoYyA9IGdldG9wdF9s b25nKGFyZ2MsIGFyZ3YsICJhY0NkOmVmOkY6Z2g6STpqOmxMOm46TjpPcDpQOlJzUzp0OlQ6 VTp2d1d4MSIsCiAJCQkJCQkJY21kb3B0cywgTlVMTCkpICE9IC0xKQogCXsKIAkJc3dpdGNo IChjKQpAQCAtMTk5LDExICsyMjIsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCQkJaWYgKHN0cmxlbihvcHRhcmcpICE9IDApCiAJCQkJCW9wdHMtPmZvcm1hdE5hbWUg PSBwZ19zdHJkdXAob3B0YXJnKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgJ2cnOgorCQkJCS8q IHJlc3RvcmUgb25seSBnbG9iYWwuZGF0IGZpbGUgZnJvbSBkaXJlY3RvcnkgKi8KKwkJCQln bG9iYWxzX29ubHkgPSB0cnVlOworCQkJCWJyZWFrOwogCQkJY2FzZSAnaCc6CiAJCQkJaWYg KHN0cmxlbihvcHRhcmcpICE9IDApCiAJCQkJCW9wdHMtPmNwYXJhbXMucGdob3N0ID0gcGdf c3RyZHVwKG9wdGFyZyk7CiAJCQkJYnJlYWs7Ci0KIAkJCWNhc2UgJ2onOgkJCS8qIG51bWJl ciBvZiByZXN0b3JlIGpvYnMgKi8KIAkJCQlpZiAoIW9wdGlvbl9wYXJzZV9pbnQob3B0YXJn LCAiLWovLS1qb2JzIiwgMSwKIAkJCQkJCQkJCSAgUEdfTUFYX0pPQlMsCkBAIC0zMTgsNiAr MzQ0LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCWV4aXQoMSk7CiAJ CQkJb3B0cy0+ZXhpdF9vbl9lcnJvciA9IHRydWU7CiAJCQkJYnJlYWs7CisJCQljYXNlIDY6 CQkJCS8qIGRhdGFiYXNlIHBhdHRlcm5zIHRvIHNraXAgKi8KKwkJCQlzaW1wbGVfc3RyaW5n X2xpc3RfYXBwZW5kKCZkYl9leGNsdWRlX3BhdHRlcm5zLCBvcHRhcmcpOworCQkJCWJyZWFr OwogCiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBh IGNvbXBsYWludCAqLwpAQCAtMzQ1LDYgKzM3NCwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAlpZiAoIW9wdHMtPmNwYXJhbXMuZGJuYW1lICYmICFvcHRzLT5maWxlbmFt ZSAmJiAhb3B0cy0+dG9jU3VtbWFyeSkKIAkJcGdfZmF0YWwoIm9uZSBvZiAtZC8tLWRibmFt ZSBhbmQgLWYvLS1maWxlIG11c3QgYmUgc3BlY2lmaWVkIik7CiAKKwlpZiAoZGJfZXhjbHVk ZV9wYXR0ZXJucy5oZWFkICE9IE5VTEwgJiYgZ2xvYmFsc19vbmx5KQorCXsKKwkJcGdfbG9n X2Vycm9yKCJvcHRpb24gLS1leGNsdWRlLWRhdGFiYXNlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyIHdpdGggLWcvLS1nbG9iYWxzLW9ubHkiKTsKKwkJcGdfbG9nX2Vycm9yX2hpbnQoIlRy eSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIsIHByb2duYW1lKTsKKwkJ ZXhpdF9uaWNlbHkoMSk7CisJfQorCiAJLyogU2hvdWxkIGdldCBhdCBtb3N0IG9uZSBvZiAt ZCBhbmQgLWYsIGVsc2UgdXNlciBpcyBjb25mdXNlZCAqLwogCWlmIChvcHRzLT5jcGFyYW1z LmRibmFtZSkKIAl7CkBAIC00NTIsNiArNDg4LDExMyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJCQkJIG9wdHMtPmZvcm1hdE5hbWUpOwogCX0KIAorCS8qCisJICogSWYg dG9jLmRhdCBmaWxlIGRvZXMgbm90IHByZXNlbnQgaW4gY3VycmVudCBwYXRoLCB0aGVuIGNo ZWNrIGZvcgorCSAqIGdsb2JhbC5kYXQuICBJZiBnbG9iYWwuZGF0IGZpbGUgaXMgcHJlc2Vu dCwgdGhlbiByZXN0b3JlIGFsbCB0aGUKKwkgKiBkYXRhYmFzZXMgZnJvbSBtYXAuZGF0KGlm IGV4aXN0KSBmaWxlIGxpc3QgYW5kIHNraXAgcmVzdG9yaW5nIGZvcgorCSAqIC0tZXhjbHVk ZS1kYXRhYmFzZSBwYXR0ZXJucy4KKwkgKi8KKwlpZiAoaW5wdXRGaWxlU3BlYyAhPSBOVUxM ICYmICFmaWxlX2V4aXN0c19pbl9kaXJlY3RvcnkoaW5wdXRGaWxlU3BlYywgInRvYy5kYXQi KSAmJgorCQlmaWxlX2V4aXN0c19pbl9kaXJlY3RvcnkoaW5wdXRGaWxlU3BlYywgImdsb2Jh bC5kYXQiKSkKKwl7CisJCVBHY29ubgkgICAqY29ubiA9IE5VTEw7CS8qIENvbm5lY3Rpb24g dG8gcmVzdG9yZSBnbG9iYWwgc3FsCisJCQkJCQkJCQkgKiBjb21tYW5kcy4gKi8KKworCQkv KgorCQkgKiBVc2VyIGlzIHN1Z2dlc3RlZCB0byB1c2Ugc2luZ2xlIGRhdGFiYXNlIGR1bXAg Zm9yIC0tbGlzdCBvcHRpb24uCisJCSAqLworCQlpZiAob3B0cy0+dG9jU3VtbWFyeSkKKwkJ CXBnX2ZhdGFsKCJvcHRpb24gLWwvLS1saXN0IGNhbm5vdCBiZSB1c2VkIHdoZW4gcmVzdG9y aW5nIG11bHRpcGxlIGRhdGFiYXNlcyBieSBhcmNoaXZlIG9mIHBnX2R1bXBhbGwiKTsKKwor CQkvKgorCQkgKiBUbyByZXN0b3JlIG11bHRpcGxlIGRhdGFiYXNlcywgLUMgKGNyZWF0ZSBk YXRhYmFzZSkgb3B0aW9uIHNob3VsZAorCQkgKiBiZSBzcGVjaWZpZWQuIEV2ZW4gdGhlcmUg aXMgc2luZ2xlIGRhdGFiYXNlIGluIGR1bXAsIHJlcG9ydCBlcnJvcgorCQkgKiBiZWNhdXNl IGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRoYXQgZGF0YWJhc2UgaGFzbid0IGNyZWF0ZWQgc28g YmV0dGVyCisJCSAqIHdlIHJlcG9ydCBlcnJvci4KKwkJICovCisJCWlmICghZ2xvYmFsc19v bmx5ICYmIG9wdHMtPmNyZWF0ZURCICE9IDEpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigiLUMv LS1jcmVhdGUgb3B0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZXN0b3JpbmcgbXVs dGlwbGUgZGF0YWJhc2VzIGJ5IGFyY2hpdmUgb2YgcGdfZHVtcGFsbCIpOworCQkJcGdfbG9n X2Vycm9yX2hpbnQoIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIs IHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcl9oaW50KCJJZiBkYiBpcyBhbHJlYWR5IGNy ZWF0ZWQgYW5kIGR1bXAgaGFzIHNpbmdsZSBkYiBkdW1wLCB0aGVuIHVzZSBwYXJ0aWN1bGFy IGR1bXAgZmlsZS4iKTsKKwkJCWV4aXRfbmljZWx5KDEpOworCQl9CisKKwkJLyoKKwkJICog Q29ubmVjdCB0byBkYXRhYmFzZSB0byBleGVjdXRlIGdsb2JhbCBzcWwgY29tbWFuZHMgZnJv bSBnbG9iYWwuZGF0CisJCSAqIGZpbGUuCisJCSAqLworCQlpZiAob3B0cy0+Y3BhcmFtcy5k Ym5hbWUpCisJCXsKKwkJCWNvbm4gPSBDb25uZWN0RGF0YWJhc2Uob3B0cy0+Y3BhcmFtcy5k Ym5hbWUsIE5VTEwsIG9wdHMtPmNwYXJhbXMucGdob3N0LAorCQkJCQkJCQkgICBvcHRzLT5j cGFyYW1zLnBncG9ydCwgb3B0cy0+Y3BhcmFtcy51c2VybmFtZSwgVFJJX0RFRkFVTFQsCisJ CQkJCQkJCSAgIGZhbHNlLCBwcm9nbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisK KworCQkJaWYgKCFjb25uKQorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY29ubmVjdCB0byBk YXRhYmFzZSBcIiVzXCIiLCBvcHRzLT5jcGFyYW1zLmRibmFtZSk7CisJCX0KKworCQkvKiBJ ZiBnbG9iYWxzLW9ubHksIHRoZW4gcmV0dXJuIGZyb20gaGVyZS4gKi8KKwkJaWYgKGdsb2Jh bHNfb25seSkKKwkJeworCQkJLyoKKwkJCSAqIE9wZW4gZ2xvYmFsLmRhdCBmaWxlIGFuZCBl eGVjdXRlL2FwcGVuZCBhbGwgdGhlIGdsb2JhbCBzcWwKKwkJCSAqIGNvbW1hbmRzLgorCQkJ ICovCisJCQluX2Vycm9ycyA9IHByb2Nlc3NfZ2xvYmFsX3NxbF9jb21tYW5kcyhjb25uLCBp bnB1dEZpbGVTcGVjLAorCQkJCQkJCQkJCQkJICAgb3B0cy0+ZmlsZW5hbWUpOworCisJCQlp ZiAoY29ubikKKwkJCQlQUWZpbmlzaChjb25uKTsKKworCQkJcGdfbG9nX2luZm8oImRhdGFi YXNlcyByZXN0b3JpbmcgaXMgc2tpcHBlZCBhcyAtZy8tLWdsb2JhbHMtb25seSBvcHRpb24g aXMgc3BlY2lmaWVkIik7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBOb3cgcmVzdG9yZSBh bGwgdGhlIGRhdGFiYXNlcyBmcm9tIG1hcC5kYXQgZmlsZS4gKi8KKwkJCW5fZXJyb3JzID0g cmVzdG9yZV9hbGxfZGF0YWJhc2VzKGNvbm4sIGlucHV0RmlsZVNwZWMsIGRiX2V4Y2x1ZGVf cGF0dGVybnMsCisJCQkJCQkJCQkJCSBvcHRzLCBudW1Xb3JrZXJzKTsKKwkJfQorCisJCS8q IEZyZWUgZGIgcGF0dGVybiBsaXN0LiAqLworCQlzaW1wbGVfc3RyaW5nX2xpc3RfZGVzdHJv eSgmZGJfZXhjbHVkZV9wYXR0ZXJucyk7CisJfQorCWVsc2UJCQkJCQkvKiBwcm9jZXNzIGlm IGdsb2JhbC5kYXQgZmlsZSBkb2VzIG5vdCBleGlzdC4gKi8KKwl7CisJCWlmIChkYl9leGNs dWRlX3BhdHRlcm5zLmhlYWQgIT0gTlVMTCkKKwkJCXBnX2ZhdGFsKCJvcHRpb24gLS1leGNs dWRlLWRhdGFiYXNlIGNhbiBiZSB1c2VkIG9ubHkgd2hlbiByZXN0b3JpbmcgbXVsdGlwbGUg ZGF0YWJhc2VzIGJ5IGFyY2hpdmUgb2YgcGdfZHVtcGFsbCIpOworCisJCWlmIChnbG9iYWxz X29ubHkpCisJCQlwZ19mYXRhbCgib3B0aW9uIC1nLy0tZ2xvYmFscy1vbmx5IGNhbiBiZSB1 c2VkIG9ubHkgd2hlbiByZXN0b3JpbmcgbXVsdGlwbGUgZGF0YWJhc2VzIGJ5IGFyY2hpdmUg b2YgcGdfZHVtcGFsbCIpOworCisJCW5fZXJyb3JzID0gcmVzdG9yZV9vbmVfZGF0YWJhc2Uo aW5wdXRGaWxlU3BlYywgb3B0cywgbnVtV29ya2VycywgZmFsc2UsIDApOworCX0KKworCS8q IERvbmUsIHByaW50IGEgc3VtbWFyeSBvZiBpZ25vcmVkIGVycm9ycyBkdXJpbmcgcmVzdG9y ZS4gKi8KKwlpZiAobl9lcnJvcnMpCisJeworCQlwZ19sb2dfd2FybmluZygiZXJyb3JzIGln bm9yZWQgb24gcmVzdG9yZTogJWQiLCBuX2Vycm9ycyk7CisJCXJldHVybiAxOworCX0KKwor CXJldHVybiAwOworfQorCisvKgorICogcmVzdG9yZV9vbmVfZGF0YWJhc2UKKyAqCisgKiBU aGlzIHdpbGwgcmVzdG9yZSBvbmUgZGF0YWJhc2UgdXNpbmcgdG9jLmRhdCBmaWxlLgorICoK KyAqIHJldHVybnMgdGhlIG51bWJlciBvZiBlcnJvcnMgd2hpbGUgZG9pbmcgcmVzdG9yZS4K KyAqLworc3RhdGljIGludAorcmVzdG9yZV9vbmVfZGF0YWJhc2UoY29uc3QgY2hhciAqaW5w dXRGaWxlU3BlYywgUmVzdG9yZU9wdGlvbnMgKm9wdHMsCisJCQkJCSBpbnQgbnVtV29ya2Vy cywgYm9vbCBhcHBlbmRfZGF0YSwgaW50IG51bSkKK3sKKwlBcmNoaXZlICAgICpBSDsKKwlp bnQJCQluX2Vycm9yczsKKwogCUFIID0gT3BlbkFyY2hpdmUoaW5wdXRGaWxlU3BlYywgb3B0 cy0+Zm9ybWF0KTsKIAogCVNldEFyY2hpdmVPcHRpb25zKEFILCBOVUxMLCBvcHRzKTsKQEAg LTQ1OSw5ICs2MDIsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyoKIAkg KiBXZSBkb24ndCBoYXZlIGEgY29ubmVjdGlvbiB5ZXQgYnV0IHRoYXQgZG9lc24ndCBtYXR0 ZXIuIFRoZSBjb25uZWN0aW9uCiAJICogaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTCBhbmQgaWYg d2UgdGVybWluYXRlIHRocm91Z2ggZXhpdF9uaWNlbHkoKSB3aGlsZQotCSAqIGl0J3Mgc3Rp bGwgTlVMTCwgdGhlIGNsZWFudXAgZnVuY3Rpb24gd2lsbCBqdXN0IGJlIGEgbm8tb3AuCisJ ICogaXQncyBzdGlsbCBOVUxMLCB0aGUgY2xlYW51cCBmdW5jdGlvbiB3aWxsIGp1c3QgYmUg YSBuby1vcC4gSWYgd2UgYXJlCisJICogcmVzdG9yaW5nIG11bHRpcGxlIGRhdGFiYXNlcywg dGhlbiBvbmx5IHVwZGF0ZSBBWCBoYW5kbGUgZm9yIGNsZWFudXAgYXMKKwkgKiBwcmV2aW91 cyBlbnRyeSB3YXMgYWxyZWFkeSBpbiBhcnJheSBhbmQgd2UgaGFkIGNsb3NlZCBwcmV2aW91 cworCSAqIGNvbm5lY3Rpb24gc28gd2UgY2FuIHVzZSBzYW1lIHNsb3QgZnJvbSBhcnJheS4K IAkgKi8KLQlvbl9leGl0X2Nsb3NlX2FyY2hpdmUoQUgpOworCWlmICghYXBwZW5kX2RhdGEg fHwgbnVtID09IDApCisJCW9uX2V4aXRfY2xvc2VfYXJjaGl2ZShBSCk7CisJZWxzZQorCQly ZXBsYWNlX29uX2V4aXRfY2xvc2VfYXJjaGl2ZShBSCk7CiAKIAkvKiBMZXQgdGhlIGFyY2hp dmVyIGtub3cgaG93IG5vaXN5IHRvIGJlICovCiAJQUgtPnZlcmJvc2UgPSBvcHRzLT52ZXJi b3NlOwpAQCAtNDgxLDI1ICs2MzAsMjIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJZWxzZQogCXsKIAkJUHJvY2Vzc0FyY2hpdmVSZXN0b3JlT3B0aW9ucyhBSCk7Ci0JCVJl c3RvcmVBcmNoaXZlKEFIKTsKKwkJUmVzdG9yZUFyY2hpdmUoQUgsIGFwcGVuZF9kYXRhKTsK IAl9CiAKLQkvKiBkb25lLCBwcmludCBhIHN1bW1hcnkgb2YgaWdub3JlZCBlcnJvcnMgKi8K LQlpZiAoQUgtPm5fZXJyb3JzKQotCQlwZ19sb2dfd2FybmluZygiZXJyb3JzIGlnbm9yZWQg b24gcmVzdG9yZTogJWQiLCBBSC0+bl9lcnJvcnMpOworCW5fZXJyb3JzID0gQUgtPm5fZXJy b3JzOwogCiAJLyogQUggbWF5IGJlIGZyZWVkIGluIENsb3NlQXJjaGl2ZT8gKi8KLQlleGl0 X2NvZGUgPSBBSC0+bl9lcnJvcnMgPyAxIDogMDsKLQogCUNsb3NlQXJjaGl2ZShBSCk7CiAK LQlyZXR1cm4gZXhpdF9jb2RlOworCXJldHVybiBuX2Vycm9yczsKIH0KIAogc3RhdGljIHZv aWQKIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQogewotCXByaW50ZihfKCIlcyByZXN0 b3JlcyBhIFBvc3RncmVTUUwgZGF0YWJhc2UgZnJvbSBhbiBhcmNoaXZlIGNyZWF0ZWQgYnkg cGdfZHVtcC5cblxuIiksIHByb2duYW1lKTsKKwlwcmludGYoXygiJXMgcmVzdG9yZXMgYSBQ b3N0Z3JlU1FMIGRhdGFiYXNlIGZyb20gYW4gYXJjaGl2ZSBjcmVhdGVkIGJ5IHBnX2R1bXAu XG4iCisJCQkgIklmIGFyY2hpdmUgaXMgY3JlYXRlZCBieSBwZ19kdW1wYWxsLCB0aGVuIHJl c3RvcmVzIG11bHRpcGxlIGRhdGFiYXNlcyBhbHNvLiBcblxuIiksIHByb2duYW1lKTsKIAlw cmludGYoXygiVXNhZ2U6XG4iKSk7CiAJcHJpbnRmKF8oIiAgJXMgW09QVElPTl0uLi4gW0ZJ TEVdXG4iKSwgcHJvZ25hbWUpOwogCkBAIC01MTcsNiArNjYzLDcgQEAgdXNhZ2UoY29uc3Qg Y2hhciAqcHJvZ25hbWUpCiAJcHJpbnRmKF8oIiAgLWMsIC0tY2xlYW4gICAgICAgICAgICAg ICAgICBjbGVhbiAoZHJvcCkgZGF0YWJhc2Ugb2JqZWN0cyBiZWZvcmUgcmVjcmVhdGluZ1xu IikpOwogCXByaW50ZihfKCIgIC1DLCAtLWNyZWF0ZSAgICAgICAgICAgICAgICAgY3JlYXRl IHRoZSB0YXJnZXQgZGF0YWJhc2VcbiIpKTsKIAlwcmludGYoXygiICAtZSwgLS1leGl0LW9u LWVycm9yICAgICAgICAgIGV4aXQgb24gZXJyb3IsIGRlZmF1bHQgaXMgdG8gY29udGludWVc biIpKTsKKwlwcmludGYoXygiICAtZywgLS1nbG9iYWxzLW9ubHkgICAgICAgICAgIHJlc3Rv cmUgb25seSBnbG9iYWwgb2JqZWN0cywgbm8gZGF0YWJhc2VzXG4iKSk7CiAJcHJpbnRmKF8o IiAgLUksIC0taW5kZXg9TkFNRSAgICAgICAgICAgICByZXN0b3JlIG5hbWVkIGluZGV4XG4i KSk7CiAJcHJpbnRmKF8oIiAgLWosIC0tam9icz1OVU0gICAgICAgICAgICAgICB1c2UgdGhp cyBtYW55IHBhcmFsbGVsIGpvYnMgdG8gcmVzdG9yZVxuIikpOwogCXByaW50ZihfKCIgIC1M LCAtLXVzZS1saXN0PUZJTEVOQU1FICAgICAgdXNlIHRhYmxlIG9mIGNvbnRlbnRzIGZyb20g dGhpcyBmaWxlIGZvclxuIgpAQCAtNTI5LDYgKzY3Niw3IEBAIHVzYWdlKGNvbnN0IGNoYXIg KnByb2duYW1lKQogCXByaW50ZihfKCIgIC1TLCAtLXN1cGVydXNlcj1OQU1FICAgICAgICAg c3VwZXJ1c2VyIHVzZXIgbmFtZSB0byB1c2UgZm9yIGRpc2FibGluZyB0cmlnZ2Vyc1xuIikp OwogCXByaW50ZihfKCIgIC10LCAtLXRhYmxlPU5BTUUgICAgICAgICAgICAgcmVzdG9yZSBu YW1lZCByZWxhdGlvbiAodGFibGUsIHZpZXcsIGV0Yy4pXG4iKSk7CiAJcHJpbnRmKF8oIiAg LVQsIC0tdHJpZ2dlcj1OQU1FICAgICAgICAgICByZXN0b3JlIG5hbWVkIHRyaWdnZXJcbiIp KTsKKwlwcmludGYoXygiICAtLWV4Y2x1ZGUtZGF0YWJhc2U9UEFUVEVSTiAgIGV4Y2x1ZGUg ZGF0YWJhc2VzIHdob3NlIG5hbWUgbWF0Y2hlcyB3aXRoIHBhdHRlcm5cbiIpKTsKIAlwcmlu dGYoXygiICAteCwgLS1uby1wcml2aWxlZ2VzICAgICAgICAgIHNraXAgcmVzdG9yYXRpb24g b2YgYWNjZXNzIHByaXZpbGVnZXMgKGdyYW50L3Jldm9rZSlcbiIpKTsKIAlwcmludGYoXygi ICAtMSwgLS1zaW5nbGUtdHJhbnNhY3Rpb24gICAgIHJlc3RvcmUgYXMgYSBzaW5nbGUgdHJh bnNhY3Rpb25cbiIpKTsKIAlwcmludGYoXygiICAtLWRpc2FibGUtdHJpZ2dlcnMgICAgICAg ICAgIGRpc2FibGUgdHJpZ2dlcnMgZHVyaW5nIGRhdGEtb25seSByZXN0b3JlXG4iKSk7CkBA IC01NjksOCArNzE3LDggQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJcHJpbnRm KF8oIiAgLS1yb2xlPVJPTEVOQU1FICAgICAgICAgIGRvIFNFVCBST0xFIGJlZm9yZSByZXN0 b3JlXG4iKSk7CiAKIAlwcmludGYoXygiXG4iCi0JCQkgIlRoZSBvcHRpb25zIC1JLCAtbiwg LU4sIC1QLCAtdCwgLVQsIGFuZCAtLXNlY3Rpb24gY2FuIGJlIGNvbWJpbmVkIGFuZCBzcGVj aWZpZWRcbiIKLQkJCSAibXVsdGlwbGUgdGltZXMgdG8gc2VsZWN0IG11bHRpcGxlIG9iamVj dHMuXG4iKSk7CisJCQkgIlRoZSBvcHRpb25zIC1JLCAtbiwgLU4sIC1QLCAtdCwgLVQsIC0t c2VjdGlvbiwgYW5kIC0tZXhjbHVkZS1kYXRhYmFzZSBjYW4gYmUgY29tYmluZWRcbiIKKwkJ CSAiYW5kIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyB0byBzZWxlY3QgbXVsdGlwbGUgb2Jq ZWN0cy5cbiIpKTsKIAlwcmludGYoXygiXG5JZiBubyBpbnB1dCBmaWxlIG5hbWUgaXMgc3Vw cGxpZWQsIHRoZW4gc3RhbmRhcmQgaW5wdXQgaXMgdXNlZC5cblxuIikpOwogCXByaW50Zihf KCJSZXBvcnQgYnVncyB0byA8JXM+LlxuIiksIFBBQ0tBR0VfQlVHUkVQT1JUKTsKIAlwcmlu dGYoXygiJXMgaG9tZSBwYWdlOiA8JXM+XG4iKSwgUEFDS0FHRV9OQU1FLCBQQUNLQUdFX1VS TCk7CkBAIC02NzUsMyArODIzLDYyMSBAQCByZWFkX3Jlc3RvcmVfZmlsdGVycyhjb25zdCBj aGFyICpmaWxlbmFtZSwgUmVzdG9yZU9wdGlvbnMgKm9wdHMpCiAKIAlmaWx0ZXJfZnJlZSgm ZnN0YXRlKTsKIH0KKworLyoKKyAqIGZpbGVfZXhpc3RzX2luX2RpcmVjdG9yeQorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiBmaWxlIGV4aXN0IGluIGN1cnJlbnQgZGlyZWN0b3J5LgorICov CitzdGF0aWMgYm9vbAorZmlsZV9leGlzdHNfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRp ciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RydWN0IHN0YXQgc3Q7CisJY2hhcgkJ YnVmW01BWFBHUEFUSF07CisKKwlpZiAoc25wcmludGYoYnVmLCBNQVhQR1BBVEgsICIlcy8l cyIsIGRpciwgZmlsZW5hbWUpID49IE1BWFBHUEFUSCkKKwkJcGdfZmF0YWwoImRpcmVjdG9y eSBuYW1lIHRvbyBsb25nOiBcIiVzXCIiLCBkaXIpOworCisJcmV0dXJuIChzdGF0KGJ1Ziwg JnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpOworfQorCisvKgorICogcmVhZF9v bmVfc3RhdGVtZW50CisgKgorICogVGhpcyB3aWxsIHN0YXJ0IHJlYWRpbmcgZnJvbSBwYXNz ZWQgZmlsZSBwb2ludGVyIHVzaW5nIGZnZXRjIGFuZCByZWFkIHRpbGwKKyAqIHNlbWljb2xv bihzcWwgc3RhdGVtZW50IHRlcm1pbmF0b3IgZm9yIGdsb2JhbC5kYXQgZmlsZSkKKyAqCisg KiBFT0YgaXMgcmV0dXJuZWQgaWYgZW5kLW9mLWZpbGUgaW5wdXQgaXMgc2VlbjsgdGltZSB0 byBzaHV0IGRvd24uCisgKi8KKworc3RhdGljIGludAorcmVhZF9vbmVfc3RhdGVtZW50KFN0 cmluZ0luZm8gaW5CdWYsIEZJTEUgKnBmaWxlKQoreworCWludAkJCWM7CQkJCS8qIGNoYXJh Y3RlciByZWFkIGZyb20gZ2V0YygpICovCisJaW50CQkJbTsKKworCVN0cmluZ0luZm9EYXRh IHE7CisKKwlpbml0U3RyaW5nSW5mbygmcSk7CisKKwlyZXNldFN0cmluZ0luZm8oaW5CdWYp OworCisJLyoKKwkgKiBSZWFkIGNoYXJhY3RlcnMgdW50aWwgRU9GIG9yIHRoZSBhcHByb3By aWF0ZSBkZWxpbWl0ZXIgaXMgc2Vlbi4KKwkgKi8KKwl3aGlsZSAoKGMgPSBmZ2V0YyhwZmls ZSkpICE9IEVPRikKKwl7CisJCWlmIChjICE9ICdcJycgJiYgYyAhPSAnIicgJiYgYyAhPSAn XG4nICYmIGMgIT0gJzsnKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihpbkJ1Ziwg KGNoYXIpIGMpOworCQkJd2hpbGUgKChjID0gZmdldGMocGZpbGUpKSAhPSBFT0YpCisJCQl7 CisJCQkJaWYgKGMgIT0gJ1wnJyAmJiBjICE9ICciJyAmJiBjICE9ICc7JyAmJiBjICE9ICdc bicpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGluQnVmLCAoY2hhcikgYyk7CisJCQkJ ZWxzZQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChjID09ICdcJycgfHwgYyA9 PSAnIicpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZxLCAoY2hhcikgYyk7CisJ CQltID0gYzsKKworCQkJd2hpbGUgKChjID0gZmdldGMocGZpbGUpKSAhPSBFT0YpCisJCQl7 CisJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnEsIChjaGFyKSBjKTsKKworCQkJCWlmIChj ID09IG0pCisJCQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGluQnVmLCBxLmRh dGEpOworCQkJCQlyZXNldFN0cmluZ0luZm8oJnEpOworCQkJCQlicmVhazsKKwkJCQl9CisJ CQl9CisJCX0KKworCQlpZiAoYyA9PSAnOycpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGluQnVmLCAoY2hhcikgJzsnKTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKGMgPT0g J1xuJykKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGluQnVmLCAoY2hhcikgJ1xuJyk7CisJ fQorCisJLyogTm8gaW5wdXQgYmVmb3JlIEVPRiBzaWduYWwgbWVhbnMgdGltZSB0byBxdWl0 LiAqLworCWlmIChjID09IEVPRiAmJiBpbkJ1Zi0+bGVuID09IDApCisJCXJldHVybiBFT0Y7 CisKKwkvKiBBZGQgJ1wwJyB0byBtYWtlIGl0IGxvb2sgdGhlIHNhbWUgYXMgbWVzc2FnZSBj YXNlLiAqLworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGluQnVmLCAoY2hhcikgJ1wwJyk7CisK KwlyZXR1cm4gJ1EnOworfQorCisvKgorICogZ2V0X2RibmFtZXNfbGlzdF90b19yZXN0b3Jl CisgKgorICogVGhpcyB3aWxsIG1hcmsgZm9yIHNraXBwaW5nIGFueSBlbnRyaWVzIGZyb20g ZGJuYW1lX29pZF9saXN0IHRoYXQgcGF0dGVybiBtYXRjaCBhbgorICogZW50cnkgaW4gdGhl IGRiX2V4Y2x1ZGVfcGF0dGVybnMgbGlzdC4KKyAqCisgKiBSZXR1cm5zIHRoZSBudW1iZXIg b2YgZGF0YWJhc2UgdG8gYmUgcmVzdG9yZWQuCisgKgorICovCitzdGF0aWMgaW50CitnZXRf ZGJuYW1lc19saXN0X3RvX3Jlc3RvcmUoUEdjb25uICpjb25uLAorCQkJCQkJCVNpbXBsZU9p ZFN0cmluZ0xpc3QgKmRibmFtZV9vaWRfbGlzdCwKKwkJCQkJCQlTaW1wbGVTdHJpbmdMaXN0 IGRiX2V4Y2x1ZGVfcGF0dGVybnMpCit7CisJaW50CQkJY291bnRfZGIgPSAwOworCVBRRXhw QnVmZmVyIHF1ZXJ5OworCVBHcmVzdWx0ICAgKnJlczsKKworCXF1ZXJ5ID0gY3JlYXRlUFFF eHBCdWZmZXIoKTsKKworCWlmICghY29ubikKKwkJcGdfbG9nX2luZm8oImNvbnNpZGVyaW5n IFBBVFRFUk4gYXMgTkFNRSBmb3IgLS1leGNsdWRlLWRhdGFiYXNlIG9wdGlvbiBhcyBubyBk YiBjb25uZWN0aW9uIHdoaWxlIGRvaW5nIHBnX3Jlc3RvcmUuIik7CisKKwkvKgorCSAqIFBy b2Nlc3Mgb25lIGJ5IG9uZSBhbGwgZGJuYW1lcyBhbmQgaWYgc3BlY2lmaWVkIHRvIHNraXAg cmVzdG9yaW5nLCB0aGVuCisJICogcmVtb3ZlIGRibmFtZSBmcm9tIGxpc3QuCisJICovCisJ Zm9yIChTaW1wbGVPaWRTdHJpbmdMaXN0Q2VsbCAqIGRiX2NlbGwgPSBkYm5hbWVfb2lkX2xp c3QtPmhlYWQ7CisJCSBkYl9jZWxsOyBkYl9jZWxsID0gZGJfY2VsbC0+bmV4dCkKKwl7CisJ CWJvb2wJCXNraXBfZGJfcmVzdG9yZSA9IGZhbHNlOworCisJCWZvciAoU2ltcGxlU3RyaW5n TGlzdENlbGwgKnBhdF9jZWxsID0gZGJfZXhjbHVkZV9wYXR0ZXJucy5oZWFkOyBwYXRfY2Vs bDsgcGF0X2NlbGwgPSBwYXRfY2VsbC0+bmV4dCkKKwkJeworCQkJLyoKKwkJCSAqIHRoZSBj b25zdHJ1Y3QgcGF0dGVybiBtYXRjaGluZyBxdWVyeTogU0VMRUNUIDEgV0hFUkUgWFhYCisJ CQkgKiBPUEVSQVRPUihwZ19jYXRhbG9nLn4pICdeKFBBVFRFUk4pJCcgQ09MTEFURSBwZ19j YXRhbG9nLmRlZmF1bHQKKwkJCSAqCisJCQkgKiBYWFggcmVwcmVzZW50cyB0aGUgc3RyaW5n IGxpdGVyYWwgZGF0YWJhc2UgbmFtZSBkZXJpdmVkIGZyb20KKwkJCSAqIHRoZSBkYm5hbWVf b2lkX2xpc3QsIHdoaWNoIGlzIGluaXRpYWxseSBleHRyYWN0ZWQgZnJvbSB0aGUKKwkJCSAq IG1hcC5kYXQgZmlsZSBsb2NhdGVkIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LiAgdGhhdCdz IHdoeSB3ZQorCQkJICogbmVlZCBxdW90ZV9saXRlcmFsX2NzdHIuCisJCQkgKgorCQkJICog SWYgbm8gZGIgY29ubmVjdGlvbiwgdGhlbiBjb25zaWRlciBQQVRURVJOIGFzIE5BTUUuCisJ CQkgKi8KKwkJCWlmIChwZ19zdHJjYXNlY21wKGRiX2NlbGwtPnN0ciwgcGF0X2NlbGwtPnZh bCkgPT0gMCkKKwkJCQlza2lwX2RiX3Jlc3RvcmUgPSB0cnVlOworCQkJZWxzZSBpZiAoY29u bikKKwkJCXsKKwkJCQlpbnQJCQlkb3RjbnQ7CisKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIlNFTEVDVCAxICIpOworCQkJCXByb2Nlc3NTUUxOYW1lUGF0dGVybihjb25u LCBxdWVyeSwgcGF0X2NlbGwtPnZhbCwgZmFsc2UsCisJCQkJCQkJCQkgIGZhbHNlLCBOVUxM LCBxdW90ZV9saXRlcmFsX2NzdHIoZGJfY2VsbC0+c3RyKSwKKwkJCQkJCQkJCSAgTlVMTCwg TlVMTCwgTlVMTCwgJmRvdGNudCk7CisKKwkJCQlpZiAoZG90Y250ID4gMCkKKwkJCQl7CisJ CQkJCXBnX2xvZ19lcnJvcigiaW1wcm9wZXIgcXVhbGlmaWVkIG5hbWUgKHRvbyBtYW55IGRv dHRlZCBuYW1lcyk6ICVzIiwKKwkJCQkJCQkJIGRiX2NlbGwtPnN0cik7CisJCQkJCVBRZmlu aXNoKGNvbm4pOworCQkJCQlleGl0X25pY2VseSgxKTsKKwkJCQl9CisKKwkJCQlyZXMgPSBl eGVjdXRlUXVlcnkoY29ubiwgcXVlcnktPmRhdGEpOworCisJCQkJaWYgKChQUXJlc3VsdFN0 YXR1cyhyZXMpID09IFBHUkVTX1RVUExFU19PSykgJiYgUFFudHVwbGVzKHJlcykpCisJCQkJ eworCQkJCQlza2lwX2RiX3Jlc3RvcmUgPSB0cnVlOworCQkJCQlwZ19sb2dfaW5mbygiZGF0 YWJhc2UgXCIlc1wiIG1hdGNoZXMgZXhjbHVkZSBwYXR0ZXJuOiBcIiVzXCIiLCBkYl9jZWxs LT5zdHIsIHBhdF9jZWxsLT52YWwpOworCQkJCX0KKworCQkJCVBRY2xlYXIocmVzKTsKKwkJ CQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKwkJCX0KKworCQkJaWYgKHNraXBfZGJfcmVz dG9yZSkKKwkJCQlicmVhazsKKwkJfQorCisJCS8qIEluY3JlbWVudCBjb3VudCBpZiBkYXRh YmFzZSBuZWVkcyB0byBiZSByZXN0b3JlZC4gKi8KKwkJaWYgKHNraXBfZGJfcmVzdG9yZSkK KwkJeworCQkJcGdfbG9nX2luZm8oImV4Y2x1ZGluZyBkYXRhYmFzZSBcIiVzXCIiLCBkYl9j ZWxsLT5zdHIpOworCQkJZGJfY2VsbC0+b2lkID0gSW52YWxpZE9pZDsKKwkJfQorCQllbHNl CisJCXsKKwkJCWNvdW50X2RiKys7CisJCX0KKwl9CisKKwlyZXR1cm4gY291bnRfZGI7Cit9 CisKKy8qCisgKiBnZXRfZGJuYW1lX29pZF9saXN0X2Zyb21fbWZpbGUKKyAqCisgKiBPcGVu IG1hcC5kYXQgZmlsZSBhbmQgcmVhZCBsaW5lIGJ5IGxpbmUgYW5kIHRoZW4gcHJlcGFyZSBh IGxpc3Qgb2YgZGF0YWJhc2UKKyAqIG5hbWVzIGFuZCBjb3JyZXNwb25kaW5nIGRiX29pZC4K KyAqCisgKiBSZXR1cm5zLCB0b3RhbCBudW1iZXIgb2YgZGF0YWJhc2UgbmFtZXMgaW4gbWFw LmRhdCBmaWxlLgorICovCitzdGF0aWMgaW50CitnZXRfZGJuYW1lX29pZF9saXN0X2Zyb21f bWZpbGUoY29uc3QgY2hhciAqZHVtcGRpcnBhdGgsIFNpbXBsZU9pZFN0cmluZ0xpc3QgKmRi bmFtZV9vaWRfbGlzdCkKK3sKKwlGSUxFCSAgICpwZmlsZTsKKwljaGFyCQltYXBfZmlsZV9w YXRoW01BWFBHUEFUSF07CisJY2hhcgkJbGluZVtNQVhQR1BBVEhdOworCWludAkJCWNvdW50 ID0gMDsKKworCS8qCisJICogSWYgdGhlcmUgaXMgb25seSBnbG9iYWwuZGF0IGZpbGUgaW4g ZHVtcCwgdGhlbiByZXR1cm4gZnJvbSBoZXJlIGFzCisJICogdGhlcmUgaXMgbm8gZGF0YWJh c2UgdG8gcmVzdG9yZS4KKwkgKi8KKwlpZiAoIWZpbGVfZXhpc3RzX2luX2RpcmVjdG9yeShk dW1wZGlycGF0aCwgIm1hcC5kYXQiKSkKKwl7CisJCXBnX2xvZ19pbmZvKCJkYXRhYmFzZXMg cmVzdG9yaW5nIGlzIHNraXBwZWQgYXMgbWFwLmRhdCBmaWxlIGlzIG5vdCBwcmVzZW50IGlu IFwiJXNcIiIsIGR1bXBkaXJwYXRoKTsKKwkJcmV0dXJuIDA7CisJfQorCisJc25wcmludGYo bWFwX2ZpbGVfcGF0aCwgTUFYUEdQQVRILCAiJXMvbWFwLmRhdCIsIGR1bXBkaXJwYXRoKTsK KworCS8qIE9wZW4gbWFwLmRhdCBmaWxlLiAqLworCXBmaWxlID0gZm9wZW4obWFwX2ZpbGVf cGF0aCwgUEdfQklOQVJZX1IpOworCisJaWYgKHBmaWxlID09IE5VTEwpCisJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgb3BlbiBtYXAuZGF0IGZpbGU6IFwiJXNcIiIsIG1hcF9maWxlX3BhdGgp OworCisJLyogQXBwZW5kIGFsbCB0aGUgZGJuYW1lIGFuZCBkYl9vaWQgdG8gdGhlIGxpc3Qu ICovCisJd2hpbGUgKChmZ2V0cyhsaW5lLCBNQVhQR1BBVEgsIHBmaWxlKSkgIT0gTlVMTCkK Kwl7CisJCU9pZAkJCWRiX29pZCA9IEludmFsaWRPaWQ7CisJCWNoYXIJCWRiX29pZF9zdHJb TUFYUEdQQVRIICsgMV0gPSB7J1wwJ307CisJCWNoYXIJCWRibmFtZVtNQVhQR1BBVEggKyAx XSA9IHsnXDAnfTsKKworCQkvKiBFeHRyYWN0IGRib2lkLiAqLworCQlzc2NhbmYobGluZSwg IiV1IiwgJmRiX29pZCk7CisJCXNzY2FuZihsaW5lLCAiJTIwcyIsIGRiX29pZF9zdHIpOwor CisJCS8qIE5vdyBjb3B5IGRibmFtZS4gKi8KKwkJc3RyY3B5KGRibmFtZSwgbGluZSArIHN0 cmxlbihkYl9vaWRfc3RyKSArIDEpOworCisJCS8qIFJlbW92ZSBcbiBmcm9tIGRiYW5tZS4g Ki8KKwkJZGJuYW1lW3N0cmxlbihkYm5hbWUpIC0gMV0gPSAnXDAnOworCisJCXBnX2xvZ19p bmZvKCJmb3VuZCBkYXRhYmFzZSBcIiVzXCIgKE9JRDogJXUpIGluIG1hcC5kYXQgZmlsZSB3 aGlsZSByZXN0b3JpbmcuIiwgZGJuYW1lLCBkYl9vaWQpOworCisJCS8qIFJlcG9ydCBlcnJv ciBhbmQgZXhpdCBpZiB0aGUgZmlsZSBoYXMgYW55IGNvcnJ1cHRlZCBkYXRhLiAqLworCQlp ZiAoIU9pZElzVmFsaWQoZGJfb2lkKSB8fCBzdHJsZW4oZGJuYW1lKSA9PSAwKQorCQkJcGdf ZmF0YWwoImludmFsaWQgZW50cnkgaW4gbWFwLmRhdCBmaWxlIGF0IGxpbmUgOiAlZCIsIGNv dW50ICsgMSk7CisKKwkJLyoKKwkJICogWFhYIDogYmVmb3JlIGFkZGluZyBkYm5hbWUgaW50 byBsaXN0LCB3ZSBjYW4gdmVyaWZ5IHRoYXQgdGhpcyBkYgorCQkgKiBuZWVkcyB0byBza2lw cGVkIGZvciByZXN0b3JlIG9yIG5vdCBidXQgYXMgb2Ygbm93LCB3ZSBhcmUgbWFraW5nIGEK KwkJICogbGlzdCBvZiBhbGwgdGhlIGRhdGFiYXNlcy4KKwkJICovCisJCXNpbXBsZV9vaWRf c3RyaW5nX2xpc3RfYXBwZW5kKGRibmFtZV9vaWRfbGlzdCwgZGJfb2lkLCBkYm5hbWUpOwor CQljb3VudCsrOworCX0KKworCS8qIENsb3NlIG1hcC5kYXQgZmlsZS4gKi8KKwlmY2xvc2Uo cGZpbGUpOworCisJcmV0dXJuIGNvdW50OworfQorCisvKgorICogcmVzdG9yZV9hbGxfZGF0 YWJhc2VzCisgKgorICogVGhpcyB3aWxsIHJlc3RvcmUgZGF0YWJhc2VzIHRob3NlIGR1bXBz IGFyZSBwcmVzZW50IGluCisgKiBkaXJlY3RvcnkgYmFzZWQgb24gbWFwLmRhdCBmaWxlIG1h cHBpbmcuCisgKgorICogVGhpcyB3aWxsIHNraXAgcmVzdG9yaW5nIGZvciBkYXRhYmFzZXMg dGhhdCBhcmUgc3BlY2lmaWVkIHdpdGgKKyAqIGV4Y2x1ZGUtZGF0YWJhc2Ugb3B0aW9uLgor ICoKKyAqIHJldHVybnMsIG51bWJlciBvZiBlcnJvcnMgd2hpbGUgZG9pbmcgcmVzdG9yZS4K KyAqLworc3RhdGljIGludAorcmVzdG9yZV9hbGxfZGF0YWJhc2VzKFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqZHVtcGRpcnBhdGgsCisJCQkJCSAgU2ltcGxlU3RyaW5nTGlzdCBkYl9l eGNsdWRlX3BhdHRlcm5zLCBSZXN0b3JlT3B0aW9ucyAqb3B0cywKKwkJCQkJICBpbnQgbnVt V29ya2VycykKK3sKKwlTaW1wbGVPaWRTdHJpbmdMaXN0IGRibmFtZV9vaWRfbGlzdCA9IHtO VUxMLCBOVUxMfTsKKwlpbnQJCQludW1fZGJfcmVzdG9yZSA9IDA7CisJaW50CQkJbnVtX3Rv dGFsX2RiOworCWludAkJCW5fZXJyb3JzX3RvdGFsOworCWludAkJCWNvdW50ID0gMDsKKwlj aGFyCSAgICpjb25uZWN0ZWRfZGIgPSBOVUxMOworCWJvb2wJCWR1bXBEYXRhID0gb3B0cy0+ ZHVtcERhdGE7CisJYm9vbAkJZHVtcFNjaGVtYSA9IG9wdHMtPmR1bXBTY2hlbWE7CisJYm9v bAkJZHVtcFN0YXRpc3RpY3MgPSBvcHRzLT5kdW1wU2NoZW1hOworCisJLyogU2F2ZSBkYiBu YW1lIHRvIHJldXNlIGl0IGZvciBhbGwgdGhlIGRhdGFiYXNlLiAqLworCWlmIChvcHRzLT5j cGFyYW1zLmRibmFtZSkKKwkJY29ubmVjdGVkX2RiID0gb3B0cy0+Y3BhcmFtcy5kYm5hbWU7 CisKKwludW1fdG90YWxfZGIgPSBnZXRfZGJuYW1lX29pZF9saXN0X2Zyb21fbWZpbGUoZHVt cGRpcnBhdGgsICZkYm5hbWVfb2lkX2xpc3QpOworCisJLyoKKwkgKiBJZiBtYXAuZGF0IGhh cyBubyBlbnRyeSwgcmV0dXJuIGZyb20gaGVyZSBhZnRlciBwcm9jZXNzaW5nIGdsb2JhbC5k YXQKKwkgKiBmaWxlLgorCSAqLworCWlmIChkYm5hbWVfb2lkX2xpc3QuaGVhZCA9PSBOVUxM KQorCQlyZXR1cm4gcHJvY2Vzc19nbG9iYWxfc3FsX2NvbW1hbmRzKGNvbm4sIGR1bXBkaXJw YXRoLCBvcHRzLT5maWxlbmFtZSk7CisKKwlwZ19sb2dfaW5mbygiZm91bmQgdG90YWwgJWQg ZGF0YWJhc2UgbmFtZXMgaW4gbWFwLmRhdCBmaWxlIiwgbnVtX3RvdGFsX2RiKTsKKworCWlm ICghY29ubikKKwl7CisJCXBnX2xvZ19pbmZvKCJ0cnlpbmcgdG8gY29ubmVjdCBkYXRhYmFz ZSBcInBvc3RncmVzXCIgIHRvIGR1bXAgaW50byBvdXQgZmlsZSIpOworCisJCWNvbm4gPSBD b25uZWN0RGF0YWJhc2UoInBvc3RncmVzIiwgTlVMTCwgb3B0cy0+Y3BhcmFtcy5wZ2hvc3Qs CisJCQkJCQkJICAgb3B0cy0+Y3BhcmFtcy5wZ3BvcnQsIG9wdHMtPmNwYXJhbXMudXNlcm5h bWUsIFRSSV9ERUZBVUxULAorCQkJCQkJCSAgIGZhbHNlLCBwcm9nbmFtZSwgTlVMTCwgTlVM TCwgTlVMTCwgTlVMTCk7CisKKwkJLyogVHJ5IHdpdGggdGVtcGxhdGUxLiAqLworCQlpZiAo IWNvbm4pCisJCXsKKwkJCXBnX2xvZ19pbmZvKCJ0cnlpbmcgdG8gY29ubmVjdCBkYXRhYmFz ZSBcInRlbXBsYXRlMVwiIGFzIGZhaWxlZCB0byBjb25uZWN0IHRvIGRhdGFiYXNlIFwicG9z dGdyZXNcIiB0byBkdW1wIGludG8gb3V0IGZpbGUiKTsKKworCQkJY29ubiA9IENvbm5lY3RE YXRhYmFzZSgidGVtcGxhdGUxIiwgTlVMTCwgb3B0cy0+Y3BhcmFtcy5wZ2hvc3QsCisJCQkJ CQkJCSAgIG9wdHMtPmNwYXJhbXMucGdwb3J0LCBvcHRzLT5jcGFyYW1zLnVzZXJuYW1lLCBU UklfREVGQVVMVCwKKwkJCQkJCQkJICAgZmFsc2UsIHByb2duYW1lLCBOVUxMLCBOVUxMLCBO VUxMLCBOVUxMKTsKKwkJfQorCX0KKworCS8qCisJICogcHJvY2Vzc2luZyBwZ19yZXN0b3Jl IC0tZXhjbHVkZS1kYXRhYmFzZT1QQVRURVJOL05BTUUgaWYgbm8gY29ubmVjdGlvbi4KKwkg Ki8KKwludW1fZGJfcmVzdG9yZSA9IGdldF9kYm5hbWVzX2xpc3RfdG9fcmVzdG9yZShjb25u LCAmZGJuYW1lX29pZF9saXN0LAorCQkJCQkJCQkJCQkJIGRiX2V4Y2x1ZGVfcGF0dGVybnMp OworCisJLyogT3BlbiBnbG9iYWwuZGF0IGZpbGUgYW5kIGV4ZWN1dGUvYXBwZW5kIGFsbCB0 aGUgZ2xvYmFsIHNxbCBjb21tYW5kcy4gKi8KKwluX2Vycm9yc190b3RhbCA9IHByb2Nlc3Nf Z2xvYmFsX3NxbF9jb21tYW5kcyhjb25uLCBkdW1wZGlycGF0aCwgb3B0cy0+ZmlsZW5hbWUp OworCisJLyogQ2xvc2UgdGhlIGRiIGNvbm5lY3Rpb24gYXMgd2UgYXJlIGRvbmUgd2l0aCBn bG9iYWxzIGFuZCBwYXR0ZXJucy4gKi8KKwlpZiAoY29ubikKKwkJUFFmaW5pc2goY29ubik7 CisKKwkvKiBFeGl0IGlmIG5vIGRiIG5lZWRzIHRvIGJlIHJlc3RvcmVkLiAqLworCWlmIChk Ym5hbWVfb2lkX2xpc3QuaGVhZCA9PSBOVUxMIHx8IG51bV9kYl9yZXN0b3JlID09IDApCisJ eworCQlwZ19sb2dfaW5mbygibm8gZGF0YWJhc2UgbmVlZHMgdG8gcmVzdG9yZSBvdXQgb2Yg JWQgZGF0YWJhc2VzIiwgbnVtX3RvdGFsX2RiKTsKKwkJcmV0dXJuIG5fZXJyb3JzX3RvdGFs OworCX0KKworCXBnX2xvZ19pbmZvKCJuZWVkcyB0byByZXN0b3JlICVkIGRhdGFiYXNlcyBv dXQgb2YgJWQgZGF0YWJhc2VzIiwgbnVtX2RiX3Jlc3RvcmUsIG51bV90b3RhbF9kYik7CisK KwkvKgorCSAqIFRpbGwgbm93LCB3ZSBtYWRlIGEgbGlzdCBvZiBkYXRhYmFzZXMsIHRob3Nl IG5lZWRzIHRvIGJlIHJlc3RvcmVkIGFmdGVyCisJICogc2tpcHBpbmcgbmFtZXMgb2YgZXhj bHVkZS1kYXRhYmFzZS4gIE5vdyB3ZSBjYW4gbGF1bmNoIHBhcmFsbGVsIHdvcmtlcnMKKwkg KiB0byByZXN0b3JlIHRoZXNlIGRhdGFiYXNlcy4KKwkgKi8KKwlmb3IgKFNpbXBsZU9pZFN0 cmluZ0xpc3RDZWxsICogZGJfY2VsbCA9IGRibmFtZV9vaWRfbGlzdC5oZWFkOworCQkgZGJf Y2VsbDsgZGJfY2VsbCA9IGRiX2NlbGwtPm5leHQpCisJeworCQljaGFyCQlzdWJkaXJwYXRo W01BWFBHUEFUSF07CisJCWNoYXIJCXN1YmRpcmRicGF0aFtNQVhQR1BBVEhdOworCQljaGFy CQlkYmZpbGVuYW1lW01BWFBHUEFUSF07CisJCWludAkJCW5fZXJyb3JzOworCisJCS8qIGln bm9yZSBkYnMgbWFya2VkIGZvciBza2lwcGluZyAqLworCQlpZiAoZGJfY2VsbC0+b2lkID09 IEludmFsaWRPaWQpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBXZSBuZWVkIHRvIHJl c2V0IG92ZXJyaWRlX2RibmFtZSBzbyB0aGF0IG9iamVjdHMgY2FuIGJlIHJlc3RvcmVkCisJ CSAqIGludG8gYWxyZWFkeSBjcmVhdGVkIGRhdGFiYXNlLiAodXNlZCB3aXRoIC1kLy0tZGJu YW1lIG9wdGlvbikKKwkJICovCisJCWlmIChvcHRzLT5jcGFyYW1zLm92ZXJyaWRlX2RibmFt ZSkKKwkJeworCQkJcGZyZWUob3B0cy0+Y3BhcmFtcy5vdmVycmlkZV9kYm5hbWUpOworCQkJ b3B0cy0+Y3BhcmFtcy5vdmVycmlkZV9kYm5hbWUgPSBOVUxMOworCQl9CisKKwkJc25wcmlu dGYoc3ViZGlyZGJwYXRoLCBNQVhQR1BBVEgsICIlcy9kYXRhYmFzZXMiLCBkdW1wZGlycGF0 aCk7CisKKwkJLyoKKwkJICogVmFsaWRhdGUgZGF0YWJhc2UgZHVtcCBmaWxlLiAgSWYgdGhl cmUgaXMgLnRhciBvciAuZG1wIGZpbGUgZXhpc3QKKwkJICogdGhlbiBjb25zaWRlciBwYXJ0 aWN1bGFyIGZpbGUsIG90aGVyd2lzZSBqdXN0IGFwcGVuZCBkYm9pZCB0byB0aGUKKwkJICog ZGF0YWJhc2VzIGZvbGRlci4KKwkJICovCisJCXNucHJpbnRmKGRiZmlsZW5hbWUsIE1BWFBH UEFUSCwgIiV1LnRhciIsIGRiX2NlbGwtPm9pZCk7CisJCWlmIChmaWxlX2V4aXN0c19pbl9k aXJlY3Rvcnkoc3ViZGlyZGJwYXRoLCBkYmZpbGVuYW1lKSkKKwkJCXNucHJpbnRmKHN1YmRp cnBhdGgsIE1BWFBHUEFUSCwgIiVzL2RhdGFiYXNlcy8ldS50YXIiLCBkdW1wZGlycGF0aCwg ZGJfY2VsbC0+b2lkKTsKKwkJZWxzZQorCQl7CisJCQlzbnByaW50ZihkYmZpbGVuYW1lLCBN QVhQR1BBVEgsICIldS5kbXAiLCBkYl9jZWxsLT5vaWQpOworCisJCQlpZiAoZmlsZV9leGlz dHNfaW5fZGlyZWN0b3J5KHN1YmRpcmRicGF0aCwgZGJmaWxlbmFtZSkpCisJCQkJc25wcmlu dGYoc3ViZGlycGF0aCwgTUFYUEdQQVRILCAiJXMvZGF0YWJhc2VzLyV1LmRtcCIsIGR1bXBk aXJwYXRoLCBkYl9jZWxsLT5vaWQpOworCQkJZWxzZQorCQkJCXNucHJpbnRmKHN1YmRpcnBh dGgsIE1BWFBHUEFUSCwgIiVzL2RhdGFiYXNlcy8ldSIsIGR1bXBkaXJwYXRoLCBkYl9jZWxs LT5vaWQpOworCQl9CisKKwkJcGdfbG9nX2luZm8oInJlc3RvcmluZyBkYXRhYmFzZSBcIiVz XCIiLCBkYl9jZWxsLT5zdHIpOworCisJCS8qIElmIGRhdGFiYXNlIGlzIGFscmVhZHkgY3Jl YXRlZCwgdGhlbiBkb24ndCBzZXQgY3JlYXRlREIgZmxhZy4gKi8KKwkJaWYgKG9wdHMtPmNw YXJhbXMuZGJuYW1lKQorCQl7CisJCQlQR2Nvbm4JICAgKnRlc3RfY29ubjsKKworCQkJdGVz dF9jb25uID0gQ29ubmVjdERhdGFiYXNlKGRiX2NlbGwtPnN0ciwgTlVMTCwgb3B0cy0+Y3Bh cmFtcy5wZ2hvc3QsCisJCQkJCQkJCQkJb3B0cy0+Y3BhcmFtcy5wZ3BvcnQsIG9wdHMtPmNw YXJhbXMudXNlcm5hbWUsIFRSSV9ERUZBVUxULAorCQkJCQkJCQkJCWZhbHNlLCBwcm9nbmFt ZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CisJCQlpZiAodGVzdF9jb25uKQorCQkJewor CQkJCVBRZmluaXNoKHRlc3RfY29ubik7CisKKwkJCQkvKiBVc2UgYWxyZWFkeSBjcmVhdGVk IGRhdGFiYXNlIGZvciBjb25uZWN0aW9uLiAqLworCQkJCW9wdHMtPmNyZWF0ZURCID0gMDsK KwkJCQlvcHRzLT5jcGFyYW1zLmRibmFtZSA9IGRiX2NlbGwtPnN0cjsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkvKiB3ZSdsbCBoYXZlIHRvIGNyZWF0ZSBpdCAqLworCQkJCW9wdHMt PmNyZWF0ZURCID0gMTsKKwkJCQlvcHRzLT5jcGFyYW1zLmRibmFtZSA9IGNvbm5lY3RlZF9k YjsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIFJlc2V0IGZsYWdzIC0gbWlnaHQgaGF2ZSBi ZWVuIHJlc2V0IGluIHBnX2JhY2t1cF9hcmNoaXZlci5jIGJ5IHRoZQorCQkgKiBwcmV2aW91 cyByZXN0b3JlLgorCQkgKi8KKwkJb3B0cy0+ZHVtcERhdGEgPSBkdW1wRGF0YTsKKwkJb3B0 cy0+ZHVtcFNjaGVtYSA9IGR1bXBTY2hlbWE7CisJCW9wdHMtPmR1bXBTdGF0aXN0aWNzID0g ZHVtcFN0YXRpc3RpY3M7CisKKwkJLyogUmVzdG9yZSBzaW5nbGUgZGF0YWJhc2UuICovCisJ CW5fZXJyb3JzID0gcmVzdG9yZV9vbmVfZGF0YWJhc2Uoc3ViZGlycGF0aCwgb3B0cywgbnVt V29ya2VycywgdHJ1ZSwgY291bnQpOworCisJCS8qIFByaW50IGEgc3VtbWFyeSBvZiBpZ25v cmVkIGVycm9ycyBkdXJpbmcgc2luZ2xlIGRhdGFiYXNlIHJlc3RvcmUuICovCisJCWlmIChu X2Vycm9ycykKKwkJeworCQkJbl9lcnJvcnNfdG90YWwgKz0gbl9lcnJvcnM7CisJCQlwZ19s b2dfd2FybmluZygiZXJyb3JzIGlnbm9yZWQgb24gZGF0YWJhc2UgXCIlc1wiIHJlc3RvcmU6 ICVkIiwgZGJfY2VsbC0+c3RyLCBuX2Vycm9ycyk7CisJCX0KKworCQljb3VudCsrOworCX0K KworCS8qIExvZyBudW1iZXIgb2YgcHJvY2Vzc2VkIGRhdGFiYXNlcy4gKi8KKwlwZ19sb2df aW5mbygibnVtYmVyIG9mIHJlc3RvcmVkIGRhdGFiYXNlcyBhcmUgJWQiLCBudW1fZGJfcmVz dG9yZSk7CisKKwkvKiBGcmVlIGRibmFtZSBhbmQgZGJvaWQgbGlzdC4gKi8KKwlzaW1wbGVf b2lkX3N0cmluZ19saXN0X2Rlc3Ryb3koJmRibmFtZV9vaWRfbGlzdCk7CisKKwlyZXR1cm4g bl9lcnJvcnNfdG90YWw7Cit9CisKKy8qCisgKiBwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFu ZHMKKyAqCisgKiBUaGlzIHdpbGwgb3BlbiBnbG9iYWwuZGF0IGZpbGUgYW5kIHdpbGwgZXhl Y3V0ZSBhbGwgZ2xvYmFsIHNxbCBjb21tYW5kcyBvbmUKKyAqIGJ5IG9uZSBzdGF0ZW1lbnQu CisgKiBTZW1pY29sb24gaXMgY29uc2lkZXJlZCBhcyBzdGF0ZW1lbnQgdGVybWluYXRvci4g IElmIG91dGZpbGUgaXMgcGFzc2VkLCB0aGVuCisgKiB0aGlzIHdpbGwgY29weSBhbGwgc3Fs IGNvbW1hbmRzIGludG8gb3V0ZmlsZSByYXRoZXIgdGhlbiBleGVjdXRpbmcgdGhlbS4KKyAq CisgKiByZXR1cm5zIHRoZSBudW1iZXIgb2YgZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgZ2xv YmFsLmRhdAorICovCitzdGF0aWMgaW50Citwcm9jZXNzX2dsb2JhbF9zcWxfY29tbWFuZHMo UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpkdW1wZGlycGF0aCwgY29uc3QgY2hhciAqb3V0 ZmlsZSkKK3sKKwljaGFyCQlnbG9iYWxfZmlsZV9wYXRoW01BWFBHUEFUSF07CisJUEdyZXN1 bHQgICAqcmVzdWx0OworCVN0cmluZ0luZm9EYXRhIHNxbHN0YXRlbWVudCwKKwkJCQl1c2Vy X2NyZWF0ZTsKKwlGSUxFCSAgICpwZmlsZTsKKwlpbnQJCQluX2Vycm9ycyA9IDA7CisKKwlz bnByaW50ZihnbG9iYWxfZmlsZV9wYXRoLCBNQVhQR1BBVEgsICIlcy9nbG9iYWwuZGF0Iiwg ZHVtcGRpcnBhdGgpOworCisJLyogT3BlbiBnbG9iYWwuZGF0IGZpbGUuICovCisJcGZpbGUg PSBmb3BlbihnbG9iYWxfZmlsZV9wYXRoLCBQR19CSU5BUllfUik7CisKKwlpZiAocGZpbGUg PT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGdsb2JhbC5kYXQgZmlsZTog XCIlc1wiIiwgZ2xvYmFsX2ZpbGVfcGF0aCk7CisKKwkvKgorCSAqIElmIG91dGZpbGUgaXMg Z2l2ZW4sIHRoZW4ganVzdCBjb3B5IGFsbCBnbG9iYWwuZGF0IGZpbGUgZGF0YSBpbnRvCisJ ICogb3V0ZmlsZS4KKwkgKi8KKwlpZiAob3V0ZmlsZSkKKwl7CisJCWNvcHlfb3JfcHJpbnRf Z2xvYmFsX2ZpbGUob3V0ZmlsZSwgcGZpbGUpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBJ bml0IHNxbHN0YXRlbWVudCB0byBhcHBlbmQgY29tbWFuZHMuICovCisJaW5pdFN0cmluZ0lu Zm8oJnNxbHN0YXRlbWVudCk7CisKKwkvKiBjcmVhdGlvbiBzdGF0ZW1lbnQgZm9yIG91ciBj dXJyZW50IHJvbGUgKi8KKwlpbml0U3RyaW5nSW5mbygmdXNlcl9jcmVhdGUpOworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJnVzZXJfY3JlYXRlLCAiQ1JFQVRFIFJPTEUgIik7CisJLyog c2hvdWxkIHVzZSBmbXRJZCBoZXJlLCBidXQgd2UgZG9uJ3Qga25vdyB0aGUgZW5jb2Rpbmcg Ki8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZ1c2VyX2NyZWF0ZSwgUFF1c2VyKGNvbm4p KTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZ1c2VyX2NyZWF0ZSwgIjsiKTsKKworCS8q IFByb2Nlc3MgZmlsZSB0aWxsIEVPRiBhbmQgZXhlY3V0ZSBzcWwgc3RhdGVtZW50cy4gKi8K Kwl3aGlsZSAocmVhZF9vbmVfc3RhdGVtZW50KCZzcWxzdGF0ZW1lbnQsIHBmaWxlKSAhPSBF T0YpCisJeworCQkvKiBkb24ndCB0cnkgdG8gY3JlYXRlIHRoZSByb2xlIHdlIGFyZSBjb25u ZWN0ZWQgYXMgKi8KKwkJaWYgKHN0cnN0cihzcWxzdGF0ZW1lbnQuZGF0YSwgdXNlcl9jcmVh dGUuZGF0YSkpCisJCQljb250aW51ZTsKKworCQlwZ19sb2dfaW5mbygiZXhlY3V0aW5nIHF1 ZXJ5OiAlcyIsIHNxbHN0YXRlbWVudC5kYXRhKTsKKwkJcmVzdWx0ID0gUFFleGVjKGNvbm4s IHNxbHN0YXRlbWVudC5kYXRhKTsKKworCQlzd2l0Y2ggKFBRcmVzdWx0U3RhdHVzKHJlc3Vs dCkpCisJCXsKKwkJCWNhc2UgUEdSRVNfQ09NTUFORF9PSzoKKwkJCWNhc2UgUEdSRVNfVFVQ TEVTX09LOgorCQkJY2FzZSBQR1JFU19FTVBUWV9RVUVSWToKKwkJCQlicmVhazsKKwkJCWRl ZmF1bHQ6CisJCQkJbl9lcnJvcnMrKzsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBl eGVjdXRlIHF1ZXJ5OiBcIiVzXCIgXG5Db21tYW5kIHdhczogXCIlc1wiIiwgUFFlcnJvck1l c3NhZ2UoY29ubiksIHNxbHN0YXRlbWVudC5kYXRhKTsKKwkJfQorCQlQUWNsZWFyKHJlc3Vs dCk7CisJfQorCisJLyogUHJpbnQgYSBzdW1tYXJ5IG9mIGlnbm9yZWQgZXJyb3JzIGR1cmlu ZyBnbG9iYWwuZGF0LiAqLworCWlmIChuX2Vycm9ycykKKwkJcGdfbG9nX3dhcm5pbmcoImVy cm9ycyBpZ25vcmVkIG9uIGdsb2JhbC5kYXQgZmlsZSByZXN0b3JlOiAlZCIsIG5fZXJyb3Jz KTsKKworCWZjbG9zZShwZmlsZSk7CisKKwlyZXR1cm4gbl9lcnJvcnM7Cit9CisKKy8qCisg KiBjb3B5X29yX3ByaW50X2dsb2JhbF9maWxlCisgKgorICogVGhpcyB3aWxsIGNvcHkgZ2xv YmFsLmRhdCBmaWxlIGludG8gb3V0IGZpbGUuICBJZiAiLSIgaXMgdXNlZCBhcyBvdXRmaWxl LAorICogdGhlbiBwcmludCBjb21tYW5kcyB0byB0aGUgc3Rkb3V0LgorICovCitzdGF0aWMg dm9pZAorY29weV9vcl9wcmludF9nbG9iYWxfZmlsZShjb25zdCBjaGFyICpvdXRmaWxlLCBG SUxFICpwZmlsZSkKK3sKKwljaGFyCQlvdXRfZmlsZV9wYXRoW01BWFBHUEFUSF07CisJRklM RQkgICAqT1BGOworCWludAkJCWM7CisKKwkvKiAiLSIgaXMgdXNlZCBmb3Igc3Rkb3V0LiAq LworCWlmIChzdHJjbXAob3V0ZmlsZSwgIi0iKSA9PSAwKQorCQlPUEYgPSBzdGRvdXQ7CisJ ZWxzZQorCXsKKwkJc25wcmludGYob3V0X2ZpbGVfcGF0aCwgTUFYUEdQQVRILCAiJXMiLCBv dXRmaWxlKTsKKwkJT1BGID0gZm9wZW4ob3V0X2ZpbGVfcGF0aCwgUEdfQklOQVJZX1cpOwor CisJCWlmIChPUEYgPT0gTlVMTCkKKwkJeworCQkJZmNsb3NlKHBmaWxlKTsKKwkJCXBnX2Zh dGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlOiBcIiVzXCIiLCBvdXRmaWxlKTsKKwkJfQorCX0K KworCS8qIEFwcGVuZCBnbG9iYWwuZGF0IGludG8gb3V0IGZpbGUgb3IgcHJpbnQgdG8gdGhl IHN0ZG91dC4gKi8KKwl3aGlsZSAoKGMgPSBmZ2V0YyhwZmlsZSkpICE9IEVPRikKKwkJZnB1 dGMoYywgT1BGKTsKKworCWZjbG9zZShwZmlsZSk7CisKKwkvKiBDbG9zZSBvdXQgZmlsZS4g Ki8KKwlpZiAoc3RyY21wKG91dGZpbGUsICItIikgIT0gMCkKKwkJZmNsb3NlKE9QRik7Cit9 CisKKy8qCisgKiBxdW90ZV9saXRlcmFsX2ludGVybmFsCisgKi8KK3N0YXRpYyBzaXplX3QK K3F1b3RlX2xpdGVyYWxfaW50ZXJuYWwoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMsIHNp emVfdCBsZW4pCit7CisJY29uc3QgY2hhciAqczsKKwljaGFyCSAgICpzYXZlZHN0ID0gZHN0 OworCisJZm9yIChzID0gc3JjOyBzIDwgc3JjICsgbGVuOyBzKyspCisJeworCQlpZiAoKnMg PT0gJ1xcJykKKwkJeworCQkJKmRzdCsrID0gRVNDQVBFX1NUUklOR19TWU5UQVg7CisJCQli cmVhazsKKwkJfQorCX0KKworCSpkc3QrKyA9ICdcJyc7CisJd2hpbGUgKGxlbi0tID4gMCkK Kwl7CisJCWlmIChTUUxfU1RSX0RPVUJMRSgqc3JjLCB0cnVlKSkKKwkJCSpkc3QrKyA9ICpz cmM7CisJCSpkc3QrKyA9ICpzcmMrKzsKKwl9CisJKmRzdCsrID0gJ1wnJzsKKworCXJldHVy biBkc3QgLSBzYXZlZHN0OworfQorCisvKgorICogcXVvdGVfbGl0ZXJhbF9jc3RyCisgKgor ICoJICByZXR1cm5zIGEgcHJvcGVybHkgcXVvdGVkIGxpdGVyYWwKKyAqIGNvcGllZCBmcm9t IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9xdW90ZS5jCisgKi8KK3N0YXRpYyBjaGFyICoKK3F1 b3RlX2xpdGVyYWxfY3N0cihjb25zdCBjaGFyICpyYXdzdHIpCit7CisJY2hhcgkgICAqcmVz dWx0OworCWludAkJCWxlbjsKKwlpbnQJCQluZXdsZW47CisKKwlsZW4gPSBzdHJsZW4ocmF3 c3RyKTsKKworCS8qIFdlIG1ha2UgYSB3b3JzdC1jYXNlIHJlc3VsdCBhcmVhOyB3YXN0aW5n IGEgbGl0dGxlIHNwYWNlIGlzIE9LICovCisJcmVzdWx0ID0gcGdfbWFsbG9jKGxlbiAqIDIg KyAzICsgMSk7CisKKwluZXdsZW4gPSBxdW90ZV9saXRlcmFsX2ludGVybmFsKHJlc3VsdCwg cmF3c3RyLCBsZW4pOworCXJlc3VsdFtuZXdsZW5dID0gJ1wwJzsKKworCXJldHVybiByZXN1 bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwgYi9z cmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggMzdkODkzZDVlNmEuLjBiYmNk YmU4NGE3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKKysr IGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0yMzcsNiArMjM3LDExIEBA IGNvbW1hbmRfZmFpbHNfbGlrZSgKIAkncGdfcmVzdG9yZTogb3B0aW9ucyAtQ1wvLS1jcmVh dGUgYW5kIC0xXC8tLXNpbmdsZS10cmFuc2FjdGlvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhl cicKICk7CiAKK2NvbW1hbmRfZmFpbHNfbGlrZSgKKwlbICdwZ19yZXN0b3JlJywgJy0tZXhj bHVkZS1kYXRhYmFzZT1mb28nLCAnLS1nbG9iYWxzLW9ubHknLCAnLWQnLCAneHh4JyBdLAor CXFyL1xRcGdfcmVzdG9yZTogZXJyb3I6IG9wdGlvbiAtLWV4Y2x1ZGUtZGF0YWJhc2UgY2Fu bm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtZ1wvLS1nbG9iYWxzLW9ubHlcRS8sCisJJ3Bn X3Jlc3RvcmU6IG9wdGlvbiAtLWV4Y2x1ZGUtZGF0YWJhc2UgY2Fubm90IGJlIHVzZWQgdG9n ZXRoZXIgd2l0aCAtZy8tLWdsb2JhbHMtb25seScpOworCiAjIGFsc28gZmFpbHMgZm9yIC1y IGFuZCAtdCwgYnV0IGl0IHNlZW1zIHBvaW50bGVzcyB0byBhZGQgbW9yZSB0ZXN0cyBmb3Ig dGhvc2UuCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcGFsbCcsICctLWV4Y2x1 ZGUtZGF0YWJhc2U9Zm9vJywgJy0tZ2xvYmFscy1vbmx5JyBdLApAQCAtMjQ0LDQgKzI0OSw4 IEBAIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAkncGdfZHVtcGFsbDogb3B0aW9uIC0tZXhjbHVk ZS1kYXRhYmFzZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIC1nLy0tZ2xvYmFscy1v bmx5JwogKTsKIAorY29tbWFuZF9mYWlsc19saWtlKAorCVsgJ3BnX2R1bXBhbGwnLCAnLS1m b3JtYXQnLCAneCcgXSwKKwlxci9cUXBnX2R1bXBhbGw6IGVycm9yOiB1bnJlY29nbml6ZWQg YXJjaGl2ZSBmb3JtYXQgIngiO1xFLywKKwkncGdfZHVtcGFsbDogdW5yZWNvZ25pemVkIGFy Y2hpdmUgZm9ybWF0Jyk7CiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --------------gUQH0rLy2TceccnJKPIksSaq Content-Type: text/x-patch; charset=UTF-8; name="v20250403-0004-Add-more-TAP-tests-for-pg_dumpall.patch" Content-Disposition: attachment; filename="v20250403-0004-Add-more-TAP-tests-for-pg_dumpall.patch" Content-Transfer-Encoding: base64 RnJvbSBkZGY0MTUyMTJlNjdkNDUwZDAwZTczNTdlMzhjNWU3ODRkNjJlZWIzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogVGh1LCAzIEFwciAyMDI1IDE0OjQ1OjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjAyNTA0MDMgNC80XSBBZGQgbW9yZSBUQVAgdGVzdHMgZm9yIHBnX2R1bXBhbGwK CkF1dGhvcjogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNvbT4K LS0tCiBzcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQgICAgICAgICB8ICAgMSArCiBzcmMv YmluL3BnX2R1bXAvdC8wMDZfcGdfZHVtcGFsbC5wbCB8IDMzMSArKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDMzMiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19kdW1wL3QvMDA2X3BnX2R1bXBhbGwucGwKCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX2R1 bXAvbWVzb24uYnVpbGQKaW5kZXggMjU5ODllOGYxNmIuLmQ4ZTllMTAxMjU0IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L21lc29uLmJ1aWxkCkBAIC0xMDIsNiArMTAyLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDAzX3BnX2R1bXBfd2l0aF9zZXJ2ZXIucGwnLAogICAgICAgJ3QvMDA0X3BnX2R1bXBfcGFy YWxsZWwucGwnLAogICAgICAgJ3QvMDA1X3BnX2R1bXBfZmlsdGVyZmlsZS5wbCcsCisgICAg ICAndC8wMDZfcGdfZHVtcGFsbC5wbCcsCiAgICAgICAndC8wMTBfZHVtcF9jb25uc3RyLnBs JywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDA2X3Bn X2R1bXBhbGwucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDZfcGdfZHVtcGFsbC5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmRmZDFhZTk5MGIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDZfcGdfZHVtcGFsbC5wbApAQCAt MCwwICsxLDMzMSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBG QVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJHRlbXBk aXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215ICRydW5fZGIgPSAn cG9zdGdyZXMnOworbXkgJHNlcCA9ICR3aW5kb3dzX29zID8gIlxcIiA6ICIvIjsKKworIyBU YWJsZXNwYWNlIGxvY2F0aW9ucyB1c2VkIGJ5ICJyZXN0b3JlX3RhYmxlc3BhY2UiIHRlc3Qg Y2FzZS4KK215ICR0YWJsZXNwYWNlMSA9ICIke3RlbXBkaXJ9JHtzZXB9dGJsMSI7CitteSAk dGFibGVzcGFjZTIgPSAiJHt0ZW1wZGlyfSR7c2VwfXRibDIiOworbWtkaXIoJHRhYmxlc3Bh Y2UxKSB8fCBkaWUgIm1rZGlyICR0YWJsZXNwYWNlMSAkISI7Citta2RpcigkdGFibGVzcGFj ZTIpIHx8IGRpZSAibWtkaXIgJHRhYmxlc3BhY2UyICQhIjsKKworIyBTY2FwZSB0YWJsZXNw YWNlIGxvY2F0aW9ucyBvbiBXaW5kb3dzLgorJHRhYmxlc3BhY2UxID0gJHdpbmRvd3Nfb3Mg PyAoJHRhYmxlc3BhY2UxID1+IHMvXFwvXFxcXC9ncikgOiAkdGFibGVzcGFjZTE7CiskdGFi bGVzcGFjZTIgPSAkd2luZG93c19vcyA/ICgkdGFibGVzcGFjZTIgPX4gcy9cXC9cXFxcL2dy KSA6ICR0YWJsZXNwYWNlMjsKKworIyBXaGVyZSBwZ19kdW1wYWxsIHdpbGwgYmUgZXhlY3V0 ZWQuCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZScp OworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3RhcnQ7CisKKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERlZmlu aXRpb24gb2YgdGhlIHBnX2R1bXBhbGwgdGVzdCBjYXNlcyB0byBydW4uCisjCisjIEVhY2gg b2YgdGhlc2UgdGVzdCBjYXNlcyBhcmUgbmFtZWQgYW5kIHRob3NlIG5hbWVzIGFyZSB1c2Vk IGZvciBmYWlsCisjIHJlcG9ydGluZyBhbmQgYWxzbyB0byBzYXZlIHRoZSBkdW1wIGFuZCBy ZXN0b3JlIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgdGhlCisjIHRlc3QgdG8gYXNzZXJ0Lgor IworIyBUaGUgInNldHVwX3NxbCIgaXMgYSBwc3FsIHZhbGlkIHNjcmlwdCB0aGF0IGNvbnRh aW5zIFNRTCBjb21tYW5kcyB0byBleGVjdXRlCisjIGJlZm9yZSBvZiBhY3R1YWxseSBleGVj dXRlIHRoZSB0ZXN0cy4gVGhlIHNldHVwcyBhcmUgYWxsIGV4ZWN1dGVkIGJlZm9yZSBvZgor IyBhbnkgdGVzdCBleGVjdXRpb24uCisjCisjIFRoZSAiZHVtcF9jbWQiIGFuZCAicmVzdG9y ZV9jbWQiIGFyZSB0aGUgY29tbWFuZHMgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiBUaGUKKyMg InJlc3RvcmVfY21kIiBtdXN0IGhhdmUgdGhlIC0tZmlsZSBmbGFnIHRvIHNhdmUgdGhlIHJl c3RvcmUgb3V0cHV0IHNvIHRoYXQgd2UKKyMgY2FuIGFzc2VydCBvbiBpdC4KKyMKKyMgVGhl ICJsaWtlIiBhbmQgInVubGlrZSIgaXMgYSByZWdleHAgdGhhdCBpcyB1c2VkIHRvIG1hdGNo IHRoZSBwZ19yZXN0b3JlCisjIG91dHB1dC4gSXQgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBv ZiB0aGVuIGZpbGxlZCBwZXIgdGVzdCBjYXNlcyBidXQgaXQgYWxzbworIyBjYW4gaGF2ZSBi b3RoLiBTZWUgImV4Y2x1ZGluZ19kYXRhYmFzZXMiIHRlc3QgY2FzZSBmb3IgZXhhbXBsZS4K K215ICVwZ2R1bXBhbGxfcnVucyA9ICgKKwlyZXN0b3JlX3JvbGVzID0+IHsKKwkJc2V0dXBf c3FsID0+ICcKKwkJQ1JFQVRFIFJPTEUgZHVtcGFsbCBXSVRIIEVOQ1JZUFRFRCBQQVNTV09S RCBcJ2FkbWluXCcgU1VQRVJVU0VSOworCQlDUkVBVEUgUk9MRSBkdW1wYWxsMiBXSVRIIFJF UExJQ0FUSU9OIENPTk5FQ1RJT04gTElNSVQgMTA7JywKKwkJZHVtcF9jbWQgPT4gWworCQkJ J3BnX2R1bXBhbGwnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSctLWZp bGUnID0+ICIkdGVtcGRpci9yZXN0b3JlX3JvbGVzIiwKKwkJXSwKKwkJcmVzdG9yZV9jbWQg PT4gWworCQkJJ3BnX3Jlc3RvcmUnLCAnLUMnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0 b3J5JywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRpci9yZXN0b3JlX3JvbGVzLnNxbCIsCisJ CQkiJHRlbXBkaXIvcmVzdG9yZV9yb2xlcyIsCisJCV0sCisJCWxpa2UgPT4gcXIvCisJCQle XHMqXFFDUkVBVEUgUk9MRSBkdW1wYWxsO1xFXHMqXG4KKwkJCVxzKlxRQUxURVIgUk9MRSBk dW1wYWxsIFdJVEggU1VQRVJVU0VSIElOSEVSSVQgTk9DUkVBVEVST0xFIE5PQ1JFQVRFREIg Tk9MT0dJTiBOT1JFUExJQ0FUSU9OIE5PQllQQVNTUkxTIFBBU1NXT1JEICdTQ1JBTS1TSEEt MjU2XEUKKwkJCVteJ10rJztccypcbgorCQkJXHMqXFFDUkVBVEUgUk9MRSBkdW1wYWxsMjtc RQorCQkJXHMqXFFBTFRFUiBST0xFIGR1bXBhbGwyIFdJVEggTk9TVVBFUlVTRVIgSU5IRVJJ VCBOT0NSRUFURVJPTEUgTk9DUkVBVEVEQiBOT0xPR0lOIFJFUExJQ0FUSU9OIE5PQllQQVNT UkxTIENPTk5FQ1RJT04gTElNSVQgMTA7XEUKKwkJL3htCisJfSwKKworCXJlc3RvcmVfdGFi bGVzcGFjZSA9PiB7CisJCXNldHVwX3NxbCA9PiAiCisJCUNSRUFURSBST0xFIHRhcDsKKwkJ Q1JFQVRFIFRBQkxFU1BBQ0UgdGJsMSBPV05FUiB0YXAgTE9DQVRJT04gJyR0YWJsZXNwYWNl MSc7CisJCUNSRUFURSBUQUJMRVNQQUNFIHRibDIgT1dORVIgdGFwIExPQ0FUSU9OICckdGFi bGVzcGFjZTInIFdJVEggKHNlcV9wYWdlX2Nvc3Q9MS4wKTsiLAorCQlkdW1wX2NtZCA9PiBb CisJCQkncGdfZHVtcGFsbCcsCisJCQknLS1mb3JtYXQnID0+ICdkaXJlY3RvcnknLAorCQkJ Jy0tZmlsZScgPT4gIiR0ZW1wZGlyL3Jlc3RvcmVfdGFibGVzcGFjZSIsCisJCV0sCisJCXJl c3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywgJy1DJywKKwkJCSctLWZvcm1hdCcg PT4gJ2RpcmVjdG9yeScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvcmVzdG9yZV90YWJs ZXNwYWNlLnNxbCIsCisJCQkiJHRlbXBkaXIvcmVzdG9yZV90YWJsZXNwYWNlIiwKKwkJXSwK KwkJIyBNYXRjaCAiRSIgYXMgb3B0aW9uYWwgc2luY2UgaXQgaXMgYWRkZWQgb24gTE9DQVRJ T04gd2hlbiBydW5uaW5nIG9uCisJCSMgV2luZG93cy4KKwkJbGlrZSA9PiBxci9eCisJCQlc blxRQ1JFQVRFIFRBQkxFU1BBQ0UgdGJsMSBPV05FUiB0YXAgTE9DQVRJT04gXEUoPzpFKT9c USckdGFibGVzcGFjZTEnO1xFCisJCQlcblxRQ1JFQVRFIFRBQkxFU1BBQ0UgdGJsMiBPV05F UiB0YXAgTE9DQVRJT04gXEUoPzpFKT9cUSckdGFibGVzcGFjZTInO1xFCisJCQlcblxRQUxU RVIgVEFCTEVTUEFDRSB0YmwyIFNFVCAoc2VxX3BhZ2VfY29zdD0xLjApO1xFCisJCS94bSwK Kwl9LAorCisJcmVzdG9yZV9ncmFudHMgPT4geworCQlzZXR1cF9zcWwgPT4gIgorCQlDUkVB VEUgREFUQUJBU0UgdGFwZ3JhbnRzZGI7CisJCUNSRUFURSBTQ0hFTUEgcHJpdmF0ZTsKKwkJ Q1JFQVRFIFNFUVVFTkNFIHNlcmlhbCBTVEFSVCAxMDE7CisJCUNSRUFURSBGVU5DVElPTiBm bigpIFJFVFVSTlMgdm9pZCBBUyBcJFwkCisJCUJFR0lOCisJCUVORDsKKwkJXCRcJCBMQU5H VUFHRSBwbHBnc3FsOworCQlDUkVBVEUgUk9MRSBzdXBlcjsKKwkJQ1JFQVRFIFJPTEUgZ3Jh bnQxOworCQlDUkVBVEUgUk9MRSBncmFudDI7CisJCUNSRUFURSBST0xFIGdyYW50MzsKKwkJ Q1JFQVRFIFJPTEUgZ3JhbnQ0OworCQlDUkVBVEUgUk9MRSBncmFudDU7CisJCUNSRUFURSBS T0xFIGdyYW50NjsKKwkJQ1JFQVRFIFJPTEUgZ3JhbnQ3OworCQlDUkVBVEUgUk9MRSBncmFu dDg7CisKKwkJQ1JFQVRFIFRBQkxFIHQgKGlkIGludCk7CisKKwkJR1JBTlQgU0VMRUNUIE9O IFRBQkxFIHQgVE8gZ3JhbnQxOworCQlHUkFOVCBJTlNFUlQgT04gVEFCTEUgdCBUTyBncmFu dDI7CisJCUdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIFRBQkxFIHQgdG8gZ3JhbnQzOworCQlH UkFOVCBDT05ORUNULCBDUkVBVEUgT04gREFUQUJBU0UgdGFwZ3JhbnRzZGIgVE8gZ3JhbnQ0 OworCQlHUkFOVCBVU0FHRSwgQ1JFQVRFIE9OIFNDSEVNQSBwcml2YXRlIFRPIGdyYW50NTsK KwkJR1JBTlQgVVNBR0UsIFNFTEVDVCwgVVBEQVRFIE9OIFNFUVVFTkNFIHNlcmlhbCBUTyBn cmFudDY7CisJCUdSQU5UIHN1cGVyIFRPIGdyYW50NzsKKwkJR1JBTlQgRVhFQ1VURSBPTiBG VU5DVElPTiBmbigpIFRPIGdyYW50ODsKKwkJIiwKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3Bn X2R1bXBhbGwnLAorCQkJJy0tZm9ybWF0JyA9PiAnZGlyZWN0b3J5JywKKwkJCSctLWZpbGUn ID0+ICIkdGVtcGRpci9yZXN0b3JlX2dyYW50cyIsCisJCV0sCisJCXJlc3RvcmVfY21kID0+ IFsKKwkJCSdwZ19yZXN0b3JlJywgJy1DJywKKwkJCSctLWZvcm1hdCcgPT4gJ2RpcmVjdG9y eScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvcmVzdG9yZV9ncmFudHMuc3FsIiwKKwkJ CSIkdGVtcGRpci9yZXN0b3JlX2dyYW50cyIsCisJCV0sCisJCWxpa2UgPT4gcXIvXgorCQkJ XG5cUUdSQU5UIHN1cGVyIFRPIGdyYW50NyBXSVRIIElOSEVSSVQgVFJVRSBHUkFOVEVEIEJZ XEUKKwkJCSguKlxuKSoKKwkJCVxuXFFHUkFOVCBBTEwgT04gU0NIRU1BIHByaXZhdGUgVE8g Z3JhbnQ1O1xFCisJCQkoLipcbikqCisJCQlcblxRR1JBTlQgQUxMIE9OIEZVTkNUSU9OIHB1 YmxpYy5mbigpIFRPIGdyYW50ODtcRQorCQkJKC4qXG4pKgorCQkJXG5cUUdSQU5UIEFMTCBP TiBTRVFVRU5DRSBwdWJsaWMuc2VyaWFsIFRPIGdyYW50NjtcRQorCQkJKC4qXG4pKgorCQkJ XG5cUUdSQU5UIFNFTEVDVCBPTiBUQUJMRSBwdWJsaWMudCBUTyBncmFudDE7XEUKKwkJCVxu XFFHUkFOVCBJTlNFUlQgT04gVEFCTEUgcHVibGljLnQgVE8gZ3JhbnQyO1xFCisJCQlcblxR R1JBTlQgQUxMIE9OIFRBQkxFIHB1YmxpYy50IFRPIGdyYW50MztcRQorCQkJKC4qXG4pKgor CQkJXG5cUUdSQU5UIENSRUFURSxDT05ORUNUIE9OIERBVEFCQVNFIHRhcGdyYW50c2RiIFRP IGdyYW50NDtcRQorCQkveG0sCisJfSwKKworCWV4Y2x1ZGluZ19kYXRhYmFzZXMgPT4gewor CQlzZXR1cF9zcWwgPT4gJ0NSRUFURSBEQVRBQkFTRSBkYjE7CisJCVxjIGRiMQorCQlDUkVB VEUgVEFCTEUgdDEgKGlkIGludCk7CisJCUNSRUFURSBUQUJMRSB0MiAoaWQgaW50KTsKKwor CQlDUkVBVEUgREFUQUJBU0UgZGIyOworCQlcYyBkYjIKKwkJQ1JFQVRFIFRBQkxFIHQzIChp ZCBpbnQpOworCQlDUkVBVEUgVEFCTEUgdDQgKGlkIGludCk7CisKKwkJQ1JFQVRFIERBVEFC QVNFIGRiZXgzOworCQlcYyBkYmV4MworCQlDUkVBVEUgVEFCTEUgdDUgKGlkIGludCk7CisJ CUNSRUFURSBUQUJMRSB0NiAoaWQgaW50KTsKKworCQlDUkVBVEUgREFUQUJBU0UgZGJleDQ7 CisJCVxjIGRiZXg0CisJCUNSRUFURSBUQUJMRSB0NyAoaWQgaW50KTsKKwkJQ1JFQVRFIFRB QkxFIHQ4IChpZCBpbnQpOworCisJCUNSRUFURSBEQVRBQkFTRSBkYjU7CisJCVxjIGRiNQor CQlDUkVBVEUgVEFCTEUgdDkgKGlkIGludCk7CisJCUNSRUFURSBUQUJMRSB0MTAgKGlkIGlu dCk7CisJCScsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wYWxsJywKKwkJCSctLWZv cm1hdCcgPT4gJ2RpcmVjdG9yeScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvZXhjbHVk aW5nX2RhdGFiYXNlcyIsCisJCQknLS1leGNsdWRlLWRhdGFiYXNlJyA9PiAnZGJleConLAor CQldLAorCQlyZXN0b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsICctQycsCisJCQkn LS1mb3JtYXQnID0+ICdkaXJlY3RvcnknLAorCQkJJy0tZmlsZScgPT4gIiR0ZW1wZGlyL2V4 Y2x1ZGluZ19kYXRhYmFzZXMuc3FsIiwKKwkJCSctLWV4Y2x1ZGUtZGF0YWJhc2UnID0+ICdk YjUnLAorCQkJIiR0ZW1wZGlyL2V4Y2x1ZGluZ19kYXRhYmFzZXMiLAorCQldLAorCQlsaWtl ID0+IHFyL14KKwkJCVxuXFFDUkVBVEUgREFUQUJBU0UgZGIxXEUKKwkJCSguKlxuKSoKKwkJ CVxuXFFDUkVBVEUgVEFCTEUgcHVibGljLnQxIChcRQorCQkJKC4qXG4pKgorCQkJXG5cUUNS RUFURSBUQUJMRSBwdWJsaWMudDIgKFxFCisJCQkoLipcbikqCisJCQlcblxRQ1JFQVRFIERB VEFCQVNFIGRiMlxFCisJCQkoLipcbikqCisJCQlcblxRQ1JFQVRFIFRBQkxFIHB1YmxpYy50 MyAoXEUKKwkJCSguKlxuKSoKKwkJCVxuXFFDUkVBVEUgVEFCTEUgcHVibGljLnQ0ICgveG0s CisJCXVubGlrZSA9PiBxci9eCisJCQlcblxRQ1JFQVRFIERBVEFCQVNFIGRiM1xFCisJCQko LipcbikqCisJCQlcblxRQ1JFQVRFIFRBQkxFIHB1YmxpYy50NSAoXEUKKwkJCSguKlxuKSoK KwkJCVxuXFFDUkVBVEUgVEFCTEUgcHVibGljLnQ2IChcRQorCQkJKC4qXG4pKgorCQkJXG5c UUNSRUFURSBEQVRBQkFTRSBkYjRcRQorCQkJKC4qXG4pKgorCQkJXG5cUUNSRUFURSBUQUJM RSBwdWJsaWMudDcgKFxFCisJCQkoLipcbikqCisJCQlcblxRQ1JFQVRFIFRBQkxFIHB1Ymxp Yy50OCAoXEUKKwkJCVxuXFFDUkVBVEUgREFUQUJBU0UgZGI1XEUKKwkJCSguKlxuKSoKKwkJ CVxuXFFDUkVBVEUgVEFCTEUgcHVibGljLnQ5IChcRQorCQkJKC4qXG4pKgorCQkJXG5cUUNS RUFURSBUQUJMRSBwdWJsaWMudDEwIChcRQorCQkveG0sCisJfSwKKworCWZvcm1hdF9kaXJl Y3RvcnkgPT4geworCQlzZXR1cF9zcWwgPT4KKwkJICAnQ1JFQVRFIFRBQkxFIGZvcm1hdF9k aXJlY3RvcnkoYSBpbnQsIGIgYm9vbGVhbiwgYyB0ZXh0KTsnLAorCQlkdW1wX2NtZCA9PiBb CisJCQkncGdfZHVtcGFsbCcsCisJCQknLS1mb3JtYXQnID0+ICdkaXJlY3RvcnknLAorCQkJ Jy0tZmlsZScgPT4gIiR0ZW1wZGlyL2Zvcm1hdF9kaXJlY3RvcnkiLAorCQldLAorCQlyZXN0 b3JlX2NtZCA9PiBbCisJCQkncGdfcmVzdG9yZScsICctQycsCisJCQknLS1mb3JtYXQnID0+ ICdkaXJlY3RvcnknLAorCQkJJy0tZmlsZScgPT4gIiR0ZW1wZGlyL2Zvcm1hdF9kaXJlY3Rv cnkuc3FsIiwKKwkJCSIkdGVtcGRpci9mb3JtYXRfZGlyZWN0b3J5IiwKKwkJXSwKKwkJbGlr ZSA9PiBxci9eXG5cUUNSRUFURSBUQUJMRSBwdWJsaWMuZm9ybWF0X2RpcmVjdG9yeSAoL3ht CisJfSwKKworCWZvcm1hdF90YXIgPT4geworCQlzZXR1cF9zcWwgPT4gJ0NSRUFURSBUQUJM RSBmb3JtYXRfdGFyKGlkIGludCk7JywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXBh bGwnLAorCQkJJy0tZm9ybWF0JyA9PiAndGFyJywKKwkJCSctLWZpbGUnID0+ICIkdGVtcGRp ci9mb3JtYXRfdGFyIiwKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3Rv cmUnLCAnLUMnLAorCQkJJy0tZm9ybWF0JyA9PiAndGFyJywKKwkJCSctLWZpbGUnID0+ICIk dGVtcGRpci9mb3JtYXRfdGFyLnNxbCIsCisJCQkiJHRlbXBkaXIvZm9ybWF0X3RhciIsCisJ CV0sCisJCWxpa2UgPT4gcXIvXlxuXFFDUkVBVEUgVEFCTEUgcHVibGljLmZvcm1hdF90YXIg KC94bQorCX0sCisKKwlmb3JtYXRfY3VzdG9tID0+IHsKKwkJc2V0dXBfc3FsID0+ICdDUkVB VEUgVEFCTEUgZm9ybWF0X2N1c3RvbShhIGludCwgYiBib29sZWFuLCBjIHRleHQpOycsCisJ CWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wYWxsJywKKwkJCSctLWZvcm1hdCcgPT4gJ2N1 c3RvbScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvZm9ybWF0X2N1c3RvbSIsCisJCV0s CisJCXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywgJy1DJywKKwkJCSctLWZv cm1hdCcgPT4gJ2N1c3RvbScsCisJCQknLS1maWxlJyA9PiAiJHRlbXBkaXIvZm9ybWF0X2N1 c3RvbS5zcWwiLAorCQkJIiR0ZW1wZGlyL2Zvcm1hdF9jdXN0b20iLAorCQldLAorCQlsaWtl ID0+IHFyL14gXG5cUUNSRUFURSBUQUJMRSBwdWJsaWMuZm9ybWF0X2N1c3RvbSAoL3htCisJ fSwpOworCisKKyMgRmlyc3QgZXhlY3V0ZSB0aGUgc2V0dXBfc3FsCitmb3JlYWNoIG15ICRy dW4gKHNvcnQga2V5cyAlcGdkdW1wYWxsX3J1bnMpCit7CisJaWYgKCRwZ2R1bXBhbGxfcnVu c3skcnVufS0+e3NldHVwX3NxbH0pCisJeworCQkkbm9kZS0+c2FmZV9wc3FsKCRydW5fZGIs ICRwZ2R1bXBhbGxfcnVuc3skcnVufS0+e3NldHVwX3NxbH0pOworCX0KK30KKworIyBFeGVj dXRlIHRoZSB0ZXN0cworZm9yZWFjaCBteSAkcnVuIChzb3J0IGtleXMgJXBnZHVtcGFsbF9y dW5zKQoreworCSMgQ3JlYXRlIGEgbmV3IHRhcmdldCBjbHVzdGVyIHRvIHBnX3Jlc3RvcmUg ZWFjaCB0ZXN0IGNhc2UgcnVuIHNvIHRoYXQgd2UKKwkjIGRvbid0IG5lZWQgdG8gdGFrZSBj YXJlIG9mIHRoZSBjbGVhbnVwIGZyb20gdGhlIHRhcmdldCBjbHVzdGVyIGFmdGVyIGVhY2gK KwkjIHJ1bi4KKwlteSAkdGFyZ2V0X25vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoInRhcmdldF8kcnVuIik7CisJJHRhcmdldF9ub2RlLT5pbml0OworCSR0YXJnZXRf bm9kZS0+c3RhcnQ7CisKKwkjIER1bXBhbGwgZnJvbSBub2RlIGNsdXN0ZXIuCisJJG5vZGUt PmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBhbGxfcnVuc3skcnVufS0+e2R1bXBfY21kfSB9LAor CQkiJHJ1bjogcGdfZHVtcGFsbCBydW5zIik7CisKKwkjIFJlc3RvcmUgdGhlIGR1bXAgb24g InRhcmdldF9ub2RlIiBjbHVzdGVyLgorCW15IEByZXN0b3JlX2NtZCA9ICgKKwkJQHsgJHBn ZHVtcGFsbF9ydW5zeyRydW59LT57cmVzdG9yZV9jbWR9IH0sCisJCSctLWhvc3QnLCAkdGFy Z2V0X25vZGUtPmhvc3QsICctLXBvcnQnLCAkdGFyZ2V0X25vZGUtPnBvcnQpOworCisJbXkg KCRzdGRvdXQsICRzdGRlcnIpID0gcnVuX2NvbW1hbmQoXEByZXN0b3JlX2NtZCk7CisKKwkj IHBnX3Jlc3RvcmUgLS1maWxlIG91dHB1dCBmaWxlLgorCW15ICRvdXRwdXRfZmlsZSA9IHNs dXJwX2ZpbGUoIiR0ZW1wZGlyLyR7cnVufS5zcWwiKTsKKworCWlmICghKCRwZ2R1bXBhbGxf cnVuc3skcnVufS0+e2xpa2V9KSAmJiAhKCRwZ2R1bXBhbGxfcnVuc3skcnVufS0+e3VubGlr ZX0pKQorCXsKKwkJZGllICJtaXNzaW5nIFwibGlrZVwiIG9yIFwidW5saWtlXCIgaW4gdGVz dCBcIiRydW5cIiI7CisJfQorCisJaWYgKCRwZ2R1bXBhbGxfcnVuc3skcnVufS0+e2xpa2V9 KQorCXsKKwkJbGlrZSgkb3V0cHV0X2ZpbGUsICRwZ2R1bXBhbGxfcnVuc3skcnVufS0+e2xp a2V9LCAic2hvdWxkIGR1bXAgJHJ1biIpOworCX0KKworCWlmICgkcGdkdW1wYWxsX3J1bnN7 JHJ1bn0tPnt1bmxpa2V9KQorCXsKKwkJdW5saWtlKAorCQkJJG91dHB1dF9maWxlLAorCQkJ JHBnZHVtcGFsbF9ydW5zeyRydW59LT57dW5saWtlfSwKKwkJCSJzaG91bGQgbm90IGR1bXAg JHJ1biIpOworCX0KK30KKworJG5vZGUtPnN0b3AoJ2Zhc3QnKTsKKworZG9uZV90ZXN0aW5n KCk7Ci0tIAoyLjM0LjEKCg== --------------gUQH0rLy2TceccnJKPIksSaq--