Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tDHY0-00HESG-At for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Nov 2024 06:17:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tDHXy-00Agc2-AN for pgsql-hackers@arkaria.postgresql.org; Tue, 19 Nov 2024 06:17:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tDHXx-00Agbu-Eb for pgsql-hackers@lists.postgresql.org; Tue, 19 Nov 2024 06:17:10 +0000 Received: from mail-ua1-x92d.google.com ([2607:f8b0:4864:20::92d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tDHXt-002dvy-1T for pgsql-hackers@postgresql.org; Tue, 19 Nov 2024 06:17:08 +0000 Received: by mail-ua1-x92d.google.com with SMTP id a1e0cc1a2514c-85706e5ecabso1660475241.0 for ; Mon, 18 Nov 2024 22:17:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1731997024; x=1732601824; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=0vKPG8eLXFw5J0H8J5yGbxKAtWa+NttT3P5PjhdW6PY=; b=VRLQlu79P59UJgoPNNCa0uzFRuvs6QfPmS1NzYAV/FXWjKX8DJ+CX96BRWQGzPsdm9 9ueI8zfPsMPwPuLSIvARx/2lSrhStHCMJ8YST2W+4gzDXDufgZsQq4QTOgGdzVmAU8Tp ogbMSh4vcJgXWidvpOy7cQNT1zWoPQ5m4gaWqwiyn7pRUXoslHRap/uu7VKNc1SVKnRB JLz8joh+AT7o9HGMpS0rrTw8D2ObiWuBKu6NkI/gzyaP9MvOFc9zrjWB60kln9AnaNee j1CVBNndHYW3QanTG4Cl3U7A7j/8NWV+lig3Jw0knZww8PnPrLcLpBhUNdlmCgi/qzdQ ywMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731997024; x=1732601824; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0vKPG8eLXFw5J0H8J5yGbxKAtWa+NttT3P5PjhdW6PY=; b=BX5yzpUNCYxqzJzSNGE5e0s8Qcufs2honP1p3hXcSLkMouaEleiHm2LFYvygqzcAI+ DiXvqnquIitCQQXGwkpcDtXveliLAmAXoztPSbGbBT8u3rEtpSguwG5egyRomxcDiMfC bqiWn1mKZetdC9tmmRxdUYmhNdPVfl/Chf3USlNzSkW5/9JxQCRNGLn2LavgTYNSYWaR 1Pjwa0CfuoiR9wCNsZjWildzy6b0yULbUq+RlXKSJ9067OPFGlVZWs1pdQOzXHLEUsst Tq1AXcP+ue0y2/DmNBZFsIzS0Gl3f5jxrosXHbjEg6UlvA2jmOn1m/iYCNHr+RMxgOvc 2ssg== X-Forwarded-Encrypted: i=1; AJvYcCUvbPcImM2T1FK5S82Wcp97SevTYKL6qkw+TPKbKEj3DISFhEvMxI1xH9k3YZDgI3XNaVoP8tvNddmcKNqE@postgresql.org X-Gm-Message-State: AOJu0YxtPZ9acDj4SEc3n6gbqI8pHR/2n84+n9Mv9Yx/wIMaRpKro5nX 5S0PzNKszGDvay7WKmr960ffBgwJFsMvSKc3KxYHN8wB/9YntBcmQ3kEjJfadISxcQsoGo8Wg9D BEb5tjV9udgP2oHj5e3BQz1TWX7+RTiIrh3w= X-Google-Smtp-Source: AGHT+IHgpE9x9Dg6da59zLao3SkZYZcPl8P2AXSOyOvE32sgMhS/RpRNhhuWQCtbCfH2fIPO+w4fRg+5lUFuzXbC/k0= X-Received: by 2002:a05:6102:4427:b0:4ad:5c86:5cec with SMTP id ada2fe7eead31-4ad9f006d87mr1855437137.3.1731997023997; Mon, 18 Nov 2024 22:17:03 -0800 (PST) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> <153b71b8-b6fb-4930-aaff-a7334cb3f6d6@joeconway.com> <8ef5f5d6-38db-4624-8eef-2d96c9eba9d4@joeconway.com> In-Reply-To: From: jian he Date: Tue, 19 Nov 2024 14:16:52 +0800 Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: Joe Conway Cc: "Andrey M. Borodin" , Dean Rasheed , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000005e35d506273dfb84" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005e35d506273dfb84 Content-Type: text/plain; charset="UTF-8" hi. there. new patch attached. v13-00001 is from https://postgr.es/m/fbc63db8-94de-45f6-b327-50456630264d@app.fastmail.com just refactoring copy format. The author is Joel Jacobson! v13-0002, v13-0003 almost the same as previously v12. some minor change compared to v12: * refactor code, based on v13-0001. instead of a bool in CopyFormatOptions-> json_mode now we use typedef enum CopyFormat { COPY_FORMAT_TEXT = 0, COPY_FORMAT_BINARY, COPY_FORMAT_CSV, COPY_FORMAT_JSON, } CopyFormat; to represent the format of the COPY operation. * make JSON format cannot be used with {default, null, delimiter} options. and add related tests, documentation. * add tab_complete --0000000000005e35d506273dfb84 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0002-introduce-json-format-for-COPY-TO.patch" Content-Disposition: attachment; filename="v13-0002-introduce-json-format-for-COPY-TO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3o28va51 RnJvbSBlODY2ZTA3OWVhZTUzYjk5ODk0NWY5OGI2MzdmZmUyNGM1NzE3NjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTkgTm92IDIwMjQgMTI6MjU6NTMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MyAyLzNdIGludHJvZHVjZSBqc29uIGZvcm1hdCBmb3IgQ09QWSBUTwoKanNvbiBmb3JtYXQgaXMg b25seSBhbGxvd2VkIGluIENPUFkgVE8gb3BlcmF0aW9uLgphbHNvIGNhbm5vdCBiZSB1c2VkIHdp dGgge2hlYWRlciwgZGVmYXVsdCwgbnVsbCwgZGVsaW1pdGVyfSBvcHRpb25zLgoKZGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUx2ZlVrQnhUWXk1dVdQRlZ3cGtfN2lpMnpnVDA3dDNk LXlSX2N5NHNmcnJMVSUzRGtjZyU0MG1haWwuZ21haWwuY29tCmRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vNmEwNDYyOGQtMGQ1My00MWQ5LTllMzUtNWE4ZGMzMDJjMzRjQGpvZWNvbndh eS5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgIHwgMTMgKysrKyst LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICB8IDI5ICsrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICB8IDUxICsrKysrKysrKysrKysr KysrKysrKystLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgfCAgOCArKysr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbi5jICAgICAgIHwgIDUgKy0tCiBzcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaCAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9qc29uLmggICAgICAgICAgIHwg IDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCB8IDYwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8 IDQxICsrKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9u cygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5 LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAppbmRleCA4Mzk0NDAyZjA5Li41YmYw ZjM4ZDkwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtMjE5LDEwICsyMTksMTUgQEAgQ09QWSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIDxy ZXBsYWNlYWJsZQogICAgICAgU2VsZWN0cyB0aGUgZGF0YSBmb3JtYXQgdG8gYmUgcmVhZCBvciB3 cml0dGVuOgogICAgICAgPGxpdGVyYWw+dGV4dDwvbGl0ZXJhbD4sCiAgICAgICA8bGl0ZXJhbD5j c3Y8L2xpdGVyYWw+IChDb21tYSBTZXBhcmF0ZWQgVmFsdWVzKSwKKyAgICAgIDxsaXRlcmFsPmpz b248L2xpdGVyYWw+IChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbiksCiAgICAgICBvciA8bGl0 ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+dGV4 dDwvbGl0ZXJhbD4uCiAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNvcHktZmlsZS1mb3Jt YXRzIi8+IGJlbG93IGZvciBkZXRhaWxzLgogICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAg ICAgVGhlIDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4K KyAgICAgIDxjb21tYW5kPkNPUFkgVE88L2NvbW1hbmQ+LgorICAgICA8L3BhcmE+CiAgICAgPC9s aXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yNTcsNyArMjYyLDcgQEAgQ09QWSB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAoIDxyZXBsYWNlYWJsZQogICAgICAgKGxpbmUpIG9mIHRoZSBmaWxlLiAgVGhlIGRlZmF1bHQg aXMgYSB0YWIgY2hhcmFjdGVyIGluIHRleHQgZm9ybWF0LAogICAgICAgYSBjb21tYSBpbiA8bGl0 ZXJhbD5DU1Y8L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgIFRoaXMgbXVzdCBiZSBhIHNpbmdsZSBv bmUtYnl0ZSBjaGFyYWN0ZXIuCi0gICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVu IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRp b24gaXMgbm90IGFsbG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9y IDxsaXRlcmFsPmpzb248L2xpdGVyYWw+IGZvcm1hdC4KICAgICAgPC9wYXJhPgogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI3MSw3ICsyNzYsNyBAQCBDT1BZIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICgg PHJlcGxhY2VhYmxlCiAgICAgICBzdHJpbmcgaW4gPGxpdGVyYWw+Q1NWPC9saXRlcmFsPiBmb3Jt YXQuIFlvdSBtaWdodCBwcmVmZXIgYW4KICAgICAgIGVtcHR5IHN0cmluZyBldmVuIGluIHRleHQg Zm9ybWF0IGZvciBjYXNlcyB3aGVyZSB5b3UgZG9uJ3Qgd2FudCB0bwogICAgICAgZGlzdGluZ3Vp c2ggbnVsbHMgZnJvbSBlbXB0eSBzdHJpbmdzLgotICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFs bG93ZWQgd2hlbiB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IGZvcm1hdC4KKyAgICAg IFRoaXMgb3B0aW9uIGlzIG5vdCBhbGxvd2VkIHdoZW4gdXNpbmcgPGxpdGVyYWw+YmluYXJ5PC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5qc29uPC9saXRlcmFsPiBmb3JtYXQuCiAgICAgIDwvcGFyYT4K IAogICAgICA8bm90ZT4KQEAgLTI5NCw3ICsyOTksNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxl CiAgICAgICBpcyBmb3VuZCBpbiB0aGUgaW5wdXQgZmlsZSwgdGhlIGRlZmF1bHQgdmFsdWUgb2Yg dGhlIGNvcnJlc3BvbmRpbmcgY29sdW1uCiAgICAgICB3aWxsIGJlIHVzZWQuCiAgICAgICBUaGlz IG9wdGlvbiBpcyBhbGxvd2VkIG9ubHkgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiwg YW5kIG9ubHkgd2hlbgotICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4g Zm9ybWF0LgorICAgICAgbm90IHVzaW5nIDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4gb3IgPGxp dGVyYWw+anNvbjwvbGl0ZXJhbD4gZm9ybWF0LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgpAQCAtMzEwLDcgKzMxNSw3IEBAIENPUFkgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUKICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byA8bGl0ZXJhbD5NQVRDSDwv bGl0ZXJhbD4sIHRoZSBudW1iZXIgYW5kIG5hbWVzCiAgICAgICBvZiB0aGUgY29sdW1ucyBpbiB0 aGUgaGVhZGVyIGxpbmUgbXVzdCBtYXRjaCB0aGUgYWN0dWFsIGNvbHVtbiBuYW1lcyBvZgogICAg ICAgdGhlIHRhYmxlLCBpbiBvcmRlcjsgIG90aGVyd2lzZSBhbiBlcnJvciBpcyByYWlzZWQuCi0g ICAgICBUaGlzIG9wdGlvbiBpcyBub3QgYWxsb3dlZCB3aGVuIHVzaW5nIDxsaXRlcmFsPmJpbmFy eTwvbGl0ZXJhbD4gZm9ybWF0LgorICAgICAgVGhpcyBvcHRpb24gaXMgbm90IGFsbG93ZWQgd2hl biB1c2luZyA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmpzb248L2xpdGVy YWw+IGZvcm1hdC4KICAgICAgIFRoZSA8bGl0ZXJhbD5NQVRDSDwvbGl0ZXJhbD4gb3B0aW9uIGlz IG9ubHkgdmFsaWQgZm9yIDxjb21tYW5kPkNPUFkKICAgICAgIEZST008L2NvbW1hbmQ+IGNvbW1h bmRzLgogICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggYjdlODE5ZGU0MC4uNGI4YmM4 NzY2NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNTE2LDYgKzUxNiw4IEBAIFByb2Nlc3NDb3B5T3B0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9S TUFUX0NTVjsKIAkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQogCQkJCW9w dHNfb3V0LT5mb3JtYXQgPSBDT1BZX0ZPUk1BVF9CSU5BUlk7CisJCQllbHNlIGlmIChzdHJjbXAo Zm10LCAianNvbiIpID09IDApCisJCQkJb3B0c19vdXQtPmZvcm1hdCA9IENPUFlfRk9STUFUX0pT T047CiAJCQllbHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtNjgxLDE2ICs2ODMsMzIgQEAgUHJvY2Vzc0Nv cHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJLyotIHRyYW5zbGF0b3I6ICVzIGlzIHRo ZSBuYW1lIG9mIGEgQ09QWSBvcHRpb24sIGUuZy4gT05fRVJST1IgKi8KIAkJCQkgZXJybXNnKCJj YW5ub3Qgc3BlY2lmeSAlcyBpbiBCSU5BUlkgbW9kZSIsICJERUxJTUlURVIiKSkpOwogCisJaWYg KG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291dC0+ZGVsaW0p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBP Tl9FUlJPUiAqLworCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIs ICJERUxJTUlURVIiKSkpOworCiAJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lm eSAlcyBpbiBCSU5BUlkgbW9kZSIsICJOVUxMIikpKTsKIAorCWlmIChvcHRzX291dC0+Zm9ybWF0 ID09IENPUFlfRk9STUFUX0pTT04gJiYgb3B0c19vdXQtPm51bGxfcHJpbnQpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2co ImNhbm5vdCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJOVUxMIikpKTsKKwogCWlmIChvcHRz X291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+ZGVmYXVsdF9w cmludCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVG QVVMVCIpKSk7CiAKKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9KU09OICYm IG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBp biBKU09OIG1vZGUiLCAiREVGQVVMVCIpKSk7CisKIAkvKiBTZXQgZGVmYXVsdHMgZm9yIG9taXR0 ZWQgb3B0aW9ucyAqLwogCWlmICghb3B0c19vdXQtPmRlbGltKQogCQlvcHRzX291dC0+ZGVsaW0g PSBvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViA/ICIsIiA6ICJcdCI7CkBAIC03 NjEsNiArNzc5LDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9O X0VSUk9SICovCiAJCQkJIGVycm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUi LCAiSEVBREVSIikpKTsKIAorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0pT T04gJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coImNhbm5v dCBzcGVjaWZ5ICVzIGluIEpTT04gbW9kZSIsICJIRUFERVIiKSkpOworCiAJLyogQ2hlY2sgcXVv dGUgKi8KIAlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgJiYgb3B0c19v dXQtPnF1b3RlICE9IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC04NjQsNiArODg3LDEyIEBA IFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJIGVycm1zZygiQ09Q WSAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIiwgIkZSRUVaRSIsCiAJCQkJCQkiQ09QWSBUTyIp KSk7CiAKKwkvKiBDaGVjayBqc29uIGZvcm1hdCAgKi8KKwlpZiAob3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9KU09OICYmIGlzX2Zyb20pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiQ09Q WSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJDT1BZIEZST00iKSkpOworCiAJ aWYgKG9wdHNfb3V0LT5kZWZhdWx0X3ByaW50KQogCXsKIAkJaWYgKCFpc19mcm9tKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYwppbmRleCAwM2M5ZDcxZDM0Li44NzcwOWQ3NmJlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJs ZS5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2lu Y2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTMx LDYgKzMyLDcgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgi CiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKICNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtMTM5LDkgKzE0MSwyMCBAQCBTZW5kQ29weUJlZ2lu KENvcHlUb1N0YXRlIGNzdGF0ZSkKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5 T3V0UmVzcG9uc2UpOwogCXBxX3NlbmRieXRlKCZidWYsIGZvcm1hdCk7CS8qIG92ZXJhbGwgZm9y bWF0ICovCi0JcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKLQlmb3IgKGkgPSAwOyBpIDwgbmF0 dHM7IGkrKykKLQkJcHFfc2VuZGludDE2KCZidWYsIGZvcm1hdCk7IC8qIHBlci1jb2x1bW4gZm9y bWF0cyAqLworCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ICE9IENPUFlfRk9STUFUX0pTT04pCisJ eworCQlwcV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOworCQlmb3IgKGkgPSAwOyBpIDwgbmF0dHM7 IGkrKykKKwkJCXBxX3NlbmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1h dHMgKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogSlNPTiBmb3JtYXQgaXMgYWx3YXlzIG9u ZSBub24tYmluYXJ5IGNvbHVtbgorCQkgKi8KKwkJcHFfc2VuZGludDE2KCZidWYsIDEpOworCQlw cV9zZW5kaW50MTYoJmJ1ZiwgMCk7CisJfQogCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiAJY3N0YXRl LT5jb3B5X2Rlc3QgPSBDT1BZX0ZST05URU5EOwogfQpAQCAtOTIxLDcgKzkzNCw3IEBAIENvcHlP bmVSb3dUbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCS8qIE1h a2Ugc3VyZSB0aGUgdHVwbGUgaXMgZnVsbHkgZGVjb25zdHJ1Y3RlZCAqLwogCXNsb3RfZ2V0YWxs YXR0cnMoc2xvdCk7CiAKLQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9C SU5BUlkpCisJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfVEVYVCB8fCBj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAl7CiAJCWJvb2wJCW5lZWRf ZGVsaW0gPSBmYWxzZTsKIApAQCAtOTQ5LDcgKzk2Miw3IEBAIENvcHlPbmVSb3dUbyhDb3B5VG9T dGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCQkJfQogCQl9CiAJfQotCWVsc2UK KwllbHNlIGlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7 CiAJCWZvcmVhY2hfaW50KGF0dG51bSwgY3N0YXRlLT5hdHRudW1saXN0KQogCQl7CkBAIC05Njks NiArOTgyLDM0IEBAIENvcHlPbmVSb3dUbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KQogCQkJfQogCQl9CiAJfQorCWVsc2UKKwl7CisJCURhdHVtCQlyb3dkYXRhOwor CQlTdHJpbmdJbmZvCXJlc3VsdDsKKworCQkvKgorCQkgKiBpZiBDT1BZIFRPIHNvdXJjZSBkYXRh IGlzIGZyb20gYSBxdWVyeSwgbm90IGEgdGFibGUgKGNvcHkgdGhlX3RhYmxlCisJCSAqIHRvIHN0 ZG91dCksIHRoZW4gd2UgbmVlZCBjb3B5IENvcHlUb1N0YXRlLT5UdXBsZURlc2MtPmF0dHJzIHRv CisJCSAqIHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3ItPmF0dHJzIGJlY2F1c2UgdGhlIHNsb3Qn cyBUdXBsZURlc2MtPmF0dHJzCisJCSAqIG1heSBjaGFuZ2UgZHVyaW5nIHF1ZXJ5IGV4ZWN1dGlv biwgYnV0IGNvbXBvc2l0ZV90b19qc29uIHJlcXVpcmVzCisJCSAqIGNvcnJlY3QgVHVwbGVEZXNj LT5hdHRycyBmb3IgY29uc3RydWN0aW5nIHRoZSBqc29uIGtleXMuCisJCSAqIGNvbXBvc2l0ZV90 b19qc29uIHdpbGwgaXRlcmF0ZSBlYWNoIFR1cGxlRGVzYy0+YXR0cnMgc28gbm8gbmVlZCB0bwor CQkgKiBjb3B5IG90aGVyIGZpZWxkcyBpbiBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy4KKwkJ Ki8KKwkJaWYoIWNzdGF0ZS0+cmVsKQorCQl7CisJCQltZW1jcHkoVHVwbGVEZXNjQXR0cihzbG90 LT50dHNfdHVwbGVEZXNjcmlwdG9yLCAwKSwKKwkJCQlUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVl cnlEZXNjLT50dXBEZXNjLCAwKSwKKwkJCQljc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYy0+bmF0 dHMgKiBzaXplb2YoRm9ybURhdGFfcGdfYXR0cmlidXRlKSk7CisKKwkJCUJsZXNzVHVwbGVEZXNj KHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IpOworCQl9CisJCXJvd2RhdGEgPSBFeGVjRmV0Y2hT bG90SGVhcFR1cGxlRGF0dW0oc2xvdCk7CisJCXJlc3VsdCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJ CWNvbXBvc2l0ZV90b19qc29uKHJvd2RhdGEsIHJlc3VsdCwgZmFsc2UpOworCisJCUNvcHlTZW5k RGF0YShjc3RhdGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOworCX0KIAogCUNvcHlTZW5k RW5kT2ZSb3coY3N0YXRlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjdlYjk2Mzk2YS4uODUzNTMyY2Y3 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CkBAIC0zNDU3LDYgKzM0NTcsMTAgQEAgY29weV9vcHRfaXRlbToKIAkJ CQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oImZvcm1hdCIsIChOb2RlICopIG1ha2VTdHJpbmco ImNzdiIpLCBAMSk7CiAJCQkJfQorCQkJfCBKU09OCisJCQkJeworCQkJCQkkJCA9IG1ha2VEZWZF bGVtKCJmb3JtYXQiLCAoTm9kZSAqKSBtYWtlU3RyaW5nKCJqc29uIiksIEAxKTsKKwkJCQl9CiAJ CQl8IEhFQURFUl9QCiAJCQkJewogCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCJoZWFkZXIiLCAoTm9k ZSAqKSBtYWtlQm9vbGVhbih0cnVlKSwgQDEpOwpAQCAtMzUzOSw2ICszNTQzLDEwIEBAIGNvcHlf Z2VuZXJpY19vcHRfZWxlbToKIAkJCQl7CiAJCQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBA MSk7CiAJCQkJfQorCQkJfCBGT1JNQVRfTEEgY29weV9nZW5lcmljX29wdF9hcmcKKwkJCXsKKwkJ CQkkJCA9IG1ha2VEZWZFbGVtKCJmb3JtYXQiLCAkMiwgQDEpOworCQkJfQogCQk7CiAKIGNvcHlf Z2VuZXJpY19vcHRfYXJnOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24u YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKaW5kZXggMDU4YWFkZTJhZi4uNWRlOWI4 NmE5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb24uYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbi5jCkBAIC04NSw4ICs4NSw2IEBAIHR5cGVkZWYgc3RydWN0 IEpzb25BZ2dTdGF0ZQogCUpzb25VbmlxdWVCdWlsZGVyU3RhdGUgdW5pcXVlX2NoZWNrOwogfSBK c29uQWdnU3RhdGU7CiAKLXN0YXRpYyB2b2lkIGNvbXBvc2l0ZV90b19qc29uKERhdHVtIGNvbXBv c2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsCi0JCQkJCQkJICBib29sIHVzZV9saW5lX2ZlZWRzKTsK IHN0YXRpYyB2b2lkIGFycmF5X2RpbV90b19qc29uKFN0cmluZ0luZm8gcmVzdWx0LCBpbnQgZGlt LCBpbnQgbmRpbXMsIGludCAqZGltcywKIAkJCQkJCQkgIERhdHVtICp2YWxzLCBib29sICpudWxs cywgaW50ICp2YWxjb3VudCwKIAkJCQkJCQkgIEpzb25UeXBlQ2F0ZWdvcnkgdGNhdGVnb3J5LCBP aWQgb3V0ZnVuY29pZCwKQEAgLTUxNiw4ICs1MTQsOSBAQCBhcnJheV90b19qc29uX2ludGVybmFs KERhdHVtIGFycmF5LCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGluZV9mZWVkcykKIAog LyoKICAqIFR1cm4gYSBjb21wb3NpdGUgLyByZWNvcmQgaW50byBKU09OLgorICogRXhwb3J0ZWQg c28gQ09QWSBUTyBjYW4gdXNlIGl0LgogICovCi1zdGF0aWMgdm9pZAordm9pZAogY29tcG9zaXRl X3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwgYm9vbCB1c2VfbGlu ZV9mZWVkcykKIHsKIAlIZWFwVHVwbGVIZWFkZXIgdGQ7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5k ZXggZmFkMjI3Nzk5MS4uNDhjZjg1NGExZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzIz OSw3ICszMjM5LDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAKIAkv KiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST018VE8gZmlsZW5hbWUgV0lUSCAoRk9STUFUICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST018VE8iLCBNYXRj aEFueSwgIldJVEgiLCAiKCIsICJGT1JNQVQiKSkKLQkJQ09NUExFVEVfV0lUSCgiYmluYXJ5Iiwg ImNzdiIsICJ0ZXh0Iik7CisJCUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjc3YiLCAidGV4dCIs ICJqc29uIik7CiAKIAkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5hbWUgV0lUSCAo T05fRVJST1IgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAi RlJPTXxUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIk9OX0VSUk9SIikpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmgKaW5kZXggYzNkMWRmMjY3Zi4uMDc2YWU1OWY5NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtNTks NiArNTksNyBAQCB0eXBlZGVmIGVudW0gQ29weUZvcm1hdAogCUNPUFlfRk9STUFUX1RFWFQgPSAw LAogCUNPUFlfRk9STUFUX0JJTkFSWSwKIAlDT1BZX0ZPUk1BVF9DU1YsCisJQ09QWV9GT1JNQVRf SlNPTiwKIH0gQ29weUZvcm1hdDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxz L2pzb24uaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAppbmRleCA3OWMxMDYyZTFiLi5jOTA0 ZWY2YzZlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbi5oCkBAIC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAibGliL3N0cmlu Z2luZm8uaCIKIAogLyogZnVuY3Rpb25zIGluIGpzb24uYyAqLworZXh0ZXJuIHZvaWQgY29tcG9z aXRlX3RvX2pzb24oRGF0dW0gY29tcG9zaXRlLCBTdHJpbmdJbmZvIHJlc3VsdCwKKwkJCQkJCQkg IGJvb2wgdXNlX2xpbmVfZmVlZHMpOwogZXh0ZXJuIHZvaWQgZXNjYXBlX2pzb24oU3RyaW5nSW5m byBidWYsIGNvbnN0IGNoYXIgKnN0cik7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbl93aXRoX2xl bihTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuKTsKIGV4dGVybiB2b2lk IGVzY2FwZV9qc29uX3RleHQoU3RyaW5nSW5mbyBidWYsIGNvbnN0IHRleHQgKnR4dCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jb3B5Lm91dAppbmRleCBmNTU0ZDQyYzg0Li40MzBmMTFmM2YxIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQKQEAgLTczLDYgKzczLDY2IEBAIGNvcHkgY29weXRl c3QzIHRvIHN0ZG91dCBjc3YgaGVhZGVyOwogYzEsImNvbCB3aXRoICwgY29tbWEiLCJjb2wgd2l0 aCAiIiBxdW90ZSIKIDEsYSwxCiAyLGIsMgorLS0tIHRlc3QgY29weWluZyBpbiBKU09OIG1vZGUg d2l0aCB2YXJpb3VzIHN0eWxlcworY29weSBjb3B5dGVzdCB0byBzdGRvdXQganNvbjsKK3sic3R5 bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4 IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJh YmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxc clxcXG5cXG5iIiwiZmlsbGVyIjo0fQorY29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCBq c29uKTsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJcbmRlZiIsImZpbGxlciI6MX0KK3si c3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQoreyJzdHlsZSI6Ik1h YyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3sic3R5bGUiOiJlc2NcXGFwZSIsInRl c3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQorLS0gYWxsIG9mIHRoZSBmb2xsb3dp bmcgc2hvdWxkIHlpZWxkIGVycm9yCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24sIGhlYWRlcik7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5IEhFQURFUiBpbiBKU09OIG1vZGUK K2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgbnVsbCAnXE4nKTsKK0VSUk9S OiAgY2Fubm90IHNwZWNpZnkgTlVMTCBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7CitFUlJPUjogIGNhbm5vdCBzcGVjaWZ5 IERFTElNSVRFUiBpbiBKU09OIG1vZGUKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQg anNvbiwgZGVmYXVsdCAnfCcpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBERUZBVUxUIGluIEpT T04gbW9kZQorY29weSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKK0VSUk9SOiAg Q09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZIEZST00KKy0tIGFsbCBvZiB0 aGUgYWJvdmUgc2hvdWxkIHlpZWxkIGVycm9yCistLSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3Rl cnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAor ICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOworaW5zZXJ0IGludG8gY29weWpzb250 ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNFIFdIRU4gZy5pICUgMiA9IDAgVEhFTgor ICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0OiAnIHx8IGcuaTo6dGV4dAorICAgICAgICAg RUxTRQorICAgICAgICAgICAnbGluZSB3aXRoICIgaW4gaXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAg ICAgICBFTkQsCisgICAgICAgICAnTW9uIEZlYiAxMCAxNzozMjowMSAxOTk3IFBTVCcKKyAgZnJv bSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworaW5zZXJ0IGludG8gY29weWpzb250ZXN0 IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAorKEUnYWFhXFxiYmInOjp0ZXh0KSwK KyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6OnRleHQpLAorKEUnYWFhXGZiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdhYWFccmJiYic6OnRleHQpLAorKEUn YWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOworeyJp ZCI6MSwiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDEiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6 MDEtMDg6MDAifQoreyJpZCI6MiwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogMiIsImYyIjoiMTk5 Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjozLCJmMSI6ImxpbmUgd2l0aCBcIiBpbiBp dDogMyIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo0LCJmMSI6Imxp bmUgd2l0aCAnIGluIGl0OiA0IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3si aWQiOjUsImYxIjoibGluZSB3aXRoIFwiIGluIGl0OiA1IiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMy OjAxLTA4OjAwIn0KK3siaWQiOjEsImYxIjoiYWFhXCJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjIs ImYxIjoiYWFhXFxiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjMsImYxIjoiYWFhL2JiYiIsImYyIjpu dWxsfQoreyJpZCI6NCwiZjEiOiJhYWFcYmJiYiIsImYyIjpudWxsfQoreyJpZCI6NSwiZjEiOiJh YWFcZmJiYiIsImYyIjpudWxsfQoreyJpZCI6NiwiZjEiOiJhYWFcbmJiYiIsImYyIjpudWxsfQor eyJpZCI6NywiZjEiOiJhYWFccmJiYiIsImYyIjpudWxsfQoreyJpZCI6OCwiZjEiOiJhYWFcdGJi YiIsImYyIjpudWxsfQogY3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3Q0ICgKIAljMSBpbnQsCiAJ ImNvbG5hbWUgd2l0aCB0YWI6IAkiIHRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvY29weS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbAppbmRleCBmMTY5 OWI2NmIwLi4zZDIxZjIwYzk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5 LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5LnNxbApAQCAtODIsNiArODIsNDcg QEAgdGhpcyBpcyBqdXN0IGEgbGluZSBmdWxsIG9mIGp1bmsgdGhhdCB3b3VsZCBlcnJvciBvdXQg aWYgcGFyc2VkCiAKIGNvcHkgY29weXRlc3QzIHRvIHN0ZG91dCBjc3YgaGVhZGVyOwogCistLS0g dGVzdCBjb3B5aW5nIGluIEpTT04gbW9kZSB3aXRoIHZhcmlvdXMgc3R5bGVzCitjb3B5IGNvcHl0 ZXN0IHRvIHN0ZG91dCBqc29uOworCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpz b24pOworCistLSBhbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgeWllbGQgZXJyb3IKK2NvcHkg Y29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgaGVhZGVyKTsKK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgbnVsbCAnXE4nKTsKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZGVsaW1pdGVyICd8Jyk7Citjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91 dCAoZm9ybWF0IGpzb24sIGRlZmF1bHQgJ3wnKTsKK2NvcHkgY29weXRlc3QgZnJvbSBzdGRpbihm b3JtYXQganNvbik7CistLSBhbGwgb2YgdGhlIGFib3ZlIHNob3VsZCB5aWVsZCBlcnJvcgorCist LSBlbWJlZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29u dGVzdCAoCisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1w dHopOworCitpbnNlcnQgaW50byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAg IENBU0UgV0hFTiBnLmkgJSAyID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4g aXQ6ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGgg IiBpbiBpdDogJyB8fCBnLmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmVi IDEwIDE3OjMyOjAxIDE5OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGco aSk7CisKK2luc2VydCBpbnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmIn Ojp0ZXh0KSwKKyhFJ2FhYVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUn YWFhXGJiYmInOjp0ZXh0KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRl eHQpLAorKEUnYWFhXHJiYmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7CisKK2NvcHkg Y29weWpzb250ZXN0IHRvIHN0ZG91dCBqc29uOworCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5dGVz dDQgKAogCWMxIGludCwKIAkiY29sbmFtZSB3aXRoIHRhYjogCSIgdGV4dCk7Ci0tIAoyLjM0LjEK Cg== --0000000000005e35d506273dfb84 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Disposition: attachment; filename="v13-0003-Add-option-force_array-for-COPY-JSON-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3o28v9w0 RnJvbSBhZDVhODU1Y2VhYzJhMmJmNzYyMDA5MjEwZDFmODE5M2RkYTU4ZmIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTkgTm92IDIwMjQgMTI6MjI6MTggKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MyAzLzNdIEFkZCBvcHRpb24gZm9yY2VfYXJyYXkgZm9yIENPUFkgSlNPTiBGT1JNQVQKCmZvcmNl X2FycmF5IG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIGluIENPUFkgVE8gd2l0aCBKU09OIGZvcm1h dC4KaXQgbWFrZSB0aGUgb3V0cHV0IGpzb24gb3V0cHV0IGJlaGF2ZSBsaWtlIGpzb24gYXJyYXkg dHlwZS4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FMdmZVa0J4VFl5NXVXUEZW d3BrXzdpaTJ6Z1QwN3QzZC15Ul9jeTRzZnJyTFUlM0RrY2clNDBtYWlsLmdtYWlsLmNvbQpkaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzZhMDQ2MjhkLTBkNTMtNDFkOS05ZTM1LTVhOGRj MzAyYzM0Y0Bqb2Vjb253YXkuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgICAg ICAgICB8IDE0ICsrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAg ICAgIHwgMTMgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAg ICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcHNxbC90YWItY29t cGxldGUuaW4uYyAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAg ICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weS5vdXQgfCAyMyArKysrKysr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwgICAgICB8ICA5 ICsrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbAppbmRleCA1YmYwZjM4ZDkwLi41MGNlYmVjMGNlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbApAQCAtNDMsNiArNDMsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgRk9SQ0Vf UVVPVEUgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05PVF9OVUxMIHsgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5d ICkgfCAqIH0KICAgICBGT1JDRV9OVUxMIHsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgfCAqIH0KKyAgICBGT1JDRV9B UlJBWSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJs ZT4gXQogICAgIE9OX0VSUk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9h Y3Rpb248L3JlcGxhY2VhYmxlPgogICAgIFJFSkVDVF9MSU1JVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bWF4ZXJyb3I8L3JlcGxhY2VhYmxlPgogICAgIEVOQ09ESU5HICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFtZTwvcmVwbGFjZWFibGU+JwpAQCAt MzkyLDYgKzM5MywxOSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRl cmFsPkZPUkNFX0FSUkFZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgRm9yY2Ugb3V0cHV0IG9mIHNxdWFyZSBicmFja2V0cyBhcyBhcnJheSBkZWNv cmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICBhbmQgZW5kIG9mIG91dHB1dCwgYW5kIGNv bW1hcyBiZXR3ZWVuIHRoZSByb3dzLiBJdCBpcyBhbGxvd2VkIG9ubHkgaW4KKyAgICAgIDxjb21t YW5kPkNPUFkgVE88L2NvbW1hbmQ+LCBhbmQgb25seSB3aGVuIHVzaW5nCisgICAgICA8bGl0ZXJh bD5KU09OPC9saXRlcmFsPiBmb3JtYXQuIFRoZSBkZWZhdWx0IGlzCisgICAgICA8bGl0ZXJhbD5m YWxzZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+T05fRVJS T1I8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCA0 YjhiYzg3NjY2Li43MTA5MWUxYmYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00OTAsNiArNDkwLDcg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQlvbl9lcnJv cl9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQlsb2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZh bHNlOwogCWJvb2wJCXJlamVjdF9saW1pdF9zcGVjaWZpZWQgPSBmYWxzZTsKKwlib29sCQlmb3Jj ZV9hcnJheV9zcGVjaWZpZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CiAKIAkvKiBT dXBwb3J0IGV4dGVybmFsIHVzZSBmb3Igb3B0aW9uIHNhbml0eSBjaGVja2luZyAqLwpAQCAtNjQ0 LDYgKzY0NSwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCQlkZWZlbC0+ZGVmbmFtZSksCiAJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwg ZGVmZWwtPmxvY2F0aW9uKSkpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgImZvcmNlX2FycmF5IikgPT0gMCkKKwkJeworCQkJaWYgKGZvcmNlX2FycmF5X3NwZWNpZmll ZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKwkJCWZvcmNl X2FycmF5X3NwZWNpZmllZCA9IHRydWU7CisJCQlvcHRzX291dC0+Zm9yY2VfYXJyYXkgPSBkZWZH ZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUs ICJvbl9lcnJvciIpID09IDApCiAJCXsKIAkJCWlmIChvbl9lcnJvcl9zcGVjaWZpZWQpCkBAIC04 OTMsNiArOTAxLDExIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1z ZygiQ09QWSBqc29uIG1vZGUgY2Fubm90IGJlIHVzZWQgd2l0aCAlcyIsICJDT1BZIEZST00iKSkp OwogCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfSlNPTiAmJiBvcHRzX291 dC0+Zm9yY2VfYXJyYXkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiQ09QWSAlcyBjYW4gb25seSB1 c2VkIHdpdGggSlNPTiBtb2RlIiwgIkZPUkNFX0FSUkFZIikpKTsKKwogCWlmIChvcHRzX291dC0+ ZGVmYXVsdF9wcmludCkKIAl7CiAJCWlmICghaXNfZnJvbSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5k ZXggODc3MDlkNzZiZS4uN2QyMmVhN2U4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTgxLDYg KzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJTGlzdAkgICAqYXR0bnVt bGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8KIAljaGFyCSAgICpm aWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8KIAlib29sCQlpc19w cm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCisJYm9vbAkJ anNvbl9yb3dfZGVsaW1fbmVlZGVkOwkvKiBuZWVkIGRlbGltaXRlciB0byBzdGFydCBuZXh0IGpz b24gYXJyYXkgZWxlbWVudCAqLwogCWNvcHlfZGF0YV9kZXN0X2NiIGRhdGFfZGVzdF9jYjsgLyog ZnVuY3Rpb24gZm9yIHdyaXRpbmcgZGF0YSAqLwogCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsK QEAgLTg1OCw2ICs4NTksMTUgQEAgRG9Db3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogCiAJCQlD b3B5U2VuZEVuZE9mUm93KGNzdGF0ZSk7CiAJCX0KKwkJLyoKKwkJICogSWYgSlNPTiBoYXMgYmVl biByZXF1ZXN0ZWQsIGFuZCBGT1JDRV9BUlJBWSBoYXMgYmVlbiBzcGVjaWZpZWQgc2VuZAorCQkg KiB0aGUgb3BlbmluZyBicmFja2V0LgorCQkqLworCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9KU09OICYmIGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJeworCQkJ Q29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJCUNvcHlTZW5kRW5kT2ZSb3coY3N0YXRlKTsK KwkJfQogCX0KIAogCWlmIChjc3RhdGUtPnJlbCkKQEAgLTkwNSw2ICs5MTUsMTUgQEAgRG9Db3B5 VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogCQlDb3B5U2VuZEVuZE9mUm93KGNzdGF0ZSk7CiAJfQog CisJLyoKKwkgKiBJZiBKU09OIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIEZPUkNFX0FSUkFZIGhh cyBiZWVuIHNwZWNpZmllZCBzZW5kIHRoZQorCSAqIGNsb3NpbmcgYnJhY2tldC4KKwkqLworCWlm IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0pTT04gJiYgY3N0YXRlLT5vcHRz LmZvcmNlX2FycmF5KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ10nKTsKKwkJQ29weVNl bmRFbmRPZlJvdyhjc3RhdGUpOworCX0KIAlNZW1vcnlDb250ZXh0RGVsZXRlKGNzdGF0ZS0+cm93 Y29udGV4dCk7CiAKIAlpZiAoZmVfY29weSkKQEAgLTEwMDgsNiArMTAyNywxNSBAQCBDb3B5T25l Um93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAkJcmVzdWx0 ID0gbWFrZVN0cmluZ0luZm8oKTsKIAkJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgcmVzdWx0 LCBmYWxzZSk7CiAKKwkJaWYgKGNzdGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVkICYmIGNzdGF0 ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICcsJyk7CisJCWVs c2UgaWYgKGNzdGF0ZS0+b3B0cy5mb3JjZV9hcnJheSkKKwkJeworCQkJLyogZmlyc3Qgcm93IG5l ZWRzIG5vIGRlbGltaXRlciAqLworCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJyAnKTsKKwkJCWNz dGF0ZS0+anNvbl9yb3dfZGVsaW1fbmVlZGVkID0gdHJ1ZTsKKwkJfQorCiAJCUNvcHlTZW5kRGF0 YShjc3RhdGUsIHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4pOwogCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCmluZGV4IDQ4Y2Y4NTRhMWQuLmYyOTFlN2NhYmEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKQEAgLTMyMzQsNyArMzIzNCw3IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJu X2lkLAogCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRP IiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKIAkJQ09NUExFVEVfV0lUSCgiRk9STUFUIiwgIkZS RUVaRSIsICJERUxJTUlURVIiLCAiTlVMTCIsCiAJCQkJCSAgIkhFQURFUiIsICJRVU9URSIsICJF U0NBUEUiLCAiRk9SQ0VfUVVPVEUiLAotCQkJCQkgICJGT1JDRV9OT1RfTlVMTCIsICJGT1JDRV9O VUxMIiwgIkVOQ09ESU5HIiwgIkRFRkFVTFQiLAorCQkJCQkgICJGT1JDRV9OT1RfTlVMTCIsICJG T1JDRV9OVUxMIiwgIkZPUkNFX0FSUkFZIiwgIkVOQ09ESU5HIiwgIkRFRkFVTFQiLAogCQkJCQkg ICJPTl9FUlJPUiIsICJMT0dfVkVSQk9TSVRZIik7CiAKIAkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+ IEZST018VE8gZmlsZW5hbWUgV0lUSCAoRk9STUFUICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMDc2 YWU1OWY5Ni4uMjVlNTM0YjkwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtOTIsNiArOTIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwogCUxpc3QJICAgKmZvcmNlX251bGw7CQkv KiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAqLwogCWJvb2wJCWZvcmNlX251bGxfYWxsOyAvKiBGT1JD RV9OVUxMICo/ICovCiAJYm9vbAkgICAqZm9yY2VfbnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBD U1YgRk4gZmxhZ3MgKi8KKwlib29sCQlmb3JjZV9hcnJheTsJLyogYWRkIEpTT04gYXJyYXkgZGVj b3JhdGlvbnMgKi8KIAlib29sCQljb252ZXJ0X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUg YmluYXJ5IGNvbnZlcnNpb24/ICovCiAJQ29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdo YXQgdG8gZG8gd2hlbiBlcnJvciBoYXBwZW5lZCAqLwogCUNvcHlMb2dWZXJib3NpdHlDaG9pY2Ug bG9nX3ZlcmJvc2l0eTsJLyogdmVyYm9zaXR5IG9mIGxvZ2dlZCBtZXNzYWdlcyAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29weS5vdXQKaW5kZXggNDMwZjExZjNmMS4uYTM1ZmZiZTY4MyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvcHkub3V0CkBAIC05Niw2ICs5NiwyOSBAQCBFUlJPUjogIGNhbm5v dCBzcGVjaWZ5IERFRkFVTFQgaW4gSlNPTiBtb2RlCiBjb3B5IGNvcHl0ZXN0IGZyb20gc3RkaW4o Zm9ybWF0IGpzb24pOwogRVJST1I6ICBDT1BZIGpzb24gbW9kZSBjYW5ub3QgYmUgdXNlZCB3aXRo IENPUFkgRlJPTQogLS0gYWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgeWllbGQgZXJyb3IKKy0tRXJy b3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgY3N2LCBmb3JjZV9hcnJheSB0cnVl KTsKK0VSUk9SOiAgQ09QWSBGT1JDRV9BUlJBWSBjYW4gb25seSB1c2VkIHdpdGggSlNPTiBtb2Rl CistLW9rCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0IGpzb24sIGZvcmNlX2FycmF5 KTsKK1sKKyB7InN0eWxlIjoiRE9TIiwidGVzdCI6ImFiY1xyXG5kZWYiLCJmaWxsZXIiOjF9Ciss eyJzdHlsZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9CisseyJzdHlsZSI6 Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KKyx7InN0eWxlIjoiZXNjXFxhcGUi LCJ0ZXN0IjoiYVxcclxcXHJcXFxuXFxuYiIsImZpbGxlciI6NH0KK10KK2NvcHkgY29weXRlc3Qg dG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CitbCisgeyJzdHlsZSI6 IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5bGUiOiJVbml4Iiwi dGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJj XHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxy XFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0 IGpzb24sIGZvcmNlX2FycmF5IGZhbHNlKTsKK3sic3R5bGUiOiJET1MiLCJ0ZXN0IjoiYWJjXHJc bmRlZiIsImZpbGxlciI6MX0KK3sic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmls bGVyIjoyfQoreyJzdHlsZSI6Ik1hYyIsInRlc3QiOiJhYmNccmRlZiIsImZpbGxlciI6M30KK3si c3R5bGUiOiJlc2NcXGFwZSIsInRlc3QiOiJhXFxyXFxcclxcXG5cXG5iIiwiZmlsbGVyIjo0fQog LS0gZW1iZWRkZWQgZXNjYXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNv bnRlc3QgKAogICAgIGlkIGJpZ3NlcmlhbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvcHkuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKaW5kZXggM2QyMWYy MGM5OC4uOTFkYWY4NDgyYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weS5zcWwKQEAgLTk1LDYgKzk1LDE1IEBA IGNvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQganNvbiwgZGVmYXVsdCAnfCcpOwogY29w eSBjb3B5dGVzdCBmcm9tIHN0ZGluKGZvcm1hdCBqc29uKTsKIC0tIGFsbCBvZiB0aGUgYWJvdmUg c2hvdWxkIHlpZWxkIGVycm9yCiAKKy0tRXJyb3IKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChm b3JtYXQgY3N2LCBmb3JjZV9hcnJheSB0cnVlKTsKKworLS1vaworY29weSBjb3B5dGVzdCB0byBz dGRvdXQgKGZvcm1hdCBqc29uLCBmb3JjZV9hcnJheSk7CisKK2NvcHkgY29weXRlc3QgdG8gc3Rk b3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgdHJ1ZSk7CisKK2NvcHkgY29weXRlc3QgdG8g c3Rkb3V0IChmb3JtYXQganNvbiwgZm9yY2VfYXJyYXkgZmFsc2UpOwogLS0gZW1iZWRkZWQgZXNj YXBlZCBjaGFyYWN0ZXJzCiBjcmVhdGUgdGVtcCB0YWJsZSBjb3B5anNvbnRlc3QgKAogICAgIGlk IGJpZ3NlcmlhbCwKLS0gCjIuMzQuMQoK --0000000000005e35d506273dfb84 Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0001-Introduce-CopyFormat-and-replace-csv_mode-and-bi.patch" Content-Disposition: attachment; filename="v13-0001-Introduce-CopyFormat-and-replace-csv_mode-and-bi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3o28va82 RnJvbSA2OWRkMDM3ZmJmYzIxMTY4NDAxMGI1ZjI0OTc3MjM0Y2Y5NzBiMzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9yZz4KRGF0 ZTogVGh1LCAyNCBPY3QgMjAyNCAwODoyNDoxMyArMDMwMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDEv M10gSW50cm9kdWNlIENvcHlGb3JtYXQgYW5kIHJlcGxhY2UgY3N2X21vZGUgYW5kIGJpbmFyeQog ZmllbGRzIHdpdGggaXQuCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAg ICB8IDUwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHlmcm9tLmMgICAgICB8IDEwICsrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b21wYXJzZS5jIHwgMzQgKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMgICAgICAgIHwgMjAgKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHkuaCAgICAgICAgICB8IDEzICsrKysrKy0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdCAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDU4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAzNDg1YmE4NjYzLi5iN2U4MTlkZTQwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weS5jCkBAIC01MTEsMTEgKzUxMSwxMSBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBw c3RhdGUpOwogCQkJZm9ybWF0X3NwZWNpZmllZCA9IHRydWU7CiAJCQlpZiAoc3RyY21wKGZtdCwg InRleHQiKSA9PSAwKQotCQkJCSAvKiBkZWZhdWx0IGZvcm1hdCAqLyA7CisJCQkJb3B0c19vdXQt PmZvcm1hdCA9IENPUFlfRk9STUFUX1RFWFQ7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiY3N2 IikgPT0gMCkKLQkJCQlvcHRzX291dC0+Y3N2X21vZGUgPSB0cnVlOworCQkJCW9wdHNfb3V0LT5m b3JtYXQgPSBDT1BZX0ZPUk1BVF9DU1Y7CiAJCQllbHNlIGlmIChzdHJjbXAoZm10LCAiYmluYXJ5 IikgPT0gMCkKLQkJCQlvcHRzX291dC0+YmluYXJ5ID0gdHJ1ZTsKKwkJCQlvcHRzX291dC0+Zm9y bWF0ID0gQ09QWV9GT1JNQVRfQklOQVJZOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTY3NSwz MSArNjc1LDMxIEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJICog Q2hlY2sgZm9yIGluY29tcGF0aWJsZSBvcHRpb25zIChtdXN0IGRvIHRoZXNlIHRocmVlIGJlZm9y ZSBpbnNlcnRpbmcKIAkgKiBkZWZhdWx0cykKIAkgKi8KLQlpZiAob3B0c19vdXQtPmJpbmFyeSAm JiBvcHRzX291dC0+ZGVsaW0pCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRf QklOQVJZICYmIG9wdHNfb3V0LT5kZWxpbSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFt ZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiY2Fubm90 IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiREVMSU1JVEVSIikpKTsKIAotCWlmIChvcHRz X291dC0+YmluYXJ5ICYmIG9wdHNfb3V0LT5udWxsX3ByaW50KQorCWlmIChvcHRzX291dC0+Zm9y bWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+bnVsbF9wcmludCkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJIGVy cm1zZygiY2Fubm90IHNwZWNpZnkgJXMgaW4gQklOQVJZIG1vZGUiLCAiTlVMTCIpKSk7CiAKLQlp ZiAob3B0c19vdXQtPmJpbmFyeSAmJiBvcHRzX291dC0+ZGVmYXVsdF9wcmludCkKKwlpZiAob3B0 c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgJiYgb3B0c19vdXQtPmRlZmF1bHRf cHJpbnQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkRF RkFVTFQiKSkpOwogCiAJLyogU2V0IGRlZmF1bHRzIGZvciBvbWl0dGVkIG9wdGlvbnMgKi8KIAlp ZiAoIW9wdHNfb3V0LT5kZWxpbSkKLQkJb3B0c19vdXQtPmRlbGltID0gb3B0c19vdXQtPmNzdl9t b2RlID8gIiwiIDogIlx0IjsKKwkJb3B0c19vdXQtPmRlbGltID0gb3B0c19vdXQtPmZvcm1hdCA9 PSBDT1BZX0ZPUk1BVF9DU1YgPyAiLCIgOiAiXHQiOwogCiAJaWYgKCFvcHRzX291dC0+bnVsbF9w cmludCkKLQkJb3B0c19vdXQtPm51bGxfcHJpbnQgPSBvcHRzX291dC0+Y3N2X21vZGUgPyAiIiA6 ICJcXE4iOworCQlvcHRzX291dC0+bnVsbF9wcmludCA9IG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09Q WV9GT1JNQVRfQ1NWID8gIiIgOiAiXFxOIjsKIAlvcHRzX291dC0+bnVsbF9wcmludF9sZW4gPSBz dHJsZW4ob3B0c19vdXQtPm51bGxfcHJpbnQpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3ZfbW9kZSkK KwlpZiAob3B0c19vdXQtPmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJewogCQlpZiAoIW9w dHNfb3V0LT5xdW90ZSkKIAkJCW9wdHNfb3V0LT5xdW90ZSA9ICJcIiI7CkBAIC03NDcsNyArNzQ3 LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBmdXR1cmUt cHJvb2ZpbmcuICBMaWtld2lzZSB3ZSBkaXNhbGxvdyBhbGwgZGlnaXRzIHRob3VnaCBvbmx5IG9j dGFsCiAJICogZGlnaXRzIGFyZSBhY3R1YWxseSBkYW5nZXJvdXMuCiAJICovCi0JaWYgKCFvcHRz X291dC0+Y3N2X21vZGUgJiYKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9D U1YgJiYKIAkJc3RyY2hyKCJcXC5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODki LAogCQkJICAgb3B0c19vdXQtPmRlbGltWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLApA QCAtNzU1LDQzICs3NTUsNDQgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJCQkgZXJybXNnKCJDT1BZIGRlbGltaXRlciBjYW5ub3QgYmUgXCIlc1wiIiwgb3B0c19v dXQtPmRlbGltKSkpOwogCiAJLyogQ2hlY2sgaGVhZGVyICovCi0JaWYgKG9wdHNfb3V0LT5iaW5h cnkgJiYgb3B0c19vdXQtPmhlYWRlcl9saW5lKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSAmJiBvcHRzX291dC0+aGVhZGVyX2xpbmUpCiAJCWVyZXBvcnQoRVJS T1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0g dHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJP UiAqLwogCQkJCSBlcnJtc2coImNhbm5vdCBzcGVjaWZ5ICVzIGluIEJJTkFSWSBtb2RlIiwgIkhF QURFUiIpKSk7CiAKIAkvKiBDaGVjayBxdW90ZSAqLwotCWlmICghb3B0c19vdXQtPmNzdl9tb2Rl ICYmIG9wdHNfb3V0LT5xdW90ZSAhPSBOVUxMKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ICE9IENP UFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+cXVvdGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJP UiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0 cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9S ICovCiAJCQkJIGVycm1zZygiQ09QWSAlcyByZXF1aXJlcyBDU1YgbW9kZSIsICJRVU9URSIpKSk7 CiAKLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmIHN0cmxlbihvcHRzX291dC0+cXVvdGUpICE9 IDEpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmIHN0cmxlbihv cHRzX291dC0+cXVvdGUpICE9IDEpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgcXVvdGUgbXVz dCBiZSBhIHNpbmdsZSBvbmUtYnl0ZSBjaGFyYWN0ZXIiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5j c3ZfbW9kZSAmJiBvcHRzX291dC0+ZGVsaW1bMF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQorCWlm IChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJiBvcHRzX291dC0+ZGVsaW1b MF0gPT0gb3B0c19vdXQtPnF1b3RlWzBdKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coIkNPUFkgZGVs aW1pdGVyIGFuZCBxdW90ZSBtdXN0IGJlIGRpZmZlcmVudCIpKSk7CiAKIAkvKiBDaGVjayBlc2Nh cGUgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAmJiBvcHRzX291dC0+ZXNjYXBlICE9IE5V TEwpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYmIG9wdHNfb3V0 LT5lc2NhcGUgIT0gTlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFt ZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCiAJCQkJIGVycm1zZygiQ09QWSAl cyByZXF1aXJlcyBDU1YgbW9kZSIsICJFU0NBUEUiKSkpOwogCi0JaWYgKG9wdHNfb3V0LT5jc3Zf bW9kZSAmJiBzdHJsZW4ob3B0c19vdXQtPmVzY2FwZSkgIT0gMSkKKwlpZiAob3B0c19vdXQtPmZv cm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YgJiYgc3RybGVuKG9wdHNfb3V0LT5lc2NhcGUpICE9IDEp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coIkNPUFkgZXNjYXBlIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5 dGUgY2hhcmFjdGVyIikpKTsKIAogCS8qIENoZWNrIGZvcmNlX3F1b3RlICovCi0JaWYgKCFvcHRz X291dC0+Y3N2X21vZGUgJiYgKG9wdHNfb3V0LT5mb3JjZV9xdW90ZSB8fCBvcHRzX291dC0+Zm9y Y2VfcXVvdGVfYWxsKSkKKwlpZiAob3B0c19vdXQtPmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1Yg JiYgKG9wdHNfb3V0LT5mb3JjZV9xdW90ZSB8fAorCQkJCQkJCQkJCQkJb3B0c19vdXQtPmZvcmNl X3F1b3RlX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2Yg YSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODA1LDggKzgwNiw4IEBAIFByb2Nl c3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiQ09QWSBGUk9NIikpKTsK IAogCS8qIENoZWNrIGZvcmNlX25vdG51bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAm JiAob3B0c19vdXQtPmZvcmNlX25vdG51bGwgIT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5m b3JjZV9ub3RudWxsX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRf Q1NWICYmCisJCShvcHRzX291dC0+Zm9yY2Vfbm90bnVsbCAhPSBOSUwgfHwgb3B0c19vdXQtPmZv cmNlX25vdG51bGxfYWxsKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLSB0cmFuc2xhdG9yOiAlcyBpcyB0aGUgbmFt ZSBvZiBhIENPUFkgb3B0aW9uLCBlLmcuIE9OX0VSUk9SICovCkBAIC04MjEsOCArODIyLDggQEAg UHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSJDT1BZIFRPIikp KTsKIAogCS8qIENoZWNrIGZvcmNlX251bGwgKi8KLQlpZiAoIW9wdHNfb3V0LT5jc3ZfbW9kZSAm JiAob3B0c19vdXQtPmZvcmNlX251bGwgIT0gTklMIHx8Ci0JCQkJCQkJCW9wdHNfb3V0LT5mb3Jj ZV9udWxsX2FsbCkpCisJaWYgKG9wdHNfb3V0LT5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWICYm IChvcHRzX291dC0+Zm9yY2VfbnVsbCAhPSBOSUwgfHwKKwkJCQkJCQkJCQkJCW9wdHNfb3V0LT5m b3JjZV9udWxsX2FsbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkvKi0gdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUg b2YgYSBDT1BZIG9wdGlvbiwgZS5nLiBPTl9FUlJPUiAqLwpAQCAtODQ2LDcgKzg0Nyw3IEBAIFBy b2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkiTlVMTCIpKSk7CiAK IAkvKiBEb24ndCBhbGxvdyB0aGUgQ1NWIHF1b3RlIGNoYXIgdG8gYXBwZWFyIGluIHRoZSBudWxs IHN0cmluZy4gKi8KLQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJaWYgKG9wdHNfb3V0LT5m b3JtYXQgPT0gQ09QWV9GT1JNQVRfQ1NWICYmCiAJCXN0cmNocihvcHRzX291dC0+bnVsbF9wcmlu dCwgb3B0c19vdXQtPnF1b3RlWzBdKSAhPSBOVUxMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtODgyLDcgKzg4Myw3 IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJIkRFRkFV TFQiKSkpOwogCiAJCS8qIERvbid0IGFsbG93IHRoZSBDU1YgcXVvdGUgY2hhciB0byBhcHBlYXIg aW4gdGhlIGRlZmF1bHQgc3RyaW5nLiAqLwotCQlpZiAob3B0c19vdXQtPmNzdl9tb2RlICYmCisJ CWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0NTViAmJgogCQkJc3RyY2hyKG9w dHNfb3V0LT5kZWZhdWx0X3ByaW50LCBvcHRzX291dC0+cXVvdGVbMF0pICE9IE5VTEwpCiAJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCkBAIC04OTksNyArOTAwLDggQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJCQkJIGVycm1zZygiTlVMTCBzcGVjaWZpY2F0aW9uIGFuZCBERUZBVUxUIHNwZWNp ZmljYXRpb24gY2Fubm90IGJlIHRoZSBzYW1lIikpKTsKIAl9CiAJLyogQ2hlY2sgb25fZXJyb3Ig Ki8KLQlpZiAob3B0c19vdXQtPmJpbmFyeSAmJiBvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9P Tl9FUlJPUl9TVE9QKQorCWlmIChvcHRzX291dC0+Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFS WSAmJgorCQlvcHRzX291dC0+b25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QKQogCQllcmVw b3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJy bXNnKCJvbmx5IE9OX0VSUk9SIFNUT1AgaXMgYWxsb3dlZCBpbiBCSU5BUlkgbW9kZSIpKSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb20uYwppbmRleCA3NTRjYjQ5NjE2Li40MjhiNjJjYjlhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMKQEAgLTEyMiw3ICsxMjIsNyBAQCBDb3B5RnJvbUVycm9yQ2FsbGJh Y2sodm9pZCAqYXJnKQogCQkJCSAgIGNzdGF0ZS0+Y3VyX3JlbG5hbWUpOwogCQlyZXR1cm47CiAJ fQotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09 IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIGNhbid0IHVzZWZ1bGx5IGRpc3BsYXkgdGhl IGRhdGEgKi8KIAkJaWYgKGNzdGF0ZS0+Y3VyX2F0dG5hbWUpCkBAIC0xNTgzLDcgKzE1ODMsNyBA QCBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAljc3RhdGUtPnJhd19idWZfaW5k ZXggPSBjc3RhdGUtPnJhd19idWZfbGVuID0gMDsKIAljc3RhdGUtPnJhd19yZWFjaGVkX2VvZiA9 IGZhbHNlOwogCi0JaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMu Zm9ybWF0ICE9IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qCiAJCSAqIElmIGVuY29kaW5n IGNvbnZlcnNpb24gaXMgbmVlZGVkLCB3ZSBuZWVkIGFub3RoZXIgYnVmZmVyIHRvIGhvbGQKQEAg LTE2MzQsNyArMTYzNCw3IEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ Y29udGludWU7CiAKIAkJLyogRmV0Y2ggdGhlIGlucHV0IGZ1bmN0aW9uIGFuZCB0eXBpb3BhcmFt IGluZm8gKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5iaW5hcnkpCisJCWlmIChjc3RhdGUtPm9wdHMu Zm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkKIAkJCWdldFR5cGVCaW5hcnlJbnB1dEluZm8o YXR0LT5hdHR0eXBpZCwKIAkJCQkJCQkJICAgJmluX2Z1bmNfb2lkLCAmdHlwaW9wYXJhbXNbYXR0 bnVtIC0gMV0pOwogCQllbHNlCkBAIC0xNzc1LDE0ICsxNzc1LDE0IEBAIEJlZ2luQ29weUZyb20o UGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJh bSgzLCBwcm9ncmVzc19jb2xzLCBwcm9ncmVzc192YWxzKTsKIAotCWlmIChjc3RhdGUtPm9wdHMu YmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSkK IAl7CiAJCS8qIFJlYWQgYW5kIHZlcmlmeSBiaW5hcnkgaGVhZGVyICovCiAJCVJlY2VpdmVDb3B5 QmluYXJ5SGVhZGVyKGNzdGF0ZSk7CiAJfQogCiAJLyogY3JlYXRlIHdvcmtzcGFjZSBmb3IgQ29w eVJlYWRBdHRyaWJ1dGVzIHJlc3VsdHMgKi8KLQlpZiAoIWNzdGF0ZS0+b3B0cy5iaW5hcnkpCisJ aWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCXsKIAkJQXR0 ck51bWJlcglhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGQxZDQzYjUzZDguLjUxZWIxNGQ3 NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTE2Miw3ICsxNjIsNyBA QCBSZWNlaXZlQ29weUJlZ2luKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogewogCVN0cmluZ0luZm9E YXRhIGJ1ZjsKIAlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7 Ci0JaW50MTYJCWZvcm1hdCA9IChjc3RhdGUtPm9wdHMuYmluYXJ5ID8gMSA6IDApOworCWludDE2 CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5BUlkgPyAx IDogMCk7CiAJaW50CQkJaTsKIAogCXBxX2JlZ2lubWVzc2FnZSgmYnVmLCBQcU1zZ19Db3B5SW5S ZXNwb25zZSk7CkBAIC03NDgsNyArNzQ4LDcgQEAgTmV4dENvcHlGcm9tUmF3RmllbGRzKENvcHlG cm9tU3RhdGUgY3N0YXRlLCBjaGFyICoqKmZpZWxkcywgaW50ICpuZmllbGRzKQogCWJvb2wJCWRv bmU7CiAKIAkvKiBvbmx5IGF2YWlsYWJsZSBmb3IgdGV4dCBvciBjc3YgaW5wdXQgKi8KLQlBc3Nl cnQoIWNzdGF0ZS0+b3B0cy5iaW5hcnkpOworCUFzc2VydChjc3RhdGUtPm9wdHMuZm9ybWF0ICE9 IENPUFlfRk9STUFUX0JJTkFSWSk7CiAKIAkvKiBvbiBpbnB1dCBjaGVjayB0aGF0IHRoZSBoZWFk ZXIgbGluZSBpcyBjb3JyZWN0IGlmIG5lZWRlZCAqLwogCWlmIChjc3RhdGUtPmN1cl9saW5lbm8g PT0gMCAmJiBjc3RhdGUtPm9wdHMuaGVhZGVyX2xpbmUpCkBAIC03NjUsNyArNzY1LDcgQEAgTmV4 dENvcHlGcm9tUmF3RmllbGRzKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICoqKmZpZWxkcywg aW50ICpuZmllbGRzKQogCQl7CiAJCQlpbnQJCQlmbGRudW07CiAKLQkJCWlmIChjc3RhdGUtPm9w dHMuY3N2X21vZGUpCisJCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9D U1YpCiAJCQkJZmxkY3QgPSBDb3B5UmVhZEF0dHJpYnV0ZXNDU1YoY3N0YXRlKTsKIAkJCWVsc2UK IAkJCQlmbGRjdCA9IENvcHlSZWFkQXR0cmlidXRlc1RleHQoY3N0YXRlKTsKQEAgLTgyMCw3ICs4 MjAsNyBAQCBOZXh0Q29weUZyb21SYXdGaWVsZHMoQ29weUZyb21TdGF0ZSBjc3RhdGUsIGNoYXIg KioqZmllbGRzLCBpbnQgKm5maWVsZHMpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIFBhcnNlIHRo ZSBsaW5lIGludG8gZGUtZXNjYXBlZCBmaWVsZCB2YWx1ZXMgKi8KLQlpZiAoY3N0YXRlLT5vcHRz LmNzdl9tb2RlKQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikK IAkJZmxkY3QgPSBDb3B5UmVhZEF0dHJpYnV0ZXNDU1YoY3N0YXRlKTsKIAllbHNlCiAJCWZsZGN0 ID0gQ29weVJlYWRBdHRyaWJ1dGVzVGV4dChjc3RhdGUpOwpAQCAtODY0LDcgKzg2NCw3IEBAIE5l eHRDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAog CU1lbVNldChudWxscywgdHJ1ZSwgbnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9vbCkpOwogCU1l bVNldChjc3RhdGUtPmRlZmF1bHRzLCBmYWxzZSwgbnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9v bCkpOwogCi0JaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMuZm9y bWF0ICE9IENPUFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCWNoYXIJICAqKmZpZWxkX3N0cmluZ3M7 CiAJCUxpc3RDZWxsICAgKmN1cjsKQEAgLTkwNSw3ICs5MDUsNyBAQCBOZXh0Q29weUZyb20oQ29w eUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwKIAkJCQljb250aW51ZTsK IAkJCX0KIAotCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSkKKwkJCWlmIChjc3RhdGUtPm9w dHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCXsKIAkJCQlpZiAoc3RyaW5nID09IE5V TEwgJiYKIAkJCQkJY3N0YXRlLT5vcHRzLmZvcmNlX25vdG51bGxfZmxhZ3NbbV0pCkBAIC0xMTc4 LDcgKzExNzgsNyBAQCBDb3B5UmVhZExpbmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCWNo YXIJCXF1b3RlYyA9ICdcMCc7CiAJY2hhcgkJZXNjYXBlYyA9ICdcMCc7CiAKLQlpZiAoY3N0YXRl LT5vcHRzLmNzdl9tb2RlKQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFU X0NTVikKIAl7CiAJCXF1b3RlYyA9IGNzdGF0ZS0+b3B0cy5xdW90ZVswXTsKIAkJZXNjYXBlYyA9 IGNzdGF0ZS0+b3B0cy5lc2NhcGVbMF07CkBAIC0xMjU1LDcgKzEyNTUsNyBAQCBDb3B5UmVhZExp bmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQlwcmV2X3Jhd19wdHIgPSBpbnB1dF9idWZf cHRyOwogCQljID0gY29weV9pbnB1dF9idWZbaW5wdXRfYnVmX3B0cisrXTsKIAotCQlpZiAoY3N0 YXRlLT5vcHRzLmNzdl9tb2RlKQorCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZP Uk1BVF9DU1YpCiAJCXsKIAkJCS8qCiAJCQkgKiBJZiBjaGFyYWN0ZXIgaXMgJ1xyJywgd2UgbWF5 IG5lZWQgdG8gbG9vayBhaGVhZCBiZWxvdy4gIEZvcmNlCkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBD b3B5UmVhZExpbmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQl9CiAKIAkJLyogUHJvY2Vz cyBcciAqLwotCQlpZiAoYyA9PSAnXHInICYmICghY3N0YXRlLT5vcHRzLmNzdl9tb2RlIHx8ICFp bl9xdW90ZSkpCisJCWlmIChjID09ICdccicgJiYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09Q WV9GT1JNQVRfQ1NWIHx8ICFpbl9xdW90ZSkpCiAJCXsKIAkJCS8qIENoZWNrIGZvciBcclxuIG9u IGZpcnN0IGxpbmUsIF9hbmRfIGhhbmRsZSBcclxuLiAqLwogCQkJaWYgKGNzdGF0ZS0+ZW9sX3R5 cGUgPT0gRU9MX1VOS05PV04gfHwKQEAgLTEzMjIsMTAgKzEzMjIsMTAgQEAgQ29weVJlYWRMaW5l VGV4dChDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJCQkJaWYgKGNzdGF0ZS0+ZW9sX3R5cGUgPT0g RU9MX0NSTkwpCiAJCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCQkoZXJyY29kZShFUlJDT0RF X0JBRF9DT1BZX0ZJTEVfRk9STUFUKSwKLQkJCQkJCQkJICFjc3RhdGUtPm9wdHMuY3N2X21vZGUg PworCQkJCQkJCQkgY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9DU1YgPwogCQkJ CQkJCQkgZXJybXNnKCJsaXRlcmFsIGNhcnJpYWdlIHJldHVybiBmb3VuZCBpbiBkYXRhIikgOgog CQkJCQkJCQkgZXJybXNnKCJ1bnF1b3RlZCBjYXJyaWFnZSByZXR1cm4gZm91bmQgaW4gZGF0YSIp LAotCQkJCQkJCQkgIWNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSA/CisJCQkJCQkJCSBjc3RhdGUtPm9w dHMuZm9ybWF0ICE9IENPUFlfRk9STUFUX0NTViA/CiAJCQkJCQkJCSBlcnJoaW50KCJVc2UgXCJc XHJcIiB0byByZXByZXNlbnQgY2FycmlhZ2UgcmV0dXJuLiIpIDoKIAkJCQkJCQkJIGVycmhpbnQo IlVzZSBxdW90ZWQgQ1NWIGZpZWxkIHRvIHJlcHJlc2VudCBjYXJyaWFnZSByZXR1cm4uIikpKTsK IApAQCAtMTMzOSwxMCArMTMzOSwxMCBAQCBDb3B5UmVhZExpbmVUZXh0KENvcHlGcm9tU3RhdGUg Y3N0YXRlKQogCQkJZWxzZSBpZiAoY3N0YXRlLT5lb2xfdHlwZSA9PSBFT0xfTkwpCiAJCQkJZXJl cG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQp LAotCQkJCQkJICFjc3RhdGUtPm9wdHMuY3N2X21vZGUgPworCQkJCQkJIGNzdGF0ZS0+b3B0cy5m b3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWID8KIAkJCQkJCSBlcnJtc2coImxpdGVyYWwgY2Fycmlh Z2UgcmV0dXJuIGZvdW5kIGluIGRhdGEiKSA6CiAJCQkJCQkgZXJybXNnKCJ1bnF1b3RlZCBjYXJy aWFnZSByZXR1cm4gZm91bmQgaW4gZGF0YSIpLAotCQkJCQkJICFjc3RhdGUtPm9wdHMuY3N2X21v ZGUgPworCQkJCQkJIGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQ1NWID8KIAkJ CQkJCSBlcnJoaW50KCJVc2UgXCJcXHJcIiB0byByZXByZXNlbnQgY2FycmlhZ2UgcmV0dXJuLiIp IDoKIAkJCQkJCSBlcnJoaW50KCJVc2UgcXVvdGVkIENTViBmaWVsZCB0byByZXByZXNlbnQgY2Fy cmlhZ2UgcmV0dXJuLiIpKSk7CiAJCQkvKiBJZiByZWFjaCBoZXJlLCB3ZSBoYXZlIGZvdW5kIHRo ZSBsaW5lIHRlcm1pbmF0b3IgKi8KQEAgLTEzNTAsMTUgKzEzNTAsMTUgQEAgQ29weVJlYWRMaW5l VGV4dChDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJfQogCiAJCS8qIFByb2Nlc3MgXG4gKi8KLQkJ aWYgKGMgPT0gJ1xuJyAmJiAoIWNzdGF0ZS0+b3B0cy5jc3ZfbW9kZSB8fCAhaW5fcXVvdGUpKQor CQlpZiAoYyA9PSAnXG4nICYmIChjc3RhdGUtPm9wdHMuZm9ybWF0ICE9IENPUFlfRk9STUFUX0NT ViB8fCAhaW5fcXVvdGUpKQogCQl7CiAJCQlpZiAoY3N0YXRlLT5lb2xfdHlwZSA9PSBFT0xfQ1Ig fHwgY3N0YXRlLT5lb2xfdHlwZSA9PSBFT0xfQ1JOTCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9CQURfQ09QWV9GSUxFX0ZPUk1BVCksCi0JCQkJCQkgIWNzdGF0 ZS0+b3B0cy5jc3ZfbW9kZSA/CisJCQkJCQkgY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZP Uk1BVF9DU1YgPwogCQkJCQkJIGVycm1zZygibGl0ZXJhbCBuZXdsaW5lIGZvdW5kIGluIGRhdGEi KSA6CiAJCQkJCQkgZXJybXNnKCJ1bnF1b3RlZCBuZXdsaW5lIGZvdW5kIGluIGRhdGEiKSwKLQkJ CQkJCSAhY3N0YXRlLT5vcHRzLmNzdl9tb2RlID8KKwkJCQkJCSBjc3RhdGUtPm9wdHMuZm9ybWF0 ICE9IENPUFlfRk9STUFUX0NTViA/CiAJCQkJCQkgZXJyaGludCgiVXNlIFwiXFxuXCIgdG8gcmVw cmVzZW50IG5ld2xpbmUuIikgOgogCQkJCQkJIGVycmhpbnQoIlVzZSBxdW90ZWQgQ1NWIGZpZWxk IHRvIHJlcHJlc2VudCBuZXdsaW5lLiIpKSk7CiAJCQljc3RhdGUtPmVvbF90eXBlID0gRU9MX05M OwkvKiBpbiBjYXNlIG5vdCBzZXQgeWV0ICovCkBAIC0xMzcwLDcgKzEzNzAsNyBAQCBDb3B5UmVh ZExpbmVUZXh0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQkgKiBQcm9jZXNzIGJhY2tzbGFzaCwg ZXhjZXB0IGluIENTViBtb2RlIHdoZXJlIGJhY2tzbGFzaCBpcyBhIG5vcm1hbAogCQkgKiBjaGFy YWN0ZXIuCiAJCSAqLwotCQlpZiAoYyA9PSAnXFwnICYmICFjc3RhdGUtPm9wdHMuY3N2X21vZGUp CisJCWlmIChjID09ICdcXCcgJiYgY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9D U1YpCiAJCXsKIAkJCWNoYXIJCWMyOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IGY1NWU2ZDk2 NzUuLjAzYzlkNzFkMzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC0xMzQsNyArMTM0LDcgQEAg U2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVm OwogCWludAkJCW5hdHRzID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKLQlpbnQx NgkJZm9ybWF0ID0gKGNzdGF0ZS0+b3B0cy5iaW5hcnkgPyAxIDogMCk7CisJaW50MTYJCWZvcm1h dCA9IChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0JJTkFSWSA/IDEgOiAwKTsK IAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25z ZSk7CkBAIC0xOTEsNyArMTkxLDcgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3Rh dGUpCiAJc3dpdGNoIChjc3RhdGUtPmNvcHlfZGVzdCkKIAl7CiAJCWNhc2UgQ09QWV9GSUxFOgot CQkJaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQorCQkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQg IT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCQkJewogCQkJCS8qIERlZmF1bHQgbGluZSB0ZXJtaW5h dGlvbiBkZXBlbmRzIG9uIHBsYXRmb3JtICovCiAjaWZuZGVmIFdJTjMyCkBAIC0yMzYsNyArMjM2 LDcgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCQlicmVhazsKIAkJ Y2FzZSBDT1BZX0ZST05URU5EOgogCQkJLyogVGhlIEZFL0JFIHByb3RvY29sIHVzZXMgXG4gYXMg bmV3bGluZSBmb3IgYWxsIHBsYXRmb3JtcyAqLwotCQkJaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5 KQorCQkJaWYgKGNzdGF0ZS0+b3B0cy5mb3JtYXQgIT0gQ09QWV9GT1JNQVRfQklOQVJZKQogCQkJ CUNvcHlTZW5kQ2hhcihjc3RhdGUsICdcbicpOwogCiAJCQkvKiBEdW1wIHRoZSBhY2N1bXVsYXRl ZCByb3cgYXMgb25lIENvcHlEYXRhIG1lc3NhZ2UgKi8KQEAgLTc3NSw3ICs3NzUsNyBAQCBEb0Nv cHlUbyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCWJvb2wJCWlzdmFybGVuYTsKIAkJRm9ybV9wZ19h dHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVwRGVzYywgYXR0bnVtIC0gMSk7CiAKLQkJ aWYgKGNzdGF0ZS0+b3B0cy5iaW5hcnkpCisJCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSkKIAkJCWdldFR5cGVCaW5hcnlPdXRwdXRJbmZvKGF0dHItPmF0dHR5 cGlkLAogCQkJCQkJCQkJJm91dF9mdW5jX29pZCwKIAkJCQkJCQkJCSZpc3ZhcmxlbmEpOwpAQCAt Nzk2LDcgKzc5Niw3IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAkJCQkJCQkJCQkJ ICAgIkNPUFkgVE8iLAogCQkJCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAot CWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENP UFlfRk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIEdlbmVyYXRlIGhlYWRlciBmb3IgYSBiaW5hcnkg Y29weSAqLwogCQlpbnQzMgkJdG1wOwpAQCAtODM3LDcgKzgzNyw3IEBAIERvQ29weVRvKENvcHlU b1N0YXRlIGNzdGF0ZSkKIAogCQkJCWNvbG5hbWUgPSBOYW1lU3RyKFR1cGxlRGVzY0F0dHIodHVw RGVzYywgYXR0bnVtIC0gMSktPmF0dG5hbWUpOwogCi0JCQkJaWYgKGNzdGF0ZS0+b3B0cy5jc3Zf bW9kZSkKKwkJCQlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9DU1YpCiAJ CQkJCUNvcHlBdHRyaWJ1dGVPdXRDU1YoY3N0YXRlLCBjb2xuYW1lLCBmYWxzZSk7CiAJCQkJZWxz ZQogCQkJCQlDb3B5QXR0cmlidXRlT3V0VGV4dChjc3RhdGUsIGNvbG5hbWUpOwpAQCAtODg0LDcg Kzg4NCw3IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAkJcHJvY2Vzc2VkID0gKChE Ul9jb3B5ICopIGNzdGF0ZS0+cXVlcnlEZXNjLT5kZXN0KS0+cHJvY2Vzc2VkOwogCX0KIAotCWlm IChjc3RhdGUtPm9wdHMuYmluYXJ5KQorCWlmIChjc3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlf Rk9STUFUX0JJTkFSWSkKIAl7CiAJCS8qIEdlbmVyYXRlIHRyYWlsZXIgZm9yIGEgYmluYXJ5IGNv cHkgKi8KIAkJQ29weVNlbmRJbnQxNihjc3RhdGUsIC0xKTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBD b3B5T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlN ZW1vcnlDb250ZXh0UmVzZXQoY3N0YXRlLT5yb3djb250ZXh0KTsKIAlvbGRjb250ZXh0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGNzdGF0ZS0+cm93Y29udGV4dCk7CiAKLQlpZiAoY3N0YXRlLT5v cHRzLmJpbmFyeSkKKwlpZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCA9PSBDT1BZX0ZPUk1BVF9CSU5B UlkpCiAJewogCQkvKiBCaW5hcnkgcGVyLXR1cGxlIGhlYWRlciAqLwogCQlDb3B5U2VuZEludDE2 KGNzdGF0ZSwgbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KSk7CkBAIC05MjEsNyArOTIx LDcgQEAgQ29weU9uZVJvd1RvKENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNs b3QpCiAJLyogTWFrZSBzdXJlIHRoZSB0dXBsZSBpcyBmdWxseSBkZWNvbnN0cnVjdGVkICovCiAJ c2xvdF9nZXRhbGxhdHRycyhzbG90KTsKIAotCWlmICghY3N0YXRlLT5vcHRzLmJpbmFyeSkKKwlp ZiAoY3N0YXRlLT5vcHRzLmZvcm1hdCAhPSBDT1BZX0ZPUk1BVF9CSU5BUlkpCiAJewogCQlib29s CQluZWVkX2RlbGltID0gZmFsc2U7CiAKQEAgLTk0MSw3ICs5NDEsNyBAQCBDb3B5T25lUm93VG8o Q29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIAkJCXsKIAkJCQlzdHJp bmcgPSBPdXRwdXRGdW5jdGlvbkNhbGwoJm91dF9mdW5jdGlvbnNbYXR0bnVtIC0gMV0sCiAJCQkJ CQkJCQkJCXZhbHVlKTsKLQkJCQlpZiAoY3N0YXRlLT5vcHRzLmNzdl9tb2RlKQorCQkJCWlmIChj c3RhdGUtPm9wdHMuZm9ybWF0ID09IENPUFlfRk9STUFUX0NTVikKIAkJCQkJQ29weUF0dHJpYnV0 ZU91dENTVihjc3RhdGUsIHN0cmluZywKIAkJCQkJCQkJCQljc3RhdGUtPm9wdHMuZm9yY2VfcXVv dGVfZmxhZ3NbYXR0bnVtIC0gMV0pOwogCQkJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCA0MDAy YTdmNTM4Li5jM2QxZGYyNjdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBAIC01MSw2ICs1MSwxNiBAQCB0 eXBlZGVmIGVudW0gQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogCUNPUFlfTE9HX1ZFUkJPU0lUWV9W RVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMgKi8KIH0gQ29weUxvZ1ZlcmJvc2l0 eUNob2ljZTsKIAorLyoKKyAqIFJlcHJlc2VudHMgdGhlIGZvcm1hdCBvZiB0aGUgQ09QWSBvcGVy YXRpb24uCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5Rm9ybWF0Cit7CisJQ09QWV9GT1JNQVRfVEVY VCA9IDAsCisJQ09QWV9GT1JNQVRfQklOQVJZLAorCUNPUFlfRk9STUFUX0NTViwKK30gQ29weUZv cm1hdDsKKwogLyoKICAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25zLCBpbiBhIHBhcnNl ZCBmb3JtLiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKICAqIHRvIGZvcm1hdHRpbmcsIGV4Y2Vw dCBmb3IgJ2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLCBidXQKQEAg LTYxLDkgKzcxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAkvKiBwYXJh bWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLwogCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8q IGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsCiAJCQkJCQkJCSAqIC0x IGlmIG5vdCBzcGVjaWZpZWQgKi8KLQlib29sCQliaW5hcnk7CQkJLyogYmluYXJ5IGZvcm1hdD8g Ki8KKwlDb3B5Rm9ybWF0CWZvcm1hdDsJCQkvKiBmb3JtYXQgb2YgdGhlIENPUFkgb3BlcmF0aW9u ICovCiAJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCi0JYm9v bAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLwogCUNvcHlI ZWFkZXJDaG9pY2UgaGVhZGVyX2xpbmU7CS8qIGhlYWRlciBsaW5lPyAqLwogCWNoYXIJICAgKm51 bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcgKHNlcnZlciBlbmNvZGluZyEpICovCiAJ aW50CQkJbnVsbF9wcmludF9sZW47IC8qIGxlbmd0aCBvZiBzYW1lICovCmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IDA4NTIxZDUxYTkuLmI4MWRhNTgxY2YgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC00OTEsNiArNDkxLDcgQEAgQ29udmVyc2lvbkxvY2F0aW9uCiBDb252ZXJ0 Um93dHlwZUV4cHIKIENvb2tlZENvbnN0cmFpbnQKIENvcHlEZXN0CitDb3B5Rm9ybWF0CiBDb3B5 Rm9ybWF0T3B0aW9ucwogQ29weUZyb21TdGF0ZQogQ29weUZyb21TdGF0ZURhdGEKLS0gCjIuMzQu MQoK --0000000000005e35d506273dfb84--