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 1tHcgG-008p2F-9C for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Dec 2024 05:39:40 +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 1tHcgC-005Fjv-M6 for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Dec 2024 05:39:37 +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 1tHcgB-005Fjh-VT for pgsql-hackers@lists.postgresql.org; Sun, 01 Dec 2024 05:39:37 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tHcgA-000Qxj-Dn for pgsql-hackers@lists.postgresql.org; Sun, 01 Dec 2024 05:39:35 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-2ffd6882dcbso24745611fa.0 for ; Sat, 30 Nov 2024 21:39:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733031572; x=1733636372; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=bn7VfhzcFBUMy4WnWHX4HFKGYEMdLZLqioTTjztq09M=; b=LVUULr7n1biIpnbRgby7CTwGos/XJ4TiPW49z1cyoW+I7qSdUH4WucAz0kh4UBV2sB KdAQzl1AnGUxvHBPY1DkaTgTCNT5n5zCqTtZeL+LH1aY82sJgJPF56cCS7nFbBrCOVlm pWVXEl8Q1YEfR5g8ruGxubHsjljuOi8yNpRVZ88KYo8yh9/PivuM4bGLdh8+eoZ1Co12 U0JMQunyPtZ7pswMrGZ7GmrUzlz+DTwaB/AqRFb9S91TjSA/Tc3iBWHbaujqQPFEmNx5 mv4O7a8QnGyIp3UpDzMDWrNWbixduTvDvlfEAZEgmJFQAWBfqQfMtQPSpPvTjTVFaRR0 bDnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733031572; x=1733636372; 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=bn7VfhzcFBUMy4WnWHX4HFKGYEMdLZLqioTTjztq09M=; b=VWRsWeg3SgX5WzahtxXVxtZcOVUlog/PnE5beemy7RtZMYkpKpkOv/S1MU2ItQ5oHi 5e/Nd34bqz4aIir1l/qimUXuaN7ge1Sher7LQUAPUATf9I2QTMoWfGoLEjecYcypFdfc ISslw9jCRnhwJe+xJtr9ahDp0l2XMI+QR1UY2uP48tc0TDtBcQWnu26BABfpQZkYx6B7 JsW39Xd8c5DJe6jgcSZnUw2NIXm83UjQGdJP4NyFOMZJpjfElxxXid7bZ3y7wgCz0MZ5 AWMg4ZTWxguaxtNMkDWn4olo8DP7DiC/KwuApyfv86VMolz4ffLIyUjpZpqKLCgSh1nk Lkcg== X-Forwarded-Encrypted: i=1; AJvYcCUE8bGoBTbZ4dQH49OLkwe7BeuOqUeMXT5nDC5UXoYHxaNwgWQWenYcDdxGhbqsqYZ44/yqV6+AZ59OQAIu@lists.postgresql.org X-Gm-Message-State: AOJu0YxPVJ/80+9eoGDGlTQ6Dw+ujvTNlDIxFwdaKR9Cb33yM2Ro8D1b hY8XLv2Zs3sekDUPUvoe+UERNrj147NfC0zN/Si4QStETkDibLtktYjTWYJ3Lgm3SHhP0PBsPkm w3cCAoyPffXjJynofVRIzjZkhFFM= X-Gm-Gg: ASbGnct/07AvZaEM5DKIr9eigyWIkaNuwto3oWgwAGAHbJG681hscvR4hRahe6LV7qg 8Hnp3rZsG01g6+Px7TQlX34U+mw26 X-Google-Smtp-Source: AGHT+IGY7xe+wbMr5Gvp6JL6AbwMQEER20QUY6LBfnadkpBQLoFstSALxC99di0q1/saLRveVfXFohAFcqQEtzGLdbc= X-Received: by 2002:a2e:bd83:0:b0:2fa:d84a:bd83 with SMTP id 38308e7fff4ca-2ffd604ca47mr57866621fa.24.1733031572226; Sat, 30 Nov 2024 21:39:32 -0800 (PST) MIME-Version: 1.0 References: <1898722.1732732780@sss.pgh.pa.us> <2007224.1732773174@sss.pgh.pa.us> <1075425.1732993688@sss.pgh.pa.us> <1220935.1733009604@sss.pgh.pa.us> In-Reply-To: <1220935.1733009604@sss.pgh.pa.us> From: Kirill Reshke Date: Sun, 1 Dec 2024 10:39:20 +0500 Message-ID: Subject: Re: CREATE SCHEMA ... CREATE DOMAIN support To: Tom Lane Cc: Peter Eisentraut , jian he , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000003f6c9e06282edb73" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003f6c9e06282edb73 Content-Type: text/plain; charset="UTF-8" On Sun, 1 Dec 2024 at 04:33, Tom Lane wrote: > I looked at several iterations of the SQL standard > and cannot find any support for the idea that CREATE SCHEMA needs to > be any smarter than that. I'd also argue that doing anything else is > a POLA violation. It's especially a POLA violation if the code > rearranges a valid user-written command order into an invalid order, > which is inevitable if we stick with the current approach. Agreed. > So attached is a draft patch that simplifies the rule to "do the > subcommands in the order written". +1 on this idea. Here is my 2c to this draft: 1) Report error position on newly added check for temp relation in non-temp schema. > + errmsg("cannot create temporary relation in non-temporary schema"), > + parser_errposition(pstate, relation->location))); 2) I added some regression tests that might be worth adding: a) check for a temporary table created within a non-temporary schema in create_table.sql, akin to existing check in create_view.sql. b) Also explicitly check that old-style sql creation does not work. That is, for example, CREATE SCHEMA test_ns_schema_3 CREATE VIEW abcd_view AS SELECT a FROM abcd CREATE TABLE abcd ( a serial ); fails. 3) Why do we delete this in `create_schema.sgml`? Is this untrue? It is about order of definition, not creation, isn't it? > - The SQL standard specifies that the subcommands in CREATE > - SCHEMA can appear in any order. P.S. This section in SQL-92 is the only information I could find about order of creation. ``` 3) Those objects defined by s (base tables, views, constraints, domains, assertions, character sets, translations, collations, privileges) and their associated descriptors are effectively created. ``` Look like we are 100% to do it in order of definition -- Best regards, Kirill Reshke --0000000000003f6c9e06282edb73 Content-Type: application/octet-stream; name="v2-0001-Don-t-try-to-re-order-the-subcommands-of-CREATE-S.patch" Content-Disposition: attachment; filename="v2-0001-Don-t-try-to-re-order-the-subcommands-of-CREATE-S.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m455offv0 RnJvbSA1NjUxMzJkOTNjZjE4OTA3N2QxOWRiYTQ4MjQwMDAyMzA2ZjYyY2QxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gTGFuZSA8dGdsQHNzcy5wZ2gucGEudXM+CkRhdGU6IFNh dCwgMzAgTm92IDIwMjQgMTg6MTE6MDQgLTA1MDAKU3ViamVjdDogW1BBVENIIHYyXSBEb24ndCB0 cnkgdG8gcmUtb3JkZXIgdGhlIHN1YmNvbW1hbmRzIG9mIENSRUFURSBTQ0hFTUEuCgp0cmFuc2Zv cm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMgaGFzIGFsd2F5cyBiZWxpZXZlZCB0aGF0IGl0IGlz CnN1cHBvc2VkIHRvIHJlLW9yZGVyIHRoZSBzdWJjb21tYW5kcyBvZiBDUkVBVEUgU0NIRU1BIGlu dG8gYSBzYWZlCmV4ZWN1dGlvbiBvcmRlci4gIEhvd2V2ZXIsIGl0IGlzIG5vd2hlcmUgbmVhciBi ZWluZyBjYXBhYmxlIG9mIGRvaW5nCnRoYXQgY29ycmVjdGx5LiAgTm9yIGlzIHRoZXJlIHJlYXNv biB0byB0aGluayB0aGF0IGl0IGV2ZXIgd2lsbCBiZSwKb3IgdGhhdCB0aGF0IGlzIGEgd2VsbC1k ZWZpbmVkIHJlcXVpcmVtZW50LCBvciB0aGF0IHRoZXJlJ3MgYW55IGJhc2lzCmluIHRoZSBTUUwg c3RhbmRhcmQgZm9yIGl0LiAgTW9yZW92ZXIsIHRoZSBwcm9ibGVtIHdpbGwgZ2V0IHdvcnNlIGFz CndlIGFkZCBtb3JlIHN1YmNvbW1hbmQgdHlwZXMuICBMZXQncyBqdXN0IGRyb3AgdGhlIHdob2xl IGlkZWEgYW5kCmV4ZWN1dGUgdGhlIGNvbW1hbmRzIGluIHRoZSBvcmRlciBnaXZlbiwgd2hpY2gg c2VlbXMgbGlrZSBhIG11Y2ggbGVzcwphc3RvbmlzaG1lbnQtcHJvbmUgZGVmaW5pdGlvbiBhbnl3 YXkuCgpBbG9uZyB0aGUgd2F5LCBwYXNzIGRvd24gYSBQYXJzZVN0YXRlIHNvIHRoYXQgd2UgY2Fu IHByb3ZpZGUgYW4KZXJyb3IgY3Vyc29yIGZvciB0aGUgIndyb25nIHNjaGVtYSBuYW1lIiBlcnJv ciwgYW5kIGZpeAp0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMgc28gdGhhdCBpdCBk b2Vzbid0IHNjcmliYmxlCm9uIHRoZSBwYXJzZXRyZWUgcGFzc2VkIHRvIGl0LgoKRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8xMDc1NDI1LjE3MzI5OTM2ODhAc3NzLnBnaC5wYS51cwot LS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sICAgICAgICAgfCAgMTAgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgfCAgIDkgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYyAgICAgICAgICAgfCAgMjIgKystLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICB8IDEzMSArKysrKysrKy0t LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAgICB8 ICAgNyArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2NoZW1hY21kcy5oICAgICAgICAgICB8ICAg NyArLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaCAgICAgICAgICB8ICAgMyAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfc2NoZW1hLm91dCB8ICAzMCArKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGUub3V0ICB8ICAgOSArKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5vdXQgICB8ICAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V2ZW50X3RyaWdnZXIub3V0IHwgICAyICstCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL25hbWVzcGFjZS5vdXQgICAgIHwgIDE5ICsrLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlLnNxbCAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9uYW1lc3BhY2Uuc3FsICAgICAgICAgIHwgIDIyICsrKy0KIDE0IGZpbGVzIGNoYW5n ZWQsIDE2MSBpbnNlcnRpb25zKCspLCAxMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zY2hlbWEuc2dtbAppbmRleCBlZDY5Mjk4Y2NjNi4uNjI1NzkzYTZiNjcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3NjaGVtYS5zZ21sCkBAIC0xOTMsMTIgKzE5MywxMCBAQCBDUkVBVEUgVklFVyBo b2xseXdvb2Qud2lubmVycyBBUwogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgU1FMIHN0 YW5kYXJkIHNwZWNpZmllcyB0aGF0IHRoZSBzdWJjb21tYW5kcyBpbiA8Y29tbWFuZD5DUkVBVEUK LSAgIFNDSEVNQTwvY29tbWFuZD4gY2FuIGFwcGVhciBpbiBhbnkgb3JkZXIuICBUaGUgcHJlc2Vu dAotICAgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpbXBsZW1lbnRhdGlv biBkb2VzIG5vdAotICAgaGFuZGxlIGFsbCBjYXNlcyBvZiBmb3J3YXJkIHJlZmVyZW5jZXMgaW4g c3ViY29tbWFuZHM7IGl0IG1pZ2h0Ci0gICBzb21ldGltZXMgYmUgbmVjZXNzYXJ5IHRvIHJlb3Jk ZXIgdGhlIHN1YmNvbW1hbmRzIGluIG9yZGVyIHRvIGF2b2lkCi0gICBmb3J3YXJkIHJlZmVyZW5j ZXMuCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4ZWN1dGVzIHRo ZSBzdWJjb21tYW5kcworICAgaW4gPGNvbW1hbmQ+Q1JFQVRFIFNDSEVNQTwvY29tbWFuZD4gaW4g dGhlIG9yZGVyIGdpdmVuLiAgT3RoZXIKKyAgIGltcGxlbWVudGF0aW9ucyBtYXkgdHJ5IHRvIHJl YXJyYW5nZSB0aGUgc3ViY29tbWFuZHMgaW50byBkZXBlbmRlbmN5CisgICBvcmRlciwgYnV0IHRo YXQgaXMgaGFyZCBpZiBub3QgaW1wb3NzaWJsZSB0byBkbyBjb3JyZWN0bHkuCiAgIDwvcGFyYT4K IAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggYWY2YmQ4ZmY0MjYuLmEy ZWI0MmRjN2ZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtMTY4NywxNCArMTY4Nywx OSBAQCBDcmVhdGVFeHRlbnNpb25JbnRlcm5hbChjaGFyICpleHRlbnNpb25OYW1lLAogCiAJCWlm ICghT2lkSXNWYWxpZChzY2hlbWFPaWQpKQogCQl7CisJCQlQYXJzZVN0YXRlICpwc3RhdGUgPSBt YWtlX3BhcnNlc3RhdGUoTlVMTCk7CiAJCQlDcmVhdGVTY2hlbWFTdG10ICpjc3N0bXQgPSBtYWtl Tm9kZShDcmVhdGVTY2hlbWFTdG10KTsKIAorCQkJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSAiKGdl bmVyYXRlZCBDUkVBVEUgU0NIRU1BIGNvbW1hbmQpIjsKKwkJCXBzdGF0ZS0+cF9zdG10X2xvY2F0 aW9uID0gLTE7CisJCQlwc3RhdGUtPnBfc3RtdF9sZW4gPSAtMTsKKwogCQkJY3NzdG10LT5zY2hl bWFuYW1lID0gc2NoZW1hTmFtZTsKIAkJCWNzc3RtdC0+YXV0aHJvbGUgPSBOVUxMOwkvKiB3aWxs IGJlIGNyZWF0ZWQgYnkgY3VycmVudCB1c2VyICovCiAJCQljc3N0bXQtPnNjaGVtYUVsdHMgPSBO SUw7CiAJCQljc3N0bXQtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKLQkJCUNyZWF0ZVNjaGVtYUNv bW1hbmQoY3NzdG10LCAiKGdlbmVyYXRlZCBDUkVBVEUgU0NIRU1BIGNvbW1hbmQpIiwKLQkJCQkJ CQkJLTEsIC0xKTsKKworCQkJQ3JlYXRlU2NoZW1hQ29tbWFuZChwc3RhdGUsIGNzc3RtdCk7CiAK IAkJCS8qCiAJCQkgKiBDcmVhdGVTY2hlbWFDb21tYW5kIGluY2x1ZGVzIENvbW1hbmRDb3VudGVy SW5jcmVtZW50LCBzbyBuZXcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVt YWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYwppbmRleCAyMzNmOGFk MWQ0NC4uNDQ3MGI5YTQwMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVt YWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hlbWFjbWRzLmMKQEAgLTQyLDE1 ICs0MiwxNCBAQCBzdGF0aWMgdm9pZCBBbHRlclNjaGVtYU93bmVyX2ludGVybmFsKEhlYXBUdXBs ZSB0dXAsIFJlbGF0aW9uIHJlbCwgT2lkIG5ld093bmVySQogLyoKICAqIENSRUFURSBTQ0hFTUEK ICAqCi0gKiBOb3RlOiBjYWxsZXIgc2hvdWxkIHBhc3MgaW4gbG9jYXRpb24gaW5mb3JtYXRpb24g Zm9yIHRoZSB3aG9sZQorICogTm90ZTogcHN0YXRlIHNob3VsZCBwYXNzIGluIGxvY2F0aW9uIGlu Zm9ybWF0aW9uIGZvciB0aGUgd2hvbGUKICAqIENSRUFURSBTQ0hFTUEgc3RhdGVtZW50LCB3aGlj aCBpbiB0dXJuIHdlIHBhc3MgZG93biBhcyB0aGUgbG9jYXRpb24KICAqIG9mIHRoZSBjb21wb25l bnQgY29tbWFuZHMuICBUaGlzIGNvbXBvcnRzIHdpdGggb3VyIGdlbmVyYWwgcGxhbiBvZgogICog cmVwb3J0aW5nIGxvY2F0aW9uL2xlbiBmb3IgdGhlIHdob2xlIGNvbW1hbmQgZXZlbiB3aGVuIGV4 ZWN1dGluZwogICogYSBzdWJxdWVyeS4KICAqLwogT2lkCi1DcmVhdGVTY2hlbWFDb21tYW5kKENy ZWF0ZVNjaGVtYVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAotCQkJCQlpbnQg c3RtdF9sb2NhdGlvbiwgaW50IHN0bXRfbGVuKQorQ3JlYXRlU2NoZW1hQ29tbWFuZChQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQpCiB7CiAJY29uc3QgY2hhciAqc2No ZW1hTmFtZSA9IHN0bXQtPnNjaGVtYW5hbWU7CiAJT2lkCQkJbmFtZXNwYWNlSWQ7CkBAIC0xODks MTIgKzE4OCwxMyBAQCBDcmVhdGVTY2hlbWFDb21tYW5kKENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQs IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCiAJLyoKIAkgKiBFeGFtaW5lIHRoZSBsaXN0IG9m IGNvbW1hbmRzIGVtYmVkZGVkIGluIHRoZSBDUkVBVEUgU0NIRU1BIGNvbW1hbmQsIGFuZAotCSAq IHJlb3JnYW5pemUgdGhlbSBpbnRvIGEgc2VxdWVudGlhbGx5IGV4ZWN1dGFibGUgb3JkZXIgd2l0 aCBubyBmb3J3YXJkCi0JICogcmVmZXJlbmNlcy4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0IGlzIHN0 aWxsIGEgbGlzdCBvZiByYXcgcGFyc2V0cmVlcyAtLS0KLQkgKiB3ZSBjYW5ub3QsIGluIGdlbmVy YWwsIHJ1biBwYXJzZSBhbmFseXNpcyBvbiBvbmUgc3RhdGVtZW50IHVudGlsIHdlCi0JICogaGF2 ZSBhY3R1YWxseSBleGVjdXRlZCB0aGUgcHJpb3Igb25lcy4KKwkgKiBkbyBwcmVsaW1pbmFyeSB0 cmFuc2Zvcm1hdGlvbnMgKG1vc3RseSwgdmVyaWZ5IHRoYXQgbm9uZSBhcmUgdHJ5aW5nIHRvCisJ ICogY3JlYXRlIG9iamVjdHMgb3V0c2lkZSB0aGUgbmV3IHNjaGVtYSkuICBOb3RlIHRoYXQgdGhl IHJlc3VsdCBpcyBzdGlsbAorCSAqIGEgbGlzdCBvZiByYXcgcGFyc2V0cmVlcyAtLS0gd2UgY2Fu bm90LCBpbiBnZW5lcmFsLCBydW4gcGFyc2UgYW5hbHlzaXMKKwkgKiBvbiBvbmUgc3RhdGVtZW50 IHVudGlsIHdlIGhhdmUgYWN0dWFsbHkgZXhlY3V0ZWQgdGhlIHByaW9yIG9uZXMuCiAJICovCi0J cGFyc2V0cmVlX2xpc3QgPSB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMoc3RtdC0+ c2NoZW1hRWx0cywKKwlwYXJzZXRyZWVfbGlzdCA9IHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRF bGVtZW50cyhwc3RhdGUsCisJCQkJCQkJCQkJCQkJICAgc3RtdC0+c2NoZW1hRWx0cywKIAkJCQkJ CQkJCQkJCQkgICBzY2hlbWFOYW1lKTsKIAogCS8qCkBAIC0yMTMsMTIgKzIxMywxMiBAQCBDcmVh dGVTY2hlbWFDb21tYW5kKENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nLAogCQl3cmFwcGVyLT5jb21tYW5kVHlwZSA9IENNRF9VVElMSVRZOwogCQl3cmFwcGVy LT5jYW5TZXRUYWcgPSBmYWxzZTsKIAkJd3JhcHBlci0+dXRpbGl0eVN0bXQgPSBzdG10OwotCQl3 cmFwcGVyLT5zdG10X2xvY2F0aW9uID0gc3RtdF9sb2NhdGlvbjsKLQkJd3JhcHBlci0+c3RtdF9s ZW4gPSBzdG10X2xlbjsKKwkJd3JhcHBlci0+c3RtdF9sb2NhdGlvbiA9IHBzdGF0ZS0+cF9zdG10 X2xvY2F0aW9uOworCQl3cmFwcGVyLT5zdG10X2xlbiA9IHBzdGF0ZS0+cF9zdG10X2xlbjsKIAog CQkvKiBkbyB0aGlzIHN0ZXAgKi8KIAkJUHJvY2Vzc1V0aWxpdHkod3JhcHBlciwKLQkJCQkJICAg cXVlcnlTdHJpbmcsCisJCQkJCSAgIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkgICBmYWxz ZSwKIAkJCQkJICAgUFJPQ0VTU19VVElMSVRZX1NVQkNPTU1BTkQsCiAJCQkJCSAgIE5VTEwsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCAwZjMyNGVlNGUzMS4uNmQwMDY0M2YzNGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtOTUsMTggKzk1LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlib29sCQlvZlR5cGU7CQkJLyogdHJ1ZSBpZiBzdGF0ZW1lbnQgY29udGFpbnMg T0YgdHlwZW5hbWUgKi8KIH0gQ3JlYXRlU3RtdENvbnRleHQ7CiAKLS8qIFN0YXRlIHNoYXJlZCBi eSB0cmFuc2Zvcm1DcmVhdGVTY2hlbWFTdG10RWxlbWVudHMgYW5kIGl0cyBzdWJyb3V0aW5lcyAq LwotdHlwZWRlZiBzdHJ1Y3QKLXsKLQljb25zdCBjaGFyICpzY2hlbWFuYW1lOwkJLyogbmFtZSBv ZiBzY2hlbWEgKi8KLQlMaXN0CSAgICpzZXF1ZW5jZXM7CQkvKiBDUkVBVEUgU0VRVUVOQ0UgaXRl bXMgKi8KLQlMaXN0CSAgICp0YWJsZXM7CQkJLyogQ1JFQVRFIFRBQkxFIGl0ZW1zICovCi0JTGlz dAkgICAqdmlld3M7CQkJLyogQ1JFQVRFIFZJRVcgaXRlbXMgKi8KLQlMaXN0CSAgICppbmRleGVz OwkJLyogQ1JFQVRFIElOREVYIGl0ZW1zICovCi0JTGlzdAkgICAqdHJpZ2dlcnM7CQkvKiBDUkVB VEUgVFJJR0dFUiBpdGVtcyAqLwotCUxpc3QJICAgKmdyYW50czsJCQkvKiBHUkFOVCBpdGVtcyAq LwotfSBDcmVhdGVTY2hlbWFTdG10Q29udGV4dDsKLQogCiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1D b2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgIENvbHVt bkRlZiAqY29sdW1uKTsKQEAgLTEzMyw3ICsxMjEsOCBAQCBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1D aGVja0NvbnN0cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiBzdGF0aWMgdm9pZCB0cmFu c2Zvcm1Db25zdHJhaW50QXR0cnMoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBM aXN0ICpjb25zdHJhaW50TGlzdCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db2x1bW5UeXBlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAqY29sdW1uKTsKLXN0YXRpYyB2b2lkIHNl dFNjaGVtYU5hbWUoY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVt YV9uYW1lKTsKK3N0YXRpYyB2b2lkIGNoZWNrU2NoZW1hTmFtZShQYXJzZVN0YXRlICpwc3RhdGUs IGNvbnN0IGNoYXIgKmNvbnRleHRfc2NoZW1hLAorCQkJCQkJCVJhbmdlVmFyICpyZWxhdGlvbik7 CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4 dCwgUGFydGl0aW9uQ21kICpjbWQpOwogc3RhdGljIExpc3QgKnRyYW5zZm9ybVBhcnRpdGlvblJh bmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqYmxpc3QsCiAJCQkJCQkJCQkJICAg UmVsYXRpb24gcGFyZW50KTsKQEAgLTQwMDIsNTEgKzM5OTEsMzUgQEAgdHJhbnNmb3JtQ29sdW1u VHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKICAqIHRyYW5z Zm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyAtCiAgKgkgIGFuYWx5emVzIHRoZSBlbGVtZW50 cyBvZiBhIENSRUFURSBTQ0hFTUEgc3RhdGVtZW50CiAgKgotICogU3BsaXQgdGhlIHNjaGVtYSBl bGVtZW50IGxpc3QgZnJvbSBhIENSRUFURSBTQ0hFTUEgc3RhdGVtZW50IGludG8KLSAqIGluZGl2 aWR1YWwgY29tbWFuZHMgYW5kIHBsYWNlIHRoZW0gaW4gdGhlIHJlc3VsdCBsaXN0IGluIGFuIG9y ZGVyCi0gKiBzdWNoIHRoYXQgdGhlcmUgYXJlIG5vIGZvcndhcmQgcmVmZXJlbmNlcyAoZS5nLiBH UkFOVCB0byBhIHRhYmxlCi0gKiBjcmVhdGVkIGxhdGVyIGluIHRoZSBsaXN0KS4gTm90ZSB0aGF0 IHRoZSBsb2dpYyB3ZSB1c2UgZm9yIGRldGVybWluaW5nCi0gKiBmb3J3YXJkIHJlZmVyZW5jZXMg aXMgcHJlc2VudGx5IHF1aXRlIGluY29tcGxldGUuCisgKiBUaGlzIGlzIG5vdyBzb21ld2hhdCB2 ZXN0aWdpYWw6IGl0cyBvbmx5IHJlYWwgcmVzcG9uc2liaWxpdHkgaXMgdG8gY29tcGxhaW4KKyAq IGlmIGFueSBvZiB0aGUgZWxlbWVudHMgYXJlIHRyeWluZyB0byBjcmVhdGUgb2JqZWN0cyBvdXRz aWRlIHRoZSBuZXcgc2NoZW1hLgorICogV2UgdXNlZCB0byB0cnkgdG8gcmUtb3JkZXIgdGhlIGNv bW1hbmRzIGluIGEgd2F5IHRoYXQgd291bGQgd29yayBldmVuIGlmCisgKiB0aGUgdXNlci13cml0 dGVuIG9yZGVyIHdvdWxkIG5vdCwgYnV0IHRoYXQncyB0b28gaGFyZCAocGVyaGFwcyBpbXBvc3Np YmxlKQorICogdG8gZG8gY29ycmVjdGx5IHdpdGggbm90LXlldC1wYXJzZS1hbmFseXplZCBjb21t YW5kcy4gIE5vdyB3ZSdsbCBqdXN0CisgKiBleGVjdXRlIHRoZSBlbGVtZW50cyBpbiB0aGUgb3Jk ZXIgZ2l2ZW4uCiAgKgogICogInNjaGVtYU5hbWUiIGlzIHRoZSBuYW1lIG9mIHRoZSBzY2hlbWEg dGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvbgotICogb2YgdGhlIG9iamVjdHMgbGlz dGVkLCB0aGF0IG1heSBiZSBjb21waWxlZCBmcm9tIHRoZSBzY2hlbWEgbmFtZSBkZWZpbmVkCisg KiBvZiB0aGUgb2JqZWN0cyBsaXN0ZWQuICBJdCBtYXkgYmUgb2J0YWluZWQgZnJvbSB0aGUgc2No ZW1hIG5hbWUgZGVmaW5lZAogICogaW4gdGhlIHN0YXRlbWVudCBvciBhIHJvbGUgc3BlY2lmaWNh dGlvbi4KICAqCi0gKiBTUUwgYWxzbyBhbGxvd3MgY29uc3RyYWludHMgdG8gbWFrZSBmb3J3YXJk IHJlZmVyZW5jZXMsIHNvIHRodW1iIHRocm91Z2gKLSAqIHRoZSB0YWJsZSBjb2x1bW5zIGFuZCBt b3ZlIGZvcndhcmQgcmVmZXJlbmNlcyB0byBhIHBvc3RlcmlvciBhbHRlci10YWJsZQotICogY29t bWFuZC4KLSAqCiAgKiBUaGUgcmVzdWx0IGlzIGEgbGlzdCBvZiBwYXJzZSBub2RlcyB0aGF0IHN0 aWxsIG5lZWQgdG8gYmUgYW5hbHl6ZWQgLS0tCiAgKiBidXQgd2UgY2FuJ3QgYW5hbHl6ZSB0aGUg bGF0ZXIgY29tbWFuZHMgdW50aWwgd2UndmUgZXhlY3V0ZWQgdGhlIGVhcmxpZXIKICAqIG9uZXMs IGJlY2F1c2Ugb2YgcG9zc2libGUgaW50ZXItb2JqZWN0IHJlZmVyZW5jZXMuCi0gKgotICogTm90 ZTogdGhpcyBicmVha3MgdGhlIHJ1bGVzIGEgbGl0dGxlIGJpdCBieSBtb2RpZnlpbmcgc2NoZW1h LW5hbWUgZmllbGRzCi0gKiB3aXRoaW4gcGFzc2VkLWluIHN0cnVjdHMuICBIb3dldmVyLCB0aGUg dHJhbnNmb3JtYXRpb24gd291bGQgYmUgdGhlIHNhbWUKLSAqIGlmIGRvbmUgb3Zlciwgc28gaXQg c2hvdWxkIGJlIGFsbCByaWdodCB0byBzY3JpYmJsZSBvbiB0aGUgaW5wdXQgdG8gdGhpcwotICog ZXh0ZW50LgogICovCiBMaXN0ICoKLXRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhM aXN0ICpzY2hlbWFFbHRzLCBjb25zdCBjaGFyICpzY2hlbWFOYW1lKQordHJhbnNmb3JtQ3JlYXRl U2NoZW1hU3RtdEVsZW1lbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc2NoZW1hRWx0cywK KwkJCQkJCQkJICBjb25zdCBjaGFyICpzY2hlbWFOYW1lKQogewotCUNyZWF0ZVNjaGVtYVN0bXRD b250ZXh0IGN4dDsKLQlMaXN0CSAgICpyZXN1bHQ7Ci0JTGlzdENlbGwgICAqZWxlbWVudHM7Ci0K LQljeHQuc2NoZW1hbmFtZSA9IHNjaGVtYU5hbWU7Ci0JY3h0LnNlcXVlbmNlcyA9IE5JTDsKLQlj eHQudGFibGVzID0gTklMOwotCWN4dC52aWV3cyA9IE5JTDsKLQljeHQuaW5kZXhlcyA9IE5JTDsK LQljeHQudHJpZ2dlcnMgPSBOSUw7Ci0JY3h0LmdyYW50cyA9IE5JTDsKKwlMaXN0CSAgICplbGVt ZW50cyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKIAogCS8qCi0JICogUnVuIHRocm91Z2ggZWFj aCBzY2hlbWEgZWxlbWVudCBpbiB0aGUgc2NoZW1hIGVsZW1lbnQgbGlzdC4gU2VwYXJhdGUKLQkg KiBzdGF0ZW1lbnRzIGJ5IHR5cGUsIGFuZCBkbyBwcmVsaW1pbmFyeSBhbmFseXNpcy4KKwkgKiBS dW4gdGhyb3VnaCBlYWNoIHNjaGVtYSBlbGVtZW50IGluIHRoZSBzY2hlbWEgZWxlbWVudCBsaXN0 LiAgQ2hlY2sKKwkgKiB0YXJnZXQgc2NoZW1hIG5hbWVzLCBhbmQgY29sbGVjdCB0aGUgbGlzdCBv ZiBhY3Rpb25zIHRvIGJlIGRvbmUuCiAJICovCi0JZm9yZWFjaChlbGVtZW50cywgc2NoZW1hRWx0 cykKKwlmb3JlYWNoKGxjLCBzY2hlbWFFbHRzKQogCXsKLQkJTm9kZQkgICAqZWxlbWVudCA9IGxm aXJzdChlbGVtZW50cyk7CisJCU5vZGUJICAgKmVsZW1lbnQgPSBsZmlyc3QobGMpOwogCiAJCXN3 aXRjaCAobm9kZVRhZyhlbGVtZW50KSkKIAkJewpAQCAtNDA1NCw4ICs0MDI3LDggQEAgdHJhbnNm b3JtQ3JlYXRlU2NoZW1hU3RtdEVsZW1lbnRzKExpc3QgKnNjaGVtYUVsdHMsIGNvbnN0IGNoYXIg KnNjaGVtYU5hbWUpCiAJCQkJewogCQkJCQlDcmVhdGVTZXFTdG10ICplbHAgPSAoQ3JlYXRlU2Vx U3RtdCAqKSBlbGVtZW50OwogCi0JCQkJCXNldFNjaGVtYU5hbWUoY3h0LnNjaGVtYW5hbWUsICZl bHAtPnNlcXVlbmNlLT5zY2hlbWFuYW1lKTsKLQkJCQkJY3h0LnNlcXVlbmNlcyA9IGxhcHBlbmQo Y3h0LnNlcXVlbmNlcywgZWxlbWVudCk7CisJCQkJCWNoZWNrU2NoZW1hTmFtZShwc3RhdGUsIHNj aGVtYU5hbWUsIGVscC0+c2VxdWVuY2UpOworCQkJCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVu dHMsIGVsZW1lbnQpOwogCQkJCX0KIAkJCQlicmVhazsKIApAQCAtNDA2MywxMiArNDAzNiw4IEBA IHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25z dCBjaGFyICpzY2hlbWFOYW1lKQogCQkJCXsKIAkJCQkJQ3JlYXRlU3RtdCAqZWxwID0gKENyZWF0 ZVN0bXQgKikgZWxlbWVudDsKIAotCQkJCQlzZXRTY2hlbWFOYW1lKGN4dC5zY2hlbWFuYW1lLCAm ZWxwLT5yZWxhdGlvbi0+c2NoZW1hbmFtZSk7Ci0KLQkJCQkJLyoKLQkJCQkJICogWFhYIHRvZG86 IGRlYWwgd2l0aCBjb25zdHJhaW50cwotCQkJCQkgKi8KLQkJCQkJY3h0LnRhYmxlcyA9IGxhcHBl bmQoY3h0LnRhYmxlcywgZWxlbWVudCk7CisJCQkJCWNoZWNrU2NoZW1hTmFtZShwc3RhdGUsIHNj aGVtYU5hbWUsIGVscC0+cmVsYXRpb24pOworCQkJCQllbGVtZW50cyA9IGxhcHBlbmQoZWxlbWVu dHMsIGVsZW1lbnQpOwogCQkJCX0KIAkJCQlicmVhazsKIApAQCAtNDA3NiwxMiArNDA0NSw4IEBA IHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25z dCBjaGFyICpzY2hlbWFOYW1lKQogCQkJCXsKIAkJCQkJVmlld1N0bXQgICAqZWxwID0gKFZpZXdT dG10ICopIGVsZW1lbnQ7CiAKLQkJCQkJc2V0U2NoZW1hTmFtZShjeHQuc2NoZW1hbmFtZSwgJmVs cC0+dmlldy0+c2NoZW1hbmFtZSk7Ci0KLQkJCQkJLyoKLQkJCQkJICogWFhYIHRvZG86IGRlYWwg d2l0aCByZWZlcmVuY2VzIGJldHdlZW4gdmlld3MKLQkJCQkJICovCi0JCQkJCWN4dC52aWV3cyA9 IGxhcHBlbmQoY3h0LnZpZXdzLCBlbGVtZW50KTsKKwkJCQkJY2hlY2tTY2hlbWFOYW1lKHBzdGF0 ZSwgc2NoZW1hTmFtZSwgZWxwLT52aWV3KTsKKwkJCQkJZWxlbWVudHMgPSBsYXBwZW5kKGVsZW1l bnRzLCBlbGVtZW50KTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAKQEAgLTQwODksOCArNDA1NCw4IEBA IHRyYW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25z dCBjaGFyICpzY2hlbWFOYW1lKQogCQkJCXsKIAkJCQkJSW5kZXhTdG10ICAqZWxwID0gKEluZGV4 U3RtdCAqKSBlbGVtZW50OwogCi0JCQkJCXNldFNjaGVtYU5hbWUoY3h0LnNjaGVtYW5hbWUsICZl bHAtPnJlbGF0aW9uLT5zY2hlbWFuYW1lKTsKLQkJCQkJY3h0LmluZGV4ZXMgPSBsYXBwZW5kKGN4 dC5pbmRleGVzLCBlbGVtZW50KTsKKwkJCQkJY2hlY2tTY2hlbWFOYW1lKHBzdGF0ZSwgc2NoZW1h TmFtZSwgZWxwLT5yZWxhdGlvbik7CisJCQkJCWVsZW1lbnRzID0gbGFwcGVuZChlbGVtZW50cywg ZWxlbWVudCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCkBAIC00MDk4LDEzICs0MDYzLDEzIEBAIHRy YW5zZm9ybUNyZWF0ZVNjaGVtYVN0bXRFbGVtZW50cyhMaXN0ICpzY2hlbWFFbHRzLCBjb25zdCBj aGFyICpzY2hlbWFOYW1lKQogCQkJCXsKIAkJCQkJQ3JlYXRlVHJpZ1N0bXQgKmVscCA9IChDcmVh dGVUcmlnU3RtdCAqKSBlbGVtZW50OwogCi0JCQkJCXNldFNjaGVtYU5hbWUoY3h0LnNjaGVtYW5h bWUsICZlbHAtPnJlbGF0aW9uLT5zY2hlbWFuYW1lKTsKLQkJCQkJY3h0LnRyaWdnZXJzID0gbGFw cGVuZChjeHQudHJpZ2dlcnMsIGVsZW1lbnQpOworCQkJCQljaGVja1NjaGVtYU5hbWUocHN0YXRl LCBzY2hlbWFOYW1lLCBlbHAtPnJlbGF0aW9uKTsKKwkJCQkJZWxlbWVudHMgPSBsYXBwZW5kKGVs ZW1lbnRzLCBlbGVtZW50KTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAKIAkJCWNhc2UgVF9HcmFudFN0 bXQ6Ci0JCQkJY3h0LmdyYW50cyA9IGxhcHBlbmQoY3h0LmdyYW50cywgZWxlbWVudCk7CisJCQkJ ZWxlbWVudHMgPSBsYXBwZW5kKGVsZW1lbnRzLCBlbGVtZW50KTsKIAkJCQlicmVhazsKIAogCQkJ ZGVmYXVsdDoKQEAgLTQxMTMsMzIgKzQwNzgsNDAgQEAgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3Rt dEVsZW1lbnRzKExpc3QgKnNjaGVtYUVsdHMsIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUpCiAJCX0K IAl9CiAKLQlyZXN1bHQgPSBOSUw7Ci0JcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQu c2VxdWVuY2VzKTsKLQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1bHQsIGN4dC50YWJsZXMpOwot CXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgY3h0LnZpZXdzKTsKLQlyZXN1bHQgPSBsaXN0 X2NvbmNhdChyZXN1bHQsIGN4dC5pbmRleGVzKTsKLQlyZXN1bHQgPSBsaXN0X2NvbmNhdChyZXN1 bHQsIGN4dC50cmlnZ2Vycyk7Ci0JcmVzdWx0ID0gbGlzdF9jb25jYXQocmVzdWx0LCBjeHQuZ3Jh bnRzKTsKLQotCXJldHVybiByZXN1bHQ7CisJcmV0dXJuIGVsZW1lbnRzOwogfQogCiAvKgotICog c2V0U2NoZW1hTmFtZQotICoJCVNldCBvciBjaGVjayBzY2hlbWEgbmFtZSBpbiBhbiBlbGVtZW50 IG9mIGEgQ1JFQVRFIFNDSEVNQSBjb21tYW5kCisgKiBjaGVja1NjaGVtYU5hbWUKKyAqCQlDaGVj ayBzY2hlbWEgbmFtZSBpbiBhbiBlbGVtZW50IG9mIGEgQ1JFQVRFIFNDSEVNQSBjb21tYW5kCisg KgorICogSXQncyBva2F5IGlmIHRoZSBjb21tYW5kIGRvZXNuJ3Qgc3BlY2lmeSBhIHRhcmdldCBz Y2hlbWEgbmFtZSwgYmVjYXVzZQorICogQ3JlYXRlU2NoZW1hQ29tbWFuZCB3aWxsIHNldCB1cCB0 aGUgZGVmYXVsdCBjcmVhdGlvbiBzY2hlbWEgdG8gYmUgdGhlCisgKiBuZXcgc2NoZW1hLiAgQnV0 IGlmIGEgdGFyZ2V0IHNjaGVtYSBuYW1lIGlzIGdpdmVuLCBpdCBoYWQgYmV0dGVyIG1hdGNoLgor ICogV2UgYWxzbyBoYXZlIHRvIGNoZWNrIHRoYXQgdGhlIGNvbW1hbmQgZG9lc24ndCBzYXkgQ1JF QVRFIFRFTVAsIHNpbmNlCisgKiB0aGF0IHdvdWxkIGxpa2V3aXNlIHB1dCB0aGUgb2JqZWN0IGlu dG8gdGhlIHdyb25nIHNjaGVtYS4KICAqLwogc3RhdGljIHZvaWQKLXNldFNjaGVtYU5hbWUoY29u c3QgY2hhciAqY29udGV4dF9zY2hlbWEsIGNoYXIgKipzdG10X3NjaGVtYV9uYW1lKQorY2hlY2tT Y2hlbWFOYW1lKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29udGV4dF9zY2hlbWEs CisJCQkJUmFuZ2VWYXIgKnJlbGF0aW9uKQogewotCWlmICgqc3RtdF9zY2hlbWFfbmFtZSA9PSBO VUxMKQotCQkqc3RtdF9zY2hlbWFfbmFtZSA9IHVuY29uc3RpZnkoY2hhciAqLCBjb250ZXh0X3Nj aGVtYSk7Ci0JZWxzZSBpZiAoc3RyY21wKGNvbnRleHRfc2NoZW1hLCAqc3RtdF9zY2hlbWFfbmFt ZSkgIT0gMCkKKwlpZiAocmVsYXRpb24tPnNjaGVtYW5hbWUgIT0gTlVMTCAmJgorCQlzdHJjbXAo Y29udGV4dF9zY2hlbWEsIHJlbGF0aW9uLT5zY2hlbWFuYW1lKSAhPSAwKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9TQ0hFTUFfREVGSU5JVElPTiksCiAJ CQkJIGVycm1zZygiQ1JFQVRFIHNwZWNpZmllcyBhIHNjaGVtYSAoJXMpICIKIAkJCQkJCSJkaWZm ZXJlbnQgZnJvbSB0aGUgb25lIGJlaW5nIGNyZWF0ZWQgKCVzKSIsCi0JCQkJCQkqc3RtdF9zY2hl bWFfbmFtZSwgY29udGV4dF9zY2hlbWEpKSk7CisJCQkJCQlyZWxhdGlvbi0+c2NoZW1hbmFtZSwg Y29udGV4dF9zY2hlbWEpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByZWxhdGlv bi0+bG9jYXRpb24pKSk7CisKKwlpZiAocmVsYXRpb24tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBF UlNJU1RFTkNFX1RFTVApCisJeworCQkvKiBzcGVsbCB0aGlzIGVycm9yIHRoZSBzYW1lIGFzIGlu IFJhbmdlVmFyQWRqdXN0UmVsYXRpb25QZXJzaXN0ZW5jZSAqLworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5IHNj aGVtYSIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCByZWxhdGlvbi0+bG9jYXRp b24pKSk7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBmMjhiZjM3MTA1OS4uYWQwYTMx NDYzMDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9i YWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC01ODcsNiArNTg3LDggQEAgc3RhbmRhcmRfUHJvY2Vz c1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCiAJcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRl KE5VTEwpOwogCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0gcXVlcnlTdHJpbmc7CisJcHN0YXRlLT5w X3N0bXRfbG9jYXRpb24gPSBwc3RtdC0+c3RtdF9sb2NhdGlvbjsKKwlwc3RhdGUtPnBfc3RtdF9s ZW4gPSBwc3RtdC0+c3RtdF9sZW47CiAJcHN0YXRlLT5wX3F1ZXJ5RW52ID0gcXVlcnlFbnY7CiAK IAlzd2l0Y2ggKG5vZGVUYWcocGFyc2V0cmVlKSkKQEAgLTExMjEsMTAgKzExMjMsNyBAQCBQcm9j ZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSAqIHJlbGF0aW9uIGFuZCBh dHRyaWJ1dGUgbWFuaXB1bGF0aW9uCiAJCQkJICovCiAJCQljYXNlIFRfQ3JlYXRlU2NoZW1hU3Rt dDoKLQkJCQlDcmVhdGVTY2hlbWFDb21tYW5kKChDcmVhdGVTY2hlbWFTdG10ICopIHBhcnNldHJl ZSwKLQkJCQkJCQkJCXF1ZXJ5U3RyaW5nLAotCQkJCQkJCQkJcHN0bXQtPnN0bXRfbG9jYXRpb24s Ci0JCQkJCQkJCQlwc3RtdC0+c3RtdF9sZW4pOworCQkJCUNyZWF0ZVNjaGVtYUNvbW1hbmQocHN0 YXRlLCAoQ3JlYXRlU2NoZW1hU3RtdCAqKSBwYXJzZXRyZWUpOwogCiAJCQkJLyoKIAkJCQkgKiBF dmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFuZCBjYWxsZWQgYnkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Nj aGVtYWNtZHMuaAppbmRleCA1NTk4ZGZhNWQ3Ni4uZTY4NjE5OTRkMDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3NjaGVtYWNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9zY2hlbWFjbWRzLmgKQEAgLTE2LDEyICsxNiw5IEBACiAjZGVmaW5lIFNDSEVNQUNNRFNfSAog CiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCi0jaW5jbHVkZSAibm9kZXMvcGFy c2Vub2Rlcy5oIgotCi1leHRlcm4gT2lkCUNyZWF0ZVNjaGVtYUNvbW1hbmQoQ3JlYXRlU2NoZW1h U3RtdCAqc3RtdCwKLQkJCQkJCQkJY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCi0JCQkJCQkJCWlu dCBzdG10X2xvY2F0aW9uLCBpbnQgc3RtdF9sZW4pOworI2luY2x1ZGUgInBhcnNlci9wYXJzZV9u b2RlLmgiCiAKK2V4dGVybiBPaWQJQ3JlYXRlU2NoZW1hQ29tbWFuZChQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVNjaGVtYVN0bXQgKnN0bXQpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgUmVuYW1l U2NoZW1hKGNvbnN0IGNoYXIgKm9sZG5hbWUsIGNvbnN0IGNoYXIgKm5ld25hbWUpOwogZXh0ZXJu IE9iamVjdEFkZHJlc3MgQWx0ZXJTY2hlbWFPd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3 T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclNjaGVtYU93bmVyX29pZChPaWQgc2NoZW1hb2lk LCBPaWQgbmV3T3duZXJJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaAppbmRleCAxNDA2 NTg5NDc3OS4uNWQyMmVhOTg4YzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV91dGlsY21kLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAt MzAsNyArMzAsOCBAQCBleHRlcm4gQ3JlYXRlU3RhdHNTdG10ICp0cmFuc2Zvcm1TdGF0c1N0bXQo T2lkIHJlbGlkLCBDcmVhdGVTdGF0c1N0bXQgKnN0bXQsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hh ciAqcXVlcnlTdHJpbmcpOwogZXh0ZXJuIHZvaWQgdHJhbnNmb3JtUnVsZVN0bXQoUnVsZVN0bXQg KnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCSAgTGlzdCAqKmFjdGlvbnMs IE5vZGUgKip3aGVyZUNsYXVzZSk7Ci1leHRlcm4gTGlzdCAqdHJhbnNmb3JtQ3JlYXRlU2NoZW1h U3RtdEVsZW1lbnRzKExpc3QgKnNjaGVtYUVsdHMsCitleHRlcm4gTGlzdCAqdHJhbnNmb3JtQ3Jl YXRlU2NoZW1hU3RtdEVsZW1lbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkJCQkJICAg TGlzdCAqc2NoZW1hRWx0cywKIAkJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqc2NoZW1hTmFtZSk7 CiBleHRlcm4gUGFydGl0aW9uQm91bmRTcGVjICp0cmFuc2Zvcm1QYXJ0aXRpb25Cb3VuZChQYXJz ZVN0YXRlICpwc3RhdGUsIFJlbGF0aW9uIHBhcmVudCwKIAkJCQkJCQkJCQkJCSAgIFBhcnRpdGlv bkJvdW5kU3BlYyAqc3BlYyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2NyZWF0ZV9zY2hlbWEub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfc2No ZW1hLm91dAppbmRleCA5MzMwMmEwN2VmYy4uNTU0ZjBmM2M1MGIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3NjaGVtYS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9jcmVhdGVfc2NoZW1hLm91dApAQCAtOSw1NCArOSw4NCBAQCBDUkVBVEUg Uk9MRSByZWdyZXNzX2NyZWF0ZV9zY2hlbWFfcm9sZSBTVVBFUlVTRVI7CiBDUkVBVEUgU0NIRU1B IEFVVEhPUklaQVRJT04gcmVncmVzc19jcmVhdGVfc2NoZW1hX3JvbGUKICAgQ1JFQVRFIFNFUVVF TkNFIHNjaGVtYV9ub3RfZXhpc3Rpbmcuc2VxOwogRVJST1I6ICBDUkVBVEUgc3BlY2lmaWVzIGEg c2NoZW1hIChzY2hlbWFfbm90X2V4aXN0aW5nKSBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGJlaW5n IGNyZWF0ZWQgKHJlZ3Jlc3NfY3JlYXRlX3NjaGVtYV9yb2xlKQorTElORSAyOiAgIENSRUFURSBT RVFVRU5DRSBzY2hlbWFfbm90X2V4aXN0aW5nLnNlcTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogQ1JFQVRFIFNDSEVNQSBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfY3JlYXRlX3NjaGVtYV9y b2xlCiAgIENSRUFURSBUQUJMRSBzY2hlbWFfbm90X2V4aXN0aW5nLnRhYiAoaWQgaW50KTsKIEVS Uk9SOiAgQ1JFQVRFIHNwZWNpZmllcyBhIHNjaGVtYSAoc2NoZW1hX25vdF9leGlzdGluZykgZGlm ZmVyZW50IGZyb20gdGhlIG9uZSBiZWluZyBjcmVhdGVkIChyZWdyZXNzX2NyZWF0ZV9zY2hlbWFf cm9sZSkKK0xJTkUgMjogICBDUkVBVEUgVEFCTEUgc2NoZW1hX25vdF9leGlzdGluZy50YWIgKGlk IGludCk7CisgICAgICAgICAgICAgICAgICAgICAgIF4KIENSRUFURSBTQ0hFTUEgQVVUSE9SSVpB VElPTiByZWdyZXNzX2NyZWF0ZV9zY2hlbWFfcm9sZQogICBDUkVBVEUgVklFVyBzY2hlbWFfbm90 X2V4aXN0aW5nLnZpZXcgQVMgU0VMRUNUIDE7CiBFUlJPUjogIENSRUFURSBzcGVjaWZpZXMgYSBz Y2hlbWEgKHNjaGVtYV9ub3RfZXhpc3RpbmcpIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgYmVpbmcg Y3JlYXRlZCAocmVncmVzc19jcmVhdGVfc2NoZW1hX3JvbGUpCitMSU5FIDI6ICAgQ1JFQVRFIFZJ RVcgc2NoZW1hX25vdF9leGlzdGluZy52aWV3IEFTIFNFTEVDVCAxOworICAgICAgICAgICAgICAg ICAgICAgIF4KIENSRUFURSBTQ0hFTUEgQVVUSE9SSVpBVElPTiByZWdyZXNzX2NyZWF0ZV9zY2hl bWFfcm9sZQogICBDUkVBVEUgSU5ERVggT04gc2NoZW1hX25vdF9leGlzdGluZy50YWIgKGlkKTsK IEVSUk9SOiAgQ1JFQVRFIHNwZWNpZmllcyBhIHNjaGVtYSAoc2NoZW1hX25vdF9leGlzdGluZykg ZGlmZmVyZW50IGZyb20gdGhlIG9uZSBiZWluZyBjcmVhdGVkIChyZWdyZXNzX2NyZWF0ZV9zY2hl bWFfcm9sZSkKK0xJTkUgMjogICBDUkVBVEUgSU5ERVggT04gc2NoZW1hX25vdF9leGlzdGluZy50 YWIgKGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgogQ1JFQVRFIFNDSEVNQSBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfY3JlYXRlX3NjaGVtYV9yb2xlCiAgIENSRUFURSBUUklHR0VSIHNj aGVtYV90cmlnIEJFRk9SRSBJTlNFUlQgT04gc2NoZW1hX25vdF9leGlzdGluZy50YWIKICAgRVhF Q1VURSBGVU5DVElPTiBzY2hlbWFfdHJpZy5ub19mdW5jKCk7CiBFUlJPUjogIENSRUFURSBzcGVj aWZpZXMgYSBzY2hlbWEgKHNjaGVtYV9ub3RfZXhpc3RpbmcpIGRpZmZlcmVudCBmcm9tIHRoZSBv bmUgYmVpbmcgY3JlYXRlZCAocmVncmVzc19jcmVhdGVfc2NoZW1hX3JvbGUpCitMSU5FIDI6ICAg Q1JFQVRFIFRSSUdHRVIgc2NoZW1hX3RyaWcgQkVGT1JFIElOU0VSVCBPTiBzY2hlbWFfbm90X2V4 aS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgogLS0gQWdhaW4sIHdpdGggYSByb2xlIHNwZWNpZmljYXRpb24gYW5kIG5vIHNjaGVtYSBu YW1lcy4KIFNFVCBST0xFIHJlZ3Jlc3NfY3JlYXRlX3NjaGVtYV9yb2xlOwogQ1JFQVRFIFNDSEVN QSBBVVRIT1JJWkFUSU9OIENVUlJFTlRfUk9MRQogICBDUkVBVEUgU0VRVUVOQ0Ugc2NoZW1hX25v dF9leGlzdGluZy5zZXE7CiBFUlJPUjogIENSRUFURSBzcGVjaWZpZXMgYSBzY2hlbWEgKHNjaGVt YV9ub3RfZXhpc3RpbmcpIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgYmVpbmcgY3JlYXRlZCAocmVn cmVzc19jcmVhdGVfc2NoZW1hX3JvbGUpCitMSU5FIDI6ICAgQ1JFQVRFIFNFUVVFTkNFIHNjaGVt YV9ub3RfZXhpc3Rpbmcuc2VxOworICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDUkVBVEUg U0NIRU1BIEFVVEhPUklaQVRJT04gQ1VSUkVOVF9ST0xFCiAgIENSRUFURSBUQUJMRSBzY2hlbWFf bm90X2V4aXN0aW5nLnRhYiAoaWQgaW50KTsKIEVSUk9SOiAgQ1JFQVRFIHNwZWNpZmllcyBhIHNj aGVtYSAoc2NoZW1hX25vdF9leGlzdGluZykgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBiZWluZyBj cmVhdGVkIChyZWdyZXNzX2NyZWF0ZV9zY2hlbWFfcm9sZSkKK0xJTkUgMjogICBDUkVBVEUgVEFC TEUgc2NoZW1hX25vdF9leGlzdGluZy50YWIgKGlkIGludCk7CisgICAgICAgICAgICAgICAgICAg ICAgIF4KIENSRUFURSBTQ0hFTUEgQVVUSE9SSVpBVElPTiBDVVJSRU5UX1JPTEUKICAgQ1JFQVRF IFZJRVcgc2NoZW1hX25vdF9leGlzdGluZy52aWV3IEFTIFNFTEVDVCAxOwogRVJST1I6ICBDUkVB VEUgc3BlY2lmaWVzIGEgc2NoZW1hIChzY2hlbWFfbm90X2V4aXN0aW5nKSBkaWZmZXJlbnQgZnJv bSB0aGUgb25lIGJlaW5nIGNyZWF0ZWQgKHJlZ3Jlc3NfY3JlYXRlX3NjaGVtYV9yb2xlKQorTElO RSAyOiAgIENSRUFURSBWSUVXIHNjaGVtYV9ub3RfZXhpc3RpbmcudmlldyBBUyBTRUxFQ1QgMTsK KyAgICAgICAgICAgICAgICAgICAgICBeCiBDUkVBVEUgU0NIRU1BIEFVVEhPUklaQVRJT04gQ1VS UkVOVF9ST0xFCiAgIENSRUFURSBJTkRFWCBPTiBzY2hlbWFfbm90X2V4aXN0aW5nLnRhYiAoaWQp OwogRVJST1I6ICBDUkVBVEUgc3BlY2lmaWVzIGEgc2NoZW1hIChzY2hlbWFfbm90X2V4aXN0aW5n KSBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGJlaW5nIGNyZWF0ZWQgKHJlZ3Jlc3NfY3JlYXRlX3Nj aGVtYV9yb2xlKQorTElORSAyOiAgIENSRUFURSBJTkRFWCBPTiBzY2hlbWFfbm90X2V4aXN0aW5n LnRhYiAoaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBDUkVBVEUgU0NIRU1BIEFV VEhPUklaQVRJT04gQ1VSUkVOVF9ST0xFCiAgIENSRUFURSBUUklHR0VSIHNjaGVtYV90cmlnIEJF Rk9SRSBJTlNFUlQgT04gc2NoZW1hX25vdF9leGlzdGluZy50YWIKICAgRVhFQ1VURSBGVU5DVElP TiBzY2hlbWFfdHJpZy5ub19mdW5jKCk7CiBFUlJPUjogIENSRUFURSBzcGVjaWZpZXMgYSBzY2hl bWEgKHNjaGVtYV9ub3RfZXhpc3RpbmcpIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgYmVpbmcgY3Jl YXRlZCAocmVncmVzc19jcmVhdGVfc2NoZW1hX3JvbGUpCitMSU5FIDI6ICAgQ1JFQVRFIFRSSUdH RVIgc2NoZW1hX3RyaWcgQkVGT1JFIElOU0VSVCBPTiBzY2hlbWFfbm90X2V4aS4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgogLS0gQWdh aW4sIHdpdGggYSBzY2hlbWEgbmFtZSBhbmQgYSByb2xlIHNwZWNpZmljYXRpb24uCiBDUkVBVEUg U0NIRU1BIHJlZ3Jlc3Nfc2NoZW1hXzEgQVVUSE9SSVpBVElPTiBDVVJSRU5UX1JPTEUKICAgQ1JF QVRFIFNFUVVFTkNFIHNjaGVtYV9ub3RfZXhpc3Rpbmcuc2VxOwogRVJST1I6ICBDUkVBVEUgc3Bl Y2lmaWVzIGEgc2NoZW1hIChzY2hlbWFfbm90X2V4aXN0aW5nKSBkaWZmZXJlbnQgZnJvbSB0aGUg b25lIGJlaW5nIGNyZWF0ZWQgKHJlZ3Jlc3Nfc2NoZW1hXzEpCitMSU5FIDI6ICAgQ1JFQVRFIFNF UVVFTkNFIHNjaGVtYV9ub3RfZXhpc3Rpbmcuc2VxOworICAgICAgICAgICAgICAgICAgICAgICAg ICBeCiBDUkVBVEUgU0NIRU1BIHJlZ3Jlc3Nfc2NoZW1hXzEgQVVUSE9SSVpBVElPTiBDVVJSRU5U X1JPTEUKICAgQ1JFQVRFIFRBQkxFIHNjaGVtYV9ub3RfZXhpc3RpbmcudGFiIChpZCBpbnQpOwog RVJST1I6ICBDUkVBVEUgc3BlY2lmaWVzIGEgc2NoZW1hIChzY2hlbWFfbm90X2V4aXN0aW5nKSBk aWZmZXJlbnQgZnJvbSB0aGUgb25lIGJlaW5nIGNyZWF0ZWQgKHJlZ3Jlc3Nfc2NoZW1hXzEpCitM SU5FIDI6ICAgQ1JFQVRFIFRBQkxFIHNjaGVtYV9ub3RfZXhpc3RpbmcudGFiIChpZCBpbnQpOwor ICAgICAgICAgICAgICAgICAgICAgICBeCiBDUkVBVEUgU0NIRU1BIHJlZ3Jlc3Nfc2NoZW1hXzEg QVVUSE9SSVpBVElPTiBDVVJSRU5UX1JPTEUKICAgQ1JFQVRFIFZJRVcgc2NoZW1hX25vdF9leGlz dGluZy52aWV3IEFTIFNFTEVDVCAxOwogRVJST1I6ICBDUkVBVEUgc3BlY2lmaWVzIGEgc2NoZW1h IChzY2hlbWFfbm90X2V4aXN0aW5nKSBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIGJlaW5nIGNyZWF0 ZWQgKHJlZ3Jlc3Nfc2NoZW1hXzEpCitMSU5FIDI6ICAgQ1JFQVRFIFZJRVcgc2NoZW1hX25vdF9l eGlzdGluZy52aWV3IEFTIFNFTEVDVCAxOworICAgICAgICAgICAgICAgICAgICAgIF4KIENSRUFU RSBTQ0hFTUEgcmVncmVzc19zY2hlbWFfMSBBVVRIT1JJWkFUSU9OIENVUlJFTlRfUk9MRQogICBD UkVBVEUgSU5ERVggT04gc2NoZW1hX25vdF9leGlzdGluZy50YWIgKGlkKTsKIEVSUk9SOiAgQ1JF QVRFIHNwZWNpZmllcyBhIHNjaGVtYSAoc2NoZW1hX25vdF9leGlzdGluZykgZGlmZmVyZW50IGZy b20gdGhlIG9uZSBiZWluZyBjcmVhdGVkIChyZWdyZXNzX3NjaGVtYV8xKQorTElORSAyOiAgIENS RUFURSBJTkRFWCBPTiBzY2hlbWFfbm90X2V4aXN0aW5nLnRhYiAoaWQpOworICAgICAgICAgICAg ICAgICAgICAgICAgICBeCiBDUkVBVEUgU0NIRU1BIHJlZ3Jlc3Nfc2NoZW1hXzEgQVVUSE9SSVpB VElPTiBDVVJSRU5UX1JPTEUKICAgQ1JFQVRFIFRSSUdHRVIgc2NoZW1hX3RyaWcgQkVGT1JFIElO U0VSVCBPTiBzY2hlbWFfbm90X2V4aXN0aW5nLnRhYgogICBFWEVDVVRFIEZVTkNUSU9OIHNjaGVt YV90cmlnLm5vX2Z1bmMoKTsKIEVSUk9SOiAgQ1JFQVRFIHNwZWNpZmllcyBhIHNjaGVtYSAoc2No ZW1hX25vdF9leGlzdGluZykgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBiZWluZyBjcmVhdGVkIChy ZWdyZXNzX3NjaGVtYV8xKQorTElORSAyOiAgIENSRUFURSBUUklHR0VSIHNjaGVtYV90cmlnIEJF Rk9SRSBJTlNFUlQgT04gc2NoZW1hX25vdF9leGkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFJFU0VUIFJPTEU7CiAtLSBDYXNlcyB3 aGVyZSB0aGUgc2NoZW1hIGNyZWF0aW9uIHN1Y2NlZWRzLgogLS0gVGhlIHNjaGVtYSBjcmVhdGVk IG1hdGNoZXMgdGhlIHJvbGUgbmFtZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY3JlYXRlX3RhYmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRl X3RhYmxlLm91dAppbmRleCA3NjYwNDcwNWE5My4uZTkwNDAxYzRjNjkgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZS5vdXQKQEAgLTQ5LDYgKzQ5LDE1IEBAIENSRUFU RSBURU1QIFRBQkxFIHB1YmxpYy50ZW1wX3RvX3Blcm0gKGEgaW50IHByaW1hcnkga2V5KTsJCS0t IG5vdCBPSwogRVJST1I6ICBjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSByZWxhdGlvbiBpbiBub24t dGVtcG9yYXJ5IHNjaGVtYQogTElORSAxOiBDUkVBVEUgVEVNUCBUQUJMRSBwdWJsaWMudGVtcF90 b19wZXJtIChhIGludCBwcmltYXJ5IGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIHRlc3QgZXJyb3IgYW5kIGVycm9yIHBvc2l0aW9uIHdpdGggdGVtcG9yYXJ5IHRhYmxlIGNy ZWF0ZWQgd2l0aGluCistLSBhIG5vbi10ZW1wb3Jhcnkgc2NoZW1hLgorQ1JFQVRFIFNDSEVNQSB0 ZXN0X25zX3NjaGVtYV90bXAKKyAgICAgICBDUkVBVEUgVEVNUCBUQUJMRSBhYmMgKAorICAgICAg ICAgICAgICBhIHNlcmlhbAorICAgICAgICk7CitFUlJPUjogIGNhbm5vdCBjcmVhdGUgdGVtcG9y YXJ5IHJlbGF0aW9uIGluIG5vbi10ZW1wb3Jhcnkgc2NoZW1hCitMSU5FIDI6ICAgICAgICBDUkVB VEUgVEVNUCBUQUJMRSBhYmMgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgog RFJPUCBUQUJMRSB1bmxvZ2dlZDEsIHB1YmxpYy51bmxvZ2dlZDI7CiBDUkVBVEUgVU5MT0dHRUQg VEFCTEUgdW5sb2dnZWQxIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKTsgLS0gZmFpbAog RVJST1I6ICBwYXJ0aXRpb25lZCB0YWJsZXMgY2Fubm90IGJlIHVubG9nZ2VkCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92aWV3Lm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3ZpZXcub3V0CmluZGV4IGY1NTE2MjRhZmIzLi5iMzA1Y2Vl YTAzMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5vdXQKQEAgLTEy Niw2ICsxMjYsOCBAQCBFUlJPUjogIGNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IHJlbGF0aW9uIGlu IG5vbi10ZW1wb3Jhcnkgc2NoZW1hCiBDUkVBVEUgU0NIRU1BIHRlc3Rfdmlld19zY2hlbWEKICAg ICBDUkVBVEUgVEVNUCBWSUVXIHRlc3R2aWV3IEFTIFNFTEVDVCAxOwogRVJST1I6ICBjYW5ub3Qg Y3JlYXRlIHRlbXBvcmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5IHNjaGVtYQorTElORSAy OiAgICAgQ1JFQVRFIFRFTVAgVklFVyB0ZXN0dmlldyBBUyBTRUxFQ1QgMTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogLS0gam9pbnM6IGlmIGFueSBvZiB0aGUgam9pbiByZWxhdGlv bnMgYXJlIHRlbXBvcmFyeSwgdGhlIHZpZXcKIC0tIHNob3VsZCBhbHNvIGJlIHRlbXBvcmFyeQog LS0gc2hvdWxkIGJlIG5vbi10ZW1wCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2V2ZW50X3RyaWdnZXIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ldmVudF90 cmlnZ2VyLm91dAppbmRleCA3YjIxOThlYWM2Zi4uYmFmZGU4NzA2ZmUgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXZlbnRfdHJpZ2dlci5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ldmVudF90cmlnZ2VyLm91dApAQCAtNDExLDEyICs0MTEsMTIgQEAg Tk9USUNFOiAgRU5EOiBjb21tYW5kX3RhZz1DUkVBVEUgVEFCTEUgdHlwZT10YWJsZSBpZGVudGl0 eT1ldnR0cmlnLm9uZQogTk9USUNFOiAgRU5EOiBjb21tYW5kX3RhZz1DUkVBVEUgSU5ERVggdHlw ZT1pbmRleCBpZGVudGl0eT1ldnR0cmlnLm9uZV9wa2V5CiBOT1RJQ0U6ICBFTkQ6IGNvbW1hbmRf dGFnPUFMVEVSIFNFUVVFTkNFIHR5cGU9c2VxdWVuY2UgaWRlbnRpdHk9ZXZ0dHJpZy5vbmVfY29s X2Ffc2VxCiBOT1RJQ0U6ICBFTkQ6IGNvbW1hbmRfdGFnPUFMVEVSIFNFUVVFTkNFIHR5cGU9c2Vx dWVuY2UgaWRlbnRpdHk9ZXZ0dHJpZy5vbmVfY29sX2Nfc2VxCitOT1RJQ0U6ICBFTkQ6IGNvbW1h bmRfdGFnPUNSRUFURSBJTkRFWCB0eXBlPWluZGV4IGlkZW50aXR5PWV2dHRyaWcub25lX2lkeAog Tk9USUNFOiAgRU5EOiBjb21tYW5kX3RhZz1DUkVBVEUgVEFCTEUgdHlwZT10YWJsZSBpZGVudGl0 eT1ldnR0cmlnLnR3bwogTk9USUNFOiAgRU5EOiBjb21tYW5kX3RhZz1BTFRFUiBUQUJMRSB0eXBl PXRhYmxlIGlkZW50aXR5PWV2dHRyaWcudHdvCiBOT1RJQ0U6ICBFTkQ6IGNvbW1hbmRfdGFnPUNS RUFURSBTRVFVRU5DRSB0eXBlPXNlcXVlbmNlIGlkZW50aXR5PWV2dHRyaWcuaWRfY29sX2Rfc2Vx CiBOT1RJQ0U6ICBFTkQ6IGNvbW1hbmRfdGFnPUNSRUFURSBUQUJMRSB0eXBlPXRhYmxlIGlkZW50 aXR5PWV2dHRyaWcuaWQKIE5PVElDRTogIEVORDogY29tbWFuZF90YWc9QUxURVIgU0VRVUVOQ0Ug dHlwZT1zZXF1ZW5jZSBpZGVudGl0eT1ldnR0cmlnLmlkX2NvbF9kX3NlcQotTk9USUNFOiAgRU5E OiBjb21tYW5kX3RhZz1DUkVBVEUgSU5ERVggdHlwZT1pbmRleCBpZGVudGl0eT1ldnR0cmlnLm9u ZV9pZHgKIC0tIFBhcnRpdGlvbmVkIHRhYmxlcyB3aXRoIGEgcGFydGl0aW9uZWQgaW5kZXgKIENS RUFURSBUQUJMRSBldnR0cmlnLnBhcnRlZCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZKQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9uYW1lc3BhY2Uub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9uYW1lc3BhY2Uub3V0CmluZGV4IGRiYmRhNzJkMzk1Li40NTJk NTY4OWIyMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9uYW1lc3BhY2Uu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbmFtZXNwYWNlLm91dApAQCAtMTAs MTMgKzEwLDE0IEBAIFNFTEVDVCBwZ19jYXRhbG9nLnNldF9jb25maWcoJ3NlYXJjaF9wYXRoJywg JyAnLCBmYWxzZSk7CiAoMSByb3cpCiAKIENSRUFURSBTQ0hFTUEgdGVzdF9uc19zY2hlbWFfMQot ICAgICAgIENSRUFURSBVTklRVUUgSU5ERVggYWJjX2FfaWR4IE9OIGFiYyAoYSkKLSAgICAgICBD UkVBVEUgVklFVyBhYmNfdmlldyBBUwotICAgICAgICAgICAgICBTRUxFQ1QgYSsxIEFTIGEsIGIr MSBBUyBiIEZST00gYWJjCiAgICAgICAgQ1JFQVRFIFRBQkxFIGFiYyAoCiAgICAgICAgICAgICAg IGEgc2VyaWFsLAogICAgICAgICAgICAgICBiIGludCBVTklRVUUKLSAgICAgICApOworICAgICAg ICkKKyAgICAgICBDUkVBVEUgVU5JUVVFIElOREVYIGFiY19hX2lkeCBPTiBhYmMgKGEpCisgICAg ICAgQ1JFQVRFIFZJRVcgYWJjX3ZpZXcgQVMKKyAgICAgICAgICAgICAgU0VMRUNUIGErMSBBUyBh LCBiKzEgQVMgYiBGUk9NIGFiYworOwogLS0gdmVyaWZ5IHRoYXQgdGhlIGNvcnJlY3Qgc2VhcmNo X3BhdGggcmVzdG9yZWQgb24gYWJvcnQKIFNFVCBzZWFyY2hfcGF0aCB0byBwdWJsaWM7CiBCRUdJ TjsKQEAgLTU0LDYgKzU1LDE2IEBAIFNIT1cgc2VhcmNoX3BhdGg7CiAKIERST1AgU0NIRU1BIHRl c3RfbnNfc2NoZW1hXzIgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdmlldyB0 ZXN0X25zX3NjaGVtYV8yLmFiY192aWV3CistLSB0ZXN0IGVycm9yIHdpdGggd3Jvbmcgb2JqZWN0 IGNyZWF0aW9uIG9yZGVyLgorQ1JFQVRFIFNDSEVNQSB0ZXN0X25zX3NjaGVtYV8zIAorICAgICAg IENSRUFURSBWSUVXIGFiY2RfdmlldyBBUworICAgICAgICAgICAgICBTRUxFQ1QgYSBGUk9NIGFi Y2QKKyAgICAgICBDUkVBVEUgVEFCTEUgYWJjZCAoCisgICAgICAgICAgICAgIGEgc2VyaWFsCisg ICAgICAgKTsKK0VSUk9SOiAgcmVsYXRpb24gImFiY2QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDM6 ICAgICAgICAgICAgICAgU0VMRUNUIGEgRlJPTSBhYmNkCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCiAtLSB2ZXJpZnkgdGhhdCB0aGUgb2JqZWN0cyB3ZXJlIGNyZWF0ZWQK IFNFTEVDVCBDT1VOVCgqKSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWVzcGFjZSA9CiAgICAg KFNFTEVDVCBvaWQgRlJPTSBwZ19uYW1lc3BhY2UgV0hFUkUgbnNwbmFtZSA9ICd0ZXN0X25zX3Nj aGVtYV8xJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGUu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlLnNxbAppbmRleCAzN2EyMjcx NDhlOS4uMWU5MjM3ZmMwOTkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0 ZV90YWJsZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlLnNxbApA QCAtMjgsNiArMjgsMTIgQEAgQ1JFQVRFIFRBQkxFIHBnX3RlbXAuaW1wbGljaXRseV90ZW1wIChh IGludCBwcmltYXJ5IGtleSk7CQktLSBPSwogQ1JFQVRFIFRFTVAgVEFCTEUgZXhwbGljaXRseV90 ZW1wIChhIGludCBwcmltYXJ5IGtleSk7CQkJLS0gYWxzbyBPSwogQ1JFQVRFIFRFTVAgVEFCTEUg cGdfdGVtcC5kb3VibHlfdGVtcCAoYSBpbnQgcHJpbWFyeSBrZXkpOwkJLS0gYWxzbyBPSwogQ1JF QVRFIFRFTVAgVEFCTEUgcHVibGljLnRlbXBfdG9fcGVybSAoYSBpbnQgcHJpbWFyeSBrZXkpOwkJ LS0gbm90IE9LCistLSB0ZXN0IGVycm9yIGFuZCBlcnJvciBwb3NpdGlvbiB3aXRoIHRlbXBvcmFy eSB0YWJsZSBjcmVhdGVkIHdpdGhpbgorLS0gYSBub24tdGVtcG9yYXJ5IHNjaGVtYS4KK0NSRUFU RSBTQ0hFTUEgdGVzdF9uc19zY2hlbWFfdG1wCisgICAgICAgQ1JFQVRFIFRFTVAgVEFCTEUgYWJj ICgKKyAgICAgICAgICAgICAgYSBzZXJpYWwKKyAgICAgICApOwogRFJPUCBUQUJMRSB1bmxvZ2dl ZDEsIHB1YmxpYy51bmxvZ2dlZDI7CiAKIENSRUFURSBVTkxPR0dFRCBUQUJMRSB1bmxvZ2dlZDEg KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGEpOyAtLSBmYWlsCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9uYW1lc3BhY2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbmFt ZXNwYWNlLnNxbAppbmRleCAzMDZjZGMyZDhjNi4uNjZhYTFhZDZlYmEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL25hbWVzcGFjZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvbmFtZXNwYWNlLnNxbApAQCAtNywxNSArNywxNyBAQAogU0VMRUNUIHBnX2NhdGFsb2cuc2V0 X2NvbmZpZygnc2VhcmNoX3BhdGgnLCAnICcsIGZhbHNlKTsKIAogQ1JFQVRFIFNDSEVNQSB0ZXN0 X25zX3NjaGVtYV8xCi0gICAgICAgQ1JFQVRFIFVOSVFVRSBJTkRFWCBhYmNfYV9pZHggT04gYWJj IChhKQotCi0gICAgICAgQ1JFQVRFIFZJRVcgYWJjX3ZpZXcgQVMKLSAgICAgICAgICAgICAgU0VM RUNUIGErMSBBUyBhLCBiKzEgQVMgYiBGUk9NIGFiYwogCiAgICAgICAgQ1JFQVRFIFRBQkxFIGFi YyAoCiAgICAgICAgICAgICAgIGEgc2VyaWFsLAogICAgICAgICAgICAgICBiIGludCBVTklRVUUK LSAgICAgICApOworICAgICAgICkKKworICAgICAgIENSRUFURSBVTklRVUUgSU5ERVggYWJjX2Ff aWR4IE9OIGFiYyAoYSkKKworICAgICAgIENSRUFURSBWSUVXIGFiY192aWV3IEFTCisgICAgICAg ICAgICAgIFNFTEVDVCBhKzEgQVMgYSwgYisxIEFTIGIgRlJPTSBhYmMKKzsKIAogLS0gdmVyaWZ5 IHRoYXQgdGhlIGNvcnJlY3Qgc2VhcmNoX3BhdGggcmVzdG9yZWQgb24gYWJvcnQKIFNFVCBzZWFy Y2hfcGF0aCB0byBwdWJsaWM7CkBAIC0zNyw2ICszOSwxNiBAQCBDT01NSVQ7CiBTSE9XIHNlYXJj aF9wYXRoOwogRFJPUCBTQ0hFTUEgdGVzdF9uc19zY2hlbWFfMiBDQVNDQURFOwogCistLSB0ZXN0 IGVycm9yIHdpdGggd3Jvbmcgb2JqZWN0IGNyZWF0aW9uIG9yZGVyLgorQ1JFQVRFIFNDSEVNQSB0 ZXN0X25zX3NjaGVtYV8zIAorCisgICAgICAgQ1JFQVRFIFZJRVcgYWJjZF92aWV3IEFTCisgICAg ICAgICAgICAgIFNFTEVDVCBhIEZST00gYWJjZAorCisgICAgICAgQ1JFQVRFIFRBQkxFIGFiY2Qg KAorICAgICAgICAgICAgICBhIHNlcmlhbAorICAgICAgICk7CisKIC0tIHZlcmlmeSB0aGF0IHRo ZSBvYmplY3RzIHdlcmUgY3JlYXRlZAogU0VMRUNUIENPVU5UKCopIEZST00gcGdfY2xhc3MgV0hF UkUgcmVsbmFtZXNwYWNlID0KICAgICAoU0VMRUNUIG9pZCBGUk9NIHBnX25hbWVzcGFjZSBXSEVS RSBuc3BuYW1lID0gJ3Rlc3RfbnNfc2NoZW1hXzEnKTsKLS0gCjIuMzQuMQoK --0000000000003f6c9e06282edb73--