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 1u8JOk-000moX-P3 for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 13:47:23 +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 1u8JOi-00BPZO-Tt for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 13:47:21 +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 1u8JOi-00BPZG-8E for pgsql-hackers@lists.postgresql.org; Fri, 25 Apr 2025 13:47:21 +0000 Received: from mail-ua1-x935.google.com ([2607:f8b0:4864:20::935]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u8JOf-001tiU-0g for pgsql-hackers@lists.postgresql.org; Fri, 25 Apr 2025 13:47:20 +0000 Received: by mail-ua1-x935.google.com with SMTP id a1e0cc1a2514c-877b9328604so850803241.2 for ; Fri, 25 Apr 2025 06:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745588836; x=1746193636; 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=Q0LIEy7+KnyKbtlBXGYBLnt9VHK95UuIqxoEX9wiToU=; b=O/6njcGz39J/YiSEWXq2bYiWCJZrtzC/F39gMlzP+eClojS+PJFU/ooJvhziG+PULu X0RTYndfIUSrzd7cq9AuSyPrFCr10BdwMui4aH+UZnDb0a/yCI8t5RrIYNukJlb6NckW B2CFLtvQhtRnlC8RgaqXZwFmsF9dr47fxyWhgm4vk2q8TPBd/xsV1PxI7p/gK6+TVsbT OXh/sWtSdwbHXm6FxxwWhjBsAV7yoJyfypkG1+OjxzibyyyfXh7TsyQCBZEAFN4SHfQs +KcIiGK7/H7s3NHW0LHMJIRVHWSZhTQaXBzwtp+D2RMCQvCO1k+lhsM8x5WWmLNMYhlt KuIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745588836; x=1746193636; 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=Q0LIEy7+KnyKbtlBXGYBLnt9VHK95UuIqxoEX9wiToU=; b=TM/iO1Rdj4XiNNjTqXtZWcRSiaCT89JNUi2QCDlqGvkzPPOke5NZOLaQEPRrnMTWd8 h+9EGfMQZbik+P2psXbdx9NFioKpicaP6x74BYIfA2jMkMEPphGL9rc473SjlOvjwepe rCvbpiOXVTXjbBvRBBv+38oM1A0qjgfQwnuqEA0/fxwjBMp8ISjF4MoxcGtb31cQD1lJ 6KJy/BEIvgb6DIbZTB84sbRaZqr8Db8Q5WcCe9AqmDLv4cgt80TiHSWOGquBtrnIQWEf kR1TGmZAMeRVwEW1HjJKXvWIlXVoo7oiAggddpc51CnfejRSdbfuy9TNOxtQVZDs939Q lDHw== X-Forwarded-Encrypted: i=1; AJvYcCWUJqXkDk8wKlYjwKSvS/B0zMMGvgwFFy/HGm7jFeaO4r23ZPND9tKShyNy7Nhuq3z4YTN4GCTCyOqAWIZc@lists.postgresql.org X-Gm-Message-State: AOJu0YxrNkTkmKlUlgAN4da44A5fjd97AXN/RKZ+5Y0HyfDVZPED4gBy XK9n1nY+FZtupwEipkPaBcr92rB4B6KPfcGl5wwuGIqP6SIxK7Woa1AIm5VUoUiYPHFVASpMTMF QzA+oQYWp2gQMo3o2gB3N25lX7WI= X-Gm-Gg: ASbGnct7UUUdl7qL9b8bmSfrQJh6AJ36xE8XmbsUzOMmtfYe+MDaY7BgJeUxSKjZy0M tn+KoUeWAUa/rZXj4M2WhLSD0OiWV+QS7GFJmh30fPW36pohrIP9DQQbw7uFh4Hl/rvMvatNnOq nPaVj13mWl/g0PmkTIXApAm4sIgNc2FCAwUNkB573fuowbLrTSOQ== X-Google-Smtp-Source: AGHT+IE1a9YrwWPPo51yY6nUccJ91kndD3mB5MKH+OytW1VHL4+KQHNvVPYGzzwo6ojY7q8lunce+V2mvIZmnY5ky/4= X-Received: by 2002:a05:6102:6c4:b0:4bb:e80b:473d with SMTP id ada2fe7eead31-4d5437d1ae1mr1087278137.6.1745588836575; Fri, 25 Apr 2025 06:47:16 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 25 Apr 2025 21:46:39 +0800 X-Gm-Features: ATxdqUGy2nmviSZOBMxP4EG1HiZw25KO9ESkM_i_I1PhsXcfTmxxWWQmzQjEM3c Message-ID: Subject: Re: on_error table, saving error info to a table To: Kirill Reshke Cc: Nishant Sharma , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000874dd206339a9263" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000874dd206339a9263 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 16, 2024 at 7:50=E2=80=AFPM Nishant Sharma wrote: > > > 1) The new switch logic does not look correct to me. It will pass for > a failing scenario. I think you can use v3's logic instead with below > changes:- > > a) > while (HeapTupleIsValid(atup =3D systable_getnext(ascan))) --> > while (HeapTupleIsValid(atup =3D systable_getnext(ascan)) && on_error_tbl= _ok) > > b) > attcnt++; --> just before the "switch (attForm->attnum)". > > Thats it. > You are right about this. On Tue, Dec 17, 2024 at 12:31=E2=80=AFPM Kirill Reshke wrote: > > On Mon, 16 Dec 2024 at 16:50, Nishant Sharma > wrote: > > Also, I think Andrew's suggestion can resolve the concern me and Krill > > had on forcing users to create tables with correct column names and > > numbers. Also, will make error table checking simpler. No need for the > > above kind of checks. > > +1 on that. > Syntax: COPY (on_error table, table error_saving_tbl); seems not ideal. but auto-create on_error table if this table does not exist, seems way more harder. Since we can not use SPI interface here, maybe we can use DefineRelation also, to auto-create a table, what if table already exists, then our operation would be stuck for not COPY related reason. also auto-create means we need to come up with a magic table name for all COPY (on_error table) operations, which seems not ideal IMO. i realized we should error out case like: COPY err_tbl FROM STDIN WITH (DELIMITER ',', on_error table, table err_tbl)= ; also by changing copy_generic_opt_arg, now we can COPY err_tbl FROM STDIN WITH (DELIMITER ',', on_error table, table x); previously, we can only do COPY err_tbl FROM STDIN WITH (DELIMITER ',', on_error 'table', table x); --000000000000874dd206339a9263 Content-Type: text/x-patch; charset="UTF-8"; name="v5-0001-COPY-FROM-on_error-table.patch" Content-Disposition: attachment; filename="v5-0001-COPY-FROM-on_error-table.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m9wuhtg40 RnJvbSA0ZDU0NThjMWM1ZGU4NWI5ZjAzYzIyNzI3YjkyYWVjNDVmMGNkNzNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjUgQXByIDIwMjUgMjE6NDM6MzkgKzA4MDAKU3ViamVjdDogW1BBVENIIHY1 IDEvMV0gQ09QWSBGUk9NIChvbl9lcnJvciB0YWJsZSkKCnRoZSBzeW50YXggaXMge29uX2Vycm9y IHRhYmxlLCB0YWJsZSBlcnJvcl9zYXZpbmdfdGJsfS4gIHdlIGZpcnN0IGNoZWNrIHRhYmxlCmVy cm9yX3NhdmluZ190YmwncyBleGlzdGVuY2UgYW5kIGRhdGEgZGVmaW5pdGlvbi4gIGlmIGl0IGRv ZXMgbm90IG1lZXQgb3VyCmNyaXRlcmlhLCB0aGVuIHdlIHF1aWNrbHkgZXJyb3Igb3V0LgoKd2Ug YWxzbyBkaWQgcHJlbGltaW5hcnkgY2hlY2sgdGhlIGxvY2sgb2YgZXJyb3Igc2F2aW5nIHRhYmxl IHNvIHRoZSBpbnNlcnQgdG8KZXJyb3Igc2F2aW5nIHRhYmxlIHdvbid0IHN0dWNrLgoKb25jZSB0 aGVyZSBpcyBhIGVycm9yIGhhcHBlbmVkLCB3ZSBzYXZlIHRoZSBlcnJvciBtZXRlZGF0YSBhbmQg aW5zZXJ0IGl0IHRvIHRoZQplcnJvcl9zYXZpbmdfdGFibGUuIGFuZCBjb250aW51ZSB0byB0aGUg bmV4dCByb3cuICBUaGF0IG1lYW5zIGZvciBvbmUgcm93LCB3ZQpjYW4gb25seSBjYXRjaCB0aGUg Zmlyc3QgZmllbGQgdGhhdCBoYXZlIGVycm9ycy4KCmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0FDSnVmeEhfT0pwVnJhJTNEMGM0b3c4ZmJ4SGo3aGVNY1ZhVE5FUGE1dkF1clNlTkEt NlElNDBtYWlsLmdtYWlsLmNvbQpjb250ZXh0OiAgICBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkLzc1MjY3Mi4xNjk5NDc0MzM2JTQwc3NzLnBnaC5wYS51cwpjb21taXRmZXN0 OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvNTEvNDgxNy8KLS0tCiBkb2Mvc3Jj L3NnbWwvcmVmL2NvcHkuc2dtbCAgICAgICAgICAgICAgIHwgMTE5ICsrKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICAgICAgfCAgMjkgKysrKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgICAgICB8IDIwMiArKysrKysrKysrKysrKysr KysrKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jICAgICB8ICA1MCAr KysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgICAgICAgICAgICB8ICAgOCArCiBzcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY29weTIub3V0ICAgICAgfCAxMDEgKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9jb3B5Mi5zcWwgICAgICAgICAgIHwgIDg0ICsrKysrKysrKysKIDkgZmlsZXMg Y2hhbmdlZCwgNTgyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwK aW5kZXggODQzMzM0NGU1YjYuLmI2MjdkNDIyYjM4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbApAQCAtNDQsNiAr NDQsNyBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8 L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgRk9SQ0VfTk9UX05VTEwgeyAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLl0gKSB8ICogfQogICAgIEZPUkNFX05VTEwgeyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSB8ICogfQogICAgIE9O X0VSUk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9hY3Rpb248L3JlcGxh Y2VhYmxlPgorICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9z YXZpbmdfdGFibGU8L3JlcGxhY2VhYmxlPgogICAgIFJFSkVDVF9MSU1JVCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bWF4ZXJyb3I8L3JlcGxhY2VhYmxlPgogICAgIEVOQ09ESU5HICc8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5jb2RpbmdfbmFtZTwvcmVwbGFjZWFibGU+ JwogICAgIExPR19WRVJCT1NJVFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZlcmJv c2l0eTwvcmVwbGFjZWFibGU+CkBAIC0zOTUsMTUgKzM5NiwyNSBAQCBDT1BZIHsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxh Y2VhYmxlCiAgICAgICBpbnB1dCB2YWx1ZSBpbnRvIGl0cyBkYXRhIHR5cGUuCiAgICAgICBBbiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3JfYWN0aW9uPC9yZXBsYWNlYWJsZT4g dmFsdWUgb2YKICAgICAgIDxsaXRlcmFsPnN0b3A8L2xpdGVyYWw+IG1lYW5zIGZhaWwgdGhlIGNv bW1hbmQsIHdoaWxlCi0gICAgICA8bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG1lYW5zIGRpc2Nh cmQgdGhlIGlucHV0IHJvdyBhbmQgY29udGludWUgd2l0aCB0aGUgbmV4dCBvbmUuCisgICAgICA8 bGl0ZXJhbD5pZ25vcmU8L2xpdGVyYWw+IG1lYW5zIGRpc2NhcmQgdGhlIGlucHV0IHJvdyBhbmQg Y29udGludWUgd2l0aCB0aGUgbmV4dCBvbmUsCisgICAgICA8bGl0ZXJhbD50YWJsZTwvbGl0ZXJh bD4gbWVhbnMgc2F2ZSBlcnJvciBkZXRhaWxzIHRvIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5lcnJvcl9zYXZpbmdfdGFibGU8L3JlcGxhY2VhYmxlPgorICAgICAgYW5kIGNvbnRpbnVl IHdpdGggdGhlIG5leHQgb25lLgogICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+c3RvcDwv bGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgPGxpdGVyYWw+ aWdub3JlPC9saXRlcmFsPiBvcHRpb24gaXMgYXBwbGljYWJsZSBvbmx5IGZvciA8Y29tbWFuZD5D T1BZIEZST008L2NvbW1hbmQ+CisgICAgICBUaGUgPGxpdGVyYWw+aWdub3JlPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+dGFibGU8L2xpdGVyYWw+IG9wdGlvbiBhcmUgYXBwbGljYWJsZSBvbmx5IGZv ciA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+CiAgICAgICB3aGVuIHRoZSA8bGl0ZXJhbD5G T1JNQVQ8L2xpdGVyYWw+IGlzIDxsaXRlcmFsPnRleHQ8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPmNz djwvbGl0ZXJhbD4uCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+Ci0gICAgICBBIDxsaXRlcmFs Pk5PVElDRTwvbGl0ZXJhbD4gbWVzc2FnZSBjb250YWluaW5nIHRoZSBpZ25vcmVkIHJvdyBjb3Vu dCBpcworICAgICAgSWYgPGxpdGVyYWw+T05fRVJST1I8L2xpdGVyYWw+PTxsaXRlcmFsPnRhYmxl PC9saXRlcmFsPiwKKyAgICAgIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlIGNv bnRhaW5pbmcgdGhlIHJvdyBjb3VudCB0aGF0IGlzIHNhdmVkIHRvCisgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3Jfc2F2aW5nX3RhYmxlPC9yZXBsYWNlYWJsZT4gaXMK KyAgICAgIGVtaXR0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21t YW5kPiBpZiBhdCBsZWFzdCBvbmUKKyAgICAgIHJvdyB3YXMgc2F2ZWQuCisgICAgIDwvcGFyYT4K KworICAgICA8cGFyYT4KKyAgICAgIElmIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPj08bGl0 ZXJhbD5pZ25vcmU8L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVzc2Fn ZSBjb250YWluaW5nIHRoZSBpZ25vcmVkIHJvdyBjb3VudCBpcwogICAgICAgZW1pdHRlZCBhdCB0 aGUgZW5kIG9mIHRoZSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlmIGF0IGxlYXN0IG9u ZQogICAgICAgcm93IHdhcyBkaXNjYXJkZWQuIFdoZW4gPGxpdGVyYWw+TE9HX1ZFUkJPU0lUWTwv bGl0ZXJhbD4gb3B0aW9uIGlzIHNldCB0bwogICAgICAgPGxpdGVyYWw+dmVyYm9zZTwvbGl0ZXJh bD4sIGEgPGxpdGVyYWw+Tk9USUNFPC9saXRlcmFsPiBtZXNzYWdlCkBAIC00NjMsNiArNDc0LDEw OCBAQCBDT1BZIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlRBQkxFPC9s aXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICAgU2F2 ZSBlcnJvciBjb250ZXh0IGRldGFpbHMgdG8gdGhlIHRhYmxlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lcnJvcl9zYXZpbmdfdGFibGU8L3JlcGxhY2VhYmxlPi4KKyAgICAgICAgVGhp cyBvcHRpb24gaXMgYWxsb3dlZCBvbmx5IGluIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4g YW5kCisgICAgICAgIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgd2l0 aCA8bGl0ZXJhbD5UQUJMRTwvbGl0ZXJhbD4uCisgICAgICAgIEl0IGFsc28gcmVxdWlyZSB1c2Vy IGhhdmUgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPiBwcml2aWxlZ2VzIG9uIGFsbCBjb2x1bW5z CisgICAgICAgIGluIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXJyb3Jfc2F2 aW5nX3RhYmxlPC9yZXBsYWNlYWJsZT4uCisgICAgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAg IElmIHRhYmxlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lcnJvcl9zYXZpbmdfdGFi bGU8L3JlcGxhY2VhYmxlPiBkb2VzIG1lZXQgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uCisgICAg KGNvbHVtbiBvcmRpbmFsIHBvc2l0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgYmVsb3cp LCBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KKworPGluZm9ybWFsdGFibGU+CisgICAgPHRncm91 cCBjb2xzPSIzIj4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+Q29s dW1uIG5hbWU8L2VudHJ5PgorICAgICAgIDxlbnRyeT5EYXRhIHR5cGU8L2VudHJ5PgorICAgICAg IDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgPC90aGVhZD4K KworICAgICAgPHRib2R5PgorICAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PiA8bGl0ZXJhbD51 c2VyaWQ8L2xpdGVyYWw+IDwvZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBlPm9pZDwvdHlwZT48 L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgdXNlciBnZW5lcmF0ZWQgdGhlIGVycm9yLgorICAg ICAgIFJlZmVyZW5jZSA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF1dGhpZCI+PHN0cnVjdG5h bWU+cGdfYXV0aGlkPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0 ZmllbGQ+LAorICAgICAgIGhvd2V2ZXIgdGhlcmUgaXMgbm8gaGFyZCBkZXBlbmRlbmN5IHdpdGgg Y2F0YWxvZyA8bGl0ZXJhbD5wZ19hdXRoaWQ8L2xpdGVyYWw+LgorICAgICAgIElmIHRoZSBjb3Jy ZXNwb25kaW5nIHJvdyBvbiA8bGl0ZXJhbD5wZ19hdXRoaWQ8L2xpdGVyYWw+IGlzIGRlbGV0ZWQs IHRoaXMgdmFsdWUgYmVjb21lcyBzdGFsZS4KKyAgICA8L2VudHJ5PgorICAgICAgIDwvcm93Pgor CisgICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFsPmNvcHlfdGJsPC9saXRlcmFs PiA8L2VudHJ5PgorICAgICAgIDxlbnRyeT48dHlwZT5vaWQ8L3R5cGU+PC9lbnRyeT4KKyAgICAg ICA8ZW50cnk+VGhlIDxjb21tYW5kPkNPUFkgRlJPTTwvY29tbWFuZD4gb3BlcmF0aW9uIGRlc3Rp bmF0aW9uIHRhYmxlIG9pZC4KKyAgICAgICAgUmVmZXJlbmNlIDxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0 cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+LAorICAgICAgICBob3dldmVyIHRoZXJlIGlzIG5v IGhhcmQgZGVwZW5kZW5jeSB3aXRoIGNhdGFsb2cgPGxpdGVyYWw+cGdfY2xhc3M8L2xpdGVyYWw+ LgorICAgICAgICBJZiB0aGUgY29ycmVzcG9uZGluZyByb3cgb24gPGxpdGVyYWw+cGdfY2xhc3M8 L2xpdGVyYWw+IGlzIGRlbGV0ZWQsIHRoaXMgdmFsdWUgYmVjb21lcyBzdGFsZS4KKyAgICAgICAg PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKworICAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PiA8 bGl0ZXJhbD5maWxlbmFtZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+ dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgcGF0aCBuYW1lIG9mIHRoZSA8 Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGlucHV0PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4K KworICAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PiA8bGl0ZXJhbD5saW5lbm88L2xpdGVyYWw+ IDwvZW50cnk+CisgICAgICAgPGVudHJ5Pjx0eXBlPmJpZ2ludDwvdHlwZT48L2VudHJ5PgorICAg ICAgIDxlbnRyeT5MaW5lIG51bWJlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQsIGNvdW50aW5n IGZyb20gMTwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgIDxl bnRyeT4gPGxpdGVyYWw+bGluZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5 cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5SYXcgY29udGVudCBvZiB0aGUg ZXJyb3Igb2NjdXJyZWQgbGluZTwvZW50cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93 PgorICAgICAgIDxlbnRyeT4gPGxpdGVyYWw+Y29sbmFtZTwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5GaWVs ZCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQ8L2VudHJ5PgorICAgICAgIDwvcm93PgorCisgICAg ICAgPHJvdz4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFsPnJhd19maWVsZF92YWx1ZTwvbGl0ZXJh bD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4dDwvdHlwZT48L2VudHJ5PgorICAg ICAgIDxlbnRyeT5SYXcgY29udGVudCBvZiB0aGUgZXJyb3Igb2NjdXJyZWQgZmllbGQ8L2VudHJ5 PgorICAgICAgIDwvcm93PgorCisgICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnk+IDxsaXRlcmFs PmVycl9tZXNzYWdlIDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4 dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgZXJyb3IgbWVzc2FnZTwvZW50cnk+ CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgIDxlbnRyeT4gPGxpdGVyYWw+ ZXJyX2RldGFpbDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4dDwv dHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5EZXRhaWxlZCBlcnJvciBtZXNzYWdlIDwvZW50 cnk+CisgICAgICAgPC9yb3c+CisKKyAgICAgICA8cm93PgorICAgICAgIDxlbnRyeT4gPGxpdGVy YWw+ZXJyb3Jjb2RlIDwvbGl0ZXJhbD4gPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+PHR5cGU+dGV4 dDwvdHlwZT48L2VudHJ5PgorICAgICAgIDxlbnRyeT5UaGUgZXJyb3IgY29kZSA8L2VudHJ5Pgor ICAgICAgIDwvcm93PgorCisgICAgICA8L3Rib2R5PgorICAgICA8L3Rncm91cD4KKyAgIDwvaW5m b3JtYWx0YWJsZT4KKworICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlz dGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPldIRVJFPC9s aXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggNzRhZTQy YjE5YTcuLmE1NDkyMjE0MTE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCkBAIC00MTAsNiArNDEwLDggQEAg ZGVmR2V0Q29weU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUs IGJvb2wgaXNfZnJvbSkKIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiaWdub3JlIikgPT0gMCkK IAkJcmV0dXJuIENPUFlfT05fRVJST1JfSUdOT1JFOwogCisJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInRhYmxlIikgPT0gMCkKKwkJcmV0dXJuIENPUFlfT05fRVJST1JfVEFCTEU7CiAJZXJlcG9y dChFUlJPUiwKIAkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAog CS8qLSB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBhIENPUFkgb3B0aW9uLCBl LmcuIE9OX0VSUk9SICovCkBAIC01MDIsNiArNTA0LDcgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAlib29sCQlmcmVlemVfc3BlY2lmaWVkID0gZmFsc2U7CiAJYm9v bAkJaGVhZGVyX3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCW9uX2Vycm9yX3NwZWNpZmllZCA9 IGZhbHNlOworCWJvb2wJCW9uX2Vycm9yX3RibF9zcGVjaWZpZWQgPSBmYWxzZTsKIAlib29sCQls b2dfdmVyYm9zaXR5X3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCXJlamVjdF9saW1pdF9zcGVj aWZpZWQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpvcHRpb247CkBAIC02NzcsNiArNjgwLDEzIEBA IFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlyZWplY3RfbGltaXRf c3BlY2lmaWVkID0gdHJ1ZTsKIAkJCW9wdHNfb3V0LT5yZWplY3RfbGltaXQgPSBkZWZHZXRDb3B5 UmVqZWN0TGltaXRPcHRpb24oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgInRhYmxlIikgPT0gMCkKKwkJeworCQkJaWYgKG9uX2Vycm9yX3RibF9zcGVjaWZp ZWQpCisJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisJCQlvbl9l cnJvcl90Ymxfc3BlY2lmaWVkID0gdHJ1ZTsKKwkJCW9wdHNfb3V0LT5vbl9lcnJvcl90YmwgPSBk ZWZHZXRTdHJpbmcoZGVmZWwpOworCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTY4NSw2ICs2OTUsMjUgQEAgUHJv Y2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKIAl9CiAKKwlpZiAob3B0c19vdXQtPm9u X2Vycm9yID09IENPUFlfT05fRVJST1JfVEFCTEUpCisJeworCQlpZiAob3B0c19vdXQtPm9uX2Vy cm9yX3RibCA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAl cyBvcHRpb24gdmFsdWUgdG8gXCIlc1wiIHdoZW4gJXMgaXMgbm90IHNwZWNpZmllZCIsICJPTl9F UlJPUiIsICJUQUJMRSIsICJUQUJMRSIpLAorCQkJCQllcnJoaW50KCJZb3UgbWF5IG5lZWQgYWxz byBzcGVjaWZ5IFwiJXNcIiBvcHRpb24uIiwgIlRBQkxFIikpOworCisJCWlmIChvcHRzX291dC0+ cmVqZWN0X2xpbWl0KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJjYW5ub3Qgc3BlY2lmeSAlcyBv cHRpb24gd2hlbiAlcyBvcHRpb24gaXMgc3BlY2lmaWVkIGFzIFwiJXNcIiIsICJSRUpFQ1RfTElN SVQiLCAiT05fRVJST1IiLCAiVEFCTEUiKSk7CisJfQorCisJaWYgKG9wdHNfb3V0LT5vbl9lcnJv ciAhPSBDT1BZX09OX0VSUk9SX1RBQkxFICYmIG9wdHNfb3V0LT5vbl9lcnJvcl90YmwgIT0gTlVM TCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVU RVJfVkFMVUUpLAorCQkJCWVycm1zZygiQ09QWSAlcyBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3 aGVuICVzIG9wdGlvbiBpcyBzcGVjaWZpZWQgYXMgXCIlc1wiIiwgIlRBQkxFIiwgIk9OX0VSUk9S IiwgIlRBQkxFIikpOworCiAJLyoKIAkgKiBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMg KG11c3QgZG8gdGhlc2UgdGhyZWUgYmVmb3JlIGluc2VydGluZwogCSAqIGRlZmF1bHRzKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggZmJiYmMwOWE5N2IuLjkxODE2YTdmNzgxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMKQEAgLTQ0LDcgKzQ0LDEwIEBACiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90 LmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lk cy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0 aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcG9ydGFsLmgiCkBAIC0xMTc1LDYgKzExNzgsMTYgQEAg Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlm IChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9UQUJMRSAmJgorCQkJY3N0 YXRlLT5lc2NvbnRleHQtPmVycm9yX29jY3VycmVkKQorCQl7CisJCQljc3RhdGUtPmVzY29udGV4 dC0+ZXJyb3Jfb2NjdXJyZWQgPSBmYWxzZTsKKwkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5kZXRhaWxz X3dhbnRlZCA9IHRydWU7CisJCQltZW1zZXQoY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX2RhdGEs IDAsIHNpemVvZihFcnJvckRhdGEpKTsKKwkJCS8qIFJlcGVhdCBOZXh0Q29weUZyb20oKSB1bnRp bCBubyBzb2Z0IGVycm9yIG9jY3VycyAqLworCQkJY29udGludWU7CisJCX0KKwogCQlFeGVjU3Rv cmVWaXJ0dWFsVHVwbGUobXlzbG90KTsKIAogCQkvKgpAQCAtMTQ2NywxNCArMTQ4MCwzMSBAQCBD b3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBEb25lLCBjbGVhbiB1cCAqLwogCWVy cm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIAotCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCi0JCWNzdGF0ZS0+bnVtX2Vy cm9ycyA+IDAgJiYKKwlpZiAoY3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgogCQljc3RhdGUtPm9w dHMubG9nX3ZlcmJvc2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKLQkJZXJlcG9y dChOT1RJQ0UsCi0JCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIgcm93IHdhcyBza2lwcGVk IGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKLQkJCQkJCQkgICIlIiBQUkl1NjQg IiByb3dzIHdlcmUgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSIsCi0J CQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMsCi0JCQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMp KTsKKwl7CisJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9JR05P UkUpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgiJSIgUFJJdTY0ICIg cm93IHdhcyBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJCQkJ CQkJIiUiIFBSSXU2NCAiIHJvd3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21w YXRpYmlsaXR5IiwKKwkJCQkJCQkJY3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCQljc3RhdGUt Pm51bV9lcnJvcnMpKTsKKwkJZWxzZSBpZiAoY3N0YXRlLT5vcHRzLm9uX2Vycm9yID09IENPUFlf T05fRVJST1JfVEFCTEUpCisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJZXJybXNnX3BsdXJhbCgi JSIgUFJJdTY0ICIgcm93IHdhcyBzYXZlZCB0byB0YWJsZSBcIiVzXCIgZHVlIHRvIGRhdGEgdHlw ZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCQkgICIlIiBQUkl1NjQgIiByb3dzIHdlcmUgc2F2 ZWQgdG8gdGFibGUgXCIlc1wiIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKKwkJ CQkJCQkJICBjc3RhdGUtPm51bV9lcnJvcnMsCisJCQkJCQkJCSAgY3N0YXRlLT5udW1fZXJyb3Jz LAorCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNzdGF0ZS0+ZXJyb3Jfc2F2aW5n X3JlbCkpKTsKKwl9CisKKwkvKgorCSAqIHNpbWlsYXIgdG8KKwkgKiAoaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS83YmNmYzM5ZDQxNzZmYWY4NWFiMzE3ZDBjMjY3ODY5NTM2NDZhNDExLmNhbWVsQGN5YmVy dGVjLmF0KQorCSAqIGluIENPUFkgRlJPTSBrZWVwIGVycm9yIHNhdmluZyB0YWJsZSBsb2NrcyB1 bnRpbCB0aGUgdHJhbnNhY3Rpb24gZW5kLgorCSovCisJaWYgKGNzdGF0ZS0+ZXJyb3Jfc2F2aW5n X3JlbCAhPSBOVUxMKQorCQl0YWJsZV9jbG9zZShjc3RhdGUtPmVycm9yX3NhdmluZ19yZWwsIE5v TG9jayk7CiAKIAlpZiAoYmlzdGF0ZSAhPSBOVUxMKQogCQlGcmVlQnVsa0luc2VydFN0YXRlKGJp c3RhdGUpOwpAQCAtMTYyMiwxNSArMTY1MiwxNjkgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCWNzdGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOwog CiAJCS8qCi0JCSAqIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05P UkUuIFdlJ2xsIGFkZCBvdGhlcgotCQkgKiBvcHRpb25zIGxhdGVyCisJCSAqIEN1cnJlbnRseSB3 ZSBvbmx5IHN1cHBvcnQgQ09QWV9PTl9FUlJPUl9JR05PUkUsIENPUFlfT05fRVJST1JfVEFCTEUu CisJCSAqIFdlJ2xsIGFkZCBvdGhlciBvcHRpb25zIGxhdGVyLgogCQkgKi8KIAkJaWYgKGNzdGF0 ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX0lHTk9SRSkKIAkJCWNzdGF0ZS0+ZXNj b250ZXh0LT5kZXRhaWxzX3dhbnRlZCA9IGZhbHNlOworCQllbHNlIGlmIChjc3RhdGUtPm9wdHMu b25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9UQUJMRSkKKwkJCWNzdGF0ZS0+ZXNjb250ZXh0LT5k ZXRhaWxzX3dhbnRlZCA9IHRydWU7CiAJfQogCWVsc2UKIAkJY3N0YXRlLT5lc2NvbnRleHQgPSBO VUxMOwogCisJaWYgKGNzdGF0ZS0+b3B0cy5vbl9lcnJvciA9PSBDT1BZX09OX0VSUk9SX1RBQkxF KQorCXsKKwkJRGF0dW0JCWluc19wcmV2OworCQlPaWQJCQllcnJfdGJsX29pZDsKKwkJUmVsYXRp b24JcGdfYXR0cmlidXRlOworCQlTY2FuS2V5RGF0YSBzY2Fua2V5OworCQlTeXNTY2FuRGVzYyBz Y2FuOworCQlIZWFwVHVwbGUJYXR1cDsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0Rm9ybTsKKwkJ aW50CQkJYXR0Y250ID0gMDsKKwkJYm9vbAkJb25fZXJyb3JfdGJsX29rID0gdHJ1ZTsKKworCQlB c3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9yX3RibCAhPSBOVUxMKTsKKworCQllcnJfdGJsX29p ZCA9IFJlbG5hbWVHZXRSZWxpZChjc3RhdGUtPm9wdHMub25fZXJyb3JfdGJsKTsKKwkJaWYgKCFP aWRJc1ZhbGlkKGVycl90Ymxfb2lkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfVEFCTEUpLAorCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsCisJCQkJCQkgICBjc3RhdGUtPm9wdHMub25fZXJyb3JfdGJsKSk7CisK KwkJaWYgKFJlbGF0aW9uR2V0UmVsaWQoY3N0YXRlLT5yZWwpID09IGVycl90Ymxfb2lkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgdXNlIHJlbGF0aW9uIFwiJXNcIiBmb3IgQ09QWSBl cnJvciBzYXZpbmcgd2hpbGUgY29weWluZyBkYXRhIHRvIGl0IiwKKwkJCQkJCSAgIGNzdGF0ZS0+ b3B0cy5vbl9lcnJvcl90YmwpKTsKKworCQkvKiBlcnJvciBzYXZpbmcgdGFibGUgbXVzdCBiZSBh IHJlZ3VsYXIgcmVhbHRpb24gKi8KKwkJaWYgKGdldF9yZWxfcmVsa2luZChlcnJfdGJsX29pZCkg IT0gUkVMS0lORF9SRUxBVElPTikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJS Q09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCWVycm1zZygiY2Fubm90IHVzZSByZWxhdGlv biBcIiVzXCIgZm9yIENPUFkgZXJyb3Igc2F2aW5nIiwKKwkJCQkJCSAgIGNzdGF0ZS0+b3B0cy5v bl9lcnJvcl90YmwpLAorCQkJCQllcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKGdldF9y ZWxfcmVsa2luZChlcnJfdGJsX29pZCkpKTsKKworCQkvKgorCQkgKiB3ZSBtYXkgaW5zZXJ0IHR1 cGxlcyB0byBlcnJvci1zYXZpbmcgdGFibGUgbGF0ZXIsIHRvIGRvIHRoYXQgd2UgbmVlZAorCQkg KiBmaXJzdCBjaGVjayBpdCdzIGxvY2sgc2l0dWF0aW9uLiBJZiBpdCBpcyBhbHJlYWR5IHVuZGVy IGhlYXZ5IGxvY2ssCisJCSAqIHRoZW4gb3VyIENPUFkgb3BlcmF0aW9uIHdvdWxkIHN0dWNrLiBJ bnN0ZWFkIG9mIGxldCBDT1BZIEZST00gc3R1Y2ssCisJCSAqIGp1c3QgZXJyb3IgcmVwb3J0IHRo ZSBlcnJvciBzYXZpbmcgdGFibGUgaXMgdW5kZXIgaGVhdnkgbG9jay4KKwkJKi8KKwkJaWYgKCFD b25kaXRpb25hbExvY2tSZWxhdGlvbk9pZChlcnJfdGJsX29pZCwgUm93RXhjbHVzaXZlTG9jaykp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSks CisJCQkJCWVycm1zZygiY2FuIG5vdCB1c2UgdGFibGUgXCIlc1wiIGZvciBlcnJvciBzYXZpbmcg YmVjYXVzZSBpdCB3YXMgYmVpbmcgbG9ja2VkIiwKKwkJCQkJCSAgIGNzdGF0ZS0+b3B0cy5vbl9l cnJvcl90YmwpKTsKKworCQljc3RhdGUtPmVycm9yX3NhdmluZ19yZWwgPSB0YWJsZV9vcGVuKGVy cl90Ymxfb2lkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCQkvKiBjdXJyZW50IHVzZXIgc2hvdWxk IGhhdmUgSU5TRVJUIHByaXZpbGVnZSBvbiBlcnJvcl9zYXZpbmcgdGFibGUgKi8KKwkJaW5zX3By ZXYgPSBEaXJlY3RGdW5jdGlvbkNhbGwzKGhhc190YWJsZV9wcml2aWxlZ2VfaWRfaWQsCisJCQkJ CQkJCQkgICBPYmplY3RJZEdldERhdHVtKEdldFVzZXJJZCgpKSwKKwkJCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0oZXJyX3RibF9vaWQpLAorCQkJCQkJCQkJICAgQ1N0cmluZ0dldFRleHREYXR1 bSgiSU5TRVJUIikpOworCQlpZiAoIURhdHVtR2V0Qm9vbChpbnNfcHJldikpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJ CQkJCWVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gc2V0IHRhYmxlIFwiJXNcIiBmb3IgQ09Q WSBGUk9NIGVycm9yIHNhdmluZyIsCisJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShj c3RhdGUtPmVycm9yX3NhdmluZ19yZWwpKSwKKwkJCQkJZXJyaGludCgiRW5zdXJlIGN1cnJlbnQg dXNlciBoYXZlIGVub3VnaCBwcml2aWxlZ2Ugb24gXCIlc1wiIGZvciBDT1BZIEZST00gZXJyb3Ig c2F2aW5nIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShjc3RhdGUtPmVycm9yX3Nh dmluZ19yZWwpKSk7CisKKwkJLyoKKwkJICogVmVyaWZ5IHdoZXRoZXIgdGhlIGRlZmluaXRpb24g b2YgdGhlIHRhYmxlCisJCSAqIChjc3RhdGUtPmVycm9yX3NhdmluZ19yZWwp4oCUIGluY2x1ZGlu ZyBjb2x1bW4gbmFtZXMsIGRhdGEgdHlwZXMsIGFuZAorCQkgKiB0aGUgbnVtYmVyIG9mIGNvbHVt bnPigJQgaXMgc3VpdGFibGUgZm9yIHVzZSBpbiBlcnJvciBzYXZpbmcuCisJCSovCisJCXBnX2F0 dHJpYnV0ZSA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJU2NhbktleUluaXQoJnNjYW5rZXksCisJCQkJCUFudW1fcGdfYXR0cmlidXRlX2F0dHJl bGlkLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElk R2V0RGF0dW0oZXJyX3RibF9vaWQpKTsKKworCQlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBn X2F0dHJpYnV0ZSwgQXR0cmlidXRlUmVsaWROdW1JbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIFNu YXBzaG90U2VsZiwgMSwgJnNjYW5rZXkpOworCQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChhdHVw ID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkgJiYgb25fZXJyb3JfdGJsX29rKQorCQl7CisJCQlh dHRGb3JtID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoYXR1cCk7CisKKwkJCWlmIChh dHRGb3JtLT5hdHRudW0gPCAxIHx8IGF0dEZvcm0tPmF0dGlzZHJvcHBlZCkKKwkJCQljb250aW51 ZTsKKworCQkJYXR0Y250Kys7CisJCQlzd2l0Y2ggKGF0dEZvcm0tPmF0dG51bSkKKwkJCXsKKwkJ CQljYXNlIDE6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCAhPSBPSURPSUQgfHwKKwkJCQkJ CXN0cmNtcChOYW1lU3RyKGF0dEZvcm0tPmF0dG5hbWUpLCAidXNlcmlkIikgIT0gMCkKKwkJCQkJ CW9uX2Vycm9yX3RibF9vayA9IGZhbHNlOworCQkJCQlicmVhazsKKwkJCQljYXNlIDI6CisJCQkJ CWlmIChhdHRGb3JtLT5hdHR0eXBpZCAhPSBPSURPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3Ry KGF0dEZvcm0tPmF0dG5hbWUpLCAiY29weV90YmwiKSAhPSAwKQorCQkJCQkJb25fZXJyb3JfdGJs X29rID0gZmFsc2U7CQkJCQkJCisJCQkJCWJyZWFrOworCQkJCWNhc2UgMzoKKwkJCQkJaWYgKGF0 dEZvcm0tPmF0dHR5cGlkICE9IFRFWFRPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3RyKGF0dEZv cm0tPmF0dG5hbWUpLCAiZmlsZW5hbWUiKSAhPSAwKQorCQkJCQkJb25fZXJyb3JfdGJsX29rID0g ZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgNDoKKwkJCQkJaWYgKGF0dEZvcm0tPmF0dHR5 cGlkICE9IElOVDhPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3RyKGF0dEZvcm0tPmF0dG5hbWUp LCAibGluZW5vIikgIT0gMCkKKwkJCQkJCW9uX2Vycm9yX3RibF9vayA9IGZhbHNlOworCQkJCQli cmVhazsKKwkJCQljYXNlIDU6CisJCQkJCWlmIChhdHRGb3JtLT5hdHR0eXBpZCAhPSBURVhUT0lE IHx8CisJCQkJCQlzdHJjbXAoTmFtZVN0cihhdHRGb3JtLT5hdHRuYW1lKSwgImxpbmUiKSAhPSAw KQorCQkJCQkJb25fZXJyb3JfdGJsX29rID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCWNhc2Ug NjoKKwkJCQkJaWYgKGF0dEZvcm0tPmF0dHR5cGlkICE9IFRFWFRPSUQgfHwKKwkJCQkJCXN0cmNt cChOYW1lU3RyKGF0dEZvcm0tPmF0dG5hbWUpLCAiY29sbmFtZSIpICE9IDApCisJCQkJCQlvbl9l cnJvcl90Ymxfb2sgPSBmYWxzZTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSA3OgorCQkJCQlpZiAo YXR0Rm9ybS0+YXR0dHlwaWQgIT0gVEVYVE9JRCB8fAorCQkJCQkJc3RyY21wKE5hbWVTdHIoYXR0 Rm9ybS0+YXR0bmFtZSksICJyYXdfZmllbGRfdmFsdWUiKSAhPSAwKQorCQkJCQkJb25fZXJyb3Jf dGJsX29rID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgODoKKwkJCQkJaWYgKGF0dEZv cm0tPmF0dHR5cGlkICE9IFRFWFRPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3RyKGF0dEZvcm0t PmF0dG5hbWUpLCAiZXJyX21lc3NhZ2UiKSAhPSAwKQorCQkJCQkJb25fZXJyb3JfdGJsX29rID0g ZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgOToKKwkJCQkJaWYgKGF0dEZvcm0tPmF0dHR5 cGlkICE9IFRFWFRPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3RyKGF0dEZvcm0tPmF0dG5hbWUp LCAiZXJyX2RldGFpbCIpICE9IDApCisJCQkJCQlvbl9lcnJvcl90Ymxfb2sgPSBmYWxzZTsKKwkJ CQkJYnJlYWs7CisJCQkJY2FzZSAxMDoKKwkJCQkJaWYgKGF0dEZvcm0tPmF0dHR5cGlkICE9IFRF WFRPSUQgfHwKKwkJCQkJCXN0cmNtcChOYW1lU3RyKGF0dEZvcm0tPmF0dG5hbWUpLCAiZXJyb3Jj b2RlIikgIT0gMCkKKwkJCQkJCW9uX2Vycm9yX3RibF9vayA9IGZhbHNlOworCQkJCQlicmVhazsK KwkJCQlkZWZhdWx0OgorCQkJCQlvbl9lcnJvcl90Ymxfb2sgPSBmYWxzZTsKKwkJCQkJYnJlYWs7 CisJCQl9CisJCX0KKwkJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdf YXR0cmlidXRlLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCWlmIChhdHRjbnQgIT0gRVJST1JfVEJM X0NPTFVNTlMgfHwgIW9uX2Vycm9yX3RibF9vaykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygidGFi bGUgXCIlc1wiIGNhbm5vdCBiZSB1c2VkIGZvciBDT1BZIGVycm9yIHNhdmluZyIsCisJCQkJCQkg ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShjc3RhdGUtPmVycm9yX3NhdmluZ19yZWwpKSwKKwkJ CQkJZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgZGF0YSBkZWZpbml0aW9uIGlzIG5vdCBzdWl0YWJs ZSBmb3IgZXJyb3Igc2F2aW5nIiwKKwkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNz dGF0ZS0+ZXJyb3Jfc2F2aW5nX3JlbCkpKTsKKwl9CisKIAkvKiBDb252ZXJ0IEZPUkNFX05VTEwg bmFtZSBsaXN0IHRvIHBlci1jb2x1bW4gZmxhZ3MsIGNoZWNrIHZhbGlkaXR5ICovCiAJY3N0YXRl LT5vcHRzLmZvcmNlX251bGxfZmxhZ3MgPSAoYm9vbCAqKSBwYWxsb2MwKG51bV9waHlzX2F0dHJz ICogc2l6ZW9mKGJvb2wpKTsKIAlpZiAoY3N0YXRlLT5vcHRzLmZvcmNlX251bGxfYWxsKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IGY1ZmMzNDZlMjAxLi4zNGFjYWNmODY2 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwpAQCAtNjIsNiArNjIsNyBAQAog I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKyNpbmNsdWRlICJh Y2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29weWFwaS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jl c3MuaCIKQEAgLTc4LDYgKzc5LDggQEAKICNkZWZpbmUgSVNPQ1RBTChjKSAoKChjKSA+PSAnMCcp ICYmICgoYykgPD0gJzcnKSkKICNkZWZpbmUgT0NUVkFMVUUoYykgKChjKSAtICcwJykKIAorI2Rl ZmluZSBFUlJPUl9UQkxfQ09MVU1OUyAgIDEwCisKIC8qCiAgKiBUaGVzZSBtYWNyb3MgY2VudHJh bGl6ZSBjb2RlIHVzZWQgdG8gcHJvY2VzcyBsaW5lX2J1ZiBhbmQgaW5wdXRfYnVmIGJ1ZmZlcnMu CiAgKiBUaGV5IGFyZSBtYWNyb3MgYmVjYXVzZSB0aGV5IG9mdGVuIGRvIGNvbnRpbnVlL2JyZWFr IGNvbnRyb2wgYW5kIHRvIGF2b2lkCkBAIC0xMDM1LDkgKzEwMzgsNTQgQEAgQ29weUZyb21UZXh0 TGlrZU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAog CQl7CiAJCQlBc3NlcnQoY3N0YXRlLT5vcHRzLm9uX2Vycm9yICE9IENPUFlfT05fRVJST1JfU1RP UCk7CiAKKwkJCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9UQUJM RSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFdlIHVzZSBFcnJvclNhdmVDb250ZXh0IHRvIGZvcm0g YSB0dXBsZSBhbmQgaW5zZXJ0IGl0IHRvIHRoZQorCQkJCSAqIGVycm9yIHNhdmluZyB0YWJsZS4g QSBSb3dFeGNsdXNpdmVMb2NrIG9uIGVycm9yX3NhdmluZ19yZWwKKwkJCQkgKiB3YXMgYWxyZWFk eSBhY3F1aXJlZCBpbiBCZWdpbkNvcHlGcm9tLgorCQkJCSovCisJCQkJSGVhcFR1cGxlCXR1cGxl OworCQkJCVR1cGxlRGVzYwl0dXBkZXNjOworCQkJCWNoYXIJCSplcnJfZGV0YWlsOworCQkJCWNo YXIJCSplcnJfY29kZTsKKwkJCQlEYXR1bQl2YWx1ZXNbRVJST1JfVEJMX0NPTFVNTlNdID0gezB9 OworCQkJCWJvb2wJaXNudWxsW0VSUk9SX1RCTF9DT0xVTU5TXSA9IHswfTsKKwkJCQlpbnQJCWog PSAwOworCisJCQkJQXNzZXJ0KGNzdGF0ZS0+cmVsICE9IE5VTEwpOworCQkJCUFzc2VydChjc3Rh dGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQpOworCisJCQkJdmFsdWVzW2orK10gPSBPYmpl Y3RJZEdldERhdHVtKEdldFVzZXJJZCgpKTsKKwkJCQl2YWx1ZXNbaisrXSA9IE9iamVjdElkR2V0 RGF0dW0oY3N0YXRlLT5yZWwtPnJkX3JlbC0+b2lkKTsKKwkJCQl2YWx1ZXNbaisrXSA9IENTdHJp bmdHZXRUZXh0RGF0dW0oY3N0YXRlLT5maWxlbmFtZSA/IGNzdGF0ZS0+ZmlsZW5hbWUgOiAiU1RE SU4iKTsKKwkJCQl2YWx1ZXNbaisrXSA9IEludDY0R2V0RGF0dW0oKGxvbmcgbG9uZykgY3N0YXRl LT5jdXJfbGluZW5vKTsKKwkJCQl2YWx1ZXNbaisrXSA9IENTdHJpbmdHZXRUZXh0RGF0dW0oY3N0 YXRlLT5saW5lX2J1Zi5kYXRhKTsKKwkJCQl2YWx1ZXNbaisrXSA9IENTdHJpbmdHZXRUZXh0RGF0 dW0oY3N0YXRlLT5jdXJfYXR0bmFtZSk7CisJCQkJdmFsdWVzW2orK10gPSBDU3RyaW5nR2V0VGV4 dERhdHVtKHN0cmluZyk7CisJCQkJdmFsdWVzW2orK10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGNz dGF0ZS0+ZXNjb250ZXh0LT5lcnJvcl9kYXRhLT5tZXNzYWdlKTsKKworCQkJCWlmICghY3N0YXRl LT5lc2NvbnRleHQtPmVycm9yX2RhdGEtPmRldGFpbCkKKwkJCQkJZXJyX2RldGFpbCA9IE5VTEw7 CisJCQkJZWxzZQorCQkJCQllcnJfZGV0YWlsID0gY3N0YXRlLT5lc2NvbnRleHQtPmVycm9yX2Rh dGEtPmRldGFpbDsKKwkJCQl2YWx1ZXNbal0gICA9IGVycl9kZXRhaWwgPyBDU3RyaW5nR2V0VGV4 dERhdHVtKGVycl9kZXRhaWwpIDogKERhdHVtKSAwOworCQkJCWlzbnVsbFtqKytdID0gZXJyX2Rl dGFpbCA/IGZhbHNlIDogdHJ1ZTsKKworCQkJCWVycl9jb2RlID0gdW5wYWNrX3NxbF9zdGF0ZShj c3RhdGUtPmVzY29udGV4dC0+ZXJyb3JfZGF0YS0+c3FsZXJyY29kZSk7CisJCQkJdmFsdWVzW2or K10gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGVycl9jb2RlKTsKKworCQkJCUFzc2VydChqID09IEVS Uk9SX1RCTF9DT0xVTU5TKTsKKworCQkJCXR1cGRlc2MgPSAgUmVsYXRpb25HZXREZXNjcihjc3Rh dGUtPmVycm9yX3NhdmluZ19yZWwpOworCQkJCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRl c2MsIHZhbHVlcywgaXNudWxsKTsKKwkJCQlzaW1wbGVfaGVhcF9pbnNlcnQoY3N0YXRlLT5lcnJv cl9zYXZpbmdfcmVsLCB0dXBsZSk7CisJCQl9CisKIAkJCWNzdGF0ZS0+bnVtX2Vycm9ycysrOwog Ci0JCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPT0gQ09QWV9MT0dfVkVSQk9TSVRZ X1ZFUkJPU0UpCisJCQlpZiAoY3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPT0gQ09QWV9MT0df VkVSQk9TSVRZX1ZFUkJPU0UgJiYKKwkJCQljc3RhdGUtPm9wdHMub25fZXJyb3IgPT0gQ09QWV9P Tl9FUlJPUl9JR05PUkUpCiAJCQl7CiAJCQkJLyoKIAkJCQkgKiBTaW5jZSB3ZSBlbWl0IGxpbmUg bnVtYmVyIGFuZCBjb2x1bW4gaW5mbyBpbiB0aGUgYmVsb3cKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDNjNDI2 OGIyNzFhLi4wYTQ1MzA1YzRiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0zNTc3LDYgKzM1NzcsNyBAQCBj b3B5X2dlbmVyaWNfb3B0X2FyZzoKIAkJCXwgTnVtZXJpY09ubHkJCQkJCXsgJCQgPSAoTm9kZSAq KSAkMTsgfQogCQkJfCAnKicJCQkJCQkJeyAkJCA9IChOb2RlICopIG1ha2VOb2RlKEFfU3Rhcik7 IH0KIAkJCXwgREVGQVVMVCAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IChOb2RlICopIG1h a2VTdHJpbmcoImRlZmF1bHQiKTsgfQorCQkJfCBUQUJMRSAgICAgICAgICAgICAgICAgICAgICAg ICB7ICQkID0gKE5vZGUgKikgbWFrZVN0cmluZygidGFibGUiKTsgfQogCQkJfCAnKCcgY29weV9n ZW5lcmljX29wdF9hcmdfbGlzdCAnKScJCXsgJCQgPSAoTm9kZSAqKSAkMjsgfQogCQkJfCAvKiBF TVBUWSAqLwkJCQkJeyAkJCA9IE5VTEw7IH0KIAkJOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IDA2ZGZk ZmVmNzIxLi4wYzdhMmRlZmM1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtMzgsOCArMzgsMTUgQEAg dHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCiB7CiAJQ09QWV9PTl9FUlJPUl9TVE9QID0g MCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAqLwogCUNPUFlfT05fRVJS T1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLworCUNPUFlfT05fRVJST1JfVEFCTEUsCQkv KiBzYXZpbmcgZXJyb3JzIGluZm8gdG8gdGFibGUgKi8KIH0gQ29weU9uRXJyb3JDaG9pY2U7CiAK Ky8qCisgKiB1c2VkIGZvciAoQ09QWSBvbl9lcnJvciAndGFibGUnKTsgdGhlIGVycm9yIHNhdmlu ZyB0YWJsZSBoYXZlIG9ubHkgMTAKKyAqIGNvbHVtbnMuCisqLworI2RlZmluZSBFUlJPUl9UQkxf Q09MVU1OUyAgIDEwCisKIC8qCiAgKiBSZXByZXNlbnRzIHZlcmJvc2l0eSBvZiBsb2dnZWQgbWVz c2FnZXMgYnkgQ09QWSBjb21tYW5kLgogICovCkBAIC04Niw2ICs5Myw3IEBAIHR5cGVkZWYgc3Ry dWN0IENvcHlGb3JtYXRPcHRpb25zCiAJQ29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdo YXQgdG8gZG8gd2hlbiBlcnJvciBoYXBwZW5lZCAqLwogCUNvcHlMb2dWZXJib3NpdHlDaG9pY2Ug bG9nX3ZlcmJvc2l0eTsJLyogdmVyYm9zaXR5IG9mIGxvZ2dlZCBtZXNzYWdlcyAqLwogCWludDY0 CQlyZWplY3RfbGltaXQ7CS8qIG1heGltdW0gdG9sZXJhYmxlIG51bWJlciBvZiBlcnJvcnMgKi8K KwljaGFyCQkqb25fZXJyb3JfdGJsOyAJLyogb24gZXJyb3IsIHNhdmUgZXJyb3IgaW5mbyB0byB0 aGUgdGFibGUsIHRhYmxlIG5hbWUgKi8KIAlMaXN0CSAgICpjb252ZXJ0X3NlbGVjdDsgLyogbGlz dCBvZiBjb2x1bW4gbmFtZXMgKGNhbiBiZSBOSUwpICovCiB9IENvcHlGb3JtYXRPcHRpb25zOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaAppbmRleCBjOGIyMmFmMjJk OC4uYzk3NDMxMWY2YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9t X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwu aApAQCAtNzMsNiArNzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YQogCiAJ LyogcGFyYW1ldGVycyBmcm9tIHRoZSBDT1BZIGNvbW1hbmQgKi8KIAlSZWxhdGlvbglyZWw7CQkJ LyogcmVsYXRpb24gdG8gY29weSBmcm9tICovCisJUmVsYXRpb24JZXJyb3Jfc2F2aW5nX3JlbDsg LyogcmVsYXRpb24gZm9yIGNvcHkgZnJvbSBlcnJvciBzYXZpbmcgKi8KIAlMaXN0CSAgICphdHRu dW1saXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51bXMgdG8gY29weSAqLwogCWNoYXIJICAg KmZpbGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNURElOICovCiAJYm9vbAkJaXNf cHJvZ3JhbTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVuPyAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvcHkyLm91dAppbmRleCA2NGVhMzNhZWFlOC4uNjdjMTVkODg0OWQgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CkBAIC04MTMsNiArODEzLDEwMyBAQCBFUlJP UjogIHNraXBwZWQgbW9yZSB0aGFuIFJFSkVDVF9MSU1JVCAoMykgcm93cyBkdWUgdG8gZGF0YSB0 eXBlIGluY29tcGF0aWJpbGl0eQogQ09OVEVYVDogIENPUFkgY2hlY2tfaWduX2VyciwgbGluZSA1 LCBjb2x1bW4gbjogIiIKIENPUFkgY2hlY2tfaWduX2VyciBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIGlnbm9yZSwgcmVqZWN0X2xpbWl0IDQpOwogTk9USUNFOiAgNCByb3dzIHdlcmUgc2tpcHBl ZCBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eQorY3JlYXRlIHRhYmxlIGVycl90Ymwo Cit1c2VyaWQgb2lkLCAgIC0tIHRoZSB1c2VyIG9pZCB3aGlsZSBjb3B5IGdlbmVyYXRlZCB0aGlz IGVudHJ5Citjb3B5X3RibCBvaWQsIC0tY29weSB0YWJsZQorZmlsZW5hbWUgdGV4dCwKK2xpbmVu byAgYmlnaW50LAorbGluZSAgICB0ZXh0LAorY29sbmFtZSB0ZXh0LAorcmF3X2ZpZWxkX3ZhbHVl IHRleHQsCitlcnJfbWVzc2FnZSB0ZXh0LAorZXJyX2RldGFpbCB0ZXh0LAorZXJyb3Jjb2RlIHRl eHQKKyk7CistLWNhbm5vdCB1c2UgZm9yIGVycm9yIHNhdmluZy4KK2NyZWF0ZSB0YWJsZSBlcnJf dGJsXzEoCit1c2VyaWQgb2lkLCBjb3B5X3RibCBvaWQsIGZpbGVuYW1lIHRleHQsIGxpbmVubyBi aWdpbnQsIGxpbmUgdGV4dCwKK2NvbG5hbWUgdGV4dCwgcmF3X2ZpZWxkX3ZhbHVlIHRleHQsCitl cnJfbWVzc2FnZSB0ZXh0LAorZXJyX2RldGFpbCB0ZXh0KTsKKy0tY2Fubm90IHVzZSBmb3IgZXJy b3Igc2F2aW5nLgorY3JlYXRlIHRhYmxlIGVycl90YmxfMigKK3VzZXJpZCBvaWQsIGNvcHlfdGJs IG9pZCwgZmlsZW5hbWUgdGV4dCwgbGluZW5vIGJpZ2ludCxsaW5lIHRleHQsCitjb2xuYW1lIHRl eHQsIHJhd19maWVsZF92YWx1ZSB0ZXh0LCBlcnJfbWVzc2FnZSB0ZXh0LAorZXJyX2RldGFpbCB0 ZXh0LAorZXJyb3Jjb2RlIHRleHQsCitlcnJvcmNvZGUxIHRleHQKKyk7CitjcmVhdGUgdGFibGUg dF9jb3B5X3RibChhIGludCwgYiBpbnQsIGMgaW50KTsKK2NyZWF0ZSB2aWV3IHMxIGFzIHNlbGVj dCAxIGFzIGE7CistLS0taW52YWxpZCBvcHRpb25zLCB0aGUgYmVsb3cgYWxsIHNob3VsZCAgZmFp bHMKK0NPUFkgZXJyX3RibCBGUk9NIFNURElOIFdJVEggKERFTElNSVRFUiAnLCcsIG9uX2Vycm9y IHRhYmxlLCB0YWJsZSBlcnJfdGJsKTsKK0VSUk9SOiAgY2Fubm90IHVzZSByZWxhdGlvbiAiZXJy X3RibCIgZm9yIENPUFkgZXJyb3Igc2F2aW5nIHdoaWxlIGNvcHlpbmcgZGF0YSB0byBpdAorQ09Q WSB0X2NvcHlfdGJsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUpOworRVJST1I6ICBj YW5ub3Qgc3BlY2lmeSBPTl9FUlJPUiBvcHRpb24gdmFsdWUgdG8gIlRBQkxFIiB3aGVuIFRBQkxF IGlzIG5vdCBzcGVjaWZpZWQKK0hJTlQ6ICBZb3UgbWF5IG5lZWQgYWxzbyBzcGVjaWZ5ICJUQUJM RSIgb3B0aW9uLgorQ09QWSB0X2NvcHlfdGJsIEZST00gU1RESU4gV0lUSCAodGFibGUgZXJyX3Ri bCk7CitFUlJPUjogIENPUFkgVEFCTEUgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2hlbiBPTl9F UlJPUiBvcHRpb24gaXMgc3BlY2lmaWVkIGFzICJUQUJMRSIKK0NPUFkgdF9jb3B5X3RibCBUTyBT VERJTiBXSVRIIChvbl9lcnJvciB0YWJsZSk7CitFUlJPUjogIENPUFkgT05fRVJST1IgY2Fubm90 IGJlIHVzZWQgd2l0aCBDT1BZIFRPCitMSU5FIDE6IENPUFkgdF9jb3B5X3RibCBUTyBTVERJTiBX SVRIIChvbl9lcnJvciB0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHRh YmxlLCByZWplY3RfbGltaXQgMTAsIHRhYmxlIGVycl90YmwpOworRVJST1I6ICBjYW5ub3Qgc3Bl Y2lmeSBSRUpFQ1RfTElNSVQgb3B0aW9uIHdoZW4gT05fRVJST1Igb3B0aW9uIGlzIHNwZWNpZmll ZCBhcyAiVEFCTEUiCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIHRhYmxlLCB0YWJsZSBub3RfZXhpc3RzKTsKK0VSUk9SOiAgcmVsYXRpb24gIm5vdF9leGlz dHMiIGRvZXMgbm90IGV4aXN0CitDT1BZIHRfY29weV90YmwoYSkgRlJPTSBTVERJTiBXSVRIIChv bl9lcnJvciB0YWJsZSwgdGFibGUgczEpOworRVJST1I6ICBjYW5ub3QgdXNlIHJlbGF0aW9uICJz MSIgZm9yIENPUFkgZXJyb3Igc2F2aW5nCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qg c3VwcG9ydGVkIGZvciB2aWV3cy4KKy0tc2hvdWxkIGZhaWwuIGVycl90YmxfMSBkb2VzIG5vdCBt ZWV0IGNyaXRlcmlhCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIHRhYmxlLCB0YWJsZSBlcnJfdGJsXzEpOworRVJST1I6ICB0YWJsZSAiZXJyX3RibF8xIiBj YW5ub3QgYmUgdXNlZCBmb3IgQ09QWSBlcnJvciBzYXZpbmcKK0RFVEFJTDogIFRhYmxlICJlcnJf dGJsXzEiIGRhdGEgZGVmaW5pdGlvbiBpcyBub3Qgc3VpdGFibGUgZm9yIGVycm9yIHNhdmluZwor LS1zaG91bGQgZmFpbC4gZXJyX3RibF8yIGRvZXMgbm90IG1lZXQgY3JpdGVyaWEKK0NPUFkgdF9j b3B5X3RibChhLGIpIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUsIHRhYmxlIGVycl90 YmxfMik7CitFUlJPUjogIHRhYmxlICJlcnJfdGJsXzIiIGNhbm5vdCBiZSB1c2VkIGZvciBDT1BZ IGVycm9yIHNhdmluZworREVUQUlMOiAgVGFibGUgImVycl90YmxfMiIgZGF0YSBkZWZpbml0aW9u IGlzIG5vdCBzdWl0YWJsZSBmb3IgZXJyb3Igc2F2aW5nCistLS0taW52YWxpZCBvcHRpb25zLCB0 aGUgYWJvdmUgYWxsIHNob3VsZCBmYWlscworLS1zaG91bGQgZmFpbCwgY29waWVkIGRhdGEgaGF2 ZSBleHRyYSBjb2x1bW5zCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKERF TElNSVRFUiAnLCcsIG9uX2Vycm9yIHRhYmxlLCB0YWJsZSBlcnJfdGJsKTsKK0VSUk9SOiAgZXh0 cmEgZGF0YSBhZnRlciBsYXN0IGV4cGVjdGVkIGNvbHVtbgorQ09OVEVYVDogIENPUFkgdF9jb3B5 X3RibCwgbGluZSAxOiAiMSwyLDMsNCIKKy0tc2hvdWxkIGZhaWwsIGNvcGllZCBkYXRhIGhhdmUg bGVzcyBjb2x1bW5zCitDT1BZIHRfY29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKERFTElN SVRFUiAnLCcsIG9uX2Vycm9yIHRhYmxlLCB0YWJsZSBlcnJfdGJsKTsKK0VSUk9SOiAgZXh0cmEg ZGF0YSBhZnRlciBsYXN0IGV4cGVjdGVkIGNvbHVtbgorQ09OVEVYVDogIENPUFkgdF9jb3B5X3Ri bCwgbGluZSAxOiAiMSwyLCIKKy0tb2sgY2FzZXMuCitDT1BZIHRfY29weV90YmwgRlJPTSBTVERJ TiBXSVRIIChERUxJTUlURVIgJywnLCBvbl9lcnJvciB0YWJsZSwgdGFibGUgZXJyX3RibCk7CitO T1RJQ0U6ICA0IHJvd3Mgd2VyZSBzYXZlZCB0byB0YWJsZSAiZXJyX3RibCIgZHVlIHRvIGRhdGEg dHlwZSBpbmNvbXBhdGliaWxpdHkKKy0tc2hvdWxkIGZhaWwuIGxhY2sgcHJpdmlsZWdlCitiZWdp bjsKK2NyZWF0ZSB1c2VyIHJlZ3Jlc3NfdXNlcjIwOworZ3JhbnQgaW5zZXJ0KHVzZXJpZCxjb3B5 X3RibCxmaWxlbmFtZSxsaW5lbm8sbGluZSkgb24gdGFibGUgZXJyX3RibCB0byByZWdyZXNzX3Vz ZXIyMDsKK2dyYW50IGluc2VydCBvbiB0YWJsZSB0X2NvcHlfdGJsIHRvIHJlZ3Jlc3NfdXNlcjIw Oworc2V0IHJvbGUgcmVncmVzc191c2VyMjA7CitDT1BZIHRfY29weV90YmwgRlJPTSBTVERJTiBX SVRIIChkZWxpbWl0ZXIgJywnLCBvbl9lcnJvciB0YWJsZSwgdGFibGUgZXJyX3RibCk7CitFUlJP UjogIHBlcm1pc3Npb24gZGVuaWVkIHRvIHNldCB0YWJsZSAiZXJyX3RibCIgZm9yIENPUFkgRlJP TSBlcnJvciBzYXZpbmcKK0hJTlQ6ICBFbnN1cmUgY3VycmVudCB1c2VyIGhhdmUgZW5vdWdoIHBy aXZpbGVnZSBvbiAiZXJyX3RibCIgZm9yIENPUFkgRlJPTSBlcnJvciBzYXZpbmcKK1JPTExCQUNL Oworc2VsZWN0CXBnX2NsYXNzLnJlbG5hbWUgYXMgY29weV9kZXN0aW5hdGlvbgorICAgICAgICAs ZmlsZW5hbWUsbGluZW5vICxsaW5lCisgICAgICAgICxjb2xuYW1lLHJhd19maWVsZF92YWx1ZSxl cnJfbWVzc2FnZQorICAgICAgICAsZXJyX2RldGFpbCxlcnJvcmNvZGUKK2Zyb20gZXJyX3RibCBq b2luIHBnX2NsYXNzIG9uIGNvcHlfdGJsID0gcGdfY2xhc3Mub2lkOworIGNvcHlfZGVzdGluYXRp b24gfCBmaWxlbmFtZSB8IGxpbmVubyB8ICAgICAgICAgICBsaW5lICAgICAgICAgICB8IGNvbG5h bWUgfCAgIHJhd19maWVsZF92YWx1ZSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgZXJyX21l c3NhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXJyX2RldGFpbCB8IGVycm9yY29kZSAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgdF9jb3B5X3RibCAgICAgICB8IFNURElOICAgIHwgICAgICAxIHwg MSwyLGEgICAgICAgICAgICAgICAgICAgIHwgYyAgICAgICB8IGEgICAgICAgICAgICAgICAgICAg fCBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIgICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgMjJQMDIKKyB0X2NvcHlfdGJsICAgICAgIHwgU1RESU4gICAg fCAgICAgIDMgfCAxLF9qdW5rLHRlc3QgICAgICAgICAgICAgfCBiICAgICAgIHwgX2p1bmsgICAg ICAgICAgICAgICB8IGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6ICJfanVu ayIgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAyMlAwMgorIHRfY29weV90YmwgICAgICAg fCBTVERJTiAgICB8ICAgICAgNCB8IGNvbGEsY29sYixjb2xjICAgICAgICAgICB8IGEgICAgICAg fCBjb2xhICAgICAgICAgICAgICAgIHwgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50 ZWdlcjogImNvbGEiICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8IDIyUDAyCisgdF9jb3B5 X3RibCAgICAgICB8IFNURElOICAgIHwgICAgICA2IHwgMSwxMSw0MjM4Njc5NzMyNDg5ODc5ODc5 IHwgYyAgICAgICB8IDQyMzg2Nzk3MzI0ODk4Nzk4NzkgfCB2YWx1ZSAiNDIzODY3OTczMjQ4OTg3 OTg3OSIgaXMgb3V0IG9mIHJhbmdlIGZvciB0eXBlIGludGVnZXIgfCAgICAgICAgICAgIHwgMjIw MDMKKyg0IHJvd3MpCisKK3NlbGVjdCAqIGZyb20gdF9jb3B5X3RibDsKKyBhIHwgYiB8IGMgCist LS0rLS0tKy0tLQorIDEgfCAyIHwgMworIDQgfCA1IHwgNgorKDIgcm93cykKKwogLS0gY2xlYW4g dXAKIERST1AgVEFCTEUgZm9yY2V0ZXN0OwogRFJPUCBUQUJMRSB2aXN0ZXN0OwpAQCAtODMxLDYg KzkyOCwxMCBAQCBEUk9QIFRBQkxFIGNoZWNrX2lnbl9lcnI7CiBEUk9QIFRBQkxFIGNoZWNrX2ln bl9lcnIyOwogRFJPUCBET01BSU4gZGNoZWNrX2lnbl9lcnIyOwogRFJPUCBUQUJMRSBoYXJkX2Vy cjsKK0RST1AgVEFCTEUgZXJyX3RibDsKK0RST1AgVEFCTEUgZXJyX3RibF8xOworRFJPUCBUQUJM RSBlcnJfdGJsXzI7CitEUk9QIFRBQkxFIHRfY29weV90YmwgQ0FTQ0FERTsKIC0tCiAtLSBDT1BZ IEZST00gLi4uIERFRkFVTFQKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9j b3B5Mi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggNDUyNzM1NTdj ZTAuLmExOTA0MzI2ODJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC01ODgsNiArNTg4LDg2 IEBAIGEJezd9CTcKIDEwCXsxMH0JMTAKIFwuCiAKK2NyZWF0ZSB0YWJsZSBlcnJfdGJsKAordXNl cmlkIG9pZCwgICAtLSB0aGUgdXNlciBvaWQgd2hpbGUgY29weSBnZW5lcmF0ZWQgdGhpcyBlbnRy eQorY29weV90Ymwgb2lkLCAtLWNvcHkgdGFibGUKK2ZpbGVuYW1lIHRleHQsCitsaW5lbm8gIGJp Z2ludCwKK2xpbmUgICAgdGV4dCwKK2NvbG5hbWUgdGV4dCwKK3Jhd19maWVsZF92YWx1ZSB0ZXh0 LAorZXJyX21lc3NhZ2UgdGV4dCwKK2Vycl9kZXRhaWwgdGV4dCwKK2Vycm9yY29kZSB0ZXh0Cisp OworLS1jYW5ub3QgdXNlIGZvciBlcnJvciBzYXZpbmcuCitjcmVhdGUgdGFibGUgZXJyX3RibF8x KAordXNlcmlkIG9pZCwgY29weV90Ymwgb2lkLCBmaWxlbmFtZSB0ZXh0LCBsaW5lbm8gYmlnaW50 LCBsaW5lIHRleHQsCitjb2xuYW1lIHRleHQsIHJhd19maWVsZF92YWx1ZSB0ZXh0LAorZXJyX21l c3NhZ2UgdGV4dCwKK2Vycl9kZXRhaWwgdGV4dCk7CisKKy0tY2Fubm90IHVzZSBmb3IgZXJyb3Ig c2F2aW5nLgorY3JlYXRlIHRhYmxlIGVycl90YmxfMigKK3VzZXJpZCBvaWQsIGNvcHlfdGJsIG9p ZCwgZmlsZW5hbWUgdGV4dCwgbGluZW5vIGJpZ2ludCxsaW5lIHRleHQsCitjb2xuYW1lIHRleHQs IHJhd19maWVsZF92YWx1ZSB0ZXh0LCBlcnJfbWVzc2FnZSB0ZXh0LAorZXJyX2RldGFpbCB0ZXh0 LAorZXJyb3Jjb2RlIHRleHQsCitlcnJvcmNvZGUxIHRleHQKKyk7CitjcmVhdGUgdGFibGUgdF9j b3B5X3RibChhIGludCwgYiBpbnQsIGMgaW50KTsKK2NyZWF0ZSB2aWV3IHMxIGFzIHNlbGVjdCAx IGFzIGE7CisKKy0tLS1pbnZhbGlkIG9wdGlvbnMsIHRoZSBiZWxvdyBhbGwgc2hvdWxkICBmYWls cworQ09QWSBlcnJfdGJsIEZST00gU1RESU4gV0lUSCAoREVMSU1JVEVSICcsJywgb25fZXJyb3Ig dGFibGUsIHRhYmxlIGVycl90YmwpOworQ09QWSB0X2NvcHlfdGJsIEZST00gU1RESU4gV0lUSCAo b25fZXJyb3IgdGFibGUpOworQ09QWSB0X2NvcHlfdGJsIEZST00gU1RESU4gV0lUSCAodGFibGUg ZXJyX3RibCk7CitDT1BZIHRfY29weV90YmwgVE8gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUp OworQ09QWSB0X2NvcHlfdGJsKGEsYikgRlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciB0YWJsZSwg cmVqZWN0X2xpbWl0IDEwLCB0YWJsZSBlcnJfdGJsKTsKK0NPUFkgdF9jb3B5X3RibChhLGIpIEZS T00gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUsIHRhYmxlIG5vdF9leGlzdHMpOworQ09QWSB0 X2NvcHlfdGJsKGEpIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUsIHRhYmxlIHMxKTsK Ky0tc2hvdWxkIGZhaWwuIGVycl90YmxfMSBkb2VzIG5vdCBtZWV0IGNyaXRlcmlhCitDT1BZIHRf Y29weV90YmwoYSxiKSBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHRhYmxlLCB0YWJsZSBlcnJf dGJsXzEpOworLS1zaG91bGQgZmFpbC4gZXJyX3RibF8yIGRvZXMgbm90IG1lZXQgY3JpdGVyaWEK K0NPUFkgdF9jb3B5X3RibChhLGIpIEZST00gU1RESU4gV0lUSCAob25fZXJyb3IgdGFibGUsIHRh YmxlIGVycl90YmxfMik7CistLS0taW52YWxpZCBvcHRpb25zLCB0aGUgYWJvdmUgYWxsIHNob3Vs ZCBmYWlscworCistLXNob3VsZCBmYWlsLCBjb3BpZWQgZGF0YSBoYXZlIGV4dHJhIGNvbHVtbnMK K0NPUFkgdF9jb3B5X3RibChhLGIpIEZST00gU1RESU4gV0lUSCAoREVMSU1JVEVSICcsJywgb25f ZXJyb3IgdGFibGUsIHRhYmxlIGVycl90YmwpOworMSwyLDMsNAorXC4KKworLS1zaG91bGQgZmFp bCwgY29waWVkIGRhdGEgaGF2ZSBsZXNzIGNvbHVtbnMKK0NPUFkgdF9jb3B5X3RibChhLGIpIEZS T00gU1RESU4gV0lUSCAoREVMSU1JVEVSICcsJywgb25fZXJyb3IgdGFibGUsIHRhYmxlIGVycl90 YmwpOworMSwyLAorXC4KKworLS1vayBjYXNlcy4KK0NPUFkgdF9jb3B5X3RibCBGUk9NIFNURElO IFdJVEggKERFTElNSVRFUiAnLCcsIG9uX2Vycm9yIHRhYmxlLCB0YWJsZSBlcnJfdGJsKTsKKzEs MixhCisxLDIsMworMSxfanVuayx0ZXN0Citjb2xhLGNvbGIsY29sYworNCw1LDYKKzEsMTEsNDIz ODY3OTczMjQ4OTg3OTg3OQorXC4KKworLS1zaG91bGQgZmFpbC4gbGFjayBwcml2aWxlZ2UKK2Jl Z2luOworY3JlYXRlIHVzZXIgcmVncmVzc191c2VyMjA7CitncmFudCBpbnNlcnQodXNlcmlkLGNv cHlfdGJsLGZpbGVuYW1lLGxpbmVubyxsaW5lKSBvbiB0YWJsZSBlcnJfdGJsIHRvIHJlZ3Jlc3Nf dXNlcjIwOworZ3JhbnQgaW5zZXJ0IG9uIHRhYmxlIHRfY29weV90YmwgdG8gcmVncmVzc191c2Vy MjA7CitzZXQgcm9sZSByZWdyZXNzX3VzZXIyMDsKK0NPUFkgdF9jb3B5X3RibCBGUk9NIFNURElO IFdJVEggKGRlbGltaXRlciAnLCcsIG9uX2Vycm9yIHRhYmxlLCB0YWJsZSBlcnJfdGJsKTsKK1JP TExCQUNLOworCitzZWxlY3QJcGdfY2xhc3MucmVsbmFtZSBhcyBjb3B5X2Rlc3RpbmF0aW9uCisg ICAgICAgICxmaWxlbmFtZSxsaW5lbm8gLGxpbmUKKyAgICAgICAgLGNvbG5hbWUscmF3X2ZpZWxk X3ZhbHVlLGVycl9tZXNzYWdlCisgICAgICAgICxlcnJfZGV0YWlsLGVycm9yY29kZQorZnJvbSBl cnJfdGJsIGpvaW4gcGdfY2xhc3Mgb24gY29weV90YmwgPSBwZ19jbGFzcy5vaWQ7CitzZWxlY3Qg KiBmcm9tIHRfY29weV90Ymw7CisKIC0tIGNsZWFuIHVwCiBEUk9QIFRBQkxFIGZvcmNldGVzdDsK IERST1AgVEFCTEUgdmlzdGVzdDsKQEAgLTYwNiw2ICs2ODYsMTAgQEAgRFJPUCBUQUJMRSBjaGVj a19pZ25fZXJyOwogRFJPUCBUQUJMRSBjaGVja19pZ25fZXJyMjsKIERST1AgRE9NQUlOIGRjaGVj a19pZ25fZXJyMjsKIERST1AgVEFCTEUgaGFyZF9lcnI7CitEUk9QIFRBQkxFIGVycl90Ymw7CitE Uk9QIFRBQkxFIGVycl90YmxfMTsKK0RST1AgVEFCTEUgZXJyX3RibF8yOworRFJPUCBUQUJMRSB0 X2NvcHlfdGJsIENBU0NBREU7CiAKIC0tCiAtLSBDT1BZIEZST00gLi4uIERFRkFVTFQKLS0gCjIu MzQuMQoK --000000000000874dd206339a9263--