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.96) (envelope-from ) id 1vyUNE-0009dT-2u for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 12:33:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vyUNB-004wQt-2L for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Mar 2026 12:33:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vyUNA-004wQj-33 for pgsql-hackers@lists.postgresql.org; Fri, 06 Mar 2026 12:33:41 +0000 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vyUN5-00000000lnY-45O6 for pgsql-hackers@postgresql.org; Fri, 06 Mar 2026 12:33:40 +0000 Received: by mail-qk1-x741.google.com with SMTP id af79cd13be357-8cb420fbb5dso550769785a.3 for ; Fri, 06 Mar 2026 04:33:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1772800414; x=1773405214; darn=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=Pc2ti1J9U8/A46zPK/de4lQUBSjNveSZRwY/nw+KhLU=; b=ywpEyRsVQ7kdbaAFfrsNdZEzibLDtuilnb2cHLNftnXbaxVYRUSWbL7oRsJLgUR4k+ CEOv0iKSYqBp6Cjpb49W8sZQA7t5ZdxU3JDIUZ/WOcsVITkLr2bfw2EgXHTgOdR7Sp1r WFdMeAfr2zDrO50FPbJsTlkAgAZfN+Uu5UNmcrsaJXBmTslpQC6LIAgQHkLoQ6OvXDVX gifBlxwLhngKCRH/2h3arFCWOw3lwoNolHgnfewfGrsv7ESMGHRj5LwvP+paYjlr8Ey5 vQc6c8sce2Lpq49mj3+41H8bUxfPt3RQtJ9vJ5vzDqjYqEgIUtHHYputQv3HJdhr23wR 9ZAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772800414; x=1773405214; h=in-reply-to:autocrypt:content-language:from:references:cc:to :subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pc2ti1J9U8/A46zPK/de4lQUBSjNveSZRwY/nw+KhLU=; b=FG5FcHTIrAcMWHDhqz+CSihp/dizh7584uKOZcL4O0zJsm3vp7qPL58++BioTJRN/f qkD5FZ8cpQdZoS0XEMYcI9wmAos/AKD19UdzvRiuPNaWe2xLb2/lwqaMHHZyc6iq7W5Z RNWvnExQojNEr7lDr1nhGiK/3A0Ga9GNRz/GXjLVsmuHViLjdSMrxGuukq+2OSSU6yvG lj9apTbShqoKofJ9x3xTE4wc75nZkoSr+mbIaeRVlIfMS3WEjtyvTIutwBzRPAIf7kNE 57g41JiQbJNQM1p8g2Ji7vH3nvHjA34NNBDFm9g/Ef758wogHc0ee3f6lsweRYlufXkx HOMA== X-Forwarded-Encrypted: i=1; AJvYcCWJRZIPFtwGWl9IF/GgH567pK1W6CmdFmEKkD1NLRduTQHNvZqlfMUIdvSlM6XNUWAYcV4wUwsWUOHxLfpq@postgresql.org X-Gm-Message-State: AOJu0YyxrMOMT6sEiFCByAVsvvGPTyXnuefgl5TxkxhdFGnz3shzn+z4 I6CFHV6SKSPsC6zgyolX3I2yY4uQ6q54E8/4C42N3q4GFJ5p3wz7Qk2iUStlEPRSEmY= X-Gm-Gg: ATEYQzyOOUbet+JYD3aa4pJbbPbOb5ZQ7DWuv7h0P4iyAnWHpN7vjrec7nokr6XXy/0 9FQKfj0sJuwzUBrmWIhAImVg/F5yIf2zpBRERN4Uuk9WT2L29F1XY5mMHV+Ke6bK7zsqMZqMNSK m18PEROor3/fVmQsWo7St8uT+ywACoydfiOZaICtYKssXEfztZfQD9NKTnNUJxIK3r0VNJPSJc2 2D1+pDWPARrW8Gq3NrezMqVRNEeUDxfe1hUUXhjpXsEFTzPY18QZQp6cvwxTkuywdAnPFw9adzy rvXEG4AR2xmujtTUxYjL+VXeNTE+49zWmrldOvmNCyrAu4zTfkuge+RBA7SBkctn86aFj5HtQ6J dVu1kfw678VvCi7W8dvrSUGnDmF67Mhzjfot5cIm10IwciGCwhU2aJ1BDjkeUcznpmwHgGuqGZD gNYvXrxrx7WFGTHASZ5h9znsYYPi5VBw== X-Received: by 2002:a05:620a:198d:b0:8c7:f79:bd7b with SMTP id af79cd13be357-8cd6d32584amr218436685a.9.1772800414345; Fri, 06 Mar 2026 04:33:34 -0800 (PST) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id af79cd13be357-8cd6f4a2fdasm92017885a.17.2026.03.06.04.33.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Mar 2026 04:33:33 -0800 (PST) Content-Type: multipart/mixed; boundary="------------gRJnBR6TlUOqXKruLynssN0S" Message-ID: <57db4b6e-51ba-4984-9343-bc62a3ee0b7c@dunslane.net> Date: Fri, 6 Mar 2026 07:33:31 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Emitting JSON to file using COPY TO To: jian he Cc: Joe Conway , Junwang Zhao , Florents Tselai , "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Davin Shearer , PostgreSQL-development References: <74d3b4e2-d201-489d-9b9a-1a6d0eb492a6@dunslane.net> <6cbbf7f3-da4a-4201-98a6-4347a3c35db0@joeconway.com> <8154f8e2-7d9c-442f-a7cb-a5caf38f6a12@dunslane.net> 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 AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= 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. --------------gRJnBR6TlUOqXKruLynssN0S Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2026-03-06 Fr 4:38 AM, jian he wrote: > COPY (SELECT 1 UNION ALL SELECT 2) TO stdout WITH (format json); > > still fails with v25-0002, json_tupledesc_ready is not helpful. > I think I figured it out. We need to use BlessTupleDesc in BeginCopyTo. > Then let slot->tts_tupleDescriptor point to cstate->queryDesc->tupDesc > in CopyToJsonOneRow > > * CSV, text and json formats share the same TextLike routines except for the > * one-row callback. > This comment is not useful, I want to delete it. > > CopyToTextLikeStart > + /* JSON-specific initialization */ > + if (cstate->opts.format == COPY_FORMAT_JSON) > + { > + MemoryContext oldcxt; > + > + /* Allocate reusable JSON output buffer in long-lived context */ > + oldcxt = MemoryContextSwitchTo(cstate->copycontext); > + initStringInfo(&cstate->json_buf); > + MemoryContextSwitchTo(oldcxt); > + } > We ca just add > > cstate->json_buf = makeStringInfo(); > > in BeginCopyTo. > > v25-0004-COPY-TO-JSON-build-JSON-per-column-support-colum.patch > added several fields to the CopyToStateData. > Actually, there is a simpler way (construct a new Tupdesc and let > composite_to_json do the job), please see my v26-0004. > Yeah, I got some crashes using this, but reworked it a bit, and all now seems good. I was apparently mistaken about the supposed speedup, but the performance is steady. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------gRJnBR6TlUOqXKruLynssN0S Content-Type: text/x-patch; charset=UTF-8; name="v27-0001-introduce-CopyFormat-refactor-CopyFormatOptions.patch" Content-Disposition: attachment; filename*0="v27-0001-introduce-CopyFormat-refactor-CopyFormatOptions.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBlOTRjYzJkODU0MzE1M2Q0YWI2NzFiMzNlNDQ5NGQ0NDI4ZWYwMDVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjEgSmFuIDIwMjYgMTg6Mzg6MjQgKzA4MDAKU3ViamVjdDog W1BBVENIIHYyNyAxLzRdIGludHJvZHVjZSBDb3B5Rm9ybWF0IHJlZmFjdG9yIENvcHlGb3Jt YXRPcHRpb25zCgpDdXJyZW50bHksIENPUFkgY29tbWFuZCBmb3JtYXQgaXMgZGV0ZXJtaW5l ZCBieSB0d28gYm9vbGVhbnMgKGJpbmFyeSwgY3N2X21vZGUpCmZpZWxkcyBpbiBDb3B5Rm9y bWF0T3B0aW9ucyBUaGlzIGFwcHJvYWNoLCB3aGlsZSBmdW5jdGlvbmFsLCBpc24ndCBpZGVh bCBmb3IKZnV0dXJlIG90aGVyIGltcGxlbWVudCBvdGhlciBmb3JtYXQuCgpUbyBzaW1wbGlm eSBhZGRpbmcgbmV3IGZvcm1hdHMsIHdlJ3ZlIGludHJvZHVjZWQgYW4gZW51bSBDb3B5Rm9y bWF0LiBUaGlzIG1ha2VzCnRoZSBjb2RlIGNsZWFuZXIgYW5kIG1vcmUgbWFpbnRhaW5hYmxl LCBhbGxvd2luZyBmb3IgZWFzaWVyIGludGVncmF0aW9uIG9mCmFkZGl0aW9uYWwgZm9ybWF0 cyBkb3duIHRoZSBsaW5lLgoKVGhlIENvcHlGb3JtYXQgZW51bSB3YXMgb3JpZ2luYWxseSBj b250cmlidXRlZCBieSBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9yZz4sCmxhdGVy IHJlZmFjdG9yZWQgYnkgSmlhbiBIZSB0byBhZGRyZXNzIHZhcmlvdXMgaXNzdWVzLgoKZGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lp MnpnVDA3dDNkLXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCmRpc2N1c3Np b246IGh0dHBzOi8vcG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMz MDJjMzRjQGpvZWNvbndheS5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMg ICAgICAgICAgfCA1MCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICAgfCAgNiArKy0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgfCAgNyArKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYyAgICAgICAgfCAgOCArKy0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5o ICAgICAgICAgIHwgMTMgKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IDYzYjg2ODAyYmEyLi4yZjQ2 YmU1MTZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTc2LDYgKzU3Niw4IEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCW9wdHNfb3V0ID0gcGFsbG9j MF9vYmplY3QoQ29weUZvcm1hdE9wdGlvbnMpOwogCiAJb3B0c19vdXQtPmZpbGVfZW5jb2Rp bmcgPSAtMTsKKwkvKiBkZWZhdWx0IGZvcm1hdCAqLworCW9wdHNfb3V0LT5mb3JtYXQgPSBD T1BZX0ZPUk1BVF9URVhUOwogCiAJLyogRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHN0YXRl bWVudCBub2RlIHRyZWUgKi8KIAlmb3JlYWNoKG9wdGlvbiwgb3B0aW9ucykKQEAgLTU5MCwx MSArNTkyLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAJCQlmb3JtYXRf c3BlY2lmaWVkID0gdHJ1ZTsKIAkJCWlmIChzdHJjbXAoZm10LCAidGV4dCIpID09IDApCi0J CQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID0gQ09Q WV9GT1JNQVRfVEVYVDsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQot CQkJCW9wdHNfb3V0LT5jc3ZfbW9kZSA9IHRydWU7CisJCQkJb3B0c19vdXQtPmZvcm1hdCA9 IENPUFlfRk9STUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9 PSAwKQotCQkJCW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5mb3Jt YXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAt NzU0LDMxICs3NTYsMzEgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMgKG11c3QgZG8gdGhlc2Ug dGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQogCSAqLwotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlpZiAob3B0c19vdXQtPmZvcm1h dCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlbGltKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJLyotIHRy YW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJS T1IgKi8KIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIs ICJERUxJTUlURVIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5iaW5hcnkgJiYgb3B0c19vdXQt Pm51bGxfcHJpbnQpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklO QVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3Bl Y2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAotCWlmIChvcHRzX291dC0+ YmluYXJ5ICYmIG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVG QVVMVCIpKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAqLwog CWlmICghb3B0c19vdXQtPmRlbGltKQotCQlvcHRzX291dC0+ZGVsaW0gPSBvcHRzX291dC0+ Y3N2X21vZGUgPyAiLCIgOiAiXHQiOworCQlvcHRzX291dC0+ZGVsaW0gPSAob3B0c19vdXQt PmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiwiIDogIlx0IjsKIAogCWlmICghb3B0 c19vdXQtPm51bGxfcHJpbnQpCi0JCW9wdHNfb3V0LT5udWxsX3ByaW50ID0gb3B0c19vdXQt PmNzdl9tb2RlID8gIiIgOiAiXFxOIjsKKwkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpID8gIiIgOiAiXFxOIjsKIAlvcHRz X291dC0+bnVsbF9wcmludF9sZW4gPSBzdHJsZW4ob3B0c19vdXQtPm51bGxfcHJpbnQpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBD T1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9wdHNfb3V0LT5xdW90ZSkKIAkJCW9wdHNf b3V0LT5xdW90ZSA9ICJcIiI7CkBAIC04MjYsNyArODI4LDcgQEAgUHJvY2Vzc0NvcHlPcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUtcHJvb2ZpbmcuICBMaWtld2lz ZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9jdGFsCiAJICogZGlnaXRz IGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21v ZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYKIAkJ c3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAogCQkJ ICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApAQCAt ODM0LDQzICs4MzYsNDMgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0 c19vdXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0 LT5iaW5hcnkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNF KQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRz X291dC0+aGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFMU0UpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkv Ki0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLwogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBt b2RlIiwgIkhFQURFUiIpKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwotCWlmICghb3B0c19v dXQtPmNzdl9tb2RlICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBOVUxMKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVM TCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENP UFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1 aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2Rl ICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEpCisJaWYgKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVzdCBiZSBhIHNpbmdsZSBv bmUtYnl0ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBv cHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlmIChvcHRzX291 dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0g b3B0c19vdXQtPnF1b3RlWzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVs aW1pdGVyIGFuZCBxdW90ZSBtdXN0IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBl c2NhcGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBl ICE9IE5VTEwpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYm IG9wdHNfb3V0LT5lc2NhcGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9y OiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJ CQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJFU0NBUEUiKSkpOwog Ci0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPmVzY2FwZSkg IT0gMSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgc3Ry bGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNP UFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIikpKTsKIAog CS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRzX291dC0+Y3N2X21vZGUgJiYg KG9wdHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkK KwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgKG9wdHNfb3V0 LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9yY2VfcXVvdGVfYWxsKSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCkBAIC04ODQsOCArODg2LDggQEAgUHJvY2Vzc0NvcHlPcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIEZST00iKSkpOwogCiAJLyogQ2hl Y2sgZm9yY2Vfbm90bnVsbCAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2RlICYmIChvcHRz X291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwKLQkJCQkJCQkJb3B0c19vdXQtPmZvcmNl X25vdG51bGxfYWxsKSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9D U1YgJiYgKG9wdHNfb3V0LT5mb3JjZV9ub3RudWxsICE9IE5JTCB8fAorCQkJCQkJCQkJCQkJ b3B0c19vdXQtPmZvcmNlX25vdG51bGxfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xh dG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICov CkBAIC05MDAsOCArOTAyLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX251bGwgKi8K LQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiAob3B0c19vdXQtPmZvcmNlX251bGwgIT0g TklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCisJaWYgKG9wdHNf b3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIChvcHRzX291dC0+Zm9yY2VfbnVs bCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5mb3JjZV9udWxsX2FsbCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9w dGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtOTI1LDcgKzkyNyw3IEBAIFByb2Nlc3NDb3B5 T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAKIAkvKiBE b24ndCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxsIHN0 cmluZy4gKi8KLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9w cmludCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtOTYx LDcgKzk2Myw3IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJCQkJIkRFRkFVTFQiKSkpOwogCiAJCS8qIERvbid0IGFsbG93IHRoZSBDU1YgcXVvdGUg Y2hhciB0byBhcHBlYXIgaW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAqLwotCQlpZiAob3B0c19v dXQtPmNzdl9tb2RlICYmCisJCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFU X0NTViAmJgogCQkJc3RyY2hyKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50LCBvcHRzX291dC0+ cXVvdGVbMF0pICE9IE5VTEwpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCkBAIC05NzgsNyArOTgwLDcgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIGVycm1zZygiTlVM TCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNpZmljYXRpb24gY2Fubm90IGJlIHRo ZSBzYW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3IgKi8KLQlpZiAob3B0c19vdXQt PmJpbmFyeSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQor CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291 dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJvbmx5 IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYwppbmRleCAyZjQyZjU1ZTIyOS4uNGQ5Mjc0MTAxNTkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTU2LDkgKzE1Niw5IEBAIHN0YXRpYyBjb25z dCBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlGcm9tUm91dGluZSAqCiBDb3B5RnJvbUdldFJvdXRpbmUoY29uc3QgQ29weUZv cm1hdE9wdGlvbnMgKm9wdHMpCiB7Ci0JaWYgKG9wdHMtPmNzdl9tb2RlKQorCWlmIChvcHRz LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKQogCQlyZXR1cm4gJkNvcHlGcm9tUm91dGlu ZUNTVjsKLQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5RnJvbVJvdXRpbmVCaW5h cnk7CiAKIAkvKiBkZWZhdWx0IGlzIHRleHQgKi8KQEAgLTI2Miw3ICsyNjIsNyBAQCBDb3B5 RnJvbUVycm9yQ2FsbGJhY2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5h bWUpOwogCQlyZXR1cm47CiAJfQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNh bid0IHVzZWZ1bGx5IGRpc3BsYXkgdGhlIGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0 dG5hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKaW5kZXggZmJkMTMz NTNlZmMuLmMzNjY4NzRiZDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJz ZS5jCkBAIC0xNzIsNyArMTcyLDcgQEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRl IGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0 X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRl LT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0 cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZID8gMSA6IDApOwogCWludAkJCWk7CiAK IAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weUluUmVzcG9uc2UpOwpAQCAtNzUw LDcgKzc1MCw3IEBAIGJvb2wKIE5leHRDb3B5RnJvbVJhd0ZpZWxkcyhDb3B5RnJvbVN0YXRl IGNzdGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcykKIHsKIAlyZXR1cm4gTmV4 dENvcHlGcm9tUmF3RmllbGRzSW50ZXJuYWwoY3N0YXRlLCBmaWVsZHMsIG5maWVsZHMsCi0J CQkJCQkJCQkJIGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSk7CisJCQkJCQkJCQkJIGNzdGF0ZS0+ b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWKTsKIH0KIAogLyoKQEAgLTc3Nyw3ICs3 NzcsOCBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHNJbnRlcm5hbChDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgY2hhciAqKipmaWVsZHMsIGludCAqbmZpZWxkcwogCWJvb2wJCWRvbmUgPSBmYWxz ZTsKIAogCS8qIG9ubHkgYXZhaWxhYmxlIGZvciB0ZXh0IG9yIGNzdiBpbnB1dCAqLwotCUFz c2VydCghY3N0YXRlLT5vcHRzLmJpbmFyeSk7CisJQXNzZXJ0KGNzdGF0ZS0+b3B0cy5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfVEVYVCB8fAorCQkgICBjc3RhdGUtPm9wdHMuZm9ybWF0ID09 IENPUFlfRk9STUFUX0NTVik7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFk ZXIgbGluZSBpcyBjb3JyZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5l bm8gPT0gMCAmJiBjc3RhdGUtPm9wdHMuaGVhZGVyX2xpbmUgIT0gQ09QWV9IRUFERVJfRkFM U0UpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDljZWVmZjZkOTllLi4wMzI1YTE2Zjgy YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTE4MSw5ICsxODEsOSBAQCBzdGF0aWMg Y29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIGNv bnN0IENvcHlUb1JvdXRpbmUgKgogQ29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0 T3B0aW9ucyAqb3B0cykKIHsKLQlpZiAob3B0cy0+Y3N2X21vZGUpCisJaWYgKG9wdHMtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUNTVjsK LQllbHNlIGlmIChvcHRzLT5iaW5hcnkpCisJZWxzZSBpZiAob3B0cy0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSkKIAkJcmV0dXJuICZDb3B5VG9Sb3V0aW5lQmluYXJ5OwogCiAJ LyogZGVmYXVsdCBpcyB0ZXh0ICovCkBAIC0yMjAsNyArMjIwLDcgQEAgQ29weVRvVGV4dExp a2VTdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogCiAJCQlj b2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpLT5h dHRuYW1lKTsKIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3Rh dGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQlDb3B5QXR0cmlidXRl T3V0Q1NWKGNzdGF0ZSwgY29sbmFtZSwgZmFsc2UpOwogCQkJZWxzZQogCQkJCUNvcHlBdHRy aWJ1dGVPdXRUZXh0KGNzdGF0ZSwgY29sbmFtZSk7CkBAIC0zOTcsNyArMzk3LDcgQEAgU2Vu ZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVm OwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlp bnQxNgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJ CWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/ IDEgOiAwKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0Nv cHlPdXRSZXNwb25zZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggODc3MjAyYWY2N2IuLjI0 MzBmYjBiMmU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC00OSw2ICs0OSwxNiBAQCB0eXBl ZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9HX1ZFUkJPU0lUWV9W RVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29weUxvZ1ZlcmJv c2l0eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0aGUgQ09Q WSBvcGVyYXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09QWV9G T1JNQVRfVEVYVCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NT ViwKK30gQ29weUZvcm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRp b25zLCBpbiBhIHBhcnNlZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRv IGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5 IGJlbG9uZyBoZXJlLCBidXQKQEAgLTU5LDkgKzY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29w eUZvcm1hdE9wdGlvbnMKIAkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAq LwogCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFy YWN0ZXIgZW5jb2RpbmcsCiAJCQkJCQkJCSAqIC0xIGlmIG5vdCBzcGVjaWZpZWQgKi8KLQli b29sCQliaW5hcnk7CQkJLyogYmluYXJ5IGZvcm1hdD8gKi8KKwlDb3B5Rm9ybWF0CWZvcm1h dDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9uICovCiAJYm9vbAkJZnJlZXpl OwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCi0JYm9vbAkJY3N2X21vZGU7CQkv KiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLwogCWludAkJCWhlYWRlcl9saW5l OwkvKiBudW1iZXIgb2YgbGluZXMgdG8gc2tpcCBvciBDT1BZX0hFQURFUl9YWFgKIAkJCQkJ CQkJICogdmFsdWUgKHNlZSB0aGUgYWJvdmUpICovCiAJY2hhcgkgICAqbnVsbF9wcmludDsJ CS8qIE5VTEwgbWFya2VyIHN0cmluZyAoc2VydmVyIGVuY29kaW5nISkgKi8KZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzdlM2MwNDE0NGUuLjgzOTliZTk3ZmQ1IDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNTI4LDYgKzUyOCw3IEBAIENvbnZlcnNp b25Mb2NhdGlvbgogQ29udmVydFJvd3R5cGVFeHByCiBDb29rZWRDb25zdHJhaW50CiBDb3B5 RGVzdAorQ29weUZvcm1hdAogQ29weUZvcm1hdE9wdGlvbnMKIENvcHlGcm9tUm91dGluZQog Q29weUZyb21TdGF0ZQotLSAKMi40My4wCgo= --------------gRJnBR6TlUOqXKruLynssN0S Content-Type: text/x-patch; charset=UTF-8; name="v27-0002-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v27-0002-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 RnJvbSBiMzIyMmYyNjViZDE1NzY5MGQ1ZjY5ZWE4ZWJhODRiZTEzZTU5MTBhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAxNDozMjo0OCArMDgwMApTdWJqZWN0OiBb UEFUQ0ggdjI3IDIvNF0ganNvbiBmb3JtYXQgZm9yIENPUFkgVE8KClRoaXMgaW50cm9kdWNl cyB0aGUgSlNPTiBmb3JtYXQgb3B0aW9uIGZvciB0aGUgQ09QWSBUTyBjb21tYW5kLCBhbGxv d2luZyB1c2Vycwp0byBleHBvcnQgcXVlcnkgcmVzdWx0cyBvciB0YWJsZSBkYXRhIGRpcmVj dGx5IGFzIGEgc2luZ2xlIEpTT04gb2JqZWN0IG9yIGEKc3RyZWFtIG9mIEpTT04gb2JqZWN0 cy4KClRoZSBKU09OIGZvcm1hdCBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIENP UFkgVE8gb3BlcmF0aW9uczsgaXQKaXMgbm90IGF2YWlsYWJsZSBmb3IgQ09QWSBGUk9NLgoK SlNPTiBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggc29tZSBzdGFuZGFyZCB0ZXh0L0NT ViBwYXJzaW5nIG9yIGZvcm1hdHRpbmcgb3B0aW9ucywKaW5jbHVkaW5nOgotIEhFQURFUgot IERFRkFVTFQKLSBOVUxMCi0gREVMSU1JVEVSCi0gRk9SQ0UgUVVPVEUgLyBGT1JDRSBOT1Qg TlVMTAoKUmVncmVzc2lvbiB0ZXN0cyBjb3ZlcmluZyB2YWxpZCBKU09OIGV4cG9ydHMgYW5k IGVycm9yIGhhbmRsaW5nIGZvcgppbmNvbXBhdGlibGUgb3B0aW9ucyBoYXZlIGJlZW4gYWRk ZWQgdG8gc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwuCgpBdXRob3I6IEpvZSBDb253 YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNh bGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiAiQW5kcmV5IE0uIEJvcm9kaW4iIDx4NG1t bUB5YW5kZXgtdGVhbS5ydT4sClJldmlld2VkLWJ5OiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5y YXNoZWVkQGdtYWlsLmNvbT4sClJldmlld2VkLWJ5OiBEYW5pZWwgVmVyaXRlIDxkYW5pZWxA bWFuaXRvdS1tYWlsLm9yZz4sClJldmlld2VkLWJ5OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3 QGR1bnNsYW5lLm5ldD4sClJldmlld2VkLWJ5OiBEYXZpbiBTaGVhcmVyIDxkYXZpbkBhcGFj aGUub3JnPiwKUmV2aWV3ZWQtYnk6IE1hc2FoaWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21h aWwuY29tPiwKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5v LWlwLm9yZz4KUmV2aWV3ZWQtYnk6IEp1bndhbmcgWmhhbyA8emhqd3BrdUBnbWFpbC5jb20+ CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTHZmVWtCeFRZeTV1V1BGVndw a183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNEa2NnJTQwbWFpbC5nbWFpbC5jb20KZGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01 YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5z Z21sICAgICAgICAgfCAxMyArKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAg ICAgICB8IDQ5ICsrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYyAgICAgIHwgODUgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgfCAgOCArKysKIHNyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29uLmMgICAgICAgfCAgNSArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwg IDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oICAgICAgICAgICB8ICAyICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgfCA4NiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsICAgICAgfCA1MSAr KysrKysrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI3MSBpbnNlcnRpb25zKCsp LCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sCmluZGV4IDBhZDg5MGVmOTVmLi43 NWY1NWJiZjZmOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKQEAgLTIyOCwxMCArMjI4LDE1IEBAIENP UFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIFNlbGVjdHMgdGhlIGRhdGEgZm9ybWF0 IHRvIGJlIHJlYWQgb3Igd3JpdHRlbjoKICAgICAgIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+ LAogICAgICAgPGxpdGVyYWw+Y3N2PC9saXRlcmFsPiAoQ29tbWEgU2VwYXJhdGVkIFZhbHVl cyksCisgICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiAoSmF2YVNjcmlwdCBPYmplY3Qg Tm90YXRpb24pLAogICAgICAgb3IgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPi4KICAgICAg IFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+LgogICAgICAgU2VlIDx4 cmVmIGxpbmtlbmQ9InNxbC1jb3B5LWZpbGUtZm9ybWF0cyIvPiBiZWxvdyBmb3IgZGV0YWls cy4KICAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSA8bGl0ZXJhbD5qc29u PC9saXRlcmFsPiBvcHRpb24gaXMgYWxsb3dlZCBvbmx5IGluCisgICAgICA8Y29tbWFuZD5D T1BZIFRPPC9jb21tYW5kPi4KKyAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjY2LDcgKzI3MSw3IEBAIENPUFkgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUKICAgICAgIChsaW5lKSBvZiB0aGUgZmlsZS4gIFRoZSBkZWZhdWx0IGlzIGEg dGFiIGNoYXJhY3RlciBpbiB0ZXh0IGZvcm1hdCwKICAgICAgIGEgY29tbWEgaW4gPGxpdGVy YWw+Q1NWPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgICBUaGlzIG11c3QgYmUgYSBzaW5nbGUg b25lLWJ5dGUgY2hhcmFjdGVyLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQg d2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAgIFRo aXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC0yODAsNyArMjg1 LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAgc3RyaW5nIGluIDxsaXRl cmFsPkNTVjwvbGl0ZXJhbD4gZm9ybWF0LiBZb3UgbWlnaHQgcHJlZmVyIGFuCiAgICAgICBl bXB0eSBzdHJpbmcgZXZlbiBpbiB0ZXh0IGZvcm1hdCBmb3IgY2FzZXMgd2hlcmUgeW91IGRv bid0IHdhbnQgdG8KICAgICAgIGRpc3Rpbmd1aXNoIG51bGxzIGZyb20gZW1wdHkgc3RyaW5n cy4KLSAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVy YWw+YmluYXJ5PC9saXRlcmFsPiBmb3JtYXQuCisgICAgICBUaGlzIG9wdGlvbiBpcyBub3Qg YWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxpdGVy YWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAKICAgICAgPG5vdGU+ CkBAIC0zMDMsNyArMzA4LDcgQEAgQ09QWSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZQogICAgICAg aXMgZm91bmQgaW4gdGhlIGlucHV0IGZpbGUsIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBj b3JyZXNwb25kaW5nIGNvbHVtbgogICAgICAgd2lsbCBiZSB1c2VkLgogICAgICAgVGhpcyBv cHRpb24gaXMgYWxsb3dlZCBvbmx5IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4s IGFuZCBvbmx5IHdoZW4KLSAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVy YWw+IGZvcm1hdC4KKyAgICAgIG5vdCB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+ IG9yIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTMzMCw3ICszMzUsNyBAQCBD T1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxh Y2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgICA8Y29tbWFuZD5DT1BZIEZST008L2Nv bW1hbmQ+IGNvbW1hbmRzLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgotICAgICAgVGhp cyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xp dGVyYWw+IGZvcm1hdC4KKyAgICAgIFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4g dXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRl cmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggMmY0NmJlNTE2ZjIuLjI5YzEyMWM3 ZjA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC01OTcsNiArNTk3LDggQEAgUHJvY2Vzc0Nv cHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQlvcHRzX291dC0+Zm9ybWF0ID0g Q09QWV9GT1JNQVRfQ1NWOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImJpbmFyeSIpID09 IDApCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0JJTkFSWTsKKwkJCWVs c2UgaWYgKHN0cmNtcChmbXQsICJqc29uIikgPT0gMCkKKwkJCQlvcHRzX291dC0+Zm9ybWF0 ID0gQ09QWV9GT1JNQVRfSlNPTjsKIAkJCWVsc2UKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC03NTYs MjEgKzc1OCwzMiBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAog CSAqIENoZWNrIGZvciBpbmNvbXBhdGlibGUgb3B0aW9ucyAobXVzdCBkbyB0aGVzZSB0aHJl ZSBiZWZvcmUgaW5zZXJ0aW5nCiAJICogZGVmYXVsdHMpCiAJICovCi0JaWYgKG9wdHNfb3V0 LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5kZWxpbSkKKwlp ZiAob3B0c19vdXQtPmRlbGltICYmCisJCShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9S TUFUX0JJTkFSWSB8fAorCQkgb3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09O KSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCi0JCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9u LCBlLmcuIE9OX0VSUk9SICovCi0JCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4g QklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFS WQorCQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJE RUxJTUlURVIiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1v ZGUiLCAiREVMSU1JVEVSIikpOwogCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9G T1JNQVRfQklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291dC0+ bnVsbF9wcmludCAmJgorCQkob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5B UlkgfHwKKwkJIG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikpCiAJCWVy ZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAotCQkJ CSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIk5VTEwiKSkp OworCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCW9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZCisJCQkJPyBlcnJtc2coImNhbm5vdCBzcGVj aWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIk5VTEwiKQorCQkJCTogZXJybXNnKCJjYW5ub3Qg c3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiTlVMTCIpKTsKIAotCWlmIChvcHRzX291dC0+ Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmlu dCkKKwlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJpbnQgJiYKKwkJKG9wdHNfb3V0LT5mb3Jt YXQgPT0gQ09QWV9GT1JNQVRfQklOQVJZIHx8CisJCSBvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0pTT04pKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKLQkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBC SU5BUlkgbW9kZSIsICJERUZBVUxUIikpKTsKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWQor CQkJCT8gZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUZB VUxUIikKKwkJCQk6IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gSlNPTiBtb2RlIiwg IkRFRkFVTFQiKSk7CiAKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0ZWQgb3B0aW9ucyAq LwogCWlmICghb3B0c19vdXQtPmRlbGltKQpAQCAtODM2LDExICs4NDksMTUgQEAgUHJvY2Vz c0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRl bGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19vdXQtPmRlbGltKSkpOwogCiAJLyog Q2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZICYmIG9wdHNfb3V0LT5oZWFkZXJfbGluZSAhPSBDT1BZX0hFQURFUl9GQUxTRSkK KwlpZiAob3B0c19vdXQtPmhlYWRlcl9saW5lICE9IENPUFlfSEVBREVSX0ZBTFNFICYmCisJ CShvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSB8fAorCQkgb3B0c19v dXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKSkKIAkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAl cyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCi0JCQkJ IGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiSEVBREVSIikp KTsKKwkJCQlvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWQorCQkJCT8g ZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJIRUFERVIiKQor CQkJCTogZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBpbiBKU09OIG1vZGUiLCAiSEVBREVS IikpOwogCiAJLyogQ2hlY2sgcXVvdGUgKi8KIAlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBD T1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19vdXQtPnF1b3RlICE9IE5VTEwpCkBAIC05NDQsNiAr OTYxLDEyIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJ IGVycm1zZygiQ09QWSAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIkZSRUVaRSIsCiAJ CQkJCQkiQ09QWSBUTyIpKSk7CiAKKwkvKiBDaGVjayBqc29uIGZvcm1hdCAqLworCWlmIChv cHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgaXNfZnJvbSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMi LCAiSlNPTiIsICJDT1BZIEZST00iKSk7CisKIAlpZiAob3B0c19vdXQtPmRlZmF1bHRfcHJp bnQpCiAJewogCQlpZiAoIWlzX2Zyb20pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDAz MjVhMTZmODJhLi5lODczMTBlYzVhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTI2 LDYgKzI2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIK KyNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNs dWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCkBAIC0z Myw2ICszNCw3IEBACiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29u LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVt dXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTg0LDYgKzg2LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVtbGlzdDsJCS8q IGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpmaWxlbmFt ZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19wcm9n cmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisJU3RyaW5n SW5mbwlqc29uX2J1ZjsJCS8qIHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQsIGl0 IGlzCisJCQkJCQkJCSAqIGluaXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9k YXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRh ICovCiAKIAlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwpAQCAtMTMwLDYgKzEzNCw3IEBAIHN0 YXRpYyB2b2lkIENvcHlUb0NTVk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFi bGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlT25lUm93KENvcHlU b1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSBib29sIGlz X2Nzdik7CiBzdGF0aWMgdm9pZCBDb3B5VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3Rh dGUpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUs IFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeVN0YXJ0 KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2MpOwogc3RhdGljIHZvaWQg Q29weVRvQmluYXJ5T3V0RnVuYyhDb3B5VG9TdGF0ZSBjc3RhdGUsIE9pZCBhdHR0eXBpZCwg Rm1nckluZm8gKmZpbmZvKTsKIHN0YXRpYyB2b2lkIENvcHlUb0JpbmFyeU9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKQEAgLTE0OCw5ICsxNTMs NiBAQCBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRlIGNzdGF0ZSwgaW50 MTYgdmFsKTsKIAogLyoKICAqIENPUFkgVE8gcm91dGluZXMgZm9yIGJ1aWx0LWluIGZvcm1h dHMuCi0gKgotICogQ1NWIGFuZCB0ZXh0IGZvcm1hdHMgc2hhcmUgdGhlIHNhbWUgVGV4dExp a2Ugcm91dGluZXMgZXhjZXB0IGZvciB0aGUKLSAqIG9uZS1yb3cgY2FsbGJhY2suCiAgKi8K IAogLyogdGV4dCBmb3JtYXQgKi8KQEAgLTE2OSw2ICsxNzEsMTQgQEAgc3RhdGljIGNvbnN0 IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTViA9IHsKIAkuQ29weVRvRW5kID0gQ29w eVRvVGV4dExpa2VFbmQsCiB9OwogCisvKiBqc29uIGZvcm1hdCAqLworc3RhdGljIGNvbnN0 IENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUpzb24gPSB7CisJLkNvcHlUb1N0YXJ0ID0g Q29weVRvVGV4dExpa2VTdGFydCwKKwkuQ29weVRvT3V0RnVuYyA9IENvcHlUb1RleHRMaWtl T3V0RnVuYywKKwkuQ29weVRvT25lUm93ID0gQ29weVRvSnNvbk9uZVJvdywKKwkuQ29weVRv RW5kID0gQ29weVRvVGV4dExpa2VFbmQsCit9OworCiAvKiBiaW5hcnkgZm9ybWF0ICovCiBz dGF0aWMgY29uc3QgQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogCS5D b3B5VG9TdGFydCA9IENvcHlUb0JpbmFyeVN0YXJ0LApAQCAtMTg1LDEyICsxOTUsMTQgQEAg Q29weVRvR2V0Um91dGluZShjb25zdCBDb3B5Rm9ybWF0T3B0aW9ucyAqb3B0cykKIAkJcmV0 dXJuICZDb3B5VG9Sb3V0aW5lQ1NWOwogCWVsc2UgaWYgKG9wdHMtPmZvcm1hdCA9PSBDT1BZ X0ZPUk1BVF9CSU5BUlkpCiAJCXJldHVybiAmQ29weVRvUm91dGluZUJpbmFyeTsKKwllbHNl IGlmIChvcHRzLT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwkJcmV0dXJuICZDb3B5 VG9Sb3V0aW5lSnNvbjsKIAogCS8qIGRlZmF1bHQgaXMgdGV4dCAqLwogCXJldHVybiAmQ29w eVRvUm91dGluZVRleHQ7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFydCBj YWxsYmFjayBmb3IgdGV4dCBhbmQgQ1NWIGZvcm1hdHMgKi8KKy8qIEltcGxlbWVudGF0aW9u IG9mIHRoZSBzdGFydCBjYWxsYmFjayBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRz ICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VTdGFydChDb3B5VG9TdGF0ZSBjc3Rh dGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogewpAQCAtMjA5LDYgKzIyMSw4IEBAIENvcHlUb1Rl eHRMaWtlU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKIAkJ TGlzdENlbGwgICAqY3VyOwogCQlib29sCQloZHJfZGVsaW0gPSBmYWxzZTsKIAorCQlBc3Nl cnQoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OKTsKKwogCQlmb3Jl YWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CiAJCQlpbnQJCQlhdHRudW0gPSBs Zmlyc3RfaW50KGN1cik7CkBAIC0yMzEsNyArMjQ1LDcgQEAgQ29weVRvVGV4dExpa2VTdGFy dChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQogfQogCiAvKgotICog SW1wbGVtZW50YXRpb24gb2YgdGhlIG91dGZ1bmMgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENT ViBmb3JtYXRzLiBBc3NpZ24KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBvdXRmdW5jIGNh bGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMuIEFzc2lnbgogICogdGhl IG91dHB1dCBmdW5jdGlvbiBkYXRhIHRvIHRoZSBnaXZlbiAqZmluZm8uCiAgKi8KIHN0YXRp YyB2b2lkCkBAIC0zMDQsMTMgKzMxOCwzOCBAQCBDb3B5VG9UZXh0TGlrZU9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsCiAJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiB9 CiAKLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5k IENTViBmb3JtYXRzICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNr IGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KIHN0YXRpYyB2b2lkCiBDb3B5 VG9UZXh0TGlrZUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJLyogTm90aGluZyB0byBk byBoZXJlICovCiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sg Zm9yIGpzb24gZm9ybWF0ICovCitzdGF0aWMgdm9pZAorQ29weVRvSnNvbk9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCURhdHVtCQlyb3dk YXRhOworCisJLyoKKwkgKiBjb21wb3NpdGVfdG9fanNvbigpIHJlcXVpcmVzIGEgc3RhYmxl IFR1cGxlRGVzYy4gVGhlIHNsb3QncyBkZXNjcmlwdG9yCisJICogKHNsb3QtPnR0c190dXBs ZURlc2NyaXB0b3IpIG1heSBjaGFuZ2UgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBTRUxF Q1QKKwkgKiBxdWVyeSwgdXNpbmcgY3N0YXRlLT5xdWVyeURlc2MgaW5zdGVhZC4gTm8gbmVl ZCB3b3JyeSB0aGlzIGlmIENPUFkgVE8KKwkgKiBpcyBkaXJlY3RseSBmcm9tIGEgdGFibGUu CisJICovCisJaWYgKCFjc3RhdGUtPnJlbCkKKwkJc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRv ciA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOworCisJcmVzZXRTdHJpbmdJbmZvKGNz dGF0ZS0+anNvbl9idWYpOworCisJcm93ZGF0YSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGVE YXR1bShzbG90KTsKKwljb21wb3NpdGVfdG9fanNvbihyb3dkYXRhLCBjc3RhdGUtPmpzb25f YnVmLCBmYWxzZSk7CisKKwlDb3B5U2VuZERhdGEoY3N0YXRlLCBjc3RhdGUtPmpzb25fYnVm LT5kYXRhLCBjc3RhdGUtPmpzb25fYnVmLT5sZW4pOworCisJQ29weVNlbmRUZXh0TGlrZUVu ZE9mUm93KGNzdGF0ZSk7Cit9CisKIC8qCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3Rh cnQgY2FsbGJhY2sgZm9yIGJpbmFyeSBmb3JtYXQuIFNlbmQgYSBoZWFkZXIKICAqIGZvciBh IGJpbmFyeSBjb3B5LgpAQCAtNDAyLDkgKzQ0MSwyMyBAQCBTZW5kQ29weUJlZ2luKENvcHlU b1N0YXRlIGNzdGF0ZSkKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5T3V0 UmVzcG9uc2UpOwogCXBxX3NlbmRieXRlKCZidWYsIGZvcm1hdCk7CS8qIG92ZXJhbGwgZm9y bWF0ICovCi0JcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKLQlmb3IgKGkgPSAwOyBpIDwg bmF0dHM7IGkrKykKLQkJcHFfc2VuZGludDE2KCZidWYsIGZvcm1hdCk7IC8qIHBlci1jb2x1 bW4gZm9ybWF0cyAqLworCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ICE9IENPUFlfRk9STUFU X0pTT04pCisJeworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOworCQlmb3IgKGkgPSAw OyBpIDwgbmF0dHM7IGkrKykKKwkJCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBw ZXItY29sdW1uIGZvcm1hdHMgKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogRm9yIEpT T04gZm9ybWF0LCByZXBvcnQgb25lIHRleHQtZm9ybWF0IGNvbHVtbi4gIEVhY2ggQ29weURh dGEKKwkJICogbWVzc2FnZSBjb250YWlucyBvbmUgY29tcGxldGUgSlNPTiBvYmplY3QsIG5v dCBpbmRpdmlkdWFsIGNvbHVtbgorCQkgKiB2YWx1ZXMsIHNvIHRoZSBwZXItY29sdW1uIGNv dW50IGlzIGFsd2F5cyAxLgorCQkgKi8KKwkJcHFfc2VuZGludDE2KCZidWYsIDEpOworCQlw cV9zZW5kaW50MTYoJmJ1ZiwgMCk7CisJfQorCiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKIAlj c3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfRlJPTlRFTkQ7CiB9CkBAIC01MDYsNyArNTU5LDcg QEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiB9CiAKIC8qCi0gKiBX cmFwcGVyIGZ1bmN0aW9uIG9mIENvcHlTZW5kRW5kT2ZSb3cgZm9yIHRleHQgYW5kIENTViBm b3JtYXRzLiBTZW5kcyB0aGUKKyAqIFdyYXBwZXIgZnVuY3Rpb24gb2YgQ29weVNlbmRFbmRP ZlJvdyBmb3IgdGV4dCwgQ1NWLCBhbmQganNvbiBmb3JtYXRzLiBTZW5kcyB0aGUKICAqIGxp bmUgdGVybWluYXRpb24gYW5kIGRvIGNvbW1vbiBhcHByb3ByaWF0ZSB0aGluZ3MgZm9yIHRo ZSBlbmQgb2Ygcm93LgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTg4NSwxMSArOTM4 LDIzIEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJRXhlY3V0b3JTdGFy dChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVlcnlE ZXNjLT50dXBEZXNjOworCQl0dXBEZXNjID0gQmxlc3NUdXBsZURlc2ModHVwRGVzYyk7CiAJ fQogCiAJLyogR2VuZXJhdGUgb3IgY29udmVydCBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gcHJv Y2VzcyAqLwogCWNzdGF0ZS0+YXR0bnVtbGlzdCA9IENvcHlHZXRBdHRudW1zKHR1cERlc2Ms IGNzdGF0ZS0+cmVsLCBhdHRuYW1lbGlzdCk7CiAKKwkvKiBKU09OIG91dHB1dHMgd2hvbGUg cm93czsgYSBjb2x1bW4gbGlzdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgKi8KKwlpZiAoY3N0YXRl LT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQorCXsKKwkJY3N0YXRlLT5qc29u X2J1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwkJaWYgKGF0dG5hbWVsaXN0ICE9IE5JTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQllcnJtc2coImNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBv cnRlZCBpbiBKU09OIG1vZGUiKSk7CisJfQorCiAJbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNj LT5uYXR0czsKIAogCS8qIENvbnZlcnQgRk9SQ0VfUVVPVEUgbmFtZSBsaXN0IHRvIHBlci1j b2x1bW4gZmxhZ3MsIGNoZWNrIHZhbGlkaXR5ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAzYzNl MjQzMjRhOC4uNDBhZDkwNzM5MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9n cmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMzYxMiw2ICszNjEy LDEwIEBAIGNvcHlfb3B0X2l0ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJm b3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJjc3YiKSwgQDEpOwogCQkJCX0KKwkJCXwg SlNPTgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiZm9ybWF0IiwgKE5vZGUgKikg bWFrZVN0cmluZygianNvbiIpLCBAMSk7CisJCQkJfQogCQkJfCBIRUFERVJfUAogCQkJCXsK IAkJCQkJJCQgPSBtYWtlRGVmRWxlbSgiaGVhZGVyIiwgKE5vZGUgKikgbWFrZUJvb2xlYW4o dHJ1ZSksIEAxKTsKQEAgLTM2OTQsNiArMzY5OCwxMCBAQCBjb3B5X2dlbmVyaWNfb3B0X2Vs ZW06CiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCQxLCAkMiwgQDEpOwogCQkJCX0K KwkJCXwgRk9STUFUX0xBIGNvcHlfZ2VuZXJpY19vcHRfYXJnCisJCQkJeworCQkJCQkkJCA9 IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAkMiwgQDEpOworCQkJCX0KIAkJOwogCiBjb3B5X2dl bmVyaWNfb3B0X2FyZzoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCmluZGV4IDBiMTYxMzk4NDY1Li5m NjA5ZDdiOTQxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC04Niw4ICs4Niw2IEBAIHR5 cGVkZWYgc3RydWN0IEpzb25BZ2dTdGF0ZQogCUpzb25VbmlxdWVCdWlsZGVyU3RhdGUgdW5p cXVlX2NoZWNrOwogfSBKc29uQWdnU3RhdGU7CiAKLXN0YXRpYyB2b2lkIGNvbXBvc2l0ZV90 b19qc29uKERhdHVtIGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsCi0JCQkJCQkJICBi b29sIHVzZV9saW5lX2ZlZWRzKTsKIHN0YXRpYyB2b2lkIGFycmF5X2RpbV90b19qc29uKFN0 cmluZ0luZm8gcmVzdWx0LCBpbnQgZGltLCBpbnQgbmRpbXMsIGludCAqZGltcywKIAkJCQkJ CQkgIGNvbnN0IERhdHVtICp2YWxzLCBjb25zdCBib29sICpudWxscywgaW50ICp2YWxjb3Vu dCwKIAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBPaWQgb3V0ZnVuY29p ZCwKQEAgLTUxNyw4ICs1MTUsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFsKERhdHVtIGFy cmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAogLyoKICAq IFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQgc28g Q09QWSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRl X3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2Vf bGluZV9mZWVkcykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKaW5kZXggZjhjMDg2NWNhODkuLjBkOTY0OWMxZjBhIDEwMDY0NAotLS0gYS9zcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5pbi5jCkBAIC0zNDI1LDcgKzM0MjUsNyBAQCBtYXRjaF9wcmV2aW91c193b3Jkcyhp bnQgcGF0dGVybl9pZCwKIAogCQkJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBGUk9NfFRPIGZp bGVuYW1lIFdJVEggKEZPUk1BVCAqLwogCQkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkZPUk1B VCIpKQotCQkJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIpOworCQkJ CUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIsICJqc29uIik7CiAKIAkJ CS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRIIChGUkVFWkUg Ki8KIAkJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGUkVFWkUiKSkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aAppbmRleCAyNDMwZmIwYjJlNS4uMmI1YmVmNjczOGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgK QEAgLTU3LDYgKzU3LDcgQEAgdHlwZWRlZiBlbnVtIENvcHlGb3JtYXQKIAlDT1BZX0ZPUk1B VF9URVhUID0gMCwKIAlDT1BZX0ZPUk1BVF9CSU5BUlksCiAJQ09QWV9GT1JNQVRfQ1NWLAor CUNPUFlfRk9STUFUX0pTT04sCiB9IENvcHlGb3JtYXQ7CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9qc29uLmggYi9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKaW5k ZXggZjhjYzUyYjFlNzguLjJmNGJlNDA1MThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9qc29uLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsx Nyw4IEBACiAjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGlu IGpzb24uYyAqLworZXh0ZXJuIHZvaWQgY29tcG9zaXRlX3RvX2pzb24oRGF0dW0gY29tcG9z aXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKKwkJCQkJCQkgIGJvb2wgdXNlX2xpbmVfZmVlZHMp OwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb24oU3RyaW5nSW5mbyBidWYsIGNvbnN0IGNoYXIg KnN0cik7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbl93aXRoX2xlbihTdHJpbmdJbmZvIGJ1 ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuKTsKIGV4dGVybiB2b2lkIGVzY2FwZV9qc29u X3RleHQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IHRleHQgKnR4dCk7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb3B5Lm91dAppbmRleCBkMGQ1NjNlMGZhOC4uNDMyNGUzZTQ5NjEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dApAQCAtNzMsNiArNzMsOTIgQEAgY29weSBj b3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiBjMSwiY29sIHdpdGggLCBjb21tYSIs ImNvbCB3aXRoICIiIHF1b3RlIgogMSxhLDEKIDIsYiwyCistLS0gdGVzdCBjb3B5aW5nIGlu IEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IChzZWxlY3QgMSB1bmlvbiBh bGwgc2VsZWN0IDIpIHRvIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbik7Cit7Ij9jb2x1bW4/ IjoxfQoreyI/Y29sdW1uPyI6Mn0KK2NvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0 IHdpdGggKGZvcm1hdCBqc29uKTsKK3siY29sdW1uMSI6MX0KK3siY29sdW1uMSI6Mn0KK2Nv cHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Cit7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFi Y1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRl ZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxs ZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIs ImZpbGxlciI6NH0KK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7 InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Cit7InN0eWxl IjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KK3sic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9Cit7InN0eWxlIjoiZXNjXFxhcGUiLCJ0 ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KKy0tIGFsbCBvZiB0aGUgZm9s bG93aW5nIHNob3VsZCB5aWVsZCBlcnJvcgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZv cm1hdCBqc29uLCBkZWxpbWl0ZXIgJ3wnKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgREVM SU1JVEVSIGluIEpTT04gbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uLCBudWxsICdcTicpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBOVUxMIGluIEpTT04g bW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBkZWZhdWx0ICd8 Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBtb2RlCitjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGhlYWRlcik7CitFUlJPUjogIGNh bm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgaGVhZGVyIDEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBI RUFERVIgaW4gSlNPTiBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIHF1b3RlICciJyk7CitFUlJPUjogIENPUFkgUVVPVEUgcmVxdWlyZXMgQ1NWIG1vZGUK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZXNjYXBlICciJyk7CitF UlJPUjogIENPUFkgRVNDQVBFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRv IHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX3F1b3RlICopOworRVJST1I6ICBDT1BZIEZP UkNFX1FVT1RFIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24sIGZvcmNlX25vdF9udWxsICopOworRVJST1I6ICBDT1BZIEZPUkNFX05P VF9OVUxMIHJlcXVpcmVzIENTViBtb2RlCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIGZvcmNlX251bGwgKik7CitFUlJPUjogIENPUFkgRk9SQ0VfTlVMTCByZXF1 aXJlcyBDU1YgbW9kZQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBv bl9lcnJvciBpZ25vcmUpOworRVJST1I6ICBDT1BZIE9OX0VSUk9SIGNhbm5vdCBiZSB1c2Vk IHdpdGggQ09QWSBUTworTElORSAxOiBjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIG9uX2Vycm9yIGlnbm9yZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uLCByZWplY3RfbGltaXQgMSk7CitFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVp cmVzIE9OX0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUKK2NvcHkgY29weXRlc3QgZnJvbSBz dGRpbihmb3JtYXQganNvbik7CitFUlJPUjogIENPUFkgSlNPTiBtb2RlIGNhbm5vdCBiZSB1 c2VkIHdpdGggQ09QWSBGUk9NCitjb3B5IGNvcHl0ZXN0IChzdHlsZSkgdG8gc3Rkb3V0IChm b3JtYXQganNvbik7CitFUlJPUjogIGNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRl ZCBpbiBKU09OIG1vZGUKKy0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9y CistLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNv cHlqc29udGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIg dGltZXN0YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmks CisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGlu ZSB3aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAg ICAgICAnbGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQs CisgICAgICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5l cmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0IChm MSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwK KyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZi YmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQp LAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBq c29uOworeyJpZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTct MDItMTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJsaW5lIHdpdGggJyBpbiBp dDogMiIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjozLCJmMSI6 ImxpbmUgd2l0aCBcIiBpbiBpdDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODow MCJ9Cit7ImlkIjo0LCJmMSI6ImxpbmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIxOTk3LTAy LTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGluIGl0 OiA1IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoi YWFhXCJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjIsImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVs bH0KK3siaWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpudWxsfQoreyJpZCI6NCwiZjEiOiJh YWFcYmJiYiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJhYWFcZmJiYiIsImYyIjpudWxs fQoreyJpZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQoreyJpZCI6NywiZjEiOiJh YWFccmJiYiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJiYiIsImYyIjpudWxs fQogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUg d2l0aCB0YWI6IAkiIHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Y29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA2NWNiZGFm N2YzZS4uNGU5Zjc0NTM3ZjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Nv cHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04Miw2ICs4 Miw1NyBAQCB0aGlzIGlzIGp1c3QgYSBsaW5lIGZ1bGwgb2YganVuayB0aGF0IHdvdWxkIGVy cm9yIG91dCBpZiBwYXJzZWQKIAogY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFk ZXI7CiAKKy0tLSB0ZXN0IGNvcHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHls ZXMKK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGgg KGZvcm1hdCBqc29uKTsKK2NvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0IHdpdGgg KGZvcm1hdCBqc29uKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IGpzb247Citjb3B5IGNv cHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworCistLSBhbGwgb2YgdGhlIGZvbGxv d2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3Jt YXQganNvbiwgZGVsaW1pdGVyICd8Jyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sIG51bGwgJ1xOJyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGRlZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgaGVhZGVyKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwg aGVhZGVyIDEpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBxdW90 ZSAnIicpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBlc2NhcGUg JyInKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfcXVv dGUgKik7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX25v dF9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3Jj ZV9udWxsICopOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBvbl9l cnJvciBpZ25vcmUpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBy ZWplY3RfbGltaXQgMSk7Citjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4oZm9ybWF0IGpzb24p OworY29weSBjb3B5dGVzdCAoc3R5bGUpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworLS0g YWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKKworLS0gZW1iZWRkZWQgZXNj YXBlZCBjaGFyYWN0ZXJzCitjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAorICAg IGlkIGJpZ3NlcmlhbCwKKyAgICBmMSB0ZXh0LAorICAgIGYyIHRpbWVzdGFtcHR6KTsKKwor aW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNF IFdIRU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0 OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRo ICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAgICAnTW9u IEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1 KSBhcyBnKGkpOworCitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QgKGYxKSB2YWx1ZXMKKyhF J2FhYVwiYmJiJzo6dGV4dCksCisoRSdhYWFcXGJiYic6OnRleHQpLAorKEUnYWFhXC9iYmIn Ojp0ZXh0KSwKKyhFJ2FhYVxiYmJiJzo6dGV4dCksCisoRSdhYWFcZmJiYic6OnRleHQpLAor KEUnYWFhXG5iYmInOjp0ZXh0KSwKKyhFJ2FhYVxyYmJiJzo6dGV4dCksCisoRSdhYWFcdGJi Yic6OnRleHQpOworCitjb3B5IGNvcHlqc29udGVzdCB0byBzdGRvdXQganNvbjsKKwogY3Jl YXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJImNvbG5hbWUgd2l0aCB0 YWI6IAkiIHRleHQpOwotLSAKMi40My4wCgo= --------------gRJnBR6TlUOqXKruLynssN0S Content-Type: text/x-patch; charset=UTF-8; name="v27-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename*0="v27-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 RnJvbSA2YzMzOGYyZjE0ZjhkMDBiZTAyMDQ3NTJlMDY2MzczYWI4NmQ5NmQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFp bC5jb20+CkRhdGU6IEZyaSwgNiBNYXIgMjAyNiAxNDo0Nzo1OCArMDgwMApTdWJqZWN0OiBb UEFUQ0ggdjI3IDMvNF0gQWRkIG9wdGlvbiBmb3JjZV9hcnJheSBmb3IgQ09QWSBKU09OIEZP Uk1BVAoKVGhpcyBhZGRzIHRoZSBmb3JjZV9hcnJheSBvcHRpb24sIHdoaWNoIGlzIGF2YWls YWJsZSBleGNsdXNpdmVseQp3aGVuIHVzaW5nIENPUFkgVE8gd2l0aCB0aGUgSlNPTiBmb3Jt YXQuCgpXaGVuIGVuYWJsZWQsIHRoaXMgb3B0aW9uIHdyYXBzIHRoZSBvdXRwdXQgaW4gYSB0 b3AtbGV2ZWwgSlNPTiBhcnJheQooZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzIHdpdGgg Y29tbWEtc2VwYXJhdGVkIGVsZW1lbnRzKSwgbWFraW5nIHRoZQplbnRpcmUgcmVzdWx0IGEg dmFsaWQgc2luZ2xlIEpTT04gdmFsdWUuIFdpdGhvdXQgdGhpcyBvcHRpb24sIHRoZSBkZWZh dWx0CmJlaGF2aW9yIGlzIHRvIG91dHB1dCBhIHN0cmVhbSBvZiBpbmRlcGVuZGVudCBKU09O IG9iamVjdHMuCgpBdHRlbXB0aW5nIHRvIHVzZSB0aGlzIG9wdGlvbiB3aXRoIENPUFkgRlJP TSBvciB3aXRoIGZvcm1hdHMgb3RoZXIgdGhhbgpKU09OIHdpbGwgcmFpc2UgYW4gZXJyb3Iu CgpBdXRob3I6IEpvZSBDb253YXkgPG1haWxAam9lY29ud2F5LmNvbT4KQXV0aG9yOiBqaWFu IGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKdW53YW5n IFpoYW8gPHpoandwa3VAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRh IDxzYXdhZGEubXNoa0BnbWFpbC5jb20+LApSZXZpZXdlZC1ieTogRmxvcmVudHMgVHNlbGFp IDxmbG9yZW50cy50c2VsYWlAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0 YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBTHZmVWtCeFRZeTV1V1BGVndwa183aWkyemdUMDd0M2QteVJfY3k0c2ZyckxVJTNE a2NnJTQwbWFpbC5nbWFpbC5jb20KZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS82 YTA0NjI4ZC0wZDUzLTQxZDktOWUzNS01YThkYzMwMmMzNGNAam9lY29ud2F5LmNvbQotLS0K IGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgfCAzMCArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgICAgIHwgMTMgKysr KysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDQxICsrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgIHwg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8IDMzICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8 IDEwICsrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwKaW5kZXggNzVmNTViYmY2ZjguLmE3OTU4N2Y3 NjEzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDAsNiArNDAsNyBAQCBDT1BZIHsgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgg PHJlcGxhY2VhYmxlCiAgICAgSEVBREVSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJsZT4gfCBNQVRDSCBdCiAgICAgUVVPVEUgJzxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5xdW90ZV9jaGFyYWN0ZXI8L3JlcGxhY2VhYmxl PicKICAgICBFU0NBUEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lc2NhcGVf Y2hhcmFjdGVyPC9yZXBsYWNlYWJsZT4nCisgICAgRk9SQ0VfQVJSQVkgWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBGT1JD RV9RVU9URSB7ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIHwgKiB9CiAgICAgRk9SQ0VfTk9UX05VTEwgeyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8 ICogfQpAQCAtMzY2LDYgKzM2NywxOSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5 IGlkPSJzcWwtY29weS1wYXJhbXMtZm9yY2UtYXJyYXkiPgorICAgIDx0ZXJtPjxsaXRlcmFs PkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0cyBhcyBhcnJheSBk ZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9mIG91dHB1dCwg YW5kIGNvbW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkgaW4KKyAg ICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5nCisg ICAgICA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisg ICAgICA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNx bC1jb3B5LXBhcmFtcy1mb3JjZS1xdW90ZSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9SQ0Vf UVVPVEU8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTExMDMsNiArMTEx NywyMiBAQCBDT1BZIGNvdW50cnkgVE8gU1RET1VUIChERUxJTUlURVIgJ3wnKTsKIDwvcHJv Z3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KIAorPHBhcmE+CisgICBXaGVuIHRoZSA8bGl0ZXJh bD5GT1JDRV9BUlJBWTwvbGl0ZXJhbD4gb3B0aW9uIGlzIGVuYWJsZWQsCisgICB0aGUgZW50 aXJlIG91dHB1dCBpcyB3cmFwcGVkIGluIGEgc2luZ2xlIEpTT04gYXJyYXkgd2l0aCByb3dz IHNlcGFyYXRlZCBieSBjb21tYXM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDT1BZIChTRUxFQ1Qg KiBGUk9NIChWQUxVRVMoMSksKDIpKSB2YWwoaWQpKSBUTyBTVERPVVQgIChGT1JNQVQgSlNP TiwgRk9SQ0VfQVJSQVkpOworPC9wcm9ncmFtbGlzdGluZz4KK1RoZSBvdXRwdXQgaXMgYXMg Zm9sbG93czoKKzxzY3JlZW4+CitbCisgeyJpZCI6MX0KKyx7ImlkIjoyfQorXQorPC9zY3Jl ZW4+Cis8L3BhcmE+CisKKwogICA8cGFyYT4KICAgIFRvIGNvcHkgZGF0YSBmcm9tIGEgZmls ZSBpbnRvIHRoZSA8bGl0ZXJhbD5jb3VudHJ5PC9saXRlcmFsPiB0YWJsZToKIDxwcm9ncmFt bGlzdGluZz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAyOWMxMjFjN2YwOC4uODQyNTRkNDZh NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5LmMKQEAgLTU2OSw2ICs1NjksNyBAQCBQcm9jZXNzQ29w eU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmll ZCA9IGZhbHNlOwogCWJvb2wJCWxvZ192ZXJib3NpdHlfc3BlY2lmaWVkID0gZmFsc2U7CiAJ Ym9vbAkJcmVqZWN0X2xpbWl0X3NwZWNpZmllZCA9IGZhbHNlOworCWJvb2wJCWZvcmNlX2Fy cmF5X3NwZWNpZmllZCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKm9wdGlvbjsKIAogCS8qIFN1 cHBvcnQgZXh0ZXJuYWwgdXNlIGZvciBvcHRpb24gc2FuaXR5IGNoZWNraW5nICovCkBAIC03 MjUsNiArNzI2LDEzIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUs CiAJCQkJCQkJCWRlZmVsLT5kZWZuYW1lKSwKIAkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24o cHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRl ZmVsLT5kZWZuYW1lLCAiZm9yY2VfYXJyYXkiKSA9PSAwKQorCQl7CisJCQlpZiAoZm9yY2Vf YXJyYXlfc3BlY2lmaWVkKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBw c3RhdGUpOworCQkJZm9yY2VfYXJyYXlfc3BlY2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0 LT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQl9CiAJCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgIm9uX2Vycm9yIikgPT0gMCkKIAkJewogCQkJaWYg KG9uX2Vycm9yX3NwZWNpZmllZCkKQEAgLTk2Nyw2ICs5NzUsMTEgQEAgUHJvY2Vzc0NvcHlP cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCWVycm1zZygiQ09QWSAlcyBtb2RlIGNhbm5vdCBi ZSB1c2VkIHdpdGggJXMiLCAiSlNPTiIsICJDT1BZIEZST00iKSk7CiAKKwlpZiAob3B0c19v dXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9KU09OICYmIG9wdHNfb3V0LT5mb3JjZV9hcnJh eSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJB TUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBjYW4gb25seSBiZSB1c2VkIHdp dGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpOworCiAJaWYgKG9wdHNfb3V0LT5kZWZh dWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpp bmRleCBlODczMTBlYzVhMC4uNGVhNDRkYWVlMGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CkBAIC04Niw2ICs4Niw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCUxp c3QJICAgKmF0dG51bWxpc3Q7CQkvKiBpbnRlZ2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5 ICovCiAJY2hhcgkgICAqZmlsZW5hbWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RE T1VUICovCiAJYm9vbAkJaXNfcHJvZ3JhbTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFt IHRvIHBvcGVuPyAqLworCWJvb2wJCWpzb25fcm93X2RlbGltX25lZWRlZDsJLyogbmVlZCBk ZWxpbWl0ZXIgYmVmb3JlIG5leHQgcm93ICovCiAJU3RyaW5nSW5mbwlqc29uX2J1ZjsJCS8q IHJldXNhYmxlIGJ1ZmZlciBmb3IgSlNPTiBvdXRwdXQsIGl0IGlzCiAJCQkJCQkJCSAqIGlu aXRsaWF6ZWQgaW4gQmVnaW5Db3B5VG8gICovCiAJY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9k ZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCkBAIC0xMzUsNiArMTM2 LDcgQEAgc3RhdGljIHZvaWQgQ29weVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0 YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJIGJvb2wgaXNfY3N2KTsKIHN0 YXRpYyB2b2lkIENvcHlUb1RleHRMaWtlRW5kKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0 aWMgdm9pZCBDb3B5VG9Kc29uT25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QpOworc3RhdGljIHZvaWQgQ29weVRvSnNvbkVuZChDb3B5VG9TdGF0ZSBj c3RhdGUpOwogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0 YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7CiBzdGF0aWMgdm9pZCBDb3B5VG9CaW5hcnlPdXRG dW5jKENvcHlUb1N0YXRlIGNzdGF0ZSwgT2lkIGF0dHR5cGlkLCBGbWdySW5mbyAqZmluZm8p Owogc3RhdGljIHZvaWQgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpOwpAQCAtMTc2LDcgKzE3OCw3IEBAIHN0YXRpYyBjb25z dCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVKc29uID0gewogCS5Db3B5VG9TdGFydCA9 IENvcHlUb1RleHRMaWtlU3RhcnQsCiAJLkNvcHlUb091dEZ1bmMgPSBDb3B5VG9UZXh0TGlr ZU91dEZ1bmMsCiAJLkNvcHlUb09uZVJvdyA9IENvcHlUb0pzb25PbmVSb3csCi0JLkNvcHlU b0VuZCA9IENvcHlUb1RleHRMaWtlRW5kLAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5k LAogfTsKIAogLyogYmluYXJ5IGZvcm1hdCAqLwpAQCAtMjQyLDYgKzI0NCwxOCBAQCBDb3B5 VG9UZXh0TGlrZVN0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVEZXNjIHR1cERlc2Mp CiAKIAkJQ29weVNlbmRUZXh0TGlrZUVuZE9mUm93KGNzdGF0ZSk7CiAJfQorCisJaWYgKGNz dGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTikKKwl7CisJCS8qCisJCSAq IElmIEZPUkNFX0FSUkFZIGhhcyBiZWVuIHNwZWNpZmllZCwgc2VuZCB0aGUgb3BlbmluZyBi cmFja2V0LgorCQkgKi8KKwkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJewor CQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kVGV4dExpa2VFbmRP ZlJvdyhjc3RhdGUpOworCQl9CisJfQogfQogCiAvKgpAQCAtMzE4LDEzICszMzIsMjQgQEAg Q29weVRvVGV4dExpa2VPbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLAogCUNvcHlTZW5kVGV4 dExpa2VFbmRPZlJvdyhjc3RhdGUpOwogfQogCi0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUg ZW5kIGNhbGxiYWNrIGZvciB0ZXh0LCBDU1YsIGFuZCBqc29uIGZvcm1hdHMgKi8KKy8qIElt cGxlbWVudGF0aW9uIG9mIHRoZSBlbmQgY2FsbGJhY2sgZm9yIHRleHQgYW5kIENTViBmb3Jt YXRzICovCiBzdGF0aWMgdm9pZAogQ29weVRvVGV4dExpa2VFbmQoQ29weVRvU3RhdGUgY3N0 YXRlKQogewogCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSAqLwogfQogCisvKiBJbXBsZW1lbnRh dGlvbiBvZiB0aGUgZW5kIGNhbGxiYWNrIGZvciBqc29uIGZvcm1hdCAqLworc3RhdGljIHZv aWQKK0NvcHlUb0pzb25FbmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChjc3RhdGUt Pm9wdHMuZm9yY2VfYXJyYXkpCisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScpOwor CQlDb3B5U2VuZFRleHRMaWtlRW5kT2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKIC8qIEltcGxl bWVudGF0aW9uIG9mIHBlci1yb3cgY2FsbGJhY2sgZm9yIGpzb24gZm9ybWF0ICovCiBzdGF0 aWMgdm9pZAogQ29weVRvSnNvbk9uZVJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFi bGVTbG90ICpzbG90KQpAQCAtMzQ1LDYgKzM3MCwxOCBAQCBDb3B5VG9Kc29uT25lUm93KENv cHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJcm93ZGF0YSA9IEV4 ZWNGZXRjaFNsb3RIZWFwVHVwbGVEYXR1bShzbG90KTsKIAljb21wb3NpdGVfdG9fanNvbihy b3dkYXRhLCBjc3RhdGUtPmpzb25fYnVmLCBmYWxzZSk7CiAKKwlpZiAoY3N0YXRlLT5vcHRz LmZvcmNlX2FycmF5KQorCXsKKwkJaWYgKGNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVk KQorCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJywnKTsKKwkJZWxzZQorCQl7CisJCQkvKiBm aXJzdCByb3cgbmVlZHMgbm8gZGVsaW1pdGVyICovCisJCQlDb3B5U2VuZENoYXIoY3N0YXRl LCAnICcpOworCQkJY3N0YXRlLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOworCQl9 CisJfQorCiAJQ29weVNlbmREYXRhKGNzdGF0ZSwgY3N0YXRlLT5qc29uX2J1Zi0+ZGF0YSwg Y3N0YXRlLT5qc29uX2J1Zi0+bGVuKTsKIAogCUNvcHlTZW5kVGV4dExpa2VFbmRPZlJvdyhj c3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDBkOTY0OWMxZjBhLi40YjE4 Y2M2ZTJjZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisr KyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTIzMiw3ICsxMjMyLDcg QEAgQ29weV9jb21tb25fb3B0aW9ucywgIkRFRkFVTFQiLCAiRk9SQ0VfTk9UX05VTEwiLCAi Rk9SQ0VfTlVMTCIsICJGUkVFWkUiLCBcCiAKIC8qIENPUFkgVE8gb3B0aW9ucyAqLwogI2Rl ZmluZSBDb3B5X3RvX29wdGlvbnMgXAotQ29weV9jb21tb25fb3B0aW9ucywgIkZPUkNFX1FV T1RFIgorQ29weV9jb21tb25fb3B0aW9ucywgIkZPUkNFX1FVT1RFIiwgIkZPUkNFX0FSUkFZ IgogCiAvKgogICogVGhlc2Ugb2JqZWN0IHR5cGVzIHdlcmUgaW50cm9kdWNlZCBsYXRlciB0 aGFuIG91ciBzdXBwb3J0IGN1dG9mZiBvZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDJiNWJl ZjY3MzhlLi5hYmVjZmU1MTA5OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtODgsNiArODgs NyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwogCUxpc3QJICAgKmZvcmNl X25vdG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJZm9yY2Vfbm90 bnVsbF9hbGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCiAJYm9vbAkgICAqZm9yY2Vfbm90 bnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICovCisJYm9vbAkJZm9y Y2VfYXJyYXk7CS8qIGFkZCBKU09OIGFycmF5IGRlY29yYXRpb25zICovCiAJTGlzdAkgICAq Zm9yY2VfbnVsbDsJCS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCiAJYm9vbAkJZm9yY2Vf bnVsbF9hbGw7IC8qIEZPUkNFX05VTEwgKj8gKi8KIAlib29sCSAgICpmb3JjZV9udWxsX2Zs YWdzOwkvKiBwZXItY29sdW1uIENTViBGTiBmbGFncyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weS5vdXQKaW5kZXggNDMyNGUzZTQ5NjEuLjMwOWEzM2NhMmU3IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKQEAgLTgwLDYgKzgwLDE2IEBAIGNvcHkgKHNlbGVj dCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsK IGNvcHkgKHZhbHVlcyAoMSksICgyKSkgVE8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsK IHsiY29sdW1uMSI6MX0KIHsiY29sdW1uMSI6Mn0KK2NvcHkgKHNlbGVjdCAxIHVuaW9uIGFs bCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0 cnVlKTsKK1sKKyB7Ij9jb2x1bW4/IjoxfQorLHsiP2NvbHVtbj8iOjJ9CitdCitjb3B5ICh2 YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbiwgZm9yY2VfYXJy YXkgdHJ1ZSk7CitbCisgeyJjb2x1bW4xIjoxfQorLHsiY29sdW1uMSI6Mn0KK10KIGNvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IGpzb247CiB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xy XG5kZWYiLCJmaWxsZXIiOjF9CiB7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KQEAgLTEyMiw2ICsxMzIsMjkgQEAgRVJST1I6ICBDT1BZIEpTT04gbW9k ZSBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkgRlJPTQogY29weSBjb3B5dGVzdCAoc3R5bGUp IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwogRVJST1I6ICBjb2x1bW4gc2VsZWN0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBtb2RlCiAtLSBhbGwgb2YgdGhlIGFib3ZlIHNob3Vs ZCB5aWVsZCBlcnJvcgorLS0gc2hvdWxkIGZhaWw6IGZvcmNlX2FycmF5IHJlcXVpcmVzIGpz b24gZm9ybWF0Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGNzdiwgZm9yY2Vf YXJyYXkgdHJ1ZSk7CitFUlJPUjogIENPUFkgRk9SQ0VfQVJSQVkgY2FuIG9ubHkgYmUgdXNl ZCB3aXRoIEpTT04gbW9kZQorLS0gZm9yY2VfYXJyYXkgdmFyaWFudHMKK2NvcHkgY29weXRl c3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkpOworWworIHsic3R5bGUi OiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KKyx7InN0eWxlIjoiVW5p eCIsInRlc3QiOiJhYmNcbmRlZiIsImZpbGxlciI6Mn0KKyx7InN0eWxlIjoiTWFjIiwidGVz dCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQorLHsic3R5bGUiOiJlc2NcXGFwZSIsInRlc3Qi OiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorXQorY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7InN0eWxlIjoi RE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9CisseyJzdHlsZSI6IlVuaXgi LCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6Ik1hYyIsInRlc3Qi OiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0Ijoi YVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIs InRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0 IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xy ZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxy XFxcblxcbmIiLCJmaWxsZXIiOjR9CiAtLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMK IGNyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCiAgICAgaWQgYmlnc2VyaWFsLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCA0ZTlmNzQ1MzdmOC4uOGEyMDkwN2RkNGMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCkBAIC04NSw2ICs4NSw4IEBAIGNvcHkgY29weXRlc3Qz IHRvIHN0ZG91dCBjc3YgaGVhZGVyOwogLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUg d2l0aCB2YXJpb3VzIHN0eWxlcwogY29weSAoc2VsZWN0IDEgdW5pb24gYWxsIHNlbGVjdCAy KSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOwogY29weSAodmFsdWVzICgxKSwgKDIp KSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24pOworY29weSAoc2VsZWN0IDEgdW5pb24g YWxsIHNlbGVjdCAyKSB0byBzdGRvdXQgd2l0aCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5 IHRydWUpOworY29weSAodmFsdWVzICgxKSwgKDIpKSBUTyBzdGRvdXQgd2l0aCAoZm9ybWF0 IGpzb24sIGZvcmNlX2FycmF5IHRydWUpOwogY29weSBjb3B5dGVzdCB0byBzdGRvdXQganNv bjsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7CiAKQEAgLTEwNSw2 ICsxMDcsMTQgQEAgY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKIGNv cHkgY29weXRlc3QgKHN0eWxlKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKIC0tIGFsbCBv ZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCiAKKy0tIHNob3VsZCBmYWlsOiBmb3Jj ZV9hcnJheSByZXF1aXJlcyBqc29uIGZvcm1hdAorY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBjc3YsIGZvcmNlX2FycmF5IHRydWUpOworCistLSBmb3JjZV9hcnJheSB2YXJp YW50cworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJh eSk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5 IHRydWUpOworY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9h cnJheSBmYWxzZSk7CisKIC0tIGVtYmVkZGVkIGVzY2FwZWQgY2hhcmFjdGVycwogY3JlYXRl IHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAgICBpZCBiaWdzZXJpYWwsCi0tIAoyLjQz LjAKCg== --------------gRJnBR6TlUOqXKruLynssN0S Content-Type: text/x-patch; charset=UTF-8; name="v27-0004-COPY-TO-JSON-support-column-lists.patch" Content-Disposition: attachment; filename="v27-0004-COPY-TO-JSON-support-column-lists.patch" Content-Transfer-Encoding: base64 RnJvbSBhNjI3ZGYwNzYwZDk4MDNkZWE0OTE3OThlZmUxMjk4YmZmNmFlZmNiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogRnJpLCA2IE1hciAyMDI2IDA2OjA2OjI4IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjcgNC80XSBDT1BZIFRPIEpTT046IHN1cHBvcnQgY29sdW1uIGxpc3RzCgpXaGVu IGEgY29sdW1uIGxpc3QgaXMgc3BlY2lmaWVkIChlLmcuIENPUFkgdCAoYSwgYikgVE8gLi4u IEZPUk1BVCBqc29uKSwKYnVpbGQgYSBwcm9qZWN0ZWQgVHVwbGVEZXNjIGNvbnRhaW5pbmcg b25seSB0aGUgc2VsZWN0ZWQgY29sdW1ucyBhbmQKZm9ybSBhIG5ldyB0dXBsZSBwZXIgcm93 IHZpYSBoZWFwX2Zvcm1fdHVwbGUoKSwgc28gdGhhdCBjb21wb3NpdGVfdG9fanNvbigpCmVt aXRzIHRoZSBjb3JyZWN0IGNvbHVtbiBuYW1lcyBhbmQgdmFsdWVzLgoKVXNlIEhlYXBUdXBs ZUhlYWRlckdldERhdHVtKCkgZGlyZWN0bHkgb24gdGhlIGZvcm1lZCB0dXBsZSByYXRoZXIg dGhhbgpoZWFwX2NvcHlfdHVwbGVfYXNfZGF0dW0oKSwgc2luY2UgaGVhcF9mb3JtX3R1cGxl KCkgYWxyZWFkeSBzdGFtcHMgdGhlCmRhdHVtLWxlbmd0aCwgdHlwZS1pZCwgYW5kIHR5cGUt bW9kIGZpZWxkcyBvbiB0X2RhdGEsIGF2b2lkaW5nIGFuCnVubmVjZXNzYXJ5IHBhbGxvYytt ZW1jcHkgcGVyIHJvdy4KCkFkZCByZWdyZXNzaW9uIHRlc3RzIGNvdmVyaW5nIGNvbHVtbiBs aXN0cyB3aXRoIGRpdmVyc2UgZGF0YSB0eXBlcwppbmNsdWRpbmcganNvbiwganNvbmIsIGlu dFtdLCBudW1lcmljLCBib29sZWFuLCB0aW1lc3RhbXAsIGFuZCB0ZXh0LApleGVyY2lzaW5n IHZhcmlvdXMgY29sdW1uIHN1YnNldHMgYW5kIE5VTEwgaGFuZGxpbmcuCgpBdXRob3I6IEFu ZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpSZXZpZXdlZC1ieTogamlhbiBo ZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPgoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lpMnpnVDA3dDNkLXlSX2N5NHNm cnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMzMDJjMzRjQGpvZWNvbndheS5j b20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgIHwgMTA5ICsrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Nv cHkub3V0IHwgIDY2ICsrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5LnNxbCAgICAgIHwgIDM5ICsrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDE5MyBp bnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmlu ZGV4IDRlYTQ0ZGFlZTBhLi45OTJmMzk3MGQxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMK QEAgLTg3LDggKzg3LDEyIEBAIHR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQogCWNo YXIJICAgKmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNURE9VVCAqLwog CWJvb2wJCWlzX3Byb2dyYW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJvZ3JhbSB0byBwb3Bl bj8gKi8KIAlib29sCQlqc29uX3Jvd19kZWxpbV9uZWVkZWQ7CS8qIG5lZWQgZGVsaW1pdGVy IGJlZm9yZSBuZXh0IHJvdyAqLwotCVN0cmluZ0luZm8JanNvbl9idWY7CQkvKiByZXVzYWJs ZSBidWZmZXIgZm9yIEpTT04gb3V0cHV0LCBpdCBpcwotCQkJCQkJCQkgKiBpbml0bGlhemVk IGluIEJlZ2luQ29weVRvICAqLworCVN0cmluZ0luZm8JanNvbl9idWY7CQkvKiByZXVzYWJs ZSBidWZmZXIgZm9yIEpTT04gb3V0cHV0LAorCQkJCQkJCQkgKiBpbml0aWFsaXplZCBpbiBC ZWdpbkNvcHlUbyAqLworCVR1cGxlRGVzYwl0dXBEZXNjOwkJLyogRGVzY3JpcHRvciBmb3Ig SlNPTiBvdXRwdXQ7IGZvciBhIGNvbHVtbgorCQkJCQkJCQkgKiBsaXN0IHRoaXMgaXMgYSBw cm9qZWN0ZWQgZGVzY3JpcHRvciAqLworCURhdHVtCSAgICpqc29uX3Byb2p2YWx1ZXM7CS8q IHByZS1hbGxvY2F0ZWQgcHJvamVjdGlvbiB2YWx1ZXMsIG9yIE5VTEwgKi8KKwlib29sCSAg ICpqc29uX3Byb2pudWxsczsJCS8qIHByZS1hbGxvY2F0ZWQgcHJvamVjdGlvbiBudWxscywg b3IgTlVMTCAqLwogCWNvcHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyogZnVuY3Rp b24gZm9yIHdyaXRpbmcgZGF0YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKQEAg LTM1NiwxOCArMzYwLDUxIEBAIENvcHlUb0pzb25PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRl LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIHsKIAlEYXR1bQkJcm93ZGF0YTsKIAotCS8qCi0J ICogY29tcG9zaXRlX3RvX2pzb24oKSByZXF1aXJlcyBhIHN0YWJsZSBUdXBsZURlc2MuIFRo ZSBzbG90J3MgZGVzY3JpcHRvcgotCSAqIChzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yKSBt YXkgY2hhbmdlIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGEgU0VMRUNUCi0JICogcXVlcnks IHVzaW5nIGNzdGF0ZS0+cXVlcnlEZXNjIGluc3RlYWQuIE5vIG5lZWQgd29ycnkgdGhpcyBp ZiBDT1BZIFRPCi0JICogaXMgZGlyZWN0bHkgZnJvbSBhIHRhYmxlLgotCSAqLwotCWlmICgh Y3N0YXRlLT5yZWwpCi0JCXNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IgPSBjc3RhdGUtPnF1 ZXJ5RGVzYy0+dHVwRGVzYzsKLQogCXJlc2V0U3RyaW5nSW5mbyhjc3RhdGUtPmpzb25fYnVm KTsKIAotCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJ aWYgKGNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBD b2x1bW4gbGlzdCBjYXNlOiBwcm9qZWN0IHNlbGVjdGVkIGNvbHVtbiB2YWx1ZXMgaW50byBz ZXF1ZW50aWFsCisJCSAqIHBvc2l0aW9ucyBtYXRjaGluZyB0aGUgY3VzdG9tIFR1cGxlRGVz YywgdGhlbiBmb3JtIGEgbmV3IHR1cGxlLgorCQkgKi8KKwkJSGVhcFR1cGxlCXR1cDsKKwkJ aW50CQkJaSA9IDA7CisKKwkJZm9yZWFjaF9pbnQoYXR0bnVtLCBjc3RhdGUtPmF0dG51bWxp c3QpCisJCXsKKwkJCWNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzW2ldID0gc2xvdC0+dHRzX3Zh bHVlc1thdHRudW0gLSAxXTsKKwkJCWNzdGF0ZS0+anNvbl9wcm9qbnVsbHNbaV0gPSBzbG90 LT50dHNfaXNudWxsW2F0dG51bSAtIDFdOworCQkJaSsrOworCQl9CisKKwkJdHVwID0gaGVh cF9mb3JtX3R1cGxlKGNzdGF0ZS0+dHVwRGVzYywKKwkJCQkJCQkgIGNzdGF0ZS0+anNvbl9w cm9qdmFsdWVzLAorCQkJCQkJCSAgY3N0YXRlLT5qc29uX3Byb2pudWxscyk7CisKKwkJLyoK KwkJICogaGVhcF9mb3JtX3R1cGxlIGFscmVhZHkgc3RhbXBzIHRoZSBkYXR1bS1sZW5ndGgs IHR5cGUtaWQsIGFuZAorCQkgKiB0eXBlLW1vZCBmaWVsZHMgb24gdF9kYXRhLCBzbyB3ZSBj YW4gdXNlIGl0IGRpcmVjdGx5IGFzIGEKKwkJICogY29tcG9zaXRlIERhdHVtIHdpdGhvdXQg dGhlIGV4dHJhIHBhbGxvYyttZW1jcHkgdGhhdAorCQkgKiBoZWFwX2NvcHlfdHVwbGVfYXNf ZGF0dW0gd291bGQgZG8uICBBbnkgVE9BU1QgcG9pbnRlcnMgaW4gdGhlCisJCSAqIHByb2pl Y3RlZCB2YWx1ZXMgd2lsbCBiZSBkZXRvYXN0ZWQgYnkgdGhlIHBlci1jb2x1bW4gb3V0cHV0 CisJCSAqIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBjb21wb3NpdGVfdG9fanNvbi4KKwkJICov CisJCXJvd2RhdGEgPSBIZWFwVHVwbGVIZWFkZXJHZXREYXR1bSh0dXAtPnRfZGF0YSk7CisJ fQorCWVsc2UKKwl7CisJCS8qCisJCSAqIEZ1bGwgdGFibGUgb3IgcXVlcnkgd2l0aG91dCBj b2x1bW4gbGlzdC4gIEVuc3VyZSB0aGUgc2xvdCB1c2VzCisJCSAqIGNzdGF0ZS0+dHVwRGVz YyBzbyB0aGF0IHRoZSBkYXR1bSBpcyBzdGFtcGVkIHdpdGggdGhlIHJpZ2h0IHR5cGU7CisJ CSAqIGZvciBxdWVyaWVzIHRoaXMgbXVzdCBiZSB0aGUgYmxlc3NlZCBkZXNjcmlwdG9yIHNv IHRoYXQKKwkJICogY29tcG9zaXRlX3RvX2pzb24gY2FuIGxvb2sgaXQgdXAgdmlhIGxvb2t1 cF9yb3d0eXBlX3R1cGRlc2MuCisJCSAqIEZvciByZWxhdGlvbnMgdGhlIGFzc2lnbm1lbnQg aXMgYSBuby1vcCAoc2FtZSBwb2ludGVyKS4KKwkJICovCisJCXNsb3QtPnR0c190dXBsZURl c2NyaXB0b3IgPSBjc3RhdGUtPnR1cERlc2M7CisJCXJvd2RhdGEgPSBFeGVjRmV0Y2hTbG90 SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJfQorCiAJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0 YSwgY3N0YXRlLT5qc29uX2J1ZiwgZmFsc2UpOwogCiAJaWYgKGNzdGF0ZS0+b3B0cy5mb3Jj ZV9hcnJheSkKQEAgLTgzOSw2ICs4NzYsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAkJdHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoY3N0YXRlLT5yZWwpOwog CQljc3RhdGUtPnBhcnRpdGlvbnMgPSBjaGlsZHJlbjsKKwkJY3N0YXRlLT50dXBEZXNjID0g dHVwRGVzYzsKIAl9CiAJZWxzZQogCXsKQEAgLTk3NSwyMSArMTAxMyw1NiBAQCBCZWdpbkNv cHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVy eURlc2MsIDApOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsK LQkJdHVwRGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cERlc2MpOworCisJCS8qCisJCSAqIEZv ciBKU09OIGZvcm1hdCwgYmxlc3MgdGhlIFR1cGxlRGVzYyBzbyB0aGF0IGNvbXBvc2l0ZV90 b19qc29uKCkKKwkJICogY2FuIGxvb2sgdXAgdGhlIFJFQ09SRCB0eXBlIHZpYSBsb29rdXBf cm93dHlwZV90dXBkZXNjKCkuCisJCSAqLworCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9KU09OKQorCQkJdHVwRGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cERl c2MpOworCQljc3RhdGUtPnR1cERlc2MgPSB0dXBEZXNjOwogCX0KIAogCS8qIEdlbmVyYXRl IG9yIGNvbnZlcnQgbGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHByb2Nlc3MgKi8KIAljc3RhdGUt PmF0dG51bWxpc3QgPSBDb3B5R2V0QXR0bnVtcyh0dXBEZXNjLCBjc3RhdGUtPnJlbCwgYXR0 bmFtZWxpc3QpOwogCi0JLyogSlNPTiBvdXRwdXRzIHdob2xlIHJvd3M7IGEgY29sdW1uIGxp c3QgZG9lc24ndCBtYWtlIHNlbnNlICovCisJLyogU2V0IHVwIEpTT04tc3BlY2lmaWMgc3Rh dGUgKi8KIAlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OKQog CXsKIAkJY3N0YXRlLT5qc29uX2J1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CiAKLQkJaWYgKGF0 dG5hbWVsaXN0ICE9IE5JTCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCWVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQllcnJtc2coImNvbHVtbiBzZWxl Y3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBKU09OIG1vZGUiKSk7CisJCWlmIChhdHRuYW1l bGlzdCAhPSBOSUwgJiYgcmVsKQorCQl7CisJCQlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3Ro KGNzdGF0ZS0+YXR0bnVtbGlzdCk7CisJCQlUdXBsZURlc2MJcmVzdWx0RGVzYzsKKworCQkJ LyoKKwkJCSAqIEJ1aWxkIGEgVHVwbGVEZXNjIGRlc2NyaWJpbmcgb25seSB0aGUgc2VsZWN0 ZWQgY29sdW1ucyBzbyB0aGF0CisJCQkgKiBjb21wb3NpdGVfdG9fanNvbigpIGVtaXRzIHRo ZSByaWdodCBjb2x1bW4gbmFtZXMgYW5kIHR5cGVzLgorCQkJICovCisJCQlyZXN1bHREZXNj ID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MobmF0dHMpOworCisJCQlmb3JlYWNoX2ludChh dHRudW0sIGNzdGF0ZS0+YXR0bnVtbGlzdCkKKwkJCXsKKwkJCQlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRudW0gLSAxKTsKKworCQkJCVR1 cGxlRGVzY0luaXRFbnRyeShyZXN1bHREZXNjLAorCQkJCQkJCQkgICBmb3JlYWNoX2N1cnJl bnRfaW5kZXgoYXR0bnVtKSArIDEsCisJCQkJCQkJCSAgIE5hbWVTdHIoYXR0ci0+YXR0bmFt ZSksCisJCQkJCQkJCSAgIGF0dHItPmF0dHR5cGlkLAorCQkJCQkJCQkgICBhdHRyLT5hdHR0 eXBtb2QsCisJCQkJCQkJCSAgIGF0dHItPmF0dG5kaW1zKTsKKwkJCX0KKworCQkJY3N0YXRl LT50dXBEZXNjID0gQmxlc3NUdXBsZURlc2MocmVzdWx0RGVzYyk7CisKKwkJCS8qCisJCQkg KiBQcmUtYWxsb2NhdGUgYXJyYXlzIGZvciBwcm9qZWN0aW5nIHNlbGVjdGVkIGNvbHVtbiB2 YWx1ZXMgaW50bworCQkJICogc2VxdWVudGlhbCBwb3NpdGlvbnMgbWF0Y2hpbmcgdGhlIGN1 c3RvbSBUdXBsZURlc2MuCisJCQkgKi8KKwkJCWNzdGF0ZS0+anNvbl9wcm9qdmFsdWVzID0g KERhdHVtICopIHBhbGxvYyhuYXR0cyAqIHNpemVvZihEYXR1bSkpOworCQkJY3N0YXRlLT5q c29uX3Byb2pudWxscyA9IChib29sICopIHBhbGxvYyhuYXR0cyAqIHNpemVvZihib29sKSk7 CisJCX0KIAl9CiAKIAludW1fcGh5c19hdHRycyA9IHR1cERlc2MtPm5hdHRzOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKaW5kZXggMzA5YTMzY2EyZTcuLjY0NWJkYzFhMjFj IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKQEAgLTc3LDYgKzc3LDkgQEAg YzEsImNvbCB3aXRoICwgY29tbWEiLCJjb2wgd2l0aCAiIiBxdW90ZSIKIGNvcHkgKHNlbGVj dCAxIHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsK IHsiP2NvbHVtbj8iOjF9CiB7Ij9jb2x1bW4/IjoyfQorY29weSAoc2VsZWN0IDEgYXMgZm9v IHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKK3si Zm9vIjoxfQoreyJmb28iOjJ9CiBjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3 aXRoIChmb3JtYXQganNvbik7CiB7ImNvbHVtbjEiOjF9CiB7ImNvbHVtbjEiOjJ9CkBAIC0x MjksOCArMTMyLDYgQEAgY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBy ZWplY3RfbGltaXQgMSk7CiBFUlJPUjogIENPUFkgUkVKRUNUX0xJTUlUIHJlcXVpcmVzIE9O X0VSUk9SIHRvIGJlIHNldCB0byBJR05PUkUKIGNvcHkgY29weXRlc3QgZnJvbSBzdGRpbihm b3JtYXQganNvbik7CiBFUlJPUjogIENPUFkgSlNPTiBtb2RlIGNhbm5vdCBiZSB1c2VkIHdp dGggQ09QWSBGUk9NCi1jb3B5IGNvcHl0ZXN0IChzdHlsZSkgdG8gc3Rkb3V0IChmb3JtYXQg anNvbik7Ci1FUlJPUjogIGNvbHVtbiBzZWxlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBK U09OIG1vZGUKIC0tIGFsbCBvZiB0aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCiAtLSBz aG91bGQgZmFpbDogZm9yY2VfYXJyYXkgcmVxdWlyZXMganNvbiBmb3JtYXQKIGNvcHkgY29w eXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3JjZV9hcnJheSB0cnVlKTsKQEAgLTE1 NSw2ICsxNTYsNjcgQEAgY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29uLCBm b3JjZV9hcnJheSBmYWxzZSk7CiB7InN0eWxlIjoiVW5peCIsInRlc3QiOiJhYmNcbmRlZiIs ImZpbGxlciI6Mn0KIHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIi OjN9CiB7InN0eWxlIjoiZXNjXFxhcGUiLCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZp bGxlciI6NH0KKy0tIGNvbHVtbiBsaXN0IHdpdGgganNvbiBmb3JtYXQKK2NvcHkgY29weXRl c3QgKHN0eWxlLCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJzdHlsZSI6 IkRPUyIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4IiwiZmlsbGVyIjoyfQoreyJzdHls ZSI6Ik1hYyIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsImZpbGxlciI6NH0K K2NvcHkgY29weXRlc3QgKHN0eWxlLCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24s ICBmb3JjZV9hcnJheSB0cnVlKTsKK1sKKyB7InN0eWxlIjoiRE9TIiwiZmlsbGVyIjoxfQor LHsic3R5bGUiOiJVbml4IiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMiLCJmaWxsZXIi OjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwiZmlsbGVyIjo0fQorXQorLS0gY29sdW1uIGxp c3Qgd2l0aCBkaXZlcnNlIGRhdGEgdHlwZXMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29u dGVzdF90eXBlcyAoCisgICAgaWQgaW50LAorICAgIGpzIGpzb24sCisgICAganNiIGpzb25i LAorICAgIGFyciBpbnRbXSwKKyAgICBuIG51bWVyaWMoMTAsMiksCisgICAgYiBib29sZWFu LAorICAgIHRzIHRpbWVzdGFtcCwKKyAgICB0IHRleHQpOworaW5zZXJ0IGludG8gY29weWpz b250ZXN0X3R5cGVzIHZhbHVlcworKDEsICd7ImEiOjF9JywgJ3siYiI6Mn0nLCAnezEsMiwz fScsIDMuMTQsIHRydWUsCisgJzIwMjQtMDEtMTUgMTA6MzA6MDAnLCAnaGVsbG8nKSwKKygy LCAnWzEsbnVsbCwieCJdJywgJ3sibmVzdGVkIjp7ImsiOiJ2In19JywgJ3s0LDV9JywgLTk5 Ljk5LCBmYWxzZSwKKyAnMjAyNC0wNi0zMCAyMzo1OTo1OScsICd3b3JsZCcpLAorKDMsICdu dWxsJywgJ251bGwnLCAne30nLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsKKy0tIGZ1bGwg dGFibGUKK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24p OworeyJpZCI6MSwianMiOnsiYSI6MX0sImpzYiI6eyJiIjogMn0sImFyciI6WzEsMiwzXSwi biI6My4xNCwiYiI6dHJ1ZSwidHMiOiIyMDI0LTAxLTE1VDEwOjMwOjAwIiwidCI6ImhlbGxv In0KK3siaWQiOjIsImpzIjpbMSxudWxsLCJ4Il0sImpzYiI6eyJuZXN0ZWQiOiB7ImsiOiAi diJ9fSwiYXJyIjpbNCw1XSwibiI6LTk5Ljk5LCJiIjpmYWxzZSwidHMiOiIyMDI0LTA2LTMw VDIzOjU5OjU5IiwidCI6IndvcmxkIn0KK3siaWQiOjMsImpzIjpudWxsLCJqc2IiOm51bGws ImFyciI6W10sIm4iOm51bGwsImIiOm51bGwsInRzIjpudWxsLCJ0IjpudWxsfQorLS0gY29s dW1uIHN1YnNldHMgZXhlcmNpc2luZyBlYWNoIHR5cGUKK2NvcHkgY29weWpzb250ZXN0X3R5 cGVzIChpZCwganMsIGpzYikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Cit7ImlkIjoxLCJq cyI6eyJhIjoxfSwianNiIjp7ImIiOiAyfX0KK3siaWQiOjIsImpzIjpbMSxudWxsLCJ4Il0s ImpzYiI6eyJuZXN0ZWQiOiB7ImsiOiAidiJ9fX0KK3siaWQiOjMsImpzIjpudWxsLCJqc2Ii Om51bGx9Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyAoaWQsIGFyciwgbiwgYikgdG8gc3Rk b3V0IChmb3JtYXQganNvbik7Cit7ImlkIjoxLCJhcnIiOlsxLDIsM10sIm4iOjMuMTQsImIi OnRydWV9Cit7ImlkIjoyLCJhcnIiOls0LDVdLCJuIjotOTkuOTksImIiOmZhbHNlfQoreyJp ZCI6MywiYXJyIjpbXSwibiI6bnVsbCwiYiI6bnVsbH0KK2NvcHkgY29weWpzb250ZXN0X3R5 cGVzIChqc2IsIHQpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJqc2IiOnsiYiI6IDJ9 LCJ0IjoiaGVsbG8ifQoreyJqc2IiOnsibmVzdGVkIjogeyJrIjogInYifX0sInQiOiJ3b3Js ZCJ9Cit7ImpzYiI6bnVsbCwidCI6bnVsbH0KK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChp ZCwgdHMpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOworeyJpZCI6MSwidHMiOiIyMDI0LTAx LTE1VDEwOjMwOjAwIn0KK3siaWQiOjIsInRzIjoiMjAyNC0wNi0zMFQyMzo1OTo1OSJ9Cit7 ImlkIjozLCJ0cyI6bnVsbH0KKy0tIHNpbmdsZSBjb2x1bW46IGpzb24gYW5kIGpzb25iCitj b3B5IGNvcHlqc29udGVzdF90eXBlcyAoanMpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24pOwor eyJqcyI6eyJhIjoxfX0KK3sianMiOlsxLG51bGwsIngiXX0KK3sianMiOm51bGx9Citjb3B5 IGNvcHlqc29udGVzdF90eXBlcyAoanNiKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKK3si anNiIjp7ImIiOiAyfX0KK3sianNiIjp7Im5lc3RlZCI6IHsiayI6ICJ2In19fQoreyJqc2Ii Om51bGx9Citkcm9wIHRhYmxlIGNvcHlqc29udGVzdF90eXBlczsKIC0tIGVtYmVkZGVkIGVz Y2FwZWQgY2hhcmFjdGVycwogY3JlYXRlIHRlbXAgdGFibGUgY29weWpzb250ZXN0ICgKICAg ICBpZCBiaWdzZXJpYWwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5 LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvcHkuc3FsCmluZGV4IDhhMjA5MDdkZDRj Li5jNGQ4Mzc2MjgwNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKQEAgLTg0LDYgKzg0LDcg QEAgY29weSBjb3B5dGVzdDMgdG8gc3Rkb3V0IGNzdiBoZWFkZXI7CiAKIC0tLSB0ZXN0IGNv cHlpbmcgaW4gSlNPTiBtb2RlIHdpdGggdmFyaW91cyBzdHlsZXMKIGNvcHkgKHNlbGVjdCAx IHVuaW9uIGFsbCBzZWxlY3QgMikgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCBqc29uKTsKK2Nv cHkgKHNlbGVjdCAxIGFzIGZvbyB1bmlvbiBhbGwgc2VsZWN0IDIpIHRvIHN0ZG91dCB3aXRo IChmb3JtYXQganNvbik7CiBjb3B5ICh2YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRo IChmb3JtYXQganNvbik7CiBjb3B5IChzZWxlY3QgMSB1bmlvbiBhbGwgc2VsZWN0IDIpIHRv IHN0ZG91dCB3aXRoIChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CiBjb3B5ICh2 YWx1ZXMgKDEpLCAoMikpIFRPIHN0ZG91dCB3aXRoIChmb3JtYXQganNvbiwgZm9yY2VfYXJy YXkgdHJ1ZSk7CkBAIC0xMDQsNyArMTA1LDYgQEAgY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBmb3JjZV9udWxsICopOwogY29weSBjb3B5dGVzdCB0byBzdGRvdXQg KGZvcm1hdCBqc29uLCBvbl9lcnJvciBpZ25vcmUpOwogY29weSBjb3B5dGVzdCB0byBzdGRv dXQgKGZvcm1hdCBqc29uLCByZWplY3RfbGltaXQgMSk7CiBjb3B5IGNvcHl0ZXN0IGZyb20g c3RkaW4oZm9ybWF0IGpzb24pOwotY29weSBjb3B5dGVzdCAoc3R5bGUpIHRvIHN0ZG91dCAo Zm9ybWF0IGpzb24pOwogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IK IAogLS0gc2hvdWxkIGZhaWw6IGZvcmNlX2FycmF5IHJlcXVpcmVzIGpzb24gZm9ybWF0CkBA IC0xMTUsNiArMTE1LDQzIEBAIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNv biwgZm9yY2VfYXJyYXkpOwogY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBqc29u LCBmb3JjZV9hcnJheSB0cnVlKTsKIGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOwogCistLSBjb2x1bW4gbGlzdCB3aXRoIGpzb24g Zm9ybWF0Citjb3B5IGNvcHl0ZXN0IChzdHlsZSwgZmlsbGVyKSB0byBzdGRvdXQgKGZvcm1h dCBqc29uKTsKK2NvcHkgY29weXRlc3QgKHN0eWxlLCBmaWxsZXIpIHRvIHN0ZG91dCAoZm9y bWF0IGpzb24sICBmb3JjZV9hcnJheSB0cnVlKTsKKworLS0gY29sdW1uIGxpc3Qgd2l0aCBk aXZlcnNlIGRhdGEgdHlwZXMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdF90eXBl cyAoCisgICAgaWQgaW50LAorICAgIGpzIGpzb24sCisgICAganNiIGpzb25iLAorICAgIGFy ciBpbnRbXSwKKyAgICBuIG51bWVyaWMoMTAsMiksCisgICAgYiBib29sZWFuLAorICAgIHRz IHRpbWVzdGFtcCwKKyAgICB0IHRleHQpOworCitpbnNlcnQgaW50byBjb3B5anNvbnRlc3Rf dHlwZXMgdmFsdWVzCisoMSwgJ3siYSI6MX0nLCAneyJiIjoyfScsICd7MSwyLDN9JywgMy4x NCwgdHJ1ZSwKKyAnMjAyNC0wMS0xNSAxMDozMDowMCcsICdoZWxsbycpLAorKDIsICdbMSxu dWxsLCJ4Il0nLCAneyJuZXN0ZWQiOnsiayI6InYifX0nLCAnezQsNX0nLCAtOTkuOTksIGZh bHNlLAorICcyMDI0LTA2LTMwIDIzOjU5OjU5JywgJ3dvcmxkJyksCisoMywgJ251bGwnLCAn bnVsbCcsICd7fScsIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworCistLSBmdWxsIHRhYmxl Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsKKwor LS0gY29sdW1uIHN1YnNldHMgZXhlcmNpc2luZyBlYWNoIHR5cGUKK2NvcHkgY29weWpzb250 ZXN0X3R5cGVzIChpZCwganMsIGpzYikgdG8gc3Rkb3V0IChmb3JtYXQganNvbik7Citjb3B5 IGNvcHlqc29udGVzdF90eXBlcyAoaWQsIGFyciwgbiwgYikgdG8gc3Rkb3V0IChmb3JtYXQg anNvbik7Citjb3B5IGNvcHlqc29udGVzdF90eXBlcyAoanNiLCB0KSB0byBzdGRvdXQgKGZv cm1hdCBqc29uKTsKK2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChpZCwgdHMpIHRvIHN0ZG91 dCAoZm9ybWF0IGpzb24pOworCistLSBzaW5nbGUgY29sdW1uOiBqc29uIGFuZCBqc29uYgor Y29weSBjb3B5anNvbnRlc3RfdHlwZXMgKGpzKSB0byBzdGRvdXQgKGZvcm1hdCBqc29uKTsK K2NvcHkgY29weWpzb250ZXN0X3R5cGVzIChqc2IpIHRvIHN0ZG91dCAoZm9ybWF0IGpzb24p OworCitkcm9wIHRhYmxlIGNvcHlqc29udGVzdF90eXBlczsKKwogLS0gZW1iZWRkZWQgZXNj YXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAg IGlkIGJpZ3NlcmlhbCwKLS0gCjIuNDMuMAoK --------------gRJnBR6TlUOqXKruLynssN0S--