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 1rTbfM-004ayZ-7W for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jan 2024 05:55:45 +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 1rTbfK-004iAZ-Sn for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Jan 2024 05:55:42 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rTbfJ-004iAO-T1 for pgsql-hackers@lists.postgresql.org; Sat, 27 Jan 2024 05:55:42 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rTbfG-003ajd-Bq for pgsql-hackers@postgresql.org; Sat, 27 Jan 2024 05:55:40 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-50edf4f478eso1361781e87.3 for ; Fri, 26 Jan 2024 21:55:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706334936; x=1706939736; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=8kmSC9eH5q6253AJEa1frlGKJbVx4+9MV4l9ZWoCpic=; b=MAg+iTQJk3tJ1afUEFeddbs5VZqnpRrN5AU2SUiwuGhwfTHbCoqxj4bqNSUf5FU2tl +rGqmTpvsX2W5dZ6BE7GQwOMTUkOtawYZVEYE9VJv/7/eUt80k/kMp5hevLbAYXCxFiG RqBvaRy733FRlpduwjmYEFuKaJNGhCJbMwKSwZN8iGwjvJp7UDIhDk7kchJjyyOFMzPY cfwQg05ZLXt9B33lWSUREg2cnt0gAFMecFrJNqPMmGQbIIQwdGGwYkckQX+mEovZ8vyh ATXxno/ojgb+8f7zVNl4Nx4XXVJ50YS2mdnEOWlxY4qVcijcftgoGW8DLJbZUy0OhlQM TRTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706334936; x=1706939736; 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=8kmSC9eH5q6253AJEa1frlGKJbVx4+9MV4l9ZWoCpic=; b=NdiQZR/G/cesncP1o/J3ZAuFXL084s2i8mJSVHVoSi0eaV/L5LxZrilBZ69/AGqmOY j+opdEfseZQ2dDw0NXkbFb6SjRYqFiTGSgndW+UypT4iYVLTRAXYO0QJiA89Y35YNyHd LxBNWxec+vK9HcbPfGX7HPDbQ0v5KLWAMzzjqsW9pkbHQ8T9LBi4OFOw26v+CeiGEB9E ambJ2JlNIUEhz4IjfAX8s3zf9Mv82S0PQMzFQizofyBE6WHhMWf1mJGET3Ib9y/C1f+N Lmsv1wIIU3IxBTl8n6/+51XQQ5DiiIq4OGlS1ax88T/idtDLSdAIQp+9EweFklwFYg7e j6OA== X-Gm-Message-State: AOJu0YxoW/oNzp8q4YtbHAN3ojc2smOu0cZeh8KQDQvwp1AYsKSYWeoU 8kQVrsLPcd4sUw7qZ8+joDL7WQASwpv1026FAxGV/Ap9uvbhCpdJzvceameP856xfSFqFcY8KxG osFDJeYNj9dg3UXabPbeRavRDXjA= X-Google-Smtp-Source: AGHT+IFdFr1Ih8FoQ28ORlPbCSNSSRaYPyCz+WR0n4fjoc2mKLyV1LFwbFi6nej76o7GX6jfS9FBXGxw/tQ+++IMS2Y= X-Received: by 2002:a05:6512:3046:b0:50e:e668:767b with SMTP id b6-20020a056512304600b0050ee668767bmr570187lfb.5.1706334935846; Fri, 26 Jan 2024 21:55:35 -0800 (PST) MIME-Version: 1.0 References: <8620df11-96e4-4ca3-8f3c-33a479260961@joeconway.com> <4162f7f7-6fd6-4720-98e2-89f80e3de2ed@joeconway.com> In-Reply-To: From: Junwang Zhao Date: Sat, 27 Jan 2024 13:55:23 +0800 Message-ID: Subject: Re: Emitting JSON to file using COPY TO To: jian he Cc: Masahiko Sawada , Joe Conway , Daniel Verite , Andrew Dunstan , Davin Shearer , PostgreSQL-development , Sutou Kouhei Content-Type: multipart/mixed; boundary="000000000000b835ef060fe70ff2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b835ef060fe70ff2 Content-Type: text/plain; charset="UTF-8" Hi hackers, Kou-san(CCed) has been working on *Make COPY format extendable[1]*, so I think making *copy to json* based on that work might be the right direction. I write an extension for that purpose, and here is the patch set together with Kou-san's *extendable copy format* implementation: 0001-0009 is the implementation of extendable copy format 00010 is the pg_copy_json extension I also created a PR[2] if anybody likes the github review style. The *extendable copy format* feature is still being developed, I post this email in case the patch set in this thread is committed without knowing the *extendable copy format* feature. I'd like to hear your opinions. [1]: https://www.postgresql.org/message-id/20240124.144936.67229716500876806.kou%40clear-code.com [2]: https://github.com/zhjwpku/postgres/pull/2/files -- Regards Junwang Zhao --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0004-Add-support-for-implementing-custom-COPY-TO-forma.patch" Content-Disposition: attachment; filename="v8-0004-Add-support-for-implementing-custom-COPY-TO-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w23 RnJvbSA0YjE3NzQ2OWYzZmI4ZjE0ZjBjZDZiZmYzYzc4NzhkY2FmZDliNzYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogVHVlLCAyMyBKYW4gMjAyNCAxNToxMjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDQv MTBdIEFkZCBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgY3VzdG9tIENPUFkgVE8gZm9ybWF0CiBh cyBleHRlbnNpb24KCiogQWRkIENvcHlUb1N0YXRlRGF0YTo6b3BhcXVlIHRoYXQgY2FuIGJlIHVz ZWQgdG8ga2VlcCBkYXRhIGZvciBjdXN0b20KICBDT1BZIFRPIGZvcm1hdCBpbXBsZW1lbnRhdGlv bgoqIEV4cG9ydCBDb3B5U2VuZEVuZE9mUm93KCkgdG8gZmx1c2ggZGF0YSBpbiBDb3B5VG9TdGF0 ZURhdGE6OmZlX21zZ2J1ZgoqIFJlbmFtZSBDb3B5U2VuZEVuZE9mUm93KCkgdG8gQ29weVRvU3Rh dGVGbHVzaCgpIGJlY2F1c2UgaXQncyBhCiAgbWV0aG9kIGZvciBDb3B5VG9TdGF0ZSBhbmQgaXQn cyB1c2VkIGZvciBmbHVzaGluZy4gRW5kLW9mLXJvdyByZWxhdGVkCiAgY29kZXMgd2VyZSBtb3Zl ZCB0byBDb3B5VG9UZXh0U2VuZEVuZE9mUm93KCkuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weXRvLmMgIHwgMTUgKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 YXBpLmggfCAgNSArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggY2ZjNzRlZTdiMS4uYjVkODY3ODM5 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTY5LDcgKzY5LDYgQEAgc3RhdGljIHZvaWQgU2Vu ZENvcHlFbmQoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlTZW5kRGF0YShD b3B5VG9TdGF0ZSBjc3RhdGUsIGNvbnN0IHZvaWQgKmRhdGFidWYsIGludCBkYXRhc2l6ZSk7CiBz dGF0aWMgdm9pZCBDb3B5U2VuZFN0cmluZyhDb3B5VG9TdGF0ZSBjc3RhdGUsIGNvbnN0IGNoYXIg KnN0cik7CiBzdGF0aWMgdm9pZCBDb3B5U2VuZENoYXIoQ29weVRvU3RhdGUgY3N0YXRlLCBjaGFy IGMpOwotc3RhdGljIHZvaWQgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpOwog c3RhdGljIHZvaWQgQ29weVNlbmRJbnQzMihDb3B5VG9TdGF0ZSBjc3RhdGUsIGludDMyIHZhbCk7 CiBzdGF0aWMgdm9pZCBDb3B5U2VuZEludDE2KENvcHlUb1N0YXRlIGNzdGF0ZSwgaW50MTYgdmFs KTsKIApAQCAtMTE3LDcgKzExNiw3IEBAIENvcHlUb1RleHRTZW5kRW5kT2ZSb3coQ29weVRvU3Rh dGUgY3N0YXRlKQogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJfQotCUNvcHlTZW5kRW5kT2ZSb3co Y3N0YXRlKTsKKwlDb3B5VG9TdGF0ZUZsdXNoKGNzdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBA IC0zMDIsNyArMzAxLDcgQEAgQ29weVRvQmluYXJ5T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpCiAJCX0KIAl9CiAKLQlDb3B5U2VuZEVuZE9mUm93KGNzdGF0 ZSk7CisJQ29weVRvU3RhdGVGbHVzaChjc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzEx LDcgKzMxMCw3IEBAIENvcHlUb0JpbmFyeUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJLyogR2Vu ZXJhdGUgdHJhaWxlciBmb3IgYSBiaW5hcnkgY29weSAqLwogCUNvcHlTZW5kSW50MTYoY3N0YXRl LCAtMSk7CiAJLyogTmVlZCB0byBmbHVzaCBvdXQgdGhlIHRyYWlsZXIgKi8KLQlDb3B5U2VuZEVu ZE9mUm93KGNzdGF0ZSk7CisJQ29weVRvU3RhdGVGbHVzaChjc3RhdGUpOwogfQogCiBDb3B5VG9S b3V0aW5lIENvcHlUb1JvdXRpbmVUZXh0ID0gewpAQCAtMzc3LDggKzM3Niw4IEBAIFNlbmRDb3B5 RW5kKENvcHlUb1N0YXRlIGNzdGF0ZSkKICAqIENvcHlTZW5kRGF0YSBzZW5kcyBvdXRwdXQgZGF0 YSB0byB0aGUgZGVzdGluYXRpb24gKGZpbGUgb3IgZnJvbnRlbmQpCiAgKiBDb3B5U2VuZFN0cmlu ZyBkb2VzIHRoZSBzYW1lIGZvciBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncwogICogQ29weVNlbmRD aGFyIGRvZXMgdGhlIHNhbWUgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzCi0gKiBDb3B5U2VuZEVuZE9m Um93IGRvZXMgdGhlIGFwcHJvcHJpYXRlIHRoaW5nIGF0IGVuZCBvZiBlYWNoIGRhdGEgcm93Ci0g KgkoZGF0YSBpcyBub3QgYWN0dWFsbHkgZmx1c2hlZCBleGNlcHQgYnkgQ29weVNlbmRFbmRPZlJv dykKKyAqIENvcHlUb1N0YXRlRmx1c2ggZmx1c2hlcyB0aGUgYnVmZmVyZWQgZGF0YQorICoJKGRh dGEgaXMgbm90IGFjdHVhbGx5IGZsdXNoZWQgZXhjZXB0IGJ5IENvcHlUb1N0YXRlRmx1c2gpCiAg KgogICogTkI6IG5vIGRhdGEgY29udmVyc2lvbiBpcyBhcHBsaWVkIGJ5IHRoZXNlIGZ1bmN0aW9u cwogICotLS0tLS0tLS0tCkBAIC00MDEsOCArNDAwLDggQEAgQ29weVNlbmRDaGFyKENvcHlUb1N0 YXRlIGNzdGF0ZSwgY2hhciBjKQogCWFwcGVuZFN0cmluZ0luZm9DaGFyTWFjcm8oY3N0YXRlLT5m ZV9tc2didWYsIGMpOwogfQogCi1zdGF0aWMgdm9pZAotQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9T dGF0ZSBjc3RhdGUpCit2b2lkCitDb3B5VG9TdGF0ZUZsdXNoKENvcHlUb1N0YXRlIGNzdGF0ZSkK IHsKIAlTdHJpbmdJbmZvCWZlX21zZ2J1ZiA9IGNzdGF0ZS0+ZmVfbXNnYnVmOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmggYi9zcmMvaW5jbHVkZS9jb21tYW5k cy9jb3B5YXBpLmgKaW5kZXggYTg2OWQ3OGQ3Mi4uZmZhZDQzM2EyMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHlhcGkuaApAQCAtMTc0LDYgKzE3NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURh dGEKIAlGbWdySW5mbyAgICpvdXRfZnVuY3Rpb25zOwkvKiBsb29rdXAgaW5mbyBmb3Igb3V0cHV0 IGZ1bmN0aW9ucyAqLwogCU1lbW9yeUNvbnRleHQgcm93Y29udGV4dDsJLyogcGVyLXJvdyBldmFs dWF0aW9uIGNvbnRleHQgKi8KIAl1aW50NjQJCWJ5dGVzX3Byb2Nlc3NlZDsJLyogbnVtYmVyIG9m IGJ5dGVzIHByb2Nlc3NlZCBzbyBmYXIgKi8KKworCS8qIEZvciBjdXN0b20gZm9ybWF0IGltcGxl bWVudGF0aW9uICovCisJdm9pZAkgICAqb3BhcXVlOwkJCS8qIHByaXZhdGUgc3BhY2UgKi8KIH0g Q29weVRvU3RhdGVEYXRhOwogCitleHRlcm4gdm9pZCBDb3B5VG9TdGF0ZUZsdXNoKENvcHlUb1N0 YXRlIGNzdGF0ZSk7CisKICNlbmRpZgkJCQkJCQkvKiBDT1BZQVBJX0ggKi8KLS0gCjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0003-Export-CopyToStateData.patch" Content-Disposition: attachment; filename="v8-0003-Export-CopyToStateData.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w12 RnJvbSBjM2E1OTc1M2IxMTU3ZGM4ZTQ3ZTcxOTI2M2Y1ODY3N2FjYzMzMTc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogVHVlLCAyMyBKYW4gMjAyNCAxNDo1NDoxMCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDMv MTBdIEV4cG9ydCBDb3B5VG9TdGF0ZURhdGEKCkl0J3MgZm9yIGN1c3RvbSBDT1BZIFRPIGZvcm1h dCBoYW5kbGVycyBpbXBsZW1lbnRlZCBhcyBleHRlbnNpb24uCgpUaGlzIGp1c3QgbW92ZXMgY29k ZXMuIFRoaXMgZG9lc24ndCBjaGFuZ2UgY29kZXMgZXhjZXB0IENvcHlEZXN0IGVudW0KdmFsdWVz LiBDb3B5RGVzdCBlbnVtIHZhbHVlcyBzdWNoIGFzIENPUFlfRklMRSBhcmUgY29uZmxpY3RlZApD b3B5U291cmNlIGVudW0gdmFsdWVzIGRlZmluZWQgaW4gY29weWZyb21faW50ZXJuYWwuaC4gU28g Q09QWV9ERVNUXwpwcmVmaXggaW5zdGVhZCBvZiBDT1BZXyBwcmVmaXggaXMgdXNlZC4gRm9yIGV4 YW1wbGUsIENPUFlfRklMRSBpcwpyZW5hbWVkIHRvIENPUFlfREVTVF9GSUxFLgoKTm90ZSB0aGF0 IHRoaXMgY2hhbmdlIGlzbid0IGVub3VnaCB0byBpbXBsZW1lbnQgYSBjdXN0b20gQ09QWSBUTwpm b3JtYXQgaGFuZGxlciBhcyBleHRlbnNpb24uIFdlJ2xsIGRvIHRoZSBmb2xsb3dpbmdzIGluIGEg c3Vic2VxdWVudApjb21taXQ6CgoxLiBBZGQgYW4gb3BhcXVlIHNwYWNlIGZvciBjdXN0b20gQ09Q WSBUTyBmb3JtYXQgaGFuZGxlcgoyLiBFeHBvcnQgQ29weVNlbmRFbmRPZlJvdygpIHRvIGZsdXNo IGJ1ZmZlcgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICB8ICA3NCArKystLS0t LS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oICAgIHwgIDU5IC0tLS0t LS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaCB8IDEyMCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTI3IGluc2VydGlv bnMoKyksIDEyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDY1NDdiN2M2 NTQuLmNmYzc0ZWU3YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC00Myw2NCArNDMsNiBAQAog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAotLyoK LSAqIFJlcHJlc2VudHMgdGhlIGRpZmZlcmVudCBkZXN0IGNhc2VzIHdlIG5lZWQgdG8gd29ycnkg YWJvdXQgYXQKLSAqIHRoZSBib3R0b20gbGV2ZWwKLSAqLwotdHlwZWRlZiBlbnVtIENvcHlEZXN0 Ci17Ci0JQ09QWV9GSUxFLAkJCQkJLyogdG8gZmlsZSAob3IgYSBwaXBlZCBwcm9ncmFtKSAqLwot CUNPUFlfRlJPTlRFTkQsCQkJCS8qIHRvIGZyb250ZW5kICovCi0JQ09QWV9DQUxMQkFDSywJCQkJ LyogdG8gY2FsbGJhY2sgZnVuY3Rpb24gKi8KLX0gQ29weURlc3Q7Ci0KLS8qCi0gKiBUaGlzIHN0 cnVjdCBjb250YWlucyBhbGwgdGhlIHN0YXRlIHZhcmlhYmxlcyB1c2VkIHRocm91Z2hvdXQgYSBD T1BZIFRPCi0gKiBvcGVyYXRpb24uCi0gKgotICogTXVsdGktYnl0ZSBlbmNvZGluZ3M6IGFsbCBz dXBwb3J0ZWQgY2xpZW50LXNpZGUgZW5jb2RpbmdzIGVuY29kZSBtdWx0aS1ieXRlCi0gKiBjaGFy YWN0ZXJzIGJ5IGhhdmluZyB0aGUgZmlyc3QgYnl0ZSdzIGhpZ2ggYml0IHNldC4gU3Vic2VxdWVu dCBieXRlcyBvZiB0aGUKLSAqIGNoYXJhY3RlciBjYW4gaGF2ZSB0aGUgaGlnaCBiaXQgbm90IHNl dC4gV2hlbiBzY2FubmluZyBkYXRhIGluIHN1Y2ggYW4KLSAqIGVuY29kaW5nIHRvIGxvb2sgZm9y IGEgbWF0Y2ggdG8gYSBzaW5nbGUtYnl0ZSAoaWUgQVNDSUkpIGNoYXJhY3Rlciwgd2UgbXVzdAot ICogdXNlIHRoZSBmdWxsIHBnX2VuY29kaW5nX21ibGVuKCkgbWFjaGluZXJ5IHRvIHNraXAgb3Zl ciBtdWx0aWJ5dGUKLSAqIGNoYXJhY3RlcnMsIGVsc2Ugd2UgbWlnaHQgZmluZCBhIGZhbHNlIG1h dGNoIHRvIGEgdHJhaWxpbmcgYnl0ZS4gSW4KLSAqIHN1cHBvcnRlZCBzZXJ2ZXIgZW5jb2Rpbmdz LCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSBvZiBhIGZhbHNlIG1hdGNoLCBhbmQKLSAqIGl0J3Mg ZmFzdGVyIHRvIG1ha2UgdXNlbGVzcyBjb21wYXJpc29ucyB0byB0cmFpbGluZyBieXRlcyB0aGFu IGl0IGlzIHRvCi0gKiBpbnZva2UgcGdfZW5jb2RpbmdfbWJsZW4oKSB0byBza2lwIG92ZXIgdGhl bS4gZW5jb2RpbmdfZW1iZWRzX2FzY2lpIGlzIHRydWUKLSAqIHdoZW4gd2UgaGF2ZSB0byBkbyBp dCB0aGUgaGFyZCB3YXkuCi0gKi8KLXR5cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YQotewot CS8qIGxvdy1sZXZlbCBzdGF0ZSBkYXRhICovCi0JQ29weURlc3QJY29weV9kZXN0OwkJLyogdHlw ZSBvZiBjb3B5IHNvdXJjZS9kZXN0aW5hdGlvbiAqLwotCUZJTEUJICAgKmNvcHlfZmlsZTsJCS8q IHVzZWQgaWYgY29weV9kZXN0ID09IENPUFlfRklMRSAqLwotCVN0cmluZ0luZm8JZmVfbXNnYnVm OwkJLyogdXNlZCBmb3IgYWxsIGRlc3RzIGR1cmluZyBDT1BZIFRPICovCi0KLQlpbnQJCQlmaWxl X2VuY29kaW5nOwkvKiBmaWxlIG9yIHJlbW90ZSBzaWRlJ3MgY2hhcmFjdGVyIGVuY29kaW5nICov Ci0JYm9vbAkJbmVlZF90cmFuc2NvZGluZzsJLyogZmlsZSBlbmNvZGluZyBkaWZmIGZyb20gc2Vy dmVyPyAqLwotCWJvb2wJCWVuY29kaW5nX2VtYmVkc19hc2NpaTsJLyogQVNDSUkgY2FuIGJlIG5v bi1maXJzdCBieXRlPyAqLwotCi0JLyogcGFyYW1ldGVycyBmcm9tIHRoZSBDT1BZIGNvbW1hbmQg Ki8KLQlSZWxhdGlvbglyZWw7CQkJLyogcmVsYXRpb24gdG8gY29weSB0byAqLwotCVF1ZXJ5RGVz YyAgKnF1ZXJ5RGVzYzsJCS8qIGV4ZWN1dGFibGUgcXVlcnkgdG8gY29weSBmcm9tICovCi0JTGlz dAkgICAqYXR0bnVtbGlzdDsJCS8qIGludGVnZXIgbGlzdCBvZiBhdHRudW1zIHRvIGNvcHkgKi8K LQljaGFyCSAgICpmaWxlbmFtZTsJCS8qIGZpbGVuYW1lLCBvciBOVUxMIGZvciBTVERPVVQgKi8K LQlib29sCQlpc19wcm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ ICovCi0JY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOyAvKiBmdW5jdGlvbiBmb3Igd3Jp dGluZyBkYXRhICovCi0KLQlDb3B5Rm9ybWF0T3B0aW9ucyBvcHRzOwotCU5vZGUJICAgKndoZXJl Q2xhdXNlOwkvKiBXSEVSRSBjb25kaXRpb24gKG9yIE5VTEwpICovCi0KLQkvKgotCSAqIFdvcmtp bmcgc3RhdGUKLQkgKi8KLQlNZW1vcnlDb250ZXh0IGNvcHljb250ZXh0OwkvKiBwZXItY29weSBl eGVjdXRpb24gY29udGV4dCAqLwotCi0JRm1nckluZm8gICAqb3V0X2Z1bmN0aW9uczsJLyogbG9v a3VwIGluZm8gZm9yIG91dHB1dCBmdW5jdGlvbnMgKi8KLQlNZW1vcnlDb250ZXh0IHJvd2NvbnRl eHQ7CS8qIHBlci1yb3cgZXZhbHVhdGlvbiBjb250ZXh0ICovCi0JdWludDY0CQlieXRlc19wcm9j ZXNzZWQ7CS8qIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgc28gZmFyICovCi19IENvcHlUb1N0 YXRlRGF0YTsKLQogLyogRGVzdFJlY2VpdmVyIGZvciBDT1BZIChxdWVyeSkgVE8gKi8KIHR5cGVk ZWYgc3RydWN0CiB7CkBAIC0xNjAsNyArMTAyLDcgQEAgQ29weVRvVGV4dFNlbmRFbmRPZlJvdyhD b3B5VG9TdGF0ZSBjc3RhdGUpCiB7CiAJc3dpdGNoIChjc3RhdGUtPmNvcHlfZGVzdCkKIAl7Ci0J CWNhc2UgQ09QWV9GSUxFOgorCQljYXNlIENPUFlfREVTVF9GSUxFOgogCQkJLyogRGVmYXVsdCBs aW5lIHRlcm1pbmF0aW9uIGRlcGVuZHMgb24gcGxhdGZvcm0gKi8KICNpZm5kZWYgV0lOMzIKIAkJ CUNvcHlTZW5kQ2hhcihjc3RhdGUsICdcbicpOwpAQCAtMTY4LDcgKzExMCw3IEBAIENvcHlUb1Rl eHRTZW5kRW5kT2ZSb3coQ29weVRvU3RhdGUgY3N0YXRlKQogCQkJQ29weVNlbmRTdHJpbmcoY3N0 YXRlLCAiXHJcbiIpOwogI2VuZGlmCiAJCQlicmVhazsKLQkJY2FzZSBDT1BZX0ZST05URU5EOgor CQljYXNlIENPUFlfREVTVF9GUk9OVEVORDoKIAkJCS8qIFRoZSBGRS9CRSBwcm90b2NvbCB1c2Vz IFxuIGFzIG5ld2xpbmUgZm9yIGFsbCBwbGF0Zm9ybXMgKi8KIAkJCUNvcHlTZW5kQ2hhcihjc3Rh dGUsICdcbicpOwogCQkJYnJlYWs7CkBAIC00MTksNyArMzYxLDcgQEAgU2VuZENvcHlCZWdpbihD b3B5VG9TdGF0ZSBjc3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IG5hdHRzOyBpKyspCiAJCXBxX3Nl bmRpbnQxNigmYnVmLCBmb3JtYXQpOyAvKiBwZXItY29sdW1uIGZvcm1hdHMgKi8KIAlwcV9lbmRt ZXNzYWdlKCZidWYpOwotCWNzdGF0ZS0+Y29weV9kZXN0ID0gQ09QWV9GUk9OVEVORDsKKwljc3Rh dGUtPmNvcHlfZGVzdCA9IENPUFlfREVTVF9GUk9OVEVORDsKIH0KIAogc3RhdGljIHZvaWQKQEAg LTQ2Niw3ICs0MDgsNyBAQCBDb3B5U2VuZEVuZE9mUm93KENvcHlUb1N0YXRlIGNzdGF0ZSkKIAog CXN3aXRjaCAoY3N0YXRlLT5jb3B5X2Rlc3QpCiAJewotCQljYXNlIENPUFlfRklMRToKKwkJY2Fz ZSBDT1BZX0RFU1RfRklMRToKIAkJCWlmIChmd3JpdGUoZmVfbXNnYnVmLT5kYXRhLCBmZV9tc2di dWYtPmxlbiwgMSwKIAkJCQkJICAgY3N0YXRlLT5jb3B5X2ZpbGUpICE9IDEgfHwKIAkJCQlmZXJy b3IoY3N0YXRlLT5jb3B5X2ZpbGUpKQpAQCAtNTAwLDExICs0NDIsMTEgQEAgQ29weVNlbmRFbmRP ZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCQkJCQkJIGVycm1zZygiY291bGQgbm90IHdyaXRl IHRvIENPUFkgZmlsZTogJW0iKSkpOwogCQkJfQogCQkJYnJlYWs7Ci0JCWNhc2UgQ09QWV9GUk9O VEVORDoKKwkJY2FzZSBDT1BZX0RFU1RfRlJPTlRFTkQ6CiAJCQkvKiBEdW1wIHRoZSBhY2N1bXVs YXRlZCByb3cgYXMgb25lIENvcHlEYXRhIG1lc3NhZ2UgKi8KIAkJCSh2b2lkKSBwcV9wdXRtZXNz YWdlKFBxTXNnX0NvcHlEYXRhLCBmZV9tc2didWYtPmRhdGEsIGZlX21zZ2J1Zi0+bGVuKTsKIAkJ CWJyZWFrOwotCQljYXNlIENPUFlfQ0FMTEJBQ0s6CisJCWNhc2UgQ09QWV9ERVNUX0NBTExCQUNL OgogCQkJY3N0YXRlLT5kYXRhX2Rlc3RfY2IoZmVfbXNnYnVmLT5kYXRhLCBmZV9tc2didWYtPmxl bik7CiAJCQlicmVhazsKIAl9CkBAIC04NzcsMTIgKzgxOSwxMiBAQCBCZWdpbkNvcHlUbyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJLyogU2VlIE11bHRpYnl0ZSBlbmNvZGluZyBjb21tZW50IGFib3Zl ICovCiAJY3N0YXRlLT5lbmNvZGluZ19lbWJlZHNfYXNjaWkgPSBQR19FTkNPRElOR19JU19DTElF TlRfT05MWShjc3RhdGUtPmZpbGVfZW5jb2RpbmcpOwogCi0JY3N0YXRlLT5jb3B5X2Rlc3QgPSBD T1BZX0ZJTEU7CS8qIGRlZmF1bHQgKi8KKwljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfREVTVF9G SUxFOyAvKiBkZWZhdWx0ICovCiAKIAlpZiAoZGF0YV9kZXN0X2NiKQogCXsKIAkJcHJvZ3Jlc3Nf dmFsc1sxXSA9IFBST0dSRVNTX0NPUFlfVFlQRV9DQUxMQkFDSzsKLQkJY3N0YXRlLT5jb3B5X2Rl c3QgPSBDT1BZX0NBTExCQUNLOworCQljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfREVTVF9DQUxM QkFDSzsKIAkJY3N0YXRlLT5kYXRhX2Rlc3RfY2IgPSBkYXRhX2Rlc3RfY2I7CiAJfQogCWVsc2Ug aWYgKHBpcGUpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5kZXggMzRiZWE4ODBjYS4uYjNmNDY4MmY5NSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHkuaApAQCAtMjAsNjkgKzIwLDEwIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl X25vZGUuaCIKICNpbmNsdWRlICJ0Y29wL2Rlc3QuaCIKIAotLyoKLSAqIFJlcHJlc2VudHMgd2hl dGhlciBhIGhlYWRlciBsaW5lIHNob3VsZCBiZSBwcmVzZW50LCBhbmQgd2hldGhlciBpdCBtdXN0 Ci0gKiBtYXRjaCB0aGUgYWN0dWFsIG5hbWVzICh3aGljaCBpbXBsaWVzICJ0cnVlIikuCi0gKi8K LXR5cGVkZWYgZW51bSBDb3B5SGVhZGVyQ2hvaWNlCi17Ci0JQ09QWV9IRUFERVJfRkFMU0UgPSAw LAotCUNPUFlfSEVBREVSX1RSVUUsCi0JQ09QWV9IRUFERVJfTUFUQ0gsCi19IENvcHlIZWFkZXJD aG9pY2U7Ci0KLS8qCi0gKiBSZXByZXNlbnRzIHdoZXJlIHRvIHNhdmUgaW5wdXQgcHJvY2Vzc2lu ZyBlcnJvcnMuICBNb3JlIHZhbHVlcyB0byBiZSBhZGRlZAotICogaW4gdGhlIGZ1dHVyZS4KLSAq LwotdHlwZWRlZiBlbnVtIENvcHlPbkVycm9yQ2hvaWNlCi17Ci0JQ09QWV9PTl9FUlJPUl9TVE9Q ID0gMCwJCS8qIGltbWVkaWF0ZWx5IHRocm93IGVycm9ycywgZGVmYXVsdCAqLwotCUNPUFlfT05f RVJST1JfSUdOT1JFLAkJLyogaWdub3JlIGVycm9ycyAqLwotfSBDb3B5T25FcnJvckNob2ljZTsK LQotLyoKLSAqIEEgc3RydWN0IHRvIGhvbGQgQ09QWSBvcHRpb25zLCBpbiBhIHBhcnNlZCBmb3Jt LiBBbGwgb2YgdGhlc2UgYXJlIHJlbGF0ZWQKLSAqIHRvIGZvcm1hdHRpbmcsIGV4Y2VwdCBmb3Ig J2ZyZWV6ZScsIHdoaWNoIGRvZXNuJ3QgcmVhbGx5IGJlbG9uZyBoZXJlLCBidXQKLSAqIGl0J3Mg ZXhwZWRpZW50IHRvIHBhcnNlIGl0IGFsb25nIHdpdGggYWxsIHRoZSBvdGhlciBvcHRpb25zLgot ICovCi10eXBlZGVmIHN0cnVjdCBDb3B5Rm9ybWF0T3B0aW9ucwotewotCS8qIHBhcmFtZXRlcnMg ZnJvbSB0aGUgQ09QWSBjb21tYW5kICovCi0JaW50CQkJZmlsZV9lbmNvZGluZzsJLyogZmlsZSBv ciByZW1vdGUgc2lkZSdzIGNoYXJhY3RlciBlbmNvZGluZywKLQkJCQkJCQkJICogLTEgaWYgbm90 IHNwZWNpZmllZCAqLwotCWJvb2wJCWJpbmFyeTsJCQkvKiBiaW5hcnkgZm9ybWF0PyAqLwotCWJv b2wJCWZyZWV6ZTsJCQkvKiBmcmVlemUgcm93cyBvbiBsb2FkaW5nPyAqLwotCWJvb2wJCWNzdl9t b2RlOwkJLyogQ29tbWEgU2VwYXJhdGVkIFZhbHVlIGZvcm1hdD8gKi8KLQlDb3B5SGVhZGVyQ2hv aWNlIGhlYWRlcl9saW5lOwkvKiBoZWFkZXIgbGluZT8gKi8KLQljaGFyCSAgICpudWxsX3ByaW50 OwkJLyogTlVMTCBtYXJrZXIgc3RyaW5nIChzZXJ2ZXIgZW5jb2RpbmchKSAqLwotCWludAkJCW51 bGxfcHJpbnRfbGVuOyAvKiBsZW5ndGggb2Ygc2FtZSAqLwotCWNoYXIJICAgKm51bGxfcHJpbnRf Y2xpZW50OwkvKiBzYW1lIGNvbnZlcnRlZCB0byBmaWxlIGVuY29kaW5nICovCi0JY2hhcgkgICAq ZGVmYXVsdF9wcmludDsJLyogREVGQVVMVCBtYXJrZXIgc3RyaW5nICovCi0JaW50CQkJZGVmYXVs dF9wcmludF9sZW47CS8qIGxlbmd0aCBvZiBzYW1lICovCi0JY2hhcgkgICAqZGVsaW07CQkJLyog Y29sdW1uIGRlbGltaXRlciAobXVzdCBiZSAxIGJ5dGUpICovCi0JY2hhcgkgICAqcXVvdGU7CQkJ LyogQ1NWIHF1b3RlIGNoYXIgKG11c3QgYmUgMSBieXRlKSAqLwotCWNoYXIJICAgKmVzY2FwZTsJ CQkvKiBDU1YgZXNjYXBlIGNoYXIgKG11c3QgYmUgMSBieXRlKSAqLwotCUxpc3QJICAgKmZvcmNl X3F1b3RlOwkvKiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAqLwotCWJvb2wJCWZvcmNlX3F1b3RlX2Fs bDsJLyogRk9SQ0VfUVVPVEUgKj8gKi8KLQlib29sCSAgICpmb3JjZV9xdW90ZV9mbGFnczsJLyog cGVyLWNvbHVtbiBDU1YgRlEgZmxhZ3MgKi8KLQlMaXN0CSAgICpmb3JjZV9ub3RudWxsOwkvKiBs aXN0IG9mIGNvbHVtbiBuYW1lcyAqLwotCWJvb2wJCWZvcmNlX25vdG51bGxfYWxsOwkvKiBGT1JD RV9OT1RfTlVMTCAqPyAqLwotCWJvb2wJICAgKmZvcmNlX25vdG51bGxfZmxhZ3M7CS8qIHBlci1j b2x1bW4gQ1NWIEZOTiBmbGFncyAqLwotCUxpc3QJICAgKmZvcmNlX251bGw7CQkvKiBsaXN0IG9m IGNvbHVtbiBuYW1lcyAqLwotCWJvb2wJCWZvcmNlX251bGxfYWxsOyAvKiBGT1JDRV9OVUxMICo/ ICovCi0JYm9vbAkgICAqZm9yY2VfbnVsbF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YgRk4gZmxh Z3MgKi8KLQlib29sCQljb252ZXJ0X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUgYmluYXJ5 IGNvbnZlcnNpb24/ICovCi0JQ29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdoYXQgdG8g ZG8gd2hlbiBlcnJvciBoYXBwZW5lZCAqLwotCUxpc3QJICAgKmNvbnZlcnRfc2VsZWN0OyAvKiBs aXN0IG9mIGNvbHVtbiBuYW1lcyAoY2FuIGJlIE5JTCkgKi8KLQlDb3B5VG9Sb3V0aW5lICp0b19y b3V0aW5lOwkvKiBjYWxsYmFjayByb3V0aW5lcyBmb3IgQ09QWSBUTyAqLwotfSBDb3B5Rm9ybWF0 T3B0aW9uczsKLQogLyogVGhpcyBpcyBwcml2YXRlIGluIGNvbW1hbmRzL2NvcHlmcm9tLmMgKi8K IHR5cGVkZWYgc3RydWN0IENvcHlGcm9tU3RhdGVEYXRhICpDb3B5RnJvbVN0YXRlOwogCiB0eXBl ZGVmIGludCAoKmNvcHlfZGF0YV9zb3VyY2VfY2IpICh2b2lkICpvdXRidWYsIGludCBtaW5yZWFk LCBpbnQgbWF4cmVhZCk7Ci10eXBlZGVmIHZvaWQgKCpjb3B5X2RhdGFfZGVzdF9jYikgKHZvaWQg KmRhdGEsIGludCBsZW4pOwogCiBleHRlcm4gdm9pZCBEb0NvcHkoUGFyc2VTdGF0ZSAqcHN0YXRl LCBjb25zdCBDb3B5U3RtdCAqc3RtdCwKIAkJCQkgICBpbnQgc3RtdF9sb2NhdGlvbiwgaW50IHN0 bXRfbGVuLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oIGIvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oCmluZGV4IDljMjVlMWM0MTUuLmE4NjlkNzhkNzIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKQEAgLTE0LDEwICsxNCwxMCBAQAogI2lmbmRlZiBDT1BZ QVBJX0gKICNkZWZpbmUgQ09QWUFQSV9ICiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vu b2Rlcy5oIgogCi0vKiBUaGlzIGlzIHByaXZhdGUgaW4gY29tbWFuZHMvY29weXRvLmMgKi8KIHR5 cGVkZWYgc3RydWN0IENvcHlUb1N0YXRlRGF0YSAqQ29weVRvU3RhdGU7CiAKIHR5cGVkZWYgYm9v bCAoKkNvcHlUb1Byb2Nlc3NPcHRpb25fZnVuY3Rpb24pIChDb3B5VG9TdGF0ZSBjc3RhdGUsIERl ZkVsZW0gKmRlZmVsKTsKQEAgLTU4LDQgKzU4LDEyMiBAQCBleHRlcm4gQ29weVRvUm91dGluZSBD b3B5VG9Sb3V0aW5lVGV4dDsKIGV4dGVybiBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVDU1Y7 CiBleHRlcm4gQ29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5OwogCisvKgorICogUmVw cmVzZW50cyB3aGV0aGVyIGEgaGVhZGVyIGxpbmUgc2hvdWxkIGJlIHByZXNlbnQsIGFuZCB3aGV0 aGVyIGl0IG11c3QKKyAqIG1hdGNoIHRoZSBhY3R1YWwgbmFtZXMgKHdoaWNoIGltcGxpZXMgInRy dWUiKS4KKyAqLwordHlwZWRlZiBlbnVtIENvcHlIZWFkZXJDaG9pY2UKK3sKKwlDT1BZX0hFQURF Ul9GQUxTRSA9IDAsCisJQ09QWV9IRUFERVJfVFJVRSwKKwlDT1BZX0hFQURFUl9NQVRDSCwKK30g Q29weUhlYWRlckNob2ljZTsKKworLyoKKyAqIFJlcHJlc2VudHMgd2hlcmUgdG8gc2F2ZSBpbnB1 dCBwcm9jZXNzaW5nIGVycm9ycy4gIE1vcmUgdmFsdWVzIHRvIGJlIGFkZGVkCisgKiBpbiB0aGUg ZnV0dXJlLgorICovCit0eXBlZGVmIGVudW0gQ29weU9uRXJyb3JDaG9pY2UKK3sKKwlDT1BZX09O X0VSUk9SX1NUT1AgPSAwLAkJLyogaW1tZWRpYXRlbHkgdGhyb3cgZXJyb3JzLCBkZWZhdWx0ICov CisJQ09QWV9PTl9FUlJPUl9JR05PUkUsCQkvKiBpZ25vcmUgZXJyb3JzICovCit9IENvcHlPbkVy cm9yQ2hvaWNlOworCisvKgorICogQSBzdHJ1Y3QgdG8gaG9sZCBDT1BZIG9wdGlvbnMsIGluIGEg cGFyc2VkIGZvcm0uIEFsbCBvZiB0aGVzZSBhcmUgcmVsYXRlZAorICogdG8gZm9ybWF0dGluZywg ZXhjZXB0IGZvciAnZnJlZXplJywgd2hpY2ggZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUsIGJ1 dAorICogaXQncyBleHBlZGllbnQgdG8gcGFyc2UgaXQgYWxvbmcgd2l0aCBhbGwgdGhlIG90aGVy IG9wdGlvbnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IENvcHlGb3JtYXRPcHRpb25zCit7CisJLyog cGFyYW1ldGVycyBmcm9tIHRoZSBDT1BZIGNvbW1hbmQgKi8KKwlpbnQJCQlmaWxlX2VuY29kaW5n OwkvKiBmaWxlIG9yIHJlbW90ZSBzaWRlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLAorCQkJCQkJCQkg KiAtMSBpZiBub3Qgc3BlY2lmaWVkICovCisJYm9vbAkJYmluYXJ5OwkJCS8qIGJpbmFyeSBmb3Jt YXQ/ICovCisJYm9vbAkJZnJlZXplOwkJCS8qIGZyZWV6ZSByb3dzIG9uIGxvYWRpbmc/ICovCisJ Ym9vbAkJY3N2X21vZGU7CQkvKiBDb21tYSBTZXBhcmF0ZWQgVmFsdWUgZm9ybWF0PyAqLworCUNv cHlIZWFkZXJDaG9pY2UgaGVhZGVyX2xpbmU7CS8qIGhlYWRlciBsaW5lPyAqLworCWNoYXIJICAg Km51bGxfcHJpbnQ7CQkvKiBOVUxMIG1hcmtlciBzdHJpbmcgKHNlcnZlciBlbmNvZGluZyEpICov CisJaW50CQkJbnVsbF9wcmludF9sZW47IC8qIGxlbmd0aCBvZiBzYW1lICovCisJY2hhcgkgICAq bnVsbF9wcmludF9jbGllbnQ7CS8qIHNhbWUgY29udmVydGVkIHRvIGZpbGUgZW5jb2RpbmcgKi8K KwljaGFyCSAgICpkZWZhdWx0X3ByaW50OwkvKiBERUZBVUxUIG1hcmtlciBzdHJpbmcgKi8KKwlp bnQJCQlkZWZhdWx0X3ByaW50X2xlbjsJLyogbGVuZ3RoIG9mIHNhbWUgKi8KKwljaGFyCSAgICpk ZWxpbTsJCQkvKiBjb2x1bW4gZGVsaW1pdGVyIChtdXN0IGJlIDEgYnl0ZSkgKi8KKwljaGFyCSAg ICpxdW90ZTsJCQkvKiBDU1YgcXVvdGUgY2hhciAobXVzdCBiZSAxIGJ5dGUpICovCisJY2hhcgkg ICAqZXNjYXBlOwkJCS8qIENTViBlc2NhcGUgY2hhciAobXVzdCBiZSAxIGJ5dGUpICovCisJTGlz dAkgICAqZm9yY2VfcXVvdGU7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCisJYm9vbAkJZm9y Y2VfcXVvdGVfYWxsOwkvKiBGT1JDRV9RVU9URSAqPyAqLworCWJvb2wJICAgKmZvcmNlX3F1b3Rl X2ZsYWdzOwkvKiBwZXItY29sdW1uIENTViBGUSBmbGFncyAqLworCUxpc3QJICAgKmZvcmNlX25v dG51bGw7CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCisJYm9vbAkJZm9yY2Vfbm90bnVsbF9h bGw7CS8qIEZPUkNFX05PVF9OVUxMICo/ICovCisJYm9vbAkgICAqZm9yY2Vfbm90bnVsbF9mbGFn czsJLyogcGVyLWNvbHVtbiBDU1YgRk5OIGZsYWdzICovCisJTGlzdAkgICAqZm9yY2VfbnVsbDsJ CS8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzICovCisJYm9vbAkJZm9yY2VfbnVsbF9hbGw7IC8qIEZP UkNFX05VTEwgKj8gKi8KKwlib29sCSAgICpmb3JjZV9udWxsX2ZsYWdzOwkvKiBwZXItY29sdW1u IENTViBGTiBmbGFncyAqLworCWJvb2wJCWNvbnZlcnRfc2VsZWN0aXZlbHk7CS8qIGRvIHNlbGVj dGl2ZSBiaW5hcnkgY29udmVyc2lvbj8gKi8KKwlDb3B5T25FcnJvckNob2ljZSBvbl9lcnJvcjsg Lyogd2hhdCB0byBkbyB3aGVuIGVycm9yIGhhcHBlbmVkICovCisJTGlzdAkgICAqY29udmVydF9z ZWxlY3Q7IC8qIGxpc3Qgb2YgY29sdW1uIG5hbWVzIChjYW4gYmUgTklMKSAqLworCUNvcHlUb1Jv dXRpbmUgKnRvX3JvdXRpbmU7CS8qIGNhbGxiYWNrIHJvdXRpbmVzIGZvciBDT1BZIFRPICovCit9 IENvcHlGb3JtYXRPcHRpb25zOworCisvKgorICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IGRl c3QgY2FzZXMgd2UgbmVlZCB0byB3b3JyeSBhYm91dCBhdAorICogdGhlIGJvdHRvbSBsZXZlbAor ICovCit0eXBlZGVmIGVudW0gQ29weURlc3QKK3sKKwlDT1BZX0RFU1RfRklMRSwJCQkJLyogdG8g ZmlsZSAob3IgYSBwaXBlZCBwcm9ncmFtKSAqLworCUNPUFlfREVTVF9GUk9OVEVORCwJCQkvKiB0 byBmcm9udGVuZCAqLworCUNPUFlfREVTVF9DQUxMQkFDSywJCQkvKiB0byBjYWxsYmFjayBmdW5j dGlvbiAqLworfSBDb3B5RGVzdDsKKwordHlwZWRlZiB2b2lkICgqY29weV9kYXRhX2Rlc3RfY2Ip ICh2b2lkICpkYXRhLCBpbnQgbGVuKTsKKworLyoKKyAqIFRoaXMgc3RydWN0IGNvbnRhaW5zIGFs bCB0aGUgc3RhdGUgdmFyaWFibGVzIHVzZWQgdGhyb3VnaG91dCBhIENPUFkgVE8KKyAqIG9wZXJh dGlvbi4KKyAqCisgKiBNdWx0aS1ieXRlIGVuY29kaW5nczogYWxsIHN1cHBvcnRlZCBjbGllbnQt c2lkZSBlbmNvZGluZ3MgZW5jb2RlIG11bHRpLWJ5dGUKKyAqIGNoYXJhY3RlcnMgYnkgaGF2aW5n IHRoZSBmaXJzdCBieXRlJ3MgaGlnaCBiaXQgc2V0LiBTdWJzZXF1ZW50IGJ5dGVzIG9mIHRoZQor ICogY2hhcmFjdGVyIGNhbiBoYXZlIHRoZSBoaWdoIGJpdCBub3Qgc2V0LiBXaGVuIHNjYW5uaW5n IGRhdGEgaW4gc3VjaCBhbgorICogZW5jb2RpbmcgdG8gbG9vayBmb3IgYSBtYXRjaCB0byBhIHNp bmdsZS1ieXRlIChpZSBBU0NJSSkgY2hhcmFjdGVyLCB3ZSBtdXN0CisgKiB1c2UgdGhlIGZ1bGwg cGdfZW5jb2RpbmdfbWJsZW4oKSBtYWNoaW5lcnkgdG8gc2tpcCBvdmVyIG11bHRpYnl0ZQorICog Y2hhcmFjdGVycywgZWxzZSB3ZSBtaWdodCBmaW5kIGEgZmFsc2UgbWF0Y2ggdG8gYSB0cmFpbGlu ZyBieXRlLiBJbgorICogc3VwcG9ydGVkIHNlcnZlciBlbmNvZGluZ3MsIHRoZXJlIGlzIG5vIHBv c3NpYmlsaXR5IG9mIGEgZmFsc2UgbWF0Y2gsIGFuZAorICogaXQncyBmYXN0ZXIgdG8gbWFrZSB1 c2VsZXNzIGNvbXBhcmlzb25zIHRvIHRyYWlsaW5nIGJ5dGVzIHRoYW4gaXQgaXMgdG8KKyAqIGlu dm9rZSBwZ19lbmNvZGluZ19tYmxlbigpIHRvIHNraXAgb3ZlciB0aGVtLiBlbmNvZGluZ19lbWJl ZHNfYXNjaWkgaXMgdHJ1ZQorICogd2hlbiB3ZSBoYXZlIHRvIGRvIGl0IHRoZSBoYXJkIHdheS4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCit7CisJLyogbG93LWxldmVsIHN0 YXRlIGRhdGEgKi8KKwlDb3B5RGVzdAljb3B5X2Rlc3Q7CQkvKiB0eXBlIG9mIGNvcHkgc291cmNl L2Rlc3RpbmF0aW9uICovCisJRklMRQkgICAqY29weV9maWxlOwkJLyogdXNlZCBpZiBjb3B5X2Rl c3QgPT0gQ09QWV9GSUxFICovCisJU3RyaW5nSW5mbwlmZV9tc2didWY7CQkvKiB1c2VkIGZvciBh bGwgZGVzdHMgZHVyaW5nIENPUFkgVE8gKi8KKworCWludAkJCWZpbGVfZW5jb2Rpbmc7CS8qIGZp bGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcgKi8KKwlib29sCQluZWVkX3Ry YW5zY29kaW5nOwkvKiBmaWxlIGVuY29kaW5nIGRpZmYgZnJvbSBzZXJ2ZXI/ICovCisJYm9vbAkJ ZW5jb2RpbmdfZW1iZWRzX2FzY2lpOwkvKiBBU0NJSSBjYW4gYmUgbm9uLWZpcnN0IGJ5dGU/ICov CisKKwkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLworCVJlbGF0aW9uCXJl bDsJCQkvKiByZWxhdGlvbiB0byBjb3B5IHRvICovCisJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwkJ LyogZXhlY3V0YWJsZSBxdWVyeSB0byBjb3B5IGZyb20gKi8KKwlMaXN0CSAgICphdHRudW1saXN0 OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51bXMgdG8gY29weSAqLworCWNoYXIJICAgKmZpbGVu YW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNURE9VVCAqLworCWJvb2wJCWlzX3Byb2dy YW07CQkvKiBpcyAnZmlsZW5hbWUnIGEgcHJvZ3JhbSB0byBwb3Blbj8gKi8KKwljb3B5X2RhdGFf ZGVzdF9jYiBkYXRhX2Rlc3RfY2I7IC8qIGZ1bmN0aW9uIGZvciB3cml0aW5nIGRhdGEgKi8KKwor CUNvcHlGb3JtYXRPcHRpb25zIG9wdHM7CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIFdIRVJF IGNvbmRpdGlvbiAob3IgTlVMTCkgKi8KKworCS8qCisJICogV29ya2luZyBzdGF0ZQorCSAqLwor CU1lbW9yeUNvbnRleHQgY29weWNvbnRleHQ7CS8qIHBlci1jb3B5IGV4ZWN1dGlvbiBjb250ZXh0 ICovCisKKwlGbWdySW5mbyAgICpvdXRfZnVuY3Rpb25zOwkvKiBsb29rdXAgaW5mbyBmb3Igb3V0 cHV0IGZ1bmN0aW9ucyAqLworCU1lbW9yeUNvbnRleHQgcm93Y29udGV4dDsJLyogcGVyLXJvdyBl dmFsdWF0aW9uIGNvbnRleHQgKi8KKwl1aW50NjQJCWJ5dGVzX3Byb2Nlc3NlZDsJLyogbnVtYmVy IG9mIGJ5dGVzIHByb2Nlc3NlZCBzbyBmYXIgKi8KK30gQ29weVRvU3RhdGVEYXRhOworCiAjZW5k aWYJCQkJCQkJLyogQ09QWUFQSV9IICovCi0tIAoyLjQxLjAKCg== --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0001-Extract-COPY-TO-format-implementations.patch" Content-Disposition: attachment; filename="v8-0001-Extract-COPY-TO-format-implementations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6vi0 RnJvbSA2ZTY4YmE2MzgwZGM4MjVhMjQyZTdmMGQwYTUzNDQyYmJhM2E0YTYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogTW9uLCA0IERlYyAyMDIzIDEyOjMyOjU0ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2OCAwMS8x MF0gRXh0cmFjdCBDT1BZIFRPIGZvcm1hdCBpbXBsZW1lbnRhdGlvbnMKClRoaXMgaXMgYSBwYXJ0 IG9mIG1ha2luZyBDT1BZIGZvcm1hdCBleHRlbmRhYmxlLiBTZWUgYWxzbyB0aGVzZSBwYXN0CmRp c2N1c3Npb25zOgoqIE5ldyBDb3B5IEZvcm1hdHMgLSBhdnJvL29yYy9wYXJxdWV0OgogIGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8yMDE4MDIxMDE1MTMwNC5mb25q enRzeW5ld2xkZmJhJTQwZ21haWwuY29tCiogTWFrZSBDT1BZIGV4dGVuZGFibGUgaW4gb3JkZXIg dG8gc3VwcG9ydCBQYXJxdWV0IGFuZCBvdGhlciBmb3JtYXRzOgogIGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQUo3YzZUTTZCejFjM0YwNEN5NiUyQlN6dVdmS21y MGtVOGNfM1N0bnZoXzhCUjBENms4USU0MG1haWwuZ21haWwuY29tCgpUaGlzIGRvZXNuJ3QgY2hh bmdlIHRoZSBjdXJyZW50IGJlaGF2aW9yLiBUaGlzIGp1c3QgaW50cm9kdWNlcwpDb3B5VG9Sb3V0 aW5lLCB3aGljaCBqdXN0IGhhcyBmdW5jdGlvbiBwb2ludGVycyBvZiBmb3JtYXQKaW1wbGVtZW50 YXRpb24gbGlrZSBUdXBsZVRhYmxlU2xvdE9wcywgYW5kIHVzZSBpdCBmb3IgZXhpc3RpbmcgInRl eHQiLAoiY3N2IiBhbmQgImJpbmFyeSIgZm9ybWF0IGltcGxlbWVudGF0aW9ucy4KCk5vdGUgdGhh dCBDb3B5VG9Sb3V0aW5lIGNhbid0IGJlIHVzZWQgZnJvbSBleHRlbnNpb25zIHlldCBiZWNhdXNl CkNvcHlTZW5kKigpIGFyZW4ndCBleHBvcnRlZCB5ZXQuIEV4dGVuc2lvbnMgY2FuJ3Qgc2VuZCBm b3JtYXR0ZWQgZGF0YQp0byBhIGRlc3RpbmF0aW9uIHdpdGhvdXQgQ29weVNlbmQqKCkuIFRoZXkg d2lsbCBiZSBleHBvcnRlZCBieQpzdWJzZXF1ZW50IHBhdGNoZXMuCgpIZXJlIGlzIGEgYmVuY2ht YXJrIHJlc3VsdCB3aXRoL3dpdGhvdXQgdGhpcyBjaGFuZ2UgYmVjYXVzZSB0aGVyZSB3YXMKYSBk aXNjdXNzaW9uIHRoYXQgd2Ugc2hvdWxkIGNhcmUgYWJvdXQgcGVyZm9ybWFuY2UgcmVncmVzc2lv bjoKCmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMzc0MTc0OS4xNjU1OTUy NzE5JTQwc3NzLnBnaC5wYS51cwoKPiBJIHRoaW5rIHRoYXQgc3RlcCAxIG91Z2h0IHRvIGJlIHRv IGNvbnZlcnQgdGhlIGV4aXN0aW5nIGZvcm1hdHMgaW50bwo+IHBsdWctaW5zLCBhbmQgZGVtb25z dHJhdGUgdGhhdCB0aGVyZSdzIG5vIHNpZ25pZmljYW50IGxvc3Mgb2YKPiBwZXJmb3JtYW5jZS4K CllvdSBjYW4gc2VlIHRoYXQgdGhlcmUgaXMgbm8gc2lnbmlmaWNhbnQgbG9zcyBvZiBwZXJmb3Jt YW5jZToKCkRhdGE6IFJhbmRvbSAzMiBiaXQgaW50ZWdlcnM6CgogICAgQ1JFQVRFIFRBQkxFIGRh dGEgKGludDMyIGludGVnZXIpOwogICAgSU5TRVJUIElOVE8gZGF0YQogICAgICBTRUxFQ1QgcmFu ZG9tKCkgKiAxMDAwMAogICAgICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsICR7bl9yZWNvcmRz fSk7CgpUaGUgbnVtYmVyIG9mIHJlY29yZHM6IDEwMEssIDFNIGFuZCAxME0KCjEwMEsgd2l0aG91 dCB0aGlzIGNoYW5nZToKCiAgICBmb3JtYXQsZWxhcHNlZCB0aW1lIChtcykKICAgIHRleHQsMTEu MDAyCiAgICBjc3YsMTEuNjk2CiAgICBiaW5hcnksMTEuMzUyCgoxMDBLIHdpdGggdGhpcyBjaGFu Z2U6CgogICAgZm9ybWF0LGVsYXBzZWQgdGltZSAobXMpCiAgICB0ZXh0LDEwMDAwMCwxMS41NjIK ICAgIGNzdiwxMDAwMDAsMTEuODg5CiAgICBiaW5hcnksMTAwMDAwLDEwLjgyNQoKMU0gd2l0aG91 dCB0aGlzIGNoYW5nZToKCiAgICBmb3JtYXQsZWxhcHNlZCB0aW1lIChtcykKICAgIHRleHQsMTA4 LjM1OQogICAgY3N2LDExNC4yMzMKICAgIGJpbmFyeSwxMTEuMjUxCgoxTSB3aXRoIHRoaXMgY2hh bmdlOgoKICAgIGZvcm1hdCxlbGFwc2VkIHRpbWUgKG1zKQogICAgdGV4dCwxMTEuMjY5CiAgICBj c3YsMTE2LjI3NwogICAgYmluYXJ5LDEwNC43NjUKCjEwTSB3aXRob3V0IHRoaXMgY2hhbmdlOgoK ICAgIGZvcm1hdCxlbGFwc2VkIHRpbWUgKG1zKQogICAgdGV4dCwxMDkwLjc2MwogICAgY3N2LDEx MzYuMTAzCiAgICBiaW5hcnksMTEzNy4xNDEKCjEwTSB3aXRoIHRoaXMgY2hhbmdlOgoKICAgIGZv cm1hdCxlbGFwc2VkIHRpbWUgKG1zKQogICAgdGV4dCwxMDgyLjY1NAogICAgY3N2LDExOTYuOTkx CiAgICBiaW5hcnksMTA2OS42OTcKLS0tCiBjb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgICAgIHwgIDQzICsrKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHl0by5jICAgfCA0MjggKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCAgICAgfCAgIDcgKy0KIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHlhcGkuaCAgfCAgNTkgKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMzc2IGluc2VydGlv bnMoKyksIDE2NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5YXBpLmgKCmRpZmYgLS1naXQgYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3 LmMgYi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKaW5kZXggMjQ5ZDgyZDNhMC4uOWU0ZTgx OTg1OCAxMDA2NDQKLS0tIGEvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCisrKyBiL2NvbnRy aWIvZmlsZV9mZHcvZmlsZV9mZHcuYwpAQCAtMzI5LDcgKzMyOSw3IEBAIGZpbGVfZmR3X3ZhbGlk YXRvcihQR19GVU5DVElPTl9BUkdTKQogCS8qCiAJICogTm93IGFwcGx5IHRoZSBjb3JlIENPUFkg Y29kZSdzIHZhbGlkYXRpb24gbG9naWMgZm9yIG1vcmUgY2hlY2tzLgogCSAqLwotCVByb2Nlc3ND b3B5T3B0aW9ucyhOVUxMLCBOVUxMLCB0cnVlLCBvdGhlcl9vcHRpb25zKTsKKwlQcm9jZXNzQ29w eU9wdGlvbnMoTlVMTCwgTlVMTCwgdHJ1ZSwgTlVMTCwgb3RoZXJfb3B0aW9ucyk7CiAKIAkvKgog CSAqIEVpdGhlciBmaWxlbmFtZSBvciBwcm9ncmFtIG9wdGlvbiBpcyByZXF1aXJlZCBmb3IgZmls ZV9mZHcgZm9yZWlnbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCmluZGV4IGNjMDc4NmM2ZjQuLjVmMzY5N2E1Zjkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5LmMKQEAgLTQ0Miw2ICs0NDIsOSBAQCBkZWZHZXRDb3B5T25FcnJvckNo b2ljZShEZWZFbGVtICpkZWYsIFBhcnNlU3RhdGUgKnBzdGF0ZSwgYm9vbCBpc19mcm9tKQogICog YSBsaXN0IG9mIG9wdGlvbnMuICBJbiB0aGF0IHVzYWdlLCAnb3B0c19vdXQnIGNhbiBiZSBwYXNz ZWQgYXMgTlVMTCBhbmQKICAqIHRoZSBjb2xsZWN0ZWQgZGF0YSBpcyBqdXN0IGxlYWtlZCB1bnRp bCBDdXJyZW50TWVtb3J5Q29udGV4dCBpcyByZXNldC4KICAqCisgKiAnY3N0YXRlJyBpcyBDb3B5 VG9TdGF0ZSogZm9yICFpc19mcm9tLCBDb3B5RnJvbVN0YXRlKiBmb3IgaXNfZnJvbS4gJ2NzdGF0 ZScKKyAqIG1heSBiZSBOVUxMLiBGb3IgZXhhbXBsZSwgZmlsZV9mZHcgdXNlcyBOVUxMLgorICoK ICAqIE5vdGUgdGhhdCBhZGRpdGlvbmFsIGNoZWNraW5nLCBzdWNoIGFzIHdoZXRoZXIgY29sdW1u IG5hbWVzIGxpc3RlZCBpbiBGT1JDRQogICogUVVPVEUgYWN0dWFsbHkgZXhpc3QsIGhhcyB0byBi ZSBhcHBsaWVkIGxhdGVyLiAgVGhpcyBqdXN0IGNoZWNrcyBmb3IKICAqIHNlbGYtY29uc2lzdGVu Y3kgb2YgdGhlIG9wdGlvbnMgbGlzdC4KQEAgLTQ1MCw2ICs0NTMsNyBAQCB2b2lkCiBQcm9jZXNz Q29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCSAgIENvcHlGb3JtYXRPcHRpb25z ICpvcHRzX291dCwKIAkJCQkgICBib29sIGlzX2Zyb20sCisJCQkJICAgdm9pZCAqY3N0YXRlLAog CQkJCSAgIExpc3QgKm9wdGlvbnMpCiB7CiAJYm9vbAkJZm9ybWF0X3NwZWNpZmllZCA9IGZhbHNl OwpAQCAtNDY0LDcgKzQ2OCwxMyBAQCBQcm9jZXNzQ29weU9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCiAJb3B0c19vdXQtPmZpbGVfZW5jb2RpbmcgPSAtMTsKIAotCS8qIEV4dHJhY3Qgb3B0 aW9ucyBmcm9tIHRoZSBzdGF0ZW1lbnQgbm9kZSB0cmVlICovCisJLyogVGV4dCBpcyB0aGUgZGVm YXVsdCBmb3JtYXQuICovCisJb3B0c19vdXQtPnRvX3JvdXRpbmUgPSAmQ29weVRvUm91dGluZVRl eHQ7CisKKwkvKgorCSAqIEV4dHJhY3Qgb25seSB0aGUgImZvcm1hdCIgb3B0aW9uIHRvIGRldGVj dCB0YXJnZXQgcm91dGluZSBhcyB0aGUgZmlyc3QKKwkgKiBzdGVwCisJICovCiAJZm9yZWFjaChv cHRpb24sIG9wdGlvbnMpCiAJewogCQlEZWZFbGVtICAgICpkZWZlbCA9IGxmaXJzdF9ub2RlKERl ZkVsZW0sIG9wdGlvbik7CkBAIC00NzksMTUgKzQ4OSwyOSBAQCBQcm9jZXNzQ29weU9wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJaWYgKHN0cmNtcChmbXQsICJ0ZXh0IikgPT0gMCkKIAkJ CQkgLyogZGVmYXVsdCBmb3JtYXQgKi8gOwogCQkJZWxzZSBpZiAoc3RyY21wKGZtdCwgImNzdiIp ID09IDApCisJCQl7CiAJCQkJb3B0c19vdXQtPmNzdl9tb2RlID0gdHJ1ZTsKKwkJCQlvcHRzX291 dC0+dG9fcm91dGluZSA9ICZDb3B5VG9Sb3V0aW5lQ1NWOworCQkJfQogCQkJZWxzZSBpZiAoc3Ry Y21wKGZtdCwgImJpbmFyeSIpID09IDApCisJCQl7CiAJCQkJb3B0c19vdXQtPmJpbmFyeSA9IHRy dWU7CisJCQkJb3B0c19vdXQtPnRvX3JvdXRpbmUgPSAmQ29weVRvUm91dGluZUJpbmFyeTsKKwkJ CX0KIAkJCWVsc2UKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCQkgZXJybXNnKCJDT1BZIGZvcm1hdCBcIiVz XCIgbm90IHJlY29nbml6ZWQiLCBmbXQpLAogCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKIAkJfQorCX0KKwkvKiBFeHRyYWN0IG9wdGlvbnMgZXhj ZXB0ICJmb3JtYXQiIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8KKwlmb3JlYWNoKG9w dGlvbiwgb3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gbGZpcnN0X25vZGUoRGVm RWxlbSwgb3B0aW9uKTsKKworCQlpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9ybWF0Iikg PT0gMCkKKwkJCWNvbnRpbnVlOwogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJm cmVlemUiKSA9PSAwKQogCQl7CiAJCQlpZiAoZnJlZXplX3NwZWNpZmllZCkKQEAgLTYxNiwxMSAr NjQwLDE4IEBAIFByb2Nlc3NDb3B5T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQlvcHRz X291dC0+b25fZXJyb3IgPSBkZWZHZXRDb3B5T25FcnJvckNob2ljZShkZWZlbCwgcHN0YXRlLCBp c19mcm9tKTsKIAkJfQogCQllbHNlCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJl Y29nbml6ZWQiLAotCQkJCQkJCWRlZmVsLT5kZWZuYW1lKSwKLQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKKwkJeworCQkJYm9vbAkJcHJvY2Vzc2Vk ID0gZmFsc2U7CisKKwkJCWlmICghaXNfZnJvbSkKKwkJCQlwcm9jZXNzZWQgPSBvcHRzX291dC0+ dG9fcm91dGluZS0+Q29weVRvUHJvY2Vzc09wdGlvbihjc3RhdGUsIGRlZmVsKTsKKwkJCWlmICgh cHJvY2Vzc2VkKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJvcHRpb24gXCIlc1wiIG5vdCByZWNvZ25pemVk IiwKKwkJCQkJCQkJZGVmZWwtPmRlZm5hbWUpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihw c3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eWZyb20uYwppbmRleCAxZmU3MGI5MTMzLi5mYjNkNGQ5Mjk2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlm cm9tLmMKQEAgLTE0MTYsNyArMTQxNiw3IEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3N0YXRlLT5jb3B5Y29u dGV4dCk7CiAKIAkvKiBFeHRyYWN0IG9wdGlvbnMgZnJvbSB0aGUgc3RhdGVtZW50IG5vZGUgdHJl ZSAqLwotCVByb2Nlc3NDb3B5T3B0aW9ucyhwc3RhdGUsICZjc3RhdGUtPm9wdHMsIHRydWUgLyog aXNfZnJvbSAqLyAsIG9wdGlvbnMpOworCVByb2Nlc3NDb3B5T3B0aW9ucyhwc3RhdGUsICZjc3Rh dGUtPm9wdHMsIHRydWUgLyogaXNfZnJvbSAqLyAsIGNzdGF0ZSwgb3B0aW9ucyk7CiAKIAkvKiBQ cm9jZXNzIHRoZSB0YXJnZXQgcmVsYXRpb24gKi8KIAljc3RhdGUtPnJlbCA9IHJlbDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKaW5kZXggZDNkYzNmYzg1NC4uNjU0N2I3YzY1NCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKQEAgLTEzMSw2ICsxMzEsMjc1IEBAIHN0YXRpYyB2b2lkIENvcHlTZW5kRW5kT2ZSb3co Q29weVRvU3RhdGUgY3N0YXRlKTsKIHN0YXRpYyB2b2lkIENvcHlTZW5kSW50MzIoQ29weVRvU3Rh dGUgY3N0YXRlLCBpbnQzMiB2YWwpOwogc3RhdGljIHZvaWQgQ29weVNlbmRJbnQxNihDb3B5VG9T dGF0ZSBjc3RhdGUsIGludDE2IHZhbCk7CiAKKy8qCisgKiBDb3B5VG9Sb3V0aW5lIGltcGxlbWVu dGF0aW9ucy4KKyAqLworCisvKgorICogQ29weVRvUm91dGluZSBpbXBsZW1lbnRhdGlvbiBmb3Ig InRleHQiIGFuZCAiY3N2Ii4gQ29weVRvVGV4dCooKQorICogcmVmZXIgY3N0YXRlLT5vcHRzLmNz dl9tb2RlIGFuZCBjaGFuZ2UgdGhlaXIgYmVoYXZpb3IuIFdlIGNhbiBzcGxpdCB0aGlzCisgKiBp bXBsZW1lbnRhdGlvbiBhbmQgc3RvcCByZWZlcnJpbmcgY3N0YXRlLT5vcHRzLmNzdl9tb2RlIGxh dGVyLgorICovCisKKy8qIEFsbCAidGV4dCIgYW5kICJjc3YiIG9wdGlvbnMgYXJlIHBhcnNlZCBp biBQcm9jZXNzQ29weU9wdGlvbnMoKS4gV2UgbWF5CisgKiBtb3ZlIHRoZSBjb2RlIHRvIGhlcmUg bGF0ZXIuICovCitzdGF0aWMgYm9vbAorQ29weVRvVGV4dFByb2Nlc3NPcHRpb24oQ29weVRvU3Rh dGUgY3N0YXRlLCBEZWZFbGVtICpkZWZlbCkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyBpbnQxNgorQ29weVRvVGV4dEdldEZvcm1hdChDb3B5VG9TdGF0ZSBjc3RhdGUpCit7CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitDb3B5VG9UZXh0U2VuZEVuZE9mUm93KENvcHlUb1N0 YXRlIGNzdGF0ZSkKK3sKKwlzd2l0Y2ggKGNzdGF0ZS0+Y29weV9kZXN0KQorCXsKKwkJY2FzZSBD T1BZX0ZJTEU6CisJCQkvKiBEZWZhdWx0IGxpbmUgdGVybWluYXRpb24gZGVwZW5kcyBvbiBwbGF0 Zm9ybSAqLworI2lmbmRlZiBXSU4zMgorCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1xuJyk7Cisj ZWxzZQorCQkJQ29weVNlbmRTdHJpbmcoY3N0YXRlLCAiXHJcbiIpOworI2VuZGlmCisJCQlicmVh azsKKwkJY2FzZSBDT1BZX0ZST05URU5EOgorCQkJLyogVGhlIEZFL0JFIHByb3RvY29sIHVzZXMg XG4gYXMgbmV3bGluZSBmb3IgYWxsIHBsYXRmb3JtcyAqLworCQkJQ29weVNlbmRDaGFyKGNzdGF0 ZSwgJ1xuJyk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCX0KKwlDb3B5U2Vu ZEVuZE9mUm93KGNzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitDb3B5VG9UZXh0U3RhcnQoQ29w eVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykKK3sKKwlpbnQJCQludW1fcGh5c19h dHRyczsKKwlMaXN0Q2VsbCAgICpjdXI7CisKKwludW1fcGh5c19hdHRycyA9IHR1cERlc2MtPm5h dHRzOworCS8qIEdldCBpbmZvIGFib3V0IHRoZSBjb2x1bW5zIHdlIG5lZWQgdG8gcHJvY2Vzcy4g Ki8KKwljc3RhdGUtPm91dF9mdW5jdGlvbnMgPSAoRm1nckluZm8gKikgcGFsbG9jKG51bV9waHlz X2F0dHJzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CisJZm9yZWFjaChjdXIsIGNzdGF0ZS0+YXR0bnVt bGlzdCkKKwl7CisJCWludAkJCWF0dG51bSA9IGxmaXJzdF9pbnQoY3VyKTsKKwkJT2lkCQkJb3V0 X2Z1bmNfb2lkOworCQlib29sCQlpc3ZhcmxlbmE7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIg PSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEpOworCisJCWdldFR5cGVPdXRwdXRJ bmZvKGF0dHItPmF0dHR5cGlkLCAmb3V0X2Z1bmNfb2lkLCAmaXN2YXJsZW5hKTsKKwkJZm1ncl9p bmZvKG91dF9mdW5jX29pZCwgJmNzdGF0ZS0+b3V0X2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7CisJ fQorCisJLyoKKwkgKiBGb3Igbm9uLWJpbmFyeSBjb3B5LCB3ZSBuZWVkIHRvIGNvbnZlcnQgbnVs bF9wcmludCB0byBmaWxlIGVuY29kaW5nLAorCSAqIGJlY2F1c2UgaXQgd2lsbCBiZSBzZW50IGRp cmVjdGx5IHdpdGggQ29weVNlbmRTdHJpbmcuCisJICovCisJaWYgKGNzdGF0ZS0+bmVlZF90cmFu c2NvZGluZykKKwkJY3N0YXRlLT5vcHRzLm51bGxfcHJpbnRfY2xpZW50ID0gcGdfc2VydmVyX3Rv X2FueShjc3RhdGUtPm9wdHMubnVsbF9wcmludCwKKwkJCQkJCQkJCQkJCQkJICBjc3RhdGUtPm9w dHMubnVsbF9wcmludF9sZW4sCisJCQkJCQkJCQkJCQkJCSAgY3N0YXRlLT5maWxlX2VuY29kaW5n KTsKKworCS8qIGlmIGEgaGVhZGVyIGhhcyBiZWVuIHJlcXVlc3RlZCBzZW5kIHRoZSBsaW5lICov CisJaWYgKGNzdGF0ZS0+b3B0cy5oZWFkZXJfbGluZSkKKwl7CisJCWJvb2wJCWhkcl9kZWxpbSA9 IGZhbHNlOworCisJCWZvcmVhY2goY3VyLCBjc3RhdGUtPmF0dG51bWxpc3QpCisJCXsKKwkJCWlu dAkJCWF0dG51bSA9IGxmaXJzdF9pbnQoY3VyKTsKKwkJCWNoYXIJICAgKmNvbG5hbWU7CisKKwkJ CWlmIChoZHJfZGVsaW0pCisJCQkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgY3N0YXRlLT5vcHRzLmRl bGltWzBdKTsKKwkJCWhkcl9kZWxpbSA9IHRydWU7CisKKwkJCWNvbG5hbWUgPSBOYW1lU3RyKFR1 cGxlRGVzY0F0dHIodHVwRGVzYywgYXR0bnVtIC0gMSktPmF0dG5hbWUpOworCisJCQlpZiAoY3N0 YXRlLT5vcHRzLmNzdl9tb2RlKQorCQkJCUNvcHlBdHRyaWJ1dGVPdXRDU1YoY3N0YXRlLCBjb2xu YW1lLCBmYWxzZSwKKwkJCQkJCQkJCWxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCkgPT0g MSk7CisJCQllbHNlCisJCQkJQ29weUF0dHJpYnV0ZU91dFRleHQoY3N0YXRlLCBjb2xuYW1lKTsK KwkJfQorCisJCUNvcHlUb1RleHRTZW5kRW5kT2ZSb3coY3N0YXRlKTsKKwl9Cit9CisKK3N0YXRp YyB2b2lkCitDb3B5VG9UZXh0T25lUm93KENvcHlUb1N0YXRlIGNzdGF0ZSwgVHVwbGVUYWJsZVNs b3QgKnNsb3QpCit7CisJYm9vbAkJbmVlZF9kZWxpbSA9IGZhbHNlOworCUZtZ3JJbmZvICAgKm91 dF9mdW5jdGlvbnMgPSBjc3RhdGUtPm91dF9mdW5jdGlvbnM7CisJTGlzdENlbGwgICAqY3VyOwor CisJZm9yZWFjaChjdXIsIGNzdGF0ZS0+YXR0bnVtbGlzdCkKKwl7CisJCWludAkJCWF0dG51bSA9 IGxmaXJzdF9pbnQoY3VyKTsKKwkJRGF0dW0JCXZhbHVlID0gc2xvdC0+dHRzX3ZhbHVlc1thdHRu dW0gLSAxXTsKKwkJYm9vbAkJaXNudWxsID0gc2xvdC0+dHRzX2lzbnVsbFthdHRudW0gLSAxXTsK KworCQlpZiAobmVlZF9kZWxpbSkKKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsIGNzdGF0ZS0+b3B0 cy5kZWxpbVswXSk7CisJCW5lZWRfZGVsaW0gPSB0cnVlOworCisJCWlmIChpc251bGwpCisJCXsK KwkJCUNvcHlTZW5kU3RyaW5nKGNzdGF0ZSwgY3N0YXRlLT5vcHRzLm51bGxfcHJpbnRfY2xpZW50 KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNoYXIJICAgKnN0cmluZzsKKworCQkJc3RyaW5nID0g T3V0cHV0RnVuY3Rpb25DYWxsKCZvdXRfZnVuY3Rpb25zW2F0dG51bSAtIDFdLCB2YWx1ZSk7CisJ CQlpZiAoY3N0YXRlLT5vcHRzLmNzdl9tb2RlKQorCQkJCUNvcHlBdHRyaWJ1dGVPdXRDU1YoY3N0 YXRlLCBzdHJpbmcsCisJCQkJCQkJCQljc3RhdGUtPm9wdHMuZm9yY2VfcXVvdGVfZmxhZ3NbYXR0 bnVtIC0gMV0sCisJCQkJCQkJCQlsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpID09IDEp OworCQkJZWxzZQorCQkJCUNvcHlBdHRyaWJ1dGVPdXRUZXh0KGNzdGF0ZSwgc3RyaW5nKTsKKwkJ fQorCX0KKworCUNvcHlUb1RleHRTZW5kRW5kT2ZSb3coY3N0YXRlKTsKK30KKworc3RhdGljIHZv aWQKK0NvcHlUb1RleHRFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworfQorCisvKgorICogQ29w eVRvUm91dGluZSBpbXBsZW1lbnRhdGlvbiBmb3IgImJpbmFyeSIuCisgKi8KKworLyogQWxsICJi aW5hcnkiIG9wdGlvbnMgYXJlIHBhcnNlZCBpbiBQcm9jZXNzQ29weU9wdGlvbnMoKS4gV2UgbWF5 IG1vdmUgdGhlCisgKiBjb2RlIHRvIGhlcmUgbGF0ZXIuICovCitzdGF0aWMgYm9vbAorQ29weVRv QmluYXJ5UHJvY2Vzc09wdGlvbihDb3B5VG9TdGF0ZSBjc3RhdGUsIERlZkVsZW0gKmRlZmVsKQor eworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGludDE2CitDb3B5VG9CaW5hcnlHZXRGb3Jt YXQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZAor Q29weVRvQmluYXJ5U3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYykK K3sKKwlpbnQJCQludW1fcGh5c19hdHRyczsKKwlMaXN0Q2VsbCAgICpjdXI7CisKKwludW1fcGh5 c19hdHRycyA9IHR1cERlc2MtPm5hdHRzOworCS8qIEdldCBpbmZvIGFib3V0IHRoZSBjb2x1bW5z IHdlIG5lZWQgdG8gcHJvY2Vzcy4gKi8KKwljc3RhdGUtPm91dF9mdW5jdGlvbnMgPSAoRm1ncklu Zm8gKikgcGFsbG9jKG51bV9waHlzX2F0dHJzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CisJZm9yZWFj aChjdXIsIGNzdGF0ZS0+YXR0bnVtbGlzdCkKKwl7CisJCWludAkJCWF0dG51bSA9IGxmaXJzdF9p bnQoY3VyKTsKKwkJT2lkCQkJb3V0X2Z1bmNfb2lkOworCQlib29sCQlpc3ZhcmxlbmE7CisJCUZv cm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEp OworCisJCWdldFR5cGVCaW5hcnlPdXRwdXRJbmZvKGF0dHItPmF0dHR5cGlkLCAmb3V0X2Z1bmNf b2lkLCAmaXN2YXJsZW5hKTsKKwkJZm1ncl9pbmZvKG91dF9mdW5jX29pZCwgJmNzdGF0ZS0+b3V0 X2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7CisJfQorCisJeworCQkvKiBHZW5lcmF0ZSBoZWFkZXIg Zm9yIGEgYmluYXJ5IGNvcHkgKi8KKwkJaW50MzIJCXRtcDsKKworCQkvKiBTaWduYXR1cmUgKi8K KwkJQ29weVNlbmREYXRhKGNzdGF0ZSwgQmluYXJ5U2lnbmF0dXJlLCAxMSk7CisJCS8qIEZsYWdz IGZpZWxkICovCisJCXRtcCA9IDA7CisJCUNvcHlTZW5kSW50MzIoY3N0YXRlLCB0bXApOworCQkv KiBObyBoZWFkZXIgZXh0ZW5zaW9uICovCisJCXRtcCA9IDA7CisJCUNvcHlTZW5kSW50MzIoY3N0 YXRlLCB0bXApOworCX0KK30KKworc3RhdGljIHZvaWQKK0NvcHlUb0JpbmFyeU9uZVJvdyhDb3B5 VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQoreworCUZtZ3JJbmZvICAgKm91 dF9mdW5jdGlvbnMgPSBjc3RhdGUtPm91dF9mdW5jdGlvbnM7CisJTGlzdENlbGwgICAqY3VyOwor CisJLyogQmluYXJ5IHBlci10dXBsZSBoZWFkZXIgKi8KKwlDb3B5U2VuZEludDE2KGNzdGF0ZSwg bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KSk7CisKKwlmb3JlYWNoKGN1ciwgY3N0YXRl LT5hdHRudW1saXN0KQorCXsKKwkJaW50CQkJYXR0bnVtID0gbGZpcnN0X2ludChjdXIpOworCQlE YXR1bQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzW2F0dG51bSAtIDFdOworCQlib29sCQlpc251 bGwgPSBzbG90LT50dHNfaXNudWxsW2F0dG51bSAtIDFdOworCisJCWlmIChpc251bGwpCisJCXsK KwkJCUNvcHlTZW5kSW50MzIoY3N0YXRlLCAtMSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlieXRl YQkgICAqb3V0cHV0Ynl0ZXM7CisKKwkJCW91dHB1dGJ5dGVzID0gU2VuZEZ1bmN0aW9uQ2FsbCgm b3V0X2Z1bmN0aW9uc1thdHRudW0gLSAxXSwgdmFsdWUpOworCQkJQ29weVNlbmRJbnQzMihjc3Rh dGUsIFZBUlNJWkUob3V0cHV0Ynl0ZXMpIC0gVkFSSERSU1opOworCQkJQ29weVNlbmREYXRhKGNz dGF0ZSwgVkFSREFUQShvdXRwdXRieXRlcyksCisJCQkJCQkgVkFSU0laRShvdXRwdXRieXRlcykg LSBWQVJIRFJTWik7CisJCX0KKwl9CisKKwlDb3B5U2VuZEVuZE9mUm93KGNzdGF0ZSk7Cit9CisK K3N0YXRpYyB2b2lkCitDb3B5VG9CaW5hcnlFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQoreworCS8q IEdlbmVyYXRlIHRyYWlsZXIgZm9yIGEgYmluYXJ5IGNvcHkgKi8KKwlDb3B5U2VuZEludDE2KGNz dGF0ZSwgLTEpOworCS8qIE5lZWQgdG8gZmx1c2ggb3V0IHRoZSB0cmFpbGVyICovCisJQ29weVNl bmRFbmRPZlJvdyhjc3RhdGUpOworfQorCitDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVUZXh0 ID0geworCS5Db3B5VG9Qcm9jZXNzT3B0aW9uID0gQ29weVRvVGV4dFByb2Nlc3NPcHRpb24sCisJ LkNvcHlUb0dldEZvcm1hdCA9IENvcHlUb1RleHRHZXRGb3JtYXQsCisJLkNvcHlUb1N0YXJ0ID0g Q29weVRvVGV4dFN0YXJ0LAorCS5Db3B5VG9PbmVSb3cgPSBDb3B5VG9UZXh0T25lUm93LAorCS5D b3B5VG9FbmQgPSBDb3B5VG9UZXh0RW5kLAorfTsKKworLyoKKyAqIFdlIGNhbiB1c2UgdGhlIHNh bWUgQ29weVRvUm91dGluZSBmb3IgYm90aCBvZiAidGV4dCIgYW5kICJjc3YiIGJlY2F1c2UKKyAq IENvcHlUb1RleHQqKCkgcmVmZXIgY3N0YXRlLT5vcHRzLmNzdl9tb2RlIGFuZCBjaGFuZ2UgdGhl aXIgYmVoYXZpb3IuIFdlIGNhbgorICogc3BsaXQgdGhlIGltcGxlbWVudGF0aW9ucyBhbmQgc3Rv cCByZWZlcnJpbmcgY3N0YXRlLT5vcHRzLmNzdl9tb2RlIGxhdGVyLgorICovCitDb3B5VG9Sb3V0 aW5lIENvcHlUb1JvdXRpbmVDU1YgPSB7CisJLkNvcHlUb1Byb2Nlc3NPcHRpb24gPSBDb3B5VG9U ZXh0UHJvY2Vzc09wdGlvbiwKKwkuQ29weVRvR2V0Rm9ybWF0ID0gQ29weVRvVGV4dEdldEZvcm1h dCwKKwkuQ29weVRvU3RhcnQgPSBDb3B5VG9UZXh0U3RhcnQsCisJLkNvcHlUb09uZVJvdyA9IENv cHlUb1RleHRPbmVSb3csCisJLkNvcHlUb0VuZCA9IENvcHlUb1RleHRFbmQsCit9OworCitDb3B5 VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVCaW5hcnkgPSB7CisJLkNvcHlUb1Byb2Nlc3NPcHRpb24g PSBDb3B5VG9CaW5hcnlQcm9jZXNzT3B0aW9uLAorCS5Db3B5VG9HZXRGb3JtYXQgPSBDb3B5VG9C aW5hcnlHZXRGb3JtYXQsCisJLkNvcHlUb1N0YXJ0ID0gQ29weVRvQmluYXJ5U3RhcnQsCisJLkNv cHlUb09uZVJvdyA9IENvcHlUb0JpbmFyeU9uZVJvdywKKwkuQ29weVRvRW5kID0gQ29weVRvQmlu YXJ5RW5kLAorfTsKIAogLyoKICAqIFNlbmQgY29weSBzdGFydC9zdG9wIG1lc3NhZ2VzIGZvciBm cm9udGVuZCBjb3BpZXMuICBUaGVzZSBoYXZlIGNoYW5nZWQKQEAgLTE0MSw3ICs0MTAsNyBAQCBT ZW5kQ29weUJlZ2luKENvcHlUb1N0YXRlIGNzdGF0ZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7 CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCWludDE2 CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJpbmFyeSA/IDEgOiAwKTsKKwlpbnQxNgkJZm9ybWF0 ID0gY3N0YXRlLT5vcHRzLnRvX3JvdXRpbmUtPkNvcHlUb0dldEZvcm1hdChjc3RhdGUpOwogCWlu dAkJCWk7CiAKIAlwcV9iZWdpbm1lc3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsK QEAgLTE5OCwxNiArNDY3LDYgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUp CiAJc3dpdGNoIChjc3RhdGUtPmNvcHlfZGVzdCkKIAl7CiAJCWNhc2UgQ09QWV9GSUxFOgotCQkJ aWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQotCQkJewotCQkJCS8qIERlZmF1bHQgbGluZSB0ZXJt aW5hdGlvbiBkZXBlbmRzIG9uIHBsYXRmb3JtICovCi0jaWZuZGVmIFdJTjMyCi0JCQkJQ29weVNl bmRDaGFyKGNzdGF0ZSwgJ1xuJyk7Ci0jZWxzZQotCQkJCUNvcHlTZW5kU3RyaW5nKGNzdGF0ZSwg IlxyXG4iKTsKLSNlbmRpZgotCQkJfQotCiAJCQlpZiAoZndyaXRlKGZlX21zZ2J1Zi0+ZGF0YSwg ZmVfbXNnYnVmLT5sZW4sIDEsCiAJCQkJCSAgIGNzdGF0ZS0+Y29weV9maWxlKSAhPSAxIHx8CiAJ CQkJZmVycm9yKGNzdGF0ZS0+Y29weV9maWxlKSkKQEAgLTI0MiwxMCArNTAxLDYgQEAgQ29weVNl bmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCQl9CiAJCQlicmVhazsKIAkJY2FzZSBD T1BZX0ZST05URU5EOgotCQkJLyogVGhlIEZFL0JFIHByb3RvY29sIHVzZXMgXG4gYXMgbmV3bGlu ZSBmb3IgYWxsIHBsYXRmb3JtcyAqLwotCQkJaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQotCQkJ CUNvcHlTZW5kQ2hhcihjc3RhdGUsICdcbicpOwotCiAJCQkvKiBEdW1wIHRoZSBhY2N1bXVsYXRl ZCByb3cgYXMgb25lIENvcHlEYXRhIG1lc3NhZ2UgKi8KIAkJCSh2b2lkKSBwcV9wdXRtZXNzYWdl KFBxTXNnX0NvcHlEYXRhLCBmZV9tc2didWYtPmRhdGEsIGZlX21zZ2J1Zi0+bGVuKTsKIAkJCWJy ZWFrOwpAQCAtNDMxLDcgKzY4Niw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNzdGF0ZS0+Y29weWNvbnRleHQp OwogCiAJLyogRXh0cmFjdCBvcHRpb25zIGZyb20gdGhlIHN0YXRlbWVudCBub2RlIHRyZWUgKi8K LQlQcm9jZXNzQ29weU9wdGlvbnMocHN0YXRlLCAmY3N0YXRlLT5vcHRzLCBmYWxzZSAvKiBpc19m cm9tICovICwgb3B0aW9ucyk7CisJUHJvY2Vzc0NvcHlPcHRpb25zKHBzdGF0ZSwgJmNzdGF0ZS0+ b3B0cywgZmFsc2UgLyogaXNfZnJvbSAqLyAsIGNzdGF0ZSwgb3B0aW9ucyk7CiAKIAkvKiBQcm9j ZXNzIHRoZSBzb3VyY2UvdGFyZ2V0IHJlbGF0aW9uIG9yIHF1ZXJ5ICovCiAJaWYgKHJlbCkKQEAg LTc0OCw4ICsxMDAzLDYgQEAgRG9Db3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogCWJvb2wJCXBp cGUgPSAoY3N0YXRlLT5maWxlbmFtZSA9PSBOVUxMICYmIGNzdGF0ZS0+ZGF0YV9kZXN0X2NiID09 IE5VTEwpOwogCWJvb2wJCWZlX2NvcHkgPSAocGlwZSAmJiB3aGVyZVRvU2VuZE91dHB1dCA9PSBE ZXN0UmVtb3RlKTsKIAlUdXBsZURlc2MJdHVwRGVzYzsKLQlpbnQJCQludW1fcGh5c19hdHRyczsK LQlMaXN0Q2VsbCAgICpjdXI7CiAJdWludDY0CQlwcm9jZXNzZWQ7CiAKIAlpZiAoZmVfY29weSkK QEAgLTc1OSwzMiArMTAxMiwxMSBAQCBEb0NvcHlUbyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCXR1 cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKIAllbHNlCiAJCXR1cERlc2Mg PSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKLQludW1fcGh5c19hdHRycyA9IHR1cERlc2Mt Pm5hdHRzOwogCWNzdGF0ZS0+b3B0cy5udWxsX3ByaW50X2NsaWVudCA9IGNzdGF0ZS0+b3B0cy5u dWxsX3ByaW50OwkvKiBkZWZhdWx0ICovCiAKIAkvKiBXZSB1c2UgZmVfbXNnYnVmIGFzIGEgcGVy LXJvdyBidWZmZXIgcmVnYXJkbGVzcyBvZiBjb3B5X2Rlc3QgKi8KIAljc3RhdGUtPmZlX21zZ2J1 ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CiAKLQkvKiBHZXQgaW5mbyBhYm91dCB0aGUgY29sdW1ucyB3 ZSBuZWVkIHRvIHByb2Nlc3MuICovCi0JY3N0YXRlLT5vdXRfZnVuY3Rpb25zID0gKEZtZ3JJbmZv ICopIHBhbGxvYyhudW1fcGh5c19hdHRycyAqIHNpemVvZihGbWdySW5mbykpOwotCWZvcmVhY2go Y3VyLCBjc3RhdGUtPmF0dG51bWxpc3QpCi0JewotCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50 KGN1cik7Ci0JCU9pZAkJCW91dF9mdW5jX29pZDsKLQkJYm9vbAkJaXN2YXJsZW5hOwotCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRudW0gLSAxKTsK LQotCQlpZiAoY3N0YXRlLT5vcHRzLmJpbmFyeSkKLQkJCWdldFR5cGVCaW5hcnlPdXRwdXRJbmZv KGF0dHItPmF0dHR5cGlkLAotCQkJCQkJCQkJJm91dF9mdW5jX29pZCwKLQkJCQkJCQkJCSZpc3Zh cmxlbmEpOwotCQllbHNlCi0JCQlnZXRUeXBlT3V0cHV0SW5mbyhhdHRyLT5hdHR0eXBpZCwKLQkJ CQkJCQkgICZvdXRfZnVuY19vaWQsCi0JCQkJCQkJICAmaXN2YXJsZW5hKTsKLQkJZm1ncl9pbmZv KG91dF9mdW5jX29pZCwgJmNzdGF0ZS0+b3V0X2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7Ci0JfQot CiAJLyoKIAkgKiBDcmVhdGUgYSB0ZW1wb3JhcnkgbWVtb3J5IGNvbnRleHQgdGhhdCB3ZSBjYW4g cmVzZXQgb25jZSBwZXIgcm93IHRvCiAJICogcmVjb3ZlciBwYWxsb2MnZCBtZW1vcnkuICBUaGlz IGF2b2lkcyBhbnkgcHJvYmxlbXMgd2l0aCBsZWFrcyBpbnNpZGUKQEAgLTc5NSw1NyArMTAyNyw3 IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAkJCQkJCQkJCQkJICAgIkNPUFkgVE8i LAogCQkJCQkJCQkJCQkgICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAotCWlmIChjc3RhdGUt Pm9wdHMuYmluYXJ5KQotCXsKLQkJLyogR2VuZXJhdGUgaGVhZGVyIGZvciBhIGJpbmFyeSBjb3B5 ICovCi0JCWludDMyCQl0bXA7Ci0KLQkJLyogU2lnbmF0dXJlICovCi0JCUNvcHlTZW5kRGF0YShj c3RhdGUsIEJpbmFyeVNpZ25hdHVyZSwgMTEpOwotCQkvKiBGbGFncyBmaWVsZCAqLwotCQl0bXAg PSAwOwotCQlDb3B5U2VuZEludDMyKGNzdGF0ZSwgdG1wKTsKLQkJLyogTm8gaGVhZGVyIGV4dGVu c2lvbiAqLwotCQl0bXAgPSAwOwotCQlDb3B5U2VuZEludDMyKGNzdGF0ZSwgdG1wKTsKLQl9Ci0J ZWxzZQotCXsKLQkJLyoKLQkJICogRm9yIG5vbi1iaW5hcnkgY29weSwgd2UgbmVlZCB0byBjb252 ZXJ0IG51bGxfcHJpbnQgdG8gZmlsZQotCQkgKiBlbmNvZGluZywgYmVjYXVzZSBpdCB3aWxsIGJl IHNlbnQgZGlyZWN0bHkgd2l0aCBDb3B5U2VuZFN0cmluZy4KLQkJICovCi0JCWlmIChjc3RhdGUt Pm5lZWRfdHJhbnNjb2RpbmcpCi0JCQljc3RhdGUtPm9wdHMubnVsbF9wcmludF9jbGllbnQgPSBw Z19zZXJ2ZXJfdG9fYW55KGNzdGF0ZS0+b3B0cy5udWxsX3ByaW50LAotCQkJCQkJCQkJCQkJCQkJ ICBjc3RhdGUtPm9wdHMubnVsbF9wcmludF9sZW4sCi0JCQkJCQkJCQkJCQkJCQkgIGNzdGF0ZS0+ ZmlsZV9lbmNvZGluZyk7Ci0KLQkJLyogaWYgYSBoZWFkZXIgaGFzIGJlZW4gcmVxdWVzdGVkIHNl bmQgdGhlIGxpbmUgKi8KLQkJaWYgKGNzdGF0ZS0+b3B0cy5oZWFkZXJfbGluZSkKLQkJewotCQkJ Ym9vbAkJaGRyX2RlbGltID0gZmFsc2U7Ci0KLQkJCWZvcmVhY2goY3VyLCBjc3RhdGUtPmF0dG51 bWxpc3QpCi0JCQl7Ci0JCQkJaW50CQkJYXR0bnVtID0gbGZpcnN0X2ludChjdXIpOwotCQkJCWNo YXIJICAgKmNvbG5hbWU7Ci0KLQkJCQlpZiAoaGRyX2RlbGltKQotCQkJCQlDb3B5U2VuZENoYXIo Y3N0YXRlLCBjc3RhdGUtPm9wdHMuZGVsaW1bMF0pOwotCQkJCWhkcl9kZWxpbSA9IHRydWU7Ci0K LQkJCQljb2xuYW1lID0gTmFtZVN0cihUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51bSAtIDEp LT5hdHRuYW1lKTsKLQotCQkJCWlmIChjc3RhdGUtPm9wdHMuY3N2X21vZGUpCi0JCQkJCUNvcHlB dHRyaWJ1dGVPdXRDU1YoY3N0YXRlLCBjb2xuYW1lLCBmYWxzZSwKLQkJCQkJCQkJCQlsaXN0X2xl bmd0aChjc3RhdGUtPmF0dG51bWxpc3QpID09IDEpOwotCQkJCWVsc2UKLQkJCQkJQ29weUF0dHJp YnV0ZU91dFRleHQoY3N0YXRlLCBjb2xuYW1lKTsKLQkJCX0KLQotCQkJQ29weVNlbmRFbmRPZlJv dyhjc3RhdGUpOwotCQl9Ci0JfQorCWNzdGF0ZS0+b3B0cy50b19yb3V0aW5lLT5Db3B5VG9TdGFy dChjc3RhdGUsIHR1cERlc2MpOwogCiAJaWYgKGNzdGF0ZS0+cmVsKQogCXsKQEAgLTg4NCwxMyAr MTA2Niw3IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIAkJcHJvY2Vzc2VkID0gKChE Ul9jb3B5ICopIGNzdGF0ZS0+cXVlcnlEZXNjLT5kZXN0KS0+cHJvY2Vzc2VkOwogCX0KIAotCWlm IChjc3RhdGUtPm9wdHMuYmluYXJ5KQotCXsKLQkJLyogR2VuZXJhdGUgdHJhaWxlciBmb3IgYSBi aW5hcnkgY29weSAqLwotCQlDb3B5U2VuZEludDE2KGNzdGF0ZSwgLTEpOwotCQkvKiBOZWVkIHRv IGZsdXNoIG91dCB0aGUgdHJhaWxlciAqLwotCQlDb3B5U2VuZEVuZE9mUm93KGNzdGF0ZSk7Ci0J fQorCWNzdGF0ZS0+b3B0cy50b19yb3V0aW5lLT5Db3B5VG9FbmQoY3N0YXRlKTsKIAogCU1lbW9y eUNvbnRleHREZWxldGUoY3N0YXRlLT5yb3djb250ZXh0KTsKIApAQCAtOTA2LDcxICsxMDgyLDE1 IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIHN0YXRpYyB2b2lkCiBDb3B5T25lUm93 VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKIHsKLQlib29sCQlu ZWVkX2RlbGltID0gZmFsc2U7Ci0JRm1nckluZm8gICAqb3V0X2Z1bmN0aW9ucyA9IGNzdGF0ZS0+ b3V0X2Z1bmN0aW9uczsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7Ci0JTGlzdENlbGwgICAq Y3VyOwotCWNoYXIJICAgKnN0cmluZzsKIAogCU1lbW9yeUNvbnRleHRSZXNldChjc3RhdGUtPnJv d2NvbnRleHQpOwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3N0YXRlLT5y b3djb250ZXh0KTsKIAotCWlmIChjc3RhdGUtPm9wdHMuYmluYXJ5KQotCXsKLQkJLyogQmluYXJ5 IHBlci10dXBsZSBoZWFkZXIgKi8KLQkJQ29weVNlbmRJbnQxNihjc3RhdGUsIGxpc3RfbGVuZ3Ro KGNzdGF0ZS0+YXR0bnVtbGlzdCkpOwotCX0KLQogCS8qIE1ha2Ugc3VyZSB0aGUgdHVwbGUgaXMg ZnVsbHkgZGVjb25zdHJ1Y3RlZCAqLwogCXNsb3RfZ2V0YWxsYXR0cnMoc2xvdCk7CiAKLQlmb3Jl YWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQotCXsKLQkJaW50CQkJYXR0bnVtID0gbGZpcnN0 X2ludChjdXIpOwotCQlEYXR1bQkJdmFsdWUgPSBzbG90LT50dHNfdmFsdWVzW2F0dG51bSAtIDFd OwotCQlib29sCQlpc251bGwgPSBzbG90LT50dHNfaXNudWxsW2F0dG51bSAtIDFdOwotCi0JCWlm ICghY3N0YXRlLT5vcHRzLmJpbmFyeSkKLQkJewotCQkJaWYgKG5lZWRfZGVsaW0pCi0JCQkJQ29w eVNlbmRDaGFyKGNzdGF0ZSwgY3N0YXRlLT5vcHRzLmRlbGltWzBdKTsKLQkJCW5lZWRfZGVsaW0g PSB0cnVlOwotCQl9Ci0KLQkJaWYgKGlzbnVsbCkKLQkJewotCQkJaWYgKCFjc3RhdGUtPm9wdHMu YmluYXJ5KQotCQkJCUNvcHlTZW5kU3RyaW5nKGNzdGF0ZSwgY3N0YXRlLT5vcHRzLm51bGxfcHJp bnRfY2xpZW50KTsKLQkJCWVsc2UKLQkJCQlDb3B5U2VuZEludDMyKGNzdGF0ZSwgLTEpOwotCQl9 Ci0JCWVsc2UKLQkJewotCQkJaWYgKCFjc3RhdGUtPm9wdHMuYmluYXJ5KQotCQkJewotCQkJCXN0 cmluZyA9IE91dHB1dEZ1bmN0aW9uQ2FsbCgmb3V0X2Z1bmN0aW9uc1thdHRudW0gLSAxXSwKLQkJ CQkJCQkJCQkJdmFsdWUpOwotCQkJCWlmIChjc3RhdGUtPm9wdHMuY3N2X21vZGUpCi0JCQkJCUNv cHlBdHRyaWJ1dGVPdXRDU1YoY3N0YXRlLCBzdHJpbmcsCi0JCQkJCQkJCQkJY3N0YXRlLT5vcHRz LmZvcmNlX3F1b3RlX2ZsYWdzW2F0dG51bSAtIDFdLAotCQkJCQkJCQkJCWxpc3RfbGVuZ3RoKGNz dGF0ZS0+YXR0bnVtbGlzdCkgPT0gMSk7Ci0JCQkJZWxzZQotCQkJCQlDb3B5QXR0cmlidXRlT3V0 VGV4dChjc3RhdGUsIHN0cmluZyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJYnl0ZWEJICAg Km91dHB1dGJ5dGVzOwotCi0JCQkJb3V0cHV0Ynl0ZXMgPSBTZW5kRnVuY3Rpb25DYWxsKCZvdXRf ZnVuY3Rpb25zW2F0dG51bSAtIDFdLAotCQkJCQkJCQkJCQkgICB2YWx1ZSk7Ci0JCQkJQ29weVNl bmRJbnQzMihjc3RhdGUsIFZBUlNJWkUob3V0cHV0Ynl0ZXMpIC0gVkFSSERSU1opOwotCQkJCUNv cHlTZW5kRGF0YShjc3RhdGUsIFZBUkRBVEEob3V0cHV0Ynl0ZXMpLAotCQkJCQkJCSBWQVJTSVpF KG91dHB1dGJ5dGVzKSAtIFZBUkhEUlNaKTsKLQkJCX0KLQkJfQotCX0KLQotCUNvcHlTZW5kRW5k T2ZSb3coY3N0YXRlKTsKKwljc3RhdGUtPm9wdHMudG9fcm91dGluZS0+Q29weVRvT25lUm93KGNz dGF0ZSwgc2xvdCk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiB9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9jb3B5LmgKaW5kZXggYjNkYTNjYjBiZS4uMzRiZWE4ODBjYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHku aApAQCAtMTQsNiArMTQsNyBAQAogI2lmbmRlZiBDT1BZX0gKICNkZWZpbmUgQ09QWV9ICiAKKyNp bmNsdWRlICJjb21tYW5kcy9jb3B5YXBpLmgiCiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgi CiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9u b2RlLmgiCkBAIC03NCwxMSArNzUsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlv bnMKIAlib29sCQljb252ZXJ0X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUgYmluYXJ5IGNv bnZlcnNpb24/ICovCiAJQ29weU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdoYXQgdG8gZG8g d2hlbiBlcnJvciBoYXBwZW5lZCAqLwogCUxpc3QJICAgKmNvbnZlcnRfc2VsZWN0OyAvKiBsaXN0 IG9mIGNvbHVtbiBuYW1lcyAoY2FuIGJlIE5JTCkgKi8KKwlDb3B5VG9Sb3V0aW5lICp0b19yb3V0 aW5lOwkvKiBjYWxsYmFjayByb3V0aW5lcyBmb3IgQ09QWSBUTyAqLwogfSBDb3B5Rm9ybWF0T3B0 aW9uczsKIAotLyogVGhlc2UgYXJlIHByaXZhdGUgaW4gY29tbWFuZHMvY29weVtmcm9tfHRvXS5j ICovCisvKiBUaGlzIGlzIHByaXZhdGUgaW4gY29tbWFuZHMvY29weWZyb20uYyAqLwogdHlwZWRl ZiBzdHJ1Y3QgQ29weUZyb21TdGF0ZURhdGEgKkNvcHlGcm9tU3RhdGU7Ci10eXBlZGVmIHN0cnVj dCBDb3B5VG9TdGF0ZURhdGEgKkNvcHlUb1N0YXRlOwogCiB0eXBlZGVmIGludCAoKmNvcHlfZGF0 YV9zb3VyY2VfY2IpICh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCk7CiB0 eXBlZGVmIHZvaWQgKCpjb3B5X2RhdGFfZGVzdF9jYikgKHZvaWQgKmRhdGEsIGludCBsZW4pOwpA QCAtODcsNyArODgsNyBAQCBleHRlcm4gdm9pZCBEb0NvcHkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBj b25zdCBDb3B5U3RtdCAqc3RtdCwKIAkJCQkgICBpbnQgc3RtdF9sb2NhdGlvbiwgaW50IHN0bXRf bGVuLAogCQkJCSAgIHVpbnQ2NCAqcHJvY2Vzc2VkKTsKIAotZXh0ZXJuIHZvaWQgUHJvY2Vzc0Nv cHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHNfb3V0 LCBib29sIGlzX2Zyb20sIExpc3QgKm9wdGlvbnMpOworZXh0ZXJuIHZvaWQgUHJvY2Vzc0NvcHlP cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29weUZvcm1hdE9wdGlvbnMgKm9wdHNfb3V0LCBi b29sIGlzX2Zyb20sIHZvaWQgKmNzdGF0ZSwgTGlzdCAqb3B0aW9ucyk7CiBleHRlcm4gQ29weUZy b21TdGF0ZSBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVsYXRpb24gcmVsLCBO b2RlICp3aGVyZUNsYXVzZSwKIAkJCQkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUsCiAJCQkJ CQkJCSAgIGJvb2wgaXNfcHJvZ3JhbSwgY29weV9kYXRhX3NvdXJjZV9jYiBkYXRhX3NvdXJjZV9j YiwgTGlzdCAqYXR0bmFtZWxpc3QsIExpc3QgKm9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY29weWFwaS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmViNjhmMmZiN2IKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKQEAgLTAsMCArMSw1 OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogY29weWFwaS5oCisgKgkgIEFQSSBmb3Ig Q09QWSBUTy9GUk9NIGhhbmRsZXJzCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBDT1BZQVBJX0gKKyNkZWZpbmUgQ09QWUFQSV9ICisK KyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9k ZXMuaCIKKworLyogVGhpcyBpcyBwcml2YXRlIGluIGNvbW1hbmRzL2NvcHl0by5jICovCit0eXBl ZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURhdGEgKkNvcHlUb1N0YXRlOworCit0eXBlZGVmIGJvb2wg KCpDb3B5VG9Qcm9jZXNzT3B0aW9uX2Z1bmN0aW9uKSAoQ29weVRvU3RhdGUgY3N0YXRlLCBEZWZF bGVtICpkZWZlbCk7Cit0eXBlZGVmIGludDE2ICgqQ29weVRvR2V0Rm9ybWF0X2Z1bmN0aW9uKSAo Q29weVRvU3RhdGUgY3N0YXRlKTsKK3R5cGVkZWYgdm9pZCAoKkNvcHlUb1N0YXJ0X2Z1bmN0aW9u KSAoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7Cit0eXBlZGVmIHZvaWQg KCpDb3B5VG9PbmVSb3dfZnVuY3Rpb24pIChDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KTsKK3R5cGVkZWYgdm9pZCAoKkNvcHlUb0VuZF9mdW5jdGlvbikgKENvcHlUb1N0 YXRlIGNzdGF0ZSk7CisKKy8qIFJvdXRpbmVzIGZvciBhIENPUFkgVE8gZm9ybWF0IGltcGxlbWVu dGF0aW9uLiAqLwordHlwZWRlZiBzdHJ1Y3QgQ29weVRvUm91dGluZQoreworCS8qCisJICogQ2Fs bGVkIGZvciBwcm9jZXNzaW5nIG9uZSBDT1BZIFRPIG9wdGlvbi4gVGhpcyB3aWxsIHJldHVybiBm YWxzZSB3aGVuCisJICogdGhlIGdpdmVuIG9wdGlvbiBpcyBpbnZhbGlkLgorCSAqLworCUNvcHlU b1Byb2Nlc3NPcHRpb25fZnVuY3Rpb24gQ29weVRvUHJvY2Vzc09wdGlvbjsKKworCS8qCisJICog Q2FsbGVkIHdoZW4gQ09QWSBUTyBpcyBzdGFydGVkLiBUaGlzIHdpbGwgcmV0dXJuIGEgZm9ybWF0 IGFzIGludDE2CisJICogdmFsdWUuIEl0J3MgdXNlZCBmb3IgdGhlIENvcHlPdXRSZXNwb25zZSBt ZXNzYWdlLgorCSAqLworCUNvcHlUb0dldEZvcm1hdF9mdW5jdGlvbiBDb3B5VG9HZXRGb3JtYXQ7 CisKKwkvKiBDYWxsZWQgd2hlbiBDT1BZIFRPIGlzIHN0YXJ0ZWQuIFRoaXMgd2lsbCBzZW5kIGEg aGVhZGVyLiAqLworCUNvcHlUb1N0YXJ0X2Z1bmN0aW9uIENvcHlUb1N0YXJ0OworCisJLyogQ29w eSBvbmUgcm93IGZvciBDT1BZIFRPLiAqLworCUNvcHlUb09uZVJvd19mdW5jdGlvbiBDb3B5VG9P bmVSb3c7CisKKwkvKiBDYWxsZWQgd2hlbiBDT1BZIFRPIGlzIGVuZGVkLiBUaGlzIHdpbGwgc2Vu ZCBhIHRyYWlsZXIuICovCisJQ29weVRvRW5kX2Z1bmN0aW9uIENvcHlUb0VuZDsKK30JCQlDb3B5 VG9Sb3V0aW5lOworCisvKiBCdWlsdC1pbiBDb3B5VG9Sb3V0aW5lIGZvciAidGV4dCIsICJjc3Yi IGFuZCAiYmluYXJ5Ii4gKi8KK2V4dGVybiBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVUZXh0 OworZXh0ZXJuIENvcHlUb1JvdXRpbmUgQ29weVRvUm91dGluZUNTVjsKK2V4dGVybiBDb3B5VG9S b3V0aW5lIENvcHlUb1JvdXRpbmVCaW5hcnk7CisKKyNlbmRpZgkJCQkJCQkvKiBDT1BZQVBJX0gg Ki8KLS0gCjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0002-Add-support-for-adding-custom-COPY-TO-format.patch" Content-Disposition: attachment; filename="v8-0002-Add-support-for-adding-custom-COPY-TO-format.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w01 RnJvbSBhNTk3ZjhhMmJlZWMxMjk3MWQ3NzQxOWYwOGI1NzIyZjUzMTc3NGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogVHVlLCAyMyBKYW4gMjAyNCAxMzo1ODozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDIv MTBdIEFkZCBzdXBwb3J0IGZvciBhZGRpbmcgY3VzdG9tIENPUFkgVE8gZm9ybWF0CgpUaGlzIHVz ZXMgdGhlIGhhbmRsZXIgYXBwcm9hY2ggbGlrZSB0YWJsZXNhbXBsZS4gVGhlIGFwcHJvYWNoIGNy ZWF0ZXMKYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIGludGVybmFsIHN0cnVj dC4gSW4gdGhpcyBjYXNlLAphIENPUFkgVE8gaGFuZGxlciByZXR1cm5zIGEgQ29weVRvUm91dGlu ZS4KCldlIHdpbGwgYWRkIHN1cHBvcnQgZm9yIGN1c3RvbSBDT1BZIEZST00gZm9ybWF0IGxhdGVy LiBXZSdsbCB1c2UgdGhlCnNhbWUgaGFuZGxlciBmb3IgQ09QWSBUTyBhbmQgQ09QWSBGUk9NLiBQ b3N0Z3JlU1FMIGNhbGxzIGEgQ09QWQpUTy9GUk9NIGhhbmRsZXIgd2l0aCAiaXNfZnJvbSIgYXJn dW1lbnQuIEl0J3MgdHJ1ZSBmb3IgQ09QWSBGUk9NIGFuZApmYWxzZSBmb3IgQ09QWSBUTzoKCiAg ICBjb3B5X2hhbmRsZXIodHJ1ZSkgcmV0dXJucyBDb3B5VG9Sb3V0aW5lCiAgICBjb3B5X2hhbmRs ZXIoZmFsc2UpIHJldHVybnMgQ29weUZyb21Sb3V0aW5lIChub3QgZXhpc3QgeWV0KQoKV2UgZGlz Y3Vzc2VkIHRoYXQgd2UgaW50cm9kdWNlIGEgd3JhcHBlciBzdHJ1Y3QgZm9yIGl0OgoKICAgIHR5 cGVkZWYgc3RydWN0IENvcHlSb3V0aW5lCiAgICB7CiAgICAgICAgTm9kZVRhZyB0eXBlOwogICAg ICAgIC8qIGVpdGhlciBDb3B5VG9Sb3V0aW5lIG9yIENvcHlGcm9tUm91dGluZSAqLwogICAgICAg IE5vZGUgKnJvdXRpbmU7CiAgICB9CgogICAgY29weV9oYW5kbGVyKHRydWUpIHJldHVybnMgQ29w eVJvdXRpbmUgd2l0aCBDb3B5VG9Sb3V0aW5lCiAgICBjb3B5X2hhbmRsZXIoZmFsc2UpIHJldHVy bnMgQ29weVJvdXRpbmUgd2l0aCBDb3B5RnJvbVJvdXRpbmUKClNlZSBhbHNvOiBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FEMjFBb0N1bnl3SGlyZDNHYVB6V2U2 czlKRzF3enhqM0NyNnZHTjM2RERoZUdqT2pBJTQwbWFpbC5nbWFpbC5jb20KCkJ1dCBJIG5vdGlj ZWQgdGhhdCB3ZSBkb24ndCBuZWVkIHRoZSB3cmFwcGVyIHN0cnVjdC4gV2UgY2FuIGp1c3QKQ29w eVRvUm91dGluZSBvciBDb3B5RnJvbVJvdXRpbmUuIEJlY2F1c2Ugd2UgY2FuIGRpc3RpbmN0IHRo ZSByZXR1cm5lZApzdHJ1Y3QgYnkgY2hlY2tpbmcgaXRzIE5vZGVUYWcuIFNvIEkgZG9uJ3QgdXNl IHRoZSB3cmFwcGVyIHN0cnVjdAphcHByb2FjaC4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMgICAgICAgICAgICAgICAgICAgfCA4NCArKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFj a2VuZC9ub2Rlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBsICAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcHNldWRvdHlwZXMuYyAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ190eXBlLmRhdCAgICAgICAgICAgICAgIHwgIDYgKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHlhcGkuaCAgICAgICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1h dC8uZ2l0aWdub3JlICB8ICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9N YWtlZmlsZSAgICB8IDIzICsrKysrCiAuLi4vZXhwZWN0ZWQvdGVzdF9jb3B5X2Zvcm1hdC5vdXQg ICAgICAgICAgICAgfCAxNyArKysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQv bWVzb24uYnVpbGQgfCAzMyArKysrKysrKwogLi4uL3Rlc3RfY29weV9mb3JtYXQvc3FsL3Rlc3Rf Y29weV9mb3JtYXQuc3FsIHwgIDggKysKIC4uLi90ZXN0X2NvcHlfZm9ybWF0LS0xLjAuc3FsICAg ICAgICAgICAgICAgICB8ICA4ICsrCiAuLi4vdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9y bWF0LmMgICAgICAgfCA3NyArKysrKysrKysrKysrKysrKwogLi4uL3Rlc3RfY29weV9mb3JtYXQv dGVzdF9jb3B5X2Zvcm1hdC5jb250cm9sIHwgIDQgKwogMTggZmlsZXMgY2hhbmdlZCwgMjYwIGlu c2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1 NSBzcmMvYmFja2VuZC9ub2Rlcy9nZW5fbm9kZV9zdXBwb3J0LnBsCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0Ly5naXRpZ25vcmUKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvTWFrZWZpbGUKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvZXhwZWN0 ZWQvdGVzdF9jb3B5X2Zvcm1hdC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfY29weV9mb3JtYXQvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvc3FsL3Rlc3RfY29weV9mb3JtYXQuc3FsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3Rf Y29weV9mb3JtYXQtLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfY29weV9mb3JtYXQvdGVzdF9jb3B5X2Zvcm1hdC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQuY29udHJv bAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHkuYwppbmRleCA1ZjM2OTdhNWY5Li42ZjBkYjBhZTdjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvZXJjZS5o IgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX2V4cHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZnVuYy5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIu aCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTQzMCw2ICs0MzEsNjkgQEAgZGVmR2V0Q29w eU9uRXJyb3JDaG9pY2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUsIGJvb2wgaXNf ZnJvbSkKIAlyZXR1cm4gQ09QWV9PTl9FUlJPUl9TVE9QOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCiB9CiAKKy8qCisgKiBQcm9jZXNzIHRoZSAiZm9ybWF0IiBvcHRpb24uCisgKgorICogVGhp cyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciB0aGUgb3B0aW9uIHZhbHVlIGlzIGEgYnVpbHQtaW4g Zm9ybWF0IHN1Y2ggYXMKKyAqICJ0ZXh0IiBhbmQgImNzdiIgb3Igbm90LiBJZiB0aGUgb3B0aW9u IHZhbHVlIGlzbid0IGEgYnVpbHQtaW4gZm9ybWF0LCB0aGlzCisgKiBmdW5jdGlvbiBmaW5kcyBh IENPUFkgZm9ybWF0IGhhbmRsZXIgdGhhdCByZXR1cm5zIGEgQ29weVRvUm91dGluZS4gSWYgbm8K KyAqIENPUFkgZm9ybWF0IGhhbmRsZXIgaXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmVwb3J0cyBh biBlcnJvci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NDb3B5T3B0aW9uQ3VzdG9tRm9ybWF0 KFBhcnNlU3RhdGUgKnBzdGF0ZSwKKwkJCQkJCQkgIENvcHlGb3JtYXRPcHRpb25zICpvcHRzX291 dCwKKwkJCQkJCQkgIGJvb2wgaXNfZnJvbSwKKwkJCQkJCQkgIERlZkVsZW0gKmRlZmVsKQorewor CWNoYXIJICAgKmZvcm1hdDsKKwlPaWQJCQlmdW5jYXJndHlwZXNbMV07CisJT2lkCQkJaGFuZGxl ck9pZCA9IEludmFsaWRPaWQ7CisJRGF0dW0JCWRhdHVtOworCXZvaWQJICAgKnJvdXRpbmU7CisK Kwlmb3JtYXQgPSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCisJLyogYnVpbHQtaW4gZm9ybWF0cyAq LworCWlmIChzdHJjbXAoZm9ybWF0LCAidGV4dCIpID09IDApCisJCSAvKiBkZWZhdWx0IGZvcm1h dCAqLyByZXR1cm47CisJZWxzZSBpZiAoc3RyY21wKGZvcm1hdCwgImNzdiIpID09IDApCisJewor CQlvcHRzX291dC0+Y3N2X21vZGUgPSB0cnVlOworCQlvcHRzX291dC0+dG9fcm91dGluZSA9ICZD b3B5VG9Sb3V0aW5lQ1NWOworCQlyZXR1cm47CisJfQorCWVsc2UgaWYgKHN0cmNtcChmb3JtYXQs ICJiaW5hcnkiKSA9PSAwKQorCXsKKwkJb3B0c19vdXQtPmJpbmFyeSA9IHRydWU7CisJCW9wdHNf b3V0LT50b19yb3V0aW5lID0gJkNvcHlUb1JvdXRpbmVCaW5hcnk7CisJCXJldHVybjsKKwl9CisK KwkvKiBjdXN0b20gZm9ybWF0ICovCisJaWYgKCFpc19mcm9tKQorCXsKKwkJZnVuY2FyZ3R5cGVz WzBdID0gSU5URVJOQUxPSUQ7CisJCWhhbmRsZXJPaWQgPSBMb29rdXBGdW5jTmFtZShsaXN0X21h a2UxKG1ha2VTdHJpbmcoZm9ybWF0KSksIDEsCisJCQkJCQkJCQlmdW5jYXJndHlwZXMsIHRydWUp OworCX0KKwlpZiAoIU9pZElzVmFsaWQoaGFuZGxlck9pZCkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1z ZygiQ09QWSBmb3JtYXQgXCIlc1wiIG5vdCByZWNvZ25pemVkIiwgZm9ybWF0KSwKKwkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOworCisJZGF0dW0gPSBP aWRGdW5jdGlvbkNhbGwxKGhhbmRsZXJPaWQsIEJvb2xHZXREYXR1bShpc19mcm9tKSk7CisJcm91 dGluZSA9IERhdHVtR2V0UG9pbnRlcihkYXR1bSk7CisJaWYgKHJvdXRpbmUgPT0gTlVMTCB8fCAh SXNBKHJvdXRpbmUsIENvcHlUb1JvdXRpbmUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCSBlcnJtc2coIkNPUFkg aGFuZGxlciBmdW5jdGlvbiAlcygldSkgZGlkIG5vdCByZXR1cm4gYSBDb3B5VG9Sb3V0aW5lIHN0 cnVjdCIsCisJCQkJCQlmb3JtYXQsIGhhbmRsZXJPaWQpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CisKKwlvcHRzX291dC0+dG9fcm91dGluZSA9 IHJvdXRpbmU7Cit9CisKIC8qCiAgKiBQcm9jZXNzIHRoZSBzdGF0ZW1lbnQgb3B0aW9uIGxpc3Qg Zm9yIENPUFkuCiAgKgpAQCAtNDgxLDI4ICs1NDUsMTAgQEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBh cnNlU3RhdGUgKnBzdGF0ZSwKIAogCQlpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZm9ybWF0 IikgPT0gMCkKIAkJewotCQkJY2hhcgkgICAqZm10ID0gZGVmR2V0U3RyaW5nKGRlZmVsKTsKLQog CQkJaWYgKGZvcm1hdF9zcGVjaWZpZWQpCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVm ZWwsIHBzdGF0ZSk7CiAJCQlmb3JtYXRfc3BlY2lmaWVkID0gdHJ1ZTsKLQkJCWlmIChzdHJjbXAo Zm10LCAidGV4dCIpID09IDApCi0JCQkJIC8qIGRlZmF1bHQgZm9ybWF0ICovIDsKLQkJCWVsc2Ug aWYgKHN0cmNtcChmbXQsICJjc3YiKSA9PSAwKQotCQkJewotCQkJCW9wdHNfb3V0LT5jc3ZfbW9k ZSA9IHRydWU7Ci0JCQkJb3B0c19vdXQtPnRvX3JvdXRpbmUgPSAmQ29weVRvUm91dGluZUNTVjsK LQkJCX0KLQkJCWVsc2UgaWYgKHN0cmNtcChmbXQsICJiaW5hcnkiKSA9PSAwKQotCQkJewotCQkJ CW9wdHNfb3V0LT5iaW5hcnkgPSB0cnVlOwotCQkJCW9wdHNfb3V0LT50b19yb3V0aW5lID0gJkNv cHlUb1JvdXRpbmVCaW5hcnk7Ci0JCQl9Ci0JCQllbHNlCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCQkJIGVy cm1zZygiQ09QWSBmb3JtYXQgXCIlc1wiIG5vdCByZWNvZ25pemVkIiwgZm10KSwKLQkJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CisJCQlQcm9jZXNz Q29weU9wdGlvbkN1c3RvbUZvcm1hdChwc3RhdGUsIG9wdHNfb3V0LCBpc19mcm9tLCBkZWZlbCk7 CiAJCX0KIAl9CiAJLyogRXh0cmFjdCBvcHRpb25zIGV4Y2VwdCAiZm9ybWF0IiBmcm9tIHRoZSBz dGF0ZW1lbnQgbm9kZSB0cmVlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxlCmluZGV4IDY2YmJhZDhlNmUuLjE3M2Vl MTE4MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxlCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL01ha2VmaWxlCkBAIC00OSw2ICs0OSw3IEBAIG5vZGVfaGVhZGVycyA9IFwK IAlhY2Nlc3Mvc2Rpci5oIFwKIAlhY2Nlc3MvdGFibGVhbS5oIFwKIAlhY2Nlc3MvdHNtYXBpLmgg XAorCWNvbW1hbmRzL2NvcHlhcGkuaCBcCiAJY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIFwKIAlj b21tYW5kcy90cmlnZ2VyLmggXAogCWV4ZWN1dG9yL3R1cHRhYmxlLmggXApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3VwcG9ydC5wbCBiL3NyYy9iYWNrZW5kL25vZGVz L2dlbl9ub2RlX3N1cHBvcnQucGwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRl eCAyZjBhNTliYzg3Li5iZDM5N2Y0NWFjCi0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2dlbl9ub2Rl X3N1cHBvcnQucGwKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3VwcG9ydC5wbApA QCAtNjEsNiArNjEsNyBAQCBteSBAYWxsX2lucHV0X2ZpbGVzID0gcXcoCiAgIGFjY2Vzcy9zZGly LmgKICAgYWNjZXNzL3RhYmxlYW0uaAogICBhY2Nlc3MvdHNtYXBpLmgKKyAgY29tbWFuZHMvY29w eWFwaS5oCiAgIGNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaAogICBjb21tYW5kcy90cmlnZ2VyLmgK ICAgZXhlY3V0b3IvdHVwdGFibGUuaApAQCAtODUsNiArODYsNyBAQCBteSBAbm9kZXRhZ19vbmx5 X2ZpbGVzID0gcXcoCiAgIGFjY2Vzcy9zZGlyLmgKICAgYWNjZXNzL3RhYmxlYW0uaAogICBhY2Nl c3MvdHNtYXBpLmgKKyAgY29tbWFuZHMvY29weWFwaS5oCiAgIGNvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuaAogICBjb21tYW5kcy90cmlnZ2VyLmgKICAgZXhlY3V0b3IvdHVwdGFibGUuaApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BzZXVkb3R5cGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcHNldWRvdHlwZXMuYwppbmRleCBhM2E5OTFmNjM0Li5kMzA4NzgwYzQzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcHNldWRvdHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcHNldWRvdHlwZXMuYwpAQCAtMzczLDYgKzM3Myw3IEBAIFBTRVVET1RZ UEVfRFVNTVlfSU9fRlVOQ1MoZmR3X2hhbmRsZXIpOwogUFNFVURPVFlQRV9EVU1NWV9JT19GVU5D Uyh0YWJsZV9hbV9oYW5kbGVyKTsKIFBTRVVET1RZUEVfRFVNTVlfSU9fRlVOQ1MoaW5kZXhfYW1f aGFuZGxlcik7CiBQU0VVRE9UWVBFX0RVTU1ZX0lPX0ZVTkNTKHRzbV9oYW5kbGVyKTsKK1BTRVVE T1RZUEVfRFVNTVlfSU9fRlVOQ1MoY29weV9oYW5kbGVyKTsKIFBTRVVET1RZUEVfRFVNTVlfSU9f RlVOQ1MoaW50ZXJuYWwpOwogUFNFVURPVFlQRV9EVU1NWV9JT19GVU5DUyhhbnllbGVtZW50KTsK IFBTRVVET1RZUEVfRFVNTVlfSU9fRlVOQ1MoYW55bm9uYXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMjlhZjRjZTY1ZC4uZDRlNDI2Njg3YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CkBAIC03NjE3LDYgKzc2MTcsMTIgQEAKIHsgb2lkID0+ICczMzEyJywgZGVzY3IgPT4gJ0kv TycsCiAgIHByb25hbWUgPT4gJ3RzbV9oYW5kbGVyX291dCcsIHByb3JldHR5cGUgPT4gJ2NzdHJp bmcnLAogICBwcm9hcmd0eXBlcyA9PiAndHNtX2hhbmRsZXInLCBwcm9zcmMgPT4gJ3RzbV9oYW5k bGVyX291dCcgfSwKK3sgb2lkID0+ICc4NzUzJywgZGVzY3IgPT4gJ0kvTycsCisgIHByb25hbWUg PT4gJ2NvcHlfaGFuZGxlcl9pbicsIHByb2lzc3RyaWN0ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAn Y29weV9oYW5kbGVyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2NzdHJpbmcnLCBwcm9zcmMgPT4gJ2Nv cHlfaGFuZGxlcl9pbicgfSwKK3sgb2lkID0+ICc4NzU0JywgZGVzY3IgPT4gJ0kvTycsCisgIHBy b25hbWUgPT4gJ2NvcHlfaGFuZGxlcl9vdXQnLCBwcm9yZXR0eXBlID0+ICdjc3RyaW5nJywKKyAg cHJvYXJndHlwZXMgPT4gJ2NvcHlfaGFuZGxlcicsIHByb3NyYyA9PiAnY29weV9oYW5kbGVyX291 dCcgfSwKIHsgb2lkID0+ICcyNjcnLCBkZXNjciA9PiAnSS9PJywKICAgcHJvbmFtZSA9PiAndGFi bGVfYW1faGFuZGxlcl9pbicsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0dHlwZSA9PiAn dGFibGVfYW1faGFuZGxlcicsIHByb2FyZ3R5cGVzID0+ICdjc3RyaW5nJywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3R5cGUuZGF0CmluZGV4IGQyOTE5NGRhMzEuLjIwNDBkNWRhODMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfdHlwZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190 eXBlLmRhdApAQCAtNjMyLDYgKzYzMiwxMiBAQAogICB0eXBjYXRlZ29yeSA9PiAnUCcsIHR5cGlu cHV0ID0+ICd0c21faGFuZGxlcl9pbicsCiAgIHR5cG91dHB1dCA9PiAndHNtX2hhbmRsZXJfb3V0 JywgdHlwcmVjZWl2ZSA9PiAnLScsIHR5cHNlbmQgPT4gJy0nLAogICB0eXBhbGlnbiA9PiAnaScg fSwKK3sgb2lkID0+ICc4NzUyJywKKyAgZGVzY3IgPT4gJ3BzZXVkby10eXBlIGZvciB0aGUgcmVz dWx0IG9mIGEgY29weSB0by9mcm9tIG1ldGhvZCBmdW5jdG9pbicsCisgIHR5cG5hbWUgPT4gJ2Nv cHlfaGFuZGxlcicsIHR5cGxlbiA9PiAnNCcsIHR5cGJ5dmFsID0+ICd0JywgdHlwdHlwZSA9PiAn cCcsCisgIHR5cGNhdGVnb3J5ID0+ICdQJywgdHlwaW5wdXQgPT4gJ2NvcHlfaGFuZGxlcl9pbics CisgIHR5cG91dHB1dCA9PiAnY29weV9oYW5kbGVyX291dCcsIHR5cHJlY2VpdmUgPT4gJy0nLCB0 eXBzZW5kID0+ICctJywKKyAgdHlwYWxpZ24gPT4gJ2knIH0sCiB7IG9pZCA9PiAnMjY5JywKICAg dHlwbmFtZSA9PiAndGFibGVfYW1faGFuZGxlcicsCiAgIGRlc2NyID0+ICdwc2V1ZG8tdHlwZSBm b3IgdGhlIHJlc3VsdCBvZiBhIHRhYmxlIEFNIGhhbmRsZXIgZnVuY3Rpb24nLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv Y29weWFwaS5oCmluZGV4IGViNjhmMmZiN2IuLjljMjVlMWM0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 YXBpLmgKQEAgLTI5LDYgKzI5LDggQEAgdHlwZWRlZiB2b2lkICgqQ29weVRvRW5kX2Z1bmN0aW9u KSAoQ29weVRvU3RhdGUgY3N0YXRlKTsKIC8qIFJvdXRpbmVzIGZvciBhIENPUFkgVE8gZm9ybWF0 IGltcGxlbWVudGF0aW9uLiAqLwogdHlwZWRlZiBzdHJ1Y3QgQ29weVRvUm91dGluZQogeworCU5v ZGVUYWcJCXR5cGU7CisKIAkvKgogCSAqIENhbGxlZCBmb3IgcHJvY2Vzc2luZyBvbmUgQ09QWSBU TyBvcHRpb24uIFRoaXMgd2lsbCByZXR1cm4gZmFsc2Ugd2hlbgogCSAqIHRoZSBnaXZlbiBvcHRp b24gaXMgaW52YWxpZC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL21lc29uLmJ1aWxk IGIvc3JjL2luY2x1ZGUvbm9kZXMvbWVzb24uYnVpbGQKaW5kZXggYjY2NWU1NWI2NS4uMTAzZGYx YTc4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvbWVzb24uYnVpbGQKQEAgLTExLDYgKzExLDcgQEAgbm9kZV9zdXBwb3J0 X2lucHV0X2kgPSBbCiAgICdhY2Nlc3Mvc2Rpci5oJywKICAgJ2FjY2Vzcy90YWJsZWFtLmgnLAog ICAnYWNjZXNzL3RzbWFwaS5oJywKKyAgJ2NvbW1hbmRzL2NvcHlhcGkuaCcsCiAgICdjb21tYW5k cy9ldmVudF90cmlnZ2VyLmgnLAogICAnY29tbWFuZHMvdHJpZ2dlci5oJywKICAgJ2V4ZWN1dG9y L3R1cHRhYmxlLmgnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3Ny Yy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggZTMyYzg5MjVmNi4uOWQ1N2I4NjhkNSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVz L01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIFNVQkRJUlMgPSBcCiAJCSAgc3BnaXN0X25hbWVf b3BzIFwKIAkJICB0ZXN0X2Jsb29tZmlsdGVyIFwKIAkJICB0ZXN0X2NvcHlfY2FsbGJhY2tzIFwK KwkJICB0ZXN0X2NvcHlfZm9ybWF0IFwKIAkJICB0ZXN0X2N1c3RvbV9ybWdycyBcCiAJCSAgdGVz dF9kZGxfZGVwYXJzZSBcCiAJCSAgdGVzdF9kc2EgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMzk3 ZTA5MDZlNi4uZDc2ZjJhNjAwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5i dWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCkBAIC0xMyw2ICsxMyw3IEBA IHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcignc3NsX3Bhc3NwaHJhc2VfY2FsbGJh Y2snKQogc3ViZGlyKCd0ZXN0X2Jsb29tZmlsdGVyJykKIHN1YmRpcigndGVzdF9jb3B5X2NhbGxi YWNrcycpCitzdWJkaXIoJ3Rlc3RfY29weV9mb3JtYXQnKQogc3ViZGlyKCd0ZXN0X2N1c3RvbV9y bWdycycpCiBzdWJkaXIoJ3Rlc3RfZGRsX2RlcGFyc2UnKQogc3ViZGlyKCd0ZXN0X2RzYScpCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvLmdpdGlnbm9yZSBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVkY2IzZmY5NzIKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvLmdpdGlnbm9yZQpAQCAtMCwwICsx LDQgQEAKKyMgR2VuZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisvbG9nLworL3Jlc3VsdHMvCisvdG1w X2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L01h a2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L01ha2VmaWxlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg0OTdmOTE2MjQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvTWFrZWZpbGUKQEAgLTAs MCArMSwyMyBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvTWFrZWZpbGUK KworTU9EVUxFX2JpZyA9IHRlc3RfY29weV9mb3JtYXQKK09CSlMgPSBcCisJJChXSU4zMlJFUykg XAorCXRlc3RfY29weV9mb3JtYXQubworUEdGSUxFREVTQyA9ICJ0ZXN0X2NvcHlfZm9ybWF0IC0g dGVzdCBjdXN0b20gQ09QWSBGT1JNQVQiCisKK0VYVEVOU0lPTiA9IHRlc3RfY29weV9mb3JtYXQK K0RBVEEgPSB0ZXN0X2NvcHlfZm9ybWF0LS0xLjAuc3FsCisKK1JFR1JFU1MgPSB0ZXN0X2NvcHlf Zm9ybWF0CisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0g JChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJk aXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQKK3RvcF9idWlsZGRpciA9IC4u Ly4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitp bmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9leHBlY3RlZC90ZXN0 X2NvcHlfZm9ybWF0Lm91dCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9leHBl Y3RlZC90ZXN0X2NvcHlfZm9ybWF0Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi4zYTI0YWU3Yjk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2NvcHlfZm9ybWF0L2V4cGVjdGVkL3Rlc3RfY29weV9mb3JtYXQub3V0CkBAIC0wLDAgKzEs MTcgQEAKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9jb3B5X2Zvcm1hdDsKK0NSRUFURSBUQUJMRSBw dWJsaWMudGVzdCAoYSBJTlQsIGIgSU5ULCBjIElOVCk7CitJTlNFUlQgSU5UTyBwdWJsaWMudGVz dCBWQUxVRVMgKDEsIDIsIDMpLCAoMTIsIDM0LCA1NiksICgxMjMsIDQ1NiwgNzg5KTsKK0NPUFkg cHVibGljLnRlc3QgVE8gc3Rkb3V0IFdJVEggKAorCW9wdGlvbl9iZWZvcmUgJ2JlZm9yZScsCisJ Zm9ybWF0ICd0ZXN0X2NvcHlfZm9ybWF0JywKKwlvcHRpb25fYWZ0ZXIgJ2FmdGVyJworKTsKK05P VElDRTogIHRlc3RfY29weV9mb3JtYXQ6IGlzX2Zyb209ZmFsc2UKK05PVElDRTogIENvcHlUb1By b2Nlc3NPcHRpb246ICJvcHRpb25fYmVmb3JlIj0iYmVmb3JlIgorTk9USUNFOiAgQ29weVRvUHJv Y2Vzc09wdGlvbjogIm9wdGlvbl9hZnRlciI9ImFmdGVyIgorTk9USUNFOiAgQ29weVRvR2V0Rm9y bWF0CitOT1RJQ0U6ICBDb3B5VG9TdGFydDogbmF0dHM9MworTk9USUNFOiAgQ29weVRvT25lUm93 OiB0dHNfbnZhbGlkPTMKK05PVElDRTogIENvcHlUb09uZVJvdzogdHRzX252YWxpZD0zCitOT1RJ Q0U6ICBDb3B5VG9PbmVSb3c6IHR0c19udmFsaWQ9MworTk9USUNFOiAgQ29weVRvRW5kCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGNlZmU3YjcwOQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9tZXNvbi5idWlsZApAQCAtMCwwICsx LDMzIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKwordGVzdF9jb3B5X2Zvcm1hdF9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X2Nv cHlfZm9ybWF0LmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9j b3B5X2Zvcm1hdF9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0 cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9jb3B5X2Zvcm1hdCcsCisgICAgJy0tRklM RURFU0MnLCAndGVzdF9jb3B5X2Zvcm1hdCAtIHRlc3QgY3VzdG9tIENPUFkgRk9STUFUJyxdKQor ZW5kaWYKKwordGVzdF9jb3B5X2Zvcm1hdCA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfY29weV9mb3Jt YXQnLAorICB0ZXN0X2NvcHlfZm9ybWF0X3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2Rf YXJncywKKykKK3Rlc3RfaW5zdGFsbF9saWJzICs9IHRlc3RfY29weV9mb3JtYXQKKwordGVzdF9p bnN0YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X2NvcHlfZm9ybWF0LmNvbnRyb2wnLAorICAn dGVzdF9jb3B5X2Zvcm1hdC0tMS4wLnNxbCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAn dGVzdF9jb3B5X2Zvcm1hdCcsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAor ICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAncmVncmVzcyc6IHsKKyAgICAn c3FsJzogWworICAgICAgJ3Rlc3RfY29weV9mb3JtYXQnLAorICAgIF0sCisgIH0sCit9CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvc3FsL3Rlc3RfY29weV9m b3JtYXQuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3NxbC90ZXN0X2Nv cHlfZm9ybWF0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZWI3 ZWQyZTExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9y bWF0L3NxbC90ZXN0X2NvcHlfZm9ybWF0LnNxbApAQCAtMCwwICsxLDggQEAKK0NSRUFURSBFWFRF TlNJT04gdGVzdF9jb3B5X2Zvcm1hdDsKK0NSRUFURSBUQUJMRSBwdWJsaWMudGVzdCAoYSBJTlQs IGIgSU5ULCBjIElOVCk7CitJTlNFUlQgSU5UTyBwdWJsaWMudGVzdCBWQUxVRVMgKDEsIDIsIDMp LCAoMTIsIDM0LCA1NiksICgxMjMsIDQ1NiwgNzg5KTsKK0NPUFkgcHVibGljLnRlc3QgVE8gc3Rk b3V0IFdJVEggKAorCW9wdGlvbl9iZWZvcmUgJ2JlZm9yZScsCisJZm9ybWF0ICd0ZXN0X2NvcHlf Zm9ybWF0JywKKwlvcHRpb25fYWZ0ZXIgJ2FmdGVyJworKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0LS0xLjAuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQtLTEuMC5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDI0ZWEwM2NlOQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlf Zm9ybWF0LS0xLjAuc3FsCkBAIC0wLDAgKzEsOCBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4g aWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRF TlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2NvcHlfZm9ybWF0IiB0byBs b2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3RfY29weV9mb3JtYXQo aW50ZXJuYWwpCisJUkVUVVJOUyBjb3B5X2hhbmRsZXIKKwlBUyAnTU9EVUxFX1BBVEhOQU1FJyBM QU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0 L3Rlc3RfY29weV9mb3JtYXQuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90 ZXN0X2NvcHlfZm9ybWF0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u YTIyMTlhZmNkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5 X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0LmMKQEAgLTAsMCArMSw3NyBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHRlc3RfY29weV9mb3JtYXQuYworICoJCUNvZGUgZm9yIHRlc3Rpbmcg Y3VzdG9tIENPUFkgZm9ybWF0LgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAyNCwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElP TgorICoJCXNyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0 LmMKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgi CisKKyNpbmNsdWRlICJjb21tYW5kcy9jb3B5LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVt LmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKworc3RhdGljIGJvb2wKK0NvcHlUb1Byb2Nlc3NPcHRp b24oQ29weVRvU3RhdGUgY3N0YXRlLCBEZWZFbGVtICpkZWZlbCkKK3sKKwllcmVwb3J0KE5PVElD RSwKKwkJCShlcnJtc2coIkNvcHlUb1Byb2Nlc3NPcHRpb246IFwiJXNcIj1cIiVzXCIiLAorCQkJ CQlkZWZlbC0+ZGVmbmFtZSwgZGVmR2V0U3RyaW5nKGRlZmVsKSkpKTsKKwlyZXR1cm4gdHJ1ZTsK K30KKworc3RhdGljIGludDE2CitDb3B5VG9HZXRGb3JtYXQoQ29weVRvU3RhdGUgY3N0YXRlKQor eworCWVyZXBvcnQoTk9USUNFLCAoZXJybXNnKCJDb3B5VG9HZXRGb3JtYXQiKSkpOworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZAorQ29weVRvU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBU dXBsZURlc2MgdHVwRGVzYykKK3sKKwllcmVwb3J0KE5PVElDRSwgKGVycm1zZygiQ29weVRvU3Rh cnQ6IG5hdHRzPSVkIiwgdHVwRGVzYy0+bmF0dHMpKSk7Cit9CisKK3N0YXRpYyB2b2lkCitDb3B5 VG9PbmVSb3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwll cmVwb3J0KE5PVElDRSwgKGVycm1zZygiQ29weVRvT25lUm93OiB0dHNfbnZhbGlkPSV1Iiwgc2xv dC0+dHRzX252YWxpZCkpKTsKK30KKworc3RhdGljIHZvaWQKK0NvcHlUb0VuZChDb3B5VG9TdGF0 ZSBjc3RhdGUpCit7CisJZXJlcG9ydChOT1RJQ0UsIChlcnJtc2coIkNvcHlUb0VuZCIpKSk7Cit9 CisKK3N0YXRpYyBjb25zdCBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVUZXN0Q29weUZvcm1h dCA9IHsKKwkudHlwZSA9IFRfQ29weVRvUm91dGluZSwKKwkuQ29weVRvUHJvY2Vzc09wdGlvbiA9 IENvcHlUb1Byb2Nlc3NPcHRpb24sCisJLkNvcHlUb0dldEZvcm1hdCA9IENvcHlUb0dldEZvcm1h dCwKKwkuQ29weVRvU3RhcnQgPSBDb3B5VG9TdGFydCwKKwkuQ29weVRvT25lUm93ID0gQ29weVRv T25lUm93LAorCS5Db3B5VG9FbmQgPSBDb3B5VG9FbmQsCit9OworCitQR19GVU5DVElPTl9JTkZP X1YxKHRlc3RfY29weV9mb3JtYXQpOworRGF0dW0KK3Rlc3RfY29weV9mb3JtYXQoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlib29sCQlpc19mcm9tID0gUEdfR0VUQVJHX0JPT0woMCk7CisKKwllcmVw b3J0KE5PVElDRSwKKwkJCShlcnJtc2coInRlc3RfY29weV9mb3JtYXQ6IGlzX2Zyb209JXMiLCBp c19mcm9tID8gInRydWUiIDogImZhbHNlIikpKTsKKworCWlmIChpc19mcm9tKQorCQllbG9nKEVS Uk9SLCAiQ09QWSBGUk9NIGlzbid0IHN1cHBvcnRlZCB5ZXQiKTsKKworCVBHX1JFVFVSTl9QT0lO VEVSKCZDb3B5VG9Sb3V0aW5lVGVzdENvcHlGb3JtYXQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQuY29udHJvbCBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0LmNvbnRyb2wK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjA1YTYzNjIzNQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlf Zm9ybWF0LmNvbnRyb2wKQEAgLTAsMCArMSw0IEBACitjb21tZW50ID0gJ1Rlc3QgY29kZSBmb3Ig Y3VzdG9tIENPUFkgZm9ybWF0JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRo bmFtZSA9ICckbGliZGlyL3Rlc3RfY29weV9mb3JtYXQnCityZWxvY2F0YWJsZSA9IHRydWUKLS0g CjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0005-Extract-COPY-FROM-format-implementations.patch" Content-Disposition: attachment; filename="v8-0005-Extract-COPY-FROM-format-implementations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w44 RnJvbSA3ODE5NTVmMTlhZDI3Y2RkNjY3NDhiZTUzOWJmNDVjZjFiOTI1ODU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogVHVlLCAyMyBKYW4gMjAyNCAxNzoyMToyMyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDUv MTBdIEV4dHJhY3QgQ09QWSBGUk9NIGZvcm1hdCBpbXBsZW1lbnRhdGlvbnMKClRoaXMgZG9lc24n dCBjaGFuZ2UgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIFRoaXMganVzdCBpbnRyb2R1Y2VzCkNvcHlG cm9tUm91dGluZSwgd2hpY2gganVzdCBoYXMgZnVuY3Rpb24gcG9pbnRlcnMgb2YgZm9ybWF0Cmlt cGxlbWVudGF0aW9uIGxpa2UgVHVwbGVUYWJsZVNsb3RPcHMsIGFuZCB1c2UgaXQgZm9yIGV4aXN0 aW5nICJ0ZXh0IiwKImNzdiIgYW5kICJiaW5hcnkiIGZvcm1hdCBpbXBsZW1lbnRhdGlvbnMuCgpO b3RlIHRoYXQgQ29weUZyb21Sb3V0aW5lIGNhbid0IGJlIHVzZWQgZnJvbSBleHRlbnNpb25zIHll dCBiZWNhdXNlCkNvcHlSZWFkKigpIGFyZW4ndCBleHBvcnRlZCB5ZXQuIEV4dGVuc2lvbnMgY2Fu J3QgcmVhZCBkYXRhIGZyb20gYQpzb3VyY2Ugd2l0aG91dCBDb3B5UmVhZCooKS4gVGhleSB3aWxs IGJlIGV4cG9ydGVkIGJ5IHN1YnNlcXVlbnQKcGF0Y2hlcy4KLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5LmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMgICAgICAgICAgfCAyMTYgKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5ZnJvbXBhcnNlLmMgICAgIHwgMzI2ICsrKysrKysrKysrKy0tLS0tLS0tLS0tCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmggICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2NvcHlhcGkuaCAgICAgICAgICAgfCAgNDQgKysrCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIHwgICA0ICsKIDYgZmlsZXMgY2hhbmdlZCwgMzkx IGluc2VydGlvbnMoKyksIDIwNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggNmYw ZGIwYWU3Yy4uZWM2ZGZmZjhhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDU5LDEyICs0NTksMTQg QEAgUHJvY2Vzc0NvcHlPcHRpb25DdXN0b21Gb3JtYXQoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCWVs c2UgaWYgKHN0cmNtcChmb3JtYXQsICJjc3YiKSA9PSAwKQogCXsKIAkJb3B0c19vdXQtPmNzdl9t b2RlID0gdHJ1ZTsKKwkJb3B0c19vdXQtPmZyb21fcm91dGluZSA9ICZDb3B5RnJvbVJvdXRpbmVD U1Y7CiAJCW9wdHNfb3V0LT50b19yb3V0aW5lID0gJkNvcHlUb1JvdXRpbmVDU1Y7CiAJCXJldHVy bjsKIAl9CiAJZWxzZSBpZiAoc3RyY21wKGZvcm1hdCwgImJpbmFyeSIpID09IDApCiAJewogCQlv cHRzX291dC0+YmluYXJ5ID0gdHJ1ZTsKKwkJb3B0c19vdXQtPmZyb21fcm91dGluZSA9ICZDb3B5 RnJvbVJvdXRpbmVCaW5hcnk7CiAJCW9wdHNfb3V0LT50b19yb3V0aW5lID0gJkNvcHlUb1JvdXRp bmVCaW5hcnk7CiAJCXJldHVybjsKIAl9CkBAIC01MzMsNiArNTM1LDcgQEAgUHJvY2Vzc0NvcHlP cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlvcHRzX291dC0+ZmlsZV9lbmNvZGluZyA9IC0x OwogCiAJLyogVGV4dCBpcyB0aGUgZGVmYXVsdCBmb3JtYXQuICovCisJb3B0c19vdXQtPmZyb21f cm91dGluZSA9ICZDb3B5RnJvbVJvdXRpbmVUZXh0OwogCW9wdHNfb3V0LT50b19yb3V0aW5lID0g JkNvcHlUb1JvdXRpbmVUZXh0OwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IGZi M2Q0ZDkyOTYuLmQ1NTZlYmI1ZDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwpAQCAtMTA4LDYg KzEwOCwxNzAgQEAgc3RhdGljIGNoYXIgKmxpbWl0X3ByaW50b3V0X2xlbmd0aChjb25zdCBjaGFy ICpzdHIpOwogCiBzdGF0aWMgdm9pZCBDbG9zZVBpcGVGcm9tUHJvZ3JhbShDb3B5RnJvbVN0YXRl IGNzdGF0ZSk7CiAKKworLyoKKyAqIENvcHlGcm9tUm91dGluZSBpbXBsZW1lbnRhdGlvbnMuCisg Ki8KKworLyoKKyAqIENvcHlGcm9tUm91dGluZSBpbXBsZW1lbnRhdGlvbiBmb3IgInRleHQiIGFu ZCAiY3N2Ii4gQ29weUZyb21UZXh0KigpCisgKiByZWZlciBjc3RhdGUtPm9wdHMuY3N2X21vZGUg YW5kIGNoYW5nZSB0aGVpciBiZWhhdmlvci4gV2UgY2FuIHNwbGl0IHRoaXMKKyAqIGltcGxlbWVu dGF0aW9uIGFuZCBzdG9wIHJlZmVycmluZyBjc3RhdGUtPm9wdHMuY3N2X21vZGUgbGF0ZXIuCisg Ki8KKworLyogQWxsICJ0ZXh0IiBhbmQgImNzdiIgb3B0aW9ucyBhcmUgcGFyc2VkIGluIFByb2Nl c3NDb3B5T3B0aW9ucygpLiBXZSBtYXkKKyAqIG1vdmUgdGhlIGNvZGUgdG8gaGVyZSBsYXRlci4g Ki8KK3N0YXRpYyBib29sCitDb3B5RnJvbVRleHRQcm9jZXNzT3B0aW9uKENvcHlGcm9tU3RhdGUg Y3N0YXRlLCBEZWZFbGVtICpkZWZlbCkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBp bnQxNgorQ29weUZyb21UZXh0R2V0Rm9ybWF0KENvcHlGcm9tU3RhdGUgY3N0YXRlKQoreworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZAorQ29weUZyb21UZXh0U3RhcnQoQ29weUZyb21TdGF0 ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKQoreworCUF0dHJOdW1iZXIJbnVtX3BoeXNfYXR0 cnMgPSB0dXBEZXNjLT5uYXR0czsKKwlBdHRyTnVtYmVyCWF0dHJfY291bnQ7CisKKwkvKgorCSAq IElmIGVuY29kaW5nIGNvbnZlcnNpb24gaXMgbmVlZGVkLCB3ZSBuZWVkIGFub3RoZXIgYnVmZmVy IHRvIGhvbGQgdGhlCisJICogY29udmVydGVkIGlucHV0IGRhdGEuICBPdGhlcndpc2UsIHdlIGNh biBqdXN0IHBvaW50IGlucHV0X2J1ZiB0byB0aGUKKwkgKiBzYW1lIGJ1ZmZlciBhcyByYXdfYnVm LgorCSAqLworCWlmIChjc3RhdGUtPm5lZWRfdHJhbnNjb2RpbmcpCisJeworCQljc3RhdGUtPmlu cHV0X2J1ZiA9IChjaGFyICopIHBhbGxvYyhJTlBVVF9CVUZfU0laRSArIDEpOworCQljc3RhdGUt PmlucHV0X2J1Zl9pbmRleCA9IGNzdGF0ZS0+aW5wdXRfYnVmX2xlbiA9IDA7CisJfQorCWVsc2UK KwkJY3N0YXRlLT5pbnB1dF9idWYgPSBjc3RhdGUtPnJhd19idWY7CisJY3N0YXRlLT5pbnB1dF9y ZWFjaGVkX2VvZiA9IGZhbHNlOworCisJaW5pdFN0cmluZ0luZm8oJmNzdGF0ZS0+bGluZV9idWYp OworCisJLyoKKwkgKiBQaWNrIHVwIHRoZSByZXF1aXJlZCBjYXRhbG9nIGluZm9ybWF0aW9uIGZv ciBlYWNoIGF0dHJpYnV0ZSBpbiB0aGUKKwkgKiByZWxhdGlvbiwgaW5jbHVkaW5nIHRoZSBpbnB1 dCBmdW5jdGlvbiwgdGhlIGVsZW1lbnQgdHlwZSAodG8gcGFzcyB0bworCSAqIHRoZSBpbnB1dCBm dW5jdGlvbikuCisJICovCisJY3N0YXRlLT5pbl9mdW5jdGlvbnMgPSAoRm1nckluZm8gKikgcGFs bG9jKG51bV9waHlzX2F0dHJzICogc2l6ZW9mKEZtZ3JJbmZvKSk7CisJY3N0YXRlLT50eXBpb3Bh cmFtcyA9IChPaWQgKikgcGFsbG9jKG51bV9waHlzX2F0dHJzICogc2l6ZW9mKE9pZCkpOworCWZv ciAoaW50IGF0dG51bSA9IDE7IGF0dG51bSA8PSBudW1fcGh5c19hdHRyczsgYXR0bnVtKyspCisJ eworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG51 bSAtIDEpOworCQlPaWQJCQlpbl9mdW5jX29pZDsKKworCQkvKiBXZSBkb24ndCBuZWVkIGluZm8g Zm9yIGRyb3BwZWQgYXR0cmlidXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQpCisJCQlj b250aW51ZTsKKworCQkvKiBGZXRjaCB0aGUgaW5wdXQgZnVuY3Rpb24gYW5kIHR5cGlvcGFyYW0g aW5mbyAqLworCQlnZXRUeXBlSW5wdXRJbmZvKGF0dC0+YXR0dHlwaWQsCisJCQkJCQkgJmluX2Z1 bmNfb2lkLCAmY3N0YXRlLT50eXBpb3BhcmFtc1thdHRudW0gLSAxXSk7CisJCWZtZ3JfaW5mbyhp bl9mdW5jX29pZCwgJmNzdGF0ZS0+aW5fZnVuY3Rpb25zW2F0dG51bSAtIDFdKTsKKwl9CisKKwkv KiBjcmVhdGUgd29ya3NwYWNlIGZvciBDb3B5UmVhZEF0dHJpYnV0ZXMgcmVzdWx0cyAqLworCWF0 dHJfY291bnQgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOworCWNzdGF0ZS0+bWF4 X2ZpZWxkcyA9IGF0dHJfY291bnQ7CisJY3N0YXRlLT5yYXdfZmllbGRzID0gKGNoYXIgKiopIHBh bGxvYyhhdHRyX2NvdW50ICogc2l6ZW9mKGNoYXIgKikpOworfQorCitzdGF0aWMgdm9pZAorQ29w eUZyb21UZXh0RW5kKENvcHlGcm9tU3RhdGUgY3N0YXRlKQoreworfQorCisvKgorICogQ29weUZy b21Sb3V0aW5lIGltcGxlbWVudGF0aW9uIGZvciAiYmluYXJ5Ii4KKyAqLworCisvKiBBbGwgImJp bmFyeSIgb3B0aW9ucyBhcmUgcGFyc2VkIGluIFByb2Nlc3NDb3B5T3B0aW9ucygpLiBXZSBtYXkg bW92ZSB0aGUKKyAqIGNvZGUgdG8gaGVyZSBsYXRlci4gKi8KK3N0YXRpYyBib29sCitDb3B5RnJv bUJpbmFyeVByb2Nlc3NPcHRpb24oQ29weUZyb21TdGF0ZSBjc3RhdGUsIERlZkVsZW0gKmRlZmVs KQoreworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGludDE2CitDb3B5RnJvbUJpbmFyeUdl dEZvcm1hdChDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKK3sKKwlyZXR1cm4gMTsKK30KKworc3RhdGlj IHZvaWQKK0NvcHlGcm9tQmluYXJ5U3RhcnQoQ29weUZyb21TdGF0ZSBjc3RhdGUsIFR1cGxlRGVz YyB0dXBEZXNjKQoreworCUF0dHJOdW1iZXIJbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNjLT5uYXR0 czsKKworCS8qCisJICogUGljayB1cCB0aGUgcmVxdWlyZWQgY2F0YWxvZyBpbmZvcm1hdGlvbiBm b3IgZWFjaCBhdHRyaWJ1dGUgaW4gdGhlCisJICogcmVsYXRpb24sIGluY2x1ZGluZyB0aGUgaW5w dXQgZnVuY3Rpb24sIHRoZSBlbGVtZW50IHR5cGUgKHRvIHBhc3MgdG8KKwkgKiB0aGUgaW5wdXQg ZnVuY3Rpb24pLgorCSAqLworCWNzdGF0ZS0+aW5fZnVuY3Rpb25zID0gKEZtZ3JJbmZvICopIHBh bGxvYyhudW1fcGh5c19hdHRycyAqIHNpemVvZihGbWdySW5mbykpOworCWNzdGF0ZS0+dHlwaW9w YXJhbXMgPSAoT2lkICopIHBhbGxvYyhudW1fcGh5c19hdHRycyAqIHNpemVvZihPaWQpKTsKKwlm b3IgKGludCBhdHRudW0gPSAxOyBhdHRudW0gPD0gbnVtX3BoeXNfYXR0cnM7IGF0dG51bSsrKQor CXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBEZXNjLCBhdHRu dW0gLSAxKTsKKwkJT2lkCQkJaW5fZnVuY19vaWQ7CisKKwkJLyogV2UgZG9uJ3QgbmVlZCBpbmZv IGZvciBkcm9wcGVkIGF0dHJpYnV0ZXMgKi8KKwkJaWYgKGF0dC0+YXR0aXNkcm9wcGVkKQorCQkJ Y29udGludWU7CisKKwkJLyogRmV0Y2ggdGhlIGlucHV0IGZ1bmN0aW9uIGFuZCB0eXBpb3BhcmFt IGluZm8gKi8KKwkJZ2V0VHlwZUJpbmFyeUlucHV0SW5mbyhhdHQtPmF0dHR5cGlkLAorCQkJCQkJ CSAgICZpbl9mdW5jX29pZCwgJmNzdGF0ZS0+dHlwaW9wYXJhbXNbYXR0bnVtIC0gMV0pOworCQlm bWdyX2luZm8oaW5fZnVuY19vaWQsICZjc3RhdGUtPmluX2Z1bmN0aW9uc1thdHRudW0gLSAxXSk7 CisJfQorCisJLyogUmVhZCBhbmQgdmVyaWZ5IGJpbmFyeSBoZWFkZXIgKi8KKwlSZWNlaXZlQ29w eUJpbmFyeUhlYWRlcihjc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorQ29weUZyb21CaW5hcnlF bmQoQ29weUZyb21TdGF0ZSBjc3RhdGUpCit7Cit9CisKK0NvcHlGcm9tUm91dGluZSBDb3B5RnJv bVJvdXRpbmVUZXh0ID0geworCS5Db3B5RnJvbVByb2Nlc3NPcHRpb24gPSBDb3B5RnJvbVRleHRQ cm9jZXNzT3B0aW9uLAorCS5Db3B5RnJvbUdldEZvcm1hdCA9IENvcHlGcm9tVGV4dEdldEZvcm1h dCwKKwkuQ29weUZyb21TdGFydCA9IENvcHlGcm9tVGV4dFN0YXJ0LAorCS5Db3B5RnJvbU9uZVJv dyA9IENvcHlGcm9tVGV4dE9uZVJvdywKKwkuQ29weUZyb21FbmQgPSBDb3B5RnJvbVRleHRFbmQs Cit9OworCisvKgorICogV2UgY2FuIHVzZSB0aGUgc2FtZSBDb3B5RnJvbVJvdXRpbmUgZm9yIGJv dGggb2YgInRleHQiIGFuZCAiY3N2IiBiZWNhdXNlCisgKiBDb3B5RnJvbVRleHQqKCkgcmVmZXIg Y3N0YXRlLT5vcHRzLmNzdl9tb2RlIGFuZCBjaGFuZ2UgdGhlaXIgYmVoYXZpb3IuIFdlIGNhbgor ICogc3BsaXQgdGhlIGltcGxlbWVudGF0aW9ucyBhbmQgc3RvcCByZWZlcnJpbmcgY3N0YXRlLT5v cHRzLmNzdl9tb2RlIGxhdGVyLgorICovCitDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5l Q1NWID0geworCS5Db3B5RnJvbVByb2Nlc3NPcHRpb24gPSBDb3B5RnJvbVRleHRQcm9jZXNzT3B0 aW9uLAorCS5Db3B5RnJvbUdldEZvcm1hdCA9IENvcHlGcm9tVGV4dEdldEZvcm1hdCwKKwkuQ29w eUZyb21TdGFydCA9IENvcHlGcm9tVGV4dFN0YXJ0LAorCS5Db3B5RnJvbU9uZVJvdyA9IENvcHlG cm9tVGV4dE9uZVJvdywKKwkuQ29weUZyb21FbmQgPSBDb3B5RnJvbVRleHRFbmQsCit9OworCitD b3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5lQmluYXJ5ID0geworCS5Db3B5RnJvbVByb2Nl c3NPcHRpb24gPSBDb3B5RnJvbUJpbmFyeVByb2Nlc3NPcHRpb24sCisJLkNvcHlGcm9tR2V0Rm9y bWF0ID0gQ29weUZyb21CaW5hcnlHZXRGb3JtYXQsCisJLkNvcHlGcm9tU3RhcnQgPSBDb3B5RnJv bUJpbmFyeVN0YXJ0LAorCS5Db3B5RnJvbU9uZVJvdyA9IENvcHlGcm9tQmluYXJ5T25lUm93LAor CS5Db3B5RnJvbUVuZCA9IENvcHlGcm9tQmluYXJ5RW5kLAorfTsKKworCiAvKgogICogZXJyb3Ig Y29udGV4dCBjYWxsYmFjayBmb3IgQ09QWSBGUk9NCiAgKgpAQCAtMTM4NCw5ICsxNTQ4LDYgQEAg QmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJVHVwbGVEZXNjCXR1cERlc2M7CiAJ QXR0ck51bWJlcgludW1fcGh5c19hdHRycywKIAkJCQludW1fZGVmYXVsdHM7Ci0JRm1nckluZm8g ICAqaW5fZnVuY3Rpb25zOwotCU9pZAkJICAgKnR5cGlvcGFyYW1zOwotCU9pZAkJCWluX2Z1bmNf b2lkOwogCWludAkJICAgKmRlZm1hcDsKIAlFeHByU3RhdGUgKipkZWZleHByczsKIAlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CkBAIC0xNTcxLDI1ICsxNzMyLDYgQEAgQmVnaW5Db3B5RnJvbShQ YXJzZVN0YXRlICpwc3RhdGUsCiAJY3N0YXRlLT5yYXdfYnVmX2luZGV4ID0gY3N0YXRlLT5yYXdf YnVmX2xlbiA9IDA7CiAJY3N0YXRlLT5yYXdfcmVhY2hlZF9lb2YgPSBmYWxzZTsKIAotCWlmICgh Y3N0YXRlLT5vcHRzLmJpbmFyeSkKLQl7Ci0JCS8qCi0JCSAqIElmIGVuY29kaW5nIGNvbnZlcnNp b24gaXMgbmVlZGVkLCB3ZSBuZWVkIGFub3RoZXIgYnVmZmVyIHRvIGhvbGQKLQkJICogdGhlIGNv bnZlcnRlZCBpbnB1dCBkYXRhLiAgT3RoZXJ3aXNlLCB3ZSBjYW4ganVzdCBwb2ludCBpbnB1dF9i dWYKLQkJICogdG8gdGhlIHNhbWUgYnVmZmVyIGFzIHJhd19idWYuCi0JCSAqLwotCQlpZiAoY3N0 YXRlLT5uZWVkX3RyYW5zY29kaW5nKQotCQl7Ci0JCQljc3RhdGUtPmlucHV0X2J1ZiA9IChjaGFy ICopIHBhbGxvYyhJTlBVVF9CVUZfU0laRSArIDEpOwotCQkJY3N0YXRlLT5pbnB1dF9idWZfaW5k ZXggPSBjc3RhdGUtPmlucHV0X2J1Zl9sZW4gPSAwOwotCQl9Ci0JCWVsc2UKLQkJCWNzdGF0ZS0+ aW5wdXRfYnVmID0gY3N0YXRlLT5yYXdfYnVmOwotCQljc3RhdGUtPmlucHV0X3JlYWNoZWRfZW9m ID0gZmFsc2U7Ci0KLQkJaW5pdFN0cmluZ0luZm8oJmNzdGF0ZS0+bGluZV9idWYpOwotCX0KLQog CWluaXRTdHJpbmdJbmZvKCZjc3RhdGUtPmF0dHJpYnV0ZV9idWYpOwogCiAJLyogQXNzaWduIHJh bmdlIHRhYmxlIGFuZCBydGVwZXJtaW5mb3MsIHdlJ2xsIG5lZWQgdGhlbSBpbiBDb3B5RnJvbS4g Ki8KQEAgLTE2MDgsOCArMTc1MCw2IEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRl LAogCSAqIHRoZSBpbnB1dCBmdW5jdGlvbiksIGFuZCBpbmZvIGFib3V0IGRlZmF1bHRzIGFuZCBj b25zdHJhaW50cy4gKFdoaWNoCiAJICogaW5wdXQgZnVuY3Rpb24gd2UgdXNlIGRlcGVuZHMgb24g dGV4dC9iaW5hcnkgZm9ybWF0IGNob2ljZS4pCiAJICovCi0JaW5fZnVuY3Rpb25zID0gKEZtZ3JJ bmZvICopIHBhbGxvYyhudW1fcGh5c19hdHRycyAqIHNpemVvZihGbWdySW5mbykpOwotCXR5cGlv cGFyYW1zID0gKE9pZCAqKSBwYWxsb2MobnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoT2lkKSk7CiAJ ZGVmbWFwID0gKGludCAqKSBwYWxsb2MobnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoaW50KSk7CiAJ ZGVmZXhwcnMgPSAoRXhwclN0YXRlICoqKSBwYWxsb2MobnVtX3BoeXNfYXR0cnMgKiBzaXplb2Yo RXhwclN0YXRlICopKTsKIApAQCAtMTYyMSwxNSArMTc2MSw2IEBAIEJlZ2luQ29weUZyb20oUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQpCiAJCQljb250aW51ZTsK IAotCQkvKiBGZXRjaCB0aGUgaW5wdXQgZnVuY3Rpb24gYW5kIHR5cGlvcGFyYW0gaW5mbyAqLwot CQlpZiAoY3N0YXRlLT5vcHRzLmJpbmFyeSkKLQkJCWdldFR5cGVCaW5hcnlJbnB1dEluZm8oYXR0 LT5hdHR0eXBpZCwKLQkJCQkJCQkJICAgJmluX2Z1bmNfb2lkLCAmdHlwaW9wYXJhbXNbYXR0bnVt IC0gMV0pOwotCQllbHNlCi0JCQlnZXRUeXBlSW5wdXRJbmZvKGF0dC0+YXR0dHlwaWQsCi0JCQkJ CQkJICZpbl9mdW5jX29pZCwgJnR5cGlvcGFyYW1zW2F0dG51bSAtIDFdKTsKLQkJZm1ncl9pbmZv KGluX2Z1bmNfb2lkLCAmaW5fZnVuY3Rpb25zW2F0dG51bSAtIDFdKTsKLQogCQkvKiBHZXQgZGVm YXVsdCBpbmZvIGlmIGF2YWlsYWJsZSAqLwogCQlkZWZleHByc1thdHRudW0gLSAxXSA9IE5VTEw7 CiAKQEAgLTE2ODksOCArMTgyMCw2IEBAIEJlZ2luQ29weUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRl LAogCWNzdGF0ZS0+Ynl0ZXNfcHJvY2Vzc2VkID0gMDsKIAogCS8qIFdlIGtlZXAgdGhvc2UgdmFy aWFibGVzIGluIGNzdGF0ZS4gKi8KLQljc3RhdGUtPmluX2Z1bmN0aW9ucyA9IGluX2Z1bmN0aW9u czsKLQljc3RhdGUtPnR5cGlvcGFyYW1zID0gdHlwaW9wYXJhbXM7CiAJY3N0YXRlLT5kZWZtYXAg PSBkZWZtYXA7CiAJY3N0YXRlLT5kZWZleHBycyA9IGRlZmV4cHJzOwogCWNzdGF0ZS0+dm9sYXRp bGVfZGVmZXhwcnMgPSB2b2xhdGlsZV9kZWZleHByczsKQEAgLTE3NjMsMjAgKzE4OTIsNyBAQCBC ZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfbXVsdGlfcGFyYW0oMywgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7CiAKLQlpZiAo Y3N0YXRlLT5vcHRzLmJpbmFyeSkKLQl7Ci0JCS8qIFJlYWQgYW5kIHZlcmlmeSBiaW5hcnkgaGVh ZGVyICovCi0JCVJlY2VpdmVDb3B5QmluYXJ5SGVhZGVyKGNzdGF0ZSk7Ci0JfQotCi0JLyogY3Jl YXRlIHdvcmtzcGFjZSBmb3IgQ29weVJlYWRBdHRyaWJ1dGVzIHJlc3VsdHMgKi8KLQlpZiAoIWNz dGF0ZS0+b3B0cy5iaW5hcnkpCi0JewotCQlBdHRyTnVtYmVyCWF0dHJfY291bnQgPSBsaXN0X2xl bmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCi0JCWNzdGF0ZS0+bWF4X2ZpZWxkcyA9IGF0dHJf Y291bnQ7Ci0JCWNzdGF0ZS0+cmF3X2ZpZWxkcyA9IChjaGFyICoqKSBwYWxsb2MoYXR0cl9jb3Vu dCAqIHNpemVvZihjaGFyICopKTsKLQl9CisJY3N0YXRlLT5vcHRzLmZyb21fcm91dGluZS0+Q29w eUZyb21TdGFydChjc3RhdGUsIHR1cERlc2MpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOwogCkBAIC0xNzg5LDYgKzE5MDUsOCBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIHZvaWQKIEVuZENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogewor CWNzdGF0ZS0+b3B0cy5mcm9tX3JvdXRpbmUtPkNvcHlGcm9tRW5kKGNzdGF0ZSk7CisKIAkvKiBO byBDT1BZIEZST00gcmVsYXRlZCByZXNvdXJjZXMgZXhjZXB0IG1lbW9yeS4gKi8KIAlpZiAoY3N0 YXRlLT5pc19wcm9ncmFtKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRl eCA3Y2FjZDBiNzUyLi40OTYzMmY3NWU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jb3B5ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJz ZS5jCkBAIC0xNzIsNyArMTcyLDcgQEAgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNz dGF0ZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBidWY7CiAJaW50CQkJbmF0dHMgPSBsaXN0X2xlbmd0 aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCWludDE2CQlmb3JtYXQgPSAoY3N0YXRlLT5vcHRzLmJp bmFyeSA/IDEgOiAwKTsKKwlpbnQxNgkJZm9ybWF0ID0gY3N0YXRlLT5vcHRzLmZyb21fcm91dGlu ZS0+Q29weUZyb21HZXRGb3JtYXQoY3N0YXRlKTsKIAlpbnQJCQlpOwogCiAJcHFfYmVnaW5tZXNz YWdlKCZidWYsIFBxTXNnX0NvcHlJblJlc3BvbnNlKTsKQEAgLTg0MCwxOTkgKzg0MCwyMTkgQEAg TmV4dENvcHlGcm9tUmF3RmllbGRzKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICoqKmZpZWxk cywgaW50ICpuZmllbGRzKQogCXJldHVybiB0cnVlOwogfQogCi0vKgotICogUmVhZCBuZXh0IHR1 cGxlIGZyb20gZmlsZSBmb3IgQ09QWSBGUk9NLiBSZXR1cm4gZmFsc2UgaWYgbm8gbW9yZSB0dXBs ZXMuCi0gKgotICogJ2Vjb250ZXh0JyBpcyB1c2VkIHRvIGV2YWx1YXRlIGRlZmF1bHQgZXhwcmVz c2lvbiBmb3IgZWFjaCBjb2x1bW4gdGhhdCBpcwotICogZWl0aGVyIG5vdCByZWFkIGZyb20gdGhl IGZpbGUgb3IgaXMgdXNpbmcgdGhlIERFRkFVTFQgb3B0aW9uIG9mIENPUFkgRlJPTS4KLSAqIEl0 IGNhbiBiZSBOVUxMIHdoZW4gbm8gZGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQsIGkuZS4gd2hlbiBh bGwgY29sdW1ucyBhcmUKLSAqIHJlYWQgZnJvbSB0aGUgZmlsZSwgYW5kIERFRkFVTFQgb3B0aW9u IGlzIHVuc2V0LgotICoKLSAqICd2YWx1ZXMnIGFuZCAnbnVsbHMnIGFycmF5cyBtdXN0IGJlIHRo ZSBzYW1lIGxlbmd0aCBhcyBjb2x1bW5zIG9mIHRoZQotICogcmVsYXRpb24gcGFzc2VkIHRvIEJl Z2luQ29weUZyb20uIFRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIGFycmF5cy4KLSAqLwogYm9vbAot TmV4dENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs Ci0JCQkgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMpCitDb3B5RnJvbVRleHRPbmVSb3coQ29w eUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgRGF0dW0gKnZhbHVlcywg Ym9vbCAqbnVsbHMpCiB7CiAJVHVwbGVEZXNjCXR1cERlc2M7Ci0JQXR0ck51bWJlcgludW1fcGh5 c19hdHRycywKLQkJCQlhdHRyX2NvdW50LAotCQkJCW51bV9kZWZhdWx0cyA9IGNzdGF0ZS0+bnVt X2RlZmF1bHRzOworCUF0dHJOdW1iZXIJYXR0cl9jb3VudDsKIAlGbWdySW5mbyAgICppbl9mdW5j dGlvbnMgPSBjc3RhdGUtPmluX2Z1bmN0aW9uczsKIAlPaWQJCSAgICp0eXBpb3BhcmFtcyA9IGNz dGF0ZS0+dHlwaW9wYXJhbXM7Ci0JaW50CQkJaTsKLQlpbnQJCSAgICpkZWZtYXAgPSBjc3RhdGUt PmRlZm1hcDsKIAlFeHByU3RhdGUgKipkZWZleHBycyA9IGNzdGF0ZS0+ZGVmZXhwcnM7CisJY2hh cgkgICoqZmllbGRfc3RyaW5nczsKKwlMaXN0Q2VsbCAgICpjdXI7CisJaW50CQkJZmxkY3Q7CisJ aW50CQkJZmllbGRubzsKKwljaGFyCSAgICpzdHJpbmc7CiAKIAl0dXBEZXNjID0gUmVsYXRpb25H ZXREZXNjcihjc3RhdGUtPnJlbCk7Ci0JbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNjLT5uYXR0czsK IAlhdHRyX2NvdW50ID0gbGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKIAotCS8qIElu aXRpYWxpemUgYWxsIHZhbHVlcyBmb3Igcm93IHRvIE5VTEwgKi8KLQlNZW1TZXQodmFsdWVzLCAw LCBudW1fcGh5c19hdHRycyAqIHNpemVvZihEYXR1bSkpOwotCU1lbVNldChudWxscywgdHJ1ZSwg bnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9vbCkpOwotCU1lbVNldChjc3RhdGUtPmRlZmF1bHRz LCBmYWxzZSwgbnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9vbCkpOworCS8qIHJlYWQgcmF3IGZp ZWxkcyBpbiB0aGUgbmV4dCBsaW5lICovCisJaWYgKCFOZXh0Q29weUZyb21SYXdGaWVsZHMoY3N0 YXRlLCAmZmllbGRfc3RyaW5ncywgJmZsZGN0KSkKKwkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKCFj c3RhdGUtPm9wdHMuYmluYXJ5KQotCXsKLQkJY2hhcgkgICoqZmllbGRfc3RyaW5nczsKLQkJTGlz dENlbGwgICAqY3VyOwotCQlpbnQJCQlmbGRjdDsKLQkJaW50CQkJZmllbGRubzsKLQkJY2hhcgkg ICAqc3RyaW5nOworCS8qIGNoZWNrIGZvciBvdmVyZmxvd2luZyBmaWVsZHMgKi8KKwlpZiAoYXR0 cl9jb3VudCA+IDAgJiYgZmxkY3QgPiBhdHRyX2NvdW50KQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAorCQkJCSBlcnJtc2coImV4 dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBjb2x1bW4iKSkpOwogCi0JCS8qIHJlYWQgcmF3 IGZpZWxkcyBpbiB0aGUgbmV4dCBsaW5lICovCi0JCWlmICghTmV4dENvcHlGcm9tUmF3RmllbGRz KGNzdGF0ZSwgJmZpZWxkX3N0cmluZ3MsICZmbGRjdCkpCi0JCQlyZXR1cm4gZmFsc2U7CisJZmll bGRubyA9IDA7CiAKLQkJLyogY2hlY2sgZm9yIG92ZXJmbG93aW5nIGZpZWxkcyAqLwotCQlpZiAo YXR0cl9jb3VudCA+IDAgJiYgZmxkY3QgPiBhdHRyX2NvdW50KQorCS8qIExvb3AgdG8gcmVhZCB0 aGUgdXNlciBhdHRyaWJ1dGVzIG9uIHRoZSBsaW5lLiAqLworCWZvcmVhY2goY3VyLCBjc3RhdGUt PmF0dG51bWxpc3QpCisJeworCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1cik7CisJCWlu dAkJCW0gPSBhdHRudW0gLSAxOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NB dHRyKHR1cERlc2MsIG0pOworCisJCWlmIChmaWVsZG5vID49IGZsZGN0KQogCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9CQURfQ09QWV9GSUxFX0ZPUk1BVCksCi0JCQkJ CSBlcnJtc2coImV4dHJhIGRhdGEgYWZ0ZXIgbGFzdCBleHBlY3RlZCBjb2x1bW4iKSkpOworCQkJ CQkgZXJybXNnKCJtaXNzaW5nIGRhdGEgZm9yIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJCU5hbWVT dHIoYXR0LT5hdHRuYW1lKSkpKTsKKwkJc3RyaW5nID0gZmllbGRfc3RyaW5nc1tmaWVsZG5vKytd OwogCi0JCWZpZWxkbm8gPSAwOwotCi0JCS8qIExvb3AgdG8gcmVhZCB0aGUgdXNlciBhdHRyaWJ1 dGVzIG9uIHRoZSBsaW5lLiAqLwotCQlmb3JlYWNoKGN1ciwgY3N0YXRlLT5hdHRudW1saXN0KQor CQlpZiAoY3N0YXRlLT5jb252ZXJ0X3NlbGVjdF9mbGFncyAmJgorCQkJIWNzdGF0ZS0+Y29udmVy dF9zZWxlY3RfZmxhZ3NbbV0pCiAJCXsKLQkJCWludAkJCWF0dG51bSA9IGxmaXJzdF9pbnQoY3Vy KTsKLQkJCWludAkJCW0gPSBhdHRudW0gLSAxOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0g VHVwbGVEZXNjQXR0cih0dXBEZXNjLCBtKTsKLQotCQkJaWYgKGZpZWxkbm8gPj0gZmxkY3QpCi0J CQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9G T1JNQVQpLAotCQkJCQkJIGVycm1zZygibWlzc2luZyBkYXRhIGZvciBjb2x1bW4gXCIlc1wiIiwK LQkJCQkJCQkJTmFtZVN0cihhdHQtPmF0dG5hbWUpKSkpOwotCQkJc3RyaW5nID0gZmllbGRfc3Ry aW5nc1tmaWVsZG5vKytdOwotCi0JCQlpZiAoY3N0YXRlLT5jb252ZXJ0X3NlbGVjdF9mbGFncyAm JgotCQkJCSFjc3RhdGUtPmNvbnZlcnRfc2VsZWN0X2ZsYWdzW21dKQotCQkJewotCQkJCS8qIGln bm9yZSBpbnB1dCBmaWVsZCwgbGVhdmluZyBjb2x1bW4gYXMgTlVMTCAqLwotCQkJCWNvbnRpbnVl OwotCQkJfQorCQkJLyogaWdub3JlIGlucHV0IGZpZWxkLCBsZWF2aW5nIGNvbHVtbiBhcyBOVUxM ICovCisJCQljb250aW51ZTsKKwkJfQogCi0JCQlpZiAoY3N0YXRlLT5vcHRzLmNzdl9tb2RlKQor CQlpZiAoY3N0YXRlLT5vcHRzLmNzdl9tb2RlKQorCQl7CisJCQlpZiAoc3RyaW5nID09IE5VTEwg JiYKKwkJCQljc3RhdGUtPm9wdHMuZm9yY2Vfbm90bnVsbF9mbGFnc1ttXSkKIAkJCXsKLQkJCQlp ZiAoc3RyaW5nID09IE5VTEwgJiYKLQkJCQkJY3N0YXRlLT5vcHRzLmZvcmNlX25vdG51bGxfZmxh Z3NbbV0pCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBGT1JDRV9OT1RfTlVMTCBvcHRpb24gaXMg c2V0IGFuZCBjb2x1bW4gaXMgTlVMTCAtCi0JCQkJCSAqIGNvbnZlcnQgaXQgdG8gdGhlIE5VTEwg c3RyaW5nLgotCQkJCQkgKi8KLQkJCQkJc3RyaW5nID0gY3N0YXRlLT5vcHRzLm51bGxfcHJpbnQ7 Ci0JCQkJfQotCQkJCWVsc2UgaWYgKHN0cmluZyAhPSBOVUxMICYmIGNzdGF0ZS0+b3B0cy5mb3Jj ZV9udWxsX2ZsYWdzW21dCi0JCQkJCQkgJiYgc3RyY21wKHN0cmluZywgY3N0YXRlLT5vcHRzLm51 bGxfcHJpbnQpID09IDApCi0JCQkJewotCQkJCQkvKgotCQkJCQkgKiBGT1JDRV9OVUxMIG9wdGlv biBpcyBzZXQgYW5kIGNvbHVtbiBtYXRjaGVzIHRoZSBOVUxMCi0JCQkJCSAqIHN0cmluZy4gSXQg bXVzdCBoYXZlIGJlZW4gcXVvdGVkLCBvciBvdGhlcndpc2UgdGhlCi0JCQkJCSAqIHN0cmluZyB3 b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzZXQgdG8gTlVMTC4gQ29udmVydCBpdAotCQkJCQkgKiB0 byBOVUxMIGFzIHNwZWNpZmllZC4KLQkJCQkJICovCi0JCQkJCXN0cmluZyA9IE5VTEw7Ci0JCQkJ fQorCQkJCS8qCisJCQkJICogRk9SQ0VfTk9UX05VTEwgb3B0aW9uIGlzIHNldCBhbmQgY29sdW1u IGlzIE5VTEwgLSBjb252ZXJ0CisJCQkJICogaXQgdG8gdGhlIE5VTEwgc3RyaW5nLgorCQkJCSAq LworCQkJCXN0cmluZyA9IGNzdGF0ZS0+b3B0cy5udWxsX3ByaW50OwogCQkJfQotCi0JCQljc3Rh dGUtPmN1cl9hdHRuYW1lID0gTmFtZVN0cihhdHQtPmF0dG5hbWUpOwotCQkJY3N0YXRlLT5jdXJf YXR0dmFsID0gc3RyaW5nOwotCi0JCQlpZiAoc3RyaW5nICE9IE5VTEwpCi0JCQkJbnVsbHNbbV0g PSBmYWxzZTsKLQotCQkJaWYgKGNzdGF0ZS0+ZGVmYXVsdHNbbV0pCisJCQllbHNlIGlmIChzdHJp bmcgIT0gTlVMTCAmJiBjc3RhdGUtPm9wdHMuZm9yY2VfbnVsbF9mbGFnc1ttXQorCQkJCQkgJiYg c3RyY21wKHN0cmluZywgY3N0YXRlLT5vcHRzLm51bGxfcHJpbnQpID09IDApCiAJCQl7CiAJCQkJ LyoKLQkJCQkgKiBUaGUgY2FsbGVyIG11c3Qgc3VwcGx5IGVjb250ZXh0IGFuZCBoYXZlIHN3aXRj aGVkIGludG8gdGhlCi0JCQkJICogcGVyLXR1cGxlIG1lbW9yeSBjb250ZXh0IGluIGl0LgorCQkJ CSAqIEZPUkNFX05VTEwgb3B0aW9uIGlzIHNldCBhbmQgY29sdW1uIG1hdGNoZXMgdGhlIE5VTEwK KwkJCQkgKiBzdHJpbmcuIEl0IG11c3QgaGF2ZSBiZWVuIHF1b3RlZCwgb3Igb3RoZXJ3aXNlIHRo ZSBzdHJpbmcKKwkJCQkgKiB3b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzZXQgdG8gTlVMTC4gQ29u dmVydCBpdCB0byBOVUxMIGFzCisJCQkJICogc3BlY2lmaWVkLgogCQkJCSAqLwotCQkJCUFzc2Vy dChlY29udGV4dCAhPSBOVUxMKTsKLQkJCQlBc3NlcnQoQ3VycmVudE1lbW9yeUNvbnRleHQgPT0g ZWNvbnRleHQtPmVjeHRfcGVyX3R1cGxlX21lbW9yeSk7Ci0KLQkJCQl2YWx1ZXNbbV0gPSBFeGVj RXZhbEV4cHIoZGVmZXhwcnNbbV0sIGVjb250ZXh0LCAmbnVsbHNbbV0pOworCQkJCXN0cmluZyA9 IE5VTEw7CiAJCQl9CisJCX0KKworCQljc3RhdGUtPmN1cl9hdHRuYW1lID0gTmFtZVN0cihhdHQt PmF0dG5hbWUpOworCQljc3RhdGUtPmN1cl9hdHR2YWwgPSBzdHJpbmc7CisKKwkJaWYgKHN0cmlu ZyAhPSBOVUxMKQorCQkJbnVsbHNbbV0gPSBmYWxzZTsKIAorCQlpZiAoY3N0YXRlLT5kZWZhdWx0 c1ttXSkKKwkJewogCQkJLyoKLQkJCSAqIElmIE9OX0VSUk9SIGlzIHNwZWNpZmllZCB3aXRoIElH Tk9SRSwgc2tpcCByb3dzIHdpdGggc29mdAotCQkJICogZXJyb3JzCisJCQkgKiBUaGUgY2FsbGVy IG11c3Qgc3VwcGx5IGVjb250ZXh0IGFuZCBoYXZlIHN3aXRjaGVkIGludG8gdGhlCisJCQkgKiBw ZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgaW4gaXQuCiAJCQkgKi8KLQkJCWVsc2UgaWYgKCFJbnB1 dEZ1bmN0aW9uQ2FsbFNhZmUoJmluX2Z1bmN0aW9uc1ttXSwKLQkJCQkJCQkJCQkJc3RyaW5nLAot CQkJCQkJCQkJCQl0eXBpb3BhcmFtc1ttXSwKLQkJCQkJCQkJCQkJYXR0LT5hdHR0eXBtb2QsCi0J CQkJCQkJCQkJCShOb2RlICopIGNzdGF0ZS0+ZXNjb250ZXh0LAotCQkJCQkJCQkJCQkmdmFsdWVz W21dKSkKLQkJCXsKLQkJCQljc3RhdGUtPm51bV9lcnJvcnMrKzsKLQkJCQlyZXR1cm4gdHJ1ZTsK LQkJCX0KKwkJCUFzc2VydChlY29udGV4dCAhPSBOVUxMKTsKKwkJCUFzc2VydChDdXJyZW50TWVt b3J5Q29udGV4dCA9PSBlY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5KTsKIAotCQkJY3N0 YXRlLT5jdXJfYXR0bmFtZSA9IE5VTEw7Ci0JCQljc3RhdGUtPmN1cl9hdHR2YWwgPSBOVUxMOwor CQkJdmFsdWVzW21dID0gRXhlY0V2YWxFeHByKGRlZmV4cHJzW21dLCBlY29udGV4dCwgJm51bGxz W21dKTsKIAkJfQogCi0JCUFzc2VydChmaWVsZG5vID09IGF0dHJfY291bnQpOworCQkvKgorCQkg KiBJZiBPTl9FUlJPUiBpcyBzcGVjaWZpZWQgd2l0aCBJR05PUkUsIHNraXAgcm93cyB3aXRoIHNv ZnQgZXJyb3JzCisJCSAqLworCQllbHNlIGlmICghSW5wdXRGdW5jdGlvbkNhbGxTYWZlKCZpbl9m dW5jdGlvbnNbbV0sCisJCQkJCQkJCQkJc3RyaW5nLAorCQkJCQkJCQkJCXR5cGlvcGFyYW1zW21d LAorCQkJCQkJCQkJCWF0dC0+YXR0dHlwbW9kLAorCQkJCQkJCQkJCShOb2RlICopIGNzdGF0ZS0+ ZXNjb250ZXh0LAorCQkJCQkJCQkJCSZ2YWx1ZXNbbV0pKQorCQl7CisJCQljc3RhdGUtPm51bV9l cnJvcnMrKzsKKwkJCXJldHVybiB0cnVlOworCQl9CisKKwkJY3N0YXRlLT5jdXJfYXR0bmFtZSA9 IE5VTEw7CisJCWNzdGF0ZS0+Y3VyX2F0dHZhbCA9IE5VTEw7CiAJfQotCWVsc2UKLQl7Ci0JCS8q IGJpbmFyeSAqLwotCQlpbnQxNgkJZmxkX2NvdW50OwotCQlMaXN0Q2VsbCAgICpjdXI7CiAKLQkJ Y3N0YXRlLT5jdXJfbGluZW5vKys7CisJQXNzZXJ0KGZpZWxkbm8gPT0gYXR0cl9jb3VudCk7CiAK LQkJaWYgKCFDb3B5R2V0SW50MTYoY3N0YXRlLCAmZmxkX2NvdW50KSkKLQkJewotCQkJLyogRU9G IGRldGVjdGVkIChlbmQgb2YgZmlsZSwgb3IgcHJvdG9jb2wtbGV2ZWwgRU9GKSAqLwotCQkJcmV0 dXJuIGZhbHNlOwotCQl9CisJcmV0dXJuIHRydWU7Cit9CiAKLQkJaWYgKGZsZF9jb3VudCA9PSAt MSkKLQkJewotCQkJLyoKLQkJCSAqIFJlY2VpdmVkIEVPRiBtYXJrZXIuICBXYWl0IGZvciB0aGUg cHJvdG9jb2wtbGV2ZWwgRU9GLCBhbmQKLQkJCSAqIGNvbXBsYWluIGlmIGl0IGRvZXNuJ3QgY29t ZSBpbW1lZGlhdGVseS4gIEluIENPUFkgRlJPTSBTVERJTiwKLQkJCSAqIHRoaXMgZW5zdXJlcyB0 aGF0IHdlIGNvcnJlY3RseSBoYW5kbGUgQ29weUZhaWwsIGlmIGNsaWVudAotCQkJICogY2hvb3Nl cyB0byBzZW5kIHRoYXQgbm93LiAgV2hlbiBjb3B5aW5nIGZyb20gZmlsZSwgd2UgY291bGQKLQkJ CSAqIGlnbm9yZSB0aGUgcmVzdCBvZiB0aGUgZmlsZSBsaWtlIGluIHRleHQgbW9kZSwgYnV0IHdl IGNob29zZSB0bwotCQkJICogYmUgY29uc2lzdGVudCB3aXRoIHRoZSBDT1BZIEZST00gU1RESU4g Y2FzZS4KLQkJCSAqLwotCQkJY2hhcgkJZHVtbXk7Citib29sCitDb3B5RnJvbUJpbmFyeU9uZVJv dyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBEYXR1bSAqdmFs dWVzLCBib29sICpudWxscykKK3sKKwlUdXBsZURlc2MJdHVwRGVzYzsKKwlBdHRyTnVtYmVyCWF0 dHJfY291bnQ7CisJRm1nckluZm8gICAqaW5fZnVuY3Rpb25zID0gY3N0YXRlLT5pbl9mdW5jdGlv bnM7CisJT2lkCQkgICAqdHlwaW9wYXJhbXMgPSBjc3RhdGUtPnR5cGlvcGFyYW1zOworCWludDE2 CQlmbGRfY291bnQ7CisJTGlzdENlbGwgICAqY3VyOwogCi0JCQlpZiAoQ29weVJlYWRCaW5hcnlE YXRhKGNzdGF0ZSwgJmR1bW15LCAxKSA+IDApCi0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShl cnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAotCQkJCQkJIGVycm1zZygicmVj ZWl2ZWQgY29weSBkYXRhIGFmdGVyIEVPRiBtYXJrZXIiKSkpOwotCQkJcmV0dXJuIGZhbHNlOwot CQl9CisJdHVwRGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoY3N0YXRlLT5yZWwpOworCWF0dHJfY291 bnQgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwogCi0JCWlmIChmbGRfY291bnQg IT0gYXR0cl9jb3VudCkKKwljc3RhdGUtPmN1cl9saW5lbm8rKzsKKworCWlmICghQ29weUdldElu dDE2KGNzdGF0ZSwgJmZsZF9jb3VudCkpCisJeworCQkvKiBFT0YgZGV0ZWN0ZWQgKGVuZCBvZiBm aWxlLCBvciBwcm90b2NvbC1sZXZlbCBFT0YpICovCisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlp ZiAoZmxkX2NvdW50ID09IC0xKQorCXsKKwkJLyoKKwkJICogUmVjZWl2ZWQgRU9GIG1hcmtlci4g IFdhaXQgZm9yIHRoZSBwcm90b2NvbC1sZXZlbCBFT0YsIGFuZCBjb21wbGFpbgorCQkgKiBpZiBp dCBkb2Vzbid0IGNvbWUgaW1tZWRpYXRlbHkuICBJbiBDT1BZIEZST00gU1RESU4sIHRoaXMgZW5z dXJlcworCQkgKiB0aGF0IHdlIGNvcnJlY3RseSBoYW5kbGUgQ29weUZhaWwsIGlmIGNsaWVudCBj aG9vc2VzIHRvIHNlbmQgdGhhdAorCQkgKiBub3cuICBXaGVuIGNvcHlpbmcgZnJvbSBmaWxlLCB3 ZSBjb3VsZCBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIGZpbGUKKwkJICogbGlrZSBpbiB0ZXh0IG1v ZGUsIGJ1dCB3ZSBjaG9vc2UgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBDT1BZCisJCSAqIEZS T00gU1RESU4gY2FzZS4KKwkJICovCisJCWNoYXIJCWR1bW15OworCisJCWlmIChDb3B5UmVhZEJp bmFyeURhdGEoY3N0YXRlLCAmZHVtbXksIDEpID4gMCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAotCQkJCQkgZXJybXNnKCJy b3cgZmllbGQgY291bnQgaXMgJWQsIGV4cGVjdGVkICVkIiwKLQkJCQkJCQkoaW50KSBmbGRfY291 bnQsIGF0dHJfY291bnQpKSk7CisJCQkJCSBlcnJtc2coInJlY2VpdmVkIGNvcHkgZGF0YSBhZnRl ciBFT0YgbWFya2VyIikpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KIAotCQlmb3JlYWNoKGN1ciwg Y3N0YXRlLT5hdHRudW1saXN0KQotCQl7Ci0JCQlpbnQJCQlhdHRudW0gPSBsZmlyc3RfaW50KGN1 cik7Ci0JCQlpbnQJCQltID0gYXR0bnVtIC0gMTsKLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9 IFR1cGxlRGVzY0F0dHIodHVwRGVzYywgbSk7Ci0KLQkJCWNzdGF0ZS0+Y3VyX2F0dG5hbWUgPSBO YW1lU3RyKGF0dC0+YXR0bmFtZSk7Ci0JCQl2YWx1ZXNbbV0gPSBDb3B5UmVhZEJpbmFyeUF0dHJp YnV0ZShjc3RhdGUsCi0JCQkJCQkJCQkJCQkmaW5fZnVuY3Rpb25zW21dLAotCQkJCQkJCQkJCQkJ dHlwaW9wYXJhbXNbbV0sCi0JCQkJCQkJCQkJCQlhdHQtPmF0dHR5cG1vZCwKLQkJCQkJCQkJCQkJ CSZudWxsc1ttXSk7Ci0JCQljc3RhdGUtPmN1cl9hdHRuYW1lID0gTlVMTDsKLQkJfQorCWlmIChm bGRfY291bnQgIT0gYXR0cl9jb3VudCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0JBRF9DT1BZX0ZJTEVfRk9STUFUKSwKKwkJCQkgZXJybXNnKCJyb3cgZmllbGQgY291 bnQgaXMgJWQsIGV4cGVjdGVkICVkIiwKKwkJCQkJCShpbnQpIGZsZF9jb3VudCwgYXR0cl9jb3Vu dCkpKTsKKworCWZvcmVhY2goY3VyLCBjc3RhdGUtPmF0dG51bWxpc3QpCisJeworCQlpbnQJCQlh dHRudW0gPSBsZmlyc3RfaW50KGN1cik7CisJCWludAkJCW0gPSBhdHRudW0gLSAxOworCQlGb3Jt X3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIG0pOworCisJCWNzdGF0 ZS0+Y3VyX2F0dG5hbWUgPSBOYW1lU3RyKGF0dC0+YXR0bmFtZSk7CisJCXZhbHVlc1ttXSA9IENv cHlSZWFkQmluYXJ5QXR0cmlidXRlKGNzdGF0ZSwKKwkJCQkJCQkJCQkJJmluX2Z1bmN0aW9uc1tt XSwKKwkJCQkJCQkJCQkJdHlwaW9wYXJhbXNbbV0sCisJCQkJCQkJCQkJCWF0dC0+YXR0dHlwbW9k LAorCQkJCQkJCQkJCQkmbnVsbHNbbV0pOworCQljc3RhdGUtPmN1cl9hdHRuYW1lID0gTlVMTDsK IAl9CiAKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFJlYWQgbmV4dCB0dXBsZSBmcm9tIGZp bGUgZm9yIENPUFkgRlJPTS4gUmV0dXJuIGZhbHNlIGlmIG5vIG1vcmUgdHVwbGVzLgorICoKKyAq ICdlY29udGV4dCcgaXMgdXNlZCB0byBldmFsdWF0ZSBkZWZhdWx0IGV4cHJlc3Npb24gZm9yIGVh Y2ggY29sdW1uIHRoYXQgaXMKKyAqIGVpdGhlciBub3QgcmVhZCBmcm9tIHRoZSBmaWxlIG9yIGlz IHVzaW5nIHRoZSBERUZBVUxUIG9wdGlvbiBvZiBDT1BZIEZST00uCisgKiBJdCBjYW4gYmUgTlVM TCB3aGVuIG5vIGRlZmF1bHQgdmFsdWVzIGFyZSB1c2VkLCBpLmUuIHdoZW4gYWxsIGNvbHVtbnMg YXJlCisgKiByZWFkIGZyb20gdGhlIGZpbGUsIGFuZCBERUZBVUxUIG9wdGlvbiBpcyB1bnNldC4K KyAqCisgKiAndmFsdWVzJyBhbmQgJ251bGxzJyBhcnJheXMgbXVzdCBiZSB0aGUgc2FtZSBsZW5n dGggYXMgY29sdW1ucyBvZiB0aGUKKyAqIHJlbGF0aW9uIHBhc3NlZCB0byBCZWdpbkNvcHlGcm9t LiBUaGlzIGZ1bmN0aW9uIGZpbGxzIHRoZSBhcnJheXMuCisgKi8KK2Jvb2wKK05leHRDb3B5RnJv bShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LAorCQkJIERhdHVt ICp2YWx1ZXMsIGJvb2wgKm51bGxzKQoreworCVR1cGxlRGVzYwl0dXBEZXNjOworCUF0dHJOdW1i ZXIJbnVtX3BoeXNfYXR0cnMsCisJCQkJbnVtX2RlZmF1bHRzID0gY3N0YXRlLT5udW1fZGVmYXVs dHM7CisJaW50CQkJaTsKKwlpbnQJCSAgICpkZWZtYXAgPSBjc3RhdGUtPmRlZm1hcDsKKwlFeHBy U3RhdGUgKipkZWZleHBycyA9IGNzdGF0ZS0+ZGVmZXhwcnM7CisKKwl0dXBEZXNjID0gUmVsYXRp b25HZXREZXNjcihjc3RhdGUtPnJlbCk7CisJbnVtX3BoeXNfYXR0cnMgPSB0dXBEZXNjLT5uYXR0 czsKKworCS8qIEluaXRpYWxpemUgYWxsIHZhbHVlcyBmb3Igcm93IHRvIE5VTEwgKi8KKwlNZW1T ZXQodmFsdWVzLCAwLCBudW1fcGh5c19hdHRycyAqIHNpemVvZihEYXR1bSkpOworCU1lbVNldChu dWxscywgdHJ1ZSwgbnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9vbCkpOworCU1lbVNldChjc3Rh dGUtPmRlZmF1bHRzLCBmYWxzZSwgbnVtX3BoeXNfYXR0cnMgKiBzaXplb2YoYm9vbCkpOworCisJ aWYgKCFjc3RhdGUtPm9wdHMuZnJvbV9yb3V0aW5lLT5Db3B5RnJvbU9uZVJvdyhjc3RhdGUsIGVj b250ZXh0LCB2YWx1ZXMsCisJCQkJCQkJCQkJCQkgICBudWxscykpCisJCXJldHVybiBmYWxzZTsK KwogCS8qCiAJICogTm93IGNvbXB1dGUgYW5kIGluc2VydCBhbnkgZGVmYXVsdHMgYXZhaWxhYmxl IGZvciB0aGUgY29sdW1ucyBub3QKIAkgKiBwcm92aWRlZCBieSB0aGUgaW5wdXQgZGF0YS4gIEFu eXRoaW5nIG5vdCBwcm9jZXNzZWQgaGVyZSBvciBhYm92ZSB3aWxsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKaW5k ZXggYjNmNDY4MmY5NS4uZGYyOWQ0MjU1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaApAQCAtMjAsOSArMjAs NiBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAjaW5jbHVkZSAidGNvcC9kZXN0 LmgiCiAKLS8qIFRoaXMgaXMgcHJpdmF0ZSBpbiBjb21tYW5kcy9jb3B5ZnJvbS5jICovCi10eXBl ZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YSAqQ29weUZyb21TdGF0ZTsKLQogdHlwZWRlZiBp bnQgKCpjb3B5X2RhdGFfc291cmNlX2NiKSAodm9pZCAqb3V0YnVmLCBpbnQgbWlucmVhZCwgaW50 IG1heHJlYWQpOwogCiBleHRlcm4gdm9pZCBEb0NvcHkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBDb3B5U3RtdCAqc3RtdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlh cGkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaAppbmRleCBmZmFkNDMzYTIxLi4z MjNlNDcwNWQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oCkBAIC0xOCw2ICsxOCw0OSBAQAogI2lu Y2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5o IgogCisvKiBUaGlzIGlzIHByaXZhdGUgaW4gY29tbWFuZHMvY29weWZyb20uYyAqLwordHlwZWRl ZiBzdHJ1Y3QgQ29weUZyb21TdGF0ZURhdGEgKkNvcHlGcm9tU3RhdGU7CisKK3R5cGVkZWYgYm9v bCAoKkNvcHlGcm9tUHJvY2Vzc09wdGlvbl9mdW5jdGlvbikgKENvcHlGcm9tU3RhdGUgY3N0YXRl LCBEZWZFbGVtICpkZWZlbCk7Cit0eXBlZGVmIGludDE2ICgqQ29weUZyb21HZXRGb3JtYXRfZnVu Y3Rpb24pIChDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7Cit0eXBlZGVmIHZvaWQgKCpDb3B5RnJvbVN0 YXJ0X2Z1bmN0aW9uKSAoQ29weUZyb21TdGF0ZSBjc3RhdGUsIFR1cGxlRGVzYyB0dXBEZXNjKTsK K3R5cGVkZWYgYm9vbCAoKkNvcHlGcm9tT25lUm93X2Z1bmN0aW9uKSAoQ29weUZyb21TdGF0ZSBj c3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMp OwordHlwZWRlZiB2b2lkICgqQ29weUZyb21FbmRfZnVuY3Rpb24pIChDb3B5RnJvbVN0YXRlIGNz dGF0ZSk7CisKKy8qIFJvdXRpbmVzIGZvciBhIENPUFkgRlJPTSBmb3JtYXQgaW1wbGVtZW50YXRp b24uICovCit0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVJvdXRpbmUKK3sKKwkvKgorCSAqIENhbGxl ZCBmb3IgcHJvY2Vzc2luZyBvbmUgQ09QWSBGUk9NIG9wdGlvbi4gVGhpcyB3aWxsIHJldHVybiBm YWxzZSB3aGVuCisJICogdGhlIGdpdmVuIG9wdGlvbiBpcyBpbnZhbGlkLgorCSAqLworCUNvcHlG cm9tUHJvY2Vzc09wdGlvbl9mdW5jdGlvbiBDb3B5RnJvbVByb2Nlc3NPcHRpb247CisKKwkvKgor CSAqIENhbGxlZCB3aGVuIENPUFkgRlJPTSBpcyBzdGFydGVkLiBUaGlzIHdpbGwgcmV0dXJuIGEg Zm9ybWF0IGFzIGludDE2CisJICogdmFsdWUuIEl0J3MgdXNlZCBmb3IgdGhlIENvcHlJblJlc3Bv bnNlIG1lc3NhZ2UuCisJICovCisJQ29weUZyb21HZXRGb3JtYXRfZnVuY3Rpb24gQ29weUZyb21H ZXRGb3JtYXQ7CisKKwkvKgorCSAqIENhbGxlZCB3aGVuIENPUFkgRlJPTSBpcyBzdGFydGVkLiBU aGlzIHdpbGwgaW5pdGlhbGl6ZSBzb21ldGhpbmcgYW5kCisJICogcmVjZWl2ZSBhIGhlYWRlci4K KwkgKi8KKwlDb3B5RnJvbVN0YXJ0X2Z1bmN0aW9uIENvcHlGcm9tU3RhcnQ7CisKKwkvKiBDb3B5 IG9uZSByb3cuIEl0IHJldHVybnMgZmFsc2UgaWYgbm8gbW9yZSB0dXBsZXMuICovCisJQ29weUZy b21PbmVSb3dfZnVuY3Rpb24gQ29weUZyb21PbmVSb3c7CisKKwkvKiBDYWxsZWQgd2hlbiBDT1BZ IEZST00gaXMgZW5kZWQuIFRoaXMgd2lsbCBmaW5hbGl6ZSBzb21ldGhpbmcuICovCisJQ29weUZy b21FbmRfZnVuY3Rpb24gQ29weUZyb21FbmQ7Cit9CQkJQ29weUZyb21Sb3V0aW5lOworCisvKiBC dWlsdC1pbiBDb3B5RnJvbVJvdXRpbmUgZm9yICJ0ZXh0IiwgImNzdiIgYW5kICJiaW5hcnkiLiAq LworZXh0ZXJuIENvcHlGcm9tUm91dGluZSBDb3B5RnJvbVJvdXRpbmVUZXh0OworZXh0ZXJuIENv cHlGcm9tUm91dGluZSBDb3B5RnJvbVJvdXRpbmVDU1Y7CitleHRlcm4gQ29weUZyb21Sb3V0aW5l IENvcHlGcm9tUm91dGluZUJpbmFyeTsKKworCiB0eXBlZGVmIHN0cnVjdCBDb3B5VG9TdGF0ZURh dGEgKkNvcHlUb1N0YXRlOwogCiB0eXBlZGVmIGJvb2wgKCpDb3B5VG9Qcm9jZXNzT3B0aW9uX2Z1 bmN0aW9uKSAoQ29weVRvU3RhdGUgY3N0YXRlLCBEZWZFbGVtICpkZWZlbCk7CkBAIC0xMTMsNiAr MTU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAlib29sCQljb252ZXJ0 X3NlbGVjdGl2ZWx5OwkvKiBkbyBzZWxlY3RpdmUgYmluYXJ5IGNvbnZlcnNpb24/ICovCiAJQ29w eU9uRXJyb3JDaG9pY2Ugb25fZXJyb3I7IC8qIHdoYXQgdG8gZG8gd2hlbiBlcnJvciBoYXBwZW5l ZCAqLwogCUxpc3QJICAgKmNvbnZlcnRfc2VsZWN0OyAvKiBsaXN0IG9mIGNvbHVtbiBuYW1lcyAo Y2FuIGJlIE5JTCkgKi8KKwlDb3B5RnJvbVJvdXRpbmUgKmZyb21fcm91dGluZTsJLyogY2FsbGJh Y2sgcm91dGluZXMgZm9yIENPUFkgRlJPTSAqLwogCUNvcHlUb1JvdXRpbmUgKnRvX3JvdXRpbmU7 CS8qIGNhbGxiYWNrIHJvdXRpbmVzIGZvciBDT1BZIFRPICovCiB9IENvcHlGb3JtYXRPcHRpb25z OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaAppbmRleCBjYWQ1MmZj Yzc4Li45MjFjMTUxM2Y3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJv bV9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFs LmgKQEAgLTE4Myw0ICsxODMsOCBAQCB0eXBlZGVmIHN0cnVjdCBDb3B5RnJvbVN0YXRlRGF0YQog ZXh0ZXJuIHZvaWQgUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7CiBleHRl cm4gdm9pZCBSZWNlaXZlQ29weUJpbmFyeUhlYWRlcihDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7CiAK K2V4dGVybiBib29sIENvcHlGcm9tVGV4dE9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhw ckNvbnRleHQgKmVjb250ZXh0LCBEYXR1bSAqdmFsdWVzLCBib29sICpudWxscyk7CitleHRlcm4g Ym9vbCBDb3B5RnJvbUJpbmFyeU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRl eHQgKmVjb250ZXh0LCBEYXR1bSAqdmFsdWVzLCBib29sICpudWxscyk7CisKKwogI2VuZGlmCQkJ CQkJCS8qIENPUFlGUk9NX0lOVEVSTkFMX0ggKi8KLS0gCjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0008-Add-support-for-implementing-custom-COPY-FROM-for.patch" Content-Disposition: attachment; filename="v8-0008-Add-support-for-implementing-custom-COPY-FROM-for.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w77 RnJvbSAzZTg0N2RlMWFjYjJmZDY5NjZlZjAxMTkyMjA0NDQ4NzExY2EzZDVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogV2VkLCAyNCBKYW4gMjAyNCAxNDoxOTowOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDgv MTBdIEFkZCBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgY3VzdG9tIENPUFkgRlJPTSBmb3JtYXQK IGFzIGV4dGVuc2lvbgoKKiBBZGQgQ29weUZyb21TdGF0ZURhdGE6Om9wYXF1ZSB0aGF0IGNhbiBi ZSB1c2VkIHRvIGtlZXAgZGF0YSBmb3IKICBjdXN0b20gQ09QWSBGcm9tIGZvcm1hdCBpbXBsZW1l bnRhdGlvbgoqIEV4cG9ydCBDb3B5UmVhZEJpbmFyeURhdGEoKSB0byByZWFkIHRoZSBuZXh0IGRh dGEKKiBSZW5hbWUgQ29weVJlYWRCaW5hcnlEYXRhKCkgdG8gQ29weUZyb21TdGF0ZVJlYWQoKSBi ZWNhdXNlIGl0J3MgYQogIG1ldGhvZCBmb3IgQ29weUZyb21TdGF0ZSBhbmQgIkJpbmFyeURhdGEi IGlzIHJlZHVuZGFudC4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMg fCAyMSArKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGku aCAgICAgICB8ICA1ICsrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9t cGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYwppbmRleCBhNzhh NzkwMDYwLi5mOGExOTQ2MzVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 ZnJvbXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jCkBA IC0xNjUsNyArMTY1LDYgQEAgc3RhdGljIGludAlDb3B5R2V0RGF0YShDb3B5RnJvbVN0YXRlIGNz dGF0ZSwgdm9pZCAqZGF0YWJ1ZiwKIHN0YXRpYyBpbmxpbmUgYm9vbCBDb3B5R2V0SW50MzIoQ29w eUZyb21TdGF0ZSBjc3RhdGUsIGludDMyICp2YWwpOwogc3RhdGljIGlubGluZSBib29sIENvcHlH ZXRJbnQxNihDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgaW50MTYgKnZhbCk7CiBzdGF0aWMgdm9pZCBD b3B5TG9hZElucHV0QnVmKENvcHlGcm9tU3RhdGUgY3N0YXRlKTsKLXN0YXRpYyBpbnQJQ29weVJl YWRCaW5hcnlEYXRhKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICpkZXN0LCBpbnQgbmJ5dGVz KTsKIAogdm9pZAogUmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKQEAgLTE5 NCw3ICsxOTMsNyBAQCBSZWNlaXZlQ29weUJpbmFyeUhlYWRlcihDb3B5RnJvbVN0YXRlIGNzdGF0 ZSkKIAlpbnQzMgkJdG1wOwogCiAJLyogU2lnbmF0dXJlICovCi0JaWYgKENvcHlSZWFkQmluYXJ5 RGF0YShjc3RhdGUsIHJlYWRTaWcsIDExKSAhPSAxMSB8fAorCWlmIChDb3B5RnJvbVN0YXRlUmVh ZChjc3RhdGUsIHJlYWRTaWcsIDExKSAhPSAxMSB8fAogCQltZW1jbXAocmVhZFNpZywgQmluYXJ5 U2lnbmF0dXJlLCAxMSkgIT0gMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0JBRF9DT1BZX0ZJTEVfRk9STUFUKSwKQEAgLTIyMiw3ICsyMjEsNyBAQCBSZWNlaXZlQ29w eUJpbmFyeUhlYWRlcihDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKiBTa2lwIGV4dGVuc2lvbiBo ZWFkZXIsIGlmIHByZXNlbnQgKi8KIAl3aGlsZSAodG1wLS0gPiAwKQogCXsKLQkJaWYgKENvcHlS ZWFkQmluYXJ5RGF0YShjc3RhdGUsIHJlYWRTaWcsIDEpICE9IDEpCisJCWlmIChDb3B5RnJvbVN0 YXRlUmVhZChjc3RhdGUsIHJlYWRTaWcsIDEpICE9IDEpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX0JBRF9DT1BZX0ZJTEVfRk9STUFUKSwKIAkJCQkJIGVycm1zZygi aW52YWxpZCBDT1BZIGZpbGUgaGVhZGVyICh3cm9uZyBsZW5ndGgpIikpKTsKQEAgLTM2NCw3ICsz NjMsNyBAQCBDb3B5R2V0SW50MzIoQ29weUZyb21TdGF0ZSBjc3RhdGUsIGludDMyICp2YWwpCiB7 CiAJdWludDMyCQlidWY7CiAKLQlpZiAoQ29weVJlYWRCaW5hcnlEYXRhKGNzdGF0ZSwgKGNoYXIg KikgJmJ1Ziwgc2l6ZW9mKGJ1ZikpICE9IHNpemVvZihidWYpKQorCWlmIChDb3B5RnJvbVN0YXRl UmVhZChjc3RhdGUsIChjaGFyICopICZidWYsIHNpemVvZihidWYpKSAhPSBzaXplb2YoYnVmKSkK IAl7CiAJCSp2YWwgPSAwOwkJCQkvKiBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5nICovCiAJCXJl dHVybiBmYWxzZTsKQEAgLTM4MSw3ICszODAsNyBAQCBDb3B5R2V0SW50MTYoQ29weUZyb21TdGF0 ZSBjc3RhdGUsIGludDE2ICp2YWwpCiB7CiAJdWludDE2CQlidWY7CiAKLQlpZiAoQ29weVJlYWRC aW5hcnlEYXRhKGNzdGF0ZSwgKGNoYXIgKikgJmJ1Ziwgc2l6ZW9mKGJ1ZikpICE9IHNpemVvZihi dWYpKQorCWlmIChDb3B5RnJvbVN0YXRlUmVhZChjc3RhdGUsIChjaGFyICopICZidWYsIHNpemVv ZihidWYpKSAhPSBzaXplb2YoYnVmKSkKIAl7CiAJCSp2YWwgPSAwOwkJCQkvKiBzdXBwcmVzcyBj b21waWxlciB3YXJuaW5nICovCiAJCXJldHVybiBmYWxzZTsKQEAgLTY5MiwxNCArNjkxLDE0IEBA IENvcHlMb2FkSW5wdXRCdWYoQ29weUZyb21TdGF0ZSBjc3RhdGUpCiB9CiAKIC8qCi0gKiBDb3B5 UmVhZEJpbmFyeURhdGEKKyAqIENvcHlGcm9tU3RhdGVSZWFkCiAgKgogICogUmVhZHMgdXAgdG8g J25ieXRlcycgYnl0ZXMgZnJvbSBjc3RhdGUtPmNvcHlfZmlsZSB2aWEgY3N0YXRlLT5yYXdfYnVm CiAgKiBhbmQgd3JpdGVzIHRoZW0gdG8gJ2Rlc3QnLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5 dGVzIHJlYWQgKHdoaWNoCiAgKiB3b3VsZCBiZSBsZXNzIHRoYW4gJ25ieXRlcycgb25seSBpZiB3 ZSByZWFjaCBFT0YpLgogICovCi1zdGF0aWMgaW50Ci1Db3B5UmVhZEJpbmFyeURhdGEoQ29weUZy b21TdGF0ZSBjc3RhdGUsIGNoYXIgKmRlc3QsIGludCBuYnl0ZXMpCitpbnQKK0NvcHlGcm9tU3Rh dGVSZWFkKENvcHlGcm9tU3RhdGUgY3N0YXRlLCBjaGFyICpkZXN0LCBpbnQgbmJ5dGVzKQogewog CWludAkJCWNvcGllZF9ieXRlcyA9IDA7CiAKQEAgLTk4OCw3ICs5ODcsNyBAQCBDb3B5RnJvbUJp bmFyeU9uZVJvdyhDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBE YXR1bSAqdmFsdWVzLAogCQkgKi8KIAkJY2hhcgkJZHVtbXk7CiAKLQkJaWYgKENvcHlSZWFkQmlu YXJ5RGF0YShjc3RhdGUsICZkdW1teSwgMSkgPiAwKQorCQlpZiAoQ29weUZyb21TdGF0ZVJlYWQo Y3N0YXRlLCAmZHVtbXksIDEpID4gMCkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfQkFEX0NPUFlfRklMRV9GT1JNQVQpLAogCQkJCQkgZXJybXNnKCJyZWNlaXZlZCBj b3B5IGRhdGEgYWZ0ZXIgRU9GIG1hcmtlciIpKSk7CkBAIC0xOTk3LDggKzE5OTYsOCBAQCBDb3B5 UmVhZEJpbmFyeUF0dHJpYnV0ZShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRm1nckluZm8gKmZsaW5m bywKIAlyZXNldFN0cmluZ0luZm8oJmNzdGF0ZS0+YXR0cmlidXRlX2J1Zik7CiAKIAllbmxhcmdl U3RyaW5nSW5mbygmY3N0YXRlLT5hdHRyaWJ1dGVfYnVmLCBmbGRfc2l6ZSk7Ci0JaWYgKENvcHlS ZWFkQmluYXJ5RGF0YShjc3RhdGUsIGNzdGF0ZS0+YXR0cmlidXRlX2J1Zi5kYXRhLAotCQkJCQkJ ICAgZmxkX3NpemUpICE9IGZsZF9zaXplKQorCWlmIChDb3B5RnJvbVN0YXRlUmVhZChjc3RhdGUs IGNzdGF0ZS0+YXR0cmlidXRlX2J1Zi5kYXRhLAorCQkJCQkJICBmbGRfc2l6ZSkgIT0gZmxkX3Np emUpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9CQURfQ09QWV9GSUxF X0ZPUk1BVCksCiAJCQkJIGVycm1zZygidW5leHBlY3RlZCBFT0YgaW4gQ09QWSBkYXRhIikpKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHlhcGkuaAppbmRleCBiN2U4ZjYyN2JmLi4yMmFjY2M4M2FiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weWFwaS5oCkBAIC0zMTQsOCArMzE0LDEzIEBAIHR5cGVkZWYgc3RydWN0IENvcHlG cm9tU3RhdGVEYXRhCiAjZGVmaW5lIFJBV19CVUZfQllURVMoY3N0YXRlKSAoKGNzdGF0ZSktPnJh d19idWZfbGVuIC0gKGNzdGF0ZSktPnJhd19idWZfaW5kZXgpCiAKIAl1aW50NjQJCWJ5dGVzX3By b2Nlc3NlZDsJLyogbnVtYmVyIG9mIGJ5dGVzIHByb2Nlc3NlZCBzbyBmYXIgKi8KKworCS8qIEZv ciBjdXN0b20gZm9ybWF0IGltcGxlbWVudGF0aW9uICovCisJdm9pZAkgICAqb3BhcXVlOwkJCS8q IHByaXZhdGUgc3BhY2UgKi8KIH0gQ29weUZyb21TdGF0ZURhdGE7CiAKK2V4dGVybiBpbnQJQ29w eUZyb21TdGF0ZVJlYWQoQ29weUZyb21TdGF0ZSBjc3RhdGUsIGNoYXIgKmRlc3QsIGludCBuYnl0 ZXMpOworCiAvKgogICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IGRlc3QgY2FzZXMgd2UgbmVl ZCB0byB3b3JyeSBhYm91dCBhdAogICogdGhlIGJvdHRvbSBsZXZlbAotLSAKMi40MS4wCgo= --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0007-Export-CopyFromStateData.patch" Content-Disposition: attachment; filename="v8-0007-Export-CopyFromStateData.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w66 RnJvbSAxZWQ1NzVmZGE3ZjE5NmVhNDExZTllNTNkZDljMDczOWYxNjBmYjc4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogV2VkLCAyNCBKYW4gMjAyNCAxNDoxNjoyOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDcv MTBdIEV4cG9ydCBDb3B5RnJvbVN0YXRlRGF0YQoKSXQncyBmb3IgY3VzdG9tIENPUFkgRlJPTSBm b3JtYXQgaGFuZGxlcnMgaW1wbGVtZW50ZWQgYXMgZXh0ZW5zaW9uLgoKVGhpcyBqdXN0IG1vdmVz IGNvZGVzLiBUaGlzIGRvZXNuJ3QgY2hhbmdlIGNvZGVzIGV4Y2VwdCBDb3B5U291cmNlCmVudW0g dmFsdWVzLiBDb3B5U291cmNlIGVudW0gdmFsdWVzIGNoYW5nZXMgYXJlbid0IHJlcXVpcmVkIGJ1 dCBJIGRpZApsaWtlIEkgZGlkIGZvciBDb3B5RGVzdCBlbnVtIHZhbHVlcy4gSSBjaGFuZ2VkIENP UFlfIHByZWZpeCB0bwpDT1BZX1NPVVJDRV8gcHJlZml4LiBGb3IgZXhhbXBsZSwgQ09QWV9GSUxF IHRvIENPUFlfU09VUkNFX0ZJTEUuCgpOb3RlIHRoYXQgdGhpcyBjaGFuZ2UgaXNuJ3QgZW5vdWdo IHRvIGltcGxlbWVudCBhIGN1c3RvbSBDT1BZIEZST00KZm9ybWF0IGhhbmRsZXIgYXMgZXh0ZW5z aW9uLiBXZSdsbCBkbyB0aGUgZm9sbG93aW5ncyBpbiBhIHN1YnNlcXVlbnQKY29tbWl0OgoKMS4g QWRkIGFuIG9wYXF1ZSBzcGFjZSBmb3IgY3VzdG9tIENPUFkgRlJPTSBmb3JtYXQgaGFuZGxlcgoy LiBFeHBvcnQgQ29weVJlYWRCaW5hcnlEYXRhKCkgdG8gcmVhZCB0aGUgbmV4dCBkYXRhCi0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyAgICAgICAgICB8ICAgNCArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weS5oICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9jb21tYW5k cy9jb3B5YXBpLmggICAgICAgICAgIHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMv aW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oIHwgMTUwIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDE2MCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYwppbmRleCBkNTU2ZWJiNWQ2Li5iNGFjN2NiZDJj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEJlZ2luQ29w eUZyb20oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCXBnX2VuY29kaW5nX3RvX2NoYXIoR2V0 RGF0YWJhc2VFbmNvZGluZygpKSkpKTsKIAl9CiAKLQljc3RhdGUtPmNvcHlfc3JjID0gQ09QWV9G SUxFOwkvKiBkZWZhdWx0ICovCisJY3N0YXRlLT5jb3B5X3NyYyA9IENPUFlfU09VUkNFX0ZJTEU7 CS8qIGRlZmF1bHQgKi8KIAogCWNzdGF0ZS0+d2hlcmVDbGF1c2UgPSB3aGVyZUNsYXVzZTsKIApA QCAtMTgyOSw3ICsxODI5LDcgQEAgQmVnaW5Db3B5RnJvbShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ aWYgKGRhdGFfc291cmNlX2NiKQogCXsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9IFBST0dSRVNTX0NP UFlfVFlQRV9DQUxMQkFDSzsKLQkJY3N0YXRlLT5jb3B5X3NyYyA9IENPUFlfQ0FMTEJBQ0s7CisJ CWNzdGF0ZS0+Y29weV9zcmMgPSBDT1BZX1NPVVJDRV9DQUxMQkFDSzsKIAkJY3N0YXRlLT5kYXRh X3NvdXJjZV9jYiA9IGRhdGFfc291cmNlX2NiOwogCX0KIAllbHNlIGlmIChwaXBlKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb21wYXJzZS5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weWZyb21wYXJzZS5jCmluZGV4IDQ5NjMyZjc1ZTQuLmE3OGE3OTAwNjAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tcGFyc2UuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbXBhcnNlLmMKQEAgLTE4MSw3ICsxODEsNyBAQCBSZWNl aXZlQ29weUJlZ2luKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBuYXR0 czsgaSsrKQogCQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3Jt YXRzICovCiAJcHFfZW5kbWVzc2FnZSgmYnVmKTsKLQljc3RhdGUtPmNvcHlfc3JjID0gQ09QWV9G Uk9OVEVORDsKKwljc3RhdGUtPmNvcHlfc3JjID0gQ09QWV9TT1VSQ0VfRlJPTlRFTkQ7CiAJY3N0 YXRlLT5mZV9tc2didWYgPSBtYWtlU3RyaW5nSW5mbygpOwogCS8qIFdlICptdXN0KiBmbHVzaCBo ZXJlIHRvIGVuc3VyZSBGRSBrbm93cyBpdCBjYW4gc2VuZC4gKi8KIAlwcV9mbHVzaCgpOwpAQCAt MjQ5LDcgKzI0OSw3IEBAIENvcHlHZXREYXRhKENvcHlGcm9tU3RhdGUgY3N0YXRlLCB2b2lkICpk YXRhYnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAKIAlzd2l0Y2ggKGNzdGF0ZS0+Y29w eV9zcmMpCiAJewotCQljYXNlIENPUFlfRklMRToKKwkJY2FzZSBDT1BZX1NPVVJDRV9GSUxFOgog CQkJYnl0ZXNyZWFkID0gZnJlYWQoZGF0YWJ1ZiwgMSwgbWF4cmVhZCwgY3N0YXRlLT5jb3B5X2Zp bGUpOwogCQkJaWYgKGZlcnJvcihjc3RhdGUtPmNvcHlfZmlsZSkpCiAJCQkJZXJlcG9ydChFUlJP UiwKQEAgLTI1OCw3ICsyNTgsNyBAQCBDb3B5R2V0RGF0YShDb3B5RnJvbVN0YXRlIGNzdGF0ZSwg dm9pZCAqZGF0YWJ1ZiwgaW50IG1pbnJlYWQsIGludCBtYXhyZWFkKQogCQkJaWYgKGJ5dGVzcmVh ZCA9PSAwKQogCQkJCWNzdGF0ZS0+cmF3X3JlYWNoZWRfZW9mID0gdHJ1ZTsKIAkJCWJyZWFrOwot CQljYXNlIENPUFlfRlJPTlRFTkQ6CisJCWNhc2UgQ09QWV9TT1VSQ0VfRlJPTlRFTkQ6CiAJCQl3 aGlsZSAobWF4cmVhZCA+IDAgJiYgYnl0ZXNyZWFkIDwgbWlucmVhZCAmJiAhY3N0YXRlLT5yYXdf cmVhY2hlZF9lb2YpCiAJCQl7CiAJCQkJaW50CQkJYXZhaWw7CkBAIC0zNDEsNyArMzQxLDcgQEAg Q29weUdldERhdGEoQ29weUZyb21TdGF0ZSBjc3RhdGUsIHZvaWQgKmRhdGFidWYsIGludCBtaW5y ZWFkLCBpbnQgbWF4cmVhZCkKIAkJCQlieXRlc3JlYWQgKz0gYXZhaWw7CiAJCQl9CiAJCQlicmVh azsKLQkJY2FzZSBDT1BZX0NBTExCQUNLOgorCQljYXNlIENPUFlfU09VUkNFX0NBTExCQUNLOgog CQkJYnl0ZXNyZWFkID0gY3N0YXRlLT5kYXRhX3NvdXJjZV9jYihkYXRhYnVmLCBtaW5yZWFkLCBt YXhyZWFkKTsKIAkJCWJyZWFrOwogCX0KQEAgLTEwOTksNyArMTA5OSw3IEBAIENvcHlSZWFkTGlu ZShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJICogYWZ0ZXIgXC4gdXAgdG8gdGhlIHByb3RvY29s IGVuZCBvZiBjb3B5IGRhdGEuICAoWFhYIG1heWJlIGJldHRlcgogCQkgKiBub3QgdG8gdHJlYXQg XC4gYXMgc3BlY2lhbD8pCiAJCSAqLwotCQlpZiAoY3N0YXRlLT5jb3B5X3NyYyA9PSBDT1BZX0ZS T05URU5EKQorCQlpZiAoY3N0YXRlLT5jb3B5X3NyYyA9PSBDT1BZX1NPVVJDRV9GUk9OVEVORCkK IAkJewogCQkJaW50CQkJaW5ieXRlczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCmluZGV4IGRmMjlkNDI1NTUu LmNkNDFkMzIwNzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgogI2luY2x1ZGUgInRjb3AvZGVzdC5oIgogCi10eXBlZGVm IGludCAoKmNvcHlfZGF0YV9zb3VyY2VfY2IpICh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBp bnQgbWF4cmVhZCk7Ci0KIGV4dGVybiB2b2lkIERvQ29weShQYXJzZVN0YXRlICpwc3RhdGUsIGNv bnN0IENvcHlTdG10ICpzdG10LAogCQkJCSAgIGludCBzdG10X2xvY2F0aW9uLCBpbnQgc3RtdF9s ZW4sCiAJCQkJICAgdWludDY0ICpwcm9jZXNzZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weWFwaS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oCmluZGV4 IGVmMWJiMjAxYzIuLmI3ZThmNjI3YmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHlhcGkuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKQEAgLTE0LDEx ICsxNCwxMiBAQAogI2lmbmRlZiBDT1BZQVBJX0gKICNkZWZpbmUgQ09QWUFQSV9ICiAKKyNpbmNs dWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIK ICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rl cy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKIAotLyogVGhpcyBpcyBwcml2YXRl IGluIGNvbW1hbmRzL2NvcHlmcm9tLmMgKi8KIHR5cGVkZWYgc3RydWN0IENvcHlGcm9tU3RhdGVE YXRhICpDb3B5RnJvbVN0YXRlOwogCiB0eXBlZGVmIGJvb2wgKCpDb3B5RnJvbVByb2Nlc3NPcHRp b25fZnVuY3Rpb24pIChDb3B5RnJvbVN0YXRlIGNzdGF0ZSwgRGVmRWxlbSAqZGVmZWwpOwpAQCAt MTYyLDYgKzE2MywxNTkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weUZvcm1hdE9wdGlvbnMKIAlDb3B5 VG9Sb3V0aW5lICp0b19yb3V0aW5lOwkvKiBjYWxsYmFjayByb3V0aW5lcyBmb3IgQ09QWSBUTyAq LwogfSBDb3B5Rm9ybWF0T3B0aW9uczsKIAorCisvKgorICogUmVwcmVzZW50cyB0aGUgZGlmZmVy ZW50IHNvdXJjZSBjYXNlcyB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGF0CisgKiB0aGUgYm90dG9t IGxldmVsCisgKi8KK3R5cGVkZWYgZW51bSBDb3B5U291cmNlCit7CisJQ09QWV9TT1VSQ0VfRklM RSwJCQkvKiBmcm9tIGZpbGUgKG9yIGEgcGlwZWQgcHJvZ3JhbSkgKi8KKwlDT1BZX1NPVVJDRV9G Uk9OVEVORCwJCS8qIGZyb20gZnJvbnRlbmQgKi8KKwlDT1BZX1NPVVJDRV9DQUxMQkFDSywJCS8q IGZyb20gY2FsbGJhY2sgZnVuY3Rpb24gKi8KK30gQ29weVNvdXJjZTsKKworLyoKKyAqCVJlcHJl c2VudHMgdGhlIGVuZC1vZi1saW5lIHRlcm1pbmF0b3IgdHlwZSBvZiB0aGUgaW5wdXQKKyAqLwor dHlwZWRlZiBlbnVtIEVvbFR5cGUKK3sKKwlFT0xfVU5LTk9XTiwKKwlFT0xfTkwsCisJRU9MX0NS LAorCUVPTF9DUk5MLAorfSBFb2xUeXBlOworCit0eXBlZGVmIGludCAoKmNvcHlfZGF0YV9zb3Vy Y2VfY2IpICh2b2lkICpvdXRidWYsIGludCBtaW5yZWFkLCBpbnQgbWF4cmVhZCk7CisKKy8qCisg KiBUaGlzIHN0cnVjdCBjb250YWlucyBhbGwgdGhlIHN0YXRlIHZhcmlhYmxlcyB1c2VkIHRocm91 Z2hvdXQgYSBDT1BZIEZST00KKyAqIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQ29w eUZyb21TdGF0ZURhdGEKK3sKKwkvKiBsb3ctbGV2ZWwgc3RhdGUgZGF0YSAqLworCUNvcHlTb3Vy Y2UJY29weV9zcmM7CQkvKiB0eXBlIG9mIGNvcHkgc291cmNlICovCisJRklMRQkgICAqY29weV9m aWxlOwkJLyogdXNlZCBpZiBjb3B5X3NyYyA9PSBDT1BZX0ZJTEUgKi8KKwlTdHJpbmdJbmZvCWZl X21zZ2J1ZjsJCS8qIHVzZWQgaWYgY29weV9zcmMgPT0gQ09QWV9GUk9OVEVORCAqLworCisJRW9s VHlwZQkJZW9sX3R5cGU7CQkvKiBFT0wgdHlwZSBvZiBpbnB1dCAqLworCWludAkJCWZpbGVfZW5j b2Rpbmc7CS8qIGZpbGUgb3IgcmVtb3RlIHNpZGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcgKi8KKwli b29sCQluZWVkX3RyYW5zY29kaW5nOwkvKiBmaWxlIGVuY29kaW5nIGRpZmYgZnJvbSBzZXJ2ZXI/ ICovCisJT2lkCQkJY29udmVyc2lvbl9wcm9jOwkvKiBlbmNvZGluZyBjb252ZXJzaW9uIGZ1bmN0 aW9uICovCisKKwkvKiBwYXJhbWV0ZXJzIGZyb20gdGhlIENPUFkgY29tbWFuZCAqLworCVJlbGF0 aW9uCXJlbDsJCQkvKiByZWxhdGlvbiB0byBjb3B5IGZyb20gKi8KKwlMaXN0CSAgICphdHRudW1s aXN0OwkJLyogaW50ZWdlciBsaXN0IG9mIGF0dG51bXMgdG8gY29weSAqLworCWNoYXIJICAgKmZp bGVuYW1lOwkJLyogZmlsZW5hbWUsIG9yIE5VTEwgZm9yIFNURElOICovCisJYm9vbAkJaXNfcHJv Z3JhbTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9ncmFtIHRvIHBvcGVuPyAqLworCWNvcHlfZGF0 YV9zb3VyY2VfY2IgZGF0YV9zb3VyY2VfY2I7IC8qIGZ1bmN0aW9uIGZvciByZWFkaW5nIGRhdGEg Ki8KKworCUNvcHlGb3JtYXRPcHRpb25zIG9wdHM7CisJYm9vbAkgICAqY29udmVydF9zZWxlY3Rf ZmxhZ3M7CS8qIHBlci1jb2x1bW4gQ1NWL1RFWFQgQ1MgZmxhZ3MgKi8KKwlOb2RlCSAgICp3aGVy ZUNsYXVzZTsJLyogV0hFUkUgY29uZGl0aW9uIChvciBOVUxMKSAqLworCisJLyogdGhlc2UgYXJl IGp1c3QgZm9yIGVycm9yIG1lc3NhZ2VzLCBzZWUgQ29weUZyb21FcnJvckNhbGxiYWNrICovCisJ Y29uc3QgY2hhciAqY3VyX3JlbG5hbWU7CS8qIHRhYmxlIG5hbWUgZm9yIGVycm9yIG1lc3NhZ2Vz ICovCisJdWludDY0CQljdXJfbGluZW5vOwkJLyogbGluZSBudW1iZXIgZm9yIGVycm9yIG1lc3Nh Z2VzICovCisJY29uc3QgY2hhciAqY3VyX2F0dG5hbWU7CS8qIGN1cnJlbnQgYXR0IGZvciBlcnJv ciBtZXNzYWdlcyAqLworCWNvbnN0IGNoYXIgKmN1cl9hdHR2YWw7CQkvKiBjdXJyZW50IGF0dCB2 YWx1ZSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KKwlib29sCQlyZWxuYW1lX29ubHk7CS8qIGRvbid0 IG91dHB1dCBsaW5lIG51bWJlciwgYXR0LCBldGMuICovCisKKwkvKgorCSAqIFdvcmtpbmcgc3Rh dGUKKwkgKi8KKwlNZW1vcnlDb250ZXh0IGNvcHljb250ZXh0OwkvKiBwZXItY29weSBleGVjdXRp b24gY29udGV4dCAqLworCisJQXR0ck51bWJlcgludW1fZGVmYXVsdHM7CS8qIGNvdW50IG9mIGF0 dCB0aGF0IGFyZSBtaXNzaW5nIGFuZCBoYXZlCisJCQkJCQkJCSAqIGRlZmF1bHQgdmFsdWUgKi8K KwlGbWdySW5mbyAgICppbl9mdW5jdGlvbnM7CS8qIGFycmF5IG9mIGlucHV0IGZ1bmN0aW9ucyBm b3IgZWFjaCBhdHRycyAqLworCU9pZAkJICAgKnR5cGlvcGFyYW1zOwkvKiBhcnJheSBvZiBlbGVt ZW50IHR5cGVzIGZvciBpbl9mdW5jdGlvbnMgKi8KKwlFcnJvclNhdmVDb250ZXh0ICplc2NvbnRl eHQ7CS8qIHNvZnQgZXJyb3IgdHJhcHBlciBkdXJpbmcgaW5fZnVuY3Rpb25zCisJCQkJCQkJCQkg KiBleGVjdXRpb24gKi8KKwl1aW50NjQJCW51bV9lcnJvcnM7CQkvKiB0b3RhbCBudW1iZXIgb2Yg cm93cyB3aGljaCBjb250YWluZWQgc29mdAorCQkJCQkJCQkgKiBlcnJvcnMgKi8KKwlpbnQJCSAg ICpkZWZtYXA7CQkJLyogYXJyYXkgb2YgZGVmYXVsdCBhdHQgbnVtYmVycyByZWxhdGVkIHRvCisJ CQkJCQkJCSAqIG1pc3NpbmcgYXR0ICovCisJRXhwclN0YXRlICoqZGVmZXhwcnM7CQkvKiBhcnJh eSBvZiBkZWZhdWx0IGF0dCBleHByZXNzaW9ucyBmb3IgYWxsCisJCQkJCQkJCSAqIGF0dCAqLwor CWJvb2wJICAgKmRlZmF1bHRzOwkJLyogaWYgREVGQVVMVCBtYXJrZXIgd2FzIGZvdW5kIGZvcgor CQkJCQkJCQkgKiBjb3JyZXNwb25kaW5nIGF0dCAqLworCWJvb2wJCXZvbGF0aWxlX2RlZmV4cHJz OwkvKiBpcyBhbnkgb2YgZGVmZXhwcnMgdm9sYXRpbGU/ICovCisJTGlzdAkgICAqcmFuZ2VfdGFi bGU7CS8qIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSAqLworCUxpc3QJICAg KnJ0ZXBlcm1pbmZvczsJLyogc2luZ2xlIGVsZW1lbnQgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5m byAqLworCUV4cHJTdGF0ZSAgKnF1YWxleHByOworCisJVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZSAq dHJhbnNpdGlvbl9jYXB0dXJlOworCisJLyoKKwkgKiBUaGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQg dG8gcmVkdWNlIG92ZXJoZWFkIGluIENPUFkgRlJPTS4KKwkgKgorCSAqIGF0dHJpYnV0ZV9idWYg aG9sZHMgdGhlIHNlcGFyYXRlZCwgZGUtZXNjYXBlZCB0ZXh0IGZvciBlYWNoIGZpZWxkIG9mCisJ ICogdGhlIGN1cnJlbnQgbGluZS4gIFRoZSBDb3B5UmVhZEF0dHJpYnV0ZXMgZnVuY3Rpb25zIHJl dHVybiBhcnJheXMgb2YKKwkgKiBwb2ludGVycyBpbnRvIHRoaXMgYnVmZmVyLiAgV2UgYXZvaWQg cGFsbG9jL3BmcmVlIG92ZXJoZWFkIGJ5IHJlLXVzaW5nCisJICogdGhlIGJ1ZmZlciBvbiBlYWNo IGN5Y2xlLgorCSAqCisJICogSW4gYmluYXJ5IENPUFkgRlJPTSwgYXR0cmlidXRlX2J1ZiBob2xk cyB0aGUgYmluYXJ5IGRhdGEgZm9yIHRoZQorCSAqIGN1cnJlbnQgZmllbGQsIGJ1dCB0aGUgdXNh Z2UgaXMgb3RoZXJ3aXNlIHNpbWlsYXIuCisJICovCisJU3RyaW5nSW5mb0RhdGEgYXR0cmlidXRl X2J1ZjsKKworCS8qIGZpZWxkIHJhdyBkYXRhIHBvaW50ZXJzIGZvdW5kIGJ5IENPUFkgRlJPTSAq LworCisJaW50CQkJbWF4X2ZpZWxkczsKKwljaGFyCSAgKipyYXdfZmllbGRzOworCisJLyoKKwkg KiBTaW1pbGFybHksIGxpbmVfYnVmIGhvbGRzIHRoZSB3aG9sZSBpbnB1dCBsaW5lIGJlaW5nIHBy b2Nlc3NlZC4gVGhlCisJICogaW5wdXQgY3ljbGUgaXMgZmlyc3QgdG8gcmVhZCB0aGUgd2hvbGUg bGluZSBpbnRvIGxpbmVfYnVmLCBhbmQgdGhlbgorCSAqIGV4dHJhY3QgdGhlIGluZGl2aWR1YWwg YXR0cmlidXRlIGZpZWxkcyBpbnRvIGF0dHJpYnV0ZV9idWYuICBsaW5lX2J1ZgorCSAqIGlzIHBy ZXNlcnZlZCB1bm1vZGlmaWVkIHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgaXQgaW4gZXJyb3IgbWVz c2FnZXMgaWYKKwkgKiBhcHByb3ByaWF0ZS4gIChJbiBiaW5hcnkgbW9kZSwgbGluZV9idWYgaXMg bm90IHVzZWQuKQorCSAqLworCVN0cmluZ0luZm9EYXRhIGxpbmVfYnVmOworCWJvb2wJCWxpbmVf YnVmX3ZhbGlkOyAvKiBjb250YWlucyB0aGUgcm93IGJlaW5nIHByb2Nlc3NlZD8gKi8KKworCS8q CisJICogaW5wdXRfYnVmIGhvbGRzIGlucHV0IGRhdGEsIGFscmVhZHkgY29udmVydGVkIHRvIGRh dGFiYXNlIGVuY29kaW5nLgorCSAqCisJICogSW4gdGV4dCBtb2RlLCBDb3B5UmVhZExpbmUgcGFy c2VzIHRoaXMgZGF0YSBzdWZmaWNpZW50bHkgdG8gbG9jYXRlIGxpbmUKKwkgKiBib3VuZGFyaWVz LCB0aGVuIHRyYW5zZmVycyB0aGUgZGF0YSB0byBsaW5lX2J1Zi4gV2UgZ3VhcmFudGVlIHRoYXQK KwkgKiB0aGVyZSBpcyBhIFwwIGF0IGlucHV0X2J1ZltpbnB1dF9idWZfbGVuXSBhdCBhbGwgdGlt ZXMuICAoSW4gYmluYXJ5CisJICogbW9kZSwgaW5wdXRfYnVmIGlzIG5vdCB1c2VkLikKKwkgKgor CSAqIElmIGVuY29kaW5nIGNvbnZlcnNpb24gaXMgbm90IHJlcXVpcmVkLCBpbnB1dF9idWYgaXMg bm90IGEgc2VwYXJhdGUKKwkgKiBidWZmZXIgYnV0IHBvaW50cyBkaXJlY3RseSB0byByYXdfYnVm LiAgSW4gdGhhdCBjYXNlLCBpbnB1dF9idWZfbGVuCisJICogdHJhY2tzIHRoZSBudW1iZXIgb2Yg Ynl0ZXMgdGhhdCBoYXZlIGJlZW4gdmVyaWZpZWQgYXMgdmFsaWQgaW4gdGhlCisJICogZGF0YWJh c2UgZW5jb2RpbmcsIGFuZCByYXdfYnVmX2xlbiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVz IHN0b3JlZAorCSAqIGluIHRoZSBidWZmZXIuCisJICovCisjZGVmaW5lIElOUFVUX0JVRl9TSVpF IDY1NTM2CS8qIHdlIHBhbGxvYyBJTlBVVF9CVUZfU0laRSsxIGJ5dGVzICovCisJY2hhcgkgICAq aW5wdXRfYnVmOworCWludAkJCWlucHV0X2J1Zl9pbmRleDsJLyogbmV4dCBieXRlIHRvIHByb2Nl c3MgKi8KKwlpbnQJCQlpbnB1dF9idWZfbGVuOwkvKiB0b3RhbCAjIG9mIGJ5dGVzIHN0b3JlZCAq LworCWJvb2wJCWlucHV0X3JlYWNoZWRfZW9mOwkvKiB0cnVlIGlmIHdlIHJlYWNoZWQgRU9GICov CisJYm9vbAkJaW5wdXRfcmVhY2hlZF9lcnJvcjsJLyogdHJ1ZSBpZiBhIGNvbnZlcnNpb24gZXJy b3IgaGFwcGVuZWQgKi8KKwkvKiBTaG9ydGhhbmQgZm9yIG51bWJlciBvZiB1bmNvbnN1bWVkIGJ5 dGVzIGF2YWlsYWJsZSBpbiBpbnB1dF9idWYgKi8KKyNkZWZpbmUgSU5QVVRfQlVGX0JZVEVTKGNz dGF0ZSkgKChjc3RhdGUpLT5pbnB1dF9idWZfbGVuIC0gKGNzdGF0ZSktPmlucHV0X2J1Zl9pbmRl eCkKKworCS8qCisJICogcmF3X2J1ZiBob2xkcyByYXcgaW5wdXQgZGF0YSByZWFkIGZyb20gdGhl IGRhdGEgc291cmNlIChmaWxlIG9yIGNsaWVudAorCSAqIGNvbm5lY3Rpb24pLCBub3QgeWV0IGNv bnZlcnRlZCB0byB0aGUgZGF0YWJhc2UgZW5jb2RpbmcuICBMaWtlIHdpdGgKKwkgKiAnaW5wdXRf YnVmJywgd2UgZ3VhcmFudGVlIHRoYXQgdGhlcmUgaXMgYSBcMCBhdCByYXdfYnVmW3Jhd19idWZf bGVuXS4KKwkgKi8KKyNkZWZpbmUgUkFXX0JVRl9TSVpFIDY1NTM2CQkvKiB3ZSBwYWxsb2MgUkFX X0JVRl9TSVpFKzEgYnl0ZXMgKi8KKwljaGFyCSAgICpyYXdfYnVmOworCWludAkJCXJhd19idWZf aW5kZXg7CS8qIG5leHQgYnl0ZSB0byBwcm9jZXNzICovCisJaW50CQkJcmF3X2J1Zl9sZW47CS8q IHRvdGFsICMgb2YgYnl0ZXMgc3RvcmVkICovCisJYm9vbAkJcmF3X3JlYWNoZWRfZW9mOwkvKiB0 cnVlIGlmIHdlIHJlYWNoZWQgRU9GICovCisKKwkvKiBTaG9ydGhhbmQgZm9yIG51bWJlciBvZiB1 bmNvbnN1bWVkIGJ5dGVzIGF2YWlsYWJsZSBpbiByYXdfYnVmICovCisjZGVmaW5lIFJBV19CVUZf QllURVMoY3N0YXRlKSAoKGNzdGF0ZSktPnJhd19idWZfbGVuIC0gKGNzdGF0ZSktPnJhd19idWZf aW5kZXgpCisKKwl1aW50NjQJCWJ5dGVzX3Byb2Nlc3NlZDsJLyogbnVtYmVyIG9mIGJ5dGVzIHBy b2Nlc3NlZCBzbyBmYXIgKi8KK30gQ29weUZyb21TdGF0ZURhdGE7CisKIC8qCiAgKiBSZXByZXNl bnRzIHRoZSBkaWZmZXJlbnQgZGVzdCBjYXNlcyB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGF0CiAg KiB0aGUgYm90dG9tIGxldmVsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5 ZnJvbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWZyb21faW50ZXJuYWwu aAppbmRleCA5MjFjMTUxM2Y3Li5mOGY2MTIwMjU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9jb3B5ZnJvbV9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2Nv cHlmcm9tX2ludGVybmFsLmgKQEAgLTE4LDI4ICsxOCw2IEBACiAjaW5jbHVkZSAiY29tbWFuZHMv dHJpZ2dlci5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogCi0vKgotICogUmVwcmVz ZW50cyB0aGUgZGlmZmVyZW50IHNvdXJjZSBjYXNlcyB3ZSBuZWVkIHRvIHdvcnJ5IGFib3V0IGF0 Ci0gKiB0aGUgYm90dG9tIGxldmVsCi0gKi8KLXR5cGVkZWYgZW51bSBDb3B5U291cmNlCi17Ci0J Q09QWV9GSUxFLAkJCQkJLyogZnJvbSBmaWxlIChvciBhIHBpcGVkIHByb2dyYW0pICovCi0JQ09Q WV9GUk9OVEVORCwJCQkJLyogZnJvbSBmcm9udGVuZCAqLwotCUNPUFlfQ0FMTEJBQ0ssCQkJCS8q IGZyb20gY2FsbGJhY2sgZnVuY3Rpb24gKi8KLX0gQ29weVNvdXJjZTsKLQotLyoKLSAqCVJlcHJl c2VudHMgdGhlIGVuZC1vZi1saW5lIHRlcm1pbmF0b3IgdHlwZSBvZiB0aGUgaW5wdXQKLSAqLwot dHlwZWRlZiBlbnVtIEVvbFR5cGUKLXsKLQlFT0xfVU5LTk9XTiwKLQlFT0xfTkwsCi0JRU9MX0NS LAotCUVPTF9DUk5MLAotfSBFb2xUeXBlOwotCiAvKgogICogUmVwcmVzZW50cyB0aGUgaW5zZXJ0 IG1ldGhvZCB0byBiZSB1c2VkIGR1cmluZyBDT1BZIEZST00uCiAgKi8KQEAgLTUyLDEzNCArMzAs NiBAQCB0eXBlZGVmIGVudW0gQ29weUluc2VydE1ldGhvZAogCQkJCQkJCQkgKiBFeGVjRm9yZWln bkJhdGNoSW5zZXJ0IG9ubHkgaWYgdmFsaWQgKi8KIH0gQ29weUluc2VydE1ldGhvZDsKIAotLyoK LSAqIFRoaXMgc3RydWN0IGNvbnRhaW5zIGFsbCB0aGUgc3RhdGUgdmFyaWFibGVzIHVzZWQgdGhy b3VnaG91dCBhIENPUFkgRlJPTQotICogb3BlcmF0aW9uLgotICovCi10eXBlZGVmIHN0cnVjdCBD b3B5RnJvbVN0YXRlRGF0YQotewotCS8qIGxvdy1sZXZlbCBzdGF0ZSBkYXRhICovCi0JQ29weVNv dXJjZQljb3B5X3NyYzsJCS8qIHR5cGUgb2YgY29weSBzb3VyY2UgKi8KLQlGSUxFCSAgICpjb3B5 X2ZpbGU7CQkvKiB1c2VkIGlmIGNvcHlfc3JjID09IENPUFlfRklMRSAqLwotCVN0cmluZ0luZm8J ZmVfbXNnYnVmOwkJLyogdXNlZCBpZiBjb3B5X3NyYyA9PSBDT1BZX0ZST05URU5EICovCi0KLQlF b2xUeXBlCQllb2xfdHlwZTsJCS8qIEVPTCB0eXBlIG9mIGlucHV0ICovCi0JaW50CQkJZmlsZV9l bmNvZGluZzsJLyogZmlsZSBvciByZW1vdGUgc2lkZSdzIGNoYXJhY3RlciBlbmNvZGluZyAqLwot CWJvb2wJCW5lZWRfdHJhbnNjb2Rpbmc7CS8qIGZpbGUgZW5jb2RpbmcgZGlmZiBmcm9tIHNlcnZl cj8gKi8KLQlPaWQJCQljb252ZXJzaW9uX3Byb2M7CS8qIGVuY29kaW5nIGNvbnZlcnNpb24gZnVu Y3Rpb24gKi8KLQotCS8qIHBhcmFtZXRlcnMgZnJvbSB0aGUgQ09QWSBjb21tYW5kICovCi0JUmVs YXRpb24JcmVsOwkJCS8qIHJlbGF0aW9uIHRvIGNvcHkgZnJvbSAqLwotCUxpc3QJICAgKmF0dG51 bWxpc3Q7CQkvKiBpbnRlZ2VyIGxpc3Qgb2YgYXR0bnVtcyB0byBjb3B5ICovCi0JY2hhcgkgICAq ZmlsZW5hbWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBmb3IgU1RESU4gKi8KLQlib29sCQlpc19w cm9ncmFtOwkJLyogaXMgJ2ZpbGVuYW1lJyBhIHByb2dyYW0gdG8gcG9wZW4/ICovCi0JY29weV9k YXRhX3NvdXJjZV9jYiBkYXRhX3NvdXJjZV9jYjsgLyogZnVuY3Rpb24gZm9yIHJlYWRpbmcgZGF0 YSAqLwotCi0JQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKLQlib29sCSAgICpjb252ZXJ0X3NlbGVj dF9mbGFnczsJLyogcGVyLWNvbHVtbiBDU1YvVEVYVCBDUyBmbGFncyAqLwotCU5vZGUJICAgKndo ZXJlQ2xhdXNlOwkvKiBXSEVSRSBjb25kaXRpb24gKG9yIE5VTEwpICovCi0KLQkvKiB0aGVzZSBh cmUganVzdCBmb3IgZXJyb3IgbWVzc2FnZXMsIHNlZSBDb3B5RnJvbUVycm9yQ2FsbGJhY2sgKi8K LQljb25zdCBjaGFyICpjdXJfcmVsbmFtZTsJLyogdGFibGUgbmFtZSBmb3IgZXJyb3IgbWVzc2Fn ZXMgKi8KLQl1aW50NjQJCWN1cl9saW5lbm87CQkvKiBsaW5lIG51bWJlciBmb3IgZXJyb3IgbWVz c2FnZXMgKi8KLQljb25zdCBjaGFyICpjdXJfYXR0bmFtZTsJLyogY3VycmVudCBhdHQgZm9yIGVy cm9yIG1lc3NhZ2VzICovCi0JY29uc3QgY2hhciAqY3VyX2F0dHZhbDsJCS8qIGN1cnJlbnQgYXR0 IHZhbHVlIGZvciBlcnJvciBtZXNzYWdlcyAqLwotCWJvb2wJCXJlbG5hbWVfb25seTsJLyogZG9u J3Qgb3V0cHV0IGxpbmUgbnVtYmVyLCBhdHQsIGV0Yy4gKi8KLQotCS8qCi0JICogV29ya2luZyBz dGF0ZQotCSAqLwotCU1lbW9yeUNvbnRleHQgY29weWNvbnRleHQ7CS8qIHBlci1jb3B5IGV4ZWN1 dGlvbiBjb250ZXh0ICovCi0KLQlBdHRyTnVtYmVyCW51bV9kZWZhdWx0czsJLyogY291bnQgb2Yg YXR0IHRoYXQgYXJlIG1pc3NpbmcgYW5kIGhhdmUKLQkJCQkJCQkJICogZGVmYXVsdCB2YWx1ZSAq LwotCUZtZ3JJbmZvICAgKmluX2Z1bmN0aW9uczsJLyogYXJyYXkgb2YgaW5wdXQgZnVuY3Rpb25z IGZvciBlYWNoIGF0dHJzICovCi0JT2lkCQkgICAqdHlwaW9wYXJhbXM7CS8qIGFycmF5IG9mIGVs ZW1lbnQgdHlwZXMgZm9yIGluX2Z1bmN0aW9ucyAqLwotCUVycm9yU2F2ZUNvbnRleHQgKmVzY29u dGV4dDsJLyogc29mdCBlcnJvciB0cmFwcGVyIGR1cmluZyBpbl9mdW5jdGlvbnMKLQkJCQkJCQkJ CSAqIGV4ZWN1dGlvbiAqLwotCXVpbnQ2NAkJbnVtX2Vycm9yczsJCS8qIHRvdGFsIG51bWJlciBv ZiByb3dzIHdoaWNoIGNvbnRhaW5lZCBzb2Z0Ci0JCQkJCQkJCSAqIGVycm9ycyAqLwotCWludAkJ ICAgKmRlZm1hcDsJCQkvKiBhcnJheSBvZiBkZWZhdWx0IGF0dCBudW1iZXJzIHJlbGF0ZWQgdG8K LQkJCQkJCQkJICogbWlzc2luZyBhdHQgKi8KLQlFeHByU3RhdGUgKipkZWZleHByczsJCS8qIGFy cmF5IG9mIGRlZmF1bHQgYXR0IGV4cHJlc3Npb25zIGZvciBhbGwKLQkJCQkJCQkJICogYXR0ICov Ci0JYm9vbAkgICAqZGVmYXVsdHM7CQkvKiBpZiBERUZBVUxUIG1hcmtlciB3YXMgZm91bmQgZm9y Ci0JCQkJCQkJCSAqIGNvcnJlc3BvbmRpbmcgYXR0ICovCi0JYm9vbAkJdm9sYXRpbGVfZGVmZXhw cnM7CS8qIGlzIGFueSBvZiBkZWZleHBycyB2b2xhdGlsZT8gKi8KLQlMaXN0CSAgICpyYW5nZV90 YWJsZTsJLyogc2luZ2xlIGVsZW1lbnQgbGlzdCBvZiBSYW5nZVRibEVudHJ5ICovCi0JTGlzdAkg ICAqcnRlcGVybWluZm9zOwkvKiBzaW5nbGUgZWxlbWVudCBsaXN0IG9mIFJURVBlcm1pc3Npb25J bmZvICovCi0JRXhwclN0YXRlICAqcXVhbGV4cHI7Ci0KLQlUcmFuc2l0aW9uQ2FwdHVyZVN0YXRl ICp0cmFuc2l0aW9uX2NhcHR1cmU7Ci0KLQkvKgotCSAqIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNl ZCB0byByZWR1Y2Ugb3ZlcmhlYWQgaW4gQ09QWSBGUk9NLgotCSAqCi0JICogYXR0cmlidXRlX2J1 ZiBob2xkcyB0aGUgc2VwYXJhdGVkLCBkZS1lc2NhcGVkIHRleHQgZm9yIGVhY2ggZmllbGQgb2YK LQkgKiB0aGUgY3VycmVudCBsaW5lLiAgVGhlIENvcHlSZWFkQXR0cmlidXRlcyBmdW5jdGlvbnMg cmV0dXJuIGFycmF5cyBvZgotCSAqIHBvaW50ZXJzIGludG8gdGhpcyBidWZmZXIuICBXZSBhdm9p ZCBwYWxsb2MvcGZyZWUgb3ZlcmhlYWQgYnkgcmUtdXNpbmcKLQkgKiB0aGUgYnVmZmVyIG9uIGVh Y2ggY3ljbGUuCi0JICoKLQkgKiBJbiBiaW5hcnkgQ09QWSBGUk9NLCBhdHRyaWJ1dGVfYnVmIGhv bGRzIHRoZSBiaW5hcnkgZGF0YSBmb3IgdGhlCi0JICogY3VycmVudCBmaWVsZCwgYnV0IHRoZSB1 c2FnZSBpcyBvdGhlcndpc2Ugc2ltaWxhci4KLQkgKi8KLQlTdHJpbmdJbmZvRGF0YSBhdHRyaWJ1 dGVfYnVmOwotCi0JLyogZmllbGQgcmF3IGRhdGEgcG9pbnRlcnMgZm91bmQgYnkgQ09QWSBGUk9N ICovCi0KLQlpbnQJCQltYXhfZmllbGRzOwotCWNoYXIJICAqKnJhd19maWVsZHM7Ci0KLQkvKgot CSAqIFNpbWlsYXJseSwgbGluZV9idWYgaG9sZHMgdGhlIHdob2xlIGlucHV0IGxpbmUgYmVpbmcg cHJvY2Vzc2VkLiBUaGUKLQkgKiBpbnB1dCBjeWNsZSBpcyBmaXJzdCB0byByZWFkIHRoZSB3aG9s ZSBsaW5lIGludG8gbGluZV9idWYsIGFuZCB0aGVuCi0JICogZXh0cmFjdCB0aGUgaW5kaXZpZHVh bCBhdHRyaWJ1dGUgZmllbGRzIGludG8gYXR0cmlidXRlX2J1Zi4gIGxpbmVfYnVmCi0JICogaXMg cHJlc2VydmVkIHVubW9kaWZpZWQgc28gdGhhdCB3ZSBjYW4gZGlzcGxheSBpdCBpbiBlcnJvciBt ZXNzYWdlcyBpZgotCSAqIGFwcHJvcHJpYXRlLiAgKEluIGJpbmFyeSBtb2RlLCBsaW5lX2J1ZiBp cyBub3QgdXNlZC4pCi0JICovCi0JU3RyaW5nSW5mb0RhdGEgbGluZV9idWY7Ci0JYm9vbAkJbGlu ZV9idWZfdmFsaWQ7IC8qIGNvbnRhaW5zIHRoZSByb3cgYmVpbmcgcHJvY2Vzc2VkPyAqLwotCi0J LyoKLQkgKiBpbnB1dF9idWYgaG9sZHMgaW5wdXQgZGF0YSwgYWxyZWFkeSBjb252ZXJ0ZWQgdG8g ZGF0YWJhc2UgZW5jb2RpbmcuCi0JICoKLQkgKiBJbiB0ZXh0IG1vZGUsIENvcHlSZWFkTGluZSBw YXJzZXMgdGhpcyBkYXRhIHN1ZmZpY2llbnRseSB0byBsb2NhdGUgbGluZQotCSAqIGJvdW5kYXJp ZXMsIHRoZW4gdHJhbnNmZXJzIHRoZSBkYXRhIHRvIGxpbmVfYnVmLiBXZSBndWFyYW50ZWUgdGhh dAotCSAqIHRoZXJlIGlzIGEgXDAgYXQgaW5wdXRfYnVmW2lucHV0X2J1Zl9sZW5dIGF0IGFsbCB0 aW1lcy4gIChJbiBiaW5hcnkKLQkgKiBtb2RlLCBpbnB1dF9idWYgaXMgbm90IHVzZWQuKQotCSAq Ci0JICogSWYgZW5jb2RpbmcgY29udmVyc2lvbiBpcyBub3QgcmVxdWlyZWQsIGlucHV0X2J1ZiBp cyBub3QgYSBzZXBhcmF0ZQotCSAqIGJ1ZmZlciBidXQgcG9pbnRzIGRpcmVjdGx5IHRvIHJhd19i dWYuICBJbiB0aGF0IGNhc2UsIGlucHV0X2J1Zl9sZW4KLQkgKiB0cmFja3MgdGhlIG51bWJlciBv ZiBieXRlcyB0aGF0IGhhdmUgYmVlbiB2ZXJpZmllZCBhcyB2YWxpZCBpbiB0aGUKLQkgKiBkYXRh YmFzZSBlbmNvZGluZywgYW5kIHJhd19idWZfbGVuIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0 ZXMgc3RvcmVkCi0JICogaW4gdGhlIGJ1ZmZlci4KLQkgKi8KLSNkZWZpbmUgSU5QVVRfQlVGX1NJ WkUgNjU1MzYJLyogd2UgcGFsbG9jIElOUFVUX0JVRl9TSVpFKzEgYnl0ZXMgKi8KLQljaGFyCSAg ICppbnB1dF9idWY7Ci0JaW50CQkJaW5wdXRfYnVmX2luZGV4OwkvKiBuZXh0IGJ5dGUgdG8gcHJv Y2VzcyAqLwotCWludAkJCWlucHV0X2J1Zl9sZW47CS8qIHRvdGFsICMgb2YgYnl0ZXMgc3RvcmVk ICovCi0JYm9vbAkJaW5wdXRfcmVhY2hlZF9lb2Y7CS8qIHRydWUgaWYgd2UgcmVhY2hlZCBFT0Yg Ki8KLQlib29sCQlpbnB1dF9yZWFjaGVkX2Vycm9yOwkvKiB0cnVlIGlmIGEgY29udmVyc2lvbiBl cnJvciBoYXBwZW5lZCAqLwotCS8qIFNob3J0aGFuZCBmb3IgbnVtYmVyIG9mIHVuY29uc3VtZWQg Ynl0ZXMgYXZhaWxhYmxlIGluIGlucHV0X2J1ZiAqLwotI2RlZmluZSBJTlBVVF9CVUZfQllURVMo Y3N0YXRlKSAoKGNzdGF0ZSktPmlucHV0X2J1Zl9sZW4gLSAoY3N0YXRlKS0+aW5wdXRfYnVmX2lu ZGV4KQotCi0JLyoKLQkgKiByYXdfYnVmIGhvbGRzIHJhdyBpbnB1dCBkYXRhIHJlYWQgZnJvbSB0 aGUgZGF0YSBzb3VyY2UgKGZpbGUgb3IgY2xpZW50Ci0JICogY29ubmVjdGlvbiksIG5vdCB5ZXQg Y29udmVydGVkIHRvIHRoZSBkYXRhYmFzZSBlbmNvZGluZy4gIExpa2Ugd2l0aAotCSAqICdpbnB1 dF9idWYnLCB3ZSBndWFyYW50ZWUgdGhhdCB0aGVyZSBpcyBhIFwwIGF0IHJhd19idWZbcmF3X2J1 Zl9sZW5dLgotCSAqLwotI2RlZmluZSBSQVdfQlVGX1NJWkUgNjU1MzYJCS8qIHdlIHBhbGxvYyBS QVdfQlVGX1NJWkUrMSBieXRlcyAqLwotCWNoYXIJICAgKnJhd19idWY7Ci0JaW50CQkJcmF3X2J1 Zl9pbmRleDsJLyogbmV4dCBieXRlIHRvIHByb2Nlc3MgKi8KLQlpbnQJCQlyYXdfYnVmX2xlbjsJ LyogdG90YWwgIyBvZiBieXRlcyBzdG9yZWQgKi8KLQlib29sCQlyYXdfcmVhY2hlZF9lb2Y7CS8q IHRydWUgaWYgd2UgcmVhY2hlZCBFT0YgKi8KLQotCS8qIFNob3J0aGFuZCBmb3IgbnVtYmVyIG9m IHVuY29uc3VtZWQgYnl0ZXMgYXZhaWxhYmxlIGluIHJhd19idWYgKi8KLSNkZWZpbmUgUkFXX0JV Rl9CWVRFUyhjc3RhdGUpICgoY3N0YXRlKS0+cmF3X2J1Zl9sZW4gLSAoY3N0YXRlKS0+cmF3X2J1 Zl9pbmRleCkKLQotCXVpbnQ2NAkJYnl0ZXNfcHJvY2Vzc2VkOwkvKiBudW1iZXIgb2YgYnl0ZXMg cHJvY2Vzc2VkIHNvIGZhciAqLwotfSBDb3B5RnJvbVN0YXRlRGF0YTsKLQogZXh0ZXJuIHZvaWQg UmVjZWl2ZUNvcHlCZWdpbihDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7CiBleHRlcm4gdm9pZCBSZWNl aXZlQ29weUJpbmFyeUhlYWRlcihDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7CiAKLS0gCjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0006-Add-support-for-adding-custom-COPY-FROM-format.patch" Content-Disposition: attachment; filename="v8-0006-Add-support-for-adding-custom-COPY-FROM-format.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w55 RnJvbSBmNDhlN2I2MjlhOGQxNWZjNzBjZDRjYzQ3MzdkZDJhZDYxOTEwY2M5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdXRvdSBLb3VoZWkgPGtvdUBjbGVhci1jb2RlLmNvbT4KRGF0 ZTogV2VkLCAyNCBKYW4gMjAyNCAxMTowNzoxNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjggMDYv MTBdIEFkZCBzdXBwb3J0IGZvciBhZGRpbmcgY3VzdG9tIENPUFkgRlJPTSBmb3JtYXQKCldlIHVz ZSB0aGUgc2FtZSBhcHByb2FjaCBhcyB3ZSB1c2VkIGZvciBjdXN0b20gQ09QWSBUTyBmb3JtYXQu IE5vdywKY3VzdG9tIENPUFkgZm9ybWF0IGhhbmRsZXIgY2FuIHJldHVybiBDT1BZIFRPIGZvcm1h dCByb3V0aW5lcyBvciBDT1BZCkZST00gZm9ybWF0IHJvdXRpbmVzIGJhc2VkIG9uIHRoZSAiaXNf ZnJvbSIgYXJndW1lbnQ6CgogICAgY29weV9oYW5kbGVyKHRydWUpIHJldHVybnMgQ29weVRvUm91 dGluZQogICAgY29weV9oYW5kbGVyKGZhbHNlKSByZXR1cm5zIENvcHlGcm9tUm91dGluZQotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICAgICAgICAgICB8IDUzICsrKysr KysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaCAgICAgICAgICAg ICAgICB8ICAyICsKIC4uLi9leHBlY3RlZC90ZXN0X2NvcHlfZm9ybWF0Lm91dCAgICAgICAgICAg ICB8IDEyICsrKysrCiAuLi4vdGVzdF9jb3B5X2Zvcm1hdC9zcWwvdGVzdF9jb3B5X2Zvcm1hdC5z cWwgfCAgNiArKysKIC4uLi90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQuYyAgICAg ICB8IDUwICsrKysrKysrKysrKysrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25z KCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKaW5kZXggZWM2ZGZmZjhhYi4uNDc5 ZjM2ODY4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtNDcyLDEyICs0NzIsOSBAQCBQcm9jZXNzQ29w eU9wdGlvbkN1c3RvbUZvcm1hdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyogY3VzdG9t IGZvcm1hdCAqLwotCWlmICghaXNfZnJvbSkKLQl7Ci0JCWZ1bmNhcmd0eXBlc1swXSA9IElOVEVS TkFMT0lEOwotCQloYW5kbGVyT2lkID0gTG9va3VwRnVuY05hbWUobGlzdF9tYWtlMShtYWtlU3Ry aW5nKGZvcm1hdCkpLCAxLAotCQkJCQkJCQkJZnVuY2FyZ3R5cGVzLCB0cnVlKTsKLQl9CisJZnVu Y2FyZ3R5cGVzWzBdID0gSU5URVJOQUxPSUQ7CisJaGFuZGxlck9pZCA9IExvb2t1cEZ1bmNOYW1l KGxpc3RfbWFrZTEobWFrZVN0cmluZyhmb3JtYXQpKSwgMSwKKwkJCQkJCQkJZnVuY2FyZ3R5cGVz LCB0cnVlKTsKIAlpZiAoIU9pZElzVmFsaWQoaGFuZGxlck9pZCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC00ODYs MTQgKzQ4MywzNiBAQCBQcm9jZXNzQ29weU9wdGlvbkN1c3RvbUZvcm1hdChQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAlkYXR1bSA9IE9pZEZ1bmN0aW9uQ2FsbDEoaGFuZGxlck9pZCwgQm9vbEdldERh dHVtKGlzX2Zyb20pKTsKIAlyb3V0aW5lID0gRGF0dW1HZXRQb2ludGVyKGRhdHVtKTsKLQlpZiAo cm91dGluZSA9PSBOVUxMIHx8ICFJc0Eocm91dGluZSwgQ29weVRvUm91dGluZSkpCi0JCWVyZXBv cnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSks Ci0JCQkJIGVycm1zZygiQ09QWSBoYW5kbGVyIGZ1bmN0aW9uICVzKCV1KSBkaWQgbm90IHJldHVy biBhIENvcHlUb1JvdXRpbmUgc3RydWN0IiwKLQkJCQkJCWZvcm1hdCwgaGFuZGxlck9pZCksCi0J CQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKLQotCW9w dHNfb3V0LT50b19yb3V0aW5lID0gcm91dGluZTsKKwlpZiAoaXNfZnJvbSkKKwl7CisJCWlmIChy b3V0aW5lID09IE5VTEwgfHwgIUlzQShyb3V0aW5lLCBDb3B5RnJvbVJvdXRpbmUpKQorCQkJZXJl cG9ydCgKKwkJCQkJRVJST1IsCisJCQkJCShlcnJjb2RlKAorCQkJCQkJCSBFUlJDT0RFX0lOVkFM SURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiQ09QWSBoYW5kbGVyIGZ1bmN0aW9u ICIKKwkJCQkJCQkiJXMoJXUpIGRpZCBub3QgcmV0dXJuIGEgIgorCQkJCQkJCSJDb3B5RnJvbVJv dXRpbmUgc3RydWN0IiwKKwkJCQkJCQlmb3JtYXQsIGhhbmRsZXJPaWQpLAorCQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKAorCQkJCQkJCQkJCXBzdGF0ZSwgZGVmZWwtPmxvY2F0aW9uKSkpOworCQlv cHRzX291dC0+ZnJvbV9yb3V0aW5lID0gcm91dGluZTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKHJv dXRpbmUgPT0gTlVMTCB8fCAhSXNBKHJvdXRpbmUsIENvcHlUb1JvdXRpbmUpKQorCQkJZXJlcG9y dCgKKwkJCQkJRVJST1IsCisJCQkJCShlcnJjb2RlKAorCQkJCQkJCSBFUlJDT0RFX0lOVkFMSURf UEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygiQ09QWSBoYW5kbGVyIGZ1bmN0aW9uICIK KwkJCQkJCQkiJXMoJXUpIGRpZCBub3QgcmV0dXJuIGEgIgorCQkJCQkJCSJDb3B5VG9Sb3V0aW5l IHN0cnVjdCIsCisJCQkJCQkJZm9ybWF0LCBoYW5kbGVyT2lkKSwKKwkJCQkJIHBhcnNlcl9lcnJw b3NpdGlvbigKKwkJCQkJCQkJCQlwc3RhdGUsIGRlZmVsLT5sb2NhdGlvbikpKTsKKwkJb3B0c19v dXQtPnRvX3JvdXRpbmUgPSByb3V0aW5lOworCX0KIH0KIAogLyoKQEAgLTY5Miw3ICs3MTEsMTEg QEAgUHJvY2Vzc0NvcHlPcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJewogCQkJYm9vbAkJ cHJvY2Vzc2VkID0gZmFsc2U7CiAKLQkJCWlmICghaXNfZnJvbSkKKwkJCWlmIChpc19mcm9tKQor CQkJCXByb2Nlc3NlZCA9CisJCQkJCW9wdHNfb3V0LT5mcm9tX3JvdXRpbmUtPkNvcHlGcm9tUHJv Y2Vzc09wdGlvbigKKwkJCQkJCQkJCQkJCQkJCQkgIGNzdGF0ZSwgZGVmZWwpOworCQkJZWxzZQog CQkJCXByb2Nlc3NlZCA9IG9wdHNfb3V0LT50b19yb3V0aW5lLT5Db3B5VG9Qcm9jZXNzT3B0aW9u KGNzdGF0ZSwgZGVmZWwpOwogCQkJaWYgKCFwcm9jZXNzZWQpCiAJCQkJZXJlcG9ydChFUlJPUiwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHlhcGkuaAppbmRleCAzMjNlNDcwNWQyLi5lZjFiYjIwMWMyIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5YXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvY29weWFwaS5oCkBAIC0zMCw2ICszMCw4IEBAIHR5cGVkZWYgdm9pZCAoKkNvcHlGcm9t RW5kX2Z1bmN0aW9uKSAoQ29weUZyb21TdGF0ZSBjc3RhdGUpOwogLyogUm91dGluZXMgZm9yIGEg Q09QWSBGUk9NIGZvcm1hdCBpbXBsZW1lbnRhdGlvbi4gKi8KIHR5cGVkZWYgc3RydWN0IENvcHlG cm9tUm91dGluZQogeworCU5vZGVUYWcJCXR5cGU7CisKIAkvKgogCSAqIENhbGxlZCBmb3IgcHJv Y2Vzc2luZyBvbmUgQ09QWSBGUk9NIG9wdGlvbi4gVGhpcyB3aWxsIHJldHVybiBmYWxzZSB3aGVu CiAJICogdGhlIGdpdmVuIG9wdGlvbiBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L2V4cGVjdGVkL3Rlc3RfY29weV9mb3JtYXQub3V0IGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L2V4cGVjdGVkL3Rlc3RfY29weV9mb3Jt YXQub3V0CmluZGV4IDNhMjRhZTdiOTcuLjZhZjY5ZjBlYjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9leHBlY3RlZC90ZXN0X2NvcHlfZm9ybWF0Lm91dAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvZXhwZWN0ZWQvdGVzdF9jb3B5 X2Zvcm1hdC5vdXQKQEAgLTEsNiArMSwxOCBAQAogQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2NvcHlf Zm9ybWF0OwogQ1JFQVRFIFRBQkxFIHB1YmxpYy50ZXN0IChhIElOVCwgYiBJTlQsIGMgSU5UKTsK IElOU0VSVCBJTlRPIHB1YmxpYy50ZXN0IFZBTFVFUyAoMSwgMiwgMyksICgxMiwgMzQsIDU2KSwg KDEyMywgNDU2LCA3ODkpOworQ09QWSBwdWJsaWMudGVzdCBGUk9NIHN0ZGluIFdJVEggKAorCW9w dGlvbl9iZWZvcmUgJ2JlZm9yZScsCisJZm9ybWF0ICd0ZXN0X2NvcHlfZm9ybWF0JywKKwlvcHRp b25fYWZ0ZXIgJ2FmdGVyJworKTsKK05PVElDRTogIHRlc3RfY29weV9mb3JtYXQ6IGlzX2Zyb209 dHJ1ZQorTk9USUNFOiAgQ29weUZyb21Qcm9jZXNzT3B0aW9uOiAib3B0aW9uX2JlZm9yZSI9ImJl Zm9yZSIKK05PVElDRTogIENvcHlGcm9tUHJvY2Vzc09wdGlvbjogIm9wdGlvbl9hZnRlciI9ImFm dGVyIgorTk9USUNFOiAgQ29weUZyb21HZXRGb3JtYXQKK05PVElDRTogIENvcHlGcm9tU3RhcnQ6 IG5hdHRzPTMKK05PVElDRTogIENvcHlGcm9tT25lUm93CitOT1RJQ0U6ICBDb3B5RnJvbUVuZAog Q09QWSBwdWJsaWMudGVzdCBUTyBzdGRvdXQgV0lUSCAoCiAJb3B0aW9uX2JlZm9yZSAnYmVmb3Jl JywKIAlmb3JtYXQgJ3Rlc3RfY29weV9mb3JtYXQnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2NvcHlfZm9ybWF0L3NxbC90ZXN0X2NvcHlfZm9ybWF0LnNxbCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC9zcWwvdGVzdF9jb3B5X2Zvcm1hdC5zcWwKaW5kZXgg MGViN2VkMmUxMS4uOTRkM2M3ODlhMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2NvcHlfZm9ybWF0L3NxbC90ZXN0X2NvcHlfZm9ybWF0LnNxbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfY29weV9mb3JtYXQvc3FsL3Rlc3RfY29weV9mb3JtYXQuc3FsCkBAIC0xLDYgKzEs MTIgQEAKIENSRUFURSBFWFRFTlNJT04gdGVzdF9jb3B5X2Zvcm1hdDsKIENSRUFURSBUQUJMRSBw dWJsaWMudGVzdCAoYSBJTlQsIGIgSU5ULCBjIElOVCk7CiBJTlNFUlQgSU5UTyBwdWJsaWMudGVz dCBWQUxVRVMgKDEsIDIsIDMpLCAoMTIsIDM0LCA1NiksICgxMjMsIDQ1NiwgNzg5KTsKK0NPUFkg cHVibGljLnRlc3QgRlJPTSBzdGRpbiBXSVRIICgKKwlvcHRpb25fYmVmb3JlICdiZWZvcmUnLAor CWZvcm1hdCAndGVzdF9jb3B5X2Zvcm1hdCcsCisJb3B0aW9uX2FmdGVyICdhZnRlcicKKyk7Citc LgogQ09QWSBwdWJsaWMudGVzdCBUTyBzdGRvdXQgV0lUSCAoCiAJb3B0aW9uX2JlZm9yZSAnYmVm b3JlJywKIAlmb3JtYXQgJ3Rlc3RfY29weV9mb3JtYXQnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0LmMKaW5kZXggYTIyMTlhZmNk ZS4uNWUxYjQwZTg4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2NvcHlfZm9y bWF0L3Rlc3RfY29weV9mb3JtYXQuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9m b3JtYXQvdGVzdF9jb3B5X2Zvcm1hdC5jCkBAIC0xOCw2ICsxOCw1MCBAQAogCiBQR19NT0RVTEVf TUFHSUM7CiAKK3N0YXRpYyBib29sCitDb3B5RnJvbVByb2Nlc3NPcHRpb24oQ29weUZyb21TdGF0 ZSBjc3RhdGUsIERlZkVsZW0gKmRlZmVsKQoreworCWVyZXBvcnQoTk9USUNFLAorCQkJKGVycm1z ZygiQ29weUZyb21Qcm9jZXNzT3B0aW9uOiBcIiVzXCI9XCIlc1wiIiwKKwkJCQkJZGVmZWwtPmRl Zm5hbWUsIGRlZkdldFN0cmluZyhkZWZlbCkpKSk7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBpbnQxNgorQ29weUZyb21HZXRGb3JtYXQoQ29weUZyb21TdGF0ZSBjc3RhdGUpCit7CisJZXJl cG9ydChOT1RJQ0UsIChlcnJtc2coIkNvcHlGcm9tR2V0Rm9ybWF0IikpKTsKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQKK0NvcHlGcm9tU3RhcnQoQ29weUZyb21TdGF0ZSBjc3RhdGUsIFR1 cGxlRGVzYyB0dXBEZXNjKQoreworCWVyZXBvcnQoTk9USUNFLCAoZXJybXNnKCJDb3B5RnJvbVN0 YXJ0OiBuYXR0cz0lZCIsIHR1cERlc2MtPm5hdHRzKSkpOworfQorCitzdGF0aWMgYm9vbAorQ29w eUZyb21PbmVSb3coQ29weUZyb21TdGF0ZSBjc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg RGF0dW0gKnZhbHVlcywgYm9vbCAqbnVsbHMpCit7CisJZXJlcG9ydChOT1RJQ0UsIChlcnJtc2co IkNvcHlGcm9tT25lUm93IikpKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkCitD b3B5RnJvbUVuZChDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKK3sKKwllcmVwb3J0KE5PVElDRSwgKGVy cm1zZygiQ29weUZyb21FbmQiKSkpOworfQorCitzdGF0aWMgY29uc3QgQ29weUZyb21Sb3V0aW5l IENvcHlGcm9tUm91dGluZVRlc3RDb3B5Rm9ybWF0ID0geworCS50eXBlID0gVF9Db3B5RnJvbVJv dXRpbmUsCisJLkNvcHlGcm9tUHJvY2Vzc09wdGlvbiA9IENvcHlGcm9tUHJvY2Vzc09wdGlvbiwK KwkuQ29weUZyb21HZXRGb3JtYXQgPSBDb3B5RnJvbUdldEZvcm1hdCwKKwkuQ29weUZyb21TdGFy dCA9IENvcHlGcm9tU3RhcnQsCisJLkNvcHlGcm9tT25lUm93ID0gQ29weUZyb21PbmVSb3csCisJ LkNvcHlGcm9tRW5kID0gQ29weUZyb21FbmQsCit9OworCiBzdGF0aWMgYm9vbAogQ29weVRvUHJv Y2Vzc09wdGlvbihDb3B5VG9TdGF0ZSBjc3RhdGUsIERlZkVsZW0gKmRlZmVsKQogewpAQCAtNzEs NyArMTE1LDcgQEAgdGVzdF9jb3B5X2Zvcm1hdChQR19GVU5DVElPTl9BUkdTKQogCQkJKGVycm1z ZygidGVzdF9jb3B5X2Zvcm1hdDogaXNfZnJvbT0lcyIsIGlzX2Zyb20gPyAidHJ1ZSIgOiAiZmFs c2UiKSkpOwogCiAJaWYgKGlzX2Zyb20pCi0JCWVsb2coRVJST1IsICJDT1BZIEZST00gaXNuJ3Qg c3VwcG9ydGVkIHlldCIpOwotCi0JUEdfUkVUVVJOX1BPSU5URVIoJkNvcHlUb1JvdXRpbmVUZXN0 Q29weUZvcm1hdCk7CisJCVBHX1JFVFVSTl9QT0lOVEVSKCZDb3B5RnJvbVJvdXRpbmVUZXN0Q29w eUZvcm1hdCk7CisJZWxzZQorCQlQR19SRVRVUk5fUE9JTlRFUigmQ29weVRvUm91dGluZVRlc3RD b3B5Rm9ybWF0KTsKIH0KLS0gCjIuNDEuMAoK --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0009-change-CopyToGetFormat-to-CopyToSendCopyBegin-and.patch" Content-Disposition: attachment; filename="v8-0009-change-CopyToGetFormat-to-CopyToSendCopyBegin-and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6w98 RnJvbSBmMGE4MTUxZmVmZjQ0ODIzODgxYzNjNGUxZTdhY2E0ZjliZDY5MGQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGFvIEp1bndhbmcgPHpoandwa3VAZ21haWwuY29tPgpEYXRl OiBTYXQsIDI3IEphbiAyMDI0IDA5OjUzOjMxICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCAwOS8x MF0gY2hhbmdlIENvcHlUb0dldEZvcm1hdCB0byBDb3B5VG9TZW5kQ29weUJlZ2luIGFuZAogZXhw b3J0IG1vcmUgYXBpCgpTaWduZWQtb2ZmLWJ5OiBaaGFvIEp1bndhbmcgPHpoandwa3VAZ21haWwu Y29tPgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8 IDY1ICsrKysrKysrKystLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaCAg ICAgICAgICAgICAgICB8IDEyICsrLS0KIC4uLi90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9m b3JtYXQuYyAgICAgICB8ICA3ICstCiAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyks IDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5kZXggYjVkODY3ODM5NC4uZTJh NDk2NDAxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTY2LDExICs2Niw2IEBAIHN0YXRpYyB2 b2lkIENvcHlBdHRyaWJ1dGVPdXRDU1YoQ29weVRvU3RhdGUgY3N0YXRlLCBjb25zdCBjaGFyICpz dHJpbmcsCiAvKiBMb3ctbGV2ZWwgY29tbXVuaWNhdGlvbnMgZnVuY3Rpb25zICovCiBzdGF0aWMg dm9pZCBTZW5kQ29weUJlZ2luKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMgdm9pZCBTZW5k Q29weUVuZChDb3B5VG9TdGF0ZSBjc3RhdGUpOwotc3RhdGljIHZvaWQgQ29weVNlbmREYXRhKENv cHlUb1N0YXRlIGNzdGF0ZSwgY29uc3Qgdm9pZCAqZGF0YWJ1ZiwgaW50IGRhdGFzaXplKTsKLXN0 YXRpYyB2b2lkIENvcHlTZW5kU3RyaW5nKENvcHlUb1N0YXRlIGNzdGF0ZSwgY29uc3QgY2hhciAq c3RyKTsKLXN0YXRpYyB2b2lkIENvcHlTZW5kQ2hhcihDb3B5VG9TdGF0ZSBjc3RhdGUsIGNoYXIg Yyk7Ci1zdGF0aWMgdm9pZCBDb3B5U2VuZEludDMyKENvcHlUb1N0YXRlIGNzdGF0ZSwgaW50MzIg dmFsKTsKLXN0YXRpYyB2b2lkIENvcHlTZW5kSW50MTYoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQx NiB2YWwpOwogCiAvKgogICogQ29weVRvUm91dGluZSBpbXBsZW1lbnRhdGlvbnMuCkBAIC05MCwx MCArODUsMjAgQEAgQ29weVRvVGV4dFByb2Nlc3NPcHRpb24oQ29weVRvU3RhdGUgY3N0YXRlLCBE ZWZFbGVtICpkZWZlbCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbnQxNgotQ29weVRv VGV4dEdldEZvcm1hdChDb3B5VG9TdGF0ZSBjc3RhdGUpCitzdGF0aWMgdm9pZAorQ29weVRvVGV4 dFNlbmRDb3B5QmVnaW4oQ29weVRvU3RhdGUgY3N0YXRlKQogewotCXJldHVybiAwOworCVN0cmlu Z0luZm9EYXRhIGJ1ZjsKKwlpbnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVt bGlzdCk7CisJaW50MTYJCWZvcm1hdCA9IDA7CisJaW50CQkJaTsKKworCXBxX2JlZ2lubWVzc2Fn ZSgmYnVmLCBQcU1zZ19Db3B5T3V0UmVzcG9uc2UpOworCXBxX3NlbmRieXRlKCZidWYsIGZvcm1h dCk7CS8qIG92ZXJhbGwgZm9ybWF0ICovCisJcHFfc2VuZGludDE2KCZidWYsIG5hdHRzKTsKKwlm b3IgKGkgPSAwOyBpIDwgbmF0dHM7IGkrKykKKwkJcHFfc2VuZGludDE2KCZidWYsIGZvcm1hdCk7 IC8qIHBlci1jb2x1bW4gZm9ybWF0cyAqLworCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7CiB9CiAKIHN0 YXRpYyB2b2lkCkBAIC0yMzAsMTAgKzIzNSwyMCBAQCBDb3B5VG9CaW5hcnlQcm9jZXNzT3B0aW9u KENvcHlUb1N0YXRlIGNzdGF0ZSwgRGVmRWxlbSAqZGVmZWwpCiAJcmV0dXJuIGZhbHNlOwogfQog Ci1zdGF0aWMgaW50MTYKLUNvcHlUb0JpbmFyeUdldEZvcm1hdChDb3B5VG9TdGF0ZSBjc3RhdGUp CitzdGF0aWMgdm9pZAorQ29weVRvQmluYXJ5U2VuZENvcHlCZWdpbihDb3B5VG9TdGF0ZSBjc3Rh dGUpCiB7Ci0JcmV0dXJuIDE7CisJU3RyaW5nSW5mb0RhdGEgYnVmOworCWludAkJCW5hdHRzID0g bGlzdF9sZW5ndGgoY3N0YXRlLT5hdHRudW1saXN0KTsKKwlpbnQxNgkJZm9ybWF0ID0gMTsKKwlp bnQJCQlpOworCisJcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25zZSk7 CisJcHFfc2VuZGJ5dGUoJmJ1ZiwgZm9ybWF0KTsJLyogb3ZlcmFsbCBmb3JtYXQgKi8KKwlwcV9z ZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOworCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCQlw cV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCisJcHFf ZW5kbWVzc2FnZSgmYnVmKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMxNSw3ICszMzAsNyBAQCBD b3B5VG9CaW5hcnlFbmQoQ29weVRvU3RhdGUgY3N0YXRlKQogCiBDb3B5VG9Sb3V0aW5lIENvcHlU b1JvdXRpbmVUZXh0ID0gewogCS5Db3B5VG9Qcm9jZXNzT3B0aW9uID0gQ29weVRvVGV4dFByb2Nl c3NPcHRpb24sCi0JLkNvcHlUb0dldEZvcm1hdCA9IENvcHlUb1RleHRHZXRGb3JtYXQsCisJLkNv cHlUb1NlbmRDb3B5QmVnaW4gPSBDb3B5VG9UZXh0U2VuZENvcHlCZWdpbiwKIAkuQ29weVRvU3Rh cnQgPSBDb3B5VG9UZXh0U3RhcnQsCiAJLkNvcHlUb09uZVJvdyA9IENvcHlUb1RleHRPbmVSb3cs CiAJLkNvcHlUb0VuZCA9IENvcHlUb1RleHRFbmQsCkBAIC0zMjgsNyArMzQzLDcgQEAgQ29weVRv Um91dGluZSBDb3B5VG9Sb3V0aW5lVGV4dCA9IHsKICAqLwogQ29weVRvUm91dGluZSBDb3B5VG9S b3V0aW5lQ1NWID0gewogCS5Db3B5VG9Qcm9jZXNzT3B0aW9uID0gQ29weVRvVGV4dFByb2Nlc3NP cHRpb24sCi0JLkNvcHlUb0dldEZvcm1hdCA9IENvcHlUb1RleHRHZXRGb3JtYXQsCisJLkNvcHlU b1NlbmRDb3B5QmVnaW4gPSBDb3B5VG9UZXh0U2VuZENvcHlCZWdpbiwKIAkuQ29weVRvU3RhcnQg PSBDb3B5VG9UZXh0U3RhcnQsCiAJLkNvcHlUb09uZVJvdyA9IENvcHlUb1RleHRPbmVSb3csCiAJ LkNvcHlUb0VuZCA9IENvcHlUb1RleHRFbmQsCkBAIC0zMzYsNyArMzUxLDcgQEAgQ29weVRvUm91 dGluZSBDb3B5VG9Sb3V0aW5lQ1NWID0gewogCiBDb3B5VG9Sb3V0aW5lIENvcHlUb1JvdXRpbmVC aW5hcnkgPSB7CiAJLkNvcHlUb1Byb2Nlc3NPcHRpb24gPSBDb3B5VG9CaW5hcnlQcm9jZXNzT3B0 aW9uLAotCS5Db3B5VG9HZXRGb3JtYXQgPSBDb3B5VG9CaW5hcnlHZXRGb3JtYXQsCisJLkNvcHlU b1NlbmRDb3B5QmVnaW4gPSBDb3B5VG9CaW5hcnlTZW5kQ29weUJlZ2luLAogCS5Db3B5VG9TdGFy dCA9IENvcHlUb0JpbmFyeVN0YXJ0LAogCS5Db3B5VG9PbmVSb3cgPSBDb3B5VG9CaW5hcnlPbmVS b3csCiAJLkNvcHlUb0VuZCA9IENvcHlUb0JpbmFyeUVuZCwKQEAgLTM0OSwxNyArMzY0LDcgQEAg Q29weVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lQmluYXJ5ID0gewogc3RhdGljIHZvaWQKIFNlbmRD b3B5QmVnaW4oQ29weVRvU3RhdGUgY3N0YXRlKQogewotCVN0cmluZ0luZm9EYXRhIGJ1ZjsKLQlp bnQJCQluYXR0cyA9IGxpc3RfbGVuZ3RoKGNzdGF0ZS0+YXR0bnVtbGlzdCk7Ci0JaW50MTYJCWZv cm1hdCA9IGNzdGF0ZS0+b3B0cy50b19yb3V0aW5lLT5Db3B5VG9HZXRGb3JtYXQoY3N0YXRlKTsK LQlpbnQJCQlpOwotCi0JcHFfYmVnaW5tZXNzYWdlKCZidWYsIFBxTXNnX0NvcHlPdXRSZXNwb25z ZSk7Ci0JcHFfc2VuZGJ5dGUoJmJ1ZiwgZm9ybWF0KTsJLyogb3ZlcmFsbCBmb3JtYXQgKi8KLQlw cV9zZW5kaW50MTYoJmJ1ZiwgbmF0dHMpOwotCWZvciAoaSA9IDA7IGkgPCBuYXR0czsgaSsrKQot CQlwcV9zZW5kaW50MTYoJmJ1ZiwgZm9ybWF0KTsgLyogcGVyLWNvbHVtbiBmb3JtYXRzICovCi0J cHFfZW5kbWVzc2FnZSgmYnVmKTsKKwljc3RhdGUtPm9wdHMudG9fcm91dGluZS0+Q29weVRvU2Vu ZENvcHlCZWdpbihjc3RhdGUpOwogCWNzdGF0ZS0+Y29weV9kZXN0ID0gQ09QWV9ERVNUX0ZST05U RU5EOwogfQogCkBAIC0zODIsMTkgKzM4NywxOSBAQCBTZW5kQ29weUVuZChDb3B5VG9TdGF0ZSBj c3RhdGUpCiAgKiBOQjogbm8gZGF0YSBjb252ZXJzaW9uIGlzIGFwcGxpZWQgYnkgdGhlc2UgZnVu Y3Rpb25zCiAgKi0tLS0tLS0tLS0KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIENvcHlTZW5kRGF0 YShDb3B5VG9TdGF0ZSBjc3RhdGUsIGNvbnN0IHZvaWQgKmRhdGFidWYsIGludCBkYXRhc2l6ZSkK IHsKIAlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGNzdGF0ZS0+ZmVfbXNnYnVmLCBkYXRhYnVmLCBk YXRhc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkCit2b2lkCiBDb3B5U2VuZFN0cmluZyhDb3B5VG9T dGF0ZSBjc3RhdGUsIGNvbnN0IGNoYXIgKnN0cikKIHsKIAlhcHBlbmRCaW5hcnlTdHJpbmdJbmZv KGNzdGF0ZS0+ZmVfbXNnYnVmLCBzdHIsIHN0cmxlbihzdHIpKTsKIH0KIAotc3RhdGljIHZvaWQK K3ZvaWQKIENvcHlTZW5kQ2hhcihDb3B5VG9TdGF0ZSBjc3RhdGUsIGNoYXIgYykKIHsKIAlhcHBl bmRTdHJpbmdJbmZvQ2hhck1hY3JvKGNzdGF0ZS0+ZmVfbXNnYnVmLCBjKTsKQEAgLTQ2NCw3ICs0 NjksNyBAQCBDb3B5VG9TdGF0ZUZsdXNoKENvcHlUb1N0YXRlIGNzdGF0ZSkKIC8qCiAgKiBDb3B5 U2VuZEludDMyIHNlbmRzIGFuIGludDMyIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgogICovCi1zdGF0 aWMgaW5saW5lIHZvaWQKK2lubGluZSB2b2lkCiBDb3B5U2VuZEludDMyKENvcHlUb1N0YXRlIGNz dGF0ZSwgaW50MzIgdmFsKQogewogCXVpbnQzMgkJYnVmOwpAQCAtNDc2LDcgKzQ4MSw3IEBAIENv cHlTZW5kSW50MzIoQ29weVRvU3RhdGUgY3N0YXRlLCBpbnQzMiB2YWwpCiAvKgogICogQ29weVNl bmRJbnQxNiBzZW5kcyBhbiBpbnQxNiBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIKICAqLwotc3RhdGlj IGlubGluZSB2b2lkCitpbmxpbmUgdm9pZAogQ29weVNlbmRJbnQxNihDb3B5VG9TdGF0ZSBjc3Rh dGUsIGludDE2IHZhbCkKIHsKIAl1aW50MTYJCWJ1ZjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NvcHlhcGkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlhcGkuaAppbmRl eCAyMmFjY2M4M2FiLi4wYTA1YjI0YzU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9jb3B5YXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weWFwaS5oCkBAIC02Nyw3 ICs2Nyw3IEBAIGV4dGVybiBDb3B5RnJvbVJvdXRpbmUgQ29weUZyb21Sb3V0aW5lQmluYXJ5Owog dHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhICpDb3B5VG9TdGF0ZTsKIAogdHlwZWRlZiBi b29sICgqQ29weVRvUHJvY2Vzc09wdGlvbl9mdW5jdGlvbikgKENvcHlUb1N0YXRlIGNzdGF0ZSwg RGVmRWxlbSAqZGVmZWwpOwotdHlwZWRlZiBpbnQxNiAoKkNvcHlUb0dldEZvcm1hdF9mdW5jdGlv bikgKENvcHlUb1N0YXRlIGNzdGF0ZSk7Cit0eXBlZGVmIHZvaWQgKCpDb3B5VG9TZW5kQ29weUJl Z2luX2Z1bmN0aW9uKSAoQ29weVRvU3RhdGUgY3N0YXRlKTsKIHR5cGVkZWYgdm9pZCAoKkNvcHlU b1N0YXJ0X2Z1bmN0aW9uKSAoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVwRGVzYyk7 CiB0eXBlZGVmIHZvaWQgKCpDb3B5VG9PbmVSb3dfZnVuY3Rpb24pIChDb3B5VG9TdGF0ZSBjc3Rh dGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHR5cGVkZWYgdm9pZCAoKkNvcHlUb0VuZF9mdW5j dGlvbikgKENvcHlUb1N0YXRlIGNzdGF0ZSk7CkBAIC04NCwxMCArODQsOSBAQCB0eXBlZGVmIHN0 cnVjdCBDb3B5VG9Sb3V0aW5lCiAJQ29weVRvUHJvY2Vzc09wdGlvbl9mdW5jdGlvbiBDb3B5VG9Q cm9jZXNzT3B0aW9uOwogCiAJLyoKLQkgKiBDYWxsZWQgd2hlbiBDT1BZIFRPIGlzIHN0YXJ0ZWQu IFRoaXMgd2lsbCByZXR1cm4gYSBmb3JtYXQgYXMgaW50MTYKLQkgKiB2YWx1ZS4gSXQncyB1c2Vk IGZvciB0aGUgQ29weU91dFJlc3BvbnNlIG1lc3NhZ2UuCisJICogQ2FsbGVkIHdoZW4gQ09QWSBU TyBpcyBzdGFydGVkLgogCSAqLwotCUNvcHlUb0dldEZvcm1hdF9mdW5jdGlvbiBDb3B5VG9HZXRG b3JtYXQ7CisJQ29weVRvU2VuZENvcHlCZWdpbl9mdW5jdGlvbiBDb3B5VG9TZW5kQ29weUJlZ2lu OwogCiAJLyogQ2FsbGVkIHdoZW4gQ09QWSBUTyBpcyBzdGFydGVkLiBUaGlzIHdpbGwgc2VuZCBh IGhlYWRlci4gKi8KIAlDb3B5VG9TdGFydF9mdW5jdGlvbiBDb3B5VG9TdGFydDsKQEAgLTM4NCw2 ICszODMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhCiAJdm9pZAkgICAqb3Bh cXVlOwkJCS8qIHByaXZhdGUgc3BhY2UgKi8KIH0gQ29weVRvU3RhdGVEYXRhOwogCitleHRlcm4g dm9pZCBDb3B5U2VuZERhdGEoQ29weVRvU3RhdGUgY3N0YXRlLCBjb25zdCB2b2lkICpkYXRhYnVm LCBpbnQgZGF0YXNpemUpOworZXh0ZXJuIHZvaWQgQ29weVNlbmRTdHJpbmcoQ29weVRvU3RhdGUg Y3N0YXRlLCBjb25zdCBjaGFyICpzdHIpOworZXh0ZXJuIHZvaWQgQ29weVNlbmRDaGFyKENvcHlU b1N0YXRlIGNzdGF0ZSwgY2hhciBjKTsKK2V4dGVybiB2b2lkIENvcHlTZW5kSW50MzIoQ29weVRv U3RhdGUgY3N0YXRlLCBpbnQzMiB2YWwpOworZXh0ZXJuIHZvaWQgQ29weVNlbmRJbnQxNihDb3B5 VG9TdGF0ZSBjc3RhdGUsIGludDE2IHZhbCk7CiBleHRlcm4gdm9pZCBDb3B5VG9TdGF0ZUZsdXNo KENvcHlUb1N0YXRlIGNzdGF0ZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBDT1BZQVBJX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9y bWF0LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfY29weV9mb3JtYXQvdGVzdF9jb3B5X2Zvcm1h dC5jCmluZGV4IDVlMWI0MGU4ODEuLmQ4MzNmMjJiYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9jb3B5X2Zvcm1hdC90ZXN0X2NvcHlfZm9ybWF0LmMKKysrIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2NvcHlfZm9ybWF0L3Rlc3RfY29weV9mb3JtYXQuYwpAQCAtNzEsMTEgKzcx LDEwIEBAIENvcHlUb1Byb2Nlc3NPcHRpb24oQ29weVRvU3RhdGUgY3N0YXRlLCBEZWZFbGVtICpk ZWZlbCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGludDE2Ci1Db3B5VG9HZXRGb3JtYXQo Q29weVRvU3RhdGUgY3N0YXRlKQorc3RhdGljIHZvaWQKK0NvcHlUb1NlbmRDb3B5QmVnaW4oQ29w eVRvU3RhdGUgY3N0YXRlKQogewogCWVyZXBvcnQoTk9USUNFLCAoZXJybXNnKCJDb3B5VG9HZXRG b3JtYXQiKSkpOwotCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApAQCAtOTksNyArOTgsNyBA QCBDb3B5VG9FbmQoQ29weVRvU3RhdGUgY3N0YXRlKQogc3RhdGljIGNvbnN0IENvcHlUb1JvdXRp bmUgQ29weVRvUm91dGluZVRlc3RDb3B5Rm9ybWF0ID0gewogCS50eXBlID0gVF9Db3B5VG9Sb3V0 aW5lLAogCS5Db3B5VG9Qcm9jZXNzT3B0aW9uID0gQ29weVRvUHJvY2Vzc09wdGlvbiwKLQkuQ29w eVRvR2V0Rm9ybWF0ID0gQ29weVRvR2V0Rm9ybWF0LAorCS5Db3B5VG9TZW5kQ29weUJlZ2luID0g Q29weVRvU2VuZENvcHlCZWdpbiwKIAkuQ29weVRvU3RhcnQgPSBDb3B5VG9TdGFydCwKIAkuQ29w eVRvT25lUm93ID0gQ29weVRvT25lUm93LAogCS5Db3B5VG9FbmQgPSBDb3B5VG9FbmQsCi0tIAoy LjQxLjAKCg== --000000000000b835ef060fe70ff2 Content-Type: application/octet-stream; name="v8-0010-introduce-contrib-pg_copy_json.patch" Content-Disposition: attachment; filename="v8-0010-introduce-contrib-pg_copy_json.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lrvnh6wb9 RnJvbSA3ZGM2YzFjNzk4MTc4ZjMxNzI4ZDA0OGQ0ZDUyODE4MTYyNmIzNjk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGFvIEp1bndhbmcgPHpoandwa3VAZ21haWwuY29tPgpEYXRl OiBTYXQsIDI3IEphbiAyMDI0IDEzOjM0OjM4ICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCAxMC8x MF0gaW50cm9kdWNlIGNvbnRyaWIvcGdfY29weV9qc29uCgpTaWduZWQtb2ZmLWJ5OiBaaGFvIEp1 bndhbmcgPHpoandwa3VAZ21haWwuY29tPgotLS0KIGNvbnRyaWIvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBjb250cmliL21lc29uLmJ1aWxkICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi9wZ19jb3B5X2pzb24vLmdpdGlnbm9y ZSAgICAgICAgICAgICAgIHwgICA0ICsKIGNvbnRyaWIvcGdfY29weV9qc29uL01ha2VmaWxlICAg ICAgICAgICAgICAgICB8ICAyMyArKwogLi4uL3BnX2NvcHlfanNvbi9leHBlY3RlZC9wZ19jb3B5 X2pzb24ub3V0ICAgIHwgIDgwICsrKysrKysKIGNvbnRyaWIvcGdfY29weV9qc29uL21lc29uLmJ1 aWxkICAgICAgICAgICAgICB8ICAzNCArKysKIGNvbnRyaWIvcGdfY29weV9qc29uL3BnX2NvcHlf anNvbi0tMS4wLnNxbCAgICB8ICAgOSArCiBjb250cmliL3BnX2NvcHlfanNvbi9wZ19jb3B5X2pz b24uYyAgICAgICAgICAgfCAyMTggKysrKysrKysrKysrKysrKysrCiBjb250cmliL3BnX2NvcHlf anNvbi9wZ19jb3B5X2pzb24uY29udHJvbCAgICAgfCAgIDUgKwogY29udHJpYi9wZ19jb3B5X2pz b24vc3FsL3BnX2NvcHlfanNvbi5zcWwgICAgIHwgIDU5ICsrKysrCiBzcmMvYmFja2VuZC91dGls cy9hZHQvanNvbi5jICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL3V0aWxz L2pzb24uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAxMiBmaWxlcyBjaGFuZ2VkLCA0 MzggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL3BnX2NvcHlfanNvbi8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9w Z19jb3B5X2pzb24vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3BnX2NvcHlf anNvbi9leHBlY3RlZC9wZ19jb3B5X2pzb24ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJp Yi9wZ19jb3B5X2pzb24vbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Bn X2NvcHlfanNvbi9wZ19jb3B5X2pzb24tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL3BnX2NvcHlfanNvbi9wZ19jb3B5X2pzb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRy aWIvcGdfY29weV9qc29uL3BnX2NvcHlfanNvbi5jb250cm9sCiBjcmVhdGUgbW9kZSAxMDA2NDQg Y29udHJpYi9wZ19jb3B5X2pzb24vc3FsL3BnX2NvcHlfanNvbi5zcWwKCmRpZmYgLS1naXQgYS9j b250cmliL01ha2VmaWxlIGIvY29udHJpYi9NYWtlZmlsZQppbmRleCBkYTRlMjMxNmEzLi44MmNj NDk2YWEyIDEwMDY0NAotLS0gYS9jb250cmliL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvTWFrZWZp bGUKQEAgLTMyLDYgKzMyLDcgQEAgU1VCRElSUyA9IFwKIAkJcGFnZWluc3BlY3QJXAogCQlwYXNz d29yZGNoZWNrCVwKIAkJcGdfYnVmZmVyY2FjaGUJXAorCQlwZ19jb3B5X2pzb24JXAogCQlwZ19m cmVlc3BhY2VtYXAgXAogCQlwZ19wcmV3YXJtCVwKIAkJcGdfc3RhdF9zdGF0ZW1lbnRzIFwKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvbWVzb24uYnVpbGQgYi9jb250cmliL21lc29uLmJ1aWxkCmluZGV4 IGMxMmRjOTA2Y2EuLjM4OTMzZDE1ZDEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbWVzb24uYnVpbGQK KysrIGIvY29udHJpYi9tZXNvbi5idWlsZApAQCAtNDUsNiArNDUsNyBAQCBzdWJkaXIoJ29pZDJu YW1lJykKIHN1YmRpcigncGFnZWluc3BlY3QnKQogc3ViZGlyKCdwYXNzd29yZGNoZWNrJykKIHN1 YmRpcigncGdfYnVmZmVyY2FjaGUnKQorc3ViZGlyKCdwZ19jb3B5X2pzb24nKQogc3ViZGlyKCdw Z2NyeXB0bycpCiBzdWJkaXIoJ3BnX2ZyZWVzcGFjZW1hcCcpCiBzdWJkaXIoJ3BnX3ByZXdhcm0n KQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19jb3B5X2pzb24vLmdpdGlnbm9yZSBiL2NvbnRyaWIv cGdfY29weV9qc29uLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNWRjYjNmZjk3MgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY29weV9qc29u Ly5naXRpZ25vcmUKQEAgLTAsMCArMSw0IEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3Rvcmllcwor L2xvZy8KKy9yZXN1bHRzLworL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfY29w eV9qc29uL01ha2VmaWxlIGIvY29udHJpYi9wZ19jb3B5X2pzb24vTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYjBhMzQ4ZDYxOAotLS0gL2Rldi9udWxsCisr KyBiL2NvbnRyaWIvcGdfY29weV9qc29uL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAKKyMgY29u dHJpYi9wZ19jb3B5X2pzb24vL01ha2VmaWxlCisKK01PRFVMRV9iaWcgPSBwZ19jb3B5X2pzb24K K09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXBnX2NvcHlfanNvbi5vCitQR0ZJTEVERVNDID0g InBnX2NvcHlfanNvbiAtIENPUFkgVE8gSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24p IGZvcm1hdCIKKworRVhURU5TSU9OID0gcGdfY29weV9qc29uCitEQVRBID0gcGdfY29weV9qc29u LS0xLjAuc3FsCisKK1JFR1JFU1MgPSB0ZXN0X2NvcHlfZm9ybWF0CisKK2lmZGVmIFVTRV9QR1hT CitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1w Z3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBjb250cmliL3BnX2NvcHlfanNv bgordG9wX2J1aWxkZGlyID0gLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb250cmliL2NvbnRyaWItZ2xvYmFs Lm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19jb3B5X2pzb24vZXhwZWN0ZWQvcGdf Y29weV9qc29uLm91dCBiL2NvbnRyaWIvcGdfY29weV9qc29uL2V4cGVjdGVkL3BnX2NvcHlfanNv bi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzM2MzNjMjMwMwot LS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY29weV9qc29uL2V4cGVjdGVkL3BnX2NvcHlf anNvbi5vdXQKQEAgLTAsMCArMSw4MCBAQAorLS0KKy0tIENPUFkgVE8gSlNPTgorLS0KK0NSRUFU RSBFWFRFTlNJT04gcGdfY29weV9qc29uOworLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gZm9ybWF0 IHdpdGggdmFyaW91cyBzdHlsZXMKKy0tIG9mIGVtYmVkZGVkIGxpbmUgZW5kaW5nIGNoYXJhY3Rl cnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHl0ZXN0ICgKKwlzdHlsZQl0ZXh0LAorCXRlc3QgCXRl eHQsCisJZmlsbGVyCWludCk7CitpbnNlcnQgaW50byBjb3B5dGVzdCB2YWx1ZXMoJ0RPUycsRSdh YmNcclxuZGVmJywxKTsKK2luc2VydCBpbnRvIGNvcHl0ZXN0IHZhbHVlcygnVW5peCcsRSdhYmNc bmRlZicsMik7CitpbnNlcnQgaW50byBjb3B5dGVzdCB2YWx1ZXMoJ01hYycsRSdhYmNccmRlZics Myk7CitpbnNlcnQgaW50byBjb3B5dGVzdCB2YWx1ZXMoRSdlc2NcXGFwZScsRSdhXFxyXFxcclxc XG5cXG5iJyw0KTsKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCAnanNvbicp OworeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHls ZSI6IlVuaXgiLCJ0ZXN0IjoiYWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwi dGVzdCI6ImFiY1xyZGVmIiwiZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6 ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CistLSBwZ19jb3B5X2pzb24gZG8gbm90IHN1 cHBvcnQgQ09QWSBGUk9NCitjb3B5IGNvcHl0ZXN0IGZyb20gc3Rkb3V0IHdpdGggKGZvcm1hdCAn anNvbicpOworRVJST1I6ICBjYW5ub3QgdXNlIEpTT04gbW9kZSBpbiBDT1BZIEZST00KKy0tIHRl c3QgY29weWluZyBpbiBKU09OIGZvcm1hdCB3aXRoIHZhcmlvdXMgc3R5bGVzCistLSBvZiBlbWJl ZGRlZCBlc2NhcGVkIGNoYXJhY3RlcnMKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAo CisgICAgaWQgYmlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOwor aW5zZXJ0IGludG8gY29weWpzb250ZXN0CisgIHNlbGVjdCBnLmksCisgICAgICAgICBDQVNFIFdI RU4gZy5pICUgMiA9IDAgVEhFTgorICAgICAgICAgICAnbGluZSB3aXRoICcnIGluIGl0OiAnIHx8 IGcuaTo6dGV4dAorICAgICAgICAgRUxTRQorICAgICAgICAgICAnbGluZSB3aXRoICIgaW4gaXQ6 ICcgfHwgZy5pOjp0ZXh0CisgICAgICAgICBFTkQsCisgICAgICAgICAnTW9uIEZlYiAxMCAxNzoz MjowMSAxOTk3IFBTVCcKKyAgZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSw1KSBhcyBnKGkpOworaW5z ZXJ0IGludG8gY29weWpzb250ZXN0IChmMSkgdmFsdWVzCisoRSdhYWFcImJiYic6OnRleHQpLAor KEUnYWFhXFxiYmInOjp0ZXh0KSwKKyhFJ2FhYVwvYmJiJzo6dGV4dCksCisoRSdhYWFcYmJiYic6 OnRleHQpLAorKEUnYWFhXGZiYmInOjp0ZXh0KSwKKyhFJ2FhYVxuYmJiJzo6dGV4dCksCisoRSdh YWFccmJiYic6OnRleHQpLAorKEUnYWFhXHRiYmInOjp0ZXh0KTsKK2NvcHkgY29weWpzb250ZXN0 IHRvIHN0ZG91dCB3aXRoIChmb3JtYXQgJ2pzb24nKTsKK3siaWQiOjEsImYxIjoibGluZSB3aXRo IFwiIGluIGl0OiAxIiwiZjIiOiIxOTk3LTAyLTEwVDE3OjMyOjAxLTA4OjAwIn0KK3siaWQiOjIs ImYxIjoibGluZSB3aXRoICcgaW4gaXQ6IDIiLCJmMiI6IjE5OTctMDItMTBUMTc6MzI6MDEtMDg6 MDAifQoreyJpZCI6MywiZjEiOiJsaW5lIHdpdGggXCIgaW4gaXQ6IDMiLCJmMiI6IjE5OTctMDIt MTBUMTc6MzI6MDEtMDg6MDAifQoreyJpZCI6NCwiZjEiOiJsaW5lIHdpdGggJyBpbiBpdDogNCIs ImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjo1LCJmMSI6ImxpbmUgd2l0 aCBcIiBpbiBpdDogNSIsImYyIjoiMTk5Ny0wMi0xMFQxNzozMjowMS0wODowMCJ9Cit7ImlkIjox LCJmMSI6ImFhYVwiYmJiIiwiZjIiOm51bGx9Cit7ImlkIjoyLCJmMSI6ImFhYVxcYmJiIiwiZjIi Om51bGx9Cit7ImlkIjozLCJmMSI6ImFhYS9iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjQsImYxIjoi YWFhXGJiYmIiLCJmMiI6bnVsbH0KK3siaWQiOjUsImYxIjoiYWFhXGZiYmIiLCJmMiI6bnVsbH0K K3siaWQiOjYsImYxIjoiYWFhXG5iYmIiLCJmMiI6bnVsbH0KK3siaWQiOjcsImYxIjoiYWFhXHJi YmIiLCJmMiI6bnVsbH0KK3siaWQiOjgsImYxIjoiYWFhXHRiYmIiLCJmMiI6bnVsbH0KKy0tIHRl c3QgZm9yY2UgYXJyYXkKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IChmb3JtYXQgJ2pzb24nLCBm b3JjZV9hcnJheSk7CitbCisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmls bGVyIjoxfQorLHsic3R5bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQor LHsic3R5bGUiOiJNYWMiLCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHlsZSI6 ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitjb3B5 IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0ICdqc29uJywgZm9yY2VfYXJyYXkgdHJ1ZSk7Citb CisgeyJzdHlsZSI6IkRPUyIsInRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQorLHsic3R5 bGUiOiJVbml4IiwidGVzdCI6ImFiY1xuZGVmIiwiZmlsbGVyIjoyfQorLHsic3R5bGUiOiJNYWMi LCJ0ZXN0IjoiYWJjXHJkZWYiLCJmaWxsZXIiOjN9CisseyJzdHlsZSI6ImVzY1xcYXBlIiwidGVz dCI6ImFcXHJcXFxyXFxcblxcbmIiLCJmaWxsZXIiOjR9CitdCitjb3B5IGNvcHl0ZXN0IHRvIHN0 ZG91dCAoZm9ybWF0ICdqc29uJywgZm9yY2VfYXJyYXkgZmFsc2UpOworeyJzdHlsZSI6IkRPUyIs InRlc3QiOiJhYmNcclxuZGVmIiwiZmlsbGVyIjoxfQoreyJzdHlsZSI6IlVuaXgiLCJ0ZXN0Ijoi YWJjXG5kZWYiLCJmaWxsZXIiOjJ9Cit7InN0eWxlIjoiTWFjIiwidGVzdCI6ImFiY1xyZGVmIiwi ZmlsbGVyIjozfQoreyJzdHlsZSI6ImVzY1xcYXBlIiwidGVzdCI6ImFcXHJcXFxyXFxcblxcbmIi LCJmaWxsZXIiOjR9CmRpZmYgLS1naXQgYS9jb250cmliL3BnX2NvcHlfanNvbi9tZXNvbi5idWls ZCBiL2NvbnRyaWIvcGdfY29weV9qc29uL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjcxZjkzMzgyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3BnX2NvcHlfanNvbi9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM0IEBACisjIENvcHlyaWdodCAo YykgMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworcGdfY29weV9q c29uX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3BnX2NvcHlfanNvbi5jJywKKykKKworaWYgaG9zdF9z eXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHBnX2NvcHlfanNvbl9zb3VyY2VzICs9IHJjX2xpYl9nZW4u cHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAncGdfY29w eV9qc29uJywKKyAgICAnLS1GSUxFREVTQycsICdwZ19jb3B5X2pzb24gLSBDT1BZIFRPIEpTT04g Zm9ybWF0JyxdKQorZW5kaWYKKworcGdfY29weV9qc29uID0gc2hhcmVkX21vZHVsZSgncGdfY29w eV9qc29uJywKKyAgcGdfY29weV9qc29uX3NvdXJjZXMsCisgIGt3YXJnczogY29udHJpYl9tb2Rf YXJncywKKykKK2NvbnRyaWJfdGFyZ2V0cyArPSBwZ19jb3B5X2pzb24KKworaW5zdGFsbF9kYXRh KAorICAncGdfY29weV9qc29uLS0xLjAuc3FsJywKKyAgJ3BnX2NvcHlfanNvbi5jb250cm9sJywK KyAga3dhcmdzOiBjb250cmliX2RhdGFfYXJncywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6 ICdwZ19jb3B5X2pzb24nLAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAg J2JkJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3Nx bCc6IFsKKyAgICAgICdwZ19jb3B5X2pzb24nLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQg YS9jb250cmliL3BnX2NvcHlfanNvbi9wZ19jb3B5X2pzb24tLTEuMC5zcWwgYi9jb250cmliL3Bn X2NvcHlfanNvbi9wZ19jb3B5X2pzb24tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZDczOGExZTdlOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdf Y29weV9qc29uL3BnX2NvcHlfanNvbi0tMS4wLnNxbApAQCAtMCwwICsxLDkgQEAKKy8qIGNvbnRy aWIvcGdfY29weV9qc29uL2NvcHlfanNvbi0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBz Y3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lP TgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHBnX2NvcHlfanNvbiIgdG8gbG9hZCB0aGlz IGZpbGUuIFxxdWl0CisKK0NSRUFURSBGVU5DVElPTiBwZ19jYXRhbG9nLmpzb24oaW50ZXJuYWwp CisJUkVUVVJOUyBjb3B5X2hhbmRsZXIKKwlBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ2NvcHlfanNv bicKKwlMQU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19jb3B5X2pzb24vcGdfY29w eV9qc29uLmMgYi9jb250cmliL3BnX2NvcHlfanNvbi9wZ19jb3B5X2pzb24uYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jYmZkZWU4ZThiCi0tLSAvZGV2L251bGwKKysr IGIvY29udHJpYi9wZ19jb3B5X2pzb24vcGdfY29weV9qc29uLmMKQEAgLTAsMCArMSwyMTggQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jb3B5X2pzb24uYworICoJCUNPUFkgVE8g SlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGZvcm1hdC4KKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQljb250cmliL3Rlc3RfY29weV9mb3JtYXQuYwor ICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKwor I2luY2x1ZGUgImNvbW1hbmRzL2NvcHkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIK KyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKKyNpbmNsdWRl ICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgInV0aWxzL2pzb24uaCIKKworUEdfTU9EVUxF X01BR0lDOworCit0eXBlZGVmIHN0cnVjdAoreworCS8qCisJICogRm9yY2Ugb3V0cHV0IG9mIHNx dWFyZSBicmFja2V0cyBhcyBhcnJheSBkZWNvcmF0aW9ucyBhdCB0aGUgYmVnaW5uaW5nCisJICog YW5kIGVuZCBvZiBvdXRwdXQsIHdpdGggY29tbWFzIGJldHdlZW4gdGhlIHJvd3MuCisJICovCisJ Ym9vbAlmb3JjZV9hcnJheTsKKwlib29sCWZvcmNlX2FycmF5X3NwZWNpZmllZDsKKwkKKwkvKiBu ZWVkIGRlbGltaXRlciB0byBzdGFydCBuZXh0IGpzb24gYXJyYXkgZWxlbWVudCAqLworCWJvb2wJ anNvbl9yb3dfZGVsaW1fbmVlZGVkOworfSBDb3B5SnNvbkRhdGE7CisKK3N0YXRpYyBpbmxpbmUg dm9pZAorSW5pdENvcHlKc29uRGF0YShDb3B5SnNvbkRhdGEgKnApCit7CisJQXNzZXJ0KHApOwor CXAtPmZvcmNlX2FycmF5ID0gZmFsc2U7CisJcC0+Zm9yY2VfYXJyYXlfc3BlY2lmaWVkID0gZmFs c2U7CisJcC0+anNvbl9yb3dfZGVsaW1fbmVlZGVkID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lk CitDb3B5VG9Kc29uU2VuZEVuZE9mUm93KENvcHlUb1N0YXRlIGNzdGF0ZSkKK3sKKwlzd2l0Y2gg KGNzdGF0ZS0+Y29weV9kZXN0KQorCXsKKwkJY2FzZSBDT1BZX0RFU1RfRklMRToKKwkJCS8qIERl ZmF1bHQgbGluZSB0ZXJtaW5hdGlvbiBkZXBlbmRzIG9uIHBsYXRmb3JtICovCisjaWZuZGVmIFdJ TjMyCisJCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXG4nKTsKKyNlbHNlCisJCQlDb3B5U2VuZFN0 cmluZyhjc3RhdGUsICJcclxuIik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENPUFlfREVT VF9GUk9OVEVORDoKKwkJCS8qIFRoZSBGRS9CRSBwcm90b2NvbCB1c2VzIFxuIGFzIG5ld2xpbmUg Zm9yIGFsbCBwbGF0Zm9ybXMgKi8KKwkJCUNvcHlTZW5kQ2hhcihjc3RhdGUsICdcbicpOworCQkJ YnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9CisJQ29weVRvU3RhdGVGbHVzaChjc3Rh dGUpOworfQorCitzdGF0aWMgYm9vbAorQ29weVRvSnNvblByb2Nlc3NPcHRpb24oQ29weVRvU3Rh dGUgY3N0YXRlLCBEZWZFbGVtICpkZWZlbCkKK3sKKwlDb3B5SnNvbkRhdGEJICAgKnA7CisKKwlp ZiAoY3N0YXRlLT5vcGFxdWUgPT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4 dDsKKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjc3RhdGUtPmNvcHljb250 ZXh0KTsKKwkJY3N0YXRlLT5vcGFxdWUgPSBwYWxsb2MwKHNpemVvZihDb3B5SnNvbkRhdGEpKTsK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlJbml0Q29weUpzb25EYXRh KGNzdGF0ZS0+b3BhcXVlKTsKKwl9CisKKwlwID0gKENvcHlKc29uRGF0YSAqKWNzdGF0ZS0+b3Bh cXVlOworCisJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImZvcmNlX2FycmF5IikgPT0gMCkK Kwl7CisJCWlmIChwLT5mb3JjZV9hcnJheV9zcGVjaWZpZWQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJZXJybXNnKCJDb3B5VG9K c29uUHJvY2Vzc09wdGlvbjogcmVkdW5kYW50IG9wdGlvbnMgXCIlc1wiPVwiJXNcIiIsCisJCQkJ CQkgICBkZWZlbC0+ZGVmbmFtZSwgZGVmR2V0U3RyaW5nKGRlZmVsKSkpOworCQlwLT5mb3JjZV9h cnJheV9zcGVjaWZpZWQgPSB0cnVlOworCQlwLT5mb3JjZV9hcnJheSA9IGRlZkdldEJvb2xlYW4o ZGVmZWwpOworCisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworc3Rh dGljIHZvaWQKK0NvcHlUb0pzb25TZW5kQ29weUJlZ2luKENvcHlUb1N0YXRlIGNzdGF0ZSkKK3sK KwlTdHJpbmdJbmZvRGF0YSBidWY7CisJaW50MTYJCWZvcm1hdCA9IDA7CisKKwlwcV9iZWdpbm1l c3NhZ2UoJmJ1ZiwgUHFNc2dfQ29weU91dFJlc3BvbnNlKTsKKwlwcV9zZW5kYnl0ZSgmYnVmLCBm b3JtYXQpOwkvKiBvdmVyYWxsIGZvcm1hdCAqLworCS8qCisJICogSlNPTiBtb2RlIGlzIGFsd2F5 cyBvbmUgbm9uLWJpbmFyeSBjb2x1bW4KKwkgKi8KKwlwcV9zZW5kaW50MTYoJmJ1ZiwgMSk7CisJ cHFfc2VuZGludDE2KCZidWYsIDApOworCXBxX2VuZG1lc3NhZ2UoJmJ1Zik7Cit9CisKK3N0YXRp YyB2b2lkCitDb3B5VG9Kc29uU3RhcnQoQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZURlc2MgdHVw RGVzYykKK3sKKwlDb3B5SnNvbkRhdGEJICAgKnA7CisKKwlpZiAoY3N0YXRlLT5vcGFxdWUgPT0g TlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwkJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhjc3RhdGUtPmNvcHljb250ZXh0KTsKKwkJY3N0YXRlLT5vcGFx dWUgPSBwYWxsb2MwKHNpemVvZihDb3B5SnNvbkRhdGEpKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOworCQlJbml0Q29weUpzb25EYXRhKGNzdGF0ZS0+b3BhcXVlKTsKKwl9 CisKKwkvKiBObyBuZWVkIHRvIGFsbG9jIGNzdGF0ZS0+b3V0X2Z1bmN0aW9ucyAqLworCisJcCA9 IChDb3B5SnNvbkRhdGEgKiljc3RhdGUtPm9wYXF1ZTsKKworCS8qIElmIEZPUkNFX0FSUkFZIGhh cyBiZWVuIHNwZWNpZmllZCBzZW5kIHRoZSBvcGVuIGJyYWNrZXQuICovCisJaWYgKHAtPmZvcmNl X2FycmF5KQorCXsKKwkJQ29weVNlbmRDaGFyKGNzdGF0ZSwgJ1snKTsKKwkJQ29weVRvSnNvblNl bmRFbmRPZlJvdyhjc3RhdGUpOworCX0KK30KKworc3RhdGljIHZvaWQKK0NvcHlUb0pzb25PbmVS b3coQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlEYXR1bQkJ CQlyb3dkYXRhOworCVN0cmluZ0luZm8JCQlyZXN1bHQ7CisJQ29weUpzb25EYXRhCSAgICpwOwor CisJQXNzZXJ0KGNzdGF0ZS0+b3BhcXVlKTsKKwlwID0gKENvcHlKc29uRGF0YSAqKWNzdGF0ZS0+ b3BhcXVlOworCisJaWYoIWNzdGF0ZS0+cmVsKQorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBz bG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5uYXR0czsgaSsrKQorCQl7CisJCQkvKiBGbGF0LWNv cHkgdGhlIGF0dHJpYnV0ZSBhcnJheSAqLworCQkJbWVtY3B5KFR1cGxlRGVzY0F0dHIoc2xvdC0+ dHRzX3R1cGxlRGVzY3JpcHRvciwgaSksCisJCQlUdXBsZURlc2NBdHRyKGNzdGF0ZS0+cXVlcnlE ZXNjLT50dXBEZXNjLCBpKSwKKwkJCQkJCQkxICogc2l6ZW9mKEZvcm1EYXRhX3BnX2F0dHJpYnV0 ZSkpOworCQl9CisJCUJsZXNzVHVwbGVEZXNjKHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IpOwor CX0KKwlyb3dkYXRhID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKHNsb3QpOworCXJlc3Vs dCA9IG1ha2VTdHJpbmdJbmZvKCk7CisJY29tcG9zaXRlX3RvX2pzb24ocm93ZGF0YSwgcmVzdWx0 LCBmYWxzZSk7CisKKwlpZiAocC0+anNvbl9yb3dfZGVsaW1fbmVlZGVkKQorCQlDb3B5U2VuZENo YXIoY3N0YXRlLCAnLCcpOworCWVsc2UgaWYgKHAtPmZvcmNlX2FycmF5KQorCXsKKwkJLyogZmly c3Qgcm93IG5lZWRzIG5vIGRlbGltaXRlciAqLworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnICcp OworCQlwLT5qc29uX3Jvd19kZWxpbV9uZWVkZWQgPSB0cnVlOworCX0KKwlDb3B5U2VuZERhdGEo Y3N0YXRlLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuKTsKKwlDb3B5VG9Kc29uU2VuZEVuZE9m Um93KGNzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitDb3B5VG9Kc29uRW5kKENvcHlUb1N0YXRl IGNzdGF0ZSkKK3sKKwlDb3B5SnNvbkRhdGEJICAgKnA7CisKKwlBc3NlcnQoY3N0YXRlLT5vcGFx dWUpOworCXAgPSAoQ29weUpzb25EYXRhICopY3N0YXRlLT5vcGFxdWU7CisKKwkvKiBJZiBGT1JD RV9BUlJBWSBoYXMgYmVlbiBzcGVjaWZpZWQgc2VuZCB0aGUgY2xvc2UgYnJhY2tldC4gKi8KKwlp ZiAocC0+Zm9yY2VfYXJyYXkpCisJeworCQlDb3B5U2VuZENoYXIoY3N0YXRlLCAnXScpOworCQlD b3B5VG9Kc29uU2VuZEVuZE9mUm93KGNzdGF0ZSk7CisJfQorfQorCitzdGF0aWMgY29uc3QgQ29w eVRvUm91dGluZSBDb3B5VG9Sb3V0aW5lSnNvbiA9IHsKKwkudHlwZSA9IFRfQ29weVRvUm91dGlu ZSwKKwkuQ29weVRvUHJvY2Vzc09wdGlvbiA9IENvcHlUb0pzb25Qcm9jZXNzT3B0aW9uLAorCS5D b3B5VG9TZW5kQ29weUJlZ2luID0gQ29weVRvSnNvblNlbmRDb3B5QmVnaW4sCisJLkNvcHlUb1N0 YXJ0ID0gQ29weVRvSnNvblN0YXJ0LAorCS5Db3B5VG9PbmVSb3cgPSBDb3B5VG9Kc29uT25lUm93 LAorCS5Db3B5VG9FbmQgPSBDb3B5VG9Kc29uRW5kLAorfTsKKworUEdfRlVOQ1RJT05fSU5GT19W MShjb3B5X2pzb24pOworRGF0dW0KK2NvcHlfanNvbihQR19GVU5DVElPTl9BUkdTKQoreworCWJv b2wJCWlzX2Zyb20gPSBQR19HRVRBUkdfQk9PTCgwKTsKKworCWlmIChpc19mcm9tKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIEpTT04gbW9kZSBpbiBDT1BZIEZST00iKSkpOworCisJ UEdfUkVUVVJOX1BPSU5URVIoJkNvcHlUb1JvdXRpbmVKc29uKTsKK30KZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfY29weV9qc29uL3BnX2NvcHlfanNvbi5jb250cm9sIGIvY29udHJpYi9wZ19jb3B5 X2pzb24vcGdfY29weV9qc29uLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uOTBiMGE3NDYwMwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfY29weV9q c29uL3BnX2NvcHlfanNvbi5jb250cm9sCkBAIC0wLDAgKzEsNSBAQAorIyBwZ19jb3B5X2pzb24g ZXh0ZW5zaW9uCitjb21tZW50ID0gJ0NPUFkgVE8gSlNPTiBmb3JtYXQnCitkZWZhdWx0X3ZlcnNp b24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvcGdfY29weV9qc29uJworcmVs b2NhdGFibGUgPSB0cnVlCmRpZmYgLS1naXQgYS9jb250cmliL3BnX2NvcHlfanNvbi9zcWwvcGdf Y29weV9qc29uLnNxbCBiL2NvbnRyaWIvcGdfY29weV9qc29uL3NxbC9wZ19jb3B5X2pzb24uc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjczZTdlNTE0YWMKLS0tIC9k ZXYvbnVsbAorKysgYi9jb250cmliL3BnX2NvcHlfanNvbi9zcWwvcGdfY29weV9qc29uLnNxbApA QCAtMCwwICsxLDU5IEBACistLQorLS0gQ09QWSBUTyBKU09OCistLQorCitDUkVBVEUgRVhURU5T SU9OIHBnX2NvcHlfanNvbjsKKworLS0gdGVzdCBjb3B5aW5nIGluIEpTT04gZm9ybWF0IHdpdGgg dmFyaW91cyBzdHlsZXMKKy0tIG9mIGVtYmVkZGVkIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKKwor Y3JlYXRlIHRlbXAgdGFibGUgY29weXRlc3QgKAorCXN0eWxlCXRleHQsCisJdGVzdCAJdGV4dCwK KwlmaWxsZXIJaW50KTsKKworaW5zZXJ0IGludG8gY29weXRlc3QgdmFsdWVzKCdET1MnLEUnYWJj XHJcbmRlZicsMSk7CitpbnNlcnQgaW50byBjb3B5dGVzdCB2YWx1ZXMoJ1VuaXgnLEUnYWJjXG5k ZWYnLDIpOworaW5zZXJ0IGludG8gY29weXRlc3QgdmFsdWVzKCdNYWMnLEUnYWJjXHJkZWYnLDMp OworaW5zZXJ0IGludG8gY29weXRlc3QgdmFsdWVzKEUnZXNjXFxhcGUnLEUnYVxcclxcXHJcXFxu XFxuYicsNCk7CisKK2NvcHkgY29weXRlc3QgdG8gc3Rkb3V0IHdpdGggKGZvcm1hdCAnanNvbicp OworCistLSBwZ19jb3B5X2pzb24gZG8gbm90IHN1cHBvcnQgQ09QWSBGUk9NCitjb3B5IGNvcHl0 ZXN0IGZyb20gc3Rkb3V0IHdpdGggKGZvcm1hdCAnanNvbicpOworCistLSB0ZXN0IGNvcHlpbmcg aW4gSlNPTiBmb3JtYXQgd2l0aCB2YXJpb3VzIHN0eWxlcworLS0gb2YgZW1iZWRkZWQgZXNjYXBl ZCBjaGFyYWN0ZXJzCisKK2NyZWF0ZSB0ZW1wIHRhYmxlIGNvcHlqc29udGVzdCAoCisgICAgaWQg Ymlnc2VyaWFsLAorICAgIGYxIHRleHQsCisgICAgZjIgdGltZXN0YW1wdHopOworCitpbnNlcnQg aW50byBjb3B5anNvbnRlc3QKKyAgc2VsZWN0IGcuaSwKKyAgICAgICAgIENBU0UgV0hFTiBnLmkg JSAyID0gMCBUSEVOCisgICAgICAgICAgICdsaW5lIHdpdGggJycgaW4gaXQ6ICcgfHwgZy5pOjp0 ZXh0CisgICAgICAgICBFTFNFCisgICAgICAgICAgICdsaW5lIHdpdGggIiBpbiBpdDogJyB8fCBn Lmk6OnRleHQKKyAgICAgICAgIEVORCwKKyAgICAgICAgICdNb24gRmViIDEwIDE3OjMyOjAxIDE5 OTcgUFNUJworICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLDUpIGFzIGcoaSk7CisKK2luc2VydCBp bnRvIGNvcHlqc29udGVzdCAoZjEpIHZhbHVlcworKEUnYWFhXCJiYmInOjp0ZXh0KSwKKyhFJ2Fh YVxcYmJiJzo6dGV4dCksCisoRSdhYWFcL2JiYic6OnRleHQpLAorKEUnYWFhXGJiYmInOjp0ZXh0 KSwKKyhFJ2FhYVxmYmJiJzo6dGV4dCksCisoRSdhYWFcbmJiYic6OnRleHQpLAorKEUnYWFhXHJi YmInOjp0ZXh0KSwKKyhFJ2FhYVx0YmJiJzo6dGV4dCk7CisKK2NvcHkgY29weWpzb250ZXN0IHRv IHN0ZG91dCB3aXRoIChmb3JtYXQgJ2pzb24nKTsKKworLS0gdGVzdCBmb3JjZSBhcnJheQorCitj b3B5IGNvcHl0ZXN0IHRvIHN0ZG91dCAoZm9ybWF0ICdqc29uJywgZm9yY2VfYXJyYXkpOworY29w eSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCAnanNvbicsIGZvcmNlX2FycmF5IHRydWUpOwor Y29weSBjb3B5dGVzdCB0byBzdGRvdXQgKGZvcm1hdCAnanNvbicsIGZvcmNlX2FycmF5IGZhbHNl KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbi5jCmluZGV4IGQ3MTlhNjFmMTYuLmZhYmQ0ZTYxMWUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb24uYwpAQCAtODMsOCArODMsNiBAQCB0eXBlZGVmIHN0cnVjdCBKc29uQWdnU3RhdGUK IAlKc29uVW5pcXVlQnVpbGRlclN0YXRlIHVuaXF1ZV9jaGVjazsKIH0gSnNvbkFnZ1N0YXRlOwog Ci1zdGF0aWMgdm9pZCBjb21wb3NpdGVfdG9fanNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0lu Zm8gcmVzdWx0LAotCQkJCQkJCSAgYm9vbCB1c2VfbGluZV9mZWVkcyk7CiBzdGF0aWMgdm9pZCBh cnJheV9kaW1fdG9fanNvbihTdHJpbmdJbmZvIHJlc3VsdCwgaW50IGRpbSwgaW50IG5kaW1zLCBp bnQgKmRpbXMsCiAJCQkJCQkJICBEYXR1bSAqdmFscywgYm9vbCAqbnVsbHMsIGludCAqdmFsY291 bnQsCiAJCQkJCQkJICBKc29uVHlwZUNhdGVnb3J5IHRjYXRlZ29yeSwgT2lkIG91dGZ1bmNvaWQs CkBAIC01MDcsOCArNTA1LDkgQEAgYXJyYXlfdG9fanNvbl9pbnRlcm5hbChEYXR1bSBhcnJheSwg U3RyaW5nSW5mbyByZXN1bHQsIGJvb2wgdXNlX2xpbmVfZmVlZHMpCiAKIC8qCiAgKiBUdXJuIGEg Y29tcG9zaXRlIC8gcmVjb3JkIGludG8gSlNPTi4KKyAqIEV4cG9ydGVkIHNvIENPUFkgVE8gY2Fu IHVzZSBpdC4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGNvbXBvc2l0ZV90b19qc29uKERhdHVt IGNvbXBvc2l0ZSwgU3RyaW5nSW5mbyByZXN1bHQsIGJvb2wgdXNlX2xpbmVfZmVlZHMpCiB7CiAJ SGVhcFR1cGxlSGVhZGVyIHRkOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5o IGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbi5oCmluZGV4IDZkN2YxYjM4N2QuLmQ1NjMxMTcxYWQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb24uaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9qc29uLmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5o IgogCiAvKiBmdW5jdGlvbnMgaW4ganNvbi5jICovCitleHRlcm4gdm9pZCBjb21wb3NpdGVfdG9f anNvbihEYXR1bSBjb21wb3NpdGUsIFN0cmluZ0luZm8gcmVzdWx0LAorCQkJCQkJCSAgYm9vbCB1 c2VfbGluZV9mZWVkcyk7CiBleHRlcm4gdm9pZCBlc2NhcGVfanNvbihTdHJpbmdJbmZvIGJ1Ziwg Y29uc3QgY2hhciAqc3RyKTsKIGV4dGVybiBjaGFyICpKc29uRW5jb2RlRGF0ZVRpbWUoY2hhciAq YnVmLCBEYXR1bSB2YWx1ZSwgT2lkIHR5cGlkLAogCQkJCQkJCQljb25zdCBpbnQgKnR6cCk7Ci0t IAoyLjQxLjAKCg== --000000000000b835ef060fe70ff2--