Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qCBdp-00089F-CM for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jun 2023 04:09:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qCBdm-0007Bh-6F for pgsql-hackers@arkaria.postgresql.org; Thu, 22 Jun 2023 04:09:50 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qCBdl-0007BW-AY for pgsql-hackers@lists.postgresql.org; Thu, 22 Jun 2023 04:09:49 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qCBdh-003win-Aw for pgsql-hackers@lists.postgresql.org; Thu, 22 Jun 2023 04:09:48 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-3f9bff0a543so14089705e9.3 for ; Wed, 21 Jun 2023 21:09:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687406983; x=1689998983; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=89mcBOp8cfsLda6+U4mdZRDBFXlK6QMVs5bPEAZvp5U=; b=p0z2wSvR8YWtfVWnqVS94NVYFt/RRc66teOfUs/LuQQXzAdYDntKNLxTw9+eh1b4HG UHbdIkasFeeHwR9lKbSG8ofFZtnHSr5Tlazsz5al3m5jydvY/Uc6keJ2bmjIrBxEFQxi LNpJyN/vmhsgnBWuIyQ6kAquN/9TMsSpDJTu3NmImN8vdOucV5Jq6ZwRK8UXh0RJKQcf T2hNc9yL4Riut6m9iuhLtblXfTlNe5/YLjB7yifdGAm71GRhlxKwURnRRw8JqkxyiMIx 2RM7IATqlzKMic/4nL02uHAzm1o1wZeRM7zt8OVR0EQseXq+fgotY8PVj//IjlyAoF1Q yPiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687406983; x=1689998983; 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=89mcBOp8cfsLda6+U4mdZRDBFXlK6QMVs5bPEAZvp5U=; b=kwDeiU5jWvaeFKWO5tIBy13/o8WC+qL53mUTLY6EGmf2S+Oj152gw+PFABRXlqdF01 SrxJPLqLfyXrAaLRdLxVimW9a/BqT19N7MwA7XYkMwlaCFVmW6q+xzo1fuLMv3jFhHVO 7c+gP1gdRrO4Ppe1e3bMc8DA4DMgCvr+kSRv68MD6lGbvttiGhkNizLOUdGW3JEQkSym SU2KbwRfI81+KBkhwmkezDePS5IXdAXeMqgj/l0LjNzbPaUwfA/W91qDGU4ZYObs14aU fL2QQVCuTmnmUvrHcT3o8U6Mz8YEFeBad5jjO/YL8aSOxSw31ENe2dTTQG7nYKsOLDZ5 EJDw== X-Gm-Message-State: AC+VfDwrTQlLkL6Sc2+VvcdgwH8dGmqXxDBjNE9tQ4gJZiMgO3jFscUT wg0diVHXgpOTsPO2yRcN9dcaRCmS+S4grG925XA= X-Google-Smtp-Source: ACHHUZ7S/rCWpKX/fLOzUITlgpolyn5Xrld+6lQJ1gBgtxmDGcYJvI0+LKnGn88OQTc4QfQlk8VHRlLYOK9Jy25igas= X-Received: by 2002:a5d:5305:0:b0:30a:8e83:5b1a with SMTP id e5-20020a5d5305000000b0030a8e835b1amr15133784wrv.13.1687406983007; Wed, 21 Jun 2023 21:09:43 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Thu, 22 Jun 2023 09:39:30 +0530 Message-ID: Subject: Re: Support logical replication of DDLs To: Amit Kapila Cc: Michael Paquier , "Wei Wang (Fujitsu)" , "Yu Shi (Fujitsu)" , vignesh C , "Zhijie Hou (Fujitsu)" , Ajin Cherian , Runqi Tian , Peter Smith , Tom Lane , li jie , Dilip Kumar , Alvaro Herrera , Masahiko Sawada , Japin Li , rajesh singarapu , PostgreSQL Hackers , Zheng Li , shveta malik Content-Type: multipart/mixed; boundary="000000000000d07f7705feb00d5c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d07f7705feb00d5c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Jun 19, 2023 at 3:04=E2=80=AFPM Amit Kapila wrote: > > On Fri, Jun 16, 2023 at 4:01=E2=80=AFPM shveta malik wrote: > > > > With these changes, I hope the patch-set is somewhat easier to review. > > > > Few comments: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > 1. > +static Jsonb * > +deparse_CreateStmt(Oid objectId, Node *parsetree) > { > ... > + /* PERSISTENCE */ > + appendStringInfoString(&fmtStr, "CREATE %{persistence}s TABLE"); > + new_jsonb_VA(state, NULL, NULL, false, 1, > + "persistence", jbvString, > + get_persistence_str(relation->rd_rel->relpersistence)); > > Do we need to add key/value pair if get_persistence_str() returns an > empty string in the default deparsing mode? Won't it be somewhat > inconsistent with other objects? > Modified it to add 'persistence' only when we have it non-null. > 2. > +static JsonbValue * > +new_jsonb_VA(JsonbParseState *state, char *parentKey, char *fmt, > + bool createChildObj, int numobjs,...) > +{ > + va_list args; > + int i; > + JsonbValue val; > + JsonbValue *value =3D NULL; > + > + /* > + * Insert parent key for which we are going to create value object here. > + */ > + if (parentKey) > + insert_jsonb_key(state, parentKey); > + > + /* Set up the toplevel object if not instructed otherwise */ > + if (createChildObj) > + pushJsonbValue(&state, WJB_BEGIN_OBJECT, NULL); > + > + /* Set up the "fmt" */ > + if (fmt) > + fmt_to_jsonb_element(state, fmt); > > I think it would be better to handle parentKey, childObj, and fmt in > the callers as this function doesn't seem to be the ideal place to > deal with those. I see that in some cases we already handle those in > the callers. It is bit confusing in which case callers need to deal > vs. the cases where we need to deal here. > Moved these things outside of new_jsonb_VA(). > 3. > +static Jsonb * > +deparse_AlterSeqStmt(Oid objectId, Node *parsetree) > { > ... > + > + new_jsonb_VA(state, NULL, "ALTER SEQUENCE %{identity}D %{definition: }s= ", > + false, 0); > > Is there a need to call new_jsonb_VA() just to insert format? Won't it > better to do this in the caller itself? > Now in the latest version, "fmt" is inserted as a normal key-value pair only, no special handling for this. And thus above call is retained but with numObjs as 1. > 4. The handling for if_not_exists appears to be different in > deparse_CreateSeqStmt() and deparse_CreateStmt(). I think the later > one is correct and we should do that in both places. That means > probably we can't have the entire format key in the beginning of > deparse_CreateSeqStmt(). > Modified. > 5. > + /* > + * Check if table elements are present, if so, add them. This function > + * call takes care of both the check and addition. > + */ > + telems =3D insert_table_elements(state, &fmtStr, relation, > + node->tableElts, dpcontext, objectId, > + false, /* not typed table */ > + false); /* not composite */ > > Would it be better to name this function to something like > add_table_elems_if_any()? If so, we can remove second part of the > comment: "This function call takes care of both the check and > addition." as that would be obvious from the function name. > Modified. > 6. > + /* > + * Check if table elements are present, if so, add them. This function > + * call takes care of both the check and addition. > + */ > + telems =3D insert_table_elements(state, &fmtStr, relation, > + node->tableElts, dpcontext, objectId, > + false, /* not typed table */ > + false); /* not composite */ > + > + /* > + * If no table elements added, then add empty "()" needed for 'inherit' > + * create table syntax. Example: CREATE TABLE t1 () INHERITS (t0); > + */ > + if (!telems) > + appendStringInfoString(&fmtStr, " ()"); > > In insert_table_elements(), sometimes we access system twice for each > of the columns and this is to identify the above case where no > elements are present. Would it be better if simply for zero element > object array in this case and detect the same on the receiving side? > If this is feasible then we can simply name the function as > add_table_elems/add_table_elements. Also, in this context, can we > change the variable name telems to telems_present to make it bit easy > to follow. Modified telems to telems_present. I am reviewing the first part. Please allow some more time. > > 7. It would be better if we can further split the patch to move Alter > case into a separate patch. That will help us to focus on reviewing > Create/Drop in detail. > Done. Alter-table deparsing is now patch 0002. =3D=3D=3D=3D=3D=3D Apart from above, did some more optimization on similar lines (i.e. add elements only if needed) and added 'syntax' related comments for each alter-table subcmd. thanks Shveta --000000000000d07f7705feb00d5c Content-Type: application/octet-stream; name="0002-Deparser-for-Alter-Table-DDL-commands-2023_06_22.patch" Content-Disposition: attachment; filename="0002-Deparser-for-Alter-Table-DDL-commands-2023_06_22.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj6mh5i91 RnJvbSA4MzA5M2Y2MTkwY2I4M2YyMGE1MmE1OTdjZjU0YzNkNWVkYzY0NzFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjAgSnVuIDIwMjMgMTc6MTU6MjEgKzA1MzAKU3ViamVjdDogW1BBVENIIDIv NV0gRGVwYXJzZXIgZm9yIEFsdGVyIFRhYmxlIERETCBjb21tYW5kcy4KClRoaXMgcGF0Y2ggY29u c3RydWN0cyBKU09OIGJsb2JzIHJlcHJlc2VudGluZyB0aGUgQWx0ZXIgVGFibGUKRERMIGNvbW1h bmRzIHdoaWNoIGNhbiBsYXRlciBiZSByZS1wcm9jZXNzZWQgaW50byBwbGFpbiBzdHJpbmdzCmJ5 IHdlbGwtZGVmaW5lZCBzcHJpbnRmLWxpa2UgZXhwYW5zaW9uLgotLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2RkbGRlcGFyc2UuYyB8IDE3MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICB8ICAgMTcgKwogc3JjL2luY2x1ZGUv dGNvcC91dGlsaXR5LmggICAgICAgIHwgICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDE2OTkgaW5z ZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZGRsZGVwYXJzZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCmlu ZGV4IDI2OTg4MGZiYjkuLmZhYWYwZGUzZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbGRlcGFyc2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMK QEAgLTQxMCwxNCArNDEwLDIxIEBAIGluc2VydF9pZGVudGl0eV9vYmplY3QoSnNvbmJQYXJzZVN0 YXRlICpzdGF0ZSwgT2lkIG5zcGlkLCBjaGFyICpyZWxuYW1lKQogICogRGVwYXJzZSB0aGUgc2Vx dWVuY2UgQ0FDSEUgb3B0aW9uIHRvIEpzb25iCiAgKgogICogVmVyYm9zZSBzeW50YXgKKyAqIFNF VCBDQUNIRSAle3ZhbHVlfXMKKyAqIE9SCiAgKiBDQUNIRSAle3ZhbHVlfQogICovCiBzdGF0aWMg aW5saW5lIHZvaWQKLWRlcGFyc2VfU2VxX0NhY2hlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpz dGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQorZGVwYXJzZV9TZXFfQ2FjaGVfdG9Kc29u YihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEsCisJCQkJ CQkgIGJvb2wgYWx0ZXJfdGFibGUpCiB7CisJY2hhcgkgICAqZm10OworCisJZm10ID0gYWx0ZXJf dGFibGUgPyAiU0VUIENBQ0hFICV7dmFsdWV9cyIgOiAiQ0FDSEUgJXt2YWx1ZX1zIjsKKwogCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAJbmV3X2pzb25i X1ZBKHN0YXRlLCAzLAotCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiQ0FDSEUgJXt2YWx1ZX1zIiwK KwkJCQkgImZtdCIsIGpidlN0cmluZywgZm10LAogCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAi Y2FjaGUiLAogCQkJCSAidmFsdWUiLCBqYnZTdHJpbmcsCiAJCQkJIHBzcHJpbnRmKElOVDY0X0ZP Uk1BVCwgc2VxZGF0YS0+c2VxY2FjaGUpKTsKQEAgLTQyOCwxNCArNDM1LDIxIEBAIGRlcGFyc2Vf U2VxX0NhY2hlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5j ZSBzZXFkYXRhKQogICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgQ1lDTEUgb3B0aW9uIHRvIEpzb25i LgogICoKICAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQgJXtub31zIENZQ0xFCisgKiBPUgogICog JXtub31zIENZQ0xFCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAotZGVwYXJzZV9TZXFfQ3ljbGVf dG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEp CitkZXBhcnNlX1NlcV9DeWNsZV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIEZvcm1f cGdfc2VxdWVuY2Ugc2VxZGF0YSwKKwkJCQkJCSAgYm9vbCBhbHRlcl90YWJsZSkKIHsKKwljaGFy CSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgJXtub31zIENZQ0xFIiA6ICIl e25vfXMgQ1lDTEUiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0JCQkJICJmbXQiLCBqYnZTdHJpbmcs ICIle25vfXMgQ1lDTEUiLAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCBmbXQsCiAJCQkJICJjbGF1 c2UiLCBqYnZTdHJpbmcsICJjeWNsZSIsCiAJCQkJICJubyIsIGpidlN0cmluZywgc2VxZGF0YS0+ c2VxY3ljbGUgPwogCQkJCSAiIiA6ICJOTyIpOwpAQCAtNDQ2LDE1ICs0NjAsMjIgQEAgZGVwYXJz ZV9TZXFfQ3ljbGVfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVl bmNlIHNlcWRhdGEpCiAgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBJTkNSRU1FTlQgQlkgb3B0aW9u IHRvIEpzb25iCiAgKgogICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCBJTkNSRU1FTlQgQlkgJXt2 YWx1ZX1zCisgKiBPUgogICogSU5DUkVNRU5UIEJZICV7dmFsdWV9cwogICovCiBzdGF0aWMgaW5s aW5lIHZvaWQKIGRlcGFyc2VfU2VxX0luY3JlbWVudEJ5X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRl ICpzdGF0ZSwKLQkJCQkJCQkJRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQorCQkJCQkJCQlGb3Jt X3BnX3NlcXVlbmNlIHNlcWRhdGEsIGJvb2wgYWx0ZXJfdGFibGUpCiB7CisJY2hhcgkgICAqZm10 OworCisJZm10ID0gYWx0ZXJfdGFibGUgPyAiU0VUIElOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiCisJ CTogIklOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0JCQkJICJm bXQiLCBqYnZTdHJpbmcsICJJTkNSRU1FTlQgQlkgJXt2YWx1ZX1zIiwKKwkJCQkgImZtdCIsIGpi dlN0cmluZywgZm10LAogCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAic2VxaW5jcmVtZW50IiwK IAkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAogCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNl cWRhdGEtPnNlcWluY3JlbWVudCkpOwpAQCAtNDY1LDE1ICs0ODYsMjEgQEAgZGVwYXJzZV9TZXFf SW5jcmVtZW50QnlfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLAogICogRGVwYXJzZSB0 aGUgc2VxdWVuY2UgTUFYVkFMVUUgb3B0aW9uIHRvIEpzb25iLgogICoKICAqIFZlcmJvc2Ugc3lu dGF4CisgKiBTRVQgTUFYVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgogICogTUFYVkFMVUUgJXt2YWx1 ZX1zCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZAogZGVwYXJzZV9TZXFfTWF4dmFsdWVfdG9Kc29u YihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLAotCQkJCQkJCSBGb3JtX3BnX3NlcXVlbmNlIHNlcWRh dGEpCisJCQkJCQkJIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkK IHsKKwljaGFyCSAgICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgTUFYVkFMVUUg JXt2YWx1ZX1zIiA6ICJNQVhWQUxVRSAle3ZhbHVlfXMiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0J CQkJICJmbXQiLCBqYnZTdHJpbmcsICJNQVhWQUxVRSAle3ZhbHVlfXMiLAorCQkJCSAiZm10Iiwg amJ2U3RyaW5nLCBmbXQsCiAJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJtYXh2YWx1ZSIsCiAJ CQkJICJ2YWx1ZSIsIGpidlN0cmluZywKIAkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFk YXRhLT5zZXFtYXgpKTsKQEAgLTQ4NCwxNSArNTExLDIxIEBAIGRlcGFyc2VfU2VxX01heHZhbHVl X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwKICAqIERlcGFyc2UgdGhlIHNlcXVlbmNl IE1JTlZBTFVFIG9wdGlvbiB0byBKc29uYgogICoKICAqIFZlcmJvc2Ugc3ludGF4CisgKiBTRVQg TUlOVkFMVUUgJXt2YWx1ZX1zCisgKiBPUgogICogTUlOVkFMVUUgJXt2YWx1ZX1zCiAgKi8KIHN0 YXRpYyBpbmxpbmUgdm9pZAogZGVwYXJzZV9TZXFfTWludmFsdWVfdG9Kc29uYihKc29uYlBhcnNl U3RhdGUgKnN0YXRlLAotCQkJCQkJCSBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCisJCQkJCQkJ IEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKIHsKKwljaGFyCSAg ICpmbXQ7CisKKwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgTUlOVkFMVUUgJXt2YWx1ZX1zIiA6 ICJNSU5WQUxVRSAle3ZhbHVlfXMiOworCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVH SU5fT0JKRUNULCBOVUxMKTsKIAluZXdfanNvbmJfVkEoc3RhdGUsIDMsCi0JCQkJICJmbXQiLCBq YnZTdHJpbmcsICJNSU5WQUxVRSAle3ZhbHVlfXMiLAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCBm bXQsCiAJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJtaW52YWx1ZSIsCiAJCQkJICJ2YWx1ZSIs IGpidlN0cmluZywKIAkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFtaW4p KTsKQEAgLTUwNiw3ICs1MzksOCBAQCBkZXBhcnNlX1NlcV9NaW52YWx1ZV90b0pzb25iKEpzb25i UGFyc2VTdGF0ZSAqc3RhdGUsCiAgKiBPV05FRCBCWSAle293bmVyfUQKICAqLwogc3RhdGljIHZv aWQKLWRlcGFyc2VfU2VxX093bmVkQnlfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBP aWQgc2VxdWVuY2VJZCkKK2RlcGFyc2VfU2VxX093bmVkQnlfdG9Kc29uYihKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBPaWQgc2VxdWVuY2VJZCwKKwkJCQkJCQlib29sIGFsdGVyX3RhYmxlKQogewog CVJlbGF0aW9uCWRlcFJlbDsKIAlTeXNTY2FuRGVzYyBzY2FuOwpAQCAtNTkxLDE1ICs2MjUsMjEg QEAgZGVwYXJzZV9TZXFfT3duZWRCeV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIE9p ZCBzZXF1ZW5jZUlkKQogICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgU1RBUlQgV0lUSCBvcHRpb24g dG8gSnNvbmIuCiAgKgogICogVmVyYm9zZSBzeW50YXgKKyAqIFNFVCBTVEFSVCBXSVRIICV7dmFs dWV9cworICogT1IKICAqIFNUQVJUIFdJVEggJXt2YWx1ZX1zCiAgKi8KIHN0YXRpYyBpbmxpbmUg dm9pZAogZGVwYXJzZV9TZXFfU3RhcnR3aXRoX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0 ZSwKLQkJCQkJCQkgIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0YSkKKwkJCQkJCQkgIEZvcm1fcGdf c2VxdWVuY2Ugc2VxZGF0YSwgYm9vbCBhbHRlcl90YWJsZSkKIHsKKwljaGFyCSAgICpmbXQ7CisK KwlmbXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgU1RBUlQgV0lUSCAle3ZhbHVlfXMiIDogIlNUQVJU IFdJVEggJXt2YWx1ZX1zIjsKKwogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09C SkVDVCwgTlVMTCk7CiAJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAotCQkJCSAiZm10IiwgamJ2U3Ry aW5nLCAiU1RBUlQgV0lUSCAle3ZhbHVlfXMiLAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCBmbXQs CiAJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJzdGFydCIsCiAJCQkJICJ2YWx1ZSIsIGpidlN0 cmluZywKIAkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBzZXFkYXRhLT5zZXFzdGFydCkpOwpA QCAtNjQzLDE0ICs2ODMsMTcgQEAgZGVwYXJzZV9TZXFfQXNfdG9Kc29uYihKc29uYlBhcnNlU3Rh dGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCiAgKiBEZXBhcnNlIHRoZSBkZWZp bml0aW9uIG9mIGNvbHVtbiBpZGVudGl0eSB0byBKc29uYi4KICAqCiAgKiBWZXJib3NlIHN5bnRh eAorICogU0VUIEdFTkVSQVRFRCAle29wdGlvbn1zICV7aWRlbnRpdHlfdHlwZX1zICV7c2VxX2Rl ZmluaXRpb246IH1zCisgKiAJT1IKICAqIEdFTkVSQVRFRCAle29wdGlvbn1zIEFTIElERU5USVRZ ICV7aWRlbnRpdHlfdHlwZX1zICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKQogICovCiBzdGF0aWMg dm9pZAogZGVwYXJzZV9Db2x1bW5JZGVudGl0eV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3Rh dGUsIGNoYXIgKnBhcmVudEtleSwKLQkJCQkJCQkgICBPaWQgc2VxcmVsaWQsIGNoYXIgaWRlbnRp dHkpCisJCQkJCQkJICAgT2lkIHNlcXJlbGlkLCBjaGFyIGlkZW50aXR5LCBib29sIGFsdGVyX3Rh YmxlKQogewogCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKIAlTZXF1ZW5jZV92YWx1ZXMgKnNl cXZhbHVlczsKKwljaGFyCSAgICppZGVudGZtdDsKIAlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CiAK IAlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKQEAgLTY3MiwxMCArNzE1LDExIEBAIGRlcGFyc2Vf Q29sdW1uSWRlbnRpdHlfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpwYXJl bnRLZXksCiAJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJpZGVudGl0eV90eXBlIik7CiAKIAkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJaWRlbnRm bXQgPSBhbHRlcl90YWJsZSA/ICJTRVQgR0VORVJBVEVEICV7b3B0aW9ufXMiIDoKKwkJCSJHRU5F UkFURUQgJXtvcHRpb259cyBBUyBJREVOVElUWSI7CiAKIAkJbmV3X2pzb25iX1ZBKHN0YXRlLCAy LAotCQkJCQkgImZtdCIsIGpidlN0cmluZywKLQkJCQkJIkdFTkVSQVRFRCAle29wdGlvbn1zIEFT IElERU5USVRZIiwKKwkJCQkJICJmbXQiLCBqYnZTdHJpbmcsIGlkZW50Zm10LAogCQkJCQkgIm9w dGlvbiIsIGpidlN0cmluZywKIAkJCQkJIChpZGVudGl0eSA9PSBBVFRSSUJVVEVfSURFTlRJVFlf QUxXQVlTID8KIAkJCQkJICAiQUxXQVlTIiA6ICJCWSBERUZBVUxUIikpOwpAQCAtNjg1LDcgKzcy OSw4IEBAIGRlcGFyc2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBjaGFyICpwYXJlbnRLZXksCiAJLyogc2VxX2RlZmluaXRpb24gYXJyYXkgb2JqZWN0IGNy ZWF0aW9uICovCiAJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInNlcV9kZWZpbml0aW9uIik7CiAK LQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgKCAle3NlcV9kZWZpbml0aW9uOiB9 cyApIik7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCBhbHRlcl90YWJsZSA/ICIg JXtzZXFfZGVmaW5pdGlvbjogfXMiIDoKKwkJCQkJCSAgICIgKCAle3NlcV9kZWZpbml0aW9uOiB9 cyApIik7CiAKIAlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7 CiAKQEAgLTY5MywxMiArNzM4LDEyIEBAIGRlcGFyc2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihK c29uYlBhcnNlU3RhdGUgKnN0YXRlLCBjaGFyICpwYXJlbnRLZXksCiAJc2VxZm9ybSA9IHNlcXZh bHVlcy0+c2VxZm9ybTsKIAogCS8qIERlZmluaXRpb24gZWxlbWVudHMgKi8KLQlkZXBhcnNlX1Nl cV9DYWNoZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKLQlkZXBhcnNlX1NlcV9DeWNsZV90b0pz b25iKHN0YXRlLCBzZXFmb3JtKTsKLQlkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0 YXRlLCBzZXFmb3JtKTsKLQlkZXBhcnNlX1NlcV9NaW52YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFm b3JtKTsKLQlkZXBhcnNlX1NlcV9NYXh2YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKLQlk ZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJzZV9T ZXFfQ2FjaGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0ZXJfdGFibGUpOworCWRlcGFyc2Vf U2VxX0N5Y2xlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3RhYmxlKTsKKwlkZXBhcnNl X1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3JtLCBhbHRlcl90YWJsZSk7CisJ ZGVwYXJzZV9TZXFfTWludmFsdWVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0ZXJfdGFibGUp OworCWRlcGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGFsdGVyX3Rh YmxlKTsKKwlkZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgYWx0 ZXJfdGFibGUpOwogCWRlcGFyc2VfU2VxX1Jlc3RhcnRfdG9Kc29uYihzdGF0ZSwgc2VxdmFsdWVz LT5sYXN0X3ZhbHVlKTsKIAkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkg aGVyZSAqLwogCkBAIC03MjYsNyArNzcxLDggQEAgZGVwYXJzZV9Db2x1bW5JZGVudGl0eV90b0pz b25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKnBhcmVudEtleSwKICAqLwogc3RhdGlj IHZvaWQKIGRlcGFyc2VfQ29sdW1uRGVmX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwg UmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkgIExpc3QgKmRwY29udGV4dCwgYm9vbCBjb21wb3Np dGUsIENvbHVtbkRlZiAqY29sZGVmKQorCQkJCQkJICBMaXN0ICpkcGNvbnRleHQsIGJvb2wgY29t cG9zaXRlLCBDb2x1bW5EZWYgKmNvbGRlZiwKKwkJCQkJCSAgYm9vbCBpc19hbHRlcikKIHsKIAlP aWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCUhlYXBUdXBsZQlhdHRy VHVwOwpAQCAtODMxLDYgKzg3Nyw5IEBAIGRlcGFyc2VfQ29sdW1uRGVmX3RvSnNvbmIoSnNvbmJQ YXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQl9CiAJCX0KIAorCQlpZiAo aXNfYWx0ZXIgJiYgY29sZGVmLT5pc19ub3RfbnVsbCkKKwkJCXNhd19ub3RudWxsID0gdHJ1ZTsK KwogCQkvKiBOT1QgTlVMTCAqLwogCQlpZiAoc2F3X25vdG51bGwpCiAJCXsKQEAgLTg3Nyw3ICs5 MjYsNyBAQCBkZXBhcnNlX0NvbHVtbkRlZl90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUs IFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwg IiAle2lkZW50aXR5X2NvbHVtbn1zIik7CiAJCQkJZGVwYXJzZV9Db2x1bW5JZGVudGl0eV90b0pz b25iKHN0YXRlLCAiaWRlbnRpdHlfY29sdW1uIiwKIAkJCQkJCQkJCQkJICAgc2VxcmVsaWQsCi0J CQkJCQkJCQkJCSAgIGNvbGRlZi0+aWRlbnRpdHkpOworCQkJCQkJCQkJCQkgICBjb2xkZWYtPmlk ZW50aXR5LCBpc19hbHRlcik7CiAJCQl9CiAJCX0KIApAQCAtMTE5OCw3ICsxMjQ3LDggQEAgZGVw YXJzZV9UYWJsZUVsZW1zX1RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24g cmVsYXRpb24sCiAJCQkJCQkJCQkJCQkJCShDb2x1bW5EZWYgKikgZWx0KTsKIAkJCQkJZWxzZQog CQkJCQkJZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihzdGF0ZSwgcmVsYXRpb24sIGRwY29udGV4 dCwKLQkJCQkJCQkJCQkJCSAgY29tcG9zaXRlLCAoQ29sdW1uRGVmICopIGVsdCk7CisJCQkJCQkJ CQkJCQkgIGNvbXBvc2l0ZSwgKENvbHVtbkRlZiAqKSBlbHQsCisJCQkJCQkJCQkJCQkgIGZhbHNl KTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIFRfQ29uc3RyYWludDoKQEAgLTE0NjQsNiAr MTUxNCw5MyBAQCBkZXBhcnNlX0RlZkVsZW1fVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRl LCBEZWZFbGVtICplbGVtLCBib29sIGlzX3Jlc2V0KQogCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0VORF9PQkpFQ1QsIE5VTEwpOwogfQogCisvKgorICogRGVwYXJzZSBTRVQvUkVTRVQgYXMg dXNlZCBieQorICogQUxURVIgVEFCTEUgLi4uIEFMVEVSIENPTFVNTiAuLi4gU0VUL1JFU0VUICgu Li4pCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFJF U0VUfFNFVCAoJXtvcHRpb25zOiwgfXMpCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX0NvbHVt blNldE9wdGlvbnNfVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBBbHRlclRhYmxlQ21k ICpzdWJjbWQpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKwlib29sCQlpc19yZXNldCA9IHN1YmNt ZC0+c3VidHlwZSA9PSBBVF9SZXNldE9wdGlvbnM7CisJYm9vbAkJZWxlbV9mb3VuZCBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFkgPSBmYWxzZTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDMsCisJCQkJICJm bXQiLCBqYnZTdHJpbmcsICJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSIKKwkJCQkgIiAle29wdGlv bn1zICgle29wdGlvbnM6LCB9cykiLAorCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJjbWQt Pm5hbWUsCisJCQkJICJvcHRpb24iLCBqYnZTdHJpbmcsIGlzX3Jlc2V0ID8gIlJFU0VUIiA6ICJT RVQiKTsKKworCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJvcHRpb25zIik7CisJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOworCisJZm9yZWFjaChjZWxsLCAo TGlzdCAqKSBzdWJjbWQtPmRlZikKKwl7CisJCURlZkVsZW0gICAgKmVsZW07CisKKwkJZWxlbSA9 IChEZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKwkJZGVwYXJzZV9EZWZFbGVtX1RvSnNvbmIoc3Rh dGUsIGVsZW0sIGlzX3Jlc2V0KTsKKworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJZWxl bV9mb3VuZCA9IHRydWU7CisjZW5kaWYKKwl9CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9FTkRfQVJSQVksIE5VTEwpOworCisJQXNzZXJ0KGVsZW1fZm91bmQpOworCisJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNl IFNFVC9SRVNFVCBhcyB1c2VkIGJ5IEFMVEVSIFRBQkxFIC4uLiBTRVQvUkVTRVQgKC4uLikKKyAq CisgKiBWZXJib3NlIHN5bnRheAorICogUkVTRVR8U0VUICgle29wdGlvbnM6LCB9cykKKyAqLwor c3RhdGljIHZvaWQKK2RlcGFyc2VfUmVsU2V0T3B0aW9uc190b0pzb25iKEpzb25iUGFyc2VTdGF0 ZSAqc3RhdGUsIEFsdGVyVGFibGVDbWQgKnN1YmNtZCkKK3sKKwlMaXN0Q2VsbCAgICpjZWxsOwor CWJvb2wJCWlzX3Jlc2V0ID0gc3ViY21kLT5zdWJ0eXBlID09IEFUX1Jlc2V0UmVsT3B0aW9uczsK Kwlib29sCQllbGVtX2ZvdW5kIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IGZhbHNlOworCisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCW5ld19q c29uYl9WQShzdGF0ZSwgMiwKKwkJCQkgImZtdCIsIGpidlN0cmluZywgIiV7c2V0X3Jlc2V0fXMg KCV7b3B0aW9uczosIH1zKSIsCisJCQkJICJzZXRfcmVzZXQiLCBqYnZTdHJpbmcsIGlzX3Jlc2V0 ID8gIlJFU0VUIiA6ICJTRVQiKTsKKworCS8qIGluc2VydCBvcHRpb25zIGFycmF5ICovCisJaW5z ZXJ0X2pzb25iX2tleShzdGF0ZSwgIm9wdGlvbnMiKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKKworCWZvcmVhY2goY2VsbCwgKExpc3QgKikgc3Vi Y21kLT5kZWYpCisJeworCQlEZWZFbGVtICAgICplbGVtOworCisJCWVsZW0gPSAoRGVmRWxlbSAq KSBsZmlyc3QoY2VsbCk7CisJCWRlcGFyc2VfRGVmRWxlbV9Ub0pzb25iKHN0YXRlLCBlbGVtLCBp c19yZXNldCk7CisKKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCWVsZW1fZm91bmQgPSB0 cnVlOworI2VuZGlmCisJfQorCisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX0FSUkFZ LCBOVUxMKTsKKworCUFzc2VydChlbGVtX2ZvdW5kKTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCiAvKgogICogRGVwYXJzZSBXSVRIIGNsYXVz ZSwgYXMgdXNlZCBieSBDcmVhdGUgVGFibGUuCiAgKi8KQEAgLTE3ODQsNiArMTkyMSwxMjk3IEBA IGRlcGFyc2VfZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAq b2JqZWN0dHlwZSwKIAlyZXR1cm4gSnNvbmJUb0NTdHJpbmcoJnN0ciwgJmpzb25iLT5yb290LCBK U09OQl9FU1RJTUFURURfTEVOKTsKIH0KIAorLyoKKyAqIERlcGFyc2UgYWxsIHRoZSBjb2xsZWN0 ZWQgc3ViY29tbWFuZHMgYW5kIHJldHVybiBqc29uYiBzdHJpbmcgcmVwcmVzZW50aW5nCisgKiB0 aGUgYWx0ZXIgY29tbWFuZC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0 eXBlfXMgJXtvbmx5fXMgJXtpZGVudGl0eX1EICV7c3ViY21kczosIH1zCisgKi8KK3N0YXRpYyBK c29uYiAqCitkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKK3sK KwlMaXN0CSAgICpkcGNvbnRleHQ7CisJUmVsYXRpb24JcmVsOworCUxpc3RDZWxsICAgKmNlbGw7 CisJY29uc3QgY2hhciAqcmVsdHlwZTsKKwlPaWQJCQlyZWxJZCA9IGNtZC0+ZC5hbHRlclRhYmxl Lm9iamVjdElkOworCUFsdGVyVGFibGVTdG10ICpzdG10ID0gTlVMTDsKKwlTdHJpbmdJbmZvRGF0 YSBmbXRTdHI7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSA9IE5VTEw7CisJYm9vbAkJc3ViQ21k QXJyYXkgPSBmYWxzZTsKKwlKc29uYlZhbHVlICp2YWx1ZTsKKworCUFzc2VydChjbWQtPnR5cGUg PT0gU0NUX0FsdGVyVGFibGUpOworCXN0bXQgPSAoQWx0ZXJUYWJsZVN0bXQgKikgY21kLT5wYXJz ZXRyZWU7CisKKwlBc3NlcnQoSXNBKHN0bXQsIEFsdGVyVGFibGVTdG10KSB8fCBJc0Eoc3RtdCwg QWx0ZXJUYWJsZU1vdmVBbGxTdG10KSk7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKwor CS8qCisJICogQUxURVIgVEFCTEUgc3ViY29tbWFuZHMgZ2VuZXJhdGVkIGZvciBUYWJsZUxpa2VD bGF1c2UgaXMgcHJvY2Vzc2VkIGluCisJICogdGhlIHRvcCBsZXZlbCBDUkVBVEUgVEFCTEUgY29t bWFuZDsgcmV0dXJuIGVtcHR5IGhlcmUuCisJICovCisJaWYgKElzQShzdG10LCBBbHRlclRhYmxl U3RtdCkgJiYgc3RtdC0+dGFibGVfbGlrZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWwgPSByZWxh dGlvbl9vcGVuKHJlbElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJc3dpdGNoIChyZWwtPnJkX3Jl bC0+cmVsa2luZCkKKwl7CisJCWNhc2UgUkVMS0lORF9SRUxBVElPTjoKKwkJY2FzZSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFOgorCQkJcmVsdHlwZSA9ICJUQUJMRSI7CisJCQlicmVhazsKKwkJ Y2FzZSBSRUxLSU5EX0lOREVYOgorCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVg6CisJ CWNhc2UgUkVMS0lORF9WSUVXOgorCQljYXNlIFJFTEtJTkRfQ09NUE9TSVRFX1RZUEU6CisJCWNh c2UgUkVMS0lORF9GT1JFSUdOX1RBQkxFOgorCQljYXNlIFJFTEtJTkRfTUFUVklFVzoKKwkJCS8q IHVuc3VwcG9ydGVkIHJlbGtpbmQgKi8KKwkJCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJCXJldHVybiBOVUxMOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5l eHBlY3RlZCByZWxraW5kICVkIiwgcmVsLT5yZF9yZWwtPnJlbGtpbmQpOworCX0KKworCisJZHBj b250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LCByZWxJZCk7CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCisJLyogU3RhcnQgY29uc3RydWN0aW5nIGZtdCBzdHJpbmcgKi8KKwlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICJBTFRFUiAle29ianR5cGV9cyIpOworCisJbmV3X2pzb25i X1ZBKHN0YXRlLCAxLCAib2JqdHlwZSIsIGpidlN0cmluZywgcmVsdHlwZSk7CisKKwlpZiAoIXN0 bXQtPnJlbGF0aW9uLT5pbmgpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIs ICIgJXtvbmx5fXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAib25seSIsIGpidlN0cmlu ZywgIk9OTFkiKTsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtp ZGVudGl0eX1EIik7CisJaW5zZXJ0X2lkZW50aXR5X29iamVjdChzdGF0ZSwgcmVsLT5yZF9yZWwt PnJlbG5hbWVzcGFjZSwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOwor CisJZm9yZWFjaChjZWxsLCBjbWQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzKQorCXsKKwkJQ29sbGVj dGVkQVRTdWJjbWQgKnN1YiA9IChDb2xsZWN0ZWRBVFN1YmNtZCAqKSBsZmlyc3QoY2VsbCk7CisJ CUFsdGVyVGFibGVDbWQgKnN1YmNtZCA9IChBbHRlclRhYmxlQ21kICopIHN1Yi0+cGFyc2V0cmVl OworCisJCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxlQ21kKSk7CisKKwkJLyoKKwkJICog U2tpcCBkZXBhcnNlIG9mIHRoZSBzdWJjb21tYW5kIGlmIHRoZSBvYmplY3RJZCBkb2Vzbid0IG1h dGNoIHRoZQorCQkgKiB0YXJnZXQgcmVsYXRpb24gSUQuIEl0IGNhbiBoYXBwZW4gZm9yIGluaGVy aXRlZCB0YWJsZXMgd2hlbgorCQkgKiBzdWJjb21tYW5kcyBmb3IgaW5oZXJpdGVkIHRhYmxlcyBh bmQgdGhlIHBhcmVudCB0YWJsZSBhcmUgYm90aAorCQkgKiBjb2xsZWN0ZWQgaW4gdGhlIEFMVEVS IFRBQkxFIGNvbW1hbmQgZm9yIHRoZSBwYXJlbnQgdGFibGUuCisJCSAqLworCQlpZiAoc3ViY21k LT5zdWJ0eXBlICE9IEFUX0F0dGFjaFBhcnRpdGlvbiAmJgorCQkJc3ViLT5hZGRyZXNzLm9iamVj dElkICE9IHJlbElkICYmCisJCQloYXNfc3VwZXJjbGFzcyhzdWItPmFkZHJlc3Mub2JqZWN0SWQp KQorCQkJY29udGludWU7CisKKwkJLyogTWFyayB0aGUgYmVnaW4gb2Ygc3ViY21kcyBhcnJheSAq LworCQlpZiAoIXN1YkNtZEFycmF5KQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtzdWJjbWRzOiwgfXMiKTsKKwkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJz dWJjbWRzIik7CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVM TCk7CisJCQlzdWJDbWRBcnJheSA9IHRydWU7CisJCX0KKworCQlzd2l0Y2ggKHN1YmNtZC0+c3Vi dHlwZSkKKwkJeworCQkJY2FzZSBBVF9BZGRDb2x1bW46CisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJLyog WFhYIG5lZWQgdG8gc2V0IHRoZSAicmVjdXJzZSIgYml0IHNvbWV3aGVyZT8gKi8KKwkJCQkJQXNz ZXJ0KElzQShzdWJjbWQtPmRlZiwgQ29sdW1uRGVmKSk7CisKKwkJCQkJLyoKKwkJCQkJICogU3lu dGF4OiBBREQgQ09MVU1OICV7aWZfbm90X2V4aXN0c31zICV7ZGVmaW5pdGlvbn1zIgorCQkJCQkg KiB3aGVyZSBkZWZpbml0aW9uOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRQorCQkJCQkg KiAle2NvbHN0b3JhZ2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cworCQkJCQkgKiAl e25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtpZGVudGl0eV9jb2x1bW59cworCQkJCQkgKiAle2dl bmVyYXRlZF9jb2x1bW59cyIKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Zm10U3ViLCAiQUREIENPTFVNTiIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJ0eXBl IiwgamJ2U3RyaW5nLCAiYWRkIGNvbHVtbiIpOworCisJCQkJCWlmIChzdWJjbWQtPm1pc3Npbmdf b2spCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2lm X25vdF9leGlzdHN9cyIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkJCQkJ ICJpZl9ub3RfZXhpc3RzIiwgamJ2U3RyaW5nLCAiSUYgTk9UIEVYSVNUUyIpOworCQkJCQl9CisK KwkJCQkJLyogUHVzaCBkZWZpbml0aW9uIGtleS12YWx1ZSBwYWlyICovCisJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2RlZmluaXRpb259cyIpOworCQkJCQlpbnNlcnRf anNvbmJfa2V5KHN0YXRlLCAiZGVmaW5pdGlvbiIpOworCisJCQkJCWRlcGFyc2VfQ29sdW1uRGVm X3RvSnNvbmIoc3RhdGUsIHJlbCwgZHBjb250ZXh0LAorCQkJCQkJCQkJCQkgIGZhbHNlLCAoQ29s dW1uRGVmICopIHN1YmNtZC0+ZGVmLAorCQkJCQkJCQkJCQkgIHRydWUpOworCisJCQkJCS8qIFdl IGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLwor CQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5kYXRh KTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2Ug QVRfQWRkSW5kZXhDb25zdHJhaW50OgorCQkJCXsKKwkJCQkJSW5kZXhTdG10ICAqaXN0bXQ7CisJ CQkJCVJlbGF0aW9uCWlkeDsKKwkJCQkJT2lkCQkJY29uT2lkID0gc3ViLT5hZGRyZXNzLm9iamVj dElkOworCisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIEluZGV4U3RtdCkpOworCQkJCQlp c3RtdCA9IChJbmRleFN0bXQgKikgc3ViY21kLT5kZWY7CisKKwkJCQkJQXNzZXJ0KGlzdG10LT5p c2NvbnN0cmFpbnQgJiYgaXN0bXQtPnVuaXF1ZSk7CisKKwkJCQkJaWR4ID0gcmVsYXRpb25fb3Bl bihpc3RtdC0+aW5kZXhPaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJCQkJLyoKKwkJCQkJICog U3ludGF4OiBBREQgQ09OU1RSQUlOVCAle25hbWV9SSAle2NvbnN0cmFpbnRfdHlwZX1zCisJCQkJ CSAqIFVTSU5HIElOREVYICVpbmRleF9uYW1lfUkgJXtkZWZlcnJhYmxlfXMKKwkJCQkJICogJXtp bml0X2RlZmVycmVkfXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA3LAorCQkJ CQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkJICJBREQgQ09OU1RSQUlOVCAle25hbWV9 SSAle2NvbnN0cmFpbnRfdHlwZX1zIgorCQkJCQkJCQkgIiBVU0lORyBJTkRFWCAle2luZGV4X25h bWV9SSAle2RlZmVycmFibGV9cyIKKwkJCQkJCQkJICIgJXtpbml0X2RlZmVycmVkfXMiLAorCQkJ CQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJhZGQgY29uc3RyYWludCB1c2luZyBpbmRleCIsCisJ CQkJCQkJCSAibmFtZSIsIGpidlN0cmluZywgZ2V0X2NvbnN0cmFpbnRfbmFtZShjb25PaWQpLAor CQkJCQkJCQkgImNvbnN0cmFpbnRfdHlwZSIsIGpidlN0cmluZywKKwkJCQkJCQkJIGlzdG10LT5w cmltYXJ5ID8gIlBSSU1BUlkgS0VZIiA6ICJVTklRVUUiLAorCQkJCQkJCQkgImluZGV4X25hbWUi LCBqYnZTdHJpbmcsCisJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpZHgpLAorCQkJ CQkJCQkgImRlZmVycmFibGUiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBpc3RtdC0+ZGVmZXJyYWJs ZSA/ICJERUZFUlJBQkxFIiA6CisJCQkJCQkJCSAiTk9UIERFRkVSUkFCTEUiLAorCQkJCQkJCQkg ImluaXRfZGVmZXJyZWQiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBpc3RtdC0+aW5pdGRlZmVycmVk ID8gIklOSVRJQUxMWSBERUZFUlJFRCIgOgorCQkJCQkJCQkgIklOSVRJQUxMWSBJTU1FRElBVEUi KTsKKworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK KwkJCQkJcmVsYXRpb25fY2xvc2UoaWR4LCBBY2Nlc3NTaGFyZUxvY2spOworCQkJCQlicmVhazsK KwkJCQl9CisJCQljYXNlIEFUX1JlQWRkSW5kZXg6CisJCQljYXNlIEFUX1JlQWRkQ29uc3RyYWlu dDoKKwkJCWNhc2UgQVRfUmVBZGREb21haW5Db25zdHJhaW50OgorCQkJY2FzZSBBVF9SZUFkZENv bW1lbnQ6CisJCQljYXNlIEFUX1JlcGxhY2VSZWxPcHRpb25zOgorCQkJY2FzZSBBVF9DaGVja05v dE51bGw6CisJCQljYXNlIEFUX1JlQWRkU3RhdGlzdGljczoKKwkJCQkvKiBTdWJ0eXBlcyB1c2Vk IGZvciBpbnRlcm5hbCBvcGVyYXRpb25zOyBub3RoaW5nIHRvIGRvIGhlcmUgKi8KKwkJCQlicmVh azsKKworCQkJY2FzZSBBVF9Db2x1bW5EZWZhdWx0OgorCQkJCWlmIChzdWJjbWQtPmRlZiA9PSBO VUxMKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1 bW59SSBEUk9QIERFRkFVTFQKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJ CQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1u fUkgRFJPUCBERUZBVUxUIiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZHJvcCBkZWZh dWx0IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJ CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCX0KKwkJ CQllbHNlCisJCQkJeworCQkJCQlMaXN0CSAgICpkcGNvbnRleHRfcmVsOworCQkJCQlIZWFwVHVw bGUJYXR0cnR1cDsKKwkJCQkJQXR0ck51bWJlcglhdHRubzsKKworCQkJCQlkcGNvbnRleHRfcmVs ID0gZGVwYXJzZV9jb250ZXh0X2ZvcigKKwkJCQkJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUocmVsKSwKKwkJCQkJCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwkJCQkJ YXR0cnR1cCA9IFNlYXJjaFN5c0NhY2hlQXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJ CQkJCQkJCQkJCQkJc3ViY21kLT5uYW1lKTsKKwkJCQkJYXR0bm8gPSAoKEZvcm1fcGdfYXR0cmli dXRlKSBHRVRTVFJVQ1QoYXR0cnR1cCkpLT5hdHRudW07CisKKwkJCQkJLyoKKwkJCQkJICogU3lu dGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQgREVGQVVMVAorCQkJCQkgKiAle2RlZmlu aXRpb259cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDQsCisJCQkJCQkJCSAi Zm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgIkFMVEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBE RUZBVUxUIgorCQkJCQkJCQkgIiAle2RlZmluaXRpb259cyIsCisJCQkJCQkJCSAidHlwZSIsIGpi dlN0cmluZywgInNldCBkZWZhdWx0IiwKKwkJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1 YmNtZC0+bmFtZSwKKwkJCQkJCQkJICJkZWZpbml0aW9uIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkg UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbCwgYXR0bm8sCisJCQkJCQkJCQkJCQkJCSAgZHBj b250ZXh0X3JlbCkpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpF Q1QsIE5VTEwpOworCQkJCQlSZWxlYXNlU3lzQ2FjaGUoYXR0cnR1cCk7CisJCQkJfQorCisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcE5vdE51bGw6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRh eDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBOT1QgTlVMTAorCQkJCSAqLworCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiQUxU RVIgQ09MVU1OICV7Y29sdW1ufUkgRFJPUCBOT1QgTlVMTCIsCisJCQkJCQkJICJ0eXBlIiwgamJ2 U3RyaW5nLCAiZHJvcCBub3QgbnVsbCIsCisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1 YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwg TlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRm9yY2VSb3dTZWN1cml0eToKKworCQkJ CS8qCisJCQkJICogU3ludGF4OiBGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkKKwkJCQkgKi8KKwkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5l d19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkZPUkNFIFJP VyBMRVZFTCBTRUNVUklUWSIpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX05vRm9yY2VSb3dTZWN1cml0 eToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBOTyBGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFkK KwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywKKwkJCQkJ CQkgIk5PIEZPUkNFIFJPVyBMRVZFTCBTRUNVUklUWSIpOworCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1Nl dE5vdE51bGw6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1u fUkgU0VUIE5PVCBOVUxMCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf QkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDMsCisJCQkJCQkJ ICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBTRVQg Tk9UIE5VTEwiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBub3QgbnVsbCIsCisJ CQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfRHJvcEV4cHJlc3Npb246CisJCQkJeworCQkJCQlTdHJpbmdJbmZvRGF0YSBmbXRTdWI7 CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJLyoKKwkJCQkJICogU3lu dGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBEUk9QIEVYUFJFU1NJT04KKwkJCQkJICogJXtp Zl9leGlzdHN9cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVH SU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAi QUxURVIgQ09MVU1OIgorCQkJCQkJCQkJCSAgICIgJXtjb2x1bW59SSBEUk9QIEVYUFJFU1NJT04i KTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCQkgInR5cGUiLCBqYnZTdHJp bmcsICJkcm9wIGV4cHJlc3Npb24iLAorCQkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3Vi Y21kLT5uYW1lKTsKKworCQkJCQlpZiAoc3ViY21kLT5taXNzaW5nX29rKQorCQkJCQl7CisJCQkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXtpZl9leGlzdHN9cyIpOworCQkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkJCQkJICJpZl9leGlzdHMiLCBqYnZTdHJp bmcsICJJRiBFWElTVFMiKTsKKwkJCQkJfQorCisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkg bm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5kYXRhKTsKKwkJCQkJcGZyZWUoZm10 U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1Qs IE5VTEwpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCWNhc2UgQVRfU2V0U3RhdGlzdGljczoK KwkJCQlBc3NlcnQoSXNBKHN1YmNtZC0+ZGVmLCBJbnRlZ2VyKSk7CisKKwkJCQkvKgorCQkJCSAq IFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNUQVRJU1RJQ1MKKwkJCQkgKiAl e3N0YXRpc3RpY3N9bgorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0LAorCQkJCQkJCSAi Zm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIFNU QVRJU1RJQ1MiCisJCQkJCQkJICIgJXtzdGF0aXN0aWNzfW4iLAorCQkJCQkJCSAidHlwZSIsIGpi dlN0cmluZywgInNldCBzdGF0aXN0aWNzIiwKKwkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywg c3ViY21kLT5uYW1lLAorCQkJCQkJCSAic3RhdGlzdGljcyIsIGpidk51bWVyaWMsCisJCQkJCQkJ IGludFZhbCgoSW50ZWdlciAqKSBzdWJjbWQtPmRlZikpOworCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1Nl dE9wdGlvbnM6CisJCQljYXNlIEFUX1Jlc2V0T3B0aW9uczoKKworCQkJCS8qCisJCQkJICogU3lu dGF4OiBBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSBSRVNFVHxTRVQgKCV7b3B0aW9uczosIH1zKQor CQkJCSAqLworCQkJCWRlcGFyc2VfQ29sdW1uU2V0T3B0aW9uc19Ub0pzb25iKHN0YXRlLCBzdWJj bWQpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldFN0b3JhZ2U6CisJCQkJQXNzZXJ0KElz QShzdWJjbWQtPmRlZiwgU3RyaW5nKSk7CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogQUxURVIg Q09MVU1OICV7Y29sdW1ufUkgU0VUIFNUT1JBR0UgJXtzdG9yYWdlfXMKKwkJCQkgKi8KKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19q c29uYl9WQShzdGF0ZSwgNCwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkFM VEVSIENPTFVNTiAle2NvbHVtbn1JIFNFVCBTVE9SQUdFIgorCQkJCQkJCSAiICV7c3RvcmFnZX1z IiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJzZXQgc3RvcmFnZSIsCisJCQkJCQkJICJj b2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSwKKwkJCQkJCQkgInN0b3JhZ2UiLCBqYnZT dHJpbmcsCisJCQkJCQkJIHN0clZhbCgoU3RyaW5nICopIHN1YmNtZC0+ZGVmKSk7CisJCQkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfU2V0Q29tcHJlc3Npb246CisJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwg U3RyaW5nKSk7CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1u fUkgU0VUIENPTVBSRVNTSU9OCisJCQkJICogJXtjb21wcmVzc2lvbl9tZXRob2R9cworCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCA0LAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJ CQkJCSAiQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIENPTVBSRVNTSU9OIgorCQkJCQkJCSAi ICV7Y29tcHJlc3Npb25fbWV0aG9kfXMiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNl dCBjb21wcmVzc2lvbiIsCisJCQkJCQkJICJjb2x1bW4iLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFt ZSwKKwkJCQkJCQkgImNvbXByZXNzaW9uX21ldGhvZCIsIGpidlN0cmluZywKKwkJCQkJCQkgc3Ry VmFsKChTdHJpbmcgKikgc3ViY21kLT5kZWYpKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9Ecm9wQ29s dW1uOgorCQkJCXsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJCQkJCWluaXRTdHJp bmdJbmZvKCZmbXRTdWIpOworCisJCQkJCS8qCisJCQkJCSAqIFN5bnRheDogRFJPUCBDT0xVTU4g JXtpZl9leGlzdHN9cyAle2NvbHVtbn1JCisJCQkJCSAqICV7Y2FzY2FkZX1zCisJCQkJCSAqLwor CQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJ CQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIkRST1AgQ09MVU1OIik7CisJCQkJ CW5ld19qc29uYl9WQShzdGF0ZSwgMSwgInR5cGUiLCBqYnZTdHJpbmcsICJkcm9wIGNvbHVtbiIp OworCisJCQkJCWlmIChzdWJjbWQtPm1pc3Npbmdfb2spCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2lmX2V4aXN0c31zIik7CisJCQkJCQluZXdfanNv bmJfVkEoc3RhdGUsIDEsCisJCQkJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmluZywgIklGIEVY SVNUUyIpOworCQkJCQl9CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAi ICV7Y29sdW1ufUkiKTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiY29sdW1uIiwgamJ2 U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCisJCQkJCWlmIChzdWJjbWQtPmJlaGF2aW9yID09IERS T1BfQ0FTQ0FERSkKKwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Vi LCAiICV7Y2FzY2FkZX1zIik7CisJCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJCQkJ CQkgImNhc2NhZGUiLCBqYnZTdHJpbmcsICJDQVNDQURFIik7CisJCQkJCX0KKworCQkJCQkvKiBX ZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8K KwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdWIuZGF0 YSk7CisJCQkJCXBmcmVlKGZtdFN1Yi5kYXRhKTsKKworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNl IEFUX0FkZEluZGV4OgorCQkJCXsKKwkJCQkJT2lkCQkJaWR4T2lkID0gc3ViLT5hZGRyZXNzLm9i amVjdElkOworCQkJCQlJbmRleFN0bXQgICppc3RtdCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkg PQorCQkJCQkJKEluZGV4U3RtdCAqKSBzdWJjbWQtPmRlZjsKKwkJCQkJUmVsYXRpb24JaWR4Owor CQkJCQljb25zdCBjaGFyICppZHhuYW1lOworCQkJCQlPaWQJCQljb25zdHJPaWQ7CisKKwkJCQkJ QXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgSW5kZXhTdG10KSk7CisJCQkJCUFzc2VydChpc3RtdC0+ aXNjb25zdHJhaW50KTsKKworCQkJCQlpZHggPSByZWxhdGlvbl9vcGVuKGlkeE9pZCwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJCQkJaWR4bmFtZSA9IFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlkeCk7 CisKKwkJCQkJY29uc3RyT2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRfb2lkKAorCQkJCQkJ CQkJCQkJCQkJY21kLT5kLmFsdGVyVGFibGUub2JqZWN0SWQsCisJCQkJCQkJCQkJCQkJCQlpZHhu YW1lLCBmYWxzZSk7CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBBREQgQ09OU1RSQUlOVCAl e25hbWV9SSAle2RlZmluaXRpb259cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUs IDQsCisJCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgIkFERCBDT05TVFJBSU5U ICV7bmFtZX1JICV7ZGVmaW5pdGlvbn1zIiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAi YWRkIGNvbnN0cmFpbnQiLAorCQkJCQkJCQkgIm5hbWUiLCBqYnZTdHJpbmcsIGlkeG5hbWUsCisJ CQkJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmluZywKKwkJCQkJCQkJIHBnX2dldF9jb25zdHJh aW50ZGVmX3N0cmluZyhjb25zdHJPaWQpKTsKKworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJCQlyZWxhdGlvbl9jbG9zZShpZHgsIEFjY2Vz c1NoYXJlTG9jayk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBBVF9BZGRDb25zdHJhaW50 OgorCQkJCXsKKwkJCQkJLyogWFhYIG5lZWQgdG8gc2V0IHRoZSAicmVjdXJzZSIgYml0IHNvbWV3 aGVyZT8gKi8KKwkJCQkJT2lkCQkJY29uc3RyT2lkID0gc3ViLT5hZGRyZXNzLm9iamVjdElkOwor CisJCQkJCS8qIFNraXAgYWRkaW5nIGNvbnN0cmFpbnQgZm9yIGluaGVyaXRzIHRhYmxlIHN1YiBj b21tYW5kICovCisJCQkJCWlmICghT2lkSXNWYWxpZChjb25zdHJPaWQpKQorCQkJCQkJY29udGlu dWU7CisKKwkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgQ29uc3RyYWludCkpOworCisJCQkJ CS8qCisJCQkJCSAqIFN5bnRheDogQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9u fXMKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgNCwKKwkJCQkJCQkJICJmbXQiLCBq YnZTdHJpbmcsCisJCQkJCQkJCSAiQUREIENPTlNUUkFJTlQgJXtuYW1lfUkgJXtkZWZpbml0aW9u fXMiLAorCQkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJhZGQgY29uc3RyYWludCIsCisJCQkJ CQkJCSAibmFtZSIsIGpidlN0cmluZywgZ2V0X2NvbnN0cmFpbnRfbmFtZShjb25zdHJPaWQpLAor CQkJCQkJCQkgImRlZmluaXRpb24iLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBwZ19nZXRfY29uc3Ry YWludGRlZl9zdHJpbmcoY29uc3RyT2lkKSk7CisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBB VF9BbHRlckNvbnN0cmFpbnQ6CisJCQkJeworCQkJCQlPaWQJCQljb25PaWQgPSBzdWItPmFkZHJl c3Mub2JqZWN0SWQ7CisJCQkJCUNvbnN0cmFpbnQgKmMgPSAoQ29uc3RyYWludCAqKSBzdWJjbWQt PmRlZjsKKworCQkJCQkvKiBJZiBubyBjb25zdHJhaW50IHdhcyBhbHRlcmVkLCBzaWxlbnRseSBz a2lwIGl0ICovCisJCQkJCWlmICghT2lkSXNWYWxpZChjb25PaWQpKQorCQkJCQkJYnJlYWs7CisK KwkJCQkJQXNzZXJ0KElzQShjLCBDb25zdHJhaW50KSk7CisKKwkJCQkJLyoKKwkJCQkJICogU3lu dGF4OiBBTFRFUiBDT05TVFJBSU5UICV7bmFtZX1JICV7ZGVmZXJyYWJsZX1zCisJCQkJCSAqICV7 aW5pdF9kZWZlcnJlZH1zCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDUsCisJCQkJ CQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgIkFMVEVSIENPTlNUUkFJTlQgJXtuYW1l fUkgJXtkZWZlcnJhYmxlfXMiCisJCQkJCQkJCSAiICV7aW5pdF9kZWZlcnJlZH1zIiwKKwkJCQkJ CQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWx0ZXIgY29uc3RyYWludCIsCisJCQkJCQkJCSAibmFt ZSIsIGpidlN0cmluZywgZ2V0X2NvbnN0cmFpbnRfbmFtZShjb25PaWQpLAorCQkJCQkJCQkgImRl ZmVycmFibGUiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBjLT5kZWZlcnJhYmxlID8gIkRFRkVSUkFC TEUiIDogIk5PVCBERUZFUlJBQkxFIiwKKwkJCQkJCQkJICJpbml0X2RlZmVycmVkIiwgamJ2U3Ry aW5nLAorCQkJCQkJCQkgYy0+aW5pdGRlZmVycmVkID8gIklOSVRJQUxMWSBERUZFUlJFRCIgOgor CQkJCQkJCQkgIklOSVRJQUxMWSBJTU1FRElBVEUiKTsKKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNl IEFUX1ZhbGlkYXRlQ29uc3RyYWludDoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBWQUxJREFU RSBDT05TVFJBSU5UICV7Y29uc3RyYWludH1JCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUs IDMsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJWQUxJREFURSBDT05TVFJB SU5UICV7Y29uc3RyYWludH1JIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJ2YWxpZGF0 ZSBjb25zdHJhaW50IiwKKwkJCQkJCQkgImNvbnN0cmFpbnQiLCBqYnZTdHJpbmcsIHN1YmNtZC0+ bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7 CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CisJCQkJeworCQkJCQlT dHJpbmdJbmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisK KwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBEUk9QIENPTlNUUkFJTlQgJXtpZl9leGlzdHN9cyAl e2NvbnN0cmFpbnR9SQorCQkJCQkgKiAle2Nhc2NhZGV9cworCQkJCQkgKi8KKwkJCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3ViLCAiRFJPUCBDT05TVFJBSU5UIik7CisJCQkJCW5ld19qc29u Yl9WQShzdGF0ZSwgMSwgInR5cGUiLCBqYnZTdHJpbmcsICJkcm9wIGNvbnN0cmFpbnQiKTsKKwor CQkJCQlpZiAoc3ViY21kLT5taXNzaW5nX29rKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdWIsICIgJXtpZl9leGlzdHN9cyIpOworCQkJCQkJbmV3X2pzb25iX1ZB KHN0YXRlLCAxLAorCQkJCQkJCQkJICJpZl9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBFWElTVFMi KTsKKwkJCQkJfQorCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2Nv bnN0cmFpbnR9SSIpOworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJCQkJCSAiY29u c3RyYWludCIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQlpZiAoc3ViY21kLT5i ZWhhdmlvciA9PSBEUk9QX0NBU0NBREUpCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoJmZtdFN1YiwgIiAle2Nhc2NhZGV9cyIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLCAiY2FzY2FkZSIsIGpidlN0cmluZywgIkNBU0NBREUiKTsKKwkJCQkJfQorCisJCQkJCS8q IFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhhdCAq LworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN1Yi5k YXRhKTsKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCisJCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCX0KKwkJCQlicmVhazsKKworCQkJY2Fz ZSBBVF9BbHRlckNvbHVtblR5cGU6CisJCQkJeworCQkJCQlUdXBsZURlc2MJdHVwZGVzYyA9IFJl bGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0OworCQkJCQlD b2x1bW5EZWYgICpkZWY7CisJCQkJCVN0cmluZ0luZm9EYXRhIGZtdFN1YjsKKworCQkJCQlpbml0 U3RyaW5nSW5mbygmZm10U3ViKTsKKworCQkJCQlhdHQgPSAmKHR1cGRlc2MtPmF0dHJzW3N1Yi0+ YWRkcmVzcy5vYmplY3RTdWJJZCAtIDFdKTsKKwkJCQkJZGVmID0gKENvbHVtbkRlZiAqKSBzdWJj bWQtPmRlZjsKKwkJCQkJQXNzZXJ0KElzQShkZWYsIENvbHVtbkRlZikpOworCisJCQkJCS8qCisJ CQkJCSAqIFN5bnRheDogQUxURVIgQ09MVU1OICV7Y29sdW1ufUkgU0VUIERBVEEgVFlQRQorCQkJ CQkgKiAle2RhdGF0eXBlfVQgJXtjb2xsYXRpb259cyAle3VzaW5nfXMgd2hlcmUgdXNpbmc6IFVT SU5HCisJCQkJCSAqICV7ZXhwcmVzc2lvbn1zCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZmbXRTdWIsICJBTFRFUiBDT0xVTU4gJXtjb2x1bW59SSIKKwkJCQkJCQkJCQkgICAi IFNFVCBEQVRBIFRZUEUgJXtkYXRhdHlwZX1UIik7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwg MiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiYWx0ZXIgY29sdW1uIHR5cGUiLAorCQkJ CQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQluZXdfanNv bmJfZm9yX3R5cGUoc3RhdGUsICJkYXRhdHlwZSIsCisJCQkJCQkJCQkgICBhdHQtPmF0dHR5cGlk LCBhdHQtPmF0dHR5cG1vZCk7CisKKwkJCQkJLyogQWRkIGEgQ09MTEFURSBjbGF1c2UsIGlmIG5l ZWRlZCAqLworCQkJCQlpZiAoT2lkSXNWYWxpZChhdHQtPmF0dGNvbGxhdGlvbikpCisJCQkJCXsK KwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2NvbGxhdGlvbn1zIik7 CisJCQkJCQlpbnNlcnRfY29sbGF0ZV9vYmplY3Qoc3RhdGUsICJjb2xsYXRpb24iLAorCQkJCQkJ CQkJCQkgICJDT0xMQVRFICV7bmFtZX1EIiwKKwkJCQkJCQkJCQkJICBDb2xsYXRpb25SZWxhdGlv bklkLAorCQkJCQkJCQkJCQkgIGF0dC0+YXR0Y29sbGF0aW9uLCAibmFtZSIpOworCQkJCQl9CisK KwkJCQkJLyoKKwkJCQkJICogSWYgdGhlcmUncyBhIFVTSU5HIGNsYXVzZSwgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQgcmFuCisJCQkJCSAqIGl0IHRocm91Z2ggdHJhbnNmb3JtRXhwciBhbmQgc3Rv cmVkIHRoZSByZXN1bHRpbmcgbm9kZQorCQkJCQkgKiBpbiBjb29rZWRfZGVmYXVsdCwgd2hpY2gg d2UgY2FuIHVzZSBoZXJlLgorCQkJCQkgKi8KKwkJCQkJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJ CQkJCXsKKwkJCQkJCURhdHVtCQlkZXBhcnNlZDsKKwkJCQkJCWNoYXIJICAgKmRlZmV4cHI7CisJ CQkJCQlMaXN0CSAgICpleHBycyA9IE5JTDsKKworCQkJCQkJZXhwcnMgPSBsYXBwZW5kKGV4cHJz LCBkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJCQkJCWRlZmV4cHIgPSBub2RlVG9TdHJpbmcoZGVm LT5jb29rZWRfZGVmYXVsdCk7CisJCQkJCQlkZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIo cGdfZ2V0X2V4cHIsCisJCQkJCQkJCQkJCQkJICAgQ1N0cmluZ0dldFRleHREYXR1bShkZWZleHBy KSwKKwkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7dXNpbmd9cyIpOworCQkJCQkJaW5zZXJ0X2pz b25iX2tleShzdGF0ZSwgInVzaW5nIik7CisJCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJ CQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJVU0lORyAle2V4cHJlc3Npb259cyIsCisJCQkJCQkJ CQkgImV4cHJlc3Npb24iLCBqYnZTdHJpbmcsCisJCQkJCQkJCQkgVGV4dERhdHVtR2V0Q1N0cmlu ZyhkZXBhcnNlZCkpOworCQkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisJCQkJCX0KKworCQkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28g YWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAx LCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdWIuZGF0YSk7CisKKwkJCQkJcGZyZWUoZm10U3ViLmRh dGEpOworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK KwkJCQl9CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfQ2hhbmdlT3duZXI6CisKKwkJCQkvKgor CQkJCSAqIFN5bnRheDogT1dORVIgVE8gJXtvd25lcn1JCisJCQkJICovCisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDMsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJPV05FUiBUTyAle293bmVyfUki LAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNoYW5nZSBvd25lciIsCisJCQkJCQkJICJv d25lciIsIGpidlN0cmluZywKKwkJCQkJCQkgZ2V0X3JvbGVzcGVjX25hbWUoc3ViY21kLT5uZXdv d25lcikpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwp OworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0NsdXN0ZXJPbjoKKworCQkJCS8qCisJCQkJICog U3ludGF4OiBDTFVTVEVSIE9OICV7aW5kZXh9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiQ0xVU1RFUiBPTiAle2luZGV4fUkiLAor CQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNsdXN0ZXIgb24iLAorCQkJCQkJCSAiaW5kZXgi LCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKworCQkJY2FzZSBBVF9Ecm9wQ2x1 c3RlcjoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBTRVQgV0lUSE9VVCBDTFVTVEVSCisJCQkJ ICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsK KwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJT RVQgV0lUSE9VVCBDTFVTVEVSIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJzZXQgd2l0 aG91dCBjbHVzdGVyIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfU2V0TG9nZ2VkOgorCisJCQkJLyoK KwkJCQkgKiBTeW50YXg6IFNFVCBMT0dHRUQKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgm c3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwg MiwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIlNFVCBMT0dHRUQiLAorCQkJCQkJCSAidHlw ZSIsIGpidlN0cmluZywgInNldCBsb2dnZWQiKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9TZXRVbkxv Z2dlZDoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBTRVQgVU5MT0dHRUQKKwkJCQkgKi8KKwkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5l d19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIlNFVCBVTkxP R0dFRCIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAic2V0IHVubG9nZ2VkIik7CisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7 CisKKwkJCWNhc2UgQVRfRHJvcE9pZHM6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogU0VUIFdJ VEhPVVQgT0lEUworCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10 IiwgamJ2U3RyaW5nLCAiU0VUIFdJVEhPVVQgT0lEUyIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAic2V0IHdpdGhvdXQgb2lkcyIpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX1NldEFjY2Vzc01l dGhvZDoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBTRVQgQUNDRVNTIE1FVEhPRCAle2FjY2Vz c19tZXRob2R9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10 IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiU0VUIEFDQ0VTUyBNRVRIT0QgJXthY2Nlc3NfbWV0aG9k fUkiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCBhY2Nlc3MgbWV0aG9kIiwKKwkJ CQkJCQkgImFjY2Vzc19tZXRob2QiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisK KwkJCWNhc2UgQVRfU2V0VGFibGVTcGFjZToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBTRVQg VEFCTEVTUEFDRSAle3RhYmxlc3BhY2V9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAz LAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiU0VUIFRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNl fUkiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgInNldCB0YWJsZXNwYWNlIiwKKwkJCQkJ CQkgInRhYmxlc3BhY2UiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UgQVRfU2V0UmVsT3B0aW9uczoKKwkJCWNhc2UgQVRfUmVzZXRSZWxPcHRpb25zOgorCisJCQkJ LyoKKwkJCQkgKiBTeW50YXg6IFNFVHxSRVNFVCAoJXtvcHRpb25zOiwgfXMpCisJCQkJICovCisJ CQkJZGVwYXJzZV9SZWxTZXRPcHRpb25zX3RvSnNvbmIoc3RhdGUsIHN1YmNtZCk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlVHJpZzoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBF TkFCTEUgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAz LAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgJXt0cmlnZ2VyfUki LAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSB0cmlnZ2VyIiwKKwkJCQkJCQkg InRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf RW5hYmxlQWx3YXlzVHJpZzoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgQUxXQVlT IFRSSUdHRVIgJXt0cmlnZ2VyfUkKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJ CQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkVOQUJMRSBBTFdBWVMgVFJJR0dFUiAl e3RyaWdnZXJ9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIGFsd2F5cyB0 cmlnZ2VyIiwKKwkJCQkJCQkgInRyaWdnZXIiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJ CQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJl YWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUmVwbGljYVRyaWc6CisKKwkJCQkvKgorCQkJCSAqIFN5 bnRheDogRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAqLworCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLAorCQkJCQkJCSAiRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiAle3RyaWdnZXJ9SSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3Ry aW5nLCAiZW5hYmxlIHJlcGxpY2EgdHJpZ2dlciIsCisJCQkJCQkJICJ0cmlnZ2VyIiwgamJ2U3Ry aW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmlnOgorCisJ CQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUgVFJJR0dFUiAle3RyaWdnZXJ9SQorCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRElT QUJMRSBUUklHR0VSICV7dHJpZ2dlcn1JIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJk aXNhYmxlIHRyaWdnZXIiLAorCQkJCQkJCSAidHJpZ2dlciIsIGpidlN0cmluZywgc3ViY21kLT5u YW1lKTsKKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsK KwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVUcmlnQWxsOgorCisJCQkJLyoKKwkJCQkg KiBTeW50YXg6IEVOQUJMRSBUUklHR0VSIEFMTAorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgQUxMIiwKKwkJ CQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJlbmFibGUgdHJpZ2dlciBhbGwiKTsKKwkJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBBVF9EaXNhYmxlVHJpZ0FsbDoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBESVNB QkxFIFRSSUdHRVIgQUxMCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf QkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJ ICJmbXQiLCBqYnZTdHJpbmcsICJESVNBQkxFIFRSSUdHRVIgQUxMIiwKKwkJCQkJCQkgInR5cGUi LCBqYnZTdHJpbmcsICJkaXNhYmxlIHRyaWdnZXIgYWxsIik7CisJCQkJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRf RW5hYmxlVHJpZ1VzZXI6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogRU5BQkxFIFRSSUdHRVIg VVNFUgorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2 U3RyaW5nLCAiRU5BQkxFIFRSSUdHRVIgVVNFUiIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiZW5hYmxlIHRyaWdnZXIgdXNlciIpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVUcmln VXNlcjoKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBESVNBQkxFIFRSSUdHRVIgVVNFUgorCQkJ CSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAi RElTQUJMRSBUUklHR0VSIFVTRVIiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImRpc2Fi bGUgdHJpZ2dlciB1c2VyIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxlUnVsZToKKworCQkJ CS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgUlVMRSAle3J1bGV9SQorCQkJCSAqLworCQkJCXB1 c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFJVTEUg JXtydWxlfUkiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImVuYWJsZSBydWxlIiwKKwkJ CQkJCQkgInJ1bGUiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRW5hYmxlQWx3YXlzUnVsZToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgQUxX QVlTIFJVTEUgJXtydWxlfUkKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkJ CQkgImZtdCIsIGpidlN0cmluZywgIkVOQUJMRSBBTFdBWVMgUlVMRSAle3J1bGV9SSIsCisJCQkJ CQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIGFsd2F5cyBydWxlIiwKKwkJCQkJCQkgInJ1 bGUiLCBqYnZTdHJpbmcsIHN1YmNtZC0+bmFtZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRl LCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRW5hYmxl UmVwbGljYVJ1bGU6CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogRU5BQkxFIFJFUExJQ0EgUlVM RSAle3J1bGV9SQorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lO X09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10 IiwgamJ2U3RyaW5nLCAiRU5BQkxFIFJFUExJQ0EgUlVMRSAle3J1bGV9SSIsCisJCQkJCQkJICJ0 eXBlIiwgamJ2U3RyaW5nLCAiZW5hYmxlIHJlcGxpY2EgcnVsZSIsCisJCQkJCQkJICJydWxlIiwg amJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Rpc2FibGVSdWxl OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUgUlVMRSAle3J1bGV9SQorCQkJCSAq LworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiRElT QUJMRSBSVUxFICV7cnVsZX1JIiwKKwkJCQkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJkaXNhYmxl IHJ1bGUiLAorCQkJCQkJCSAicnVsZSIsIGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKwkJCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsK KworCQkJY2FzZSBBVF9BZGRJbmhlcml0OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IElOSEVS SVQgJXtwYXJlbnR9RAorCQkJCSAqLworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAi Zm10IiwgamJ2U3RyaW5nLCAiSU5IRVJJVCAle3BhcmVudH1EIiwKKwkJCQkJCQkgInR5cGUiLCBq YnZTdHJpbmcsICJpbmhlcml0Iik7CisJCQkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0 ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCSAgc3ViLT5hZGRyZXNzLm9iamVjdElk LCAicGFyZW50IiwgdHJ1ZSk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09C SkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfRHJvcEluaGVyaXQ6CisKKwkJ CQkvKgorCQkJCSAqIFN5bnRheDogTk8gSU5IRVJJVCAle3BhcmVudH1ECisJCQkJICovCisJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdf anNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJOTyBJTkhFUklU ICV7cGFyZW50fUQiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywgImRyb3AgaW5oZXJpdCIp OworCQkJCW5ld19qc29uYl9mb3JfcXVhbG5hbWVfaWQoc3RhdGUsIFJlbGF0aW9uUmVsYXRpb25J ZCwKKwkJCQkJCQkJCQkgIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwgInBhcmVudCIsIHRydWUpOwor CQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJy ZWFrOworCisJCQljYXNlIEFUX0FkZE9mOgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IE9GICV7 dHlwZV9vZn1UCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQi LCBqYnZTdHJpbmcsICJPRiAle3R5cGVfb2Z9VCIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5n LCAiYWRkIG9mIik7CisJCQkJbmV3X2pzb25iX2Zvcl90eXBlKHN0YXRlLCAidHlwZV9vZiIsIHN1 Yi0+YWRkcmVzcy5vYmplY3RJZCwgLTEpOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCQkJCWJyZWFrOworCisJCQljYXNlIEFUX0Ryb3BPZjoKKwor CQkJCS8qCisJCQkJICogU3ludGF4OiBOT1QgT0YKKwkJCQkgKi8KKwkJCQlwdXNoSnNvbmJWYWx1 ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShzdGF0 ZSwgMiwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIk5PVCBPRiIsCisJCQkJCQkJICJ0eXBl IiwgamJ2U3RyaW5nLCAibm90IG9mIik7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJf RU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgQVRfUmVwbGljYUlkZW50 aXR5OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IFJFUExJQ0EgSURFTlRJVFkgJXtpZGVudH1z CisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBO VUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZTdHJp bmcsCisJCQkJCQkJICJSRVBMSUNBIElERU5USVRZICV7aWRlbnR9cyIsCisJCQkJCQkJICJ0eXBl IiwgamJ2U3RyaW5nLCAicmVwbGljYSBpZGVudGl0eSIpOworCQkJCXN3aXRjaCAoKChSZXBsaWNh SWRlbnRpdHlTdG10ICopIHN1YmNtZC0+ZGVmKS0+aWRlbnRpdHlfdHlwZSkKKwkJCQl7CisJCQkJ CWNhc2UgUkVQTElDQV9JREVOVElUWV9ERUZBVUxUOgorCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLCAiaWRlbnQiLCBqYnZTdHJpbmcsICJERUZBVUxUIik7CisJCQkJCQlicmVhazsKKwkJCQkJ Y2FzZSBSRVBMSUNBX0lERU5USVRZX0ZVTEw6CisJCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEs ICJpZGVudCIsIGpidlN0cmluZywgIkZVTEwiKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJF UExJQ0FfSURFTlRJVFlfTk9USElORzoKKwkJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImlk ZW50IiwgamJ2U3RyaW5nLCAiTk9USElORyIpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUkVQ TElDQV9JREVOVElUWV9JTkRFWDoKKwkJCQkJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJpZGVu dCIpOworCQkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCQkJICJmbXQiLCBqYnZT dHJpbmcsICJVU0lORyBJTkRFWCAle2luZGV4fUkiLAorCQkJCQkJCQkJICJpbmRleCIsIGpidlN0 cmluZywKKwkJCQkJCQkJCSAoKFJlcGxpY2FJZGVudGl0eVN0bXQgKikgc3ViY21kLT5kZWYpLT5u YW1lKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBBVF9FbmFibGVSb3dT ZWN1cml0eToKKworCQkJCS8qCisJCQkJICogU3ludGF4OiBFTkFCTEUgUk9XIExFVkVMIFNFQ1VS SVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJCQkJICJmbXQiLCBqYnZT dHJpbmcsCisJCQkJCQkJICJFTkFCTEUgUk9XIExFVkVMIFNFQ1VSSVRZIiwKKwkJCQkJCQkgInR5 cGUiLCBqYnZTdHJpbmcsICJlbmFibGUgcm93IHNlY3VyaXR5Iik7CisJCQkJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2Ug QVRfRGlzYWJsZVJvd1NlY3VyaXR5OgorCisJCQkJLyoKKwkJCQkgKiBTeW50YXg6IERJU0FCTEUg Uk9XIExFVkVMIFNFQ1VSSVRZCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCQkJICJESVNBQkxFIFJPVyBMRVZFTCBTRUNVUklU WSIsCisJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZGlzYWJsZSByb3cgc2VjdXJpdHkiKTsK KwkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQli cmVhazsKKworCQkJY2FzZSBBVF9BdHRhY2hQYXJ0aXRpb246CisJCQkJeworCQkJCQlTdHJpbmdJ bmZvRGF0YSBmbXRTdWI7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJ LyoKKwkJCQkJICogU3ludGF4OiBBVFRBQ0ggUEFSVElUSU9OICV7cGFydGl0aW9uX2lkZW50aXR5 fUQKKwkJCQkJICogJXtwYXJ0aXRpb25fYm91bmR9cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3ViLCAiQVRUQUNIIFBBUlRJVElPTiIKKwkJCQkJCQkJCQkgICAiICV7 cGFydGl0aW9uX2lkZW50aXR5fUQiKTsKKworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJ0 eXBlIiwgamJ2U3RyaW5nLAorCQkJCQkJCQkgImF0dGFjaCBwYXJ0aXRpb24iKTsKKwkJCQkJbmV3 X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJ CQkJCQkgIHN1Yi0+YWRkcmVzcy5vYmplY3RJZCwKKwkJCQkJCQkJCQkJICAicGFydGl0aW9uX2lk ZW50aXR5IiwgdHJ1ZSk7CisKKwkJCQkJaWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoJmZtdFN1YiwgIiAle3BhcnRpdGlvbl9ib3VuZH1zIik7CisJCQkJCQluZXdfanNvbmJfVkEo c3RhdGUsIDEsCisJCQkJCQkJCQkgInBhcnRpdGlvbl9ib3VuZCIsIGpidlN0cmluZywKKwkJCQkJ CQkJCSBSZWxhdGlvbkdldFBhcnRpdGlvbkJvdW5kKHN1Yi0+YWRkcmVzcy5vYmplY3RJZCkpOwor CQkJCQl9CisKKwkJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBl bGVtZW50IGZvciB0aGF0ICovCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpi dlN0cmluZywgZm10U3ViLmRhdGEpOworCQkJCQlwZnJlZShmbXRTdWIuZGF0YSk7CisKKwkJCQkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisKKwkJCQkJYnJl YWs7CisJCQkJfQorCQkJY2FzZSBBVF9EZXRhY2hQYXJ0aXRpb246CisJCQkJeworCQkJCQlQYXJ0 aXRpb25DbWQgKmNtZDsKKwkJCQkJU3RyaW5nSW5mb0RhdGEgZm10U3ViOworCisJCQkJCWluaXRT dHJpbmdJbmZvKCZmbXRTdWIpOworCisJCQkJCUFzc2VydChJc0Eoc3ViY21kLT5kZWYsIFBhcnRp dGlvbkNtZCkpOworCQkJCQljbWQgPSAoUGFydGl0aW9uQ21kICopIHN1YmNtZC0+ZGVmOworCisJ CQkJCS8qCisJCQkJCSAqIFN5bnRheDogREVUQUNIIFBBUlRJVElPTiAle3BhcnRpdGlvbl9pZGVu dGl0eX1ECisJCQkJCSAqICV7Y29uY3VycmVudH1zCisJCQkJCSAqLworCQkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZmbXRTdWIsICJERVRBQ0ggUEFSVElUSU9OIgorCQkJCQkJCQkJCSAgICIgJXtw YXJ0aXRpb25faWRlbnRpdHl9RCIpOworCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgInR5 cGUiLCBqYnZTdHJpbmcsICJkZXRhY2ggcGFydGl0aW9uIik7CisJCQkJCW5ld19qc29uYl9mb3Jf cXVhbG5hbWVfaWQoc3RhdGUsIFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkJICBzdWIt PmFkZHJlc3Mub2JqZWN0SWQsCisJCQkJCQkJCQkJCSAgInBhcnRpdGlvbl9pZGVudGl0eSIsIHRy dWUpOworCQkJCQlpZiAoY21kLT5jb25jdXJyZW50KQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdWIsICIgJXtjb25jdXJyZW50fXMiKTsKKwkJCQkJCW5ld19qc29u Yl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkJCSAiY29uY3VycmVudCIsIGpidlN0cmluZywgIkNPTkNV UlJFTlRMWSIpOworCQkJCQl9CisKKwkJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNv IGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwg MSwgImZtdCIsIGpidlN0cmluZywgZm10U3ViLmRhdGEpOworCQkJCQlwZnJlZShmbXRTdWIuZGF0 YSk7CisKKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7 CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCWNhc2UgQVRfRGV0YWNoUGFydGl0aW9uRmluYWxpemU6 CisKKwkJCQkvKgorCQkJCSAqIFN5bnRheDogREVUQUNIIFBBUlRJVElPTiAle3BhcnRpdGlvbl9p ZGVudGl0eX1EIEZJTkFMSVpFCisJCQkJICovCisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDIsCisJCQkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsICJERVRBQ0ggUEFSVElUSU9OIgorCQkJCQkJCSAiICV7cGFy dGl0aW9uX2lkZW50aXR5fUQgRklOQUxJWkUiLAorCQkJCQkJCSAidHlwZSIsIGpidlN0cmluZywg ImRldGFjaCBwYXJ0aXRpb24gZmluYWxpemUiKTsKKworCQkJCW5ld19qc29uYl9mb3JfcXVhbG5h bWVfaWQoc3RhdGUsIFJlbGF0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCQkgIHN1Yi0+YWRkcmVz cy5vYmplY3RJZCwKKwkJCQkJCQkJCQkgICJwYXJ0aXRpb25faWRlbnRpdHkiLCB0cnVlKTsKKwkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQlicmVh azsKKwkJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CisJCQkJeworCQkJCQlBdHRyTnVtYmVyCWF0dG51 bTsKKwkJCQkJT2lkCQkJc2VxX3JlbGlkOworCQkJCQlDb2x1bW5EZWYgICpjb2xkZWYgPSAoQ29s dW1uRGVmICopIHN1YmNtZC0+ZGVmOworCQkJCQlTdHJpbmdJbmZvRGF0YSBmbXRTdWI7CisKKwkJ CQkJaW5pdFN0cmluZ0luZm8oJmZtdFN1Yik7CisKKwkJCQkJLyoKKwkJCQkJICogU3ludGF4OiBB TFRFUiBDT0xVTU4gJXtjb2x1bW59SSAle2RlZmluaXRpb259cyB3aGVyZQorCQkJCQkgKiBkZWZp bml0aW9uIDogQUREICV7aWRlbnRpdHlfY29sdW1ufXMgd2hlcmUKKwkJCQkJICogaWRlbnRpdHlf Y29sdW1uOiAle2lkZW50aXR5X3R5cGV9cyAoICV7c2VxX2RlZmluaXRpb246CisJCQkJCSAqIH1z ICkKKwkJCQkJICovCisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVD VCwgTlVMTCk7CisKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiQUxURVIg Q09MVU1OICV7Y29sdW1ufUkiKTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJ CQkgInR5cGUiLCBqYnZTdHJpbmcsICJhZGQgaWRlbnRpdHkiLAorCQkJCQkJCQkgImNvbHVtbiIs IGpidlN0cmluZywgc3ViY21kLT5uYW1lKTsKKworCQkJCQlhdHRudW0gPSBnZXRfYXR0bnVtKFJl bGF0aW9uR2V0UmVsaWQocmVsKSwgc3ViY21kLT5uYW1lKTsKKwkJCQkJc2VxX3JlbGlkID0gZ2V0 SWRlbnRpdHlTZXF1ZW5jZShSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJCQkJCQkJYXR0 bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNWYWxpZChzZXFfcmVsaWQpKQorCQkJCQl7CisK KwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2RlZmluaXRpb259cyIp OworCQkJCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmluaXRpb24iKTsKKworCQkJCQkJ LyogaW5zZXJ0IGRlZmluaXRpb24ncyB2YWx1ZSBub3cgKi8KKwkJCQkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQkJCQluZXdfanNvbmJfVkEoc3Rh dGUsIDEsCisJCQkJCQkJCQkgImZtdCIsIGpidlN0cmluZywgIkFERCAle2lkZW50aXR5X2NvbHVt bn1zIik7CisKKwkJCQkJCS8qIGluc2VydCBpZGVudGl0eV9jb2x1bW4gKi8KKwkJCQkJCWRlcGFy c2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihzdGF0ZSwgImlkZW50aXR5X2NvbHVtbiIsCisJCQkJ CQkJCQkJCQkJICAgc2VxX3JlbGlkLAorCQkJCQkJCQkJCQkJCSAgIGNvbGRlZi0+aWRlbnRpdHks IGZhbHNlKTsKKworCQkJCQkJLyogbWFyayBkZWZpbml0aW9uJ3MgdmFsdWUgZW5kICovCisJCQkJ CQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwkJCQkJfQor CisJCQkJCS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBm b3IgdGhhdCAqLworCQkJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcs IGZtdFN1Yi5kYXRhKTsKKworCQkJCQlwZnJlZShmbXRTdWIuZGF0YSk7CisKKwkJCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJfQorCQkJCWJyZWFr OworCQkJY2FzZSBBVF9TZXRJZGVudGl0eToKKwkJCQl7CisJCQkJCURlZkVsZW0gICAgKmRlZmVs OworCQkJCQljaGFyCQlpZGVudGl0eSA9IDA7CisJCQkJCUF0dHJOdW1iZXIJYXR0bnVtOworCQkJ CQlPaWQJCQlzZXFfcmVsaWQ7CisJCQkJCVN0cmluZ0luZm9EYXRhIGZtdFN1YjsKKworCQkJCQlp bml0U3RyaW5nSW5mbygmZm10U3ViKTsKKworCQkJCQkvKgorCQkJCQkgKiBTeW50YXg6IEFMVEVS IENPTFVNTiAle2NvbHVtbn1JICV7ZGVmaW5pdGlvbn1zIHdoZXJlCisJCQkJCSAqIGRlZmluaXRp b24gOiAle2lkZW50aXR5X3R5cGV9cyAoICV7c2VxX2RlZmluaXRpb246IH1zICkKKwkJCQkJICov CisJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisK KwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiQUxURVIgQ09MVU1OICV7Y29s dW1ufUkiKTsKKwkJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkJCQkgInR5cGUiLCBq YnZTdHJpbmcsICJzZXQgaWRlbnRpdHkiLAorCQkJCQkJCQkgImNvbHVtbiIsIGpidlN0cmluZywg c3ViY21kLT5uYW1lKTsKKworCQkJCQlpZiAoc3ViY21kLT5kZWYpCisJCQkJCXsKKwkJCQkJCUxp c3QJICAgKmRlZiA9IChMaXN0ICopIHN1YmNtZC0+ZGVmOworCisJCQkJCQlBc3NlcnQoSXNBKHN1 YmNtZC0+ZGVmLCBMaXN0KSk7CisKKwkJCQkJCWRlZmVsID0gbGluaXRpYWxfbm9kZShEZWZFbGVt LCBkZWYpOworCQkJCQkJaWRlbnRpdHkgPSBkZWZHZXRJbnQzMihkZWZlbCk7CisJCQkJCX0KKwor CQkJCQlhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgc3ViY21kLT5u YW1lKTsKKwkJCQkJc2VxX3JlbGlkID0gZ2V0SWRlbnRpdHlTZXF1ZW5jZShSZWxhdGlvbkdldFJl bGlkKHJlbCksCisJCQkJCQkJCQkJCQkJYXR0bnVtLCB0cnVlKTsKKworCQkJCQlpZiAoT2lkSXNW YWxpZChzZXFfcmVsaWQpKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdWIsICIgJXtkZWZpbml0aW9ufXMiKTsKKwkJCQkJCWRlcGFyc2VfQ29sdW1uSWRlbnRpdHlf dG9Kc29uYihzdGF0ZSwgImRlZmluaXRpb24iLAorCQkJCQkJCQkJCQkJCSAgIHNlcV9yZWxpZCwg aWRlbnRpdHksCisJCQkJCQkJCQkJCQkJICAgdHJ1ZSk7CisJCQkJCX0KKworCQkJCQkvKiBXZSBo YXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwkJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdWIuZGF0YSk7 CisKKwkJCQkJcGZyZWUoZm10U3ViLmRhdGEpOworCQkJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJCQlicmVhazsKKwkJCQl9CisJCQljYXNlIEFU X0Ryb3BJZGVudGl0eToKKwkJCQl7CisJCQkJCVN0cmluZ0luZm9EYXRhIGZtdFN1YjsKKworCQkJ CQlpbml0U3RyaW5nSW5mbygmZm10U3ViKTsKKworCQkJCQkvKgorCQkJCQkgKiBTeW50YXg6IEFM VEVSIENPTFVNTiAle2NvbHVtbn1JIERST1AgSURFTlRJVFkKKwkJCQkJICogJXtpZl9leGlzdHN9 cworCQkJCQkgKi8KKwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiQUxURVIgQ09M VU1OIgorCQkJCQkJCQkJCSAgICIgJXtjb2x1bW59SSBEUk9QIElERU5USVRZIik7CisJCQkJCW5l d19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCQkJICJ0eXBlIiwgamJ2U3RyaW5nLCAiZHJvcCBp ZGVudGl0eSIsCisJCQkJCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJjbWQtPm5hbWUpOwor CisJCQkJCWlmIChzdWJjbWQtPm1pc3Npbmdfb2spCisJCQkJCXsKKwkJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN1YiwgIiAle2lmX2V4aXN0c31zIik7CisJCQkJCQluZXdfanNvbmJf VkEoc3RhdGUsIDEsCisJCQkJCQkJCQkgImlmX2V4aXN0cyIsIGpidlN0cmluZywgIklGIEVYSVNU UyIpOworCQkJCQl9CisKKwkJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBq c29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZt dCIsIGpidlN0cmluZywgZm10U3ViLmRhdGEpOworCQkJCQlwZnJlZShmbXRTdWIuZGF0YSk7CisK KwkJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJ CWJyZWFrOworCQkJCX0KKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhXQVJOSU5HLCAidW5zdXBwb3J0 ZWQgYWx0ZXIgdGFibGUgc3VidHlwZSAlZCIsCisJCQkJCSBzdWJjbWQtPnN1YnR5cGUpOworCQkJ CWJyZWFrOworCQl9CisJfQorCisJdGFibGVfY2xvc2UocmVsLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJLyogaWYgc3ViY21kcyBhcnJheSBpcyBub3QgZXZlbiBjcmVhdGVkIG9yIGhhcyAwIGVsZW1l bnRzLCByZXR1cm4gTlVMTCAqLworCWlmICghc3ViQ21kQXJyYXkgfHwKKwkJKChzdGF0ZS0+Y29u dFZhbC50eXBlID09IGpidkFycmF5KSAmJgorCQkgKHN0YXRlLT5jb250VmFsLnZhbC5hcnJheS5u RWxlbXMgPT0gMCkpKQorCXsKKwkJcGZyZWUoZm10U3RyLmRhdGEpOworCQlyZXR1cm4gTlVMTDsK Kwl9CisKKwkvKiBNYXJrIHRoZSBlbmQgb2Ygc3ViY21kcyBhcnJheSAqLworCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7CisKKwkvKiBXZSBoYXZlIGZ1bGwgZm10 IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwluZXdfanNvbmJfVkEo c3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5kYXRhKTsKKworCXBmcmVlKGZtdFN0 ci5kYXRhKTsKKworCS8qIE1hcmsgdGhlIGVuZCBvZiBST09UIG9iamVjdCAqLworCXZhbHVlID0g cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisKKwlyZXR1cm4g SnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCiAvKgogICogRGVwYXJzZSBhIENyZWF0ZVNl cVN0bXQuCiAgKgpAQCAtMTg2MiwxMiArMzI5MCwxMiBAQCBkZXBhcnNlX0NyZWF0ZVNlcVN0bXQo T2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCiAJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfQkVHSU5fQVJSQVksIE5VTEwpOwogCiAJLyogRGVmaW5pdGlvbiBlbGVtZW50cyAqLwotCWRl cGFyc2VfU2VxX0NhY2hlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX0N5 Y2xlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX0luY3JlbWVudEJ5X3Rv SnNvbmIoc3RhdGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX01pbnZhbHVlX3RvSnNvbmIoc3Rh dGUsIHNlcWZvcm0pOwotCWRlcGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoc3RhdGUsIHNlcWZv cm0pOwotCWRlcGFyc2VfU2VxX1N0YXJ0d2l0aF90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwlk ZXBhcnNlX1NlcV9DYWNoZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CisJZGVwYXJz ZV9TZXFfQ3ljbGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOworCWRlcGFyc2VfU2Vx X0luY3JlbWVudEJ5X3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsKKwlkZXBhcnNlX1Nl cV9NaW52YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CisJZGVwYXJzZV9TZXFf TWF4dmFsdWVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOworCWRlcGFyc2VfU2VxX1N0 YXJ0d2l0aF90b0pzb25iKHN0YXRlLCBzZXFmb3JtLCBmYWxzZSk7CiAJZGVwYXJzZV9TZXFfUmVz dGFydF90b0pzb25iKHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOwogCWRlcGFyc2VfU2Vx X0FzX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0pOwogCS8qIFdlIHB1cnBvc2VmdWxseSBkbyBub3Qg ZW1pdCBPV05FRCBCWSBoZXJlICovCkBAIC0xOTQ2LDIxICszMzc0LDIxIEBAIGRlcGFyc2VfQWx0 ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogCQlEZWZFbGVtICAgICpl bGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOwogCiAJCWlmIChzdHJjbXAoZWxlbS0+ZGVm bmFtZSwgImNhY2hlIikgPT0gMCkKLQkJCWRlcGFyc2VfU2VxX0NhY2hlX3RvSnNvbmIoc3RhdGUs IHNlcWZvcm0pOworCQkJZGVwYXJzZV9TZXFfQ2FjaGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwg ZmFsc2UpOwogCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImN5Y2xlIikgPT0gMCkK LQkJCWRlcGFyc2VfU2VxX0N5Y2xlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0pOworCQkJZGVwYXJz ZV9TZXFfQ3ljbGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFsc2UpOwogCQllbHNlIGlmIChz dHJjbXAoZWxlbS0+ZGVmbmFtZSwgImluY3JlbWVudCIpID09IDApCi0JCQlkZXBhcnNlX1NlcV9J bmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJCWRlcGFyc2VfU2VxX0luY3Jl bWVudEJ5X3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsKIAkJZWxzZSBpZiAoc3RyY21w KGVsZW0tPmRlZm5hbWUsICJtaW52YWx1ZSIpID09IDApCi0JCQlkZXBhcnNlX1NlcV9NaW52YWx1 ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJCWRlcGFyc2VfU2VxX01pbnZhbHVlX3RvSnNv bmIoc3RhdGUsIHNlcWZvcm0sIGZhbHNlKTsKIAkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5h bWUsICJtYXh2YWx1ZSIpID09IDApCi0JCQlkZXBhcnNlX1NlcV9NYXh2YWx1ZV90b0pzb25iKHN0 YXRlLCBzZXFmb3JtKTsKKwkJCWRlcGFyc2VfU2VxX01heHZhbHVlX3RvSnNvbmIoc3RhdGUsIHNl cWZvcm0sIGZhbHNlKTsKIAkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJzdGFydCIp ID09IDApCi0JCQlkZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7 CisJCQlkZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSwgZmFsc2Up OwogCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInJlc3RhcnQiKSA9PSAwKQogCQkJ ZGVwYXJzZV9TZXFfUmVzdGFydF90b0pzb25iKHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUp OwogCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgIm93bmVkX2J5IikgPT0gMCkKLQkJ CWRlcGFyc2VfU2VxX093bmVkQnlfdG9Kc29uYihzdGF0ZSwgb2JqZWN0SWQpOworCQkJZGVwYXJz ZV9TZXFfT3duZWRCeV90b0pzb25iKHN0YXRlLCBvYmplY3RJZCwgZmFsc2UpOwogCQllbHNlIGlm IChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImFzIikgPT0gMCkKIAkJCWRlcGFyc2VfU2VxX0FzX3Rv SnNvbmIoc3RhdGUsIHNlcWZvcm0pOwogCQllbHNlCkBAIC0xOTc2LDYgKzM0MDQsMjA5IEBAIGRl cGFyc2VfQWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogCXJldHVy biBKc29uYlZhbHVlVG9Kc29uYih2YWx1ZSk7CiB9CiAKKy8qCisgKiBEZXBhcnNlIGEgUmVuYW1l U3RtdC4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgJXtvYmp0eXBlfXMgJXtpZl9l eGlzdHN9cyAle2lkZW50aXR5fUQgUkVOQU1FIFRPICV7bmV3bmFtZX1JCisgKiBPUgorICogQUxU RVIgVEFCTEUgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT05TVFJBSU5UICV7b2xkbmFt ZX1JCisgKiBUTyAle25ld25hbWV9SQorICogT1IKKyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWZf ZXhpc3RzfXMgJXtvbmx5fXMgJXtpZGVudGl0eX1EIFJFTkFNRSBDT0xVTU4KKyAqICV7Y29sbmFt ZX1JIFRPICV7bmV3bmFtZX1JICV7Y2FzY2FkZX1zCisgKi8KKworc3RhdGljIEpzb25iICoKK2Rl cGFyc2VfUmVuYW1lU3RtdChPYmplY3RBZGRyZXNzIGFkZHJlc3MsIE5vZGUgKnBhcnNldHJlZSkK K3sKKwlSZW5hbWVTdG10ICpub2RlID0gKFJlbmFtZVN0bXQgKikgcGFyc2V0cmVlOworCVJlbGF0 aW9uCXJlbGF0aW9uOworCU9pZAkJCXNjaGVtYUlkOworCUpzb25iUGFyc2VTdGF0ZSAqc3RhdGUg PSBOVUxMOworCUpzb25iVmFsdWUgKnZhbHVlOworCisJLyoKKwkgKiBJbiBhbiBBTFRFUiAuLiBS RU5BTUUgY29tbWFuZCwgd2UgZG9uJ3QgaGF2ZSB0aGUgb3JpZ2luYWwgbmFtZSBvZiB0aGUKKwkg KiBvYmplY3QgaW4gc3lzdGVtIGNhdGFsb2dzOiBzaW5jZSB3ZSBpbnNwZWN0IHRoZW0gYWZ0ZXIg dGhlIGNvbW1hbmQgaGFzCisJICogZXhlY3V0ZWQsIHRoZSBvbGQgbmFtZSBpcyBhbHJlYWR5IGdv bmUuICBUaGVyZWZvcmUsIHdlIGV4dHJhY3QgaXQgZnJvbQorCSAqIHRoZSBwYXJzZSBub2RlLiAg Tm90ZSB3ZSBzdGlsbCBleHRyYWN0IHRoZSBzY2hlbWEgbmFtZSBmcm9tIHRoZSBjYXRhbG9nCisJ ICogKGl0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBwYXJzZSBub2RlKTsgaXQgY2Fubm90 IHBvc3NpYmx5IGhhdmUKKwkgKiBjaGFuZ2VkIGFueXdheS4KKwkgKi8KKwlzd2l0Y2ggKG5vZGUt PnJlbmFtZVR5cGUpCisJeworCQljYXNlIE9CSkVDVF9UQUJMRToKKwkJCXJlbGF0aW9uID0gcmVs YXRpb25fb3BlbihhZGRyZXNzLm9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCQkJc2NoZW1h SWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7CisKKwkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJCQluZXdfanNvbmJfVkEoc3RhdGUs IDQsCisJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCSAiQUxURVIgJXtvYmp0eXBlfXMg JXtpZl9leGlzdHN9cyAle2lkZW50aXR5fUQiCisJCQkJCQkgIiBSRU5BTUUgVE8gJXtuZXduYW1l fUkiLAorCQkJCQkJICJvYmp0eXBlIiwgamJ2U3RyaW5nLAorCQkJCQkJIHN0cmluZ2lmeV9vYmp0 eXBlKG5vZGUtPnJlbmFtZVR5cGUpLAorCQkJCQkJICJpZl9leGlzdHMiLCBqYnZTdHJpbmcsCisJ CQkJCQkgbm9kZS0+bWlzc2luZ19vayA/ICJJRiBFWElTVFMiIDogIiIsCisJCQkJCQkgIm5ld25h bWUiLCBqYnZTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJCQlpbnNlcnRfaWRlbnRpdHlfb2Jq ZWN0KHN0YXRlLCBzY2hlbWFJZCwgbm9kZS0+cmVsYXRpb24tPnJlbG5hbWUpOworCQkJdmFsdWUg PSBwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCQkJcmVs YXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisJCQlicmVhazsKKworCQlj YXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQkJeworCQkJCUhlYXBUdXBsZQljb25zdHJ0dXA7 CisJCQkJRm9ybV9wZ19jb25zdHJhaW50IGNvbnN0Zm9ybTsKKworCQkJCWNvbnN0cnR1cCA9IFNl YXJjaFN5c0NhY2hlMShDT05TVFJPSUQsCisJCQkJCQkJCQkJCU9iamVjdElkR2V0RGF0dW0oYWRk cmVzcy5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZChjb25zdHJ0dXApKQor CQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgY29uc3RyYWludCB3aXRo IE9JRCAldSIsCisJCQkJCQkgYWRkcmVzcy5vYmplY3RJZCk7CisJCQkJY29uc3Rmb3JtID0gKEZv cm1fcGdfY29uc3RyYWludCkgR0VUU1RSVUNUKGNvbnN0cnR1cCk7CisKKwkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCQkJCW5ld19qc29uYl9WQShz dGF0ZSwgNCwKKwkJCQkJCQkgImZtdCIsIGpidlN0cmluZywKKwkJCQkJCQkgIkFMVEVSIFRBQkxF ICV7b25seX1zICV7aWRlbnRpdHl9RCBSRU5BTUUiCisJCQkJCQkJICIgQ09OU1RSQUlOVCAle29s ZG5hbWV9SSBUTyAle25ld25hbWV9SSIsCisJCQkJCQkJICJvbmx5IiwgamJ2U3RyaW5nLAorCQkJ CQkJCSBub2RlLT5yZWxhdGlvbi0+aW5oID8gIiIgOiAiT05MWSIsCisJCQkJCQkJICJvbGRuYW1l IiwgamJ2U3RyaW5nLCBub2RlLT5zdWJuYW1lLAorCQkJCQkJCSAibmV3bmFtZSIsIGpidlN0cmlu Zywgbm9kZS0+bmV3bmFtZSk7CisKKwkJCQluZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKHN0YXRl LCBSZWxhdGlvblJlbGF0aW9uSWQsCisJCQkJCQkJCQkJICBjb25zdGZvcm0tPmNvbnJlbGlkLCAi aWRlbnRpdHkiLCB0cnVlKTsKKwkJCQl2YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKGNvbnN0cnR1cCk7CisJ CQl9CisJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9DT0xVTU46CisJCQl7CisJCQkJU3RyaW5n SW5mb0RhdGEgZm10U3RyOworCisJCQkJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwkJCQly ZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4oYWRkcmVzcy5vYmplY3RJZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJCQlzY2hlbWFJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbGF0aW9uKTsKKworCQkJ CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICJBTFRFUiAle29ianR5cGV9cyIpOworCisJ CQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkJCSAib2JqdHlwZSIsIGpidlN0cmluZywK KwkJCQkJCQkgc3RyaW5naWZ5X29ianR5cGUobm9kZS0+cmVsYXRpb25UeXBlKSk7CisKKwkJCQkv KiBDb21wb3NpdGUgdHlwZXMgZG8gbm90IHN1cHBvcnQgSUYgRVhJU1RTICovCisJCQkJaWYgKG5v ZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0NPTFVNTikKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2lmX2V4aXN0c31zIik7CisJCQkJCW5ld19qc29uYl9W QShzdGF0ZSwgMSwKKwkJCQkJCQkJICJpZl9leGlzdHMiLCBqYnZTdHJpbmcsCisJCQkJCQkJCSBu b2RlLT5taXNzaW5nX29rID8gIklGIEVYSVNUUyIgOiAiIik7CisJCQkJfQorCisJCQkJaWYgKCFu b2RlLT5yZWxhdGlvbi0+aW5oKQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Zm10U3RyLCAiICV7b25seX1zIik7CisJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgIm9ubHki LCBqYnZTdHJpbmcsICJPTkxZIik7CisJCQkJfQorCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmZm10U3RyLCAiICV7aWRlbnRpdHl9RCBSRU5BTUUgQ09MVU1OIgorCQkJCQkJCQkJICAgIiAl e2NvbG5hbWV9SSBUTyAle25ld25hbWV9SSIpOworCQkJCWluc2VydF9pZGVudGl0eV9vYmplY3Qo c3RhdGUsIHNjaGVtYUlkLCBub2RlLT5yZWxhdGlvbi0+cmVsbmFtZSk7CisJCQkJbmV3X2pzb25i X1ZBKHN0YXRlLCAyLAorCQkJCQkJCSAiY29sbmFtZSIsIGpidlN0cmluZywgbm9kZS0+c3VibmFt ZSwKKwkJCQkJCQkgIm5ld25hbWUiLCBqYnZTdHJpbmcsIG5vZGUtPm5ld25hbWUpOworCisJCQkJ aWYgKG5vZGUtPnJlbmFtZVR5cGUgPT0gT0JKRUNUX0FUVFJJQlVURSkKKwkJCQl7CisKKwkJCQkJ aWYgKG5vZGUtPmJlaGF2aW9yID09IERST1BfQ0FTQ0FERSkKKwkJCQkJeworCQkJCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7Y2FzY2FkZX1zIik7CisJCQkJCQluZXdfanNv bmJfVkEoc3RhdGUsIDEsICJjYXNjYWRlIiwgamJ2U3RyaW5nLCAiQ0FTQ0FERSIpOworCQkJCQl9 CisJCQkJfQorCisJCQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBl bGVtZW50IGZvciB0aGF0ICovCisJCQkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2 U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwkJCQlwZnJlZShmbXRTdHIuZGF0YSk7CisKKwkJCQl2 YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJ CQkJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJYnJlYWs7 CisJCQl9CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnN1cHBvcnRlZCBvYmplY3Qg dHlwZSAlZCIsIG5vZGUtPnJlbmFtZVR5cGUpOworCX0KKworCXJldHVybiBKc29uYlZhbHVlVG9K c29uYih2YWx1ZSk7Cit9CisKKy8qCisgKiBEZXBhcnNlIGFuIEFsdGVyT2JqZWN0U2NoZW1hU3Rt dCAoQUxURVIgVEFCTEUuLi4gU0VUIFNDSEVNQSBjb21tYW5kKQorICoKKyAqIEdpdmVuIHRoZSBv YmplY3QodGFibGUpIGFkZHJlc3MgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwg cmV0dXJuCisgKiBKc29uYiByZXByZXNlbnRpbmcgdGhlIGFsdGVyIGNvbW1hbmQuCisgKgorICog VmVyYm9zZSBzeW50YXgKKyAqIEFMVEVSICV7b2JqdHlwZX1zICV7aWRlbnRpdHl9cyBTRVQgU0NI RU1BICV7bmV3c2NoZW1hfUkKKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2VfQWx0ZXJPYmpl Y3RTY2hlbWFTdG10KE9iamVjdEFkZHJlc3MgYWRkcmVzcywgTm9kZSAqcGFyc2V0cmVlLAorCQkJ CQkJCSAgT2JqZWN0QWRkcmVzcyBvbGRfc2NoZW1hKQoreworCUFsdGVyT2JqZWN0U2NoZW1hU3Rt dCAqbm9kZSA9IChBbHRlck9iamVjdFNjaGVtYVN0bXQgKikgcGFyc2V0cmVlOworCWNoYXIJICAg KmlkZW50aXR5OworCWNoYXIJICAgKm5ld19zY2hlbWEgPSBub2RlLT5uZXdzY2hlbWE7CisJY2hh cgkgICAqb2xkX3NjaG5hbWU7CisJY2hhcgkgICAqaWRlbnQ7CisJSnNvbmJQYXJzZVN0YXRlICpz dGF0ZSA9IE5VTEw7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwkvKgorCSAqIFNpbmNlIHRoZSBj b21tYW5kIGhhcyBhbHJlYWR5IHRha2VuIHBsYWNlIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YK KwkgKiBjYXRhbG9ncywgZ2V0T2JqZWN0SWRlbnRpdHkgcmV0dXJucyB0aGUgb2JqZWN0IG5hbWUg d2l0aCB0aGUgYWxyZWFkeQorCSAqIGNoYW5nZWQgc2NoZW1hLiAgVGhlIG91dHB1dCBvZiBvdXIg ZGVwYXJzaW5nIG11c3QgcmV0dXJuIHRoZSBvcmlnaW5hbAorCSAqIHNjaGVtYSBuYW1lLCBob3dl dmVyLCBzbyB3ZSBjaG9wIHRoZSBzY2hlbWEgbmFtZSBvZmYgdGhlIGlkZW50aXR5CisJICogc3Ry aW5nIGFuZCB0aGVuIHByZXBlbmQgdGhlIHF1b3RlZCBzY2hlbWEgbmFtZS4KKwkgKgorCSAqIFhY WCBUaGlzIGlzIHByZXR0eSBjbHVua3kuIENhbiB3ZSBkbyBiZXR0ZXI/CisJICovCisJaWRlbnRp dHkgPSBnZXRPYmplY3RJZGVudGl0eSgmYWRkcmVzcywgZmFsc2UpOworCW9sZF9zY2huYW1lID0g Z2V0X25hbWVzcGFjZV9uYW1lKG9sZF9zY2hlbWEub2JqZWN0SWQpOworCWlmICghb2xkX3NjaG5h bWUpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBzY2hlbWEgd2l0aCBP SUQgJXUiLAorCQkJIG9sZF9zY2hlbWEub2JqZWN0SWQpOworCisJaWRlbnQgPSBwc3ByaW50Zigi JXMlcyIsIHF1b3RlX2lkZW50aWZpZXIob2xkX3NjaG5hbWUpLAorCQkJCQkgaWRlbnRpdHkgKyBz dHJsZW4ocXVvdGVfaWRlbnRpZmllcihuZXdfc2NoZW1hKSkpOworCisJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDQs CisJCQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJICJBTFRFUiAle29ianR5cGV9cyAle2lkZW50 aXR5fXMgU0VUIFNDSEVNQSIKKwkJCQkgIiAle25ld3NjaGVtYX1JIiwKKwkJCQkgIm9ianR5cGUi LCBqYnZTdHJpbmcsCisJCQkJIHN0cmluZ2lmeV9vYmp0eXBlKG5vZGUtPm9iamVjdFR5cGUpLAor CQkJCSAiaWRlbnRpdHkiLCBqYnZTdHJpbmcsIGlkZW50LAorCQkJCSAibmV3c2NoZW1hIiwgamJ2 U3RyaW5nLCBuZXdfc2NoZW1hKTsKKwl2YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pC X0VORF9PQkpFQ1QsIE5VTEwpOworCisJcmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKHZhbHVlKTsK K30KKwogLyoKICAqIEhhbmRsZSBkZXBhcnNpbmcgb2Ygc2ltcGxlIGNvbW1hbmRzLgogICoKQEAg LTE5OTgsNiArMzYyOSwxMSBAQCBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1h bmQgKmNtZCkKIAkvKiBUaGlzIHN3aXRjaCBuZWVkcyB0byBoYW5kbGUgZXZlcnl0aGluZyB0aGF0 IFByb2Nlc3NVdGlsaXR5U2xvdyBkb2VzICovCiAJc3dpdGNoIChub2RlVGFnKHBhcnNldHJlZSkp CiAJeworCQljYXNlIFRfQWx0ZXJPYmplY3RTY2hlbWFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2Vf QWx0ZXJPYmplY3RTY2hlbWFTdG10KGNtZC0+ZC5zaW1wbGUuYWRkcmVzcywKKwkJCQkJCQkJCQkJ CSBwYXJzZXRyZWUsCisJCQkJCQkJCQkJCQkgY21kLT5kLnNpbXBsZS5zZWNvbmRhcnlPYmplY3Qp OworCiAJCWNhc2UgVF9BbHRlclNlcVN0bXQ6CiAJCQlyZXR1cm4gZGVwYXJzZV9BbHRlclNlcVN0 bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CiAKQEAgLTIwMDYsNiArMzY0Miw4IEBAIGRlcGFyc2Vf c2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCiAJCWNhc2UgVF9DcmVhdGVT dG10OgogCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsK KwkJY2FzZSBUX1JlbmFtZVN0bXQ6CisJCQlyZXR1cm4gZGVwYXJzZV9SZW5hbWVTdG10KGNtZC0+ ZC5zaW1wbGUuYWRkcmVzcywgcGFyc2V0cmVlKTsKIAogCQlkZWZhdWx0OgogCQkJZWxvZyhMT0cs ICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlIGluIGRlcGFyc2UgY29tbWFuZDogJWQiLApAQCAtMjA2 MCw2ICszNjk4LDkgQEAgZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAq Y21kKQogCQljYXNlIFNDVF9TaW1wbGU6CiAJCQlqc29uYiA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1h bmQoY21kKTsKIAkJCWJyZWFrOworCQljYXNlIFNDVF9BbHRlclRhYmxlOgorCQkJanNvbmIgPSBk ZXBhcnNlX0FsdGVyVGFibGVTdG10KGNtZCk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVs b2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21kLT50eXBlKTsK IAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5k L3Rjb3AvdXRpbGl0eS5jCmluZGV4IDMwYjUxYmY0ZDMuLmMwZjdmMjk3NDcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jCkBAIC0yMjA2LDYgKzIyMDYsMjMgQEAgVXRpbGl0eUNvbnRhaW5zUXVlcnkoTm9kZSAqcGFy c2V0cmVlKQogCX0KIH0KIAorLyoKKyAqIHN0cmluZ2lmeV9vYmp0eXBlCisgKiAJCVJldHVybiB0 aGUgZ2l2ZW4gb2JqZWN0IHR5cGUgYXMgYSBzdHJpbmcuCisgKi8KK2NvbnN0IGNoYXIgKgorc3Ry aW5naWZ5X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQoreworCXN3aXRjaCAob2JqdHlwZSkK Kwl7CisJCWNhc2UgT0JKRUNUX1RBQkxFOgorCQkJcmV0dXJuICJUQUJMRSI7CisJCWRlZmF1bHQ6 CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgJWQiLCBvYmp0eXBlKTsK Kwl9CisKKwlyZXR1cm4gIj8/PyI7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KIAog LyoKICAqIEFsdGVyT2JqZWN0VHlwZUNvbW1hbmRUYWcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Rjb3AvdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgKaW5kZXggNTllNjRh ZWEwNy4uMjJjZTNlMWI2ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgK KysrIGIvc3JjL2luY2x1ZGUvdGNvcC91dGlsaXR5LmgKQEAgLTk5LDYgKzk5LDggQEAgZXh0ZXJu IFF1ZXJ5ICpVdGlsaXR5Q29udGFpbnNRdWVyeShOb2RlICpwYXJzZXRyZWUpOwogCiBleHRlcm4g Q29tbWFuZFRhZyBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJlZSk7CiAKK2V4dGVybiBj b25zdCBjaGFyICpzdHJpbmdpZnlfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpOworCiBzdGF0 aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogQ3JlYXRlQ29tbWFuZE5hbWUoTm9kZSAqcGFyc2V0cmVl KQogewotLSAKMi4zNC4xCgo= --000000000000d07f7705feb00d5c Content-Type: application/octet-stream; name="0003-Enhance-the-event-trigger-to-support-DDL--2023_06_22.patch" Content-Disposition: attachment; filename="0003-Enhance-the-event-trigger-to-support-DDL--2023_06_22.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj6mh5ia2 RnJvbSBjZWFkNDQ5YWU3MDhlZGIzNjQ4YWE1NzUxNTIwYjE1ODRmZWFkOTAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSnVuIDIwMjMgMDk6MTg6NDkgKzA1MzAKU3ViamVjdDogW1BBVENIIDMv NV0gRW5oYW5jZSB0aGUgZXZlbnQgdHJpZ2dlciB0byBzdXBwb3J0IERETCBkZXBhcnNpbmcKCkFM VEVSIFRBQkxFIGNhbiBoYXZlIG11bHRpcGxlIHN1YmNvbW1hbmRzIHdoaWNoIG1pZ2h0IGluY2x1 ZGUgRFJPUCBDT0xVTU4KY29tbWFuZCBhbmQgQUxURVIgVFlQRSByZWZlcnJpbmcgdGhlIGRyb3Ag Y29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uIEFzIHRoZQpkcm9wcGVkIGNvbHVtbiBjYW5ub3Qg YmUgYWNjZXNzZWQgYWZ0ZXIgdGhlIGV4ZWN1dGlvbiBvZiBEUk9QIENPTFVNTiwgYSBzcGVjaWFs CnRyaWdnZXIgaXMgYWRkZWQgdG8gaGFuZGxlIHRoaXMgY2FzZSBiZWZvcmUgdGhlIGRyb3AgY29s dW1uIGlzIGV4ZWN1dGVkLgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyAg ICB8ICAxMSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jIHwgMTg4ICsr KysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgICAgIHwgIDEwICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmggfCAg NDYgKysrKysrLQogc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaCAgIHwgICAyICsK IDUgZmlsZXMgY2hhbmdlZCwgMjA0IGluc2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2RkbGRlcGFyc2UuYwppbmRleCBmYWFmMGRlM2Y5Li43ZjhlNDE2ZDZhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0yNTUyLDIyICsyNTUyLDEzIEBAIGRlcGFyc2Vf QWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQogCQkJCQkgKi8KIAkJCQkJaWYg KGRlZi0+cmF3X2RlZmF1bHQpCiAJCQkJCXsKLQkJCQkJCURhdHVtCQlkZXBhcnNlZDsKLQkJCQkJ CWNoYXIJICAgKmRlZmV4cHI7Ci0JCQkJCQlMaXN0CSAgICpleHBycyA9IE5JTDsKLQotCQkJCQkJ ZXhwcnMgPSBsYXBwZW5kKGV4cHJzLCBkZWYtPmNvb2tlZF9kZWZhdWx0KTsKLQkJCQkJCWRlZmV4 cHIgPSBub2RlVG9TdHJpbmcoZGVmLT5jb29rZWRfZGVmYXVsdCk7Ci0JCQkJCQlkZXBhcnNlZCA9 IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCi0JCQkJCQkJCQkJCQkJICAgQ1N0cmlu Z0dldFRleHREYXR1bShkZWZleHByKSwKLQkJCQkJCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlk KHJlbCkpOwogCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3ViLCAiICV7dXNpbmd9 cyIpOwogCQkJCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInVzaW5nIik7CiAJCQkJCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwogCQkJCQkJbmV3X2pz b25iX1ZBKHN0YXRlLCAyLAogCQkJCQkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJVU0lORyAle2V4 cHJlc3Npb259cyIsCiAJCQkJCQkJCQkgImV4cHJlc3Npb24iLCBqYnZTdHJpbmcsCi0JCQkJCQkJ CQkgVGV4dERhdHVtR2V0Q1N0cmluZyhkZXBhcnNlZCkpOworCQkJCQkJCQkJIHN1Yi0+dXNpbmdl eHByKTsKIAkJCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwp OwogCQkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdn ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCA0ZDQ4ZTQ5 MGVkLi44YzJhNDk0ZGNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC0z Niw2ICszNiw3IEBACiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Z1bmMuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFy c2VyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgi CiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKQEAgLTQ5LDQ1ICs1MCw3IEBACiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAotdHlw ZWRlZiBzdHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlTdGF0ZQotewotCS8qIG1lbW9yeSBjb250ZXh0 IGZvciB0aGlzIHN0YXRlJ3Mgb2JqZWN0cyAqLwotCU1lbW9yeUNvbnRleHQgY3h0OwotCi0JLyog c3FsX2Ryb3AgKi8KLQlzbGlzdF9oZWFkCVNRTERyb3BMaXN0OwotCWJvb2wJCWluX3NxbF9kcm9w OwotCi0JLyogdGFibGVfcmV3cml0ZSAqLwotCU9pZAkJCXRhYmxlX3Jld3JpdGVfb2lkOwkvKiBJ bnZhbGlkT2lkLCBvciBzZXQgZm9yIHRhYmxlX3Jld3JpdGUKLQkJCQkJCQkJCSAqIGV2ZW50ICov Ci0JaW50CQkJdGFibGVfcmV3cml0ZV9yZWFzb247CS8qIEFUX1JFV1JJVEUgcmVhc29uICovCi0K LQkvKiBTdXBwb3J0IGZvciBjb21tYW5kIGNvbGxlY3Rpb24gKi8KLQlib29sCQljb21tYW5kQ29s bGVjdGlvbkluaGliaXRlZDsKLQlDb2xsZWN0ZWRDb21tYW5kICpjdXJyZW50Q29tbWFuZDsKLQlM aXN0CSAgICpjb21tYW5kTGlzdDsJLyogbGlzdCBvZiBDb2xsZWN0ZWRDb21tYW5kOyBzZWUKLQkJ CQkJCQkJICogZGVwYXJzZV91dGlsaXR5LmggKi8KLQlzdHJ1Y3QgRXZlbnRUcmlnZ2VyUXVlcnlT dGF0ZSAqcHJldmlvdXM7Ci19IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGU7Ci0KLXN0YXRpYyBFdmVu dFRyaWdnZXJRdWVyeVN0YXRlICpjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgPSBOVUxMOwotCi0v KiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KLXR5cGVkZWYgc3RydWN0IFNRTERyb3BP YmplY3QKLXsKLQlPYmplY3RBZGRyZXNzIGFkZHJlc3M7Ci0JY29uc3QgY2hhciAqc2NoZW1hbmFt ZTsKLQljb25zdCBjaGFyICpvYmpuYW1lOwotCWNvbnN0IGNoYXIgKm9iamlkZW50aXR5OwotCWNv bnN0IGNoYXIgKm9iamVjdHR5cGU7Ci0JTGlzdAkgICAqYWRkcm5hbWVzOwotCUxpc3QJICAgKmFk ZHJhcmdzOwotCWJvb2wJCW9yaWdpbmFsOwotCWJvb2wJCW5vcm1hbDsKLQlib29sCQlpc3RlbXA7 Ci0Jc2xpc3Rfbm9kZQluZXh0OwotfSBTUUxEcm9wT2JqZWN0OworRXZlbnRUcmlnZ2VyUXVlcnlT dGF0ZSAqY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlID0gTlVMTDsKIAogc3RhdGljIHZvaWQgQWx0 ZXJFdmVudFRyaWdnZXJPd25lcl9pbnRlcm5hbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCUhl YXBUdXBsZSB0dXAsCkBAIC0xNTM4LDYgKzE1MDEsNyBAQCBFdmVudFRyaWdnZXJBbHRlclRhYmxl U3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLmNsYXNzSWQg PSBSZWxhdGlvblJlbGF0aW9uSWQ7CiAJY29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkID0g SW52YWxpZE9pZDsKKwljb21tYW5kLT5kLmFsdGVyVGFibGUucmV3cml0ZSA9IGZhbHNlOwogCWNv bW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzID0gTklMOwogCWNvbW1hbmQtPnBhcnNldHJlZSA9 IGNvcHlPYmplY3QocGFyc2V0cmVlKTsKIApAQCAtMTU3MSw3ICsxNTM1LDcgQEAgRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZVJlbGlkKE9pZCBvYmplY3RJZCkKICAqIGludGVybmFsbHksIHNvIHRoYXQn cyBhbGwgdGhhdCB0aGlzIGNvZGUgbmVlZHMgdG8gaGFuZGxlIGF0IHRoZSBtb21lbnQuCiAgKi8K IHZvaWQKLUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwg T2JqZWN0QWRkcmVzcyBhZGRyZXNzKQorRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJj bWQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKIHsK IAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOwpAQCAt MTU5MSwxMiArMTU1NSwxNTYgQEAgRXZlbnRUcmlnZ2VyQ29sbGVjdEFsdGVyVGFibGVTdWJjbWQo Tm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MpCiAJbmV3c3ViLT5hZGRyZXNzID0g YWRkcmVzczsKIAluZXdzdWItPnBhcnNldHJlZSA9IGNvcHlPYmplY3Qoc3ViY21kKTsKIAorCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5yZXdy aXRlIHw9IHJld3JpdGU7CiAJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFu ZC0+ZC5hbHRlclRhYmxlLnN1YmNtZHMgPQogCQlsYXBwZW5kKGN1cnJlbnRFdmVudFRyaWdnZXJT dGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJjbWRzLCBuZXdzdWIpOwogCiAJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKy8qCisgKiBFdmVudFRyaWdnZXJB bHRlclR5cGVTdGFydAorICoJCVNhdmUgZGF0YSBhYm91dCBhIHNpbmdsZSBwYXJ0IG9mIGFuIEFM VEVSIFRZUEUuCisgKgorICogQUxURVIgVEFCTEUgY2FuIGhhdmUgbXVsdGlwbGUgc3ViY29tbWFu ZHMgd2hpY2ggbWlnaHQgaW5jbHVkZSBEUk9QIENPTFVNTgorICogY29tbWFuZCBhbmQgQUxURVIg VFlQRSByZWZlcnJpbmcgdGhlIGRyb3AgY29sdW1uIGluIFVTSU5HIGV4cHJlc3Npb24uCisgKiBB cyB0aGUgZHJvcHBlZCBjb2x1bW4gY2Fubm90IGJlIGFjY2Vzc2VkIGFmdGVyIHRoZSBleGVjdXRp b24gb2YgRFJPUCBDT0xVTU4sCisgKiBhIHNwZWNpYWwgdHJpZ2dlciBpcyByZXF1aXJlZCB0byBo YW5kbGUgdGhpcyBjYXNlIGJlZm9yZSB0aGUgZHJvcCBjb2x1bW4gaXMKKyAqIGV4ZWN1dGVkLgor ICovCit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFydChBbHRlclRhYmxlQ21kICpzdWJj bWQsIFJlbGF0aW9uIHJlbCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwlDb2xsZWN0ZWRB VFN1YmNtZCAqbmV3c3ViOworCUNvbHVtbkRlZiAgKmRlZjsKKwlSZWxhdGlvbglhdHRyZWxhdGlv bjsKKwlIZWFwVHVwbGUJaGVhcFR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRUdXA7CisJQXR0 ck51bWJlcglhdHRudW07CisJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCisJLyogaWdub3JlIGlm IGV2ZW50IHRyaWdnZXIgY29udGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICov CisJaWYgKCFjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jb21tYW5kQ29sbGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJQXNzZXJ0 KElzQShzdWJjbWQsIEFsdGVyVGFibGVDbWQpKTsKKwlBc3NlcnQoc3ViY21kLT5zdWJ0eXBlID09 IEFUX0FsdGVyQ29sdW1uVHlwZSk7CisJQXNzZXJ0KGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+ Y3VycmVudENvbW1hbmQgIT0gTlVMTCk7CisJQXNzZXJ0KE9pZElzVmFsaWQoY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZC0+ZC5hbHRlclRhYmxlLm9iamVjdElkKSk7CisK KwlkZWYgPSAoQ29sdW1uRGVmICopIHN1YmNtZC0+ZGVmOworCUFzc2VydChJc0EoZGVmLCBDb2x1 bW5EZWYpKTsKKworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhjdXJyZW50RXZlbnRU cmlnZ2VyU3RhdGUtPmN4dCk7CisKKwluZXdzdWIgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZEFU U3ViY21kKSk7CisJbmV3c3ViLT5wYXJzZXRyZWUgPSAoTm9kZSAqKWNvcHlPYmplY3Qoc3ViY21k KTsKKworCWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKworCS8qIExvb2sgdXAgdGhlIHRhcmdldCBjb2x1bW4gKi8KKwloZWFw VHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHN1 YmNtZC0+bmFtZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGhlYXBUdXApKSAvKiBzaG91bGRu J3QgaGFwcGVuICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9DT0xVTU4pLAorCQkJCWVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVz XCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkgICBzdWJjbWQtPm5hbWUsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKKwlhdHRUdXAgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVD VChoZWFwVHVwKTsKKwlhdHRudW0gPSBhdHRUdXAtPmF0dG51bTsKKworCU9iamVjdEFkZHJlc3NT dWJTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJUmVsYXRpb25HZXRSZWxp ZChyZWwpLCBhdHRudW0pOworCWhlYXBfZnJlZXR1cGxlKGhlYXBUdXApOworCXRhYmxlX2Nsb3Nl KGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwluZXdzdWItPmFkZHJlc3MgPSBhZGRy ZXNzOworCisJaWYgKGRlZi0+cmF3X2RlZmF1bHQpCisJeworCQlPdmVycmlkZVNlYXJjaFBhdGgg Km92ZXJyaWRlUGF0aDsKKwkJY2hhcgkgICAqZGVmZXhwcjsKKworCQkvKgorCQkgKiBXZSB3YW50 IGFsbCBvYmplY3QgbmFtZXMgdG8gYmUgcXVhbGlmaWVkIHdoZW4gZGVwYXJzaW5nIHRoZQorCQkg KiBleHByZXNzaW9uLCBzbyB0aGF0IHJlc3VsdHMgYXJlICJwb3J0YWJsZSIgdG8gZW52aXJvbm1l bnRzIHdpdGgKKwkJICogZGlmZmVyZW50IHNlYXJjaF9wYXRoIHNldHRpbmdzLiBSYXRoZXIgdGhh biBpbmplY3Qgd2hhdCB3b3VsZCBiZQorCQkgKiByZXBldGl0aXZlIGNhbGxzIHRvIG92ZXJyaWRl IHNlYXJjaCBwYXRoIGFsbCBvdmVyIHRoZSBwbGFjZSwgd2UgZG8KKwkJICogaXQgY2VudHJhbGx5 IGhlcmUuCisJCSAqLworCQlvdmVycmlkZVBhdGggPSBHZXRPdmVycmlkZVNlYXJjaFBhdGgoQ3Vy cmVudE1lbW9yeUNvbnRleHQpOworCQlvdmVycmlkZVBhdGgtPnNjaGVtYXMgPSBOSUw7CisJCW92 ZXJyaWRlUGF0aC0+YWRkQ2F0YWxvZyA9IGZhbHNlOworCQlvdmVycmlkZVBhdGgtPmFkZFRlbXAg PSB0cnVlOworCQlQdXNoT3ZlcnJpZGVTZWFyY2hQYXRoKG92ZXJyaWRlUGF0aCk7CisKKwkJZGVm ZXhwciA9IG5vZGVUb1N0cmluZyhkZWYtPmNvb2tlZF9kZWZhdWx0KTsKKwkJbmV3c3ViLT51c2lu Z2V4cHIgPSBUZXh0RGF0dW1HZXRDU3RyaW5nKERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4 cHIsCisJCQkJCQkJCQkJCQkJCQkJCUNTdHJpbmdHZXRUZXh0RGF0dW0oZGVmZXhwciksCisJCQkJ CQkJCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCisJCVBvcE92ZXJyaWRlU2Vh cmNoUGF0aCgpOworCX0KKwllbHNlCisJCW5ld3N1Yi0+dXNpbmdleHByID0gTlVMTDsKKworCWN1 cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y3VycmVudENvbW1hbmQtPmQuYWx0ZXJUYWJsZS5zdWJj bWRzID0KKwkJbGFwcGVuZChjdXJyZW50RXZlbnRUcmlnZ2VyU3RhdGUtPmN1cnJlbnRDb21tYW5k LT5kLmFsdGVyVGFibGUuc3ViY21kcywgbmV3c3ViKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworfQorCisvKgorICogRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kCisgKgkJRmlu aXNoIHVwIHNhdmluZyBhbiBBTFRFUiBUWVBFIGNvbW1hbmQsIGFuZCBhZGQgaXQgdG8gY29tbWFu ZCBsaXN0LgorICovCit2b2lkCitFdmVudFRyaWdnZXJBbHRlclR5cGVFbmQoTm9kZSAqc3ViY21k LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsIGJvb2wgcmV3cml0ZSkKK3sKKwlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKKwlDb2xsZWN0ZWRBVFN1YmNtZCAqbmV3c3ViOworCUxpc3RDZWxsICAgKmNlbGw7 CisJQ29sbGVjdGVkQ29tbWFuZCAqY21kOworCUFsdGVyVGFibGVDbWQgKmFsdHN1YmNtZCA9IChB bHRlclRhYmxlQ21kICopc3ViY21kOworCisJLyogaWdub3JlIGlmIGV2ZW50IHRyaWdnZXIgY29u dGV4dCBub3Qgc2V0LCBvciBjb2xsZWN0aW9uIGRpc2FibGVkICovCisJaWYgKCFjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUgfHwKKwkJY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jb21tYW5kQ29s bGVjdGlvbkluaGliaXRlZCkKKwkJcmV0dXJuOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dl clN0YXRlLT5jdXJyZW50Q29tbWFuZDsKKworCUFzc2VydChJc0Eoc3ViY21kLCBBbHRlclRhYmxl Q21kKSk7CisJQXNzZXJ0KGNtZCAhPSBOVUxMKTsKKwlBc3NlcnQoT2lkSXNWYWxpZChjbWQtPmQu YWx0ZXJUYWJsZS5vYmplY3RJZCkpOworCisJZm9yZWFjaChjZWxsLCBjbWQtPmQuYWx0ZXJUYWJs ZS5zdWJjbWRzKQorCXsKKwkJQ29sbGVjdGVkQVRTdWJjbWQgKnN1YiA9IChDb2xsZWN0ZWRBVFN1 YmNtZCAqKSBsZmlyc3QoY2VsbCk7CisJCUFsdGVyVGFibGVDbWQgKmNvbGxjbWQgPSAoQWx0ZXJU YWJsZUNtZCAqKSBzdWItPnBhcnNldHJlZTsKKworCQlpZiAoY29sbGNtZC0+c3VidHlwZSA9PSBh bHRzdWJjbWQtPnN1YnR5cGUgJiYKKwkJCWFkZHJlc3MuY2xhc3NJZCA9PSBzdWItPmFkZHJlc3Mu Y2xhc3NJZCAmJgorCQkJYWRkcmVzcy5vYmplY3RJZCA9PSBzdWItPmFkZHJlc3Mub2JqZWN0SWQg JiYKKwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPT0gc3ViLT5hZGRyZXNzLm9iamVjdFN1YklkKQor CQl7CisJCQljbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlIHw9IHJld3JpdGU7CisJCQlyZXR1cm47 CisJCX0KKwl9CisKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3VycmVudEV2ZW50 VHJpZ2dlclN0YXRlLT5jeHQpOworCisJbmV3c3ViID0gcGFsbG9jKHNpemVvZihDb2xsZWN0ZWRB VFN1YmNtZCkpOworCW5ld3N1Yi0+YWRkcmVzcyA9IGFkZHJlc3M7CisJbmV3c3ViLT5wYXJzZXRy ZWUgPSBjb3B5T2JqZWN0KHN1YmNtZCk7CisKKwljbWQtPmQuYWx0ZXJUYWJsZS5yZXdyaXRlIHw9 IHJld3JpdGU7CisJY21kLT5kLmFsdGVyVGFibGUuc3ViY21kcyA9IGxhcHBlbmQoY21kLT5kLmFs dGVyVGFibGUuc3ViY21kcywgbmV3c3ViKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOworfQorCiAvKgogICogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZAogICoJCUZpbmlzaCB1 cCBzYXZpbmcgYW4gQUxURVIgVEFCTEUgY29tbWFuZCwgYW5kIGFkZCBpdCB0byBjb21tYW5kIGxp c3QuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGMxNWU5NDNmMWQuLmQwZTY0OWJhYWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC00NzQyLDYgKzQ3NDIsOSBAQCBBVFByZXBD bWQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQlj bWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgcmVjdXJzZSwg bG9ja21vZGUsCiAJCQkJCQkJCQkgIEFUX1BBU1NfVU5TRVQsIGNvbnRleHQpOwogCQkJQXNzZXJ0 KGNtZCAhPSBOVUxMKTsKKworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlU3RhcnQoY21kLCByZWwp OworCiAJCQkvKiBQZXJmb3JtcyBvd24gcmVjdXJzaW9uICovCiAJCQlBVFByZXBBbHRlckNvbHVt blR5cGUod3F1ZXVlLCB0YWIsIHJlbCwgcmVjdXJzZSwgcmVjdXJzaW5nLCBjbWQsCiAJCQkJCQkJ CSAgbG9ja21vZGUsIGNvbnRleHQpOwpAQCAtNTAxMyw2ICs1MDE2LDcgQEAgQVRFeGVjQ21kKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIHsKIAlPYmplY3RBZGRyZXNzIGFk ZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKIAlSZWxhdGlvbglyZWwgPSB0YWItPnJlbDsK Kwlib29sCQljb21tYW5kQ29sbGVjdGVkID0gZmFsc2U7CiAKIAlzd2l0Y2ggKGNtZC0+c3VidHlw ZSkKIAl7CkBAIC01MTM2LDYgKzUxNDAsOCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0FsdGVyQ29sdW1uVHlwZToJLyogQUxURVIg Q09MVU1OIFRZUEUgKi8KIAkJCS8qIHBhcnNlIHRyYW5zZm9ybWF0aW9uIHdhcyBkb25lIGVhcmxp ZXIgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNBbHRlckNvbHVtblR5cGUodGFiLCByZWwsIGNtZCwg bG9ja21vZGUpOworCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUeXBlRW5kKChOb2RlICopIGNtZCwgYWRk cmVzcywgdGFiLT5yZXdyaXRlKTsKKwkJCWNvbW1hbmRDb2xsZWN0ZWQgPSB0cnVlOwogCQkJYnJl YWs7CiAJCWNhc2UgQVRfQWx0ZXJDb2x1bW5HZW5lcmljT3B0aW9uczoJLyogQUxURVIgQ09MVU1O IE9QVElPTlMgKi8KIAkJCWFkZHJlc3MgPQpAQCAtNTMwOCw4ICs1MzE0LDggQEAgQVRFeGVjQ21k KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkvKgogCSAqIFJlcG9ydCB0 aGUgc3ViY29tbWFuZCB0byBpbnRlcmVzdGVkIGV2ZW50IHRyaWdnZXJzLgogCSAqLwotCWlmIChj bWQpCi0JCUV2ZW50VHJpZ2dlckNvbGxlY3RBbHRlclRhYmxlU3ViY21kKChOb2RlICopIGNtZCwg YWRkcmVzcyk7CisJaWYgKGNtZCAmJiAhY29tbWFuZENvbGxlY3RlZCkKKwkJRXZlbnRUcmlnZ2Vy Q29sbGVjdEFsdGVyVGFibGVTdWJjbWQoKE5vZGUgKikgY21kLCBhZGRyZXNzLCB0YWItPnJld3Jp dGUpOwogCiAJLyoKIAkgKiBCdW1wIHRoZSBjb21tYW5kIGNvdW50ZXIgdG8gZW5zdXJlIHRoZSBu ZXh0IHN1YmNvbW1hbmQgaW4gdGhlIHNlcXVlbmNlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmln Z2VyLmgKaW5kZXggNWVkNmVjZTU1NS4uMjhiMzQ4NmI5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuaApAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvZGVwZW5k ZW5jeS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1 ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5oIgogI2luY2x1 ZGUgInRjb3AvZGVwYXJzZV91dGlsaXR5LmgiCkBAIC0yOSw2ICszMCw0NCBAQCB0eXBlZGVmIHN0 cnVjdCBFdmVudFRyaWdnZXJEYXRhCiAJQ29tbWFuZFRhZwl0YWc7CiB9IEV2ZW50VHJpZ2dlckRh dGE7CiAKK3R5cGVkZWYgc3RydWN0IEV2ZW50VHJpZ2dlclF1ZXJ5U3RhdGUKK3sKKwkvKiBtZW1v cnkgY29udGV4dCBmb3IgdGhpcyBzdGF0ZSdzIG9iamVjdHMgKi8KKwlNZW1vcnlDb250ZXh0IGN4 dDsKKworCS8qIHNxbF9kcm9wICovCisJc2xpc3RfaGVhZAlTUUxEcm9wTGlzdDsKKwlib29sCQlp bl9zcWxfZHJvcDsKKworCS8qIHRhYmxlX3Jld3JpdGUgKi8KKwlPaWQJCQl0YWJsZV9yZXdyaXRl X29pZDsJLyogSW52YWxpZE9pZCwgb3Igc2V0IGZvciB0YWJsZV9yZXdyaXRlCisJCQkJCQkJCQkg KiBldmVudCAqLworCWludAkJCXRhYmxlX3Jld3JpdGVfcmVhc29uOwkvKiBBVF9SRVdSSVRFIHJl YXNvbiAqLworCisJLyogU3VwcG9ydCBmb3IgY29tbWFuZCBjb2xsZWN0aW9uICovCisJYm9vbAkJ Y29tbWFuZENvbGxlY3Rpb25JbmhpYml0ZWQ7CisJQ29sbGVjdGVkQ29tbWFuZCAqY3VycmVudENv bW1hbmQ7CisJTGlzdAkgICAqY29tbWFuZExpc3Q7CS8qIGxpc3Qgb2YgQ29sbGVjdGVkQ29tbWFu ZDsgc2VlCisJCQkJCQkJCSAqIGRlcGFyc2VfdXRpbGl0eS5oICovCisJc3RydWN0IEV2ZW50VHJp Z2dlclF1ZXJ5U3RhdGUgKnByZXZpb3VzOworfSBFdmVudFRyaWdnZXJRdWVyeVN0YXRlOworCisv KiBTdXBwb3J0IGZvciBkcm9wcGVkIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFNRTERyb3BP YmplY3QKK3sKKwlPYmplY3RBZGRyZXNzIGFkZHJlc3M7CisJY29uc3QgY2hhciAqc2NoZW1hbmFt ZTsKKwljb25zdCBjaGFyICpvYmpuYW1lOworCWNvbnN0IGNoYXIgKm9iamlkZW50aXR5OworCWNv bnN0IGNoYXIgKm9iamVjdHR5cGU7CisJTGlzdAkgICAqYWRkcm5hbWVzOworCUxpc3QJICAgKmFk ZHJhcmdzOworCWJvb2wJCW9yaWdpbmFsOworCWJvb2wJCW5vcm1hbDsKKwlib29sCQlpc3RlbXA7 CisJc2xpc3Rfbm9kZQluZXh0OworfSBTUUxEcm9wT2JqZWN0OworCiAjZGVmaW5lIEFUX1JFV1JJ VEVfQUxURVJfUEVSU0lTVEVOQ0UJMHgwMQogI2RlZmluZSBBVF9SRVdSSVRFX0RFRkFVTFRfVkFM CQkJMHgwMgogI2RlZmluZSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFCQkweDA0CkBAIC03MSw3 ICsxMTAsMTIgQEAgZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQo T2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogZXh0ZXJuIHZvaWQgRXZlbnRUcmlnZ2VyQWx0ZXJUYWJs ZVN0YXJ0KE5vZGUgKnBhcnNldHJlZSk7CiBleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJBbHRlclRh YmxlUmVsaWQoT2lkIG9iamVjdElkKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RB bHRlclRhYmxlU3ViY21kKE5vZGUgKnN1YmNtZCwKLQkJCQkJCQkJCQkJCU9iamVjdEFkZHJlc3Mg YWRkcmVzcyk7CisJCQkJCQkJCQkJCQlPYmplY3RBZGRyZXNzIGFkZHJlc3MsCisJCQkJCQkJCQkJ CQlib29sIHJld3JpdGUpOworCitleHRlcm4gdm9pZCBFdmVudFRyaWdnZXJBbHRlclR5cGVTdGFy dChBbHRlclRhYmxlQ21kICpzdWJjbWQsIFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBFdmVu dFRyaWdnZXJBbHRlclR5cGVFbmQoTm9kZSAqc3ViY21kLCBPYmplY3RBZGRyZXNzIGFkZHJlc3Ms CisJCQkJCQkJCQkgYm9vbCByZXdyaXRlKTsKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckFsdGVy VGFibGVFbmQodm9pZCk7CiAKIGV4dGVybiB2b2lkIEV2ZW50VHJpZ2dlckNvbGxlY3RHcmFudChJ bnRlcm5hbEdyYW50ICppc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFy c2VfdXRpbGl0eS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaAppbmRleCBi NTg1ODEwYjlhLi4xODMxZWM5YWFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RlcGFy c2VfdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmgKQEAg LTM5LDYgKzM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQVRTdWJjbWQKIHsKIAlPYmpl Y3RBZGRyZXNzIGFkZHJlc3M7CQkvKiBhZmZlY3RlZCBjb2x1bW4sIGNvbnN0cmFpbnQsIGluZGV4 LCAuLi4gKi8KIAlOb2RlCSAgICpwYXJzZXRyZWU7CisJY2hhcgkgICAqdXNpbmdleHByOwogfSBD b2xsZWN0ZWRBVFN1YmNtZDsKIAogdHlwZWRlZiBzdHJ1Y3QgQ29sbGVjdGVkQ29tbWFuZApAQCAt NjIsNiArNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJCXsKIAkJCU9p ZAkJCW9iamVjdElkOwogCQkJT2lkCQkJY2xhc3NJZDsKKwkJCWJvb2wJCXJld3JpdGU7CiAJCQlM aXN0CSAgICpzdWJjbWRzOwogCQl9CQkJYWx0ZXJUYWJsZTsKIAotLSAKMi4zNC4xCgo= --000000000000d07f7705feb00d5c Content-Type: application/octet-stream; name="0001-Deparser-for-Create-And-Drop-Table-DDL-co-2023_06_22.patch" Content-Disposition: attachment; filename="0001-Deparser-for-Create-And-Drop-Table-DDL-co-2023_06_22.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj6mh5ho0 RnJvbSA5MzhlMDJhMGNhNTIyNzA2YTcyNDRjMTdjYjhmNGZiY2FkNTc0MjdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgTWF5IDIwMjMgMDg6MzY6NDkgKzA1MzAKU3ViamVjdDogW1BBVENIIDEv NV0gRGVwYXJzZXIgZm9yIENyZWF0ZSBBbmQgRHJvcCBUYWJsZSBEREwgY29tbWFuZHMuCgpUaGlz IHBhdGNoIGNvbnN0cnVjdHMgSlNPTiBibG9icyByZXByZXNlbnRpbmcgRERMIGNvbW1hbmRzLCB3 aGljaCBjYW4KbGF0ZXIgYmUgcmUtcHJvY2Vzc2VkIGludG8gcGxhaW4gc3RyaW5ncyBieSB3ZWxs LWRlZmluZWQgc3ByaW50Zi1saWtlCmV4cGFuc2lvbi4gVGhlc2UgSlNPTiBvYmplY3RzIGFyZSBp bnRlbmRlZCB0byBhbGxvdyBmb3IgbWFjaGluZS1lZGl0aW5nIG9mCnRoZSBjb21tYW5kcywgYnkg cmVwbGFjaW5nIGNlcnRhaW4gbm9kZXMgd2l0aGluIHRoZSBvYmplY3RzLgoKTXVjaCBvZiB0aGUg aW5mb3JtYXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZyb20gc3lzdGVt CmNhdGFsb2dzLCBub3QgZnJvbSB0aGUgY29tbWFuZCBwYXJzZSBub2RlLCBhcyBpdCBpcyBpbXBv c3NpYmxlIHRvIHJlbGlhYmx5CmNvbnN0cnVjdCBhIGZ1bGx5LXNwZWNpZmllZCBjb21tYW5kIChp LmUuIG9uZSBub3QgZGVwZW5kZW50IG9uIHNlYXJjaF9wYXRoCmV0YykgbG9va2luZyBvbmx5IGF0 IHRoZSBwYXJzZSBub2RlLgoKVGhpcyBwcm92aWRlcyBhIGJhc2UgZm9yIGxvZ2ljYWwgcmVwbGlj YXRpb24gb2YgRERMIHN0YXRlbWVudHMuIEN1cnJlbnRseSwKdGhlIHBhdGNoIGhhcyBzdXBwb3J0 IGZvciBDUkVBVEUgYW5kIERST1AgVEFCTEUKLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9NYWtl ZmlsZSAgICAgICAgfCAgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyAg ICB8IDIxMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2RkbGpzb24uYyAgICAgICB8ICA3NTkgKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXZlbnRfdHJpZ2dlci5jIHwgICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWls ZCAgICAgfCAgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICB8ICAg NDMgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgIHwgICAgMyArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgIHwgICAgMSArCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvZm9ybWF0X3R5cGUuYyAgfCAgMTA4ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQv cnVsZXV0aWxzLmMgICAgfCAgIDMyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgfCAgICA3ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICB8ICAg IDkgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAgIHwgICAgMiArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3Rj b3AvZGRsZGVwYXJzZS5oICAgICAgICB8ICAgMjIgKwogc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaCAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMuaCAgICAg ICAgfCAgIDEwICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAgIDIg KwogMTggZmlsZXMgY2hhbmdlZCwgMzA5MyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9jb21tYW5kcy9kZGxqc29uLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZp bGUKaW5kZXggNDhmNzM0OGY5MS4uMDc2YWM0ZWIzMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKQEAg LTI5LDYgKzI5LDggQEAgT0JKUyA9IFwKIAljb3B5dG8ubyBcCiAJY3JlYXRlYXMubyBcCiAJZGJj b21tYW5kcy5vIFwKKwlkZGxkZXBhcnNlLm8gXAorCWRkbGpzb24ubyBcCiAJZGVmaW5lLm8gXAog CWRpc2NhcmQubyBcCiAJZHJvcGNtZHMubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9kZGxkZXBhcnNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjY5ODgwZmJiOQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwpAQCAtMCwwICsxLDIx MDAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbGRlcGFyc2UuYworICoJICBGdW5j dGlvbnMgdG8gY29udmVydCB1dGlsaXR5IGNvbW1hbmRzIHRvIG1hY2hpbmUtcGFyc2VhYmxlCisg KgkgIHJlcHJlc2VudGF0aW9uCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIw MjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQor ICoKKyAqIE5PVEVTCisgKgorICogVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIEpTT04gYmxv YnMgcmVwcmVzZW50aW5nIERETCBjb21tYW5kcywgd2hpY2ggY2FuCisgKiBsYXRlciBiZSByZS1w cm9jZXNzZWQgaW50byBwbGFpbiBzdHJpbmdzIGJ5IHdlbGwtZGVmaW5lZCBzcHJpbnRmLWxpa2UK KyAqIGV4cGFuc2lvbi4gIFRoZXNlIEpTT04gb2JqZWN0cyBhcmUgaW50ZW5kZWQgdG8gYWxsb3cg Zm9yIG1hY2hpbmUtZWRpdGluZyBvZgorICogdGhlIGNvbW1hbmRzLCBieSByZXBsYWNpbmcgY2Vy dGFpbiBub2RlcyB3aXRoaW4gdGhlIG9iamVjdHMuCisgKgorICogTXVjaCBvZiB0aGUgaW5mb3Jt YXRpb24gaW4gdGhlIG91dHB1dCBibG9iIGFjdHVhbGx5IGNvbWVzIGZyb20gc3lzdGVtCisgKiBj YXRhbG9ncywgbm90IGZyb20gdGhlIGNvbW1hbmQgcGFyc2Ugbm9kZSwgYXMgaXQgaXMgaW1wb3Nz aWJsZSB0byByZWxpYWJseQorICogY29uc3RydWN0IGEgZnVsbHktc3BlY2lmaWVkIGNvbW1hbmQg KGkuZS4gb25lIG5vdCBkZXBlbmRlbnQgb24gc2VhcmNoX3BhdGgKKyAqIGV0YykgbG9va2luZyBv bmx5IGF0IHRoZSBwYXJzZSBub2RlLgorICoKKyAqIERlcGFyc2VkIEpzb25iVmFsdWUgaXMgY3Jl YXRlZCBieSB1c2luZzoKKyAqIAluZXdfanNvbmJfVkEgd2hlcmUgdGhlIGtleS12YWx1ZSBwYWly cyBjb21wb3NpbmcgYW4ganNvbmIgb2JqZWN0IGNhbiBiZQorICogCWRlcml2ZWQgdXNpbmcgdGhl IHBhc3NlZCB2YXJpYWJsZSBhcmd1bWVudHMuIEluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseQorICog IGNvbnN0cnVjdCBvbmUga2V5OnZhbHVlIHBhaXIsIGEgc2V0IG9mIHRocmVlIGFyZ3VtZW50cyBj b25zaXN0aW5nIG9mIGEgbmFtZQorICogCShzdHJpbmcpLCB0eXBlIChmcm9tIHRoZSBqYnZUeXBl IGVudW0pIGFuZCB2YWx1ZSBtdXN0IGJlIHN1cHBsaWVkLiBJdCBjYW4KKyAqICB0YWtlIG11bHRp cGxlIHN1Y2ggc2V0cyBhbmQgY29uc3RydWN0IG11bHRpcGxlIGtleS12YWx1ZSBwYWlycyBhbmQg YXBwZW5kCisgKiAgdGhvc2UgdG8gb3V0cHV0IHBhcnNlLXN0YXRlLgorICoKKyAqIElERU5USUZJ Q0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYworICoKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFj Y2Vzcy9hbWFwaS5oIgorI2luY2x1ZGUgImFjY2Vzcy9yZWxhdGlvbi5oIgorI2luY2x1ZGUgImFj Y2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2RlcGVuZC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdf aW5oZXJpdHMuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCisj aW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxl Y21kcy5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1p emVyLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInRj b3AvZGRsZGVwYXJzZS5oIgorI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgorI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorI2luY2x1ZGUgInV0aWxzL2xz eXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3J1bGV1 dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKy8qIEVzdGltYXRlZCBsZW5n dGggb2YgdGhlIGdlbmVyYXRlZCBqc29uYiBzdHJpbmcgKi8KKyNkZWZpbmUgSlNPTkJfRVNUSU1B VEVEX0xFTiAxMjgKKworLyoKKyAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9m IHRoZSBnaXZlbiBSRUxQRVJTSVNURU5DRSB2YWx1ZS4KKyAqLworc3RhdGljIGNoYXIgKgorZ2V0 X3BlcnNpc3RlbmNlX3N0cihjaGFyIHBlcnNpc3RlbmNlKQoreworCXN3aXRjaCAocGVyc2lzdGVu Y2UpCisJeworCQljYXNlIFJFTFBFUlNJU1RFTkNFX1RFTVA6CisJCQlyZXR1cm4gIlRFTVBPUkFS WSI7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ6CisJCQlyZXR1cm4gIlVOTE9HR0VE IjsKKwkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ6CisJCQlyZXR1cm4gTlVMTDsKKwkJ ZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHBlcnNpc3RlbmNlIG1hcmtpbmcg JWMiLAorCQkJCSBwZXJzaXN0ZW5jZSk7CisJCQlyZXR1cm4gTlVMTDsJCS8qIG1ha2UgY29tcGls ZXIgaGFwcHkgKi8KKwl9Cit9CisKKy8qCisgKiBPYnRhaW4gdGhlIGRlcGFyc2VkIGRlZmF1bHQg dmFsdWUgZm9yIHRoZSBnaXZlbiBjb2x1bW4gb2YgdGhlIGdpdmVuIHRhYmxlLgorICoKKyAqIENh bGxlciBtdXN0IGhhdmUgc2V0IGEgY29ycmVjdCBkZXBhcnNlIGNvbnRleHQgYW5kIG11c3QgZW5z dXJlIHRoYXQgdGhlCisgKiBwYXNzZWQgYXR0cmlidXRlIGhhcyBhIGRlZmF1bHQgdmFsdWUuCisg Ki8KK3N0YXRpYyBjaGFyICoKK1JlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWws IEF0dHJOdW1iZXIgYXR0bm8sIExpc3QgKmRwY29udGV4dCkKK3sKKwlOb2RlCSAgICpkZWZ2YWw7 CisJY2hhcgkgICAqZGVmc3RyOworCisJZGVmdmFsID0gYnVpbGRfY29sdW1uX2RlZmF1bHQocmVs LCBhdHRubyk7CisJQXNzZXJ0KGRlZnZhbCAhPSBOVUxMKTsKKworCWRlZnN0ciA9IGRlcGFyc2Vf ZXhwcmVzc2lvbihkZWZ2YWwsIGRwY29udGV4dCwgZmFsc2UsIGZhbHNlKTsKKworCXJldHVybiBk ZWZzdHI7Cit9CisKKy8qCisgKiBPYnRhaW4gdGhlIGRlcGFyc2VkIHBhcnRpdGlvbiBib3VuZCBl eHByZXNzaW9uIGZvciB0aGUgZ2l2ZW4gdGFibGUuCisgKi8KK3N0YXRpYyBjaGFyICoKK1JlbGF0 aW9uR2V0UGFydGl0aW9uQm91bmQoT2lkIHJlbGlkKQoreworCURhdHVtCQlkZXBhcnNlZDsKKwlE YXR1bQkJYm91bmQ7CisJYm9vbAkJaXNudWxsOworCUhlYXBUdXBsZQl0dXBsZTsKKworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGUxKFJFTE9JRCwgcmVsaWQpOworCWlmICghSGVhcFR1cGxlSXNWYWxp ZCh0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlv biB3aXRoIE9JRCAldSIsIHJlbGlkKTsKKworCWJvdW5kID0gU3lzQ2FjaGVHZXRBdHRyKFJFTE9J RCwgdHVwbGUsCisJCQkJCQkJQW51bV9wZ19jbGFzc19yZWxwYXJ0Ym91bmQsCisJCQkJCQkJJmlz bnVsbCk7CisKKwlkZXBhcnNlZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDIocGdfZ2V0X2V4cHIsCisJ CQkJCQkJCSAgIENTdHJpbmdHZXRUZXh0RGF0dW0oVGV4dERhdHVtR2V0Q1N0cmluZyhib3VuZCkp LAorCQkJCQkJCQkgICByZWxpZCk7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCisJcmV0 dXJuIFRleHREYXR1bUdldENTdHJpbmcoZGVwYXJzZWQpOworfQorCisvKgorICogSW5zZXJ0IEpz b25iVmFsdWUga2V5IHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lk CitpbnNlcnRfanNvbmJfa2V5KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKm5hbWUpCit7 CisJSnNvbmJWYWx1ZQlrZXk7CisKKwkvKiBQdXNoIHRoZSBrZXkgKi8KKwlrZXkudHlwZSA9IGpi dlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwgPSBuYW1lOworCWtleS52YWwuc3RyaW5nLmxl biA9IHN0cmxlbihuYW1lKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9LRVksICZrZXkp OworfQorCisvKgorICogQXBwZW5kIG5ldyBqc29uYiBrZXk6dmFsdWUgcGFpcnMgdG8gdGhlIG91 dHB1dCBwYXJzZSBzdGF0ZSAtLSB2YXJhcmdzCisgKiBmdW5jdGlvbgorICoKKyAqIEFyZ3VtZW50 czoKKyAqICJzdGF0ZSI6IHRoZSBvdXRwdXQganNvbmIgc3RhdGUgd2hlcmUgZWFjaCBrZXktdmFs dWUgcGFpciBpcyBwdXNoZWQuCisgKgorICogIm51bW9ianMiOiB0aGUgbnVtYmVyIG9mIGtleTp2 YWx1ZSBwYWlycyB0byBiZSBwdXNoZWQgdG8gSnNvbmJQYXJzZVN0YXRlOworICogZm9yIGVhY2gg b25lLCBhIG5hbWUgKHN0cmluZyksIHR5cGUgKGZyb20gdGhlIGpidlR5cGUgZW51bSkgYW5kIHZh bHVlIG11c3QKKyAqIGJlIHN1cHBsaWVkLiAgVGhlIHZhbHVlIG11c3QgbWF0Y2ggdGhlIHR5cGUg Z2l2ZW47IGZvciBpbnN0YW5jZSwgamJ2Qm9vbAorICogcmVxdWlyZXMgYW4gYm9vbCwgamJ2U3Ry aW5nIHJlcXVpcmVzIGEgY2hhciAqIGFuZCBzbyBvbi4KKyAqIEVhY2ggZWxlbWVudCB0eXBlIG11 c3QgbWF0Y2ggdGhlIGNvbnZlcnNpb24gc3BlY2lmaWVyIGdpdmVuIGluIHRoZSBmb3JtYXQKKyAq IHN0cmluZywgYXMgZGVzY3JpYmVkIGluIGRkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kLgorICoK KyAqIE5vdGVzOgorICogYSkgVGhlIGNhbGxlciBjYW4gcGFzcyAiZm10IjoiZm10c3RyIiBhcyBh IHJlZ3VsYXIga2V5OnZhbHVlIHBhaXIgdG8gdGhpcywKKyAqIG5vIHNwZWNpYWwgaGFuZGxpbmcg bmVlZGVkIGZvciB0aGF0LgorICogYikgVGhlIGNhbGxlciBuZWVkIHRvIGNhcmVmdWxseSBwYXNz IHNldHMgb2YgYXJndW1lbnRzLCB3ZSBkb24ndCBoYXZlIHRoZQorICogbHV4dXJ5IG9mIHNwcmlu dGYtbGlrZSBjb21waWxlciB3YXJuaW5ncyBmb3IgbWFsZm9ybWVkIGFyZ3VtZW50IGxpc3RzLgor ICovCitzdGF0aWMgdm9pZAorbmV3X2pzb25iX1ZBKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGlu dCBudW1vYmpzLC4uLikKK3sKKwl2YV9saXN0CQlhcmdzOworCWludAkJCWk7CisJSnNvbmJWYWx1 ZQl2YWw7CisKKwkvKiBBbmQgcHJvY2VzcyB0aGUgZ2l2ZW4gdmFyYXJncyAqLworCXZhX3N0YXJ0 KGFyZ3MsIG51bW9ianMpOworCisJZm9yIChpID0gMDsgaSA8IG51bW9ianM7IGkrKykKKwl7CisJ CWNoYXIJICAgKm5hbWU7CisJCWVudW0gamJ2VHlwZSB0eXBlOworCisJCW5hbWUgPSB2YV9hcmco YXJncywgY2hhciAqKTsKKwkJdHlwZSA9IHZhX2FyZyhhcmdzLCBlbnVtIGpidlR5cGUpOworCisJ CS8qIFB1c2ggdGhlIGtleSBmaXJzdCAqLworCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCBuYW1l KTsKKworCQkvKgorCQkgKiBGb3IgYWxsIHBhcmFtIHR5cGVzIG90aGVyIHRoYW4gamJ2TnVsbCwg dGhlcmUgbXVzdCBiZSBhIHZhbHVlIGluCisJCSAqIHRoZSB2YXJhcmdzLiBGZXRjaCBpdCBhbmQg YWRkIHRoZSBmdWxseSBmb3JtZWQgc3Vib2JqZWN0IGludG8gdGhlCisJCSAqIG1haW4gb2JqZWN0 LgorCQkgKi8KKwkJc3dpdGNoICh0eXBlKQorCQl7CisJCQljYXNlIGpidk51bGw6CisJCQkJLyog TnVsbCBwYXJhbXMgZG9uJ3QgaGF2ZSBhIHZhbHVlIChvYnZpb3VzbHkpICovCisJCQkJdmFsLnR5 cGUgPSBqYnZOdWxsOworCQkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX1ZBTFVFLCAmdmFs KTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqYnZCb29sOgorCQkJCS8qIFB1c2ggdGhlIGJvb2wg dmFsdWUgKi8KKwkJCQl2YWwudHlwZSA9IGpidkJvb2w7CisJCQkJdmFsLnZhbC5ib29sZWFuID0g dmFfYXJnKGFyZ3MsIGludCk7CisJCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUs ICZ2YWwpOworCQkJCWJyZWFrOworCisJCQljYXNlIGpidlN0cmluZzoKKwkJCQkvKiBQdXNoIHRo ZSBzdHJpbmcgdmFsdWUgKi8KKwkJCQl2YWwudHlwZSA9IGpidlN0cmluZzsKKwkJCQl2YWwudmFs LnN0cmluZy52YWwgPSBwc3RyZHVwKHZhX2FyZyhhcmdzLCBjaGFyICopKTsKKwkJCQl2YWwudmFs LnN0cmluZy5sZW4gPSBzdHJsZW4odmFsLnZhbC5zdHJpbmcudmFsKTsKKwkJCQlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9WQUxVRSwgJnZhbCk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgamJ2 TnVtZXJpYzoKKwkJCQkvKiBQdXNoIHRoZSBudW1lcmljIHZhbHVlICovCisJCQkJdmFsLnR5cGUg PSBqYnZOdW1lcmljOworCQkJCXZhbC52YWwubnVtZXJpYyA9IChOdW1lcmljKQorCQkJCQlEYXR1 bUdldE51bWVyaWMoRGlyZWN0RnVuY3Rpb25DYWxsMSgKKwkJCQkJCQkJCQkJCQkJaW50OF9udW1l cmljLAorCQkJCQkJCQkJCQkJCQl2YV9hcmcoYXJncywgaW50KSkpOworCisJCQkJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfVkFMVUUsICZ2YWwpOworCQkJCWJyZWFrOworCisJCQlkZWZhdWx0 OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgamJ2VHlwZSAlZCIsIHR5cGUpOworCQl9 CisJfQorCisJdmFfZW5kKGFyZ3MpOworfQorCisvKgorICogQSBoZWxwZXIgcm91dGluZSB0byBp bnNlcnQganNvbmIgZm9yIHR5cElkIHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0 YXRpYyB2b2lkCituZXdfanNvbmJfZm9yX3R5cGUoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hh ciAqcGFyZW50S2V5LAorCQkJCSAgIE9pZCB0eXBJZCwgaW50MzIgdHlwbW9kKQoreworCU9pZAkJ CXR5cG5zcGlkOworCWNoYXIJICAgKnR5cGVfbnNwOworCWNoYXIJICAgKnR5cGVfbmFtZSA9IE5V TEw7CisJY2hhcgkgICAqdHlwbW9kc3RyOworCWJvb2wJCXR5cGVfYXJyYXk7CisKKwlBc3NlcnQo cGFyZW50S2V5KTsKKworCWZvcm1hdF90eXBlX2RldGFpbGVkKHR5cElkLCB0eXBtb2QsICZ0eXBu c3BpZCwgJnR5cGVfbmFtZSwgJnR5cG1vZHN0ciwKKwkJCQkJCSAmdHlwZV9hcnJheSk7CisKKwlp ZiAoT2lkSXNWYWxpZCh0eXBuc3BpZCkpCisJCXR5cGVfbnNwID0gZ2V0X25hbWVzcGFjZV9uYW1l X29yX3RlbXAodHlwbnNwaWQpOworCWVsc2UKKwkJdHlwZV9uc3AgPSBwc3RyZHVwKCIiKTsKKwor CWluc2VydF9qc29uYl9rZXkoc3RhdGUsIHBhcmVudEtleSk7CisJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDQsCisJ CQkJICJzY2hlbWFuYW1lIiwgamJ2U3RyaW5nLCB0eXBlX25zcCwKKwkJCQkgInR5cGVuYW1lIiwg amJ2U3RyaW5nLCB0eXBlX25hbWUsCisJCQkJICJ0eXBtb2QiLCBqYnZTdHJpbmcsIHR5cG1vZHN0 ciwKKwkJCQkgInR5cGFycmF5IiwgamJ2Qm9vbCwgdHlwZV9hcnJheSk7CisJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBBIGhlbHBlciBy b3V0aW5lIHRvIHNldCB1cCBuYW1lOiBzY2hlbWFuYW1lLCBvYmpuYW1lCisgKgorICogRWxlbWVu dHMgInNjaGVtYV9uYW1lIiBhbmQgIm9ial9uYW1lIiBhcmUgc2V0LiAgSWYgdGhlIG5hbWVzcGFj ZSBPSUQKKyAqIGNvcnJlc3BvbmRzIHRvIGEgdGVtcCBzY2hlbWEsIHRoYXQncyBzZXQgdG8gInBn X3RlbXAiLgorICoKKyAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhvc2UgdHdvIGVsZW1lbnQg dHlwZXMgaXMgd2hldGhlciB0aGUgb2JqX25hbWUgd2lsbAorICogYmUgcXVvdGVkIGFzIGFuIGlk ZW50aWZpZXIgb3Igbm90LCB3aGljaCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgdGhpcyByb3V0aW5l CisgKiBjb25jZXJucyBpdHNlbGYgd2l0aDsgdGhhdCB3aWxsIGJlIHVwIHRvIHRoZSBleHBhbmQg ZnVuY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkCituZXdfanNvbmJfZm9yX3F1YWxuYW1lKEpzb25i UGFyc2VTdGF0ZSAqc3RhdGUsIE9pZCBuc3BpZCwgY2hhciAqb2JqTmFtZSwKKwkJCQkJICAgY2hh ciAqa2V5TmFtZSwgYm9vbCBjcmVhdGVPYmplY3QpCit7CisJY2hhcgkgICAqbmFtZXNwYWNlOwor CisJaWYgKGlzQW55VGVtcE5hbWVzcGFjZShuc3BpZCkpCisJCW5hbWVzcGFjZSA9IHBzdHJkdXAo InBnX3RlbXAiKTsKKwllbHNlCisJCW5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZShuc3Bp ZCk7CisKKwkvKiBQdXNoIHRoZSBrZXkgZmlyc3QgKi8KKwlpZiAoa2V5TmFtZSkKKwkJaW5zZXJ0 X2pzb25iX2tleShzdGF0ZSwga2V5TmFtZSk7CisKKwlpZiAoY3JlYXRlT2JqZWN0KQorCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJbmV3X2pzb25i X1ZBKHN0YXRlLCAyLAorCQkJCSAic2NoZW1hbmFtZSIsIGpidlN0cmluZywgbmFtZXNwYWNlLAor CQkJCSAib2JqbmFtZSIsIGpidlN0cmluZywgb2JqTmFtZSk7CisKKwlpZiAoY3JlYXRlT2JqZWN0 KQorCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKwor LyoKKyAqIEEgaGVscGVyIHJvdXRpbmUgdG8gc2V0IHVwIG5hbWU6ICdzY2hlbWFuYW1lLCBvYmpu YW1lJyB3aGVyZSB0aGUgb2JqZWN0IGlzCisgKiBzcGVjaWZpZWQgYnkgY2xhc3NJZCBhbmQgb2Jq SWQuCisgKi8KK3N0YXRpYyB2b2lkCituZXdfanNvbmJfZm9yX3F1YWxuYW1lX2lkKEpzb25iUGFy c2VTdGF0ZSAqc3RhdGUsIE9pZCBjbGFzc0lkLCBPaWQgb2JqZWN0SWQsCisJCQkJCQkgIGNoYXIg KmtleU5hbWUsIGJvb2wgY3JlYXRlT2JqZWN0KQoreworCVJlbGF0aW9uCWNhdGFsb2c7CisJSGVh cFR1cGxlCWNhdG9iajsKKwlEYXR1bQkJb2JqX25zcDsKKwlEYXR1bQkJb2JqX25hbWU7CisJQXR0 ck51bWJlcglBbnVtX25hbWU7CisJQXR0ck51bWJlcglBbnVtX25hbWVzcGFjZTsKKwlBdHRyTnVt YmVyCUFudW1fb2lkID0gZ2V0X29iamVjdF9hdHRudW1fb2lkKGNsYXNzSWQpOworCWJvb2wJCWlz bnVsbDsKKworCWNhdGFsb2cgPSB0YWJsZV9vcGVuKGNsYXNzSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwljYXRvYmogPSBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkKGNhdGFsb2csIEFudW1fb2lk LCBvYmplY3RJZCk7CisJaWYgKCFjYXRvYmopCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBvYmplY3Qgd2l0aCBPSUQgJXUgb2YgY2F0YWxvZyBcIiVzXCIiLAorCQkJIG9i amVjdElkLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShjYXRhbG9nKSk7CisJQW51bV9uYW1lID0g Z2V0X29iamVjdF9hdHRudW1fbmFtZShjbGFzc0lkKTsKKwlBbnVtX25hbWVzcGFjZSA9IGdldF9v YmplY3RfYXR0bnVtX25hbWVzcGFjZShjbGFzc0lkKTsKKworCW9ial9uc3AgPSBoZWFwX2dldGF0 dHIoY2F0b2JqLCBBbnVtX25hbWVzcGFjZSwgUmVsYXRpb25HZXREZXNjcihjYXRhbG9nKSwKKwkJ CQkJCSAgICZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJudWxsIG5hbWVz cGFjZSBmb3Igb2JqZWN0ICV1Iiwgb2JqZWN0SWQpOworCisJb2JqX25hbWUgPSBoZWFwX2dldGF0 dHIoY2F0b2JqLCBBbnVtX25hbWUsIFJlbGF0aW9uR2V0RGVzY3IoY2F0YWxvZyksCisJCQkJCQkJ JmlzbnVsbCk7CisJaWYgKGlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgIm51bGwgYXR0cmlidXRlIG5h bWUgZm9yIG9iamVjdCAldSIsIG9iamVjdElkKTsKKworCW5ld19qc29uYl9mb3JfcXVhbG5hbWUo c3RhdGUsIERhdHVtR2V0T2JqZWN0SWQob2JqX25zcCksCisJCQkJCQkgICBOYW1lU3RyKCpEYXR1 bUdldE5hbWUob2JqX25hbWUpKSwKKwkJCQkJCSAgIGtleU5hbWUsIGNyZWF0ZU9iamVjdCk7CisJ dGFibGVfY2xvc2UoY2F0YWxvZywgQWNjZXNzU2hhcmVMb2NrKTsKK30KKworLyoKKyAqIEEgaGVs cGVyIHJvdXRpbmUgdG8gaW5zZXJ0IGtleTp2YWx1ZSB3aGVyZSB2YWx1ZSBpcyBhcnJheSBvZiBx dWFsbmFtZSB0bworICogdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQK K25ld19qc29uYkFycmF5X2Zvcl9xdWFsbmFtZV9pZChKc29uYlBhcnNlU3RhdGUgKnN0YXRlLAor CQkJCQkJCSAgIGNoYXIgKmtleW5hbWUsIExpc3QgKmFycmF5KQoreworCUxpc3RDZWxsICAgKmxj OworCisJLyogUHVzaCB0aGUga2V5IGZpcnN0ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwg a2V5bmFtZSk7CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVM TCk7CisKKwkvKiBQdXNoIHRoZSBhcnJheSBlbGVtZW50cyBub3cgKi8KKwlmb3JlYWNoKGxjLCBh cnJheSkKKwkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxhdGlv bklkLCBsZmlyc3Rfb2lkKGxjKSwKKwkJCQkJCQkJICBOVUxMLCB0cnVlKTsKKworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7Cit9CisKKy8qCisgKiBBIGhlbHBl ciByb3V0aW5lIHRvIGluc2VydCBjb2xsYXRlIG9iamVjdCBmb3IgY29sdW1uCisgKiBkZWZpbml0 aW9uIHRvIHRoZSBvdXRwdXQgcGFyc2Ugc3RhdGUuCisgKi8KK3N0YXRpYyB2b2lkCitpbnNlcnRf Y29sbGF0ZV9vYmplY3QoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LCBj aGFyICpmbXQsCisJCQkJCSAgT2lkIGNsYXNzSWQsIE9pZCBvYmplY3RJZCwgY2hhciAqa2V5KQor eworCS8qCisJICogSW5zZXJ0IHBhcmVudCBrZXkgZm9yIHdoaWNoIHdlIGFyZSBnb2luZyB0byBj cmVhdGUgdmFsdWUgb2JqZWN0IGhlcmUuCisJICovCisJaWYgKHBhcmVudEtleSkKKwkJaW5zZXJ0 X2pzb25iX2tleShzdGF0ZSwgcGFyZW50S2V5KTsKKworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQi LCBqYnZTdHJpbmcsIGZtdCk7CisKKwkvKiBwdXNoIG9iamVjdCBub3cgKi8KKwluZXdfanNvbmJf Zm9yX3F1YWxuYW1lX2lkKHN0YXRlLCBjbGFzc0lkLCBvYmplY3RJZCwga2V5LCB0cnVlKTsKKwor CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgor ICogQSBoZWxwZXIgcm91dGluZSB0byBpbnNlcnQgaWRlbnRpdHkgb2JqZWN0IGZvciB0aGUgdGFi bGUgZGVmaW5pdGlvbgorICogdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KKyAqLworc3RhdGlj IHZvaWQKK2luc2VydF9pZGVudGl0eV9vYmplY3QoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgT2lk IG5zcGlkLCBjaGFyICpyZWxuYW1lKQoreworCW5ld19qc29uYl9mb3JfcXVhbG5hbWUoc3RhdGUs IG5zcGlkLCByZWxuYW1lLCAiaWRlbnRpdHkiLCB0cnVlKTsKK30KKworLyoKKyAqIERlcGFyc2Ug dGhlIHNlcXVlbmNlIENBQ0hFIG9wdGlvbiB0byBKc29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4 CisgKiBDQUNIRSAle3ZhbHVlfQorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2Vx X0NhY2hlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBz ZXFkYXRhKQoreworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVM TCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiQ0FD SEUgJXt2YWx1ZX1zIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgImNhY2hlIiwKKwkJCQkg InZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEt PnNlcWNhY2hlKSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBDWUNMRSBvcHRpb24gdG8gSnNv bmIuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqICV7bm99cyBDWUNMRQorICovCitzdGF0aWMg aW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX0N5Y2xlX3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpz dGF0ZSwgRm9ybV9wZ19zZXF1ZW5jZSBzZXFkYXRhKQoreworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJ CSAiZm10IiwgamJ2U3RyaW5nLCAiJXtub31zIENZQ0xFIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0 cmluZywgImN5Y2xlIiwKKwkJCQkgIm5vIiwgamJ2U3RyaW5nLCBzZXFkYXRhLT5zZXFjeWNsZSA/ CisJCQkJICIiIDogIk5PIik7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBJTkNSRU1FTlQgQlkg b3B0aW9uIHRvIEpzb25iCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIElOQ1JFTUVOVCBCWSAl e3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNlX1NlcV9JbmNyZW1lbnRC eV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCUZvcm1fcGdfc2VxdWVu Y2Ugc2VxZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1Qs IE5VTEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0cmluZywg IklOQ1JFTUVOVCBCWSAle3ZhbHVlfXMiLAorCQkJCSAiY2xhdXNlIiwgamJ2U3RyaW5nLCAic2Vx aW5jcmVtZW50IiwKKwkJCQkgInZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2 NF9GT1JNQVQsIHNlcWRhdGEtPnNlcWluY3JlbWVudCkpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVu Y2UgTUFYVkFMVUUgb3B0aW9uIHRvIEpzb25iLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBN QVhWQUxVRSAle3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNlX1NlcV9N YXh2YWx1ZV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsCisJCQkJCQkJIEZvcm1fcGdf c2VxdWVuY2Ugc2VxZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9P QkpFQ1QsIE5VTEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0 cmluZywgIk1BWFZBTFVFICV7dmFsdWV9cyIsCisJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJt YXh2YWx1ZSIsCisJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKKwkJCQkgcHNwcmludGYoSU5UNjRf Rk9STUFULCBzZXFkYXRhLT5zZXFtYXgpKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9F TkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE1JTlZB TFVFIG9wdGlvbiB0byBKc29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBNSU5WQUxVRSAl e3ZhbHVlfXMKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkZXBhcnNlX1NlcV9NaW52YWx1ZV90 b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsCisJCQkJCQkJIEZvcm1fcGdfc2VxdWVuY2Ug c2VxZGF0YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0cmluZywgIk1J TlZBTFVFICV7dmFsdWV9cyIsCisJCQkJICJjbGF1c2UiLCBqYnZTdHJpbmcsICJtaW52YWx1ZSIs CisJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKKwkJCQkgcHNwcmludGYoSU5UNjRfRk9STUFULCBz ZXFkYXRhLT5zZXFtaW4pKTsKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNU LCBOVUxMKTsKK30KKworLyoKKyAqIERlcGFyc2UgdGhlIHNlcXVlbmNlIE9XTkVEIEJZIGNvbW1h bmQuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIE9XTkVEIEJZICV7b3duZXJ9RAorICovCitz dGF0aWMgdm9pZAorZGVwYXJzZV9TZXFfT3duZWRCeV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAq c3RhdGUsIE9pZCBzZXF1ZW5jZUlkKQoreworCVJlbGF0aW9uCWRlcFJlbDsKKwlTeXNTY2FuRGVz YyBzY2FuOworCVNjYW5LZXlEYXRhIGtleXNbM107CisJSGVhcFR1cGxlCXR1cGxlOworCWJvb2wJ CWVsZW1fZm91bmQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZID0gZmFsc2U7CisKKwlkZXBSZWwg PSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJU2Nhbktl eUluaXQoJmtleXNbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRfY2xhc3NpZCwKKwkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvblJl bGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5c1sxXSwKKwkJCQlBbnVtX3BnX2RlcGVuZF9v YmppZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRH ZXREYXR1bShzZXF1ZW5jZUlkKSk7CisJU2NhbktleUluaXQoJmtleXNbMl0sCisJCQkJQW51bV9w Z19kZXBlbmRfb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0lOVDRFUSwK KwkJCQlJbnQzMkdldERhdHVtKDApKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oZGVw UmVsLCBEZXBlbmREZXBlbmRlckluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXlz KTsKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJT2lkCQkJb3duZXJJZDsKKwkJRm9ybV9wZ19kZXBlbmQgZGVwZm9ybTsKKwkJ Y2hhcgkgICAqY29sbmFtZTsKKworCQlkZXBmb3JtID0gKEZvcm1fcGdfZGVwZW5kKSBHRVRTVFJV Q1QodHVwbGUpOworCisJCS8qIE9ubHkgY29uc2lkZXIgQVVUTyBkZXBlbmRlbmNpZXMgb24gcGdf Y2xhc3MgKi8KKwkJaWYgKGRlcGZvcm0tPmRlcHR5cGUgIT0gREVQRU5ERU5DWV9BVVRPKQorCQkJ Y29udGludWU7CisJCWlmIChkZXBmb3JtLT5yZWZjbGFzc2lkICE9IFJlbGF0aW9uUmVsYXRpb25J ZCkKKwkJCWNvbnRpbnVlOworCQlpZiAoZGVwZm9ybS0+cmVmb2Jqc3ViaWQgPD0gMCkKKwkJCWNv bnRpbnVlOworCisJCW93bmVySWQgPSBkZXBmb3JtLT5yZWZvYmppZDsKKwkJY29sbmFtZSA9IGdl dF9hdHRuYW1lKG93bmVySWQsIGRlcGZvcm0tPnJlZm9ianN1YmlkLCBmYWxzZSk7CisKKwkJLyog bWFyayB0aGUgYmVnaW4gb2Ygb3duZXIncyBkZWZpbml0aW9uIG9iamVjdCAqLworCQlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCW5ld19qc29uYl9W QShzdGF0ZSwgMiwKKwkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJPV05FRCBCWSAle293bmVyfUQi LAorCQkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgIm93bmVkIik7CisKKwkJLyogb3duZXIga2V5 ICovCisJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJvd25lciIpOworCisJCS8qIG93bmVyIHZh bHVlIGJlZ2luICovCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwg TlVMTCk7CisKKwkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRpb25SZWxh dGlvbklkLAorCQkJCQkJCQkgIG93bmVySWQsIE5VTEwsIGZhbHNlKTsKKwkJbmV3X2pzb25iX1ZB KHN0YXRlLCAxLCAiYXR0cm5hbWUiLCBqYnZTdHJpbmcsIGNvbG5hbWUpOworCisJCS8qIG93bmVy IHZhbHVlIGVuZCAqLworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBO VUxMKTsKKworCQkvKiBtYXJrIHRoZSBlbmQgb2Ygb3duZXIncyBkZWZpbml0aW9uIG9iamVjdCAq LworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJZWxlbV9mb3VuZCA9IHRydWU7CisjZW5kaWYKKwl9 CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXJlbGF0aW9uX2Nsb3NlKGRlcFJlbCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogSWYgdGhlcmUncyBubyBvd25lciBjb2x1bW4sIGFz c2VydC4gVGhlIGNhbGxlciBtdXN0IGhhdmUgY2hlY2tlZAorCSAqIHByZXNlbmNlIG9mIG93bmVk X2J5IGVsZW1lbnQgYmVmb3JlIGludm9raW5nIHRoaXMuCisJICovCisJQXNzZXJ0KGVsZW1fZm91 bmQpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgc2VxdWVuY2UgU1RBUlQgV0lUSCBvcHRpb24g dG8gSnNvbmIuCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIFNUQVJUIFdJVEggJXt2YWx1ZX1z CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGVwYXJzZV9TZXFfU3RhcnR3aXRoX3RvSnNvbmIo SnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwKKwkJCQkJCQkgIEZvcm1fcGdfc2VxdWVuY2Ugc2VxZGF0 YSkKK3sKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOwor CW5ld19qc29uYl9WQShzdGF0ZSwgMywKKwkJCQkgImZtdCIsIGpidlN0cmluZywgIlNUQVJUIFdJ VEggJXt2YWx1ZX1zIiwKKwkJCQkgImNsYXVzZSIsIGpidlN0cmluZywgInN0YXJ0IiwKKwkJCQkg InZhbHVlIiwgamJ2U3RyaW5nLAorCQkJCSBwc3ByaW50ZihJTlQ2NF9GT1JNQVQsIHNlcWRhdGEt PnNlcXN0YXJ0KSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5jZSBSRVNUQVJUIG9wdGlvbiB0byBK c29uYgorICoKKyAqIFZlcmJvc2Ugc3ludGF4CisgKiBSRVNUQVJUICV7dmFsdWV9cworICovCitz dGF0aWMgaW5saW5lIHZvaWQKK2RlcGFyc2VfU2VxX1Jlc3RhcnRfdG9Kc29uYihKc29uYlBhcnNl U3RhdGUgKnN0YXRlLCBpbnQ2NCBsYXN0X3ZhbHVlKQoreworCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAzLAorCQkJ CSAiZm10IiwgamJ2U3RyaW5nLCAiUkVTVEFSVCAle3ZhbHVlfXMiLAorCQkJCSAiY2xhdXNlIiwg amJ2U3RyaW5nLCAicmVzdGFydCIsCisJCQkJICJ2YWx1ZSIsIGpidlN0cmluZywKKwkJCQkgcHNw cmludGYoSU5UNjRfRk9STUFULCBsYXN0X3ZhbHVlKSk7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRl LCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzZXF1ZW5j ZSBBUyBvcHRpb24uCisgKgorICogVmVyYm9zZSBzeW50YXgKKyAqIEFTICV7c2VxdHlwZX1UCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGVwYXJzZV9TZXFfQXNfdG9Kc29uYihKc29uYlBhcnNl U3RhdGUgKnN0YXRlLCBGb3JtX3BnX3NlcXVlbmNlIHNlcWRhdGEpCit7CisJcHVzaEpzb25iVmFs dWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwluZXdfanNvbmJfVkEoc3RhdGUs IDEsICJmbXQiLCBqYnZTdHJpbmcsICJBUyAle3NlcXR5cGV9VCIpOworCW5ld19qc29uYl9mb3Jf dHlwZShzdGF0ZSwgInNlcXR5cGUiLCBzZXFkYXRhLT5zZXF0eXBpZCwgLTEpOworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJz ZSB0aGUgZGVmaW5pdGlvbiBvZiBjb2x1bW4gaWRlbnRpdHkgdG8gSnNvbmIuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIEdFTkVSQVRFRCAle29wdGlvbn1zIEFTIElERU5USVRZICV7aWRlbnRp dHlfdHlwZX1zICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKQorICovCitzdGF0aWMgdm9pZAorZGVw YXJzZV9Db2x1bW5JZGVudGl0eV90b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIg KnBhcmVudEtleSwKKwkJCQkJCQkgICBPaWQgc2VxcmVsaWQsIGNoYXIgaWRlbnRpdHkpCit7CisJ Rm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCVNlcXVlbmNlX3ZhbHVlcyAqc2VxdmFsdWVzOwor CVN0cmluZ0luZm9EYXRhIGZtdFN0cjsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCisJ LyoKKwkgKiBJbnNlcnQgcGFyZW50IGtleSBmb3Igd2hpY2ggd2UgYXJlIGdvaW5nIHRvIGNyZWF0 ZSB2YWx1ZSBvYmplY3QgaGVyZS4KKwkgKi8KKwlpZiAocGFyZW50S2V5KQorCQlpbnNlcnRfanNv bmJfa2V5KHN0YXRlLCBwYXJlbnRLZXkpOworCisJLyogY3JlYXRlIG9iamVjdCBub3cgZm9yIHZh bHVlIG9mIGlkZW50aXR5X2NvbHVtbiAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JF R0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBpZGVudGl0eV90eXBlIG9iamVjdCBjcmVhdGlvbiAq LworCWlmIChpZGVudGl0eSA9PSBBVFRSSUJVVEVfSURFTlRJVFlfQUxXQVlTIHx8CisJCWlkZW50 aXR5ID09IEFUVFJJQlVURV9JREVOVElUWV9CWV9ERUZBVUxUKQorCXsKKwkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmZm10U3RyLCAiJXtpZGVudGl0eV90eXBlfXMiKTsKKwkJaW5zZXJ0X2pzb25i X2tleShzdGF0ZSwgImlkZW50aXR5X3R5cGUiKTsKKworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJ CQkJICJmbXQiLCBqYnZTdHJpbmcsCisJCQkJCSJHRU5FUkFURUQgJXtvcHRpb259cyBBUyBJREVO VElUWSIsCisJCQkJCSAib3B0aW9uIiwgamJ2U3RyaW5nLAorCQkJCQkgKGlkZW50aXR5ID09IEFU VFJJQlVURV9JREVOVElUWV9BTFdBWVMgPworCQkJCQkgICJBTFdBWVMiIDogIkJZIERFRkFVTFQi KSk7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCX0K KworCS8qIHNlcV9kZWZpbml0aW9uIGFycmF5IG9iamVjdCBjcmVhdGlvbiAqLworCWluc2VydF9q c29uYl9rZXkoc3RhdGUsICJzZXFfZGVmaW5pdGlvbiIpOworCisJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiICggJXtzZXFfZGVmaW5pdGlvbjogfXMgKSIpOworCisJcHVzaEpzb25i VmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOworCisJc2VxdmFsdWVzID0gZ2V0 X3NlcXVlbmNlX3ZhbHVlcyhzZXFyZWxpZCk7CisJc2VxZm9ybSA9IHNlcXZhbHVlcy0+c2VxZm9y bTsKKworCS8qIERlZmluaXRpb24gZWxlbWVudHMgKi8KKwlkZXBhcnNlX1NlcV9DYWNoZV90b0pz b25iKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9DeWNsZV90b0pzb25iKHN0YXRlLCBz ZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3Jt KTsKKwlkZXBhcnNlX1NlcV9NaW52YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBh cnNlX1NlcV9NYXh2YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwlkZXBhcnNlX1NlcV9T dGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJzZV9TZXFfUmVzdGFydF90 b0pzb25iKHN0YXRlLCBzZXF2YWx1ZXMtPmxhc3RfdmFsdWUpOworCS8qIFdlIHB1cnBvc2VmdWxs eSBkbyBub3QgZW1pdCBPV05FRCBCWSBoZXJlICovCisKKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNv IGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAi Zm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIuZGF0YSk7CisK KwkvKiBlbmQgb2YgaWRlbmRpdHlfY29sdW1uIG9iamVjdCAqLworCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworfQorCisvKgorICogRGVwYXJzZSBhIENvbHVt bkRlZiBub2RlIHdpdGhpbiBhIHJlZ3VsYXIgKG5vbi10eXBlZCkgdGFibGUgY3JlYXRpb24uCisg KgorICogTk9UIE5VTEwgY29uc3RyYWludHMgaW4gdGhlIGNvbHVtbiBkZWZpbml0aW9uIGFyZSBl bWl0dGVkIGRpcmVjdGx5IGluIHRoZQorICogY29sdW1uIGRlZmluaXRpb24gYnkgdGhpcyByb3V0 aW5lOyBvdGhlciBjb25zdHJhaW50cyBtdXN0IGJlIGVtaXR0ZWQKKyAqIGVsc2V3aGVyZSAodGhl IGluZm8gaW4gdGhlIHBhcnNlIG5vZGUgaXMgaW5jb21wbGV0ZSBhbnl3YXkpLgorICoKKyAqIFZl cmJvc2Ugc3ludGF4CisgKiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3Jh Z2V9cyAle2NvbXByZXNzaW9ufXMgJXtjb2xsYXRpb259cworICogICV7bm90X251bGx9cyAle2Rl ZmF1bHR9cyAle2lkZW50aXR5X2NvbHVtbn1zICV7Z2VuZXJhdGVkX2NvbHVtbn1zIgorICovCitz dGF0aWMgdm9pZAorZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0 YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCSAgTGlzdCAqZHBjb250ZXh0LCBib29sIGNv bXBvc2l0ZSwgQ29sdW1uRGVmICpjb2xkZWYpCit7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdl dFJlbGlkKHJlbGF0aW9uKTsKKwlIZWFwVHVwbGUJYXR0clR1cDsKKwlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHRyRm9ybTsKKwlPaWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCU9pZAkJCXR5cGNv bGxhdGlvbjsKKwlib29sCQlzYXdfbm90bnVsbDsKKwlMaXN0Q2VsbCAgICpjZWxsOworCVN0cmlu Z0luZm9EYXRhIGZtdFN0cjsKKworCWluaXRTdHJpbmdJbmZvKCZmbXRTdHIpOworCisJLyoKKwkg KiBJbmhlcml0ZWQgY29sdW1ucyB3aXRob3V0IGxvY2FsIGRlZmluaXRpb25zIHNob3VsZCBiZSBz a2lwcGVkLiBXZSBkb24ndAorCSAqIHdhbnQgdGhvc2UgdG8gYmUgcGFydCBvZiBmaW5hbCBzdHJp bmcuCisJICovCisJaWYgKCFjb2xkZWYtPmlzX2xvY2FsKQorCQlyZXR1cm47CisKKwlhdHRyVHVw ID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlkLCBjb2xkZWYtPmNvbG5hbWUpOworCWlmICgh SGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5k IGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uICV1IiwKKwkJCSBjb2xk ZWYtPmNvbG5hbWUsIHJlbGlkKTsKKwlhdHRyRm9ybSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VU U1RSVUNUKGF0dHJUdXApOworCisJZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKHJlbGlkLCBhdHRyRm9y bS0+YXR0bnVtLAorCQkJCQkJICAmdHlwaWQsICZ0eXBtb2QsICZ0eXBjb2xsYXRpb24pOworCisJ Lyogc3RhcnQgbWFraW5nIGNvbHVtbiBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUs IFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJLyogY3JlYXRlIG5hbWUgYW5kIHR5cGUgZWxl bWVudHMgZm9yIGNvbHVtbiAqLworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiV7 bmFtZX1JIik7CisJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCSAibmFtZSIsIGpidlN0cmlu ZywgY29sZGVmLT5jb2xuYW1lLAorCQkJCSAidHlwZSIsIGpidlN0cmluZywgImNvbHVtbiIpOwor CisJLyoKKwkgKiBjcmVhdGUgY29sdHlwZSBvYmplY3QgaGF2aW5nIDQgZWxlbWVudHM6IHNjaGVt YW5hbWUsIHR5cGVuYW1lLCB0eXBlbW9kLAorCSAqIHR5cGVhcnJheQorCSAqLworCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2NvbHR5cGV9VCIpOworCW5ld19qc29uYl9mb3Jf dHlwZShzdGF0ZSwgImNvbHR5cGUiLCB0eXBpZCwgdHlwbW9kKTsKKworCS8qIFNUT1JBR0UgY2xh dXNlICovCisJaWYgKCFjb21wb3NpdGUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUs IDEsCisJCQkJCSAiY29sc3RvcmFnZSIsIGpidlN0cmluZywKKwkJCQkJIHN0b3JhZ2VfbmFtZShh dHRyRm9ybS0+YXR0c3RvcmFnZSkpOworCX0KKworCS8qIENPTVBSRVNTSU9OIGNsYXVzZSAqLwor CWlmIChjb2xkZWYtPmNvbXByZXNzaW9uKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Zm10U3RyLCAiICV7Y29tcHJlc3Npb259cyIpOworCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAi Y29tcHJlc3Npb24iKTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNU LCBOVUxMKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAorCQkJCQkgImZtdCIsIGpidlN0cmlu ZywgIkNPTVBSRVNTSU9OICV7Y29tcHJlc3Npb25fbWV0aG9kfUkiLAorCQkJCQkgImNvbXByZXNz aW9uX21ldGhvZCIsIGpidlN0cmluZywgY29sZGVmLT5jb21wcmVzc2lvbik7CisJCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCX0KKworCS8qIENPTExBVEUg Y2xhdXNlICovCisJaWYgKE9pZElzVmFsaWQodHlwY29sbGF0aW9uKSkKKwl7CisJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2NvbGxhdGlvbn1zIik7CisJCWluc2VydF9jb2xs YXRlX29iamVjdChzdGF0ZSwgImNvbGxhdGlvbiIsCisJCQkJCQkJICAiQ09MTEFURSAle2NvbGxh dGlvbl9uYW1lfUQiLAorCQkJCQkJCSAgQ29sbGF0aW9uUmVsYXRpb25JZCwgdHlwY29sbGF0aW9u LAorCQkJCQkJCSAgImNvbGxhdGlvbl9uYW1lIik7CisJfQorCisJaWYgKCFjb21wb3NpdGUpCisJ eworCQlPaWQJCQlzZXFyZWxpZCA9IEludmFsaWRPaWQ7CisKKwkJLyoKKwkJICogRW1pdCBhIE5P VCBOVUxMIGRlY2xhcmF0aW9uIGlmIG5lY2Vzc2FyeS4gIE5vdGUgdGhhdCB3ZSBjYW5ub3QKKwkJ ICogdHJ1c3QgcGdfYXR0cmlidXRlLmF0dG5vdG51bGwgaGVyZSwgYmVjYXVzZSB0aGF0IGJpdCBp cyBhbHNvIHNldAorCQkgKiB3aGVuIHByaW1hcnkga2V5cyBhcmUgc3BlY2lmaWVkOyB3ZSBtdXN0 IG5vdCBlbWl0IGEgTk9UIE5VTEwKKwkJICogY29uc3RyYWludCBpbiB0aGF0IGNhc2UsIHVubGVz cyBleHBsaWNpdGx5IHNwZWNpZmllZC4gIFRoZXJlZm9yZSwKKwkJICogd2Ugc2NhbiB0aGUgbGlz dCBvZiBjb25zdHJhaW50cyBhdHRhY2hlZCB0byB0aGlzIGNvbHVtbiB0bworCQkgKiBkZXRlcm1p bmUgd2hldGhlciB3ZSBuZWVkIHRvIGVtaXQgYW55dGhpbmcuIChGb3J0dW5hdGVseSwgTk9UIE5V TEwKKwkJICogY29uc3RyYWludHMgY2Fubm90IGJlIHRhYmxlIGNvbnN0cmFpbnRzLikKKwkJICoK KwkJICogSW4gdGhlIEFMVEVSIFRBQkxFIGNhc2VzLCB3ZSBhbHNvIGFkZCBhIE5PVCBOVUxMIGlm IHRoZSBjb2xEZWYgaXMKKwkJICogbWFya2VkIGlzX25vdF9udWxsLgorCQkgKi8KKwkJc2F3X25v dG51bGwgPSBmYWxzZTsKKwkJZm9yZWFjaChjZWxsLCBjb2xkZWYtPmNvbnN0cmFpbnRzKQorCQl7 CisJCQlDb25zdHJhaW50ICpjb25zdHIgPSAoQ29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisK KwkJCWlmIChjb25zdHItPmNvbnR5cGUgPT0gQ09OU1RSX05PVE5VTEwpCisJCQl7CisJCQkJc2F3 X25vdG51bGwgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJLyogTk9UIE5VTEwg Ki8KKwkJaWYgKHNhd19ub3RudWxsKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtub3RfbnVsbH1zIik7CisJCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJ CQkgIm5vdF9udWxsIiwgamJ2U3RyaW5nLCAiTk9UIE5VTEwiKTsKKwkJfQorCisKKwkJLyogREVG QVVMVCAqLworCQlpZiAoYXR0ckZvcm0tPmF0dGhhc2RlZiAmJgorCQkJY29sZGVmLT5nZW5lcmF0 ZWQgIT0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQpCisJCXsKKwkJCWNoYXIJICAgKmRlZnN0 cjsKKworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7ZGVmYXVsdH1zIik7 CisKKwkJCWRlZnN0ciA9IFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZv cm0tPmF0dG51bSwKKwkJCQkJCQkJCQkJICBkcGNvbnRleHQpOworCisJCQlpbnNlcnRfanNvbmJf a2V5KHN0YXRlLCAiZGVmYXVsdCIpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVH SU5fT0JKRUNULCBOVUxMKTsKKwkJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCSAiZm10 IiwgamJ2U3RyaW5nLCAiREVGQVVMVCAle2RlZmF1bHR9cyIsCisJCQkJCQkgImRlZmF1bHQiLCBq YnZTdHJpbmcsIGRlZnN0cik7CisKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9P QkpFQ1QsIE5VTEwpOworCQl9CisKKwkJLyogSURFTlRJVFkgQ09MVU1OICovCisJCWlmIChjb2xk ZWYtPmlkZW50aXR5KQorCQl7CisJCQkvKgorCQkJICogRm9yIGlkZW50aXR5IGNvbHVtbiwgZmlu ZCB0aGUgc2VxdWVuY2Ugb3duZWQgYnkgY29sdW1uIGluIG9yZGVyCisJCQkgKiB0byBkZXBhcnNl IHRoZSBjb2x1bW4gZGVmaW5pdGlvbi4KKwkJCSAqLworCQkJc2VxcmVsaWQgPSBnZXRJZGVudGl0 eVNlcXVlbmNlKHJlbGlkLCBhdHRyRm9ybS0+YXR0bnVtLCB0cnVlKTsKKwkJCWlmIChPaWRJc1Zh bGlkKHNlcXJlbGlkKSAmJiBjb2xkZWYtPmlkZW50aXR5U2VxdWVuY2UpCisJCQkJc2VxcmVsaWQg PSBSYW5nZVZhckdldFJlbGlkKGNvbGRlZi0+aWRlbnRpdHlTZXF1ZW5jZSwKKwkJCQkJCQkJCQkJ Tm9Mb2NrLCBmYWxzZSk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHNlcXJlbGlkKSkKKwkJCXsKKwkJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZGVudGl0eV9jb2x1bW59cyIp OworCQkJCWRlcGFyc2VfQ29sdW1uSWRlbnRpdHlfdG9Kc29uYihzdGF0ZSwgImlkZW50aXR5X2Nv bHVtbiIsCisJCQkJCQkJCQkJCSAgIHNlcXJlbGlkLAorCQkJCQkJCQkJCQkgICBjb2xkZWYtPmlk ZW50aXR5KTsKKwkJCX0KKwkJfQorCisKKwkJLyogR0VORVJBVEVEIENPTFVNTiBFWFBSRVNTSU9O ICovCisJCWlmIChjb2xkZWYtPmdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JF RCkKKwkJeworCQkJY2hhcgkgICAqZGVmc3RyOworCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXtnZW5lcmF0ZWRfY29sdW1ufXMiKTsKKwkJCWRlZnN0ciA9IFJlbGF0aW9u R2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwKKwkJCQkJCQkJCQkJ ICBkcGNvbnRleHQpOworCisJCQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAiZ2VuZXJhdGVkX2Nv bHVtbiIpOworCQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxM KTsKKwkJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAi R0VORVJBVEVEIEFMV0FZUyBBUyIKKwkJCQkJCSAiICgle2dlbmVyYXRpb25fZXhwcn1zKSBTVE9S RUQiLAorCQkJCQkJICJnZW5lcmF0aW9uX2V4cHIiLCBqYnZTdHJpbmcsIGRlZnN0cik7CisKKwkJ CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCQl9CisJfQor CisJUmVsZWFzZVN5c0NhY2hlKGF0dHJUdXApOworCisJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBu b3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJlZShmbXRTdHIuZGF0 YSk7CisKKwkvKiBtYXJrIHRoZSBlbmQgb2Ygb25lIGNvbHVtbiBvYmplY3QgKi8KKwlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKK30KKworLyoKKyAqIEhlbHBl ciBmb3IgZGVwYXJzZV9Db2x1bW5EZWZfdHlwZWRfdG9Kc29uYigpCisgKgorICogUmV0dXJucyB0 cnVlIGlmIHdlIG5lZWQgdG8gZGVwYXJzZSBhIENvbHVtbkRlZiBub2RlIHdpdGhpbiBhIHR5cGVk CisgKiB0YWJsZSBjcmVhdGlvbi4KKyAqLworc3RhdGljIGJvb2wKK2RlcGFyc2VfQ29sRGVmX3R5 cGVkX25lZWRlZChSZWxhdGlvbiByZWxhdGlvbiwgQ29sdW1uRGVmICpjb2xkZWYsCisJCQkJCQkJ Rm9ybV9wZ19hdHRyaWJ1dGUgKmF0Rm9ybU91dCwgYm9vbCAqbm90bnVsbCkKK3sKKwlPaWQJCQly ZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCUhlYXBUdXBsZQlhdHRyVHVwOwor CUZvcm1fcGdfYXR0cmlidXRlIGF0dHJGb3JtOworCU9pZAkJCXR5cGlkOworCWludDMyCQl0eXBt b2Q7CisJT2lkCQkJdHlwY29sbGF0aW9uOworCWJvb2wJCXNhd19ub3RudWxsOworCUxpc3RDZWxs ICAgKmNlbGw7CisKKwlhdHRyVHVwID0gU2VhcmNoU3lzQ2FjaGVBdHROYW1lKHJlbGlkLCBjb2xk ZWYtPmNvbG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChhdHRyVHVwKSkKKwkJZWxvZyhF UlJPUiwgImNvdWxkIG5vdCBmaW5kIGNhY2hlIGVudHJ5IGZvciBjb2x1bW4gXCIlc1wiIG9mIHJl bGF0aW9uICV1IiwKKwkJCSBjb2xkZWYtPmNvbG5hbWUsIHJlbGlkKTsKKworCWF0dHJGb3JtID0g KEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoYXR0clR1cCk7CisKKwlpZiAoYXRGb3JtT3V0 KQorCQkqYXRGb3JtT3V0ID0gYXR0ckZvcm07CisKKwlnZXRfYXR0dHlwZXR5cG1vZGNvbGwocmVs aWQsIGF0dHJGb3JtLT5hdHRudW0sCisJCQkJCQkgICZ0eXBpZCwgJnR5cG1vZCwgJnR5cGNvbGxh dGlvbik7CisKKwkvKgorCSAqIFNlYXJjaCBmb3IgYSBOT1QgTlVMTCBkZWNsYXJhdGlvbi4gQXMg aW4gZGVwYXJzZV9Db2x1bW5EZWYsIHdlIHJlbHkgb24KKwkgKiBmaW5kaW5nIGEgY29uc3RyYWlu dCBvbiB0aGUgY29sdW1uIHJhdGhlciB0aGFuIGNvbGRlZi0+aXNfbm90X251bGwuCisJICogKFRo aXMgcm91dGluZSBpcyBuZXZlciB1c2VkIGZvciBBTFRFUiBjYXNlcy4pCisJICovCisJc2F3X25v dG51bGwgPSBmYWxzZTsKKwlmb3JlYWNoKGNlbGwsIGNvbGRlZi0+Y29uc3RyYWludHMpCisJewor CQlDb25zdHJhaW50ICpjb25zdHIgPSAoQ29uc3RyYWludCAqKSBsZmlyc3QoY2VsbCk7CisKKwkJ aWYgKGNvbnN0ci0+Y29udHlwZSA9PSBDT05TVFJfTk9UTlVMTCkKKwkJeworCQkJc2F3X25vdG51 bGwgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAobm90bnVsbCkKKwkJKm5vdG51 bGwgPSBzYXdfbm90bnVsbDsKKworCWlmICghc2F3X25vdG51bGwgJiYgIWF0dHJGb3JtLT5hdHRo YXNkZWYpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUoYXR0clR1cCk7CisJCXJldHVybiBmYWxzZTsK Kwl9CisKKwlSZWxlYXNlU3lzQ2FjaGUoYXR0clR1cCk7CisJcmV0dXJuIHRydWU7Cit9CisKKy8q CisgKiBEZXBhcnNlIGEgQ29sdW1uRGVmIG5vZGUgd2l0aGluIGEgdHlwZWQgdGFibGUgY3JlYXRp b24uIFRoaXMgaXMgc2ltcGxlcgorICogdGhhbiB0aGUgcmVndWxhciBjYXNlLCBiZWNhdXNlIHdl IGRvbid0IGhhdmUgdG8gZW1pdCB0aGUgdHlwZSBkZWNsYXJhdGlvbiwKKyAqIGNvbGxhdGlvbiwg b3IgZGVmYXVsdC4gSGVyZSB3ZSBvbmx5IHJldHVybiBzb21ldGhpbmcgaWYgdGhlIGNvbHVtbiBp cyBiZWluZworICogZGVjbGFyZWQgTk9UIE5VTEwuCisgKgorICogQXMgaW4gZGVwYXJzZV9Db2x1 bW5EZWYsIGFueSBvdGhlciBjb25zdHJhaW50IGlzIHByb2Nlc3NlZCBlbHNld2hlcmUuCisgKgor ICogVmVyYm9zZSBzeW50YXgKKyAqICV7bmFtZX1JIFdJVEggT1BUSU9OUyAle25vdF9udWxsfXMg JXtkZWZhdWx0fXMuCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX0NvbHVtbkRlZl90eXBlZF90 b0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJ CQlMaXN0ICpkcGNvbnRleHQsIENvbHVtbkRlZiAqY29sZGVmKQoreworCWJvb2wJCW5lZWRlZDsK KwlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyRm9ybTsKKwlib29sCQlzYXdfbm90bnVsbDsKKwlTdHJp bmdJbmZvRGF0YSBmbXRTdHI7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCW5lZWRl ZCA9IGRlcGFyc2VfQ29sRGVmX3R5cGVkX25lZWRlZChyZWxhdGlvbiwgY29sZGVmLAorCQkJCQkJ CQkJCSAmYXR0ckZvcm0sICZzYXdfbm90bnVsbCk7CisJaWYgKCFuZWVkZWQpCisJCXJldHVybjsK KworCS8qIHN0YXJ0IG1ha2luZyBjb2x1bW4gb2JqZWN0ICovCisJcHVzaEpzb25iVmFsdWUoJnN0 YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmZtdFN0ciwgIiV7bmFtZX1JIFdJVEggT1BUSU9OUyIpOworCisJLyogVFlQRSBhbmQgTkFNRSAq LworCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkgInR5cGUiLCBqYnZTdHJpbmcsICJjb2x1 bW4iLAorCQkJCSAibmFtZSIsIGpidlN0cmluZywgY29sZGVmLT5jb2xuYW1lKTsKKworCS8qIE5P VCBOVUxMICovCisJaWYgKHNhd19ub3RudWxsKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmZm10U3RyLCAiICV7bm90X251bGx9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJu b3RfbnVsbCIsIGpidlN0cmluZywgIk5PVCBOVUxMIik7CisJfQorCisJLyogREVGQVVMVCAqLwor CWlmIChhdHRyRm9ybS0+YXR0aGFzZGVmKQorCXsKKwkJY2hhcgkgICAqZGVmc3RyOworCisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle2RlZmF1bHR9cyIpOworCQlkZWZzdHIg PSBSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCisJ CQkJCQkJCQkJICBkcGNvbnRleHQpOworCisJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJkZWZh dWx0Iik7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJERUZB VUxUICV7ZGVmYXVsdH1zIiwKKwkJCQkJICJkZWZhdWx0IiwgamJ2U3RyaW5nLCBkZWZzdHIpOwor CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCX0KKwor CS8qIFdlIGhhdmUgZnVsbCBmbXQgYnkgbm93LCBzbyBhZGQganNvbmIgZWxlbWVudCBmb3IgdGhh dCAqLworCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgZm10U3RyLmRh dGEpOworCisJcGZyZWUoZm10U3RyLmRhdGEpOworCisJLyogbWFyayB0aGUgZW5kIG9mIGNvbHVt biBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxM KTsKKworCS8qIEdlbmVyYXRlZCBjb2x1bW5zIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHR5cGVkIHRh Ymxlcywgc28gd2UgYXJlIGRvbmUgKi8KK30KKworLyoKKyAqIEhlbHBlciByb3V0aW5lIGZvciB0 YWJsZV9lbGVtX3ByZXNlbnQoKQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhdC1sZWFzdCBvbmUg bG9jYWwgY29sdW1uIGlzIHByZXNlbnQKKyAqIChpLmUuIG5vdCBpbmhlcml0ZWQpLgorICovCitz dGF0aWMgYm9vbAordGFibGVfZWxlbV9wcmVzZW50X2NvbChSZWxhdGlvbiByZWxhdGlvbiwgTGlz dCAqdGFibGVFbGVtZW50cywgYm9vbCB0eXBlZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZv cmVhY2gobGMsIHRhYmxlRWxlbWVudHMpCisJeworCQlOb2RlCSAgICplbHQgPSAoTm9kZSAqKSBs Zmlyc3QobGMpOworCisJCXN3aXRjaCAobm9kZVRhZyhlbHQpKQorCQl7CisJCQljYXNlIFRfQ29s dW1uRGVmOgorCQkJCXsKKwkJCQkJaWYgKHR5cGVkKQorCQkJCQl7CisJCQkJCQlpZiAoZGVwYXJz ZV9Db2xEZWZfdHlwZWRfbmVlZGVkKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJCQkoKENvbHVtbkRl ZiAqKSBlbHQpLAorCQkJCQkJCQkJCQkJCQlOVUxMLCBOVUxMKSkKKwkJCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCWlmICgoKENvbHVtbkRlZiAqKSBl bHQpLT5pc19sb2NhbCkKKwkJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCQli cmVhazsKKwkJCWNhc2UgVF9Db25zdHJhaW50OgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBub2RlIHR5cGUgJWQiLCBub2RlVGFnKGVsdCkpOworCQl9 CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogSGVscGVyIHJvdXRpbmUgZm9yIHRh YmxlX2VsZW1fcHJlc2VudCgpCisgKgorICogUmV0dXJucyB0cnVlIGlmIGF0LWxlYXN0IG9uZSBj b25zdHJhaW50IGlzIHByZXNlbnQuCisgKgorICogTm90ZSB0aGF0IENPTlNUUkFJTlRfRk9SRUlH TiBjb25zdHJhaW50cyBhcmUgYWx3YXlzIGlnbm9yZWQuCisgKi8KK3N0YXRpYyBib29sCit0YWJs ZV9lbGVtX3ByZXNlbnRfY29uc3QoT2lkIHJlbGF0aW9uSWQpCit7CisJUmVsYXRpb24JY29uUmVs OworCVNjYW5LZXlEYXRhIGtleTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBs ZTsKKwlib29sCQliY29uc3QgPSBmYWxzZTsKKworCUFzc2VydChPaWRJc1ZhbGlkKHJlbGF0aW9u SWQpKTsKKworCS8qCisJICogU2NhbiBwZ19jb25zdHJhaW50IHRvIGZldGNoIGFsbCBjb25zdHJh aW50cyBsaW5rZWQgdG8gdGhlIGdpdmVuCisJICogcmVsYXRpb24uCisJICovCisJY29uUmVsID0g dGFibGVfb3BlbihDb25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2Fu S2V5SW5pdCgma2V5LCBBbnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsIEJURXF1YWxTdHJhdGVn eU51bWJlciwKKwkJCQlGX09JREVRLCBPYmplY3RJZEdldERhdHVtKHJlbGF0aW9uSWQpKTsKKwlz Y2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGNvblJlbCwgQ29uc3RyYWludFJlbGlkVHlwaWROYW1l SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhlYXBU dXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1f cGdfY29uc3RyYWludCBjb25zdHJGb3JtOworCisJCWNvbnN0ckZvcm0gPSAoRm9ybV9wZ19jb25z dHJhaW50KSBHRVRTVFJVQ1QodHVwbGUpOworCisJCXN3aXRjaCAoY29uc3RyRm9ybS0+Y29udHlw ZSkKKwkJeworCQkJY2FzZSBDT05TVFJBSU5UX0NIRUNLOgorCQkJY2FzZSBDT05TVFJBSU5UX1BS SU1BUlk6CisJCQljYXNlIENPTlNUUkFJTlRfVU5JUVVFOgorCQkJY2FzZSBDT05TVFJBSU5UX0VY Q0xVU0lPTjoKKwkJCQkvKiBObyBuZWVkIHRvIGRlcGFyc2UgY29uc3RyYWludHMgaW5oZXJpdGVk IGZyb20gcGFyZW50IHRhYmxlICovCisJCQkJaWYgKE9pZElzVmFsaWQoY29uc3RyRm9ybS0+Y29u cGFyZW50aWQpKQorCQkJCQljb250aW51ZTsKKworCQkJCWJjb25zdCA9IHRydWU7CisJCQkJYnJl YWs7CisJCQljYXNlIENPTlNUUkFJTlRfRk9SRUlHTjoKKwkJCQljb250aW51ZTsJCS8qIG5vdCBo ZXJlICovCisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgY29uc3Ry YWludCB0eXBlIik7CisJCX0KKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxl X2Nsb3NlKGNvblJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVybiBiY29uc3Q7Cit9CisK Ky8qCisgKiBTdWJyb3V0aW5lIGZvciBDUkVBVEUgVEFCTEUgZGVwYXJzaW5nLgorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiBhdC1sZWFzdCBvbmUgbG9jYWwgY29sdW1uIG9yIGNvbnN0cmFpbnQgaXMg cHJlc2VudC4KKyAqLworc3RhdGljIGJvb2wKK3RhYmxlX2VsZW1fcHJlc2VudChPaWQgcmVsYXRp b25JZCwgUmVsYXRpb24gcmVsYXRpb24sCisJCQkJICAgTGlzdCAqdGFibGVFbGVtZW50cywgYm9v bCB0eXBlZCkKK3sKKwlib29sCQl0ZWxlbXNfcHJlc2VudCA9IGZhbHNlOworCisJdGVsZW1zX3By ZXNlbnQgPSB0YWJsZV9lbGVtX3ByZXNlbnRfY29sKHJlbGF0aW9uLCB0YWJsZUVsZW1lbnRzLCB0 eXBlZCk7CisKKwlpZiAoIXRlbGVtc19wcmVzZW50KQorCQl0ZWxlbXNfcHJlc2VudCA9IHRhYmxl X2VsZW1fcHJlc2VudF9jb25zdChyZWxhdGlvbklkKTsKKworCXJldHVybiB0ZWxlbXNfcHJlc2Vu dDsKK30KKworLyoKKyAqIFN1YnJvdXRpbmUgZm9yIENSRUFURSBUQUJMRSBkZXBhcnNpbmcuCisg KgorICogRGVhbCB3aXRoIGFsbCB0aGUgdGFibGUgZWxlbWVudHMgKGNvbHVtbnMgYW5kIGNvbnN0 cmFpbnRzKS4KKyAqCisgKiBOb3RlIHdlIGlnbm9yZSBjb25zdHJhaW50cyBpbiB0aGUgcGFyc2Ug bm9kZSBoZXJlOyB0aGV5IGFyZSBleHRyYWN0ZWQgZnJvbQorICogc3lzdGVtIGNhdGFsb2dzIGlu c3RlYWQuCisgKi8KK3N0YXRpYyB2b2lkCitkZXBhcnNlX1RhYmxlRWxlbXNfVG9Kc29uYihKc29u YlBhcnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCSAgIExpc3QgKnRh YmxlRWxlbWVudHMsIExpc3QgKmRwY29udGV4dCwKKwkJCQkJCSAgIGJvb2wgdHlwZWQsIGJvb2wg Y29tcG9zaXRlKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgdGFibGVFbGVt ZW50cykKKwl7CisJCU5vZGUJICAgKmVsdCA9IChOb2RlICopIGxmaXJzdChsYyk7CisKKwkJc3dp dGNoIChub2RlVGFnKGVsdCkpCisJCXsKKwkJCWNhc2UgVF9Db2x1bW5EZWY6CisJCQkJeworCQkJ CQlpZiAodHlwZWQpCisJCQkJCQlkZXBhcnNlX0NvbHVtbkRlZl90eXBlZF90b0pzb25iKHN0YXRl LCByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJZHBjb250ZXh0LAorCQkJCQkJCQkJCQkJCQkoQ29s dW1uRGVmICopIGVsdCk7CisJCQkJCWVsc2UKKwkJCQkJCWRlcGFyc2VfQ29sdW1uRGVmX3RvSnNv bmIoc3RhdGUsIHJlbGF0aW9uLCBkcGNvbnRleHQsCisJCQkJCQkJCQkJCQkgIGNvbXBvc2l0ZSwg KENvbHVtbkRlZiAqKSBlbHQpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgVF9Db25zdHJh aW50OgorCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBu b2RlIHR5cGUgJWQiLCBub2RlVGFnKGVsdCkpOworCQl9CisJfQorfQorCisvKgorICogU3Vicm91 dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAqCisgKiBEZXBhcnNlIHRoZSBJTkhF UklUUyByZWxhdGlvbnMuCisgKgorICogR2l2ZW4gYSB0YWJsZSBPSUQsIHJldHVybiBhIHNjaGVt YS1xdWFsaWZpZWQgdGFibGUgbGlzdCByZXByZXNlbnRpbmcKKyAqIHRoZSBwYXJlbnQgdGFibGVz LgorICovCitzdGF0aWMgTGlzdCAqCitkZXBhcnNlX0luaFJlbHNfVG9Kc29uYihPaWQgb2JqZWN0 SWQpCit7CisJTGlzdAkgICAqcGFyZW50cyA9IE5JTDsKKwlSZWxhdGlvbglpbmhSZWw7CisJU3lz U2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJSGVhcFR1cGxlCXR1cGxlOworCisJ aW5oUmVsID0gdGFibGVfb3BlbihJbmhlcml0c1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJU2NhbktleUluaXQoJmtleSwKKwkJCQlBbnVtX3BnX2luaGVyaXRzX2luaHJlbGlkLAor CQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVt KG9iamVjdElkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKGluaFJlbCwgSW5oZXJp dHNSZWxpZFNlcW5vSW5kZXhJZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJ d2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkK Kwl7CisJCUZvcm1fcGdfaW5oZXJpdHMgZm9ybUluaCA9IChGb3JtX3BnX2luaGVyaXRzKSBHRVRT VFJVQ1QodHVwbGUpOworCisJCXBhcmVudHMgPSBsYXBwZW5kX29pZChwYXJlbnRzLCBmb3JtSW5o LT5pbmhwYXJlbnQpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xv c2UoaW5oUmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBwYXJlbnRzOworfQorCisv KgorICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRlcGFyc2luZy4KKyAqCisgKiBHaXZl biBhIHRhYmxlIE9JRCwgb2J0YWluIGl0cyBjb25zdHJhaW50cyBhbmQgYXBwZW5kIHRoZW0gdG8g dGhlIGdpdmVuCisgKiBKc29uYlBhcnNlU3RhdGUuCisgKgorICogVGhpcyB3b3JrcyBmb3IgdHlw ZWQgdGFibGVzLCByZWd1bGFyIHRhYmxlcy4KKyAqCisgKiBOb3RlIHRoYXQgQ09OU1RSQUlOVF9G T1JFSUdOIGNvbnN0cmFpbnRzIGFyZSBhbHdheXMgaWdub3JlZC4KKyAqLworc3RhdGljIHZvaWQK K2RlcGFyc2VfQ29uc3RyYWludHNfVG9Kc29uYihKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBPaWQg cmVsYXRpb25JZCkKK3sKKwlSZWxhdGlvbgljb25SZWw7CisJU2NhbktleURhdGEga2V5OworCVN5 c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1cGxlOworCisJQXNzZXJ0KE9pZElzVmFsaWQo cmVsYXRpb25JZCkpOworCisJLyoKKwkgKiBTY2FuIHBnX2NvbnN0cmFpbnQgdG8gZmV0Y2ggYWxs IGNvbnN0cmFpbnRzIGxpbmtlZCB0byB0aGUgZ2l2ZW4KKwkgKiByZWxhdGlvbi4KKwkgKi8KKwlj b25SZWwgPSB0YWJsZV9vcGVuKENvbnN0cmFpbnRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2sp OworCVNjYW5LZXlJbml0KCZrZXksIEFudW1fcGdfY29uc3RyYWludF9jb25yZWxpZCwgQlRFcXVh bFN0cmF0ZWd5TnVtYmVyLAorCQkJCUZfT0lERVEsIE9iamVjdElkR2V0RGF0dW0ocmVsYXRpb25J ZCkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4oY29uUmVsLCBDb25zdHJhaW50UmVsaWRU eXBpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMSwgJmtleSk7CisKKwkvKgor CSAqIEZvciBlYWNoIGNvbnN0cmFpbnQsIGFkZCBhIG5vZGUgdG8gdGhlIGxpc3Qgb2YgdGFibGUg ZWxlbWVudHMuICBJbgorCSAqIHRoZXNlIG5vZGVzIHdlIGluY2x1ZGUgbm90IG9ubHkgdGhlIHBy aW50YWJsZSBpbmZvcm1hdGlvbiAoImZtdCIpLCBidXQKKwkgKiBhbHNvIHNlcGFyYXRlIGF0dHJp YnV0ZXMgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgY29uc3RyYWludCwgZm9yCisJICogYXV0b21h dGljIHByb2Nlc3NpbmcuCisJICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBz eXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfY29uc3RyYWludCBjb25zdHJG b3JtOworCQljaGFyCSAgICpjb250eXBlOworCQlTdHJpbmdJbmZvRGF0YSBmbXRTdHI7CisKKwkJ Y29uc3RyRm9ybSA9IChGb3JtX3BnX2NvbnN0cmFpbnQpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJ c3dpdGNoIChjb25zdHJGb3JtLT5jb250eXBlKQorCQl7CisJCQljYXNlIENPTlNUUkFJTlRfQ0hF Q0s6CisJCQkJY29udHlwZSA9ICJjaGVjayI7CisJCQkJYnJlYWs7CisJCQljYXNlIENPTlNUUkFJ TlRfRk9SRUlHTjoKKwkJCQljb250aW51ZTsJCS8qIG5vdCBoZXJlICovCisJCQljYXNlIENPTlNU UkFJTlRfUFJJTUFSWToKKwkJCQljb250eXBlID0gInByaW1hcnkga2V5IjsKKwkJCQlicmVhazsK KwkJCWNhc2UgQ09OU1RSQUlOVF9VTklRVUU6CisJCQkJY29udHlwZSA9ICJ1bmlxdWUiOworCQkJ CWJyZWFrOworCQkJY2FzZSBDT05TVFJBSU5UX0VYQ0xVU0lPTjoKKwkJCQljb250eXBlID0gImV4 Y2x1c2lvbiI7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgY29uc3RyYWludCB0eXBlIik7CisJCX0KKworCQkvKiBObyBuZWVkIHRvIGRlcGFy c2UgY29uc3RyYWludHMgaW5oZXJpdGVkIGZyb20gcGFyZW50IHRhYmxlLiAqLworCQlpZiAoT2lk SXNWYWxpZChjb25zdHJGb3JtLT5jb25wYXJlbnRpZCkpCisJCQljb250aW51ZTsKKworCQkvKgor CQkgKiAidHlwZSIgYW5kICJjb250eXBlIiBhcmUgbm90IHBhcnQgb2YgdGhlIHByaW50YWJsZSBv dXRwdXQsIGJ1dCBhcmUKKwkJICogdXNlZnVsIHRvIHByb2dyYW1tYXRpY2FsbHkgZGlzdGluZ3Vp c2ggdGhlc2UgZnJvbSBjb2x1bW5zIGFuZCBhbW9uZworCQkgKiBkaWZmZXJlbnQgY29uc3RyYWlu dCB0eXBlcy4KKwkJICoKKwkJICogWFhYIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBhbHNvIGxpc3Qg dGhlIGNvbHVtbiBuYW1lcyBpbiBhIFBLLCBldGMuCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygm Zm10U3RyKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiQ09OU1RSQUlOVCAl e25hbWV9SSAle2RlZmluaXRpb259cyIpOworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9C RUdJTl9PQkpFQ1QsIE5VTEwpOworCisJCW5ld19qc29uYl9WQShzdGF0ZSwgNCwKKwkJCQkJICJ0 eXBlIiwgamJ2U3RyaW5nLCAiY29uc3RyYWludCIsCisJCQkJCSAiY29udHlwZSIsIGpidlN0cmlu ZywgY29udHlwZSwKKwkJCQkJICJuYW1lIiwgamJ2U3RyaW5nLCBOYW1lU3RyKGNvbnN0ckZvcm0t PmNvbm5hbWUpLAorCQkJCQkgImRlZmluaXRpb24iLCBqYnZTdHJpbmcsCisJCQkJCSBwZ19nZXRf Y29uc3RyYWludGRlZl9zdHJpbmcoY29uc3RyRm9ybS0+b2lkKSk7CisKKwkJaWYgKGNvbnN0ckZv cm0tPmNvbmluZGlkICYmCisJCQkoY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BS SU1BUlkgfHwKKwkJCSBjb25zdHJGb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFIHx8 CisJCQkgY29uc3RyRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTikpCisJCXsK KwkJCU9pZAkJCXRibHNwYyA9IGdldF9yZWxfdGFibGVzcGFjZShjb25zdHJGb3JtLT5jb25pbmRp ZCk7CisKKwkJCWlmIChPaWRJc1ZhbGlkKHRibHNwYykpCisJCQl7CisJCQkJY2hhcgkgICAqdGJs c3BjbmFtZSA9IGdldF90YWJsZXNwYWNlX25hbWUodGJsc3BjKTsKKworCQkJCWlmICghdGJsc3Bj bmFtZSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHRhYmxlc3Bh Y2UgJXUiLAorCQkJCQkJIHRibHNwYyk7CisKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsCisJCQkJCQkJCQkgICAiIFVTSU5HIElOREVYIFRBQkxFU1BBQ0UgJXt0YmxzcGN9cyIp OworCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkJCQkgInRibHNwYyIsIGpidlN0cmlu ZywgdGJsc3BjbmFtZSk7CisJCQl9CisJCX0KKworCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5v dywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwkJcGZyZWUoZm10U3RyLmRh dGEpOworCisJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOwor CX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJdGFibGVfY2xvc2UoY29uUmVsLCBBY2Nl c3NTaGFyZUxvY2spOworfQorCisvKgorICogU3Vicm91dGluZSBmb3IgQ1JFQVRFIFRBQkxFIGRl cGFyc2luZy4KKyAqCisgKiBJbnNlcnQgY29sdW1ucyBhbmQgY29uc3RyYWludHMgZWxlbWVudHMg aW4gb3V0cHV0IEpzb25iUGFyc2VTdGF0ZQorICogUmV0dXJucyB0cnVlIGlmIGVsZW1lbnRzIGFy ZSBpbnNlcnRlZAorICovCitzdGF0aWMgYm9vbAorYWRkX3RhYmxlX2VsZW1zX2lmX2FueShKc29u YlBhcnNlU3RhdGUgKnN0YXRlLCBTdHJpbmdJbmZvIGZtdFN0ciwKKwkJCQkJICAgUmVsYXRpb24g cmVsYXRpb24sIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqZHBjb250ZXh0LAorCQkJCQkgICBPaWQg b2JqZWN0SWQsIGJvb2wgdHlwZWQsIGJvb2wgY29tcG9zaXRlKQoreworCWJvb2wJCXRlbGVtc19w cmVzZW50ID0gZmFsc2U7CisKKwl0ZWxlbXNfcHJlc2VudCA9IHRhYmxlX2VsZW1fcHJlc2VudChv YmplY3RJZCwgcmVsYXRpb24sIHRhYmxlRWx0cywgdHlwZWQpOworCisJaWYgKHRlbGVtc19wcmVz ZW50KQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhmbXRTdHIsICIgKCV7dGFibGVfZWxl bWVudHM6LCB9cykiKTsKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInRhYmxlX2VsZW1lbnRz Iik7CisKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fQVJSQVksIE5VTEwpOwor CisJCS8qCisJCSAqIFByb2Nlc3MgdGFibGUgZWxlbWVudHM6IGNvbHVtbiBkZWZpbml0aW9ucyBh bmQgY29uc3RyYWludHMuICBPbmx5CisJCSAqIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnMgYXJlIG9i dGFpbmVkIGZyb20gdGhlIHBhcnNlIG5vZGUgaXRzZWxmLiAgVG8KKwkJICogZ2V0IGNvbnN0cmFp bnRzIHdlIHJlbHkgb24gcGdfY29uc3RyYWludCwgYmVjYXVzZSB0aGUgcGFyc2Ugbm9kZQorCQkg KiBtaWdodCBiZSBtaXNzaW5nIHNvbWUgdGhpbmdzIHN1Y2ggYXMgdGhlIG5hbWUgb2YgdGhlIGNv bnN0cmFpbnRzLgorCQkgKi8KKwkJZGVwYXJzZV9UYWJsZUVsZW1zX1RvSnNvbmIoc3RhdGUsIHJl bGF0aW9uLCB0YWJsZUVsdHMsIGRwY29udGV4dCwKKwkJCQkJCQkJICAgdHlwZWQsCS8qIHR5cGVk IHRhYmxlICovCisJCQkJCQkJCSAgIGNvbXBvc2l0ZSk7CS8qIG5vdCBjb21wb3NpdGUgKi8KKwor CQlkZXBhcnNlX0NvbnN0cmFpbnRzX1RvSnNvbmIoc3RhdGUsIG9iamVjdElkKTsKKworCQkvKiBl bmQgb2YgdGFibGVfZWxlbWVudHMgYXJyYXkgKi8KKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBX SkJfRU5EX0FSUkFZLCBOVUxMKTsKKwl9CisKKwlyZXR1cm4gdGVsZW1zX3ByZXNlbnQ7Cit9CisK Ky8qCisgKiBEZXBhcnNlIERlZkVsZW1zLCBhcyB1c2VkIGJ5IENyZWF0ZSBUYWJsZQorICoKKyAq IFZlcmJvc2Ugc3ludGF4CisgKiAle2xhYmVsfXMgPSAle3ZhbHVlfUwKKyAqLworc3RhdGljIHZv aWQKK2RlcGFyc2VfRGVmRWxlbV9Ub0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIERlZkVs ZW0gKmVsZW0sIGJvb2wgaXNfcmVzZXQpCit7CisJU3RyaW5nSW5mb0RhdGEgZm10U3RyOworCVN0 cmluZ0luZm9EYXRhIGxhYmVsZm10OworCisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisKKwlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIle2xhYmVsfXMiKTsKKwlwdXNoSnNvbmJW YWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5VTEwpOworCisJLyogTEFCRUwgKi8KKwlp bml0U3RyaW5nSW5mbygmbGFiZWxmbXQpOworCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImxh YmVsIik7CisJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsK KworCWlmIChlbGVtLT5kZWZuYW1lc3BhY2UgIT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmxhYmVsZm10LCAiJXtzY2hlbWF9SS4iKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRl LCAxLAorCQkJCQkgInNjaGVtYSIsIGpidlN0cmluZywgZWxlbS0+ZGVmbmFtZXNwYWNlKTsKKwl9 CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZsYWJlbGZtdCwgIiV7bGFiZWx9SSIpOworCW5l d19qc29uYl9WQShzdGF0ZSwgMSwKKwkJCQkgImxhYmVsIiwgamJ2U3RyaW5nLCBlbGVtLT5kZWZu YW1lKTsKKworCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgbGFiZWxm bXQuZGF0YSk7CisJcGZyZWUobGFiZWxmbXQuZGF0YSk7CisKKwlwdXNoSnNvbmJWYWx1ZSgmc3Rh dGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKworCS8qIFZBTFVFICovCisJaWYgKCFpc19yZXNl dCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiA9ICV7dmFsdWV9TCIp OworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJ2YWx1ZSIsIGpidlN0cmluZywKKwkJCQkJIGVs ZW0tPmFyZyA/IGRlZkdldFN0cmluZyhlbGVtKSA6CisJCQkJCSBkZWZHZXRCb29sZWFuKGVsZW0p ID8gInRydWUiIDogImZhbHNlIik7CisJfQorCisJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiZm10 IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisJcGZyZWUoZm10U3RyLmRhdGEpOworCisJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7Cit9CisKKy8qCisgKiBE ZXBhcnNlIFdJVEggY2xhdXNlLCBhcyB1c2VkIGJ5IENyZWF0ZSBUYWJsZS4KKyAqLworc3RhdGlj IHZvaWQKK2RlcGFyc2Vfd2l0aE9ial9Ub0pzb25iKEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIENy ZWF0ZVN0bXQgKm5vZGUpCit7CisJTGlzdENlbGwgICAqY2VsbDsKKworCS8qIFdJVEggKi8KKwlp bnNlcnRfanNvbmJfa2V5KHN0YXRlLCAid2l0aCIpOworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwg V0pCX0JFR0lOX0FSUkFZLCBOVUxMKTsKKworCS8qIGFkZCBlbGVtZW50cyB0byBhcnJheSAqLwor CWZvcmVhY2goY2VsbCwgbm9kZS0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKm9wdCA9IChE ZWZFbGVtICopIGxmaXJzdChjZWxsKTsKKworCQlkZXBhcnNlX0RlZkVsZW1fVG9Kc29uYihzdGF0 ZSwgb3B0LCBmYWxzZSk7CisJfQorCisJLyogd2l0aCdzIGFycmF5IGVuZCAqLworCXB1c2hKc29u YlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9BUlJBWSwgTlVMTCk7Cit9CisKKy8qCisgKiBEZXBhcnNl IGEgQ3JlYXRlU3RtdCAoQ1JFQVRFIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBhIHRhYmxlIE9JRCBh bmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gSnNvbmJWYWx1ZQorICog cmVwcmVzZW50aW5nIHRoZSBjcmVhdGlvbiBjb21tYW5kLgorICoKKyAqIFZlcmJvc2Ugc3ludGF4 CisgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRl bnRpdHl9RCBbT0YKKyAqICV7b2ZfdHlwZX1UIHwgUEFSVElUSU9OIE9GICV7cGFyZW50X2lkZW50 aXR5fURdICV7dGFibGVfZWxlbWVudHN9cworICogJXtpbmhlcml0c31zICV7cGFydGl0aW9uX2J5 fXMgJXthY2Nlc3NfbWV0aG9kfXMgJXt3aXRoX2NsYXVzZX1zCisgKiAle3RhYmxlc3BhY2V9cwor ICovCitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9DcmVhdGVTdG10KE9pZCBvYmplY3RJZCwgTm9k ZSAqcGFyc2V0cmVlKQoreworCUNyZWF0ZVN0bXQgKm5vZGUgPSAoQ3JlYXRlU3RtdCAqKSBwYXJz ZXRyZWU7CisJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nl c3NTaGFyZUxvY2spOworCU9pZAkJCW5zcGlkID0gcmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNw YWNlOworCWNoYXIJICAgKnJlbG5hbWUgPSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlv bik7CisJTGlzdAkgICAqZHBjb250ZXh0OworCWNoYXIJICAgKnBlcnN0cjsKKwlTdHJpbmdJbmZv RGF0YSBmbXRTdHI7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSA9IE5VTEw7CisJSnNvbmJWYWx1 ZSAqdmFsdWU7CisKKwlpbml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCS8qIG1hcmsgdGhlIGJl Z2luIG9mIFJPT1Qgb2JqZWN0IGFuZCBzdGFydCBhZGRpbmcgZWxlbWVudHMgdG8gaXQuICovCisJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIkNSRUFURSIpOworCisJLyogUEVSU0lTVEVOQ0Ug Ki8KKwlwZXJzdHIgPSBnZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlKTsKKwlpZiAocGVyc3RyKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Zm10U3RyLCAiICV7cGVyc2lzdGVuY2V9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJ CQkJCSAicGVyc2lzdGVuY2UiLCBqYnZTdHJpbmcsIHBlcnN0cik7CisJfQorCisJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiIFRBQkxFIik7CisKKwkvKiBJRiBOT1QgRVhJU1RTICov CisJaWYgKG5vZGUtPmlmX25vdF9leGlzdHMpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KCZmbXRTdHIsICIgJXtpZl9ub3RfZXhpc3RzfXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAx LAorCQkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBOT1QgRVhJU1RTIik7CisJ fQorCisJLyogSURFTlRJVFkgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIg JXtpZGVudGl0eX1EIik7CisJaW5zZXJ0X2lkZW50aXR5X29iamVjdChzdGF0ZSwgbnNwaWQsIHJl bG5hbWUpOworCisJZHBjb250ZXh0ID0gZGVwYXJzZV9jb250ZXh0X2ZvcihSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWxhdGlvbiksCisJCQkJCQkJCQlvYmplY3RJZCk7CisKKwkvKgorCSAqIFRB QkxFLUVMRU1FTlRTIGFycmF5IGNyZWF0aW9uCisJICoKKwkgKiBUeXBlZCB0YWJsZXMgYW5kIHBh cnRpdGlvbnMgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1hdCBzdHJpbmc6IHdlCisJICog bXVzdCBub3QgcHV0IHRhYmxlX2VsZW1lbnRzIHdpdGggcGFyZW50cyBkaXJlY3RseSBpbiB0aGUg Zm10IHN0cmluZywKKwkgKiBiZWNhdXNlIGlmIHRoZXJlIGFyZSBubyBvcHRpb25zIHRoZSBwYXJl bnRoZXNlcyBtdXN0IG5vdCBiZSBlbWl0dGVkOworCSAqIGFuZCBhbHNvLCB0eXBlZCB0YWJsZXMg ZG8gbm90IGFsbG93IGZvciBpbmhlcml0YW5jZS4KKwkgKi8KKwlpZiAobm9kZS0+b2ZUeXBlbmFt ZSB8fCBub2RlLT5wYXJ0Ym91bmQpCisJeworCQkvKiBJbnNlcnQgdGhlICJvZiB0eXBlIiBvciAi cGFydGl0aW9uIG9mIiBjbGF1c2Ugd2hpY2hldmVyIHByZXNlbnQgKi8KKwkJaWYgKG5vZGUtPm9m VHlwZW5hbWUpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiBPRiAl e29mX3R5cGV9VCIpOworCQkJbmV3X2pzb25iX2Zvcl90eXBlKHN0YXRlLCAib2ZfdHlwZSIsCisJ CQkJCQkJICAgcmVsYXRpb24tPnJkX3JlbC0+cmVsb2Z0eXBlLCAtMSk7CisJCX0KKwkJZWxzZQor CQl7CisJCQlMaXN0CSAgICpwYXJlbnRzOworCQkJT2lkCQkJb2JqaWQ7CisKKwkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiBQQVJUSVRJT04gT0YgJXtwYXJlbnRfaWRlbnRpdHl9 RCIpOworCQkJcGFyZW50cyA9IGRlcGFyc2VfSW5oUmVsc19Ub0pzb25iKG9iamVjdElkKTsKKwkJ CW9iamlkID0gbGluaXRpYWxfb2lkKHBhcmVudHMpOworCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBh cmVudHMpID09IDEpOworCQkJbmV3X2pzb25iX2Zvcl9xdWFsbmFtZV9pZChzdGF0ZSwgUmVsYXRp b25SZWxhdGlvbklkLAorCQkJCQkJCQkJICBvYmppZCwgInBhcmVudF9pZGVudGl0eSIsIHRydWUp OworCQl9CisKKwkJLyoKKwkJICogV2UgY2FuJ3QgcHV0IHRhYmxlIGVsZW1lbnRzIGRpcmVjdGx5 IGluIHRoZSBmbXQgc3RyaW5nIGFzIGFuIGFycmF5CisJCSAqIHN1cnJvdW5kZWQgYnkgcGFyZW50 aGVzZXMgaGVyZSwgYmVjYXVzZSBhbiBlbXB0eSBjbGF1c2Ugd291bGQgY2F1c2UKKwkJICogYSBz eW50YXggZXJyb3IuIFRoZXJlZm9yZSwgd2UgZmlyc3QgY2hlY2sgdGhlIHByZXNlbmNlIGFuZCB0 aGVuIGFkZAorCQkgKiB0aGUgZWxlbWVudHMuCisJCSAqLworCQlhZGRfdGFibGVfZWxlbXNfaWZf YW55KHN0YXRlLCAmZm10U3RyLCByZWxhdGlvbiwKKwkJCQkJCQkgICBub2RlLT50YWJsZUVsdHMs IGRwY29udGV4dCwgb2JqZWN0SWQsCisJCQkJCQkJICAgdHJ1ZSwJLyogdHlwZWQgdGFibGUgKi8K KwkJCQkJCQkgICBmYWxzZSk7CS8qIG5vdCBjb21wb3NpdGUgKi8KKwl9CisJZWxzZQorCXsKKwkJ TGlzdAkgICAqaW5ocmVsYXRpb25zOworCQlib29sCQl0ZWxlbXNfcHJlc2VudCA9IGZhbHNlOwor CisJCS8qCisJCSAqIFRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyBMSUtFIGNsYXVzZXMgc2Vw YXJhdGVseTsgdGhleSBoYXZlCisJCSAqIGFscmVhZHkgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvIGNv bHVtbnMgYW5kIGNvbnN0cmFpbnRzLgorCQkgKi8KKworCQkvKiBDaGVjayBpZiB0YWJsZSBlbGVt ZW50cyBhcmUgcHJlc2VudCwgaWYgc28sIGFkZCB0aGVtLiAqLworCQl0ZWxlbXNfcHJlc2VudCA9 IGFkZF90YWJsZV9lbGVtc19pZl9hbnkoc3RhdGUsICZmbXRTdHIsIHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJbm9kZS0+dGFibGVFbHRzLCBkcGNvbnRleHQsIG9iamVjdElkLAorCQkJCQkJCQkJCQkJ ZmFsc2UsCS8qIG5vdCB0eXBlZCB0YWJsZSAqLworCQkJCQkJCQkJCQkJZmFsc2UpOyAvKiBub3Qg Y29tcG9zaXRlICovCisKKwkJLyoKKwkJICogSWYgbm8gdGFibGUgZWxlbWVudHMgYWRkZWQsIHRo ZW4gYWRkIGVtcHR5ICIoKSIgbmVlZGVkIGZvcgorCQkgKiAnaW5oZXJpdCcgY3JlYXRlIHRhYmxl IHN5bnRheC4gRXhhbXBsZTogQ1JFQVRFIFRBQkxFIHQxICgpIElOSEVSSVRTCisJCSAqICh0MCk7 CisJCSAqLworCQlpZiAoIXRlbGVtc19wcmVzZW50KQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmZm10U3RyLCAiICgpIik7CisKKwkJLyoKKwkJICogQWRkIGluaGVyaXRhbmNlIHNwZWNpZmlj YXRpb24uICBXZSBjYW5ub3Qgc2ltcGx5IHNjYW4gdGhlIGxpc3Qgb2YKKwkJICogcGFyZW50cyBm cm9tIHRoZSBwYXJzZXIgbm9kZSwgYmVjYXVzZSB0aGF0IG1heSBsYWNrIHRoZSBhY3R1YWwKKwkJ ICogcXVhbGlmaWVkIG5hbWVzIG9mIHRoZSBwYXJlbnQgcmVsYXRpb25zLiAgUmF0aGVyIHRoYW4g dHJ5aW5nIHRvCisJCSAqIHJlLXJlc29sdmUgdGhlbSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbiB0 aGUgcGFyc2Ugbm9kZSwgaXQgc2VlbXMKKwkJICogbW9yZSBhY2N1cmF0ZSBhbmQgY29udmVuaWVu dCB0byBncmFiIGl0IGZyb20gcGdfaW5oZXJpdHMuCisJCSAqLworCQlpZiAobm9kZS0+aW5oUmVs YXRpb25zICE9IE5JTCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAi ICV7aW5oZXJpdHN9cyIpOworCQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImluaGVyaXRzIik7 CisKKwkJCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisK KwkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgIklOSEVSSVRTICgl e3BhcmVudHM6LCB9RCkiKTsKKwkJCWluaHJlbGF0aW9ucyA9IGRlcGFyc2VfSW5oUmVsc19Ub0pz b25iKG9iamVjdElkKTsKKworCQkJbmV3X2pzb25iQXJyYXlfZm9yX3F1YWxuYW1lX2lkKHN0YXRl LCAicGFyZW50cyIsIGluaHJlbGF0aW9ucyk7CisJCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdK Ql9FTkRfT0JKRUNULCBOVUxMKTsKKwkJfQorCX0KKworCS8qIEZPUiBWQUxVRVMgY2xhdXNlICov CisJaWYgKG5vZGUtPnBhcnRib3VuZCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZt dFN0ciwgIiAle3BhcnRpdGlvbl9ib3VuZH1zIik7CisKKwkJLyoKKwkJICogR2V0IHBnX2NsYXNz LnJlbHBhcnRib3VuZC4gV2UgY2Fubm90IHVzZSBwYXJ0Ym91bmQgaW4gdGhlIHBhcnNldHJlZQor CQkgKiBkaXJlY3RseSBhcyBpdCdzIHRoZSBvcmlnaW5hbCBwYXJ0Ym91bmQgZXhwcmVzc2lvbiB3 aGljaCBoYXZlbid0CisJCSAqIGJlZW4gdHJhbnNmb3JtZWQuCisJCSAqLworCQluZXdfanNvbmJf VkEoc3RhdGUsIDEsCisJCQkJCSAicGFydGl0aW9uX2JvdW5kIiwgamJ2U3RyaW5nLAorCQkJCQkg UmVsYXRpb25HZXRQYXJ0aXRpb25Cb3VuZChvYmplY3RJZCkpOworCX0KKworCS8qIFBBUlRJVElP TiBCWSBjbGF1c2UgKi8KKwlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1BBUlRJVElPTkVEX1RBQkxFKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3Ry LCAiICV7cGFydGl0aW9uX2J5fXMiKTsKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInBhcnRp dGlvbl9ieSIpOworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1QsIE5V TEwpOworCisJCW5ld19qc29uYl9WQShzdGF0ZSwgMiwKKwkJCQkJICJmbXQiLCBqYnZTdHJpbmcs ICJQQVJUSVRJT04gQlkgJXtkZWZpbml0aW9ufXMiLAorCQkJCQkgImRlZmluaXRpb24iLCBqYnZT dHJpbmcsCisJCQkJCSBwZ19nZXRfcGFydGtleWRlZl9zdHJpbmcob2JqZWN0SWQpKTsKKworCQlw dXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwl9CisKKwkvKiBV U0lORyBjbGF1c2UgKi8KKwlpZiAobm9kZS0+YWNjZXNzTWV0aG9kKQorCXsKKwkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7YWNjZXNzX21ldGhvZH1zIik7CisJCWluc2VydF9q c29uYl9rZXkoc3RhdGUsICJhY2Nlc3NfbWV0aG9kIik7CisJCXB1c2hKc29uYlZhbHVlKCZzdGF0 ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAyLAor CQkJCQkgImZtdCIsIGpidlN0cmluZywgIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwKKwkJCQkJ ICJhY2Nlc3NfbWV0aG9kIiwgamJ2U3RyaW5nLCBub2RlLT5hY2Nlc3NNZXRob2QpOworCQlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JKRUNULCBOVUxMKTsKKwl9CisKKwkvKiBXSVRI IGNsYXVzZSAqLworCWlmIChub2RlLT5vcHRpb25zKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmZm10U3RyLCAiICV7d2l0aF9jbGF1c2V9cyIpOworCQlpbnNlcnRfanNvbmJfa2V5KHN0 YXRlLCAid2l0aF9jbGF1c2UiKTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5f T0JKRUNULCBOVUxMKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkgImZtdCIsIGpi dlN0cmluZywgIldJVEggKCV7d2l0aDosIH1zKSIpOworCisJCWRlcGFyc2Vfd2l0aE9ial9Ub0pz b25iKHN0YXRlLCBub2RlKTsKKworCQlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfT0JK RUNULCBOVUxMKTsKKworCX0KKworCS8qIFRBQkxFU1BBQ0UgKi8KKwlpZiAobm9kZS0+dGFibGVz cGFjZW5hbWUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXt0YWJs ZXNwYWNlfXMiKTsKKwkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgInRhYmxlc3BhY2UiKTsKKwkJ cHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKwkJbmV3X2pz b25iX1ZBKHN0YXRlLCAyLAorCQkJCQkgImZtdCIsIGpidlN0cmluZywgIlRBQkxFU1BBQ0UgJXt0 YWJsZXNwYWNlfUkiLAorCQkJCQkgInRhYmxlc3BhY2UiLCBqYnZTdHJpbmcsIG5vZGUtPnRhYmxl c3BhY2VuYW1lKTsKKwkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVM TCk7CisJfQorCisJcmVsYXRpb25fY2xvc2UocmVsYXRpb24sIEFjY2Vzc1NoYXJlTG9jayk7CisK KwkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRo YXQgKi8KKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5k YXRhKTsKKworCXBmcmVlKGZtdFN0ci5kYXRhKTsKKworCS8qIE1hcmsgdGhlIGVuZCBvZiBST09U IG9iamVjdCAqLworCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgor ICogRGVwYXJzZSBhIERyb3BTdG10IChEUk9QIFRBQkxFKS4KKyAqCisgKiBHaXZlbiBhbiBvYmpl Y3QgaWRlbnRpdHkgYW5kIHRoZSBwYXJzZSB0cmVlIHRoYXQgY3JlYXRlZCBpdCwgcmV0dXJuCisg KiBqc29uYiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkcm9wIGNvbW1hbmQuCisgKgorICogVmVy Ym9zZSBzeW50YXgKKyAqIERST1AgJXtvYmp0eXBlfXMgJXtjb25jdXJyZW50bHl9cyAle2lmX2V4 aXN0c31zICV7b2JqaWRlbnRpdHl9cyAle2Nhc2NhZGV9cworICovCitjaGFyICoKK2RlcGFyc2Vf ZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwgY29uc3QgY2hhciAqb2JqZWN0dHlw ZSwKKwkJCQkgICBOb2RlICpwYXJzZXRyZWUpCit7CisJRHJvcFN0bXQgICAqbm9kZSA9IChEcm9w U3RtdCAqKSBwYXJzZXRyZWU7CisJU3RyaW5nSW5mb0RhdGEgZm10U3RyOworCUpzb25iVmFsdWUg Kmpzb25idmFsOworCUpzb25iCSAgICpqc29uYjsKKwlTdHJpbmdJbmZvRGF0YSBzdHI7CisJSnNv bmJQYXJzZVN0YXRlICpzdGF0ZSA9IE5VTEw7CisKKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwlp bml0U3RyaW5nSW5mbygmZm10U3RyKTsKKworCS8qIG1hcmsgdGhlIGJlZ2luIG9mIFJPT1Qgb2Jq ZWN0IGFuZCBzdGFydCBhZGRpbmcgZWxlbWVudHMgdG8gaXQuICovCisJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKKworCS8qIFN0YXJ0IGNvbnN0cnVjdGlu ZyBmbXQgc3RyaW5nICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiRFJPUCAl e29ianR5cGV9cyIpOworCisJLyogT0JKVFlQRSAqLworCW5ld19qc29uYl9WQShzdGF0ZSwgMSwg Im9ianR5cGUiLCBqYnZTdHJpbmcsIG9iamVjdHR5cGUpOworCisJLyogQ09OQ1VSUkVOVExZICov CisJaWYgKG5vZGUtPmNvbmN1cnJlbnQpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZm bXRTdHIsICIgJXtjb25jdXJyZW50bHl9cyIpOworCQluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJ CQkJCSAiY29uY3VycmVudGx5IiwgamJ2U3RyaW5nLCAiQ09OQ1VSUkVOVExZIik7CisJfQorCisJ LyogSUYgRVhJU1RTICovCisJaWYgKG5vZGUtPm1pc3Npbmdfb2spCisJeworCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZl9leGlzdHN9cyIpOworCQluZXdfanNvbmJfVkEo c3RhdGUsIDEsICJpZl9leGlzdHMiLCBqYnZTdHJpbmcsICJJRiBFWElTVFMiKTsKKwl9CisKKwkv KiBJREVOVElUWSAqLworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIiAle29iamlk ZW50aXR5fXMiKTsKKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJvYmppZGVudGl0eSIsIGpidlN0 cmluZywgb2JqaWRlbnRpdHkpOworCisJLyogQ0FTQ0FERSAqLworCWlmIChub2RlLT5iZWhhdmlv ciA9PSBEUk9QX0NBU0NBREUpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIs ICIgJXtjYXNjYWRlfXMiKTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLCAiY2FzY2FkZSIsIGpi dlN0cmluZywgIkNBU0NBREUiKTsKKwl9CisKKwkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywg c28gYWRkIGpzb25iIGVsZW1lbnQgZm9yIHRoYXQgKi8KKwluZXdfanNvbmJfVkEoc3RhdGUsIDEs ICJmbXQiLCBqYnZTdHJpbmcsIGZtdFN0ci5kYXRhKTsKKwlwZnJlZShmbXRTdHIuZGF0YSk7CisK Kwlqc29uYnZhbCA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwp OworCisJanNvbmIgPSBKc29uYlZhbHVlVG9Kc29uYihqc29uYnZhbCk7CisJcmV0dXJuIEpzb25i VG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNPTkJfRVNUSU1BVEVEX0xFTik7Cit9CisK Ky8qCisgKiBEZXBhcnNlIGEgQ3JlYXRlU2VxU3RtdC4KKyAqCisgKiBHaXZlbiBhIHNlcXVlbmNl IE9JRCBhbmQgdGhlIHBhcnNlIHRyZWUgdGhhdCBjcmVhdGVkIGl0LCByZXR1cm4gSnNvbmIKKyAq IHJlcHJlc2VudGluZyB0aGUgY3JlYXRpb24gY29tbWFuZC4KKyAqCisgKiBOb3RlOiBXZSBuZWVk IHRvIGRlcGFyc2UgdGhlIENSRUFURSBTRVFVRU5DRSBjb21tYW5kIGZvciB0aGUgVEFCTEUKKyAq IGNvbW1hbmRzLiBGb3IgZXhhbXBsZSwgV2hlbiBjcmVhdGluZyBhIHRhYmxlLCBpZiB3ZSBzcGVj aWZ5IGEgY29sdW1uIGFzIGEKKyAqIHNlcmlhbCB0eXBlLCB0aGVuIHdlIHdpbGwgY3JlYXRlIGEg c2VxdWVuY2UgZm9yIHRoYXQgY29sdW1uIGFuZCBzZXQgdGhhdAorICogc2VxdWVuY2UgT1dORUQg QlkgdGhlIHRhYmxlLiBUaGUgc2VyaWFsIGNvbHVtbiB0eXBlIGluZm9ybWF0aW9uIGlzIG5vdAor ICogYXZhaWxhYmxlIGR1cmluZyBkZXBhcnNpbmcgcGhhc2UgYXMgdGhhdCBoYXMgYWxyZWFkeSBi ZWVuIGNvbnZlcnRlZCB0bworICogdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGFuZCBzZXF1ZW5j ZXMgY3JlYXRpb24gd2hpbGUgcGFyc2luZy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQ1JF QVRFICV7cGVyc2lzdGVuY2V9cyBTRVFVRU5DRSAle2lkZW50aXR5fUQgJXtkZWZpbml0aW9uOiB9 cworICovCitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9DcmVhdGVTZXFTdG10KE9pZCBvYmplY3RJ ZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbGF0aW9uCXJlbGF0aW9uOworCUZvcm1fcGdfc2Vx dWVuY2Ugc2VxZm9ybTsKKwlTZXF1ZW5jZV92YWx1ZXMgKnNlcXZhbHVlczsKKwlDcmVhdGVTZXFT dG10ICpjcmVhdGVTZXFTdG10ID0gKENyZWF0ZVNlcVN0bXQgKikgcGFyc2V0cmVlOworCUpzb25i UGFyc2VTdGF0ZSAqc3RhdGUgPSBOVUxMOworCUpzb25iVmFsdWUgKnZhbHVlOworCVN0cmluZ0lu Zm9EYXRhIGZtdFN0cjsKKwljaGFyCSAgICpwZXJzdHI7CisKKwkvKgorCSAqIE9ubHkgc3VwcG9y dCBzZXF1ZW5jZSBmb3IgSURFTlRJVFkgQ09MVU1OIG91dHB1dCBzZXBhcmF0ZWx5ICh2aWEgQ1JF QVRFCisJICogVEFCTEUgb3IgQUxURVIgVEFCTEUpLiBPdGhlcndpc2UsIHJldHVybiBlbXB0eSBo ZXJlLgorCSAqLworCWlmIChjcmVhdGVTZXFTdG10LT5mb3JfaWRlbnRpdHkpCisJCXJldHVybiBO VUxMOworCisJaW5pdFN0cmluZ0luZm8oJmZtdFN0cik7CisJcmVsYXRpb24gPSByZWxhdGlvbl9v cGVuKG9iamVjdElkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyogbWFyayB0aGUgc3RhcnQgb2Yg Uk9PVCBvYmplY3QgKi8KKwlwdXNoSnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9PQkpFQ1Qs IE5VTEwpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmZtdFN0ciwgIkNSRUFURSIpOworCisJ LyogUEVSU0lTVEVOQ0UgKi8KKwlwZXJzdHIgPSBnZXRfcGVyc2lzdGVuY2Vfc3RyKHJlbGF0aW9u LT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKKwlpZiAocGVyc3RyKQorCXsKKwkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7cGVyc2lzdGVuY2V9cyIpOworCQluZXdfanNvbmJf VkEoc3RhdGUsIDEsCisJCQkJCSAicGVyc2lzdGVuY2UiLCBqYnZTdHJpbmcsIHBlcnN0cik7CisJ fQorCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiIFNFUVVFTkNFIik7CisKKwkv KiBJRiBOT1QgRVhJU1RTICovCisJaWYgKGNyZWF0ZVNlcVN0bXQtPmlmX25vdF9leGlzdHMpCisJ eworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZl9ub3RfZXhpc3RzfXMi KTsKKwkJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAorCQkJCQkgImlmX25vdF9leGlzdHMiLCBqYnZT dHJpbmcsICJJRiBOT1QgRVhJU1RTIik7CisJfQorCisJLyogSURFTlRJVFkgKi8KKwlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtpZGVudGl0eX1EIik7CisJaW5zZXJ0X2lkZW50 aXR5X29iamVjdChzdGF0ZSwgcmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJCQkJ ICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKworCXJlbGF0aW9uX2Nsb3Nl KHJlbGF0aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJc2VxdmFsdWVzID0gZ2V0X3NlcXVlbmNl X3ZhbHVlcyhvYmplY3RJZCk7CisJc2VxZm9ybSA9IHNlcXZhbHVlcy0+c2VxZm9ybTsKKworCS8q IHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgb2JqZWN0IGNyZWF0aW9uLCBwdXNoIHRoZSBrZXkg Zmlyc3QgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZpbml0aW9u OiB9cyIpOworCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJkZWZpbml0aW9uIik7CisKKwlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwkvKiBEZWZpbml0 aW9uIGVsZW1lbnRzICovCisJZGVwYXJzZV9TZXFfQ2FjaGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9y bSk7CisJZGVwYXJzZV9TZXFfQ3ljbGVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJz ZV9TZXFfSW5jcmVtZW50QnlfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJzZV9TZXFf TWludmFsdWVfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJzZV9TZXFfTWF4dmFsdWVf dG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJZGVwYXJzZV9TZXFfU3RhcnR3aXRoX3RvSnNvbmIo c3RhdGUsIHNlcWZvcm0pOworCWRlcGFyc2VfU2VxX1Jlc3RhcnRfdG9Kc29uYihzdGF0ZSwgc2Vx dmFsdWVzLT5sYXN0X3ZhbHVlKTsKKwlkZXBhcnNlX1NlcV9Bc190b0pzb25iKHN0YXRlLCBzZXFm b3JtKTsKKwkvKiBXZSBwdXJwb3NlZnVsbHkgZG8gbm90IGVtaXQgT1dORUQgQlkgaGVyZSAqLwor CisJLyogbWFyayB0aGUgZW5kIG9mIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgKi8KKwlwdXNo SnNvbmJWYWx1ZSgmc3RhdGUsIFdKQl9FTkRfQVJSQVksIE5VTEwpOworCisJLyogV2UgaGF2ZSBm dWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0aGF0ICovCisJbmV3X2pz b25iX1ZBKHN0YXRlLCAxLCAiZm10IiwgamJ2U3RyaW5nLCBmbXRTdHIuZGF0YSk7CisKKwlwZnJl ZShmbXRTdHIuZGF0YSk7CisKKwkvKiBtYXJrIHRoZSBlbmQgb2YgUk9PVCBvYmplY3QgKi8KKwl2 YWx1ZSA9IHB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0VORF9PQkpFQ1QsIE5VTEwpOworCisJ cmV0dXJuIEpzb25iVmFsdWVUb0pzb25iKHZhbHVlKTsKK30KKworLyoKKyAqIERlcGFyc2UgYW4g QWx0ZXJTZXFTdG10LgorICoKKyAqIEdpdmVuIGEgc2VxdWVuY2UgT0lEIGFuZCBhIHBhcnNlIHRy ZWUgdGhhdCBtb2RpZmllZCBpdCwgcmV0dXJuIEpzb25iCisgKiByZXByZXNlbnRpbmcgdGhlIGFs dGVyIGNvbW1hbmQuCisgKgorICogTm90ZTogV2UgbmVlZCB0byBkZXBhcnNlIHRoZSBBTFRFUiBT RVFVRU5DRSBjb21tYW5kIGZvciB0aGUgVEFCTEUgY29tbWFuZHMuCisgKiBGb3IgZXhhbXBsZSwg V2hlbiBjcmVhdGluZyBhIHRhYmxlLCBpZiB3ZSBzcGVjaWZ5IGEgY29sdW1uIGFzIGEgc2VyaWFs CisgKiB0eXBlLCB0aGVuIHdlIHdpbGwgY3JlYXRlIGEgc2VxdWVuY2UgZm9yIHRoYXQgY29sdW1u IGFuZCBzZXQgdGhhdCBzZXF1ZW5jZQorICogT1dORUQgQlkgdGhlIHRhYmxlLiBUaGUgc2VyaWFs IGNvbHVtbiB0eXBlIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUKKyAqIGR1cmluZyBkZXBh cnNpbmcgcGhhc2UgYXMgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCB0byB0aGUgY29s dW1uCisgKiBkZWZhdWx0IHZhbHVlIGFuZCBzZXF1ZW5jZXMgY3JlYXRpb24gd2hpbGUgcGFyc2lu Zy4KKyAqCisgKiBWZXJib3NlIHN5bnRheAorICogQUxURVIgU0VRVUVOQ0UgJXtpZGVudGl0eX1E ICV7ZGVmaW5pdGlvbjogfXMKKyAqLworc3RhdGljIEpzb25iICoKK2RlcGFyc2VfQWx0ZXJTZXFT dG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQoreworCVJlbGF0aW9uCXJlbGF0aW9u OworCUxpc3RDZWxsICAgKmNlbGw7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCVNlcXVl bmNlX3ZhbHVlcyAqc2VxdmFsdWVzOworCUFsdGVyU2VxU3RtdCAqYWx0ZXJTZXFTdG10ID0gKEFs dGVyU2VxU3RtdCAqKSBwYXJzZXRyZWU7CisJSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSA9IE5VTEw7 CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisKKwkvKgorCSAqIFNlcXVlbmNlIGZvciBJREVOVElUWSBD T0xVTU4gb3V0cHV0IHNlcGFyYXRlbHkgKHZpYSBDUkVBVEUgVEFCTEUgb3IKKwkgKiBBTFRFUiBU QUJMRSk7IHJldHVybiBlbXB0eSBoZXJlLgorCSAqLworCWlmIChhbHRlclNlcVN0bXQtPmZvcl9p ZGVudGl0eSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZWxhdGlvbiA9IHJlbGF0aW9uX29wZW4ob2Jq ZWN0SWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBtYXJrIHRoZSBzdGFydCBvZiBST09UIG9i amVjdCAqLworCXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7 CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsCisJCQkJICJmbXQiLCBqYnZTdHJpbmcsICJBTFRF UiBTRVFVRU5DRSAle2lkZW50aXR5fUQgJXtkZWZpbml0aW9uOiB9cyIpOworCisJaW5zZXJ0X2lk ZW50aXR5X29iamVjdChzdGF0ZSwgcmVsYXRpb24tPnJkX3JlbC0+cmVsbmFtZXNwYWNlLAorCQkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKwlyZWxhdGlvbl9jbG9z ZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXNlcXZhbHVlcyA9IGdldF9zZXF1ZW5j ZV92YWx1ZXMob2JqZWN0SWQpOworCXNlcWZvcm0gPSBzZXF2YWx1ZXMtPnNlcWZvcm07CisKKwkv KiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5IG9iamVjdCBjcmVhdGlvbiwgcHVzaCB0aGUga2V5 IGZpcnN0ICovCisJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmluaXRpb24iKTsKKworCS8q IG1hcmsgdGhlIHN0YXJ0IG9mIHNlcXVlbmNlIGRlZmluaXRpb24gYXJyYXkgKi8KKwlwdXNoSnNv bmJWYWx1ZSgmc3RhdGUsIFdKQl9CRUdJTl9BUlJBWSwgTlVMTCk7CisKKwlmb3JlYWNoKGNlbGws ICgoQWx0ZXJTZXFTdG10ICopIHBhcnNldHJlZSktPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAg ICplbGVtID0gKERlZkVsZW0gKikgbGZpcnN0KGNlbGwpOworCisJCWlmIChzdHJjbXAoZWxlbS0+ ZGVmbmFtZSwgImNhY2hlIikgPT0gMCkKKwkJCWRlcGFyc2VfU2VxX0NhY2hlX3RvSnNvbmIoc3Rh dGUsIHNlcWZvcm0pOworCQllbHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImN5Y2xlIikg PT0gMCkKKwkJCWRlcGFyc2VfU2VxX0N5Y2xlX3RvSnNvbmIoc3RhdGUsIHNlcWZvcm0pOworCQll bHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgImluY3JlbWVudCIpID09IDApCisJCQlkZXBh cnNlX1NlcV9JbmNyZW1lbnRCeV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJZWxzZSBpZiAo c3RyY21wKGVsZW0tPmRlZm5hbWUsICJtaW52YWx1ZSIpID09IDApCisJCQlkZXBhcnNlX1NlcV9N aW52YWx1ZV90b0pzb25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0t PmRlZm5hbWUsICJtYXh2YWx1ZSIpID09IDApCisJCQlkZXBhcnNlX1NlcV9NYXh2YWx1ZV90b0pz b25iKHN0YXRlLCBzZXFmb3JtKTsKKwkJZWxzZSBpZiAoc3RyY21wKGVsZW0tPmRlZm5hbWUsICJz dGFydCIpID09IDApCisJCQlkZXBhcnNlX1NlcV9TdGFydHdpdGhfdG9Kc29uYihzdGF0ZSwgc2Vx Zm9ybSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAicmVzdGFydCIpID09IDAp CisJCQlkZXBhcnNlX1NlcV9SZXN0YXJ0X3RvSnNvbmIoc3RhdGUsIHNlcXZhbHVlcy0+bGFzdF92 YWx1ZSk7CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAib3duZWRfYnkiKSA9PSAw KQorCQkJZGVwYXJzZV9TZXFfT3duZWRCeV90b0pzb25iKHN0YXRlLCBvYmplY3RJZCk7CisJCWVs c2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiYXMiKSA9PSAwKQorCQkJZGVwYXJzZV9TZXFf QXNfdG9Kc29uYihzdGF0ZSwgc2VxZm9ybSk7CisJCWVsc2UKKwkJCWVsb2coRVJST1IsICJpbnZh bGlkIHNlcXVlbmNlIG9wdGlvbiAlcyIsIGVsZW0tPmRlZm5hbWUpOworCX0KKworCS8qIG1hcmsg dGhlIGVuZCBvZiBzZXF1ZW5jZSBkZWZpbml0aW9uIGFycmF5ICovCisJcHVzaEpzb25iVmFsdWUo JnN0YXRlLCBXSkJfRU5EX0FSUkFZLCBOVUxMKTsKKworCS8qIG1hcmsgdGhlIGVuZCBvZiBST09U IG9iamVjdCAqLworCXZhbHVlID0gcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVD VCwgTlVMTCk7CisKKwlyZXR1cm4gSnNvbmJWYWx1ZVRvSnNvbmIodmFsdWUpOworfQorCisvKgor ICogSGFuZGxlIGRlcGFyc2luZyBvZiBzaW1wbGUgY29tbWFuZHMuCisgKgorICogVGhpcyBmdW5j dGlvbiBzaG91bGQgY292ZXIgYWxsIGNhc2VzIGhhbmRsZWQgaW4gUHJvY2Vzc1V0aWxpdHlTbG93 LgorICovCitzdGF0aWMgSnNvbmIgKgorZGVwYXJzZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRD b21tYW5kICpjbWQpCit7CisJT2lkCQkJb2JqZWN0SWQ7CisJTm9kZQkgICAqcGFyc2V0cmVlOwor CisJQXNzZXJ0KGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlKTsKKworCXBhcnNldHJlZSA9IGNtZC0+ cGFyc2V0cmVlOworCW9iamVjdElkID0gY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkOwor CisJaWYgKGNtZC0+aW5fZXh0ZW5zaW9uICYmIChub2RlVGFnKHBhcnNldHJlZSkgIT0gVF9DcmVh dGVFeHRlbnNpb25TdG10KSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBUaGlzIHN3aXRjaCBuZWVk cyB0byBoYW5kbGUgZXZlcnl0aGluZyB0aGF0IFByb2Nlc3NVdGlsaXR5U2xvdyBkb2VzICovCisJ c3dpdGNoIChub2RlVGFnKHBhcnNldHJlZSkpCisJeworCQljYXNlIFRfQWx0ZXJTZXFTdG10Ogor CQkJcmV0dXJuIGRlcGFyc2VfQWx0ZXJTZXFTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCisJ CWNhc2UgVF9DcmVhdGVTZXFTdG10OgorCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChv YmplY3RJZCwgcGFyc2V0cmVlKTsKKworCQljYXNlIFRfQ3JlYXRlU3RtdDoKKwkJCXJldHVybiBk ZXBhcnNlX0NyZWF0ZVN0bXQob2JqZWN0SWQsIHBhcnNldHJlZSk7CisKKwkJZGVmYXVsdDoKKwkJ CWVsb2coTE9HLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZSBpbiBkZXBhcnNlIGNvbW1hbmQ6ICVk IiwKKwkJCQkgKGludCkgbm9kZVRhZyhwYXJzZXRyZWUpKTsKKwl9CisKKwlyZXR1cm4gTlVMTDsK K30KKworLyoKKyAqIFdvcmtob3JzZSB0byBkZXBhcnNlIGEgQ29sbGVjdGVkQ29tbWFuZC4KKyAq LworY2hhciAqCitkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQp Cit7CisJT3ZlcnJpZGVTZWFyY2hQYXRoICpvdmVycmlkZVBhdGg7CisJTWVtb3J5Q29udGV4dCBv bGRjeHQ7CisJTWVtb3J5Q29udGV4dCB0bXBjeHQ7CisJY2hhcgkgICAqY29tbWFuZCA9IE5VTEw7 CisJU3RyaW5nSW5mb0RhdGEgc3RyOworCUpzb25iCSAgICpqc29uYjsKKworCS8qCisJICogQWxs b2NhdGUgZXZlcnl0aGluZyBkb25lIGJ5IHRoZSBkZXBhcnNpbmcgcm91dGluZXMgaW50byBhIHRl bXAgY29udGV4dCwKKwkgKiB0byBhdm9pZCBoYXZpbmcgdG8gc3ByaW5rbGUgdGhlbSB3aXRoIG1l bW9yeSBoYW5kbGluZyBjb2RlLCBidXQKKwkgKiBhbGxvY2F0ZSB0aGUgb3V0cHV0IFN0cmluZ0lu Zm8gYmVmb3JlIHN3aXRjaGluZy4KKwkgKi8KKwlpbml0U3RyaW5nSW5mbygmc3RyKTsKKwl0bXBj eHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCisJCQkJCQkJ CSAgICJkZXBhcnNlIGN0eCIsCisJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfTUlOU0laRSwK KwkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9JTklUU0laRSwKKwkJCQkJCQkJICAgQUxMT0NT RVRfREVGQVVMVF9NQVhTSVpFKTsKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8odG1w Y3h0KTsKKworCS8qCisJICogTWFueSByb3V0aW5lcyB1bmRlcmx5aW5nIHRoaXMgb25lIHdpbGwg aW52b2tlIHJ1bGV1dGlscy5jIGZ1bmN0aW9uYWxpdHkKKwkgKiB0byBvYnRhaW4gZGVwYXJzZWQg dmVyc2lvbnMgb2YgZXhwcmVzc2lvbnMuICBJbiBzdWNoIHJlc3VsdHMsIHdlIHdhbnQKKwkgKiBh bGwgb2JqZWN0IG5hbWVzIHRvIGJlIHF1YWxpZmllZCwgc28gdGhhdCByZXN1bHRzIGFyZSAicG9y dGFibGUiIHRvCisJICogZW52aXJvbm1lbnRzIHdpdGggZGlmZmVyZW50IHNlYXJjaF9wYXRoIHNl dHRpbmdzLiAgUmF0aGVyIHRoYW4KKwkgKiBpbmplY3Rpbmcgd2hhdCB3b3VsZCBiZSByZXBldGl0 aXZlIGNhbGxzIHRvIG92ZXJyaWRlIHNlYXJjaCBwYXRoIGFsbAorCSAqIG92ZXIgdGhlIHBsYWNl LCB3ZSBkbyBpdCBjZW50cmFsbHkgaGVyZS4KKwkgKi8KKwlvdmVycmlkZVBhdGggPSBHZXRPdmVy cmlkZVNlYXJjaFBhdGgoQ3VycmVudE1lbW9yeUNvbnRleHQpOworCW92ZXJyaWRlUGF0aC0+c2No ZW1hcyA9IE5JTDsKKwlvdmVycmlkZVBhdGgtPmFkZENhdGFsb2cgPSBmYWxzZTsKKwlvdmVycmlk ZVBhdGgtPmFkZFRlbXAgPSB0cnVlOworCVB1c2hPdmVycmlkZVNlYXJjaFBhdGgob3ZlcnJpZGVQ YXRoKTsKKworCXN3aXRjaCAoY21kLT50eXBlKQorCXsKKwkJY2FzZSBTQ1RfU2ltcGxlOgorCQkJ anNvbmIgPSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNtZCk7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGRlcGFyc2Ugbm9kZSB0eXBlICVkIiwgY21k LT50eXBlKTsKKwl9CisKKwlQb3BPdmVycmlkZVNlYXJjaFBhdGgoKTsKKworCWlmIChqc29uYikK KwkJY29tbWFuZCA9IEpzb25iVG9DU3RyaW5nKCZzdHIsICZqc29uYi0+cm9vdCwgSlNPTkJfRVNU SU1BVEVEX0xFTik7CisKKwkvKgorCSAqIENsZWFuIHVwLiAgTm90ZSB0aGF0IHNpbmNlIHdlIGNy ZWF0ZWQgdGhlIFN0cmluZ0luZm8gaW4gdGhlIGNhbGxlcidzCisJICogY29udGV4dCwgdGhlIG91 dHB1dCBzdHJpbmcgaXMgbm90IGRlbGV0ZWQgaGVyZS4KKwkgKi8KKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHRtcGN4dCk7CisKKwlyZXR1cm4g Y29tbWFuZDsKK30KKworLyoKKyAqIEdpdmVuIGEgQ29sbGVjdGVkQ29tbWFuZCwgcmV0dXJuIGEg SlNPTiByZXByZXNlbnRhdGlvbiBvZiBpdC4KKyAqCisgKiBUaGUgY29tbWFuZCBpcyBleHBhbmRl ZCBmdWxseSBzbyB0aGF0IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyBldmVuIGluIHRoZQorICog ZmFjZSBvZiBzZWFyY2hfcGF0aCBjaGFuZ2VzLgorICovCitEYXR1bQorZGRsX2RlcGFyc2VfdG9f anNvbihQR19GVU5DVElPTl9BUkdTKQoreworCUNvbGxlY3RlZENvbW1hbmQgKmNtZCA9IChDb2xs ZWN0ZWRDb21tYW5kICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCWNoYXIJICAgKmNvbW1hbmQ7 CisKKwljb21tYW5kID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoY21kKTsKKworCWlmIChjb21t YW5kKQorCQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChjb21tYW5kKSk7CisKKwlQ R19SRVRVUk5fTlVMTCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs anNvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQ1Yzk2OGI3YzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kZGxqc29uLmMKQEAgLTAsMCArMSw3NTkgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIGRkbGpzb24uYworICoJICBKU09OIGNvZGUgcmVsYXRlZCB0byBEREwg Y29tbWFuZCBkZXBhcnNpbmcKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy MywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogTk9URVMKKyAqCisgKiBFYWNoIEpTT05CIG9iamVjdCBpcyBzdXBwb3NlZCB0byBoYXZl IGEgImZtdCIgd2hpY2ggd2lsbCB0ZWxsIGV4cGFuc2lvbgorICogcm91dGluZXMgaG93IEpTT05C IGNhbiBiZSBleHBhbmRlZCB0byBjb25zdHJ1Y3QgZGRsIGNvbW1hbmQuIE9uZSBleGFtcGxlCisg KiBzbmlwcGV0IGZyb20gSlNPTkIgb2JqZWN0IGZvciAnQUxURVIgVEFCTEUgc2FsZXMgQUREIGNv bDEgaW50JzoKKyAqCisgKiB7ICoxLWxldmVsKgorICogICAiZm10IjogIkFMVEVSICV7b2JqdHlw ZX1zICV7b25seX1zICV7aWRlbnRpdHl9RCAle3N1YmNtZHM6LCB9cyIsCisgKiAgICJvbmx5Ijog IiIsCisgKiAgIm9ianR5cGUiOiAiVEFCTEUiLAorICogICJpZGVudGl0eSI6IHsib2JqbmFtZSI6 ICJzYWxlcyIsICJzY2hlbWFuYW1lIjogInB1YmxpYyJ9CisgKiAgInN1YmNtZHMiOiBbCisgKiAg ICAgIHsgKjItbGV2ZWwqCisgKiAgICAgICAgICAiZm10IjogIkFERCAle29ianR5cGV9cyAle2lm X25vdF9leGlzdHN9cyAle2RlZmluaXRpb259cyIsCisgKiAgICAgICAgICAidHlwZSI6ICJhZGQg Y29sdW1uIiwKKyAqICAgICAgICAgICJvYmp0eXBlIjogIkNPTFVNTiIsCisgKiAgICAgICAgICAi ZGVmaW5pdGlvbiI6IHt9CisgKiAgICAgICAgICAgLi4uCisgKiAgICAgIH0KKyAqICAgICAgLi4u CisgKiB9CisgKgorICogRnJvbSBhYm92ZSwgd2UgY2FuIHNlZSBkaWZmZXJlbnQga2V5LXZhbHVl IHBhaXJzLgorICogbGV2ZWwtMSByZXByZXNlbnRzIFJPT1Qgb2JqZWN0IHdpdGggJ2ZtdCcsICdv bmx5JywgJ29ianR5cGUnLCdpZGVudGl0eScsCisgKiAnc3ViY21kcycgYXMgdGhlIGtleXMgd2l0 aCB0aGUgdmFsdWVzIGFwcGVuZGVkIGFmdGVyICI6IiB3aXRoIGVhY2gga2V5LgorICogVmFsdWUg Y2FuIGJlIHN0cmluZywgYm9vbCwgbnVtZXJpYywgYXJyYXkgb3IgYW55IG5lc3RlZCBvYmplY3Qu ICBBcyBhbgorICogZXhhbXBsZSwgIm9ianR5cGUiIGhhcyBzdHJpbmcgdmFsdWUgd2hpbGUgInN1 YmNtZHMiIGhhcyBuZXN0ZWQtb2JqZWN0CisgKiBhcyBpdHMgdmFsdWUgd2hpY2ggY2FuIGZ1cnRo ZXIgaGF2ZSBtdWx0aXBsZSBrZXktdmFsdWUgcGFpcnMuCisgKgorICogVGhlIHZhbHVlIG9mICJm bXQiIHRlbGxzIHVzIGhvdyB0aGUgZXhwYW5zaW9uIHdpbGwgYmUgY2FycmllZCBvbi4gVGhlCisg KiB2YWx1ZSBvZiAiZm10IiAgbWF5IGNvbnRhaW4gemVybyBvciBtb3JlICUtZXNjYXBlcywgd2hp Y2ggY29uc2lzdCBvZiBrZXkKKyAqIG5hbWUgZW5jbG9zZWQgaW4geyB9LCBmb2xsb3dlZCBieSBh IGNvbnZlcnNpb24gc3BlY2lmaWVyIHdoaWNoIHRlbGxzIHVzCisgKiBob3cgdGhlIHZhbHVlIGZv ciB0aGF0IHBhcnRpY3VsYXIga2V5IHNob3VsZCBiZSBleHBhbmRlZC4KKyAqIFBvc3NpYmxlIGNv bnZlcnNpb24gc3BlY2lmaWVycyBhcmU6CisgKiAlICAgICAgICAgICAgZXhwYW5kIHRvIGEgbGl0 ZXJhbCAlCisgKiBJICAgICAgICAgICAgZXhwYW5kIGFzIGEgc2luZ2xlLCBub24tcXVhbGlmaWVk IGlkZW50aWZpZXIKKyAqIEQgICAgICAgICAgICBleHBhbmQgYXMgYSBwb3NzaWJseS1xdWFsaWZp ZWQgaWRlbnRpZmllcgorICogVCAgICAgICAgICAgIGV4cGFuZCBhcyBhIHR5cGUgbmFtZQorICog TCAgICAgICAgICAgIGV4cGFuZCBhcyBhIHN0cmluZyBsaXRlcmFsIChxdW90ZSB1c2luZyBzaW5n bGUgcXVvdGVzKQorICogcyAgICAgICAgICAgIGV4cGFuZCBhcyBhIHNpbXBsZSBzdHJpbmcgKG5v IHF1b3RpbmcpCisgKiBuICAgICAgICAgICAgZXhwYW5kIGFzIGEgc2ltcGxlIG51bWJlciAobm8g cXVvdGluZykKKyAqCisgKiBJbiBvcmRlciB0byBidWlsZCBhIERETCBjb21tYW5kLCBpdCB3aWxs IGZpcnN0IGV4dHJhY3QgImZtdCIgbm9kZSBpbgorICoganNvbmIgc3RyaW5nIGFuZCB3aWxsIHJl YWQgZWFjaCBrZXkgbmFtZSBlbmNsb3NlZCBpbiB7IH0gaW4gZm10LXN0cmluZworICogYW5kIHdp bGwgcmVwbGFjZSBpdCB3aXRoIGl0cyB2YWx1ZS4gRm9yIGVhY2ggbmFtZSBtZW50aW9uZWQgaW4g eyB9IGluCisgKiBmbXQgc3RyaW5nLCB0aGVyZSBtdXN0IGJlIGEga2V5LXZhbHVlIHBhaXIsIGlu IGFic2VuY2Ugb2Ygd2hpY2gsIHRoZQorICogZXhwYW5zaW9uIHdpbGwgZXJyb3Igb3V0LiBXaGls ZSBkb2luZyB0aGlzIGV4cGFuc2lvbiwgaXQgd2lsbCBjb25zaWRlcgorICogdGhlIGNvbnZlcnNp b24tc3BlY2lmaWVyIG1haW50YWluZWQgd2l0aCBlYWNoIGtleSBpbiBmbXQgc3RyaW5nIHRvIGZp Z3VyZQorICogb3V0IGhvdyB2YWx1ZSBzaG91bGQgYWN0dWFsbHkgYmUgcmVwcmVzZW50ZWQuIFRo aXMgaXMgaG93IERETCBjb21tYW5kIGNhbgorICogYmUgY29uc3RydWN0ZWQgYmFjayBmcm9tIHRo ZSBqc29uYi1zdHJpbmcuCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsanNvbi5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCisjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgorCisKKyNkZWZpbmUg QURWQU5DRV9QQVJTRV9QT0lOVEVSKHB0cixlbmRfcHRyKSBcCisJZG8geyBcCisJCWlmICgrKyhw dHIpID49IChlbmRfcHRyKSkgXAorCQkJZXJlcG9ydChFUlJPUiwgXAorCQkJCQllcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLCBcCisJCQkJCWVycm1zZygidW50ZXJtaW5h dGVkIGZvcm1hdCBzcGVjaWZpZXIiKSk7IFwKKwl9IHdoaWxlICgwKQorCisvKgorICogQ29udmVy c2lvbiBzcGVjaWZpZXIgd2hpY2ggZGV0ZXJtaW5lcyBob3cgdG8gZXhwYW5kIHRoZSBKU09OIGVs ZW1lbnQKKyAqIGludG8gYSBzdHJpbmcuCisgKi8KK3R5cGVkZWYgZW51bQoreworCVNwZWNEb3R0 ZWROYW1lLAorCVNwZWNJZGVudGlmaWVyLAorCVNwZWNOdW1iZXIsCisJU3BlY1N0cmluZywKKwlT cGVjU3RyaW5nTGl0ZXJhbCwKKwlTcGVjVHlwZU5hbWUKK30gY29udlNwZWNpZmllcjsKKworLyoK KyAqIEEgdGVybmFyeSB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgYSBib29sZWFuIHR5cGUgSnNvbmJW YWx1ZS4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJdHZfYWJzZW50LAorCXR2X3RydWUsCisJdHZf ZmFsc2UKK30JCQlqc29uX3RyaXZhbHVlOworCitzdGF0aWMgYm9vbCBleHBhbmRfb25lX2pzb25i X2VsZW1lbnQoU3RyaW5nSW5mbyBidWYsIGNoYXIgKnBhcmFtLAorCQkJCQkJCQkJIEpzb25iVmFs dWUgKmpzb252YWwsIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLAorCQkJCQkJCQkJIGNvbnN0IGNo YXIgKmZtdCk7CitzdGF0aWMgdm9pZCBleHBhbmRfanNvbmJfYXJyYXkoU3RyaW5nSW5mbyBidWYs IGNoYXIgKnBhcmFtLAorCQkJCQkJCSAgIEpzb25iVmFsdWUgKmpzb25hcnIsIGNoYXIgKmFycmF5 c2VwLAorCQkJCQkJCSAgIGNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyLCBjb25zdCBjaGFyICpmbXQp Oworc3RhdGljIHZvaWQgZm10c3RyX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CisKKy8qCisg KiBHaXZlbiBhIEpzb25iQ29udGFpbmVyLCBmaW5kIHRoZSBKc29uYlZhbHVlIHdpdGggdGhlIGdp dmVuIGtleSBuYW1lIGluIGl0LgorICogSWYgaXQncyBvZiBhIHR5cGUgb3RoZXIgdGhhbiBqYnZC b29sLCBhbiBlcnJvciBpcyByYWlzZWQuIElmIGl0IGRvZXNuJ3QKKyAqIGV4aXN0LCB0dl9hYnNl bnQgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSByZXR1cm4gdGhlIGFjdHVhbCBqc29uX3RyaXZhbHVl LgorICovCitzdGF0aWMganNvbl90cml2YWx1ZQorZmluZF9ib29sX2luX2pzb25iY29udGFpbmVy KEpzb25iQ29udGFpbmVyICpjb250YWluZXIsIGNoYXIgKmtleW5hbWUpCit7CisJSnNvbmJWYWx1 ZQlrZXk7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisJanNvbl90cml2YWx1ZSByZXN1bHQ7CisKKwlr ZXkudHlwZSA9IGpidlN0cmluZzsKKwlrZXkudmFsLnN0cmluZy52YWwgPSBrZXluYW1lOworCWtl eS52YWwuc3RyaW5nLmxlbiA9IHN0cmxlbihrZXluYW1lKTsKKwl2YWx1ZSA9IGZpbmRKc29uYlZh bHVlRnJvbUNvbnRhaW5lcihjb250YWluZXIsCisJCQkJCQkJCQkJSkJfRk9CSkVDVCwgJmtleSk7 CisJaWYgKHZhbHVlID09IE5VTEwpCisJCXJldHVybiB0dl9hYnNlbnQ7CisJaWYgKHZhbHVlLT50 eXBlICE9IGpidkJvb2wpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX0lO VkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coImVsZW1lbnQgXCIlc1wiIGlzIG5v dCBvZiB0eXBlIGJvb2xlYW4iLCBrZXluYW1lKSk7CisJcmVzdWx0ID0gdmFsdWUtPnZhbC5ib29s ZWFuID8gdHZfdHJ1ZSA6IHR2X2ZhbHNlOworCXBmcmVlKHZhbHVlKTsKKworCXJldHVybiByZXN1 bHQ7Cit9CisKKy8qCisgKiBHaXZlbiBhIEpzb25iQ29udGFpbmVyLCBmaW5kIHRoZSBKc29uYlZh bHVlIHdpdGggdGhlIGdpdmVuIGtleSBuYW1lIGluIGl0LgorICogSWYgaXQncyBvZiBhIHR5cGUg b3RoZXIgdGhhbiBqYnZTdHJpbmcsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0IGRvZXNuJ3QK KyAqIGV4aXN0LCBhbiBlcnJvciBpcyByYWlzZWQgdW5sZXNzIG1pc3Npbmdfb2s7IG90aGVyd2lz ZSByZXR1cm4gTlVMTC4KKyAqCisgKiBJZiBpdCBleGlzdHMgYW5kIGlzIGEgc3RyaW5nLCBhIGZy ZXNobHkgcGFsbG9jJ2VkIGNvcHkgaXMgcmV0dXJuZWQuCisgKgorICogSWYgKmxlbmd0aCBpcyBu b3QgTlVMTCwgaXQgaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KKyAqLworc3Rh dGljIGNoYXIgKgorZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoSnNvbmJDb250YWluZXIg KmNvbnRhaW5lciwgY2hhciAqa2V5bmFtZSwKKwkJCQkJCQkgIGJvb2wgbWlzc2luZ19vaywgaW50 ICpsZW5ndGgpCit7CisJSnNvbmJWYWx1ZQlrZXk7CisJSnNvbmJWYWx1ZSAqdmFsdWU7CisJY2hh cgkgICAqc3RyOworCisJLyogWFhYIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gb2JqZWN0LCBub3Qg YW4gYXJyYXkgKi8KKworCWtleS50eXBlID0gamJ2U3RyaW5nOworCWtleS52YWwuc3RyaW5nLnZh bCA9IGtleW5hbWU7CisJa2V5LnZhbC5zdHJpbmcubGVuID0gc3RybGVuKGtleW5hbWUpOworCXZh bHVlID0gZmluZEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwKKwkJCQkJCQkJCQlK Ql9GT0JKRUNULCAma2V5KTsKKwlpZiAodmFsdWUgPT0gTlVMTCkKKwl7CisJCWlmIChtaXNzaW5n X29rKQorCQkJcmV0dXJuIE5VTEw7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coIm1pc3NpbmcgZWxlbWVu dCBcIiVzXCIgaW4gSlNPTiBvYmplY3QiLCBrZXluYW1lKSk7CisJfQorCisJaWYgKHZhbHVlLT50 eXBlICE9IGpidlN0cmluZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMg bm90IG9mIHR5cGUgc3RyaW5nIiwga2V5bmFtZSkpOworCisJc3RyID0gcG5zdHJkdXAodmFsdWUt PnZhbC5zdHJpbmcudmFsLCB2YWx1ZS0+dmFsLnN0cmluZy5sZW4pOworCWlmIChsZW5ndGgpCisJ CSpsZW5ndGggPSB2YWx1ZS0+dmFsLnN0cmluZy5sZW47CisJcGZyZWUodmFsdWUpOworCXJldHVy biBzdHI7Cit9CisKKy8qCisgKiBSZWN1cnNpdmUgaGVscGVyIGZvciBkZXBhcnNlX2RkbF9qc29u X3RvX3N0cmluZy4KKyAqCisgKiBGaW5kIHRoZSAiZm10IiBlbGVtZW50IGluIHRoZSBnaXZlbiBj b250YWluZXIsIGFuZCBleHBhbmQgaXQgaW50byB0aGUKKyAqIHByb3ZpZGVkIFN0cmluZ0luZm8u CisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfZm10X3JlY3Vyc2l2ZShTdHJpbmdJbmZvIGJ1Ziwg SnNvbmJDb250YWluZXIgKmNvbnRhaW5lcikKK3sKKwlKc29uYlZhbHVlCWtleTsKKwlKc29uYlZh bHVlICp2YWx1ZTsKKwljb25zdCBjaGFyICpjcDsKKwljb25zdCBjaGFyICpzdGFydF9wdHI7CisJ Y29uc3QgY2hhciAqZW5kX3B0cjsKKwlpbnQJCQlsZW47CisKKwlzdGFydF9wdHIgPSBmaW5kX3N0 cmluZ19pbl9qc29uYmNvbnRhaW5lcihjb250YWluZXIsICJmbXQiLCBmYWxzZSwgJmxlbik7CisJ ZW5kX3B0ciA9IHN0YXJ0X3B0ciArIGxlbjsKKworCWZvciAoY3AgPSBzdGFydF9wdHI7IGNwIDwg ZW5kX3B0cjsgY3ArKykKKwl7CisJCWNvbnZTcGVjaWZpZXIgc3BlY2lmaWVyOworCQlib29sCQlp c19hcnJheSA9IGZhbHNlOworCQljaGFyCSAgICpwYXJhbSA9IE5VTEw7CisJCWNoYXIJICAgKmFy cmF5c2VwID0gTlVMTDsKKworCQlpZiAoKmNwICE9ICclJykKKwkJeworCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXJNYWNybyhidWYsICpjcCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCUFEVkFOQ0Vf UEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7CisKKwkJLyogRWFzeSBjYXNlOiAlJSBvdXRwdXRz IGEgc2luZ2xlICUgKi8KKwkJaWYgKCpjcCA9PSAnJScpCisJCXsKKwkJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyTWFjcm8oYnVmLCAqY3ApOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBT Y2FuIHRoZSBtYW5kYXRvcnkgZWxlbWVudCBuYW1lLiAgQWxsb3cgZm9yIGFuIGFycmF5IHNlcGFy YXRvcgorCQkgKiAod2hpY2ggbWF5IGJlIHRoZSBlbXB0eSBzdHJpbmcpIHRvIGJlIHNwZWNpZmll ZCBhZnRlciBhIGNvbG9uLgorCQkgKi8KKwkJaWYgKCpjcCA9PSAneycpCisJCXsKKwkJCVN0cmlu Z0luZm9EYXRhIHBhcmJ1ZjsKKwkJCVN0cmluZ0luZm9EYXRhIGFycmF5c2VwYnVmOworCQkJU3Ry aW5nSW5mbwlhcHBlbmRUbzsKKworCQkJaW5pdFN0cmluZ0luZm8oJnBhcmJ1Zik7CisJCQlhcHBl bmRUbyA9ICZwYXJidWY7CisKKwkJCUFEVkFOQ0VfUEFSU0VfUE9JTlRFUihjcCwgZW5kX3B0cik7 CisJCQl3aGlsZSAoY3AgPCBlbmRfcHRyKQorCQkJeworCQkJCWlmICgqY3AgPT0gJzonKQorCQkJ CXsKKwkJCQkJLyoKKwkJCQkJICogRm91bmQgYXJyYXkgc2VwYXJhdG9yIGRlbGltaXRlcjsgZWxl bWVudCBuYW1lIGlzIG5vdworCQkJCQkgKiBjb21wbGV0ZSwgc3RhcnQgZmlsbGluZyB0aGUgc2Vw YXJhdG9yLgorCQkJCQkgKi8KKwkJCQkJaW5pdFN0cmluZ0luZm8oJmFycmF5c2VwYnVmKTsKKwkJ CQkJYXBwZW5kVG8gPSAmYXJyYXlzZXBidWY7CisJCQkJCWlzX2FycmF5ID0gdHJ1ZTsKKwkJCQkJ QURWQU5DRV9QQVJTRV9QT0lOVEVSKGNwLCBlbmRfcHRyKTsKKwkJCQkJY29udGludWU7CisJCQkJ fQorCisJCQkJaWYgKCpjcCA9PSAnfScpCisJCQkJeworCQkJCQlBRFZBTkNFX1BBUlNFX1BPSU5U RVIoY3AsIGVuZF9wdHIpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXJNYWNybyhhcHBlbmRUbywgKmNwKTsKKwkJCQlBRFZBTkNFX1BBUlNFX1BPSU5URVIoY3As IGVuZF9wdHIpOworCQkJfQorCQkJcGFyYW0gPSBwYXJidWYuZGF0YTsKKwkJCWlmIChpc19hcnJh eSkKKwkJCQlhcnJheXNlcCA9IGFycmF5c2VwYnVmLmRhdGE7CisJCX0KKwkJaWYgKHBhcmFtID09 IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coIm1pc3NpbmcgY29udmVyc2lvbiBuYW1lIGlu IGNvbnZlcnNpb24gc3BlY2lmaWVyIikpOworCisJCXN3aXRjaCAoKmNwKQorCQl7CisJCQljYXNl ICdJJzoKKwkJCQlzcGVjaWZpZXIgPSBTcGVjSWRlbnRpZmllcjsKKwkJCQlicmVhazsKKwkJCWNh c2UgJ0QnOgorCQkJCXNwZWNpZmllciA9IFNwZWNEb3R0ZWROYW1lOworCQkJCWJyZWFrOworCQkJ Y2FzZSAncyc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1N0cmluZzsKKwkJCQlicmVhazsKKwkJCWNh c2UgJ0wnOgorCQkJCXNwZWNpZmllciA9IFNwZWNTdHJpbmdMaXRlcmFsOworCQkJCWJyZWFrOwor CQkJY2FzZSAnVCc6CisJCQkJc3BlY2lmaWVyID0gU3BlY1R5cGVOYW1lOworCQkJCWJyZWFrOwor CQkJY2FzZSAnbic6CisJCQkJc3BlY2lmaWVyID0gU3BlY051bWJlcjsKKwkJCQlicmVhazsKKwkJ CWRlZmF1bHQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImludmFsaWQgY29udmVyc2lvbiBz cGVjaWZpZXIgXCIlY1wiIiwgKmNwKSk7CisJCX0KKworCQkvKgorCQkgKiBPYnRhaW4gdGhlIGVs ZW1lbnQgdG8gYmUgZXhwYW5kZWQuCisJCSAqLworCQlrZXkudHlwZSA9IGpidlN0cmluZzsKKwkJ a2V5LnZhbC5zdHJpbmcudmFsID0gcGFyYW07CisJCWtleS52YWwuc3RyaW5nLmxlbiA9IHN0cmxl bihwYXJhbSk7CisKKwkJdmFsdWUgPSBmaW5kSnNvbmJWYWx1ZUZyb21Db250YWluZXIoY29udGFp bmVyLCBKQl9GT0JKRUNULCAma2V5KTsKKwkJQXNzZXJ0KHZhbHVlICE9IE5VTEwpOworCisJCS8q CisJCSAqIEV4cGFuZCB0aGUgZGF0YSAocG9zc2libHkgYW4gYXJyYXkpIGludG8gdGhlIG91dHB1 dCBTdHJpbmdJbmZvLgorCQkgKi8KKwkJaWYgKGlzX2FycmF5KQorCQkJZXhwYW5kX2pzb25iX2Fy cmF5KGJ1ZiwgcGFyYW0sIHZhbHVlLCBhcnJheXNlcCwgc3BlY2lmaWVyLCBzdGFydF9wdHIpOwor CQllbHNlCisJCQlleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoYnVmLCBwYXJhbSwgdmFsdWUsIHNw ZWNpZmllciwgc3RhcnRfcHRyKTsKKworCQlwZnJlZSh2YWx1ZSk7CisJfQorfQorCisvKgorICog RXhwYW5kIGEganNvbiB2YWx1ZSBhcyBhIHF1b3RlZCBpZGVudGlmaWVyLiAgVGhlIHZhbHVlIG11 c3QgYmUgb2YgdHlwZSBzdHJpbmcuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9p ZGVudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJ ICAgKnN0cjsKKworCUFzc2VydChqc29udmFsLT50eXBlID09IGpidlN0cmluZyk7CisKKwlzdHIg PSBwbnN0cmR1cChqc29udmFsLT52YWwuc3RyaW5nLnZhbCwganNvbnZhbC0+dmFsLnN0cmluZy5s ZW4pOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKHN0cikp OworCXBmcmVlKHN0cik7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBqc29uIHZhbHVlIGFzIGEgZG90 LXNlcGFyYXRlZC1uYW1lLiAgVGhlIHZhbHVlIG11c3QgYmUgb2YgdHlwZQorICogYmluYXJ5IGFu ZCBtYXkgY29udGFpbiBlbGVtZW50cyAic2NoZW1hbmFtZSIgKG9wdGlvbmFsKSwgIm9iam5hbWUi CisgKiAobWFuZGF0b3J5KSwgImF0dHJuYW1lIiAob3B0aW9uYWwpLiAgRG91YmxlIHF1b3RlcyBh cmUgYWRkZWQgdG8gZWFjaCBlbGVtZW50CisgKiBhcyBuZWNlc3NhcnksIGFuZCBkb3Qgc2VwYXJh dG9ycyB3aGVyZSBuZWVkZWQuCisgKgorICogT25lIGRheSB3ZSBtaWdodCBuZWVkIGEgImNhdGFs b2ciIGVsZW1lbnQgYXMgd2VsbCwgYnV0IG5vIGN1cnJlbnQgdXNlIGNhc2UKKyAqIG5lZWRzIHRo YXQuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRfanNvbnZhbF9kb3R0ZWRuYW1lKFN0cmluZ0lu Zm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJICAgKnN0cjsKKwlKc29uYkNv bnRhaW5lciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YTsKKworCUFzc2VydChqc29u dmFsLT50eXBlID09IGpidkJpbmFyeSk7CisKKwlzdHIgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNv bnRhaW5lcihkYXRhLCAic2NoZW1hbmFtZSIsIHRydWUsIE5VTEwpOworCWlmIChzdHIpCisJewor CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzLiIsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJ CXBmcmVlKHN0cik7CisJfQorCisJc3RyID0gZmluZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIo ZGF0YSwgIm9iam5hbWUiLCBmYWxzZSwgTlVMTCk7CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIl cyIsIHF1b3RlX2lkZW50aWZpZXIoc3RyKSk7CisJcGZyZWUoc3RyKTsKKworCXN0ciA9IGZpbmRf c3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJhdHRybmFtZSIsIHRydWUsIE5VTEwpOwor CWlmIChzdHIpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIi4lcyIsIHF1b3RlX2lkZW50 aWZpZXIoc3RyKSk7CisJCXBmcmVlKHN0cik7CisJfQorfQorCisvKgorICogRXhwYW5kIGEgSlNP TiB2YWx1ZSBhcyBhIHR5cGUgbmFtZS4KKyAqLworc3RhdGljIHZvaWQKK2V4cGFuZF9qc29udmFs X3R5cGVuYW1lKFN0cmluZ0luZm8gYnVmLCBKc29uYlZhbHVlICpqc29udmFsKQoreworCWNoYXIJ ICAgKnNjaGVtYSA9IE5VTEw7CisJY2hhcgkgICAqdHlwZW5hbWUgPSBOVUxMOworCWNoYXIJICAg KnR5cG1vZHN0ciA9IE5VTEw7CisJanNvbl90cml2YWx1ZSBpc19hcnJheTsKKwljaGFyCSAgICph cnJheV9kZWNvcjsKKwlKc29uYkNvbnRhaW5lciAqZGF0YSA9IGpzb252YWwtPnZhbC5iaW5hcnku ZGF0YTsKKworCS8qCisJICogV2Ugb21pdCBzY2hlbWEtcXVhbGlmeWluZyB0aGUgb3V0cHV0IG5h bWUgaWYgdGhlIHNjaGVtYSBlbGVtZW50IGlzCisJICogZWl0aGVyIHRoZSBlbXB0eSBzdHJpbmcg b3IgTlVMTDsgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aG9zZSB0d28gY2FzZXMKKwkgKiBpcyB0 aGF0IGluIHRoZSBsYXR0ZXIgd2UgcXVvdGUgdGhlIHR5cGUgbmFtZSwgaW4gdGhlIGZvcm1lciB3 ZSBkb24ndC4KKwkgKiBUaGlzIGFsbG93cyBmb3IgdHlwZXMgd2l0aCBzcGVjaWFsIHR5cG1vZCBu ZWVkcywgc3VjaCBhcyBpbnRlcnZhbCBhbmQKKwkgKiB0aW1lc3RhbXAgKHNlZSBmb3JtYXRfdHlw ZV9kZXRhaWxlZCksIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYWxsb3dpbmcKKwkgKiBmb3IgdGhl IHNjaGVtYSBuYW1lIHRvIGJlIG9taXR0ZWQgZnJvbSB0eXBlIG5hbWVzIHRoYXQgcmVxdWlyZSBx dW90ZXMKKwkgKiBidXQgYXJlIHRvIGJlIG9idGFpbmVkIGZyb20gYSB1c2VyIHNjaGVtYS4KKwkg Ki8KKworCXNjaGVtYSA9IGZpbmRfc3RyaW5nX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJzY2hl bWFuYW1lIiwgdHJ1ZSwgTlVMTCk7CisJdHlwZW5hbWUgPSBmaW5kX3N0cmluZ19pbl9qc29uYmNv bnRhaW5lcihkYXRhLCAidHlwZW5hbWUiLCBmYWxzZSwgTlVMTCk7CisJdHlwbW9kc3RyID0gZmlu ZF9zdHJpbmdfaW5fanNvbmJjb250YWluZXIoZGF0YSwgInR5cG1vZCIsIHRydWUsIE5VTEwpOwor CWlzX2FycmF5ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGRhdGEsICJ0eXBhcnJheSIp OworCXN3aXRjaCAoaXNfYXJyYXkpCisJeworCQljYXNlIHR2X3RydWU6CisJCQlhcnJheV9kZWNv ciA9ICJbXSI7CisJCQlicmVhazsKKworCQljYXNlIHR2X2ZhbHNlOgorCQkJYXJyYXlfZGVjb3Ig PSAiIjsKKwkJCWJyZWFrOworCisJCWNhc2UgdHZfYWJzZW50OgorCQlkZWZhdWx0OgorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJZXJybXNnKCJtaXNzaW5nIHR5cGFycmF5IGVsZW1lbnQiKSk7CisJfQorCisJaWYg KHNjaGVtYSA9PSBOVUxMKQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgcXVvdGVfaWRl bnRpZmllcih0eXBlbmFtZSkpOworCWVsc2UgaWYgKHNjaGVtYVswXSA9PSAnXDAnKQorCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiVzIiwgdHlwZW5hbWUpOwkvKiBTcGVjaWFsIHR5cG1vZCBuZWVk cyAqLworCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcy4lcyIsIHF1b3RlX2lkZW50 aWZpZXIoc2NoZW1hKSwKKwkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKHR5cGVuYW1lKSk7CisKKwlh cHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzJXMiLCB0eXBtb2RzdHIgPyB0eXBtb2RzdHIgOiAiIiwg YXJyYXlfZGVjb3IpOworCisJaWYgKHNjaGVtYSkKKwkJcGZyZWUoc2NoZW1hKTsKKwlpZiAodHlw ZW5hbWUpCisJCXBmcmVlKHR5cGVuYW1lKTsKKwlpZiAodHlwbW9kc3RyKQorCQlwZnJlZSh0eXBt b2RzdHIpOworfQorCisvKgorICogRXhwYW5kIGEgSlNPTiB2YWx1ZSBhcyBhIHN0cmluZy4gIFRo ZSB2YWx1ZSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIG9mCisgKiB0eXBlIEJpbmFyeS4gIElu IHRoZSBsYXR0ZXIgY2FzZSwgaXQgbXVzdCBjb250YWluIGEgImZtdCIgZWxlbWVudCB3aGljaCB3 aWxsCisgKiBiZSByZWN1cnNpdmVseSBleHBhbmRlZDsgYWxzbywgaWYgdGhlIG9iamVjdCBjb250 YWlucyBhbiBlbGVtZW50ICJwcmVzZW50IgorICogYW5kIGl0IGlzIHNldCB0byBmYWxzZSwgdGhl IGV4cGFuc2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLgorICoKKyAqIFJldHVybnMgZmFsc2UgaWYg bm8gYWN0dWFsIGV4cGFuc2lvbiB3YXMgbWFkZSBkdWUgdG8gdGhlICJwcmVzZW50IiBmbGFnCisg KiBiZWluZyBzZXQgdG8gImZhbHNlIi4KKyAqCisgKiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxl IHRvIGNoZWNrIGpzb252YWwgaXMgb2YgdHlwZSBqYnZTdHJpbmcgb3IgamJ2QmluYXJ5LgorICov CitzdGF0aWMgYm9vbAorZXhwYW5kX2pzb252YWxfc3RyaW5nKFN0cmluZ0luZm8gYnVmLCBKc29u YlZhbHVlICpqc29udmFsKQoreworCWJvb2wgZXhwYW5kZWQgPSBmYWxzZTsKKworCUFzc2VydCgo anNvbnZhbC0+dHlwZSA9PSBqYnZTdHJpbmcpIHx8IChqc29udmFsLT50eXBlID09IGpidkJpbmFy eSkpOworCisJaWYgKGpzb252YWwtPnR5cGUgPT0gamJ2U3RyaW5nKQorCXsKKwkJYXBwZW5kQmlu YXJ5U3RyaW5nSW5mbyhidWYsIGpzb252YWwtPnZhbC5zdHJpbmcudmFsLAorCQkJCQkJCSAgIGpz b252YWwtPnZhbC5zdHJpbmcubGVuKTsKKwkJZXhwYW5kZWQgPSB0cnVlOworCX0KKwllbHNlIGlm IChqc29udmFsLT50eXBlID09IGpidkJpbmFyeSkKKwl7CisJCWpzb25fdHJpdmFsdWUgcHJlc2Vu dDsKKworCQlwcmVzZW50ID0gZmluZF9ib29sX2luX2pzb25iY29udGFpbmVyKGpzb252YWwtPnZh bC5iaW5hcnkuZGF0YSwKKwkJCQkJCQkJCQkJICAicHJlc2VudCIpOworCisJCS8qCisJCSAqIElm ICJwcmVzZW50IiBpcyBzZXQgdG8gZmFsc2UsIHRoaXMgZWxlbWVudCBleHBhbmRzIHRvIGVtcHR5 OworCQkgKiBvdGhlcndpc2UgKGVpdGhlciB0cnVlIG9yIGFic2VudCksIGV4cGFuZCAiZm10Ii4K KwkJICovCisJCWlmIChwcmVzZW50ICE9IHR2X2ZhbHNlKQorCQl7CisJCQlleHBhbmRfZm10X3Jl Y3Vyc2l2ZShidWYsIGpzb252YWwtPnZhbC5iaW5hcnkuZGF0YSk7CisJCQlleHBhbmRlZCA9IHRy dWU7CisJCX0KKwl9CisKKwlyZXR1cm4gZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBFeHBhbmQgYSBK U09OIHZhbHVlIGFzIGEgc3RyaW5nIGxpdGVyYWwuCisgKi8KK3N0YXRpYyB2b2lkCitleHBhbmRf anNvbnZhbF9zdHJsaXQoU3RyaW5nSW5mbyBidWYsIEpzb25iVmFsdWUgKmpzb252YWwpCit7CisJ Y2hhcgkgICAqc3RyOworCVN0cmluZ0luZm9EYXRhIGRxZGVsaW07CisJc3RhdGljIGNvbnN0IGNo YXIgZHFzdWZmaXhlc1tdID0gIl9YWVpaWVhfIjsKKwlpbnQJCQlkcW5leHRjaGFyID0gMDsKKwor CUFzc2VydChqc29udmFsLT50eXBlID09IGpidlN0cmluZyk7CisKKwlzdHIgPSBwbnN0cmR1cChq c29udmFsLT52YWwuc3RyaW5nLnZhbCwganNvbnZhbC0+dmFsLnN0cmluZy5sZW4pOworCisJLyog RWFzeSBjYXNlOiBpZiB0aGVyZSBhcmUgbm8gJyBhbmQgbm8gXCwganVzdCB1c2UgYSBzaW5nbGUg cXVvdGUgKi8KKwlpZiAoc3RycGJyayhzdHIsICJcJ1xcIikgPT0gTlVMTCkKKwl7CisJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiJyVzJyIsIHN0cik7CisJCXBmcmVlKHN0cik7CisJCXJldHVybjsK Kwl9CisKKwkvKiBPdGhlcndpc2UgbmVlZCB0byBmaW5kIGEgdXNlZnVsIGRvbGxhci1xdW90ZSBk ZWxpbWl0ZXIgKi8KKwlpbml0U3RyaW5nSW5mbygmZHFkZWxpbSk7CisJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmZHFkZWxpbSwgIiQiKTsKKwl3aGlsZSAoc3Ryc3RyKHN0ciwgZHFkZWxpbS5kYXRh KSAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmRxZGVsaW0sIGRxc3VmZml4 ZXNbZHFuZXh0Y2hhcisrXSk7CisJCWRxbmV4dGNoYXIgPSBkcW5leHRjaGFyICUgKHNpemVvZihk cXN1ZmZpeGVzKSAtIDEpOworCX0KKwkvKiBBZGQgdHJhaWxpbmcgJCAqLworCWFwcGVuZFN0cmlu Z0luZm9DaGFyKCZkcWRlbGltLCAnJCcpOworCisJLyogQW5kIGZpbmFsbHkgcHJvZHVjZSB0aGUg cXVvdGVkIGxpdGVyYWwgaW50byB0aGUgb3V0cHV0IFN0cmluZ0luZm8gKi8KKwlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiVzJXMlcyIsIGRxZGVsaW0uZGF0YSwgc3RyLCBkcWRlbGltLmRhdGEpOwor CXBmcmVlKGRxZGVsaW0uZGF0YSk7CisJcGZyZWUoc3RyKTsKK30KKworLyoKKyAqIEV4cGFuZCBh IEpTT04gdmFsdWUgYXMgYW4gaW50ZWdlciBxdWFudGl0eS4KKyAqLworc3RhdGljIHZvaWQKK2V4 cGFuZF9qc29udmFsX251bWJlcihTdHJpbmdJbmZvIGJ1ZiwgSnNvbmJWYWx1ZSAqanNvbnZhbCkK K3sKKwljaGFyCSAgICpzdHJkYXR1bTsKKworCUFzc2VydChqc29udmFsLT50eXBlID09IGpidk51 bWVyaWMpOworCisJc3RyZGF0dW0gPSBEYXR1bUdldENTdHJpbmcoRGlyZWN0RnVuY3Rpb25DYWxs MShudW1lcmljX291dCwKKwkJCQkJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bShqc29udmFsLT52 YWwubnVtZXJpYykpKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwgc3RyZGF0dW0pOwor CXBmcmVlKHN0cmRhdHVtKTsKK30KKworLyoKKyAqIEV4cGFuZCBvbmUgSlNPTiBlbGVtZW50IGlu dG8gdGhlIG91dHB1dCBTdHJpbmdJbmZvIGFjY29yZGluZyB0byB0aGUKKyAqIGNvbnZlcnNpb24g c3BlY2lmaWVyLiAgVGhlIGVsZW1lbnQgdHlwZSBpcyB2YWxpZGF0ZWQsIGFuZCBhbiBlcnJvciBp cyByYWlzZWQKKyAqIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggd2hhdCB3ZSBleHBlY3QgZm9yIHRoZSBj b252ZXJzaW9uIHNwZWNpZmllci4KKyAqCisgKiBSZXR1cm5zIHRydWUsIGV4Y2VwdCBmb3IgdGhl IGZvcm1hdHRlZCBzdHJpbmcgY2FzZSBpZiBubyBhY3R1YWwgZXhwYW5zaW9uCisgKiB3YXMgbWFk ZSAoZHVlIHRvIHRoZSAicHJlc2VudCIgZmxhZyBiZWluZyBzZXQgdG8gImZhbHNlIikuCisgKi8K K3N0YXRpYyBib29sCitleHBhbmRfb25lX2pzb25iX2VsZW1lbnQoU3RyaW5nSW5mbyBidWYsIGNo YXIgKnBhcmFtLCBKc29uYlZhbHVlICpqc29udmFsLAorCQkJCQkJIGNvbnZTcGVjaWZpZXIgc3Bl Y2lmaWVyLCBjb25zdCBjaGFyICpmbXQpCit7CisJYm9vbAkJc3RyaW5nX2V4cGFuZGVkID0gdHJ1 ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBzcWxlcnJjb250ZXh0OworCisJLyogSWYgd2Ugd2Vy ZSBnaXZlbiBhIGZvcm1hdCBzdHJpbmcsIHNldHVwIGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxi YWNrICovCisJaWYgKGZtdCkKKwl7CisJCXNxbGVycmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJf ZXJyb3JfY2FsbGJhY2s7CisJCXNxbGVycmNvbnRleHQuYXJnID0gKHZvaWQgKikgZm10OworCQlz cWxlcnJjb250ZXh0LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29u dGV4dF9zdGFjayA9ICZzcWxlcnJjb250ZXh0OworCX0KKworCWlmICghanNvbnZhbCkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUp LAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgbm90IGZvdW5kIiwgcGFyYW0pKTsKKworCXN3 aXRjaCAoc3BlY2lmaWVyKQorCXsKKwkJY2FzZSBTcGVjSWRlbnRpZmllcjoKKwkJCWlmIChqc29u dmFsLT50eXBlICE9IGpidlN0cmluZykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygiZXhwZWN0 ZWQgSlNPTiBzdHJpbmcgZm9yICUlSSBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJCQkJCQkg ICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252YWxfaWRlbnRpZmllcihi dWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjRG90dGVkTmFtZToKKwkJCWlm IChqc29udmFsLT50eXBlICE9IGpidkJpbmFyeSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCWVycm1zZygi ZXhwZWN0ZWQgSlNPTiBzdHJ1Y3QgZm9yICUlRCBlbGVtZW50IFwiJXNcIiwgZ290ICVkIiwKKwkJ CQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5kX2pzb252YWxfZG90dGVk bmFtZShidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjU3RyaW5nOgorCQkJ aWYgKGpzb252YWwtPnR5cGUgIT0gamJ2U3RyaW5nICYmCisJCQkJanNvbnZhbC0+dHlwZSAhPSBq YnZCaW5hcnkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZB TElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5n IG9yIHN0cnVjdCBmb3IgJSVzIGVsZW1lbnQgXCIlc1wiLCBnb3QgJWQiLAorCQkJCQkJCSAgIHBh cmFtLCBqc29udmFsLT50eXBlKSk7CisJCQlzdHJpbmdfZXhwYW5kZWQgPSBleHBhbmRfanNvbnZh bF9zdHJpbmcoYnVmLCBqc29udmFsKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU3BlY1N0cmluZ0xp dGVyYWw6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZTdHJpbmcpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RyaW5nIGZvciAlJUwgZWxlbWVudCBcIiVzXCIs IGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9q c29udmFsX3N0cmxpdChidWYsIGpzb252YWwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBTcGVjVHlw ZU5hbWU6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZCaW5hcnkpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJ CQkJCQllcnJtc2coImV4cGVjdGVkIEpTT04gc3RydWN0IGZvciAlJVQgZWxlbWVudCBcIiVzXCIs IGdvdCAlZCIsCisJCQkJCQkJICAgcGFyYW0sIGpzb252YWwtPnR5cGUpKTsKKwkJCWV4cGFuZF9q c29udmFsX3R5cGVuYW1lKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKworCQljYXNlIFNwZWNO dW1iZXI6CisJCQlpZiAoanNvbnZhbC0+dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCQkJZXJybXNnKCJleHBlY3RlZCBKU09OIG51bWVyaWMgZm9yICUlbiBlbGVtZW50IFwiJXNc IiwgZ290ICVkIiwKKwkJCQkJCQkgICBwYXJhbSwganNvbnZhbC0+dHlwZSkpOworCQkJZXhwYW5k X2pzb252YWxfbnVtYmVyKGJ1ZiwganNvbnZhbCk7CisJCQlicmVhazsKKwl9CisKKwlpZiAoZm10 KQorCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4dC5wcmV2aW91czsKKworCXJl dHVybiBzdHJpbmdfZXhwYW5kZWQ7Cit9CisKKy8qCisgKiBJdGVyYXRlIG9uIHRoZSBlbGVtZW50 cyBvZiBhIEpTT04gYXJyYXksIGV4cGFuZGluZyBlYWNoIG9uZSBpbnRvIHRoZSBvdXRwdXQKKyAq IFN0cmluZ0luZm8gcGVyIHRoZSBnaXZlbiBjb252ZXJzaW9uIHNwZWNpZmllciwgc2VwYXJhdGVk IGJ5IHRoZSBnaXZlbgorICogc2VwYXJhdG9yLgorICovCitzdGF0aWMgdm9pZAorZXhwYW5kX2pz b25iX2FycmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKKwkJCQkgICBKc29uYlZhbHVl ICpqc29uYXJyLCBjaGFyICphcnJheXNlcCwgY29udlNwZWNpZmllciBzcGVjaWZpZXIsCisJCQkJ ICAgY29uc3QgY2hhciAqZm10KQoreworCUVycm9yQ29udGV4dENhbGxiYWNrIHNxbGVycmNvbnRl eHQ7CisJSnNvbmJDb250YWluZXIgKmNvbnRhaW5lcjsKKwlKc29uYkl0ZXJhdG9yICppdDsKKwlK c29uYlZhbHVlCXY7CisJaW50CQkJdHlwZTsKKwlib29sCQlmaXJzdCA9IHRydWU7CisJU3RyaW5n SW5mb0RhdGEgYXJyYXllbGVtOworCisJLyogSWYgd2Ugd2VyZSBnaXZlbiBhIGZvcm1hdCBzdHJp bmcsIHNldHVwIGFuIGVyZXBvcnQoKSBjb250ZXh0IGNhbGxiYWNrICovCisJaWYgKGZtdCkKKwl7 CisJCXNxbGVycmNvbnRleHQuY2FsbGJhY2sgPSBmbXRzdHJfZXJyb3JfY2FsbGJhY2s7CisJCXNx bGVycmNvbnRleHQuYXJnID0gKHZvaWQgKikgZm10OworCQlzcWxlcnJjb250ZXh0LnByZXZpb3Vz ID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJZXJyb3JfY29udGV4dF9zdGFjayA9ICZzcWxlcnJj b250ZXh0OworCX0KKworCWlmICghanNvbmFycikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVu dCBcIiVzXCIgbm90IGZvdW5kIiwgcGFyYW0pKTsKKworCWlmIChqc29uYXJyLT50eXBlICE9IGpi dkJpbmFyeSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCWVycm1zZygiZWxlbWVudCBcIiVzXCIgaXMgbm90IGEgSlNP TiBhcnJheSIsIHBhcmFtKSk7CisKKwljb250YWluZXIgPSBqc29uYXJyLT52YWwuYmluYXJ5LmRh dGE7CisJaWYgKCFKc29uQ29udGFpbmVySXNBcnJheShjb250YWluZXIpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ ZXJybXNnKCJlbGVtZW50IFwiJXNcIiBpcyBub3QgYSBKU09OIGFycmF5IiwgcGFyYW0pKTsKKwor CWluaXRTdHJpbmdJbmZvKCZhcnJheWVsZW0pOworCisJaXQgPSBKc29uYkl0ZXJhdG9ySW5pdChj b250YWluZXIpOworCXdoaWxlICgodHlwZSA9IEpzb25iSXRlcmF0b3JOZXh0KCZpdCwgJnYsIHRy dWUpKSAhPSBXSkJfRE9ORSkKKwl7CisJCWlmICh0eXBlID09IFdKQl9FTEVNKQorCQl7CisJCQly ZXNldFN0cmluZ0luZm8oJmFycmF5ZWxlbSk7CisKKwkJCWlmIChleHBhbmRfb25lX2pzb25iX2Vs ZW1lbnQoJmFycmF5ZWxlbSwgcGFyYW0sICZ2LCBzcGVjaWZpZXIsIE5VTEwpKQorCQkJeworCQkJ CWlmICghZmlyc3QpCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBhcnJheXNlcCk7 CisKKwkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGJ1ZiwgYXJyYXllbGVtLmRhdGEsIGFycmF5 ZWxlbS5sZW4pOworCQkJCWZpcnN0ID0gZmFsc2U7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoZm10 KQorCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc3FsZXJyY29udGV4dC5wcmV2aW91czsKK30KKwor LyoKKyAqIFdvcmtob3JzZSBmb3IgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQuCisgKi8KK2No YXIgKgorZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIpCit7CisJRGF0 dW0JCWQ7CisJSnNvbmIJICAgKmpzb25iOworCVN0cmluZ0luZm8JYnVmID0gKFN0cmluZ0luZm8p IHBhbGxvYzAoc2l6ZW9mKFN0cmluZ0luZm9EYXRhKSk7CisKKwlpbml0U3RyaW5nSW5mbyhidWYp OworCisJZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4sIFBvaW50ZXJHZXREYXR1bShq c29uX3N0cikpOworCWpzb25iID0gKEpzb25iICopIERhdHVtR2V0UG9pbnRlcihkKTsKKworCWV4 cGFuZF9mbXRfcmVjdXJzaXZlKGJ1ZiwgJmpzb25iLT5yb290KTsKKworCXJldHVybiBidWYtPmRh dGE7Cit9CisKKy8qLS0tLS0tCisgKiBSZXR1cm5zIGEgZm9ybWF0dGVkIHN0cmluZyBmcm9tIGEg SlNPTiBvYmplY3QuCisgKgorICogVGhlIHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBlbGVtZW50IG5h bWVkICJmbXQiICh3aGljaCBtdXN0IGJlIGEgc3RyaW5nKS4KKyAqIFRoaXMgZm9ybWF0IHN0cmlu ZyBtYXkgY29udGFpbiB6ZXJvIG9yIG1vcmUgJS1lc2NhcGVzLCB3aGljaCBjb25zaXN0IG9mIGFu CisgKiBlbGVtZW50IG5hbWUgZW5jbG9zZWQgaW4geyB9LCBwb3NzaWJseSBmb2xsb3dlZCBieSBh IGNvbnZlcnNpb24gbW9kaWZpZXIsCisgKiBmb2xsb3dlZCBieSBhIGNvbnZlcnNpb24gc3BlY2lm aWVyLiAgUG9zc2libGUgY29udmVyc2lvbiBzcGVjaWZpZXJzIGFyZToKKyAqCisgKiAlCQlleHBh bmQgdG8gYSBsaXRlcmFsICUKKyAqIEkJCWV4cGFuZCBhcyBhIHNpbmdsZSwgbm9uLXF1YWxpZmll ZCBpZGVudGlmaWVyCisgKiBECQlleHBhbmQgYXMgYSBwb3NzaWJseS1xdWFsaWZpZWQgaWRlbnRp ZmllcgorICogVAkJZXhwYW5kIGFzIGEgdHlwZSBuYW1lCisgKiBMCQlleHBhbmQgYXMgYSBzdHJp bmcgbGl0ZXJhbCAocXVvdGUgdXNpbmcgc2luZ2xlIHF1b3RlcykKKyAqIHMJCWV4cGFuZCBhcyBh IHNpbXBsZSBzdHJpbmcgKG5vIHF1b3RpbmcpCisgKiBuCQlleHBhbmQgYXMgYSBzaW1wbGUgbnVt YmVyIChubyBxdW90aW5nKQorICoKKyAqIFRoZSBlbGVtZW50IG5hbWUgbWF5IGhhdmUgYW4gb3B0 aW9uYWwgc2VwYXJhdG9yIHNwZWNpZmljYXRpb24gcHJlY2VkZWQKKyAqIGJ5IGEgY29sb24uICBJ dHMgcHJlc2VuY2UgaW5kaWNhdGVzIHRoYXQgdGhlIGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUK KyAqIGFuIGFycmF5OyB0aGUgc3BlY2lmaWVkIHNlcGFyYXRvciBpcyB1c2VkIHRvIGpvaW4gdGhl IGFycmF5IGVsZW1lbnRzLgorICoKKyAqIFRoZSBhY3R1YWwgY29udmVyc2lvbiBvZiBzaW5nbGUg SlNPTiBlbGVtZW50IGludG8gc3RyaW5nIGFjY29yZGluZyB0bworICogYWJvdmUgY29udmVyc2lv biBzcGVjaWZpZXJzIHRha2VzIHBsYWNlIGluIGV4cGFuZF9vbmVfanNvbmJfZWxlbWVudCgpCisg Ki0tLS0tLQorICovCitEYXR1bQorZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwl0ZXh0CSAgICpqc29uID0gUEdfR0VUQVJHX1RFWFRfUCgwKTsKKwljaGFy CSAgICpqc29uX3N0cjsKKworCWpzb25fc3RyID0gdGV4dF90b19jc3RyaW5nKGpzb24pOworCisJ UEdfUkVUVVJOX1RFWFRfUChjc3RyaW5nX3RvX3RleHQoZGVwYXJzZV9kZGxfanNvbl90b19zdHJp bmcoanNvbl9zdHIpKSk7Cit9CisKKy8qCisgKiBFcnJvciBjb250ZXh0IGNhbGxiYWNrIGZvciBK U09OIGZvcm1hdCBzdHJpbmcgZXhwYW5zaW9uLgorICoKKyAqIFhYWDogaW5kaWNhdGUgd2hpY2gg ZWxlbWVudCB3ZSdyZSBleHBhbmRpbmcsIGlmIGFwcGxpY2FibGUuCisgKi8KK3N0YXRpYyB2b2lk CitmbXRzdHJfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQoreworCWVycmNvbnRleHQoIndoaWxl IGV4cGFuZGluZyBmb3JtYXQgc3RyaW5nIFwiJXNcIiIsIChjaGFyICopIGFyZyk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5kZXggZDRiMDBkMWE4Mi4uNGQ0OGU0OTBlZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9mdW5jLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAidGNvcC9kZGxkZXBhcnNlLmgiCiAjaW5jbHVkZSAi dGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNs dWRlICJ1dGlscy9hY2wuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29u LmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKaW5kZXggNDJjY2VkOWVi ZS4uOTUzOWU1M2JhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVp bGQKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWVzb24uYnVpbGQKQEAgLTE3LDYgKzE3LDgg QEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnY29weXRvLmMnLAogICAnY3JlYXRlYXMu YycsCiAgICdkYmNvbW1hbmRzLmMnLAorICAnZGRsZGVwYXJzZS5jJywKKyAgJ2RkbGpzb24uYycs CiAgICdkZWZpbmUuYycsCiAgICdkaXNjYXJkLmMnLAogICAnZHJvcGNtZHMuYycsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VxdWVuY2UuYwppbmRleCBlZjAxNDQ5Njc4Li40YmI3MzFkNWZmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3NlcXVlbmNlLmMKQEAgLTE3MDcsNiArMTcwNyw0OSBAQCBwcm9jZXNzX293bmVkX2J5KFJlbGF0 aW9uIHNlcXJlbCwgTGlzdCAqb3duZWRfYnksIGJvb2wgZm9yX2lkZW50aXR5KQogCQlyZWxhdGlv bl9jbG9zZSh0YWJsZXJlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIFJldHVybiBzZXF1ZW5jZSBw YXJhbWV0ZXJzLCBkZXRhaWxlZAorICovCitTZXF1ZW5jZV92YWx1ZXMgKgorZ2V0X3NlcXVlbmNl X3ZhbHVlcyhPaWQgc2VxdWVuY2VJZCkKK3sKKwlCdWZmZXIgICAgICBidWY7CisJU2VxVGFibGUg ICAgZWxtOworCVJlbGF0aW9uICAgIHNlcXJlbDsKKwlIZWFwVHVwbGUJc2VxdHVwbGU7CisJSGVh cFR1cGxlRGF0YSBzZXF0dXBsZWRhdGE7CisJRm9ybV9wZ19zZXF1ZW5jZSBzZXFmb3JtOworCUZv cm1fcGdfc2VxdWVuY2VfZGF0YSBzZXE7CisJU2VxdWVuY2VfdmFsdWVzICpzZXF2YWx1ZXM7CisK KwlzZXF0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShTRVFSRUxJRCwgc2VxdWVuY2VJZCk7CisJaWYg KCFIZWFwVHVwbGVJc1ZhbGlkKHNlcXR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIHNlcXVlbmNlICV1Iiwgc2VxdWVuY2VJZCk7CisJc2VxZm9ybSA9IChGb3Jt X3BnX3NlcXVlbmNlKSBHRVRTVFJVQ1Qoc2VxdHVwbGUpOworCisJUmVsZWFzZVN5c0NhY2hlKHNl cXR1cGxlKTsKKworCS8qIE9wZW4gYW5kIGxvY2sgc2VxdWVuY2UgKi8KKwlpbml0X3NlcXVlbmNl KHNlcXVlbmNlSWQsICZlbG0sICZzZXFyZWwpOworCisJaWYgKHBnX2NsYXNzX2FjbGNoZWNrKHNl cXVlbmNlSWQsIEdldFVzZXJJZCgpLAorCQlBQ0xfU0VMRUNUIHwgQUNMX1VTQUdFKSAhPSBBQ0xD SEVDS19PSykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJ RU5UX1BSSVZJTEVHRSksCisJCQkJZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2VxdWVu Y2UgJXMiLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSk7CisKKwlz ZXEgPSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZzZXF0dXBsZWRhdGEpOworCisJc2Vx dmFsdWVzID0gKFNlcXVlbmNlX3ZhbHVlcyAqKSBwYWxsb2Moc2l6ZW9mKFNlcXVlbmNlX3ZhbHVl cykpOworCXNlcXZhbHVlcy0+bGFzdF92YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwlzZXF2YWx1 ZXMtPnNlcWZvcm0gPSBzZXFmb3JtOworCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCXJl bGF0aW9uX2Nsb3NlKHNlcXJlbCwgTm9Mb2NrKTsKKworCXJldHVybiBzZXF2YWx1ZXM7Cit9CiAK IC8qCiAgKiBSZXR1cm4gc2VxdWVuY2UgcGFyYW1ldGVycyBpbiBhIGxpc3Qgb2YgdGhlIGZvcm0g Y3JlYXRlZCBieSB0aGUgcGFyc2VyLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA0ZDQ5 ZDcwYzMzLi5jMTVlOTQzZjFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjAwLDcg KzYwMCw2IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY1NldENvbXByZXNzaW9uKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmNvbHVtbiwgTm9kZSAqbmV3VmFsdWUs IExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogc3RhdGljIHZvaWQgaW5kZXhfY29weV9kYXRhKFJlbGF0 aW9uIHJlbCwgUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3IpOwotc3RhdGljIGNvbnN0IGNoYXIg KnN0b3JhZ2VfbmFtZShjaGFyIGMpOwogCiBzdGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9y RHJvcFJlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWwsIE9pZCByZWxPaWQsCiAJCQkJCQkJCQkJ CU9pZCBvbGRSZWxPaWQsIHZvaWQgKmFyZyk7CkBAIC0yMjY2LDcgKzIyNjUsNyBAQCB0cnVuY2F0 ZV9jaGVja19hY3Rpdml0eShSZWxhdGlvbiByZWwpCiAgKiBzdG9yYWdlX25hbWUKICAqCSAgcmV0 dXJucyB0aGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGEgdHlwc3RvcmFnZS9hdHRzdG9yYWdlIGVu dW0gdmFsdWUKICAqLwotc3RhdGljIGNvbnN0IGNoYXIgKgorY2hhciAqCiBzdG9yYWdlX25hbWUo Y2hhciBjKQogewogCXN3aXRjaCAoYykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4 IGQ2NzU4MGZjNzcuLjc1MzQ1NmVjYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpA QCAtMTM5Myw2ICsxMzkzLDcgQEAgZXhwYW5kVGFibGVMaWtlQ2xhdXNlKFJhbmdlVmFyICpoZWFw UmVsLCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhdXNlKQogCQlhdGNtZC0+Y21kcyA9 IGF0c3ViY21kczsKIAkJYXRjbWQtPm9ianR5cGUgPSBPQkpFQ1RfVEFCTEU7CiAJCWF0Y21kLT5t aXNzaW5nX29rID0gZmFsc2U7CisJCWF0Y21kLT50YWJsZV9saWtlID0gdHJ1ZTsKIAkJcmVzdWx0 ID0gbGNvbnMoYXRjbWQsIHJlc3VsdCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvZm9ybWF0X3R5cGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXRfdHlw ZS5jCmluZGV4IDEyNDAyYTA2MzcuLjQzMTgxMjk1NTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9mb3JtYXRfdHlwZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXRfdHlwZS5jCkBAIC0yNyw4ICsyNyw2IEBACiAjaW5jbHVkZSAidXRpbHMvbnVtZXJpYy5oIgog I2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKLXN0YXRpYyBjaGFyICpwcmludFR5cG1vZChj b25zdCBjaGFyICp0eXBuYW1lLCBpbnQzMiB0eXBtb2QsIE9pZCB0eXBtb2RvdXQpOwotCiAKIC8q CiAgKiBTUUwgZnVuY3Rpb246IGZvcm1hdF90eXBlKHR5cGVfb2lkLCB0eXBlbW9kKQpAQCAtMzI5 LDYgKzMyNywxMTAgQEAgZm9ybWF0X3R5cGVfZXh0ZW5kZWQoT2lkIHR5cGVfb2lkLCBpbnQzMiB0 eXBlbW9kLCBiaXRzMTYgZmxhZ3MpCiAJcmV0dXJuIGJ1ZjsKIH0KIAorLyoKKyAqIFNpbWlsYXIg dG8gZm9ybWF0X3R5cGVfZXh0ZW5kZWQsIGV4Y2VwdCB3ZSByZXR1cm4gZWFjaCBiaXQgb2YgaW5m b3JtYXRpb24KKyAqIHNlcGFyYXRlbHk6CisgKgorICogLSBuc3BpZCBpcyB0aGUgc2NoZW1hIE9J RC4gIEZvciBjZXJ0YWluIFNRTC1zdGFuZGFyZCB0eXBlcyB3aGljaCBoYXZlIHdlaXJkCisgKiAg IHR5cG1vZCBydWxlcywgd2UgcmV0dXJuIEludmFsaWRPaWQ7IHRoZSBjYWxsZXIgaXMgZXhwZWN0 ZWQgdG8gbm90IHNjaGVtYS0KKyAqICAgcXVhbGlmeSB0aGUgbmFtZSBub3IgYWRkIHF1b3RlcyB0 byB0aGUgdHlwZSBuYW1lIGluIHRoaXMgY2FzZS4KKyAqCisgKiAtIHR5cG5hbWUgaXMgc2V0IHRv IHRoZSB0eXBlIG5hbWUsIHdpdGhvdXQgcXVvdGVzCisgKgorICogLSB0eXBlbW9kc3RyIGlzIHNl dCB0byB0aGUgdHlwZW1vZCwgaWYgYW55LCBhcyBhIHN0cmluZyB3aXRoIHBhcmVudGhlc2VzCisg KgorICogLSB0eXBhcnJheSBpbmRpY2F0ZXMgd2hldGhlciBbXXMgbXVzdCBiZSBhZGRlZAorICoK KyAqIFdlIGRvbid0IHRyeSB0byBkZWNvZGUgdHlwZSBuYW1lcyB0byB0aGVpciBzdGFuZGFyZC1t YW5kYXRlZCBuYW1lcywgZXhjZXB0CisgKiBpbiB0aGUgY2FzZXMgb2YgdHlwZXMgd2l0aCB1bnVz dWFsIHR5cG1vZCBydWxlcy4KKyAqLwordm9pZAorZm9ybWF0X3R5cGVfZGV0YWlsZWQoT2lkIHR5 cGVfb2lkLCBpbnQzMiB0eXBlbW9kLAorCQkJCQkgT2lkICpuc3BpZCwgY2hhciAqKnR5cG5hbWUs IGNoYXIgKip0eXBlbW9kc3RyLAorCQkJCQkgYm9vbCAqdHlwZWFycmF5KQoreworCUhlYXBUdXBs ZQl0dXBsZTsKKwlGb3JtX3BnX3R5cGUgdHlwZWZvcm07CisJT2lkCQkJYXJyYXlfYmFzZV90eXBl OworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0 eXBlX29pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCWVsb2coRVJST1Is ICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciB0eXBlIHdpdGggT0lEICV1IiwgdHlwZV9vaWQpOwor CisJdHlwZWZvcm0gPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHVwbGUpOworCisJLyoKKwkg KiBXZSBzd2l0Y2ggb3VyIGF0dGVudGlvbiB0byB0aGUgYXJyYXkgZWxlbWVudCB0eXBlIGZvciBj ZXJ0YWluIGNhc2VzLgorCSAqIENoZWNrIGlmIGl0J3MgYSAidHJ1ZSIgYXJyYXkgdHlwZS4gIFBz ZXVkby1hcnJheSB0eXBlcyBzdWNoIGFzICJuYW1lIgorCSAqIHNob3VsZG4ndCBnZXQgZGVjb25z dHJ1Y3RlZC4gIEFsc28gY2hlY2sgdGhlIHRvYXN0IHByb3BlcnR5LCBhbmQgZG9uJ3QKKwkgKiBk ZWNvbnN0cnVjdCAicGxhaW4gc3RvcmFnZSIgYXJyYXkgdHlwZXMgLS0tIHRoaXMgaXMgYmVjYXVz ZSB3ZSBkb24ndAorCSAqIHdhbnQgdG8gc2hvdyBvaWR2ZWN0b3IgYXMgb2lkW10uCisJICovCisJ YXJyYXlfYmFzZV90eXBlID0gdHlwZWZvcm0tPnR5cGVsZW07CisKKwkqdHlwZWFycmF5ID0gKElz VHJ1ZUFycmF5VHlwZSh0eXBlZm9ybSkgJiYgdHlwZWZvcm0tPnR5cHN0b3JhZ2UgIT0gVFlQU1RP UkFHRV9QTEFJTik7CisKKwlpZiAoKnR5cGVhcnJheSkKKwl7CisJCVJlbGVhc2VTeXNDYWNoZSh0 dXBsZSk7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0 dW0oYXJyYXlfYmFzZV90eXBlKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJ CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSB3aXRoIE9JRCAldSIs IHR5cGVfb2lkKTsKKworCQl0eXBlZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0dXBs ZSk7CisJCXR5cGVfb2lkID0gYXJyYXlfYmFzZV90eXBlOworCX0KKworCS8qCisJICogU3BlY2lh bC1jYXNlIGNyb2NrIGZvciB0eXBlcyB3aXRoIHN0cmFuZ2UgdHlwbW9kIHJ1bGVzIHdoZXJlIHdl IHB1dAorCSAqIHR5cGVtb2QgYXQgdGhlIG1pZGRsZSBvZiBuYW1lIChlLmcuIFRJTUUoNikgd2l0 aCB0aW1lIHpvbmUpLiBXZSBjYW5ub3QKKwkgKiBzY2hlbWEtcXVhbGlmeSBub3IgYWRkIHF1b3Rl cyB0byB0aGUgdHlwZSBuYW1lIGluIHRoZXNlIGNhc2VzLgorCSAqLworCSpuc3BpZCA9IEludmFs aWRPaWQ7CisKKwlzd2l0Y2ggKHR5cGVfb2lkKQorCXsKKwkJY2FzZSBUSU1FT0lEOgorCQkJKnR5 cG5hbWUgPSBwc3RyZHVwKCJUSU1FIik7CisJCQlicmVhazsKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6 CisJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUVTVEFNUCIpOworCQkJYnJlYWs7CisJCWNhc2Ug VElNRVNUQU1QVFpPSUQ6CisJCQlpZiAodHlwZW1vZCA8IDApCisJCQkJKnR5cG5hbWUgPSBwc3Ry ZHVwKCJUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBvdGhlcndp c2UsIFdJVEggVFogaXMgYWRkZWQgYnkgdHlwbW9kLiAqLworCQkJCSp0eXBuYW1lID0gcHN0cmR1 cCgiVElNRVNUQU1QIik7CisJCQlicmVhazsKKwkJY2FzZSBJTlRFUlZBTE9JRDoKKwkJCSp0eXBu YW1lID0gcHN0cmR1cCgiSU5URVJWQUwiKTsKKwkJCWJyZWFrOworCQljYXNlIFRJTUVUWk9JRDoK KwkJCWlmICh0eXBlbW9kIDwgMCkKKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAoIlRJTUUgV0lUSCBU SU1FIFpPTkUiKTsKKwkJCWVsc2UKKwkJCQkvKiBvdGhlcndpc2UsIFdJVEggVFogaXMgYWRkZWQg YnkgdHlwbW9kLiAqLworCQkJCSp0eXBuYW1lID0gcHN0cmR1cCgiVElNRSIpOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisKKwkJCS8qCisJCQkgKiBObyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgaXMg cmVxdWlyZWQgZm9yIG90aGVyIHR5cGVzLCBzbyBnZXQKKwkJCSAqIHRoZSB0eXBlIG5hbWUgYW5k IHNjaGVtYSBkaXJlY3RseSBmcm9tIHRoZSBjYXRhbG9nLgorCQkJICovCisJCQkqbnNwaWQgPSB0 eXBlZm9ybS0+dHlwbmFtZXNwYWNlOworCQkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlw ZWZvcm0tPnR5cG5hbWUpKTsKKwl9CisKKwlpZiAodHlwZW1vZCA+PSAwKQorCQkqdHlwZW1vZHN0 ciA9IHByaW50VHlwbW9kKCIiLCB0eXBlbW9kLCB0eXBlZm9ybS0+dHlwbW9kb3V0KTsKKwllbHNl CisJCSp0eXBlbW9kc3RyID0gcHN0cmR1cCgiIik7CisKKwlSZWxlYXNlU3lzQ2FjaGUodHVwbGUp OworfQorCiAvKgogICogVGhpcyB2ZXJzaW9uIGlzIGZvciB1c2Ugd2l0aGluIHRoZSBiYWNrZW5k IGluIGVycm9yIG1lc3NhZ2VzLCBldGMuCiAgKiBPbmUgZGlmZmVyZW5jZSBpcyB0aGF0IGl0IHdp bGwgZmFpbCBmb3IgYW4gaW52YWxpZCB0eXBlLgpAQCAtMzYzLDcgKzQ2NSw3IEBAIGZvcm1hdF90 eXBlX3dpdGhfdHlwZW1vZChPaWQgdHlwZV9vaWQsIGludDMyIHR5cGVtb2QpCiAvKgogICogQWRk IHR5cG1vZCBkZWNvcmF0aW9uIHRvIHRoZSBiYXNpYyB0eXBlIG5hbWUKICAqLwotc3RhdGljIGNo YXIgKgorY2hhciAqCiBwcmludFR5cG1vZChjb25zdCBjaGFyICp0eXBuYW1lLCBpbnQzMiB0eXBt b2QsIE9pZCB0eXBtb2RvdXQpCiB7CiAJY2hhcgkgICAqcmVzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCmluZGV4IGQzYTk3M2Q4NmIuLmI4NzI5ZDhlM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVy LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2FnZy5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZV9mdW5jLmgiCi0jaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKQEAgLTUwMSwyMiArNTAwLDE1IEBAIHN0YXRpYyB2b2lk IGdldF9mcm9tX2NsYXVzZV9jb2xkZWZsaXN0KFJhbmdlVGJsRnVuY3Rpb24gKnJ0ZnVuYywKIAkJ CQkJCQkJCSAgIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgdm9pZCBnZXRfdGFi bGVzYW1wbGVfZGVmKFRhYmxlU2FtcGxlQ2xhdXNlICp0YWJsZXNhbXBsZSwKIAkJCQkJCQkJZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0KTsKLXN0YXRpYyB2b2lkIGdldF9vcGNsYXNzX25hbWUoT2lk IG9wY2xhc3MsIE9pZCBhY3R1YWxfZGF0YXR5cGUsCi0JCQkJCQkJIFN0cmluZ0luZm8gYnVmKTsK IHN0YXRpYyBOb2RlICpwcm9jZXNzSW5kaXJlY3Rpb24oTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdS ZWYgKnNic3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBjaGFyICpnZXRf cmVsYXRpb25fbmFtZShPaWQgcmVsaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3JlbGF0aW9u X25hbWUoT2lkIHJlbGlkLCBMaXN0ICpuYW1lc3BhY2VzKTsKIHN0YXRpYyBjaGFyICpnZW5lcmF0 ZV9xdWFsaWZpZWRfcmVsYXRpb25fbmFtZShPaWQgcmVsaWQpOwotc3RhdGljIGNoYXIgKmdlbmVy YXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1bmNpZCwgaW50IG5hcmdzLAotCQkJCQkJCQkJTGlzdCAq YXJnbmFtZXMsIE9pZCAqYXJndHlwZXMsCi0JCQkJCQkJCQlib29sIGhhc192YXJpYWRpYywgYm9v bCAqdXNlX3ZhcmlhZGljX3AsCi0JCQkJCQkJCQlQYXJzZUV4cHJLaW5kIHNwZWNpYWxfZXhwcmtp bmQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX29wZXJhdG9yX25hbWUoT2lkIG9wZXJpZCwgT2lk IGFyZzEsIE9pZCBhcmcyKTsKIHN0YXRpYyB2b2lkIGFkZF9jYXN0X3RvKFN0cmluZ0luZm8gYnVm LCBPaWQgdHlwaWQpOwogc3RhdGljIGNoYXIgKmdlbmVyYXRlX3F1YWxpZmllZF90eXBlX25hbWUo T2lkIHR5cGlkKTsKIHN0YXRpYyB0ZXh0ICpzdHJpbmdfdG9fdGV4dChjaGFyICpzdHIpOwotc3Rh dGljIGNoYXIgKmZsYXR0ZW5fcmVsb3B0aW9ucyhPaWQgcmVsaWQpOwogc3RhdGljIHZvaWQgZ2V0 X3JlbG9wdGlvbnMoU3RyaW5nSW5mbyBidWYsIERhdHVtIHJlbG9wdGlvbnMpOwogCiAjZGVmaW5l IG9ubHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQpAQCAtMTkwMSw2 ICsxODkzLDE0IEBAIHBnX2dldF9wYXJ0a2V5ZGVmX2NvbHVtbnMoT2lkIHJlbGlkLCBib29sIHBy ZXR0eSkKIAlyZXR1cm4gcGdfZ2V0X3BhcnRrZXlkZWZfd29ya2VyKHJlbGlkLCBwcmV0dHlGbGFn cywgdHJ1ZSwgZmFsc2UpOwogfQogCisvKiBJbnRlcm5hbCB2ZXJzaW9uIHRoYXQgcmVwb3J0cyB0 aGUgZnVsbCBwYXJ0aXRpb24ga2V5IGRlZmluaXRpb24gKi8KK2NoYXIgKgorcGdfZ2V0X3BhcnRr ZXlkZWZfc3RyaW5nKE9pZCByZWxpZCkKK3sKKwlyZXR1cm4gcGdfZ2V0X3BhcnRrZXlkZWZfd29y a2VyKHJlbGlkLCBHRVRfUFJFVFRZX0ZMQUdTKGZhbHNlKSwgZmFsc2UsCisJCQkJCQkJCQlmYWxz ZSk7Cit9CisKIC8qCiAgKiBJbnRlcm5hbCB3b3JraG9yc2UgdG8gZGVjb21waWxlIGEgcGFydGl0 aW9uIGtleSBkZWZpbml0aW9uLgogICovCkBAIC0yMTQ4LDYgKzIxNDgsMTYgQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX1RFWFRfUChzdHJp bmdfdG9fdGV4dChyZXMpKTsKIH0KIAorLyoKKyAqIEludGVybmFsIHZlcnNpb24gdGhhdCByZXR1 cm5zIHRoZSBkZWZpbml0aW9uIG9mIGEgQ09OU1RSQUlOVCBjb21tYW5kCisgKi8KK2NoYXIgKgor cGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKE9pZCBjb25zdHJhaW50SWQpCit7CisJcmV0dXJu IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihjb25zdHJhaW50SWQsIGZhbHNlLAorCQkJCQkJ CQkJICAgR0VUX1BSRVRUWV9GTEFHUyhmYWxzZSksIGZhbHNlKTsKK30KKwogLyoKICAqIEludGVy bmFsIHZlcnNpb24gdGhhdCByZXR1cm5zIGEgZnVsbCBBTFRFUiBUQUJMRSAuLi4gQUREIENPTlNU UkFJTlQgY29tbWFuZAogICovCkBAIC0xMTc1OCw3ICsxMTc2OCw3IEBAIGdldF90YWJsZXNhbXBs ZV9kZWYoVGFibGVTYW1wbGVDbGF1c2UgKnRhYmxlc2FtcGxlLCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQpCiAgKiBhY3R1YWxfZGF0YXR5cGUuICAoSWYgeW91IGRvbid0IHdhbnQgdGhpcyBiZWhh dmlvciwganVzdCBwYXNzCiAgKiBJbnZhbGlkT2lkIGZvciBhY3R1YWxfZGF0YXR5cGUuKQogICov Ci1zdGF0aWMgdm9pZAordm9pZAogZ2V0X29wY2xhc3NfbmFtZShPaWQgb3BjbGFzcywgT2lkIGFj dHVhbF9kYXRhdHlwZSwKIAkJCQkgU3RyaW5nSW5mbyBidWYpCiB7CkBAIC0xMjE1Miw3ICsxMjE2 Miw3IEBAIGdlbmVyYXRlX3F1YWxpZmllZF9yZWxhdGlvbl9uYW1lKE9pZCByZWxpZCkKICAqCiAg KiBUaGUgcmVzdWx0IGluY2x1ZGVzIGFsbCBuZWNlc3NhcnkgcXVvdGluZyBhbmQgc2NoZW1hLXBy ZWZpeGluZy4KICAqLwotc3RhdGljIGNoYXIgKgorY2hhciAqCiBnZW5lcmF0ZV9mdW5jdGlvbl9u YW1lKE9pZCBmdW5jaWQsIGludCBuYXJncywgTGlzdCAqYXJnbmFtZXMsIE9pZCAqYXJndHlwZXMs CiAJCQkJCSAgIGJvb2wgaGFzX3ZhcmlhZGljLCBib29sICp1c2VfdmFyaWFkaWNfcCwKIAkJCQkJ ICAgUGFyc2VFeHByS2luZCBzcGVjaWFsX2V4cHJraW5kKQpAQCAtMTI1MzgsNyArMTI1NDgsNyBA QCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucykKIC8qCiAg KiBHZW5lcmF0ZSBhIEMgc3RyaW5nIHJlcHJlc2VudGluZyBhIHJlbGF0aW9uJ3MgcmVsb3B0aW9u cywgb3IgTlVMTCBpZiBub25lLgogICovCi1zdGF0aWMgY2hhciAqCitjaGFyICoKIGZsYXR0ZW5f cmVsb3B0aW9ucyhPaWQgcmVsaWQpCiB7CiAJY2hhcgkgICAqcmVzdWx0ID0gTlVMTDsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CmluZGV4IDY5OTYwNzM5ODkuLjc2ZmYyM2I3NzkgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIwNDMsNCArMTIwNDMsMTEgQEAKICAgcHJvbmFtZSA9PiAnYW55 X3ZhbHVlX3RyYW5zZm4nLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKICAgcHJvYXJndHlw ZXMgPT4gJ2FueWVsZW1lbnQgYW55ZWxlbWVudCcsIHByb3NyYyA9PiAnYW55X3ZhbHVlX3RyYW5z Zm4nIH0sCiAKK3sgb2lkID0+ICc0NjQyJywgZGVzY3IgPT4gJ2RlcGFyc2UgdGhlIERETCBjb21t YW5kIGludG8gYSBKU09OIGZvcm1hdCBzdHJpbmcnLAorICBwcm9uYW1lID0+ICdkZGxfZGVwYXJz ZV90b19qc29uJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCisgIHByb2FyZ3R5cGVzID0+ICdwZ19k ZGxfY29tbWFuZCcsIHByb3NyYyA9PiAnZGRsX2RlcGFyc2VfdG9fanNvbicgfSwKK3sgb2lkID0+ ICc0NjQzJywgZGVzY3IgPT4gJ2V4cGFuZCBKU09OIGZvcm1hdCBEREwgdG8gYSBwbGFpbiB0ZXh0 IERETCBjb21tYW5kJywKKyAgcHJvbmFtZSA9PiAnZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQn LCBwcm9yZXR0eXBlID0+ICd0ZXh0JywKKyAgcHJvYXJndHlwZXMgPT4gJ3RleHQnLCBwcm9zcmMg PT4gJ2RkbF9kZXBhcnNlX2V4cGFuZF9jb21tYW5kJyB9LAorCiBdCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVu Y2UuaAppbmRleCA3ZGI3YjNkYTdiLi5jMGEzOTU5NmFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jb21tYW5kcy9zZXF1ZW5jZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNl LmgKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVhZGVyLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19z ZXF1ZW5jZS5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5o IgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKQEAgLTUxLDkgKzUyLDE3IEBAIHR5cGVk ZWYgc3RydWN0IHhsX3NlcV9yZWMKIAkvKiBTRVFVRU5DRSBUVVBMRSBEQVRBIEZPTExPV1MgQVQg VEhFIEVORCAqLwogfSB4bF9zZXFfcmVjOwogCisvKiBJbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGVm aW5lIGEgc2VxdWVuY2UuICovCit0eXBlZGVmIHN0cnVjdCBTZXF1ZW5jZV92YWx1ZXMKK3sKKwlG b3JtX3BnX3NlcXVlbmNlIHNlcWZvcm07CisJaW50NjQJCWxhc3RfdmFsdWU7Cit9IFNlcXVlbmNl X3ZhbHVlczsKKwogZXh0ZXJuIGludDY0IG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29s IGNoZWNrX3Blcm1pc3Npb25zKTsKIGV4dGVybiBEYXR1bSBuZXh0dmFsKFBHX0ZVTkNUSU9OX0FS R1MpOwogZXh0ZXJuIExpc3QgKnNlcXVlbmNlX29wdGlvbnMoT2lkIHJlbGlkKTsKK2V4dGVybiBT ZXF1ZW5jZV92YWx1ZXMgKmdldF9zZXF1ZW5jZV92YWx1ZXMoT2lkIHNlcXVlbmNlSWQpOwogCiBl eHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVNlcVN0bXQgKnNlcSk7CiBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRlclNlcXVlbmNlKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTZXFTdG10ICpzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmgKaW5kZXggMTdiOTQwNDkzNy4uNWEwODJlNTdlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVj bWRzLmgKQEAgLTEwNiw0ICsxMDYsNiBAQCBleHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3du c1JlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWxhdGlvbiwKIGV4dGVybiBib29sIFBhcnRDb25z dHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAogCQkJCQkJCQkJ CQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKIAorZXh0ZXJuIGNoYXIgKnN0b3JhZ2VfbmFtZShj aGFyIGMpOworCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaAppbmRleCBiM2JlYzkwZTUyLi5iOGFiOGRhZTZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CkBAIC0yMTY3LDYgKzIxNjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRhYmxlU3RtdAogCUxp c3QJICAgKmNtZHM7CQkJLyogbGlzdCBvZiBzdWJjb21tYW5kcyAqLwogCU9iamVjdFR5cGUJb2Jq dHlwZTsJCS8qIHR5cGUgb2Ygb2JqZWN0ICovCiAJYm9vbAkJbWlzc2luZ19vazsJCS8qIHNraXAg ZXJyb3IgaWYgdGFibGUgbWlzc2luZyAqLworCWJvb2wJCXRhYmxlX2xpa2U7CQkvKiBpbnRlcm5h bGx5IGdlbmVyYXRlZCBmb3IgVGFibGVMaWtlQ2xhdXNlICovCiB9IEFsdGVyVGFibGVTdG10Owog CiB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rj b3AvZGRsZGVwYXJzZS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGIzNjlmZDhjNQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL3Rjb3AvZGRsZGVwYXJzZS5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGRkbGRlcGFyc2UuaAorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIERETF9ERVBBUlNFX0gKKyNkZWZpbmUg RERMX0RFUEFSU0VfSAorCisjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKKworZXh0 ZXJuIGNoYXIgKmRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCk7 CitleHRlcm4gY2hhciAqZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbmIpOwor ZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZHJvcF90YWJsZShjb25zdCBjaGFyICpvYmppZGVudGl0eSwg Y29uc3QgY2hhciAqb2JqZWN0dHlwZSwKKwkJCQkJCQkJICBOb2RlICpwYXJzZXRyZWUpOworCisj ZW5kaWYJCQkJCQkJLyogRERMX0RFUEFSU0VfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvYnVpbHRpbnMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgKaW5kZXggMmY4 YjQ2ZDZkYS4uY2ZkYTI5OWRlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9idWlsdGlucy5oCkBAIC0xMjQsOSArMTI0LDE0 IEBAIGV4dGVybiBEYXR1bSBudW1lcmljX2Zsb2F0OF9ub19vdmVyZmxvdyhQR19GVU5DVElPTl9B UkdTKTsKICNkZWZpbmUgRk9STUFUX1RZUEVfSU5WQUxJRF9BU19OVUxMCTB4MDgJLyogTlVMTCBp ZiB1bmRlZmluZWQgKi8KIGV4dGVybiBjaGFyICpmb3JtYXRfdHlwZV9leHRlbmRlZChPaWQgdHlw ZV9vaWQsIGludDMyIHR5cGVtb2QsIGJpdHMxNiBmbGFncyk7CiAKK2V4dGVybiB2b2lkIGZvcm1h dF90eXBlX2RldGFpbGVkKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCwKKwkJCQkJCQkJICBP aWQgKm5zcGlkLCBjaGFyICoqdHlwbmFtZSwKKwkJCQkJCQkJICBjaGFyICoqdHlwZW1vZHN0ciwg Ym9vbCAqdHlwZWFycmF5KTsKKwogZXh0ZXJuIGNoYXIgKmZvcm1hdF90eXBlX2JlKE9pZCB0eXBl X29pZCk7CiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfYmVfcXVhbGlmaWVkKE9pZCB0eXBlX29p ZCk7CiBleHRlcm4gY2hhciAqZm9ybWF0X3R5cGVfd2l0aF90eXBlbW9kKE9pZCB0eXBlX29pZCwg aW50MzIgdHlwZW1vZCk7CitleHRlcm4gY2hhciAqcHJpbnRUeXBtb2QoY29uc3QgY2hhciAqdHlw bmFtZSwgaW50MzIgdHlwbW9kLCBPaWQgdHlwbW9kb3V0KTsKIAogZXh0ZXJuIGludDMyIHR5cGVf bWF4aW11bV9zaXplKE9pZCB0eXBlX29pZCwgaW50MzIgdHlwZW1vZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGlscy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0 aWxzLmgKaW5kZXggYjAwNmQ5ZDQ3NS4uZmQxZDg1ZmM4ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcnVsZXV0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmgK QEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5v ZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX25vZGUuaCIKIAogc3RydWN0IFBsYW47CQkJCQkvKiBhdm9pZCBpbmNsdWRp bmcgcGxhbm5vZGVzLmggaGVyZSAqLwogc3RydWN0IFBsYW5uZWRTdG10OwpAQCAtMzEsOSArMzIs MTEgQEAgZXh0ZXJuIGNoYXIgKnBnX2dldF9pbmRleGRlZl9jb2x1bW5zX2V4dGVuZGVkKE9pZCBp bmRleHJlbGlkLAogZXh0ZXJuIGNoYXIgKnBnX2dldF9xdWVyeWRlZihRdWVyeSAqcXVlcnksIGJv b2wgcHJldHR5KTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dldF9wYXJ0a2V5ZGVmX2NvbHVtbnMoT2lk IHJlbGlkLCBib29sIHByZXR0eSk7CitleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRrZXlkZWZfc3Ry aW5nKE9pZCByZWxpZCk7CiBleHRlcm4gY2hhciAqcGdfZ2V0X3BhcnRjb25zdHJkZWZfc3RyaW5n KE9pZCBwYXJ0aXRpb25JZCwgY2hhciAqYWxpYXNuYW1lKTsKIAogZXh0ZXJuIGNoYXIgKnBnX2dl dF9jb25zdHJhaW50ZGVmX2NvbW1hbmQoT2lkIGNvbnN0cmFpbnRJZCk7CitleHRlcm4gY2hhciAq cGdfZ2V0X2NvbnN0cmFpbnRkZWZfc3RyaW5nKE9pZCBjb25zdHJhaW50SWQpOwogZXh0ZXJuIGNo YXIgKmRlcGFyc2VfZXhwcmVzc2lvbihOb2RlICpleHByLCBMaXN0ICpkcGNvbnRleHQsCiAJCQkJ CQkJCWJvb2wgZm9yY2VwcmVmaXgsIGJvb2wgc2hvd2ltcGxpY2l0KTsKIGV4dGVybiBMaXN0ICpk ZXBhcnNlX2NvbnRleHRfZm9yKGNvbnN0IGNoYXIgKmFsaWFzbmFtZSwgT2lkIHJlbGlkKTsKQEAg LTQ1LDcgKzQ4LDE0IEBAIGV4dGVybiBMaXN0ICpzZWxlY3RfcnRhYmxlX25hbWVzX2Zvcl9leHBs YWluKExpc3QgKnJ0YWJsZSwKIAkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVsc191c2VkKTsKIGV4 dGVybiBjaGFyICpnZW5lcmF0ZV9jb2xsYXRpb25fbmFtZShPaWQgY29sbGlkKTsKIGV4dGVybiBj aGFyICpnZW5lcmF0ZV9vcGNsYXNzX25hbWUoT2lkIG9wY2xhc3MpOworZXh0ZXJuIGNoYXIgKmdl bmVyYXRlX2Z1bmN0aW9uX25hbWUoT2lkIGZ1bmNpZCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1l cywKKwkJCQkJCQkJCU9pZCAqYXJndHlwZXMsIGJvb2wgaGFzX3ZhcmlhZGljLAorCQkJCQkJCQkJ Ym9vbCAqdXNlX3ZhcmlhZGljX3AsCisJCQkJCQkJCQlQYXJzZUV4cHJLaW5kIHNwZWNpYWxfZXhw cmtpbmQpOwogZXh0ZXJuIGNoYXIgKmdldF9yYW5nZV9wYXJ0Ym91bmRfc3RyaW5nKExpc3QgKmJv dW5kX2RhdHVtcyk7CitleHRlcm4gdm9pZCBnZXRfb3BjbGFzc19uYW1lKE9pZCBvcGNsYXNzLCBP aWQgYWN0dWFsX2RhdGF0eXBlLAorCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CitleHRlcm4gY2hh ciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiAKIGV4dGVybiBjaGFyICpwZ19nZXRf c3RhdGlzdGljc29iamRlZl9zdHJpbmcoT2lkIHN0YXRleHRpZCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggMjYwODU0NzQ3Yi4uN2M4YWU3ZmU3YiAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTMyMjIsNiArMzIyMiw3IEBAIGNvbmZpZ192YXJfdmFsdWUKIGNvbnRhaW5f YWdnc19vZl9sZXZlbF9jb250ZXh0CiBjb250YWluX3BsYWNlaG9sZGVyX3JlZmVyZW5jZXNfY29u dGV4dAogY29udmVydF90ZXN0ZXhwcl9jb250ZXh0Citjb252U3BlY2lmaWVyCiBjb3B5X2RhdGFf ZGVzdF9jYgogY29weV9kYXRhX3NvdXJjZV9jYgogY29yZV9ZWVNUWVBFCkBAIC0zNDI1LDYgKzM0 MjYsNyBAQCBqc29uX21hbmlmZXN0X3BlcndhbHJhbmdlX2NhbGxiYWNrCiBqc29uX29maWVsZF9h Y3Rpb24KIGpzb25fc2NhbGFyX2FjdGlvbgoganNvbl9zdHJ1Y3RfYWN0aW9uCitqc29uX3RyaXZh bHVlCiBrZXlFbnRyeURhdGEKIGtleV90CiBsY2xDb250ZXh0Ci0tIAoyLjM0LjEKCg== --000000000000d07f7705feb00d5c Content-Type: application/octet-stream; name="0005-Apply-the-DDL-change-as-that-same-user-th-2023_06_22.patch" Content-Disposition: attachment; filename="0005-Apply-the-DDL-change-as-that-same-user-th-2023_06_22.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj6mh5ia4 RnJvbSAzMDBkMGQyOWU3NDA3NWY3MzYwYzQ5OWI1MGJhNmI2M2Y5OTE4YWU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSnVuIDIwMjMgMTA6MzQ6MTIgKzA1MzAKU3ViamVjdDogW1BBVENIIDUv NV0gQXBwbHkgdGhlIERETCBjaGFuZ2UgYXMgdGhhdCBzYW1lIHVzZXIgdGhhdCBleGVjdXRlZCB0 aGUKIERETCBvbiBwdWJsaXNoZXIKCjEuIENoYW5nZSBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyB0 byBjb2xsZWN0IHRoZSBjdXJyZW50IHJvbGUgaW4KQ29sbGVjdGVkQ29tbWFuZC4KCjIuIENoYW5n ZSBEZXBhcnNlciBmdW5jdGlvbiBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZCB0byBlbmNvZGUgb3du ZXIgcm9sZSBpbiB0aGUKdG9wLWxldmVsIGVsZW1lbnQgc3VjaCBhcyB7bXlvd25lcjpyb2xlX25h bWUsIGZtdDouLi4sIGlkZW50aXR5Oi4uLn0gb2YgdGhlCmRlcGFyc2VkIGpzb25iIG91dHB1dCBm b3IgY29tbWFuZHMgdGhhdCBjcmVhdGUgZGF0YWJhc2Ugb2JqZWN0cy4gQWxzbyBjaGFuZ2UKZnVu Y3Rpb24gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcgdG8gcmV0cmlldmUgdGhlIG15b3duZXIg ZWxlbWVudCBmcm9tIGEKanNvbmIgc3RyaW5nLgoKMy4gSW50cm9kdWNlIGEgbmV3IHN1YnNjcmlw dGlvbiBvcHRpb24gbWF0Y2hfZGRsX293bmVyOiB3aGVuIHR1cm5lZCBvbiwgdGhlCmFwcGx5IHdv cmtlciB3aWxsIGFwcGx5IERETCBtZXNzYWdlcyBpbiB0aGUgcm9sZSByZXRyaWV2ZWQgZnJvbSB0 aGUgIm15b3duZXIiCmZpZWxkIG9mIHRoZSBkZXBhcnNlZCBqc29uYiBzdHJpbmcuIFRoZSBkZWZh dWx0IHZhbHVlIG9mIG1hdGNoX2RkbF9vd25lciBpcyBvbi4KLS0tCiBzcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5k cy9kZGxkZXBhcnNlLmMgICAgICAgICAgICB8ICA0NSArKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2RkbGpzb24uYyAgICAgICAgICAgICAgIHwgIDI1ICsrLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgfCAgMjggKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgfCAgIDYgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg ICAgICAgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmggICAgICAg ICAgICAgICAgfCAgMTEgKy0KIHNyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGlsaXR5LmggICAg ICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCAgIHwgMTUyICsrKysrKysrKy0tLS0tLS0tLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNl cnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYwppbmRleCBkMDdmODhjZTI4Li4yZDgyZmJmYWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmMKQEAgLTczLDYgKzczLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJp ZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlz YWJsZW9uZXJyOwogCXN1Yi0+cGFzc3dvcmRyZXF1aXJlZCA9IHN1YmZvcm0tPnN1YnBhc3N3b3Jk cmVxdWlyZWQ7CiAJc3ViLT5ydW5hc293bmVyID0gc3ViZm9ybS0+c3VicnVuYXNvd25lcjsKKwlz dWItPm1hdGNoZGRsb3duZXIgPSBzdWJmb3JtLT5zdWJtYXRjaGRkbG93bmVyOwogCiAJLyogR2V0 IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElP Tk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYwppbmRleCA5YTEyYTQ5MDA1Li42ZjUzY2Nh NTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsZGVwYXJzZS5jCkBAIC0yNjMsNiArMjYzLDE4IEBAIG5l d19qc29uYl9WQShKc29uYlBhcnNlU3RhdGUgKnN0YXRlLCBpbnQgbnVtb2JqcywuLi4pCiAJdmFf ZW5kKGFyZ3MpOwogfQogCisvKgorICogUHJvY2VzcyB0aGUgcm9sZSBzdHJpbmcgaW50byB0aGUg b3V0cHV0IHBhcnNlIHN0YXRlLgorICovCitzdGF0aWMgdm9pZAorcm9sZV90b19qc29uYl9lbGVt ZW50KEpzb25iUGFyc2VTdGF0ZSAqc3RhdGUsIGNoYXIgKm93bmVyKQoreworCWlmIChvd25lciA9 PSBOVUxMKQorCQlyZXR1cm47CisKKwluZXdfanNvbmJfVkEoc3RhdGUsIDEsICJteW93bmVyIiwg amJ2U3RyaW5nLCBvd25lcik7Cit9CisKIC8qCiAgKiBBIGhlbHBlciByb3V0aW5lIHRvIGluc2Vy dCBqc29uYiBmb3IgdHlwSWQgdG8gdGhlIG91dHB1dCBwYXJzZSBzdGF0ZS4KICAqLwpAQCAtMTY2 MCw3ICsxNjcyLDcgQEAgZGVwYXJzZV93aXRoT2JqX1RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpz dGF0ZSwgQ3JlYXRlU3RtdCAqbm9kZSkKICAqICV7dGFibGVzcGFjZX1zCiAgKi8KIHN0YXRpYyBK c29uYiAqCi1kZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUp CitkZXBhcnNlX0NyZWF0ZVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIg Km93bmVyKQogewogCUNyZWF0ZVN0bXQgKm5vZGUgPSAoQ3JlYXRlU3RtdCAqKSBwYXJzZXRyZWU7 CiAJUmVsYXRpb24JcmVsYXRpb24gPSByZWxhdGlvbl9vcGVuKG9iamVjdElkLCBBY2Nlc3NTaGFy ZUxvY2spOwpAQCAtMTY3Nyw2ICsxNjg5LDEwIEBAIGRlcGFyc2VfQ3JlYXRlU3RtdChPaWQgb2Jq ZWN0SWQsIE5vZGUgKnBhcnNldHJlZSkKIAkvKiBtYXJrIHRoZSBiZWdpbiBvZiBST09UIG9iamVj dCBhbmQgc3RhcnQgYWRkaW5nIGVsZW1lbnRzIHRvIGl0LiAqLwogCXB1c2hKc29uYlZhbHVlKCZz dGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAKKwkvKiBjcmVhdGUgb3duZXIganNvbmIg ZWxlbWVudCAqLworCXJvbGVfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgb3duZXIpOworCisJLyog U3RhcnQgbWFraW5nIGZtdCBzdHJpbmcgKi8KIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZmbXRT dHIsICJDUkVBVEUiKTsKIAogCS8qIFBFUlNJU1RFTkNFICovCkBAIC0zMjc2LDcgKzMyOTIsNyBA QCBkZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENvbW1hbmQgKmNtZCwgZGRsX2RlcGFy c2VfY29udGV4dCAqIGNvbnRleHQpCiAgKiBDUkVBVEUgJXtwZXJzaXN0ZW5jZX1zIFNFUVVFTkNF ICV7aWRlbnRpdHl9RCAle2RlZmluaXRpb246IH1zCiAgKi8KIHN0YXRpYyBKc29uYiAqCi1kZXBh cnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUpCitkZXBhcnNl X0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIgKm93bmVy KQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybTsKQEAg LTMyOTksNiArMzMxNSwxMCBAQCBkZXBhcnNlX0NyZWF0ZVNlcVN0bXQoT2lkIG9iamVjdElkLCBO b2RlICpwYXJzZXRyZWUpCiAKIAkvKiBtYXJrIHRoZSBzdGFydCBvZiBST09UIG9iamVjdCAqLwog CXB1c2hKc29uYlZhbHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CisKKwkvKiBj cmVhdGUgb3duZXIganNvbmIgZWxlbWVudCAqLworCXJvbGVfdG9fanNvbmJfZWxlbWVudChzdGF0 ZSwgb3duZXIpOworCiAJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiQ1JFQVRFIik7 CiAKIAkvKiBQRVJTSVNURU5DRSAqLwpAQCAtMzM3OCw3ICszMzk4LDcgQEAgZGVwYXJzZV9DcmVh dGVTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQogICogQUxURVIgU0VRVUVO Q0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMKICAqLwogc3RhdGljIEpzb25iICoKLWRl cGFyc2VfQWx0ZXJTZXFTdG10KE9pZCBvYmplY3RJZCwgTm9kZSAqcGFyc2V0cmVlKQorZGVwYXJz ZV9BbHRlclNlcVN0bXQoT2lkIG9iamVjdElkLCBOb2RlICpwYXJzZXRyZWUsIGNoYXIgKm93bmVy KQogewogCVJlbGF0aW9uCXJlbGF0aW9uOwogCUxpc3RDZWxsICAgKmNlbGw7CkBAIC0zNDAwLDYg KzM0MjAsOSBAQCBkZXBhcnNlX0FsdGVyU2VxU3RtdChPaWQgb2JqZWN0SWQsIE5vZGUgKnBhcnNl dHJlZSkKIAkvKiBtYXJrIHRoZSBzdGFydCBvZiBST09UIG9iamVjdCAqLwogCXB1c2hKc29uYlZh bHVlKCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAKKwkvKiBjcmVhdGUgb3duZXIg anNvbmIgZWxlbWVudCAqLworCXJvbGVfdG9fanNvbmJfZWxlbWVudChzdGF0ZSwgb3duZXIpOwor CiAJbmV3X2pzb25iX1ZBKHN0YXRlLCAxLAogCQkJCSAiZm10IiwgamJ2U3RyaW5nLCAiQUxURVIg U0VRVUVOQ0UgJXtpZGVudGl0eX1EICV7ZGVmaW5pdGlvbjogfXMiKTsKIApAQCAtMzY2MCwxMCAr MzY4MywxMSBAQCBkZXBhcnNlX0FsdGVyT2JqZWN0U2NoZW1hU3RtdChPYmplY3RBZGRyZXNzIGFk ZHJlc3MsIE5vZGUgKnBhcnNldHJlZSwKICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGNvdmVyIGFs bCBjYXNlcyBoYW5kbGVkIGluIFByb2Nlc3NVdGlsaXR5U2xvdy4KICAqLwogc3RhdGljIEpzb25i ICoKLWRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoQ29sbGVjdGVkQ29tbWFuZCAqY21kKQorZGVwYXJz ZV9zaW1wbGVfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQsIGRkbF9kZXBhcnNlX2NvbnRl eHQgKiBjb250ZXh0KQogewogCU9pZAkJCW9iamVjdElkOwogCU5vZGUJICAgKnBhcnNldHJlZTsK KwljaGFyCSAgICpvd25lciA9IGNvbnRleHQtPmluY2x1ZGVfb3duZXIgPyBjbWQtPnJvbGUgOiBO VUxMOwogCiAJQXNzZXJ0KGNtZC0+dHlwZSA9PSBTQ1RfU2ltcGxlKTsKIApAQCAtMzY3NywxOSAr MzcwMSwyMSBAQCBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCkK IAlzd2l0Y2ggKG5vZGVUYWcocGFyc2V0cmVlKSkKIAl7CiAJCWNhc2UgVF9BbHRlck9iamVjdFNj aGVtYVN0bXQ6CisJCQljb250ZXh0LT5pbmNsdWRlX293bmVyID0gZmFsc2U7CiAJCQlyZXR1cm4g ZGVwYXJzZV9BbHRlck9iamVjdFNjaGVtYVN0bXQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLAogCQkJ CQkJCQkJCQkJIHBhcnNldHJlZSwKIAkJCQkJCQkJCQkJCSBjbWQtPmQuc2ltcGxlLnNlY29uZGFy eU9iamVjdCk7CiAKIAkJY2FzZSBUX0FsdGVyU2VxU3RtdDoKLQkJCXJldHVybiBkZXBhcnNlX0Fs dGVyU2VxU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlKTsKKwkJCXJldHVybiBkZXBhcnNlX0FsdGVy U2VxU3RtdChvYmplY3RJZCwgcGFyc2V0cmVlLCBvd25lcik7CiAKIAkJY2FzZSBUX0NyZWF0ZVNl cVN0bXQ6Ci0JCQlyZXR1cm4gZGVwYXJzZV9DcmVhdGVTZXFTdG10KG9iamVjdElkLCBwYXJzZXRy ZWUpOworCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU2VxU3RtdChvYmplY3RJZCwgcGFyc2V0cmVl LCBvd25lcik7CiAKIAkJY2FzZSBUX0NyZWF0ZVN0bXQ6Ci0JCQlyZXR1cm4gZGVwYXJzZV9DcmVh dGVTdG10KG9iamVjdElkLCBwYXJzZXRyZWUpOworCQkJcmV0dXJuIGRlcGFyc2VfQ3JlYXRlU3Rt dChvYmplY3RJZCwgcGFyc2V0cmVlLCBvd25lcik7CiAJCWNhc2UgVF9SZW5hbWVTdG10OgorCQkJ Y29udGV4dC0+aW5jbHVkZV9vd25lciA9IGZhbHNlOwogCQkJcmV0dXJuIGRlcGFyc2VfUmVuYW1l U3RtdChjbWQtPmQuc2ltcGxlLmFkZHJlc3MsIHBhcnNldHJlZSk7CiAKIAkJZGVmYXVsdDoKQEAg LTM3NDMsMTAgKzM3NjksMTEgQEAgZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQoQ29sbGVjdGVkQ29t bWFuZCAqY21kLCBkZGxfZGVwYXJzZV9jb250ZXh0ICogY29udGV4dCkKIAlzd2l0Y2ggKGNtZC0+ dHlwZSkKIAl7CiAJCWNhc2UgU0NUX1NpbXBsZToKLQkJCWpzb25iID0gZGVwYXJzZV9zaW1wbGVf Y29tbWFuZChjbWQpOworCQkJanNvbmIgPSBkZXBhcnNlX3NpbXBsZV9jb21tYW5kKGNtZCwgY29u dGV4dCk7CiAJCQlicmVhazsKIAkJY2FzZSBTQ1RfQWx0ZXJUYWJsZToKIAkJCWpzb25iID0gZGVw YXJzZV9BbHRlclRhYmxlU3RtdChjbWQsIGNvbnRleHQpOworCQkJY29udGV4dC0+aW5jbHVkZV9v d25lciA9IGZhbHNlOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5l eHBlY3RlZCBkZXBhcnNlIG5vZGUgdHlwZSAlZCIsIGNtZC0+dHlwZSk7CkBAIC0zNzgwLDYgKzM4 MDcsOCBAQCBkZGxfZGVwYXJzZV90b19qc29uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJY2hhcgkgICAq Y29tbWFuZDsKIAlkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CiAKKwljb250ZXh0LmluY2x1 ZGVfb3duZXIgPSBmYWxzZTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxp dHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJICogdGhlIG1pbmlt dW0gdm9sYXRpbGl0eSBsZXZlbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Rk bGpzb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGpzb24uYwppbmRleCBkNWM5NjhiN2Mx Li5lZmIwYjYxNTJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZGxqc29uLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRsanNvbi5jCkBAIC02OTYsNyArNjk2LDcgQEAg ZXhwYW5kX2pzb25iX2FycmF5KFN0cmluZ0luZm8gYnVmLCBjaGFyICpwYXJhbSwKICAqIFdvcmto b3JzZSBmb3IgZGRsX2RlcGFyc2VfZXhwYW5kX2NvbW1hbmQuCiAgKi8KIGNoYXIgKgotZGVwYXJz ZV9kZGxfanNvbl90b19zdHJpbmcoY2hhciAqanNvbl9zdHIpCitkZXBhcnNlX2RkbF9qc29uX3Rv X3N0cmluZyhjaGFyICpqc29uX3N0ciwgY2hhcioqIG93bmVyKQogewogCURhdHVtCQlkOwogCUpz b25iCSAgICpqc29uYjsKQEAgLTcwNyw2ICs3MDcsMjcgQEAgZGVwYXJzZV9kZGxfanNvbl90b19z dHJpbmcoY2hhciAqanNvbl9zdHIpCiAJZCA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEoanNvbmJfaW4s IFBvaW50ZXJHZXREYXR1bShqc29uX3N0cikpOwogCWpzb25iID0gKEpzb25iICopIERhdHVtR2V0 UG9pbnRlcihkKTsKIAorCWlmIChvd25lciAhPSBOVUxMKQorCXsKKwkJY29uc3QgY2hhciAqa2V5 ID0gIm15b3duZXIiOworCQlKc29uYlZhbHVlICp2YWx1ZTsKKworCQl2YWx1ZSA9IGdldEtleUpz b25WYWx1ZUZyb21Db250YWluZXIoJmpzb25iLT5yb290LCBrZXksIHN0cmxlbihrZXkpLCBOVUxM KTsKKwkJaWYgKHZhbHVlKQorCQl7CisJCQljaGFyICpzdHI7CisKKwkJCS8qIHZhbHVlLT52YWwu c3RyaW5nLnZhbCBtYXkgbm90IGJlIE5VTEwgdGVybWluYXRlZCAqLworCQkJc3RyID0gcGFsbG9j KHZhbHVlLT52YWwuc3RyaW5nLmxlbiArIDEpOworCQkJbWVtY3B5KHN0ciwgdmFsdWUtPnZhbC5z dHJpbmcudmFsLCB2YWx1ZS0+dmFsLnN0cmluZy5sZW4pOworCQkJc3RyW3ZhbHVlLT52YWwuc3Ry aW5nLmxlbl0gPSAnXDAnOworCQkJKm93bmVyID0gc3RyOworCQl9CisJCWVsc2UKKwkJCS8qIG15 b3duZXIgaXMgbm90IGdpdmVuIGluIHRoaXMganNvbmIsIGUuZy4gZm9yIERyb3AgQ29tbWFuZHMg Ki8KKwkJCSpvd25lciA9IE5VTEw7CisJfQorCiAJZXhwYW5kX2ZtdF9yZWN1cnNpdmUoYnVmLCAm anNvbmItPnJvb3QpOwogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKQEAgLTc0NCw3ICs3NjUsNyBAQCBk ZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZChQR19GVU5DVElPTl9BUkdTKQogCiAJanNvbl9zdHIg PSB0ZXh0X3RvX2NzdHJpbmcoanNvbik7CiAKLQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9f dGV4dChkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhqc29uX3N0cikpKTsKKwlQR19SRVRVUk5f VEVYVF9QKGNzdHJpbmdfdG9fdGV4dChkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhqc29uX3N0 ciwgTlVMTCkpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2 ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRl eCAxNWUyNDNjYTdlLi4wMWUwZDU5YjkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dl ci5jCkBAIC0xNDg4LDYgKzE0ODgsNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFu ZChPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAKIAljb21tYW5kLT50eXBlID0gU0NUX1NpbXBsZTsK IAljb21tYW5kLT5pbl9leHRlbnNpb24gPSBjcmVhdGluZ19leHRlbnNpb247CisJY29tbWFuZC0+ cm9sZSA9IEdldFVzZXJOYW1lRnJvbUlkKEdldFVzZXJJZCgpLCBmYWxzZSk7CiAKIAljb21tYW5k LT5kLnNpbXBsZS5hZGRyZXNzID0gYWRkcmVzczsKIAljb21tYW5kLT5kLnNpbXBsZS5zZWNvbmRh cnlPYmplY3QgPSBzZWNvbmRhcnlPYmplY3Q7CkBAIC0xNTI0LDYgKzE1MjUsNyBAQCBFdmVudFRy aWdnZXJBbHRlclRhYmxlU3RhcnQoTm9kZSAqcGFyc2V0cmVlKQogCiAJY29tbWFuZC0+dHlwZSA9 IFNDVF9BbHRlclRhYmxlOwogCWNvbW1hbmQtPmluX2V4dGVuc2lvbiA9IGNyZWF0aW5nX2V4dGVu c2lvbjsKKwljb21tYW5kLT5yb2xlID0gR2V0VXNlck5hbWVGcm9tSWQoR2V0VXNlcklkKCksIGZh bHNlKTsKIAogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlv bklkOwogCWNvbW1hbmQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCA9IEludmFsaWRPaWQ7CkBAIC0x ODA3LDYgKzE4MDksNyBAQCBFdmVudFRyaWdnZXJDb2xsZWN0R3JhbnQoSW50ZXJuYWxHcmFudCAq aXN0bXQpCiAJY29tbWFuZCA9IHBhbGxvYyhzaXplb2YoQ29sbGVjdGVkQ29tbWFuZCkpOwogCWNv bW1hbmQtPnR5cGUgPSBTQ1RfR3JhbnQ7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRp bmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2Vy SWQoKSwgZmFsc2UpOwogCWNvbW1hbmQtPmQuZ3JhbnQuaXN0bXQgPSBpY29weTsKIAljb21tYW5k LT5wYXJzZXRyZWUgPSBOVUxMOwogCkBAIC0xODM4LDYgKzE4NDEsNyBAQCBFdmVudFRyaWdnZXJD b2xsZWN0QWx0ZXJPcEZhbShBbHRlck9wRmFtaWx5U3RtdCAqc3RtdCwgT2lkIG9wZmFtb2lkLAog CWNvbW1hbmQgPSBwYWxsb2Moc2l6ZW9mKENvbGxlY3RlZENvbW1hbmQpKTsKIAljb21tYW5kLT50 eXBlID0gU0NUX0FsdGVyT3BGYW1pbHk7CiAJY29tbWFuZC0+aW5fZXh0ZW5zaW9uID0gY3JlYXRp bmdfZXh0ZW5zaW9uOworCWNvbW1hbmQtPnJvbGUgPSBHZXRVc2VyTmFtZUZyb21JZChHZXRVc2Vy SWQoKSwgZmFsc2UpOwogCU9iamVjdEFkZHJlc3NTZXQoY29tbWFuZC0+ZC5vcGZhbS5hZGRyZXNz LAogCQkJCQkgT3BlcmF0b3JGYW1pbHlSZWxhdGlvbklkLCBvcGZhbW9pZCk7CiAJY29tbWFuZC0+ ZC5vcGZhbS5vcGVyYXRvcnMgPSBvcGVyYXRvcnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKaW5kZXggNTQ4OTViYTkyOS4uOTQ3NWU4NDM5ZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzEsNiArNzEsNyBAQAogI2RlZmluZSBTVUJP UFRfUlVOX0FTX09XTkVSCQkJMHgwMDAwMTAwMAogI2RlZmluZSBTVUJPUFRfTFNOCQkJCQkweDAw MDAyMDAwCiAjZGVmaW5lIFNVQk9QVF9PUklHSU4JCQkJMHgwMDAwNDAwMAorI2RlZmluZSBTVUJP UFRfTUFUQ0hfRERMX09XTkVSCQkweDAwMDA4MDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBo YXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJp dHMpKSA9PSAoYml0cykpCkBAIC05NSw2ICs5Niw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMK IAlib29sCQlkaXNhYmxlb25lcnI7CiAJYm9vbAkJcGFzc3dvcmRyZXF1aXJlZDsKIAlib29sCQly dW5hc293bmVyOworCWJvb2wJCW1hdGNoZGRsb3duZXI7CiAJY2hhcgkgICAqb3JpZ2luOwogCVhM b2dSZWNQdHIJbHNuOwogfSBTdWJPcHRzOwpAQCAtMTU3LDYgKzE1OSw4IEBAIHBhcnNlX3N1YnNj cmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAog CQlvcHRzLT5ydW5hc293bmVyID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfT1JJR0lOKSkKIAkJb3B0cy0+b3JpZ2luID0gcHN0cmR1cChMT0dJQ0FMUkVQX09SSUdJ Tl9BTlkpOworCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX01BVENIX0RETF9PV05F UikpCisJCW9wdHMtPm1hdGNoZGRsb3duZXIgPSB0cnVlOwogCiAJLyogUGFyc2Ugb3B0aW9ucyAq LwogCWZvcmVhY2gobGMsIHN0bXRfb3B0aW9ucykKQEAgLTM1Myw2ICszNTcsMTUgQEAgcGFyc2Vf c3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlv bnMsCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfTFNOOwogCQkJb3B0cy0+bHNu ID0gbHNuOwogCQl9CisJCWVsc2UgaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfTUFU Q0hfRERMX09XTkVSKSAmJgorCQkJCSBzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJtYXRjaF9kZGxf b3duZXIiKSA9PSAwKQorCQl7CisJCQlpZiAoSXNTZXQob3B0cy0+c3BlY2lmaWVkX29wdHMsIFNV Qk9QVF9NQVRDSF9ERExfT1dORVIpKQorCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVs LCBwc3RhdGUpOworCisJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfTUFUQ0hfRERM X09XTkVSOworCQkJb3B0cy0+bWF0Y2hkZGxvd25lciA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwor CQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKQEAgLTU5MSw3ICs2MDQsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgIFNVQk9Q VF9TWU5DSFJPTk9VU19DT01NSVQgfCBTVUJPUFRfQklOQVJZIHwKIAkJCQkJICBTVUJPUFRfU1RS RUFNSU5HIHwgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCB8CiAJCQkJCSAgU1VCT1BUX0RJU0FCTEVf T05fRVJSIHwgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwKLQkJCQkJICBTVUJPUFRfUlVOX0FT X09XTkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNV Qk9QVF9NQVRDSF9ERExfT1dORVIgfAorCQkJCQkgIFNVQk9QVF9PUklHSU4pOwogCXBhcnNlX3N1 YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVkX29wdHMs ICZvcHRzKTsKIAogCS8qCkBAIC03MTAsNiArNzI0LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJcHVibGlj YXRpb25MaXN0VG9BcnJheShwdWJsaWNhdGlvbnMpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJvcmlnaW4gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0dW0ob3B0cy5vcmlnaW4p OworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJtYXRjaGRkbG93bmVyIC0gMV0gPSBC b29sR2V0RGF0dW0ob3B0cy5tYXRjaGRkbG93bmVyKTsKIAogCXR1cCA9IGhlYXBfZm9ybV90dXBs ZShSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwogCkBAIC0xMTMyLDcgKzEx NDcsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkJICBTVUJPUFRfU1lOQ0hST05PVVNfQ09NTUlUIHwg U1VCT1BUX0JJTkFSWSB8CiAJCQkJCQkJCSAgU1VCT1BUX1NUUkVBTUlORyB8IFNVQk9QVF9ESVNB QkxFX09OX0VSUiB8CiAJCQkJCQkJCSAgU1VCT1BUX1BBU1NXT1JEX1JFUVVJUkVEIHwKLQkJCQkJ CQkJICBTVUJPUFRfUlVOX0FTX09XTkVSIHwgU1VCT1BUX09SSUdJTik7CisJCQkJCQkJCSAgU1VC T1BUX1JVTl9BU19PV05FUiB8IFNVQk9QVF9NQVRDSF9ERExfT1dORVIgfAorCQkJCQkJCQkgIFNV Qk9QVF9PUklHSU4pOwogCiAJCQkJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0YXRlLCBz dG10LT5vcHRpb25zLAogCQkJCQkJCQkJCSAgIHN1cHBvcnRlZF9vcHRzLCAmb3B0cyk7CkBAIC0x MjExLDYgKzEyMjcsMTQgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1Ym9yaWdpbiAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0 cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX01BVENIX0RETF9PV05FUikpCisJCQkJeworCQkJCQl2 YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VibWF0Y2hkZGxvd25lciAtIDFdCisJCQkJCQk9 IEJvb2xHZXREYXR1bShvcHRzLm1hdGNoZGRsb3duZXIpOworCQkJCQlyZXBsYWNlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJtYXRjaGRkbG93bmVyIC0gMV0KKwkJCQkJCT0gdHJ1ZTsKKwkJCQl9 CisKIAkJCQl1cGRhdGVfdHVwbGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGx0cmlnZ2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwppbmRleCA2NzQwZDA3NGZiLi40 MGRmMGY2YzUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Rk bHRyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdn ZXIuYwpAQCAtMTU4LDYgKzE1OCw4IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0 ZShQR19GVU5DVElPTl9BUkdTKQogCQlkZGxfZGVwYXJzZV9jb250ZXh0IGNvbnRleHQ7CiAJCWNo YXIJICAgKmpzb25fc3RyaW5nOwogCisJCWNvbnRleHQuaW5jbHVkZV9vd25lciA9IHRydWU7CisK IAkJLyoKIAkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9WT0xB VElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxpdHkgbGV2 ZWwuCkBAIC0yNDksNiArMjUxLDggQEAgcHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9l bmQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dDsKIAkJ CWNoYXIJICAgKmpzb25fc3RyaW5nOwogCisJCQljb250ZXh0LmluY2x1ZGVfb3duZXIgPSB0cnVl OworCiAJCQkvKgogCQkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQ Uk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCiAJCQkgKiB0aGUgbWluaW11bSB2b2xhdGls aXR5IGxldmVsLgpAQCAtMzI4LDYgKzMzMiw4IEBAIHB1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVf aW5pdF93cml0ZShQR19GVU5DVElPTl9BUkdTKQogCXsKIAkJY2hhcgkgICAqanNvbl9zdHJpbmc7 CiAKKwkJY29udGV4dC5pbmNsdWRlX293bmVyID0gdHJ1ZTsKKwogCQkvKgogCQkgKiBJbml0aWFs aXplIHRoZSBtYXhfdm9sYXRpbGl0eSBmbGFnIHRvIFBST1ZPTEFUSUxFX0lNTVVUQUJMRSwgd2hp Y2ggaXMKIAkJICogdGhlIG1pbmltdW0gdm9sYXRpbGl0eSBsZXZlbC4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDVkMmNkY2U1ZWMuLmMyMzNhMzY1YmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzM0NCwxMSArMzM0 NCwxMyBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAljb25zdCBjaGFyICpwcmVm aXggPSBOVUxMOwogCWNoYXIJICAgKm1lc3NhZ2UgPSBOVUxMOwogCWNoYXIJICAgKmRkbF9jb21t YW5kOworCWNoYXIJICAgKm93bmVyOwogCVNpemUJCXN6OwogCUxpc3QJICAgKnBhcnNldHJlZV9s aXN0OwogCUxpc3RDZWxsICAgKnBhcnNldHJlZV9pdGVtOwogCURlc3RSZWNlaXZlciAqcmVjZWl2 ZXI7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCVVzZXJDb250ZXh0CQl1Y3h0OwogCWNv bnN0IGNoYXIgKnNhdmVfZGVidWdfcXVlcnlfc3RyaW5nID0gZGVidWdfcXVlcnlfc3RyaW5nOwog CiAJbWVzc2FnZSA9IGxvZ2ljYWxyZXBfcmVhZF9kZGwocywgJmxzbiwgJnByZWZpeCwgJnN6KTsK QEAgLTMzNjMsOSArMzM2NSwxNiBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0KTsKIAotCWRkbF9jb21t YW5kID0gZGVwYXJzZV9kZGxfanNvbl90b19zdHJpbmcobWVzc2FnZSk7CisJZGRsX2NvbW1hbmQg PSBkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhtZXNzYWdlLCAmb3duZXIpOwogCWRlYnVnX3F1 ZXJ5X3N0cmluZyA9IGRkbF9jb21tYW5kOwogCisJLyoKKwkgKiBJZiByZXF1ZXN0ZWQsIHNldCB0 aGUgY3VycmVudCByb2xlIHRvIHRoZSBvd25lciB0aGF0IGV4ZWN1dGVkIHRoZQorCSAqIGNvbW1h bmQgb24gdGhlIHB1YmxpY2F0aW9uIHNlcnZlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24t Pm1hdGNoZGRsb3duZXIgJiYgb3duZXIpCisJCVN3aXRjaFRvVW50cnVzdGVkVXNlcihnZXRfcm9s ZV9vaWQob3duZXIsIGZhbHNlKSwgJnVjeHQpOworCiAJLyogRGVzdE5vbmUgZm9yIGxvZ2ljYWwg cmVwbGljYXRpb24gKi8KIAlyZWNlaXZlciA9IENyZWF0ZURlc3RSZWNlaXZlcihEZXN0Tm9uZSk7 CiAJcGFyc2V0cmVlX2xpc3QgPSBwZ19wYXJzZV9xdWVyeShkZGxfY29tbWFuZCk7CkBAIC0zNDYw LDYgKzM0NjksOSBAQCBhcHBseV9oYW5kbGVfZGRsKFN0cmluZ0luZm8gcykKIAkJTWVtb3J5Q29u dGV4dERlbGV0ZShwZXJfcGFyc2V0cmVlX2NvbnRleHQpOwogCX0KIAorCWlmIChNeVN1YnNjcmlw dGlvbi0+bWF0Y2hkZGxvd25lciAmJiBvd25lcikKKwkJUmVzdG9yZVVzZXJDb250ZXh0KCZ1Y3h0 KTsKKwogCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNhdmVfZGVidWdfcXVlcnlfc3RyaW5nOwogCiAJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDMzNDcyNmNkMGQuLmM3 YmMyODc4MzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYwNyw2ICs0NjA3LDcgQEAgZ2V0U3Vic2NyaXB0 aW9ucyhBcmNoaXZlICpmb3V0KQogCWludAkJCWlfc3VicHVibGljYXRpb25zOwogCWludAkJCWlf c3ViYmluYXJ5OwogCWludAkJCWlfc3VicGFzc3dvcmRyZXF1aXJlZDsKKwlpbnQJCQlpX3N1Ym1h dGNoZGRsb3duZXI7CiAJaW50CQkJaSwKIAkJCQludHVwczsKIApAQCAtNDY2MSwxMSArNDY2Miwx MyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTYwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg IiBzLnN1Ym9yaWdpbixcbiIKLQkJCQkJCQkgIiBzLnN1YnBhc3N3b3JkcmVxdWlyZWRcbiIpOwor CQkJCQkJCSAiIHMuc3VicGFzc3dvcmRyZXF1aXJlZCxcbiIKKwkJCQkJCQkgIiBzLnN1Ym1hdGNo ZGRsb3duZXJcbiIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkg ICIgJyVzJyBBUyBzdWJvcmlnaW4sXG4iCi0JCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3b3JkcmVx dWlyZWRcbiIsCisJCQkJCQkgICIgJ3QnIEFTIHN1YnBhc3N3b3JkcmVxdWlyZWQsXG4iCisJCQkJ CQkgICIgZmFsc2UgQVMgc3VibWF0Y2hkZGxvd25lclxuIiwKIAkJCQkJCSAgTE9HSUNBTFJFUF9P UklHSU5fQU5ZKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDY5NSw2ICs0 Njk4LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlfc3ViZGlzYWJsZW9u ZXJyID0gUFFmbnVtYmVyKHJlcywgInN1YmRpc2FibGVvbmVyciIpOwogCWlfc3Vib3JpZ2luID0g UFFmbnVtYmVyKHJlcywgInN1Ym9yaWdpbiIpOwogCWlfc3VicGFzc3dvcmRyZXF1aXJlZCA9IFBR Zm51bWJlcihyZXMsICJzdWJwYXNzd29yZHJlcXVpcmVkIik7CisJaV9zdWJtYXRjaGRkbG93bmVy ID0gUFFmbnVtYmVyKHJlcywgInN1Ym1hdGNoZGRsb3duZXIiKTsKIAogCXN1YmluZm8gPSBwZ19t YWxsb2MobnR1cHMgKiBzaXplb2YoU3Vic2NyaXB0aW9uSW5mbykpOwogCkBAIC00NzI3LDYgKzQ3 MzEsOCBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCXN1YmluZm9baV0uc3Vi b3JpZ2luID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1Ym9yaWdpbikpOwogCQlz dWJpbmZvW2ldLnN1YnBhc3N3b3JkcmVxdWlyZWQgPQogCQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3N1YnBhc3N3b3JkcmVxdWlyZWQpKTsKKwkJc3ViaW5mb1tpXS5zdWJtYXRjaGRk bG93bmVyID0KKwkJCXBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXRjaGRkbG93 bmVyKSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCiAJCXNl bGVjdER1bXBhYmxlT2JqZWN0KCYoc3ViaW5mb1tpXS5kb2JqKSwgZm91dCk7CkBAIC00ODA1LDYg KzQ4MTEsOSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlw dGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHBnX3N0cmNhc2VjbXAoc3ViaW5mby0+c3Vib3JpZ2lu LCBMT0dJQ0FMUkVQX09SSUdJTl9BTlkpICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5 LCAiLCBvcmlnaW4gPSAlcyIsIHN1YmluZm8tPnN1Ym9yaWdpbik7CiAKKwlpZiAoc3RyY21wKHN1 YmluZm8tPnN1Ym1hdGNoZGRsb3duZXIsICJmIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsIG1hdGNoX2RkbF9vd25lciA9IGZhbHNlIik7CisKIAlpZiAoc3RyY21wKHN1 YmluZm8tPnN1YnN5bmNjb21taXQsICJvZmYiKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihx dWVyeSwgIiwgc3luY2hyb25vdXNfY29tbWl0ID0gJXMiLCBmbXRJZChzdWJpbmZvLT5zdWJzeW5j Y29tbWl0KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDc2NzNkMTUzYWEuLjc3NTJlOTRiNmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaApAQCAtNjY2LDYgKzY2Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9TdWJzY3JpcHRpb25J bmZvCiAJY2hhcgkgICAqc3Vic3luY2NvbW1pdDsKIAljaGFyCSAgICpzdWJwdWJsaWNhdGlvbnM7 CiAJY2hhcgkgICAqc3VicGFzc3dvcmRyZXF1aXJlZDsKKwljaGFyCSAgICpzdWJtYXRjaGRkbG93 bmVyOwogfSBTdWJzY3JpcHRpb25JbmZvOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA3NTBlYTE5ZGMxLi5k YWFjY2IyNjYzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtNjUwNSw3ICs2NTA1LDcgQEAgZGVzY3JpYmVTdWJzY3Jp cHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAlQR3Jlc3VsdCAgICpy ZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29uc3QgYm9v bCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotCWZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlfTsKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9OwogCiAJaWYgKHBzZXQuc3ZlcnNpb24g PCAxMDAwMDApCiAJewpAQCAtNjU2NCwxMCArNjU2NCwxMiBAQCBkZXNjcmliZVN1YnNjcmlwdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKIAkJCQkJCQkgICIsIHN1Ym9yaWdpbiBBUyBcIiVzXCJcbiIKIAkJCQkJCQkgICIs IHN1YnBhc3N3b3JkcmVxdWlyZWQgQVMgXCIlc1wiXG4iCi0JCQkJCQkJICAiLCBzdWJydW5hc293 bmVyIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgICIsIHN1YnJ1bmFzb3duZXIgQVMgXCIlc1wiXG4i CisJCQkJCQkJICAiLCBzdWJtYXRjaGRkbG93bmVyIEFTIFwiJXNcIlxuIiwKIAkJCQkJCQkgIGdl dHRleHRfbm9vcCgiT3JpZ2luIiksCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlBhc3N3b3JkIHJl cXVpcmVkIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlJ1biBhcyBvd25lcj8iKSk7CisJCQkJ CQkJICBnZXR0ZXh0X25vb3AoIlJ1biBhcyBvd25lcj8iKSwKKwkJCQkJCQkgIGdldHRleHRfbm9v cCgiTWF0Y2ggRERMIG93bmVyIikpOwogCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJ CQkgICIsICBzdWJzeW5jY29tbWl0IEFTIFwiJXNcIlxuIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKaW5kZXggMWQ0MGVlYmM3OC4uYzk5Y2EyYjUwOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Myw2ICs5Myw5IEBAIENBVEFMT0cocGdfc3Vic2Ny aXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBC S0lfUk9XCiAJYm9vbAkJc3VicnVuYXNvd25lcjsJLyogVHJ1ZSBpZiByZXBsaWNhdGlvbiBzaG91 bGQgZXhlY3V0ZSBhcyB0aGUKIAkJCQkJCQkJICogc3Vic2NyaXB0aW9uIG93bmVyICovCiAKKwli b29sCQlzdWJtYXRjaGRkbG93bmVyOwkvKiBUcnVlIGlmIHJlcGxpY2F0ZWQgb2JqZWN0cyBieSBE REwgcmVwbGljYXRpb24KKwkJCQkJCQkJCSAqIHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgb3du ZXIgb24gdGhlIHB1Ymxpc2hlciAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0 byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxM OwpAQCAtMTQ0LDYgKzE0Nyw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCUxpc3QJ ICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNhdGlvbiBuYW1lcyB0byBzdWJzY3Jp YmUgdG8gKi8KIAljaGFyCSAgICpvcmlnaW47CQkJLyogT25seSBwdWJsaXNoIGRhdGEgb3JpZ2lu YXRpbmcgZnJvbSB0aGUKIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLworCWJvb2wJCW1h dGNoZGRsb3duZXI7ICAvKiBJbmRpY2F0ZXMgaWYgcmVwbGljYXRlZCBvYmplY3RzIGJ5IERETCBy ZXBsaWNhdGlvbgorCQkJCQkJCQkgKiBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsIG93bmVyIG9u IHRoZSBwdWJsaXNoZXIgKi8KIH0gU3Vic2NyaXB0aW9uOwogCiAvKiBEaXNhbGxvdyBzdHJlYW1p bmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dGNvcC9kZGxkZXBhcnNlLmggYi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAppbmRleCBj YWVmYjAzYmY2Li4zZjExMWJjMTU0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RkbGRl cGFyc2UuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaApAQCAtMTYsMTMgKzE2 LDIyIEBACiAvKiBDb250ZXh0IGluZm8gbmVlZGVkIGZvciBkZXBhcnNpbmcgZGRsIGNvbW1hbmQg Ki8KIHR5cGVkZWYgc3RydWN0CiB7CisJLyoKKwkgKiBpbmNsdWRlX293bmVyIGluZGljYXRlcyBp ZiB0aGUgb3duZXIvcm9sZSBvZiB0aGUgY29tbWFuZCBzaG91bGQgYmUKKwkgKiBpbmNsdWRlZCBp biB0aGUgZGVwYXJzZWQgSnNvbiBvdXRwdXQuIEl0IGlzIHNldCB0byBmYWxzZSBmb3IgYW55IGNv bW1hbmRzCisJICogdGhhdCBkb24ndCBDUkVBVEUgZGF0YWJhc2Ugb2JqZWN0cyAoQUxURVIgY29t bWFuZHMgZm9yIGV4YW1wbGUpLCB0aGlzIGlzCisJICogdG8gYXZvaWQgZW5jb2RpbmcgYW5kIHNl bmRpbmcgdGhlIG93bmVyIHRvIGRvd25zdHJlYW0gZm9yIHJlcGxheSBhcyBpdCBpcworCSAqIHVu bmVjZXNzYXJ5IGZvciBzdWNoIGNvbW1hbmRzLgorCSAqLworCWJvb2wJCWluY2x1ZGVfb3duZXI7 CisKIAkvKiBUaGUgbWF4aW11bSB2b2xhdGlsaXR5IG9mIGZ1bmN0aW9ucyBpbiBleHByZXNzaW9u cyBvZiBhIERETCBjb21tYW5kLiAqLwogCWNoYXIJCW1heF92b2xhdGlsaXR5OwogfQkJCWRkbF9k ZXBhcnNlX2NvbnRleHQ7CiAKIGV4dGVybiBjaGFyICpkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChD b2xsZWN0ZWRDb21tYW5kICpjbWQsCiAJCQkJCQkJCQkgZGRsX2RlcGFyc2VfY29udGV4dCAqIGNv bnRleHQpOwotZXh0ZXJuIGNoYXIgKmRlcGFyc2VfZGRsX2pzb25fdG9fc3RyaW5nKGNoYXIgKmpz b25iKTsKK2V4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpqc29u YiwgY2hhcioqIG93bmVyKTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2Ryb3BfdGFibGUoY29uc3Qg Y2hhciAqb2JqaWRlbnRpdHksIGNvbnN0IGNoYXIgKm9iamVjdHR5cGUsCiAJCQkJCQkJCU5vZGUg KnBhcnNldHJlZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGls aXR5LmggYi9zcmMvaW5jbHVkZS90Y29wL2RlcGFyc2VfdXRpbGl0eS5oCmluZGV4IDE4MzFlYzlh YWUuLjFmOWNjOTUzYzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvZGVwYXJzZV91dGls aXR5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9kZXBhcnNlX3V0aWxpdHkuaApAQCAtNDcsNiAr NDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb2xsZWN0ZWRDb21tYW5kCiAJQ29sbGVjdGVkQ29tbWFu ZFR5cGUgdHlwZTsKIAogCWJvb2wJCWluX2V4dGVuc2lvbjsKKwljaGFyCSAgICpyb2xlOwogCU5v ZGUJICAgKnBhcnNldHJlZTsKIAogCXVuaW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQKaW5kZXggM2MxYTA4NjllYy4uNjMwZjk0ZGE3MSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE2LDE4ICsxMTYsMTggQEAg Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFUKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0 ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRo ZSBzdWJzY3JpcHRpb24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKyByZWdy ZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQ YXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwogXGRS cysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAw LzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBh c3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAor LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cp CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0xNDUsMTAgKzE0NSwx MCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jh cic7CiBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9 IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2gg PSBmYWxzZSk7CkBAIC0xNTYsMTAgKzE1NiwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDInOwogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9ICduZXduYW1l Jyk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocGFzc3dvcmRfcmVx dWlyZWQgPSBmYWxzZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRp b24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBm ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHBhc3N3b3JkX3Jl cXVpcmVkID0gdHJ1ZSk7CkBAIC0xNzQsMTAgKzE3NCwxMCBAQCBFUlJPUjogIHVucmVjb2duaXpl ZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRlX3Nsb3QiCiAtLSBvawogQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDAvMTIzNDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0 aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg TWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sgLSB3 aXRoIGxzbiA9IE5PTkUKQEAgLTE4NiwxMCArMTg2LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0tJUCAobHNuID0gTk9ORSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzAnKTsKIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9j YXRpb24gKExTTik6IDAvMAogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0 aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSBy b3cpCiAKIEJFR0lOOwpAQCAtMjIxLDEwICsyMjEsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1Yl9mb28gU0VUIChzeW5jaHJvbm91c19jb21taXQgPSBmb29iYXIpOwogRVJS T1I6ICBpbnZhbGlkIHZhbHVlIGZvciBwYXJhbWV0ZXIgInN5bmNocm9ub3VzX2NvbW1pdCI6ICJm b29iYXIiCiBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVt b3RlX2FwcGx5LCBvbiwgb2ZmLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAg IE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAg IFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMg b3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9v IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBsb2Nh bCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgICBOYW1lICAgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBvd25l ciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBr ZWVwIHRoZSByZXN0IHNpbXBsZQpAQCAtMjUzLDE5ICsyNTMsMTkgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3Qg Y29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVh bGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24s IGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERM IG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQg ICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChi aW5hcnkgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cp CiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTI3NywyNyArMjc3LDI3 IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBj cmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0 aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJs ZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICB8IHQgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOwogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVs ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IE1hdGNoIERETCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQ dWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERE TCBvd25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxyZWFkeSBleGlzdHMKQEAg LTMxMiwxMCArMzEyLDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQURE IFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChyZWZyCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIg V0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBp cyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCi0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERMIG93bmVyIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVz dHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9y ZSB0aGFuIG9uY2UKQEAgLTMzMCwxMCArMzMwLDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAtLSBvayAt IGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNl KTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1p bmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzY5LDEwICszNjksMTAgQEAgQ1JFQVRFIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBu b3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1h bnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRp b24sIGFuZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCiBcZFJzKwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgcCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2gg RERMIG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90 IHN1cHBvcnRlZC4KQEAgLTM4MSwxMCArMzgxLDEwIEBAIEVSUk9SOiAgdW5yZWNvZ25pemVkIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJ0d29fcGhhc2UiCiAtLSBidXQgY2FuIGFsdGVyIHN0cmVh bWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lw IExTTiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgTWF0Y2ggRERM IG93bmVyIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICAgICAg ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz bG90X25hbWUgPSBOT05FKTsKQEAgLTM5NCwxMCArMzk0LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNv bm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxs eSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBh bmQgcmVmcmVzaCB0aGUgc3Vic2NyaXB0aW9uLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IE1hdGNoIERETCBv d25lciB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgICAgICAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xv dF9uYW1lID0gTk9ORSk7CkBAIC00MTAsMTggKzQxMCwxOCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qn IFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25u ZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5k IHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGlj YXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3du ZXIgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCBy ZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2Fi bGVfb25fZXJyb3IgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgdCAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBNYXRjaCBEREwgb3duZXIgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwotLSAKMi4zNC4xCgo= --000000000000d07f7705feb00d5c Content-Type: application/octet-stream; name="0004-DDL-replication-for-Table-DDL-commands-2023_06_22.patch" Content-Disposition: attachment; filename="0004-DDL-replication-for-Table-DDL-commands-2023_06_22.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lj6mh5ia3 RnJvbSA0Y2VhNDNkN2U1YzhhMDc5OWVjZDZjNDBjNjkzZWU0Yjc2YzVjMzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjEgSnVuIDIwMjMgMTY6Mzc6MDMgKzA1MzAKU3ViamVjdDogW1BBVENIIDQv NV0gRERMIHJlcGxpY2F0aW9uIGZvciBUYWJsZSBEREwgY29tbWFuZHMKCk9WRVJWSUVXCi0tLS0t LS0tCjEpIFRvIHN1cHBvcnQgRERMIHJlcGxpY2F0aW9uLCB3ZSB1c2UgdGhlIGV2ZW50IHRyaWdn ZXIgYW5kIERETCBkZXBhcnNpbmcKZmFjaWxpdGllcy4gRHVyaW5nIENSRUFURSBQVUJMSUNBVElP TiB3ZSByZWdpc3RlciBhICdjb21tYW5kIGVuZCcgdHJpZ2dlciB0aGF0CmRlcGFyc2VzIHRoZSBE REwgKGlmIHRoZSBEREwgaXMgYW5ub3RhdGVkIGFzIGRkbHJlcGxvayBmb3IgRERMIHJlcGxpY2F0 aW9uIGluCmNtZHRhZ2xpc3QuaCkgYXMgYSBKU09OIGJsb2IsIGFuZCBXQUwgbG9ncyBpdC4gVGhl IGV2ZW50IHRyaWdnZXIgaXMgYXV0b21hdGljYWxseQpyZW1vdmVkIGF0IHRoZSB0aW1lIG9mIERS T1AgUFVCTElDQVRJT04uIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcwpp dCBkb3duc3RyZWFtIHNpbWlsYXIgdG8gb3RoZXIgRE1MIGNvbW1hbmRzLiBUaGUgc3Vic2NyaWJl ciB0aGVuIGNvbnZlcnRzIEpTT04KYmFjayB0byB0aGUgRERMIGNvbW1hbmQgc3RyaW5nIGFuZCBl eGVjdXRlcyBpdC4gSW4gdGhlIHN1YnNjcmliZXIsIHdlIGFsc28gYWRkCnRoZSBuZXdseSBhZGRl ZCByZWwgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbCBzbyB0aGF0IHRoZSBETUwgY2hhbmdlcyBvbiB0 aGUgbmV3CnRhYmxlIGNhbiBiZSByZXBsaWNhdGVkIHdpdGhvdXQgaGF2aW5nIHRvIG1hbnVhbGx5 IHJ1bgoiQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIi4KCjIpIEFk ZCBzdWJzY3JpcHRpb24gdGFwIHRlc3QgZm9yIERETCByZXBsaWNhdGlvbiBmb3IgVEFCTEUgcmVs YXRlZCBjb21tYW5kcy4KCkZvciBub24tcmV3cml0ZSBBTFRFUiBvYmplY3QgY29tbWFuZCBhbmQg Q1JFQVRFIG9iamVjdCBjb21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KV2UgZGVwYXJzZSB0aGUgY29tbWFuZCBhdCBk ZGxfY29tbWFuZF9lbmQgZXZlbnQgdHJpZ2dlciBhbmQgV0FMIGxvZyB0aGUKZGVwYXJzZWQgSlNP TiBzdHJpbmcuIFRoZSBXQUxTZW5kZXIgZGVjb2RlcyB0aGUgV0FMIGFuZCBzZW5kcyBpdCB0bwpz dWJzY3JpYmVyIGlmIHRoZSBjcmVhdGVkL2FsdGVyZWQgdGFibGUgaXMgcHVibGlzaGVkLgoKRm9y IERST1Agb2JqZWN0OgotLS0tLS0tLS0tLS0tLS0tClRoZSAnY29tbWFuZCBzdGFydCcgZXZlbnQg aGFuZGxlciBsb2dzIGEgZGRsIG1lc3NhZ2Ugd2l0aCB0aGUgcmVsaWRzIG9mCnRoZSB0YWJsZXMg dGhhdCBhcmUgZHJvcHBlZCB3aGljaCB0aGUgb3V0cHV0IHBsdWdpbiAocGdvdXRwdXQpIHN0b3Jl cyBpbgppdHMgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgYWZ0ZXIgdmVyaWZ5aW5nIHRoYXQgaXQg aXMgZm9yIGEgdGFibGUgdGhhdCBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbi4gTGF0ZXIgdGhl ICdjb21tYW5kIGVuZCcgZXZlbnQgaGFuZGxlciBzZW5kcyB0aGUKYWN0dWFsIGRyb3AgbWVzc2Fn ZS4gT24gcmVjZWl2aW5nIHRoZSAnY29tbWFuZCBlbmQnLCBwZ291dHB1dCBzZW5kcyB0aGUKRFJP UCBjb21tYW5kIG9ubHkgaWYgaXQgaXMgZm9yIG9uZSBvZiB0aGUgcmVsaWRzIG1hcmtlZCBmb3Ig ZGVsZXRpb24uCgpUaGUgcmVhc29uIHdlIGhhdmUgdG8gZG8gdGhpcyBpcyBiZWNhdXNlLCBvbmNl IHRoZSBsb2dpY2FsIGRlY29kZXIKcmVjZWl2ZXMgdGhlICdjb21tYW5kIGVuZCcgbWVzc2FnZSwg IHRoZSByZWxpZCBvZiB0aGUgdGFibGUgaXMgbm8gbG9uZ2VyCnZhbGlkIGFzIGl0IGhhcyBiZWVu IGRlbGV0ZWQgYXMgcGFydCBvZiBpbnZhbGlkYXRpb25zIHJlY2VpdmVkIGZvciB0aGUKZHJvcCB0 YWJsZSBjb21tYW5kLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gdmVyaWZ5IGlmIHRoZSB0 YWJsZSBpcwpwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbiBsaXN0IG9yIG5vdC4gVG8gbWFrZSB0aGlz IHBvc3NpYmxlLCB0d28gbW9yZSBlbGVtZW50cwphcmUgYWRkZWQgdG8gdGhlIGRkbCB4bG9nIGFu ZCBkZGwgbWVzc2FnZSwgKHJlbGlkIGFuZCBjbWR0eXBlKS4KCldlIGNvdWxkIGhhdmUgYWxzbyBo YW5kbGVkIGFsbCB0aGlzIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUsIGJ1dAp0aGF0IHdvdWxkIG1l YW4gc2VuZGluZyBzcHVyaW91cyBkZGwgbWVzc2FnZXMgZm9yIHRhYmxlcyB0aGF0IGFyZSBub3Qg cGFydApvZiB0aGUgcHVibGljYXRpb24uCgpGb3IgdGFibGVfcmV3cml0ZSBBTFRFUiBUQUJMRSBj b21tYW5kOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFeGVjdXRpbmcg YSBub24taW1tdXRhYmxlIGV4cHJlc3Npb24gZHVyaW5nIHRoZSB0YWJsZSByZXdyaXRlIHBoYXNl IGlzIG5vdAphbGxvd2VkLCBhcyBpdCBtYXkgcmVzdWx0IGluIGRpZmZlcmVudCBkYXRhIGJldHdl ZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLgpXaGlsZSBzb21lIG1heSBzdWdnZXN0IGNvbnZl cnRpbmcgdGhlIHJld3JpdGUgaW5zZXJ0cyB0byB1cGRhdGVzIGFuZCByZXBsaWNhdGUKdGhlbSBh ZnRlIHRoZSBkZGwgY29tbWFuZCB0byBtYWludGFpbiBkYXRhIGNvbnNpc3RlbmN5LiBCdXQgaXQg ZG9lc24ndCB3b3JrIGlmCnRoZSByZXBsaWNhIGlkZW50aXR5IGNvbHVtbiBpcyBhbHRlcmVkIGlu IHRoZSBjb21tYW5kLiBUaGlzIGlzIGJlY2F1c2UgdGhlCnJld3JpdGUgaW5zZXJ0cyBkbyBub3Qg Y29udGFpbiB0aGUgb2xkIHZhbHVlcyBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSBjb252ZXJ0ZWQK dG8gdXBkYXRlLgoKTElNSVQ6CkNvbW1hbmRzIGNvbnRhaW4gdm9sYXRpbGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZC4gQmVjYXVzZQppdCdzIHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFp biBEREwvRE1MIGluIHdoaWNoIGNhc2UgdGhlc2Ugb3BlcmF0aW9ucwp3aWxsIGJlIGV4ZWN1dGVk IHR3aWNlIGFuZCBjYXVzZSBkdXBsaWNhdGUgZGF0YS4gSW4gYWRkaXRpb24sIHdlIGRvbid0IGtu b3cKd2hldGhlciB0aGUgdGFibGVzIGJlaW5nIGFjY2Vzc2VkIGJ5IHRoZXNlIERETC9ETUwgYXJl IHB1Ymxpc2hlZCBvciBub3QuIFNvCmJsaW5kbHkgYWxsb3dpbmcgc3VjaCBmdW5jdGlvbnMgY2Fu IGFsbG93IHVuaW50ZW5kZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKYWNjZXNzZWQgaW4gdGhv c2UgZnVuY3Rpb25zIG1heSBub3QgZXZlbiBleGlzdCBvbiB0aGUgc3Vic2NyaWJlci4KLS0tCiBj b250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCAgICAgICAgfCAgMjcgKysKIGNv bnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbCAgICAgICAgICAgICB8ICAgNiArCiBjb250 cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgICAgfCAgNDggKysKIGRvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgOSArCiBkb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAxNzQgKysrKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCiAuLi4v YWNjZXNzL3JtZ3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMgICAgICAgfCAgNTIgKysrCiBzcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9hbHRlci5jICAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvZGRsZGVwYXJzZS5jICAgICAgICAgICAgIHwgIDkzICsrKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYyAgICAgICAgICB8ICA1NiArKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAgICB8IDIyOCArKysrKysrKystCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMgIHwgIDgzICsrKysKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dlci5jICB8IDM0OSArKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICA0 MSArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgIDk3 ICsrKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAy NCArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgIDIg Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDQzICsr CiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAxMzUgKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxOTEg KysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8 IDI1MSArKysrKysrKy0tLQogc3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyAgICAgICAgICAgICAg ICAgICAgIHwgIDI2ICstCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAg ICAgfCAgMjYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC8uZ2l0aWdub3JlICAgICAgICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYyAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIx ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19ldmVudF90cmlnZ2VyLmggICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyMCArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggICAgICAgICAgfCAgMjkgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCAgICAgICAgICB8ICAgOCArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmggICAgICAgIHwgIDE0ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCAgICAgICAgICB8ICA2MCArKysKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oICAgICAgIHwgIDI3ICsrCiBzcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgIDM5ICsrCiBzcmMvaW5jbHVkZS90 Y29wL2NtZHRhZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3Rj b3AvY21kdGFnbGlzdC5oICAgICAgICAgICAgICAgICB8IDM4NiArKysrKysrKy0tLS0tLS0tCiBz cmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaCAgICAgICAgICAgICAgICAgfCAgMTUgKy0KIHNy Yy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDQyMCArKysrKysrKyst LS0tLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8 ICAgMSArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbCAgICAgfCAz NzQgKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAg ICAgICAgICAgIHwgICA2ICsKIDU1IGZpbGVzIGNoYW5nZWQsIDI5MDUgaW5zZXJ0aW9ucygrKSwg NTI3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9y bWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9kZGxfcmVwbGljYXRpb24ucGwKCmRp ZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CmluZGV4IGQ1NWZiM2E2NjcuLmMxY2Yz OGQ0ZmEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0 CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CkBAIC04MzEsNiAr ODMxLDMzIEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdy ZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jCiAtLS0tLS0KICgwIHJvd3MpCiAKKy0t IHRlc3QgcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlIHdpdGggYSBwcmFjdGljYWwgcGF5bG9h ZAorU0VMRUNUICdkZGwgbXNnMScgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2Rk bCBtc2cxJywgMTYzOTQsIDEsICdtc2cxJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRs IG1zZzEKKygxIHJvdykKKworU0VMRUNUICdkZGwgbXNnMicgRlJPTSBwZ19sb2dpY2FsX2VtaXRf ZGRsX21lc3NhZ2UoJ2RkbCBtc2cyJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgU0NIRU1B ICV7aWZfbm90X2V4aXN0c31zICV7bmFtZX1JICV7YXV0aG9yaXphdGlvbn1zIiwgIm5hbWUiOiAi Zm9vIiwgImF1dGhvcml6YXRpb24iOiB7ImZtdCI6ICJBVVRIT1JJWkFUSU9OICV7YXV0aG9yaXph dGlvbl9yb2xlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYXV0aG9yaXphdGlvbl9yb2xlIjogbnVs bH0sICJpZl9ub3RfZXhpc3RzIjogIiJ9Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRs IG1zZzIKKygxIHJvdykKKworU0VMRUNUICdkZGwgbXNnMycgRlJPTSBwZ19sb2dpY2FsX2VtaXRf ZGRsX21lc3NhZ2UoJ2RkbCBtc2czJywgMTYzOTQsIDEsICd7ImZtdCI6ICJDUkVBVEUgJXtwZXJz aXN0ZW5jZX1zIFRBQkxFICV7aWZfbm90X2V4aXN0c31zICV7aWRlbnRpdHl9RCAoJXt0YWJsZV9l bGVtZW50czosIH1zKSAle2luaGVyaXRzfXMgJXt0YWJsZXNwYWNlfXMgJXtvbl9jb21taXR9cyAl e3BhcnRpdGlvbl9ieX1zICV7YWNjZXNzX21ldGhvZH1zICV7d2l0aF9jbGF1c2V9cyIsICJpZGVu dGl0eSI6IHsib2JqbmFtZSI6ICJmb28iLCAic2NoZW1hbmFtZSI6ICJlbGVtZW50X3Rlc3QifSwg ImluaGVyaXRzIjogeyJmbXQiOiAiSU5IRVJJVFMgKCV7cGFyZW50czosIH1EKSIsICJwYXJlbnRz IjogbnVsbCwgInByZXNlbnQiOiBmYWxzZX0sICJvbl9jb21taXQiOiB7ImZtdCI6ICJPTiBDT01N SVQgJXtvbl9jb21taXRfdmFsdWV9cyIsICJwcmVzZW50IjogZmFsc2UsICJvbl9jb21taXRfdmFs dWUiOiBudWxsfSwgInRhYmxlc3BhY2UiOiB7ImZtdCI6ICJUQUJMRVNQQUNFICV7dGFibGVzcGFj ZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgInRhYmxlc3BhY2UiOiBudWxsfSwgInBlcnNpc3RlbmNl IjogIiIsICJ3aXRoX2NsYXVzZSI6IHsiZm10IjogIldJVEgiLCAicHJlc2VudCI6IGZhbHNlfSwg InBhcnRpdGlvbl9ieSI6IHsiZm10IjogIlBBUlRJVElPTiBCWSAle2RlZmluaXRpb259cyIsICJw cmVzZW50IjogZmFsc2UsICJkZWZpbml0aW9uIjogbnVsbH0sICJhY2Nlc3NfbWV0aG9kIjogeyJm bXQiOiAiVVNJTkcgJXthY2Nlc3NfbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiYWNjZXNz X21ldGhvZCI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIiLCAidGFibGVfZWxlbWVudHMiOiBb eyJmbXQiOiAiJXtuYW1lfUkgJXtjb2x0eXBlfVQgU1RPUkFHRSAle2NvbHN0b3JhZ2V9cyAle2Nv bXByZXNzaW9ufXMgJXtjb2xsYXRpb259cyAle25vdF9udWxsfXMgJXtkZWZhdWx0fXMgJXtnZW5l cmF0ZWRfY29sdW1ufXMiLCAibmFtZSI6ICJpZCIsICJ0eXBlIjogImNvbHVtbiIsICJjb2x0eXBl IjogeyJ0eXBtb2QiOiAiIiwgInR5cGFycmF5IjogZmFsc2UsICJ0eXBlbmFtZSI6ICJpbnQ0Iiwg InNjaGVtYW5hbWUiOiAicGdfY2F0YWxvZyJ9LCAiZGVmYXVsdCI6IHsiZm10IjogIkRFRkFVTFQi LCAicHJlc2VudCI6IGZhbHNlfSwgIm5vdF9udWxsIjogIiIsICJjb2xsYXRpb24iOiB7ImZtdCI6 ICJDT0xMQVRFIiwgInByZXNlbnQiOiBmYWxzZX0sICJjb2xzdG9yYWdlIjogInBsYWluIiwgImNv bXByZXNzaW9uIjogeyJmbXQiOiAiQ09NUFJFU1NJT04gJXtjb21wcmVzc2lvbl9tZXRob2R9SSIs ICJwcmVzZW50IjogZmFsc2UsICJjb21wcmVzc2lvbl9tZXRob2QiOiBudWxsfSwgImdlbmVyYXRl ZF9jb2x1bW4iOiB7ImZtdCI6ICJHRU5FUkFURUQgQUxXQVlTIEFTIiwgInByZXNlbnQiOiBmYWxz ZX19XX19Jyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZGRsIG1zZzMKKygxIHJvdykKKwor U0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25f c2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3Rz JywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgRERMIG1lc3NhZ2U6IHByZWZpeDogZGRsIG1zZzEsIHJlbGlkOiAxNjM5NCwgY21kdHlwZTog RHJvcCwgc3o6IDQgY29udGVudDogbXNnMQorIERETCBtZXNzYWdlOiBwcmVmaXg6IGRkbCBtc2cy LCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3AsIHN6OiAyMTcgY29udGVudDogeyJmbXQiOiAi Q1JFQVRFIFNDSEVNQSAle2lmX25vdF9leGlzdHN9cyAle25hbWV9SSAle2F1dGhvcml6YXRpb259 cyIsICJuYW1lIjogImZvbyIsICJhdXRob3JpemF0aW9uIjogeyJmbXQiOiAiQVVUSE9SSVpBVElP TiAle2F1dGhvcml6YXRpb25fcm9sZX1JIiwgInByZXNlbnQiOiBmYWxzZSwgImF1dGhvcml6YXRp b25fcm9sZSI6IG51bGx9LCAiaWZfbm90X2V4aXN0cyI6ICIifQorIERETCBtZXNzYWdlOiBwcmVm aXg6IGRkbCBtc2czLCByZWxpZDogMTYzOTQsIGNtZHR5cGU6IERyb3AsIHN6OiAxMzk2IGNvbnRl bnQ6IHsiZm10IjogIkNSRUFURSAle3BlcnNpc3RlbmNlfXMgVEFCTEUgJXtpZl9ub3RfZXhpc3Rz fXMgJXtpZGVudGl0eX1EICgle3RhYmxlX2VsZW1lbnRzOiwgfXMpICV7aW5oZXJpdHN9cyAle3Rh Ymxlc3BhY2V9cyAle29uX2NvbW1pdH1zICV7cGFydGl0aW9uX2J5fXMgJXthY2Nlc3NfbWV0aG9k fXMgJXt3aXRoX2NsYXVzZX1zIiwgImlkZW50aXR5IjogeyJvYmpuYW1lIjogImZvbyIsICJzY2hl bWFuYW1lIjogImVsZW1lbnRfdGVzdCJ9LCAiaW5oZXJpdHMiOiB7ImZtdCI6ICJJTkhFUklUUyAo JXtwYXJlbnRzOiwgfUQpIiwgInBhcmVudHMiOiBudWxsLCAicHJlc2VudCI6IGZhbHNlfSwgIm9u X2NvbW1pdCI6IHsiZm10IjogIk9OIENPTU1JVCAle29uX2NvbW1pdF92YWx1ZX1zIiwgInByZXNl bnQiOiBmYWxzZSwgIm9uX2NvbW1pdF92YWx1ZSI6IG51bGx9LCAidGFibGVzcGFjZSI6IHsiZm10 IjogIlRBQkxFU1BBQ0UgJXt0YWJsZXNwYWNlfUkiLCAicHJlc2VudCI6IGZhbHNlLCAidGFibGVz cGFjZSI6IG51bGx9LCAicGVyc2lzdGVuY2UiOiAiIiwgIndpdGhfY2xhdXNlIjogeyJmbXQiOiAi V0lUSCIsICJwcmVzZW50IjogZmFsc2V9LCAicGFydGl0aW9uX2J5IjogeyJmbXQiOiAiUEFSVElU SU9OIEJZICV7ZGVmaW5pdGlvbn1zIiwgInByZXNlbnQiOiBmYWxzZSwgImRlZmluaXRpb24iOiBu dWxsfSwgImFjY2Vzc19tZXRob2QiOiB7ImZtdCI6ICJVU0lORyAle2FjY2Vzc19tZXRob2R9SSIs ICJwcmVzZW50IjogZmFsc2UsICJhY2Nlc3NfbWV0aG9kIjogbnVsbH0sICJpZl9ub3RfZXhpc3Rz IjogIiIsICJ0YWJsZV9lbGVtZW50cyI6IFt7ImZtdCI6ICIle25hbWV9SSAle2NvbHR5cGV9VCBT VE9SQUdFICV7Y29sc3RvcmFnZX1zICV7Y29tcHJlc3Npb259cyAle2NvbGxhdGlvbn1zICV7bm90 X251bGx9cyAle2RlZmF1bHR9cyAle2dlbmVyYXRlZF9jb2x1bW59cyIsICJuYW1lIjogImlkIiwg InR5cGUiOiAiY29sdW1uIiwgImNvbHR5cGUiOiB7InR5cG1vZCI6ICIiLCAidHlwYXJyYXkiOiBm YWxzZSwgInR5cGVuYW1lIjogImludDQiLCAic2NoZW1hbmFtZSI6ICJwZ19jYXRhbG9nIn0sICJk ZWZhdWx0IjogeyJmbXQiOiAiREVGQVVMVCIsICJwcmVzZW50IjogZmFsc2V9LCAibm90X251bGwi OiAiIiwgImNvbGxhdGlvbiI6IHsiZm10IjogIkNPTExBVEUiLCAicHJlc2VudCI6IGZhbHNlfSwg ImNvbHN0b3JhZ2UiOiAicGxhaW4iLCAiY29tcHJlc3Npb24iOiB7ImZtdCI6ICJDT01QUkVTU0lP TiAle2NvbXByZXNzaW9uX21ldGhvZH1JIiwgInByZXNlbnQiOiBmYWxzZSwgImNvbXByZXNzaW9u X21ldGhvZCI6IG51bGx9LCAiZ2VuZXJhdGVkX2NvbHVtbiI6IHsiZm10IjogIkdFTkVSQVRFRCBB TFdBWVMgQVMiLCAicHJlc2VudCI6IGZhbHNlfX1dfX0KKygzIHJvd3MpCisKIFNFTEVDVCBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwogIHBnX2Ryb3BfcmVwbGlj YXRpb25fc2xvdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9jb250 cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L2RkbC5zcWwKaW5kZXggNTcyODVhODI4Yy4uNTkyYmM4OWQ5NiAxMDA2NDQKLS0tIGEvY29udHJp Yi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9z cWwvZGRsLnNxbApAQCAtNDMxLDYgKzQzMSwxMiBAQCBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luYwog LS0gZG9uZSwgZnJlZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QKIFNFTEVDVCBkYXRhIEZST00g cGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxM LCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CiAKKy0tIHRl c3QgcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlIHdpdGggYSBwcmFjdGljYWwgcGF5bG9hZAor U0VMRUNUICdkZGwgbXNnMScgRlJPTSBwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UoJ2RkbCBt c2cxJywgMTYzOTQsIDEsICdtc2cxJyk7CitTRUxFQ1QgJ2RkbCBtc2cyJyBGUk9NIHBnX2xvZ2lj YWxfZW1pdF9kZGxfbWVzc2FnZSgnZGRsIG1zZzInLCAxNjM5NCwgMSwgJ3siZm10IjogIkNSRUFU RSBTQ0hFTUEgJXtpZl9ub3RfZXhpc3RzfXMgJXtuYW1lfUkgJXthdXRob3JpemF0aW9ufXMiLCAi bmFtZSI6ICJmb28iLCAiYXV0aG9yaXphdGlvbiI6IHsiZm10IjogIkFVVEhPUklaQVRJT04gJXth dXRob3JpemF0aW9uX3JvbGV9SSIsICJwcmVzZW50IjogZmFsc2UsICJhdXRob3JpemF0aW9uX3Jv bGUiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIn0nKTsKK1NFTEVDVCAnZGRsIG1zZzMnIEZS T00gcGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlKCdkZGwgbXNnMycsIDE2Mzk0LCAxLCAneyJm bXQiOiAiQ1JFQVRFICV7cGVyc2lzdGVuY2V9cyBUQUJMRSAle2lmX25vdF9leGlzdHN9cyAle2lk ZW50aXR5fUQgKCV7dGFibGVfZWxlbWVudHM6LCB9cykgJXtpbmhlcml0c31zICV7dGFibGVzcGFj ZX1zICV7b25fY29tbWl0fXMgJXtwYXJ0aXRpb25fYnl9cyAle2FjY2Vzc19tZXRob2R9cyAle3dp dGhfY2xhdXNlfXMiLCAiaWRlbnRpdHkiOiB7Im9iam5hbWUiOiAiZm9vIiwgInNjaGVtYW5hbWUi OiAiZWxlbWVudF90ZXN0In0sICJpbmhlcml0cyI6IHsiZm10IjogIklOSEVSSVRTICgle3BhcmVu dHM6LCB9RCkiLCAicGFyZW50cyI6IG51bGwsICJwcmVzZW50IjogZmFsc2V9LCAib25fY29tbWl0 IjogeyJmbXQiOiAiT04gQ09NTUlUICV7b25fY29tbWl0X3ZhbHVlfXMiLCAicHJlc2VudCI6IGZh bHNlLCAib25fY29tbWl0X3ZhbHVlIjogbnVsbH0sICJ0YWJsZXNwYWNlIjogeyJmbXQiOiAiVEFC TEVTUEFDRSAle3RhYmxlc3BhY2V9SSIsICJwcmVzZW50IjogZmFsc2UsICJ0YWJsZXNwYWNlIjog bnVsbH0sICJwZXJzaXN0ZW5jZSI6ICIiLCAid2l0aF9jbGF1c2UiOiB7ImZtdCI6ICJXSVRIIiwg InByZXNlbnQiOiBmYWxzZX0sICJwYXJ0aXRpb25fYnkiOiB7ImZtdCI6ICJQQVJUSVRJT04gQlkg JXtkZWZpbml0aW9ufXMiLCAicHJlc2VudCI6IGZhbHNlLCAiZGVmaW5pdGlvbiI6IG51bGx9LCAi YWNjZXNzX21ldGhvZCI6IHsiZm10IjogIlVTSU5HICV7YWNjZXNzX21ldGhvZH1JIiwgInByZXNl bnQiOiBmYWxzZSwgImFjY2Vzc19tZXRob2QiOiBudWxsfSwgImlmX25vdF9leGlzdHMiOiAiIiwg InRhYmxlX2VsZW1lbnRzIjogW3siZm10IjogIiV7bmFtZX1JICV7Y29sdHlwZX1UIFNUT1JBR0Ug JXtjb2xzdG9yYWdlfXMgJXtjb21wcmVzc2lvbn1zICV7Y29sbGF0aW9ufXMgJXtub3RfbnVsbH1z ICV7ZGVmYXVsdH1zICV7Z2VuZXJhdGVkX2NvbHVtbn1zIiwgIm5hbWUiOiAiaWQiLCAidHlwZSI6 ICJjb2x1bW4iLCAiY29sdHlwZSI6IHsidHlwbW9kIjogIiIsICJ0eXBhcnJheSI6IGZhbHNlLCAi dHlwZW5hbWUiOiAiaW50NCIsICJzY2hlbWFuYW1lIjogInBnX2NhdGFsb2cifSwgImRlZmF1bHQi OiB7ImZtdCI6ICJERUZBVUxUIiwgInByZXNlbnQiOiBmYWxzZX0sICJub3RfbnVsbCI6ICIiLCAi Y29sbGF0aW9uIjogeyJmbXQiOiAiQ09MTEFURSIsICJwcmVzZW50IjogZmFsc2V9LCAiY29sc3Rv cmFnZSI6ICJwbGFpbiIsICJjb21wcmVzc2lvbiI6IHsiZm10IjogIkNPTVBSRVNTSU9OICV7Y29t cHJlc3Npb25fbWV0aG9kfUkiLCAicHJlc2VudCI6IGZhbHNlLCAiY29tcHJlc3Npb25fbWV0aG9k IjogbnVsbH0sICJnZW5lcmF0ZWRfY29sdW1uIjogeyJmbXQiOiAiR0VORVJBVEVEIEFMV0FZUyBB UyIsICJwcmVzZW50IjogZmFsc2V9fV19fScpOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTsKKwogU0VMRUNUIHBnX2Ryb3Bf cmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CiAKIC8qIGNoZWNrIHRoYXQgdGhl IHNsb3QgaXMgZ29uZSAqLwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3Rf ZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXgg MTJkMWQwNTA1ZC4uOTI4NmY5NzI1OCAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGlu Zy5jCkBAIC0xNCw5ICsxNCwxMSBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogCisjaW5jbHVk ZSAidGNvcC9kZGxkZXBhcnNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAt NzIsNiArNzQsMTIgQEAgc3RhdGljIHZvaWQgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVj UHRyIGxzbiwKIAkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4 LAogCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBw Z19kZWNvZGVfZGRsX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJ CQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2Vf bHNuLAorCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLAorCQkJCQkJCQkg IERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJCQkJCQkJICBTaXplIHN6LCBjb25zdCBj aGFyICptZXNzYWdlKTsKIHN0YXRpYyBib29sIHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCB4aWQsCiAJ CQkJCQkJCQkgY29uc3QgY2hhciAqZ2lkKTsKQEAgLTEzNSw2ICsxNDMsNyBAQCBfUEdfb3V0cHV0 X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPmZpbHRlcl9ieV9v cmlnaW5fY2IgPSBwZ19kZWNvZGVfZmlsdGVyOwogCWNiLT5zaHV0ZG93bl9jYiA9IHBnX2RlY29k ZV9zaHV0ZG93bjsKIAljYi0+bWVzc2FnZV9jYiA9IHBnX2RlY29kZV9tZXNzYWdlOworCWNiLT5k ZGxfY2IgPSBwZ19kZWNvZGVfZGRsX21lc3NhZ2U7CiAJY2ItPmZpbHRlcl9wcmVwYXJlX2NiID0g cGdfZGVjb2RlX2ZpbHRlcl9wcmVwYXJlOwogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdfZGVj b2RlX2JlZ2luX3ByZXBhcmVfdHhuOwogCWNiLT5wcmVwYXJlX2NiID0gcGdfZGVjb2RlX3ByZXBh cmVfdHhuOwpAQCAtNzUwLDYgKzc1OSw0NSBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAor c3RhdGljIHZvaWQKK3BnX2RlY29kZV9kZGxfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2Vf bHNuLCBjb25zdCBjaGFyICpwcmVmaXgsIE9pZCByZWxpZCwKKwkJCQkJICBEZXBhcnNlZENvbW1h bmRUeXBlIGNtZHR5cGUsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJT3V0cHV0 UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgIkRETCBtZXNzYWdlOiBwcmVmaXg6ICVzLCByZWxpZDogJXUsICIsCisJCQkJCSBwcmVmaXgs IHJlbGlkKTsKKworCXN3aXRjaChjbWR0eXBlKQorCXsKKwljYXNlIERDVF9TaW1wbGVDbWQ6CisJ CWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBTaW1wbGUsICIpOworCQlicmVh azsKKwljYXNlIERDVF9UYWJsZURyb3BTdGFydDoKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91 dCwgImNtZHR5cGU6IERyb3Agc3RhcnQsICIpOworCQlicmVhazsKKwljYXNlIERDVF9UYWJsZURy b3BFbmQ6CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wIGVuZCwg Iik7CisJCWJyZWFrOworCWNhc2UgRENUX1RhYmxlQWx0ZXI6CisJCWFwcGVuZFN0cmluZ0luZm8o Y3R4LT5vdXQsICJjbWR0eXBlOiBBbHRlciB0YWJsZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENU X09iamVjdENyZWF0ZToKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IENy ZWF0ZSwgIik7CisJCWJyZWFrOworCWNhc2UgRENUX09iamVjdERyb3A6CisJCWFwcGVuZFN0cmlu Z0luZm8oY3R4LT5vdXQsICJjbWR0eXBlOiBEcm9wLCAiKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgImNtZHR5cGU6IEludmFsaWQsICIpOworCQli cmVhazsKKwl9CisKKwlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAic3o6ICV6dSBjb250ZW50 OiAiLCBzeik7CisJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbyhjdHgtPm91dCwgbWVzc2FnZSwgc3op OworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKIHN0YXRpYyB2b2lkCiBwZ19k ZWNvZGVfc3RyZWFtX3N0YXJ0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICAg UmVvcmRlckJ1ZmZlclRYTiAqdHhuKQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlZDMyY2EwMzQ5Li4zNTY4 ZDA3MGFiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMzg2Myw2ICszODYzLDE1IEBAIFNDUkFNLVNIQS0y NTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJl cGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmV2dGlzaW50ZXJuYWw8 L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgVHJ1ZSBpZiB0aGUgZXZlbnQgdHJpZ2dlciBpcyBpbnRlcm5hbGx5IGdlbmVy YXRlZC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+ZXZ0dGFnczwvc3RydWN0ZmllbGQ+ IDx0eXBlPnRleHRbXTwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IDU5Y2Y5MmU2YTkuLmExZGE4YmRkNDcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbApAQCAtMTQ1Nyw2ICsxNDU3LDE4MCBAQCB0ZXN0X3N1Yj0jIFNFTEVDVCAqIEZST00g dDEgT1JERVIgQlkgaWQ7CiAKICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxp Y2F0aW9uLWRkbCI+CisgIDx0aXRsZT5EREwgUmVwbGljYXRpb248L3RpdGxlPgorICA8cGFyYT4K KyAgICBEYXRhIERlZmluaXRpb24gTGFuZ3VhZ2UgKERETCkgY29tbWFuZHMgY2FuIGJlIHJlcGxp Y2F0ZWQgdXNpbmcgbG9naWNhbCByZXBsaWNhdGlvbi4KKyAgICBXaGVuIGVuYWJsZWQgdGhpcyBm ZWF0dXJlIGF1dG9tYXRpY2FsbHkgcmVwbGljYXRlcyBzdXBwb3J0ZWQgRERMIGNvbW1hbmRzCisg ICAgdGhhdCBhcmUgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG9uIGEgcHVibGlzaGVyIHRvIGEgc3Vi c2NyaWJlci4gVGhpcyBpcworICAgIGVzcGVjaWFsbHkgdXNlZnVsIGlmIHlvdSBoYXZlIG1hbnkg c2NoZW1hIGNoYW5nZXMgb3ZlciB0aW1lIHRoYXQgbmVlZCByZXBsaWNhdGlvbi4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgIEZvciBleGFtcGxlLCBhIENSRUFURSBUQUJMRSBjb21tYW5kIGV4 ZWN1dGVkIG9uIHRoZSBwdWJsaXNoZXIgZ2V0cworICAgIFdBTC1sb2dnZWQsIGFuZCBmb3J3YXJk ZWQgdG8gdGhlIHN1YnNjcmliZXIgdG8gcmVwbGF5OyB0aGVuIGFuIGltcGxpY2l0ICJBTFRFUgor ICAgIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiIgaXMgcGVyZm9ybWVkIG9u IHRoZSBzdWJzY3JpYmVyIGRhdGFiYXNlIHNvIGFueQorICAgIGZvbGxvd2luZyBETUwgY2hhbmdl cyBvbiB0aGUgbmV3IHRhYmxlIGNhbiBiZSByZXBsaWNhdGVkLgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICAgRERMIHJlcGxpY2F0aW9uIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGl0IGNhbiBi ZSBlbmFibGVkIHVzaW5nIHRoZSBkZGwgUFVCTElDQVRJT04KKyAgICBvcHRpb24uIFRoaXMgb3B0 aW9uIGN1cnJlbnRseSBoYXMgb25lIGxldmVsIGFuZCBpcyBvbmx5IGFsbG93ZWQgdG8gYmUgc2V0 IGlmIHRoZQorICAgIFBVQkxJQ0FUSU9OIGlzIEZPUiBBTEwgVEFCTEVTIG9yIEZPUiBUQUJMRVMg SU4gU0NIRU1BLgorICA8L3BhcmE+CisKKyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICAgdGFibGU6IHRoaXMgb3B0aW9uIGVuYWJsZXMgcmVwbGlj YXRpb24gb2YgVGFibGUgRERMIGNvbW1hbmRzLAorICAgICAgICB3aGljaCBpbmNsdWRlOgorICAg ICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgICBDUkVBVEUvQUxURVIvRFJPUCBUQUJMRQorICAgICAgICAgICAg PC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIEFTCisgICAgICAg ICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKworICAgICAgICA8L2l0ZW1pemVk bGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4K KworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1vcHRpb24tZXhhbXBsZXMiPgorICAgIDx0 aXRsZT5FeGFtcGxlcyAtIFNldHVwIERETCBSZXBsaWNhdGlvbiBvbiB0aGUgUHVibGlzaGVyPC90 aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgRW5hYmxlIFRBQkxFIERETCByZXBsaWNhdGlvbiBm b3IgYW4gZXhpc3RpbmcgUFVCTElDQVRJT046Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJM SUNBVElPTiBteXB1YiBTRVQgKGRkbCA9ICd0YWJsZScpOworPC9wcm9ncmFtbGlzdGluZz48L3Bh cmE+CisKKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNhdGlvbi1zdXBwb3J0 ZWQtY29tbWFuZHMiPgorICAgIDx0aXRsZT5TdXBwb3J0ZWQgRERMIGNvbW1hbmRzPC90aXRsZT4K KworICAgIDxwYXJhPgorICAgICAgVGhlIERETCBjb21tYW5kcyBzdXBwb3J0ZWQgZm9yIGxvZ2lj YWwgcmVwbGljYXRpb24gYXJlIFRhYmxlIERETCBjb21tYW5kcywKKyAgICAgIGluY2x1ZGUgPGxp dGVyYWw+QUxURVIgVEFCTEU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5DUkVBVEUgVEFCTEU8L2xpdGVy YWw+LAorICAgICAgPGxpdGVyYWw+Q1JFQVRFIFRBQkxFIEFTPC9saXRlcmFsPiwgYW5kIDxsaXRl cmFsPkRST1AgVEFCTEU8L2xpdGVyYWw+LgorICAgICAgT3RoZXIgb2JqZWN0IGNvbW1hbmRzIGFu ZCBnbG9iYWwgY29tbWFuZHMgYXJlIGN1cnJlbnRseSBub3QKKyAgICAgIHN1cHBvcnRlZCBmb3Ig cmVwbGljYXRpb24uIEdsb2JhbCBjb21tYW5kcyBjYW4gYmUgZXhlY3V0ZWQgYXQgYW55CisgICAg ICBkYXRhYmFzZSwgaW5jbHVkZSBST0xFIHN0YXRlbWVudHMsIERhdGFiYXNlIHN0YXRlbWVudHMs IFRhYmxlU3BhY2UKKyAgICAgIHN0YXRlbWVudHMgYW5kIHNvbWUgb2YgdGhlIEdyYW50U3RtdC9S ZXZva2VTdG10IGlmIHRoZSB0YXJnZXQgb2JqZWN0IGlzIGEKKyAgICAgIGdsb2JhbCBvYmplY3Qu IFRlbXBvcmFyeSBhbmQgdW5sb2dnZWQgdGFibGUgd2lsbCBub3QgYmUgcmVwbGljYXRlZC4gVXNl cgorICAgICAgc2hvdWxkIHRha2UgY2FyZSB3aGVuIGNyZWF0aW5nIHRoZXNlIG9iamVjdHMgYXMg dGhlc2Ugb2JqZWN0cyBtaWdodCBiZQorICAgICAgcmVxdWlyZWQgYnkgdGhlIG9iamVjdHMgdGhh dCBhcmUgcmVwbGljYXRlZCAoZm9yIGV4YW1wbGUgY3JlYXRpb24gb2YKKyAgICAgIHRhYmxlcyB0 aGF0IG1pZ2h0IHJlZmVyIHRvIGFuIHVzZXItY3JlYXRlZCB0YWJsZXNwYWNlIHdpbGwgZmFpbCBp biB0aGUKKyAgICAgIHN1YnNjcmliZXIgaWYgdGhlIHVzZXIgY3JlYXRlZCB0YWJsZXNwYWNlcyBk byBub3QgZXhpc3Qgb24gdGhlCisgICAgICBzdWJzY3JpYmVyKS4KKyAgICA8L3BhcmE+CisgIDwv c2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcmVwbGljYXRpb24tZGRsLWRlcGFyc2VyIj4KKyAg ICA8dGl0bGU+RERMIERlcGFyc2VyPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBEREwg ZGVwYXJzZXIgdXRpbGl0eSBpcyBpbnZva2VkIGR1cmluZyB0aGUgcmVwbGljYXRpb24gb2YgRERM cy4gVGhlIERETAorICAgICAgZGVwYXJzZXIgaXMgY2FwYWJsZSBvZiBjb252ZXJ0aW5nIGEgRERM IGNvbW1hbmQgaW50byBmb3JtYXR0ZWQgSlNPTiBibG9iLCB3aXRoCisgICAgICB0aGUgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIHJlY29uc3RydWN0IHRoZSBEREwgY29tbWFuZHMgYXQgdGhlIGRl c3RpbmF0aW9uLiBUaGUKKyAgICAgIGJlbmVmaXRzIG9mIHVzaW5nIHRoZSBkZXBhcnNlciBvdXRw dXQgY29tcGFyZWQgdG8gdGhlIG9yaWdpbmFsIGNvbW1hbmQgc3RyaW5nCisgICAgICBpbmNsdWRl OgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxw YXJhPgorICAgICAgICAgICAgRXZlcnkgZGF0YWJhc2Ugb2JqZWN0IGluIHRoZSBkZXBhcnNlZCBv dXRwdXQgaXMgc2NoZW1hLXF1YWxpZmllZCwgc28gdGhhdAorICAgICAgICAgICAgdGhlcmUgYXJl IG5vIGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3BhdGggY2hhbmdlcy4K KyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHN0cnVjdHVyZWQgSlNPTiBh bmQgdGhlIGZvcm1hdHRlZCBvdXRwdXQgbWFrZXMgaXQgcG9zc2libGUgZm9yCisgICAgICAgICAg ICBtYWNoaW5lIGVkaXRpbmcuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgc3Vic2NyaWJlciBp cyBvbiBhIGRpZmZlcmVudAorICAgICAgICAgICAgUEcgdmVyc2lvbiBhbmQgaGFzIGNlcnRhaW4g RERMIHN5bnRheCBkaWZmZXJlbmNlcyB3aGljaCBuZWVkIHRvIGJlCisgICAgICAgICAgICByZXNv bHZlZCBiZWZvcmUgYXBwbHkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVt PgorCisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAg ICAgIFRoZSBEREwgZGVwYXJzZXIgZXhwb3NlcyB0d28gU1FMIGZ1bmN0aW9uczoKKyAgICAgIDxp dGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgIGRkbF9kZXBhcnNlX3RvX2pzb246IGdpdmVuIGEgQ29sbGVjdGVkQ29tbWFuZCBmcm9t IGV2ZW50IHRyaWdnZXIsCisgICAgICAgICAgICByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlv biBvZiBpdC4gVGhlIGNvbW1hbmQgaXMgZXhwYW5kZWQgZnVsbHkKKyAgICAgICAgICAgIHNvIHRo YXQgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIGV2ZW4gaW4gdGhlIGZhY2Ugb2Ygc2VhcmNoX3Bh dGgKKyAgICAgICAgICAgIGNoYW5nZXMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgIDxpdGVtaXplZGxpc3Q+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIGRkbF9kZXBh cnNlX2V4cGFuZF9jb21tYW5kOiBFeHBhbmQgSlNPTiBmb3JtYXQgRERMIGdlbmVyYXRlZCBieQor ICAgICAgICAgICAgZGRsX2RlcGFyc2VfdG9fanNvbiB0byBhIHBsYWluIERETCBjb21tYW5kLgor ICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1yZXBsaWNh dGlvbi1kZGwtcmVzdHJpY3Rpb25zIj4KKyAgICA8dGl0bGU+RERMIFJlcGxpY2F0aW9uIFJlc3Ry aWN0aW9uczwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBEREwgcmVwbGljYXRpb24gY3VycmVu dGx5IGhhcyB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucy4KKyAgICAgIDxpdGVtaXplZGxpc3Q+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxjb21t YW5kPkFMVEVSIFRBQkxFPC9jb21tYW5kPiBjb21tYW5kIHdoaWNoIHVzZXMgdm9sYXRpbGUgZnVu Y3Rpb25zCisgICAgICAgICAgICBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgICA8L3BhcmE+Cisg ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIEluIDxsaXRlcmFsPkFERCBDT0xVTU4gLi4uIERFRkFVTFQ8L2xpdGVyYWw+ IGNsYXVzZSBhbmQKKyAgICAgICAgICAgIDxsaXRlcmFsPkFMVEVSIENPTFVNTiBUWVBFPC9saXRl cmFsPiBjbGF1c2Ugb2YgPGNvbW1hbmQ+QUxURVIKKyAgICAgICAgICAgIFRBQkxFPC9jb21tYW5k PiBjb21tYW5kLCB0aGUgZnVuY3Rpb25zIGFuZCBvcGVyYXRvcnMgdXNlZCBpbgorICAgICAgICAg ICAgZXhwcmVzc2lvbiBtdXN0IGJlIGltbXV0YWJsZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisKKyAg ICA8cGFyYT4KKyAgICAgIFRoZSBsYXR0ZXIgY2FzZSBjYW4gYmUgd29ya2VkIGFyb3VuZC4KKyAg ICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4K KyAgICAgICAgICAgIFRvIGFkZCBhIGNvbHVtbiB3aXRoIGEgbm9uLWltbXV0YWJsZSBkZWZhdWx0 IHZhbHVlLCBmaXJzdCBhZGQgYQorICAgICAgICAgICAgY29sdW1uIHdpdGhvdXQgYSBkZWZhdWx0 IHZhbHVlLCB0aGVuIHNldCBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBuZXcKKyAgICAgICAgICAg IGNvbHVtbiwgYW5kIHVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIG5ldyBjb2x1bW4gZm9yIGV4aXN0 aW5nIHJvd3MuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUbyBjaGFuZ2UgdGhl IGNvbHVtbiB0eXBlLCBmaXJzdCBhZGQgYSBuZXcgY29sdW1uIG9mIHRoZSBkZXNpcmVkCisgICAg ICAgICAgICB0eXBlLCB0aGVuIHVwZGF0ZSB0aGUgbmV3IGNvbHVtbiB2YWx1ZSB3aXRoIHRoZSBv bGQgY29sdW1uIHZhbHVlLAorICAgICAgICAgICAgYW5kIGZpbm5hbGx5IGRyb3AgdGhlIG9sZCBj b2x1bW4gYW5kIHJlbmFtZSB0aGUgbmV3IGNvbHVtbiB0byB0aGUKKyAgICAgICAgICAgIG9sZCBj b2x1bW4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9p dGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorICA8L3NlY3QyPgorCisgPC9zZWN0MT4KKwogIDxz ZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1jb25mbGljdHMiPgogICA8dGl0bGU+Q29uZmxp Y3RzPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01h a2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCmluZGV4IGNkOTVl ZWMzN2YuLmZkNjdmMDQ0ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUKQEAg LTE4LDYgKzE4LDcgQEAgT0JKUyA9IFwKIAlnaXN0ZGVzYy5vIFwKIAloYXNoZGVzYy5vIFwKIAlo ZWFwZGVzYy5vIFwKKwlsb2dpY2FsZGRsbXNnZGVzYy5vIFwKIAlsb2dpY2FsbXNnZGVzYy5vIFwK IAlteGFjdGRlc2MubyBcCiAJbmJ0ZGVzYy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2xvZ2ljYWxkZGxtc2dkZXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNWY1OGUwZmU1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCkBAIC0wLDAgKzEsNTIgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIGxvZ2ljYWxkZGxtc2dkZXNjLmMKKyAqCSAgcm1nciBkZXNjcmlw dG9yIHJvdXRpbmVzIGZvciByZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYworICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxNS0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2MuYworICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInJlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCIKKwordm9pZAorbG9naWNhbGRkbG1zZ19kZXNjKFN0cmluZ0luZm8gYnVm LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKK3sKKwljaGFyCSAgICpyZWMgPSBYTG9nUmVjR2V0 RGF0YShyZWNvcmQpOworCXVpbnQ4CQlpbmZvID0gWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIH5Y TFJfSU5GT19NQVNLOworCisJaWYgKGluZm8gPT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQor CXsKKwkJeGxfbG9naWNhbF9kZGxfbWVzc2FnZSAqeGxyZWMgPSAoeGxfbG9naWNhbF9kZGxfbWVz c2FnZSAqKSByZWM7CisJCWNoYXIJICAgKnByZWZpeCA9IHhscmVjLT5tZXNzYWdlOworCQljaGFy CSAgICptZXNzYWdlID0geGxyZWMtPm1lc3NhZ2UgKyB4bHJlYy0+cHJlZml4X3NpemU7CisJCWNo YXIJICAgKnNlcCA9ICIiOworCisJCUFzc2VydChwcmVmaXhbeGxyZWMtPnByZWZpeF9zaXplIC0g MV0gPT0gJ1wwJyk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJwcmVmaXggXCIlc1wiOyBw YXlsb2FkICglenUgYnl0ZXMpOiAiLAorCQkJCQkJIHByZWZpeCwgeGxyZWMtPm1lc3NhZ2Vfc2l6 ZSk7CisJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAicmVsaWQgJXUgY21kdHlwZSAldSIsIHhscmVj LT5yZWxpZCwgeGxyZWMtPmNtZHR5cGUpOworCQkvKiBXcml0ZSBtZXNzYWdlIHBheWxvYWQgYXMg YSBzZXJpZXMgb2YgaGV4IGJ5dGVzICovCisJCWZvciAoaW50IGNudCA9IDA7IGNudCA8IHhscmVj LT5tZXNzYWdlX3NpemU7IGNudCsrKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVz JTAyWCIsIHNlcCwgKHVuc2lnbmVkIGNoYXIpIG1lc3NhZ2VbY250XSk7CisJCQlzZXAgPSAiICI7 CisJCX0KKwl9Cit9CisKK2NvbnN0IGNoYXIgKgorbG9naWNhbGRkbG1zZ19pZGVudGlmeSh1aW50 OCBpbmZvKQoreworCWlmICgoaW5mbyAmIH5YTFJfSU5GT19NQVNLKSA9PSBYTE9HX0xPR0lDQUxf RERMX01FU1NBR0UpCisJCXJldHVybiAiRERMIjsKKworCXJldHVybiBOVUxMOworfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3JtZ3JkZXNjL21lc29uLmJ1aWxkCmluZGV4IGY3NmU4N2UyZDcuLjYxNGZkN2Mx YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbWVzb24uYnVpbGQKQEAgLTExLDYgKzEx LDcgQEAgcm1ncl9kZXNjX3NvdXJjZXMgPSBmaWxlcygKICAgJ2dpc3RkZXNjLmMnLAogICAnaGFz aGRlc2MuYycsCiAgICdoZWFwZGVzYy5jJywKKyAgJ2xvZ2ljYWxkZGxtc2dkZXNjLmMnLAogICAn bG9naWNhbG1zZ2Rlc2MuYycsCiAgICdteGFjdGRlc2MuYycsCiAgICduYnRkZXNjLmMnLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vcm1nci5jCmluZGV4IDdkNjdlZGE1ZjcuLjY3OGU4MWFlMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJmbWdy LmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNv ZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vb3JpZ2luLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggYzQ4 OGI2MzcwYi4uZDhhNTk0MDE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpA QCAtMTAyOCw2ICsxMDI4LDcgQEAgR2V0UHVibGljYXRpb24oT2lkIHB1YmlkKQogCXB1Yi0+cHVi YWN0aW9ucy5wdWJ1cGRhdGUgPSBwdWJmb3JtLT5wdWJ1cGRhdGU7CiAJcHViLT5wdWJhY3Rpb25z LnB1YmRlbGV0ZSA9IHB1YmZvcm0tPnB1YmRlbGV0ZTsKIAlwdWItPnB1YmFjdGlvbnMucHVidHJ1 bmNhdGUgPSBwdWJmb3JtLT5wdWJ0cnVuY2F0ZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRsX3Rh YmxlID0gcHViZm9ybS0+cHViZGRsX3RhYmxlOwogCXB1Yi0+cHVidmlhcm9vdCA9IHB1YmZvcm0t PnB1YnZpYXJvb3Q7CiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmlu ZGV4IGU5NWRjMzFiZGUuLjIzNDM1Yzk5MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FsdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtMzA4LDYg KzMwOCwyMyBAQCBBbHRlck9iamVjdFJlbmFtZV9pbnRlcm5hbChSZWxhdGlvbiByZWwsIE9pZCBv YmplY3RJZCwgY29uc3QgY2hhciAqbmV3X25hbWUpCiAJCS8qIFdha2UgdXAgcmVsYXRlZCByZXBs aWNhdGlvbiB3b3JrZXJzIHRvIGhhbmRsZSB0aGlzIGNoYW5nZSBxdWlja2x5ICovCiAJCUxvZ2lj YWxSZXBXb3JrZXJzV2FrZXVwQXRDb21taXQob2JqZWN0SWQpOwogCX0KKwllbHNlIGlmIChjbGFz c0lkID09IEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQpCisJeworCQlGb3JtX3BnX2V2ZW50X3RyaWdn ZXIgZXZ0Rm9ybSA9IChGb3JtX3BnX2V2ZW50X3RyaWdnZXIpIEdFVFNUUlVDVChvbGR0dXApOwor CisJCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czEoRVZFTlRUUklHR0VSTkFNRSwgQ1N0cmluZ0dl dERhdHVtKG5ld19uYW1lKSkpCisJCQlyZXBvcnRfbmFtZV9jb25mbGljdChjbGFzc0lkLCBuZXdf bmFtZSk7CisKKwkJLyoKKwkJICogRXZlbnQgdHJpZ2dlcnMgY3JlYXRlZCBpbnRlcm5hbGx5IGFy ZSBub3QgYWxsb3dlZCB0byBiZSBhbHRlcmVkIGJ5CisJCSAqIHVzZXIuCisJCSAqLworCQlpZiAo ZXZ0Rm9ybS0+ZXZ0aXNpbnRlcm5hbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCSBlcnJtc2coInBlcm1pc3Np b24gZGVuaWVkOiBcIiVzXCIgaXMgYSBzeXN0ZW0gZXZlbnQgdHJpZ2dlciIsCisJCQkJCQkJTmFt ZVN0cihldnRGb3JtLT5ldnRuYW1lKSkpKTsKKwl9CiAJZWxzZSBpZiAobmFtZUNhY2hlSWQgPj0g MCkKIAl7CiAJCWlmIChPaWRJc1ZhbGlkKG5hbWVzcGFjZUlkKSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2RkbGRlcGFyc2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RkbGRl cGFyc2UuYwppbmRleCA3ZjhlNDE2ZDZhLi45YTEyYTQ5MDA1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9kZGxkZXBhcnNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGRs ZGVwYXJzZS5jCkBAIC02Niw2ICs2NiwyNiBAQAogLyogRXN0aW1hdGVkIGxlbmd0aCBvZiB0aGUg Z2VuZXJhdGVkIGpzb25iIHN0cmluZyAqLwogI2RlZmluZSBKU09OQl9FU1RJTUFURURfTEVOIDEy OAogCisvKgorICogTWFyayB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyBmb3IgYW4gZXhwcmVzc2lv biBpbiB0aGUgY29tbWFuZC4KKyAqLworc3RhdGljIHZvaWQKK21hcmtfZnVuY3Rpb25fdm9sYXRp bGUoZGRsX2RlcGFyc2VfY29udGV4dCAqIGNvbnRleHQsIE5vZGUgKmV4cHIpCit7CisJaWYgKGNv bnRleHQtPm1heF92b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX1ZPTEFUSUxFKQorCQlyZXR1cm47 CisKKwlpZiAoY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoZXhwcikpCisJeworCQljb250ZXh0 LT5tYXhfdm9sYXRpbGl0eSA9IFBST1ZPTEFUSUxFX1ZPTEFUSUxFOworCQlyZXR1cm47CisJfQor CisJaWYgKGNvbnRleHQtPm1heF92b2xhdGlsaXR5ID09IFBST1ZPTEFUSUxFX0lNTVVUQUJMRSAm JgorCQljb250YWluX211dGFibGVfZnVuY3Rpb25zKGV4cHIpKQorCQljb250ZXh0LT5tYXhfdm9s YXRpbGl0eSA9IFBST1ZPTEFUSUxFX1NUQUJMRTsKK30KKwogLyoKICAqIFJldHVybiB0aGUgc3Ry aW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBSRUxQRVJTSVNURU5DRSB2YWx1ZS4KICAq LwpAQCAtOTQsNyArMTE0LDggQEAgZ2V0X3BlcnNpc3RlbmNlX3N0cihjaGFyIHBlcnNpc3RlbmNl KQogICogcGFzc2VkIGF0dHJpYnV0ZSBoYXMgYSBkZWZhdWx0IHZhbHVlLgogICovCiBzdGF0aWMg Y2hhciAqCi1SZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVy IGF0dG5vLCBMaXN0ICpkcGNvbnRleHQpCitSZWxhdGlvbkdldENvbHVtbkRlZmF1bHQoUmVsYXRp b24gcmVsLCBBdHRyTnVtYmVyIGF0dG5vLCBMaXN0ICpkcGNvbnRleHQsCisJCQkJCQkgTm9kZSAq KmV4cHIpCiB7CiAJTm9kZQkgICAqZGVmdmFsOwogCWNoYXIJICAgKmRlZnN0cjsKQEAgLTEwNCw2 ICsxMjUsMTAgQEAgUmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51 bWJlciBhdHRubywgTGlzdCAqZHBjb250ZXh0KQogCiAJZGVmc3RyID0gZGVwYXJzZV9leHByZXNz aW9uKGRlZnZhbCwgZHBjb250ZXh0LCBmYWxzZSwgZmFsc2UpOwogCisJLyogQ29sbGVjdCB0aGUg ZXhwcmVzc2lvbiBmb3IgbGF0ZXIgcmVwbGljYXRpb24gc2FmZXR5IGNoZWNrcyAqLworCWlmIChl eHByKQorCQkqZXhwciA9IGRlZnZhbDsKKwogCXJldHVybiBkZWZzdHI7CiB9CiAKQEAgLTc3Miw3 ICs3OTcsNyBAQCBkZXBhcnNlX0NvbHVtbklkZW50aXR5X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRl ICpzdGF0ZSwgY2hhciAqcGFyZW50S2V5LAogc3RhdGljIHZvaWQKIGRlcGFyc2VfQ29sdW1uRGVm X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJ CQkgIExpc3QgKmRwY29udGV4dCwgYm9vbCBjb21wb3NpdGUsIENvbHVtbkRlZiAqY29sZGVmLAot CQkJCQkJICBib29sIGlzX2FsdGVyKQorCQkJCQkJICBib29sIGlzX2FsdGVyLCBOb2RlICoqZXhw cikKIHsKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCUhlYXBU dXBsZQlhdHRyVHVwOwpAQCAtODk4LDggKzkyMyw3IEBAIGRlcGFyc2VfQ29sdW1uRGVmX3RvSnNv bmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAJCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZmbXRTdHIsICIgJXtkZWZhdWx0fXMiKTsKIAogCQkJZGVmc3RyID0g UmVsYXRpb25HZXRDb2x1bW5EZWZhdWx0KHJlbGF0aW9uLCBhdHRyRm9ybS0+YXR0bnVtLAotCQkJ CQkJCQkJCQkgIGRwY29udGV4dCk7Ci0KKwkJCQkJCQkJCQkJICBkcGNvbnRleHQsIGV4cHIpOwog CQkJaW5zZXJ0X2pzb25iX2tleShzdGF0ZSwgImRlZmF1bHQiKTsKIAkJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAJCQluZXdfanNvbmJfVkEoc3RhdGUs IDIsCkBAIC05MzgsOCArOTYyLDcgQEAgZGVwYXJzZV9Db2x1bW5EZWZfdG9Kc29uYihKc29uYlBh cnNlU3RhdGUgKnN0YXRlLCBSZWxhdGlvbiByZWxhdGlvbiwKIAogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmZm10U3RyLCAiICV7Z2VuZXJhdGVkX2NvbHVtbn1zIik7CiAJCQlkZWZzdHIgPSBS ZWxhdGlvbkdldENvbHVtbkRlZmF1bHQocmVsYXRpb24sIGF0dHJGb3JtLT5hdHRudW0sCi0JCQkJ CQkJCQkJCSAgZHBjb250ZXh0KTsKLQorCQkJCQkJCQkJCQkgIGRwY29udGV4dCwgZXhwcik7CiAJ CQlpbnNlcnRfanNvbmJfa2V5KHN0YXRlLCAiZ2VuZXJhdGVkX2NvbHVtbiIpOwogCQkJcHVzaEpz b25iVmFsdWUoJnN0YXRlLCBXSkJfQkVHSU5fT0JKRUNULCBOVUxMKTsKIAkJCW5ld19qc29uYl9W QShzdGF0ZSwgMiwKQEAgLTEwNzUsOCArMTA5OCw3IEBAIGRlcGFyc2VfQ29sdW1uRGVmX3R5cGVk X3RvSnNvbmIoSnNvbmJQYXJzZVN0YXRlICpzdGF0ZSwgUmVsYXRpb24gcmVsYXRpb24sCiAKIAkJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZygmZm10U3RyLCAiICV7ZGVmYXVsdH1zIik7CiAJCWRlZnN0 ciA9IFJlbGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWxhdGlvbiwgYXR0ckZvcm0tPmF0dG51bSwK LQkJCQkJCQkJCQkgIGRwY29udGV4dCk7Ci0KKwkJCQkJCQkJCQkgIGRwY29udGV4dCwgTlVMTCk7 CiAJCWluc2VydF9qc29uYl9rZXkoc3RhdGUsICJkZWZhdWx0Iik7CiAJCXB1c2hKc29uYlZhbHVl KCZzdGF0ZSwgV0pCX0JFR0lOX09CSkVDVCwgTlVMTCk7CiAJCW5ld19qc29uYl9WQShzdGF0ZSwg MiwKQEAgLTEyNDgsNyArMTI3MCw3IEBAIGRlcGFyc2VfVGFibGVFbGVtc19Ub0pzb25iKEpzb25i UGFyc2VTdGF0ZSAqc3RhdGUsIFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQllbHNlCiAJCQkJCQlk ZXBhcnNlX0NvbHVtbkRlZl90b0pzb25iKHN0YXRlLCByZWxhdGlvbiwgZHBjb250ZXh0LAogCQkJ CQkJCQkJCQkJICBjb21wb3NpdGUsIChDb2x1bW5EZWYgKikgZWx0LAotCQkJCQkJCQkJCQkJICBm YWxzZSk7CisJCQkJCQkJCQkJCQkgIGZhbHNlLCBOVUxMKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJ CQljYXNlIFRfQ29uc3RyYWludDoKQEAgLTE5MjksMTIgKzE5NTEsMTMgQEAgZGVwYXJzZV9kcm9w X3RhYmxlKGNvbnN0IGNoYXIgKm9iamlkZW50aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAog ICogQUxURVIgJXtvYmp0eXBlfXMgJXtvbmx5fXMgJXtpZGVudGl0eX1EICV7c3ViY21kczosIH1z CiAgKi8KIHN0YXRpYyBKc29uYiAqCi1kZXBhcnNlX0FsdGVyVGFibGVTdG10KENvbGxlY3RlZENv bW1hbmQgKmNtZCkKK2RlcGFyc2VfQWx0ZXJUYWJsZVN0bXQoQ29sbGVjdGVkQ29tbWFuZCAqY21k LCBkZGxfZGVwYXJzZV9jb250ZXh0ICogY29udGV4dCkKIHsKIAlMaXN0CSAgICpkcGNvbnRleHQ7 CiAJUmVsYXRpb24JcmVsOwogCUxpc3RDZWxsICAgKmNlbGw7CiAJY29uc3QgY2hhciAqcmVsdHlw ZTsKKwlOb2RlCSAgICpleHByID0gTlVMTDsKIAlPaWQJCQlyZWxJZCA9IGNtZC0+ZC5hbHRlclRh YmxlLm9iamVjdElkOwogCUFsdGVyVGFibGVTdG10ICpzdG10ID0gTlVMTDsKIAlTdHJpbmdJbmZv RGF0YSBmbXRTdHI7CkBAIC0yMDYxLDcgKzIwODQsOCBAQCBkZXBhcnNlX0FsdGVyVGFibGVTdG10 KENvbGxlY3RlZENvbW1hbmQgKmNtZCkKIAogCQkJCQlkZXBhcnNlX0NvbHVtbkRlZl90b0pzb25i KHN0YXRlLCByZWwsIGRwY29udGV4dCwKIAkJCQkJCQkJCQkJICBmYWxzZSwgKENvbHVtbkRlZiAq KSBzdWJjbWQtPmRlZiwKLQkJCQkJCQkJCQkJICB0cnVlKTsKKwkJCQkJCQkJCQkJICB0cnVlLCAm ZXhwcik7CisJCQkJCW1hcmtfZnVuY3Rpb25fdm9sYXRpbGUoY29udGV4dCwgZXhwcik7CiAKIAkJ CQkJLyogV2UgaGF2ZSBmdWxsIGZtdCBieSBub3csIHNvIGFkZCBqc29uYiBlbGVtZW50IGZvciB0 aGF0ICovCiAJCQkJCW5ld19qc29uYl9WQShzdGF0ZSwgMSwgImZtdCIsIGpidlN0cmluZywgZm10 U3ViLmRhdGEpOwpAQCAtMjE2NCw3ICsyMTg4LDcgQEAgZGVwYXJzZV9BbHRlclRhYmxlU3RtdChD b2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQkJCQkJCSAiY29sdW1uIiwgamJ2U3RyaW5nLCBzdWJj bWQtPm5hbWUsCiAJCQkJCQkJCSAiZGVmaW5pdGlvbiIsIGpidlN0cmluZywKIAkJCQkJCQkJIFJl bGF0aW9uR2V0Q29sdW1uRGVmYXVsdChyZWwsIGF0dG5vLAotCQkJCQkJCQkJCQkJCQkgIGRwY29u dGV4dF9yZWwpKTsKKwkJCQkJCQkJCQkJCQkJICBkcGNvbnRleHRfcmVsLCBOVUxMKSk7CiAKIAkJ CQkJcHVzaEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CiAJCQkJCVJl bGVhc2VTeXNDYWNoZShhdHRydHVwKTsKQEAgLTI0MDAsMTIgKzI0MjQsNDIgQEAgZGVwYXJzZV9B bHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQkJewogCQkJCQkvKiBYWFgg bmVlZCB0byBzZXQgdGhlICJyZWN1cnNlIiBiaXQgc29tZXdoZXJlPyAqLwogCQkJCQlPaWQJCQlj b25zdHJPaWQgPSBzdWItPmFkZHJlc3Mub2JqZWN0SWQ7CisJCQkJCWJvb2wJCWlzbnVsbDsKKwkJ CQkJSGVhcFR1cGxlCXR1cDsKKwkJCQkJRGF0dW0JCXZhbDsKKwkJCQkJQ29uc3RyYWludCAqY29u c3RyOwogCiAJCQkJCS8qIFNraXAgYWRkaW5nIGNvbnN0cmFpbnQgZm9yIGluaGVyaXRzIHRhYmxl IHN1YiBjb21tYW5kICovCiAJCQkJCWlmICghT2lkSXNWYWxpZChjb25zdHJPaWQpKQogCQkJCQkJ Y29udGludWU7CiAKIAkJCQkJQXNzZXJ0KElzQShzdWJjbWQtPmRlZiwgQ29uc3RyYWludCkpOwor CQkJCQljb25zdHIgPSBjYXN0Tm9kZShDb25zdHJhaW50LCBzdWJjbWQtPmRlZik7CisKKwkJCQkJ aWYgKCFjb25zdHItPnNraXBfdmFsaWRhdGlvbikKKwkJCQkJeworCQkJCQkJdHVwID0gU2VhcmNo U3lzQ2FjaGUxKENPTlNUUk9JRCwKKwkJCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGNvbnN0 ck9pZCkpOworCisJCQkJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQkJCQkJeworCQkJ CQkJCWNoYXIJICAgKmNvbmJpbjsKKworCQkJCQkJCS8qIEZldGNoIGNvbnN0cmFpbnQgZXhwcmVz c2lvbiBpbiBwYXJzZXRyZWUgZm9ybSAqLworCQkJCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0cihD T05TVFJPSUQsIHR1cCwKKwkJCQkJCQkJCQkJCSAgQW51bV9wZ19jb25zdHJhaW50X2NvbmJpbiwK KwkJCQkJCQkJCQkJCSAgJmlzbnVsbCk7CisKKwkJCQkJCQlpZiAoIWlzbnVsbCkKKwkJCQkJCQl7 CisJCQkJCQkJCWNvbmJpbiA9IFRleHREYXR1bUdldENTdHJpbmcodmFsKTsKKwkJCQkJCQkJZXhw ciA9IHN0cmluZ1RvTm9kZShjb25iaW4pOworCQkJCQkJCQltYXJrX2Z1bmN0aW9uX3ZvbGF0aWxl KGNvbnRleHQsIGV4cHIpOworCQkJCQkJCX0KKworCQkJCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXAp OworCQkJCQkJfQorCQkJCQl9CiAKIAkJCQkJLyoKIAkJCQkJICogU3ludGF4OiBBREQgQ09OU1RS QUlOVCAle25hbWV9SSAle2RlZmluaXRpb259cwpAQCAtMjU2MCw2ICsyNjE0LDggQEAgZGVwYXJz ZV9BbHRlclRhYmxlU3RtdChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJCQkJCQkJCQkgImV4cHJl c3Npb24iLCBqYnZTdHJpbmcsCiAJCQkJCQkJCQkgc3ViLT51c2luZ2V4cHIpOwogCQkJCQkJcHVz aEpzb25iVmFsdWUoJnN0YXRlLCBXSkJfRU5EX09CSkVDVCwgTlVMTCk7CisJCQkJCQltYXJrX2Z1 bmN0aW9uX3ZvbGF0aWxlKGNvbnRleHQsIGRlZi0+Y29va2VkX2RlZmF1bHQpOworCiAJCQkJCX0K IAogCQkJCQkvKiBXZSBoYXZlIGZ1bGwgZm10IGJ5IG5vdywgc28gYWRkIGpzb25iIGVsZW1lbnQg Zm9yIHRoYXQgKi8KQEAgLTM2NDgsNyArMzcwNCw3IEBAIGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQo Q29sbGVjdGVkQ29tbWFuZCAqY21kKQogICogV29ya2hvcnNlIHRvIGRlcGFyc2UgYSBDb2xsZWN0 ZWRDb21tYW5kLgogICovCiBjaGFyICoKLWRlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3Rl ZENvbW1hbmQgKmNtZCkKK2RlcGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQg KmNtZCwgZGRsX2RlcGFyc2VfY29udGV4dCAqIGNvbnRleHQpCiB7CiAJT3ZlcnJpZGVTZWFyY2hQ YXRoICpvdmVycmlkZVBhdGg7CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CkBAIC0zNjkwLDcgKzM3 NDYsNyBAQCBkZXBhcnNlX3V0aWxpdHlfY29tbWFuZChDb2xsZWN0ZWRDb21tYW5kICpjbWQpCiAJ CQlqc29uYiA9IGRlcGFyc2Vfc2ltcGxlX2NvbW1hbmQoY21kKTsKIAkJCWJyZWFrOwogCQljYXNl IFNDVF9BbHRlclRhYmxlOgotCQkJanNvbmIgPSBkZXBhcnNlX0FsdGVyVGFibGVTdG10KGNtZCk7 CisJCQlqc29uYiA9IGRlcGFyc2VfQWx0ZXJUYWJsZVN0bXQoY21kLCBjb250ZXh0KTsKIAkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZGVwYXJzZSBub2Rl IHR5cGUgJWQiLCBjbWQtPnR5cGUpOwpAQCAtMzcyMiw4ICszNzc4LDE1IEBAIGRkbF9kZXBhcnNl X3RvX2pzb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlDb2xsZWN0ZWRDb21tYW5kICpjbWQgPSAo Q29sbGVjdGVkQ29tbWFuZCAqKSBQR19HRVRBUkdfUE9JTlRFUigwKTsKIAljaGFyCSAgICpjb21t YW5kOworCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKworCS8qCisJICogSW5pdGlhbGl6 ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFCTEUsIHdoaWNo IGlzCisJICogdGhlIG1pbmltdW0gdm9sYXRpbGl0eSBsZXZlbC4KKwkgKi8KKwljb250ZXh0Lm1h eF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1NVVRBQkxFOwogCi0JY29tbWFuZCA9IGRlcGFy c2VfdXRpbGl0eV9jb21tYW5kKGNtZCk7CisJY29tbWFuZCA9IGRlcGFyc2VfdXRpbGl0eV9jb21t YW5kKGNtZCwgJmNvbnRleHQpOwogCiAJaWYgKGNvbW1hbmQpCiAJCVBHX1JFVFVSTl9URVhUX1Ao Y3N0cmluZ190b190ZXh0KGNvbW1hbmQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V2ZW50X3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIu YwppbmRleCA4YzJhNDk0ZGNiLi4xNWUyNDNjYTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRf dHJpZ2dlci5jCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyB2b2lkIEFsdGVyRXZlbnRUcmlnZ2Vy T3duZXJfaW50ZXJuYWwoUmVsYXRpb24gcmVsLAogc3RhdGljIHZvaWQgZXJyb3JfZHVwbGljYXRl X2ZpbHRlcl92YXJpYWJsZShjb25zdCBjaGFyICpkZWZuYW1lKTsKIHN0YXRpYyBEYXR1bSBmaWx0 ZXJfbGlzdF90b19hcnJheShMaXN0ICpmaWx0ZXJsaXN0KTsKIHN0YXRpYyBPaWQJaW5zZXJ0X2V2 ZW50X3RyaWdnZXJfdHVwbGUoY29uc3QgY2hhciAqdHJpZ25hbWUsIGNvbnN0IGNoYXIgKmV2ZW50 bmFtZSwKLQkJCQkJCQkJCSAgIE9pZCBldnRPd25lciwgT2lkIGZ1bmNvaWQsIExpc3QgKnRhZ2xp c3QpOworCQkJCQkJCQkJICAgT2lkIGV2dE93bmVyLCBPaWQgZnVuY29pZCwgTGlzdCAqdGFnbGlz dCwgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZV9kZGxfdGFncyhjb25z dCBjaGFyICpmaWx0ZXJ2YXIsIExpc3QgKnRhZ2xpc3QpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVf dGFibGVfcmV3cml0ZV90YWdzKGNvbnN0IGNoYXIgKmZpbHRlcnZhciwgTGlzdCAqdGFnbGlzdCk7 CiBzdGF0aWMgdm9pZCBFdmVudFRyaWdnZXJJbnZva2UoTGlzdCAqZm5fb2lkX2xpc3QsIEV2ZW50 VHJpZ2dlckRhdGEgKnRyaWdkYXRhKTsKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGNvbnN0IGNo YXIgKnN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpOwogICog Q3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIuCiAgKi8KIE9pZAotQ3JlYXRlRXZlbnRUcmlnZ2VyKENy ZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQpCitDcmVhdGVFdmVudFRyaWdnZXIoQ3JlYXRlRXZlbnRU cmlnU3RtdCAqc3RtdCwgYm9vbCBpc19pbnRlcm5hbCkKIHsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJ T2lkCQkJZnVuY29pZDsKQEAgLTkxLDEwICs5MSwxMCBAQCBDcmVhdGVFdmVudFRyaWdnZXIoQ3Jl YXRlRXZlbnRUcmlnU3RtdCAqc3RtdCkKIAkJCQkgZXJyaGludCgiTXVzdCBiZSBzdXBlcnVzZXIg dG8gY3JlYXRlIGFuIGV2ZW50IHRyaWdnZXIuIikpKTsKIAogCS8qIFZhbGlkYXRlIGV2ZW50IG5h bWUuICovCi0JaWYgKHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJkZGxfY29tbWFuZF9zdGFydCIp ICE9IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21tYW5kX2VuZCIpICE9 IDAgJiYKLQkJc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgInNxbF9kcm9wIikgIT0gMCAmJgotCQlz dHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFibGVfcmV3cml0ZSIpICE9IDApCisJaWYgKHN0cmNt cChzdG10LT5ldmVudG5hbWUsIFRSSUdfRERMX0NNRF9TVEFSVCkgIT0gMCAmJgorCQlzdHJjbXAo c3RtdC0+ZXZlbnRuYW1lLCBUUklHX0RETF9DTURfRU5EKSAhPSAwICYmCisJCXN0cmNtcChzdG10 LT5ldmVudG5hbWUsIFRSSUdfVEJMX0NNRF9EUk9QKSAhPSAwICYmCisJCXN0cmNtcChzdG10LT5l dmVudG5hbWUsIFRSSUdfVEJMX1JFV1JJVEUpICE9IDApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJtc2coInVucmVjb2duaXpl ZCBldmVudCBuYW1lIFwiJXNcIiIsCkBAIC0xMTgsMTIgKzExOCwxMiBAQCBDcmVhdGVFdmVudFRy aWdnZXIoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqc3RtdCkKIAl9CiAKIAkvKiBWYWxpZGF0ZSB0YWcg bGlzdCwgaWYgYW55LiAqLwotCWlmICgoc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21t YW5kX3N0YXJ0IikgPT0gMCB8fAotCQkgc3RyY21wKHN0bXQtPmV2ZW50bmFtZSwgImRkbF9jb21t YW5kX2VuZCIpID09IDAgfHwKLQkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUsICJzcWxfZHJvcCIp ID09IDApCisJaWYgKChzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklHX0RETF9DTURfU1RBUlQp ID09IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUsIFRSSUdfRERMX0NNRF9FTkQpID09 IDAgfHwKKwkJIHN0cmNtcChzdG10LT5ldmVudG5hbWUsIFRSSUdfVEJMX0NNRF9EUk9QKSA9PSAw KQogCQkmJiB0YWdzICE9IE5VTEwpCiAJCXZhbGlkYXRlX2RkbF90YWdzKCJ0YWciLCB0YWdzKTsK LQllbHNlIGlmIChzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCAidGFibGVfcmV3cml0ZSIpID09IDAK KwllbHNlIGlmIChzdHJjbXAoc3RtdC0+ZXZlbnRuYW1lLCBUUklHX1RCTF9SRVdSSVRFKSA9PSAw CiAJCQkgJiYgdGFncyAhPSBOVUxMKQogCQl2YWxpZGF0ZV90YWJsZV9yZXdyaXRlX3RhZ3MoInRh ZyIsIHRhZ3MpOwogCkBAIC0xNDksNyArMTQ5LDcgQEAgQ3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0 ZUV2ZW50VHJpZ1N0bXQgKnN0bXQpCiAKIAkvKiBJbnNlcnQgY2F0YWxvZyBlbnRyaWVzLiAqLwog CXJldHVybiBpbnNlcnRfZXZlbnRfdHJpZ2dlcl90dXBsZShzdG10LT50cmlnbmFtZSwgc3RtdC0+ ZXZlbnRuYW1lLAotCQkJCQkJCQkJICBldnRvd25lciwgZnVuY29pZCwgdGFncyk7CisJCQkJCQkJ CQkgIGV2dG93bmVyLCBmdW5jb2lkLCB0YWdzLCBpc19pbnRlcm5hbCk7CiB9CiAKIC8qCkBAIC0y MTgsNyArMjE4LDcgQEAgZXJyb3JfZHVwbGljYXRlX2ZpbHRlcl92YXJpYWJsZShjb25zdCBjaGFy ICpkZWZuYW1lKQogICovCiBzdGF0aWMgT2lkCiBpbnNlcnRfZXZlbnRfdHJpZ2dlcl90dXBsZShj b25zdCBjaGFyICp0cmlnbmFtZSwgY29uc3QgY2hhciAqZXZlbnRuYW1lLCBPaWQgZXZ0T3duZXIs Ci0JCQkJCQkgICBPaWQgZnVuY29pZCwgTGlzdCAqdGFnbGlzdCkKKwkJCQkJCSAgIE9pZCBmdW5j b2lkLCBMaXN0ICp0YWdsaXN0LCBib29sIGlzX2ludGVybmFsKQogewogCVJlbGF0aW9uCXRncmVs OwogCU9pZAkJCXRyaWdvaWQ7CkBAIC0yNDYsNiArMjQ2LDcgQEAgaW5zZXJ0X2V2ZW50X3RyaWdn ZXJfdHVwbGUoY29uc3QgY2hhciAqdHJpZ25hbWUsIGNvbnN0IGNoYXIgKmV2ZW50bmFtZSwgT2lk IGV2dE8KIAl2YWx1ZXNbQW51bV9wZ19ldmVudF90cmlnZ2VyX2V2dGZvaWQgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0oZnVuY29pZCk7CiAJdmFsdWVzW0FudW1fcGdfZXZlbnRfdHJpZ2dlcl9ldnRl bmFibGVkIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0oVFJJR0dFUl9GSVJFU19PTl9PUklHSU4pOwor CXZhbHVlc1tBbnVtX3BnX2V2ZW50X3RyaWdnZXJfZXZ0aXNpbnRlcm5hbCAtIDFdID0gQm9vbEdl dERhdHVtKGlzX2ludGVybmFsKTsKIAlpZiAodGFnbGlzdCA9PSBOSUwpCiAJCW51bGxzW0FudW1f cGdfZXZlbnRfdHJpZ2dlcl9ldnR0YWdzIC0gMV0gPSB0cnVlOwogCWVsc2UKQEAgLTUyNCw2ICs1 MjUsNyBAQCBFdmVudFRyaWdnZXJDb21tb25TZXR1cChOb2RlICpwYXJzZXRyZWUsCiAJTGlzdAkg ICAqY2FjaGVsaXN0OwogCUxpc3RDZWxsICAgKmxjOwogCUxpc3QJICAgKnJ1bmxpc3QgPSBOSUw7 CisJaW50CQkJcHViX2RlcGFyc2VfZnVuY19jbnQgPSAwOwogCiAJLyoKIAkgKiBXZSB3YW50IHRo ZSBsaXN0IG9mIGNvbW1hbmQgdGFncyBmb3Igd2hpY2ggdGhpcyBwcm9jZWR1cmUgaXMgYWN0dWFs bHkKQEAgLTU3Myw2ICs1NzUsMTIgQEAgRXZlbnRUcmlnZ2VyQ29tbW9uU2V0dXAoTm9kZSAqcGFy c2V0cmVlLAogCSAqIG9uY2Ugd2UgZG8gYW55dGhpbmcgYXQgYWxsIHRoYXQgdG91Y2hlcyB0aGUg Y2F0YWxvZ3MsIGFuIGludmFsaWRhdGlvbgogCSAqIG1pZ2h0IGxlYXZlIGNhY2hlbGlzdCBwb2lu dGluZyBhdCBnYXJiYWdlLCBzbyB3ZSBtdXN0IGRvIHRoaXMgYmVmb3JlIHdlCiAJICogY2FuIGRv IG11Y2ggZWxzZS4KKwkgKgorCSAqIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGV2ZW50IHRyaWdnZXJz IGNyZWF0ZWQgYXMgcGFydCBvZiBwdWJsaWNhdGlvbnMuCisJICogSWYgdGhlcmUgYXJlIG11bHRp cGxlIHB1YmxpY2F0aW9ucyB3aGljaCBwdWJsaXNoIGRkbHMsIG9ubHkgb25lIHNldCBvZiB0aGUK KwkgKiBldmVudCB0cmlnZ2VyIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGludm9rZWQuIFRoZSBkZGwg ZGVwYXJzZSBldmVudCB0cmlnZ2VycworCSAqIHdyaXRlIHRvIFdBTCwgc28gbm8gbmVlZCB0byBk dXBsaWNhdGUgaXQgYXMgYWxsIHdhbHNlbmRlcnMgd2lsbCByZWFkIHRoZSBzYW1lCisJICogV0FM LgogCSAqLwogCWZvcmVhY2gobGMsIGNhY2hlbGlzdCkKIAl7CkBAIC01ODAsOCArNTg4LDI2IEBA IEV2ZW50VHJpZ2dlckNvbW1vblNldHVwKE5vZGUgKnBhcnNldHJlZSwKIAogCQlpZiAoZmlsdGVy X2V2ZW50X3RyaWdnZXIodGFnLCBpdGVtKSkKIAkJewotCQkJLyogV2UgbXVzdCBwbGFuIHRvIGZp cmUgdGhpcyB0cmlnZ2VyLiAqLwotCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3QsIGl0 ZW0tPmZub2lkKTsKKwkJCXN0YXRpYyBjb25zdCBjaGFyICp0cmlnZ2VyX2Z1bmNfcHJlZml4ID0g InB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOworCQkJY2hhcgkJdHJpZ2dlcl9mdW5jX25hbWVbTkFN RURBVEFMRU5dOworCQkJT2lkCQkJcHViX2Z1bmNvaWQ7CisJCQlMaXN0IAkJKnB1Yl9mdW5jbmFt ZTsKKworCQkJLyogR2V0IGZ1bmN0aW9uIG9pZCBvZiB0aGUgcHVibGljYXRpb24ncyBkZGwgZGVw YXJzZSBldmVudCB0cmlnZ2VyICovCisJCQlzbnByaW50Zih0cmlnZ2VyX2Z1bmNfbmFtZSwgc2l6 ZW9mKHRyaWdnZXJfZnVuY19uYW1lKSwgdHJpZ2dlcl9mdW5jX3ByZWZpeCwKKwkJCQkJIGV2ZW50 c3RyKTsKKwkJCXB1Yl9mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKHRyaWdnZXJfZnVuY19uYW1l KTsKKwkJCXB1Yl9mdW5jb2lkID0gTG9va3VwRnVuY05hbWUocHViX2Z1bmNuYW1lLCAwLCBOVUxM LCB0cnVlKTsKKworCQkJaWYgKGl0ZW0tPmZub2lkID09IHB1Yl9mdW5jb2lkKQorCQkJeworCQkJ CS8qIE9ubHkgdGhlIGZpcnN0IGRkbCBkZXBhcnNlIGV2ZW50IHRyaWdnZXIgbmVlZHMgdG8gYmUg aW52b2tlZCAqLworCQkJCWlmIChwdWJfZGVwYXJzZV9mdW5jX2NudCsrID09IDApCisJCQkJCXJ1 bmxpc3QgPSBsYXBwZW5kX29pZChydW5saXN0LCBpdGVtLT5mbm9pZCk7CisJCQl9CisJCQllbHNl CisJCQkJcnVubGlzdCA9IGxhcHBlbmRfb2lkKHJ1bmxpc3QsIGl0ZW0tPmZub2lkKTsKKwogCQl9 CiAJfQogCkBAIC02MjcsNyArNjUzLDcgQEAgRXZlbnRUcmlnZ2VyRERMQ29tbWFuZFN0YXJ0KE5v ZGUgKnBhcnNldHJlZSkKIAogCXJ1bmxpc3QgPSBFdmVudFRyaWdnZXJDb21tb25TZXR1cChwYXJz ZXRyZWUsCiAJCQkJCQkJCQkgIEVWVF9ERExDb21tYW5kU3RhcnQsCi0JCQkJCQkJCQkgICJkZGxf Y29tbWFuZF9zdGFydCIsCisJCQkJCQkJCQkgIFRSSUdfRERMX0NNRF9TVEFSVCwKIAkJCQkJCQkJ CSAgJnRyaWdkYXRhKTsKIAlpZiAocnVubGlzdCA9PSBOSUwpCiAJCXJldHVybjsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKaW5kZXggZjRiYTU3MjY5Ny4uNzU3ZTg2OGEwNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTM4LDEwICszOCwxMiBA QAogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5oIgogI2luY2x1ZGUgImZ1bmNh cGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3Mu aCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vf Y2xhdXNlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAi dXRpbHMvYXJyYXkuaCIKQEAgLTg1LDE4ICs4NywyMSBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSAgYm9vbCAqcHVibGlzaF9naXZlbiwKIAkJ CQkJCSAgUHVibGljYXRpb25BY3Rpb25zICpwdWJhY3Rpb25zLAogCQkJCQkJICBib29sICpwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiwKLQkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QpCisJCQkJCQkgIGJvb2wgKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 LAorCQkJCQkJICBib29sICpkZGxfdHlwZV9naXZlbikKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAog CSpwdWJsaXNoX2dpdmVuID0gZmFsc2U7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dp dmVuID0gZmFsc2U7CisJKmRkbF90eXBlX2dpdmVuID0gZmFsc2U7CiAKIAkvKiBkZWZhdWx0cyAq LwogCXB1YmFjdGlvbnMtPnB1Ymluc2VydCA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHVidXBkYXRl ID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJkZWxldGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1 YnRydW5jYXRlID0gdHJ1ZTsKKwlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSBmYWxzZTsKIAkq cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMg Ki8KQEAgLTE1OCw2ICsxNjMsNDIgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4gPSB0cnVl OwogCQkJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7 CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZGRsIikgPT0gMCkKKwkJ eworCQkJY2hhcgkgICAqZGRsX3R5cGVzOworCQkJTGlzdAkgICAqZGRsX3R5cGVfbGlzdDsKKwkJ CUxpc3RDZWxsICAgKmxjMjsKKworCQkJaWYgKCpkZGxfdHlwZV9naXZlbikKKwkJCQllcnJvckNv bmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJLyoKKwkJCSAqIElmIGRkbCBv cHRpb24gd2FzIGdpdmVuIG9ubHkgdGhlIGV4cGxpY2l0bHkgbGlzdGVkIGRkbCB0eXBlcworCQkJ ICogc2hvdWxkIGJlIHB1Ymxpc2hlZC4KKwkJCSAqLworCQkJcHViYWN0aW9ucy0+cHViZGRsX3Rh YmxlID0gZmFsc2U7CisKKwkJCSpkZGxfdHlwZV9naXZlbiA9IHRydWU7CisJCQlkZGxfdHlwZXMg PSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCisJCQlpZiAoIVNwbGl0SWRlbnRpZmllclN0cmluZyhk ZGxfdHlwZXMsICcsJywgJmRkbF90eXBlX2xpc3QpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBs aXN0IHN5bnRheCBmb3IgXCJkZGxcIiBvcHRpb24iKSk7CisKKwkJCS8qIFByb2Nlc3MgdGhlIG9w dGlvbiBsaXN0LiAqLworCQkJZm9yZWFjaChsYzIsIGRkbF90eXBlX2xpc3QpCisJCQl7CisJCQkJ Y2hhcgkgICAqZGRsX29wdCA9IChjaGFyICopIGxmaXJzdChsYzIpOworCisJCQkJaWYgKHN0cmNt cChkZGxfb3B0LCAidGFibGUiKSA9PSAwKQorCQkJCQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUg PSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQllcnJtc2coInVucmVjb2duaXplZCBcImRkbFwi IHZhbHVlOiBcIiVzXCIiLCBkZGxfb3B0KSk7CisJCQl9CisJCX0KIAkJZWxzZQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNzI4LDYg Kzc2OSwxMzAgQEAgQ2hlY2tQdWJSZWxhdGlvbkNvbHVtbkxpc3QoY2hhciAqcHVibmFtZSwgTGlz dCAqdGFibGVzLAogCX0KIH0KIAorLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYW4g ZXZlbnQgdHJpZ2dlciBmb3IgRERMIHJlcGxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQ3Jl YXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcihjaGFyICpldmVudG5hbWUsIExpc3QgKmNvbW1hbmRz LCBPaWQgcHVib2lkKQoreworCUxpc3QJICAgKnRhZ3MgPSBOSUw7CisJTGlzdENlbGwgICAqbGM7 CisJT2lkCQkJdHJpZ2dlcl9pZDsKKwlPYmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7CisJT2JqZWN0 QWRkcmVzcyBwdWJhZGRyZXNzOworCUNyZWF0ZUV2ZW50VHJpZ1N0bXQgKmRkbF90cmlnZ2VyOwor CWNoYXIJCXRyaWdnZXJfbmFtZVtOQU1FREFUQUxFTl07CisJY2hhcgkJdHJpZ2dlcl9mdW5jX25h bWVbTkFNRURBVEFMRU5dOworCXN0YXRpYyBjb25zdCBjaGFyICp0cmlnZ2VyX2Z1bmNfZm9ybWF0 ID0gInB1YmxpY2F0aW9uX2RlcGFyc2VfJXMiOworCisJZGRsX3RyaWdnZXIgPSBtYWtlTm9kZShD cmVhdGVFdmVudFRyaWdTdG10KTsKKworCXNucHJpbnRmKHRyaWdnZXJfbmFtZSwgc2l6ZW9mKHRy aWdnZXJfbmFtZSksIFBVQl9FVkVOVF9UUklHX0ZPUk1BVCwKKwkJCSBldmVudG5hbWUsIHB1Ym9p ZCk7CisJc25wcmludGYodHJpZ2dlcl9mdW5jX25hbWUsIHNpemVvZih0cmlnZ2VyX2Z1bmNfbmFt ZSksIHRyaWdnZXJfZnVuY19mb3JtYXQsCisJCQkgZXZlbnRuYW1lKTsKKworCWRkbF90cmlnZ2Vy LT50cmlnbmFtZSA9IHBzdHJkdXAodHJpZ2dlcl9uYW1lKTsKKwlkZGxfdHJpZ2dlci0+ZXZlbnRu YW1lID0gZXZlbnRuYW1lOworCWRkbF90cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KHRyaWdnZXJfZnVuY19uYW1lKTsKKworCWZvcmVhY2gobGMsIGNvbW1hbmRzKQorCXsKKwkJQ29t bWFuZFRhZyBjbWR0YWcgPSBsZmlyc3RfaW50KGxjKTsKKwkJU3RyaW5nCSAgICp0YWcgPSBtYWtl U3RyaW5nKHBzdHJkdXAoR2V0Q29tbWFuZFRhZ05hbWUoY21kdGFnKSkpOworCisJCXRhZ3MgPSBs YXBwZW5kKHRhZ3MsIHRhZyk7CisJfQorCisJZGRsX3RyaWdnZXItPndoZW5jbGF1c2UgPSBsaXN0 X21ha2UxKG1ha2VEZWZFbGVtKCJ0YWciLCAoTm9kZSAqKSB0YWdzLCAtMSkpOworCisJdHJpZ2dl cl9pZCA9IENyZWF0ZUV2ZW50VHJpZ2dlcihkZGxfdHJpZ2dlciwgdHJ1ZSk7CisKKwlPYmplY3RB ZGRyZXNzU2V0KHB1YmFkZHJlc3MsIFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgcHVib2lkKTsKKwor CS8qCisJICogUmVnaXN0ZXIgdGhlIGV2ZW50IHRyaWdnZXIgYXMgaW50ZXJuYWxseSBkZXBlbmRl bnQgb24gdGhlIHB1YmxpY2F0aW9uLgorCSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNl ZCwgRXZlbnRUcmlnZ2VyUmVsYXRpb25JZCwgdHJpZ2dlcl9pZCk7CisJcmVjb3JkRGVwZW5kZW5j eU9uKCZyZWZlcmVuY2VkLCAmcHViYWRkcmVzcywgREVQRU5ERU5DWV9JTlRFUk5BTCk7Cit9CisK Ky8qCisgKiBJZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCwgY3JlYXRlIGV2ZW50IHRyaWdn ZXJzIHRvIGNhcHR1cmUgYW5kIGxvZyBhbnkKKyAqIHJlbGV2YW50IGV2ZW50cy4KKyAqLworc3Rh dGljIHZvaWQKK0NyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXJzKFB1YmxpY2F0aW9uQWN0aW9u cyBwdWJhY3Rpb25zLCBPaWQgcHVib2lkKQoreworCUxpc3QJICAgKnN0YXJ0X2NvbW1hbmRzID0g TklMOworCUxpc3QJICAgKnJld3JpdGVfY29tbWFuZHMgPSBOSUw7CisJTGlzdAkgICAqZW5kX2Nv bW1hbmRzID0gTklMOworCisJaWYgKCFwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJcmV0dXJu OworCisJc3RhcnRfY29tbWFuZHMgPSBsYXBwZW5kX2ludChzdGFydF9jb21tYW5kcywgQ01EVEFH X0RST1BfVEFCTEUpOworCXJld3JpdGVfY29tbWFuZHMgPSBsYXBwZW5kX2ludChyZXdyaXRlX2Nv bW1hbmRzLCBDTURUQUdfQUxURVJfVEFCTEUpOworCisJZW5kX2NvbW1hbmRzID0gbGFwcGVuZF9p bnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfQ1JFQVRFX1RBQkxFKTsKKwllbmRfY29tbWFuZHMgPSBs YXBwZW5kX2ludChlbmRfY29tbWFuZHMsIENNRFRBR19BTFRFUl9UQUJMRSk7CisJZW5kX2NvbW1h bmRzID0gbGFwcGVuZF9pbnQoZW5kX2NvbW1hbmRzLCBDTURUQUdfRFJPUF9UQUJMRSk7CisKKwkv KiBDcmVhdGUgdGhlIGRkbF9jb21tYW5kX3N0YXJ0IGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAoc3Rh cnRfY29tbWFuZHMgIT0gTklMKQorCQlDcmVhdGVERExSZXBsaWNhRXZlbnRUcmlnZ2VyKFBVQl9U UklHX0RETF9DTURfU1RBUlQsIHN0YXJ0X2NvbW1hbmRzLCBwdWJvaWQpOworCisJLyogQ3JlYXRl IHRoZSB0YWJsZV9yZXdyaXRlIGV2ZW50IHRyaWdnZXIgKi8KKwlpZiAocmV3cml0ZV9jb21tYW5k cyAhPSBOSUwpCisJCUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfVEJMX1JF V1JJVEUsIHJld3JpdGVfY29tbWFuZHMsIHB1Ym9pZCk7CisKKwkvKiBDcmVhdGUgdGhlIGRkbF9j b21tYW5kX2VuZCBldmVudCB0cmlnZ2VyICovCisJaWYgKGVuZF9jb21tYW5kcyAhPSBOSUwpCisJ CUNyZWF0ZURETFJlcGxpY2FFdmVudFRyaWdnZXIoUFVCX1RSSUdfRERMX0NNRF9FTkQsIGVuZF9j b21tYW5kcywgcHVib2lkKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBkcm9wIGFu IGV2ZW50IHRyaWdnZXIgZm9yIERETCByZXBsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK0Ry b3BERExSZXBsaWNhRXZlbnRUcmlnZ2VyKGNoYXIgKmV2ZW50bmFtZSwgT2lkIHB1Ym9pZCkKK3sK KwljaGFyCQkJdHJpZ2dlcl9uYW1lW05BTUVEQVRBTEVOXTsKKwlPaWQJCQkJZXZ0b2lkOworCU9i amVjdEFkZHJlc3MJb2JqOworCisJc25wcmludGYodHJpZ2dlcl9uYW1lLCBzaXplb2YodHJpZ2dl cl9uYW1lKSwgUFVCX0VWRU5UX1RSSUdfRk9STUFULAorCQkJIGV2ZW50bmFtZSwgcHVib2lkKTsK KworCWV2dG9pZCA9IGdldF9ldmVudF90cmlnZ2VyX29pZCh0cmlnZ2VyX25hbWUsIHRydWUpOwor CWlmICghT2lkSXNWYWxpZChldnRvaWQpKQorCQlyZXR1cm47CisKKwlkZWxldGVEZXBlbmRlbmN5 UmVjb3Jkc0ZvckNsYXNzKEV2ZW50VHJpZ2dlclJlbGF0aW9uSWQsIGV2dG9pZCwKKwkJCQkJCQkJ CVB1YmxpY2F0aW9uUmVsYXRpb25JZCwKKwkJCQkJCQkJCURFUEVOREVOQ1lfSU5URVJOQUwpOwor CisJLyoKKwkgKiBFbnN1cmUgdGhhdCB0aGUgZGVwZW5kZW5jeSByZW1vdmFsIGlzIHZpc2libGUs IHNvIHRoYXQgd2UgY2FuIGRyb3AgdGhlCisJICogZXZlbnQgdHJpZ2dlci4KKwkgKi8KKwlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOworCisJT2JqZWN0QWRkcmVzc1NldChvYmosIEV2ZW50VHJp Z2dlclJlbGF0aW9uSWQsIGV2dG9pZCk7CisJcGVyZm9ybURlbGV0aW9uKCZvYmosIERST1BfUkVT VFJJQ1QsIFBFUkZPUk1fREVMRVRJT05fSU5URVJOQUwpOworfQorCisvKgorICogRHJvcCBhbGwg dGhlIGV2ZW50IHRyaWdnZXJzIHdoaWNoIGFyZSB1c2VkIGZvciBEREwgcmVwbGljYXRpb24uCisg Ki8KK3N0YXRpYyB2b2lkCitEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMoT2lkIHB1Ym9pZCkK K3sKKwlEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihUUklHX0RETF9DTURfU1RBUlQsIHB1Ym9p ZCk7CisJRHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXIoVFJJR19ERExfQ01EX0VORCwgcHVib2lk KTsKKwlEcm9wRERMUmVwbGljYUV2ZW50VHJpZ2dlcihUUklHX1RCTF9SRVdSSVRFLCBwdWJvaWQp OworfQorCiAvKgogICogQ3JlYXRlIG5ldyBwdWJsaWNhdGlvbi4KICAqLwpAQCAtNzQxLDYgKzkw Niw3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGlj YXRpb25TdG10ICpzdG10KQogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwog CUhlYXBUdXBsZQl0dXA7CiAJYm9vbAkJcHVibGlzaF9naXZlbjsKKwlib29sCQlkZGxfdHlwZV9n aXZlbjsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAlib29sCQlwdWJsaXNoX3Zp YV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dDsKQEAgLTc4Myw3ICs5NDksOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkgIHN0bXQtPm9wdGlvbnMs CiAJCQkJCQkJICAmcHVibGlzaF9naXZlbiwgJnB1YmFjdGlvbnMsCiAJCQkJCQkJICAmcHVibGlz aF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4sCi0JCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QpOworCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LAorCQkJCQkJ CSAgJmRkbF90eXBlX2dpdmVuKTsKIAogCXB1Ym9pZCA9IEdldE5ld09pZFdpdGhJbmRleChyZWws IFB1YmxpY2F0aW9uT2JqZWN0SW5kZXhJZCwKIAkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9v aWQpOwpAQCAtNzk4LDYgKzk2NSw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQlCb29sR2V0RGF0dW0ocHViYWN0 aW9ucy5wdWJkZWxldGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRl IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CisJdmFsdWVz W0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPQorCUJvb2xHZXREYXR1bShw dWJhY3Rpb25zLnB1YmRkbF90YWJsZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVi dmlhcm9vdCAtIDFdID0KIAkJQm9vbEdldERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 KTsKIApAQCAtODM1LDYgKzEwMDQsMTEgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAq cHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCXsKIAkJCUxpc3QJICAgKnJl bHM7CiAKKwkJCWlmIChwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJ CWVycm1zZygiRERMIHJlcGxpY2F0aW9uIGlzIG9ubHkgc3VwcG9ydGVkIGluIEZPUiBBTEwgVEFC TEVTIG9yIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9ucyIpKTsKKwogCQkJcmVscyA9 IE9wZW5UYWJsZUxpc3QocmVsYXRpb25zKTsKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhy ZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRp b25fcm9vdCk7CkBAIC04NTgsNiArMTAzMiwxMSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJfQogCX0KIAorCS8q CisJICogQ3JlYXRlIGV2ZW50IHRyaWdnZXJzIHRvIGFsbG93IGxvZ2dpbmcgb2YgRERMIHN0YXRl bWVudHMuCisJICovCisJQ3JlYXRlRERMUmVwbGljYUV2ZW50VHJpZ2dlcnMocHViYWN0aW9ucywg cHVib2lkKTsKKwogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlJbnZv a2VPYmplY3RQb3N0Q3JlYXRlSG9vayhQdWJsaWNhdGlvblJlbGF0aW9uSWQsIHB1Ym9pZCwgMCk7 CkBAIC04ODIsNiArMTA2MSw3IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJYm9vbAkJcmVwbGFjZXNbTmF0 dHNfcGdfcHVibGljYXRpb25dOwogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25d OwogCWJvb2wJCXB1Ymxpc2hfZ2l2ZW47CisJYm9vbAkJZGRsX3R5cGVfZ2l2ZW47CiAJUHVibGlj YXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3RfZ2l2ZW47CiAJYm9vbAkJcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Q7CkBAIC04OTAsMTMg KzEwNzAsMTQgQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAlMaXN0CSAgICpyb290X3JlbGlkcyA9IE5JTDsK IAlMaXN0Q2VsbCAgICpsYzsKIAorCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VU U1RSVUNUKHR1cCk7CisKIAlwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKHBzdGF0ZSwKIAkJCQkJ CQkgIHN0bXQtPm9wdGlvbnMsCiAJCQkJCQkJICAmcHVibGlzaF9naXZlbiwgJnB1YmFjdGlvbnMs CiAJCQkJCQkJICAmcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4sCi0JCQkJCQkJICAm cHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QpOwotCi0JcHViZm9ybSA9IChGb3JtX3BnX3B1Ymxp Y2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKKwkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCwKKwkJCQkJCQkgICZkZGxfdHlwZV9naXZlbik7CiAKIAkvKgogCSAqIElmIHRoZSBwdWJs aWNhdGlvbiBkb2Vzbid0IHB1Ymxpc2ggY2hhbmdlcyB2aWEgdGhlIHJvb3QgcGFydGl0aW9uZWQK QEAgLTk3OCw2ICsxMTU5LDE4IEBAIEFsdGVyUHVibGljYXRpb25PcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCX0KIAl9CiAKKwlpZiAoZGRs X3R5cGVfZ2l2ZW4gJiYgcHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJeworCQlpZiAocm9vdF9y ZWxpZHMgPT0gTklMKQorCQkJcm9vdF9yZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisKKwkJ aWYgKHJvb3RfcmVsaWRzKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJZXJybXNnKCJEREwgcmVwbGljYXRpb24g aXMgb25seSBzdXBwb3J0ZWQgaW4gRk9SIEFMTCBUQUJMRVMgb3IgRk9SIFRBQkxFUyBJTiBTQ0hF TUEgcHVibGljYXRpb25zIikpOworCX0KKwogCS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcg dHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOwogCW1lbXNldChu dWxscywgZmFsc2UsIHNpemVvZihudWxscykpOwpAQCAtOTk4LDYgKzExOTEsMTkgQEAgQWx0ZXJQ dWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3Rt dCAqc3RtdCwKIAkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFd ID0gdHJ1ZTsKIAl9CiAKKwlpZiAoZGRsX3R5cGVfZ2l2ZW4pCisJeworCQkvKiBSZWNyZWF0ZSB0 aGUgZXZlbnQgdHJpZ2dlcnMgaWYgdGhlIGRkbCBvcHRpb24gaXMgY2hhbmdlZC4gKi8KKwkJaWYg KHB1YmZvcm0tPnB1YmRkbF90YWJsZSAhPSBwdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJewor CQkJRHJvcERETFJlcGxpY2FFdmVudFRyaWdnZXJzKHB1YmZvcm0tPm9pZCk7CisJCQlDcmVhdGVE RExSZXBsaWNhRXZlbnRUcmlnZ2VycyhwdWJhY3Rpb25zLCBwdWJmb3JtLT5vaWQpOworCQl9CisK KwkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPSBCb29sR2V0 RGF0dW0ocHViYWN0aW9ucy5wdWJkZGxfdGFibGUpOworCQlyZXBsYWNlc1tBbnVtX3BnX3B1Ymxp Y2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0gdHJ1ZTsKKwl9CisKIAlpZiAocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3RfZ2l2ZW4pCiAJewogCQl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9w dWJ2aWFyb290IC0gMV0gPSBCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3Qp OwpAQCAtMTEwMyw2ICsxMzA5LDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAKIAlpZiAoc3RtdC0+YWN0aW9uID09 IEFQX0FkZE9iamVjdHMpCiAJeworCQlpZiAocHViZm9ybS0+cHViZGRsX3RhYmxlKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgYWRkIHRhYmxlIHRvIHB1YmxpY2F0aW9uIFwiJXNcIiBp ZiBEREwgcmVwbGljYXRpb24gaXMgZW5hYmxlZCIsCisJCQkJCQkgICBzdG10LT5wdWJuYW1lKSk7 CisKIAkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3Jt LT5wdWJ2aWFyb290KTsKIAogCQlwdWJsaXNoX3NjaGVtYSB8PSBpc19zY2hlbWFfcHVibGljYXRp b24ocHViaWQpOwpAQCAtMTEyMSw2ICsxMzMzLDEyIEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCUxpc3QJICAgKmRl bHJlbHMgPSBOSUw7CiAJCUxpc3RDZWxsICAgKm9sZGxjOwogCisJCWlmIChwdWJmb3JtLT5wdWJk ZGxfdGFibGUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQllcnJtc2coImNhbm5vdCBhZGQgdGFibGUgdG8gcHVi bGljYXRpb24gXCIlc1wiIGlmIERETCByZXBsaWNhdGlvbiBpcyBlbmFibGVkIiwKKwkJCQkJCSAg IHN0bXQtPnB1Ym5hbWUpKTsKKwogCQlUcmFuc2Zvcm1QdWJXaGVyZUNsYXVzZXMocmVscywgcXVl cnlTdHJpbmcsIHB1YmZvcm0tPnB1YnZpYXJvb3QpOwogCiAJCUNoZWNrUHViUmVsYXRpb25Db2x1 bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggMmRjMjVlMzdiYi4uYjc5ZGRkOGNkYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw4 IEBAIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMg PSBcCiAJYXBwbHlwYXJhbGxlbHdvcmtlci5vIFwKKwlkZGxtZXNzYWdlLm8gXAorCWRkbHRyaWdn ZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNmMTQ0ZGUzOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYwpAQCAtMCwwICsxLDgzIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBkZGxtZXNzYWdlLmMKKyAqCSAgTG9naWNhbCBE REwgbWVzc2FnZXMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsbWVzc2FnZS5jCisgKgorICogTk9URVMKKyAqCisg KiBMb2dpY2FsIERETCBtZXNzYWdlcyBhbGxvdyBYTE9HIGxvZ2dpbmcgb2YgRERMIGNvbW1hbmQg c3RyaW5ncyB0aGF0CisgKiBnZXQgcGFzc2VkIHRvIHRoZSBsb2dpY2FsIGRlY29kaW5nIHBsdWdp bi4gSW4gbm9ybWFsIFhMT0cgcHJvY2Vzc2luZyB0aGV5CisgKiBhcmUgc2FtZSBhcyBOT09QLgor ICoKKyAqIFVubGlrZSBnZW5lcmljIGxvZ2ljYWwgbWVzc2FnZXMsIHRoZXNlIERETCBtZXNzYWdl cyBoYXZlIG9ubHkgdHJhbnNhY3Rpb25hbAorICogbW9kZS4gTm90ZSBieSBkZWZhdWx0IERETHMg aW4gUG9zdGdyZVNRTCBhcmUgdHJhbnNhY3Rpb25hbC4KKyAqCisgKiBUaGVzZSBtZXNzYWdlcyBh cmUgcGFydCBvZiBjdXJyZW50IHRyYW5zYWN0aW9uIGFuZCB3aWxsIGJlIHNlbnQgdG8KKyAqIGRl Y29kaW5nIHBsdWdpbiBzaW1pbGFyIHRvIERNTCBvcGVyYXRpb25zLgorICoKKyAqIEV2ZXJ5IG1l c3NhZ2UgaW5jbHVkZXMgYSBwcmVmaXggdG8gYXZvaWQgY29uZmxpY3RzIGJldHdlZW4gZGlmZmVy ZW50IGRlY29kaW5nCisgKiBwbHVnaW5zLiBQbHVnaW4gYXV0aG9ycyBtdXN0IHRha2Ugc3BlY2lh bCBjYXJlIHRvIHVzZSBhIHVuaXF1ZSBwcmVmaXggKGUuZyBvbmUKKyAqIGlkZWEgaXMgdG8gaW5j bHVkZSB0aGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uKS4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK KyNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNw YWNlLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVz LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0 aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICog V3JpdGUgbG9naWNhbCBkZWNvZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisgKi8KK1hMb2dS ZWNQdHIKK0xvZ0xvZ2ljYWxERExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlk LCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJCSBjb25zdCBjaGFyICptZXNzYWdl LCBzaXplX3Qgc2l6ZSkKK3sKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlIHhscmVjOworCisJIC8q IEVuc3VyZSB3ZSBoYXZlIGEgdmFsaWQgdHJhbnNhY3Rpb24gaWQuICovCisJQXNzZXJ0KElzVHJh bnNhY3Rpb25TdGF0ZSgpKTsKKwlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCisJeGxyZWMu ZGJJZCA9IE15RGF0YWJhc2VJZDsKKwkvKiBUcmFpbGluZyB6ZXJvIGlzIGNyaXRpY2FsOyBzZWUg bG9naWNhbGRkbG1zZ19kZXNjICovCisJeGxyZWMucHJlZml4X3NpemUgPSBzdHJsZW4ocHJlZml4 KSArIDE7CisJeGxyZWMubWVzc2FnZV9zaXplID0gc2l6ZTsKKwl4bHJlYy5yZWxpZCA9IHJlbGlk OworCXhscmVjLmNtZHR5cGUgPSBjbWR0eXBlOworCisJWExvZ0JlZ2luSW5zZXJ0KCk7CisJWExv Z1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIFNpemVPZkxvZ2ljYWxERExNZXNzYWdlKTsK KwlYTG9nUmVnaXN0ZXJEYXRhKHVuY29uc3RpZnkoY2hhciAqLCBwcmVmaXgpLCB4bHJlYy5wcmVm aXhfc2l6ZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5KGNoYXIgKiwgbWVzc2FnZSks IHNpemUpOworCisJLyogQWxsb3cgb3JpZ2luIGZpbHRlcmluZyAqLworCVhMb2dTZXRSZWNvcmRG bGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKworCXJldHVybiBYTG9nSW5zZXJ0KFJNX0xPR0lD QUxERExNU0dfSUQsIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSk7Cit9CisKKy8qCisgKiBSZWRv IGlzIGJhc2ljYWxseSBqdXN0IG5vb3AgZm9yIGxvZ2ljYWwgZGVjb2RpbmcgRERMIG1lc3NhZ2Vz LgorICovCit2b2lkCitsb2dpY2FsZGRsbXNnX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp Cit7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyZWNvcmQpICYgflhMUl9JTkZPX01B U0s7CisKKwlpZiAoaW5mbyAhPSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UpCisJCWVsb2coUEFO SUMsICJsb2dpY2FsZGRsbXNnX3JlZG86IHVua25vd24gb3AgY29kZSAldSIsIGluZm8pOworCisJ LyogVGhpcyBpcyBvbmx5IGludGVyZXN0aW5nIGZvciBsb2dpY2FsIGRlY29kaW5nLCBzZWUgZGVj b2RlLmMuICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RkbHRyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGRsdHJpZ2dl ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjY3NDBkMDc0ZmIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdn ZXIuYwpAQCAtMCwwICsxLDM0OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZGRsdHJp Z2dlci5jCisgKgkgIExvZ2ljYWwgRERMIHRyaWdnZXJzLgorICoKKyAqIENvcHlyaWdodCAoYykg MjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RkbHRyaWdnZXIu YworICoKKyAqIE5PVEVTCisgKgorICogRGVwYXJzZSB0aGUgZGRsIGNvbW1hbmQgYW5kIGxvZyBp dC4KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xh c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9l dmVudF90cmlnZ2VyLmgiCisjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgImxpYi9pbGlz dC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKKyNpbmNsdWRlICJ0Y29w L2RkbGRlcGFyc2UuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCisKK2V4dGVybiBFdmVudFRyaWdnZXJRdWVyeVN0YXRlICpjdXJy ZW50RXZlbnRUcmlnZ2VyU3RhdGU7CisKKworLyoKKyAqIENoZWNrIGlmIHRoZSBjb21tYW5kIGNh biBiZSBwdWJsaXNoZWQuCisgKgorICogWFhYIEV4ZWN1dGluZyBhIG5vbi1pbW11dGFibGUgZXhw cmVzc2lvbiBkdXJpbmcgdGhlIHRhYmxlIHJld3JpdGUgcGhhc2UgaXMKKyAqIG5vdCBhbGxvd2Vk LCBhcyBpdCBtYXkgcmVzdWx0IGluIGRpZmZlcmVudCBkYXRhIGJldHdlZW4gcHVibGlzaGVyIGFu ZAorICogc3Vic2NyaWJlci4gV2hpbGUgc29tZSBtYXkgc3VnZ2VzdCBjb252ZXJ0aW5nIHRoZSBy ZXdyaXRlIGluc2VydHMgdG8gdXBkYXRlcworICogYW5kIHJlcGxpY2F0ZSB0aGVtIGFmdGVyIHRo ZSBkZGwgY29tbWFuZCB0byBtYWludGFpbiBkYXRhIGNvbnNpc3RlbmN5LCBidXQgaXQKKyAqIGRv ZXNuJ3Qgd29yayBpZiB0aGUgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gaXMgYWx0ZXJlZCBpbiB0 aGUgY29tbWFuZC4gVGhpcworICogaXMgYmVjYXVzZSB0aGUgcmV3cml0ZSBpbnNlcnRzIGRvIG5v dCBjb250YWluIHRoZSBvbGQgdmFsdWVzIGFuZCB0aGVyZWZvcmUKKyAqIGNhbm5vdCBiZSBjb252 ZXJ0ZWQgdG8gdXBkYXRlLgorICoKKyAqIEFwYXJ0IGZyb20gdGhhdCwgY29tbWFuZHMgY29udGFp bmluZyB2b2xhdGlsZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiBCZWNhdXNlCisgKiBpdCdz IHBvc3NpYmxlIHRoZSBmdW5jdGlvbnMgY29udGFpbiBEREwvRE1MIGluIHdoaWNoIGNhc2UgdGhl c2Ugb3BlcmF0aW9ucworICogd2lsbCBiZSBleGVjdXRlZCB0d2ljZSBhbmQgY2F1c2UgZHVwbGlj YXRlIGRhdGEuIEluIGFkZGl0aW9uLCB3ZSBkb24ndCBrbm93CisgKiB3aGV0aGVyIHRoZSB0YWJs ZXMgYmVpbmcgYWNjZXNzZWQgYnkgdGhlc2UgRERML0RNTCBhcmUgcHVibGlzaGVkIG9yIG5vdC4g U28KKyAqIGJsaW5kbHkgYWxsb3dpbmcgc3VjaCBmdW5jdGlvbnMgY2FuIGFsbG93IHVuaW50ZW5k ZWQgY2xhdXNlcyBsaWtlIHRoZSB0YWJsZXMKKyAqIGFjY2Vzc2VkIGluIHRob3NlIGZ1bmN0aW9u cyBtYXkgbm90IGV2ZW4gZXhpc3Qgb24gdGhlIHN1YnNjcmliZXIuCisgKi8KK3N0YXRpYyB2b2lk CitjaGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dCwg Ym9vbCBpc19yZXdyaXRlKQoreworCisJaWYgKGlzX3Jld3JpdGUgJiYgY29udGV4dC5tYXhfdm9s YXRpbGl0eSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQll cnJtc2coImNhbm5vdCByZXdyaXRlIHRhYmxlIGlmIHRoaXMgY29tbWFuZCBjb250YWlucyBtdXRh YmxlIGZ1bmN0aW9uIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJlcGxpY2F0ZWQgaW4gRERMIHJlcGxp Y2F0aW9uIikpOworCisJaWYgKGNvbnRleHQubWF4X3ZvbGF0aWxpdHkgPT0gUFJPVk9MQVRJTEVf Vk9MQVRJTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2Ugdm9sYXRp bGUgZnVuY3Rpb24gaW4gdGhpcyBjb21tYW5kIGJlY2F1c2UgaXQgY2Fubm90IGJlIHJlcGxpY2F0 ZWQgaW4gRERMIHJlcGxpY2F0aW9uIikpOworfQorCisvKgorICogRGVwYXJzZSB0aGUgZGRsIGNv bW1hbmQgYW5kIGxvZyBpdCBwcmlvciB0bworICogZXhlY3V0aW9uLiBDdXJyZW50bHkgb25seSB1 c2VkIGZvciBEUk9QIFRBQkxFIGNvbW1hbmQKKyAqIHNvIHRoYXQgY2F0YWxvZyBjYW4gYmUgYWNj ZXNzZWQgYmVmb3JlIGJlaW5nIGRlbGV0ZWQuCisgKiBUaGlzIGlzIHRvIGNoZWNrIGlmIHRoZSB0 YWJsZSBpcyBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgorICogb3Igbm90LgorICovCitEYXR1bQor cHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydChQR19GVU5DVElPTl9BUkdTKQor eworCUV2ZW50VHJpZ2dlckRhdGEgKnRyaWdkYXRhOworCWNoYXIJICAgKmNvbW1hbmQgPSBwc3By aW50ZigiRHJvcCB0YWJsZSBjb21tYW5kIHN0YXJ0Iik7CisJRHJvcFN0bXQgICAqc3RtdDsKKwlM aXN0Q2VsbCAgICpjZWxsMTsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZv KSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsK KworCXRyaWdkYXRhID0gKEV2ZW50VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCXN0 bXQgPSAoRHJvcFN0bXQgKikgdHJpZ2RhdGEtPnBhcnNldHJlZTsKKworCS8qIEV4dHJhY3QgdGhl IHJlbGlkIGZyb20gdGhlIHBhcnNlIHRyZWUgKi8KKwlmb3JlYWNoKGNlbGwxLCBzdG10LT5vYmpl Y3RzKQorCXsKKwkJY2hhcgkJcmVscGVyc2lzdDsKKwkJTm9kZQkgICAqb2JqZWN0ID0gbGZpcnN0 KGNlbGwxKTsKKwkJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCQlSZWxhdGlvbglyZWxhdGlvbiA9 IE5VTEw7CisKKwkJYWRkcmVzcyA9IGdldF9vYmplY3RfYWRkcmVzcyhzdG10LT5yZW1vdmVUeXBl LAorCQkJCQkJCQkJIG9iamVjdCwKKwkJCQkJCQkJCSAmcmVsYXRpb24sCisJCQkJCQkJCQkgQWNj ZXNzRXhjbHVzaXZlTG9jaywKKwkJCQkJCQkJCSB0cnVlKTsKKworCQkvKiBPYmplY3QgZG9lcyBu b3QgZXhpc3QsIG5vdGhpbmcgdG8gZG8gKi8KKwkJaWYgKCFyZWxhdGlvbikKKwkJCWNvbnRpbnVl OworCisJCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKGFkZHJlc3Mub2JqZWN0SWQp OworCisJCS8qCisJCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9z ZSB0YXJnZXQgdGFibGUgaXMgYQorCQkgKiB0ZW1wb3Jhcnkgb3IgdW5sb2dnZWQgdGFibGUuCisJ CSAqCisJCSAqIFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxl cyBpbiB0aGUgZnV0dXJlIHNvCisJCSAqIHRoYXQgdW5sb2dnZWQgdGFibGVzIGNhbiBhbHNvIGJl IGNyZWF0ZWQgYW5kIGFsdGVyZWQgb24gdGhlCisJCSAqIHN1YnNjcmliZXIgc2lkZS4gVGhpcyBt YWtlcyBpdCBwb3NzaWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhlIFNFVAorCQkgKiBMT0dHRUQg Y29tbWFuZCBhbmQgdGhlIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5n IGEKKwkJICogbmV3IHRhYmxlLgorCQkgKi8KKwkJaWYgKHJlbHBlcnNpc3QgPT0gUkVMUEVSU0lT VEVOQ0VfUEVSTUFORU5UKQorCQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBhZGRy ZXNzLm9iamVjdElkLCBEQ1RfVGFibGVEcm9wU3RhcnQsCisJCQkJCQkJCSBjb21tYW5kLCBzdHJs ZW4oY29tbWFuZCkgKyAxKTsKKworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9 CisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIHB1YmxpY2F0aW9u X2RlcGFyc2VfdGFibGVfcmV3cml0ZQorICoKKyAqIERlcGFyc2UgdGhlIGRkbCB0YWJsZSByZXdy aXRlIGNvbW1hbmQgYW5kIGxvZyBpdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2Vf dGFibGVfcmV3cml0ZShQR19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJCXJlbHBlcnNpc3Q7CisJ Q29sbGVjdGVkQ29tbWFuZCAqY21kOworCisJaWYgKCFDQUxMRURfQVNfRVZFTlRfVFJJR0dFUihm Y2luZm8pKQorCQllbG9nKEVSUk9SLCAibm90IGZpcmVkIGJ5IGV2ZW50IHRyaWdnZXIgbWFuYWdl ciIpOworCisJY21kID0gY3VycmVudEV2ZW50VHJpZ2dlclN0YXRlLT5jdXJyZW50Q29tbWFuZDsK KworCUFzc2VydChjbWQgJiYgY21kLT5kLmFsdGVyVGFibGUucmV3cml0ZSk7CisKKwlyZWxwZXJz aXN0ID0gZ2V0X3JlbF9wZXJzaXN0ZW5jZShjbWQtPmQuYWx0ZXJUYWJsZS5vYmplY3RJZCk7CisK KwkvKgorCSAqIERvIG5vdCBnZW5lcmF0ZSB3YWwgbG9nIGZvciBjb21tYW5kcyB3aG9zZSB0YXJn ZXQgdGFibGUgaXMgYSB0ZW1wb3JhcnkKKwkgKiBvciB1bmxvZ2dlZCB0YWJsZS4KKwkgKgorCSAq IFhYWCBXZSBtYXkgZ2VuZXJhdGUgd2FsIGxvZ3MgZm9yIHVubG9nZ2VkIHRhYmxlcyBpbiB0aGUg ZnV0dXJlIHNvIHRoYXQKKwkgKiB1bmxvZ2dlZCB0YWJsZXMgY2FuIGFsc28gYmUgY3JlYXRlZCBh bmQgYWx0ZXJlZCBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLgorCSAqIFRoaXMgbWFrZXMgaXQgcG9z c2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQgTE9HR0VEIGNvbW1hbmQgYW5kIHRoZQor CSAqIGluY29taW5nIHJld3JpdGUgbWVzc2FnZSB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHRhYmxl LgorCSAqLworCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkKKwl7 CisJCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwkJY2hhcgkgICAqanNvbl9zdHJpbmc7 CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9W T0xBVElMRV9JTU1VVEFCTEUsIHdoaWNoIGlzCisJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxpdHkg bGV2ZWwuCisJCSAqLworCQljb250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1N VVRBQkxFOworCisJCS8qIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRv IGFsbG93IGRlY29kaW5nIG9mIHRoZSBzYW1lLiAqLworCQlqc29uX3N0cmluZyA9IGRlcGFyc2Vf dXRpbGl0eV9jb21tYW5kKGNtZCwgJmNvbnRleHQpOworCisJCWlmIChqc29uX3N0cmluZyAhPSBO VUxMKQorCQl7CisJCQljaGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGNvbnRleHQsIHRydWUpOwor CQkJTG9nTG9naWNhbERETE1lc3NhZ2UoImRlcGFyc2UiLCBjbWQtPmQuYWx0ZXJUYWJsZS5vYmpl Y3RJZCwgRENUX1RhYmxlQWx0ZXIsCisJCQkJCQkJCSBqc29uX3N0cmluZywgc3RybGVuKGpzb25f c3RyaW5nKSArIDEpOworCQl9CisJfQorCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsK K30KKworLyoKKyAqIERlcGFyc2UgdGhlIGRkbCBjb21tYW5kIGFuZCBsb2cgaXQuIFRoaXMgZnVu Y3Rpb24KKyAqIGlzIGNhbGxlZCBhZnRlciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb21tYW5kIGJ1 dCBiZWZvcmUgdGhlCisgKiB0cmFuc2FjdGlvbiBjb21taXRzLgorICovCitEYXR1bQorcHVibGlj YXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9lbmQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlzbGlzdF9pdGVyCWl0ZXI7CisJT2lkCQkJcmVsaWQ7CisJY2hhcgkJcmVs a2luZDsKKworCWlmICghQ0FMTEVEX0FTX0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhF UlJPUiwgIm5vdCBmaXJlZCBieSBldmVudCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCWZvcmVhY2go bGMsIGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+Y29tbWFuZExpc3QpCisJeworCQljaGFyCQly ZWxwZXJzaXN0ID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOworCQlDb2xsZWN0ZWRDb21tYW5k ICpjbWQgPSBsZmlyc3QobGMpOworCQlEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGU7CisKKwkJ LyogUmV3cml0ZSBEREwgaGFzIGJlZW4gaGFuZGxlZCBpbiB0YWJsZV9yZXdyaXRlIHRyaWdnZXIg Ki8KKwkJaWYgKGNtZC0+ZC5hbHRlclRhYmxlLnJld3JpdGUpCisJCXsKKwkJCVJlbmFtZVN0bXQg KnJlbmFtZVN0bXQgPSAoUmVuYW1lU3RtdCAqKSBjbWQtPnBhcnNldHJlZTsKKworCQkJaWYgKHJl bmFtZVN0bXQgJiYgcmVuYW1lU3RtdC0+cmVsYXRpb25UeXBlICE9IE9CSkVDVF9UWVBFICYmCisJ CQkJcmVuYW1lU3RtdC0+cmVsYXRpb25UeXBlICE9IE9CSkVDVF9UQUJMRSkKKwkJCQljb250aW51 ZTsKKwkJfQorCisJCWlmIChjbWQtPnR5cGUgPT0gU0NUX1NpbXBsZSAmJgorCQkJIU9pZElzVmFs aWQoY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkKSkKKwkJCWNvbnRpbnVlOworCisJCWlm IChjbWQtPnR5cGUgPT0gU0NUX0FsdGVyVGFibGUpCisJCXsKKwkJCXJlbGlkID0gY21kLT5kLmFs dGVyVGFibGUub2JqZWN0SWQ7CisJCQljbWR0eXBlID0gRENUX1RhYmxlQWx0ZXI7CisJCX0KKwkJ ZWxzZQorCQl7CisJCQkvKiBPbmx5IFNDVF9TaW1wbGUgZm9yIG5vdyAqLworCQkJcmVsaWQgPSBj bWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQ7CisJCQljbWR0eXBlID0gRENUX1NpbXBsZUNt ZDsKKwkJfQorCisJCXJlbGtpbmQgPSBnZXRfcmVsX3JlbGtpbmQocmVsaWQpOworCQlpZiAocmVs a2luZCkKKwkJCXJlbHBlcnNpc3QgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKHJlbGlkKTsKKworCQkv KgorCQkgKiBEbyBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0 IHRhYmxlIGlzIGEKKwkJICogdGVtcG9yYXJ5IG9yIHVubG9nZ2VkIHRhYmxlLgorCQkgKgorCQkg KiBYWFggV2UgbWF5IGdlbmVyYXRlIHdhbCBsb2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgaW4gdGhl IGZ1dHVyZSBzbworCQkgKiB0aGF0IHVubG9nZ2VkIHRhYmxlcyBjYW4gYWxzbyBiZSBjcmVhdGVk IGFuZCBhbHRlcmVkIG9uIHRoZQorCQkgKiBzdWJzY3JpYmVyIHNpZGUuIFRoaXMgbWFrZXMgaXQg cG9zc2libGUgdG8gZGlyZWN0bHkgcmVwbGF5IHRoZSBTRVQKKwkJICogTE9HR0VEIGNvbW1hbmQg YW5kIHRoZSBpbmNvbWluZyByZXdyaXRlIG1lc3NhZ2Ugd2l0aG91dCBjcmVhdGluZyBhCisJCSAq IG5ldyB0YWJsZS4KKwkJICovCisJCWlmIChyZWxwZXJzaXN0ID09IFJFTFBFUlNJU1RFTkNFX1BF Uk1BTkVOVCkKKwkJeworCQkJLyoKKwkJCSAqIERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBX QUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5nIG9mIHRoZQorCQkJICogc2FtZS4KKwkJCSAqLwor CQkJZGRsX2RlcGFyc2VfY29udGV4dCBjb250ZXh0OworCQkJY2hhcgkgICAqanNvbl9zdHJpbmc7 CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSBtYXhfdm9sYXRpbGl0eSBmbGFnIHRvIFBS T1ZPTEFUSUxFX0lNTVVUQUJMRSwgd2hpY2ggaXMKKwkJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxp dHkgbGV2ZWwuCisJCQkgKi8KKwkJCWNvbnRleHQubWF4X3ZvbGF0aWxpdHkgPSBQUk9WT0xBVElM RV9JTU1VVEFCTEU7CisKKwkJCWpzb25fc3RyaW5nID0gZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQo Y21kLCAmY29udGV4dCk7CisKKwkJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQkJeworCQkJ CWNoZWNrX2NvbW1hbmRfcHVibGlzaGFibGUoY29udGV4dCwgZmFsc2UpOworCQkJCUxvZ0xvZ2lj YWxERExNZXNzYWdlKCJkZXBhcnNlIiwgcmVsaWQsIGNtZHR5cGUsIGpzb25fc3RyaW5nLAorCQkJ CQkJCQkJIHN0cmxlbihqc29uX3N0cmluZykgKyAxKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIERy b3AgY29tbWFuZHMgYXJlIG5vdCBwYXJ0IGNvbW1hbmRsaXN0IGJ1dCBoYW5kbGVkIGhlcmUgYXMg cGFydCBvZiBTUUxEcm9wTGlzdCAqLworCXNsaXN0X2ZvcmVhY2goaXRlciwgJihjdXJyZW50RXZl bnRUcmlnZ2VyU3RhdGUtPlNRTERyb3BMaXN0KSkKKwl7CisJCVNRTERyb3BPYmplY3QgKm9iajsK KwkJRXZlbnRUcmlnZ2VyRGF0YSAqdHJpZ2RhdGE7CisKKwkJdHJpZ2RhdGEgPSAoRXZlbnRUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisKKwkJb2JqID0gc2xpc3RfY29udGFpbmVyKFNR TERyb3BPYmplY3QsIG5leHQsIGl0ZXIuY3VyKTsKKworCQlpZiAoIW9iai0+b3JpZ2luYWwpCisJ CQljb250aW51ZTsKKworCQlpZiAoc3RyY21wKG9iai0+b2JqZWN0dHlwZSwgInRhYmxlIikgPT0g MCkKKwkJeworCQkJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlID0gRENUX1RhYmxlRHJvcEVu ZDsKKwkJCWNoYXIJKmNvbW1hbmQ7CisKKwkJCWNvbW1hbmQgPSBkZXBhcnNlX2Ryb3BfdGFibGUo b2JqLT5vYmppZGVudGl0eSwgb2JqLT5vYmplY3R0eXBlLAorCQkJCQkJCQkJICAgdHJpZ2RhdGEt PnBhcnNldHJlZSk7CisJCQlpZiAoY29tbWFuZCkKKwkJCQlMb2dMb2dpY2FsRERMTWVzc2FnZSgi ZGVwYXJzZSIsIG9iai0+YWRkcmVzcy5vYmplY3RJZCwgY21kdHlwZSwKKwkJCQkJCQkJCSBjb21t YW5kLCBzdHJsZW4oY29tbWFuZCkgKyAxKTsKKwkJfQorCX0KKworCXJldHVybiBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRf d3JpdGUKKyAqCisgKiBEZXBhcnNlIHRoZSBkZGwgdGFibGUgY3JlYXRlIGNvbW1hbmQgYW5kIGxv ZyBpdC4KKyAqLworRGF0dW0KK3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0ZShQ R19GVU5DVElPTl9BUkdTKQoreworCWNoYXIJCXJlbHBlcnNpc3Q7CisJQ29sbGVjdGVkQ29tbWFu ZCAqY21kOworCWRkbF9kZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKworCWlmICghQ0FMTEVEX0FT X0VWRU5UX1RSSUdHRVIoZmNpbmZvKSkKKwkJZWxvZyhFUlJPUiwgIm5vdCBmaXJlZCBieSBldmVu dCB0cmlnZ2VyIG1hbmFnZXIiKTsKKworCWNtZCA9IGN1cnJlbnRFdmVudFRyaWdnZXJTdGF0ZS0+ Y3VycmVudENvbW1hbmQ7CisJQXNzZXJ0KGNtZCk7CisKKwlyZWxwZXJzaXN0ID0gZ2V0X3JlbF9w ZXJzaXN0ZW5jZShjbWQtPmQuc2ltcGxlLmFkZHJlc3Mub2JqZWN0SWQpOworCisJLyoKKwkgKiBE byBub3QgZ2VuZXJhdGUgd2FsIGxvZyBmb3IgY29tbWFuZHMgd2hvc2UgdGFyZ2V0IHRhYmxlIGlz IGEgdGVtcG9yYXJ5CisJICogdGFibGUuCisJICoKKwkgKiBXZSB3aWxsIGdlbmVyYXRlIHdhbCBs b2dzIGZvciB1bmxvZ2dlZCB0YWJsZXMgc28gdGhhdCB1bmxvZ2dlZCB0YWJsZXMKKwkgKiBjYW4g YWxzbyBiZSBjcmVhdGVkIGFuZCBhbHRlcmVkIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIFRoaXMg bWFrZXMgaXQKKwkgKiBwb3NzaWJsZSB0byBkaXJlY3RseSByZXBsYXkgdGhlIFNFVCBMT0dHRUQg Y29tbWFuZCBhbmQgdGhlIGluY29taW5nCisJICogcmV3cml0ZSBtZXNzYWdlIHdpdGhvdXQgY3Jl YXRpbmcgYSBuZXcgdGFibGUuCisJICovCisJaWYgKHJlbHBlcnNpc3QgPT0gUkVMUEVSU0lTVEVO Q0VfUEVSTUFORU5UKQorCXsKKwkJY2hhcgkgICAqanNvbl9zdHJpbmc7CisKKwkJLyoKKwkJICog SW5pdGlhbGl6ZSB0aGUgbWF4X3ZvbGF0aWxpdHkgZmxhZyB0byBQUk9WT0xBVElMRV9JTU1VVEFC TEUsIHdoaWNoIGlzCisJCSAqIHRoZSBtaW5pbXVtIHZvbGF0aWxpdHkgbGV2ZWwuCisJCSAqLwor CQljb250ZXh0Lm1heF92b2xhdGlsaXR5ID0gUFJPVk9MQVRJTEVfSU1NVVRBQkxFOworCisJCS8q IERlcGFyc2UgdGhlIERETCBjb21tYW5kIGFuZCBXQUwgbG9nIGl0IHRvIGFsbG93IGRlY29kaW5n IG9mIHRoZSBzYW1lLiAqLworCQlqc29uX3N0cmluZyA9IGRlcGFyc2VfdXRpbGl0eV9jb21tYW5k KGNtZCwgJmNvbnRleHQpOworCisJCWlmIChqc29uX3N0cmluZyAhPSBOVUxMKQorCQl7CisJCQlj aGVja19jb21tYW5kX3B1Ymxpc2hhYmxlKGNvbnRleHQsIGZhbHNlKTsKKwkJCUxvZ0xvZ2ljYWxE RExNZXNzYWdlKCJkZXBhcnNlIiwgY21kLT5kLnNpbXBsZS5hZGRyZXNzLm9iamVjdElkLCBEQ1Rf U2ltcGxlQ21kLAorCQkJCQkJCQkganNvbl9zdHJpbmcsIHN0cmxlbihqc29uX3N0cmluZykgKyAx KTsKKwkJfQorCX0KKworCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7Cit9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCBkOTEwNTVhNDQwLi5iMjJiYmNk MTVhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTM2LDYg KzM2LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vZGVjb2RlLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWwuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9tZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vb3JpZ2luLmgiCkBAIC02NDEsNiArNjQyLDQ2IEBAIGxvZ2ljYWxtc2dfZGVjb2RlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJCQkJ CSAgbWVzc2FnZS0+bWVzc2FnZSArIG1lc3NhZ2UtPnByZWZpeF9zaXplKTsKIH0KIAorLyoKKyAq IEhhbmRsZSBybWdyIExPR0lDQUxERExNU0dfSUQgcmVjb3JkcyBmb3IgRGVjb2RlUmVjb3JkSW50 b1Jlb3JkZXJCdWZmZXIoKS4KKyAqLwordm9pZAorbG9naWNhbGRkbF9kZWNvZGUoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxk ICAqYnVpbGRlciA9IGN0eC0+c25hcHNob3RfYnVpbGRlcjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIg PSBidWYtPnJlY29yZDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IFhMb2dSZWNHZXRYaWQocik7CisJ dWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhyKSAmIH5YTFJfSU5GT19NQVNLOworCVJlcE9y aWdpbklkIG9yaWdpbl9pZCA9IFhMb2dSZWNHZXRPcmlnaW4ocik7CisJeGxfbG9naWNhbF9kZGxf bWVzc2FnZSAqbWVzc2FnZTsKKworCWlmIChpbmZvICE9IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FH RSkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgUk1fTE9HSUNBTERETE1TR19JRCByZWNvcmQg dHlwZTogJXUiLCBpbmZvKTsKKworCVJlb3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRl ciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRyKTsKKworCS8qCisJICogSWYgd2UgZG9u J3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVzdCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlz IG5vCisJICogcG9pbnQgaW4gZGVjb2RpbmcgZGRsIG1lc3NhZ2VzLgorCSAqLworCWlmIChTbmFw QnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikgPCBTTkFQQlVJTERfRlVMTF9TTkFQU0hPVCB8fAor CQljdHgtPmZhc3RfZm9yd2FyZCkKKwkJcmV0dXJuOworCisJbWVzc2FnZSA9ICh4bF9sb2dpY2Fs X2RkbF9tZXNzYWdlICopIFhMb2dSZWNHZXREYXRhKHIpOworCisJaWYgKG1lc3NhZ2UtPmRiSWQg IT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlIHx8CisJCUZpbHRlckJ5T3JpZ2luKGN0eCwgb3Jp Z2luX2lkKSkKKwkJcmV0dXJuOworCisJaWYgKFNuYXBCdWlsZFByb2Nlc3NDaGFuZ2UoYnVpbGRl ciwgeGlkLCBidWYtPm9yaWdwdHIpKQorCQlSZW9yZGVyQnVmZmVyUXVldWVERExNZXNzYWdlKGN0 eC0+cmVvcmRlciwgeGlkLCBidWYtPmVuZHB0ciwKKwkJCQkJCQkJCSBtZXNzYWdlLT5tZXNzYWdl LCAvKiBmaXJzdCBwYXJ0IG9mIG1lc3NhZ2UgaXMgcHJlZml4ICovCisJCQkJCQkJCQkgbWVzc2Fn ZS0+bWVzc2FnZV9zaXplLAorCQkJCQkJCQkJIG1lc3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5w cmVmaXhfc2l6ZSwKKwkJCQkJCQkJCSBtZXNzYWdlLT5yZWxpZCwgbWVzc2FnZS0+Y21kdHlwZSk7 Cit9CisKIC8qCiAgKiBDb25zb2xpZGF0ZWQgY29tbWl0IHJlY29yZCBoYW5kbGluZyBiZXR3ZWVu IHRoZSBkaWZmZXJlbnQgZm9ybSBvZiBjb21taXQKICAqIHJlY29yZHMuCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCmluZGV4IDQxMjQzZDAxODcuLjFkOTlmYWMxMTYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0zMyw2ICsz Myw3IEBACiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCkBAIC03Myw2ICs3NCwxMCBAQCBz dGF0aWMgdm9pZCB0cnVuY2F0ZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9pZCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRl ckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkgICBYTG9nUmVj UHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJICAgY29uc3QgY2hh ciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0 aWMgdm9pZCBkZGxfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAorCQkJCQkJCQkgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGNvbnN0IGNoYXIg KnByZWZpeCwKKwkJCQkJCQkJICBPaWQgcmVsaWQsIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlw ZSwKKwkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAK IC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRpYyB2b2lkIHN0cmVhbV9zdGFydF9jYl93 cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05 MCw2ICs5NSwxMSBAQCBzdGF0aWMgdm9pZCBzdHJlYW1fY2hhbmdlX2NiX3dyYXBwZXIoUmVvcmRl ckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogc3RhdGljIHZvaWQgc3RyZWFt X21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAogCQkJCQkJCQkJICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0 aW9uYWwsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUs IGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgc3RyZWFtX2RkbF9jYl93cmFwcGVy KFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJ IFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwK KwkJCQkJCQkJCQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJCQkJ CQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRpYyB2 b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24g cmVsYXRpb25zW10sIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSk7CiAKQEAgLTIyMSwxMCAr MjMxLDExIEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRp b25zLAogCWN0eC0+cmVvcmRlci0+YXBwbHlfdHJ1bmNhdGUgPSB0cnVuY2F0ZV9jYl93cmFwcGVy OwogCWN0eC0+cmVvcmRlci0+Y29tbWl0ID0gY29tbWl0X2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9y ZGVyLT5tZXNzYWdlID0gbWVzc2FnZV9jYl93cmFwcGVyOworCWN0eC0+cmVvcmRlci0+ZGRsID0g ZGRsX2NiX3dyYXBwZXI7CiAKIAkvKgogCSAqIFRvIHN1cHBvcnQgc3RyZWFtaW5nLCB3ZSByZXF1 aXJlIHN0YXJ0L3N0b3AvYWJvcnQvY29tbWl0L2NoYW5nZQotCSAqIGNhbGxiYWNrcy4gVGhlIG1l c3NhZ2UgYW5kIHRydW5jYXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsIHNpbWlsYXIgdG8KKwkg KiBjYWxsYmFja3MuIFRoZSBtZXNzYWdlLCBkZGwgYW5kIHRydW5jYXRlIGNhbGxiYWNrcyBhcmUg b3B0aW9uYWwsIHNpbWlsYXIgdG8KIAkgKiByZWd1bGFyIG91dHB1dCBwbHVnaW5zLiBXZSBob3dl dmVyIGVuYWJsZSBzdHJlYW1pbmcgd2hlbiBhdCBsZWFzdCBvbmUKIAkgKiBvZiB0aGUgbWV0aG9k cyBpcyBlbmFibGVkIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZGVudGlmeSBtaXNzaW5nCiAJICog bWV0aG9kcy4KQEAgLTIzNywxMiArMjQ4LDEzIEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlz dCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2NvbW1p dF9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2NoYW5nZV9jYiAhPSBO VUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX21lc3NhZ2VfY2IgIT0gTlVMTCkgfHwK KwkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxfY2IgIT0gTlVMTCkgfHwKIAkJKGN0eC0+Y2Fs bGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBOVUxMKTsKIAogCS8qCiAJICogc3RyZWFtaW5n IGNhbGxiYWNrcwogCSAqCi0JICogc3RyZWFtX21lc3NhZ2UgYW5kIHN0cmVhbV90cnVuY2F0ZSBj YWxsYmFja3MgYXJlIG9wdGlvbmFsLCBzbyB3ZSBkbyBub3QKKwkgKiBzdHJlYW1fbWVzc2FnZSwg c3RyZWFtX2RkbCBhbmQgc3RyZWFtX3RydW5jYXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsIHNv IHdlIGRvIG5vdAogCSAqIGZhaWwgd2l0aCBFUlJPUiB3aGVuIG1pc3NpbmcsIGJ1dCB0aGUgd3Jh cHBlcnMgc2ltcGx5IGRvIG5vdGhpbmcuIFdlCiAJICogbXVzdCBzZXQgdGhlIFJlb3JkZXJCdWZm ZXIgY2FsbGJhY2tzIHRvIHNvbWV0aGluZywgb3RoZXJ3aXNlIHRoZSBjYWxscwogCSAqIGZyb20g dGhlcmUgd2lsbCBjcmFzaCAod2UgZG9uJ3Qgd2FudCB0byBtb3ZlIHRoZSBjaGVja3MgdGhlcmUp LgpAQCAtMjU0LDYgKzI2Niw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0 X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVhbV9j b21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJlYW1f Y2hhbmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0cmVh bV9tZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zdHJlYW1fZGRsID0gc3RyZWFt X2RkbF9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX3RydW5jYXRlID0gc3RyZWFt X3RydW5jYXRlX2NiX3dyYXBwZXI7CiAKIApAQCAtMTI2MCw2ICsxMjczLDQ0IEBAIG1lc3NhZ2Vf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKIH0KIAorc3RhdGlj IHZvaWQKK2RkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCisJCQkJCSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJICBjb25zdCBj aGFyICpwcmVmaXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJ CQkgIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJ TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dp Y2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNh bGxiYWNrOworCisJQXNzZXJ0KCFjdHgtPmZhc3RfZm9yd2FyZCk7CisKKwlpZiAoY3R4LT5jYWxs YmFja3MuZGRsX2NiID09IE5VTEwpCisJCXJldHVybjsKKworCS8qIFB1c2ggY2FsbGJhY2sgKyBp bmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0 YXRlLmNhbGxiYWNrX25hbWUgPSAiZGRsIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNz YWdlX2xzbjsKKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2Fs bGJhY2s7CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNr LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0g JmVycmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dy aXRlcyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4tPnhpZDsKKwljdHgtPndyaXRlX2xv Y2F0aW9uID0gbWVzc2FnZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2Fs bGJhY2sgKi8KKwljdHgtPmNhbGxiYWNrcy5kZGxfY2IoY3R4LCB0eG4sIG1lc3NhZ2VfbHNuLCBw cmVmaXgsIHJlbGlkLCBjbWR0eXBlLAorCQkJCQkJCQkgbWVzc2FnZV9zaXplLCBtZXNzYWdlKTsK KworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3Rh Y2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKK30KKwogc3RhdGljIHZvaWQKIHN0cmVhbV9zdGFy dF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4s CiAJCQkJCQlYTG9nUmVjUHRyIGZpcnN0X2xzbikKQEAgLTE1NzUsNiArMTYyNiw0OCBAQCBzdHJl YW1fbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOwog fQogCitzdGF0aWMgdm9pZAorc3RyZWFtX2RkbF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNh Y2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9s c24sCisJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1h bmRUeXBlIGNtZHR5cGUsCisJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCSBjb25z dCBjaGFyICptZXNzYWdlKQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hl LT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5mYXN0X2Zvcndh cmQpOworCisJLyogV2UncmUgb25seSBzdXBwb3NlZCB0byBjYWxsIHRoaXMgd2hlbiBzdHJlYW1p bmcgaXMgc3VwcG9ydGVkLiAqLworCUFzc2VydChjdHgtPnN0cmVhbWluZyk7CisKKwkvKiB0aGlz IGNhbGxiYWNrIGlzIG9wdGlvbmFsICovCisJaWYgKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxf Y2IgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogUHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhl IGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwlzdGF0ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJh Y2tfbmFtZSA9ICJzdHJlYW1fZGRsIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBtZXNzYWdl X2xzbjsKKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJh Y2s7CisJZXJyY2FsbGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnBy ZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVy cmNhbGxiYWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRl cyA9IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4tPnhpZDsKKwljdHgtPndyaXRlX2xvY2F0 aW9uID0gbWVzc2FnZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJh Y2sgKi8KKwljdHgtPmNhbGxiYWNrcy5zdHJlYW1fZGRsX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xz biwgcHJlZml4LCByZWxpZCwKKwkJCQkJCQkJCQljbWR0eXBlLCBtZXNzYWdlX3NpemUsIG1lc3Nh Z2UpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4 dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFt X3RydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCmluZGV4 IDU1YTI0YzAyYzkuLmJlY2VjYzNmOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIm5vZGVz L21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWwuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdl LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmQuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgpAQCAtMzc1LDMgKzM3NiwyNiBAQCBwZ19s b2dpY2FsX2VtaXRfbWVzc2FnZV90ZXh0KFBHX0ZVTkNUSU9OX0FSR1MpCiAJLyogYnl0ZWEgYW5k IHRleHQgYXJlIGNvbXBhdGlibGUgKi8KIAlyZXR1cm4gcGdfbG9naWNhbF9lbWl0X21lc3NhZ2Vf Ynl0ZWEoZmNpbmZvKTsKIH0KKworLyoKKyAqIFNRTCBmdW5jdGlvbiBmb3Igd3JpdGluZyBsb2dp Y2FsIGRlY29kaW5nIERETCBtZXNzYWdlIGludG8gV0FMLgorICovCitEYXR1bQorcGdfbG9naWNh bF9lbWl0X2RkbF9tZXNzYWdlX2J5dGVhKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJY2hhcgkgICAq cHJlZml4ID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlPaWQJCQly ZWxpZCA9IFBHX0dFVEFSR19PSUQoMSk7CisJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlID0g UEdfR0VUQVJHX0lOVDE2KDIpOworCWNoYXIJICAgKmRhdGEgPSB0ZXh0X3RvX2NzdHJpbmcoUEdf R0VUQVJHX1RFWFRfUFAoMykpOworCVhMb2dSZWNQdHIJbHNuOworCisJbHNuID0gTG9nTG9naWNh bERETE1lc3NhZ2UocHJlZml4LCByZWxpZCwgY21kdHlwZSwgZGF0YSwgc3RybGVuKGRhdGEpKTsK KwlQR19SRVRVUk5fTFNOKGxzbik7Cit9CisKK0RhdHVtCitwZ19sb2dpY2FsX2VtaXRfZGRsX21l c3NhZ2VfdGV4dChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIGJ5dGVhIGFuZCB0ZXh0IGFyZSBj b21wYXRpYmxlICovCisJcmV0dXJuIHBnX2xvZ2ljYWxfZW1pdF9kZGxfbWVzc2FnZV9ieXRlYShm Y2luZm8pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQK aW5kZXggZDQ4Y2Q0YzU5MC4uMDVlNzc1Njk3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0yLDYgKzIsOCBAQAogCiBiYWNrZW5kX3NvdXJjZXMg Kz0gZmlsZXMoCiAgICdhcHBseXBhcmFsbGVsd29ya2VyLmMnLAorICAnZGRsbWVzc2FnZS5jJywK KyAgJ2RkbHRyaWdnZXIuYycsCiAgICdkZWNvZGUuYycsCiAgICdsYXVuY2hlci5jJywKICAgJ2xv Z2ljYWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZjMw ODcxMzI3NS4uN2VjM2I3MTY2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYwpAQCAtNjYzLDYgKzY2Myw0NyBAQCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5n SW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAlwcV9zZW5kYnl0 ZXMob3V0LCBtZXNzYWdlLCBzeik7CiB9CiAKKy8qCisgKiBSZWFkIERETCBmcm9tIHN0cmVhbQor ICovCitjaGFyICoKK2xvZ2ljYWxyZXBfcmVhZF9kZGwoU3RyaW5nSW5mbyBpbiwgWExvZ1JlY1B0 ciAqbHNuLAorCQkJCQkJICAgY29uc3QgY2hhciAqKnByZWZpeCwKKwkJCQkJCSAgIFNpemUgKnN6 KQoreworCXVpbnQ4IGZsYWdzOworCWNoYXIgKm1zZzsKKworCWZsYWdzID0gcHFfZ2V0bXNnaW50 KGluLCAxKTsKKwlpZiAoZmxhZ3MgIT0gMCkKKwkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBm bGFncyAldSBpbiBkZGwgbWVzc2FnZSIsIGZsYWdzKTsKKworCSpsc24gPSBwcV9nZXRtc2dpbnQ2 NChpbik7CisJKnByZWZpeCA9IHBxX2dldG1zZ3N0cmluZyhpbik7CisJKnN6ID0gcHFfZ2V0bXNn aW50KGluLCA0KTsKKwltc2cgPSAoY2hhciAqKSBwcV9nZXRtc2dieXRlcyhpbiwgKnN6KTsKKwor CXJldHVybiBtc2c7Cit9CisKKy8qCisgKiBXcml0ZSBEREwgdG8gc3RyZWFtCisgKi8KK3ZvaWQK K2xvZ2ljYWxyZXBfd3JpdGVfZGRsKFN0cmluZ0luZm8gb3V0LCBYTG9nUmVjUHRyIGxzbiwKKwkJ CQkJCQljb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7 CisJdWludDgJCWZsYWdzID0gMDsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNH X0RETCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZsYWdzKTsKKwlwcV9zZW5kaW50NjQob3V0LCBs c24pOworCXBxX3NlbmRzdHJpbmcob3V0LCBwcmVmaXgpOworCXBxX3NlbmRpbnQzMihvdXQsIHN6 KTsKKwlwcV9zZW5kYnl0ZXMob3V0LCBtZXNzYWdlLCBzeik7Cit9CisKIC8qCiAgKiBXcml0ZSBy ZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4KICAqLwpAQCAtMTIzOCw2 ICsxMjc5LDggQEAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0 aW9uKQogCQkJcmV0dXJuICJUWVBFIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRToK IAkJCXJldHVybiAiTUVTU0FHRSI7CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETDoKKwkJCXJl dHVybiAiRERMIjsKIAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRToKIAkJCXJl dHVybiAiQkVHSU4gUFJFUEFSRSI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1BSRVBBUkU6CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4 IDI2ZDI1MmJkODcuLmQyMTA0MmU3MjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSAibGli L2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQu aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCkBAIC01MTYsNiArNTE3LDE0IEBAIFJlb3Jk ZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJDaGFu Z2UgKmNoYW5nZSwKIAkJCQlwZnJlZShjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UpOwogCQkJY2hh bmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTlVMTDsKIAkJCWJyZWFrOworCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9EREw6CisJCQlpZiAoY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXggIT0gTlVM TCkKKwkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCk7CisJCQljaGFuZ2UtPmRhdGEu ZGRsLnByZWZpeCA9IE5VTEw7CisJCQlpZiAoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlICE9IE5V TEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlKTsKKwkJCWNoYW5nZS0+ZGF0 YS5kZGwubWVzc2FnZSA9IE5VTEw7CisJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfSU5WQUxJREFUSU9OOgogCQkJaWYgKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRp b25zKQogCQkJCXBmcmVlKGNoYW5nZS0+ZGF0YS5pbnZhbC5pbnZhbGlkYXRpb25zKTsKQEAgLTg5 NSw2ICs5MDQsMzYgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVyICpy YiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJfQogfQogCisvKgorICogQSB0cmFuc2FjdGlvbmFsIERE TCBtZXNzYWdlIGlzIHF1ZXVlZCB0byBiZSBwcm9jZXNzZWQgdXBvbiBjb21taXQuCisgKi8KK3Zv aWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLAorCQkJCQkJCSBYTG9nUmVjUHRyIGxzbiwgY29uc3QgY2hhciAqcHJlZml4 LAorCQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSwKKwkJCQkJ CQkgT2lkIHJlbGlkLCBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUpCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OworCVJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZTsKKworCUFzc2Vy dChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocmItPmNvbnRleHQpOworCisJY2hhbmdlID0gUmVvcmRlckJ1ZmZlckdldENo YW5nZShyYik7CisJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOwor CWNoYW5nZS0+ZGF0YS5kZGwucHJlZml4ID0gcHN0cmR1cChwcmVmaXgpOworCWNoYW5nZS0+ZGF0 YS5kZGwucmVsaWQgPSByZWxpZDsKKwljaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUgPSBjbWR0eXBl OworCWNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplID0gbWVzc2FnZV9zaXplOworCWNoYW5n ZS0+ZGF0YS5kZGwubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOworCW1lbWNweShjaGFu Z2UtPmRhdGEuZGRsLm1lc3NhZ2UsIG1lc3NhZ2UsIG1lc3NhZ2Vfc2l6ZSk7CisKKwlSZW9yZGVy QnVmZmVyUXVldWVDaGFuZ2UocmIsIHhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKK30KKwogLyoKICAqIEFzc2VydFRYTkxzbk9y ZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBvZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0aGUg cmVvcmRlcmJ1ZmZlcgpAQCAtMTk5Nyw2ICsyMDM2LDI5IEBAIFJlb3JkZXJCdWZmZXJBcHBseU1l c3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJY2hh bmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIH0KIAorLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3Ig UmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4gZm9yIGFwcGx5aW5nIHRoZSBEREwgbWVzc2FnZS4KKyAq Lworc3RhdGljIGlubGluZSB2b2lkCitSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNzYWdlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJIFJlb3JkZXJCdWZm ZXJDaGFuZ2UgKmNoYW5nZSwgYm9vbCBzdHJlYW1pbmcpCit7CisJaWYgKHN0cmVhbWluZykKKwkJ cmItPnN0cmVhbV9kZGwocmIsIHR4biwgY2hhbmdlLT5sc24sCisJCQkJCQkJICBjaGFuZ2UtPmRh dGEuZGRsLnByZWZpeCwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsCisJCQkJCQkJ ICBjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsCisJCQkJCQkJICBjaGFuZ2UtPmRhdGEuZGRsLm1l c3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZSk7CisJZWxzZQor CQlyYi0+ZGRsKHJiLCB0eG4sIGNoYW5nZS0+bHNuLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRs LnByZWZpeCwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5yZWxpZCwKKwkJCQkJICAgY2hhbmdl LT5kYXRhLmRkbC5jbWR0eXBlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vfc2l6 ZSwKKwkJCQkJICAgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlKTsKK30KKwogLyoKICAqIEZ1bmN0 aW9uIHRvIHN0b3JlIHRoZSBjb21tYW5kIGlkIGFuZCBzbmFwc2hvdCBhdCB0aGUgZW5kIG9mIHRo ZSBjdXJyZW50CiAgKiBzdHJlYW0gc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgd2hpbGUg c2VuZGluZyB0aGUgbmV4dCBzdHJlYW0uCkBAIC0yMzc5LDYgKzI0NDEsMTAgQEAgUmVvcmRlckJ1 ZmZlclByb2Nlc3NUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UsIHN0cmVhbWlu Zyk7CiAJCQkJCWJyZWFrOwogCisJCQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMOgor CQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlERExNZXNzYWdlKHJiLCB0eG4sIGNoYW5nZSwgc3RyZWFt aW5nKTsKKwkJCQkJYnJlYWs7CisKIAkJCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZB TElEQVRJT046CiAJCQkJCS8qIEV4ZWN1dGUgdGhlIGludmFsaWRhdGlvbiBtZXNzYWdlcyBsb2Nh bGx5ICovCiAJCQkJCVJlb3JkZXJCdWZmZXJFeGVjdXRlSW52YWxpZGF0aW9ucyhjaGFuZ2UtPmRh dGEuaW52YWwubmludmFsaWRhdGlvbnMsCkBAIC0zODM1LDYgKzM5MDEsMzkgQEAgUmVvcmRlckJ1 ZmZlclNlcmlhbGl6ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAogCQkJCQkgICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CiAJCQkJZGF0YSAr PSBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZTsKIAorCQkJCWJyZWFrOworCQkJfQorCQlj YXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQl7CisJCQkJY2hhcgkgICAqZGF0YTsK KwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEuZGRsLnByZWZpeCkg KyAxOworCisJCQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Vf c2l6ZSArCisJCQkJCXNpemVvZihTaXplKSArIHNpemVvZihPaWQpICsgc2l6ZW9mKERlcGFyc2Vk Q29tbWFuZFR5cGUpICsgc2l6ZW9mKFNpemUpOworCQkJCVJlb3JkZXJCdWZmZXJTZXJpYWxpemVS ZXNlcnZlKHJiLCBzeik7CisKKwkJCQlkYXRhID0gKChjaGFyICopIHJiLT5vdXRidWYpICsgc2l6 ZW9mKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlKTsKKworCQkJCS8qIG1pZ2h0IGhhdmUgYmVlbiBy ZWFsbG9jYXRlZCBhYm92ZSAqLworCQkJCW9uZGlzayA9IChSZW9yZGVyQnVmZmVyRGlza0NoYW5n ZSAqKSByYi0+b3V0YnVmOworCisJCQkJLyogd3JpdGUgdGhlIHByZWZpeCwgcmVsaWQgYW5kIGNt ZHR5cGUgaW5jbHVkaW5nIHRoZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZwcmVmaXhfc2l6 ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHko ZGF0YSwgJmNoYW5nZS0+ZGF0YS5kZGwucmVsaWQsIHNpemVvZihPaWQpKTsKKwkJCQlkYXRhICs9 IHNpemVvZihPaWQpOworCQkJCW1lbWNweShkYXRhLCAmY2hhbmdlLT5kYXRhLmRkbC5jbWR0eXBl LCBzaXplb2YoRGVwYXJzZWRDb21tYW5kVHlwZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKERlcGFy c2VkQ29tbWFuZFR5cGUpOworCQkJCW1lbWNweShkYXRhLCBjaGFuZ2UtPmRhdGEuZGRsLnByZWZp eCwgcHJlZml4X3NpemUpOworCQkJCWRhdGEgKz0gcHJlZml4X3NpemU7CisKKwkJCQkvKiB3cml0 ZSB0aGUgbWVzc2FnZSBpbmNsdWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJmNo YW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplLCBzaXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0g c2l6ZW9mKFNpemUpOworCQkJCW1lbWNweShkYXRhLCBjaGFuZ2UtPmRhdGEuZGRsLm1lc3NhZ2Us CisJCQkJCSAgIGNoYW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplKTsKKwkJCQlkYXRhICs9IGNo YW5nZS0+ZGF0YS5kZGwubWVzc2FnZV9zaXplOworCiAJCQkJYnJlYWs7CiAJCQl9CiAJCWNhc2Ug UkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKQEAgLTQxNDksNiArNDI0OCwxNSBA QCBSZW9yZGVyQnVmZmVyQ2hhbmdlU2l6ZShSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpCiAJ CQkJc3ogKz0gcHJlZml4X3NpemUgKyBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSArCiAJ CQkJCXNpemVvZihTaXplKSArIHNpemVvZihTaXplKTsKIAorCQkJCWJyZWFrOworCQkJfQorCQlj YXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9EREw6CisJCQl7CisJCQkJU2l6ZQkJcHJlZml4X3Np emUgPSBzdHJsZW4oY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXgpICsgMTsKKworCQkJCXN6ICs9IHBy ZWZpeF9zaXplICsgY2hhbmdlLT5kYXRhLmRkbC5tZXNzYWdlX3NpemUgKworCQkJCQlzaXplb2Yo U2l6ZSkgKyBzaXplb2YoU2l6ZSkgKyBzaXplb2YoT2lkKSArIHNpemVvZihEZXBhcnNlZENvbW1h bmRUeXBlKTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlZBTElEQVRJT046CkBAIC00NDI2LDYgKzQ1MzQsMzMgQEAgUmVvcmRlckJ1ZmZlclJlc3Rv cmVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJ ICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOwogCQkJCWRhdGEgKz0gY2hhbmdlLT5k YXRhLm1zZy5tZXNzYWdlX3NpemU7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfRERMOgorCQkJeworCQkJCVNpemUJCXByZWZpeF9zaXplOworCisJCQkJ LyogcmVhZCBwcmVmaXggKi8KKwkJCQltZW1jcHkoJnByZWZpeF9zaXplLCBkYXRhLCBzaXplb2Yo U2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweSgmY2hhbmdlLT5k YXRhLmRkbC5yZWxpZCwgZGF0YSwgc2l6ZW9mKE9pZCkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKE9p ZCk7CisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRhdGEuZGRsLmNtZHR5cGUsIGRhdGEsIHNpemVvZihE ZXBhcnNlZENvbW1hbmRUeXBlKSk7CisJCQkJZGF0YSArPSBzaXplb2YoRGVwYXJzZWRDb21tYW5k VHlwZSk7CisJCQkJY2hhbmdlLT5kYXRhLmRkbC5wcmVmaXggPSBNZW1vcnlDb250ZXh0QWxsb2Mo cmItPmNvbnRleHQsIHByZWZpeF9zaXplKTsKKwkJCQltZW1jcHkoY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXgsIGRhdGEsIHByZWZpeF9zaXplKTsKKwkJCQlBc3NlcnQoY2hhbmdlLT5kYXRhLmRkbC5w cmVmaXhbcHJlZml4X3NpemUgLSAxXSA9PSAnXDAnKTsKKwkJCQlkYXRhICs9IHByZWZpeF9zaXpl OworCisJCQkJLyogcmVhZCB0aGUgbWVzc2FnZSAqLworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRh Lm1zZy5tZXNzYWdlX3NpemUsIGRhdGEsIHNpemVvZihTaXplKSk7CisJCQkJZGF0YSArPSBzaXpl b2YoU2l6ZSk7CisJCQkJY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlID0gTWVtb3J5Q29udGV4dEFs bG9jKHJiLT5jb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICBjaGFuZ2UtPmRhdGEubXNnLm1lc3Nh Z2Vfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSwgZGF0YSwKKwkJ CQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOworCQkJCWRhdGEgKz0gY2hhbmdl LT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CisKIAkJCQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9S REVSX0JVRkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggMGVlNzY0ZDY4Zi4uNWQyY2RjZTVlYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNjYsNiArMTY2LDcgQEAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCisjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyLmgiCkBAIC0xOTEsNyArMTkyLDEwIEBACiAjaW5j bHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJ0Y29wL2RkbGRlcGFyc2UuaCIKKyNp bmNsdWRlICJ0Y29wL3BxdWVyeS5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNs dWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCkBAIC0zMjc3LDYg KzMyODEsMTg5IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAJZW5kX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKIH0KIAorLyoKKyAqIEhhbmRsZSBDUkVBVEUgVEFCTEUgY29tbWFu ZAorICoKKyAqIENhbGwgQWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUgZm9yIENSRUFURSBUQUJMRSBj b21tYW5kIHRvIHNldCB0aGUgcmVsc3RhdGUgdG8KKyAqIFNVQlJFTF9TVEFURV9SRUFEWSBzbyBE TUwgY2hhbmdlcyBvbiB0aGlzIG5ldyB0YWJsZSBjYW4gYmUgcmVwbGljYXRlZCB3aXRob3V0Cisg KiBoYXZpbmcgdG8gbWFudWFsbHkgcnVuICJBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg UFVCTElDQVRJT04iCisgKi8KK3N0YXRpYyB2b2lkCitwb3N0cHJvY2Vzc19kZGxfY3JlYXRlX3Rh YmxlKFJhd1N0bXQgKmNvbW1hbmQpCit7CisJQ29tbWFuZFRhZwljb21tYW5kVGFnOworCVJhbmdl VmFyICAgKnJ2ID0gTlVMTDsKKwlPaWQJCQlyZWxpZDsKKwlPaWQJCQlyZWxuYW1lc3BhY2Vfb2lk ID0gSW52YWxpZE9pZDsKKwlDcmVhdGVTdG10ICpjc3RtdDsKKwljaGFyCSAgICpzY2hlbWFuYW1l ID0gTlVMTDsKKwljaGFyCSAgICpyZWxuYW1lID0gTlVMTDsKKworCWNvbW1hbmRUYWcgPSBDcmVh dGVDb21tYW5kVGFnKChOb2RlICopIGNvbW1hbmQpOworCisJaWYgKGNvbW1hbmRUYWcgIT0gQ01E VEFHX0NSRUFURV9UQUJMRSkKKwkJcmV0dXJuOworCisJY3N0bXQgPSAoQ3JlYXRlU3RtdCAqKSBj b21tYW5kLT5zdG10OworCXJ2ID0gY3N0bXQtPnJlbGF0aW9uOworCWlmICghcnYpCisJCXJldHVy bjsKKworCXNjaGVtYW5hbWUgPSBydi0+c2NoZW1hbmFtZTsKKwlyZWxuYW1lID0gcnYtPnJlbG5h bWU7CisKKwlpZiAoc2NoZW1hbmFtZSAhPSBOVUxMKQorCQlyZWxuYW1lc3BhY2Vfb2lkID0gZ2V0 X25hbWVzcGFjZV9vaWQoc2NoZW1hbmFtZSwgZmFsc2UpOworCisJaWYgKE9pZElzVmFsaWQocmVs bmFtZXNwYWNlX29pZCkpCisJCXJlbGlkID0gZ2V0X3JlbG5hbWVfcmVsaWQocmVsbmFtZSwgcmVs bmFtZXNwYWNlX29pZCk7CisJZWxzZQorCQlyZWxpZCA9IFJlbG5hbWVHZXRSZWxpZChyZWxuYW1l KTsKKworCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKKwl7CisJCUFkZFN1YnNjcmlwdGlvblJlbFN0 YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHJlbGlkLAorCQkJCQkJCQlTVUJSRUxfU1RBVEVfUkVB RFksCisJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRyKTsKKwkJZXJlcG9ydChERUJVRzEsCisJCQkJ KGVycm1zZ19pbnRlcm5hbCgidGFibGUgXCIlc1wiIGFkZGVkIHRvIHN1YnNjcmlwdGlvbiBcIiVz XCIiLAorCQkJCQkJCQkgcmVsbmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJfQorfQor CisvKgorICogSGFuZGxlIERETCBjb21tYW5kcworICoKKyAqIEhhbmRsZSBEREwgcmVwbGljYXRp b24gbWVzc2FnZXMuIENvbnZlcnQgdGhlIGpzb24gc3RyaW5nIGludG8gYSBxdWVyeQorICogc3Ry aW5nIGFuZCBydW4gaXQgdGhyb3VnaCB0aGUgcXVlcnkgcG9ydGFsLgorICovCitzdGF0aWMgdm9p ZAorYXBwbHlfaGFuZGxlX2RkbChTdHJpbmdJbmZvIHMpCit7CisJWExvZ1JlY1B0cglsc247CisJ Y29uc3QgY2hhciAqcHJlZml4ID0gTlVMTDsKKwljaGFyCSAgICptZXNzYWdlID0gTlVMTDsKKwlj aGFyCSAgICpkZGxfY29tbWFuZDsKKwlTaXplCQlzejsKKwlMaXN0CSAgICpwYXJzZXRyZWVfbGlz dDsKKwlMaXN0Q2VsbCAgICpwYXJzZXRyZWVfaXRlbTsKKwlEZXN0UmVjZWl2ZXIgKnJlY2VpdmVy OworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwljb25zdCBjaGFyICpzYXZlX2RlYnVnX3F1 ZXJ5X3N0cmluZyA9IGRlYnVnX3F1ZXJ5X3N0cmluZzsKKworCW1lc3NhZ2UgPSBsb2dpY2FscmVw X3JlYWRfZGRsKHMsICZsc24sICZwcmVmaXgsICZzeik7CisKKwlTZXRDdXJyZW50U3RhdGVtZW50 U3RhcnRUaW1lc3RhbXAoKTsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7 CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJ ZGRsX2NvbW1hbmQgPSBkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhtZXNzYWdlKTsKKwlkZWJ1 Z19xdWVyeV9zdHJpbmcgPSBkZGxfY29tbWFuZDsKKworCS8qIERlc3ROb25lIGZvciBsb2dpY2Fs IHJlcGxpY2F0aW9uICovCisJcmVjZWl2ZXIgPSBDcmVhdGVEZXN0UmVjZWl2ZXIoRGVzdE5vbmUp OworCXBhcnNldHJlZV9saXN0ID0gcGdfcGFyc2VfcXVlcnkoZGRsX2NvbW1hbmQpOworCisJZm9y ZWFjaChwYXJzZXRyZWVfaXRlbSwgcGFyc2V0cmVlX2xpc3QpCisJeworCQlMaXN0CSAgICpwbGFu dHJlZV9saXN0OworCQlMaXN0CSAgICpxdWVyeXRyZWVfbGlzdDsKKwkJUmF3U3RtdCAgICAqY29t bWFuZCA9IChSYXdTdG10ICopIGxmaXJzdChwYXJzZXRyZWVfaXRlbSk7CisJCUNvbW1hbmRUYWcJ Y29tbWFuZFRhZzsKKwkJTWVtb3J5Q29udGV4dCBwZXJfcGFyc2V0cmVlX2NvbnRleHQgPSBOVUxM OworCQlQb3J0YWwJCXBvcnRhbDsKKwkJYm9vbAkJc25hcHNob3Rfc2V0ID0gZmFsc2U7CisKKwkJ Y29tbWFuZFRhZyA9IENyZWF0ZUNvbW1hbmRUYWcoKE5vZGUgKikgY29tbWFuZCk7CisKKwkJLyog SWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwYXJzaW5nIG9yIHByaW9yIGNvbW1hbmQsIHF1 aXQgKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkvKgorCQkgKiBTZXQgdXAgYSBz bmFwc2hvdCBpZiBwYXJzZSBhbmFseXNpcy9wbGFubmluZyB3aWxsIG5lZWQgb25lLgorCQkgKi8K KwkJaWYgKGFuYWx5emVfcmVxdWlyZXNfc25hcHNob3QoY29tbWFuZCkpCisJCXsKKwkJCVB1c2hB Y3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJc25hcHNob3Rfc2V0 ID0gdHJ1ZTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGRvIHRoZSB3b3JrIGZvciBlYWNoIHBhcnNl dHJlZSBpbiBhIHNob3J0LWxpdmVkIGNvbnRleHQsIHRvCisJCSAqIGxpbWl0IHRoZSBtZW1vcnkg dXNlZCB3aGVuIHRoZXJlIGFyZSBtYW55IGNvbW1hbmRzIGluIHRoZSBzdHJpbmcuCisJCSAqLwor CQlwZXJfcGFyc2V0cmVlX2NvbnRleHQgPQorCQkJQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEN1cnJl bnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkgICJleGVjdXRlX3NxbF9zdHJpbmcgcGVyLXN0YXRl bWVudCBjb250ZXh0IiwKKwkJCQkJCQkJICBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwkJb2xk Y29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcGFyc2V0cmVlX2NvbnRleHQpOwor CisJCXF1ZXJ5dHJlZV9saXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhj b21tYW5kLAorCQkJCQkJCQkJCQkJCQkJZGRsX2NvbW1hbmQsCisJCQkJCQkJCQkJCQkJCQlOVUxM LCAwLCBOVUxMKTsKKworCQlwbGFudHJlZV9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5dHJl ZV9saXN0LCBkZGxfY29tbWFuZCwgMCwgTlVMTCk7CisKKwkJLyogRG9uZSB3aXRoIHRoZSBzbmFw c2hvdCB1c2VkIGZvciBwYXJzaW5nL3BsYW5uaW5nICovCisJCWlmIChzbmFwc2hvdF9zZXQpCisJ CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJCXBvcnRhbCA9IENyZWF0ZVBvcnRhbCgibG9naWNh bCByZXBsaWNhdGlvbiIsIHRydWUsIHRydWUpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGhhdmUg dG8gY29weSBhbnl0aGluZyBpbnRvIHRoZSBwb3J0YWwsIGJlY2F1c2UgZXZlcnl0aGluZworCQkg KiB3ZSBhcmUgcGFzc2luZyBoZXJlIGlzIGluIEFwcGx5TWVzc2FnZUNvbnRleHQgb3IgdGhlCisJ CSAqIHBlcl9wYXJzZXRyZWVfY29udGV4dCwgYW5kIHNvIHdpbGwgb3V0bGl2ZSB0aGUgcG9ydGFs IGFueXdheS4KKwkJICovCisJCVBvcnRhbERlZmluZVF1ZXJ5KHBvcnRhbCwKKwkJCQkJCSAgTlVM TCwKKwkJCQkJCSAgZGRsX2NvbW1hbmQsCisJCQkJCQkgIGNvbW1hbmRUYWcsCisJCQkJCQkgIHBs YW50cmVlX2xpc3QsCisJCQkJCQkgIE5VTEwpOworCisJCS8qCisJCSAqIFN0YXJ0IHRoZSBwb3J0 YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCisJCSAqLworCQlQb3J0YWxTdGFydChwb3J0YWwsIE5V TEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisKKwkJLyoKKwkJICogU3dpdGNoIGJhY2sgdG8gdHJh bnNhY3Rpb24gY29udGV4dCBmb3IgZXhlY3V0aW9uLgorCQkgKi8KKwkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOworCisJCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLAorCQkJCQkJ IEZFVENIX0FMTCwKKwkJCQkJCSB0cnVlLAorCQkJCQkJIHRydWUsCisJCQkJCQkgcmVjZWl2ZXIs CisJCQkJCQkgcmVjZWl2ZXIsCisJCQkJCQkgTlVMTCk7CisKKwkJUG9ydGFsRHJvcChwb3J0YWws IGZhbHNlKTsKKworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCS8qCisJCSAqIFRh YmxlIGNyZWF0ZWQgYnkgRERMIHJlcGxpY2F0aW9uIChkYXRhYmFzZSBsZXZlbCkgaXMgYXV0b21h dGljYWxseQorCQkgKiBhZGRlZCB0byB0aGUgc3Vic2NyaXB0aW9uIGhlcmUuCisJCSAqLworCQlw b3N0cHJvY2Vzc19kZGxfY3JlYXRlX3RhYmxlKGNvbW1hbmQpOworCisJCS8qIE5vdyB3ZSBtYXkg ZHJvcCB0aGUgcGVyLXBhcnNldHJlZSBjb250ZXh0LCBpZiBvbmUgd2FzIGNyZWF0ZWQuICovCisJ CU1lbW9yeUNvbnRleHREZWxldGUocGVyX3BhcnNldHJlZV9jb250ZXh0KTsKKwl9CisKKwlkZWJ1 Z19xdWVyeV9zdHJpbmcgPSBzYXZlX2RlYnVnX3F1ZXJ5X3N0cmluZzsKKworCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7Cit9CiAKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29s IG1lc3NhZ2UgZGlzcGF0Y2hlci4KQEAgLTMzNDIsNiArMzUyOSwxMCBAQCBhcHBseV9kaXNwYXRj aChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX0RETDoKKwkJCWFwcGx5X2hhbmRsZV9kZGwocyk7CisJCQlicmVhazsKKwogCQljYXNlIExP R0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJCQlhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0 KHMpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYwppbmRleCBiMDhjYTU1MDQxLi5hZjYzNGIyNWJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgpA QCAtNTUsNiArNTYsMTEgQEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1Jl Y1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFy ICpwcmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGlj IHZvaWQgcGdvdXRwdXRfZGRsKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCSBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkgY29u c3QgY2hhciAqcHJlZml4LCBPaWQgcmVsaWQsCisJCQkJCQkgRGVwYXJzZWRDb21tYW5kVHlwZSBj bWR0eXBlLAorCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogc3RhdGljIGJv b2wgcGdvdXRwdXRfb3JpZ2luX2ZpbHRlcihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJ CQkJCQkJCSAgIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7CiBzdGF0aWMgdm9pZCBwZ291dHB1dF9i ZWdpbl9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCkBAIC0yMDcsNiAr MjEzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uU3luY0VudHJ5CiB0eXBlZGVmIHN0cnVj dCBQR091dHB1dFR4bkRhdGEKIHsKIAlib29sCQlzZW50X2JlZ2luX3R4bjsgLyogZmxhZyBpbmRp Y2F0aW5nIHdoZXRoZXIgQkVHSU4gaGFzIGJlZW4gc2VudCAqLworCS8qCisJICogTWFpbnRhaW4g bGlzdCBvZiBkZWxldGVkIG9pZHMgd2hpY2ggYXJlIGFkZGVkIGF0IGNvbW1hbmQgc3RhcnQuCisJ ICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGF0IGNvbW1hbmQgZW5kIHdoZW4gdGhlIGFjdHVh bCBjb21tYW5kIGlzIHNlbnQKKwkgKiB0aGUgY2F0YWxvZ3MgaGF2ZSBiZWVuIG1vZGlmaWVkIGFu ZCBpdCBpcyBub3QgcG9zc2libGUgdG8ga25vdyBpZiB0aGUgb2lkCisJICogd2FzIHJlZmVycmlu ZyB0byBhbiBvYmplY3QgdGhhdCB3YXMgcGFydCBvZiB0aGUgcHVibGljYXRpb24uCisJICovCisJ TGlzdAkgICAqZGVsZXRlZF9yZWxpZHM7IC8qIG1haW50YWluIGxpc3Qgb2YgZGVsZXRlZCB0YWJs ZSBvaWRzICovCiB9IFBHT3V0cHV0VHhuRGF0YTsKIAogLyogTWFwIHVzZWQgdG8gcmVtZW1iZXIg d2hpY2ggcmVsYXRpb24gc2NoZW1hcyB3ZSBzZW50LiAqLwpAQCAtMjU0LDYgKzI2Nyw3IEBAIF9Q R19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+Y2hh bmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3Ry dW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRfbWVzc2FnZTsKKwljYi0+ZGRsX2Ni ID0gcGdvdXRwdXRfZGRsOwogCWNiLT5jb21taXRfY2IgPSBwZ291dHB1dF9jb21taXRfdHhuOwog CiAJY2ItPmJlZ2luX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9iZWdpbl9wcmVwYXJlX3R4bjsKQEAg LTI3MCw2ICsyODQsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxi YWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRfY2IgPSBwZ291dHB1dF9zdHJlYW1fY29tbWl0 OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT5zdHJlYW1f bWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJY2ItPnN0cmVhbV9kZGxfY2IgPSBwZ291 dHB1dF9kZGw7CiAJY2ItPnN0cmVhbV90cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwog CS8qIHRyYW5zYWN0aW9uIHN0cmVhbWluZyAtIHR3by1waGFzZSBjb21taXQgKi8KIAljYi0+c3Ry ZWFtX3ByZXBhcmVfY2IgPSBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG47CkBAIC01MDUsNiAr NTIwLDcgQEAgcGdvdXRwdXRfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91 dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAogCQkvKiBJbml0IHB1YmxpY2F0aW9uIHN0YXRlLiAq LwogCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBOSUw7CisJCWRhdGEtPmRlbGV0ZWRfcmVsaWRzID0g TklMOwogCQlwdWJsaWNhdGlvbnNfdmFsaWQgPSBmYWxzZTsKIAogCQkvKgpAQCAtNTMzLDYgKzU0 OSwzNCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0 cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCX0KIH0KIAorLyogSW5pdGlhbGl6ZSB0aGUgcGVyLXRy YW5zYWN0aW9uIHByaXZhdGUgZGF0YSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqLworc3Rh dGljIHZvaWQKK2luaXRfdHhuX2RhdGEoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4pCit7CisJUEdPdXRwdXRUeG5EYXRhICp0eG5kYXRhOworCisJaWYg KHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlICE9IE5VTEwpCisJCXJldHVybjsKKworCXR4bmRh dGEgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKGN0eC0+Y29udGV4dCwgc2l6ZW9mKFBHT3V0cHV0 VHhuRGF0YSkpOworCisJdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGUgPSB0eG5kYXRhOworfQor CisvKiBDbGVhbiB1cCB0aGUgcGVyLXRyYW5zYWN0aW9uIHByaXZhdGUgZGF0YSBmb3IgdGhlIGdp dmVuIHRyYW5zYWN0aW9uLiAqLworc3RhdGljIHZvaWQKK2NsZWFuX3R4bl9kYXRhKFJlb3JkZXJC dWZmZXJUWE4gKnR4bikKK3sKKwlQR091dHB1dFR4bkRhdGEgKnR4bmRhdGEgPSAoUEdPdXRwdXRU eG5EYXRhICopIHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJaWYgKHR4bmRhdGEgPT0g TlVMTCkKKwkJcmV0dXJuOworCisJbGlzdF9mcmVlKHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzKTsK KwlwZnJlZSh0eG5kYXRhKTsKKwl0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZSA9IE5VTEw7Cit9 CisKIC8qCiAgKiBCRUdJTiBjYWxsYmFjay4KICAqCkBAIC01NDYsMTAgKzU5MCw3IEBAIHBnb3V0 cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRp b25zICpvcHQsCiBzdGF0aWMgdm9pZAogcGdvdXRwdXRfYmVnaW5fdHhuKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKQogewotCVBHT3V0cHV0VHhuRGF0 YSAqdHhuZGF0YSA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oY3R4LT5jb250ZXh0LAotCQkJCQkJ CQkJCQkJCSAgc2l6ZW9mKFBHT3V0cHV0VHhuRGF0YSkpOwotCi0JdHhuLT5vdXRwdXRfcGx1Z2lu X3ByaXZhdGUgPSB0eG5kYXRhOworCWluaXRfdHhuX2RhdGEoY3R4LCB0eG4pOwogfQogCiAvKgpA QCAtNTk0LDggKzYzNSw3IEBAIHBnb3V0cHV0X2NvbW1pdF90eG4oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJICovCiAJc2VudF9iZWdpbl90eG4g PSB0eG5kYXRhLT5zZW50X2JlZ2luX3R4bjsKIAlPdXRwdXRQbHVnaW5VcGRhdGVQcm9ncmVzcyhj dHgsICFzZW50X2JlZ2luX3R4bik7Ci0JcGZyZWUodHhuZGF0YSk7Ci0JdHhuLT5vdXRwdXRfcGx1 Z2luX3ByaXZhdGUgPSBOVUxMOworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiAKIAlpZiAoIXNlbnRf YmVnaW5fdHhuKQogCXsKQEAgLTYzNyw2ICs2NzcsOCBAQCBwZ291dHB1dF9wcmVwYXJlX3R4bihM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRw dXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKIAlsb2dpY2FscmVwX3dyaXRlX3ByZXBh cmUoY3R4LT5vdXQsIHR4biwgcHJlcGFyZV9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwg dHJ1ZSk7CisKKwljbGVhbl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTY2NSw2ICsxNzA3 LDEwNyBAQCBwZ291dHB1dF9tZXNzYWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAK Ky8qIENoZWNrIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgcHVibGlzaGVkLiAqLworc3RhdGljIGJv b2wKK2lzX29iamVjdF9wdWJsaXNoZWQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBPaWQg b2JqaWQpCit7CisJUmVsYXRpb24JcmVsYXRpb24gPSBOVUxMOworCVJlbGF0aW9uU3luY0VudHJ5 ICpyZWxlbnRyeTsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+ b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJLyogRmlyc3QgY2hlY2sgdGhlIERETCBjb21tYW5k IGZpbHRlci4gKi8KKwlzd2l0Y2ggKGdldF9yZWxfcmVsa2luZChvYmppZCkpCisJeworCQljYXNl IFJFTEtJTkRfUkVMQVRJT046CisJCWNhc2UgUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRToKKwkJ CXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKG9iamlkKTsKKwkJCXJlbGVudHJ5ID0g Z2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0aW9uKTsKKwkJCVJlbGF0aW9uQ2xvc2UocmVs YXRpb24pOworCisJCQkvKiBPbmx5IHNlbmQgdGhpcyBkZGwgaWYgd2UgcHVibGlzaCBkZGwgbWVz c2FnZS4gKi8KKwkJCWlmIChyZWxlbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUpCisJCQkJ cmV0dXJuIHRydWU7CisKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJLyogdW5zdXBwb3J0ZWQg b2JqZWN0cyAqLworCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwor LyoKKyAqIFNlbmQgdGhlIGRlY29kZWQgRERMIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCitw Z291dHB1dF9kZGwoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCisJCQkgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCSBjb25zdCBjaGFyICpwcmVm aXgsIE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJIFNpemUgc3os IGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJUEdPdXRwdXRUeG5EYXRhICp0eG5kYXRhID0gKFBH T3V0cHV0VHhuRGF0YSAqKSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCS8qCisJICog Q2hlY2sgaWYgdGhlIGdpdmVuIG9iamVjdCBpcyBwdWJsaXNoZWQuIE5vdGUgdGhhdCBmb3IgZHJv cHBlZCBvYmplY3RzLAorCSAqIHdlIGNhbm5vdCBnZXQgdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9u IGZyb20gdGhlIGNhdGFsb2csIHNvIHdlIHNraXAgdGhlCisJICogY2hlY2sgZm9yIHRoZW0uCisJ ICovCisJaWYgKGNtZHR5cGUgIT0gRENUX1RhYmxlRHJvcEVuZCAmJiAhaXNfb2JqZWN0X3B1Ymxp c2hlZChjdHgsIHJlbGlkKSkKKwkJcmV0dXJuOworCisJc3dpdGNoIChjbWR0eXBlKQorCXsKKwkJ Y2FzZSBEQ1RfVGFibGVEcm9wU3RhcnQ6CisJCQl7CisJCQkJTWVtb3J5Q29udGV4dAlvbGRjdHg7 CisKKwkJCQlpbml0X3R4bl9kYXRhKGN0eCwgdHhuKTsKKworCQkJCXR4bmRhdGEgPSAoUEdPdXRw dXRUeG5EYXRhICopIHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJCQkJLyoKKwkJCQkg KiBPbiBEUk9QIHN0YXJ0LCBhZGQgdGhlIHJlbGlkIHRvIGEgZGVsZXRlZF9yZWxpZCBsaXN0IGlm IHRoZQorCQkJCSAqIHJlbGlkIGlzIHBhcnQgb2YgYSBwdWJsaWNhdGlvbiB0aGF0IHN1cHBvcnRz IGRkbAorCQkJCSAqIHB1YmxpY2F0aW9uLiBXZSBuZWVkIHRoaXMgYmVjYXVzZSBvbiBEUk9QIGVu ZCwgdGhlIHJlbGlkCisJCQkJICogd2lsbCBubyBsb25nZXIgYmUgdmFsaWQuIExhdGVyIG9uIERy b3AgZW5kLCB2ZXJpZnkgdGhhdCB0aGUKKwkJCQkgKiBkcm9wIGlzIGZvciBhIHJlbGlkIHRoYXQg aXMgb24gdGhlIGRlbGV0ZWRfcmlkIGxpc3QsIGFuZAorCQkJCSAqIG9ubHkgdGhlbiBzZW5kIHRo ZSBkZGwgbWVzc2FnZS4KKwkJCQkgKi8KKwkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8oY3R4LT5jb250ZXh0KTsKKwkJCQl0eG5kYXRhLT5kZWxldGVkX3JlbGlkcyA9IGxhcHBlbmRf b2lkKHR4bmRhdGEtPmRlbGV0ZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCSAgcmVsaWQpOworCQkJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQorCQkJcmV0dXJuOworCisJCWNh c2UgRENUX1RhYmxlRHJvcEVuZDoKKwkJCWlmICghbGlzdF9tZW1iZXJfb2lkKHR4bmRhdGEtPmRl bGV0ZWRfcmVsaWRzLCByZWxpZCkpCisJCQkJcmV0dXJuOworCisJCQl0eG5kYXRhLT5kZWxldGVk X3JlbGlkcyA9IGxpc3RfZGVsZXRlX29pZCh0eG5kYXRhLT5kZWxldGVkX3JlbGlkcywKKwkJCQkJ CQkJCQkJCQkgIHJlbGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgRENUX1RhYmxlQWx0ZXI6CisJ CWNhc2UgRENUX1NpbXBsZUNtZDoKKwkJCS8qIGRvIG5vdGhpbmcgKi8KKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5zdXBwb3J0ZWQgdHlwZSAlZCIsIGNtZHR5cGUp OworCQkJYnJlYWs7CisJfQorCisJLyogU2VuZCBCRUdJTiBpZiB3ZSBoYXZlbid0IHlldCAqLwor CWlmICh0eG5kYXRhICYmICF0eG5kYXRhLT5zZW50X2JlZ2luX3R4bikKKwkJcGdvdXRwdXRfc2Vu ZF9iZWdpbihjdHgsIHR4bik7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVl KTsKKwlsb2dpY2FscmVwX3dyaXRlX2RkbChjdHgtPm91dCwgbWVzc2FnZV9sc24sIHByZWZpeCwg c3osIG1lc3NhZ2UpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKIC8qCiAg KiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZGF0YSBpcyBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luIGFu ZCB0aGUgdXNlciBoYXMKICAqIHJlcXVlc3RlZCB0aGUgY2hhbmdlcyB0aGF0IGRvbid0IGhhdmUg YW4gb3JpZ2luLCBmYWxzZSBvdGhlcndpc2UuCkBAIC0xODEzLDYgKzE5NTYsNyBAQCBwZ291dHB1 dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAlPdXRw dXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0 eG4tPnhpZCwgZmFsc2UpOworCWNsZWFuX3R4bl9kYXRhKHR4bik7CiB9CiAKIC8qCkBAIC0xODM4 LDYgKzE5ODIsNyBAQCBwZ291dHB1dF9zdHJlYW1fY29tbWl0KHN0cnVjdCBMb2dpY2FsRGVjb2Rp bmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIAogCWNsZWFu dXBfcmVsX3N5bmNfY2FjaGUodHhuLT54aWQsIHRydWUpOworCWNsZWFuX3R4bl9kYXRhKHR4bik7 CiB9CiAKIC8qCkBAIC0xODU2LDYgKzIwMDEsOCBAQCBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90 eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0 ZShjdHgsIHRydWUpOwogCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX3ByZXBhcmUoY3R4LT5vdXQs IHR4biwgcHJlcGFyZV9sc24pOwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CisKKwlj bGVhbl90eG5fZGF0YSh0eG4pOwogfQogCiAvKgpAQCAtMTk3Miw4ICsyMTE5LDcgQEAgZ2V0X3Jl bF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJCWVu dHJ5LT5yZXBsaWNhdGVfdmFsaWQgPSBmYWxzZTsKIAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFs c2U7CiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwotCQllbnRyeS0+cHViYWN0aW9ucy5w dWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFj dGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsK KwkJbWVtc2V0KCZlbnRyeS0+cHViYWN0aW9ucywgMCwgc2l6ZW9mKGVudHJ5LT5wdWJhY3Rpb25z KSk7CiAJCWVudHJ5LT5uZXdfc2xvdCA9IE5VTEw7CiAJCWVudHJ5LT5vbGRfc2xvdCA9IE5VTEw7 CiAJCW1lbXNldChlbnRyeS0+ZXhwcnN0YXRlLCAwLCBzaXplb2YoZW50cnktPmV4cHJzdGF0ZSkp OwpAQCAtMjAyNywxMCArMjE3Myw3IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEg KmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQllbnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsK IAkJYm1zX2ZyZWUoZW50cnktPmNvbHVtbnMpOwogCQllbnRyeS0+Y29sdW1ucyA9IE5VTEw7Ci0J CWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IGZhbHNlOwotCQllbnRyeS0+cHViYWN0aW9u cy5wdWJ1cGRhdGUgPSBmYWxzZTsKLQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZmFs c2U7Ci0JCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCW1lbXNldCgm ZW50cnktPnB1YmFjdGlvbnMsIDAsIHNpemVvZihlbnRyeS0+cHViYWN0aW9ucykpOwogCiAJCS8q CiAJCSAqIFR1cGxlIHNsb3RzIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxhdGVyIGlmIG5l ZWRlZCkuCkBAIC0yMTI5LDUzICsyMjcyLDYxIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1 dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCQlwdWJsaXNoID0gdHJ1ZTsKIAkJ CX0KIAotCQkJLyoKLQkJCSAqIElmIHRoZSByZWxhdGlvbiBpcyB0byBiZSBwdWJsaXNoZWQsIGRl dGVybWluZSBhY3Rpb25zIHRvCi0JCQkgKiBwdWJsaXNoLCBhbmQgbGlzdCBvZiBjb2x1bW5zLCBp ZiBhcHByb3ByaWF0ZS4KLQkJCSAqCi0JCQkgKiBEb24ndCBwdWJsaXNoIGNoYW5nZXMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlcywgYmVjYXVzZQotCQkJICogcHVibGlzaGluZyB0aG9zZSBvZiBpdHMg cGFydGl0aW9ucyBzdWZmaWNlcywgdW5sZXNzIHBhcnRpdGlvbgotCQkJICogY2hhbmdlcyB3b24n dCBiZSBwdWJsaXNoZWQgZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcgc2V0LgotCQkJICovCi0JCQlp ZiAocHVibGlzaCAmJgotCQkJCShyZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUg fHwgcHViLT5wdWJ2aWFyb290KSkKKwkJCWlmIChwdWJsaXNoKQogCQkJewotCQkJCWVudHJ5LT5w dWJhY3Rpb25zLnB1Ymluc2VydCB8PSBwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0OwotCQkJCWVu dHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlOwot CQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVs ZXRlOwotCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9u cy5wdWJ0cnVuY2F0ZTsKLQogCQkJCS8qCi0JCQkJICogV2Ugd2FudCB0byBwdWJsaXNoIHRoZSBj aGFuZ2VzIGFzIHRoZSB0b3AtbW9zdCBhbmNlc3RvcgotCQkJCSAqIGFjcm9zcyBhbGwgcHVibGlj YXRpb25zLiBTbyB3ZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBhbHJlYWR5Ci0JCQkJICogY2FsY3Vs YXRlZCBsZXZlbCBpcyBoaWdoZXIgdGhhbiB0aGUgbmV3IG9uZS4gSWYgeWVzLCB3ZSBjYW4KLQkJ CQkgKiBpZ25vcmUgdGhlIG5ldyB2YWx1ZSAoYXMgaXQncyBhIGNoaWxkKS4gT3RoZXJ3aXNlIHRo ZSBuZXcKLQkJCQkgKiB2YWx1ZSBpcyBhbiBhbmNlc3Rvciwgc28gd2Uga2VlcCBpdC4KKwkJCQkg KiBUaGUgYmVoYXZpb3Igb2YgRERMIGxvZ2ljYWwgcmVwbGljYXRpb24gaXMgdW5yZWxhdGVkIHRv CisJCQkJICogcHVidmlhcm9vdC4KIAkJCQkgKi8KLQkJCQlpZiAocHVibGlzaF9hbmNlc3Rvcl9s ZXZlbCA+IGFuY2VzdG9yX2xldmVsKQotCQkJCQljb250aW51ZTsKKwkJCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZTsKIAogCQkJ CS8qCi0JCQkJICogSWYgd2UgZm91bmQgYW4gYW5jZXN0b3IgaGlnaGVyIHVwIGluIHRoZSB0cmVl LCBkaXNjYXJkIHRoZQotCQkJCSAqIGxpc3Qgb2YgcHVibGljYXRpb25zIHRocm91Z2ggd2hpY2gg d2UgcmVwbGljYXRlIGl0LCBhbmQgdXNlCi0JCQkJICogdGhlIG5ldyBhbmNlc3Rvci4KKwkJCQkg KiBJZiB0aGUgcmVsYXRpb24gaXMgdG8gYmUgcHVibGlzaGVkLCBkZXRlcm1pbmUgYWN0aW9ucyB0 bworCQkJCSAqIHB1Ymxpc2gsIGFuZCBsaXN0IG9mIGNvbHVtbnMsIGlmIGFwcHJvcHJpYXRlLgor CQkJCSAqCisJCQkJICogRG9uJ3QgcHVibGlzaCBjaGFuZ2VzIGZvciBwYXJ0aXRpb25lZCB0YWJs ZXMsIGJlY2F1c2UKKwkJCQkgKiBwdWJsaXNoaW5nIHRob3NlIG9mIGl0cyBwYXJ0aXRpb25zIHN1 ZmZpY2VzLCB1bmxlc3MgcGFydGl0aW9uCisJCQkJICogY2hhbmdlcyB3b24ndCBiZSBwdWJsaXNo ZWQgZHVlIHRvIHB1YnZpYXJvb3QgYmVpbmcgc2V0LgogCQkJCSAqLwotCQkJCWlmIChwdWJsaXNo X2FuY2VzdG9yX2xldmVsIDwgYW5jZXN0b3JfbGV2ZWwpCisJCQkJaWYgKHJlbGtpbmQgIT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSB8fCBwdWItPnB1YnZpYXJvb3QpCiAJCQkJewotCQkJCQlw dWJsaXNoX2FzX3JlbGlkID0gcHViX3JlbGlkOwotCQkJCQlwdWJsaXNoX2FuY2VzdG9yX2xldmVs ID0gYW5jZXN0b3JfbGV2ZWw7CisJCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCB8PSBw dWItPnB1YmFjdGlvbnMucHViaW5zZXJ0OworCQkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZTsKKwkJCQkJZW50cnktPnB1YmFjdGlvbnMu cHViZGVsZXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGU7CisJCQkJCWVudHJ5LT5wdWJh Y3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZTsKIAotCQkJ CQkvKiByZXNldCB0aGUgcHVibGljYXRpb24gbGlzdCBmb3IgdGhpcyByZWxhdGlvbiAqLwotCQkJ CQlyZWxfcHVibGljYXRpb25zID0gTklMOwotCQkJCX0KLQkJCQllbHNlCi0JCQkJewotCQkJCQkv KiBTYW1lIGFuY2VzdG9yIGxldmVsLCBoYXMgdG8gYmUgdGhlIHNhbWUgT0lELiAqLwotCQkJCQlB c3NlcnQocHVibGlzaF9hc19yZWxpZCA9PSBwdWJfcmVsaWQpOwotCQkJCX0KKwkJCQkJLyoKKwkJ CQkJICogV2Ugd2FudCB0byBwdWJsaXNoIHRoZSBjaGFuZ2VzIGFzIHRoZSB0b3AtbW9zdCBhbmNl c3RvcgorCQkJCQkgKiBhY3Jvc3MgYWxsIHB1YmxpY2F0aW9ucy4gU28gd2UgbmVlZCB0byBjaGVj ayBpZiB0aGUgYWxyZWFkeQorCQkJCQkgKiBjYWxjdWxhdGVkIGxldmVsIGlzIGhpZ2hlciB0aGFu IHRoZSBuZXcgb25lLiBJZiB5ZXMsIHdlIGNhbgorCQkJCQkgKiBpZ25vcmUgdGhlIG5ldyB2YWx1 ZSAoYXMgaXQncyBhIGNoaWxkKS4gT3RoZXJ3aXNlIHRoZSBuZXcKKwkJCQkJICogdmFsdWUgaXMg YW4gYW5jZXN0b3IsIHNvIHdlIGtlZXAgaXQuCisJCQkJCSAqLworCQkJCQlpZiAocHVibGlzaF9h bmNlc3Rvcl9sZXZlbCA+IGFuY2VzdG9yX2xldmVsKQorCQkJCQkJY29udGludWU7CisKKwkJCQkJ LyoKKwkJCQkJICogSWYgd2UgZm91bmQgYW4gYW5jZXN0b3IgaGlnaGVyIHVwIGluIHRoZSB0cmVl LCBkaXNjYXJkIHRoZQorCQkJCQkgKiBsaXN0IG9mIHB1YmxpY2F0aW9ucyB0aHJvdWdoIHdoaWNo IHdlIHJlcGxpY2F0ZSBpdCwgYW5kIHVzZQorCQkJCQkgKiB0aGUgbmV3IGFuY2VzdG9yLgorCQkJ CQkgKi8KKwkJCQkJaWYgKHB1Ymxpc2hfYW5jZXN0b3JfbGV2ZWwgPCBhbmNlc3Rvcl9sZXZlbCkK KwkJCQkJeworCQkJCQkJcHVibGlzaF9hc19yZWxpZCA9IHB1Yl9yZWxpZDsKKwkJCQkJCXB1Ymxp c2hfYW5jZXN0b3JfbGV2ZWwgPSBhbmNlc3Rvcl9sZXZlbDsKKworCQkJCQkJLyogcmVzZXQgdGhl IHB1YmxpY2F0aW9uIGxpc3QgZm9yIHRoaXMgcmVsYXRpb24gKi8KKwkJCQkJCXJlbF9wdWJsaWNh dGlvbnMgPSBOSUw7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7CisJCQkJCQkvKiBTYW1lIGFu Y2VzdG9yIGxldmVsLCBoYXMgdG8gYmUgdGhlIHNhbWUgT0lELiAqLworCQkJCQkJQXNzZXJ0KHB1 Ymxpc2hfYXNfcmVsaWQgPT0gcHViX3JlbGlkKTsKKwkJCQkJfQogCi0JCQkJLyogVHJhY2sgcHVi bGljYXRpb25zIGZvciB0aGlzIGFuY2VzdG9yLiAqLwotCQkJCXJlbF9wdWJsaWNhdGlvbnMgPSBs YXBwZW5kKHJlbF9wdWJsaWNhdGlvbnMsIHB1Yik7CisJCQkJCS8qIFRyYWNrIHB1YmxpY2F0aW9u cyBmb3IgdGhpcyBhbmNlc3Rvci4gKi8KKwkJCQkJcmVsX3B1YmxpY2F0aW9ucyA9IGxhcHBlbmQo cmVsX3B1YmxpY2F0aW9ucywgcHViKTsKKwkJCQl9CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC9jbWR0YWcuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvY21kdGFnLmMKaW5k ZXggNGJkNzEzYTBiNC4uYTMxYjA2MWViNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9j bWR0YWcuYworKysgYi9zcmMvYmFja2VuZC90Y29wL2NtZHRhZy5jCkBAIC0yNiwxMCArMjYsMTEg QEAgdHlwZWRlZiBzdHJ1Y3QgQ29tbWFuZFRhZ0JlaGF2aW9yCiAJY29uc3QgYm9vbAl0YWJsZV9y ZXdyaXRlX29rOwogCWNvbnN0IGJvb2wJZGlzcGxheV9yb3djb3VudDsJLyogc2hvdWxkIHRoZSBu dW1iZXIgb2Ygcm93cyBhZmZlY3RlZCBiZQogCQkJCQkJCQkJICogc2hvd24gaW4gdGhlIGNvbW1h bmQgY29tcGxldGlvbiBzdHJpbmcgKi8KKwljb25zdCBib29sCWRkbF9yZXBsaWNhdGlvbl9vazsK IH0gQ29tbWFuZFRhZ0JlaGF2aW9yOwogCi0jZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5hbWUsIGV2 dHJnb2ssIHJ3cm9rLCByb3djbnQpIFwKLQl7IG5hbWUsICh1aW50OCkgKHNpemVvZihuYW1lKSAt IDEpLCBldnRyZ29rLCByd3Jvaywgcm93Y250IH0sCisjZGVmaW5lIFBHX0NNRFRBRyh0YWcsIG5h bWUsIGV2dHJnb2ssIHJ3cm9rLCByb3djbnQsIGRkbF9yZXBsX29rKSBcCisJeyBuYW1lLCAodWlu dDgpIChzaXplb2YobmFtZSkgLSAxKSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCwgZGRsX3JlcGxf b2sgfSwKIAogc3RhdGljIGNvbnN0IENvbW1hbmRUYWdCZWhhdmlvciB0YWdfYmVoYXZpb3JbQ09N TUFORF9UQUdfTkVYVFRBR10gPSB7CiAjaW5jbHVkZSAidGNvcC9jbWR0YWdsaXN0LmgiCkBAIC01 Nyw2ICs1OCwyMSBAQCBHZXRDb21tYW5kVGFnTmFtZUFuZExlbihDb21tYW5kVGFnIGNvbW1hbmRU YWcsIFNpemUgKmxlbikKIAlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1hbmRUYWddLm5hbWU7CiB9 CiAKK0NvbW1hbmRUYWcgKgorR2V0Q29tbWFuZFRhZ3NGb3JERExSZXBsKGludCAqbmNvbW1hbmRz KQoreworCUNvbW1hbmRUYWcgKmRkbHJlcGxfY29tbWFuZHMgPSBwYWxsb2MwKENPTU1BTkRfVEFH X05FWFRUQUcgKiBzaXplb2YoQ29tbWFuZFRhZykpOworCSpuY29tbWFuZHMgPSAwOworCisJZm9y KGludCBpID0gMDsgaSA8IENPTU1BTkRfVEFHX05FWFRUQUc7IGkrKykKKwl7CisJCWlmICh0YWdf YmVoYXZpb3JbaV0uZGRsX3JlcGxpY2F0aW9uX29rKQorCQkJZGRscmVwbF9jb21tYW5kc1soKm5j b21tYW5kcykrK10gPSAoQ29tbWFuZFRhZykgaTsKKwl9CisKKwlyZXR1cm4gZGRscmVwbF9jb21t YW5kczsKK30KKwogYm9vbAogY29tbWFuZF90YWdfZGlzcGxheV9yb3djb3VudChDb21tYW5kVGFn IGNvbW1hbmRUYWcpCiB7CkBAIC03NSw2ICs5MSwxMiBAQCBjb21tYW5kX3RhZ190YWJsZV9yZXdy aXRlX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZykKIAlyZXR1cm4gdGFnX2JlaGF2aW9yW2NvbW1h bmRUYWddLnRhYmxlX3Jld3JpdGVfb2s7CiB9CiAKK2Jvb2wKK2NvbW1hbmRfdGFnX2RkbF9yZXBs aWNhdGlvbl9vayhDb21tYW5kVGFnIGNvbW1hbmRUYWcpCit7CisJcmV0dXJuIHRhZ19iZWhhdmlv cltjb21tYW5kVGFnXS5kZGxfcmVwbGljYXRpb25fb2s7Cit9CisKIC8qCiAgKiBTZWFyY2ggQ29t bWFuZFRhZyBieSBuYW1lCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5 LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCBjMGY3ZjI5NzQ3Li43NjY3Yjll MzRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtODk1LDcgKzg5NSw3IEBAIHN0YW5kYXJkX1Byb2Nlc3NV dGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAogCQljYXNlIFRfQ3JlYXRlRXZlbnRUcmlnU3Rt dDoKIAkJCS8qIG5vIGV2ZW50IHRyaWdnZXJzIG9uIGV2ZW50IHRyaWdnZXJzICovCi0JCQlDcmVh dGVFdmVudFRyaWdnZXIoKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKikgcGFyc2V0cmVlKTsKKwkJCUNy ZWF0ZUV2ZW50VHJpZ2dlcigoQ3JlYXRlRXZlbnRUcmlnU3RtdCAqKSBwYXJzZXRyZWUsIGZhbHNl KTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9BbHRlckV2ZW50VHJpZ1N0bXQ6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwppbmRleCA4YTA4NDYzYzJiLi5mMzAyMmYwOGMxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU3MjAsNiArNTcyMCw3IEBAIFJlbGF0aW9uQnVpbGRQ dWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVz YykKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgfD0gcHViZm9ybS0+cHVidXBkYXRl OwogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7 CiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNh dGU7CisJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGRsX3RhYmxlIHw9IHB1YmZvcm0tPnB1YmRk bF90YWJsZTsKIAogCQkvKgogCQkgKiBDaGVjayBpZiBhbGwgY29sdW1ucyByZWZlcmVuY2VkIGlu IHRoZSBmaWx0ZXIgZXhwcmVzc2lvbiBhcmUgcGFydApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNWRhYjFiYTll YS4uMzM0NzI2Y2QwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19sYXJnZW9iamVjdF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9i amVjdF9tZXRhZGF0YV9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jX2QuaCIKKyNpbmNs dWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXJfZC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZV9kLmgiCkBAIC00MDQ3LDYgKzQwNDgsNyBAQCBnZXRQdWJsaWNhdGlv bnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaW50CQkJaV9wdWJ1cGRh dGU7CiAJaW50CQkJaV9wdWJkZWxldGU7CiAJaW50CQkJaV9wdWJ0cnVuY2F0ZTsKKwlpbnQJCQlp X3B1YmRkbF90YWJsZTsKIAlpbnQJCQlpX3B1YnZpYXJvb3Q7CiAJaW50CQkJaSwKIAkJCQludHVw czsKQEAgLTQwNjIsMjMgKzQwNjQsMjkgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQs IGludCAqbnVtUHVibGljYXRpb25zKQogCXJlc2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCiAJLyog R2V0IHRoZSBwdWJsaWNhdGlvbnMuICovCi0JaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTMw MDAwKQorCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKIAkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVi bmFtZSwgIgogCQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMs IHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAu cHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVi dXBkYXRlLCBwLnB1YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJkZGxfdGFibGUsIHAucHVi dmlhcm9vdCAiCisJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKKwllbHNlIGlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksCisJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgorCQkJ CQkJCSAicC5wdWJvd25lciwgIgorCQkJCQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0 LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHVi ZGRsX3RhYmxlLCBwLnB1YnZpYXJvb3QgIgogCQkJCQkJCSAiRlJPTSBwZ19wdWJsaWNhdGlvbiBw Iik7CiAJZWxzZSBpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMTAwMDApCiAJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBw LnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFi bGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRl LCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymlu c2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBhcyBw LnB1YmRkbF90YWJsZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1 YmxpY2F0aW9uIHAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJ CQkJCSAiU0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAu cHVib3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1 cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVidmlh cm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRl LCBwLnB1YmRlbGV0ZSwgZmFsc2UgQVMgcHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHViZGRsX3Rh YmxlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKIAkJCQkJCQkgIkZST00gcGdfcHVibGljYXRpb24g cCIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQR1JFU19U VVBMRVNfT0spOwpAQCAtNDA5NCw2ICs0MTAyLDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtUHVibGljYXRpb25zKQogCWlfcHVidXBkYXRlID0gUFFmbnVtYmVyKHJl cywgInB1YnVwZGF0ZSIpOwogCWlfcHViZGVsZXRlID0gUFFmbnVtYmVyKHJlcywgInB1YmRlbGV0 ZSIpOwogCWlfcHVidHJ1bmNhdGUgPSBQUWZudW1iZXIocmVzLCAicHVidHJ1bmNhdGUiKTsKKwlp X3B1YmRkbF90YWJsZSA9IFBRZm51bWJlcihyZXMsICJwdWJkZGxfdGFibGUiKTsKIAlpX3B1YnZp YXJvb3QgPSBQUWZudW1iZXIocmVzLCAicHVidmlhcm9vdCIpOwogCiAJcHViaW5mbyA9IHBnX21h bGxvYyhudHVwcyAqIHNpemVvZihQdWJsaWNhdGlvbkluZm8pKTsKQEAgLTQxMTcsNiArNDEyNiw4 IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykK IAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZGVsZXRlKSwgInQiKSA9PSAwKTsK IAkJcHViaW5mb1tpXS5wdWJ0cnVuY2F0ZSA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBp LCBpX3B1YnRydW5jYXRlKSwgInQiKSA9PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJkZGxfdGFibGUg PQorCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJkZGxfdGFibGUpLCAidCIpID09 IDApOwogCQlwdWJpbmZvW2ldLnB1YnZpYXJvb3QgPQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJl cywgaSwgaV9wdWJ2aWFyb290KSwgInQiKSA9PSAwKTsKIApAQCAtNDE5Niw3ICs0MjA3LDEwIEBA IGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1 YmluZm8pCiAJCWZpcnN0ID0gZmFsc2U7CiAJfQogCi0JYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHF1 ZXJ5LCAnXCcnKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiciKTsKKworCWlmIChw dWJpbmZvLT5wdWJkZGxfdGFibGUpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBk ZGwgPSAndGFibGUnIik7CiAKIAlpZiAocHViaW5mby0+cHVidmlhcm9vdCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSIp OwpAQCAtNzk5Miw2ICs4MDA2LDcgQEAgZ2V0RXZlbnRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBp bnQgKm51bUV2ZW50VHJpZ2dlcnMpCiAKIAlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAK KwkvKlNraXAgaW50ZXJuYWxseSBjcmVhdGVkIGV2ZW50IHRyaWdnZXJzIGJ5IGNoZWNraW5nIGV2 dGlzaW50ZXJuYWwgKi8KIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCSAiU0VM RUNUIGUudGFibGVvaWQsIGUub2lkLCBldnRuYW1lLCBldnRlbmFibGVkLCAiCiAJCQkJCQkgImV2 dGV2ZW50LCBldnRvd25lciwgIgpAQCAtODAwMCw2ICs4MDE1LDcgQEAgZ2V0RXZlbnRUcmlnZ2Vy cyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUV2ZW50VHJpZ2dlcnMpCiAJCQkJCQkgIiBmcm9tIHVu bmVzdChldnR0YWdzKSBhcyB0KHgpKSwgJywgJykgYXMgZXZ0dGFncywgIgogCQkJCQkJICJlLmV2 dGZvaWQ6OnJlZ3Byb2MgYXMgZXZ0Zm5hbWUgIgogCQkJCQkJICJGUk9NIHBnX2V2ZW50X3RyaWdn ZXIgZSAiCisJCQkJCQkgIldIRVJFIE5PVCBlLmV2dGlzaW50ZXJuYWwgIgogCQkJCQkJICJPUkRF UiBCWSBlLm9pZCIpOwogCiAJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRh LCBQR1JFU19UVVBMRVNfT0spOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggYmM4ZjJlYzM2ZC4uNzY3M2QxNTNh YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCkBAIC02MjEsNiArNjIxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1Ymxp Y2F0aW9uSW5mbwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJ cHVidHJ1bmNhdGU7CisJYm9vbAkJcHViZGRsX3RhYmxlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiB9 IFB1YmxpY2F0aW9uSW5mbzsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAxNTg1MjE4 OGM0Li41YWNiZmFlYjhiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjkxMiw3ICsy OTEyLDcgQEAgbXkgJXRlc3RzID0gKAogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9z cWwgPT4gJ0NSRUFURSBQVUJMSUNBVElPTiBwdWIyCiAJCQkJCQkgRk9SIEFMTCBUQUJMRVMKLQkJ CQkJCSBXSVRIIChwdWJsaXNoID0gXCdcJyk7JywKKwkJCQkJCSBXSVRIIChwdWJsaXNoID0gXCdc JywgZGRsID0gXCdcJyk7JywKIAkJcmVnZXhwID0+IHFyL14KIAkJCVxRQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjIgRk9SIEFMTCBUQUJMRVMgV0lUSCAocHVibGlzaCA9ICcnKTtcRQogCQkJL3htLApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wLy5naXRpZ25vcmUgYi9zcmMvYmluL3BnX3dh bGR1bXAvLmdpdGlnbm9yZQppbmRleCBlYzUxZjQxYzc2Li40ZGY1NjYwYjUxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3dhbGR1bXAvLmdpdGlnbm9yZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAv LmdpdGlnbm9yZQpAQCAtMTAsNiArMTAsNyBAQAogL2dpc3RkZXNjLmMKIC9oYXNoZGVzYy5jCiAv aGVhcGRlc2MuYworL2xvZ2ljYWxkZGxtc2dkZXNjLmMKIC9sb2dpY2FsbXNnZGVzYy5jCiAvbXhh Y3RkZXNjLmMKIC9uYnRkZXNjLmMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9ybWdy ZGVzYy5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMKaW5kZXggNmI4YzE3YmI0Yy4u ZGFmMTczMDI1MiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMKKysr IGIvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs dWRlICJjb21tYW5kcy9kYmNvbW1hbmRzX3hsb2cuaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1 ZW5jZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgogI2luY2x1ZGUgInJtZ3JkZXNjLmgiCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jCmluZGV4IDkzMjVhNDZiOGYuLjc1MGVhMTlkYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02MTgwLDcgKzYx ODAsNyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJUFFFeHBCdWZm ZXJEYXRhIGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBz ZXQucG9wdDsKLQlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJc3Rh dGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVtbnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlp ZiAocHNldC5zdmVyc2lvbiA8IDEwMDAwMCkKIAl7CkBAIC02MjA3LDYgKzYyMDcsMTAgQEAgbGlz dFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkgIGdldHRleHRfbm9vcCgi SW5zZXJ0cyIpLAogCQkJCQkgIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLAogCQkJCQkgIGdldHRl eHRfbm9vcCgiRGVsZXRlcyIpKTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCWFw cGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkgICIsXG4gIHB1YmRkbF90YWJsZSBBUyBcIiVz XCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIlRhYmxlIERETHMiKSk7CiAJaWYgKHBzZXQuc3Zl cnNpb24gPj0gMTEwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxu ICBwdWJ0cnVuY2F0ZSBBUyBcIiVzXCIiLApAQCAtNjMwNSw2ICs2MzA5LDcgQEAgZGVzY3JpYmVQ dWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQR3Jlc3VsdCAgICpyZXM7CiAJYm9v bAkJaGFzX3B1YnRydW5jYXRlOwogCWJvb2wJCWhhc19wdWJ2aWFyb290OworCWJvb2wJCWhhc19w dWJkZGw7CiAKIAlQUUV4cEJ1ZmZlckRhdGEgdGl0bGU7CiAJcHJpbnRUYWJsZUNvbnRlbnQgY29u dDsKQEAgLTYzMTksNiArNjMyNCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIg KnBhdHRlcm4pCiAJCXJldHVybiB0cnVlOwogCX0KIAorCWhhc19wdWJkZGwgPSAgKHBzZXQuc3Zl cnNpb24gPj0gMTYwMDAwKTsKIAloYXNfcHVidHJ1bmNhdGUgPSAocHNldC5zdmVyc2lvbiA+PSAx MTAwMDApOwogCWhhc19wdWJ2aWFyb290ID0gKHBzZXQuc3ZlcnNpb24gPj0gMTMwMDAwKTsKIApA QCAtNjMyOCw2ICs2MzM0LDkgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJCQkJICAiU0VMRUNUIG9pZCwgcHVibmFtZSxcbiIKIAkJCQkJICAiICBwZ19jYXRh bG9nLnBnX2dldF91c2VyYnlpZChwdWJvd25lcikgQVMgb3duZXIsXG4iCiAJCQkJCSAgIiAgcHVi YWxsdGFibGVzLCBwdWJpbnNlcnQsIHB1YnVwZGF0ZSwgcHViZGVsZXRlIik7CisJaWYgKGhhc19w dWJkZGwpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkJICIsIHB1YmRkbF90 YWJsZSIpOwogCWlmIChoYXNfcHVidHJ1bmNhdGUpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZi dWYsCiAJCQkJCQkJICIsIHB1YnRydW5jYXRlIik7CkBAIC02MzgxLDYgKzYzOTAsOCBAQCBkZXNj cmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlib29sCQlwdWJhbGx0YWJs ZXMgPSBzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDMpLCAidCIpID09IDA7CiAJCXByaW50VGFi bGVPcHQgbXlvcHQgPSBwc2V0LnBvcHQudG9wdDsKIAorCQlpZiAoaGFzX3B1YmRkbCkKKwkJCW5j b2xzKys7CiAJCWlmIChoYXNfcHVidHJ1bmNhdGUpCiAJCQluY29scysrOwogCQlpZiAoaGFzX3B1 YnZpYXJvb3QpCkBAIC02Mzk1LDYgKzY0MDYsOCBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25z dCBjaGFyICpwYXR0ZXJuKQogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25v b3AoIkluc2VydHMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250 LCBnZXR0ZXh0X25vb3AoIlVwZGF0ZXMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlwcmludFRhYmxlQWRk SGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIkRlbGV0ZXMiKSwgdHJ1ZSwgYWxpZ24pOworCQlp ZiAoaGFzX3B1YmRkbCkKKwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiVGFibGUgRERMcyIpLCB0cnVlLCBhbGlnbik7CiAJCWlmIChoYXNfcHVidHJ1bmNhdGUpCiAJ CQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlRydW5jYXRlcyIpLCB0 cnVlLCBhbGlnbik7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKQEAgLTY0MDUsMTAgKzY0MTgsMTIg QEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJcHJpbnRUYWJs ZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwgZmFsc2UsIGZhbHNlKTsKIAkJ cHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA1KSwgZmFsc2UsIGZh bHNlKTsKIAkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwg ZmFsc2UsIGZhbHNlKTsKLQkJaWYgKGhhc19wdWJ0cnVuY2F0ZSkKKwkJaWYgKGhhc19wdWJkZGwp CiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDcpLCBmYWxz ZSwgZmFsc2UpOwotCQlpZiAoaGFzX3B1YnZpYXJvb3QpCisJCWlmIChoYXNfcHVidHJ1bmNhdGUp CiAJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxz ZSwgZmFsc2UpOworCQlpZiAoaGFzX3B1YnZpYXJvb3QpCisJCQlwcmludFRhYmxlQWRkQ2VsbCgm Y29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOwogCiAJCWlmICghcHVi YWxsdGFibGVzKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oCmluZGV4IDQ2M2JjYjY3YzUuLmFiY2Jl OTc1OTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oCkBAIC00NywzICs0Nyw0IEBAIFBHX1JNR1IoUk1f Q09NTUlUX1RTX0lELCAiQ29tbWl0VHMiLCBjb21taXRfdHNfcmVkbywgY29tbWl0X3RzX2Rlc2Ms IGNvbW1pdF90c19pCiBQR19STUdSKFJNX1JFUExPUklHSU5fSUQsICJSZXBsaWNhdGlvbk9yaWdp biIsIHJlcGxvcmlnaW5fcmVkbywgcmVwbG9yaWdpbl9kZXNjLCByZXBsb3JpZ2luX2lkZW50aWZ5 LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQogUEdfUk1HUihSTV9HRU5FUklDX0lELCAiR2VuZXJp YyIsIGdlbmVyaWNfcmVkbywgZ2VuZXJpY19kZXNjLCBnZW5lcmljX2lkZW50aWZ5LCBOVUxMLCBO VUxMLCBnZW5lcmljX21hc2ssIE5VTEwpCiBQR19STUdSKFJNX0xPR0lDQUxNU0dfSUQsICJMb2dp Y2FsTWVzc2FnZSIsIGxvZ2ljYWxtc2dfcmVkbywgbG9naWNhbG1zZ19kZXNjLCBsb2dpY2FsbXNn X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBsb2dpY2FsbXNnX2RlY29kZSkKK1BHX1JNR1Io Uk1fTE9HSUNBTERETE1TR19JRCwgIkxvZ2ljYWxERExNZXNzYWdlIiwgbG9naWNhbGRkbG1zZ19y ZWRvLCBsb2dpY2FsZGRsbXNnX2Rlc2MsIGxvZ2ljYWxkZGxtc2dfaWRlbnRpZnksIE5VTEwsIE5V TEwsIE5VTEwsIGxvZ2ljYWxkZGxfZGVjb2RlKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19ldmVudF90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2V2ZW50X3Ry aWdnZXIuaAppbmRleCBlMzA1NTBmNmUxLi5mOGYwMGU4OGZhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2V2ZW50X3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2V2ZW50X3RyaWdnZXIuaApAQCAtMzYsNiArMzYsNyBAQCBDQVRBTE9HKHBnX2V2ZW50X3Ry aWdnZXIsMzQ2NixFdmVudFRyaWdnZXJSZWxhdGlvbklkKQogCQkJCQkJCQkJCQkJICogY2FsbGVk ICovCiAJY2hhcgkJZXZ0ZW5hYmxlZDsJCS8qIHRyaWdnZXIncyBmaXJpbmcgY29uZmlndXJhdGlv biBXUlQKIAkJCQkJCQkJICogc2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlICovCisJYm9vbAkJZXZ0 aXNpbnRlcm5hbDsJLyogdHJpZ2dlciBpcyBzeXN0ZW0tZ2VuZXJhdGVkICovCiAKICNpZmRlZiBD QVRBTE9HX1ZBUkxFTgogCXRleHQJCWV2dHRhZ3NbMV07CQkvKiBjb21tYW5kIFRBR3MgdGhpcyBl dmVudCB0cmlnZ2VyIHRhcmdldHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDc2ZmYy M2I3NzkuLjAxNDExNmZmOWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTExNDUsNiAr MTExNDUsMTQgQEAKICAgcHJvbmFtZSA9PiAncGdfbG9naWNhbF9lbWl0X21lc3NhZ2UnLCBwcm92 b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywKICAgcHJvcmV0dHlwZSA9PiAncGdf bHNuJywgcHJvYXJndHlwZXMgPT4gJ2Jvb2wgdGV4dCBieXRlYScsCiAgIHByb3NyYyA9PiAncGdf bG9naWNhbF9lbWl0X21lc3NhZ2VfYnl0ZWEnIH0sCit7IG9pZCA9PiAnMzgxMycsIGRlc2NyID0+ ICdlbWl0IGEgdGV4dHVhbCBsb2dpY2FsIGRlY29kaW5nIG1lc3NhZ2UnLAorICBwcm9uYW1lID0+ ICdwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3NhZ2UnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3Bh cmFsbGVsID0+ICd1JywKKyAgcHJvcmV0dHlwZSA9PiAncGdfbHNuJywgcHJvYXJndHlwZXMgPT4g J2Jvb2wgdGV4dCB0ZXh0JywKKyAgcHJvc3JjID0+ICdwZ19sb2dpY2FsX2VtaXRfZGRsX21lc3Nh Z2VfdGV4dCcgfSwKK3sgb2lkID0+ICczODE0JywgZGVzY3IgPT4gJ2VtaXQgYSBiaW5hcnkgbG9n aWNhbCBkZWNvZGluZyBtZXNzYWdlJywKKyAgcHJvbmFtZSA9PiAncGdfbG9naWNhbF9lbWl0X2Rk bF9tZXNzYWdlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJhbGxlbCA9PiAndScsCisgIHBy b3JldHR5cGUgPT4gJ3BnX2xzbicsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHJlZ2NsYXNzIGludDQg dGV4dCcsCisgIHByb3NyYyA9PiAncGdfbG9naWNhbF9lbWl0X2RkbF9tZXNzYWdlX2J5dGVhJyB9 LAogCiAjIGV2ZW50IHRyaWdnZXJzCiB7IG9pZCA9PiAnMzU2NicsIGRlc2NyID0+ICdsaXN0IG9i amVjdHMgZHJvcHBlZCBieSB0aGUgY3VycmVudCBjb21tYW5kJywKQEAgLTEyMDQ5LDUgKzEyMDU3 LDE3IEBACiB7IG9pZCA9PiAnNDY0MycsIGRlc2NyID0+ICdleHBhbmQgSlNPTiBmb3JtYXQgRERM IHRvIGEgcGxhaW4gdGV4dCBEREwgY29tbWFuZCcsCiAgIHByb25hbWUgPT4gJ2RkbF9kZXBhcnNl X2V4cGFuZF9jb21tYW5kJywgcHJvcmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVzID0+ ICd0ZXh0JywgcHJvc3JjID0+ICdkZGxfZGVwYXJzZV9leHBhbmRfY29tbWFuZCcgfSwKK3sgb2lk ID0+ICc0NjQ0JywgZGVzY3IgPT4gJ3RyaWdnZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2UgZW5k JywKKyAgcHJvbmFtZSA9PiAncHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9lbmQnLCBw cm9yZXR0eXBlID0+ICdldmVudF90cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3Ny YyA9PiAncHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9lbmQnIH0sCit7IG9pZCA9PiAn NDY0NScsIGRlc2NyID0+ICd0cmlnZ2VyIGZvciBkZGwgY29tbWFuZCBkZXBhcnNlIHN0YXJ0JywK KyAgcHJvbmFtZSA9PiAncHVibGljYXRpb25fZGVwYXJzZV9kZGxfY29tbWFuZF9zdGFydCcsIHBy b3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3Jj ID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX2RkbF9jb21tYW5kX3N0YXJ0JyB9LAoreyBvaWQgPT4g JzQ2NDYnLCBkZXNjciA9PiAndHJpZ2dlciBmb3IgZGRsIGNvbW1hbmQgZGVwYXJzZSB0YWJsZSBy ZXdyaXRlJywKKyAgcHJvbmFtZSA9PiAncHVibGljYXRpb25fZGVwYXJzZV90YWJsZV9yZXdyaXRl JywgcHJvcmV0dHlwZSA9PiAnZXZlbnRfdHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBw cm9zcmMgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfcmV3cml0ZScgfSwKK3sgb2lkID0+ ICc0NjQ3JywgZGVzY3IgPT4gJ3RyaWdnZXIgZm9yIGRkbCBjb21tYW5kIGRlcGFyc2UgdGFibGUg aW5pdCcsCisgIHByb25hbWUgPT4gJ3B1YmxpY2F0aW9uX2RlcGFyc2VfdGFibGVfaW5pdF93cml0 ZScsIHByb3JldHR5cGUgPT4gJ2V2ZW50X3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywg cHJvc3JjID0+ICdwdWJsaWNhdGlvbl9kZXBhcnNlX3RhYmxlX2luaXRfd3JpdGUnIH0sCiAKIF0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCA2ZWNhYTJhMDFlLi4zMDNmNTQx MmQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0xOCw4ICsxOCwxNiBA QAogI2RlZmluZSBQR19QVUJMSUNBVElPTl9ICiAKICNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5o IgotI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfcHVibGljYXRpb25fZC5oIgorI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKworLyogUHVi bGljYXRpb24gdHJpZ2dlciBldmVudHMgKi8KKyNkZWZpbmUgUFVCX1RSSUdfRERMX0NNRF9TVEFS VCAiZGRsX2NvbW1hbmRfc3RhcnQiCisjZGVmaW5lIFBVQl9UUklHX0RETF9DTURfRU5EICJkZGxf Y29tbWFuZF9lbmQiCisjZGVmaW5lIFBVQl9UUklHX1RCTF9SRVdSSVRFICJ0YWJsZV9yZXdyaXRl IgorCisvKiBQdWJsaWNhdGlvbiBldmVudCB0cmlnZ2VyIHByZWZpeCAqLworI2RlZmluZSBQVUJf RVZFTlRfVFJJR19GT1JNQVQgInBnX2RlcGFyc2VfdHJpZ18lc18ldSIKIAogLyogLS0tLS0tLS0t LS0tLS0tLQogICoJCXBnX3B1YmxpY2F0aW9uIGRlZmluaXRpb24uICBjcHAgdHVybnMgdGhpcyBp bnRvCkBAIC01NCw2ICs2Miw5IEBAIENBVEFMT0cocGdfcHVibGljYXRpb24sNjEwNCxQdWJsaWNh dGlvblJlbGF0aW9uSWQpCiAKIAkvKiB0cnVlIGlmIHBhcnRpdGlvbiBjaGFuZ2VzIGFyZSBwdWJs aXNoZWQgdXNpbmcgcm9vdCBzY2hlbWEgKi8KIAlib29sCQlwdWJ2aWFyb290OworCisJLyogdHJ1 ZSBpZiB0YWJsZSBkZGxzIGFyZSBwdWJsaXNoZWQgKi8KKwlib29sCQlwdWJkZGxfdGFibGU7CiB9 IEZvcm1EYXRhX3BnX3B1YmxpY2F0aW9uOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC03Miw2 ICs4Myw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uQWN0aW9ucwogCWJvb2wJCXB1YnVw ZGF0ZTsKIAlib29sCQlwdWJkZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9vbAkJcHVi ZGRsX3RhYmxlOwogfSBQdWJsaWNhdGlvbkFjdGlvbnM7CiAKIHR5cGVkZWYgc3RydWN0IFB1Ymxp Y2F0aW9uRGVzYwpAQCAtMTAzLDEzICsxMTUsNiBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlv bgogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25zOwogfSBQdWJsaWNhdGlvbjsKIAotdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCi17Ci0JUmVsYXRpb24JcmVsYXRpb247Ci0J Tm9kZQkgICAqd2hlcmVDbGF1c2U7Ci0JTGlzdAkgICAqY29sdW1uczsKLX0gUHVibGljYXRpb25S ZWxJbmZvOwotCiBleHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7 CiBleHRlcm4gUHVibGljYXRpb24gKkdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1 Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNh dGlvbnMoT2lkIHJlbGlkKTsKQEAgLTE0NSwxNCArMTUwLDYgQEAgZXh0ZXJuIExpc3QgKkdldFB1 YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiBleHRlcm4gT2lkCUdldFRv cE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLAog CQkJCQkJCQkJCQlpbnQgKmFuY2VzdG9yX2xldmVsKTsKIAotZXh0ZXJuIGJvb2wgaXNfcHVibGlz aGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJs aWNhdGlvbihPaWQgcHViaWQpOwotZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCi0JCQkJCQkJCQkJ CSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsKLWV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9u X2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCi0JCQkJCQkJCQkJCWJvb2wgaWZf bm90X2V4aXN0cyk7Ci0KLWV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNl dChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMsCi0JCQkJCQkJCQkJICAgTWVtb3J5 Q29udGV4dCBtY3h0KTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX1BVQkxJQ0FUSU9OX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaAppbmRleCAyOGIzNDg2YjllLi4zOTI3MDMxYTJl IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oCkBAIC03Myw2ICs3MywxMiBAQCB0 eXBlZGVmIHN0cnVjdCBTUUxEcm9wT2JqZWN0CiAjZGVmaW5lIEFUX1JFV1JJVEVfQ09MVU1OX1JF V1JJVEUJCTB4MDQKICNkZWZpbmUgQVRfUkVXUklURV9BQ0NFU1NfTUVUSE9ECQkweDA4CiAKKy8q IFRyaWdnZXIgZXZlbnRzICovCisjZGVmaW5lIFRSSUdfRERMX0NNRF9TVEFSVCAiZGRsX2NvbW1h bmRfc3RhcnQiCisjZGVmaW5lIFRSSUdfRERMX0NNRF9FTkQgImRkbF9jb21tYW5kX2VuZCIKKyNk ZWZpbmUgVFJJR19UQkxfUkVXUklURSAidGFibGVfcmV3cml0ZSIKKyNkZWZpbmUgVFJJR19UQkxf Q01EX0RST1AgInNxbF9kcm9wIgorCiAvKgogICogRXZlbnRUcmlnZ2VyRGF0YSBpcyB0aGUgbm9k ZSB0eXBlIHRoYXQgaXMgcGFzc2VkIGFzIGZtZ3IgImNvbnRleHQiIGluZm8KICAqIHdoZW4gYSBm dW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIGV2ZW50IHRyaWdnZXIgbWFuYWdlci4KQEAgLTgwLDcg Kzg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU1FMRHJvcE9iamVjdAogI2RlZmluZSBDQUxMRURfQVNf RVZFTlRfVFJJR0dFUihmY2luZm8pIFwKIAkoKGZjaW5mbyktPmNvbnRleHQgIT0gTlVMTCAmJiBJ c0EoKGZjaW5mbyktPmNvbnRleHQsIEV2ZW50VHJpZ2dlckRhdGEpKQogCi1leHRlcm4gT2lkCUNy ZWF0ZUV2ZW50VHJpZ2dlcihDcmVhdGVFdmVudFRyaWdTdG10ICpzdG10KTsKK2V4dGVybiBPaWQJ Q3JlYXRlRXZlbnRUcmlnZ2VyKENyZWF0ZUV2ZW50VHJpZ1N0bXQgKnN0bXQsIGJvb2wgaXNfaW50 ZXJuYWwpOwogZXh0ZXJuIE9pZAlnZXRfZXZlbnRfdHJpZ2dlcl9vaWQoY29uc3QgY2hhciAqdHJp Z25hbWUsIGJvb2wgbWlzc2luZ19vayk7CiAKIGV4dGVybiBPaWQJQWx0ZXJFdmVudFRyaWdnZXIo QWx0ZXJFdmVudFRyaWdTdG10ICpzdG10KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvcHVibGljYXRpb25j bWRzLmgKaW5kZXggNzBkNWUzNjgwYS4uYTNmY2E5ZTY0YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmgKQEAgLTIyLDYgKzIyLDEzIEBACiAvKiBTYW1lIGFzIE1BWE5VTU1F U1NBR0VTIGluIHNpbnZhbGFkdC5jICovCiAjZGVmaW5lIE1BWF9SRUxDQUNIRV9JTlZBTF9NU0dT IDQwOTYKIAordHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25SZWxJbmZvCit7CisJUmVsYXRpb24J cmVsYXRpb247CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CisJTGlzdAkgICAqY29sdW1uczsKK30g UHVibGljYXRpb25SZWxJbmZvOworCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBDcmVhdGVQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBl eHRlcm4gdm9pZCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQgUmVtb3ZlUHVibGljYXRpb25CeUlkKE9p ZCBwdWJpZCk7CkBAIC0zNSw1ICs0MiwxMiBAQCBleHRlcm4gYm9vbCBwdWJfcmZfY29udGFpbnNf aW52YWxpZF9jb2x1bW4oT2lkIHB1YmlkLCBSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkg ICBMaXN0ICphbmNlc3RvcnMsIGJvb2wgcHVidmlhcm9vdCk7CiBleHRlcm4gYm9vbCBwdWJfY29s bGlzdF9jb250YWluc19pbnZhbGlkX2NvbHVtbihPaWQgcHViaWQsIFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkJCQkJCQkJTGlzdCAqYW5jZXN0b3JzLCBib29sIHB1YnZpYXJvb3QpOworZXh0ZXJu IEJpdG1hcHNldCAqcHViX2NvbGxpc3RfdG9fYml0bWFwc2V0KEJpdG1hcHNldCAqY29sdW1ucywg RGF0dW0gcHViY29scywKKwkJCQkJCQkJCQkgICBNZW1vcnlDb250ZXh0IG1jeHQpOworZXh0ZXJu IE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGlj YXRpb25SZWxJbmZvICpwcmksCisJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsKK2V4 dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQg c2NoZW1haWQsCisJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CitleHRlcm4gYm9vbCBp c19wdWJsaXNoYWJsZV9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogCiAjZW5kaWYJCQkJCQkJLyog UFVCTElDQVRJT05DTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2RkbG1lc3NhZ2UuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lNTMwZWE2ZDI2Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCkBAIC0wLDAgKzEs NjAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZGRsbWVzc2FnZS5oCisgKgkgICBFeHBvcnRz IGZyb20gcmVwbGljYXRpb24vbG9naWNhbC9kZGxtZXNzYWdlLmMKKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGRsbWVzc2FnZS5oCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworI2lmbmRlZiBQR19MT0dJQ0FMX0RETF9NRVNTQUdFX0gKKyNkZWZpbmUgUEdfTE9HSUNBTF9E RExfTUVTU0FHRV9ICisKKyNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgorI2luY2x1ZGUgImFjY2Vz cy94bG9nZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVhZGVyLmgiCisjaW5jbHVkZSAi bm9kZXMvbm9kZXMuaCIKKworCisvKgorICogU3VwcG9ydCBmb3Iga2VlcGluZyB0cmFjayBvZiBk ZXBhcnNlZCBjb21tYW5kcy4KKyAqLwordHlwZWRlZiBlbnVtIERlcGFyc2VkQ29tbWFuZFR5cGUK K3sKKwlEQ1RfT2JqZWN0Q3JlYXRlLAorCURDVF9PYmplY3REcm9wLAorCURDVF9TaW1wbGVDbWQs CisJRENUX1RhYmxlQWx0ZXIsCisJRENUX1RhYmxlRHJvcEVuZCwKKwlEQ1RfVGFibGVEcm9wU3Rh cnQKK30gRGVwYXJzZWRDb21tYW5kVHlwZTsKKworLyoKKyAqIEdlbmVyaWMgbG9naWNhbCBkZWNv ZGluZyBEREwgbWVzc2FnZSB3YWwgcmVjb3JkLgorICovCit0eXBlZGVmIHN0cnVjdCB4bF9sb2dp Y2FsX2RkbF9tZXNzYWdlCit7CisJT2lkCQkJZGJJZDsJCQkvKiBkYXRhYmFzZSBPaWQgZW1pdHRl ZCBmcm9tICovCisJU2l6ZQkJcHJlZml4X3NpemU7CS8qIGxlbmd0aCBvZiBwcmVmaXggaW5jbHVk aW5nIG51bGwgdGVybWluYXRvciAqLworCU9pZAkJCXJlbGlkOwkJCS8qIGlkIG9mIHRoZSB0YWJs ZSAqLworCURlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZTsJLyogdHlwZSBvZiBzcWwgY29tbWFu ZCAqLworCVNpemUJCW1lc3NhZ2Vfc2l6ZTsJLyogc2l6ZSBvZiB0aGUgbWVzc2FnZSAqLworCisJ LyoKKwkgKiBwYXlsb2FkLCBpbmNsdWRpbmcgbnVsbC10ZXJtaW5hdGVkIHByZWZpeCBvZiBsZW5n dGggcHJlZml4X3NpemUKKwkgKi8KKwljaGFyCQltZXNzYWdlW0ZMRVhJQkxFX0FSUkFZX01FTUJF Ul07Cit9IHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2U7CisKKyNkZWZpbmUgU2l6ZU9mTG9naWNhbERE TE1lc3NhZ2UJKG9mZnNldG9mKHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UsIG1lc3NhZ2UpKQorCitl eHRlcm4gWExvZ1JlY1B0ciBMb2dMb2dpY2FsRERMTWVzc2FnZShjb25zdCBjaGFyICpwcmVmaXgs IE9pZCByZWxpZCwgRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJICAgY29u c3QgY2hhciAqZGRsX21lc3NhZ2UsIHNpemVfdCBzaXplKTsKKworLyogUk1HUiBBUEkqLworI2Rl ZmluZSBYTE9HX0xPR0lDQUxfRERMX01FU1NBR0UJMHgwMAordm9pZAkJbG9naWNhbGRkbG1zZ19y ZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKK3ZvaWQJCWxvZ2ljYWxkZGxtc2dfZGVzYyhT dHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOworY29uc3QgY2hhciAqbG9n aWNhbGRkbG1zZ19pZGVudGlmeSh1aW50OCBpbmZvKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2RlY29kZS5oCmluZGV4IDE0ZmE5MjFhYjQuLmM5YWM3MDhkMzIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2RlY29kZS5oCkBAIC0yNyw2ICsyNyw3IEBAIGV4dGVybiB2b2lkIGhlYXAyX2RlY29kZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiBleHRlcm4g dm9pZCB4YWN0X2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7CiBleHRlcm4gdm9pZCBzdGFuZGJ5X2RlY29kZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiBleHRlcm4gdm9pZCBsb2dpY2Fs bXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIg KmJ1Zik7CitleHRlcm4gdm9pZCBsb2dpY2FsZGRsX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lkIExvZ2ljYWxE ZWNvZGluZ1Byb2Nlc3NSZWNvcmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJ CQkJCSBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCmluZGV4IDBlYTJkZjUwODguLjVmYjNiYWFlYjEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC02Niw2ICs2Niw3IEBAIHR5cGVkZWYgZW51bSBMb2dp Y2FsUmVwTXNnVHlwZQogCUxPR0lDQUxfUkVQX01TR19SRUxBVElPTiA9ICdSJywKIAlMT0dJQ0FM X1JFUF9NU0dfVFlQRSA9ICdZJywKIAlMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRSA9ICdNJywKKwlM T0dJQ0FMX1JFUF9NU0dfRERMID0gJ0wnLAogCUxPR0lDQUxfUkVQX01TR19CRUdJTl9QUkVQQVJF ID0gJ2InLAogCUxPR0lDQUxfUkVQX01TR19QUkVQQVJFID0gJ1AnLAogCUxPR0lDQUxfUkVQX01T R19DT01NSVRfUFJFUEFSRUQgPSAnSycsCkBAIC0yNDYsNiArMjQ3LDkgQEAgZXh0ZXJuIExpc3Qg KmxvZ2ljYWxyZXBfcmVhZF90cnVuY2F0ZShTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJICBib29s ICpjYXNjYWRlLCBib29sICpyZXN0YXJ0X3NlcXMpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24sCiAJCQkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgs IFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 cml0ZV9kZGwoU3RyaW5nSW5mbyBvdXQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJCWNvbnN0 IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitleHRlcm4gY2hh ciAqbG9naWNhbHJlcF9yZWFkX2RkbChTdHJpbmdJbmZvIGluLCBYTG9nUmVjUHRyICpsc24sIGNv bnN0IGNoYXIgKipwcmVmaXgsIFNpemUgKnN6KTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfcmVsKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJIFJlbGF0 aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKTsKIGV4dGVybiBMb2dpY2FsUmVwUmVsYXRpb24g KmxvZ2ljYWxyZXBfcmVhZF9yZWwoU3RyaW5nSW5mbyBpbik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vdXRwdXRfcGx1Z2luLmgKaW5kZXggM2FjNjcyOTM4Ni4uMmFkOTZkMzc0YSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaApAQCAtOTAsNiArOTAsMTggQEAgdHlwZWRl ZiB2b2lkICgqTG9naWNhbERlY29kZU1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCiAJCQkJCQkJCQkJU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJY29u c3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qCisgKiBDYWxsYmFjayBmb3IgdGhlIGxvZ2ljYWwgZGVj b2RpbmcgRERMIG1lc3NhZ2VzLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlRERM TWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJ CQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNz YWdlX2xzbiwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkJCQkJICAg T2lkIHJlbGlkLAorCQkJCQkJCQkJCSAgIERlcGFyc2VkQ29tbWFuZFR5cGUgY21kdHlwZSwKKwkJ CQkJCQkJCQkgICBTaXplIG1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICpt ZXNzYWdlKTsKKwogLyoKICAqIEZpbHRlciBjaGFuZ2VzIGJ5IG9yaWdpbi4KICAqLwpAQCAtMjAx LDYgKzIxMywxOSBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNC KSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eAogCQkJCQkJCQkJCQkgIFNpemUg bWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKgor ICogQ2FsbGJhY2sgZm9yIHN0cmVhbWluZyBsb2dpY2FsIGRlY29kaW5nIERETCBtZXNzYWdlcyBm cm9tIGluLXByb2dyZXNzCisgKiB0cmFuc2FjdGlvbnMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkxv Z2ljYWxEZWNvZGVTdHJlYW1ERExNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAorCQkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJ CQkJCSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnBy ZWZpeCwKKwkJCQkJCQkJCQkJCSBPaWQgcmVsaWQsCisJCQkJCQkJCQkJCQkgRGVwYXJzZWRDb21t YW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJ CQkJCQkJIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKgogICogQ2FsbGJhY2sgZm9yIHN0cmVh bWluZyB0cnVuY2F0ZXMgZnJvbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCiAgKi8KQEAgLTIy MSw2ICsyNDYsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MKIAlMb2dp Y2FsRGVjb2RlVHJ1bmNhdGVDQiB0cnVuY2F0ZV9jYjsKIAlMb2dpY2FsRGVjb2RlQ29tbWl0Q0Ig Y29tbWl0X2NiOwogCUxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IgbWVzc2FnZV9jYjsKKwlMb2dpY2Fs RGVjb2RlRERMTWVzc2FnZUNCIGRkbF9jYjsKIAlMb2dpY2FsRGVjb2RlRmlsdGVyQnlPcmlnaW5D QiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogCUxvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3du X2NiOwogCkBAIC0yMzksNiArMjY1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzCiAJTG9naWNhbERlY29kZVN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXRfY2I7CiAJ TG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCIHN0cmVhbV9jaGFuZ2VfY2I7CiAJTG9naWNhbERl Y29kZVN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1fbWVzc2FnZV9jYjsKKwlMb2dpY2FsRGVjb2RlU3Ry ZWFtRERMTWVzc2FnZUNCIHN0cmVhbV9kZGxfY2I7CiAJTG9naWNhbERlY29kZVN0cmVhbVRydW5j YXRlQ0Igc3RyZWFtX3RydW5jYXRlX2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7CiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCmluZGV4IGI0YTgwMTU0MDMuLmEyY2Y5OWI0ZTQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjUsNiArMjUsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQR091dHB1dERhdGEKIAl1aW50MzIJCXByb3RvY29sX3ZlcnNpb247CiAJTGlzdAkgICAq cHVibGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVibGljYXRpb25zOworCUxpc3QJICAgKmRl bGV0ZWRfcmVsaWRzOwogCWJvb2wJCWJpbmFyeTsKIAljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJ bWVzc2FnZXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggMWI5 ZGIyMmFjYi4uMmIzN2M5NmMxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZm ZXIuaApAQCAtMTEsNiArMTEsOCBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vZGRsbWVzc2FnZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFs LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hl LmgiCkBAIC02Niw2ICs2OCw3IEBAIHR5cGVkZWYgZW51bSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlw ZQogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9VUERBVEUsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0RFTEVURSwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSwKKwlSRU9SREVSX0JVRkZF Ul9DSEFOR0VfRERMLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT04sCiAJUkVP UkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NOQVBTSE9ULAogCVJFT1JERVJfQlVGRkVSX0NI QU5HRV9JTlRFUk5BTF9DT01NQU5EX0lELApAQCAtMTM5LDYgKzE0MiwxNiBAQCB0eXBlZGVmIHN0 cnVjdCBSZW9yZGVyQnVmZmVyQ2hhbmdlCiAJCQljaGFyCSAgICptZXNzYWdlOwogCQl9CQkJbXNn OwogCisJCS8qIERETCAqLworCQlzdHJ1Y3QKKwkJeworCQkJY2hhcgkgICAqcHJlZml4OworCQkJ U2l6ZQkJbWVzc2FnZV9zaXplOworCQkJY2hhcgkgICAqbWVzc2FnZTsKKwkJCU9pZAkJCXJlbGlk OworCQkJRGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlOworCQl9CQkJZGRsOworCiAJCS8qIE5l dyBzbmFwc2hvdCwgc2V0IHdoZW4gYWN0aW9uID09ICpfSU5URVJOQUxfU05BUFNIT1QgKi8KIAkJ U25hcHNob3QJc25hcHNob3Q7CiAKQEAgLTQ3MCw2ICs0ODMsMTYgQEAgdHlwZWRlZiB2b2lkICgq UmVvcmRlckJ1ZmZlck1lc3NhZ2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJCQkJCQkJCWNv bnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwKIAkJCQkJCQkJCQljb25zdCBjaGFyICptZXNzYWdl KTsKIAorLyogRERMIG1lc3NhZ2UgY2FsbGJhY2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZvaWQg KCpSZW9yZGVyQnVmZmVyRERMTWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJ CQkJICAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbWVz c2FnZV9sc24sCisJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCSAg IE9pZCByZWxpZCwKKwkJCQkJCQkJCQkgICBEZXBhcnNlZENvbW1hbmRUeXBlIGNtZHR5cGUsCisJ CQkJCQkJCQkJICAgU2l6ZSBzeiwKKwkJCQkJCQkJCQkgICBjb25zdCBjaGFyICptZXNzYWdlKTsK KwogLyogYmVnaW4gcHJlcGFyZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KIHR5cGVkZWYgdm9pZCAo KlJlb3JkZXJCdWZmZXJCZWdpblByZXBhcmVDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJCQkJ CQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKQEAgLTUzNiw2ICs1NTksMTcgQEAgdHlwZWRl ZiB2b2lkICgqUmVvcmRlckJ1ZmZlclN0cmVhbU1lc3NhZ2VDQikgKAogCQkJCQkJCQkJCQkgIGNv bnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICptZXNz YWdlKTsKIAorLyogc3RyZWFtIERETCBtZXNzYWdlIGNhbGxiYWNrIHNpZ25hdHVyZSAqLwordHlw ZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlclN0cmVhbURETE1lc3NhZ2VDQikgKAorCQkJCQkJCQkJ CQkJIFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4 biwKKwkJCQkJCQkJCQkJCSBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCQkJIGNv bnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCQkJCSBPaWQgcmVsaWQsCisJCQkJCQkJCQkJCQkg RGVwYXJzZWRDb21tYW5kVHlwZSBjbWR0eXBlLAorCQkJCQkJCQkJCQkJIFNpemUgc3osCisJCQkJ CQkJCQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8qIHN0cmVhbSB0cnVuY2F0ZSBjYWxs YmFjayBzaWduYXR1cmUgKi8KIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1UcnVu Y2F0ZUNCKSAoCiAJCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXIgKnJiLApAQCAtNTkyLDYgKzYy Niw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlckFwcGx5VHJ1bmNhdGVD QiBhcHBseV90cnVuY2F0ZTsKIAlSZW9yZGVyQnVmZmVyQ29tbWl0Q0IgY29tbWl0OwogCVJlb3Jk ZXJCdWZmZXJNZXNzYWdlQ0IgbWVzc2FnZTsKKwlSZW9yZGVyQnVmZmVyRERMTWVzc2FnZUNCIGRk bDsKIAogCS8qCiAJICogQ2FsbGJhY2tzIHRvIGJlIGNhbGxlZCB3aGVuIHN0cmVhbWluZyBhIHRy YW5zYWN0aW9uIGF0IHByZXBhcmUgdGltZS4KQEAgLTYxMSw2ICs2NDYsNyBAQCBzdHJ1Y3QgUmVv cmRlckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJTdHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0Owog CVJlb3JkZXJCdWZmZXJTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdlOwogCVJlb3JkZXJCdWZm ZXJTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2U7CisJUmVvcmRlckJ1ZmZlclN0cmVhbURE TE1lc3NhZ2VDQiBzdHJlYW1fZGRsOwogCVJlb3JkZXJCdWZmZXJTdHJlYW1UcnVuY2F0ZUNCIHN0 cmVhbV90cnVuY2F0ZTsKIAogCS8qCkBAIC02OTYsNiArNzMyLDkgQEAgZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsCiAJCQkJCQkJCQkgIFNuYXBzaG90IHNuYXAsIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJCQkJ ICBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSAgU2l6 ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlclF1ZXVlRERMTWVzc2FnZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2Fn ZV9zaXplLAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlLCBPaWQgcmVsaWQsIERlcGFy c2VkQ29tbWFuZFR5cGUgY21kdHlwZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJWExvZ1JlY1B0 ciBjb21taXRfbHNuLCBYTG9nUmVjUHRyIGVuZF9sc24sCiAJCQkJCQkJCVRpbWVzdGFtcFR6IGNv bW1pdF90aW1lLCBSZXBPcmlnaW5JZCBvcmlnaW5faWQsIFhMb2dSZWNQdHIgb3JpZ2luX2xzbik7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZy5oIGIvc3JjL2luY2x1ZGUvdGNv cC9jbWR0YWcuaAppbmRleCAxZTc1MTRkY2ZmLi4zMmNjYzE1NmQwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS90Y29wL2NtZHRhZy5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnLmgKQEAg LTE2LDcgKzE2LDcgQEAKIC8qIGJ1ZmZlciBzaXplIHJlcXVpcmVkIGZvciBjb21tYW5kIGNvbXBs ZXRpb24gdGFncyAqLwogI2RlZmluZSBDT01QTEVUSU9OX1RBR19CVUZTSVpFCTY0CiAKLSNkZWZp bmUgUEdfQ01EVEFHKHRhZywgbmFtZSwgZXZ0cmdvaywgcndyb2ssIHJvd2NudCkgXAorI2RlZmlu ZSBQR19DTURUQUcodGFnLCBuYW1lLCBldnRyZ29rLCByd3Jvaywgcm93Y250LCBkZGxfcmVwbF9v aykgXAogCXRhZywKIAogdHlwZWRlZiBlbnVtIENvbW1hbmRUYWcKQEAgLTUzLDkgKzUzLDExIEBA IENvcHlRdWVyeUNvbXBsZXRpb24oUXVlcnlDb21wbGV0aW9uICpkc3QsIGNvbnN0IFF1ZXJ5Q29t cGxldGlvbiAqc3JjKQogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVF1ZXJ5Q29tcGxldGlvbihRdWVy eUNvbXBsZXRpb24gKnFjKTsKIGV4dGVybiBjb25zdCBjaGFyICpHZXRDb21tYW5kVGFnTmFtZShD b21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKkdldENvbW1hbmRUYWdO YW1lQW5kTGVuKENvbW1hbmRUYWcgY29tbWFuZFRhZywgU2l6ZSAqbGVuKTsKK2V4dGVybiBDb21t YW5kVGFnICpHZXRDb21tYW5kVGFnc0ZvckRETFJlcGwoaW50ICpuY29tbWFuZHMpOwogZXh0ZXJu IGJvb2wgY29tbWFuZF90YWdfZGlzcGxheV9yb3djb3VudChDb21tYW5kVGFnIGNvbW1hbmRUYWcp OwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZXZlbnRfdHJpZ2dlcl9vayhDb21tYW5kVGFnIGNv bW1hbmRUYWcpOwogZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfdGFibGVfcmV3cml0ZV9vayhDb21t YW5kVGFnIGNvbW1hbmRUYWcpOworZXh0ZXJuIGJvb2wgY29tbWFuZF90YWdfZGRsX3JlcGxpY2F0 aW9uX29rKENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CiBleHRlcm4gQ29tbWFuZFRhZyBHZXRDb21t YW5kVGFnRW51bShjb25zdCBjaGFyICpjb21tYW5kbmFtZSk7CiBleHRlcm4gU2l6ZSBCdWlsZFF1 ZXJ5Q29tcGxldGlvblN0cmluZyhjaGFyICpidWZmLCBjb25zdCBRdWVyeUNvbXBsZXRpb24gKnFj LAogCQkJCQkJCQkJICAgYm9vbCBuYW1lb25seSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90 Y29wL2NtZHRhZ2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCmluZGV4IGU3 MzhhYzFjMDkuLjdmNDRhMTUwZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFn bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvY21kdGFnbGlzdC5oCkBAIC0yMywxOTYgKzIz LDE5NiBAQAogICogdGV4dHVhbCBuYW1lLCBzbyB0aGF0IHdlIGNhbiBic2VhcmNoIG9uIGl0OyBz ZWUgR2V0Q29tbWFuZFRhZ0VudW0oKS4KICAqLwogCi0vKiBzeW1ib2wgbmFtZSwgdGV4dHVhbCBu YW1lLCBldmVudF90cmlnZ2VyX29rLCB0YWJsZV9yZXdyaXRlX29rLCByb3djb3VudCAqLwotUEdf Q01EVEFHKENNRFRBR19VTktOT1dOLCAiPz8/IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfQUxURVJfQUNDRVNTX01FVEhPRCwgIkFMVEVSIEFDQ0VTUyBNRVRIT0QiLCB0 cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0FHR1JFR0FURSwgIkFM VEVSIEFHR1JFR0FURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfQ0FTVCwgIkFMVEVSIENBU1QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0FMVEVSX0NPTExBVElPTiwgIkFMVEVSIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfQ09OU1RSQUlOVCwgIkFMVEVSIENPTlNUUkFJTlQi LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX0NPTlZFUlNJT04s ICJBTFRFUiBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19BTFRFUl9EQVRBQkFTRSwgIkFMVEVSIERBVEFCQVNFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkK LVBHX0NNRFRBRyhDTURUQUdfQUxURVJfREVGQVVMVF9QUklWSUxFR0VTLCAiQUxURVIgREVGQVVM VCBQUklWSUxFR0VTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9ET01BSU4sICJBTFRFUiBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX0VWRU5UX1RSSUdHRVIsICJBTFRFUiBFVkVOVCBUUklHR0VSIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfRVhURU5TSU9OLCAiQUxURVIg RVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9G T1JFSUdOX0RBVEFfV1JBUFBFUiwgIkFMVEVSIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9GT1JFSUdOX1RBQkxFLCAiQUxU RVIgRk9SRUlHTiBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf QUxURVJfRlVOQ1RJT04sICJBTFRFUiBGVU5DVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBH X0NNRFRBRyhDTURUQUdfQUxURVJfSU5ERVgsICJBTFRFUiBJTkRFWCIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFOR1VBR0UsICJBTFRFUiBMQU5HVUFHRSIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfTEFSR0VfT0JKRUNU LCAiQUxURVIgTEFSR0UgT0JKRUNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19BTFRFUl9NQVRFUklBTElaRURfVklFVywgIkFMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIiwg dHJ1ZSwgdHJ1ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SLCAiQUxU RVIgT1BFUkFUT1IiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVS X09QRVJBVE9SX0NMQVNTLCAiQUxURVIgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0ZBTUlMWSwgIkFMVEVSIE9QRVJB VE9SIEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf UE9MSUNZLCAiQUxURVIgUE9MSUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19BTFRFUl9QUk9DRURVUkUsICJBTFRFUiBQUk9DRURVUkUiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1BVQkxJQ0FUSU9OLCAiQUxURVIgUFVCTElDQVRJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPTEUsICJB TFRFUiBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf Uk9VVElORSwgIkFMVEVSIFJPVVRJTkUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0FMVEVSX1JVTEUsICJBTFRFUiBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9TQ0hFTUEsICJBTFRFUiBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NFUVVFTkNFLCAiQUxURVIgU0VRVUVOQ0Ui LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1NFUlZFUiwgIkFM VEVSIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJf U1RBVElTVElDUywgIkFMVEVSIFNUQVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0FMVEVSX1NVQlNDUklQVElPTiwgIkFMVEVSIFNVQlNDUklQVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfU1lTVEVNLCAiQUxURVIg U1lTVEVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxURVJfVEFC TEUsICJBTFRFUiBUQUJMRSIsIHRydWUsIHRydWUsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19B TFRFUl9UQUJMRVNQQUNFLCAiQUxURVIgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJBTFRF UiBURVhUIFNFQVJDSCBDT05GSUdVUkFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9ESUNUSU9OQVJZLCAiQUxURVIgVEVYVCBTRUFS Q0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQUxU RVJfVEVYVF9TRUFSQ0hfUEFSU0VSLCAiQUxURVIgVEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9URVhUX1NFQVJDSF9URU1QTEFU RSwgIkFMVEVSIFRFWFQgU0VBUkNIIFRFTVBMQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19BTFRFUl9UUkFOU0ZPUk0sICJBTFRFUiBUUkFOU0ZPUk0iLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0FMVEVSX1RSSUdHRVIsICJBTFRFUiBUUklH R0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UWVBFLCAi QUxURVIgVFlQRSIsIHRydWUsIHRydWUsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19BTFRFUl9V U0VSX01BUFBJTkcsICJBTFRFUiBVU0VSIE1BUFBJTkciLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0FMVEVSX1ZJRVcsICJBTFRFUiBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19BTkFMWVpFLCAiQU5BTFlaRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0JFR0lOLCAiQkVHSU4iLCBmYWxzZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19DQUxMLCAiQ0FMTCIsIGZhbHNlLCBmYWxzZSwgZmFsc2Up Ci1QR19DTURUQUcoQ01EVEFHX0NIRUNLUE9JTlQsICJDSEVDS1BPSU5UIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ0xPU0UsICJDTE9TRSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NMT1NFX0NVUlNPUiwgIkNMT1NFIENVUlNPUiIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NMT1NFX0NVUlNPUl9BTEwsICJD TE9TRSBDVVJTT1IgQUxMIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf Q0xVU1RFUiwgIkNMVVNURVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19DT01NRU5ULCAiQ09NTUVOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ09NTUlULCAiQ09NTUlUIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ09NTUlUX1BSRVBBUkVELCAiQ09NTUlUIFBSRVBBUkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSkKLVBHX0NNRFRBRyhDTURUQUdfQ09QWSwgIkNPUFkiLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1Q R19DTURUQUcoQ01EVEFHX0NPUFlfRlJPTSwgIkNPUFkgRlJPTSIsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9BQ0NFU1NfTUVUSE9ELCAiQ1JFQVRFIEFDQ0VT UyBNRVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9B R0dSRUdBVEUsICJDUkVBVEUgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfQ0FTVCwgIkNSRUFURSBDQVNUIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfQ09MTEFUSU9OLCAiQ1JFQVRFIENPTExBVElPTiIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlNUUkFJTlQs ICJDUkVBVEUgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX0NPTlZFUlNJT04sICJDUkVBVEUgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0RBVEFCQVNFLCAiQ1JFQVRFIERBVEFCQVNF IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0RPTUFJTiwg IkNSRUFURSBET01BSU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NS RUFURV9FVkVOVF9UUklHR0VSLCAiQ1JFQVRFIEVWRU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVhURU5TSU9OLCAiQ1JFQVRFIEVYVEVO U0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZPUkVJ R05fREFUQV9XUkFQUEVSLCAiQ1JFQVRFIEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9SRUlHTl9UQUJMRSwgIkNSRUFU RSBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfRlVOQ1RJT04sICJDUkVBVEUgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0NSRUFURV9JTkRFWCwgIkNSRUFURSBJTkRFWCIsIHRydWUsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0xBTkdVQUdFLCAiQ1JFQVRFIExBTkdV QUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfTUFURVJJ QUxJWkVEX1ZJRVcsICJDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRPUiwgIkNSRUFURSBPUEVSQVRPUiIs IHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9SX0NM QVNTLCAiQ1JFQVRFIE9QRVJBVE9SIENMQVNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01E VEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfRkFNSUxZLCAiQ1JFQVRFIE9QRVJBVE9SIEZBTUlM WSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BPTElDWSwg IkNSRUFURSBQT0xJQ1kiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NS RUFURV9QUk9DRURVUkUsICJDUkVBVEUgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUFVCTElDQVRJT04sICJDUkVBVEUgUFVCTElDQVRJT04i LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9ST0xFLCAiQ1JF QVRFIFJPTEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVf Uk9VVElORSwgIkNSRUFURSBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfUlVMRSwgIkNSRUFURSBSVUxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU0NIRU1BLCAiQ1JFQVRFIFNDSEVNQSIsIHRydWUsIGZh bHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NFUVVFTkNFLCAiQ1JFQVRFIFNF UVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfU0VS VkVSLCAiQ1JFQVRFIFNFUlZFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1NUQVRJU1RJQ1MsICJDUkVBVEUgU1RBVElTVElDUyIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1NVQlNDUklQVElPTiwgIkNSRUFURSBTVUJT Q1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9U QUJMRSwgIkNSRUFURSBUQUJMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfQ1JFQVRFX1RBQkxFX0FTLCAiQ1JFQVRFIFRBQkxFIEFTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVTUEFDRSwgIkNSRUFURSBUQUJMRVNQQUNF IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VB UkNIX0NPTkZJR1VSQVRJT04sICJDUkVBVEUgVEVYVCBTRUFSQ0ggQ09ORklHVVJBVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX0RJ Q1RJT05BUlksICJDUkVBVEUgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RFWFRfU0VBUkNIX1BBUlNFUiwgIkNSRUFU RSBURVhUIFNFQVJDSCBQQVJTRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0NSRUFURV9URVhUX1NFQVJDSF9URU1QTEFURSwgIkNSRUFURSBURVhUIFNFQVJDSCBURU1Q TEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RSQU5T Rk9STSwgIkNSRUFURSBUUkFOU0ZPUk0iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUco Q01EVEFHX0NSRUFURV9UUklHR0VSLCAiQ1JFQVRFIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9UWVBFLCAiQ1JFQVRFIFRZUEUiLCB0cnVlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0NSRUFURV9VU0VSX01BUFBJTkcsICJDUkVB VEUgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVklFVywgIkNSRUFURSBWSUVXIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19ERUFMTE9DQVRFLCAiREVBTExPQ0FURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RFQUxMT0NBVEVfQUxMLCAiREVBTExPQ0FURSBBTEwiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ERUNMQVJFX0NVUlNPUiwgIkRFQ0xBUkUg Q1VSU09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfREVMRVRFLCAi REVMRVRFIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19ESVNDQVJELCAi RElTQ0FSRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RJU0NBUkRf QUxMLCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19ESVNDQVJEX1BMQU5TLCAiRElTQ0FSRCBQTEFOUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RJU0NBUkRfU0VRVUVOQ0VTLCAiRElTQ0FSRCBTRVFVRU5DRVMiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1RFTVAsICJESVND QVJEIFRFTVAiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19ETywgIkRP IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9BQ0NFU1NfTUVU SE9ELCAiRFJPUCBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19EUk9QX0FHR1JFR0FURSwgIkRST1AgQUdHUkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0NBU1QsICJEUk9QIENBU1QiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQ09MTEFUSU9OLCAiRFJPUCBDT0xMQVRJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfQ09OU1RSQUlO VCwgIkRST1AgQ09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfRFJPUF9DT05WRVJTSU9OLCAiRFJPUCBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0RBVEFCQVNFLCAiRFJPUCBEQVRBQkFTRSIsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRE9NQUlOLCAiRFJPUCBET01B SU4iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRVZFTlRfVFJJ R0dFUiwgIkRST1AgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0RST1BfRVhURU5TSU9OLCAiRFJPUCBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJEUk9Q IEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENN RFRBR19EUk9QX0ZPUkVJR05fVEFCTEUsICJEUk9QIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfRlVOQ1RJT04sICJEUk9QIEZVTkNUSU9O IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX0lOREVYLCAiRFJP UCBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9MQU5H VUFHRSwgIkRST1AgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01E VEFHX0RST1BfTUFURVJJQUxJWkVEX1ZJRVcsICJEUk9QIE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SLCAiRFJPUCBP UEVSQVRPUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9PUEVS QVRPUl9DTEFTUywgIkRST1AgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1JfRkFNSUxZLCAiRFJPUCBPUEVSQVRPUiBGQU1J TFkiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfT1dORUQsICJE Uk9QIE9XTkVEIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1BP TElDWSwgIkRST1AgUE9MSUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19EUk9QX1BST0NFRFVSRSwgIkRST1AgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19EUk9QX1BVQkxJQ0FUSU9OLCAiRFJPUCBQVUJMSUNBVElPTiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9ST0xFLCAiRFJPUCBST0xF IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9ST1VUSU5FLCAi RFJPUCBST1VUSU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9Q X1JVTEUsICJEUk9QIFJVTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFH X0RST1BfU0NIRU1BLCAiRFJPUCBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURU QUcoQ01EVEFHX0RST1BfU0VRVUVOQ0UsICJEUk9QIFNFUVVFTkNFIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NFUlZFUiwgIkRST1AgU0VSVkVSIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1NUQVRJU1RJQ1MsICJEUk9QIFNU QVRJU1RJQ1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfU1VC U0NSSVBUSU9OLCAiRFJPUCBTVUJTQ1JJUFRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19D TURUQUcoQ01EVEFHX0RST1BfVEFCTEUsICJEUk9QIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RBQkxFU1BBQ0UsICJEUk9QIFRBQkxFU1BBQ0UiLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX0NP TkZJR1VSQVRJT04sICJEUk9QIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwg IkRST1AgVEVYVCBTRUFSQ0ggRElDVElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9QQVJTRVIsICJEUk9QIFRFWFQgU0VBUkNIIFBB UlNFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NF QVJDSF9URU1QTEFURSwgIkRST1AgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVFJBTlNGT1JNLCAiRFJPUCBUUkFOU0ZPUk0i LCB0cnVlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0RST1BfVFJJR0dFUiwgIkRS T1AgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRFJPUF9U WVBFLCAiRFJPUCBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19E Uk9QX1VTRVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl KQotUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZJRVcsICJEUk9QIFZJRVciLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0VYRUNVVEUsICJFWEVDVVRFIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfRVhQTEFJTiwgIkVYUExBSU4iLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19GRVRDSCwgIkZFVENIIiwgZmFsc2UsIGZhbHNl LCB0cnVlKQotUEdfQ01EVEFHKENNRFRBR19HUkFOVCwgIkdSQU5UIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19HUkFOVF9ST0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0lNUE9SVF9GT1JFSUdOX1NDSEVNQSwgIklN UE9SVCBGT1JFSUdOIFNDSEVNQSIsIHRydWUsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURU QUdfSU5TRVJULCAiSU5TRVJUIiwgZmFsc2UsIGZhbHNlLCB0cnVlKQotUEdfQ01EVEFHKENNRFRB R19MSVNURU4sICJMSVNURU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19MT0FELCAiTE9BRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX0xP Q0tfVEFCTEUsICJMT0NLIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhD TURUQUdfTUVSR0UsICJNRVJHRSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBHX0NNRFRBRyhDTURU QUdfTU9WRSwgIk1PVkUiLCBmYWxzZSwgZmFsc2UsIHRydWUpCi1QR19DTURUQUcoQ01EVEFHX05P VElGWSwgIk5PVElGWSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1BS RVBBUkUsICJQUkVQQVJFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdf UFJFUEFSRV9UUkFOU0FDVElPTiwgIlBSRVBBUkUgVFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRUFTU0lHTl9PV05FRCwgIlJFQVNTSUdOIE9XTkVE IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVGUkVTSF9NQVRFUklB TElaRURfVklFVywgIlJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFs c2UpCi1QR19DTURUQUcoQ01EVEFHX1JFSU5ERVgsICJSRUlOREVYIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVMRUFTRSwgIlJFTEVBU0UiLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19SRVNFVCwgIlJFU0VUIiwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUkVWT0tFLCAiUkVWT0tFIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19SRVZPS0VfUk9MRSwgIlJFVk9LRSBST0xFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKLVBHX0NNRFRBRyhDTURUQUdfUk9MTEJBQ0ssICJST0xMQkFDSyIsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1JPTExCQUNLX1BSRVBBUkVELCAi Uk9MTEJBQ0sgUFJFUEFSRUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRB R19TQVZFUE9JTlQsICJTQVZFUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFH KENNRFRBR19TRUNVUklUWV9MQUJFTCwgIlNFQ1VSSVRZIExBQkVMIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1QsICJTRUxFQ1QiLCBmYWxzZSwgZmFsc2UsIHRy dWUpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfS0VZX1NIQVJFLCAiU0VMRUNUIEZPUiBL RVkgU0hBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1Rf Rk9SX05PX0tFWV9VUERBVEUsICJTRUxFQ1QgRk9SIE5PIEtFWSBVUERBVEUiLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX1NIQVJFLCAiU0VMRUNUIEZP UiBTSEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NFTEVDVF9G T1JfVVBEQVRFLCAiU0VMRUNUIEZPUiBVUERBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdf Q01EVEFHKENNRFRBR19TRUxFQ1RfSU5UTywgIlNFTEVDVCBJTlRPIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlKQotUEdfQ01EVEFHKENNRFRBR19TRVQsICJTRVQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQot UEdfQ01EVEFHKENNRFRBR19TRVRfQ09OU1RSQUlOVFMsICJTRVQgQ09OU1RSQUlOVFMiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19TSE9XLCAiU0hPVyIsIGZhbHNlLCBm YWxzZSwgZmFsc2UpCi1QR19DTURUQUcoQ01EVEFHX1NUQVJUX1RSQU5TQUNUSU9OLCAiU1RBUlQg VFJBTlNBQ1RJT04iLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQotUEdfQ01EVEFHKENNRFRBR19UUlVO Q0FURV9UQUJMRSwgIlRSVU5DQVRFIFRBQkxFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKLVBHX0NN RFRBRyhDTURUQUdfVU5MSVNURU4sICJVTkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCi1Q R19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKLVBH X0NNRFRBRyhDTURUQUdfVkFDVVVNLCAiVkFDVVVNIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKKy8q IHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIGV2ZW50X3RyaWdnZXJfb2ssIHRhYmxlX3Jld3Jp dGVfb2ssIHJvd2NvdW50LCBkZGxfcmVwbF9vayAqLworUEdfQ01EVEFHKENNRFRBR19VTktOT1dO LCAiPz8/IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FM VEVSX0FDQ0VTU19NRVRIT0QsICJBTFRFUiBBQ0NFU1MgTUVUSE9EIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfQUdHUkVHQVRFLCAiQUxURVIgQUdH UkVHQVRFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9DQVNULCAiQUxURVIgQ0FTVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQUxURVJfQ09MTEFUSU9OLCAiQUxURVIgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9DT05TVFJBSU5ULCAiQUxURVIg Q09OU1RSQUlOVCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0FMVEVSX0NPTlZFUlNJT04sICJBTFRFUiBDT05WRVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9EQVRBQkFTRSwgIkFMVEVSIERBVEFCQVNF IiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0RF RkFVTFRfUFJJVklMRUdFUywgIkFMVEVSIERFRkFVTFQgUFJJVklMRUdFUyIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfRE9NQUlOLCAiQUxURVIgRE9N QUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9F VkVOVF9UUklHR0VSLCAiQUxURVIgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9FWFRFTlNJT04sICJBTFRFUiBFWFRFTlNJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZP UkVJR05fREFUQV9XUkFQUEVSLCAiQUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX0ZPUkVJR05fVEFCTEUs ICJBTFRFUiBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9GVU5DVElPTiwgIkFMVEVSIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9JTkRFWCwgIkFMVEVSIElOREVY IiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9MQU5H VUFHRSwgIkFMVEVSIExBTkdVQUdFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01E VEFHKENNRFRBR19BTFRFUl9MQVJHRV9PQkpFQ1QsICJBTFRFUiBMQVJHRSBPQkpFQ1QiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9NQVRFUklBTEla RURfVklFVywgIkFMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SLCAiQUxURVIgT1BFUkFUT1IiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9S X0NMQVNTLCAiQUxURVIgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUp CitQR19DTURUQUcoQ01EVEFHX0FMVEVSX09QRVJBVE9SX0ZBTUlMWSwgIkFMVEVSIE9QRVJBVE9S IEZBTUlMWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxU RVJfUE9MSUNZLCAiQUxURVIgUE9MSUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9QUk9DRURVUkUsICJBTFRFUiBQUk9DRURVUkUiLCB0cnVlLCBm YWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1BVQkxJQ0FUSU9OLCAi QUxURVIgUFVCTElDQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0FMVEVSX1JPTEUsICJBTFRFUiBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1JPVVRJTkUsICJBTFRFUiBST1VUSU5FIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9SVUxFLCAiQUxU RVIgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxU RVJfU0NIRU1BLCAiQUxURVIgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19BTFRFUl9TRVFVRU5DRSwgIkFMVEVSIFNFUVVFTkNFIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TRVJWRVIsICJBTFRFUiBT RVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVS X1NUQVRJU1RJQ1MsICJBTFRFUiBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9TVUJTQ1JJUFRJT04sICJBTFRFUiBTVUJTQ1JJUFRJ T04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9T WVNURU0sICJBTFRFUiBTWVNURU0iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQUxURVJfVEFCTEUsICJBTFRFUiBUQUJMRSIsIHRydWUsIHRydWUsIGZhbHNl LCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19BTFRFUl9UQUJMRVNQQUNFLCAiQUxURVIgVEFCTEVT UEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19BTFRF Ul9URVhUX1NFQVJDSF9DT05GSUdVUkFUSU9OLCAiQUxURVIgVEVYVCBTRUFSQ0ggQ09ORklHVVJB VElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJf VEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkFMVEVSIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FMVEVSX1RFWFRfU0VB UkNIX1BBUlNFUiwgIkFMVEVSIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJB TFRFUiBURVhUIFNFQVJDSCBURU1QTEFURSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQUxURVJfVFJBTlNGT1JNLCAiQUxURVIgVFJBTlNGT1JNIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVFJJR0dFUiwgIkFM VEVSIFRSSUdHRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFH X0FMVEVSX1RZUEUsICJBTFRFUiBUWVBFIiwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0FMVEVSX1VTRVJfTUFQUElORywgIkFMVEVSIFVTRVIgTUFQUElORyIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQUxURVJfVklFVywgIkFM VEVSIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0FO QUxZWkUsICJBTkFMWVpFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUco Q01EVEFHX0JFR0lOLCAiQkVHSU4iLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfQ0FMTCwgIkNBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfQ0hFQ0tQT0lOVCwgIkNIRUNLUE9JTlQiLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xPU0UsICJDTE9TRSIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DTE9TRV9DVVJTT1IsICJDTE9TRSBD VVJTT1IiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xP U0VfQ1VSU09SX0FMTCwgIkNMT1NFIENVUlNPUiBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm YWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ0xVU1RFUiwgIkNMVVNURVIiLCBmYWxzZSwgZmFsc2Us IGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ09NTUVOVCwgIkNPTU1FTlQiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NPTU1JVCwgIkNPTU1JVCIs IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DT01NSVRfUFJF UEFSRUQsICJDT01NSVQgUFJFUEFSRUQiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfQ09QWSwgIkNPUFkiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19DT1BZX0ZST00sICJDT1BZIEZST00iLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0FDQ0VTU19NRVRIT0QsICJDUkVB VEUgQUNDRVNTIE1FVEhPRCIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX0FHR1JFR0FURSwgIkNSRUFURSBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DQVNULCAiQ1JFQVRFIENBU1Qi LCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9DT0xM QVRJT04sICJDUkVBVEUgQ09MTEFUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19DUkVBVEVfQ09OU1RSQUlOVCwgIkNSRUFURSBDT05TVFJBSU5UIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0NPTlZFUlNJ T04sICJDUkVBVEUgQ09OVkVSU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX0RBVEFCQVNFLCAiQ1JFQVRFIERBVEFCQVNFIiwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9ET01BSU4sICJDUkVB VEUgRE9NQUlOIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfRVZFTlRfVFJJR0dFUiwgIkNSRUFURSBFVkVOVCBUUklHR0VSIiwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9FWFRFTlNJT04sICJDUkVB VEUgRVhURU5TSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJDUkVBVEUgRk9SRUlHTiBEQVRBIFdSQVBQ RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9G T1JFSUdOX1RBQkxFLCAiQ1JFQVRFIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxzZSwgZmFsc2Us IHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9GVU5DVElPTiwgIkNSRUFURSBGVU5DVElP TiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0lO REVYLCAiQ1JFQVRFIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfTEFOR1VBR0UsICJDUkVBVEUgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9NQVRFUklBTElaRURfVklFVywg IkNSRUFURSBNQVRFUklBTElaRUQgVklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX09QRVJBVE9SLCAiQ1JFQVRFIE9QRVJBVE9SIiwgdHJ1ZSwg ZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfT1BFUkFUT1JfQ0xB U1MsICJDUkVBVEUgT1BFUkFUT1IgQ0xBU1MiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0NSRUFURV9PUEVSQVRPUl9GQU1JTFksICJDUkVBVEUgT1BFUkFUT1Ig RkFNSUxZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVB VEVfUE9MSUNZLCAiQ1JFQVRFIFBPTElDWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX1BST0NFRFVSRSwgIkNSRUFURSBQUk9DRURVUkUiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9QVUJMSUNBVElP TiwgIkNSRUFURSBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NN RFRBRyhDTURUQUdfQ1JFQVRFX1JPTEUsICJDUkVBVEUgUk9MRSIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfUk9VVElORSwgIkNSRUFURSBST1VU SU5FIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1JVTEUsICJDUkVBVEUgUlVMRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfQ1JFQVRFX1NDSEVNQSwgIkNSRUFURSBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TRVFVRU5DRSwgIkNSRUFURSBTRVFV RU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRF X1NFUlZFUiwgIkNSRUFURSBTRVJWRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0NSRUFURV9TVEFUSVNUSUNTLCAiQ1JFQVRFIFNUQVRJU1RJQ1MiLCB0cnVl LCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9TVUJTQ1JJUFRJ T04sICJDUkVBVEUgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BH X0NNRFRBRyhDTURUQUdfQ1JFQVRFX1RBQkxFLCAiQ1JFQVRFIFRBQkxFIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVEFCTEVfQVMsICJDUkVBVEUg VEFCTEUgQVMiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19D UkVBVEVfVEFCTEVTUEFDRSwgIkNSRUFURSBUQUJMRVNQQUNFIiwgZmFsc2UsIGZhbHNlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9DT05GSUdVUkFU SU9OLCAiQ1JFQVRFIFRFWFQgU0VBUkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFs c2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9ESUNUSU9OQVJZ LCAiQ1JFQVRFIFRFWFQgU0VBUkNIIERJQ1RJT05BUlkiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0NSRUFURV9URVhUX1NFQVJDSF9QQVJTRVIsICJDUkVBVEUg VEVYVCBTRUFSQ0ggUEFSU0VSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFH KENNRFRBR19DUkVBVEVfVEVYVF9TRUFSQ0hfVEVNUExBVEUsICJDUkVBVEUgVEVYVCBTRUFSQ0gg VEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0NS RUFURV9UUkFOU0ZPUk0sICJDUkVBVEUgVFJBTlNGT1JNIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0 cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFJJR0dFUiwgIkNSRUFURSBUUklHR0VSIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfVFlQRSwg IkNSRUFURSBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19DUkVBVEVfVVNFUl9NQVBQSU5HLCAiQ1JFQVRFIFVTRVIgTUFQUElORyIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX1ZJRVcsICJDUkVBVEUgVklF VyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfREVBTExPQ0FU RSwgIkRFQUxMT0NBVEUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfREVBTExPQ0FURV9BTEwsICJERUFMTE9DQVRFIEFMTCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ERUNMQVJFX0NVUlNPUiwgIkRFQ0xBUkUgQ1VS U09SIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RFTEVU RSwgIkRFTEVURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFH X0RJU0NBUkQsICJESVNDQVJEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX0RJU0NBUkRfQUxMLCAiRElTQ0FSRCBBTEwiLCBmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9QTEFOUywgIkRJU0NBUkQgUExBTlMi LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRElTQ0FSRF9T RVFVRU5DRVMsICJESVNDQVJEIFNFUVVFTkNFUyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl KQorUEdfQ01EVEFHKENNRFRBR19ESVNDQVJEX1RFTVAsICJESVNDQVJEIFRFTVAiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRE8sICJETyIsIGZhbHNlLCBm YWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0FDQ0VTU19NRVRIT0Qs ICJEUk9QIEFDQ0VTUyBNRVRIT0QiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURU QUcoQ01EVEFHX0RST1BfQUdHUkVHQVRFLCAiRFJPUCBBR0dSRUdBVEUiLCB0cnVlLCBmYWxzZSwg ZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfQ0FTVCwgIkRST1AgQ0FTVCIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9DT0xMQVRJT04s ICJEUk9QIENPTExBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9DT05TVFJBSU5ULCAiRFJPUCBDT05TVFJBSU5UIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9DT05WRVJTSU9OLCAiRFJPUCBDT05W RVJTSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9Q X0RBVEFCQVNFLCAiRFJPUCBEQVRBQkFTRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19EUk9QX0RPTUFJTiwgIkRST1AgRE9NQUlOIiwgdHJ1ZSwgZmFsc2Us IGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX0VWRU5UX1RSSUdHRVIsICJEUk9Q IEVWRU5UIFRSSUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhD TURUQUdfRFJPUF9FWFRFTlNJT04sICJEUk9QIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxz ZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9GT1JFSUdOX0RBVEFfV1JBUFBFUiwgIkRS T1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9UQUJMRSwgIkRST1AgRk9SRUlHTiBUQUJMRSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9GVU5DVElPTiwg IkRST1AgRlVOQ1RJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01E VEFHX0RST1BfSU5ERVgsICJEUk9QIElOREVYIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQor UEdfQ01EVEFHKENNRFRBR19EUk9QX0xBTkdVQUdFLCAiRFJPUCBMQU5HVUFHRSIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9NQVRFUklBTElaRURfVklF VywgIkRST1AgTUFURVJJQUxJWkVEIFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfT1BFUkFUT1IsICJEUk9QIE9QRVJBVE9SIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX09QRVJBVE9SX0NMQVNTLCAi RFJPUCBPUEVSQVRPUiBDTEFTUyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRB RyhDTURUQUdfRFJPUF9PUEVSQVRPUl9GQU1JTFksICJEUk9QIE9QRVJBVE9SIEZBTUlMWSIsIHRy dWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9PV05FRCwgIkRS T1AgT1dORUQiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19E Uk9QX1BPTElDWSwgIkRST1AgUE9MSUNZIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19EUk9QX1BST0NFRFVSRSwgIkRST1AgUFJPQ0VEVVJFIiwgdHJ1ZSwgZmFs c2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1BVQkxJQ0FUSU9OLCAiRFJP UCBQVUJMSUNBVElPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfRFJPUF9ST0xFLCAiRFJPUCBST0xFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQ R19DTURUQUcoQ01EVEFHX0RST1BfUk9VVElORSwgIkRST1AgUk9VVElORSIsIHRydWUsIGZhbHNl LCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9SVUxFLCAiRFJPUCBSVUxFIiwg dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1NDSEVNQSwg IkRST1AgU0NIRU1BIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19EUk9QX1NFUVVFTkNFLCAiRFJPUCBTRVFVRU5DRSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1 ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TRVJWRVIsICJEUk9QIFNFUlZFUiIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9TVEFUSVNUSUNTLCAiRFJP UCBTVEFUSVNUSUNTIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRB R19EUk9QX1NVQlNDUklQVElPTiwgIkRST1AgU1VCU0NSSVBUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9UQUJMRSwgIkRST1AgVEFCTEUiLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVEFCTEVTUEFD RSwgIkRST1AgVEFCTEVTUEFDRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01E VEFHKENNRFRBR19EUk9QX1RFWFRfU0VBUkNIX0NPTkZJR1VSQVRJT04sICJEUk9QIFRFWFQgU0VB UkNIIENPTkZJR1VSQVRJT04iLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUco Q01EVEFHX0RST1BfVEVYVF9TRUFSQ0hfRElDVElPTkFSWSwgIkRST1AgVEVYVCBTRUFSQ0ggRElD VElPTkFSWSIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJP UF9URVhUX1NFQVJDSF9QQVJTRVIsICJEUk9QIFRFWFQgU0VBUkNIIFBBUlNFUiIsIHRydWUsIGZh bHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfRFJPUF9URVhUX1NFQVJDSF9URU1Q TEFURSwgIkRST1AgVEVYVCBTRUFSQ0ggVEVNUExBVEUiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVFJBTlNGT1JNLCAiRFJPUCBUUkFOU0ZPUk0iLCB0 cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0RST1BfVFJJR0dFUiwg IkRST1AgVFJJR0dFUiIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURU QUdfRFJPUF9UWVBFLCAiRFJPUCBUWVBFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdf Q01EVEFHKENNRFRBR19EUk9QX1VTRVJfTUFQUElORywgIkRST1AgVVNFUiBNQVBQSU5HIiwgdHJ1 ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19EUk9QX1ZJRVcsICJEUk9Q IFZJRVciLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19DTURUQUcoQ01EVEFHX0VYRUNV VEUsICJFWEVDVVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01E VEFHX0VYUExBSU4sICJFWFBMQUlOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX0ZFVENILCAiRkVUQ0giLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19HUkFOVCwgIkdSQU5UIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVl KQorUEdfQ01EVEFHKENNRFRBR19HUkFOVF9ST0xFLCAiR1JBTlQgUk9MRSIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19JTVBPUlRfRk9SRUlHTl9TQ0hFTUEs ICJJTVBPUlQgRk9SRUlHTiBTQ0hFTUEiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUpCitQR19D TURUQUcoQ01EVEFHX0lOU0VSVCwgIklOU0VSVCIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX0xJU1RFTiwgIkxJU1RFTiIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19MT0FELCAiTE9BRCIsIGZhbHNlLCBmYWxzZSwgZmFs c2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19MT0NLX1RBQkxFLCAiTE9DSyBUQUJMRSIsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19NRVJHRSwgIk1FUkdF IiwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfTU9WRSwgIk1P VkUiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19OT1RJRlks ICJOT1RJRlkiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdf UFJFUEFSRSwgIlBSRVBBUkUiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRB RyhDTURUQUdfUFJFUEFSRV9UUkFOU0FDVElPTiwgIlBSRVBBUkUgVFJBTlNBQ1RJT04iLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVBU1NJR05fT1dORUQs ICJSRUFTU0lHTiBPV05FRCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19SRUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXLCAiUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVyIsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKK1BHX0NNRFRBRyhDTURUQUdfUkVJTkRF WCwgIlJFSU5ERVgiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURU QUdfUkVMRUFTRSwgIlJFTEVBU0UiLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NN RFRBRyhDTURUQUdfUkVTRVQsICJSRVNFVCIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19SRVZPS0UsICJSRVZPS0UiLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRy dWUpCitQR19DTURUQUcoQ01EVEFHX1JFVk9LRV9ST0xFLCAiUkVWT0tFIFJPTEUiLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfUk9MTEJBQ0ssICJST0xMQkFD SyIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19ST0xMQkFD S19QUkVQQVJFRCwgIlJPTExCQUNLIFBSRVBBUkVEIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs c2UpCitQR19DTURUQUcoQ01EVEFHX1NBVkVQT0lOVCwgIlNBVkVQT0lOVCIsIGZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUNVUklUWV9MQUJFTCwgIlNFQ1VS SVRZIExBQkVMIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKQorUEdfQ01EVEFHKENNRFRBR19T RUxFQ1QsICJTRUxFQ1QiLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKQorUEdfQ01EVEFHKENN RFRBR19TRUxFQ1RfRk9SX0tFWV9TSEFSRSwgIlNFTEVDVCBGT1IgS0VZIFNIQVJFIiwgZmFsc2Us IGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NFTEVDVF9GT1JfTk9fS0VZ X1VQREFURSwgIlNFTEVDVCBGT1IgTk8gS0VZIFVQREFURSIsIGZhbHNlLCBmYWxzZSwgZmFsc2Us IGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxFQ1RfRk9SX1NIQVJFLCAiU0VMRUNUIEZPUiBT SEFSRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRUxF Q1RfRk9SX1VQREFURSwgIlNFTEVDVCBGT1IgVVBEQVRFIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1NFTEVDVF9JTlRPLCAiU0VMRUNUIElOVE8iLCB0cnVl LCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFHKENNRFRBR19TRVQsICJTRVQiLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfU0VUX0NPTlNUUkFJTlRT LCAiU0VUIENPTlNUUkFJTlRTIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19DTURU QUcoQ01EVEFHX1NIT1csICJTSE9XIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCitQR19D TURUQUcoQ01EVEFHX1NUQVJUX1RSQU5TQUNUSU9OLCAiU1RBUlQgVFJBTlNBQ1RJT04iLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSkKK1BHX0NNRFRBRyhDTURUQUdfVFJVTkNBVEVfVEFCTEUs ICJUUlVOQ0FURSBUQUJMRSIsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKQorUEdfQ01EVEFH KENNRFRBR19VTkxJU1RFTiwgIlVOTElTVEVOIiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up CitQR19DTURUQUcoQ01EVEFHX1VQREFURSwgIlVQREFURSIsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwg ZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX1ZBQ1VVTSwgIlZBQ1VVTSIsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgg Yi9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAppbmRleCA4YjM2OWZkOGM1Li5jYWVmYjAz YmY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaAorKysgYi9zcmMv aW5jbHVkZS90Y29wL2RkbGRlcGFyc2UuaApAQCAtMiw4ICsyLDcgQEAKICAqCiAgKiBkZGxkZXBh cnNlLmgKICAqCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMywgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLSAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAg KgogICogc3JjL2luY2x1ZGUvdGNvcC9kZGxkZXBhcnNlLmgKICAqCkBAIC0xNCw5ICsxMywxNyBA QAogCiAjaW5jbHVkZSAidGNvcC9kZXBhcnNlX3V0aWxpdHkuaCIKIAotZXh0ZXJuIGNoYXIgKmRl cGFyc2VfdXRpbGl0eV9jb21tYW5kKENvbGxlY3RlZENvbW1hbmQgKmNtZCk7CisvKiBDb250ZXh0 IGluZm8gbmVlZGVkIGZvciBkZXBhcnNpbmcgZGRsIGNvbW1hbmQgKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJLyogVGhlIG1heGltdW0gdm9sYXRpbGl0eSBvZiBmdW5jdGlvbnMgaW4gZXhwcmVzc2lv bnMgb2YgYSBEREwgY29tbWFuZC4gKi8KKwljaGFyCQltYXhfdm9sYXRpbGl0eTsKK30JCQlkZGxf ZGVwYXJzZV9jb250ZXh0OworCitleHRlcm4gY2hhciAqZGVwYXJzZV91dGlsaXR5X2NvbW1hbmQo Q29sbGVjdGVkQ29tbWFuZCAqY21kLAorCQkJCQkJCQkJIGRkbF9kZXBhcnNlX2NvbnRleHQgKiBj b250ZXh0KTsKIGV4dGVybiBjaGFyICpkZXBhcnNlX2RkbF9qc29uX3RvX3N0cmluZyhjaGFyICpq c29uYik7CiBleHRlcm4gY2hhciAqZGVwYXJzZV9kcm9wX3RhYmxlKGNvbnN0IGNoYXIgKm9iamlk ZW50aXR5LCBjb25zdCBjaGFyICpvYmplY3R0eXBlLAotCQkJCQkJCQkgIE5vZGUgKnBhcnNldHJl ZSk7CisJCQkJCQkJCU5vZGUgKnBhcnNldHJlZSk7CiAKICNlbmRpZgkJCQkJCQkvKiBERExfREVQ QVJTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3JlbC5oCmluZGV4IDE0MjZhMzUzY2QuLmE2NTZmNWJkN2MgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBA IC0xNywxMCArMTcsMTIgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1ZGUg ImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgiCiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCisjaW5jbHVkZSAibm9kZXMv bG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlZnMuaCIKICNpbmNs dWRlICJyZXdyaXRlL3ByczJsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggOGY5MzAyODM2My4uMDA4ZjYxMGQxMSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CkBAIC02MjIzLDkgKzYyMjMsOSBAQCBMaXN0IG9m IHNjaGVtYXMKICgwIHJvd3MpCiAKIFxkUnAgIm5vLnN1Y2gucHVibGljYXRpb24iCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucwotIE5hbWUgfCBPd25l ciB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworIE5hbWUgfCBPd25lciB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K ICgwIHJvd3MpCiAKIFxkUnMgIm5vLnN1Y2guc3Vic2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA2OWRjNmNmZDg1Li42YTVhZjJmZDNmIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzAsMjAgKzMw LDIwIEBAIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTog Li4udWJfeHh4IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJ3RydWUnLCBwdWJs aXNoX3ZpLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5hbWUgICAgICAgIHwg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cGliX2luc190cnVuY3Qg fCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICAgIE5hbWUgICAg ICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAg IHwgZiAgICAgICAgIHwgZgorIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgIHwgZiAgICAgICAgIHwgZgogKDIgcm93cykKIAogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9kZWZhdWx0IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CiBc ZFJwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAg ICAgICAgfCBmCi0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVzdHBp Yl9pbnNfdHJ1bmN0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCisg dGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAg fCBmCiAoMiByb3dzKQogCiAtLS0gYWRkaW5nIHRhYmxlcwpAQCAtODcsMTAgKzg3LDEwIEBAIFJF U0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgc2NoZW1h IHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9mb3J0 YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJs aWMudGVzdHB1Yl90YmwxIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTk5LDIwICs5OSwyMCBA QCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEg ZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9m b3J0YWJsZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1 YmxpYy50ZXN0cHViX3RibDEiCiAKIC0tIHNob3VsZCBiZSBhYmxlIHRvIHNldCBzY2hlbWEgdG8g J0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFi bGUgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxl Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y dGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y dGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdCIKIApAQCAtMTIzLDEwICsxMjMsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEg cHViX3Rlc3QsIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9w ayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNDQsMTAgKzE0NCwxMCBAQCBMSU5FIDE6IC4u LkNBVElPTiB0ZXN0cHViX3BhcnNlcnRzdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBmb28sIHRlc3Qu Zm9vOwogLS0gc2hvdWxkIGJlIGFibGUgdG8gYWRkIGEgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1h IHRvIHRoZSBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y c2NoZW1hIEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2Zv cnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAi cHViX3Rlc3QudGVzdHB1Yl9ub3BrIgogVGFibGVzIGZyb20gc2NoZW1hczoKQEAgLTE1NiwxMCAr MTU2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBzaG91bGQgYmUgYWJsZSB0byBkcm9w IHRoZSB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgRFJPUCBUQUJM RSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0IgogCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0cHVi X25vcGsiIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWNhdGlvbgogLS0gc2hvdWxkIGJlIGFibGUg dG8gc2V0IHRhYmxlIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVz dHB1Yl9mb3JzY2hlbWEgU0VUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIFxkUnArIHRl c3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAKQEAgLTE5NSwxMCArMTk1LDEwIEBAIFB1 YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXMiCiAKIFxkUnArIHRlc3RwdWJf Zm9yYWxsdGFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9yYWxsdGFibGVzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogKDEgcm93 KQogCiBEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKQEAgLTIxMCwxOSArMjEwLDE5IEBAIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViMwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMworICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKICAgICAicHVibGljLnRlc3Rw dWJfdGJsM2EiCiAKIFxkUnArIHRlc3RwdWI0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogCkBAIC0yNDMsMTAgKzI0MywxMCBAQCBV UERBVEUgdGVzdHB1Yl9wYXJ0ZWQxIFNFVCBhID0gMTsKIC0tIG9ubHkgcGFyZW50IGlzIGxpc3Rl ZCBhcyBiZWluZyBpbiBwdWJsaWNhdGlvbiwgbm90IHRoZSBwYXJ0aXRpb24KIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9ycGFydGVkIEFERCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIFxkUnAr IHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI2MSwxMCArMjYxLDEwIEBA IEFMVEVSIFRBQkxFIHRlc3RwdWJfcGFydGVkIERFVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl9wYXJ0 ZWQxOwogVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiBBTFRFUiBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcnBhcnRlZCBTRVQgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1 ZSk7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBE RExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg ICB8IHQKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFydGVkIgogCkBAIC0yOTMsMTAg KzI5MywxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90 YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAg ICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6OnRleHQpIEFO RCAoZCA8IDUpKQpAQCAtMzA5LDEwICszMDksMTAgQEAgVGFibGVzOgogCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBB TkQgZSA8IDIwMDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHVi X3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMzI4 LDEwICszMjgsMTAgQEAgUHVibGljYXRpb25zOgogCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMjsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgIHwg ZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAg ICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAxMDAwKSBBTkQgKGUgPCAyMDAw KSkKQEAgLTMzOSwxMCArMzM5LDEwIEBAIFRhYmxlczoKIC0tIHJlbW92ZSB0ZXN0cHViX3JmX3Ri bDEgYW5kIGFkZCB0ZXN0cHViX3JmX3RibDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVzc2lv bikKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMg V0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICAgfCBm ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJF ICgoZSA+IDMwMCkgQU5EIChlIDwgNTAwKSkKIApAQCAtMzc1LDEwICszNzUsMTAgQEAgU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c3ludGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCBPTkxZIHRlc3RwdWJfcmZfdGJsMyBX SEVSRSAoZSA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgxCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgxCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRh YmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgIHwgZiAg ICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJw dWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoZSA8IDk5OSkKQEAgLTM4OCwxMCArMzg4LDEw IEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl9z Y2hlbWExLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8IDk5OSkgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX3N5bnRh eDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9z eW50YXgyCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9z eW50YXgyCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMu dGVzdHB1Yl9yZl90YmwxIgogICAgICJ0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1 IiBXSEVSRSAoaCA8IDk5OSkKQEAgLTUwNiwxMCArNTA2LDEwIEBAIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNiBGT1IgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTI7CiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX3Nj aGVtYTIsIFRBQkxFIHRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYgV0hFUkUgKGkg PCA5OSk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjYKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2Ci0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjYKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0 cHViX3JmX3RibDYiIFdIRVJFIChpIDwgOTkpCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtNzIz LDEwICs3MjMsMTAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIFdJVEgg KHB1Ymxpc2ggPSAnaW5zZXJ0LCB0cnVuY2F0ZScpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJMRSB0ZXN0cHVi X3RibDUgKGEpOwkJLS0gb2sKIFxkUnArIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfdGFibGVfaW5zCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90Ymw1IiAo YSkKIApAQCAtOTAwLDEwICs5MDAsMTAgQEAgQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2JvdGhf ZmlsdGVycyAoYSBpbnQsIGIgaW50LCBjIGludCwgUFJJTUFSWSBLRVkgKGEsYykpOwogQUxURVIg VEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVggdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzX3BrZXk7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2JvdGhfZmlsdGVycyBBREQgVEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIChhLGMp IFdIRVJFIChjICE9IDEpOwogXGRScCsgdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfYm90aF9maWx0ZXJzCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bF9ib3RoX2ZpbHRlcnMiIChhLCBjKSBXSEVSRSAoYyA8PiAxKQogCkBAIC0xMTA4LDEwICsxMTA4 LDEwIEBAIEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfdGJsMSIgaXMgYWxyZWFkeSBtZW1iZXIg b2YgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGJsCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YmwgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWJfZm9ydGJsIiBhbHJlYWR5IGV4aXN0cwogXGRScCsgdGVzdHB1Yl9mb3J0YmwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGJsCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YmwKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJf bm9wayIKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKQEAgLTExNDksMTAgKzExNDksMTAgQEAg UHVibGljYXRpb25zOgogICAgICJ0ZXN0cHViX2ZvcnRibCIKIAogXGRScCsgdGVzdHB1Yl9kZWZh dWx0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf ZGVmYXVsdAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf ZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rl c3QudGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTIzMCwxMCAr MTIzMCwxMCBAQCBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb24gRlJPTSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsKIERST1Ag VEFCTEUgdGVzdHB1Yl90YmwxOwogXGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg ICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3duZXIgb2Yg cHVibGljYXRpb24KQEAgLTEyNDMsMjAgKzEyNDMsMjAgQEAgRVJST1I6ICBtdXN0IGJlIG93bmVy IG9mIHB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAogUkVTRVQgUk9MRTsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBSRU5BTUUgVE8gdGVzdHB1Yl9mb287CiBcZFJwIHRlc3Rw dWJfZm9vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBwdWJsaWNhdGlvbnMKLSAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSB0ZXN0cHViX2ZvbyB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlv bnMKKyAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9vIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAg fCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJl c3Qgc2ltcGxlCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvbyBSRU5BTUUgVE8gdGVzdHB1 Yl9kZWZhdWx0OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IE9XTkVSIFRPIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CiBcZFJwIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g dGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNh dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVu Y2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cHViX2RlZmF1bHQgfCByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICAgfCBmICAgICAgICAgfCBmCiAoMSByb3cpCiAKIC0tIGFkZGluZyBz Y2hlbWFzIGFuZCB0YWJsZXMKQEAgLTEyNzIsMTkgKzEyNzIsMTkgQEAgQ1JFQVRFIFRBQkxFICJD VVJSRU5UX1NDSEVNQSIuIkNVUlJFTlRfU0NIRU1BIihpZCBpbnQpOwogU0VUIGNsaWVudF9taW5f bWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAicHViX3Rlc3QxIgogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjJfZm9yc2No ZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyLCBwdWJfdGVzdDM7 CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERE THMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMjk4LDQ0ICsxMjk4LDQ0IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNl9m b3JzY2hlbWEgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRfU0NIRU1BIiwgQ1VSCiBDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBGT1IgVEFCTEUgIkNVUlJFTlRfU0NIRU1B Ii4iQ1VSUkVOVF9TQ0hFTUEiOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRl c3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI0X2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0X2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJDVVJSRU5UX1NDSEVNQSIKIAogXGRScCsgdGVzdHB1YjVfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjVfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAg IkNVUlJFTlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWI2X2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2X2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJDVVJSRU5UX1NDSEVNQSIKICAgICAicHVibGljIgogCiBcZFJwKyB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgIkNV UlJFTlRfU0NIRU1BLkNVUlJFTlRfU0NIRU1BIgogCkBAIC0xMzY5LDEwICsxMzY5LDEwIEBAIEVS Uk9SOiAgc2NoZW1hICJ0ZXN0cHViX3ZpZXciIGRvZXMgbm90IGV4aXN0CiAtLSBkcm9wcGluZyB0 aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIERST1Ag U0NIRU1BIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVz dDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzODAsMjAgKzEzODAsMjAgQEAgVGFibGVzIGZyb20g c2NoZW1hczoKIC0tIHJlbmFtaW5nIHRoZSBzY2hlbWEgc2hvdWxkIHJlZmxlY3QgdGhlIGNoYW5n ZSBpbiBwdWJsaWNhdGlvbgogQUxURVIgU0NIRU1BIHB1Yl90ZXN0MSBSRU5BTUUgdG8gcHViX3Rl c3QxX3JlbmFtZWQ7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxX3Jl bmFtZWQiCiAgICAgInB1Yl90ZXN0MiIKIAogQUxURVIgU0NIRU1BIHB1Yl90ZXN0MV9yZW5hbWVk IFJFTkFNRSB0byBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi X3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDAxLDEwICsxNDAxLDEwIEBAIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBhZGQgc2NoZW1hCiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qy OwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBE RExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAg ICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rl c3QyIgpAQCAtMTQxMywxMCArMTQxMywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEFERCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9l eGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9l cyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICAg fCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAg ICAgInB1Yl90ZXN0MiIKQEAgLTE0MjUsMTAgKzE0MjUsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1h czoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDE7CiBFUlJPUjogIHNjaGVtYSAicHViX3Rlc3QxIiBpcyBhbHJlYWR5IG1l bWJlciBvZiBwdWJsaWNhdGlvbiAidGVzdHB1YjFfZm9yc2NoZW1hIgogXGRScCsgdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQzNiwxMCAr MTQzNiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0ZXIgcHVibGljYXRpb24gZHJv cCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg ZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1 Yl90ZXN0MSIKIApAQCAtMTQ0NywxMCArMTQ0NywxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFNDSEVN QSBwdWJfdGVzdDI7CiBFUlJPUjogIHRhYmxlcyBmcm9tIHNjaGVtYSAicHViX3Rlc3QyIiBhcmUg bm90IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uCiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAicHViX3Rlc3QxIgogCkBAIC0xNDU4LDI5ICsxNDU4LDI5IEBAIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4g U0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50 X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAKIC0tIGRyb3AgYWxsIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVz dHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0 aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8IGYKICgxIHJv dykKIAogLS0gYWx0ZXIgcHVibGljYXRpb24gc2V0IG11bHRpcGxlIHNjaGVtYQogQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0 MSwgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg ICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIK ICAgICAicHViX3Rlc3QyIgpAQCAtMTQ4OSwxMCArMTQ4OSwxMCBAQCBUYWJsZXMgZnJvbSBzY2hl bWFzOgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4g U0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50 X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0 ZXMgfCBEZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJw dWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE1MDEsMTAgKzE1MDEsMTAgQEAgVGFibGVz IGZyb20gc2NoZW1hczoKIC0tIHJlbW92aW5nIHRoZSBkdXBsaWNhdGUgc2NoZW1hcwogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90 ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUYWJsZSBERExzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0 MSIKIApAQCAtMTU4MywxOCArMTU4MywxOCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdF UlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjNfZm9yc2NoZW1hOwogUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVGFibGUgRERMcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiAoMSByb3cpCiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIzX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0 cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNjA0LDIwICsxNjA0LDIwIEBA IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZSBGT1IgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdDEsIFRBCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0 YWJsZV9mb3JzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0Mi50YmwxLCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0MTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2Zv cnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUYWJsZSBERExz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgICB8IHQgICAgICAgICB8 IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFibGVfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRhYmxlIERETHMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCBmICAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJf dGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKaW5kZXggYmQ2NzNhOWQ2OC4uN2RmY2MxMzg5OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZApAQCAtNDAsNiArNDAsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMzFfY29sdW1uX2xp c3QucGwnLAogICAgICAgJ3QvMDMyX3N1YnNjcmliZV91c2VfaW5kZXgucGwnLAogICAgICAgJ3Qv MDMzX3J1bl9hc190YWJsZV9vd25lci5wbCcsCisgICAgICAndC8wMzRfZGRsX3JlcGxpY2F0aW9u LnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X2RkbF9yZXBsaWNhdGlvbi5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNF9kZGxfcmVwbGljYXRpb24ucGwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uZjIzOWQ2OTY5NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9kZGxfcmVwbGljYXRpb24ucGwKQEAgLTAsMCArMSwzNzQg QEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorIyBSZWdyZXNzaW9uIHRlc3RzIGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIG9mIERETHMK KyMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRub2RlX3N1YnNjcmliZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNj cmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2Ny aWJlci0+c3RhcnQ7CisKK215ICRkZGwgPSAiQ1JFQVRFIFRBQkxFIHRlc3RfcmVwKGlkIGludCBw cmltYXJ5IGtleSwgbmFtZSB2YXJjaGFyLCB2YWx1ZSBpbnRlZ2VyKTsiOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJGRkbCk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICgxLCAnZGF0YTEn LCAxKTsiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAkZGRsKTsK KworbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIG15cHViIEZPUiBBTEwgVEFCTEVTIHdpdGggKHB1Ymxpc2gg PSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZScsIGRkbCA9ICd0YWJsZScpOyIpOworJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gbXlz dWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBteXB1YjsiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworIyBNYWtlIHN1 cmUgd2UgaGF2ZSBmdWxseSBzeW5jaHJvbml6ZWQgdGhlIHRhYmxlLgorIyBUaGlzIHByZXZlbnRz IEFMVEVSIFRBQkxFIGNvbW1hbmQgYmVsb3cgZnJvbSBiZWluZyBleGVjdXRlZCBkdXJpbmcgdGFi bGUgc3luY2hyb25pemF0aW9uLgorJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAorICAgIlNFTEVDVCBDT1VOVCgxKSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25f cmVsIHNyIFdIRVJFIHNyLnNyc3Vic3RhdGUgTk9UIElOICgncycsICdyJykgQU5EIHNyLnNycmVs aWQgPSAndGVzdF9yZXAnOjpyZWdjbGFzcyIKKyk7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBBREQK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0 X3JlcCBBREQgYzQgaW50OyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAoMiwgJ2RhdGEyJywgMiwgMik7Iik7Cisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CitteSAkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3JlcCBXSEVSRSBjNCA9IDI7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0FMVEVS IHRlc3RfcmVwIEFERCByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBEUk9QCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9y ZXAgRFJPUCBjNDsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3JlcCB3aGVyZSBpZCA9IDI7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0ZXN0X3JlcDsiKTsKK2lz KCRyZXN1bHQsIHFxKDEpLCAnQUxURVIgdGVzdF9yZXAgRFJPUCByZXBsaWNhdGVkJyk7CisKKyMg VGVzdCBBTFRFUiBUQUJMRSBBTFRFUiBUWVBFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9yZXAgQUxURVIgdmFsdWUgVFlQRSB2YXJjaGFy Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8g dGVzdF9yZXAgVkFMVUVTICgzLCAnZGF0YTMnLCAnMycpOyIpOworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9yZXAgV0hFUkUg dmFsdWUgPSAnMyc7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0FMVEVSIHRlc3RfcmVwIEFMVEVS IENPTFVNTiBUWVBFIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IEFMVEVSIFRBQkxFIEFMVEVSIFNF VCBERUZBVUxUCisjIENoZWNrIGlmIHdlIGhhdmUgdGhlIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgdGhl IGRpcmVjdCBpbnNlcnQgdG8gc3Vic2NyaWJlciBub2RlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIEFMVEVSIENPTFVNTiB2YWx1 ZSBTRVQgREVGQVVMVCAnZm9vJyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDQsICdkYXRhNCcpOyIpOworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHZhbHVlIEZST00gdGVz dF9yZXAgV0hFUkUgaWQgPSA0OyIpOworaXMoJHJlc3VsdCwgJ2ZvbycsICdBTFRFUiB0ZXN0X3Jl cCBBTFRFUiBTRVQgREVGQVVMVCByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBB TFRFUiBEUk9QIERFRkFVTFQKKyMgQ2hlY2sgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgZGVmYXVsdCB2 YWx1ZSBwcmV2aW91c2x5IGRlZmluZWQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF9yZXAgQUxURVIgQ09MVU1OIHZhbHVlIERST1AgREVG QVVMVDsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9y ZXAgVkFMVUVTICg1LCAnZGF0YTUnKTsiKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCB2YWx1ZSBJUyBOVUxMIEZST00gdGVzdF9yZXAg V0hFUkUgaWQgPSA1OyIpOworaXMoJHJlc3VsdCwgcSh0KSwgJ0FMVEVSIHRlc3RfcmVwIEFMVEVS IERST1AgREVGQVVMVCByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCBBTFRFUiBUQUJMRSBBTFRFUiBT RVQgTk9UIE5VTEwKKyMgUmVtb3ZlIHRoZSBleGlzdGluZyByZWNvcmQgdGhhdCBjb250YWlucyBu dWxsIHZhbHVlIGZpcnN0LgorbXkgKCRzdGRvdXQsICRzdGRlcnIpOworJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3JlcCBXSEVSRSBpZCA9 IDU7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFC TEUgdGVzdF9yZXAgQUxURVIgdmFsdWUgU0VUIE5PVCBOVUxMOyIpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICg2LCAnZGF0YTYnKTsiLAorCQkJ CQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9PiBcJHN0ZGVyciwKKwkJ CQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VSUk9SOiAgbnVsbCB2YWx1 ZSBpbiBjb2x1bW4gXCJ2YWx1ZVwiIG9mIHJlbGF0aW9uIFwidGVzdF9yZXBcIiB2aW9sYXRlcyBu b3QtbnVsbCBjb25zdHJhaW50LworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgQUxURVIg VEFCTEUgQUxURVIgU0VUIE5PVCBOVUxMIjsKKworIyBUZXN0IEFMVEVSIFRBQkxFIEFMVEVSIERS T1AgTk9UIE5VTEwKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRF UiBUQUJMRSB0ZXN0X3JlcCBBTFRFUiB2YWx1ZSBEUk9QIE5PVCBOVUxMOyIpOworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworIyBJbnNlcnQgc2FtZSBkYXRhIHRo YXQgaGFzIE5VTEwgdmFsdWUuIFRoaXMgZmFpbGVkIGJlZm9yZSBidXQgbm93IHNob3VsZCBzdWNj ZWVkLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5U TyB0ZXN0X3JlcCBWQUxVRVMgKDYsICdkYXRhNicpOyIpOworJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHZhbHVlIElTIE5VTEwgRlJPTSB0 ZXN0X3JlcCBXSEVSRSBpZCA9IDY7Iik7CitpcygkcmVzdWx0LCBxKHQpLCAiQUxURVIgdGVzdF9y ZXAgQUxURVIgRFJPUCBOT1QgTlVMTCByZXBsaWNhdGVkIik7CisKKyMgVGVzdCBBTFRFUiBUQUJM RSBTRVQgVU5MT0dHRUQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdB TFRFUiBUQUJMRSB0ZXN0X3JlcCBTRVQgVU5MT0dHRUQ7Jyk7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICg3LCAnZGF0YTcnLCAnNycpOyIp OworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF9yZXAgV0hFUkUgaWQgPSA3OyIpOworaXMoJHJlc3VsdCwgcXEoMCksICdBTFRF UiB0ZXN0X3JlcCBTRVQgVU5MT0dHRUQgcmVwbGljYXRlZCcpOworCisjIFRlc3QgQUxURVIgVEFC TEUgU0VUIExPR0dFRAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0FM VEVSIFRBQkxFIHRlc3RfcmVwIFNFVCBMT0dHRUQ7Jyk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFMVUVTICg4LCAnZGF0YTgnLCAnOCcpOyIpOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF9yZXAgV0hFUkUgaWQgPSA4OyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdBTFRFUiB0 ZXN0X3JlcCBTRVQgTE9HR0VEIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSBh bmQgRE1MIGNoYW5nZXMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdG1wIChhIGludCwgYiB2YXJjaGFyKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBnX3RhYmxlcyB3aGVy ZSB0YWJsZW5hbWUgPSAndG1wJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRFIHRtcCBp cyByZXBsaWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdG1wIHZhbHVlcyAoMSwgJ2EnKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCB2YWx1ZXMgKDIsICdiJykiKTsKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9t IHRtcDsiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLCAnRE1MIENoYW5nZXMgdG8gdG1wIGFyZSByZXBs aWNhdGVkJyk7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgSU5IRVJJVFMKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wMiAoYzMgaW50KSBJTkhF UklUUyAodG1wKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJ TlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwgJ2EnLCAxKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBnX3RhYmxlcyB3aGVy ZSB0YWJsZW5hbWUgPSAndG1wMic7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0NSRUFURSBUQUJM RSBJTkhFUklUUyBpcyByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0bXAyOyIpOworaXMo JHJlc3VsdCwgcXEoMSksICdpbnNlcnRpbmcgc29tZSBkYXRhIHRvIGluaGVyaXRlZCB0YWJsZSBy ZXBsaWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBUQUJMRSB0bXAyIik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgTElLRQorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAzIChjMyBpbnQsIExJ S0UgdG1wKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0bXAzIFZBTFVFUyAoMSwgMSwgJ2EnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBnX3RhYmxlcyB3aGVyZSB0 YWJsZW5hbWUgPSAndG1wMyc7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0NSRUFURSBUQUJMRSBM SUtFIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHRtcDM7Iik7CitpcygkcmVzdWx0LCBx cSgxKSwgJ2luc2VydCBzb21lIGRhdGEgdG8gYSB0YWJsZSBkZWZpbmVkIHdpdGggTElLRSByZXBs aWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBU QUJMRSB0bXAzIik7CisKKyMgVGVzdCBEUk9QIFRBQkxFCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSBwZ190YWJsZXMgd2hlcmUg dGFibGVuYW1lID0gJ3RtcCc7Iik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ1RBQkxFIHRtcCBpcyBk cm9wcGVkJyk7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RT IHRtcCAoaWQgaW50KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHBnX3RhYmxlcyB3aGVyZSB0YWJs ZW5hbWUgPSAndG1wJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRFIFRBQkxFIElGIE5P VCBFWElTVFMgcmVwbGljYXRlZCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20gdG1wOyIpOworaXMoJHJlc3Vs dCwgcXEoMSksICdpbnNlcnRpbmcgZGF0YSB0byBhIHRhYmxlIHJlcGxpY2F0ZWQnKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcCIpOworCisj IFRlc3QgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgKGNoZWNrIGlmIHdlIHNraXAgdG8gY3Jl YXRlIGEgdGFibGUKKyMgd2hlbiB3ZSBoYXZlIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlciBp biBhZHZhbmNlLCBhbmQgaWYgd2Ugc3VjY2VlZAorIyBpbiByZXBsaWNhdGluZyBjaGFuZ2VzLikK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRt cCAoaWQgaW50KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyB0bXAgKGlkIGludCk7Iik7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7Iik7 Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7CiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg ZnJvbSB0bXA7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJ U1RTIHJlcGxpY2F0ZWQnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIFRBQkxFIHRtcCIpOworCisjIFRlc3QgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMg KGNoZWNrIGlmIHdlIHNraXAgdG8gY3JlYXRlIGEgdGFibGUKKyMgd2hlbiB3ZSBoYXZlIHRoZSB0 YWJsZSBvbiB0aGUgcHVibGlzaGVyLCBidXQgbm90IG9uIHRoZSBzdWJzY3JpYmVyLikKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBp bnQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBU QUJMRSBJRiBOT1QgRVhJU1RTIHRtcCAoaWQgaW50KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBmcm9tIHRt cDsiKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgcmVw bGljYXRlZCcpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag VEFCTEUgdG1wIik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgd2l0aCBjb2xsYXRlCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAobmFtZSB0 ZXh0IENPTExBVEUgXCJDXCIpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKCdmb28nKTsiKTsKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb2xsYXRpb25fbmFtZSBGUk9NIGluZm9y bWF0aW9uX3NjaGVtYS5jb2x1bW5zIFdIRVJFIHRhYmxlX25hbWUgPSAndG1wJzsiKTsKK2lzKCRy ZXN1bHQsIHFxKEMpLCAnQ1JFQVRFIFRBQkxFIHdpdGggY29sbGF0ZSByZXBsaWNhdGVkJyk7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXAiKTsK KworIyBUZXN0IENSRUFURSBUQUJMRSB3aXRoIG5hbWVkIGNvbnN0cmFpbnQKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQgQ09O U1RSQUlOVCBcIm11c3QgYmUgYmlnZ2VyIHRoYW4gMTBcIiBDSEVDSyAoaWQgPiAxMCkpOyIpOwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2Ny aWJlci0+cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7IiwKKwkJ CQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJ CQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIG5ldyByb3cg Zm9yIHJlbGF0aW9uICJ0bXAiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgIm11c3QgYmUgYmln Z2VyIHRoYW4gMTAiLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgbmFtZWQgY29uc3Ry YWludCBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKKyMgVGVzdCBDUkVBVEUgVEFCTEUgd2l0aCB2 YXJpb3VzIHR5cGVzIG9mIGNvbnN0cmFpbnRzLgorIyBOT1QgTlVMTCBjb25zdHJhaW50Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQg aW50LCBuYW1lIHRleHQgTk9UIE5VTEwpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAor CQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7 Ciskc3RkZXJyID1+IC9FUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJuYW1lIiBvZiByZWxh dGlvbiAidG1wIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50LworICBvciBkaWUgImZhaWxl ZCB0byByZXBsaWNhdGUgbm9uIG51bGwgY29uc3RyYWludCBhdCBjcmVhdGluZyB0YWJsZSI7Cisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7 CisKKyMgTlVMTCBjb25zdHJhaW50Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50LCBuYW1lIHRleHQgTlVMTCk7Iik7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIpOwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IG5hbWUgSVMgTlVMTCBGUk9NIHRtcDsiKTsKK2lzKCRyZXN1bHQsIHFxKHQpLCAiQ1JFQVRFIFRB QkxFIHdpdGggTlVMTCBjb25zdHJhaW50IHJlcGxpY2F0ZWQiKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcCIpOworCisjIENIRUNLIGNvbnN0 cmFpbnQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgdG1wIChpZCBpbnQsIHByb2R1Y3RfYW1lIHRleHQsIHByaWNlIGludCBDSEVDSyAocHJpY2Ug PiAwKSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7Cisk bm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVT ICgxLCAnZm9vJywgLTEwMCk7IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkg ICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3Rk ZXJyID1+IC9FUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0bXAiIHZpb2xhdGVzIGNoZWNr IGNvbnN0cmFpbnQgInRtcF9wcmljZV9jaGVjayIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxp Y2F0ZSBDSEVDSyBjb25zdHJhaW50IjsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBERUZBVUxUCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRtcCAoaWQgaW50LCBuYW1lIHRl eHQgREVGQVVMVCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo J215c3ViJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRtcCBWQUxVRVMgKDEpOyIpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIG5hbWUgZnJvbSB0bXA7Iik7CitpcygkcmVzdWx0 LCBxcShmb28pLCAiQ1JFQVRFIFRBQkxFIHdpdGggZGVmYXVsdCB2YWx1ZSByZXBsaWNhdGVkIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXAi KTsKKworIyBVTklRVUUgY29uc3RyYWludAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCBVTklRVUUpOyIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEp OyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVf c3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSk7 IiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRl cnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIGR1 cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInRtcF9pZF9rZXki LworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgY29uc3RyYWludCBhdCBjcmVhdGluZyB0 YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJM RSB0bXA7Iik7CisKKyMgUFJJTUFSWSBLRVkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQgUFJJTUFSWSBLRVksIG5hbWUgdGV4 dCk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gdG1wIFZBTFVFUyAoMSwgJ2ZvbycpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ2JhcicpOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3Ag PT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRz dGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVz IHVuaXF1ZSBjb25zdHJhaW50ICJ0bXBfcGtleSIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxp Y2F0ZSBwcmltYXJ5IGtleSBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKKyMgRVhDTFVERQorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBjaXJjbGVz IChjIGNpcmNsZSwgRVhDTFVERSBVU0lORyBnaXN0IChjIFdJVEggJiYpKTsiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBjaXJjbGVzIFZBTFVF UyAoJzwoMSwgMSksIDE+Jzo6Y2lyY2xlKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgIklO U0VSVCBJTlRPIGNpcmNsZXMgVkFMVUVTICgnPCgxLCAxKSwgMT4nOjpjaXJjbGUpOyIsCisJCQkJ CSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJyLAorCQkJ CQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBjb25mbGljdGlu ZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgImNpcmNsZXNfY19leGNs Ii8KKyAgb3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIEVYQ0xVREUgYXQgY3JlYXRpbmcgdGFi bGUiOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUg Y2lyY2xlcyIpOworCisjIFJFRkVSRU5DRVMKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgcHJvZHVjdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBuYW1l IHRleHQpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHByb2R1Y3QgVkFMVUVTICgxLCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gcHJvZHVjdCBWQUxVRVMgKDIsICdiYXIn KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgb3JkZXJzIChvcmRlcl9pZCBpbnQgUFJJTUFSWSBLRVksIHByb2R1Y3RfaWQgaW50IFJFRkVS RU5DRVMgcHJvZHVjdCAoaWQpKSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElO VE8gb3JkZXJzIFZBTFVFUyAoMSwgMTApIiwKKwkJCQkJICAgb25fZXJyb3Jfc3RvcCA9PiAwLAor CQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9PiBcJHN0ZG91dCk7 Ciskc3RkZXJyID1+IC9FUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgIm9yZGVycyIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAib3JkZXJzX3Byb2R1Y3RfaWRfZmtleSIv CisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxpY2F0ZSBSRUZFUkVOQ0VTIGF0IGNyZWF0aW5nIHRh YmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxF IG9yZGVycyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag VEFCTEUgcHJvZHVjdCIpOworCisjIERFRkVSUkFCTEUKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQgUFJJTUFSWSBLRVkgREVG RVJSQUJMRSwgbmFtZSB0ZXh0KTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMiwg J2JhcicpOyIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOwor IyBRdWljayBjaGVjayBvZiBkZWZlcnJhYmxlIGNsYXVzZQorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJVUERBVEUgdG1wIFNFVCBpZCA9IGlkICsgMTsiKTsKKyMgQWxz bywgZXhlY3V0ZSBhIHRlc3QgdGhhdCBzaG91bGQgZmFpbCBmb3IgSU5JVElBTExZIElNTUVESUFU RSh0aGUgZGVmYXVsdCkKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgcXEoCitC RUdJTjsKK1VQREFURSB0bXAgU0VUIGlkID0gaWQgKyAxOworSU5TRVJUIElOVE8gdG1wIFZBTFVF UyAoMywgJ2Zvb2JhcicpOworREVMRVRFIEZST00gdG1wIFdIRVJFIGlkID0gMzsKK0NPTU1JVDsK KyksIG9uX2Vycm9yX3N0b3AgPT4gMCwgc3RkZXJyID0+IFwkc3RkZXJyLCBzdGRvdXQgPT4gXCRz dGRvdXQpOworJHN0ZGVyciA9fiAvRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVz IHVuaXF1ZSBjb25zdHJhaW50ICJ0bXBfcGtleSIvCisgIG9yIGRpZSAiZmFpbGVkIHRvIHJlcGxp Y2F0ZSBERUZFUlJBQkxFIGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBOT1QgREVGRVJSQUJM RQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0 bXAgKGlkIGludCBQUklNQVJZIEtFWSBOT1QgREVGRVJSQUJMRSwgbmFtZSB0ZXh0KTsiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFM VUVTICgxLCAnZm9vJyk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMiwgJ2JhcicpOyIpOworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgncG9z dGdyZXMnLCAiVVBEQVRFIHRtcCBTRVQgaWQgPSBpZCArIDE7IiwKKwkJCQkJICAgb25fZXJyb3Jf c3RvcCA9PiAwLAorCQkJCQkgICBzdGRlcnIgPT4gXCRzdGRlcnIsCisJCQkJCSAgIHN0ZG91dCA9 PiBcJHN0ZG91dCk7Ciskc3RkZXJyID1+IC9FUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlv bGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInRtcF9wa2V5Ii8KKyAgb3IgZGllICJmYWlsZWQgdG8g cmVwbGljYXRlIE5PVCBERUZFUlJBQkxFIGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBERUZF UlJBQkxFIGFuZCBJTklUSUFMTFkgREVGRVJSRUQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdG1wIChpZCBpbnQgUFJJTUFSWSBLRVkgREVGRVJS QUJMRSBJTklUSUFMTFkgREVGRVJSRUQsIG5hbWUgdGV4dCk7Iik7Ciskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ2Zvbycp OyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRtcCBWQUxVRVMgKDIsICdiYXInKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnbXlzdWInKTsKKyMgUXVpY2sgY2hlY2sgb2YgZGVmZXJyYWJsZSBjbGF1c2UKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVVBEQVRFIHRtcCBTRVQgaWQgPSBp ZCArIDE7Iik7CisjIEFsc28sIGV4ZWN1dGUgYSB0ZXN0IHRoYXQgc2hvdWxkIHN1Y2NlZWQgZm9y IElOSVRJQUxMWSBERUZFUlJFRAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHFxKAorQkVHSU47CitVUERBVEUgdG1wIFNFVCBpZCA9IGlkICsgMTsKK0lOU0VSVCBJTlRP IHRtcCBWQUxVRVMgKDMsICdmb29iYXInKTsKK0RFTEVURSBGUk9NIHRtcCBXSEVSRSBpZCA9IDM7 CitDT01NSVQ7CispKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE Uk9QIFRBQkxFIHRtcDsiKTsKKworIyBUZXN0IENSRUFURSBUQUJMRSB3aXRoIHRhYmxlIGNvbnN0 cmFpbnQKKyMgV2Ugd2lsbCBzZXQgdHdvIGNoZWNrcyBhbmQgY29uZHVjdCB0d28gaW5zZXJ0cyB0 aGF0IHNob3VsZCBmYWlsIHJlc3BlY3RpdmVseS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0bXAgKHByaWNlIGludCwgZGlzY291bnRlZF9w cmljZSBpbnQsIENIRUNLIChkaXNjb3VudGVkX3ByaWNlID4gMCBBTkQgcHJpY2UgPiBkaXNjb3Vu dGVkX3ByaWNlKSk7Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3Vi Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAg VkFMVUVTICgxMDAsIDApOyIsCisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAg c3RkZXJyID0+IFwkc3RkZXJyLAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZGVy ciA9fiAvRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidG1wIiB2aW9sYXRlcyBjaGVjayBj b25zdHJhaW50ICJ0bXBfY2hlY2siLworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgdGFi bGUgY29uc3RyYWludCAoZmlyc3QgY29uZGl0aW9uKSBhdCBjcmVhdGluZyB0YWJsZSI7Ciskbm9k ZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICg1 MCwgMTAwKTsiLAorCQkJCQkgICBvbl9lcnJvcl9zdG9wID0+IDAsCisJCQkJCSAgIHN0ZGVyciA9 PiBcJHN0ZGVyciwKKwkJCQkJICAgc3Rkb3V0ID0+IFwkc3Rkb3V0KTsKKyRzdGRlcnIgPX4gL0VS Uk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRtcCIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWlu dCAidG1wX2NoZWNrIi8KKyAgb3IgZGllICJmYWlsZWQgdG8gcmVwbGljYXRlIHRhYmxlIGNvbnN0 cmFpbnQgKHNlY29uZCBjb25kaXRpb24pIGF0IGNyZWF0aW5nIHRhYmxlIjsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRtcDsiKTsKKworIyBUZXN0 IENSRUFURSBUQUJMRSBXSVRIIHN0cm9yYWdlX3BhcmFtZXRlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0bXAgKGlkIGludCkgV0lUSCAoZmls bGZhY3RvciA9IDgwKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnbXlzdWInKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCByZWxvcHRpb25zIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0bXAnOyIs CisJCQkJCSAgIG9uX2Vycm9yX3N0b3AgPT4gMCwKKwkJCQkJICAgc3RkZXJyID0+IFwkc3RkZXJy LAorCQkJCQkgICBzdGRvdXQgPT4gXCRzdGRvdXQpOworJHN0ZG91dCA9fiAve2ZpbGxmYWN0b3I9 ODB9LworICBvciBkaWUgImZhaWxlZCB0byByZXBsaWNhdGUgc3RvcmFnZSBvcHRpb24iOworJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIGZyb20gdG1wOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdDUkVBVEUgVEFCTEUgd2l0 aCBzdG9yYWdlX3BhcmFtZXRlciByZXBsaWNhdGVkJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0bXA7Iik7CisKK3Bhc3MgIkRETCByZXBsaWNh dGlvbiB0ZXN0cyBwYXNzZWQ6IjsKKworJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKKyRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CmluZGV4IDdjOGFlN2ZlN2IuLmViMWY5MzRlZTMgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC01NjYsNiArNTY2LDcgQEAgRGVmRWxlbUFjdGlvbgogRGVmYXVsdEFDTEluZm8KIERlZmlu ZVN0bXQKIERlbGV0ZVN0bXQKK0RlcGFyc2VkQ29tbWFuZFR5cGUKIERlcGVuZGVuY3lHZW5lcmF0 b3IKIERlcGVuZGVuY3lHZW5lcmF0b3JEYXRhCiBEZXBlbmRlbmN5VHlwZQpAQCAtMTQ2MSw2ICsx NDYyLDcgQEAgTG9naWNhbERlY29kZUJlZ2luUHJlcGFyZUNCCiBMb2dpY2FsRGVjb2RlQ2hhbmdl Q0IKIExvZ2ljYWxEZWNvZGVDb21taXRDQgogTG9naWNhbERlY29kZUNvbW1pdFByZXBhcmVkQ0IK K0xvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IKIExvZ2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNC CiBMb2dpY2FsRGVjb2RlRmlsdGVyUHJlcGFyZUNCCiBMb2dpY2FsRGVjb2RlTWVzc2FnZUNCCkBA IC0xNDcxLDYgKzE0NzMsNyBAQCBMb2dpY2FsRGVjb2RlU3RhcnR1cENCCiBMb2dpY2FsRGVjb2Rl U3RyZWFtQWJvcnRDQgogTG9naWNhbERlY29kZVN0cmVhbUNoYW5nZUNCCiBMb2dpY2FsRGVjb2Rl U3RyZWFtQ29tbWl0Q0IKK0xvZ2ljYWxEZWNvZGVTdHJlYW1ERExNZXNzYWdlQ0IKIExvZ2ljYWxE ZWNvZGVTdHJlYW1NZXNzYWdlQ0IKIExvZ2ljYWxEZWNvZGVTdHJlYW1QcmVwYXJlQ0IKIExvZ2lj YWxEZWNvZGVTdHJlYW1TdGFydENCCkBAIC0yMzE0LDYgKzIzMTcsNyBAQCBSZW9yZGVyQnVmZmVy Q2hhbmdlCiBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZQogUmVvcmRlckJ1ZmZlckNvbW1pdENCCiBS ZW9yZGVyQnVmZmVyQ29tbWl0UHJlcGFyZWRDQgorUmVvcmRlckJ1ZmZlckRETE1lc3NhZ2VDQgog UmVvcmRlckJ1ZmZlckRpc2tDaGFuZ2UKIFJlb3JkZXJCdWZmZXJJdGVyVFhORW50cnkKIFJlb3Jk ZXJCdWZmZXJJdGVyVFhOU3RhdGUKQEAgLTIzMjMsNiArMjMyNyw3IEBAIFJlb3JkZXJCdWZmZXJS b2xsYmFja1ByZXBhcmVkQ0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1BYm9ydENCCiBSZW9yZGVyQnVm ZmVyU3RyZWFtQ2hhbmdlQ0IKIFJlb3JkZXJCdWZmZXJTdHJlYW1Db21taXRDQgorUmVvcmRlckJ1 ZmZlclN0cmVhbURETE1lc3NhZ2VDQgogUmVvcmRlckJ1ZmZlclN0cmVhbU1lc3NhZ2VDQgogUmVv cmRlckJ1ZmZlclN0cmVhbVByZXBhcmVDQgogUmVvcmRlckJ1ZmZlclN0cmVhbVN0YXJ0Q0IKQEAg LTM5MTYsNiArMzkyMSw3IEBAIHhsX2hlYXBfdmlzaWJsZQogeGxfaW52YWxpZF9wYWdlCiB4bF9p bnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCit4bF9sb2dpY2FsX2RkbF9tZXNzYWdl CiB4bF9sb2dpY2FsX21lc3NhZ2UKIHhsX211bHRpX2luc2VydF90dXBsZQogeGxfbXVsdGl4YWN0 X2NyZWF0ZQotLSAKMi4zNC4xCgo= --000000000000d07f7705feb00d5c--