Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rh4oF-009Tk7-VI for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Mar 2024 09:40:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rh4oD-006Nvh-VX for pgsql-hackers@arkaria.postgresql.org; Mon, 04 Mar 2024 09:40:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rh4oC-006NvY-LX for pgsql-hackers@lists.postgresql.org; Mon, 04 Mar 2024 09:40:33 +0000 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rh4o8-002mBD-2b for pgsql-hackers@postgresql.org; Mon, 04 Mar 2024 09:40:31 +0000 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-5c66b093b86so4164743a12.0 for ; Mon, 04 Mar 2024 01:40:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709545228; x=1710150028; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uDjH4QioROWEzx1Jgi+VVMNZ109WPC39RqyDcbgfKXo=; b=cNpOIxJ1piE6gVh/uQctBtKPCLJaUgaepO47wu5ywiVYNhpd+hK/dsB7FIiOJnVFok 1nahMi/7iRCiEno1Ymzmqef3NrRn+L65A0yO3E8JepOWdnoYDY9ky0cyseLRcK/1eTqn g8S9ZKjYHS7Hqoxpa3lKjjPMjIFM5g++vzjegCkNNSjJ9z9HSvQdxvqe7D6p4oMI/3KL IpjCihRzvGrpr3R4XAt0qvohvWgCv//eDucE/ULymSiE8DRIGXx2nTaN90aWM1nruPUO YdAqz/3rixC/B2wqVKQPyzSmaxk9YpOEUNHRBCYcFUKWAZafTiNWTWST1nIgQqhSiZub RJ8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709545228; x=1710150028; 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=uDjH4QioROWEzx1Jgi+VVMNZ109WPC39RqyDcbgfKXo=; b=UPDnur9jI4pcDHGwzAiODDna/OPeaAgwDWn/cOxPAL2DpVDa8Kj5gUlDrteQ44FPzo UZ1KePfqVMqe8dOXU0oXYzWyVMxRXeCsX/+foRWdZNWjM6xcW/cwckL12JPj89epnVOs yAlQkAUuFsqq1bX/lfLIt7CcWoCfh4s8TUwgq73FHPP+2gDowFFadSjz6uLSRGAduxfP Vpa7Mk1ecqDiQdRVgoF5zF9Y9ETUpZkfCf9VJMaJgM32WDx6Ht+A6olKkNSe2xv/fva4 fSadkC91yhju0lZ/QHlx1dAJMHrDNehDRLNt2HZqQhYS7lQfegw0s3VLC5+iiKthhXaU vaqA== X-Forwarded-Encrypted: i=1; AJvYcCVXb2xlNPTWEhYrU+lhxzh2D6YYPWp3SCulaldYQi4zm1Qlm+IgygLSv38+cwt4IvxnbTESGGcDmMPnY7I6Nzb00/CGRKXwx8LG7cAR X-Gm-Message-State: AOJu0YwPxvYPdYaVLR41/bbO/lRez41Gx6iRrmV4HKVGHH/efM5q1VAr DKYalHMbemzzF0ggHnhgrI+E0Zu/MgwoAPXcGks6xgazOXw+8LM6zEY2uCES4Q9tt7H2XhD2bOW ig49sS3p/OIHUrU3uJK4cmtuLpOI= X-Google-Smtp-Source: AGHT+IEJvV0FsqTAUY6dE4kj7gnnE3cQxv4nsZoUmEGiVavhaJ8HS3C+80MGUQ6+jxtu83CSTGD7oMYoGOw53cXVGGg= X-Received: by 2002:a17:90a:c08c:b0:29b:25ba:2586 with SMTP id o12-20020a17090ac08c00b0029b25ba2586mr11486609pjs.15.1709545228136; Mon, 04 Mar 2024 01:40:28 -0800 (PST) MIME-Version: 1.0 References: <202401181711.qxjxpnl3ohnw@alvherre.pgsql> <202401221619.ragf2vnbyopl@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Mon, 4 Mar 2024 18:40:10 +0900 Message-ID: Subject: Re: remaining sql/json patches To: jian he Cc: Alvaro Herrera , Andres Freund , Erik Rijkers , Andrew Dunstan , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000000d18b50612d284ac" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000d18b50612d284ac Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Jian, Thanks for the reviews and sorry for the late reply. Replying to all emails in one. On Thu, Jan 25, 2024 at 11:39=E2=80=AFPM jian he wrote: > On Thu, Jan 25, 2024 at 7:54=E2=80=AFPM Amit Langote wrote: > > > The problem with returning comp_domain_with_typmod from json_value() > > > seems to be that it's using a text-to-record CoerceViaIO expression > > > picked from JsonExpr.item_coercions, which behaves differently than > > > the expression tree that the following uses: > > > > > > select ('abcd', 42)::comp_domain_with_typmod; > > > row > > > ---------- > > > (abc,42) > > > (1 row) > > > > Oh, it hadn't occurred to me to check what trying to coerce a "string" > > containing the record literal would do: > > > > select '(''abcd'', 42)'::comp_domain_with_typmod; > > ERROR: value too long for type character(3) > > LINE 1: select '(''abcd'', 42)'::comp_domain_with_typmod; > > > > which is the same thing as what the JSON_QUERY() and JSON_VALUE() are > > running into. So, it might be fair to think that the error is not a > > limitation of the SQL/JSON patch but an underlying behavior that it > > has to accept as is. > > Hi, I reconciled with these cases. > What bugs me now is the first query of the following 4 cases (for compari= son). > SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING char(3) omit quotes); > SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING char(3) keep quotes); > SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING text omit quotes); > SELECT JSON_QUERY(jsonb '[1,2]', '$' RETURNING text keep quotes); Fixed: SELECT JSON_QUERY(jsonb '"[1,2]"', '$' RETURNING char(3) omit quotes); json_query ------------ [1, (1 row) SELECT JSON_QUERY(jsonb '"[1,2]"', '$' RETURNING char(3) keep quotes); json_query ------------ "[1 (1 row) SELECT JSON_QUERY(jsonb '"[1,2]"', '$' RETURNING text omit quotes); json_query ------------ [1,2] (1 row) SELECT JSON_QUERY(jsonb '"[1,2]"', '$' RETURNING text keep quotes); json_query ------------ "[1,2]" (1 row) I didn't go with your proposed solution to check targettypmod in ExecEvalJsonCoercion() though. > I did some minor refactoring on the function coerceJsonFuncExprOutput. > it will make the following queries return null instead of error. NULL > is the return of json_value. > > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING int2); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING int4); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING int8); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING bool); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING numeric); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING real); > SELECT JSON_QUERY(jsonb '"123"', '$' RETURNING float8); I didn't really want to add an exception in the parser for these specific types, but I agree that it's not great that the current code doesn't respect the default NULL ON ERROR behavior, so I've adopted your fix. I'm not sure if we'll do so in the future but the code can be removed if we someday make the non-IO cast functions handle errors softly too. On Wed, Jan 31, 2024 at 11:52=E2=80=AFPM jian he wrote: > > Hi. > minor issues. > I am wondering do we need add `pg_node_attr(query_jumble_ignore)` > to some of our created structs in src/include/nodes/parsenodes.h in > v39-0001-Add-SQL-JSON-query-functions.patch We haven't added those to the node structs of other SQL/JSON functions, so I'm inclined to skip adding them in this patch. > diff --git a/src/backend/parser/parse_jsontable.c > b/src/backend/parser/parse_jsontable.c > new file mode 100644 > index 0000000000..25b8204dc6 > --- /dev/null > +++ b/src/backend/parser/parse_jsontable.c > @@ -0,0 +1,718 @@ > +/*----------------------------------------------------------------------= --- > + * > + * parse_jsontable.c > + * parsing of JSON_TABLE > + * > + * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group > + * Portions Copyright (c) 1994, Regents of the University of California > + * > + * > + * IDENTIFICATION > + * src/backend/parser/parse_jsontable.c > + * > + *----------------------------------------------------------------------= --- > + */ > 2022 should change to 2024. Oops, fixed. On Mon, Feb 5, 2024 at 9:28=E2=80=AFPM jian he wrote: > > based on this query: > begin; > SET LOCAL TIME ZONE 10.5; > with cte(s) as (select jsonb '"2023-08-15 12:34:56 +05:30"') > select JSON_QUERY(s, '$.timestamp_tz()')::text,'+10.5'::text, > 'timestamp_tz'::text from cte > union all > select JSON_QUERY(s, '$.time()')::text,'+10.5'::text, 'time'::text from c= te > union all > select JSON_QUERY(s, '$.timestamp()')::text,'+10.5'::text, > 'timestamp'::text from cte > union all > select JSON_QUERY(s, '$.date()')::text,'+10.5'::text, 'date'::text from c= te > union all > select JSON_QUERY(s, '$.time_tz()')::text,'+10.5'::text, > 'time_tz'::text from cte; > > SET LOCAL TIME ZONE -8; > with cte(s) as (select jsonb '"2023-08-15 12:34:56 +05:30"') > select JSON_QUERY(s, '$.timestamp_tz()')::text,'+10.5'::text, > 'timestamp_tz'::text from cte > union all > select JSON_QUERY(s, '$.time()')::text,'+10.5'::text, 'time'::text from c= te > union all > select JSON_QUERY(s, '$.timestamp()')::text,'+10.5'::text, > 'timestamp'::text from cte > union all > select JSON_QUERY(s, '$.date()')::text,'+10.5'::text, 'date'::text from c= te > union all > select JSON_QUERY(s, '$.time_tz()')::text,'+10.5'::text, > 'time_tz'::text from cte; > commit; > > I made some changes on jspIsMutableWalker. > various new jsonpath methods added: > https://git.postgresql.org/cgit/postgresql.git/commit/?id=3D66ea94e8e6065= 29bb334515f388c62314956739e > so we need to change jspIsMutableWalker accordingly. Thanks for the heads up about that, merged. On Wed, Feb 14, 2024 at 9:00=E2=80=AFAM jian he wrote: > > This part is already committed. > ereport(ERROR, > (errcode(ERRCODE_UNDEFINED_OBJECT), > errmsg("could not find jsonpath variable \"%s\"", > pnstrdup(varName, varNameLength)))); > > but, you can simply use: > ereport(ERROR, > (errcode(ERRCODE_UNDEFINED_OBJECT), > errmsg("could not find jsonpath variable \"%s\"",varName))); > > maybe not worth the trouble. Yeah, maybe the pnstrdup is unnecessary. I'm inclined to leave that alone for now and fix it later, not as part of this patch. > I kind of want to know, using `pnstrdup`, when the malloc related > memory will be freed? That particular pnstrdup() will allocate somewhere in the ExecutorState memory context, which gets reset during the transaction abort processing, releasing that memory. > json_query and json_query doc explanation is kind of crammed together. > Do you think it's a good idea to use and ? > it will look like bullet points. but the distance between the bullet > point and the first text in the same line is a little bit long, so it > may not look elegant. > I've attached the picture, json_query is using ` and > `, json_value is as of the v39. Yeah, the bullet point list layout looks kind of neat, and is not unprecedented because we have a list in the description of json_poulate_record() for one. Though I wasn't able to come up with a good breakdown of the points into sentences of appropriate length. I'm inclined to leave that beautification project to another day. > other than this and previous points, v39, 0001 looks good to go. I've attached the updated patches. I would like to get 0001 committed after I spent a couple more days staring at it. Alvaro, do you still think that 0002 is a good idea and would you like to push it yourself? -- Thanks, Amit Langote --0000000000000d18b50612d284ac Content-Type: application/octet-stream; name="v40-0002-Show-function-name-in-TableFuncScan.patch" Content-Disposition: attachment; filename="v40-0002-Show-function-name-in-TableFuncScan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltcquaoo1 RnJvbSBiNjQ3MDZlODIwMGE1OWJjYjc5OGVjNzhjNzNmOWI1YjIyZDExZDFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbHZhcm8gSGVycmVyYSA8YWx2aGVycmVAYWx2aC5uby1pcC5v cmc+CkRhdGU6IFR1ZSwgMjMgSmFuIDIwMjQgMTI6MTE6NDYgKzA5MDAKU3ViamVjdDogW1BBVENI IHY0MCAyLzNdIFNob3cgZnVuY3Rpb24gbmFtZSBpbiBUYWJsZUZ1bmNTY2FuCgpQcmV2aW91c2x5 IHdlIHdlcmUgb25seSBzaG93aW5nIHRoZSB1c2VyLXNwZWNpZmllZCBhbGlhcywgYnV0IHRoaXMg aXMKY2xlYXJseSBub3QgdGhlIGNvZGUncyBpbnRlbnQuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjQwMTE4MTcxMS5xeGp4cG5sM29obnclNDBhbHZoZXJyZS5wZ3NxbAotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1 bmNzLmMgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyB8 ICA0ICsrLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgIHwgIDEgKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0ICAgfCAxNiArKysrKysrKy0tLS0tLS0tCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbF8xLm91dCB8IDE2ICsrKysrKysrLS0tLS0tLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IHwgMTYgKysrKysrKystLS0tLS0t LQogOCBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggODNkMDBhNDY2My4uZDgxNzRkMzVlMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYwpAQCAtMzk5Miw3ICszOTkyLDcgQEAgRXhwbGFpblRhcmdldFJlbChQbGFu ICpwbGFuLCBJbmRleCBydGksIEV4cGxhaW5TdGF0ZSAqZXMpCiAJCQlicmVhazsKIAkJY2FzZSBU X1RhYmxlRnVuY1NjYW46CiAJCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9UQUJMRUZVTkMp OwotCQkJb2JqZWN0bmFtZSA9ICJ4bWx0YWJsZSI7CisJCQlvYmplY3RuYW1lID0gcnRlLT50YWJs ZWZ1bmNfbmFtZTsKIAkJCW9iamVjdHRhZyA9ICJUYWJsZSBGdW5jdGlvbiBOYW1lIjsKIAkJCWJy ZWFrOwogCQljYXNlIFRfVmFsdWVzU2NhbjoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IDJjMzBiYmEy MTIuLjhmZDRiMDYwMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNTMxLDYgKzUzMSw3IEBAIF9v dXRSYW5nZVRibEVudHJ5KFN0cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2Rl KQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVdSSVRFX05PREVfRklFTEQo dGFibGVmdW5jKTsKKwkJCVdSSVRFX1NUUklOR19GSUVMRCh0YWJsZWZ1bmNfbmFtZSk7CiAJCQli cmVhazsKIAkJY2FzZSBSVEVfVkFMVUVTOgogCQkJV1JJVEVfTk9ERV9GSUVMRCh2YWx1ZXNfbGlz dHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBiMWUyZjJiNDQwLi40NmViMTc2ZDQ2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9yZWFkZnVuY3MuYwpAQCAtMzg1LDYgKzM4NSw3IEBAIF9yZWFkUmFuZ2VUYmxFbnRyeSh2 b2lkKQogCQkJYnJlYWs7CiAJCWNhc2UgUlRFX1RBQkxFRlVOQzoKIAkJCVJFQURfTk9ERV9GSUVM RCh0YWJsZWZ1bmMpOworCQkJUkVBRF9TVFJJTkdfRklFTEQodGFibGVmdW5jX25hbWUpOwogCQkJ LyogVGhlIFJURSBtdXN0IGhhdmUgYSBjb3B5IG9mIHRoZSBjb2x1bW4gdHlwZSBpbmZvLCBpZiBh bnkgKi8KIAkJCWlmIChsb2NhbF9ub2RlLT50YWJsZWZ1bmMpCiAJCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCmluZGV4IDM0YTBlYzU5MDEuLjY1ZTU0YWJkZDEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMDczLDE3ICsyMDczLDE3IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJQXNzZXJ0KGxpc3RfbGVu Z3RoKHRmLT5jb2x0eXBtb2RzKSA9PSBsaXN0X2xlbmd0aCh0Zi0+Y29sbmFtZXMpKTsKIAlBc3Nl cnQobGlzdF9sZW5ndGgodGYtPmNvbGNvbGxhdGlvbnMpID09IGxpc3RfbGVuZ3RoKHRmLT5jb2xu YW1lcykpOwogCi0JcmVmbmFtZSA9IGFsaWFzID8gYWxpYXMtPmFsaWFzbmFtZSA6IHBzdHJkdXAo InhtbHRhYmxlIik7Ci0KIAlydGUtPnJ0ZWtpbmQgPSBSVEVfVEFCTEVGVU5DOwogCXJ0ZS0+cmVs aWQgPSBJbnZhbGlkT2lkOwogCXJ0ZS0+c3VicXVlcnkgPSBOVUxMOwogCXJ0ZS0+dGFibGVmdW5j ID0gdGY7CisJcnRlLT50YWJsZWZ1bmNfbmFtZSA9IHBzdHJkdXAoIlhNTFRBQkxFIik7CiAJcnRl LT5jb2x0eXBlcyA9IHRmLT5jb2x0eXBlczsKIAlydGUtPmNvbHR5cG1vZHMgPSB0Zi0+Y29sdHlw bW9kczsKIAlydGUtPmNvbGNvbGxhdGlvbnMgPSB0Zi0+Y29sY29sbGF0aW9uczsKIAlydGUtPmFs aWFzID0gYWxpYXM7CiAKKwlyZWZuYW1lID0gYWxpYXMgPyBhbGlhcy0+YWxpYXNuYW1lIDogcHN0 cmR1cCgieG1sdGFibGUiKTsKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0KGFsaWFzKSA6IG1h a2VBbGlhcyhyZWZuYW1lLCBOSUwpOwogCW51bWFsaWFzZXMgPSBsaXN0X2xlbmd0aChlcmVmLT5j b2xuYW1lcyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3Y2VlM2JlYzQ5Li45YmE2ZWM2 YTdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xMTUyLDYgKzExNTIsNyBAQCB0eXBlZGVm IHN0cnVjdCBSYW5nZVRibEVudHJ5CiAJICogRmllbGRzIHZhbGlkIGZvciBhIFRhYmxlRnVuYyBS VEUgKGVsc2UgTlVMTCk6CiAJICovCiAJVGFibGVGdW5jICAqdGFibGVmdW5jOworCWNoYXIJICAg KnRhYmxlZnVuY19uYW1lOwogCiAJLyoKIAkgKiBGaWVsZHMgdmFsaWQgZm9yIGEgdmFsdWVzIFJU RSAoZWxzZSBOSUwpOgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWwub3V0CmluZGV4IDY1MDBjZmY4ODUu LjcwMzM1Yzc0ZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3htbC5vdXQKQEAgLTEzNDMsMTEgKzEz NDMsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwog ICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dT L1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdA aWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgn Q09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFU SCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9J RCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5p dCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFV TFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQog RVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEK LSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBG dW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJ TiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0x MzU3LDcgKzEzNTcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZS T00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5f aWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0 YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRh YmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAg ICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwg InhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxl Ii5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUi LnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcv Uk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdl ciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRl eHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9p ZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEgg KCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6 dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUg dGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUn Ojp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxl LioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIu Y291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lk LCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25h bWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4 bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAg ICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3Vu dHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4 bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQog ICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0 KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6 dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5U UllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllf SUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBz aXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEgg KCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3Bl Y2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAg LTE1NTYsNyArMTU1Niw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRh YmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYu IkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24g IlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lP Tl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9X W0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBB U1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9O X0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBh bic6OnRleHQpCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwg TEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQog ICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxz ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAg ICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJs ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUg RnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwi Q09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAg ICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VO VFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFT U0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJ T05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTcwMCw3ICsxNzAwLDcgQEAgU0VMRUNUICB4bWx0YWJs ZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUi LmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9p ZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9u YW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDog eG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisg ICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAg ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4 dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6 OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VO VFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZ X0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwg c2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRI ICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNw ZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZp bHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQveG1sXzEub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxf MS5vdXQKaW5kZXggOTMyM2I4NGFlMi4uMDgxMjdkYjcyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC94bWxfMS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC94bWxfMS5vdXQKQEAgLTEwMDQsMTEgKzEwMDQsMTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklF VyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAgICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAg ICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JPVyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkg Q09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQnOjp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZ LCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09VTlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5P VCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9u X2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNp b24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4 dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFU SCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAog ICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9u ICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInht bHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1Qg KiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00geG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDog InhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAi eG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNp emUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1s dGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0 YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwg InhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUg RnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxk YXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1Ig T1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCkn Ojp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4 dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3Vi bGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9A dW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6 OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICg3IHJvd3MpCkBAIC0xMTYyLDcg KzExNjIsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwg InhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50 cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIu dW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu eG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJY TUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1s dGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9p ZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0 LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDog WE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVN TlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291 bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllfTkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3Vu dHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIg UEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJ WkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJf bmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJf TkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTExODEsNyArMTE4MSw3IEBAIFNFTEVDVCBmLiog RlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxlKCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJK YXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAg LT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhNTFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6 IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9u IENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5U UllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJTkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAi Q09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lEIiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVy OiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6OnRleHQpCkBAIC0xMjE2LDcgKzEyMTYsNyBA QCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFURVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hp cCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwotICAgICAgICAgICAiVGFi bGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiQWxpYXMiOiAiZiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwog ICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09VTlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9J RFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6 ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZX05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllf TkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwi Q09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05fSURcIiBpbnRlZ2VyKSIsKwpAQCAtMTMxOSw3 ICsxMzE5LDcgQEAgU0VMRUNUICB4bWx0YWJsZS4qCiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQs ICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNvdW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3Vu dHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwgInhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUi LnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1lCiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1sZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVu Y3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAi WE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInht bHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlf aWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5p dCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6 IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkgUEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xV TU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRleHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNv dW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZX05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291 bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2Vy IFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdT SVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVy X25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVS X05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRlcjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0g MikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQveG1sXzIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKaW5kZXggZTFkMTY1YzZjOS4uYzcyMGEw NWY1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC94bWxfMi5vdXQKQEAgLTEzMjMsMTEgKzEzMjMs MTEgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMueG1sdGFibGV2aWV3MSBBUwogICAg ICAgICAgICBGUk9NIHhtbGRhdGEpIHgsCiAgICAgTEFURVJBTCBYTUxUQUJMRSgoJy9ST1dTL1JP Vyc6OnRleHQpIFBBU1NJTkcgKHguZGF0YSkgQ09MVU1OUyBpZCBpbnRlZ2VyIFBBVEggKCdAaWQn Ojp0ZXh0KSwgX2lkIEZPUiBPUkRJTkFMSVRZLCBjb3VudHJ5X25hbWUgdGV4dCBQQVRIICgnQ09V TlRSWV9OQU1FL3RleHQoKSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAo J0NPVU5UUllfSUQnOjp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6 OnRleHQpLCBzaXplIGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0 ZXh0IFBBVEggKCdTSVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQg KCdub3Qgc3BlY2lmaWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7Ci0gICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICBOZXN0ZWQgTG9vcAogICAgLT4gIFNlcSBTY2FuIG9uIHhtbGRhdGEKLSAg IC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5j dGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogKDMgcm93cykKIAogRVhQTEFJTiAo Q09TVFMgT0ZGLCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIHhtbHRhYmxldmlldzE7CkBAIC0xMzM3 LDcgKzEzMzcsNyBAQCBFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00g eG1sdGFibGV2aWV3MTsKICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQs ICJ4bWx0YWJsZSIuY291bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJs ZSIucmVnaW9uX2lkLCAieG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxl Ii5wcmVtaWVyX25hbWUKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAg ICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4 bWx0YWJsZSIKKyAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRh YmxlIgogICAgICAgICAgT3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInht bHRhYmxlIi5jb3VudHJ5X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5y ZWdpb25faWQsICJ4bWx0YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnBy ZW1pZXJfbmFtZQogICAgICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9X Uy9ST1cnOjp0ZXh0KSBQQVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQ QVRIICgnQGlkJzo6dGV4dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQg UEFUSCAoJ0NPVU5UUllfTkFNRS90ZXh0KCknOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0 ZXh0IFBBVEggKCdDT1VOVFJZX0lEJzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdS RUdJT05fSUQnOjp0ZXh0KSwgc2l6ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4 dCksIHVuaXQgdGV4dCBQQVRIICgnU0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4 dCBERUZBVUxUICgnbm90IHNwZWNpZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0 ZXh0KSkKICg3IHJvd3MpCkBAIC0xNTE2LDcgKzE1MTYsNyBAQCBTRUxFQ1QgIHhtbHRhYmxlLioK ICAgIE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291 bnRyeV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAi eG1sdGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUK ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1sZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxk YXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJ4bWx0YWJsZSIKKyAgIC0+ ICBUYWJsZSBGdW5jdGlvbiBTY2FuIG9uICJYTUxUQUJMRSIgInhtbHRhYmxlIgogICAgICAgICAg T3V0cHV0OiAieG1sdGFibGUiLmlkLCAieG1sdGFibGUiLl9pZCwgInhtbHRhYmxlIi5jb3VudHJ5 X25hbWUsICJ4bWx0YWJsZSIuY291bnRyeV9pZCwgInhtbHRhYmxlIi5yZWdpb25faWQsICJ4bWx0 YWJsZSIuc2l6ZSwgInhtbHRhYmxlIi51bml0LCAieG1sdGFibGUiLnByZW1pZXJfbmFtZQogICAg ICAgICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogWE1MVEFCTEUoKCcvUk9XUy9ST1cnOjp0ZXh0KSBQ QVNTSU5HICh4bWxkYXRhLmRhdGEpIENPTFVNTlMgaWQgaW50ZWdlciBQQVRIICgnQGlkJzo6dGV4 dCksIF9pZCBGT1IgT1JESU5BTElUWSwgY291bnRyeV9uYW1lIHRleHQgUEFUSCAoJ0NPVU5UUllf TkFNRSc6OnRleHQpIE5PVCBOVUxMLCBjb3VudHJ5X2lkIHRleHQgUEFUSCAoJ0NPVU5UUllfSUQn Ojp0ZXh0KSwgcmVnaW9uX2lkIGludGVnZXIgUEFUSCAoJ1JFR0lPTl9JRCc6OnRleHQpLCBzaXpl IGRvdWJsZSBwcmVjaXNpb24gUEFUSCAoJ1NJWkUnOjp0ZXh0KSwgdW5pdCB0ZXh0IFBBVEggKCdT SVpFL0B1bml0Jzo6dGV4dCksIHByZW1pZXJfbmFtZSB0ZXh0IERFRkFVTFQgKCdub3Qgc3BlY2lm aWVkJzo6dGV4dCkgUEFUSCAoJ1BSRU1JRVJfTkFNRSc6OnRleHQpKQogKDcgcm93cykKQEAgLTE1 MzYsNyArMTUzNiw3IEBAIFNFTEVDVCBmLiogRlJPTSB4bWxkYXRhLCBMQVRFUkFMIHhtbHRhYmxl KCcvUk9XUy9ST1dbQ09VTlRSWV9OQU1FPSJKYXBhbiIgb3IgQ09VCiAgICBPdXRwdXQ6IGYuIkNP VU5UUllfTkFNRSIsIGYuIlJFR0lPTl9JRCIKICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMueG1s ZGF0YQogICAgICAgICAgT3V0cHV0OiB4bWxkYXRhLmRhdGEKLSAgIC0+ICBUYWJsZSBGdW5jdGlv biBTY2FuIG9uICJ4bWx0YWJsZSIgZgorICAgLT4gIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIlhN TFRBQkxFIiBmCiAgICAgICAgICBPdXRwdXQ6IGYuIkNPVU5UUllfTkFNRSIsIGYuIlJFR0lPTl9J RCIKICAgICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XW0NP VU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVU5UUllfTkFNRT0iSW5kaWEiXSc6OnRleHQpIFBBU1NJ TkcgKHhtbGRhdGEuZGF0YSkgQ09MVU1OUyAiQ09VTlRSWV9OQU1FIiB0ZXh0LCAiUkVHSU9OX0lE IiBpbnRlZ2VyKQogICAgICAgICAgRmlsdGVyOiAoZi4iQ09VTlRSWV9OQU1FIiA9ICdKYXBhbic6 OnRleHQpCkBAIC0xNTcxLDcgKzE1NzEsNyBAQCBTRUxFQ1QgZi4qIEZST00geG1sZGF0YSwgTEFU RVJBTCB4bWx0YWJsZSgnL1JPV1MvUk9XW0NPVU5UUllfTkFNRT0iSmFwYW4iIG9yIENPVQogICAg ICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJJbm5lciIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAi QXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKwotICAgICAgICAgICAiVGFibGUgRnVuY3Rpb24gTmFtZSI6ICJ4bWx0YWJsZSIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiVGFibGUgRnVu Y3Rpb24gTmFtZSI6ICJYTUxUQUJMRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KwogICAgICAgICAgICAiQWxpYXMiOiAiZiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAgICAgICAiT3V0cHV0IjogWyJmLlwiQ09V TlRSWV9OQU1FXCIiLCAiZi5cIlJFR0lPTl9JRFwiIl0sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwogICAgICAg ICAgICAiVGFibGUgRnVuY3Rpb24gQ2FsbCI6ICJYTUxUQUJMRSgoJy9ST1dTL1JPV1tDT1VOVFJZ X05BTUU9XCJKYXBhblwiIG9yIENPVU5UUllfTkFNRT1cIkluZGlhXCJdJzo6dGV4dCkgUEFTU0lO RyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIFwiQ09VTlRSWV9OQU1FXCIgdGV4dCwgXCJSRUdJT05f SURcIiBpbnRlZ2VyKSIsKwpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgU0VMRUNUICB4bWx0YWJsZS4q CiAgICBPdXRwdXQ6ICJ4bWx0YWJsZSIuaWQsICJ4bWx0YWJsZSIuX2lkLCAieG1sdGFibGUiLmNv dW50cnlfbmFtZSwgInhtbHRhYmxlIi5jb3VudHJ5X2lkLCAieG1sdGFibGUiLnJlZ2lvbl9pZCwg InhtbHRhYmxlIi5zaXplLCAieG1sdGFibGUiLnVuaXQsICJ4bWx0YWJsZSIucHJlbWllcl9uYW1l CiAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnhtbGRhdGEKICAgICAgICAgIE91dHB1dDogeG1s ZGF0YS5kYXRhCi0gICAtPiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAieG1sdGFibGUiCisgICAt PiAgVGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiWE1MVEFCTEUiICJ4bWx0YWJsZSIKICAgICAgICAg IE91dHB1dDogInhtbHRhYmxlIi5pZCwgInhtbHRhYmxlIi5faWQsICJ4bWx0YWJsZSIuY291bnRy eV9uYW1lLCAieG1sdGFibGUiLmNvdW50cnlfaWQsICJ4bWx0YWJsZSIucmVnaW9uX2lkLCAieG1s dGFibGUiLnNpemUsICJ4bWx0YWJsZSIudW5pdCwgInhtbHRhYmxlIi5wcmVtaWVyX25hbWUKICAg ICAgICAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IFhNTFRBQkxFKCgnL1JPV1MvUk9XJzo6dGV4dCkg UEFTU0lORyAoeG1sZGF0YS5kYXRhKSBDT0xVTU5TIGlkIGludGVnZXIgUEFUSCAoJ0BpZCc6OnRl eHQpLCBfaWQgRk9SIE9SRElOQUxJVFksIGNvdW50cnlfbmFtZSB0ZXh0IFBBVEggKCdDT1VOVFJZ X05BTUUnOjp0ZXh0KSBOT1QgTlVMTCwgY291bnRyeV9pZCB0ZXh0IFBBVEggKCdDT1VOVFJZX0lE Jzo6dGV4dCksIHJlZ2lvbl9pZCBpbnRlZ2VyIFBBVEggKCdSRUdJT05fSUQnOjp0ZXh0KSwgc2l6 ZSBkb3VibGUgcHJlY2lzaW9uIFBBVEggKCdTSVpFJzo6dGV4dCksIHVuaXQgdGV4dCBQQVRIICgn U0laRS9AdW5pdCc6OnRleHQpLCBwcmVtaWVyX25hbWUgdGV4dCBERUZBVUxUICgnbm90IHNwZWNp ZmllZCc6OnRleHQpIFBBVEggKCdQUkVNSUVSX05BTUUnOjp0ZXh0KSkKICAgICAgICAgIEZpbHRl cjogKCJ4bWx0YWJsZSIucmVnaW9uX2lkID0gMikKLS0gCjIuNDMuMAoK --0000000000000d18b50612d284ac Content-Type: application/octet-stream; name="v40-0003-JSON_TABLE.patch" Content-Disposition: attachment; filename="v40-0003-JSON_TABLE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltcquaoq2 RnJvbSAwYzhmMWExNDgzZmI5Zjg2Y2I0MjM1NWJkNWIzNjE4OGMyZWNhYTk0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTggSmFuIDIwMjQgMTg6MDA6MDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 MCAzLzNdIEpTT05fVEFCTEUKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMg ZmVhdHVyZSBhbGxvd3MganNvbmIgZGF0YSB0byBiZSB0cmVhdGVkIGFzIGEgdGFibGUgYW5kIHRo dXMKdXNlZCBpbiBhIEZST00gY2xhdXNlIGxpa2Ugb3RoZXIgdGFidWxhciBkYXRhLiBEYXRhIGNh biBiZSBzZWxlY3RlZApmcm9tIHRoZSBqc29uYiB1c2luZyBqc29ucGF0aCBleHByZXNzaW9ucywg YW5kIGhvaXN0ZWQgb3V0IG9mIG5lc3RlZApzdHJ1Y3R1cmVzIGluIHRoZSBqc29uYiB0byBmb3Jt IG11bHRpcGxlIHJvd3MsIG1vcmUgb3IgbGVzcyBsaWtlIGFuCm91dGVyIGpvaW4uCgpUaGlzIGFs c28gYWRkcyB0aGUgUExBTiBjbGF1c2VzIGZvciBKU09OX1RBQkxFLCB3aGljaCBhbGxvdyB0aGUg dXNlcgp0byBzcGVjaWZ5IGhvdyBkYXRhIGZyb20gbmVzdGVkIHBhdGhzIGFyZSBqb2luZWQsIGFs bG93aW5nCmNvbnNpZGVyYWJsZSBmcmVlZG9tIGluIHNoYXBpbmcgdGhlIHRhYnVsYXIgb3V0cHV0 IG9mIEpTT05fVEFCTEUuClBMQU4gREVGQVVMVCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSB0 aGUgZ2xvYmFsIHN0cmF0ZWdpZXMgd2hlbgpkZWFsaW5nIHdpdGggc2libGluZyBvciBjaGlsZCBu ZXN0ZWQgcGF0aHMuIFRoZSBpcyBvZnRlbiBzdWZmaWNpZW50CnRvIGFjaGlldmUgdGhlIG5lY2Vz c2FyeSBnb2FsLCBhbmQgaXMgY29uc2lkZXJhYmx5IHNpbXBsZXIgdGhhbiB0aGUKZnVsbCBQTEFO IGNsYXVzZSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlIHN0cmF0ZWd5IHRv IGJlCnVzZWQgZm9yIGVhY2ggbmFtZWQgbmVzdGVkIHBhdGguCgpBdXRob3I6IE5pa2l0YSBHbHVr aG92IDxuLmdsdWhvdkBwb3N0Z3Jlc3Byby5ydT4KQXV0aG9yOiBUZW9kb3IgU2lnYWV2IDx0ZW9k b3JAc2lnYWV2LnJ1PgpBdXRob3I6IE9sZWcgQmFydHVub3YgPG9iYXJ0dW5vdkBnbWFpbC5jb20+ CkF1dGhvcjogQWxleGFuZGVyIEtvcm90a292IDxhZWtvcm90a292QGdtYWlsLmNvbT4KQXV0aG9y OiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4KQXV0aG9yOiBBbWl0IExhbmdv dGUgPGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpBdXRob3I6IEppYW4gSGUgPGppYW4udW5pdmVy c2FsaXR5QGdtYWlsLmNvbT4KClJldmlld2VycyBoYXZlIGluY2x1ZGVkIChpbiBubyBwYXJ0aWN1 bGFyIG9yZGVyKSBBbmRyZXMgRnJldW5kLCBBbGV4YW5kZXIKS29yb3Rrb3YsIFBhdmVsIFN0ZWh1 bGUsIEFuZHJldyBBbHN1cCwgRXJpayBSaWprZXJzLCBaaWhvbmcgWXUsCkhpbWFuc2h1IFVwYWRo eWF5YSwgRGFuaWVsIEd1c3RhZnNzb24sIEp1c3RpbiBQcnl6YnksIMOBbHZhcm8gSGVycmVyYSwK amlhbiBoZQoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9jZDBiYjkzNS0wMTU4LTc4 YTctMDhiNS05MDQ4ODZkZWFjNGJAcG9zdGdyZXNwcm8ucnUKRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8yMDIyMDYxNjIzMzEzMC5ycGFyaXZhZmlwdDZkb2ozQGFsYXAzLmFuYXJhemVs LmRlCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vYWJkOWI4M2ItYWE2Ni1mMjMwLTNk NmQtNzM0ODE3ZjA5OTVkJTQwcG9zdGdyZXNxbC5vcmcKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQStIaXdxRTRYVGRmYjFuVz1Pam95X3RRU1JoWXQtcV9rYjZpNWQ0eGNLeXJMQzFO YmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvZnVuYy5zZ21sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTEwICsrKysrKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dCAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMgICAgICAgICB8ICAgIDYgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxl RnVuY3NjYW4uYyAgICAgIHwgICAyNyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgIDEwOCArKwogc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMg ICAgICAgICAgICAgICAgIHwgICAzOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAg ICAgICAgICAgICAgICB8ICAyOTkgKysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxk ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMgICAgICAgICAgICAgfCAgIDE0ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j ICAgICAgICAgICAgICAgfCAgIDUzICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRh YmxlLmMgICAgICAgICAgfCAgNzE4ICsrKysrKysrKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3JlbGF0aW9uLmMgICAgICAgICAgIHwgICAgOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3RhcmdldC5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNv bnBhdGhfZXhlYy5jICAgICAgICAgfCAgNTQ3ICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyNzkgKysrLQogc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9t YWtlZnVuY3MuaCAgICAgICAgICAgICAgICAgfCAgICA5ICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMDkgKysKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgNjAgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9r d2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3Bh cnNlX2NsYXVzZS5oICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVz dC9lY3BnX3NjaGVkdWxlICAgICAgICB8ICAgIDEgKwogLi4uL3Rlc3QvZXhwZWN0ZWQvc3FsLXNx bGpzb25fanNvbnRhYmxlLmMgICAgIHwgIDEzMiArKwogLi4uL2V4cGVjdGVkL3NxbC1zcWxqc29u X2pzb250YWJsZS5zdGRlcnIgICAgIHwgICAyMCArCiAuLi4vZXhwZWN0ZWQvc3FsLXNxbGpzb25f anNvbnRhYmxlLnN0ZG91dCAgICAgfCAgICAwCiBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3Fs L01ha2VmaWxlICAgICAgICAgfCAgICAxICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwv bWVzb24uYnVpbGQgICAgICB8ICAgIDEgKwogLi4uL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29u dGFibGUucGdjICAgICAgIHwgICAzMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pz b250YWJsZS5vdXQgICAgfCAxMzMzICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9zcWxqc29uX2pzb250YWJsZS5zcWwgICAgfCAgNzI5ICsrKysrKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxNiArCiAzNCBmaWxlcyBj aGFuZ2VkLCA1MDI4IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9qc29udGFibGUuYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29u dGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9leHBl Y3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3RkZXJyCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRv dXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpz b25fanNvbnRhYmxlLnBnYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKaW5kZXggMTQ0NzEzNTQxMC4u MTQ4OGQ2MWExNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xODgwNSw2ICsxODgwNSw1MTYgQEAgREVUQUlMOiAgTWlz c2luZyAiXSIgYWZ0ZXIgYXJyYXkgZGltZW5zaW9ucy4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxl PgogICA8L3NlY3QyPgorCisgPHNlY3QyIGlkPSJmdW5jdGlvbnMtc3FsanNvbi10YWJsZSI+Cisg IDx0aXRsZT5KU09OX1RBQkxFPC90aXRsZT4KKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5Pmpz b25fdGFibGU8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgPGZ1bmN0 aW9uPmpzb25fdGFibGU8L2Z1bmN0aW9uPiBpcyBhbiBTUUwvSlNPTiBmdW5jdGlvbiB3aGljaAor ICAgcXVlcmllcyA8YWNyb255bT5KU09OPC9hY3JvbnltPiBkYXRhCisgICBhbmQgcHJlc2VudHMg dGhlIHJlc3VsdHMgYXMgYSByZWxhdGlvbmFsIHZpZXcsIHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBh cyBhCisgICByZWd1bGFyIFNRTCB0YWJsZS4gWW91IGNhbiBvbmx5IHVzZSA8ZnVuY3Rpb24+anNv bl90YWJsZTwvZnVuY3Rpb24+IGluc2lkZSB0aGUKKyAgIDxsaXRlcmFsPkZST008L2xpdGVyYWw+ IGNsYXVzZSBvZiBhIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gc3RhdGVtZW50LgorICA8L3Bh cmE+CisKKyAgPHBhcmE+CisgICBUYWtpbmcgSlNPTiBkYXRhIGFzIGlucHV0LCA8ZnVuY3Rpb24+ anNvbl90YWJsZTwvZnVuY3Rpb24+IHVzZXMKKyAgIGEgcGF0aCBleHByZXNzaW9uIHRvIGV4dHJh Y3QgYSBwYXJ0IG9mIHRoZSBwcm92aWRlZCBkYXRhIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCBhcyBh IDxmaXJzdHRlcm0+cm93IHBhdHRlcm48L2ZpcnN0dGVybT4gZm9yIHRoZQorICAgY29uc3RydWN0 ZWQgdmlldy4gRWFjaCBTUUwvSlNPTiBpdGVtIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHJvdyBw YXR0ZXJuIHNlcnZlcworICAgYXMgdGhlIHNvdXJjZSBmb3IgYSBzZXBhcmF0ZSByb3cgaW4gdGhl IGNvbnN0cnVjdGVkIHJlbGF0aW9uYWwgdmlldy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg VG8gc3BsaXQgdGhlIHJvdyBwYXR0ZXJuIGludG8gY29sdW1ucywgPGZ1bmN0aW9uPmpzb25fdGFi bGU8L2Z1bmN0aW9uPgorICAgcHJvdmlkZXMgdGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+ IGNsYXVzZSB0aGF0IGRlZmluZXMgdGhlCisgICBzY2hlbWEgb2YgdGhlIGNyZWF0ZWQgdmlldy4g Rm9yIGVhY2ggY29sdW1uIHRvIGJlIGNvbnN0cnVjdGVkLAorICAgdGhpcyBjbGF1c2UgcHJvdmlk ZXMgYSBzZXBhcmF0ZSBwYXRoIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKKyAgIHRoZSByb3cg cGF0dGVybiwgZXh0cmFjdHMgYSBKU09OIGl0ZW0sIGFuZCByZXR1cm5zIGl0IGFzIGEKKyAgIHNl cGFyYXRlIFNRTCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBjb2x1bW4uIElmIHRoZSByZXF1aXJl ZCB2YWx1ZQorICAgaXMgc3RvcmVkIGluIGEgbmVzdGVkIGxldmVsIG9mIHRoZSByb3cgcGF0dGVy biwgaXQgY2FuIGJlIGV4dHJhY3RlZAorICAgdXNpbmcgdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRI PC9saXRlcmFsPiBzdWJjbGF1c2UuIEpvaW5pbmcgdGhlCisgICBjb2x1bW5zIHJldHVybmVkIGJ5 IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPiBjYW4gYWRkIG11bHRpcGxlCisgICBuZXcg cm93cyB0byB0aGUgY29uc3RydWN0ZWQgdmlldy4gU3VjaCByb3dzIGFyZSBjYWxsZWQKKyAgIDxm aXJzdHRlcm0+Y2hpbGQgcm93czwvZmlyc3R0ZXJtPiwgYXMgb3Bwb3NlZCB0byB0aGUgPGZpcnN0 dGVybT5wYXJlbnQgcm93PC9maXJzdHRlcm0+CisgICB0aGF0IGdlbmVyYXRlcyB0aGVtLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgcm93cyBwcm9kdWNlZCBieSA8ZnVuY3Rpb24+SlNP Tl9UQUJMRTwvZnVuY3Rpb24+IGFyZSBsYXRlcmFsbHkKKyAgIGpvaW5lZCB0byB0aGUgcm93IHRo YXQgZ2VuZXJhdGVkIHRoZW0sIHNvIHlvdSBkbyBub3QgaGF2ZSB0byBleHBsaWNpdGx5IGpvaW4K KyAgIHRoZSBjb25zdHJ1Y3RlZCB2aWV3IHdpdGggdGhlIG9yaWdpbmFsIHRhYmxlIGhvbGRpbmcg PGFjcm9ueW0+SlNPTjwvYWNyb255bT4KKyAgIGRhdGEuIE9wdGlvbmFsbHksIHlvdSBjYW4gc3Bl Y2lmeSBob3cgdG8gam9pbiB0aGUgY29sdW1ucyByZXR1cm5lZAorICAgYnkgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1 c2UuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIEVhY2ggPGxpdGVyYWw+TkVTVEVEIFBBVEg8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gZ2VuZXJhdGUgb25lIG9yIG1vcmUKKyAgIGNvbHVtbnMuIENv bHVtbnMgcHJvZHVjZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+cyBhdCB0aGUK KyAgIHNhbWUgbGV2ZWwgYXJlIGNvbnNpZGVyZWQgdG8gYmUgPGZpcnN0dGVybT5zaWJsaW5nczwv Zmlyc3R0ZXJtPiwKKyAgIHdoaWxlIGEgY29sdW1uIHByb2R1Y2VkIGJ5IGEgPGxpdGVyYWw+TkVT VEVEIFBBVEg8L2xpdGVyYWw+IGlzCisgICBjb25zaWRlcmVkIHRvIGJlIGEgY2hpbGQgb2YgdGhl IGNvbHVtbiBwcm9kdWNlZCBieSBhCisgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4g b3Igcm93IGV4cHJlc3Npb24gYXQgYSBoaWdoZXIgbGV2ZWwuCisgICBTaWJsaW5nIGNvbHVtbnMg YXJlIGFsd2F5cyBqb2luZWQgZmlyc3QuIE9uY2UgdGhleSBhcmUgcHJvY2Vzc2VkLAorICAgdGhl IHJlc3VsdGluZyByb3dzIGFyZSBqb2luZWQgdG8gdGhlIHBhcmVudCByb3cuCisgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFRoZSBzeW50YXggaXM6CisgIDwvcGFyYT4KKworPHN5bm9wc2lzPgor SlNPTl9UQUJMRSAoCisgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiwg PHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gQVMg PHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4gPG9w dGlvbmFsPiBQQVNTSU5HIHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gQVMgPHJl cGxhY2VhYmxlPnZhcm5hbWU8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4sIC4uLjwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgIENPTFVNTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlv bmFsPiApCisgIDxvcHRpb25hbD4geyA8bGl0ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJh bD5FTVBUWTwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gPC9vcHRpb25h bD4KKyAgPG9wdGlvbmFsPgorICAgIFBMQU4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+anNvbl90YWJsZV9wbGFuPC9yZXBsYWNlYWJsZT4gKSB8CisgICAgUExBTiBERUZBVUxUICgg eyBJTk5FUiB8IE9VVEVSIH0gPG9wdGlvbmFsPiAsIHsgQ1JPU1MgfCBVTklPTiB9IDwvb3B0aW9u YWw+CisgICAgICAgICAgICAgICAgIHwgeyBDUk9TUyB8IFVOSU9OIH0gPG9wdGlvbmFsPiAsIHsg SU5ORVIgfCBPVVRFUiB9IDwvb3B0aW9uYWw+ICkKKyAgPC9vcHRpb25hbD4KKykKKworPHBocmFz ZT4KK3doZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qc29uX3RhYmxlX2NvbHVt bjwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPm5hbWU8L3Jl cGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gUEFU SCA8cmVwbGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgV0lUSE9VVCB8IFdJVEggeyBDT05ESVRJT05B TCB8IDxvcHRpb25hbD5VTkNPTkRJVElPTkFMPC9vcHRpb25hbD4gfSB9IDxvcHRpb25hbD4gQVJS QVkgPC9vcHRpb25hbD4gV1JBUFBFUiA8L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsg S0VFUCB8IE9NSVQgfSBRVU9URVMgPG9wdGlvbmFsPiBPTiBTQ0FMQVIgU1RSSU5HIDwvb3B0aW9u YWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwgfCBERUZB VUxUIDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFTVBUWSA8L29w dGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IHsgRVJST1IgfCBOVUxMIHwgREVGQVVMVCA8cmVw bGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gT04gRVJST1IgPC9vcHRpb25hbD4K KyAgfCA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT50eXBlPC9y ZXBsYWNlYWJsZT4gRk9STUFUIEpTT04gPG9wdGlvbmFsPkVOQ09ESU5HIDxsaXRlcmFsPlVURjg8 L2xpdGVyYWw+PC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJs ZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAg ICAgIDxvcHRpb25hbD4geyBXSVRIT1VUIHwgV0lUSCB7IENPTkRJVElPTkFMIHwgPG9wdGlvbmFs PlVOQ09ORElUSU9OQUw8L29wdGlvbmFsPiB9IH0gPG9wdGlvbmFsPiBBUlJBWSA8L29wdGlvbmFs PiBXUkFQUEVSIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBLRUVQIHwgT01JVCB9 IFFVT1RFUyA8b3B0aW9uYWw+IE9OIFNDQUxBUiBTVFJJTkcgPC9vcHRpb25hbD4gPC9vcHRpb25h bD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IEVSUk9SIHwgTlVMTCB8IEVNUFRZIHsgQVJSQVkgfCBP QkpFQ1QgfSB8IERFRkFVTFQgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9 IE9OIEVNUFRZIDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IE5VTEwg fCBFTVBUWSB7IEFSUkFZIHwgT0JKRUNUIH0gfCBERUZBVUxUIDxyZXBsYWNlYWJsZT5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPiBFWElT VFMgPG9wdGlvbmFsPiBQQVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwv cmVwbGFjZWFibGU+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyBFUlJPUiB8IFRS VUUgfCBGQUxTRSB8IFVOS05PV04gfSBPTiBFUlJPUiA8L29wdGlvbmFsPgorICB8IE5FU1RFRCBQ QVRIIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxv cHRpb25hbD4gQVMgPHJlcGxhY2VhYmxlPnBhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDwvb3B0aW9u YWw+CisgICAgICAgIENPTFVNTlMgKCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3Jl cGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPiApCisgIHwgPHJlcGxhY2VhYmxl Pm5hbWU8L3JlcGxhY2VhYmxlPiBGT1IgT1JESU5BTElUWQorPHBocmFzZT4KKzxyZXBsYWNlYWJs ZT5qc29uX3RhYmxlX3BsYW48L3JlcGxhY2VhYmxlPiBpczoKKzwvcGhyYXNlPgorICAgIDxyZXBs YWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4geyBPVVRFUiB8 IElOTkVSIH0gPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJs ZT4gPC9vcHRpb25hbD4KKyAgfCA8cmVwbGFjZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8 L3JlcGxhY2VhYmxlPiB7IFVOSU9OIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJpbWFy eTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPi4uLjwvb3B0aW9uYWw+CisgIHwgPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbl9wcmltYXJ5PC9yZXBsYWNlYWJsZT4geyBDUk9TUyA8cmVwbGFj ZWFibGU+anNvbl90YWJsZV9wbGFuX3ByaW1hcnk8L3JlcGxhY2VhYmxlPiB9IDxvcHRpb25hbD4u Li48L29wdGlvbmFsPgorPHBocmFzZT4KKzxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW5fcHJp bWFyeTwvcmVwbGFjZWFibGU+IGlzOgorPC9waHJhc2U+CisgICAgPHJlcGxhY2VhYmxlPmpzb25f cGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZT5qc29uX3RhYmxlX3BsYW48 L3JlcGxhY2VhYmxlPiApCis8L3N5bm9wc2lzPgorCisgIDxwYXJhPgorICAgRWFjaCBzeW50YXgg ZWxlbWVudCBpcyBkZXNjcmliZWQgYmVsb3cgaW4gbW9yZSBkZXRhaWwuCisgIDwvcGFyYT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxp dGVyYWw+PHJlcGxhY2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUzwv bGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0aF9uYW1lPC9yZXBsYWNlYWJsZT4gPC9vcHRp b25hbD4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFsPiB7IDxyZXBsYWNlYWJs ZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+ dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9vcHRpb25hbD48L29wdGlv bmFsPjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgor ICAgICBUaGUgaW5wdXQgZGF0YSB0byBxdWVyeSwgdGhlIEpTT04gcGF0aCBleHByZXNzaW9uIGRl ZmluaW5nIHRoZSBxdWVyeSwKKyAgICAgYW5kIGFuIG9wdGlvbmFsIDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IGNsYXVzZSwgd2hpY2ggY2FuIHByb3ZpZGUgZGF0YQorICAgICB2YWx1ZXMgdG8g dGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHJlc3VsdCBvZiB0aGUgaW5wdXQgZGF0YQorICAgICBldmFsdWF0aW9uIGlzIGNhbGxlZCB0aGUg PGZpcnN0dGVybT5yb3cgcGF0dGVybjwvZmlyc3R0ZXJtPi4gVGhlIHJvdworICAgICBwYXR0ZXJu IGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBmb3Igcm93IHZhbHVlcyBpbiB0aGUgY29uc3RydWN0ZWQg dmlldy4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8bGl0ZXJhbD5DT0xVTU5TPC9s aXRlcmFsPiggPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9yZXBsYWNlYWJsZT4gPG9w dGlvbmFsPiwgLi4uPC9vcHRpb25hbD4gKQorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisK KyAgICA8cGFyYT4KKyAgICAgVGhlIDxsaXRlcmFsPkNPTFVNTlM8L2xpdGVyYWw+IGNsYXVzZSBk ZWZpbmluZyB0aGUgc2NoZW1hIG9mIHRoZQorICAgICBjb25zdHJ1Y3RlZCB2aWV3LiBJbiB0aGlz IGNsYXVzZSwgeW91IG11c3Qgc3BlY2lmeSBhbGwgdGhlIGNvbHVtbnMKKyAgICAgdG8gYmUgZmls bGVkIHdpdGggU1FML0pTT04gaXRlbXMuCisgICAgIFRoZSA8cmVwbGFjZWFibGU+anNvbl90YWJs ZV9jb2x1bW48L3JlcGxhY2VhYmxlPgorICAgICBleHByZXNzaW9uIGhhcyB0aGUgZm9sbG93aW5n IHN5bnRheCB2YXJpYW50czoKKyAgICA8L3BhcmE+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPjxyZXBsYWNlYWJsZT5uYW1l PC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPnR5cGU8L3JlcGxhY2VhYmxlPgorICAgICAgICAg IDxvcHRpb25hbD4gPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmpzb25fcGF0 aF9zcGVjaWZpY2F0aW9uPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBJbnNlcnRzIGEgc2lu Z2xlIFNRTC9KU09OIGl0ZW0gaW50byB0aGUgb3V0cHV0IHJvdy4KKyAgICA8L3BhcmE+CisgICAg PHBhcmE+CisgICAgIFRoZSBwcm92aWRlZCA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiBleHByZXNz aW9uIGlzIGV2YWx1YXRlZCBhbmQKKyAgICAgdGhlIGNvbHVtbiBpcyBmaWxsZWQgd2l0aCB0aGUg cHJvZHVjZWQgU1FML0pTT04gaXRlbSwgb25lIGZvciBlYWNoIHJvdy4KKyAgICAgSWYgdGhlIDxs aXRlcmFsPlBBVEg8L2xpdGVyYWw+IGV4cHJlc3Npb24gaXMgb21pdHRlZCwKKyAgICAgPGZ1bmN0 aW9uPkpTT05fVEFCTEU8L2Z1bmN0aW9uPiB1c2VzIHRoZQorICAgICA8bGl0ZXJhbD4kLjxyZXBs YWNlYWJsZT5uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+IHBhdGggZXhwcmVzc2lvbiwKKyAg ICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUgcHJvdmlkZWQg Y29sdW1uIG5hbWUuCisgICAgIEluIHRoaXMgY2FzZSwgdGhlIGNvbHVtbiBuYW1lIG11c3QgY29y cmVzcG9uZCB0byBvbmUgb2YgdGhlCisgICAgIGtleXMgd2l0aGluIHRoZSBTUUwvSlNPTiBpdGVt IHByb2R1Y2VkIGJ5IHRoZSByb3cgcGF0dGVybi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+Cisg ICAgIE9wdGlvbmFsbHksIHlvdSBjYW4gc3BlY2lmeSA8bGl0ZXJhbD5XUkFQUEVSPC9saXRlcmFs PiwKKyAgICAgPGxpdGVyYWw+UVVPVEVTPC9saXRlcmFsPiBjbGF1c2VzIHRvIGZvcm1hdCB0aGUg b3V0cHV0IGFuZAorICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFs Pk9OIEVSUk9SPC9saXRlcmFsPiB0byBoYW5kbGUKKyAgICAgdGhvc2UgbWlzc2luZyB2YWx1ZXMg YW5kIHN0cnVjdHVyYWwgZXJyb3JzLCByZXNwZWN0aXZlbHkuCisgICAgPC9wYXJhPgorICAgIDxu b3RlPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIGlzIGludGVybmFsbHkgdHVybmVk IGludG8gYW5kIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMKKyAgICAgIDxmdW5jdGlvbj5qc29u X3ZhbHVlPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5qc29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisg ICAgICBUaGUgbGF0dGVyIGlmIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyBub3QgYSBzY2FsYXIgdHlw ZSBvciBpZgorICAgICAgPGxpdGVyYWw+V1JBUFBFUjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+UVVP VEVTPC9saXRlcmFsPiBjbGF1c2UgaXMKKyAgICAgIHByZXNlbnQuCisgICAgIDwvcGFyYT4KKyAg ICA8L25vdGU+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFy bGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZT50eXBlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9STUFUIEpTT048 L2xpdGVyYWw+IDxvcHRpb25hbD5FTkNPRElORyA8bGl0ZXJhbD5VVEY4PC9saXRlcmFsPjwvb3B0 aW9uYWw+CisgICAgICAgICAgPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVRIPC9saXRlcmFsPiA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgSW5zZXJ0 cyBhIGNvbXBvc2l0ZSBTUUwvSlNPTiBpdGVtIGludG8gdGhlIG91dHB1dCByb3cuCisgICAgPC9w YXJhPgorICAgIDxwYXJhPgorICAgICBUaGUgcHJvdmlkZWQgPGxpdGVyYWw+UEFUSDwvbGl0ZXJh bD4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYW5kCisgICAgIHRoZSBjb2x1bW4gaXMgZmlsbGVk IHdpdGggdGhlIHByb2R1Y2VkIFNRTC9KU09OIGl0ZW0uICBJZiB0aGUKKyAgICAgPGxpdGVyYWw+ UEFUSDwvbGl0ZXJhbD4gZXhwcmVzc2lvbiBpcyBvbWl0dGVkLCBwYXRoIGV4cHJlc3Npb24KKyAg ICAgPGxpdGVyYWw+JC48cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPiBp cyB1c2VkLAorICAgICB3aGVyZSA8cmVwbGFjZWFibGU+bmFtZTwvcmVwbGFjZWFibGU+IGlzIHRo ZSBwcm92aWRlZCBjb2x1bW4gbmFtZS4KKyAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29sdW1uIG5h bWUgbXVzdCBjb3JyZXNwb25kIHRvIG9uZSBvZiB0aGUKKyAgICAga2V5cyB3aXRoaW4gdGhlIFNR TC9KU09OIGl0ZW0gcHJvZHVjZWQgYnkgdGhlIHJvdyBwYXR0ZXJuLgorICAgIDwvcGFyYT4KKyAg ICA8cGFyYT4KKyAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzcGVjaWZ5IDxsaXRlcmFsPldSQVBQ RVI8L2xpdGVyYWw+LAorICAgICA8bGl0ZXJhbD5RVU9URVM8L2xpdGVyYWw+IGNsYXVzZXMgdG8g Zm9ybWF0IHRoZSBvdXRwdXQgYW5kCisgICAgIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBh bmQgPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IHRvIGhhbmRsZQorICAgICB0aG9zZSBzY2Vu YXJpb3MgYXBwcm9wcmlhdGVseS4KKyAgICA8L3BhcmE+CisgICAgPG5vdGU+CisgICAgIDxwYXJh PgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxseSB0dXJuZWQgaW50byBhbmQgaGFzIHRo ZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0aW9u Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbm90ZT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgICAgPHJlcGxh Y2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+ CisgICAgICAgPGxpdGVyYWw+RVhJU1RTPC9saXRlcmFsPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBB VEg8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFj ZWFibGU+IDwvb3B0aW9uYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBJbnNlcnRzIGEgYm9vbGVhbiBpdGVtIGludG8gZWFjaCBvdXRwdXQgcm93Lgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHdo ZXRoZXIgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+UEFUSDwvbGl0ZXJhbD4KKyAgICAgZXhwcmVz c2lvbiB5aWVsZHMgYW55IFNRTC9KU09OIGl0ZW1zLiAgSWYgdGhlIDxsaXRlcmFsPlBBVEg8L2xp dGVyYWw+CisgICAgIGV4cHJlc3Npb24gaXMgb21pdHRlZCwgcGF0aCBleHByZXNzaW9uCisgICAg IDxsaXRlcmFsPiQuPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD4gaXMg dXNlZCwKKyAgICAgd2hlcmUgPHJlcGxhY2VhYmxlPm5hbWU8L3JlcGxhY2VhYmxlPiBpcyB0aGUg cHJvdmlkZWQgY29sdW1uIG5hbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGUg c3BlY2lmaWVkIDxwYXJhbWV0ZXI+dHlwZTwvcGFyYW1ldGVyPiBzaG91bGQgaGF2ZSBhIGNhc3Qg ZnJvbSB0aGUKKyAgICAgPHR5cGU+Ym9vbGVhbjwvdHlwZT4uCisgICAgPC9wYXJhPgorICAgIDxw YXJhPgorICAgICBPcHRpb25hbGx5LCB5b3UgY2FuIGFkZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0 ZXJhbD4gY2xhdXNlIHRvIGRlZmluZQorICAgICBlcnJvciBiZWhhdmlvci4KKyAgICA8L3BhcmE+ CisgICAgPG5vdGU+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgaXMgaW50ZXJuYWxs eSB0dXJuZWQgaW50byBhbmQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcworICAgICAgPGZ1bmN0 aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4uCisgICAgIDwvcGFyYT4KKyAgICA8L25vdGU+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPgorICAgICAgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IDxyZXBsYWNl YWJsZT5qc29uX3BhdGhfc3BlY2lmaWNhdGlvbjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4gPGxp dGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFjZWFi bGU+IDwvb3B0aW9uYWw+CisgICAgICAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gKCA8 cmVwbGFjZWFibGU+anNvbl90YWJsZV9jb2x1bW48L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+LCAu Li48L29wdGlvbmFsPiApCisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJh PgorICAgICBFeHRyYWN0cyBTUUwvSlNPTiBpdGVtcyBmcm9tIG5lc3RlZCBsZXZlbHMgb2YgdGhl IHJvdyBwYXR0ZXJuLAorICAgICBnZW5lcmF0ZXMgb25lIG9yIG1vcmUgY29sdW1ucyBhcyBkZWZp bmVkIGJ5IHRoZSA8bGl0ZXJhbD5DT0xVTU5TPC9saXRlcmFsPgorICAgICBzdWJjbGF1c2UsIGFu ZCBpbnNlcnRzIHRoZSBleHRyYWN0ZWQgU1FML0pTT04gaXRlbXMgaW50byBlYWNoIHJvdyBvZiB0 aGVzZSBjb2x1bW5zLgorICAgICBUaGUgPHJlcGxhY2VhYmxlPmpzb25fdGFibGVfY29sdW1uPC9y ZXBsYWNlYWJsZT4gZXhwcmVzc2lvbiBpbiB0aGUKKyAgICAgPGxpdGVyYWw+Q09MVU1OUzwvbGl0 ZXJhbD4gc3ViY2xhdXNlIHVzZXMgdGhlIHNhbWUgc3ludGF4IGFzIGluIHRoZQorICAgICBwYXJl bnQgPGxpdGVyYWw+Q09MVU1OUzwvbGl0ZXJhbD4gY2xhdXNlLgorICAgIDwvcGFyYT4KKworICAg IDxwYXJhPgorICAgICBUaGUgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+IHN5bnRheCBp cyByZWN1cnNpdmUsCisgICAgIHNvIHlvdSBjYW4gZ28gZG93biBtdWx0aXBsZSBuZXN0ZWQgbGV2 ZWxzIGJ5IHNwZWNpZnlpbmcgc2V2ZXJhbAorICAgICA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0 ZXJhbD4gc3ViY2xhdXNlcyB3aXRoaW4gZWFjaCBvdGhlci4KKyAgICAgSXQgYWxsb3dzIHRvIHVu bmVzdCB0aGUgaGllcmFyY2h5IG9mIEpTT04gb2JqZWN0cyBhbmQgYXJyYXlzCisgICAgIGluIGEg c2luZ2xlIGZ1bmN0aW9uIGludm9jYXRpb24gcmF0aGVyIHRoYW4gY2hhaW5pbmcgc2V2ZXJhbAor ICAgICA8ZnVuY3Rpb24+SlNPTl9UQUJMRTwvZnVuY3Rpb24+IGV4cHJlc3Npb25zIGluIGFuIFNR TCBzdGF0ZW1lbnQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFlvdSBjYW4gdXNl IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2UgdG8gZGVmaW5lIGhvdworICAgICB0 byBqb2luIHRoZSBjb2x1bW5zIHJldHVybmVkIGJ5IDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRl cmFsPiBjbGF1c2VzLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxyZXBsYWNlYWJs ZT5uYW1lPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+Rk9SIE9SRElOQUxJVFk8L2xpdGVyYWw+Cisg ICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxwYXJhPgorICAgICBBZGRzIGFuIG9y ZGluYWxpdHkgY29sdW1uIHRoYXQgcHJvdmlkZXMgc2VxdWVudGlhbCByb3cgbnVtYmVyaW5nLgor ICAgICBZb3UgY2FuIGhhdmUgb25seSBvbmUgb3JkaW5hbGl0eSBjb2x1bW4gcGVyIHRhYmxlLiBS b3cgbnVtYmVyaW5nCisgICAgIGlzIDEtYmFzZWQuIEZvciBjaGlsZCByb3dzIHRoYXQgcmVzdWx0 IGZyb20gdGhlIDxsaXRlcmFsPk5FU1RFRCBQQVRIPC9saXRlcmFsPgorICAgICBjbGF1c2VzLCB0 aGUgcGFyZW50IHJvdyBudW1iZXIgaXMgcmVwZWF0ZWQuCisgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xp c3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+CisgICAgIDxsaXRlcmFsPkFTPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+anNvbl9wYXRoX25h bWU8L3JlcGxhY2VhYmxlPgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFy YT4KKyAgICAgVGhlIG9wdGlvbmFsIDxyZXBsYWNlYWJsZT5qc29uX3BhdGhfbmFtZTwvcmVwbGFj ZWFibGU+IHNlcnZlcyBhcyBhbgorICAgICBpZGVudGlmaWVyIG9mIHRoZSBwcm92aWRlZCA8cmVw bGFjZWFibGU+anNvbl9wYXRoX3NwZWNpZmljYXRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgVGhl IHBhdGggbmFtZSBtdXN0IGJlIHVuaXF1ZSBhbmQgZGlzdGluY3QgZnJvbSB0aGUgY29sdW1uIG5h bWVzLgorICAgICBXaGVuIHVzaW5nIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Us IHlvdSBtdXN0IHNwZWNpZnkgdGhlIG5hbWVzCisgICAgIGZvciBhbGwgdGhlIHBhdGhzLCBpbmNs dWRpbmcgdGhlIHJvdyBwYXR0ZXJuLiBFYWNoIHBhdGggbmFtZSBjYW4gYXBwZWFyIGluCisgICAg IHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPiBjbGF1c2Ugb25seSBvbmNlLgorICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+ICggPHJlcGxhY2Vh YmxlPmpzb25fdGFibGVfcGxhbjwvcmVwbGFjZWFibGU+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIERlZmluZXMgaG93IHRvIGpvaW4gdGhlIGRhdGEg cmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+CisgICAgIGNsYXVzZXMg dG8gdGhlIGNvbnN0cnVjdGVkIHZpZXcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICBU byBqb2luIGNvbHVtbnMgd2l0aCBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwLCB5b3UgY2FuIHVz ZToKKyAgICA8L3BhcmE+CisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPgorICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorCisgICAgPHBhcmE+CisgICAgIFVzZSA8bGl0ZXJhbD5JTk5FUiBKT0lOPC9s aXRlcmFsPiwgc28gdGhhdCB0aGUgcGFyZW50IHJvdworICAgICBpcyBvbWl0dGVkIGZyb20gdGhl IG91dHB1dCBpZiBpdCBkb2VzIG5vdCBoYXZlIGFueSBjaGlsZCByb3dzCisgICAgIGFmdGVyIGpv aW5pbmcgdGhlIGRhdGEgcmV0dXJuZWQgYnkgPGxpdGVyYWw+TkVTVEVEIFBBVEg8L2xpdGVyYWw+ LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPk9VVEVSPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgVXNlIDxs aXRlcmFsPkxFRlQgT1VURVIgSk9JTjwvbGl0ZXJhbD4sIHNvIHRoYXQgdGhlIHBhcmVudCByb3cK KyAgICAgaXMgYWx3YXlzIGluY2x1ZGVkIGludG8gdGhlIG91dHB1dCBldmVuIGlmIGl0IGRvZXMg bm90IGhhdmUgYW55IGNoaWxkIHJvd3MKKyAgICAgYWZ0ZXIgam9pbmluZyB0aGUgZGF0YSByZXR1 cm5lZCBieSA8bGl0ZXJhbD5ORVNURUQgUEFUSDwvbGl0ZXJhbD4sIHdpdGggTlVMTCB2YWx1ZXMK KyAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY2hpbGQgY29sdW1ucyBpZiB0aGUgY29ycmVzcG9uZGlu ZworICAgICB2YWx1ZXMgYXJlIG1pc3NpbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAg ICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbiBmb3Igam9pbmluZyBjb2x1bW5zIHdpdGggcGFy ZW50L2NoaWxkIHJlbGF0aW9uc2hpcC4KKyAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKworICAgICA8cGFyYT4KKyAgICAg VG8gam9pbiBzaWJsaW5nIGNvbHVtbnMsIHlvdSBjYW4gdXNlOgorICAgIDwvcGFyYT4KKworICA8 dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT4KKyAgICAgPGxpdGVy YWw+VU5JT048L2xpdGVyYWw+CisgICAgPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKworICAgIDxw YXJhPgorICAgICBHZW5lcmF0ZSBvbmUgcm93IGZvciBlYWNoIHZhbHVlIHByb2R1Y2VkIGJ5IGVh Y2ggb2YgdGhlIHNpYmxpbmcKKyAgICAgY29sdW1ucy4gVGhlIGNvbHVtbnMgZnJvbSB0aGUgb3Ro ZXIgc2libGluZ3MgYXJlIHNldCB0byBudWxsLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAg ICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBvcHRpb24gZm9yIGpvaW5pbmcgc2libGluZyBjb2x1bW5z LgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPkNST1NTPC9saXRlcmFs PgorICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisKKyAgICA8cGFyYT4KKyAgICAgR2VuZXJh dGUgb25lIHJvdyBmb3IgZWFjaCBjb21iaW5hdGlvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgc2libGlu ZyBjb2x1bW5zLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgPC92YXJpYWJsZWxpc3Q+CisKKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+CisgICAgIDxsaXRlcmFsPlBM QU4gREVGQVVMVDwvbGl0ZXJhbD4gKCA8bGl0ZXJhbD48cmVwbGFjZWFibGU+T1VURVIgfCBJTk5F UjwvcmVwbGFjZWFibGU+IDxvcHRpb25hbD4sIDxyZXBsYWNlYWJsZT5VTklPTiB8IENST1NTPC9y ZXBsYWNlYWJsZT4gPC9vcHRpb25hbD48L2xpdGVyYWw+ICkKKyAgICA8L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0ZXJtcyBjYW4gYWxzbyBiZSBzcGVjaWZp ZWQgaW4gcmV2ZXJzZSBvcmRlci4gVGhlCisgICAgICA8bGl0ZXJhbD5JTk5FUjwvbGl0ZXJhbD4g b3IgPGxpdGVyYWw+T1VURVI8L2xpdGVyYWw+IG9wdGlvbiBkZWZpbmVzIHRoZQorICAgICAgam9p bmluZyBwbGFuIGZvciBwYXJlbnQvY2hpbGQgY29sdW1ucywgd2hpbGUgPGxpdGVyYWw+VU5JT048 L2xpdGVyYWw+IG9yCisgICAgICA8bGl0ZXJhbD5DUk9TUzwvbGl0ZXJhbD4gYWZmZWN0cyBqb2lu cyBvZiBzaWJsaW5nIGNvbHVtbnMuIFRoaXMgZm9ybQorICAgICAgb2YgPGxpdGVyYWw+UExBTjwv bGl0ZXJhbD4gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHBsYW4gZm9yCisgICAgICBhbGwgY29sdW1u cyBhdCBvbmNlLiBFdmVuIHRob3VnaCB0aGUgcGF0aCBuYW1lcyBhcmUgbm90IGluY2x1ZGVkIGlu IHRoZQorICAgICAgPGxpdGVyYWw+UExBTiBERUZBVUxUPC9saXRlcmFsPiBmb3JtLCB0byBjb25m b3JtIHRvIHRoZSBTUUwvSlNPTiBzdGFuZGFyZAorICAgICAgdGhleSBtdXN0IGJlIHByb3ZpZGVk IGZvciBhbGwgdGhlIHBhdGhzIGlmIHRoZSA8bGl0ZXJhbD5QTEFOPC9saXRlcmFsPgorICAgICAg Y2xhdXNlIGlzIHVzZWQuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICA8bGl0ZXJh bD5QTEFOIERFRkFVTFQ8L2xpdGVyYWw+IGlzIHNpbXBsZXIgdGhhbiBzcGVjaWZ5aW5nIGEgY29t cGxldGUKKyAgICAgIDxsaXRlcmFsPlBMQU48L2xpdGVyYWw+LCBhbmQgaXMgb2Z0ZW4gYWxsIHRo YXQgaXMgcmVxdWlyZWQgdG8gZ2V0IHRoZSBkZXNpcmVkCisgICAgICBvdXRwdXQuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisgIDwvdmFyaWFibGVs aXN0PgorCisgIDxwYXJhPkV4YW1wbGVzPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICBJbiB0 aGVzZSBleGFtcGxlcyB0aGUgZm9sbG93aW5nIHNtYWxsIHRhYmxlIHN0b3Jpbmcgc29tZSBKU09O IGRhdGEgd2lsbCBiZSB1c2VkOgorPHByb2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIG15X2Zp bG1zICgganMganNvbmIgKTsKKworSU5TRVJUIElOVE8gbXlfZmlsbXMgVkFMVUVTICgKKyd7ICJm YXZvcml0ZXMiIDogWworICAgeyAia2luZCIgOiAiY29tZWR5IiwgImZpbG1zIiA6IFsKKyAgICAg eyAidGl0bGUiIDogIkJhbmFuYXMiLAorICAgICAgICJkaXJlY3RvciIgOiAiV29vZHkgQWxsZW4i fSwKKyAgICAgeyAidGl0bGUiIDogIlRoZSBEaW5uZXIgR2FtZSIsCisgICAgICAgImRpcmVjdG9y IiA6ICJGcmFuY2lzIFZlYmVyIiB9IF0gfSwKKyAgIHsgImtpbmQiIDogImhvcnJvciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJQc3ljaG8iLAorICAgICAgICJkaXJlY3RvciIgOiAi QWxmcmVkIEhpdGNoY29jayIgfSBdIH0sCisgICB7ICJraW5kIiA6ICJ0aHJpbGxlciIsICJmaWxt cyIgOiBbCisgICAgIHsgInRpdGxlIiA6ICJWZXJ0aWdvIiwKKyAgICAgICAiZGlyZWN0b3IiIDog IkFsZnJlZCBIaXRjaGNvY2siIH0gXSB9LAorICAgeyAia2luZCIgOiAiZHJhbWEiLCAiZmlsbXMi IDogWworICAgICB7ICJ0aXRsZSIgOiAiWW9qaW1ibyIsCisgICAgICAgImRpcmVjdG9yIiA6ICJB a2lyYSBLdXJvc2F3YSIgfSBdIH0KKyAgXSB9Jyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICA8 L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgUXVlcnkgdGhlIDxzdHJ1Y3RuYW1lPm15X2ZpbG1z PC9zdHJ1Y3RuYW1lPiB0YWJsZSBob2xkaW5nCisgICAgICBzb21lIEpTT04gZGF0YSBhYm91dCB0 aGUgZmlsbXMgYW5kIGNyZWF0ZSBhIHZpZXcgdGhhdAorICAgICAgZGlzdHJpYnV0ZXMgdGhlIGZp bG0gZ2VucmUsIHRpdGxlLCBhbmQgZGlyZWN0b3IgYmV0d2VlbiBzZXBhcmF0ZSBjb2x1bW5zOgor PHNjcmVlbj4KK1NFTEVDVCBqdC4qIEZST00KKyBteV9maWxtcywKKyBKU09OX1RBQkxFICgganMs ICckLmZhdm9yaXRlc1sqXScgQ09MVU1OUyAoCisgICBpZCBGT1IgT1JESU5BTElUWSwKKyAgIGtp bmQgdGV4dCBQQVRIICckLmtpbmQnLAorICAgTkVTVEVEIFBBVEggJyQuZmlsbXNbKl0nIENPTFVN TlMgKAorICAgICB0aXRsZSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICBkaXJlY3RvciB0ZXh0 IFBBVEggJyQuZGlyZWN0b3InKSkpIEFTIGp0OworLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaWQgfCAgIGtpbmQgICB8ICAgICAgIHRpdGxl ICAgICAgfCAgICBkaXJlY3RvcgorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tCisgMSAgfCBjb21lZHkgICB8IEJhbmFuYXMgICAgICAgICAgfCBX b29keSBBbGxlbgorIDEgIHwgY29tZWR5ICAgfCBUaGUgRGlubmVyIEdhbWUgIHwgRnJhbmNpcyBW ZWJlcgorIDIgIHwgaG9ycm9yICAgfCBQc3ljaG8gICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29j aworIDMgIHwgdGhyaWxsZXIgfCBWZXJ0aWdvICAgICAgICAgIHwgQWxmcmVkIEhpdGNoY29jawor IDQgIHwgZHJhbWEgICAgfCBZb2ppbWJvICAgICAgICAgIHwgQWtpcmEgS3Vyb3Nhd2EKKyAoNSBy b3dzKQorPC9zY3JlZW4+CisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZpbmQg YSBkaXJlY3RvciB0aGF0IGhhcyBkb25lIGZpbG1zIGluIHR3byBkaWZmZXJlbnQgZ2VucmVzOgor PHNjcmVlbj4KK1NFTEVDVAorICBkaXJlY3RvcjEgQVMgZGlyZWN0b3IsIHRpdGxlMSwga2luZDEs IHRpdGxlMiwga2luZDIKK0ZST00KKyAgbXlfZmlsbXMsCisgIEpTT05fVEFCTEUgKCBqcywgJyQu ZmF2b3JpdGVzJyBBUyBmYXZzIENPTFVNTlMgKAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBm aWxtczEgQ09MVU1OUyAoCisgICAgICBraW5kMSB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBO RVNURUQgUEFUSCAnJC5maWxtc1sqXScgQVMgZmlsbTEgQ09MVU1OUyAoCisgICAgICAgIHRpdGxl MSB0ZXh0IFBBVEggJyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjEgdGV4dCBQQVRIICckLmRp cmVjdG9yJykKKyAgICApLAorICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyBmaWxtczIgQ09MVU1O UyAoCisgICAgICBraW5kMiB0ZXh0IFBBVEggJyQua2luZCcsCisgICAgICBORVNURUQgUEFUSCAn JC5maWxtc1sqXScgQVMgZmlsbTIgQ09MVU1OUyAoCisgICAgICAgIHRpdGxlMiB0ZXh0IFBBVEgg JyQudGl0bGUnLAorICAgICAgICBkaXJlY3RvcjIgdGV4dCBQQVRIICckLmRpcmVjdG9yJworICAg ICAgKQorICAgICkKKyAgICkKKyAgIFBMQU4gKGZhdnMgT1VURVIgKChmaWxtczEgSU5ORVIgZmls bTEpIENST1NTIChmaWxtczIgSU5ORVIgZmlsbTIpKSkKKyAgKSBBUyBqdAorIFdIRVJFIGtpbmQx ID4ga2luZDIgQU5EIGRpcmVjdG9yMSA9IGRpcmVjdG9yMjsKKworICAgICBkaXJlY3RvciAgICAg fCB0aXRsZTEgIHwgIGtpbmQxICAgfCB0aXRsZTIgfCBraW5kMgorLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tCisgQWxmcmVkIEhpdGNoY29j ayB8IFZlcnRpZ28gfCB0aHJpbGxlciB8IFBzeWNobyB8IGhvcnJvcgorKDEgcm93KQorPC9zY3Jl ZW4+CisgICAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKwogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9 ImZ1bmN0aW9ucy1zZXF1ZW5jZSI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5k ZXggODBhYzU5ZmJhNC4uYTBlNjNmNDU0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dApAQCAtNTUwLDEwICs1NTAsMTAgQEAgVDgxNAlDb2xvbiBpbiBKU09OX09CSkVDVCBvciBK U09OX09CSkVDVEFHRwkJCVlFUwogVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJ CQlZRVMJCiBUODIyCVNRTC9KU09OOiBJUyBKU09OIFdJVEggVU5JUVVFIEtFWVMgcHJlZGljYXRl CQkJWUVTCQogVDgyMwlTUUwvSlNPTjogUEFTU0lORyBjbGF1c2UJCQlZRVMJCi1UODI0CUpTT05f VEFCTEU6IHNwZWNpZmljIFBMQU4gY2xhdXNlCQkJTk8JCitUODI0CUpTT05fVEFCTEU6IHNwZWNp ZmljIFBMQU4gY2xhdXNlCQkJWUVTCQogVDgyNQlTUUwvSlNPTjogT04gRU1QVFkgYW5kIE9OIEVS Uk9SIGNsYXVzZXMJCQlZRVMJCiBUODI2CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBF UlJPUiBvciBPTiBFTVBUWSBjbGF1c2VzCQkJWUVTCQotVDgyNwlKU09OX1RBQkxFOiBzaWJsaW5n IE5FU1RFRCBDT0xVTU5TIGNsYXVzZXMJCQlOTwkKK1Q4MjcJSlNPTl9UQUJMRTogc2libGluZyBO RVNURUQgQ09MVU1OUyBjbGF1c2VzCQkJWUVTCQogVDgyOAlKU09OX1FVRVJZCQkJWUVTCQogVDgy OQlKU09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2lu ZyB1bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCkBA IC01NjQsNyArNTY0LDcgQEAgVDgzNAlTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiB3aWxkY2FyZCBt ZW1iZXIgYWNjZXNzb3IJCQlZRVMKIFQ4MzUJU1FML0pTT04gcGF0aCBsYW5ndWFnZTogZmlsdGVy IGV4cHJlc3Npb25zCQkJWUVTCQogVDgzNglTUUwvSlNPTiBwYXRoIGxhbmd1YWdlOiBzdGFydHMg d2l0aCBwcmVkaWNhdGUJCQlZRVMJCiBUODM3CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHJlZ2V4 X2xpa2UgcHJlZGljYXRlCQkJWUVTCQotVDgzOAlKU09OX1RBQkxFOiBQTEFOIERFRkFVTFQgY2xh dXNlCQkJTk8JCitUODM4CUpTT05fVEFCTEU6IFBMQU4gREVGQVVMVCBjbGF1c2UJCQlZRVMJCiBU ODM5CUZvcm1hdHRlZCBjYXN0IG9mIGRhdGV0aW1lcyB0by9mcm9tIGNoYXJhY3RlciBzdHJpbmdz CQkJTk8JCiBUODQwCUhleCBpbnRlZ2VyIGxpdGVyYWxzIGluIFNRTC9KU09OIHBhdGggbGFuZ3Vh Z2UJCQlZRVMJCiBUODUxCVNRTC9KU09OOiBvcHRpb25hbCBrZXl3b3JkcyBmb3IgZGVmYXVsdCBz eW50YXgJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwppbmRleCBlNmI2 OTU1NmYyLi4xYTIxZWVhNjkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMK QEAgLTQzNDEsNiArNDM0MSwxMiBAQCBFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgSlNPTl9U QUJMRV9PUDoKKwkJCXBvc3RfZXZhbC0+anVtcF9ldmFsX2NvZXJjaW9uID0gLTE7CisJCQkqb3At PnJlc3ZhbHVlID0gaXRlbTsKKwkJCSpvcC0+cmVzbnVsbCA9IGZhbHNlOworCQkJYnJlYWs7CisK IAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVz c2lvbiBvcCAlZCIsIGpleHByLT5vcCk7CiAJCQlyZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwppbmRleCA3MmNhMzRhMjI4Li45OWZiOTI4OTRjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKQEAgLTI4LDYgKzI4LDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgi CiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMu aCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTE2MSw4ICsxNjIsOSBAQCBFeGVjSW5pdFRh YmxlRnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJc2NhbnN0YXRlLT5zcy5wcy5xdWFsID0KIAkJRXhlY0luaXRRdWFsKG5vZGUtPnNjYW4u cGxhbi5xdWFsLCAmc2NhbnN0YXRlLT5zcy5wcyk7CiAKLQkvKiBPbmx5IFhNTFRBQkxFIGlzIHN1 cHBvcnRlZCBjdXJyZW50bHkgKi8KLQlzY2Fuc3RhdGUtPnJvdXRpbmUgPSAmWG1sVGFibGVSb3V0 aW5lOworCS8qIE9ubHkgWE1MVEFCTEUgYW5kIEpTT05fVEFCTEUgYXJlIHN1cHBvcnRlZCBjdXJy ZW50bHkgKi8KKwlzY2Fuc3RhdGUtPnJvdXRpbmUgPQorCQl0Zi0+ZnVuY3R5cGUgPT0gVEZUX1hN TFRBQkxFID8gJlhtbFRhYmxlUm91dGluZSA6ICZKc29uYlRhYmxlUm91dGluZTsKIAogCXNjYW5z dGF0ZS0+cGVyVGFibGVDeHQgPQogCQlBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9y eUNvbnRleHQsCkBAIC0xODIsNiArMTg0LDEwIEBAIEV4ZWNJbml0VGFibGVGdW5jU2NhbihUYWJs ZUZ1bmNTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY0luaXRF eHByTGlzdCh0Zi0+Y29sZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKIAlzY2Fuc3Rh dGUtPmNvbGRlZmV4cHJzID0KIAkJRXhlY0luaXRFeHByTGlzdCh0Zi0+Y29sZGVmZXhwcnMsIChQ bGFuU3RhdGUgKikgc2NhbnN0YXRlKTsKKwlzY2Fuc3RhdGUtPmNvbHZhbGV4cHJzID0KKwkJRXhl Y0luaXRFeHByTGlzdCh0Zi0+Y29sdmFsZXhwcnMsIChQbGFuU3RhdGUgKikgc2NhbnN0YXRlKTsK KwlzY2Fuc3RhdGUtPnBhc3Npbmd2YWxleHBycyA9CisJCUV4ZWNJbml0RXhwckxpc3QodGYtPnBh c3Npbmd2YWxleHBycywgKFBsYW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogCiAJc2NhbnN0YXRlLT5u b3RudWxscyA9IHRmLT5ub3RudWxsczsKIApAQCAtMzY5LDE0ICszNzUsMTcgQEAgdGZ1bmNJbml0 aWFsaXplKFRhYmxlRnVuY1NjYW5TdGF0ZSAqdHN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQs IERhdHVtIGRvYykKIAkJcm91dGluZS0+U2V0TmFtZXNwYWNlKHRzdGF0ZSwgbnNfbmFtZSwgbnNf dXJpKTsKIAl9CiAKLQkvKiBJbnN0YWxsIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaW50byB0 aGUgdGFibGUgYnVpbGRlciBjb250ZXh0ICovCi0JdmFsdWUgPSBFeGVjRXZhbEV4cHIodHN0YXRl LT5yb3dleHByLCBlY29udGV4dCwgJmlzbnVsbCk7Ci0JaWYgKGlzbnVsbCkKLQkJZXJlcG9ydChF UlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAotCQkJ CSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBtdXN0IG5vdCBiZSBudWxsIikpKTsKKwlp ZiAocm91dGluZS0+U2V0Um93RmlsdGVyKQorCXsKKwkJLyogSW5zdGFsbCB0aGUgcm93IGZpbHRl ciBleHByZXNzaW9uIGludG8gdGhlIHRhYmxlIGJ1aWxkZXIgY29udGV4dCAqLworCQl2YWx1ZSA9 IEV4ZWNFdmFsRXhwcih0c3RhdGUtPnJvd2V4cHIsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJaWYg KGlzbnVsbCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9W QUxVRV9OT1RfQUxMT1dFRCksCisJCQkJCSBlcnJtc2coInJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBt dXN0IG5vdCBiZSBudWxsIikpKTsKIAotCXJvdXRpbmUtPlNldFJvd0ZpbHRlcih0c3RhdGUsIFRl eHREYXR1bUdldENTdHJpbmcodmFsdWUpKTsKKwkJcm91dGluZS0+U2V0Um93RmlsdGVyKHRzdGF0 ZSwgVGV4dERhdHVtR2V0Q1N0cmluZyh2YWx1ZSkpOworCX0KIAogCS8qCiAJICogSW5zdGFsbCB0 aGUgY29sdW1uIGZpbHRlciBleHByZXNzaW9ucyBpbnRvIHRoZSB0YWJsZSBidWlsZGVyIGNvbnRl eHQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDA5YTA1YTAzNzMuLmI4ZDM0NzcwZTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL21ha2VmdW5jcy5jCkBAIC01MzgsNiArNTM4LDIyIEBAIG1ha2VGdW5jRXhwcihPaWQgZnVu Y2lkLCBPaWQgcmV0dHlwZSwgTGlzdCAqYXJncywKIAlyZXR1cm4gZnVuY2V4cHI7CiB9CiAKKy8q CisgKiBtYWtlU3RyaW5nQ29uc3QgLQorICogCWJ1aWxkIGEgQV9Db25zdCBub2RlIG9mIHR5cGUg VF9TdHJpbmcgZm9yIGdpdmVuIHN0cmluZworICovCitOb2RlICoKK21ha2VTdHJpbmdDb25zdChj aGFyICpzdHIsIGludCBsb2NhdGlvbikKK3sKKwlBX0NvbnN0CSAgICpuID0gbWFrZU5vZGUoQV9D b25zdCk7CisKKwluLT52YWwuc3ZhbC50eXBlID0gVF9TdHJpbmc7CisJbi0+dmFsLnN2YWwuc3Zh bCA9IHN0cjsKKwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisgICByZXR1cm4gKE5vZGUgKikg bjsKK30KKwogLyoKICAqIG1ha2VEZWZFbGVtIC0KICAqCWJ1aWxkIGEgRGVmRWxlbSBub2RlCkBA IC04NzUsNiArODkxLDk4IEBAIG1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBl LCBOb2RlICpleHByLCBKc29uQ29lcmNpb24gKmNvZXJjaW9uLAogCXJldHVybiBiZWhhdmlvcjsK IH0KIAorLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoIC0KKyAqCQlNYWtlIEpzb25UYWJsZVBhdGgg bm9kZSBmcm9tIGdpdmVuIHBhdGggc3RyaW5nIGFuZCBuYW1lIChpZiBhbnkpCisgKi8KK0pzb25U YWJsZVBhdGggKgorbWFrZUpzb25UYWJsZVBhdGgoQ29uc3QgKnBhdGh2YWx1ZSwgY2hhciAqcGF0 aG5hbWUpCit7CisJSnNvblRhYmxlUGF0aCAqcGF0aCA9IG1ha2VOb2RlKEpzb25UYWJsZVBhdGgp OworCisJQXNzZXJ0KElzQShwYXRodmFsdWUsIENvbnN0KSk7CisJcGF0aC0+dmFsdWUgPSBwYXRo dmFsdWU7CisJaWYgKHBhdGhuYW1lKQorCQlwYXRoLT5uYW1lID0gcGF0aG5hbWU7CisKKwlyZXR1 cm4gcGF0aDsKK30KKworLyoKKyAqIG1ha2VKc29uVGFibGVQYXRoU3BlYyAtCisgKgkJTWFrZSBK c29uVGFibGVQYXRoU3BlYyBub2RlIGZyb20gZ2l2ZW4gcGF0aCBzdHJpbmcgYW5kIG5hbWUgKGlm IGFueSkKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAqc3RyaW5nLCBj aGFyICpuYW1lLCBpbnQgc3RyaW5nX2xvY2F0aW9uLAorCQkJCQkgIGludCBuYW1lX2xvY2F0aW9u KQoreworCUpzb25UYWJsZVBhdGhTcGVjICpwYXRoc3BlYyA9IG1ha2VOb2RlKEpzb25UYWJsZVBh dGhTcGVjKTsKKworCUFzc2VydChzdHJpbmcgIT0gTlVMTCk7CisJcGF0aHNwZWMtPnN0cmluZyA9 IG1ha2VTdHJpbmdDb25zdChzdHJpbmcsIHN0cmluZ19sb2NhdGlvbik7CisJaWYgKG5hbWUgIT0g TlVMTCkKKwkJcGF0aHNwZWMtPm5hbWUgPSBwc3RyZHVwKG5hbWUpOworCisJcGF0aHNwZWMtPm5h bWVfbG9jYXRpb24gPSBuYW1lX2xvY2F0aW9uOworCXBhdGhzcGVjLT5sb2NhdGlvbiA9IHN0cmlu Z19sb2NhdGlvbjsKKworCXJldHVybiAoTm9kZSAqKSBwYXRoc3BlYzsKK30KKworLyoKKyAqIG1h a2VKc29uVGFibGVEZWZhdWx0UGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxlUGxhblNw ZWMgbm9kZSB0byByZXByZXNlbnQgYSAiZGVmYXVsdCIgSlNPTl9UQUJMRSBwbGFuCisgKgkgICB3 aXRoIGdpdmVuIGpvaW4gc3RyYXRlZ3kKKyAqLworTm9kZSAqCittYWtlSnNvblRhYmxlRGVmYXVs dFBsYW4oSnNvblRhYmxlUGxhbkpvaW5UeXBlIGpvaW5fdHlwZSwgaW50IGxvY2F0aW9uKQorewor CUpzb25UYWJsZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJ bi0+cGxhbl90eXBlID0gSlNUUF9ERUZBVUxUOworCW4tPmpvaW5fdHlwZSA9IGpvaW5fdHlwZTsK KwluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIG47Cit9CisKKy8q CisgKiBtYWtlSnNvblRhYmxlU2ltcGxlUGxhbiAtCisgKgkgICBjcmVhdGVzIGEgSnNvblRhYmxl UGxhblNwZWMgbm9kZSB0byByZXByZXNlbnQgYSAic2ltcGxlIiBKU09OX1RBQkxFIHBsYW4KKyAq CSAgIGZvciBnaXZlbiBQQVRICisgKi8KK05vZGUgKgorbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4o Y2hhciAqcGF0aG5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlKc29uVGFibGVQbGFuU3BlYyAqbiA9 IG1ha2VOb2RlKEpzb25UYWJsZVBsYW5TcGVjKTsKKworCW4tPnBsYW5fdHlwZSA9IEpTVFBfU0lN UExFOworCW4tPnBhdGhuYW1lID0gcGF0aG5hbWU7CisJbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsK KworCXJldHVybiAoTm9kZSAqKSBuOworfQorCisvKgorICogbWFrZUpzb25UYWJsZUpvaW5lZFBs YW4gLQorICoJICAgY3JlYXRlcyBhIEpzb25UYWJsZVBsYW5TcGVjIG5vZGUgdG8gcmVwcmVzZW50 IGpvaW4gYmV0d2VlbiB0aGUgZ2l2ZW4KKyAqCSAgIHBhaXIgb2YgcGxhbnMKKyAqLworTm9kZSAq CittYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKc29uVGFibGVQbGFuSm9pblR5cGUgdHlwZSwgTm9k ZSAqcGxhbjEsIE5vZGUgKnBsYW4yLAorCQkJCQkJaW50IGxvY2F0aW9uKQoreworCUpzb25UYWJs ZVBsYW5TcGVjICpuID0gbWFrZU5vZGUoSnNvblRhYmxlUGxhblNwZWMpOworCisJbi0+cGxhbl90 eXBlID0gSlNUUF9KT0lORUQ7CisJbi0+am9pbl90eXBlID0gdHlwZTsKKwluLT5wbGFuMSA9IGNh c3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCBwbGFuMSk7CisJbi0+cGxhbjIgPSBjYXN0Tm9kZShK c29uVGFibGVQbGFuU3BlYywgcGxhbjIpOworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwly ZXR1cm4gKE5vZGUgKikgbjsKK30KKwogLyoKICAqIG1ha2VKc29uS2V5VmFsdWUgLQogICoJICBj cmVhdGVzIGEgSnNvbktleVZhbHVlIG5vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNGEzZDk2 YjI5OC4uZDhjMTNlNzQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTI3MDAsNiArMjcwMCwx MCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJu IHRydWU7CiAJCQkJaWYgKFdBTEsodGYtPmNvbGRlZmV4cHJzKSkKIAkJCQkJcmV0dXJuIHRydWU7 CisJCQkJaWYgKFdBTEsodGYtPmNvbHZhbGV4cHJzKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJ aWYgKFdBTEsodGYtPnBhc3Npbmd2YWxleHBycykpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQog CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC0zNzcwLDYgKzM3NzQsOCBAQCBleHByZXNzaW9uX3Ry ZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJTVVUQVRFKG5ld25vZGUtPnJvd2V4cHIs IHRmLT5yb3dleHByLCBOb2RlICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xleHBycywgdGYt PmNvbGV4cHJzLCBMaXN0ICopOwogCQkJCU1VVEFURShuZXdub2RlLT5jb2xkZWZleHBycywgdGYt PmNvbGRlZmV4cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5jb2x2YWxleHBycywg dGYtPmNvbHZhbGV4cHJzLCBMaXN0ICopOworCQkJCU1VVEFURShuZXdub2RlLT5wYXNzaW5ndmFs ZXhwcnMsIHRmLT5wYXNzaW5ndmFsZXhwcnMsIExpc3QgKik7CiAJCQkJcmV0dXJuIChOb2RlICop IG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKQEAgLTQxOTUsNiArNDIwMSwzOCBAQCByYXdfZXhw cmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwog CQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uVGFibGU6CisJCQl7CisJCQkJSnNvblRhYmxl ICAqanQgPSAoSnNvblRhYmxlICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdC0+Y29udGV4dF9p dGVtKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhdGhzcGVjKSkKKwkJ CQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanQtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhqdC0+Y29sdW1ucykpCisJCQkJCXJldHVybiB0cnVlOworCQkJ CWlmIChXQUxLKGp0LT5vbl9lcnJvcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJl YWs7CisJCWNhc2UgVF9Kc29uVGFibGVDb2x1bW46CisJCQl7CisJCQkJSnNvblRhYmxlQ29sdW1u ICpqdGMgPSAoSnNvblRhYmxlQ29sdW1uICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqdGMtPnR5 cGVOYW1lKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoanRjLT5vbl9lbXB0eSkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGp0Yy0+b25fZXJyb3IpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQgJiYgV0FMSyhq dGMtPmNvbHVtbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNl IFRfSnNvblRhYmxlUGF0aFNwZWM6CisJCQlyZXR1cm4gV0FMSygoKEpzb25UYWJsZVBhdGhTcGVj ICopIG5vZGUpLT5zdHJpbmcpOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygo KE51bGxUZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9wYXJzZXIvTWFr ZWZpbGUKaW5kZXggNDAxYzE2Njg2Yy4uMzE2MmEwMWYzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQpAQCAt MjMsNiArMjMsNyBAQCBPQkpTID0gXAogCXBhcnNlX2Vuci5vIFwKIAlwYXJzZV9leHByLm8gXAog CXBhcnNlX2Z1bmMubyBcCisJcGFyc2VfanNvbnRhYmxlLm8gXAogCXBhcnNlX21lcmdlLm8gXAog CXBhcnNlX25vZGUubyBcCiAJcGFyc2Vfb3Blci5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGU5MDBlZGZi OGEuLjc5MTVlODI3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTcwLDcgKzE3MCw2IEBAIHN0YXRpYyB2 b2lkIHVwZGF0ZVJhd1N0bXRFbmQoUmF3U3RtdCAqcnMsIGludCBlbmRfbG9jYXRpb24pOwogc3Rh dGljIE5vZGUgKm1ha2VDb2x1bW5SZWYoY2hhciAqY29sbmFtZSwgTGlzdCAqaW5kaXJlY3Rpb24s CiAJCQkJCQkgICBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRp YyBOb2RlICptYWtlVHlwZUNhc3QoTm9kZSAqYXJnLCBUeXBlTmFtZSAqdHlwZW5hbWUsIGludCBs b2NhdGlvbik7Ci1zdGF0aWMgTm9kZSAqbWFrZVN0cmluZ0NvbnN0KGNoYXIgKnN0ciwgaW50IGxv Y2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlU3RyaW5nQ29uc3RDYXN0KGNoYXIgKnN0ciwgaW50 IGxvY2F0aW9uLCBUeXBlTmFtZSAqdHlwZW5hbWUpOwogc3RhdGljIE5vZGUgKm1ha2VJbnRDb25z dChpbnQgdmFsLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VGbG9hdENvbnN0KGNo YXIgKnN0ciwgaW50IGxvY2F0aW9uKTsKQEAgLTY1NSwxNSArNjU0LDMxIEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAJCQkJanNvbl9hcmd1bWVudAogCQkJCWpzb25fYmVoYXZpb3IKIAkJCQlq c29uX29uX2Vycm9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlCisJCQkJanNvbl90YWJsZV9j b2x1bW5fZGVmaW5pdGlvbgorCQkJCWpzb25fdGFibGVfY29sdW1uX3BhdGhfY2xhdXNlX29wdAor CQkJCWpzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0CisJCQkJanNvbl90YWJsZV9wbGFuCisJCQkJ anNvbl90YWJsZV9wbGFuX3NpbXBsZQorCQkJCWpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJCWpz b25fdGFibGVfcGxhbl9pbm5lcgorCQkJCWpzb25fdGFibGVfcGxhbl91bmlvbgorCQkJCWpzb25f dGFibGVfcGxhbl9jcm9zcworCQkJCWpzb25fdGFibGVfcGxhbl9wcmltYXJ5CiAldHlwZSA8bGlz dD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9leHByX2xpc3QKIAkJ CQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0CiAJCQkJanNvbl9hcmd1 bWVudHMKIAkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKIAkJCQlqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorCQkJCWpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdAorJXR5cGUgPHN0 cj4JCWpzb25fdGFibGVfcGF0aF9uYW1lX29wdAogJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3Jf dHlwZQogCQkJCWpzb25fcHJlZGljYXRlX3R5cGVfY29uc3RyYWludAogCQkJCWpzb25fcXVvdGVz X2NsYXVzZV9vcHQKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9jaG9pY2VzCisJCQkJanNv bl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJfb3V0ZXIKKwkJCQlqc29uX3RhYmxlX2RlZmF1bHRf cGxhbl91bmlvbl9jcm9zcwogCQkJCWpzb25fd3JhcHBlcl9iZWhhdmlvcgogJXR5cGUgPGJvb2xl YW4+CWpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKIAkJCQlqc29uX29iamVjdF9j b25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTczMyw3ICs3NDgsNyBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogCUlOVEVSU0VDVCBJTlRFUlZBTCBJTlRPIElOVk9LRVIgSVMgSVNOVUxM IElTT0xBVElPTgogCiAJSk9JTiBKU09OIEpTT05fQVJSQVkgSlNPTl9BUlJBWUFHRyBKU09OX0VY SVNUUyBKU09OX09CSkVDVCBKU09OX09CSkVDVEFHRwotCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIg SlNPTl9TRVJJQUxJWkUgSlNPTl9WQUxVRQorCUpTT05fUVVFUlkgSlNPTl9TQ0FMQVIgSlNPTl9T RVJJQUxJWkUgSlNPTl9UQUJMRSBKU09OX1ZBTFVFCiAKIAlLRUVQIEtFWSBLRVlTCiAKQEAgLTc0 NCw4ICs3NTksOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU1BUFBJTkcgTUFUQ0ggTUFU Q0hFRCBNQVRFUklBTElaRUQgTUFYVkFMVUUgTUVSR0UgTUVUSE9ECiAJTUlOVVRFX1AgTUlOVkFM VUUgTU9ERSBNT05USF9QIE1PVkUKIAotCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5D SEFSIE5FVyBORVhUIE5GQyBORkQgTkZLQyBORktEIE5PIE5PTkUKLQlOT1JNQUxJWkUgTk9STUFM SVpFRAorCU5BTUVfUCBOQU1FUyBOQVRJT05BTCBOQVRVUkFMIE5DSEFSIE5FU1RFRCBORVcgTkVY VCBORkMgTkZEIE5GS0MgTkZLRCBOTworCU5PTkUgTk9STUFMSVpFIE5PUk1BTElaRUQKIAlOT1Qg Tk9USElORyBOT1RJRlkgTk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVN RVJJQwogCkBAIC03NTMsOCArNzY4LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPUkRF UiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRFUl9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZ IE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAotCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFS VElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAotCVBMQUNJTkcgUExBTlMgUE9MSUNZCisJ UEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NX T1JEIFBBVEgKKwlQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9TSVRJT04gUFJFQ0VESU5H IFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQUklW SUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNBVElP TgogCkBAIC04NzIsMTAgKzg4NywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogdGhl IHNhbWUgcHJlY2VkZW5jZSBhcyBJREVOVC4gIFRoaXMgYWxsb3dzIHJlc29sdmluZyBjb25mbGlj dHMgaW4gdGhlCiAgKiBqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQgYW5kIGpzb25fa2V5 X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKICAqIHByb2R1Y3Rpb25zIChzZWUgY29tbWVudHMg dGhlcmUpLgorICoKKyAqIExpa2UgdGhlIFVOQk9VTkRFRCBQUkVDRURJTkcvRk9MTE9XSU5HIGNh c2UsIE5FU1RFRCBpcyBhc3NpZ25lZCBhIGxvd2VyCisgKiBwcmVjZWRlbmNlIHRoYW4gUEFUSCB0 byBmaXggYW1iaWd1aXR5IGluIHRoZSBqc29uX3RhYmxlIHByb2R1Y3Rpb24uCiAgKi8KLSVub25h c3NvYwlVTkJPVU5ERUQJCS8qIGlkZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMg SURFTlQgKi8KKyVub25hc3NvYwlVTkJPVU5ERUQgTkVTVEVEIC8qIGlkZWFsbHkgd291bGQgaGF2 ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3NvYwlJREVOVCBQQVJUSVRJT04g UkFOR0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lORyBDVUJFIFJPTExVUAotCQkJU0VU IEtFWVMgT0JKRUNUX1AgU0NBTEFSIFZBTFVFX1AgV0lUSCBXSVRIT1VUCisJCQlTRVQgS0VZUyBP QkpFQ1RfUCBTQ0FMQVIgVkFMVUVfUCBXSVRIIFdJVEhPVVQgUEFUSAogJWxlZnQJCU9wIE9QRVJB VE9SCQkvKiBtdWx0aS1jaGFyYWN0ZXIgb3BzIGFuZCB1c2VyLWRlZmluZWQgb3BlcmF0b3JzICov CiAlbGVmdAkJJysnICctJwogJWxlZnQJCScqJyAnLycgJyUnCkBAIC04OTYsNyArOTE0LDYgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqIGxlZnQtYXNzb2NpYXRpdml0eSBhbW9uZyB0aGUg Sk9JTiBydWxlcyB0aGVtc2VsdmVzLgogICovCiAlbGVmdAkJSk9JTiBDUk9TUyBMRUZUIEZVTEwg UklHSFQgSU5ORVJfUCBOQVRVUkFMCi0KICUlCiAKIC8qCkBAIC0xMzQ0NSw2ICsxMzQ2MiwyMSBA QCB0YWJsZV9yZWY6CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZQogCQkJCQkkMi0+YWxp YXMgPSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJCQl9CisJCQl8IGpzb25fdGFibGUg b3B0X2FsaWFzX2NsYXVzZQorCQkJCXsKKwkJCQkJSnNvblRhYmxlICAqanQgPSBjYXN0Tm9kZShK c29uVGFibGUsICQxKTsKKworCQkJCQlqdC0+YWxpYXMgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAq KSBqdDsKKwkJCQl9CisJCQl8IExBVEVSQUxfUCBqc29uX3RhYmxlIG9wdF9hbGlhc19jbGF1c2UK KwkJCQl7CisJCQkJCUpzb25UYWJsZSAgKmp0ID0gY2FzdE5vZGUoSnNvblRhYmxlLCAkMik7CisK KwkJCQkJanQtPmFsaWFzID0gJDM7CisJCQkJCWp0LT5sYXRlcmFsID0gdHJ1ZTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBqdDsKKwkJCQl9CiAJCTsKIAogCkBAIC0xNDAxMiw2ICsxNDA0NCw4IEBAIHht bHRhYmxlX2NvbHVtbl9vcHRpb25fZWw6CiAJCQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3Rf bnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFuKHRydWUpLCBAMSk7IH0KIAkJCXwgTlVMTF9QCiAJ CQkJeyAkJCA9IG1ha2VEZWZFbGVtKCJpc19ub3RfbnVsbCIsIChOb2RlICopIG1ha2VCb29sZWFu KGZhbHNlKSwgQDEpOyB9CisJCQl8IFBBVEggYl9leHByCisJCQkJeyAkJCA9IG1ha2VEZWZFbGVt KCJwYXRoIiwgJDIsIEAxKTsgfQogCQk7CiAKIHhtbF9uYW1lc3BhY2VfbGlzdDoKQEAgLTE0MDQw LDYgKzE0MDc0LDIzMyBAQCB4bWxfbmFtZXNwYWNlX2VsOgogCQkJCX0KIAkJOwogCitqc29uX3Rh YmxlOgorCQkJSlNPTl9UQUJMRSAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBq c29uX3RhYmxlX3BhdGhfbmFtZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJ CUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQlq c29uX3RhYmxlX3BsYW5fY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xhdXNlX29wdAor CQkJJyknCisJCQkJeworCQkJCQlKc29uVGFibGUgKm4gPSBtYWtlTm9kZShKc29uVGFibGUpOwor CQkJCQljaGFyCSAgKnBhdGhzdHJpbmc7CisKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25W YWx1ZUV4cHIgKikgJDM7CisJCQkJCWlmICghSXNBKCQ1LCBBX0NvbnN0KSB8fAorCQkJCQkJY2Fz dE5vZGUoQV9Db25zdCwgJDUpLT52YWwubm9kZS50eXBlICE9IFRfU3RyaW5nKQorCQkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCQkJCWVycm1zZygib25seSBzdHJpbmcgY29uc3RhbnRzIGFyZSBzdXBwb3J0ZWQg aW4gSlNPTl9UQUJMRSIKKwkJCQkJCQkJCSAgICIgcGF0aCBzcGVjaWZpY2F0aW9uIiksCisJCQkJ CQkJCXBhcnNlcl9lcnJwb3NpdGlvbihANSkpOworCQkJCQlwYXRoc3RyaW5nID0gY2FzdE5vZGUo QV9Db25zdCwgJDUpLT52YWwuc3ZhbC5zdmFsOworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFi bGVQYXRoU3BlYyAqKQorCQkJCQkJbWFrZUpzb25UYWJsZVBhdGhTcGVjKHBhdGhzdHJpbmcsICQ2 LCBANSwgQDYpOworCQkJCQluLT5wYXNzaW5nID0gJDc7CisJCQkJCW4tPmNvbHVtbnMgPSAkMTA7 CisJCQkJCW4tPnBsYW5zcGVjID0gKEpzb25UYWJsZVBsYW5TcGVjICopICQxMjsKKwkJCQkJbi0+ b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopICQxMzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitqc29uX3RhYmxlX3BhdGhfbmFt ZV9vcHQ6CisJCQlBUyBuYW1lCQkJeyAkJCA9ICQyOyB9CisJCQl8IC8qIGVtcHR5ICovCXsgJCQg PSBOVUxMOyB9CisJCTsKKworanNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0OgorCQkJ anNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbgorCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsg fQorCQkJfCBqc29uX3RhYmxlX2NvbHVtbl9kZWZpbml0aW9uX2xpc3QgJywnIGpzb25fdGFibGVf Y29sdW1uX2RlZmluaXRpb24KKwkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKwor anNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbjoKKwkJCUNvbElkIEZPUiBPUkRJTkFMSVRZCisJ CQkJeworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4p OworCisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRk9SX09SRElOQUxJVFk7CisJCQkJCW4tPm5hbWUg PSAkMTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJ CX0KKwkJCXwgQ29sSWQgVHlwZW5hbWUKKwkJCQlqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVz ZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlqc29uX3F1b3Rlc19jbGF1c2Vf b3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJeworCQkJCQlKc29uVGFibGVD b2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOworCisJCQkJCW4tPmNvbHR5cGUg PSBKVENfUkVHVUxBUjsKKwkJCQkJbi0+bmFtZSA9ICQxOworCQkJCQluLT50eXBlTmFtZSA9ICQy OworCQkJCQluLT5mb3JtYXQgPSBtYWtlSnNvbkZvcm1hdChKU19GT1JNQVRfREVGQVVMVCwgSlNf RU5DX0RFRkFVTFQsIC0xKTsKKwkJCQkJbi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMg KikgJDM7CisJCQkJCW4tPndyYXBwZXIgPSAkNDsgLyogZGlzYWxsb3dlZCBkdXJpbmcgcGFyc2Ut YW5hbHlzaXMhICovCisJCQkJCW4tPnF1b3RlcyA9ICQ1OyAvKiBkaXNhbGxvd2VkIGR1cmluZyBw YXJzZS1hbmFseXNpcyEgKi8KKwkJCQkJbi0+b25fZW1wdHkgPSAoSnNvbkJlaGF2aW9yICopIGxp bml0aWFsKCQ2KTsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJlaGF2aW9yICopIGxzZWNvbmQo JDYpOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJ fQorCQkJfCBDb2xJZCBUeXBlbmFtZSBqc29uX2Zvcm1hdF9jbGF1c2UKKwkJCQlqc29uX3RhYmxl X2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX3dyYXBwZXJfYmVoYXZpb3IKKwkJCQlq c29uX3F1b3Rlc19jbGF1c2Vfb3B0CisJCQkJanNvbl9iZWhhdmlvcl9jbGF1c2Vfb3B0CisJCQkJ eworCQkJCQlKc29uVGFibGVDb2x1bW4gKm4gPSBtYWtlTm9kZShKc29uVGFibGVDb2x1bW4pOwor CisJCQkJCW4tPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCQkJCQluLT5uYW1lID0gJDE7CisJ CQkJCW4tPnR5cGVOYW1lID0gJDI7CisJCQkJCW4tPmZvcm1hdCA9IChKc29uRm9ybWF0ICopICQz OworCQkJCQluLT5wYXRoc3BlYyA9IChKc29uVGFibGVQYXRoU3BlYyAqKSAkNDsKKwkJCQkJbi0+ d3JhcHBlciA9ICQ1OworCQkJCQluLT5xdW90ZXMgPSAkNjsKKwkJCQkJbi0+b25fZW1wdHkgPSAo SnNvbkJlaGF2aW9yICopIGxpbml0aWFsKCQ3KTsKKwkJCQkJbi0+b25fZXJyb3IgPSAoSnNvbkJl aGF2aW9yICopIGxzZWNvbmQoJDcpOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9 IChOb2RlICopIG47CisJCQkJfQorCQkJfCBDb2xJZCBUeXBlbmFtZQorCQkJCUVYSVNUUyBqc29u X3RhYmxlX2NvbHVtbl9wYXRoX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9v cHQKKwkJCQl7CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNv bHVtbik7CisKKwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19FWElTVFM7CisJCQkJCW4tPm5hbWUgPSAk MTsKKwkJCQkJbi0+dHlwZU5hbWUgPSAkMjsKKwkJCQkJbi0+Zm9ybWF0ID0gbWFrZUpzb25Gb3Jt YXQoSlNfRk9STUFUX0RFRkFVTFQsIEpTX0VOQ19ERUZBVUxULCAtMSk7CisJCQkJCW4tPndyYXBw ZXIgPSBKU1dfTk9ORTsKKwkJCQkJbi0+cXVvdGVzID0gSlNfUVVPVEVTX1VOU1BFQzsKKwkJCQkJ bi0+cGF0aHNwZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikgJDQ7CisJCQkJCW4tPm9uX2VtcHR5 ID0gKEpzb25CZWhhdmlvciAqKSBsaW5pdGlhbCgkNSk7CisJCQkJCW4tPm9uX2Vycm9yID0gKEpz b25CZWhhdmlvciAqKSBsc2Vjb25kKCQ1KTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJ JCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdAorCQkJ CUNPTFVNTlMgJygnIGpzb25fdGFibGVfY29sdW1uX2RlZmluaXRpb25fbGlzdCAnKScKKwkJCQl7 CisJCQkJCUpzb25UYWJsZUNvbHVtbiAqbiA9IG1ha2VOb2RlKEpzb25UYWJsZUNvbHVtbik7CisK KwkJCQkJbi0+Y29sdHlwZSA9IEpUQ19ORVNURUQ7CisJCQkJCW4tPnBhdGhzcGVjID0gKEpzb25U YWJsZVBhdGhTcGVjICopCisJCQkJCQltYWtlSnNvblRhYmxlUGF0aFNwZWMoJDMsIE5VTEwsIEAz LCAtMSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkNjsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJ CQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgTkVTVEVEIHBhdGhfb3B0IFNjb25zdCBB UyBuYW1lCisJCQkJQ09MVU1OUyAnKCcganNvbl90YWJsZV9jb2x1bW5fZGVmaW5pdGlvbl9saXN0 ICcpJworCQkJCXsKKwkJCQkJSnNvblRhYmxlQ29sdW1uICpuID0gbWFrZU5vZGUoSnNvblRhYmxl Q29sdW1uKTsKKworCQkJCQluLT5jb2x0eXBlID0gSlRDX05FU1RFRDsKKwkJCQkJbi0+cGF0aHNw ZWMgPSAoSnNvblRhYmxlUGF0aFNwZWMgKikKKwkJCQkJCW1ha2VKc29uVGFibGVQYXRoU3BlYygk MywgJDUsIEAzLCBANSk7CisJCQkJCW4tPmNvbHVtbnMgPSAkODsKKwkJCQkJbi0+bG9jYXRpb24g PSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCitwYXRoX29wdDoKKwkJ CVBBVEgKKwkJCXwgLyogRU1QVFkgKi8KKwkJOworCitqc29uX3RhYmxlX2NvbHVtbl9wYXRoX2Ns YXVzZV9vcHQ6CisJCQlQQVRIIFNjb25zdAorCQkJCXsgJCQgPSBtYWtlSnNvblRhYmxlUGF0aFNw ZWMoJDIsIE5VTEwsIEAyLCAtMSk7IH0KKwkJCXwgLyogRU1QVFkgKi8KKwkJCQl7ICQkID0gTlVM TDsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jbGF1c2Vfb3B0OgorCQkJUExBTiAnKCcganNv bl90YWJsZV9wbGFuICcpJworCQkJCXsgJCQgPSAkMzsgfQorCQkJfCBQTEFOIERFRkFVTFQgJygn IGpzb25fdGFibGVfZGVmYXVsdF9wbGFuX2Nob2ljZXMgJyknCisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVEZWZhdWx0UGxhbigkNCwgQDEpOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9 IE5VTEw7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW46CisJCQlqc29uX3RhYmxlX3BsYW5fc2lt cGxlCisJCQl8IGpzb25fdGFibGVfcGxhbl9vdXRlcgorCQkJfCBqc29uX3RhYmxlX3BsYW5faW5u ZXIKKwkJCXwganNvbl90YWJsZV9wbGFuX3VuaW9uCisJCQl8IGpzb25fdGFibGVfcGxhbl9jcm9z cworCQk7CisKK2pzb25fdGFibGVfcGxhbl9zaW1wbGU6CisJCQluYW1lCisJCQkJeyAkJCA9IG1h a2VKc29uVGFibGVTaW1wbGVQbGFuKCQxLCBAMSk7IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5f b3V0ZXI6CisJCQlqc29uX3RhYmxlX3BsYW5fc2ltcGxlIE9VVEVSX1AganNvbl90YWJsZV9wbGFu X3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX09V VEVSLCAkMSwgJDMsIEAxKTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9pbm5lcjoKKwkJCWpz b25fdGFibGVfcGxhbl9zaW1wbGUgSU5ORVJfUCBqc29uX3RhYmxlX3BsYW5fcHJpbWFyeQorCQkJ CXsgJCQgPSBtYWtlSnNvblRhYmxlSm9pbmVkUGxhbihKU1RQX0pPSU5fSU5ORVIsICQxLCAkMywg QDEpOyB9CisJCTsKKworanNvbl90YWJsZV9wbGFuX3VuaW9uOgorCQkJanNvbl90YWJsZV9wbGFu X3ByaW1hcnkgVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7ICQkID0gbWFrZUpz b25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAxKTsgfQorCQkJfCBq c29uX3RhYmxlX3BsYW5fdW5pb24gVU5JT04ganNvbl90YWJsZV9wbGFuX3ByaW1hcnkKKwkJCQl7 ICQkID0gbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSlNUUF9KT0lOX1VOSU9OLCAkMSwgJDMsIEAx KTsgfQorCQk7CisKK2pzb25fdGFibGVfcGxhbl9jcm9zczoKKwkJCWpzb25fdGFibGVfcGxhbl9w cmltYXJ5IENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAkJCA9IG1ha2VKc29u VGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7IH0KKwkJCXwganNv bl90YWJsZV9wbGFuX2Nyb3NzIENST1NTIGpzb25fdGFibGVfcGxhbl9wcmltYXJ5CisJCQkJeyAk JCA9IG1ha2VKc29uVGFibGVKb2luZWRQbGFuKEpTVFBfSk9JTl9DUk9TUywgJDEsICQzLCBAMSk7 IH0KKwkJOworCitqc29uX3RhYmxlX3BsYW5fcHJpbWFyeToKKwkJCWpzb25fdGFibGVfcGxhbl9z aW1wbGUKKwkJCQl7ICQkID0gJDE7IH0KKwkJCXwgJygnIGpzb25fdGFibGVfcGxhbiAnKScKKwkJ CQl7CisJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW5TcGVjLCAkMiktPmxvY2F0aW9uID0gQDE7 CisJCQkJCSQkID0gJDI7CisJCQkJfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9wbGFuX2No b2ljZXM6CisJCQlqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlcgorCQkJCXsgJCQg PSAkMSB8IEpTVFBfSk9JTl9VTklPTjsgfQorCQkJfCBqc29uX3RhYmxlX2RlZmF1bHRfcGxhbl91 bmlvbl9jcm9zcworCQkJCXsgJCQgPSAkMSB8IEpTVFBfSk9JTl9PVVRFUjsgfQorCQkJfCBqc29u X3RhYmxlX2RlZmF1bHRfcGxhbl9pbm5lcl9vdXRlciAnLCcganNvbl90YWJsZV9kZWZhdWx0X3Bs YW5fdW5pb25fY3Jvc3MKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQkJfCBqc29uX3RhYmxlX2Rl ZmF1bHRfcGxhbl91bmlvbl9jcm9zcyAnLCcganNvbl90YWJsZV9kZWZhdWx0X3BsYW5faW5uZXJf b3V0ZXIKKwkJCQl7ICQkID0gJDEgfCAkMzsgfQorCQk7CisKK2pzb25fdGFibGVfZGVmYXVsdF9w bGFuX2lubmVyX291dGVyOgorCQkJSU5ORVJfUAkJCQkJCXsgJCQgPSBKU1RQX0pPSU5fSU5ORVI7 IH0KKwkJCXwgT1VURVJfUAkJCQkJeyAkJCA9IEpTVFBfSk9JTl9PVVRFUjsgfQorCQk7CisKK2pz b25fdGFibGVfZGVmYXVsdF9wbGFuX3VuaW9uX2Nyb3NzOgorCQkJVU5JT04JCQkJCQl7ICQkID0g SlNUUF9KT0lOX1VOSU9OOyB9CisJCQl8IENST1NTCQkJCQkJeyAkJCA9IEpTVFBfSk9JTl9DUk9T UzsgfQorCQk7CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCVR5cGUgc3ludGF4CkBA IC0xNzQ0MSw2ICsxNzcwMiw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgTU9WRQogCQkJ fCBOQU1FX1AKIAkJCXwgTkFNRVMKKwkJCXwgTkVTVEVECiAJCQl8IE5FVwogCQkJfCBORVhUCiAJ CQl8IE5GQwpAQCAtMTc0NzUsNiArMTc3MzcsOCBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8 IFBBUlRJVElPTgogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECisJCQl8IFBBVEgKKwkJCXwg UExBTgogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKIAkJCXwgUFJFQ0VESU5HCkBAIC0xNzYzOSw2 ICsxNzkwMyw3IEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNP Tl9TQ0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9UQUJMRQogCQkJfCBKU09O X1ZBTFVFCiAJCQl8IExFQVNUCiAJCQl8IE5BVElPTkFMCkBAIC0xODAwNyw2ICsxODI3Miw3IEBA IGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgSlNPTl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgog CQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09OX1RBQkxFCiAJCQl8IEpTT05fVkFMVUUKIAkJ CXwgS0VFUAogCQkJfCBLRVkKQEAgLTE4MDQ2LDYgKzE4MzEyLDcgQEAgYmFyZV9sYWJlbF9rZXl3 b3JkOgogCQkJfCBOQVRJT05BTAogCQkJfCBOQVRVUkFMCiAJCQl8IE5DSEFSCisJCQl8IE5FU1RF RAogCQkJfCBORVcKIAkJCXwgTkVYVAogCQkJfCBORkMKQEAgLTE4MDkwLDcgKzE4MzU3LDkgQEAg YmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04KIAkJCXwgUEFTU0lORwogCQkJfCBQ QVNTV09SRAorCQkJfCBQQVRICiAJCQl8IFBMQUNJTkcKKwkJCXwgUExBTgogCQkJfCBQTEFOUwog CQkJfCBQT0xJQ1kKIAkJCXwgUE9TSVRJT04KQEAgLTE4MzU4LDE4ICsxODYyNyw2IEBAIG1ha2VU eXBlQ2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKQogCXJl dHVybiAoTm9kZSAqKSBuOwogfQogCi1zdGF0aWMgTm9kZSAqCi1tYWtlU3RyaW5nQ29uc3QoY2hh ciAqc3RyLCBpbnQgbG9jYXRpb24pCi17Ci0JQV9Db25zdAkgICAqbiA9IG1ha2VOb2RlKEFfQ29u c3QpOwotCi0Jbi0+dmFsLnN2YWwudHlwZSA9IFRfU3RyaW5nOwotCW4tPnZhbC5zdmFsLnN2YWwg PSBzdHI7Ci0Jbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsKLQotICAgcmV0dXJuIChOb2RlICopIG47 Ci19Ci0KIHN0YXRpYyBOb2RlICoKIG1ha2VTdHJpbmdDb25zdENhc3QoY2hhciAqc3RyLCBpbnQg bG9jYXRpb24sIFR5cGVOYW1lICp0eXBlbmFtZSkKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAppbmRl eCA4ZTgyOTU2NDBiLi41NzNkNzBiM2QxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv bWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL21lc29uLmJ1aWxkCkBAIC0xMCw2 ICsxMCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3BhcnNlX2Vuci5jJywKICAg J3BhcnNlX2V4cHIuYycsCiAgICdwYXJzZV9mdW5jLmMnLAorICAncGFyc2VfanNvbnRhYmxlLmMn LAogICAncGFyc2VfbWVyZ2UuYycsCiAgICdwYXJzZV9ub2RlLmMnLAogICAncGFyc2Vfb3Blci5j JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCA0YjUwMjc4ZmQwLi4zOGUyN2U4NDcy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCkBAIC02OTcsNyArNjk3LDExIEBAIHRyYW5z Zm9ybVJhbmdlVGFibGVGdW5jKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VUYWJsZUZ1bmMgKnJ0 ZikKIAljaGFyCSAgKipuYW1lczsKIAlpbnQJCQljb2xubzsKIAotCS8qIEN1cnJlbnRseSBvbmx5 IFhNTFRBQkxFIGlzIHN1cHBvcnRlZCAqLworCS8qCisJICogQ3VycmVudGx5IHdlIG9ubHkgc3Vw cG9ydCBYTUxUQUJMRSBoZXJlLiAgU2VlIHRyYW5zZm9ybUpzb25UYWJsZSgpIGZvcgorCSAqIEpT T05fVEFCTEUgc3VwcG9ydC4KKwkgKi8KKwl0Zi0+ZnVuY3R5cGUgPSBURlRfWE1MVEFCTEU7CiAJ Y29uc3RydWN0TmFtZSA9ICJYTUxUQUJMRSI7CiAJZG9jVHlwZSA9IFhNTE9JRDsKIApAQCAtMTEw NCwxMyArMTEwOCwxNyBAQCB0cmFuc2Zvcm1Gcm9tQ2xhdXNlSXRlbShQYXJzZVN0YXRlICpwc3Rh dGUsIE5vZGUgKm4sCiAJCXJ0ci0+cnRpbmRleCA9IG5zaXRlbS0+cF9ydGluZGV4OwogCQlyZXR1 cm4gKE5vZGUgKikgcnRyOwogCX0KLQllbHNlIGlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQor CWVsc2UgaWYgKElzQShuLCBSYW5nZVRhYmxlRnVuYykgfHwgSXNBKG4sIEpzb25UYWJsZSkpCiAJ ewogCQkvKiB0YWJsZSBmdW5jdGlvbiBpcyBsaWtlIGEgcGxhaW4gcmVsYXRpb24gKi8KIAkJUmFu Z2VUYmxSZWYgKnJ0cjsKIAkJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW07CiAKLQkJbnNpdGVt ID0gdHJhbnNmb3JtUmFuZ2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7 CisJCWlmIChJc0EobiwgUmFuZ2VUYWJsZUZ1bmMpKQorCQkJbnNpdGVtID0gdHJhbnNmb3JtUmFu Z2VUYWJsZUZ1bmMocHN0YXRlLCAoUmFuZ2VUYWJsZUZ1bmMgKikgbik7CisJCWVsc2UKKwkJCW5z aXRlbSA9IHRyYW5zZm9ybUpzb25UYWJsZShwc3RhdGUsIChKc29uVGFibGUgKikgbik7CisKIAkJ KnRvcF9uc2l0ZW0gPSBuc2l0ZW07CiAJCSpuYW1lc3BhY2UgPSBsaXN0X21ha2UxKG5zaXRlbSk7 CiAJCXJ0ciA9IG1ha2VOb2RlKFJhbmdlVGJsUmVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmlu ZGV4IDUzNDI2ZmFjNTMuLjY1NTdiMDdmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAt NDIxOSw3ICs0MjE5LDggQEAgdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBKc29uU2VyaWFsaXplRXhwciAqZXhwcikKIH0KIAogLyoKLSAqIFRyYW5zZm9ybSBK U09OX1ZBTFVFLCBKU09OX1FVRVJZLCBKU09OX0VYSVNUUyBmdW5jdGlvbnMgaW50byBhIEpzb25F eHByIG5vZGUuCisgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNPTl9RVUVSWSwgSlNPTl9FWElT VFMsIEpTT05fVEFCTEUgZnVuY3Rpb25zIGludG8KKyAqIGEgSnNvbkV4cHIgbm9kZS4KICAqLwog c3RhdGljIE5vZGUgKgogdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkZ1bmNFeHByICpmdW5jKQpAQCAtNDIzOCw2ICs0MjM5LDkgQEAgdHJhbnNmb3JtSnNvbkZ1 bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvbkZ1bmNFeHByICpmdW5jKQogCQljYXNlIEpT T05fVkFMVUVfT1A6CiAJCQlmdW5jX25hbWUgPSAiSlNPTl9WQUxVRSI7CiAJCQlicmVhazsKKwkJ Y2FzZSBKU09OX1RBQkxFX09QOgorCQkJZnVuY19uYW1lID0gIkpTT05fVEFCTEUiOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIgb3Ai KTsKIAkJCWJyZWFrOwpAQCAtNDI4Miw2ICs0Mjg2LDQyIEBAIHRyYW5zZm9ybUpzb25GdW5jRXhw cihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYykKIAkJCQlqc2V4cHItPnJl dHVybmluZy0+dHlwbW9kID0gLTE7CiAJCQl9CiAKKwkJCS8qIEpTT05fVEFCTEUoKSBDT0xVTU5T IGNhbiBzcGVjaWZ5IGEgbm9uLWJvb2xlYW4gdHlwZS4gKi8KKwkJCWlmIChqc2V4cHItPnJldHVy bmluZy0+dHlwaWQgIT0gQk9PTE9JRCkKKwkJCXsKKwkJCQlOb2RlCSAgICpjb2VyY2lvbl9leHBy OworCQkJCUNhc2VUZXN0RXhwciAqcGxhY2Vob2xkZXIgPSBtYWtlTm9kZShDYXNlVGVzdEV4cHIp OworCQkJCWludAkJCWxvY2F0aW9uID0gZXhwckxvY2F0aW9uKChOb2RlICopIGpzZXhwcik7CisK KwkJCQkvKgorCQkJCSAqIFdlIGFidXNlIENhc2VUZXN0RXhwciBoZXJlIGFzIHBsYWNlaG9sZGVy IHRvIHBhc3MgdGhlCisJCQkJICogcmVzdWx0IG9mIGV2YWx1YXRpbmcgSlNPTl9FWElTVFMgdG8g dGhlIGNvZXJjaW9uCisJCQkJICogZXhwcmVzc2lvbi4KKwkJCQkgKi8KKwkJCQlwbGFjZWhvbGRl ci0+dHlwZUlkID0gQk9PTE9JRDsKKwkJCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9IC0xOworCQkJ CXBsYWNlaG9sZGVyLT5jb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCisJCQkJY29lcmNpb25fZXhw ciA9CisJCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIChOb2RlICopIHBsYWNlaG9s ZGVyLCBCT09MT0lELAorCQkJCQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5cGlkLAorCQkJ CQkJCQkJCSAganNleHByLT5yZXR1cm5pbmctPnR5cG1vZCwKKwkJCQkJCQkJCQkgIENPRVJDSU9O X0VYUExJQ0lULAorCQkJCQkJCQkJCSAgQ09FUkNFX0lNUExJQ0lUX0NBU1QsCisJCQkJCQkJCQkJ ICBsb2NhdGlvbik7CisKKwkJCQlpZiAoY29lcmNpb25fZXhwciA9PSBOVUxMKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJ CQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJCQkJCQkJCQlmb3JtYXRf dHlwZV9iZShCT09MT0lEKSwKKwkJCQkJCQkJCWZvcm1hdF90eXBlX2JlKGpzZXhwci0+cmV0dXJu aW5nLT50eXBpZCkpLAorCQkJCQkJCSBwYXJzZXJfY29lcmNpb25fZXJycG9zaXRpb24ocHN0YXRl LCBsb2NhdGlvbiwgKE5vZGUgKikganNleHByKSkpOworCisJCQkJaWYgKGNvZXJjaW9uX2V4cHIg IT0gKE5vZGUgKikgcGxhY2Vob2xkZXIpCisJCQkJCWpzZXhwci0+cmVzdWx0X2NvZXJjaW9uID0g Y29lcmNpb25fZXhwcjsKKwkJCX0KKwogCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpz b25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAogCQkJCQkJCQkJCQkJCSBKU09OX0JF SEFWSU9SX0ZBTFNFLAogCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CkBAIC00MzU2 LDYgKzQzOTYsMTcgQEAgdHJhbnNmb3JtSnNvbkZ1bmNFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkZ1bmNFeHByICpmdW5jKQogCQkJCQkJCQkJCQkJCSBqc2V4cHItPnJldHVybmluZyk7CiAJ CQlicmVhazsKIAorCQljYXNlIEpTT05fVEFCTEVfT1A6CisJCQlpZiAoIU9pZElzVmFsaWQoanNl eHByLT5yZXR1cm5pbmctPnR5cGlkKSkKKwkJCXsKKwkJCQlqc2V4cHItPnJldHVybmluZy0+dHlw aWQgPSBleHByVHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKTsKKwkJCQlqc2V4cHItPnJldHVy bmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisJCQlqc2V4cHItPm9uX2Vycm9yID0gdHJhbnNmb3Jt SnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJCQkJCQkJCQkJIEpTT05f QkVIQVZJT1JfRU1QVFksCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKc29uRnVuY0V4cHIg b3AiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pz b250YWJsZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2pzb250YWJsZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE0YjQxZmI5ZTAKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfanNvbnRhYmxlLmMKQEAgLTAsMCArMSw3MTgg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX2pzb250YWJsZS5jCisgKgkgIHBh cnNpbmcgb2YgSlNPTl9UQUJMRQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0y MDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29w eXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEK KyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2pzb250YWJsZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbGxhdGlvbi5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5v ZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUg Im9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY2xhdXNlLmgi CisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NvbGxhdGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFy c2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgorI2luY2x1ZGUg InBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNs dWRlICJ1dGlscy9qc29uLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisKKy8qIENv bnRleHQgZm9yIEpTT05fVEFCTEUgdHJhbnNmb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEpz b25UYWJsZVBhcnNlQ29udGV4dAoreworCVBhcnNlU3RhdGUgKnBzdGF0ZTsJCQkvKiBwYXJzaW5n IHN0YXRlICovCisJSnNvblRhYmxlICAqdGFibGU7CQkJLyogdW50cmFuc2Zvcm1lZCBub2RlICov CisJVGFibGVGdW5jICAqdGFibGVmdW5jOwkJLyogdHJhbnNmb3JtZWQgbm9kZQkqLworCUxpc3QJ ICAgKnBhdGhOYW1lczsJCS8qIGxpc3Qgb2YgYWxsIHBhdGggYW5kIGNvbHVtbnMgbmFtZXMgKi8K KwlpbnQJCQlwYXRoTmFtZUlkOwkJLyogcGF0aCBuYW1lIGlkIGNvdW50ZXIgKi8KKwlPaWQJCQlj b250ZXh0SXRlbVR5cGlkOwkvKiB0eXBlIG9pZCBvZiBjb250ZXh0IGl0ZW0gKGpzb24vanNvbmIp ICovCit9CQkJSnNvblRhYmxlUGFyc2VDb250ZXh0OworCitzdGF0aWMgSnNvblRhYmxlUGxhbiAq dHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsCisJ CQkJCQkJCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqcGxhbnNwZWMsCisJCQkJCQkJCQkJCQlMaXN0 ICpjb2x1bW5zLAorCQkJCQkJCQkJCQkJSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhzcGVjKTsKKwor LyoKKyAqIFRyYW5zZm9ybSBKU09OX1RBQkxFIGNvbHVtbgorICogICAtIHJlZ3VsYXIgY29sdW1u IGludG8gSlNPTl9WQUxVRSgpCisgKiAgIC0gRk9STUFUIEpTT04gY29sdW1uIGludG8gSlNPTl9R VUVSWSgpCisgKiAgIC0gRVhJU1RTIGNvbHVtbiBpbnRvIEpTT05fRVhJU1RTKCkKKyAqLworc3Rh dGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ29sdW1uKEpzb25UYWJsZUNvbHVtbiAqanRj LCBOb2RlICpjb250ZXh0SXRlbUV4cHIsCisJCQkJCQkgTGlzdCAqcGFzc2luZ0FyZ3MsIGJvb2wg ZXJyb3JPbkVycm9yKQoreworCUpzb25GdW5jRXhwciAqamZleHByID0gbWFrZU5vZGUoSnNvbkZ1 bmNFeHByKTsKKwlOb2RlCSAgICpwYXRoc3BlYzsKKwlKc29uRm9ybWF0ICpkZWZhdWx0X2Zvcm1h dDsKKworCWlmIChqdGMtPmNvbHR5cGUgPT0gSlRDX1JFR1VMQVIpCisJCWpmZXhwci0+b3AgPSBK U09OX1ZBTFVFX09QOworCWVsc2UgaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfRVhJU1RTKQorCQlq ZmV4cHItPm9wID0gSlNPTl9FWElTVFNfT1A7CisJZWxzZQorCQlqZmV4cHItPm9wID0gSlNPTl9R VUVSWV9PUDsKKwlqZmV4cHItPm91dHB1dCA9IG1ha2VOb2RlKEpzb25PdXRwdXQpOworCWpmZXhw ci0+b25fZW1wdHkgPSBqdGMtPm9uX2VtcHR5OworCWpmZXhwci0+b25fZXJyb3IgPSBqdGMtPm9u X2Vycm9yOworCWlmIChqZmV4cHItPm9uX2Vycm9yID09IE5VTEwgJiYgZXJyb3JPbkVycm9yKQor CQlqZmV4cHItPm9uX2Vycm9yID0gbWFrZUpzb25CZWhhdmlvcihKU09OX0JFSEFWSU9SX0VSUk9S LCBOVUxMLAorCQkJCQkJCQkJCQlOVUxMLCAtMSk7CisJamZleHByLT5xdW90ZXMgPSBqdGMtPnF1 b3RlczsKKwlqZmV4cHItPndyYXBwZXIgPSBqdGMtPndyYXBwZXI7CisJamZleHByLT5sb2NhdGlv biA9IGp0Yy0+bG9jYXRpb247CisKKwlqZmV4cHItPm91dHB1dC0+dHlwZU5hbWUgPSBqdGMtPnR5 cGVOYW1lOworCWpmZXhwci0+b3V0cHV0LT5yZXR1cm5pbmcgPSBtYWtlTm9kZShKc29uUmV0dXJu aW5nKTsKKwlqZmV4cHItPm91dHB1dC0+cmV0dXJuaW5nLT5mb3JtYXQgPSBqdGMtPmZvcm1hdDsK KworCWRlZmF1bHRfZm9ybWF0ID0gbWFrZUpzb25Gb3JtYXQoSlNfRk9STUFUX0RFRkFVTFQsIEpT X0VOQ19ERUZBVUxULCAtMSk7CisKKwlpZiAoanRjLT5wYXRoc3BlYykKKwkJcGF0aHNwZWMgPSAo Tm9kZSAqKSBqdGMtPnBhdGhzcGVjLT5zdHJpbmc7CisJZWxzZQorCXsKKwkJLyogQ29uc3RydWN0 IGRlZmF1bHQgcGF0aCBhcyAnJC4iY29sdW1uX25hbWUiJyAqLworCQlTdHJpbmdJbmZvRGF0YSBw YXRoOworCisJCWluaXRTdHJpbmdJbmZvKCZwYXRoKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZwYXRoLCAiJC4iKTsKKwkJZXNjYXBlX2pzb24oJnBhdGgsIGp0Yy0+bmFtZSk7CisKKwkJ cGF0aHNwZWMgPSBtYWtlU3RyaW5nQ29uc3QocGF0aC5kYXRhLCAtMSk7CisJfQorCisJamZleHBy LT5jb250ZXh0X2l0ZW0gPQltYWtlSnNvblZhbHVlRXhwcigoRXhwciAqKSBjb250ZXh0SXRlbUV4 cHIsIE5VTEwsCisJCQkJCQkJCQkJCSAgZGVmYXVsdF9mb3JtYXQpOworCWpmZXhwci0+cGF0aHNw ZWMgPSBwYXRoc3BlYzsKKwlqZmV4cHItPnBhdGhuYW1lID0gTlVMTDsKKwlqZmV4cHItPnBhc3Np bmcgPSBwYXNzaW5nQXJnczsKKworCXJldHVybiAoTm9kZSAqKSBqZmV4cHI7Cit9CisKKy8qCisg KiBSZWdpc3RlciBhIGNvbHVtbi9wYXRoIG5hbWUgaW4gdGhlIHBhdGggbmFtZSBsaXN0LCBmbGFn Z2luZyBpZiB0aGUgbmFtZSBpcworICogYWxyZWFkeSB0YWtlbiBieSBhbm90aGVyIGNvbHVtbi9w YXRoLgorICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oSnNvblRhYmxl UGFyc2VDb250ZXh0ICogY3h0LCBjaGFyICpjb2xuYW1lLAorCQkJCQkJaW50IGxvY2F0aW9uKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgY3h0LT5wYXRoTmFtZXMpCisJewor CQlpZiAoc3RyY21wKGNvbG5hbWUsIChjb25zdCBjaGFyICopIGxmaXJzdChsYykpID09IDApCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0FMSUFTKSwK KwkJCQkJZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogJXMiLCBjb2xu YW1lKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBsb2NhdGlvbikpOwor CX0KKworCWN4dC0+cGF0aE5hbWVzID0gbGFwcGVuZChjeHQtPnBhdGhOYW1lcywgY29sbmFtZSk7 Cit9CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlckpzb25UYWJsZVBhdGgoSnNvblRhYmxlUGFyc2VD b250ZXh0ICogY3h0LCBjaGFyICpwYXRobmFtZSwKKwkJCQkJICBpbnQgbG9jYXRpb24pCit7CisJ TGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBjeHQtPnBhdGhOYW1lcykKKwl7CisJCWlm IChzdHJjbXAocGF0aG5hbWUsIChjb25zdCBjaGFyICopIGxmaXJzdChsYykpID09IDApCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0FMSUFTKSwKKwkJ CQkJZXJybXNnKCJkdXBsaWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6ICVzIiwgcGF0aG5hbWUp LAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGxvY2F0aW9uKSk7CisJfQor CisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVzLCBwYXRobmFtZSk7Cit9 CisKKy8qCisgKiBSZWN1cnNpdmVseSByZWdpc3RlciBhbGwgbmVzdGVkIGNvbHVtbiBuYW1lcyBp biB0aGUgc2hhcmVkIGNvbHVtbnMvcGF0aCBuYW1lCisgKiBsaXN0LgorICovCitzdGF0aWMgdm9p ZAorcmVnaXN0ZXJBbGxKc29uVGFibGVDb2x1bW5zQW5kUGF0aHMoSnNvblRhYmxlUGFyc2VDb250 ZXh0ICogY3h0LAorCQkJCQkJCQkJTGlzdCAqY29sdW1ucykKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFibGVDb2x1bW4gKmp0YyA9IGNh c3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisKKwkJaWYgKGp0Yy0+Y29sdHlw ZSA9PSBKVENfTkVTVEVEKQorCQl7CisJCQlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSkKKwkJCQly ZWdpc3Rlckpzb25UYWJsZVBhdGgoY3h0LCBqdGMtPnBhdGhzcGVjLT5uYW1lLAorCQkJCQkJCQkJ ICBqdGMtPnBhdGhzcGVjLT5uYW1lX2xvY2F0aW9uKTsKKworCQkJcmVnaXN0ZXJBbGxKc29uVGFi bGVDb2x1bW5zQW5kUGF0aHMoY3h0LCBqdGMtPmNvbHVtbnMpOworCQl9CisJCWVsc2UKKwkJewor CQkJcmVnaXN0ZXJKc29uVGFibGVDb2x1bW4oY3h0LCBqdGMtPm5hbWUsIGp0Yy0+bG9jYXRpb24p OworCQl9CisJfQorfQorCisvKiBHZW5lcmF0ZSBhIG5ldyB1bmlxdWUgSlNPTl9UQUJMRSBwYXRo IG5hbWUuICovCitzdGF0aWMgY2hhciAqCitnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKEpzb25U YWJsZVBhcnNlQ29udGV4dCAqIGN4dCkKK3sKKwljaGFyCQluYW1lYnVmWzMyXTsKKwljaGFyCSAg ICpuYW1lID0gbmFtZWJ1ZjsKKworCXNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwg Impzb25fdGFibGVfcGF0aF8lZCIsCisJCQkgY3h0LT5wYXRoTmFtZUlkKyspOworCisJbmFtZSA9 IHBzdHJkdXAobmFtZSk7CisJY3h0LT5wYXRoTmFtZXMgPSBsYXBwZW5kKGN4dC0+cGF0aE5hbWVz LCBuYW1lKTsKKworCXJldHVybiBuYW1lOworfQorCisvKiBDb2xsZWN0IHNpYmxpbmcgcGF0aCBu YW1lcyBmcm9tIHBsYW4gdG8gdGhlIHNwZWNpZmllZCBsaXN0LiAqLworc3RhdGljIHZvaWQKK2Nv bGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGxhblNwZWMgKnBsYW4s IExpc3QgKipwYXRocykKK3sKKwlpZiAocGxhbi0+cGxhbl90eXBlID09IEpTVFBfU0lNUExFKQor CQkqcGF0aHMgPSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGF0aG5hbWUpOworCWVsc2UgaWYgKHBs YW4tPnBsYW5fdHlwZSA9PSBKU1RQX0pPSU5FRCkKKwl7CisJCWlmIChwbGFuLT5qb2luX3R5cGUg PT0gSlNUUF9KT0lOX0lOTkVSIHx8CisJCQlwbGFuLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX09V VEVSKQorCQl7CisJCQlBc3NlcnQocGxhbi0+cGxhbjEtPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBM RSk7CisJCQkqcGF0aHMgPSBsYXBwZW5kKCpwYXRocywgcGxhbi0+cGxhbjEtPnBhdGhuYW1lKTsK KwkJfQorCQllbHNlIGlmIChwbGFuLT5qb2luX3R5cGUgPT0gSlNUUF9KT0lOX0NST1NTIHx8CisJ CQkJIHBsYW4tPmpvaW5fdHlwZSA9PSBKU1RQX0pPSU5fVU5JT04pCisJCXsKKwkJCWNvbGxlY3RT aWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxhbjEsIHBhdGhzKTsKKwkJCWNvbGxl Y3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbi0+cGxhbjIsIHBhdGhzKTsKKwkJfQor CQllbHNlCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RBQkxFIGpvaW4gdHlwZSAlZCIs CisJCQkJIHBsYW4tPmpvaW5fdHlwZSk7CisJfQorfQorCisvKgorICogVmFsaWRhdGUgY2hpbGQg SlNPTl9UQUJMRSBwbGFuIGJ5IGNoZWNraW5nIHRoYXQ6CisgKiAgLSBhbGwgbmVzdGVkIGNvbHVt bnMgaGF2ZSBwYXRoIG5hbWVzIHNwZWNpZmllZAorICogIC0gYWxsIG5lc3RlZCBjb2x1bW5zIGhh dmUgY29ycmVzcG9uZGluZyBub2RlIGluIHRoZSBzaWJsaW5nIHBsYW4KKyAqICAtIHBsYW4gZG9l cyBub3QgY29udGFpbiBkdXBsaWNhdGUgb3IgZXh0cmEgbm9kZXMKKyAqLworc3RhdGljIHZvaWQK K3ZhbGlkYXRlSnNvblRhYmxlQ2hpbGRQbGFuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblRhYmxl UGxhblNwZWMgKnBsYW4sCisJCQkJCQkgICBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAg KmxjMTsKKwlMaXN0CSAgICpzaWJsaW5ncyA9IE5JTDsKKwlpbnQJCQluY2hpbGRyZW4gPSAwOwor CisJaWYgKHBsYW4pCisJCWNvbGxlY3RTaWJsaW5nUGF0aHNJbkpzb25UYWJsZVBsYW4ocGxhbiwg JnNpYmxpbmdzKTsKKworCWZvcmVhY2gobGMxLCBjb2x1bW5zKQorCXsKKwkJSnNvblRhYmxlQ29s dW1uICpqdGMgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChsYzEpKTsKKworCQlp ZiAoanRjLT5jb2x0eXBlID09IEpUQ19ORVNURUQpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjMjsK KwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJCWlmIChqdGMtPnBhdGhzcGVjLT5uYW1lID09 IE5VTEwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCQkJZXJybXNnKCJuZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zIG11c3QgY29u dGFpbiIKKwkJCQkJCQkJIiBhbiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIgor CQkJCQkJCQkiIGlmIGFuIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQiKSwKKwkJCQkJCXBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKTsKKworCQkJLyogZmluZCBu ZXN0ZWQgcGF0aCBuYW1lIGluIHRoZSBsaXN0IG9mIHNpYmxpbmcgcGF0aCBuYW1lcyAqLworCQkJ Zm9yZWFjaChsYzIsIHNpYmxpbmdzKQorCQkJeworCQkJCWlmICgoZm91bmQgPSAhc3RyY21wKGp0 Yy0+cGF0aHNwZWMtPm5hbWUsIGxmaXJzdChsYzIpKSkpCisJCQkJCWJyZWFrOworCQkJfQorCisJ CQlpZiAoIWZvdW5kKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmlj YXRpb24iKSwKKwkJCQkJCWVycmRldGFpbCgiUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoICVz IHdhcyBub3QgZm91bmQuIiwKKwkJCQkJCQkJICBqdGMtPnBhdGhzcGVjLT5uYW1lKSwKKwkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGp0Yy0+bG9jYXRpb24pKTsKKworCQkJbmNoaWxk cmVuKys7CisJCX0KKwl9CisKKwlpZiAobGlzdF9sZW5ndGgoc2libGluZ3MpID4gbmNoaWxkcmVu KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCWVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJZXJyZGV0 YWlsKCJQTEFOIGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1cGxpY2F0ZSBzaWJsaW5n IG5vZGVzLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHBsYW4gPyBwbGFuLT5s b2NhdGlvbiA6IC0xKSk7Cit9CisKK3N0YXRpYyBKc29uVGFibGVDb2x1bW4gKgorZmluZE5lc3Rl ZEpzb25UYWJsZUNvbHVtbihMaXN0ICpjb2x1bW5zLCBjb25zdCBjaGFyICpwYXRobmFtZSkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGNvbHVtbnMpCisJeworCQlKc29uVGFi bGVDb2x1bW4gKmp0YyA9IGNhc3ROb2RlKEpzb25UYWJsZUNvbHVtbiwgbGZpcnN0KGxjKSk7CisK KwkJaWYgKGp0Yy0+Y29sdHlwZSA9PSBKVENfTkVTVEVEICYmCisJCQlqdGMtPnBhdGhzcGVjLT5u YW1lICYmCisJCQkhc3RyY21wKGp0Yy0+cGF0aHNwZWMtPm5hbWUsIHBhdGhuYW1lKSkKKwkJCXJl dHVybiBqdGM7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBOb2RlICoKK3RyYW5z Zm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihKc29uVGFibGVQYXJzZUNvbnRleHQgKiBjeHQsIEpz b25UYWJsZUNvbHVtbiAqanRjLAorCQkJCQkJCSAgIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3Bl YykKK3sKKwlpZiAoanRjLT5wYXRoc3BlYy0+bmFtZSA9PSBOVUxMKQorCXsKKwkJaWYgKGN4dC0+ dGFibGUtPnBsYW5zcGVjICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFsaWQgSlNPTl9UQUJM RSBleHByZXNzaW9uIiksCisJCQkJCSBlcnJkZXRhaWwoIkpTT05fVEFCTEUgcGF0aCBtdXN0IGNv bnRhaW4iCisJCQkJCQkJICAgIiBleHBsaWNpdCBBUyBwYXRobmFtZSBzcGVjaWZpY2F0aW9uIGlm IgorCQkJCQkJCSAgICIgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNlZCIpLAorCQkJCQkgcGFy c2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBqdGMtPmxvY2F0aW9uKSkpOworCisJCWp0Yy0+ cGF0aHNwZWMtPm5hbWUgPSBnZW5lcmF0ZUpzb25UYWJsZVBhdGhOYW1lKGN4dCk7CisJfQorCisJ cmV0dXJuIChOb2RlICopIHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbnMoY3h0LCBwbGFuc3BlYywg anRjLT5jb2x1bW5zLAorCQkJCQkJCQkJCQkgIGp0Yy0+cGF0aHNwZWMpOworfQorCitzdGF0aWMg Tm9kZSAqCittYWtlSnNvblRhYmxlU2libGluZ0pvaW4oYm9vbCBjcm9zcywgTm9kZSAqbG5vZGUs IE5vZGUgKnJub2RlKQoreworCUpzb25UYWJsZVNpYmxpbmcgKmpvaW4gPSBtYWtlTm9kZShKc29u VGFibGVTaWJsaW5nKTsKKworCWpvaW4tPmxhcmcgPSBsbm9kZTsKKwlqb2luLT5yYXJnID0gcm5v ZGU7CisJam9pbi0+Y3Jvc3MgPSBjcm9zczsKKworCXJldHVybiAoTm9kZSAqKSBqb2luOworfQor CisvKgorICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtIGNoaWxkIEpTT05fVEFCTEUgcGxhbi4KKyAq CisgKiBEZWZhdWx0IHBsYW4gaXMgdHJhbnNmb3JtZWQgaW50byBhIGNyb3NzL3VuaW9uIGpvaW4g b2YgaXRzIG5lc3RlZCBjb2x1bW5zLgorICogU2ltcGxlIGFuZCBvdXRlci9pbm5lciBwbGFucyBh cmUgdHJhbnNmb3JtZWQgaW50byBhIEpzb25UYWJsZVBsYW4gYnkKKyAqIGZpbmRpbmcgYW5kIHRy YW5zZm9ybWluZyBjb3JyZXNwb25kaW5nIG5lc3RlZCBjb2x1bW4uCisgKiBTaWJsaW5nIHBsYW5z IGFyZSByZWN1cnNpdmVseSB0cmFuc2Zvcm1lZCBpbnRvIGEgSnNvblRhYmxlU2libGluZy4KKyAq Lworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtSnNvblRhYmxlQ2hpbGRQbGFuKEpzb25UYWJsZVBh cnNlQ29udGV4dCAqIGN4dCwKKwkJCQkJCQlKc29uVGFibGVQbGFuU3BlYyAqcGxhbiwKKwkJCQkJ CQlMaXN0ICpjb2x1bW5zKQoreworCUpzb25UYWJsZUNvbHVtbiAqanRjID0gTlVMTDsKKworCWlm ICghcGxhbiB8fCBwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUKQorCXsKKwkJLyogdW5z cGVjaWZpZWQgb3IgZGVmYXVsdCBwbGFuICovCisJCU5vZGUJICAgKnJlcyA9IE5VTEw7CisJCUxp c3RDZWxsICAgKmxjOworCQlib29sCQljcm9zcyA9IHBsYW4gJiYgKHBsYW4tPmpvaW5fdHlwZSAm IEpTVFBfSk9JTl9DUk9TUyk7CisKKwkJLyogdHJhbnNmb3JtIGFsbCBuZXN0ZWQgY29sdW1ucyBp bnRvIGNyb3NzL3VuaW9uIGpvaW4gKi8KKwkJZm9yZWFjaChsYywgY29sdW1ucykKKwkJeworCQkJ SnNvblRhYmxlQ29sdW1uICpjb2wgPSBjYXN0Tm9kZShKc29uVGFibGVDb2x1bW4sIGxmaXJzdChs YykpOworCQkJTm9kZQkgICAqbm9kZTsKKworCQkJaWYgKGNvbC0+Y29sdHlwZSAhPSBKVENfTkVT VEVEKQorCQkJCWNvbnRpbnVlOworCisJCQlub2RlID0gdHJhbnNmb3JtTmVzdGVkSnNvblRhYmxl Q29sdW1uKGN4dCwgY29sLCBwbGFuKTsKKworCQkJLyogam9pbiB0cmFuc2Zvcm1lZCBub2RlIHdp dGggcHJldmlvdXMgc2libGluZyBub2RlcyAqLworCQkJcmVzID0gcmVzID8gbWFrZUpzb25UYWJs ZVNpYmxpbmdKb2luKGNyb3NzLCByZXMsIG5vZGUpIDogbm9kZTsKKwkJfQorCisJCXJldHVybiBy ZXM7CisJfQorCWVsc2UgaWYgKHBsYW4tPnBsYW5fdHlwZSA9PSBKU1RQX1NJTVBMRSkKKwl7CisJ CWp0YyA9IGZpbmROZXN0ZWRKc29uVGFibGVDb2x1bW4oY29sdW1ucywgcGxhbi0+cGF0aG5hbWUp OworCX0KKwllbHNlIGlmIChwbGFuLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lORUQpCisJeworCQlp ZiAocGxhbi0+am9pbl90eXBlID09IEpTVFBfSk9JTl9JTk5FUiB8fAorCQkJcGxhbi0+am9pbl90 eXBlID09IEpTVFBfSk9JTl9PVVRFUikKKwkJeworCQkJQXNzZXJ0KHBsYW4tPnBsYW4xLT5wbGFu X3R5cGUgPT0gSlNUUF9TSU1QTEUpOworCQkJanRjID0gZmluZE5lc3RlZEpzb25UYWJsZUNvbHVt bihjb2x1bW5zLCBwbGFuLT5wbGFuMS0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Tm9kZQkgICAqbm9kZTEgPSB0cmFuc2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5w bGFuMSwKKwkJCQkJCQkJCQkJCQkJCWNvbHVtbnMpOworCQkJTm9kZQkgICAqbm9kZTIgPSB0cmFu c2Zvcm1Kc29uVGFibGVDaGlsZFBsYW4oY3h0LCBwbGFuLT5wbGFuMiwKKwkJCQkJCQkJCQkJCQkJ CWNvbHVtbnMpOworCisJCQlyZXR1cm4gbWFrZUpzb25UYWJsZVNpYmxpbmdKb2luKHBsYW4tPmpv aW5fdHlwZSA9PSBKU1RQX0pPSU5fQ1JPU1MsCisJCQkJCQkJCQkJCW5vZGUxLCBub2RlMik7CisJ CX0KKwl9CisJZWxzZQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gdHlw ZSAlZCIsIHBsYW4tPnBsYW5fdHlwZSk7CisKKwlpZiAoIWp0YykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlIiksCisJCQkJIGVycmRldGFpbCgiUEFUSCBuYW1lIHdh cyAlcyBub3QgZm91bmQgaW4gbmVzdGVkIGNvbHVtbnMgbGlzdC4iLAorCQkJCQkJICAgcGxhbi0+ cGF0aG5hbWUpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIHBsYW4tPmxv Y2F0aW9uKSkpOworCisJcmV0dXJuIHRyYW5zZm9ybU5lc3RlZEpzb25UYWJsZUNvbHVtbihjeHQs IGp0YywgcGxhbik7Cit9CisKKy8qIENoZWNrIHdoZXRoZXIgdHlwZSBpcyBqc29uL2pzb25iLCBh cnJheSwgb3IgcmVjb3JkLiAqLworc3RhdGljIGJvb2wKK3R5cGVJc0NvbXBvc2l0ZShPaWQgdHlw aWQpCit7CisJY2hhcgkJdHlwdHlwZTsKKworCWlmICh0eXBpZCA9PSBKU09OT0lEIHx8CisJCXR5 cGlkID09IEpTT05CT0lEIHx8CisJCXR5cGlkID09IFJFQ09SRE9JRCB8fAorCQl0eXBlX2lzX2Fy cmF5KHR5cGlkKSkKKwkJcmV0dXJuIHRydWU7CisKKwl0eXB0eXBlID0gZ2V0X3R5cHR5cGUodHlw aWQpOworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9DT01QT1NJVEUpCisJCXJldHVybiB0cnVl OworCisJaWYgKHR5cHR5cGUgPT0gVFlQVFlQRV9ET01BSU4pCisJCXJldHVybiB0eXBlSXNDb21w b3NpdGUoZ2V0QmFzZVR5cGUodHlwaWQpKTsKKworCXJldHVybiBmYWxzZTsKK30KKworLyogQXBw ZW5kIHRyYW5zZm9ybWVkIG5vbi1uZXN0ZWQgSlNPTl9UQUJMRSBjb2x1bW5zIHRvIHRoZSBUYWJs ZUZ1bmMgbm9kZSAqLworc3RhdGljIHZvaWQKK2FwcGVuZEpzb25UYWJsZUNvbHVtbnMoSnNvblRh YmxlUGFyc2VDb250ZXh0ICogY3h0LCBMaXN0ICpjb2x1bW5zKQoreworCUxpc3RDZWxsICAgKmNv bDsKKwlQYXJzZVN0YXRlICpwc3RhdGUgPSBjeHQtPnBzdGF0ZTsKKwlKc29uVGFibGUgICpqdCA9 IGN4dC0+dGFibGU7CisJVGFibGVGdW5jICAqdGYgPSBjeHQtPnRhYmxlZnVuYzsKKwlib29sCQlv cmRpbmFsaXR5X2ZvdW5kID0gZmFsc2U7CisJSnNvbkJlaGF2aW9yICpvbl9lcnJvciA9IGp0LT5v bl9lcnJvcjsKKwlib29sCQllcnJvck9uRXJyb3IgPSBvbl9lcnJvciAmJgorCQlvbl9lcnJvci0+ YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUjsKKworCWZvcmVhY2goY29sLCBjb2x1bW5zKQor CXsKKwkJSnNvblRhYmxlQ29sdW1uICpyYXdjID0gY2FzdE5vZGUoSnNvblRhYmxlQ29sdW1uLCBs Zmlyc3QoY29sKSk7CisJCU9pZAkJCXR5cGlkOworCQlpbnQzMgkJdHlwbW9kOworCQlOb2RlCSAg ICpjb2xleHByOworCisJCWlmIChyYXdjLT5uYW1lKQorCQkJdGYtPmNvbG5hbWVzID0gbGFwcGVu ZCh0Zi0+Y29sbmFtZXMsCisJCQkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1cChyYXdjLT5uYW1l KSkpOworCisJCS8qCisJCSAqIERldGVybWluZSB0aGUgdHlwZSBhbmQgdHlwbW9kIGZvciB0aGUg bmV3IGNvbHVtbi4gRk9SIE9SRElOQUxJVFkKKwkJICogY29sdW1ucyBhcmUgSU5URUdFUiBieSBz dGFuZGFyZDsgdGhlIG90aGVycyBhcmUgdXNlci1zcGVjaWZpZWQuCisJCSAqLworCQlzd2l0Y2gg KHJhd2MtPmNvbHR5cGUpCisJCXsKKwkJCWNhc2UgSlRDX0ZPUl9PUkRJTkFMSVRZOgorCQkJCWlm IChvcmRpbmFsaXR5X2ZvdW5kKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIG1vcmUg dGhhbiBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1uIiksCisJCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIHJhd2MtPmxvY2F0aW9uKSkpOworCQkJCW9yZGluYWxpdHlfZm91bmQgPSB0 cnVlOworCQkJCWNvbGV4cHIgPSBOVUxMOworCQkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCQl0eXBt b2QgPSAtMTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBKVENfUkVHVUxBUjoKKwkJCQl0eXBlbmFt ZVR5cGVJZEFuZE1vZChwc3RhdGUsIHJhd2MtPnR5cGVOYW1lLCAmdHlwaWQsICZ0eXBtb2QpOwor CisJCQkJLyoKKwkJCQkgKiBVc2UgaW1wbGljaXQgRk9STUFUIEpTT04gZm9yIGNvbXBvc2l0ZSB0 eXBlcyAoYXJyYXlzIGFuZAorCQkJCSAqIHJlY29yZHMpIG9yIGlmIGEgbm9uLWRlZmF1bHQgV1JB UFBFUiAvIFFVT1RFUyBiZWhhdmlvcgorCQkJCSAqIGlzIHNwZWNpZmllZC4KKwkJCQkgKi8KKwkJ CQlpZiAodHlwZUlzQ29tcG9zaXRlKHR5cGlkKSB8fAorCQkJCQlyYXdjLT5xdW90ZXMgIT0gSlNf UVVPVEVTX1VOU1BFQyB8fAorCQkJCQlyYXdjLT53cmFwcGVyICE9IEpTV19VTlNQRUMpCisJCQkJ CXJhd2MtPmNvbHR5cGUgPSBKVENfRk9STUFUVEVEOworCisJCQkJLyogRkFMTFRIUk9VR0ggKi8K KwkJCWNhc2UgSlRDX0ZPUk1BVFRFRDoKKwkJCWNhc2UgSlRDX0VYSVNUUzoKKwkJCQl7CisJCQkJ CU5vZGUJICAgKmplOworCQkJCQlDYXNlVGVzdEV4cHIgKnBhcmFtID0gbWFrZU5vZGUoQ2FzZVRl c3RFeHByKTsKKworCQkJCQlwYXJhbS0+Y29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJCQkJcGFy YW0tPnR5cGVJZCA9IGN4dC0+Y29udGV4dEl0ZW1UeXBpZDsKKwkJCQkJcGFyYW0tPnR5cGVNb2Qg PSAtMTsKKworCQkJCQlqZSA9IHRyYW5zZm9ybUpzb25UYWJsZUNvbHVtbihyYXdjLCAoTm9kZSAq KSBwYXJhbSwKKwkJCQkJCQkJCQkJCSAgTklMLCBlcnJvck9uRXJyb3IpOworCisJCQkJCWNvbGV4 cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgamUsIEVYUFJfS0lORF9GUk9NX0ZVTkNUSU9OKTsK KwkJCQkJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIGNvbGV4cHIpOworCisJCQkJCXR5 cGlkID0gZXhwclR5cGUoY29sZXhwcik7CisJCQkJCXR5cG1vZCA9IGV4cHJUeXBtb2QoY29sZXhw cik7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBKVENfTkVTVEVEOgorCQkJCWNvbnRp bnVlOworCisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bmtub3duIEpTT05fVEFCTEUg Y29sdW1uIHR5cGU6ICVkIiwgcmF3Yy0+Y29sdHlwZSk7CisJCQkJYnJlYWs7CisJCX0KKworCQl0 Zi0+Y29sdHlwZXMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sdHlwZXMsIHR5cGlkKTsKKwkJdGYtPmNv bHR5cG1vZHMgPSBsYXBwZW5kX2ludCh0Zi0+Y29sdHlwbW9kcywgdHlwbW9kKTsKKwkJdGYtPmNv bGNvbGxhdGlvbnMgPSBsYXBwZW5kX29pZCh0Zi0+Y29sY29sbGF0aW9ucywgZ2V0X3R5cGNvbGxh dGlvbih0eXBpZCkpOworCQl0Zi0+Y29sdmFsZXhwcnMgPSBsYXBwZW5kKHRmLT5jb2x2YWxleHBy cywgY29sZXhwcik7CisJfQorfQorCisvKgorICogQ3JlYXRlIHRyYW5zZm9ybWVkIEpTT05fVEFC TEUgcGFyZW50IHBsYW4gbm9kZSBieSBhcHBlbmRpbmcgYWxsIG5vbi1uZXN0ZWQKKyAqIGNvbHVt bnMgdG8gdGhlIFRhYmxlRnVuYyBub2RlIGFuZCByZW1lbWJlcmluZyB0aGVpciBpbmRpY2VzIGlu IHRoZQorICogY29sdmFsZXhwcnMgbGlzdC4KKyAqLworc3RhdGljIEpzb25UYWJsZVBsYW4gKgor bWFrZVBhcmVudEpzb25UYWJsZVBsYW4oSnNvblRhYmxlUGFyc2VDb250ZXh0ICogY3h0LCBKc29u VGFibGVQYXRoU3BlYyAqcGF0aHNwZWMsCisJCQkJCQlMaXN0ICpjb2x1bW5zKQoreworCUpzb25U YWJsZVBsYW4gKnBsYW4gPSBtYWtlTm9kZShKc29uVGFibGVQbGFuKTsKKwlKc29uQmVoYXZpb3Ig Km9uX2Vycm9yID0gY3h0LT50YWJsZS0+b25fZXJyb3I7CisJY2hhcgkJICpwYXRoc3RyaW5nOwor CUNvbnN0CQkgKnZhbHVlOworCisJQXNzZXJ0KElzQShwYXRoc3BlYy0+c3RyaW5nLCBBX0NvbnN0 KSk7CisJcGF0aHN0cmluZyA9IGNhc3ROb2RlKEFfQ29uc3QsIHBhdGhzcGVjLT5zdHJpbmcpLT52 YWwuc3ZhbC5zdmFsOworCXZhbHVlID0gbWFrZUNvbnN0KEpTT05QQVRIT0lELCAtMSwgSW52YWxp ZE9pZCwgLTEsCisJCQkJCSAgRGlyZWN0RnVuY3Rpb25DYWxsMShqc29ucGF0aF9pbiwKKwkJCQkJ CQkJCQkgIENTdHJpbmdHZXREYXR1bShwYXRoc3RyaW5nKSksCisJCQkJCSAgZmFsc2UsIGZhbHNl KTsKKwlwbGFuLT5wYXRoID0gbWFrZUpzb25UYWJsZVBhdGgodmFsdWUsIHBhdGhzcGVjLT5uYW1l KTsKKworCS8qIHNhdmUgc3RhcnQgb2YgY29sdW1uIHJhbmdlICovCisJcGxhbi0+Y29sTWluID0g bGlzdF9sZW5ndGgoY3h0LT50YWJsZWZ1bmMtPmNvbHZhbGV4cHJzKTsKKworCWFwcGVuZEpzb25U YWJsZUNvbHVtbnMoY3h0LCBjb2x1bW5zKTsKKworCS8qIHNhdmUgZW5kIG9mIGNvbHVtbiByYW5n ZSAqLworCXBsYW4tPmNvbE1heCA9IGxpc3RfbGVuZ3RoKGN4dC0+dGFibGVmdW5jLT5jb2x2YWxl eHBycykgLSAxOworCisJcGxhbi0+ZXJyb3JPbkVycm9yID0gb25fZXJyb3IgJiYgb25fZXJyb3It PmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1I7CisKKwlyZXR1cm4gcGxhbjsKK30KKworc3Rh dGljIEpzb25UYWJsZVBsYW4gKgordHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucyhKc29uVGFibGVQ YXJzZUNvbnRleHQgKiBjeHQsCisJCQkJCQkgIEpzb25UYWJsZVBsYW5TcGVjICpwbGFuc3BlYywK KwkJCQkJCSAgTGlzdCAqY29sdW1ucywKKwkJCQkJCSAgSnNvblRhYmxlUGF0aFNwZWMgKnBhdGhz cGVjKQoreworCUpzb25UYWJsZVBsYW4gKnBsYW47CisJSnNvblRhYmxlUGxhblNwZWMgKmNoaWxk UGxhblNwZWM7CisJYm9vbAkJZGVmYXVsdFBsYW4gPSBwbGFuc3BlYyA9PSBOVUxMIHx8CisJCXBs YW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9ERUZBVUxUOworCisJaWYgKGRlZmF1bHRQbGFuKQor CQljaGlsZFBsYW5TcGVjID0gcGxhbnNwZWM7CisJZWxzZQorCXsKKwkJLyogdmFsaWRhdGUgcGFy ZW50IGFuZCBjaGlsZCBwbGFucyAqLworCQlKc29uVGFibGVQbGFuU3BlYyAqcGFyZW50UGxhblNw ZWM7CisKKwkJaWYgKHBsYW5zcGVjLT5wbGFuX3R5cGUgPT0gSlNUUF9KT0lORUQpCisJCXsKKwkJ CWlmIChwbGFuc3BlYy0+am9pbl90eXBlICE9IEpTVFBfSk9JTl9JTk5FUiAmJgorCQkJCXBsYW5z cGVjLT5qb2luX3R5cGUgIT0gSlNUUF9KT0lOX09VVEVSKQorCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJpbnZh bGlkIEpTT05fVEFCTEUgcGxhbiBjbGF1c2UiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIkV4cGVjdGVk IElOTkVSIG9yIE9VVEVSLiIpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0 ZSwgcGxhbnNwZWMtPmxvY2F0aW9uKSkpOworCisJCQlwYXJlbnRQbGFuU3BlYyA9IHBsYW5zcGVj LT5wbGFuMTsKKwkJCWNoaWxkUGxhblNwZWMgPSBwbGFuc3BlYy0+cGxhbjI7CisKKwkJCUFzc2Vy dChwYXJlbnRQbGFuU3BlYy0+cGxhbl90eXBlICE9IEpTVFBfSk9JTkVEKTsKKwkJCUFzc2VydChw YXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUpOworCQl9CisJCWVsc2UKKwkJeworCQkJcGFyZW50UGxh blNwZWMgPSBwbGFuc3BlYzsKKwkJCWNoaWxkUGxhblNwZWMgPSBOVUxMOworCQl9CisKKwkJaWYg KHN0cmNtcChwYXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUsIHBhdGhzcGVjLT5uYW1lKSAhPSAwKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAor CQkJCQkgZXJybXNnKCJpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiIpLAorCQkJCQkgZXJyZGV0YWls KCJQQVRIIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkICVzIGJ1dCAlcyBpcyBnaXZlbi4iLAorCQkJ CQkJCSAgIHBhdGhzcGVjLT5uYW1lLCBwYXJlbnRQbGFuU3BlYy0+cGF0aG5hbWUpLAorCQkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBwbGFuc3BlYy0+bG9jYXRpb24pKSk7CisK KwkJdmFsaWRhdGVKc29uVGFibGVDaGlsZFBsYW4oY3h0LT5wc3RhdGUsIGNoaWxkUGxhblNwZWMs IGNvbHVtbnMpOworCX0KKworCS8qIHRyYW5zZm9ybSBvbmx5IG5vbi1uZXN0ZWQgY29sdW1ucyAq LworCXBsYW4gPSBtYWtlUGFyZW50SnNvblRhYmxlUGxhbihjeHQsIHBhdGhzcGVjLCBjb2x1bW5z KTsKKworCWlmIChjaGlsZFBsYW5TcGVjIHx8IGRlZmF1bHRQbGFuKQorCXsKKwkJLyogdHJhbnNm b3JtIHJlY3Vyc2l2ZWx5IG5lc3RlZCBjb2x1bW5zICovCisJCXBsYW4tPmNoaWxkID0gdHJhbnNm b3JtSnNvblRhYmxlQ2hpbGRQbGFuKGN4dCwgY2hpbGRQbGFuU3BlYywgY29sdW1ucyk7CisJCWlm IChwbGFuLT5jaGlsZCkKKwkJCXBsYW4tPm91dGVySm9pbiA9IHBsYW5zcGVjID09IE5VTEwgfHwK KwkJCQkocGxhbnNwZWMtPmpvaW5fdHlwZSAmIEpTVFBfSk9JTl9PVVRFUik7CisJCS8qIGVsc2U6 IGRlZmF1bHQgcGxhbiBjYXNlLCBubyBjaGlsZHJlbiBmb3VuZCAqLworCX0KKworCXJldHVybiBw bGFuOworfQorCisvKgorICogdHJhbnNmb3JtSnNvblRhYmxlIC0KKyAqCQkJVHJhbnNmb3JtIGEg cmF3IEpzb25UYWJsZSBpbnRvIFRhYmxlRnVuYy4KKyAqCisgKiBUcmFuc2Zvcm0gdGhlIGRvY3Vt ZW50LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiwgdGhlIHJvdy1nZW5lcmF0aW5nIGV4cHJlc3Npb24s CisgKiB0aGUgY29sdW1uLWdlbmVyYXRpbmcgZXhwcmVzc2lvbnMsIGFuZCB0aGUgZGVmYXVsdCB2 YWx1ZSBleHByZXNzaW9ucy4KKyAqLworUGFyc2VOYW1lc3BhY2VJdGVtICoKK3RyYW5zZm9ybUpz b25UYWJsZShQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25UYWJsZSAqanQpCit7CisJSnNvblRhYmxl UGFyc2VDb250ZXh0IGN4dDsKKwlUYWJsZUZ1bmMgICp0ZiA9IG1ha2VOb2RlKFRhYmxlRnVuYyk7 CisJSnNvbkZ1bmNFeHByICpqZmUgPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCUpzb25FeHBy ICAgKmplOworCUpzb25UYWJsZVBsYW5TcGVjICpwbGFuID0ganQtPnBsYW5zcGVjOworCUpzb25U YWJsZVBhdGhTcGVjICpyb290UGF0aFNwZWMgPSBqdC0+cGF0aHNwZWM7CisJYm9vbAkJaXNfbGF0 ZXJhbDsKKworCUFzc2VydChJc0Eocm9vdFBhdGhTcGVjLT5zdHJpbmcsIEFfQ29uc3QpICYmCisJ CSAgIGNhc3ROb2RlKEFfQ29uc3QsIHJvb3RQYXRoU3BlYy0+c3RyaW5nKS0+dmFsLm5vZGUudHlw ZSA9PSBUX1N0cmluZyk7CisKKwljeHQucHN0YXRlID0gcHN0YXRlOworCWN4dC50YWJsZSA9IGp0 OworCWN4dC50YWJsZWZ1bmMgPSB0ZjsKKwljeHQucGF0aE5hbWVzID0gTklMOworCWN4dC5wYXRo TmFtZUlkID0gMDsKKworCWlmIChyb290UGF0aFNwZWMtPm5hbWUpCisJCXJlZ2lzdGVySnNvblRh YmxlUGF0aCgmY3h0LCByb290UGF0aFNwZWMtPm5hbWUsCisJCQkJCQkJICByb290UGF0aFNwZWMt Pm5hbWVfbG9jYXRpb24pOworCWVsc2UKKwl7CisJCWlmIChqdC0+cGxhbnNwZWMgIT0gTlVMTCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJIGVycm1zZygiaW52YWxpZCBKU09OX1RBQkxFIGV4cHJlc3Npb24iKSwKKwkJCQkJIGVy cmRldGFpbCgiSlNPTl9UQUJMRSBwYXRoIG11c3QgY29udGFpbiIKKwkJCQkJCQkgICAiIGV4cGxp Y2l0IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYiCisJCQkJCQkJICAgIiBleHBsaWNpdCBQ TEFOIGNsYXVzZSBpcyB1c2VkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBy b290UGF0aFNwZWMtPmxvY2F0aW9uKSkpOworCisJCXJvb3RQYXRoU3BlYy0+bmFtZSA9IGdlbmVy YXRlSnNvblRhYmxlUGF0aE5hbWUoJmN4dCk7CisJfQorCisJcmVnaXN0ZXJBbGxKc29uVGFibGVD b2x1bW5zQW5kUGF0aHMoJmN4dCwganQtPmNvbHVtbnMpOworCisJamZlLT5vcCA9IEpTT05fVEFC TEVfT1A7CisJamZlLT5jb250ZXh0X2l0ZW0gPQlqdC0+Y29udGV4dF9pdGVtOworCWpmZS0+cGF0 aHNwZWMgPSAoTm9kZSAqKSByb290UGF0aFNwZWMtPnN0cmluZzsKKwlqZmUtPnBhdGhuYW1lID0g cm9vdFBhdGhTcGVjLT5uYW1lOworCWpmZS0+cGFzc2luZyA9IGp0LT5wYXNzaW5nOworCWpmZS0+ b25fZW1wdHkgPSBOVUxMOworCWpmZS0+b25fZXJyb3IgPSBqdC0+b25fZXJyb3I7CisJamZlLT5s b2NhdGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCS8qCisJICogV2UgbWFrZSBsYXRlcmFsX29ubHkg bmFtZXMgb2YgdGhpcyBsZXZlbCB2aXNpYmxlLCB3aGV0aGVyIG9yIG5vdCB0aGUKKwkgKiBSYW5n ZVRhYmxlRnVuYyBpcyBleHBsaWNpdGx5IG1hcmtlZCBMQVRFUkFMLiAgVGhpcyBpcyBuZWVkZWQg Zm9yIFNRTAorCSAqIHNwZWMgY29tcGxpYW5jZSBhbmQgc2VlbXMgdXNlZnVsIG9uIGNvbnZlbmll bmNlIGdyb3VuZHMgZm9yIGFsbAorCSAqIGZ1bmN0aW9ucyBpbiBGUk9NLgorCSAqCisJICogKExB VEVSQUwgY2FuJ3QgbmVzdCB3aXRoaW4gYSBzaW5nbGUgcHN0YXRlIGxldmVsLCBzbyB3ZSBkb24n dCBuZWVkCisJICogc2F2ZS9yZXN0b3JlIGxvZ2ljIGhlcmUuKQorCSAqLworCUFzc2VydCghcHN0 YXRlLT5wX2xhdGVyYWxfYWN0aXZlKTsKKwlwc3RhdGUtPnBfbGF0ZXJhbF9hY3RpdmUgPSB0cnVl OworCisJdGYtPmZ1bmN0eXBlID0gVEZUX0pTT05fVEFCTEU7CisJdGYtPmRvY2V4cHIgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgamZlLCBFWFBSX0tJTkRfRlJPTV9GVU5DVElPTik7 CisKKwljeHQuY29udGV4dEl0ZW1UeXBpZCA9IGV4cHJUeXBlKHRmLT5kb2NleHByKTsKKworCXRm LT5wbGFuID0gKE5vZGUgKikgdHJhbnNmb3JtSnNvblRhYmxlQ29sdW1ucygmY3h0LCBwbGFuLCBq dC0+Y29sdW1ucywKKwkJCQkJCQkJCQkJCSAgcm9vdFBhdGhTcGVjKTsKKworCS8qIEFsc28gc2F2 ZSBhIGNvcHkgb2YgdGhlIFBBU1NJTkcgYXJndW1lbnRzIGluIHRoZSBUYWJsZUZ1bmMgbm9kZS4g Ki8KKwlqZSA9IChKc29uRXhwciAqKSB0Zi0+ZG9jZXhwcjsKKwl0Zi0+cGFzc2luZ3ZhbGV4cHJz ID0gY29weU9iamVjdChqZS0+cGFzc2luZ192YWx1ZXMpOworCisJdGYtPm9yZGluYWxpdHljb2wg PSAtMTsJCS8qIHVuZGVmaW5lIG9yZGluYWxpdHkgY29sdW1uIG51bWJlciAqLworCXRmLT5sb2Nh dGlvbiA9IGp0LT5sb2NhdGlvbjsKKworCXBzdGF0ZS0+cF9sYXRlcmFsX2FjdGl2ZSA9IGZhbHNl OworCisJLyoKKwkgKiBNYXJrIHRoZSBSVEUgYXMgTEFURVJBTCBpZiB0aGUgdXNlciBzYWlkIExB VEVSQUwgZXhwbGljaXRseSwgb3IgaWYKKwkgKiB0aGVyZSBhcmUgYW55IGxhdGVyYWwgY3Jvc3Mt cmVmZXJlbmNlcyBpbiBpdC4KKwkgKi8KKwlpc19sYXRlcmFsID0ganQtPmxhdGVyYWwgfHwgY29u dGFpbl92YXJzX29mX2xldmVsKChOb2RlICopIHRmLCAwKTsKKworCXJldHVybiBhZGRSYW5nZVRh YmxlRW50cnlGb3JUYWJsZUZ1bmMocHN0YXRlLAorCQkJCQkJCQkJCSAgdGYsIGp0LT5hbGlhcywg aXNfbGF0ZXJhbCwgdHJ1ZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmluZGV4 IDY1ZTU0YWJkZDEuLmMyZTNlNjVjYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j CkBAIC0yMDc3LDEzICsyMDc3LDE1IEBAIGFkZFJhbmdlVGFibGVFbnRyeUZvclRhYmxlRnVuYyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJcnRlLT5yZWxpZCA9IEludmFsaWRPaWQ7CiAJcnRlLT5zdWJx dWVyeSA9IE5VTEw7CiAJcnRlLT50YWJsZWZ1bmMgPSB0ZjsKLQlydGUtPnRhYmxlZnVuY19uYW1l ID0gcHN0cmR1cCgiWE1MVEFCTEUiKTsKKwlydGUtPnRhYmxlZnVuY19uYW1lID0gcHN0cmR1cCh0 Zi0+ZnVuY3R5cGUgPT0gVEZUX1hNTFRBQkxFID8KKwkJCQkJCQkJICAiWE1MVEFCTEUiIDogIkpT T05fVEFCTEUiKTsKIAlydGUtPmNvbHR5cGVzID0gdGYtPmNvbHR5cGVzOwogCXJ0ZS0+Y29sdHlw bW9kcyA9IHRmLT5jb2x0eXBtb2RzOwogCXJ0ZS0+Y29sY29sbGF0aW9ucyA9IHRmLT5jb2xjb2xs YXRpb25zOwogCXJ0ZS0+YWxpYXMgPSBhbGlhczsKIAotCXJlZm5hbWUgPSBhbGlhcyA/IGFsaWFz LT5hbGlhc25hbWUgOiBwc3RyZHVwKCJ4bWx0YWJsZSIpOworCXJlZm5hbWUgPSBhbGlhcyA/IGFs aWFzLT5hbGlhc25hbWUgOgorCQlwc3RyZHVwKHRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUg PyAieG1sdGFibGUiIDogImpzb25fdGFibGUiKTsKIAllcmVmID0gYWxpYXMgPyBjb3B5T2JqZWN0 KGFsaWFzKSA6IG1ha2VBbGlhcyhyZWZuYW1lLCBOSUwpOwogCW51bWFsaWFzZXMgPSBsaXN0X2xl bmd0aChlcmVmLT5jb2xuYW1lcyk7CiAKQEAgLTIwOTYsNyArMjA5OCw3IEBAIGFkZFJhbmdlVGFi bGVFbnRyeUZvclRhYmxlRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAogCQkJCSBl cnJtc2coIiVzIGZ1bmN0aW9uIGhhcyAlZCBjb2x1bW5zIGF2YWlsYWJsZSBidXQgJWQgY29sdW1u cyBzcGVjaWZpZWQiLAotCQkJCQkJIlhNTFRBQkxFIiwKKwkJCQkJCXRmLT5mdW5jdHlwZSA9PSBU RlRfWE1MVEFCTEUgPyAiWE1MVEFCTEUiIDogIkpTT05fVEFCTEUiLAogCQkJCQkJbGlzdF9sZW5n dGgodGYtPmNvbG5hbWVzKSwgbnVtYWxpYXNlcykpKTsKIAogCXJ0ZS0+ZXJlZiA9IGVyZWY7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKaW5kZXggZWE1YWM2YmFmZS4uYTMzMWVhMzI3MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3RhcmdldC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYwpAQCAtMjAwMiw2ICsyMDAyLDkgQEAgRmlndXJlQ29s bmFtZUludGVybmFsKE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQkJCWNhc2UgSlNPTl9WQUxV RV9PUDoKIAkJCQkJKm5hbWUgPSAianNvbl92YWx1ZSI7CiAJCQkJCXJldHVybiAyOworCQkJCWNh c2UgSlNPTl9UQUJMRV9PUDoKKwkJCQkJKm5hbWUgPSAianNvbl90YWJsZSI7CisJCQkJCXJldHVy biAyOwogCQkJfQogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25w YXRoX2V4ZWMuYwppbmRleCA5ZThmMmJiZGJlLi5jYzUyNmYxODFiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9qc29ucGF0aF9leGVjLmMKQEAgLTYxLDEwICs2MSwxMiBAQAogCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNs dWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRl ICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5v ZGVzL21pc2Nub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUg InJlZ2V4L3JlZ2V4LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1 dGlscy9kYXRlLmgiCkBAIC03NSw2ICs3Nyw4IEBACiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAj aW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25wYXRoLmgiCisjaW5j bHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy92YXJsZW5hLmgiCiAK QEAgLTE1OSw2ICsxNjMsNjAgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvblZhbHVlTGlzdEl0ZXJhdG9y CiAJTGlzdENlbGwgICAqbmV4dDsKIH0gSnNvblZhbHVlTGlzdEl0ZXJhdG9yOwogCisvKiBTdHJ1 Y3R1cmVzIGZvciBKU09OX1RBQkxFIGV4ZWN1dGlvbiAgKi8KKwordHlwZWRlZiBlbnVtIEpzb25U YWJsZVBsYW5TdGF0ZVR5cGUKK3sKKwlKU09OX1RBQkxFX1NDQU5fU1RBVEUgPSAwLAorCUpTT05f VEFCTEVfSk9JTl9TVEFURSwKK30JCQlKc29uVGFibGVQbGFuU3RhdGVUeXBlOworCit0eXBlZGVm IHN0cnVjdCBKc29uVGFibGVQbGFuU3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGVUeXBlIHR5 cGU7CisKKwlzdHJ1Y3QgSnNvblRhYmxlUGxhblN0YXRlICpwYXJlbnQ7CisJc3RydWN0IEpzb25U YWJsZVBsYW5TdGF0ZSAqbmVzdGVkOworfQkJCUpzb25UYWJsZVBsYW5TdGF0ZTsKKwordHlwZWRl ZiBzdHJ1Y3QgSnNvblRhYmxlU2NhblN0YXRlCit7CisJSnNvblRhYmxlUGxhblN0YXRlIHBsYW47 CisKKwlNZW1vcnlDb250ZXh0IG1jeHQ7CisJSnNvblBhdGggICAqcGF0aDsKKwlMaXN0CSAgICph cmdzOworCUpzb25WYWx1ZUxpc3QgZm91bmQ7CisJSnNvblZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXI7 CisJRGF0dW0JCWN1cnJlbnQ7CisJaW50CQkJb3JkaW5hbDsKKwlib29sCQljdXJyZW50SXNOdWxs OworCWJvb2wJCW91dGVySm9pbjsKKwlib29sCQllcnJvck9uRXJyb3I7CisJYm9vbAkJYWR2YW5j ZU5lc3RlZDsKKwlib29sCQlyZXNldDsKK30gSnNvblRhYmxlU2NhblN0YXRlOworCit0eXBlZGVm IHN0cnVjdCBKc29uVGFibGVKb2luU3RhdGUKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgcGxhbjsK KworCUpzb25UYWJsZVBsYW5TdGF0ZSAqbGVmdDsKKwlKc29uVGFibGVQbGFuU3RhdGUgKnJpZ2h0 OworCWJvb2wJCWNyb3NzOworCWJvb2wJCWFkdmFuY2VSaWdodDsKK30gSnNvblRhYmxlSm9pblN0 YXRlOworCisvKiByYW5kb20gbnVtYmVyIHRvIGlkZW50aWZ5IEpzb25UYWJsZUV4ZWNDb250ZXh0 ICovCisjZGVmaW5lIEpTT05fVEFCTEVfRVhFQ19DT05URVhUX01BR0lDCQk0MTgzNTI4NjcKKwor dHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlRXhlY0NvbnRleHQKK3sKKwlpbnQJCQltYWdpYzsKKwlK c29uVGFibGVTY2FuU3RhdGUgKipjb2xleHByc2NhbnM7CisJSnNvblRhYmxlU2NhblN0YXRlICpy b290OworfQkJCUpzb25UYWJsZUV4ZWNDb250ZXh0OworCiAvKiBzdHJpY3QvbGF4IGZsYWdzIGlz IGRlY29tcG9zZWQgaW50byBmb3VyIFt1bl13cmFwL2Vycm9yIGZsYWdzICovCiAjZGVmaW5lIGpz cFN0cmljdEFic2VuY2VPZkVycm9ycyhjeHQpCSghKGN4dCktPmxheE1vZGUpCiAjZGVmaW5lIGpz cEF1dG9VbndyYXAoY3h0KQkJCQkoKGN4dCktPmxheE1vZGUpCkBAIC0yNTgsNiArMzE2LDcgQEAg c3RhdGljIEpzb25QYXRoRXhlY1Jlc3VsdCBnZXRBcnJheUluZGV4KEpzb25QYXRoRXhlY0NvbnRl eHQgKmN4dCwKIAkJCQkJCQkJCQlKc29uUGF0aEl0ZW0gKmpzcCwgSnNvbmJWYWx1ZSAqamIsIGlu dDMyICppbmRleCk7CiBzdGF0aWMgSnNvbkJhc2VPYmplY3RJbmZvIHNldEJhc2VPYmplY3QoSnNv blBhdGhFeGVjQ29udGV4dCAqY3h0LAogCQkJCQkJCQkJCUpzb25iVmFsdWUgKmpidiwgaW50MzIg aWQpOworc3RhdGljIHZvaWQgSnNvblZhbHVlTGlzdENsZWFyKEpzb25WYWx1ZUxpc3QgKmp2bCk7 CiBzdGF0aWMgdm9pZCBKc29uVmFsdWVMaXN0QXBwZW5kKEpzb25WYWx1ZUxpc3QgKmp2bCwgSnNv bmJWYWx1ZSAqamJ2KTsKIHN0YXRpYyBpbnQJSnNvblZhbHVlTGlzdExlbmd0aChjb25zdCBKc29u VmFsdWVMaXN0ICpqdmwpOwogc3RhdGljIGJvb2wgSnNvblZhbHVlTGlzdElzRW1wdHkoSnNvblZh bHVlTGlzdCAqanZsKTsKQEAgLTI3Nyw2ICszMzYsMzIgQEAgc3RhdGljIGludAljb21wYXJlRGF0 ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwKIHN0 YXRpYyB2b2lkIGNoZWNrVGltZXpvbmVJc1VzZWRGb3JDYXN0KGJvb2wgdXNlVHosIGNvbnN0IGNo YXIgKnR5cGUxLAogCQkJCQkJCQkJICAgY29uc3QgY2hhciAqdHlwZTIpOwogCisKK3N0YXRpYyBK c29uVGFibGVQbGFuU3RhdGUgKiBKc29uVGFibGVJbml0UGxhblN0YXRlKEpzb25UYWJsZUV4ZWND b250ZXh0ICogY3h0LAorCQkJCQkJCQkJCQkJICAgTm9kZSAqcGxhbiwKKwkJCQkJCQkJCQkJCSAg IEpzb25UYWJsZVBsYW5TdGF0ZSAqIHBhcmVudCk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVQbGFu TmV4dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKiBzdGF0ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFi bGVTY2FuTmV4dFJvdyhKc29uVGFibGVTY2FuU3RhdGUgKnNjYW4pOworCitzdGF0aWMgdm9pZCBK c29uVGFibGVJbml0T3BhcXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUsIGludCBuYXR0cyk7 CitzdGF0aWMgdm9pZCBKc29uVGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0 YXRlLCBEYXR1bSB2YWx1ZSk7CitzdGF0aWMgYm9vbCBKc29uVGFibGVGZXRjaFJvdyhUYWJsZUZ1 bmNTY2FuU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyBEYXR1bSBKc29uVGFibGVHZXRWYWx1ZShUYWJs ZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBpbnQgY29sbnVtLAorCQkJCSAgT2lkIHR5cGlkLCBpbnQz MiB0eXBtb2QsIGJvb2wgKmlzbnVsbCk7CitzdGF0aWMgdm9pZCBKc29uVGFibGVEZXN0cm95T3Bh cXVlKFRhYmxlRnVuY1NjYW5TdGF0ZSAqc3RhdGUpOworCitjb25zdCBUYWJsZUZ1bmNSb3V0aW5l IEpzb25iVGFibGVSb3V0aW5lID0KK3sKKwlKc29uVGFibGVJbml0T3BhcXVlLAorCUpzb25UYWJs ZVNldERvY3VtZW50LAorCU5VTEwsCisJTlVMTCwKKwlOVUxMLAorCUpzb25UYWJsZUZldGNoUm93 LAorCUpzb25UYWJsZUdldFZhbHVlLAorCUpzb25UYWJsZURlc3Ryb3lPcGFxdWUKK307CisKIC8q KioqKioqKioqKioqKioqKiogVXNlciBpbnRlcmZhY2UgdG8gSnNvblBhdGggZXhlY3V0b3IgKioq KioqKioqKioqKioqKioqKiovCiAKIC8qCkBAIC0zMzg4LDYgKzM0NzMsMTMgQEAgc2V0QmFzZU9i amVjdChKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsIEpzb25iVmFsdWUgKmpidiwgaW50MzIgaWQp CiAJcmV0dXJuIGJhc2VPYmplY3Q7CiB9CiAKK3N0YXRpYyB2b2lkCitKc29uVmFsdWVMaXN0Q2xl YXIoSnNvblZhbHVlTGlzdCAqanZsKQoreworCWp2bC0+c2luZ2xldG9uID0gTlVMTDsKKwlqdmwt Pmxpc3QgPSBOVUxMOworfQorCiBzdGF0aWMgdm9pZAogSnNvblZhbHVlTGlzdEFwcGVuZChKc29u VmFsdWVMaXN0ICpqdmwsIEpzb25iVmFsdWUgKmpidikKIHsKQEAgLTM5MjMsMyArNDAxNSw0NTgg QEAgSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBib29sICplbXB0eSwgYm9v bCAqZXJyb3IsIExpc3QgKnZhcnMpCiAKIAlyZXR1cm4gcmVzOwogfQorCisvKioqKioqKioqKioq KioqKioqKioqKioqIEpTT05fVEFCTEUgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKworLyoKKyAqIFJldHVybnMgcHJpdmF0ZSBkYXRhIGZyb20gZXhlY3V0b3Igc3RhdGUu IEVuc3VyZSB2YWxpZGl0eSBieSBjaGVjayB3aXRoCisgKiBNQUdJQyBudW1iZXIuCisgKi8KK3N0 YXRpYyBpbmxpbmUgSnNvblRhYmxlRXhlY0NvbnRleHQgKgorR2V0SnNvblRhYmxlRXhlY0NvbnRl eHQoVGFibGVGdW5jU2NhblN0YXRlICpzdGF0ZSwgY29uc3QgY2hhciAqZm5hbWUpCit7CisJSnNv blRhYmxlRXhlY0NvbnRleHQgKnJlc3VsdDsKKworCWlmICghSXNBKHN0YXRlLCBUYWJsZUZ1bmNT Y2FuU3RhdGUpKQorCQllbG9nKEVSUk9SLCAiJXMgY2FsbGVkIHdpdGggaW52YWxpZCBUYWJsZUZ1 bmNTY2FuU3RhdGUiLCBmbmFtZSk7CisJcmVzdWx0ID0gKEpzb25UYWJsZUV4ZWNDb250ZXh0ICop IHN0YXRlLT5vcGFxdWU7CisJaWYgKHJlc3VsdC0+bWFnaWMgIT0gSlNPTl9UQUJMRV9FWEVDX0NP TlRFWFRfTUFHSUMpCisJCWVsb2coRVJST1IsICIlcyBjYWxsZWQgd2l0aCBpbnZhbGlkIFRhYmxl RnVuY1NjYW5TdGF0ZSIsIGZuYW1lKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qIFJlY3Vy c2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIC8gam9pbiBzdGF0ZSAqLworc3RhdGlj IEpzb25UYWJsZUpvaW5TdGF0ZSAqCitKc29uVGFibGVJbml0Sm9pblN0YXRlKEpzb25UYWJsZUV4 ZWNDb250ZXh0ICogY3h0LCBKc29uVGFibGVTaWJsaW5nICpwbGFuLAorCQkJCQkgICBKc29uVGFi bGVQbGFuU3RhdGUgKiBwYXJlbnQpCit7CisJSnNvblRhYmxlSm9pblN0YXRlICpqb2luID0gcGFs bG9jMChzaXplb2YoKmpvaW4pKTsKKworCWpvaW4tPnBsYW4udHlwZSA9IEpTT05fVEFCTEVfSk9J Tl9TVEFURTsKKwkvKiBwYXJlbnQgYW5kIG5lc3RlZCBub3Qgc2V0LiAqLworCisJam9pbi0+Y3Jv c3MgPSBwbGFuLT5jcm9zczsKKwlqb2luLT5sZWZ0ID0gSnNvblRhYmxlSW5pdFBsYW5TdGF0ZShj eHQsIHBsYW4tPmxhcmcsIHBhcmVudCk7CisJam9pbi0+cmlnaHQgPSBKc29uVGFibGVJbml0UGxh blN0YXRlKGN4dCwgcGxhbi0+cmFyZywgcGFyZW50KTsKKworCXJldHVybiBqb2luOworfQorCitz dGF0aWMgSnNvblRhYmxlU2NhblN0YXRlICoKK0pzb25UYWJsZUluaXRTY2FuU3RhdGUoSnNvblRh YmxlRXhlY0NvbnRleHQgKiBjeHQsCisJCQkJCSAgIEpzb25UYWJsZVBsYW4gKnBsYW4sCisJCQkJ CSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAqcGFyZW50LAorCQkJCQkgICBMaXN0ICphcmdzLCBNZW1v cnlDb250ZXh0IG1jeHQpCit7CisJSnNvblRhYmxlU2NhblN0YXRlICpzY2FuID0gcGFsbG9jMChz aXplb2YoKnNjYW4pKTsKKwlpbnQJCQlpOworCisJc2Nhbi0+cGxhbi50eXBlID0gSlNPTl9UQUJM RV9TQ0FOX1NUQVRFOworCXNjYW4tPnBsYW4ucGFyZW50ID0gcGFyZW50OworCisJc2Nhbi0+b3V0 ZXJKb2luID0gcGxhbi0+b3V0ZXJKb2luOworCXNjYW4tPmVycm9yT25FcnJvciA9IHBsYW4tPmVy cm9yT25FcnJvcjsKKwlzY2FuLT5wYXRoID0gRGF0dW1HZXRKc29uUGF0aFAocGxhbi0+cGF0aC0+ dmFsdWUtPmNvbnN0dmFsdWUpOworCXNjYW4tPmFyZ3MgPSBhcmdzOworCXNjYW4tPm1jeHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUobWN4dCwgIkpzb25UYWJsZUV4ZWNDb250ZXh0IiwKKwkJCQkJ CQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBTZXQgYWZ0ZXIgc2V0 dGluZ3Mgc2Nhbi0+YXJncyBhbmQgc2Nhbi0+bWN4dCwgYmVjYXVzZSB0aGUgcmVjdXJzaXZlCisJ ICogY2FsbCB3YW50cyB0byB1c2UgdGhvc2UgdmFsdWVzLgorCSAqLworCXNjYW4tPnBsYW4ubmVz dGVkID0gcGxhbi0+Y2hpbGQgPworCQlKc29uVGFibGVJbml0UGxhblN0YXRlKGN4dCwgcGxhbi0+ Y2hpbGQsIChKc29uVGFibGVQbGFuU3RhdGUgKikgc2NhbikgOgorCQlOVUxMOworCisJc2Nhbi0+ Y3VycmVudCA9IFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwlzY2FuLT5jdXJyZW50SXNOdWxsID0g dHJ1ZTsKKworCWZvciAoaSA9IHBsYW4tPmNvbE1pbjsgaSA8PSBwbGFuLT5jb2xNYXg7IGkrKykK KwkJY3h0LT5jb2xleHByc2NhbnNbaV0gPSBzY2FuOworCisJcmV0dXJuIHNjYW47Cit9CisKKy8q IFJlY3Vyc2l2ZWx5IGluaXRpYWxpemUgSlNPTl9UQUJMRSBzY2FuIHN0YXRlICovCitzdGF0aWMg SnNvblRhYmxlUGxhblN0YXRlICoKK0pzb25UYWJsZUluaXRQbGFuU3RhdGUoSnNvblRhYmxlRXhl Y0NvbnRleHQgKiBjeHQsIE5vZGUgKnBsYW4sCisJCQkJCSAgIEpzb25UYWJsZVBsYW5TdGF0ZSAq IHBhcmVudCkKK3sKKwlKc29uVGFibGVQbGFuU3RhdGUgKnN0YXRlOworCisJaWYgKElzQShwbGFu LCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcgKmpvaW4gPSAoSnNv blRhYmxlU2libGluZyAqKSBwbGFuOworCisJCXN0YXRlID0gKEpzb25UYWJsZVBsYW5TdGF0ZSAq KQorCQkJSnNvblRhYmxlSW5pdEpvaW5TdGF0ZShjeHQsIGpvaW4sIHBhcmVudCk7CisJfQorCWVs c2UKKwl7CisJCUpzb25UYWJsZVBsYW4gKnNjYW4gPSBjYXN0Tm9kZShKc29uVGFibGVQbGFuLCBw bGFuKTsKKwkJSnNvblRhYmxlU2NhblN0YXRlICpwYXJlbnRfc2NhbiA9IChKc29uVGFibGVTY2Fu U3RhdGUgKikgcGFyZW50OworCisJCUFzc2VydChwYXJlbnRfc2Nhbik7CisJCXN0YXRlID0gKEpz b25UYWJsZVBsYW5TdGF0ZSAqKQorCQkJSnNvblRhYmxlSW5pdFNjYW5TdGF0ZShjeHQsIHNjYW4s IHBhcmVudCwgcGFyZW50X3NjYW4tPmFyZ3MsCisJCQkJCQkJCSAgIHBhcmVudF9zY2FuLT5tY3h0 KTsKKwl9CisKKwlyZXR1cm4gc3RhdGU7Cit9CisKKy8qCisgKiBKc29uVGFibGVJbml0T3BhcXVl CisgKgkJRmlsbCBpbiBUYWJsZUZ1bmNTY2FuU3RhdGUtPm9wYXF1ZSBmb3IgSnNvblRhYmxlIHBy b2Nlc3NvcgorICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlSW5pdE9wYXF1ZShUYWJsZUZ1bmNT Y2FuU3RhdGUgKnN0YXRlLCBpbnQgbmF0dHMpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4 dDsKKwlQbGFuU3RhdGUgICpwcyA9ICZzdGF0ZS0+c3MucHM7CisJVGFibGVGdW5jU2NhbiAqdGZz ID0gY2FzdE5vZGUoVGFibGVGdW5jU2NhbiwgcHMtPnBsYW4pOworCVRhYmxlRnVuYyAgKnRmID0g dGZzLT50YWJsZWZ1bmM7CisJSnNvblRhYmxlUGxhbiAqcm9vdCA9IGNhc3ROb2RlKEpzb25UYWJs ZVBsYW4sIHRmLT5wbGFuKTsKKwlKc29uRXhwciAgICpqZSA9IGNhc3ROb2RlKEpzb25FeHByLCB0 Zi0+ZG9jZXhwcik7CisJTGlzdAkgICAqYXJncyA9IE5JTDsKKworCWN4dCA9IHBhbGxvYzAoc2l6 ZW9mKEpzb25UYWJsZUV4ZWNDb250ZXh0KSk7CisJY3h0LT5tYWdpYyA9IEpTT05fVEFCTEVfRVhF Q19DT05URVhUX01BR0lDOworCisJaWYgKHN0YXRlLT5wYXNzaW5ndmFsZXhwcnMpCisJeworCQlM aXN0Q2VsbCAgICpleHBybGM7CisJCUxpc3RDZWxsICAgKm5hbWVsYzsKKworCQlBc3NlcnQobGlz dF9sZW5ndGgoc3RhdGUtPnBhc3Npbmd2YWxleHBycykgPT0KKwkJCSAgIGxpc3RfbGVuZ3RoKGpl LT5wYXNzaW5nX25hbWVzKSk7CisJCWZvcmJvdGgoZXhwcmxjLCBzdGF0ZS0+cGFzc2luZ3ZhbGV4 cHJzLAorCQkJCW5hbWVsYywgamUtPnBhc3NpbmdfbmFtZXMpCisJCXsKKwkJCUV4cHJTdGF0ZSAg KnN0YXRlID0gbGZpcnN0X25vZGUoRXhwclN0YXRlLCBleHBybGMpOworCQkJU3RyaW5nCSAgICpu YW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBuYW1lbGMpOworCQkJSnNvblBhdGhWYXJpYWJsZSAq dmFyID0gcGFsbG9jKHNpemVvZigqdmFyKSk7CisKKwkJCXZhci0+bmFtZSA9IHBzdHJkdXAobmFt ZS0+c3ZhbCk7CisJCQl2YXItPnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgc3RhdGUtPmV4cHIp OworCQkJdmFyLT50eXBtb2QgPSBleHByVHlwbW9kKChOb2RlICopIHN0YXRlLT5leHByKTsKKwor CQkJLyoKKwkJCSAqIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGFuZCBzYXZlIHRoZSB2YWx1ZSB0 byBiZSByZXR1cm5lZCBieQorCQkJICogR2V0SnNvblBhdGhWYXIoKS4KKwkJCSAqLworCQkJdmFy LT52YWx1ZSA9IEV4ZWNFdmFsRXhwcihzdGF0ZSwgcHMtPnBzX0V4cHJDb250ZXh0LAorCQkJCQkJ CQkJICAmdmFyLT5pc251bGwpOworCisJCQlhcmdzID0gbGFwcGVuZChhcmdzLCB2YXIpOworCQl9 CisJfQorCisJY3h0LT5jb2xleHByc2NhbnMgPSBwYWxsb2Moc2l6ZW9mKEpzb25UYWJsZVNjYW5T dGF0ZSAqKSAqCisJCQkJCQkJICAgbGlzdF9sZW5ndGgodGYtPmNvbHZhbGV4cHJzKSk7CisKKwlj eHQtPnJvb3QgPSBKc29uVGFibGVJbml0U2NhblN0YXRlKGN4dCwgcm9vdCwgTlVMTCwgYXJncywK KwkJCQkJCQkJCSAgIEN1cnJlbnRNZW1vcnlDb250ZXh0KTsKKwlzdGF0ZS0+b3BhcXVlID0gY3h0 OworfQorCisvKiBSZXNldCBzY2FuIGl0ZXJhdG9yIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGl0 ZW0gbGlzdCAqLworc3RhdGljIHZvaWQKK0pzb25UYWJsZVJlc2NhbihKc29uVGFibGVTY2FuU3Rh dGUgKnNjYW4pCit7CisJSnNvblZhbHVlTGlzdEluaXRJdGVyYXRvcigmc2Nhbi0+Zm91bmQsICZz Y2FuLT5pdGVyKTsKKwlzY2FuLT5jdXJyZW50ID0gUG9pbnRlckdldERhdHVtKE5VTEwpOworCXNj YW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCXNjYW4tPmFkdmFuY2VOZXN0ZWQgPSBmYWxzZTsK KwlzY2FuLT5vcmRpbmFsID0gMDsKK30KKworLyogUmVzZXQgY29udGV4dCBpdGVtIG9mIGEgc2Nh biwgZXhlY3V0ZSBKU09OIHBhdGggYW5kIHJlc2V0IGEgc2NhbiAqLworc3RhdGljIHZvaWQKK0pz b25UYWJsZVJlc2V0Q29udGV4dEl0ZW0oSnNvblRhYmxlU2NhblN0YXRlICpzY2FuLCBEYXR1bSBp dGVtKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7 CisJSnNvbmIJICAgKmpzID0gKEpzb25iICopIERhdHVtR2V0SnNvbmJQKGl0ZW0pOworCisJSnNv blZhbHVlTGlzdENsZWFyKCZzY2FuLT5mb3VuZCk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXRPbmx5 KHNjYW4tPm1jeHQpOworCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHNjYW4tPm1j eHQpOworCisJcmVzID0gZXhlY3V0ZUpzb25QYXRoKHNjYW4tPnBhdGgsIHNjYW4tPmFyZ3MsCisJ CQkJCQkgIEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAganMsIHNj YW4tPmVycm9yT25FcnJvciwgJnNjYW4tPmZvdW5kLAorCQkJCQkJICBmYWxzZSAvKiBGSVhNRSAq LyApOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisKKwlpZiAoanBlcklzRXJy b3IocmVzKSkKKwl7CisJCUFzc2VydCghc2Nhbi0+ZXJyb3JPbkVycm9yKTsKKwkJSnNvblZhbHVl TGlzdENsZWFyKCZzY2FuLT5mb3VuZCk7CS8qIEVNUFRZIE9OIEVSUk9SIGNhc2UgKi8KKwl9CisK KwlKc29uVGFibGVSZXNjYW4oc2Nhbik7Cit9CisKKy8qCisgKiBKc29uVGFibGVTZXREb2N1bWVu dAorICoJCUluc3RhbGwgdGhlIGlucHV0IGRvY3VtZW50CisgKi8KK3N0YXRpYyB2b2lkCitKc29u VGFibGVTZXREb2N1bWVudChUYWJsZUZ1bmNTY2FuU3RhdGUgKnN0YXRlLCBEYXR1bSB2YWx1ZSkK K3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0ID0KKwkJR2V0SnNvblRhYmxlRXhlY0NvbnRl eHQoc3RhdGUsICJKc29uVGFibGVTZXREb2N1bWVudCIpOworCisJSnNvblRhYmxlUmVzZXRDb250 ZXh0SXRlbShjeHQtPnJvb3QsIHZhbHVlKTsKK30KKworLyogUmVjdXJzaXZlbHkgcmVzZXQgc2Nh biBhbmQgaXRzIGNoaWxkIG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUmVzY2FuUmVj dXJzaXZlKEpzb25UYWJsZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCWlmIChzdGF0ZS0+dHlwZSA9 PSBKU09OX1RBQkxFX0pPSU5fU1RBVEUpCisJeworCQlKc29uVGFibGVKb2luU3RhdGUgKmpvaW4g PSAoSnNvblRhYmxlSm9pblN0YXRlICopIHN0YXRlOworCisJCUpzb25UYWJsZVJlc2NhblJlY3Vy c2l2ZShqb2luLT5sZWZ0KTsKKwkJSnNvblRhYmxlUmVzY2FuUmVjdXJzaXZlKGpvaW4tPnJpZ2h0 KTsKKwkJam9pbi0+YWR2YW5jZVJpZ2h0ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCUpzb25U YWJsZVNjYW5TdGF0ZSAqc2NhbiA9IChKc29uVGFibGVTY2FuU3RhdGUgKikgc3RhdGU7CisKKwkJ QXNzZXJ0KHN0YXRlLT50eXBlID09IEpTT05fVEFCTEVfU0NBTl9TVEFURSk7CisJCUpzb25UYWJs ZVJlc2NhbihzY2FuKTsKKwkJaWYgKHNjYW4tPnBsYW4ubmVzdGVkKQorCQkJSnNvblRhYmxlUmVz Y2FuUmVjdXJzaXZlKHNjYW4tPnBsYW4ubmVzdGVkKTsKKwl9Cit9CisKKy8qCisgKiBGZXRjaCBu ZXh0IHJvdyBmcm9tIGEgY3Jvc3MvdW5pb24gam9pbmVkIHNjYW4uCisgKgorICogUmV0dXJucyBm YWxzZSBhdCB0aGUgZW5kIG9mIGEgc2NhbiwgdHJ1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBi b29sCitKc29uVGFibGVQbGFuTmV4dFJvdyhKc29uVGFibGVQbGFuU3RhdGUgKiBzdGF0ZSkKK3sK KwlKc29uVGFibGVKb2luU3RhdGUgKmpvaW47CisKKwlpZiAoc3RhdGUtPnR5cGUgPT0gSlNPTl9U QUJMRV9TQ0FOX1NUQVRFKQorCQlyZXR1cm4gSnNvblRhYmxlU2Nhbk5leHRSb3coKEpzb25UYWJs ZVNjYW5TdGF0ZSAqKSBzdGF0ZSk7CisKKwlqb2luID0gKEpzb25UYWJsZUpvaW5TdGF0ZSAqKSBz dGF0ZTsKKwlpZiAoam9pbi0+YWR2YW5jZVJpZ2h0KQorCXsKKwkJLyogZmV0Y2ggbmV4dCBpbm5l ciByb3cgKi8KKwkJaWYgKEpzb25UYWJsZVBsYW5OZXh0Um93KGpvaW4tPnJpZ2h0KSkKKwkJCXJl dHVybiB0cnVlOworCisJCS8qIGlubmVyIHJvd3MgYXJlIGV4aGF1c3RlZCAqLworCQlpZiAoam9p bi0+Y3Jvc3MpCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSBmYWxzZTsgLyogbmV4dCBvdXRlciBy b3cgKi8KKwkJZWxzZQorCQkJcmV0dXJuIGZhbHNlOwkJLyogZW5kIG9mIHNjYW4gKi8KKwl9CisK Kwl3aGlsZSAoIWpvaW4tPmFkdmFuY2VSaWdodCkKKwl7CisJCS8qIGZldGNoIG5leHQgb3V0ZXIg cm93ICovCisJCWJvb2wJCW1vcmUgPSBKc29uVGFibGVQbGFuTmV4dFJvdyhqb2luLT5sZWZ0KTsK KworCQlpZiAoam9pbi0+Y3Jvc3MpCisJCXsKKwkJCWlmICghbW9yZSkKKwkJCQlyZXR1cm4gZmFs c2U7CS8qIGVuZCBvZiBzY2FuICovCisKKwkJCUpzb25UYWJsZVJlc2NhblJlY3Vyc2l2ZShqb2lu LT5yaWdodCk7CisKKwkJCWlmICghSnNvblRhYmxlUGxhbk5leHRSb3coam9pbi0+cmlnaHQpKQor CQkJCWNvbnRpbnVlOwkJLyogbmV4dCBvdXRlciByb3cgKi8KKworCQkJam9pbi0+YWR2YW5jZVJp Z2h0ID0gdHJ1ZTsJLyogbmV4dCBpbm5lciByb3cgKi8KKwkJfQorCQllbHNlIGlmICghbW9yZSkK KwkJeworCQkJaWYgKCFKc29uVGFibGVQbGFuTmV4dFJvdyhqb2luLT5yaWdodCkpCisJCQkJcmV0 dXJuIGZhbHNlOwkvKiBlbmQgb2Ygc2NhbiAqLworCisJCQlqb2luLT5hZHZhbmNlUmlnaHQgPSB0 cnVlOwkvKiBuZXh0IGlubmVyIHJvdyAqLworCQl9CisKKwkJYnJlYWs7CisJfQorCisJcmV0dXJu IHRydWU7Cit9CisKKy8qIFJlY3Vyc2l2ZWx5IHNldCAncmVzZXQnIGZsYWcgb2Ygc2NhbiBhbmQg aXRzIGNoaWxkIG5vZGVzICovCitzdGF0aWMgdm9pZAorSnNvblRhYmxlUGxhblJlc2V0KEpzb25U YWJsZVBsYW5TdGF0ZSAqIHN0YXRlKQoreworCWlmIChzdGF0ZS0+dHlwZSA9PSBKU09OX1RBQkxF X0pPSU5fU1RBVEUpCisJeworCQlKc29uVGFibGVKb2luU3RhdGUgKmpvaW4gPSAoSnNvblRhYmxl Sm9pblN0YXRlICopIHN0YXRlOworCisJCUpzb25UYWJsZVBsYW5SZXNldChqb2luLT5sZWZ0KTsK KwkJSnNvblRhYmxlUGxhblJlc2V0KGpvaW4tPnJpZ2h0KTsKKwkJam9pbi0+YWR2YW5jZVJpZ2h0 ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCUpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbjsKKwor CQlBc3NlcnQoc3RhdGUtPnR5cGUgPT0gSlNPTl9UQUJMRV9TQ0FOX1NUQVRFKTsKKwkJc2NhbiA9 IChKc29uVGFibGVTY2FuU3RhdGUgKikgc3RhdGU7CisJCXNjYW4tPnJlc2V0ID0gdHJ1ZTsKKwkJ c2Nhbi0+YWR2YW5jZU5lc3RlZCA9IGZhbHNlOworCisJCWlmIChzY2FuLT5wbGFuLm5lc3RlZCkK KwkJCUpzb25UYWJsZVBsYW5SZXNldChzY2FuLT5wbGFuLm5lc3RlZCk7CisJfQorfQorCisvKgor ICogRmV0Y2ggbmV4dCByb3cgZnJvbSBhIHNpbXBsZSBzY2FuIHdpdGggb3V0ZXIvaW5uZXIgam9p bmVkIG5lc3RlZCBzdWJzY2Fucy4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGF0IHRoZSBlbmQgb2Yg YSBzY2FuLCB0cnVlIG90aGVyd2lzZS4KKyAqLworc3RhdGljIGJvb2wKK0pzb25UYWJsZVNjYW5O ZXh0Um93KEpzb25UYWJsZVNjYW5TdGF0ZSAqc2NhbikKK3sKKwkvKiByZXNldCBjb250ZXh0IGl0 ZW0gaWYgcmVxdWVzdGVkICovCisJaWYgKHNjYW4tPnJlc2V0KQorCXsKKwkJSnNvblRhYmxlU2Nh blN0YXRlICpwYXJlbnRfc2NhbiA9CisJCQkoSnNvblRhYmxlU2NhblN0YXRlICopIHNjYW4tPnBs YW4ucGFyZW50OworCisJCUFzc2VydChwYXJlbnRfc2NhbiAmJiAhcGFyZW50X3NjYW4tPmN1cnJl bnRJc051bGwpOworCQlKc29uVGFibGVSZXNldENvbnRleHRJdGVtKHNjYW4sIHBhcmVudF9zY2Fu LT5jdXJyZW50KTsKKwkJc2Nhbi0+cmVzZXQgPSBmYWxzZTsKKwl9CisKKwlpZiAoc2Nhbi0+YWR2 YW5jZU5lc3RlZCkKKwl7CisJCS8qIGZldGNoIG5leHQgbmVzdGVkIHJvdyAqLworCQlzY2FuLT5h ZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlUGxhbk5leHRSb3coc2Nhbi0+cGxhbi5uZXN0ZWQpOwor CisJCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVkKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJZm9y ICg7OykKKwl7CisJCS8qIGZldGNoIG5leHQgcm93ICovCisJCUpzb25iVmFsdWUgKmpidiA9IEpz b25WYWx1ZUxpc3ROZXh0KCZzY2FuLT5mb3VuZCwgJnNjYW4tPml0ZXIpOworCQlNZW1vcnlDb250 ZXh0IG9sZGN4dDsKKworCQlpZiAoIWpidikKKwkJeworCQkJc2Nhbi0+Y3VycmVudCA9IFBvaW50 ZXJHZXREYXR1bShOVUxMKTsKKwkJCXNjYW4tPmN1cnJlbnRJc051bGwgPSB0cnVlOworCQkJcmV0 dXJuIGZhbHNlOwkJLyogZW5kIG9mIHNjYW4gKi8KKwkJfQorCisJCS8qIHNldCBjdXJyZW50IHJv dyBpdGVtICovCisJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzY2FuLT5tY3h0KTsK KwkJc2Nhbi0+Y3VycmVudCA9IEpzb25iUEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKGpidikp OworCQlzY2FuLT5jdXJyZW50SXNOdWxsID0gZmFsc2U7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworCisJCXNjYW4tPm9yZGluYWwrKzsKKworCQlpZiAoIXNjYW4tPnBsYW4ubmVz dGVkKQorCQkJYnJlYWs7CisKKwkJSnNvblRhYmxlUGxhblJlc2V0KHNjYW4tPnBsYW4ubmVzdGVk KTsKKworCQlzY2FuLT5hZHZhbmNlTmVzdGVkID0gSnNvblRhYmxlUGxhbk5leHRSb3coc2Nhbi0+ cGxhbi5uZXN0ZWQpOworCisJCWlmIChzY2FuLT5hZHZhbmNlTmVzdGVkIHx8IHNjYW4tPm91dGVy Sm9pbikKKwkJCWJyZWFrOworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogSnNvblRh YmxlRmV0Y2hSb3cKKyAqCQlQcmVwYXJlIHRoZSBuZXh0ICJjdXJyZW50IiB0dXBsZSBmb3IgdXBj b21pbmcgR2V0VmFsdWUgY2FsbHMuCisgKgkJUmV0dXJucyBmYWxzZSBpZiBubyBtb3JlIHJvd3Mg Y2FuIGJlIHJldHVybmVkLgorICovCitzdGF0aWMgYm9vbAorSnNvblRhYmxlRmV0Y2hSb3coVGFi bGVGdW5jU2NhblN0YXRlICpzdGF0ZSkKK3sKKwlKc29uVGFibGVFeGVjQ29udGV4dCAqY3h0ID0K KwkJR2V0SnNvblRhYmxlRXhlY0NvbnRleHQoc3RhdGUsICJKc29uVGFibGVGZXRjaFJvdyIpOwor CisJcmV0dXJuIEpzb25UYWJsZVNjYW5OZXh0Um93KGN4dC0+cm9vdCk7Cit9CisKKy8qCisgKiBK c29uVGFibGVHZXRWYWx1ZQorICoJCVJldHVybiB0aGUgdmFsdWUgZm9yIGNvbHVtbiBudW1iZXIg J2NvbG51bScgZm9yIHRoZSBjdXJyZW50IHJvdy4KKyAqCisgKiBUaGlzIGxlYWtzIG1lbW9yeSwg c28gYmUgc3VyZSB0byByZXNldCBvZnRlbiB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzCisgKiBj YWxsZWQuCisgKi8KK3N0YXRpYyBEYXR1bQorSnNvblRhYmxlR2V0VmFsdWUoVGFibGVGdW5jU2Nh blN0YXRlICpzdGF0ZSwgaW50IGNvbG51bSwKKwkJCQkgIE9pZCB0eXBpZCwgaW50MzIgdHlwbW9k LCBib29sICppc251bGwpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4dCA9CisJCUdldEpz b25UYWJsZUV4ZWNDb250ZXh0KHN0YXRlLCAiSnNvblRhYmxlR2V0VmFsdWUiKTsKKwlFeHByQ29u dGV4dCAqZWNvbnRleHQgPSBzdGF0ZS0+c3MucHMucHNfRXhwckNvbnRleHQ7CisJRXhwclN0YXRl ICAqZXN0YXRlID0gbGlzdF9udGgoc3RhdGUtPmNvbHZhbGV4cHJzLCBjb2xudW0pOworCUpzb25U YWJsZVNjYW5TdGF0ZSAqc2NhbiA9IGN4dC0+Y29sZXhwcnNjYW5zW2NvbG51bV07CisJRGF0dW0J CXJlc3VsdDsKKworCWlmIChzY2FuLT5jdXJyZW50SXNOdWxsKQkvKiBOVUxMIGZyb20gb3V0ZXIv dW5pb24gam9pbiAqLworCXsKKwkJcmVzdWx0ID0gKERhdHVtKSAwOworCQkqaXNudWxsID0gdHJ1 ZTsKKwl9CisJZWxzZSBpZiAoZXN0YXRlKQkJCS8qIHJlZ3VsYXIgY29sdW1uICovCisJeworCQlE YXR1bQkJc2F2ZWRfY2FzZVZhbHVlID0gZWNvbnRleHQtPmNhc2VWYWx1ZV9kYXR1bTsKKwkJYm9v bAkJc2F2ZWRfY2FzZUlzTnVsbCA9IGVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxsOworCisJCS8q IFBhc3MgdGhlIHZhbHVlIGZvciBDYXNlVGVzdEV4cHIgdGhhdCBtYXkgYmUgcHJlc2VudCBpbiBj b2xleHByICovCisJCWVjb250ZXh0LT5jYXNlVmFsdWVfZGF0dW0gPSBzY2FuLT5jdXJyZW50Owor CQllY29udGV4dC0+Y2FzZVZhbHVlX2lzTnVsbCA9IGZhbHNlOworCisJCXJlc3VsdCA9IEV4ZWNF dmFsRXhwcihlc3RhdGUsIGVjb250ZXh0LCBpc251bGwpOworCisJCWVjb250ZXh0LT5jYXNlVmFs dWVfZGF0dW0gPSBzYXZlZF9jYXNlVmFsdWU7CisJCWVjb250ZXh0LT5jYXNlVmFsdWVfaXNOdWxs ID0gc2F2ZWRfY2FzZUlzTnVsbDsKKwl9CisJZWxzZQorCXsKKwkJcmVzdWx0ID0gSW50MzJHZXRE YXR1bShzY2FuLT5vcmRpbmFsKTsJLyogb3JkaW5hbGl0eSBjb2x1bW4gKi8KKwkJKmlzbnVsbCA9 IGZhbHNlOworCX0KKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBKc29uVGFibGVEZXN0 cm95T3BhcXVlCisgKi8KK3N0YXRpYyB2b2lkCitKc29uVGFibGVEZXN0cm95T3BhcXVlKFRhYmxl RnVuY1NjYW5TdGF0ZSAqc3RhdGUpCit7CisJSnNvblRhYmxlRXhlY0NvbnRleHQgKmN4dCA9CisJ CUdldEpzb25UYWJsZUV4ZWNDb250ZXh0KHN0YXRlLCAiSnNvblRhYmxlRGVzdHJveU9wYXF1ZSIp OworCisJLyogbm90IHZhbGlkIGFueW1vcmUgKi8KKwljeHQtPm1hZ2ljID0gMDsKKworCXN0YXRl LT5vcGFxdWUgPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDg2NTY1 NmNiYTIuLjJjOTUxOTc4NmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKQEAgLTUyMSw2 ICs1MjEsOCBAQCBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBz dGF0aWMgdm9pZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9u cyk7CiBzdGF0aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOworc3Rh dGljIHZvaWQgZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFibGVQ bGFuICpub2RlLAorCQkJCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KTsKIAogI2RlZmluZSBvbmx5X21hcmtlcihydGUpICAoKHJ0ZSktPmluaCA/ICIi IDogIk9OTFkgIikKIApAQCAtODYyNyw3ICs4NjI5LDggQEAgZ2V0X2pzb25fYmVoYXZpb3IoSnNv bkJlaGF2aW9yICpiZWhhdmlvciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogLyoKICAqIGdl dF9qc29uX2V4cHJfb3B0aW9ucwogICoKLSAqIFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9y IEpTT05fUVVFUlksIEpTT05fVkFMVUUsIEpTT05fRVhJU1RTLgorICogUGFyc2UgYmFjayBjb21t b24gb3B0aW9ucyBmb3IgSlNPTl9RVUVSWSwgSlNPTl9WQUxVRSwgSlNPTl9FWElTVFMgYW5kCisg KiBKU09OX1RBQkxFIGNvbHVtbnMuCiAgKi8KIHN0YXRpYyB2b2lkCiBnZXRfanNvbl9leHByX29w dGlvbnMoSnNvbkV4cHIgKmpzZXhwciwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LApAQCAtOTg3 NCw2ICs5ODc3LDkgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQg KmNvbnRleHQsCiAJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKIAkJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKIAkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0 OgorCQkJCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgSnNvbkV4cHIgdHlwZTogJWQiLCBqZXhw ci0+b3ApOworCQkJCQkJYnJlYWs7CiAJCQkJfQogCiAJCQkJZ2V0X3J1bGVfZXhwcihqZXhwci0+ Zm9ybWF0dGVkX2V4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CkBAIC0xMTI0MCwxNiArMTEy NDYsMTQgQEAgZ2V0X3N1YmxpbmtfZXhwcihTdWJMaW5rICpzdWJsaW5rLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAKIAogLyogLS0tLS0tLS0tLQotICogZ2V0X3RhYmxlZnVuYwkJCS0gUGFy c2UgYmFjayBhIHRhYmxlIGZ1bmN0aW9uCisgKiBnZXRfeG1sdGFibGUJCQktIFBhcnNlIGJhY2sg YSBYTUxUQUJMRSBmdW5jdGlvbgogICogLS0tLS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotZ2V0 X3RhYmxlZnVuYyhUYWJsZUZ1bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wg c2hvd2ltcGxpY2l0KQorZ2V0X3htbHRhYmxlKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4 dCAqY29udGV4dCwgYm9vbCBzaG93aW1wbGljaXQpCiB7CiAJU3RyaW5nSW5mbwlidWYgPSBjb250 ZXh0LT5idWY7CiAKLQkvKiBYTUxUQUJMRSBpcyB0aGUgb25seSBleGlzdGluZyBpbXBsZW1lbnRh dGlvbi4gICovCi0KIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlhNTFRBQkxFKCIpOwog CiAJaWYgKHRmLT5uc191cmlzICE9IE5JTCkKQEAgLTExMzQwLDYgKzExMzQ0LDI3MSBAQCBnZXRf dGFibGVmdW5jKFRhYmxlRnVuYyAqdGYsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwgYm9vbCBz aG93aW1wbGljaXQpCiAJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogfQogCisvKgor ICogZ2V0X2pzb25fbmVzdGVkX2NvbHVtbnMgLSBQYXJzZSBiYWNrIG5lc3RlZCBKU09OX1RBQkxF IGNvbHVtbnMKKyAqLworc3RhdGljIHZvaWQKK2dldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5z KFRhYmxlRnVuYyAqdGYsIE5vZGUgKm5vZGUsCisJCQkJCQkJICBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0LAorCQkJCQkJCSAgYm9vbCBuZWVkY29tbWEpCit7CisJ aWYgKElzQShub2RlLCBKc29uVGFibGVTaWJsaW5nKSkKKwl7CisJCUpzb25UYWJsZVNpYmxpbmcg Km4gPSAoSnNvblRhYmxlU2libGluZyAqKSBub2RlOworCisJCWdldF9qc29uX3RhYmxlX25lc3Rl ZF9jb2x1bW5zKHRmLCBuLT5sYXJnLCBjb250ZXh0LCBzaG93aW1wbGljaXQsCisJCQkJCQkJCQkg IG5lZWRjb21tYSk7CisJCWdldF9qc29uX3RhYmxlX25lc3RlZF9jb2x1bW5zKHRmLCBuLT5yYXJn LCBjb250ZXh0LCBzaG93aW1wbGljaXQsIHRydWUpOworCX0KKwllbHNlCisJeworCQlKc29uVGFi bGVQbGFuICpuID0gY2FzdE5vZGUoSnNvblRhYmxlUGxhbiwgbm9kZSk7CisKKwkJaWYgKG5lZWRj b21tYSkKKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJywnKTsKKworCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcihjb250ZXh0LT5idWYsICcgJyk7CisJCWFwcGVuZENvbnRleHRL ZXl3b3JkKGNvbnRleHQsICJORVNURUQgUEFUSCAiLCAwLCAwLCAwKTsKKwkJZ2V0X2NvbnN0X2V4 cHIobi0+cGF0aC0+dmFsdWUsIGNvbnRleHQsIC0xKTsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjb250 ZXh0LT5idWYsICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKG4tPnBhdGgtPm5hbWUpKTsKKwkJ Z2V0X2pzb25fdGFibGVfY29sdW1ucyh0ZiwgbiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwl9 Cit9CisKKy8qCisgKiBnZXRfanNvbl90YWJsZV9wbGFuIC0gUGFyc2UgYmFjayBhIEpTT05fVEFC TEUgcGxhbgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfcGxhbihUYWJsZUZ1bmMg KnRmLCBOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCisJCQkJCWJvb2wgcGFy ZW50aGVzaXplKQoreworCWlmIChwYXJlbnRoZXNpemUpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGNvbnRleHQtPmJ1ZiwgJygnKTsKKworCWlmIChJc0Eobm9kZSwgSnNvblRhYmxlU2libGluZykp CisJeworCQlKc29uVGFibGVTaWJsaW5nICpuID0gKEpzb25UYWJsZVNpYmxpbmcgKikgbm9kZTsK KworCQlnZXRfanNvbl90YWJsZV9wbGFuKHRmLCBuLT5sYXJnLCBjb250ZXh0LAorCQkJCQkJCUlz QShuLT5sYXJnLCBKc29uVGFibGVTaWJsaW5nKSB8fAorCQkJCQkJCWNhc3ROb2RlKEpzb25UYWJs ZVBsYW4sIG4tPmxhcmcpLT5jaGlsZCk7CisKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjb250 ZXh0LT5idWYsIG4tPmNyb3NzID8gIiBDUk9TUyAiIDogIiBVTklPTiAiKTsKKworCQlnZXRfanNv bl90YWJsZV9wbGFuKHRmLCBuLT5yYXJnLCBjb250ZXh0LAorCQkJCQkJCUlzQShuLT5yYXJnLCBK c29uVGFibGVTaWJsaW5nKSB8fAorCQkJCQkJCWNhc3ROb2RlKEpzb25UYWJsZVBsYW4sIG4tPnJh cmcpLT5jaGlsZCk7CisJfQorCWVsc2UKKwl7CisJCUpzb25UYWJsZVBsYW4gKm4gPSBjYXN0Tm9k ZShKc29uVGFibGVQbGFuLCBub2RlKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRl eHQtPmJ1ZiwgcXVvdGVfaWRlbnRpZmllcihuLT5wYXRoLT5uYW1lKSk7CisKKwkJaWYgKG4tPmNo aWxkKQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGNvbnRleHQtPmJ1ZiwKKwkJCQkJ CQkJICAgbi0+b3V0ZXJKb2luID8gIiBPVVRFUiAiIDogIiBJTk5FUiAiKTsKKwkJCWdldF9qc29u X3RhYmxlX3BsYW4odGYsIG4tPmNoaWxkLCBjb250ZXh0LAorCQkJCQkJCQlJc0Eobi0+Y2hpbGQs IEpzb25UYWJsZVNpYmxpbmcpKTsKKwkJfQorCX0KKworCWlmIChwYXJlbnRoZXNpemUpCisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyknKTsKK30KKworLyoKKyAqIGdldF9q c29uX3RhYmxlX2NvbHVtbnMgLSBQYXJzZSBiYWNrIEpTT05fVEFCTEUgY29sdW1ucworICovCitz dGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGVfY29sdW1ucyhUYWJsZUZ1bmMgKnRmLCBKc29uVGFi bGVQbGFuICpwbGFuLAorCQkJCQkgICBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hv d2ltcGxpY2l0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCUpzb25FeHBy ICAgKmpleHByID0gY2FzdE5vZGUoSnNvbkV4cHIsIHRmLT5kb2NleHByKTsKKwlMaXN0Q2VsbCAg ICpsY19jb2xuYW1lOworCUxpc3RDZWxsICAgKmxjX2NvbHR5cGU7CisJTGlzdENlbGwgICAqbGNf Y29sdHlwbW9kOworCUxpc3RDZWxsICAgKmxjX2NvbHZhbGV4cHI7CisJaW50CQkJY29sbnVtID0g MDsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwlhcHBlbmRDb250ZXh0S2V5 d29yZChjb250ZXh0LCAiQ09MVU1OUyAoIiwgMCwgMCwgMCk7CisKKwlpZiAoUFJFVFRZX0lOREVO VChjb250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwgKz0gUFJFVFRZSU5ERU5UX1ZBUjsK KworCWZvcmZvdXIobGNfY29sbmFtZSwgdGYtPmNvbG5hbWVzLAorCQkJbGNfY29sdHlwZSwgdGYt PmNvbHR5cGVzLAorCQkJbGNfY29sdHlwbW9kLCB0Zi0+Y29sdHlwbW9kcywKKwkJCWxjX2NvbHZh bGV4cHIsIHRmLT5jb2x2YWxleHBycykKKwl7CisJCWNoYXIJICAgKmNvbG5hbWUgPSBzdHJWYWwo bGZpcnN0KGxjX2NvbG5hbWUpKTsKKwkJSnNvbkV4cHIgICAqY29sZXhwcjsKKwkJT2lkCQkJdHlw aWQ7CisJCWludDMyCQl0eXBtb2Q7CisJCWJvb2wJCW9yZGluYWxpdHk7CisJCUpzb25CZWhhdmlv clR5cGUgZGVmYXVsdF9iZWhhdmlvcjsKKworCQl0eXBpZCA9IGxmaXJzdF9vaWQobGNfY29sdHlw ZSk7CisJCXR5cG1vZCA9IGxmaXJzdF9pbnQobGNfY29sdHlwbW9kKTsKKwkJY29sZXhwciA9IGNh c3ROb2RlKEpzb25FeHByLCBsZmlyc3QobGNfY29sdmFsZXhwcikpOworCisJCWlmIChjb2xudW0g PCBwbGFuLT5jb2xNaW4pCisJCXsKKwkJCWNvbG51bSsrOworCQkJY29udGludWU7CisJCX0KKwor CQlpZiAoY29sbnVtID4gcGxhbi0+Y29sTWF4KQorCQkJYnJlYWs7CisKKwkJaWYgKGNvbG51bSA+ IHBsYW4tPmNvbE1pbikKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwor CQljb2xudW0rKzsKKworCQlvcmRpbmFsaXR5ID0gIWNvbGV4cHI7CisKKwkJYXBwZW5kQ29udGV4 dEtleXdvcmQoY29udGV4dCwgIiIsIDAsIDAsIDApOworCisJCWFwcGVuZFN0cmluZ0luZm8oYnVm LCAiJXMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpLAorCQkJCQkJIG9yZGluYWxpdHkg PyAiRk9SIE9SRElOQUxJVFkiIDoKKwkJCQkJCSBmb3JtYXRfdHlwZV93aXRoX3R5cGVtb2QodHlw aWQsIHR5cG1vZCkpOworCQlpZiAob3JkaW5hbGl0eSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChj b2xleHByLT5vcCA9PSBKU09OX0VYSVNUU19PUCkKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhidWYsICIgRVhJU1RTIik7CisJCQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklP Ul9GQUxTRTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChjb2xleHByLT5vcCA9PSBKU09OX1FV RVJZX09QKQorCQkJeworCQkJCWNoYXIJCXR5cGNhdGVnb3J5OworCQkJCWJvb2wJCXR5cGlzcHJl ZmVycmVkOworCisJCQkJZ2V0X3R5cGVfY2F0ZWdvcnlfcHJlZmVycmVkKHR5cGlkLCAmdHlwY2F0 ZWdvcnksICZ0eXBpc3ByZWZlcnJlZCk7CisKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FU RUdPUllfU1RSSU5HKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkJ CQkgICBjb2xleHByLT5mb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9KU09OQiA/CisJ CQkJCQkJCQkJICAgIiBGT1JNQVQgSlNPTkIiIDogIiBGT1JNQVQgSlNPTiIpOworCQkJfQorCisJ CQlkZWZhdWx0X2JlaGF2aW9yID0gSlNPTl9CRUhBVklPUl9OVUxMOworCQl9CisKKwkJaWYgKGpl eHByLT5vbl9lcnJvci0+YnR5cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCWRlZmF1bHRf YmVoYXZpb3IgPSBKU09OX0JFSEFWSU9SX0VSUk9SOworCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIFBBVEggIik7CisKKwkJZ2V0X2pzb25fcGF0aF9zcGVjKGNvbGV4cHItPnBhdGhf c3BlYywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKworCQlnZXRfanNvbl9leHByX29wdGlvbnMo Y29sZXhwciwgY29udGV4dCwgZGVmYXVsdF9iZWhhdmlvcik7CisJfQorCisJaWYgKHBsYW4tPmNo aWxkKQorCQlnZXRfanNvbl90YWJsZV9uZXN0ZWRfY29sdW1ucyh0ZiwgcGxhbi0+Y2hpbGQsIGNv bnRleHQsIHNob3dpbXBsaWNpdCwKKwkJCQkJCQkJCSAgcGxhbi0+Y29sTWF4ID49IHBsYW4tPmNv bE1pbik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChjb250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50 TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKworCWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRl eHQsICIpIiwgMCwgMCwgMCk7Cit9CisKKy8qIC0tLS0tLS0tLS0KKyAqIGdldF9qc29uX3RhYmxl CQkJLSBQYXJzZSBiYWNrIGEgSlNPTl9UQUJMRSBmdW5jdGlvbgorICogLS0tLS0tLS0tLQorICov CitzdGF0aWMgdm9pZAorZ2V0X2pzb25fdGFibGUoVGFibGVGdW5jICp0ZiwgZGVwYXJzZV9jb250 ZXh0ICpjb250ZXh0LCBib29sIHNob3dpbXBsaWNpdCkKK3sKKwlTdHJpbmdJbmZvCWJ1ZiA9IGNv bnRleHQtPmJ1ZjsKKwlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCB0Zi0+ ZG9jZXhwcik7CisJSnNvblRhYmxlUGxhbiAqcm9vdCA9IGNhc3ROb2RlKEpzb25UYWJsZVBsYW4s IHRmLT5wbGFuKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiSlNPTl9UQUJMRSgi KTsKKworCWlmIChQUkVUVFlfSU5ERU5UKGNvbnRleHQpKQorCQljb250ZXh0LT5pbmRlbnRMZXZl bCArPSBQUkVUVFlJTkRFTlRfVkFSOworCisJYXBwZW5kQ29udGV4dEtleXdvcmQoY29udGV4dCwg IiIsIDAsIDAsIDApOworCisJZ2V0X3J1bGVfZXhwcihqZXhwci0+Zm9ybWF0dGVkX2V4cHIsIGNv bnRleHQsIHNob3dpbXBsaWNpdCk7CisKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwg Iik7CisKKwlnZXRfY29uc3RfZXhwcihyb290LT5wYXRoLT52YWx1ZSwgY29udGV4dCwgLTEpOwor CisJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMiLCBxdW90ZV9pZGVudGlmaWVyKHJvb3Qt PnBhdGgtPm5hbWUpKTsKKworCWlmIChqZXhwci0+cGFzc2luZ192YWx1ZXMpCisJeworCQlMaXN0 Q2VsbCAgICpsYzEsCisJCQkJICAgKmxjMjsKKwkJYm9vbAkJbmVlZGNvbW1hID0gZmFsc2U7CisK KwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRDb250ZXh0S2V5d29y ZChjb250ZXh0LCAiUEFTU0lORyAiLCAwLCAwLCAwKTsKKworCQlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJCWNvbnRleHQtPmluZGVudExldmVsICs9IFBSRVRUWUlOREVOVF9WQVI7CisK KwkJZm9yYm90aChsYzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCWxjMiwgamV4cHItPnBh c3NpbmdfdmFsdWVzKQorCQl7CisJCQlpZiAobmVlZGNvbW1hKQorCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCW5lZWRjb21tYSA9IHRydWU7CisKKwkJCWFwcGVuZENv bnRleHRLZXl3b3JkKGNvbnRleHQsICIiLCAwLCAwLCAwKTsKKworCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBsZmlyc3QobGMyKSwgY29udGV4dCwgZmFsc2UpOworCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICIgQVMgJXMiLAorCQkJCQkJCSBxdW90ZV9pZGVudGlmaWVyKChsZmlyc3Rfbm9kZShT dHJpbmcsIGxjMSkpLT5zdmFsKQorCQkJCSk7CisJCX0KKworCQlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJCWNvbnRleHQtPmluZGVudExldmVsIC09IFBSRVRUWUlOREVOVF9WQVI7CisJ fQorCisJZ2V0X2pzb25fdGFibGVfY29sdW1ucyh0Ziwgcm9vdCwgY29udGV4dCwgc2hvd2ltcGxp Y2l0KTsKKworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwlhcHBlbmRDb250ZXh0 S2V5d29yZChjb250ZXh0LCAiUExBTiAiLCAwLCAwLCAwKTsKKwlnZXRfanNvbl90YWJsZV9wbGFu KHRmLCAoTm9kZSAqKSByb290LCBjb250ZXh0LCB0cnVlKTsKKworCWlmIChqZXhwci0+b25fZXJy b3ItPmJ0eXBlICE9IEpTT05fQkVIQVZJT1JfRU1QVFkpCisJCWdldF9qc29uX2JlaGF2aW9yKGpl eHByLT5vbl9lcnJvciwgY29udGV4dCwgIkVSUk9SIik7CisKKwlpZiAoUFJFVFRZX0lOREVOVChj b250ZXh0KSkKKwkJY29udGV4dC0+aW5kZW50TGV2ZWwgLT0gUFJFVFRZSU5ERU5UX1ZBUjsKKwor CWFwcGVuZENvbnRleHRLZXl3b3JkKGNvbnRleHQsICIpIiwgMCwgMCwgMCk7Cit9CisKKy8qIC0t LS0tLS0tLS0KKyAqIGdldF90YWJsZWZ1bmMJCQktIFBhcnNlIGJhY2sgYSB0YWJsZSBmdW5jdGlv bgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9pZAorZ2V0X3RhYmxlZnVuYyhUYWJsZUZ1 bmMgKnRmLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQorewor CS8qIFhNTFRBQkxFIGFuZCBKU09OX1RBQkxFIGFyZSB0aGUgb25seSBleGlzdGluZyBpbXBsZW1l bnRhdGlvbnMuICAqLworCisJaWYgKHRmLT5mdW5jdHlwZSA9PSBURlRfWE1MVEFCTEUpCisJCWdl dF94bWx0YWJsZSh0ZiwgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwllbHNlIGlmICh0Zi0+ZnVu Y3R5cGUgPT0gVEZUX0pTT05fVEFCTEUpCisJCWdldF9qc29uX3RhYmxlKHRmLCBjb250ZXh0LCBz aG93aW1wbGljaXQpOworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBnZXRfZnJvbV9jbGF1c2UJCQkt IFBhcnNlIGJhY2sgYSBGUk9NIGNsYXVzZQogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMTk2 MWQ5ZTBhYS4uZWVkYTAyZTdhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTE5NjksNiArMTk2 OSw4IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlRnVuY1NjYW5TdGF0ZQogCUV4cHJTdGF0ZSAgKnJv d2V4cHI7CQkvKiBzdGF0ZSBmb3Igcm93LWdlbmVyYXRpbmcgZXhwcmVzc2lvbiAqLwogCUxpc3QJ ICAgKmNvbGV4cHJzOwkJLyogc3RhdGUgZm9yIGNvbHVtbi1nZW5lcmF0aW5nIGV4cHJlc3Npb24g Ki8KIAlMaXN0CSAgICpjb2xkZWZleHByczsJLyogc3RhdGUgZm9yIGNvbHVtbiBkZWZhdWx0IGV4 cHJlc3Npb25zICovCisJTGlzdAkgICAqY29sdmFsZXhwcnM7CS8qIHN0YXRlIGZvciBjb2x1bW4g dmFsdWUgZXhwcmVzc2lvbiAqLworCUxpc3QJICAgKnBhc3Npbmd2YWxleHByczsJLyogc3RhdGUg Zm9yIFBBU1NJTkcgYXJndW1lbnQgZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKm5zX25hbWVzOwkJ Lyogc2FtZSBhcyBUYWJsZUZ1bmMubnNfbmFtZXMgKi8KIAlMaXN0CSAgICpuc191cmlzOwkJLyog bGlzdCBvZiBzdGF0ZXMgb2YgbmFtZXNwYWNlIFVSSSBleHBycyAqLwogCUJpdG1hcHNldCAgKm5v dG51bGxzOwkJLyogbnVsbGFiaWxpdHkgZmxhZyBmb3IgZWFjaCBvdXRwdXQgY29sdW1uICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL21ha2VmdW5jcy5oCmluZGV4IDkxZDk1ZmM1MmIuLjZkMjEwNjg0YTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL21h a2VmdW5jcy5oCkBAIC0xMDAsNiArMTAwLDcgQEAgZXh0ZXJuIEluZGV4SW5mbyAqbWFrZUluZGV4 SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLAogCQkJCQkJCQli b29sIGlzcmVhZHksIGJvb2wgY29uY3VycmVudCwKIAkJCQkJCQkJYm9vbCBzdW1tYXJpemluZyk7 CiAKK2V4dGVybiBOb2RlICptYWtlU3RyaW5nQ29uc3QoY2hhciAqc3RyLCBpbnQgbG9jYXRpb24p OwogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFyZywgaW50 IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbUV4dGVuZGVkKGNoYXIgKm5h bWVTcGFjZSwgY2hhciAqbmFtZSwgTm9kZSAqYXJnLAogCQkJCQkJCQkJRGVmRWxlbUFjdGlvbiBk ZWZhY3Rpb24sIGludCBsb2NhdGlvbik7CkBAIC0xMTQsNiArMTE1LDE0IEBAIGV4dGVybiBKc29u VmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpyYXdfZXhwciwgRXhwciAqZm9ybWF0 dGVkX2V4cHIsCiAJCQkJCQkJCQkJSnNvbkZvcm1hdCAqZm9ybWF0KTsKIGV4dGVybiBKc29uQmVo YXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0eXBlLCBOb2RlICpleHBy LAogCQkJCQkJCQkJICBKc29uQ29lcmNpb24gKmNvZXJjaW9uLCBpbnQgbG9jYXRpb24pOworZXh0 ZXJuIEpzb25UYWJsZVBhdGggKm1ha2VKc29uVGFibGVQYXRoKENvbnN0ICpwYXRodmFsdWUsIGNo YXIgKnBhdGhuYW1lKTsKK2V4dGVybiBOb2RlICptYWtlSnNvblRhYmxlUGF0aFNwZWMoY2hhciAq c3RyaW5nLCBjaGFyICpuYW1lLAorCQkJCQkJCQkgICBpbnQgc3RyaW5nX2xvY2F0aW9uLCBpbnQg bmFtZV9sb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZURlZmF1bHRQbGFuKEpz b25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGUsCisJCQkJCQkJCQkgIGludCBsb2NhdGlvbik7 CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZVNpbXBsZVBsYW4oY2hhciAqcGF0aG5hbWUsIGlu dCBsb2NhdGlvbik7CitleHRlcm4gTm9kZSAqbWFrZUpzb25UYWJsZUpvaW5lZFBsYW4oSnNvblRh YmxlUGxhbkpvaW5UeXBlIHR5cGUsCisJCQkJCQkJCQkgTm9kZSAqcGxhbjEsIE5vZGUgKnBsYW4y LCBpbnQgbG9jYXRpb24pOwogZXh0ZXJuIE5vZGUgKm1ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5 LCBOb2RlICp2YWx1ZSk7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpl eHByLCBKc29uRm9ybWF0ICpmb3JtYXQsCiAJCQkJCQkJCSBKc29uVmFsdWVUeXBlIGl0ZW1fdHlw ZSwgYm9vbCB1bmlxdWVfa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCA5YmE2ZWM2YTdl Li40YjIwMzBlOThkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzUwLDYgKzE3NTAsNyBA QCB0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIKIAlKc29uRXhwck9wCW9wOwkJCQkvKiBleHBy ZXNzaW9uIHR5cGUgKi8KIAlKc29uVmFsdWVFeHByICpjb250ZXh0X2l0ZW07CS8qIGNvbnRleHQg aXRlbSBleHByZXNzaW9uICovCiAJTm9kZQkgICAqcGF0aHNwZWM7CQkvKiBKU09OIHBhdGggc3Bl Y2lmaWNhdGlvbiBleHByZXNzaW9uICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5h bWUsIGlmIGFueSAqLwogCUxpc3QJICAgKnBhc3Npbmc7CQkvKiBsaXN0IG9mIFBBU1NJTkcgY2xh dXNlIGFyZ3VtZW50cywgaWYgYW55ICovCiAJSnNvbk91dHB1dCAqb3V0cHV0OwkJCS8qIG91dHB1 dCBjbGF1c2UsIGlmIHNwZWNpZmllZCAqLwogCUpzb25CZWhhdmlvciAqb25fZW1wdHk7CQkvKiBP TiBFTVBUWSBiZWhhdmlvciAqLwpAQCAtMTc1OSw2ICsxNzYwLDExNCBAQCB0eXBlZGVmIHN0cnVj dCBKc29uRnVuY0V4cHIKIAlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCiB9IEpzb25GdW5jRXhwcjsKIAorLyoKKyAqIEpzb25UYWJsZVBhdGhT cGVjCisgKgkJdW50cmFuc2Zvcm1lZCBzcGVjaWZpY2F0aW9uIG9mIEpTT04gcGF0aCBleHByZXNz aW9uIHdpdGggYW4gb3B0aW9uYWwKKyAqCQluYW1lCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25U YWJsZVBhdGhTcGVjCit7CisJTm9kZVRhZwkJdHlwZTsKKworCU5vZGUJICAgKnN0cmluZzsKKwlj aGFyCSAgICpuYW1lOworCWludAkJCW5hbWVfbG9jYXRpb247CisJaW50CQkJbG9jYXRpb247CS8q IGxvY2F0aW9uIG9mICdzdHJpbmcnICovCit9IEpzb25UYWJsZVBhdGhTcGVjOworCisvKgorICog SnNvblRhYmxlQ29sdW1uVHlwZSAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNPTl9UQUJMRSBjb2x1 bW4gdHlwZXMKKyAqLwordHlwZWRlZiBlbnVtIEpzb25UYWJsZUNvbHVtblR5cGUKK3sKKwlKVENf Rk9SX09SRElOQUxJVFksCisJSlRDX1JFR1VMQVIsCisJSlRDX0VYSVNUUywKKwlKVENfRk9STUFU VEVELAorCUpUQ19ORVNURUQsCit9IEpzb25UYWJsZUNvbHVtblR5cGU7CisKKy8qCisgKiBKc29u VGFibGVDb2x1bW4gLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9U QUJMRSBjb2x1bW4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvblRhYmxlQ29sdW1uCit7CisJTm9k ZVRhZwkJdHlwZTsKKwlKc29uVGFibGVDb2x1bW5UeXBlIGNvbHR5cGU7CS8qIGNvbHVtbiB0eXBl ICovCisJY2hhcgkgICAqbmFtZTsJCQkvKiBjb2x1bW4gbmFtZSAqLworCVR5cGVOYW1lICAgKnR5 cGVOYW1lOwkJLyogY29sdW1uIHR5cGUgbmFtZSAqLworCUpzb25UYWJsZVBhdGhTcGVjICpwYXRo c3BlYzsgLyogSlNPTiBwYXRoIHNwZWNpZmljYXRpb24gKi8KKwlKc29uRm9ybWF0ICpmb3JtYXQ7 CQkJLyogSlNPTiBmb3JtYXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uV3JhcHBlciB3 cmFwcGVyOwkJLyogV1JBUFBFUiBiZWhhdmlvciBmb3IgZm9ybWF0dGVkIGNvbHVtbnMgKi8KKwlK c29uUXVvdGVzCXF1b3RlczsJCQkvKiBvbWl0IG9yIGtlZXAgcXVvdGVzIG9uIHNjYWxhciBzdHJp bmdzPyAqLworCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBuZXN0ZWQgY29sdW1ucyAqLworCUpzb25C ZWhhdmlvciAqb25fZW1wdHk7CQkvKiBPTiBFTVBUWSBiZWhhdmlvciAqLworCUpzb25CZWhhdmlv ciAqb25fZXJyb3I7CQkvKiBPTiBFUlJPUiBiZWhhdmlvciAqLworCWludAkJCWxvY2F0aW9uOwkJ LyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvblRhYmxlQ29sdW1u OworCisvKgorICogSnNvblRhYmxlUGxhblR5cGUgLQorICoJCWZsYWdzIGZvciBKU09OX1RBQkxF IHBsYW4gbm9kZSB0eXBlcyByZXByZXNlbnRhdGlvbgorICovCit0eXBlZGVmIGVudW0gSnNvblRh YmxlUGxhblR5cGUKK3sKKwlKU1RQX0RFRkFVTFQsCisJSlNUUF9TSU1QTEUsCisJSlNUUF9KT0lO RUQsCit9IEpzb25UYWJsZVBsYW5UeXBlOworCisvKgorICogSnNvblRhYmxlUGxhbkpvaW5UeXBl IC0KKyAqCQlKU09OX1RBQkxFIGpvaW4gdHlwZXMgZm9yIEpTVFBfSk9JTkVEIHBsYW5zCisgKi8K K3R5cGVkZWYgZW51bSBKc29uVGFibGVQbGFuSm9pblR5cGUKK3sKKwlKU1RQX0pPSU5fSU5ORVIs CisJSlNUUF9KT0lOX09VVEVSLAorCUpTVFBfSk9JTl9DUk9TUywKKwlKU1RQX0pPSU5fVU5JT04s Cit9IEpzb25UYWJsZVBsYW5Kb2luVHlwZTsKKworLyoKKyAqIEpzb25UYWJsZVBsYW5TcGVjIC0K KyAqCQl1bnRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05fVEFCTEUncyBQTEFOIGNs YXVzZQorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuU3BlYworeworCU5vZGVUYWcJ CXR5cGU7CisKKwlKc29uVGFibGVQbGFuVHlwZSBwbGFuX3R5cGU7CS8qIHBsYW4gdHlwZSAqLwor CUpzb25UYWJsZVBsYW5Kb2luVHlwZSBqb2luX3R5cGU7CS8qIGpvaW4gdHlwZSAoZm9yIGpvaW5l ZCBwbGFuIG9ubHkpICovCisJY2hhcgkgICAqcGF0aG5hbWU7CQkvKiBwYXRoIG5hbWUgKGZvciBz aW1wbGUgcGxhbiBvbmx5KSAqLworCisJLyogRm9yIGpvaW5lZCBwbGFucyAqLworCXN0cnVjdCBK c29uVGFibGVQbGFuU3BlYyAqcGxhbjE7CQkvKiBmaXJzdCBqb2luZWQgcGxhbiAqLworCXN0cnVj dCBKc29uVGFibGVQbGFuU3BlYyAqcGxhbjI7CQkvKiBzZWNvbmQgam9pbmVkIHBsYW4gKi8KKwor CWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8K K30gSnNvblRhYmxlUGxhblNwZWM7CisKKy8qCisgKiBKc29uVGFibGUgLQorICoJCXVudHJhbnNm b3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNPTl9UQUJMRQorICovCit0eXBlZGVmIHN0cnVjdCBK c29uVGFibGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRl bTsJLyogY29udGV4dCBpdGVtIGV4cHJlc3Npb24gKi8KKwlKc29uVGFibGVQYXRoU3BlYyAqcGF0 aHNwZWM7CS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uICovCisJTGlzdAkgICAqcGFzc2luZzsJ CS8qIGxpc3Qgb2YgUEFTU0lORyBjbGF1c2UgYXJndW1lbnRzLCBpZiBhbnkgKi8KKwlMaXN0CSAg ICpjb2x1bW5zOwkJLyogbGlzdCBvZiBKc29uVGFibGVDb2x1bW4gKi8KKwlKc29uVGFibGVQbGFu U3BlYyAqcGxhbnNwZWM7IC8qIGpvaW4gcGxhbiwgaWYgc3BlY2lmaWVkICovCisJSnNvbkJlaGF2 aW9yICAqb25fZXJyb3I7CS8qIE9OIEVSUk9SIGJlaGF2aW9yICovCisJQWxpYXMJICAgKmFsaWFz OwkJCS8qIHRhYmxlIGFsaWFzIGluIEZST00gY2xhdXNlICovCisJYm9vbAkJbGF0ZXJhbDsJCS8q IGRvZXMgaXQgaGF2ZSBMQVRFUkFMIHByZWZpeD8gKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRv a2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IEpzb25UYWJsZTsKKwogLyoKICAq IEpzb25LZXlWYWx1ZSAtCiAgKgkJdW50cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBvZiBKU09O IG9iamVjdCBrZXktdmFsdWUgcGFpciBmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggZmFkMmRk OTA5Mi4uMjUwYWZkYTkzYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVz LmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTk0LDggKzk0LDE0IEBA IHR5cGVkZWYgc3RydWN0IFJhbmdlVmFyCiAJaW50CQkJbG9jYXRpb247CiB9IFJhbmdlVmFyOwog Cit0eXBlZGVmIGVudW0gVGFibGVGdW5jVHlwZQoreworCVRGVF9YTUxUQUJMRSwKKwlURlRfSlNP Tl9UQUJMRSwKK30gVGFibGVGdW5jVHlwZTsKKwogLyoKLSAqIFRhYmxlRnVuYyAtIG5vZGUgZm9y IGEgdGFibGUgZnVuY3Rpb24sIHN1Y2ggYXMgWE1MVEFCTEUuCisgKiBUYWJsZUZ1bmMgLSBub2Rl IGZvciBhIHRhYmxlIGZ1bmN0aW9uLCBzdWNoIGFzIFhNTFRBQkxFIG9yIEpTT05fVEFCTEUuCiAg KgogICogRW50cmllcyBpbiB0aGUgbnNfbmFtZXMgbGlzdCBhcmUgZWl0aGVyIFN0cmluZyBub2Rl cyBjb250YWluaW5nCiAgKiBsaXRlcmFsIG5hbWVzcGFjZSBuYW1lcywgb3IgTlVMTCBwb2ludGVy cyB0byByZXByZXNlbnQgREVGQVVMVC4KQEAgLTEwMyw2ICsxMDksOCBAQCB0eXBlZGVmIHN0cnVj dCBSYW5nZVZhcgogdHlwZWRlZiBzdHJ1Y3QgVGFibGVGdW5jCiB7CiAJTm9kZVRhZwkJdHlwZTsK KwkvKiBYTUxUQUJMRSBvciBKU09OX1RBQkxFICovCisJVGFibGVGdW5jVHlwZSBmdW5jdHlwZTsK IAkvKiBsaXN0IG9mIG5hbWVzcGFjZSBVUkkgZXhwcmVzc2lvbnMgKi8KIAlMaXN0CSAgICpuc191 cmlzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBsaXN0IG9mIG5hbWVz cGFjZSBuYW1lcyBvciBOVUxMICovCkBAIC0xMjMsOCArMTMxLDE0IEBAIHR5cGVkZWYgc3RydWN0 IFRhYmxlRnVuYwogCUxpc3QJICAgKmNvbGV4cHJzOwogCS8qIGxpc3Qgb2YgY29sdW1uIGRlZmF1 bHQgZXhwcmVzc2lvbnMgKi8KIAlMaXN0CSAgICpjb2xkZWZleHBycyBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CisJLyogbGlzdCBvZiBjb2x1bW4gdmFsdWUgZXhwcmVzc2lvbnMg Ki8KKwlMaXN0CSAgICpjb2x2YWxleHBycyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9y ZSk7CisJLyogbGlzdCBvZiBQQVNTSU5HIGFyZ3VtZW50IGV4cHJlc3Npb25zICovCisJTGlzdAkg ICAqcGFzc2luZ3ZhbGV4cHJzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkv KiBudWxsYWJpbGl0eSBmbGFnIGZvciBlYWNoIG91dHB1dCBjb2x1bW4gKi8KIAlCaXRtYXBzZXQg ICpub3RudWxscyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogSlNPTl9U QUJMRSBwbGFuICovCisJTm9kZQkgICAqcGxhbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2ln bm9yZSk7CiAJLyogY291bnRzIGZyb20gMDsgLTEgaWYgbm9uZSBzcGVjaWZpZWQgKi8KIAlpbnQJ CQlvcmRpbmFsaXR5Y29sIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpAQCAtMTU2MSw2ICsxNTc1LDcgQEAg dHlwZWRlZiBlbnVtIEpzb25FeHByT3AKIAlKU09OX1ZBTFVFX09QLAkJCQkvKiBKU09OX1ZBTFVF KCkgKi8KIAlKU09OX1FVRVJZX09QLAkJCQkvKiBKU09OX1FVRVJZKCkgKi8KIAlKU09OX0VYSVNU U19PUCwJCQkJLyogSlNPTl9FWElTVFMoKSAqLworCUpTT05fVEFCTEVfT1AsCQkJCS8qIEpTT05f VEFCTEUoKSAqLwogfSBKc29uRXhwck9wOwogCiAvKgpAQCAtMTg1MCw2ICsxODY1LDQ5IEBAIHR5 cGVkZWYgc3RydWN0IEpzb25FeHByCiAJaW50CQkJbG9jYXRpb247CiB9IEpzb25FeHByOwogCisv KgorICogSnNvblRhYmxlUGF0aAorICoJCUEgSlNPTiBwYXRoIGV4cHJlc3Npb24gdG8gYmUgY29t cHV0ZWQgYXMgcGFydCBvZiBldmFsdWF0aW5nCisgKgkJYSBKU09OX1RBQkxFIHBsYW4gbm9kZQor ICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQYXRoCit7CisJTm9kZVRhZwkJdHlwZTsKKwor CUNvbnN0CSAgICp2YWx1ZTsKKwljaGFyCSAgICpuYW1lOworfQkJCUpzb25UYWJsZVBhdGg7CisK Ky8qCisgKiBKc29uVGFibGVTcGVjIC0KKyAqCQl0cmFuc2Zvcm1lZCByZXByZXNlbnRhdGlvbiBv ZiBhIEpTT05fVEFCTEUgcGxhbgorICovCit0eXBlZGVmIHN0cnVjdCBKc29uVGFibGVQbGFuCit7 CisJTm9kZVRhZwkJdHlwZTsKKworCUpzb25UYWJsZVBhdGggKnBhdGg7CisJTm9kZQkgICAqY2hp bGQ7CQkJLyogbmVzdGVkIGNvbHVtbnMsIGlmIGFueSAqLworCWJvb2wJCW91dGVySm9pbjsJCS8q IG91dGVyIG9yIGlubmVyIGpvaW4gZm9yIG5lc3RlZCBjb2x1bW5zPyAqLworCWludAkJCWNvbE1p bjsJCQkvKiBtaW4gY29sdW1uIGluZGV4IGluIHRoZSByZXN1bHRpbmcgY29sdW1uCisJCQkJCQkJ CSAqIGxpc3QgKi8KKwlpbnQJCQljb2xNYXg7CQkJLyogbWF4IGNvbHVtbiBpbmRleCBpbiB0aGUg cmVzdWx0aW5nIGNvbHVtbgorCQkJCQkJCQkgKiBsaXN0ICovCisJYm9vbAkJZXJyb3JPbkVycm9y OwkvKiBFUlJPUi9FTVBUWSBPTiBFUlJPUiBiZWhhdmlvciAqLworfSBKc29uVGFibGVQbGFuOwor CisvKgorICogSnNvblRhYmxlU2libGluZyAtCisgKgkJdHJhbnNmb3JtZWQgcmVwcmVzZW50YXRp b24gb2Ygam9pbmVkIHNpYmxpbmcgSlNPTl9UQUJMRSBwbGFuIG5vZGUKKyAqLwordHlwZWRlZiBz dHJ1Y3QgSnNvblRhYmxlU2libGluZworeworCU5vZGVUYWcJCXR5cGU7CisJTm9kZQkgICAqbGFy ZzsJCQkvKiBsZWZ0IGpvaW4gbm9kZSAqLworCU5vZGUJICAgKnJhcmc7CQkJLyogcmlnaHQgam9p biBub2RlICovCisJYm9vbAkJY3Jvc3M7CQkJLyogY3Jvc3Mgb3IgdW5pb24gam9pbj8gKi8KK30g SnNvblRhYmxlU2libGluZzsKKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogTnVsbFRlc3QKICAq CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmgKaW5kZXggOTRlMWNiNGRjZS4uZTJiYmVlYjIwOSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xp c3QuaApAQCAtMjQyLDYgKzI0Miw3IEBAIFBHX0tFWVdPUkQoImpzb25fb2JqZWN0YWdnIiwgSlNP Tl9PQkpFQ1RBR0csIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJq c29uX3F1ZXJ5IiwgSlNPTl9RVUVSWSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImpzb25fc2NhbGFyIiwgSlNPTl9TQ0FMQVIsIENPTF9OQU1FX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX3NlcmlhbGl6ZSIsIEpTT05fU0VSSUFMSVpFLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgianNvbl90YWJsZSIsIEpT T05fVEFCTEUsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29u X3ZhbHVlIiwgSlNPTl9WQUxVRSwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImtlZXAiLCBLRUVQLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJrZXkiLCBLRVksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTI4 NCw2ICsyODUsNyBAQCBQR19LRVlXT1JEKCJuYW1lcyIsIE5BTUVTLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuYXRpb25hbCIsIE5BVElPTkFMLCBDT0xfTkFN RV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgibmF0dXJhbCIsIE5BVFVSQUwsIFRZ UEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuY2hhciIsIE5D SEFSLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgibmVzdGVkIiwg TkVTVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZXci LCBORVcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoIm5leHQi LCBORVhULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJuZmMi LCBORkMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTMzNCw3ICszMzYsOSBA QCBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09S RCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGF0aCIsIFBB VEgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmci LCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgicGxh biIsIFBMQU4sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBs YW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo InBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaAppbmRleCAzODI5ZGIwZmM0Li5lNzE3NjJiMTBjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfY2xhdXNlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCkBAIC01MSw0ICs1MSw3IEBAIGV4dGVybiBMaXN0 ICphZGRUYXJnZXRUb1NvcnRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVGFyZ2V0RW50cnkgKnRs ZSwKIGV4dGVybiBJbmRleCBhc3NpZ25Tb3J0R3JvdXBSZWYoVGFyZ2V0RW50cnkgKnRsZSwgTGlz dCAqdGxpc3QpOwogZXh0ZXJuIGJvb2wgdGFyZ2V0SXNJblNvcnRMaXN0KFRhcmdldEVudHJ5ICp0 bGUsIE9pZCBzb3J0b3AsIExpc3QgKnNvcnRMaXN0KTsKIAorLyogZnVuY3Rpb25zIGluIHBhcnNl X2pzb250YWJsZS5jICovCitleHRlcm4gUGFyc2VOYW1lc3BhY2VJdGVtICp0cmFuc2Zvcm1Kc29u VGFibGUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uVGFibGUgKmp0KTsKKwogI2VuZGlmCQkJCQkJ CS8qIFBBUlNFX0NMQVVTRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9qc29u cGF0aC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbnBhdGguaAppbmRleCAwZjRiMWViYzlmLi4y YzY3M2I3ZGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCisrKyBi L3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUg SlNPTlBBVEhfSAogCiAjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL3RhYmxl ZnVuYy5oIgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9wcmlt bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgpAQCAtMzAzLDQgKzMwNCw2IEBAIGV4 dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAsIEpzb25XcmFw cGVyIHdyYXBwZXIsCiBleHRlcm4gSnNvbmJWYWx1ZSAqSnNvblBhdGhWYWx1ZShEYXR1bSBqYiwg SnNvblBhdGggKmpwLCBib29sICplbXB0eSwKIAkJCQkJCQkJIGJvb2wgKmVycm9yLCBMaXN0ICp2 YXJzKTsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IFRhYmxlRnVuY1JvdXRpbmUgSnNvbmJU YWJsZVJvdXRpbmU7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90 ZXN0L2VjcGdfc2NoZWR1bGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVs ZQppbmRleCBmOWMwYTBlM2MwLi4yNTRhMGJhY2M3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9lY3BnL3Rlc3QvZWNwZ19zY2hlZHVsZQorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZWNwZ19zY2hlZHVsZQpAQCAtNTIsNiArNTIsNyBAQCB0ZXN0OiBzcWwvb2xkZXhlYwogdGVzdDog c3FsL3F1b3RlCiB0ZXN0OiBzcWwvc2hvdwogdGVzdDogc3FsL3NxbGpzb24KK3Rlc3Q6IHNxbC9z cWxqc29uX2pzb250YWJsZQogdGVzdDogc3FsL2luc3VwZAogdGVzdDogc3FsL3BhcnNlcgogdGVz dDogc3FsL3ByZXBhcmVhcwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4 cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5jIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0 L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjBiYmY0NDQzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3QvZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLmMKQEAgLTAsMCAr MSwxMzIgQEAKKy8qIFByb2Nlc3NlZCBieSBlY3BnIChyZWdyZXNzaW9uIG1vZGUpICovCisvKiBU aGVzZSBpbmNsdWRlIGZpbGVzIGFyZSBhZGRlZCBieSB0aGUgcHJlcHJvY2Vzc29yICovCisjaW5j bHVkZSA8ZWNwZ2xpYi5oPgorI2luY2x1ZGUgPGVjcGdlcnJuby5oPgorI2luY2x1ZGUgPHNxbGNh Lmg+CisvKiBFbmQgb2YgYXV0b21hdGljIGluY2x1ZGUgc2VjdGlvbiAqLworI2RlZmluZSBFQ1BH ZGVidWcoWCxZKSBFQ1BHZGVidWcoKFgpKzEwMCwoWSkpCisKKyNsaW5lIDEgInNxbGpzb25fanNv bnRhYmxlLnBnYyIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKKyNsaW5lIDEgInNxbGNhLmgiCisj aWZuZGVmIFBPU1RHUkVTX1NRTENBX0gKKyNkZWZpbmUgUE9TVEdSRVNfU1FMQ0FfSAorCisjaWZu ZGVmIFBHRExMSU1QT1JUCisjaWYgIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5f XykKKyNkZWZpbmUgUEdETExJTVBPUlQgX19kZWNsc3BlYyAoZGxsaW1wb3J0KQorI2Vsc2UKKyNk ZWZpbmUgUEdETExJTVBPUlQKKyNlbmRpZgkJCQkJCQkvKiBfX0NZR1dJTl9fICovCisjZW5kaWYJ CQkJCQkJLyogUEdETExJTVBPUlQgKi8KKworI2RlZmluZSBTUUxFUlJNQ19MRU4JMTUwCisKKyNp ZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgoreworI2VuZGlmCisKK3N0cnVjdCBzcWxjYV90 Cit7CisJY2hhcgkJc3FsY2FpZFs4XTsKKwlsb25nCQlzcWxhYmM7CisJbG9uZwkJc3FsY29kZTsK KwlzdHJ1Y3QKKwl7CisJCWludAkJCXNxbGVycm1sOworCQljaGFyCQlzcWxlcnJtY1tTUUxFUlJN Q19MRU5dOworCX0JCQlzcWxlcnJtOworCWNoYXIJCXNxbGVycnBbOF07CisJbG9uZwkJc3FsZXJy ZFs2XTsKKwkvKiBFbGVtZW50IDA6IGVtcHR5CQkJCQkJKi8KKwkvKiAxOiBPSUQgb2YgcHJvY2Vz c2VkIHR1cGxlIGlmIGFwcGxpY2FibGUJCQkqLworCS8qIDI6IG51bWJlciBvZiByb3dzIHByb2Nl c3NlZAkJCQkqLworCS8qIGFmdGVyIGFuIElOU0VSVCwgVVBEQVRFIG9yCQkJCSovCisJLyogREVM RVRFIHN0YXRlbWVudAkJCQkJKi8KKwkvKiAzOiBlbXB0eQkJCQkJCSovCisJLyogNDogZW1wdHkJ CQkJCQkqLworCS8qIDU6IGVtcHR5CQkJCQkJKi8KKwljaGFyCQlzcWx3YXJuWzhdOworCS8qIEVs ZW1lbnQgMDogc2V0IHRvICdXJyBpZiBhdCBsZWFzdCBvbmUgb3RoZXIgaXMgJ1cnCSovCisJLyog MTogaWYgJ1cnIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgc3RyaW5nCQkqLworCS8qIHZhbHVlIHdh cyB0cnVuY2F0ZWQgd2hlbiBpdCB3YXMJCQkqLworCS8qIHN0b3JlZCBpbnRvIGEgaG9zdCB2YXJp YWJsZS4gICAgICAgICAgICAgKi8KKworCS8qCisJICogMjogaWYgJ1cnIGEgKGhvcGVmdWxseSkg bm9uLWZhdGFsIG5vdGljZSBvY2N1cnJlZAorCSAqLwkvKiAzOiBlbXB0eSAqLworCS8qIDQ6IGVt cHR5CQkJCQkJKi8KKwkvKiA1OiBlbXB0eQkJCQkJCSovCisJLyogNjogZW1wdHkJCQkJCQkqLwor CS8qIDc6IGVtcHR5CQkJCQkJKi8KKworCWNoYXIJCXNxbHN0YXRlWzVdOworfTsKKworc3RydWN0 IHNxbGNhX3QgKkVDUEdnZXRfc3FsY2Eodm9pZCk7CisKKyNpZm5kZWYgUE9TVEdSRVNfRUNQR19J TlRFUk5BTAorI2RlZmluZSBzcWxjYSAoKkVDUEdnZXRfc3FsY2EoKSkKKyNlbmRpZgorCisjaWZk ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKKworI2xpbmUgMyAic3FsanNvbl9q c29udGFibGUucGdjIgorCisKKyNsaW5lIDEgInJlZ3Jlc3Npb24uaCIKKworCisKKworCisKKyNs aW5lIDQgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisvKiBleGVjIHNxbCB3aGVuZXZlciBz cWxlcnJvciAgc3FscHJpbnQgOyAqLworI2xpbmUgNiAic3FsanNvbl9qc29udGFibGUucGdjIgor CisKK2ludAorbWFpbiAoKQoreworICBFQ1BHZGVidWcgKDEsIHN0ZGVycik7CisKKyAgeyBFQ1BH Y29ubmVjdChfX0xJTkVfXywgMCwgImVjcGcxX3JlZ3Jlc3Npb24iICwgTlVMTCwgTlVMTCAsIE5V TEwsIDApOyAKKyNsaW5lIDEzICJzcWxqc29uX2pzb250YWJsZS5wZ2MiCisKK2lmIChzcWxjYS5z cWxjb2RlIDwgMCkgc3FscHJpbnQoKTt9CisjbGluZSAxMyAic3FsanNvbl9qc29udGFibGUucGdj IgorCisgIHsgRUNQR3NldGNvbW1pdChfX0xJTkVfXywgIm9uIiwgTlVMTCk7CisjbGluZSAxNCAi c3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDApIHNxbHByaW50 KCk7fQorI2xpbmUgMTQgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisgIHsgRUNQR2RvKF9f TElORV9fLCAwLCAxLCBOVUxMLCAwLCBFQ1BHc3Rfbm9ybWFsLCAic2VsZWN0ICogZnJvbSBqc29u X3RhYmxlICgganNvbmIgJ251bGwnICwgJyRbKl0nIGFzIHAwIGNvbHVtbnMgKCBuZXN0ZWQgJyQn IGFzIHAxIGNvbHVtbnMgKCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDExIGNvbHVtbnMgKCBmb28gaW50 ICkgLCBuZXN0ZWQgcGF0aCAnJCcgYXMgcDEyIGNvbHVtbnMgKCBiYXIgaW50ICkgKSAsIG5lc3Rl ZCBwYXRoICckJyBhcyBwMiBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAyMSBjb2x1bW5z ICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0IiwgRUNQR3RfRU9JVCwgRUNQR3RfRU9S VCk7CisjbGluZSAyNiAic3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29k ZSA8IDApIHNxbHByaW50KCk7fQorI2xpbmUgMjYgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKwor ICAvLyBlcnJvcgorCisgIHsgRUNQR2Rpc2Nvbm5lY3QoX19MSU5FX18sICJDVVJSRU5UIik7Cisj bGluZSAyOSAic3FsanNvbl9qc29udGFibGUucGdjIgorCitpZiAoc3FsY2Euc3FsY29kZSA8IDAp IHNxbHByaW50KCk7fQorI2xpbmUgMjkgInNxbGpzb25fanNvbnRhYmxlLnBnYyIKKworCisgIHJl dHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVk L3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRlcnIgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv ZXhwZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZGVycgpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi41ODgxZmRiNWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu dGVyZmFjZXMvZWNwZy90ZXN0L2V4cGVjdGVkL3NxbC1zcWxqc29uX2pzb250YWJsZS5zdGRlcnIK QEAgLTAsMCArMSwyMCBAQAorW05PX1BJRF06IEVDUEdkZWJ1Zzogc2V0IHRvIDEKK1tOT19QSURd OiBzcWxjYTogY29kZTogMCwgc3RhdGU6IDAwMDAwCitbTk9fUElEXTogRUNQR2Nvbm5lY3Q6IG9w ZW5pbmcgZGF0YWJhc2UgZWNwZzFfcmVncmVzc2lvbiBvbiA8REVGQVVMVD4gcG9ydCA8REVGQVVM VD4gIAorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBF Q1BHc2V0Y29tbWl0IG9uIGxpbmUgMTQ6IGFjdGlvbiAib24iOyBjb25uZWN0aW9uICJlY3BnMV9y ZWdyZXNzaW9uIgorW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19Q SURdOiBlY3BnX2V4ZWN1dGUgb24gbGluZSAxNjogcXVlcnk6IHNlbGVjdCAqIGZyb20ganNvbl90 YWJsZSAoIGpzb25iICdudWxsJyAsICckWypdJyBhcyBwMCBjb2x1bW5zICggbmVzdGVkICckJyBh cyBwMSBjb2x1bW5zICggbmVzdGVkIHBhdGggJyQnIGFzIHAxMSBjb2x1bW5zICggZm9vIGludCAp ICwgbmVzdGVkIHBhdGggJyQnIGFzIHAxMiBjb2x1bW5zICggYmFyIGludCApICkgLCBuZXN0ZWQg cGF0aCAnJCcgYXMgcDIgY29sdW1ucyAoIG5lc3RlZCBwYXRoICckJyBhcyBwMjEgY29sdW1ucyAo IGJheiBpbnQgKSApICkgcGxhbiAoIHAxICkgKSBqdDsgd2l0aCAwIHBhcmFtZXRlcihzKSBvbiBj b25uZWN0aW9uIGVjcGcxX3JlZ3Jlc3Npb24KK1tOT19QSURdOiBzcWxjYTogY29kZTogMCwgc3Rh dGU6IDAwMDAwCitbTk9fUElEXTogZWNwZ19leGVjdXRlIG9uIGxpbmUgMTY6IHVzaW5nIFBRZXhl YworW05PX1BJRF06IHNxbGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiBlY3Bn X2NoZWNrX1BRcmVzdWx0IG9uIGxpbmUgMTY6IGJhZCByZXNwb25zZSAtIEVSUk9SOiAgaW52YWxp ZCBKU09OX1RBQkxFIHBsYW4KK0xJTkUgMTogLi4udGVkIHBhdGggJyQnIGFzIHAyMSBjb2x1bW5z ICggYmF6IGludCApICkgKSBwbGFuICggcDEgKSApIGp0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIFBBVEgg bmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgcDAgYnV0IHAxIGlzIGdpdmVuLgorW05PX1BJRF06IHNx bGNhOiBjb2RlOiAwLCBzdGF0ZTogMDAwMDAKK1tOT19QSURdOiByYWlzaW5nIHNxbHN0YXRlIDQy NjAxIChzcWxjb2RlIC00MDApOiBpbnZhbGlkIEpTT05fVEFCTEUgcGxhbiBvbiBsaW5lIDE2Citb Tk9fUElEXTogc3FsY2E6IGNvZGU6IC00MDAsIHN0YXRlOiA0MjYwMQorU1FMIGVycm9yOiBpbnZh bGlkIEpTT05fVEFCTEUgcGxhbiBvbiBsaW5lIDE2CitbTk9fUElEXTogZWNwZ19maW5pc2g6IGNv bm5lY3Rpb24gZWNwZzFfcmVncmVzc2lvbiBjbG9zZWQKK1tOT19QSURdOiBzcWxjYTogY29kZTog MCwgc3RhdGU6IDAwMDAwCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvZXhw ZWN0ZWQvc3FsLXNxbGpzb25fanNvbnRhYmxlLnN0ZG91dCBiL3NyYy9pbnRlcmZhY2VzL2VjcGcv dGVzdC9leHBlY3RlZC9zcWwtc3FsanNvbl9qc29udGFibGUuc3Rkb3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU2OWRlMjliYjIKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qv c3FsL01ha2VmaWxlCmluZGV4IGQ4MjEzYjI1Y2UuLjdmMDMyNjU5YjkgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvTWFrZWZpbGUKKysrIGIvc3JjL2ludGVyZmFjZXMv ZWNwZy90ZXN0L3NxbC9NYWtlZmlsZQpAQCAtMjQsNiArMjQsNyBAQCBURVNUUyA9IGFycmF5IGFy cmF5LmMgXAogICAgICAgICBxdW90ZSBxdW90ZS5jIFwKICAgICAgICAgc2hvdyBzaG93LmMgXAog ICAgICAgICBzcWxqc29uIHNxbGpzb24uYyBcCisgICAgICAgIHNxbGpzb25fanNvbnRhYmxlIHNx bGpzb25fanNvbnRhYmxlLmMgXAogICAgICAgICBpbnN1cGQgaW5zdXBkLmMgXAogICAgICAgICB0 d29waGFzZSB0d29waGFzZS5jIFwKICAgICAgICAgaW5zdXBkIGluc3VwZC5jIFwKZGlmZiAtLWdp dCBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJm YWNlcy9lY3BnL3Rlc3Qvc3FsL21lc29uLmJ1aWxkCmluZGV4IDEyZjI4ZTBhMjQuLjg4YTNhY2I5 YWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvbWVzb24uYnVpbGQK KysrIGIvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L3NxbC9tZXNvbi5idWlsZApAQCAtMjYsNiAr MjYsNyBAQCBwZ2NfZmlsZXMgPSBbCiAgICdzaG93JywKICAgJ3NxbGRhJywKICAgJ3NxbGpzb24n LAorICAnc3FsanNvbl9qc29udGFibGUnLAogICAndHdvcGhhc2UnLAogXQogCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb25fanNvbnRhYmxlLnBnYyBiL3Ny Yy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9zcWwvc3FsanNvbl9qc29udGFibGUucGdjCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA2ZjhhMmI2MzQKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3Qvc3FsL3NxbGpzb25fanNvbnRhYmxlLnBnYwpA QCAtMCwwICsxLDMyIEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKworRVhFQyBTUUwgSU5DTFVERSBz cWxjYTsKK2V4ZWMgc3FsIGluY2x1ZGUgLi4vcmVncmVzc2lvbjsKKworRVhFQyBTUUwgV0hFTkVW RVIgU1FMRVJST1Igc3FscHJpbnQ7CisKK2ludAorbWFpbiAoKQoreworICBFQ1BHZGVidWcgKDEs IHN0ZGVycik7CisKKyAgRVhFQyBTUUwgQ09OTkVDVCBUTyBSRUdSRVNTREIxOworICBFWEVDIFNR TCBTRVQgQVVUT0NPTU1JVCA9IE9OOworCisgIEVYRUMgU1FMIFNFTEVDVCAqIEZST00gSlNPTl9U QUJMRShqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgJyQn IEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9v IGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJ CSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICck JyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAxKSkganQ7Cisg IC8vIGVycm9yCisKKyAgRVhFQyBTUUwgRElTQ09OTkVDVDsKKworICByZXR1cm4gMDsKK30KZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zcWxqc29uX2pzb250YWJsZS5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjdhZTcwYTAwNgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9qc29udGFibGUub3V0CkBA IC0wLDAgKzEsMTMzMyBAQAorLS0gSlNPTl9UQUJMRQorLS0gU2hvdWxkIGZhaWwgKEpTT05fVEFC TEUgY2FuIGJlIHVzZWQgb25seSBpbiBGUk9NIGNsYXVzZSkKK1NFTEVDVCBKU09OX1RBQkxFKCdb XScsICckJyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIoIgorTElORSAxOiBT RUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcpOworICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIFNob3VsZCBmYWlsIChqc29uIGFyZ3VtZW50IG5vdCBzdXBwb3J0ZWQpCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnIENPTFVNTlMgKGZvbyB0ZXh0KSk7 CitFUlJPUjogIEpTT05fVEFCTEUoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNv biB0eXBlCitMSU5FIDE6IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShOVUxMIEZPUk1BVCBKU09O LCAnJCcgQ09MVU1OUyAoZm9vIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorSElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBqc29uYgorLS0gU2hvdWxkIGZh aWwgKG5vIGNvbHVtbnMpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTCwgJyQnIENPTFVN TlMgKCkpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJTkUgMTogU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEwsICckJyBDT0xVTU5TICgpKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUgKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAodjEgdGltZXN0YW1wKSkgQVMg ZiAodjEsIHYyKTsKK0VSUk9SOiAgSlNPTl9UQUJMRSBmdW5jdGlvbiBoYXMgMSBjb2x1bW5zIGF2 YWlsYWJsZSBidXQgMiBjb2x1bW5zIHNwZWNpZmllZAorLS0gTlVMTCA9PiBlbXB0eSB0YWJsZQor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKE5VTEw6Ompzb25iLCAnJCcgQ09MVU1OUyAoZm9vIGlu dCkpIGJhcjsKKyBmb28gCistLS0tLQorKDAgcm93cykKKworLS0KK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnMTIzJywgJyQnCisJQ09MVU1OUyAoaXRlbSBpbnQgUEFUSCAnJCcsIGZv byBpbnQpKSBiYXI7CisgaXRlbSB8IGZvbyAKKy0tLS0tLSstLS0tLQorICAxMjMgfCAgICAKKygx IHJvdykKKworLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25hbGl0eQorQ1JFQVRFIERPTUFJ TiBqc29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2YWx1ZSA8PiAnZm9vJyk7CitDUkVB VEUgVEVNUCBUQUJMRSBqc29uX3RhYmxlX3Rlc3QgKGpzKSBBUworCShWQUxVRVMKKwkJKCcxJyks CisJCSgnW10nKSwKKwkJKCd7fScpLAorCQkoJ1sxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZv byIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0n KQorCSk7CistLSBSZWd1bGFyICJ1bmZvcm1hdHRlZCIgY29sdW1ucworU0VMRUNUICoKK0ZST00g anNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2 YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFM SVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAnJCcsCisJ CQkiY2hhcig0KSIgY2hhcig0KSBQQVRIICckJywKKwkJCSJib29sIiBib29sIFBBVEggJyQnLAor CQkJIm51bWVyaWMiIG51bWVyaWMgUEFUSCAnJCcsCisJCQkiZG9tYWluIiBqc29uYl90ZXN0X2Rv bWFpbiBQQVRIICckJywKKwkJCWpzIGpzb24gUEFUSCAnJCcsCisJCQlqYiBqc29uYiBQQVRIICck JworCQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IGlkIHwgaW50IHwgIHRleHQgICB8IGNoYXIoNCkgfCBib29sIHwgbnVtZXJpYyB8IGRvbWFpbiAg fCAgICAgIGpzICAgICAgfCAgICAgIGpiICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxIHwgICAxIHwgMSAgICAgICB8IDEgICAgICAgfCAgICAgIHwgICAgICAg MSB8IDEgICAgICAgfCAxICAgICAgICAgICAgfCAxCisgW10gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIHwgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgIHwgICAgICAgICB8ICAg ICAgICAgfCAgICAgICAgICAgICAgfCAKKyB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDEgfCAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8 IHt9ICAgICAgICAgICB8IHt9CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAxIHwg ICAxIHwgMSAgICAgICB8IDEgICAgICAgfCAgICAgIHwgICAgICAgMSB8IDEgICAgICAgfCAxICAg ICAgICAgICAgfCAxCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAyIHwgICAxIHwg MS4yMyAgICB8IDEuMjMgICAgfCAgICAgIHwgICAgMS4yMyB8IDEuMjMgICAgfCAxLjIzICAgICAg ICAgfCAxLjIzCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2Us IHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICAzIHwgICAyIHwgMiAg ICAgICB8IDIgICAgICAgfCAgICAgIHwgICAgICAgMiB8IDIgICAgICAgfCAiMiIgICAgICAgICAg fCAiMiIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1 ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCAgICAgfCBhYWFhYWFh IHwgYWFhYSAgICB8ICAgICAgfCAgICAgICAgIHwgYWFhYWFhYSB8ICJhYWFhYWFhIiAgICB8ICJh YWFhYWFhIgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNSB8ICAgICB8IGZvbyAg ICAgfCBmb28gICAgIHwgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgImZvbyIgICAgICAgIHwg ImZvbyIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1 ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCAgICAgfCAgICAgICAg IHwgICAgICAgICB8ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8IG51bGwgICAgICAgICB8IG51 bGwKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDcgfCAgIDAgfCBmYWxzZSAgIHwg ZmFscyAgICB8IGYgICAgfCAgICAgICAgIHwgZmFsc2UgICB8IGZhbHNlICAgICAgICB8IGZhbHNl CisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsi YWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwgICAxIHwgdHJ1ZSAgICB8IHRy dWUgICAgfCB0ICAgIHwgICAgICAgICB8IHRydWUgICAgfCB0cnVlICAgICAgICAgfCB0cnVlCisg WzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFh IjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgICAgIHwgICAgICAgICB8ICAgICAg ICAgfCAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEy M30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTAgfCAgICAgfCBbMSwyXSAgIHwg WzEsMiAgICB8ICAgICAgfCAgICAgICAgIHwgWzEsMl0gICB8ICJbMSwyXSIgICAgICB8ICJbMSwy XSIKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgMTEgfCAgICAgfCAic3RyIiAgIHwg InN0ciAgICB8ICAgICAgfCAgICAgICAgIHwgInN0ciIgICB8ICJcInN0clwiIiAgICB8ICJcInN0 clwiIgorKDE0IHJvd3MpCisKKy0tICJmb3JtYXR0ZWQiIGNvbHVtbnMKK1NFTEVDVCAqCitGUk9N IGpzb25fdGFibGVfdGVzdCB2YWxzCisJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSgKKwkJ dmFscy5qczo6anNvbmIsICdsYXggJFsqXScKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5B TElUWSwKKwkJCWpzdCB0ZXh0ICAgIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzYyBjaGFy KDQpIEZPUk1BVCBKU09OICBQQVRIICckJywKKwkJCWpzdiB2YXJjaGFyKDQpIEZPUk1BVCBKU09O ICBQQVRIICckJywKKwkJCWpzYiBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJywKKwkJCWpzYnEg anNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMKKwkJKQorCSkganQKKwlPTiB0 cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpZCB8ICAgICBqc3QgICAgICB8 IGpzYyAgfCBqc3YgIHwgICAgIGpzYiAgICAgIHwgICAgIGpzYnEgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMSB8IDEgICAgICAgICAgICB8IDEgICAgfCAxICAgIHwgMSAgICAgICAgICAgIHwgMQorIFtd ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAgICAgICAgICAgICB8ICAgICAgfCAg ICAgIHwgICAgICAgICAgICAgIHwgCisge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx IHwge30gICAgICAgICAgIHwge30gICB8IHt9ICAgfCB7fSAgICAgICAgICAgfCB7fQorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMSB8IDEgICAgICAgICAgICB8IDEgICAgfCAxICAg IHwgMSAgICAgICAgICAgIHwgMQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMiB8 IDEuMjMgICAgICAgICB8IDEuMjMgfCAxLjIzIHwgMS4yMyAgICAgICAgIHwgMS4yMworIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMyB8ICIyIiAgICAgICAgICB8ICIyIiAgfCAiMiIg IHwgIjIiICAgICAgICAgIHwgMgorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51 bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNCB8 ICJhYWFhYWFhIiAgICB8ICJhYWEgfCAiYWFhIHwgImFhYWFhYWEiICAgIHwgCisgWzEsIDEuMjMs ICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwg IlsxLDJdIiwgIlwic3RyXCIiXSB8ICA1IHwgImZvbyIgICAgICAgIHwgImZvbyB8ICJmb28gfCAi Zm9vIiAgICAgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBm YWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCBudWxs ICAgICAgICAgfCBudWxsIHwgbnVsbCB8IG51bGwgICAgICAgICB8IG51bGwKKyBbMSwgMS4yMywg IjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAi WzEsMl0iLCAiXCJzdHJcIiJdIHwgIDcgfCBmYWxzZSAgICAgICAgfCBmYWxzIHwgZmFscyB8IGZh bHNlICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVs bCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA4IHwg dHJ1ZSAgICAgICAgIHwgdHJ1ZSB8IHRydWUgfCB0cnVlICAgICAgICAgfCB0cnVlCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgeyJhYWEiOiAxMjN9IHwgeyJhYSB8IHsiYWEg fCB7ImFhYSI6IDEyM30gfCB7ImFhYSI6IDEyM30KKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIs ICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJc IiJdIHwgMTAgfCAiWzEsMl0iICAgICAgfCAiWzEsIHwgIlsxLCB8ICJbMSwyXSIgICAgICB8IFsx LCAyXQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVl LCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICJcInN0clwiIiAgICB8 ICJcInMgfCAiXCJzIHwgIlwic3RyXCIiICAgIHwgInN0ciIKKygxNCByb3dzKQorCistLSBFWElT VFMgY29sdW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9V VEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlD T0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJZXhpc3RzMSBib29sIEVYSVNUUyBQ QVRIICckLmFhYScsCisJCQlleGlzdHMyIGludCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhp c3RzMyBpbnQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLmFhYScgVU5LTk9XTiBPTiBFUlJPUiwKKwkJ CWV4aXN0czQgdGV4dCBFWElTVFMgUEFUSCAnc3RyaWN0ICQuYWFhJyBGQUxTRSBPTiBFUlJPUgor CQkpCisJKSBqdAorCU9OIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBqcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlk IHwgZXhpc3RzMSB8IGV4aXN0czIgfCBleGlzdHMzIHwgZXhpc3RzNCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLQorIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSB8IGYgICAgICAgfCAgICAg ICAwIHwgICAgICAgICB8IGZhbHNlCisgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgCisge30gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwg MS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAx MjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDEgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAg ICAgfCBmYWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNl LCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgMiB8IGYgICAgICAg fCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICAzIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywg IjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAi WzEsMl0iLCAiXCJzdHJcIiJdIHwgIDQgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBm YWxzZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVl LCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgNSB8IGYgICAgICAgfCAgICAg ICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwg bnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA2 IHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAgIHwgZmFsc2UKKyBbMSwgMS4yMywgIjIiLCAi YWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0i LCAiXCJzdHJcIiJdIHwgIDcgfCBmICAgICAgIHwgICAgICAgMCB8ICAgICAgICAgfCBmYWxzZQor IFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFh YSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8IGYgICAgICAgfCAgICAgICAwIHwg ICAgICAgICB8IGZhbHNlCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwg ZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA5IHwgdCAg ICAgICB8ICAgICAgIDEgfCAgICAgICAxIHwgdHJ1ZQorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFh IiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0 clwiIl0gfCAxMCB8IGYgICAgICAgfCAgICAgICAwIHwgICAgICAgICB8IGZhbHNlCisgWzEsIDEu MjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIz fSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDExIHwgZiAgICAgICB8ICAgICAgIDAgfCAgICAgICAg IHwgZmFsc2UKKygxNCByb3dzKQorCistLSBPdGhlciBtaXNjZWxsYW5vdXMgY2hlY2tzCitTRUxF Q1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05f VEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQg Rk9SIE9SRElOQUxJVFksCisJCQlhYWEgaW50LCAtLSAiYWFhIiBoYXMgaW1wbGljaXQgcGF0aCAn JC4iYWFhIicKKwkJCWFhYTEgaW50IFBBVEggJyQuYWFhJywKKwkJCWpzMiBqc29uIFBBVEggJyQn LAorCQkJanNiMncganNvbmIgUEFUSCAnJCcgV0lUSCBXUkFQUEVSLAorCQkJanNiMnEganNvbmIg UEFUSCAnJCcgT01JVCBRVU9URVMsCisJCQlpYSBpbnRbXSBQQVRIICckJywKKwkJCXRhIHRleHRb XSBQQVRIICckJywKKwkJCWpiYSBqc29uYltdIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1 ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWQgfCBhYWEgfCBhYWExIHwgICAg IGpzMiAgICAgIHwgICAgIGpzYjJ3ICAgICAgfCAgICBqc2IycSAgICAgfCBpYSB8IHRhIHwgamJh IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0rLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tKy0tLS0t CisgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxIHwgICAgIHwgICAgICB8IDEgICAg ICAgICAgICB8IFsxXSAgICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFtd ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICAgICB8ICAgICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgIHwgICAgfCAKKyB7fSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDEgfCAgICAgfCAgICAgIHwge30gICAgICAgICAgIHwg W3t9XSAgICAgICAgICAgfCB7fSAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIy IiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsx LDJdIiwgIlwic3RyXCIiXSB8ICAxIHwgICAgIHwgICAgICB8IDEgICAgICAgICAgICB8IFsxXSAg ICAgICAgICAgIHwgMSAgICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJh YWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIs ICJcInN0clwiIl0gfCAgMiB8ICAgICB8ICAgICAgfCAxLjIzICAgICAgICAgfCBbMS4yM10gICAg ICAgICB8IDEuMjMgICAgICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFh YSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJz dHJcIiJdIHwgIDMgfCAgICAgfCAgICAgIHwgIjIiICAgICAgICAgIHwgWyIyIl0gICAgICAgICAg fCAyICAgICAgICAgICAgfCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAi Zm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIi XSB8ICA0IHwgICAgIHwgICAgICB8ICJhYWFhYWFhIiAgICB8IFsiYWFhYWFhYSJdICAgIHwgICAg ICAgICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIs IG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAg NSB8ICAgICB8ICAgICAgfCAiZm9vIiAgICAgICAgfCBbImZvbyJdICAgICAgICB8ICAgICAgICAg ICAgICB8ICAgIHwgICAgfCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxs LCBmYWxzZSwgdHJ1ZSwgeyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDYgfCAg ICAgfCAgICAgIHwgbnVsbCAgICAgICAgIHwgW251bGxdICAgICAgICAgfCBudWxsICAgICAgICAg fCAgICB8ICAgIHwgCisgWzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFs c2UsIHRydWUsIHsiYWFhIjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8ICA3IHwgICAgIHwg ICAgICB8IGZhbHNlICAgICAgICB8IFtmYWxzZV0gICAgICAgIHwgZmFsc2UgICAgICAgIHwgICAg fCAgICB8IAorIFsxLCAxLjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0 cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJcInN0clwiIl0gfCAgOCB8ICAgICB8ICAgICAg fCB0cnVlICAgICAgICAgfCBbdHJ1ZV0gICAgICAgICB8IHRydWUgICAgICAgICB8ICAgIHwgICAg fCAKKyBbMSwgMS4yMywgIjIiLCAiYWFhYWFhYSIsICJmb28iLCBudWxsLCBmYWxzZSwgdHJ1ZSwg eyJhYWEiOiAxMjN9LCAiWzEsMl0iLCAiXCJzdHJcIiJdIHwgIDkgfCAxMjMgfCAgMTIzIHwgeyJh YWEiOiAxMjN9IHwgW3siYWFhIjogMTIzfV0gfCB7ImFhYSI6IDEyM30gfCAgICB8ICAgIHwgCisg WzEsIDEuMjMsICIyIiwgImFhYWFhYWEiLCAiZm9vIiwgbnVsbCwgZmFsc2UsIHRydWUsIHsiYWFh IjogMTIzfSwgIlsxLDJdIiwgIlwic3RyXCIiXSB8IDEwIHwgICAgIHwgICAgICB8ICJbMSwyXSIg ICAgICB8IFsiWzEsMl0iXSAgICAgIHwgWzEsIDJdICAgICAgIHwgICAgfCAgICB8IAorIFsxLCAx LjIzLCAiMiIsICJhYWFhYWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEy M30sICJbMSwyXSIsICJcInN0clwiIl0gfCAxMSB8ICAgICB8ICAgICAgfCAiXCJzdHJcIiIgICAg fCBbIlwic3RyXCIiXSAgICB8ICJzdHIiICAgICAgICB8ICAgIHwgICAgfCAKKygxNCByb3dzKQor CistLSBKU09OX1RBQkxFOiBUZXN0IGJhY2t3YXJkIHBhcnNpbmcKK0NSRUFURSBWSUVXIGpzb25i X3RhYmxlX3ZpZXcxIEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNvbmIgJ251 bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFTICJiIGMi CisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9SRElOQUxJVFksCisJCQlORVNURUQgUEFUSCAnJFsx XScgQVMgcDEgQ09MVU1OUyAoCisJCQkJYTEgaW50LAorCQkJCU5FU1RFRCBQQVRIICckWypdJyBB UyAicDEgMSIgQ09MVU1OUyAoCisJCQkJCWExMSB0ZXh0CisJCQkJKSwKKwkJCQliMSB0ZXh0CisJ CQkpLAorCQkJTkVTVEVEIFBBVEggJyRbMl0nIEFTIHAyIENPTFVNTlMgKAorCQkJCU5FU1RFRCBQ QVRIICckWypdJyBBUyAicDI6MSIgQ09MVU1OUyAoCisJCQkJCWEyMSB0ZXh0CisJCQkJKSwKKwkJ CQlORVNURUQgUEFUSCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKAorCQkJCQlhMjIgdGV4dAorCQkJ CSkKKwkJCSkKKwkJKQorCSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MiBBUworU0VM RUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNT SU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCSJp bnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCki IGNoYXIoNCkgUEFUSCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmlj IiBudW1lcmljIFBBVEggJyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAn JCcpKTsKK0NSRUFURSBWSUVXIGpzb25iX3RhYmxlX3ZpZXczIEFTCitTRUxFQ1QgKiBGUk9NCisJ SlNPTl9UQUJMRSgKKwkJanNvbmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMg YSwganNvbiAnImZvbyInIEFTICJiIGMiCisJCUNPTFVNTlMgKAorCQkJanMganNvbiBQQVRIICck JywKKwkJCWpiIGpzb25iIFBBVEggJyQnLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZh cmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnKSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJs ZV92aWV3NCBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywg J2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlD T0xVTU5TICgKKyAgICAgICAgICAgIGpzYiBqc29uYiAgIEZPUk1BVCBKU09OIFBBVEggJyQnLAor ICAgICAgICAgICAganNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUywK KyAgICAgICAgICAgIGFhYSBpbnQsIC0tIGltcGxpY2l0IHBhdGggJyQuImFhYSInLAorICAgICAg ICAgICAgYWFhMSBpbnQgUEFUSCAnJC5hYWEnKSk7CitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92 aWV3NSBBUworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xh eCAkWypdJyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xV TU5TICgKKwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMiBp bnQgRVhJU1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0ZXh0IEVY SVNUUyBQQVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IpKTsKK0NSRUFURSBWSUVX IGpzb25iX3RhYmxlX3ZpZXc2IEFTCitTRUxFQ1QgKiBGUk9NCisJSlNPTl9UQUJMRSgKKwkJanNv bmIgJ251bGwnLCAnbGF4ICRbKl0nIFBBU1NJTkcgMSArIDIgQVMgYSwganNvbiAnImZvbyInIEFT ICJiIGMiCisJCUNPTFVNTlMgKAorCQkJanMyIGpzb24gUEFUSCAnJCcsCisJCQlqc2IydyBqc29u YiBQQVRIICckJyBXSVRIIFdSQVBQRVIsCisJCQlqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFV T1RFUywKKwkJCWlhIGludFtdIFBBVEggJyQnLAorCQkJdGEgdGV4dFtdIFBBVEggJyQnLAorCQkJ amJhIGpzb25iW10gUEFUSCAnJCcpKTsKK1xzdiBqc29uYl90YWJsZV92aWV3MQorQ1JFQVRFIE9S IFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzEgQVMKKyBTRUxFQ1QgaWQsCisg ICAgYTEsCisgICAgYjEsCisgICAgYTExLAorICAgIGEyMSwKKyAgICBhMjIKKyAgIEZST00gSlNP Tl9UQUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxl X3BhdGhfMAorICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEs CisgICAgICAgICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09M VU1OUyAoCisgICAgICAgICAgICAgICAgaWQgRk9SIE9SRElOQUxJVFksCisgICAgICAgICAgICAg ICAgTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisg ICAgICAgICAgICAgICAgICAgIGExIGludGVnZXIgUEFUSCAnJC4iYTEiJywKKyAgICAgICAgICAg ICAgICAgICAgYjEgdGV4dCBQQVRIICckLiJiMSInLAorICAgICAgICAgICAgICAgICAgICBORVNU RUQgUEFUSCAnJFsqXScgQVMgInAxIDEiCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAor ICAgICAgICAgICAgICAgICAgICAgICAgYTExIHRleHQgUEFUSCAnJC4iYTExIicKKyAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgTkVTVEVE IFBBVEggJyRbMl0nIEFTIHAyCisgICAgICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAgICAgIE5FU1RFRCBQQVRIICckWypdJyBBUyAicDI6MSIKKyAgICAgICAgICAgICAgICAg ICAgQ09MVU1OUyAoCisgICAgICAgICAgICAgICAgICAgICAgICBhMjEgdGV4dCBQQVRIICckLiJh MjEiJworICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICBORVNURUQg UEFUSCAnJFsqXScgQVMgcDIyCisgICAgICAgICAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAg ICAgICAgICAgICAgICAgICAgYTIyIHRleHQgUEFUSCAnJC4iYTIyIicKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIFBM QU4gKGpzb25fdGFibGVfcGF0aF8wIE9VVEVSICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIg T1VURVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92 aWV3MgorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzIgQVMK KyBTRUxFQ1QgImludCIsCisgICAgdGV4dCwKKyAgICAiY2hhcig0KSIsCisgICAgYm9vbCwKKyAg ICAibnVtZXJpYyIsCisgICAgZG9tYWluCisgICBGUk9NIEpTT05fVEFCTEUoCisgICAgICAgICAg ICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAKKyAgICAgICAgICAg IFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBhLAorICAgICAgICAgICAgICAgICci Zm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAgIENPTFVNTlMgKAorICAgICAgICAgICAg ICAgICJpbnQiIGludGVnZXIgUEFUSCAnJCcsCisgICAgICAgICAgICAgICAgdGV4dCB0ZXh0IFBB VEggJyQnLAorICAgICAgICAgICAgICAgICJjaGFyKDQpIiBjaGFyYWN0ZXIoNCkgUEFUSCAnJCcs CisgICAgICAgICAgICAgICAgYm9vbCBib29sZWFuIFBBVEggJyQnLAorICAgICAgICAgICAgICAg ICJudW1lcmljIiBudW1lcmljIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGRvbWFpbiBqc29u Yl90ZXN0X2RvbWFpbiBQQVRIICckJworICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAo anNvbl90YWJsZV9wYXRoXzApCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92aWV3MworQ1JF QVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzMgQVMKKyBTRUxFQ1Qg anMsCisgICAgamIsCisgICAganN0LAorICAgIGpzYywKKyAgICBqc3YKKyAgIEZST00gSlNPTl9U QUJMRSgKKyAgICAgICAgICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3Bh dGhfMAorICAgICAgICAgICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisg ICAgICAgICAgICAgICAgJyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1O UyAoCisgICAgICAgICAgICAgICAganMganNvbiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBq YiBqc29uYiBQQVRIICckJywKKyAgICAgICAgICAgICAgICBqc3QgdGV4dCBGT1JNQVQgSlNPTiBQ QVRIICckJywKKyAgICAgICAgICAgICAgICBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBB VEggJyQnLAorICAgICAgICAgICAgICAgIGpzdiBjaGFyYWN0ZXIgdmFyeWluZyg0KSBGT1JNQVQg SlNPTiBQQVRIICckJworICAgICAgICAgICAgKQorICAgICAgICAgICAgUExBTiAoanNvbl90YWJs ZV9wYXRoXzApCisgICAgICAgICkKK1xzdiBqc29uYl90YWJsZV92aWV3NAorQ1JFQVRFIE9SIFJF UExBQ0UgVklFVyBwdWJsaWMuanNvbmJfdGFibGVfdmlldzQgQVMKKyBTRUxFQ1QganNiLAorICAg IGpzYnEsCisgICAgYWFhLAorICAgIGFhYTEKKyAgIEZST00gSlNPTl9UQUJMRSgKKyAgICAgICAg ICAgICdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMAorICAgICAgICAg ICAgUEFTU0lORworICAgICAgICAgICAgICAgIDEgKyAyIEFTIGEsCisgICAgICAgICAgICAgICAg JyJmb28iJzo6anNvbiBBUyAiYiBjIgorICAgICAgICAgICAgQ09MVU1OUyAoCisgICAgICAgICAg ICAgICAganNiIGpzb25iIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYnEganNvbmIgUEFU SCAnJCcgT01JVCBRVU9URVMsCisgICAgICAgICAgICAgICAgYWFhIGludGVnZXIgUEFUSCAnJC4i YWFhIicsCisgICAgICAgICAgICAgICAgYWFhMSBpbnRlZ2VyIFBBVEggJyQuImFhYSInCisgICAg ICAgICAgICApCisgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkKKyAgICAgICAg KQorXHN2IGpzb25iX3RhYmxlX3ZpZXc1CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy5q c29uYl90YWJsZV92aWV3NSBBUworIFNFTEVDVCBleGlzdHMxLAorICAgIGV4aXN0czIsCisgICAg ZXhpc3RzMworICAgRlJPTSBKU09OX1RBQkxFKAorICAgICAgICAgICAgJ251bGwnOjpqc29uYiwg JyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wCisgICAgICAgICAgICBQQVNTSU5HCisgICAgICAg ICAgICAgICAgMSArIDIgQVMgYSwKKyAgICAgICAgICAgICAgICAnImZvbyInOjpqc29uIEFTICJi IGMiCisgICAgICAgICAgICBDT0xVTU5TICgKKyAgICAgICAgICAgICAgICBleGlzdHMxIGJvb2xl YW4gRVhJU1RTIFBBVEggJyQuImFhYSInLAorICAgICAgICAgICAgICAgIGV4aXN0czIgaW50ZWdl ciBFWElTVFMgUEFUSCAnJC4iYWFhIicgVFJVRSBPTiBFUlJPUiwKKyAgICAgICAgICAgICAgICBl eGlzdHMzIHRleHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9S CisgICAgICAgICAgICApCisgICAgICAgICAgICBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkKKyAg ICAgICAgKQorXHN2IGpzb25iX3RhYmxlX3ZpZXc2CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1 YmxpYy5qc29uYl90YWJsZV92aWV3NiBBUworIFNFTEVDVCBqczIsCisgICAganNiMncsCisgICAg anNiMnEsCisgICAgaWEsCisgICAgdGEsCisgICAgamJhCisgICBGUk9NIEpTT05fVEFCTEUoCisg ICAgICAgICAgICAnbnVsbCc6Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAKKyAg ICAgICAgICAgIFBBU1NJTkcKKyAgICAgICAgICAgICAgICAxICsgMiBBUyBhLAorICAgICAgICAg ICAgICAgICciZm9vIic6Ompzb24gQVMgImIgYyIKKyAgICAgICAgICAgIENPTFVNTlMgKAorICAg ICAgICAgICAgICAgIGpzMiBqc29uIFBBVEggJyQnLAorICAgICAgICAgICAgICAgIGpzYjJ3IGpz b25iIFBBVEggJyQnIFdJVEggVU5DT05ESVRJT05BTCBXUkFQUEVSLAorICAgICAgICAgICAgICAg IGpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVTLAorICAgICAgICAgICAgICAgIGlhIGlu dGVnZXJbXSBQQVRIICckJywKKyAgICAgICAgICAgICAgICB0YSB0ZXh0W10gUEFUSCAnJCcsCisg ICAgICAgICAgICAgICAgamJhIGpzb25iW10gUEFUSCAnJCcKKyAgICAgICAgICAgICkKKyAgICAg ICAgICAgIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKQorICAgICAgICApCitFWFBMQUlOIChDT1NU UyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzE7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0 cHV0OiAianNvbl90YWJsZSIuaWQsICJqc29uX3RhYmxlIi5hMSwgImpzb25fdGFibGUiLmIxLCAi anNvbl90YWJsZSIuYTExLCAianNvbl90YWJsZSIuYTIxLCAianNvbl90YWJsZSIuYTIyCisgICBU YWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBq c29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIg Q09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIE5FU1RFRCBQQVRIICckWzFdJyBBUyBwMSBDT0xV TU5TIChhMSBpbnRlZ2VyIFBBVEggJyQuImExIicsIGIxIHRleHQgUEFUSCAnJC4iYjEiJywgTkVT VEVEIFBBVEggJyRbKl0nIEFTICJwMSAxIiBDT0xVTU5TIChhMTEgdGV4dCBQQVRIICckLiJhMTEi JykpLCBORVNURUQgUEFUSCAnJFsyXScgQVMgcDIgQ09MVU1OUyAoIE5FU1RFRCBQQVRIICckWypd JyBBUyAicDI6MSIgQ09MVU1OUyAoYTIxIHRleHQgUEFUSCAnJC4iYTIxIicpLCBORVNURUQgUEFU SCAnJFsqXScgQVMgcDIyIENPTFVNTlMgKGEyMiB0ZXh0IFBBVEggJyQuImEyMiInKSkpIFBMQU4g KGpzb25fdGFibGVfcGF0aF8wIE9VVEVSICgocDEgT1VURVIgInAxIDEiKSBVTklPTiAocDIgT1VU RVIgKCJwMjoxIiBVTklPTiBwMjIpKSkpKQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG LCBWRVJCT1NFKSBTRUxFQ1QgKiBGUk9NIGpzb25iX3RhYmxlX3ZpZXcyOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRh YmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0 OiAianNvbl90YWJsZSIuImludCIsICJqc29uX3RhYmxlIi50ZXh0LCAianNvbl90YWJsZSIuImNo YXIoNCkiLCAianNvbl90YWJsZSIuYm9vbCwgImpzb25fdGFibGUiLiJudW1lcmljIiwgImpzb25f dGFibGUiLmRvbWFpbgorICAgVGFibGUgRnVuY3Rpb24gQ2FsbDogSlNPTl9UQUJMRSgnbnVsbCc6 Ompzb25iLCAnJFsqXScgQVMganNvbl90YWJsZV9wYXRoXzAgUEFTU0lORyAzIEFTIGEsICciZm9v Iic6Ompzb25iIEFTICJiIGMiIENPTFVNTlMgKCJpbnQiIGludGVnZXIgUEFUSCAnJCcsIHRleHQg dGV4dCBQQVRIICckJywgImNoYXIoNCkiIGNoYXJhY3Rlcig0KSBQQVRIICckJywgYm9vbCBib29s ZWFuIFBBVEggJyQnLCAibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywgZG9tYWluIGpzb25iX3Rl c3RfZG9tYWluIFBBVEggJyQnKSBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQor CitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJPU0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVf dmlldzM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg VGFibGUgRnVuY3Rpb24gU2NhbiBvbiAiSlNPTl9UQUJMRSIgImpzb25fdGFibGUiCisgICBPdXRw dXQ6ICJqc29uX3RhYmxlIi5qcywgImpzb25fdGFibGUiLmpiLCAianNvbl90YWJsZSIuanN0LCAi anNvbl90YWJsZSIuanNjLCAianNvbl90YWJsZSIuanN2CisgICBUYWJsZSBGdW5jdGlvbiBDYWxs OiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBBUyBqc29uX3RhYmxlX3BhdGhfMCBQ QVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIgYyIgQ09MVU1OUyAoanMganNvbiBQ QVRIICckJywgamIganNvbmIgUEFUSCAnJCcsIGpzdCB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQn LCBqc2MgY2hhcmFjdGVyKDQpIEZPUk1BVCBKU09OIFBBVEggJyQnLCBqc3YgY2hhcmFjdGVyIHZh cnlpbmcoNCkgRk9STUFUIEpTT04gUEFUSCAnJCcpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkK KygzIHJvd3MpCisKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBq c29uYl90YWJsZV92aWV3NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4g b24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJsZSIuanNi LCAianNvbl90YWJsZSIuanNicSwgImpzb25fdGFibGUiLmFhYSwgImpzb25fdGFibGUiLmFhYTEK KyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpTT05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0n IEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJTkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAi YiBjIiBDT0xVTU5TIChqc2IganNvbmIgUEFUSCAnJCcsIGpzYnEganNvbmIgUEFUSCAnJCcgT01J VCBRVU9URVMsIGFhYSBpbnRlZ2VyIFBBVEggJyQuImFhYSInLCBhYWExIGludGVnZXIgUEFUSCAn JC4iYWFhIicpIFBMQU4gKGpzb25fdGFibGVfcGF0aF8wKSkKKygzIHJvd3MpCisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3NTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFRhYmxlIEZ1bmN0aW9u IFNjYW4gb24gIkpTT05fVEFCTEUiICJqc29uX3RhYmxlIgorICAgT3V0cHV0OiAianNvbl90YWJs ZSIuZXhpc3RzMSwgImpzb25fdGFibGUiLmV4aXN0czIsICJqc29uX3RhYmxlIi5leGlzdHMzCisg ICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBB UyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIg YyIgQ09MVU1OUyAoZXhpc3RzMSBib29sZWFuIEVYSVNUUyBQQVRIICckLiJhYWEiJywgZXhpc3Rz MiBpbnRlZ2VyIEVYSVNUUyBQQVRIICckLiJhYWEiJyBUUlVFIE9OIEVSUk9SLCBleGlzdHMzIHRl eHQgRVhJU1RTIFBBVEggJ3N0cmljdCAkLiJhYWEiJyBVTktOT1dOIE9OIEVSUk9SKSBQTEFOIChq c29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCitFWFBMQUlOIChDT1NUUyBPRkYsIFZFUkJP U0UpIFNFTEVDVCAqIEZST00ganNvbmJfdGFibGVfdmlldzY7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBU YWJsZSBGdW5jdGlvbiBTY2FuIG9uICJKU09OX1RBQkxFIiAianNvbl90YWJsZSIKKyAgIE91dHB1 dDogImpzb25fdGFibGUiLmpzMiwgImpzb25fdGFibGUiLmpzYjJ3LCAianNvbl90YWJsZSIuanNi MnEsICJqc29uX3RhYmxlIi5pYSwgImpzb25fdGFibGUiLnRhLCAianNvbl90YWJsZSIuamJhCisg ICBUYWJsZSBGdW5jdGlvbiBDYWxsOiBKU09OX1RBQkxFKCdudWxsJzo6anNvbmIsICckWypdJyBB UyBqc29uX3RhYmxlX3BhdGhfMCBQQVNTSU5HIDMgQVMgYSwgJyJmb28iJzo6anNvbmIgQVMgImIg YyIgQ09MVU1OUyAoanMyIGpzb24gUEFUSCAnJCcsIGpzYjJ3IGpzb25iIFBBVEggJyQnIFdJVEgg VU5DT05ESVRJT05BTCBXUkFQUEVSLCBqc2IycSBqc29uYiBQQVRIICckJyBPTUlUIFFVT1RFUywg aWEgaW50ZWdlcltdIFBBVEggJyQnLCB0YSB0ZXh0W10gUEFUSCAnJCcsIGpiYSBqc29uYltdIFBB VEggJyQnKSBQTEFOIChqc29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCistLSBKU09OX1RB QkxFKCkgd2l0aCBhbGlhcworRVhQTEFJTiAoQ09TVFMgT0ZGLCBWRVJCT1NFKQorU0VMRUNUICog RlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEg KyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBP UkRJTkFMSVRZLAorCQkJImludCIgaW50IFBBVEggJyQnLAorCQkJInRleHQiIHRleHQgUEFUSCAn JCcKKwkpKSBqc29uX3RhYmxlX2Z1bmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFRhYmxlIEZ1bmN0aW9uIFNjYW4gb24gIkpTT05fVEFCTEUiIGpzb25fdGFibGVfZnVu YworICAgT3V0cHV0OiBpZCwgImludCIsIHRleHQKKyAgIFRhYmxlIEZ1bmN0aW9uIENhbGw6IEpT T05fVEFCTEUoJ251bGwnOjpqc29uYiwgJyRbKl0nIEFTIGpzb25fdGFibGVfcGF0aF8wIFBBU1NJ TkcgMyBBUyBhLCAnImZvbyInOjpqc29uYiBBUyAiYiBjIiBDT0xVTU5TIChpZCBGT1IgT1JESU5B TElUWSwgImludCIgaW50ZWdlciBQQVRIICckJywgdGV4dCB0ZXh0IFBBVEggJyQnKSBQTEFOIChq c29uX3RhYmxlX3BhdGhfMCkpCisoMyByb3dzKQorCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmll dzE7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzI7CitEUk9QIFZJRVcganNvbmJfdGFibGVf dmlldzM7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzQ7CitEUk9QIFZJRVcganNvbmJfdGFi bGVfdmlldzU7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzY7CitEUk9QIERPTUFJTiBqc29u Yl90ZXN0X2RvbWFpbjsKKy0tIEpTT05fVEFCTEU6IG9ubHkgb25lIEZPUiBPUkRJTkFMSVRZIGNv bHVtbnMgYWxsb3dlZAorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENP TFVNTlMgKGlkIEZPUiBPUkRJTkFMSVRZLCBpZDIgRk9SIE9SRElOQUxJVFksIGEgaW50IFBBVEgg JyQuYScgRVJST1IgT04gRU1QVFkpKSBqdDsKK0VSUk9SOiAgY2Fubm90IHVzZSBtb3JlIHRoYW4g b25lIEZPUiBPUkRJTkFMSVRZIGNvbHVtbgorTElORSAxOiAuLi5fVEFCTEUoanNvbmIgJzEnLCAn JCcgQ09MVU1OUyAoaWQgRk9SIE9SRElOQUxJVFksIGlkMiBGT1IgT1IuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElO QUxJVFksIGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVNUFRZKSkganQ7CisgaWQgfCBhIAorLS0t LSstLS0KKyAgMSB8IDEKKygxIHJvdykKKworLS0gSlNPTl9UQUJMRTogT04gRU1QVFkvT04gRVJS T1IgYmVoYXZpb3IKK1NFTEVDVCAqCitGUk9NCisJKFZBTFVFUyAoJzEnKSwgKCciZXJyIicpKSB2 YWxzKGpzKSwKKwlKU09OX1RBQkxFKHZhbHMuanM6Ompzb25iLCAnJCcgQ09MVU1OUyAoYSBpbnQg UEFUSCAnJCcpKSBqdDsKKyAganMgICB8IGEgCistLS0tLS0tKy0tLQorIDEgICAgIHwgMQorICJl cnIiIHwgIAorKDIgcm93cykKKworU0VMRUNUICoKK0ZST00KKwkoVkFMVUVTICgnMScpLCAoJyJl cnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUodmFscy5qczo6 anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykgRVJST1IgT04gRVJST1IpIGp0CisJ CU9OIHRydWU7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVnZXI6 ICJlcnIiCitTRUxFQ1QgKgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhq cykKKwkJTEVGVCBPVVRFUiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENP TFVNTlMgKGEgaW50IFBBVEggJyQnIEVSUk9SIE9OIEVSUk9SKSkganQKKwkJT04gdHJ1ZTsKK0VS Uk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImVyciIKK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICck LmEnIEVSUk9SIE9OIEVNUFRZKSkganQ7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdz dHJpY3QgJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworRVJST1I6ICBq c29ucGF0aCBtZW1iZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworRVJST1I6 ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIics ICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxU IDIgT04gRVJST1IpKSBqdDsKKyBhIAorLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQQVRIICdzdHJpY3Qg JC5hJyBERUZBVUxUIDEgT04gRU1QVFkgREVGQVVMVCAyIE9OIEVSUk9SKSkganQ7CisgYSAKKy0t LQorIDIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAn JCcgQ09MVU1OUyAoYSBpbnQgUEFUSCAnbGF4ICQuYScgREVGQVVMVCAxIE9OIEVNUFRZIERFRkFV TFQgMiBPTiBFUlJPUikpIGp0OworIGEgCistLS0KKyAxCisoMSByb3cpCisKKy0tIEpTT05fVEFC TEU6IEVYSVNUUyBQQVRIIHR5cGVzCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGludDQgRVhJU1RTIFBBVEggJyQuYScpKTsKKyBhIAorLS0tCisg MAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBD T0xVTU5TIChhIGludDIgRVhJU1RTIFBBVEggJyQuYScpKTsKK0VSUk9SOiAgY2Fubm90IGNhc3Qg dHlwZSBib29sZWFuIHRvIHNtYWxsaW50CitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RB QkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBpbnQyIEVYSS4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVD VCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50OCBFWElT VFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBlIGJvb2xlYW4gdG8gYmln aW50CitMSU5FIDE6IC4uLkVMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBpbnQ4IEVYSS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0IEVYSVNUUyBQQVRIICckLmEnKSk7CitF UlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byByZWFsCitMSU5FIDE6IC4uLkVMRUNU ICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1OUyAoYSBmbG9hdDQgRS4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEgY2hhcigzKSBFWElTVFMgUEFUSCAnJC5hJykpOworICBhICAKKy0tLS0tCisgZmFsCiso MSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVN TlMgKGEganNvbiBFWElTVFMgUEFUSCAnJC5hJykpOworRVJST1I6ICBjYW5ub3QgY2FzdCB0eXBl IGJvb2xlYW4gdG8ganNvbgorTElORSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWEkuLi4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9N IEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGpzb25iIEVYSVNUUyBQQVRI ICckLmEnKSk7CitFUlJPUjogIGNhbm5vdCBjYXN0IHR5cGUgYm9vbGVhbiB0byBqc29uYgorTElO RSAxOiAuLi5FTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMg KGEganNvbmIgRVguLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBKU09OX1RBQkxFOiBXUkFQUEVSL1FVT1RFUyBjbGF1 c2VzIG9uIHNjYWxhciBjb2x1bW5zCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3 b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIEtFRVAgUVVPVEVTIE9OIFND QUxBUiBTVFJJTkcpKTsKKyAgaXRlbSAgIAorLS0tLS0tLS0tCisgIndvcmxkIgorKDEgcm93KQor CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAo aXRlbSB0ZXh0IFBBVEggJyQnIE9NSVQgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKKyBpdGVt ICAKKy0tLS0tLS0KKyB3b3JsZAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IEZPUk1BVCBKU09OIFBBVEgg JyQnIEtFRVAgUVVPVEVTKSk7CisgIGl0ZW0gICAKKy0tLS0tLS0tLQorICJ3b3JsZCIKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVN TlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUykpOworIGl0ZW0g IAorLS0tLS0tLQorIHdvcmxkCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShq c29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAn JCcgV0lUSE9VVCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CisgIGl0ZW0gICAKKy0tLS0tLS0tLQor ICJ3b3JsZCIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29y bGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgT01J VCBRVU9URVMpKTsKKyBpdGVtICAKKy0tLS0tLS0KKyB3b3JsZAorKDEgcm93KQorCitTRUxFQ1Qg KiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0 IEZPUk1BVCBKU09OIFBBVEggJyQnIFdJVEggV1JBUFBFUikpOworICAgaXRlbSAgICAKKy0tLS0t LS0tLS0tCisgWyJ3b3JsZCJdCisoMSByb3cpCisKKy0tIEVycm9yOiBRVU9URVMgY2xhdXNlIG1l YW5pbmdsZXNzIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHByZXNlbnQKK1NFTEVDVCAqIEZST00gSlNP Tl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgRk9STUFUIEpT T04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7CitFUlJPUjogIFNRTC9KU09O IFFVT1RFUyBiZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIg aXMgdXNlZAorTElORSAxOiAuLi5UICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywg JyQnIENPTFVNTlMgKGl0ZW0gdGV4dCAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFC TEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQnIFdJVEgg V1JBUFBFUiBPTUlUIFFVT1RFUykpOworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3Ig bXVzdCBub3QgYmUgc3BlY2lmaWVkIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTog Li4uVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVt IHRleHQgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gSlNPTl9UQUJMRTogbmVzdGVkIHBhdGhzIGFuZCBwbGFucwor LS0gU2hvdWxkIGZhaWwgKEpTT05fVEFCTEUgY29sdW1ucyBtdXN0IGNvbnRhaW4gZXhwbGljaXQg QVMgcGF0aAorLS0gc3BlY2lmaWNhdGlvbnMgaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNl ZCkKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnW10nLCAnJCcgLS0gQVMgPHBh dGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCUNPTFVNTlMgKAorCQlmb28gaW50IFBBVEggJyQnCisJ KQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFC TEUgZXhwcmVzc2lvbgorTElORSAyOiAganNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+ IHJlcXVpcmVkIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIEpTT05fVEFC TEUgcGF0aCBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUgc3BlY2lmaWNhdGlvbiBp ZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnIEFTIHBhdGgxCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBDT0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorCQkJZm9vIGludCBQ QVRIICckJworCQkpCisJKQorCVBMQU4gREVGQVVMVCAoVU5JT04pCispIGp0OworRVJST1I6ICBp bnZhbGlkIEpTT05fVEFCTEUgZXhwcmVzc2lvbgorTElORSA0OiAgIE5FU1RFRCBQQVRIICckJyBD T0xVTU5TICggLS0gQVMgPHBhdGggbmFtZT4gcmVxdWlyZWQgaGVyZQorICAgICAgICAgIF4KK0RF VEFJTDogIEpTT05fVEFCTEUgcGF0aCBtdXN0IGNvbnRhaW4gZXhwbGljaXQgQVMgcGF0aG5hbWUg c3BlY2lmaWNhdGlvbiBpZiBleHBsaWNpdCBQTEFOIGNsYXVzZSBpcyB1c2VkCistLSBTaG91bGQg ZmFpbCAoY29sdW1uIG5hbWVzIG11c3QgYmUgZGlzdGluY3QpCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIEFTIGEKKwlDT0xVTU5TICgKKwkJYSBpbnQKKwkpCisp IGp0OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBjb2x1bW4gbmFtZTogYQorTElORSA0 OiAgIGEgaW50CisgICAgICAgICAgXgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25i ICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcg QVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworRVJST1I6ICBkdXBs aWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6IGEKK0xJTkUgNTogICBORVNURUQgUEFUSCAnJCcg QVMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQg UEFUSCAnJCcgQVMgYgorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworRVJS T1I6ICBkdXBsaWNhdGUgSlNPTl9UQUJMRSBwYXRoIG5hbWU6IGIKK0xJTkUgNTogICBORVNURUQg UEFUSCAnJCcgQVMgYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBhCisJCUNPTFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnCisJCUNPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJCUNPTFVNTlMgKAor CQkJCWMgaW50CisJCQkpCisJCSkKKwkpCispIGp0OworRVJST1I6ICBkdXBsaWNhdGUgSlNPTl9U QUJMRSBwYXRoIG5hbWU6IGEKK0xJTkUgMTA6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBhCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gSlNPTl9UQUJMRTogcGxhbiB2YWxpZGF0 aW9uCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMg cDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkK KwkJKQorCSkKKwlQTEFOIChwMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBw bGFuCitMSU5FIDEyOiAgUExBTiAocDEpCisgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgUEFU SCBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCBwMCBidXQgcDEgaXMgZ2l2ZW4uCitTRUxFQ1QgKiBG Uk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xV TU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgK KwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQor CVBMQU4gKHAwKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNwZWNpZmljYXRp b24KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisgICAgICAgICAg XgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAxIHdhcyBub3QgZm91bmQu CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ251bGwnLCAnJFsqXScgQVMgcDAK KwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQn IEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQg KQorCQkpCisJKQorCVBMQU4gKHAwIE9VVEVSIHAzKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBK U09OX1RBQkxFIHNwZWNpZmljYXRpb24KK0xJTkUgNDogICBORVNURUQgUEFUSCAnJCcgQVMgcDEg Q09MVU1OUyAoCisgICAgICAgICAgXgorREVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBw YXRoIHAxIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwIFVOSU9OIHAxIFVOSU9O IHAxMSkKKykganQ7CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBwbGFuIGNsYXVzZQorTElO RSAxMjogIFBMQU4gKHAwIFVOSU9OIHAxIFVOSU9OIHAxMSkKKyAgICAgICAgICAgICAgICBeCitE RVRBSUw6ICBFeHBlY3RlZCBJTk5FUiBvciBPVVRFUi4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFU SCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMg KCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50 ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VU RVIgKHAxIENST1NTIHAxMykpCispIGp0OworRVJST1I6ICBpbnZhbGlkIEpTT05fVEFCTEUgc3Bl Y2lmaWNhdGlvbgorTElORSA4OiAgIE5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKyAg ICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBmb3IgbmVzdGVkIHBhdGggcDIgd2FzIG5v dCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypd JyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICgg YmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENST1NTIHAyKSkKKykganQ7 CitFUlJPUjogIGludmFsaWQgSlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDU6ICAgIE5F U1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKyAgICAgICAgICAgXgor REVUQUlMOiAgUExBTiBjbGF1c2UgZm9yIG5lc3RlZCBwYXRoIHAxMSB3YXMgbm90IGZvdW5kLgor U0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJ Q09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQ QVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBB UyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIg Q09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkK KwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIFVOSU9OIHAxMSkgQ1JPU1MgcDIpKQorKSBq dDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHBsYW4gY2xhdXNlCitMSU5FIDEyOiAgUExB TiAocDAgT1VURVIgKChwMSBVTklPTiBwMTEpIENST1NTIHAyKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVzZSBjb250YWlucyBzb21lIGV4dHJhIG9yIGR1 cGxpY2F0ZSBzaWJsaW5nIG5vZGVzLgorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25i ICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBw MSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQg KSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAor CQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMg cDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAoKHAxIElO TkVSIHAxMSkgQ1JPU1MgcDIpKQorKSBqdDsKK0VSUk9SOiAgaW52YWxpZCBKU09OX1RBQkxFIHNw ZWNpZmljYXRpb24KK0xJTkUgNjogICAgTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICgg YmFyIGludCApCisgICAgICAgICAgIF4KK0RFVEFJTDogIFBMQU4gY2xhdXNlIGZvciBuZXN0ZWQg cGF0aCBwMTIgd2FzIG5vdCBmb3VuZC4KK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJ Tk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CitFUlJPUjogIGludmFsaWQg SlNPTl9UQUJMRSBzcGVjaWZpY2F0aW9uCitMSU5FIDk6ICAgIE5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorICAgICAgICAgICBeCitERVRBSUw6ICBQTEFOIGNsYXVz ZSBmb3IgbmVzdGVkIHBhdGggcDIxIHdhcyBub3QgZm91bmQuCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1O UyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQ TEFOIChwMCBPVVRFUiAoKHAxIElOTkVSIChwMTIgQ1JPU1MgcDExKSkgQ1JPU1MgKHAyIElOTkVS IHAyMSkpKQorKSBqdDsKKyBiYXIgfCBmb28gfCBiYXogCistLS0tLSstLS0tLSstLS0tLQorKDAg cm93cykKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJ3N0cmlj dCAkWypdJyAtLSB3aXRob3V0IHJvb3QgcGF0aCBuYW1lCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQ QVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1O UyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBp bnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQg UEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOICgocDEg SU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9TUyAocDIgSU5ORVIgcDIxKSkKKykganQ7CitFUlJP UjogIGludmFsaWQgSlNPTl9UQUJMRSBleHByZXNzaW9uCitMSU5FIDI6ICBqc29uYiAnbnVsbCcs ICdzdHJpY3QgJFsqXScgLS0gd2l0aG91dCByb290IHBhdGggbmFtZQorICAgICAgICAgICAgICAg ICAgICAgICBeCitERVRBSUw6ICBKU09OX1RBQkxFIHBhdGggbXVzdCBjb250YWluIGV4cGxpY2l0 IEFTIHBhdGhuYW1lIHNwZWNpZmljYXRpb24gaWYgZXhwbGljaXQgUExBTiBjbGF1c2UgaXMgdXNl ZAorLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KK0NSRUFURSBURU1QIFRBQkxFIGpzb25i X3RhYmxlX3Rlc3QgKGpzIGpzb25iKTsKK0lOU0VSVCBJTlRPIGpzb25iX3RhYmxlX3Rlc3QKK1ZB TFVFUyAoCisJJ1sKKwkJeyJhIjogIDEsICAiYiI6IFtdLCAiYyI6IFtdfSwKKwkJeyJhIjogIDIs ICAiYiI6IFsxLCAyLCAzXSwgImMiOiBbMTAsIG51bGwsIDIwXX0sCisJCXsiYSI6ICAzLCAgImIi OiBbMSwgMl0sICJjIjogW119LAorCQl7IngiOiAiNCIsICJiIjogWzEsIDJdLCAiYyI6IDEyM30K KwkgXScKKyk7CistLSB1bnNwZWNpZmllZCBwbGFuIChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQor IDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIg fCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAg MiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8 IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDExIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAo b3V0ZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKG91dGVy LCB1bmlvbikKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisg MSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8 ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAy IHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwg MyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKwor LS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgor ZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0 cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEg aW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAn c3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkK KwkJKQorCQlwbGFuIChwIG91dGVyIChwYiB1bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBi IHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIgfCAgMiB8IDEg fCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8ICAgfCAx MAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAgMyB8IDEgfCAgIAor IDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8IDIgfCAgIAorKDEx IHJvd3MpCisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3NlbGVj dAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxp dHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7Cisg biB8IGEgIHwgYyAgfCBiIAorLS0tKy0tLS0rLS0tLSstLS0KKyAxIHwgIDEgfCAgICB8ICAKKyAy IHwgIDIgfCAxMCB8ICAKKyAyIHwgIDIgfCAgICB8ICAKKyAyIHwgIDIgfCAyMCB8ICAKKyAyIHwg IDIgfCAgICB8IDEKKyAyIHwgIDIgfCAgICB8IDIKKyAyIHwgIDIgfCAgICB8IDMKKyAzIHwgIDMg fCAgICB8IDEKKyAzIHwgIDMgfCAgICB8IDIKKyA0IHwgLTEgfCAgICB8IDEKKyA0IHwgLTEgfCAg ICB8IDIKKygxMSByb3dzKQorCistLSBkZWZhdWx0IHBsYW4gKGlubmVyLCB1bmlvbikKK3NlbGVj dAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJ anR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxp dHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVz dGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyAp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBw YXRoICckJyApCisJCSkKKwkJcGxhbiBkZWZhdWx0IChpbm5lcikKKwkpIGp0OworIG4gfCBhICB8 IGIgfCBjICAKKy0tLSstLS0tKy0tLSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwg MSB8IDEwCisgMiB8ICAyIHwgMSB8ICAgCisgMiB8ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8 IDEwCisgMiB8ICAyIHwgMiB8ICAgCisgMiB8ICAyIHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEw CisgMiB8ICAyIHwgMyB8ICAgCisgMiB8ICAyIHwgMyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisg NCB8IC0xIHwgICB8ICAgCisoMTIgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAo cGIgdW5pb24gcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiB1 bmlvbiBwYykpCisJKSBqdDsKKyBuIHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQor IDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDMgfCAgIAorIDIg fCAgMiB8ICAgfCAxMAorIDIgfCAgMiB8ICAgfCAgIAorIDIgfCAgMiB8ICAgfCAyMAorIDMgfCAg MyB8IDEgfCAgIAorIDMgfCAgMyB8IDIgfCAgIAorIDQgfCAtMSB8IDEgfCAgIAorIDQgfCAtMSB8 IDIgfCAgIAorKDEwIHJvd3MpCisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQorc2Vs ZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAor CQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5h bGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQlu ZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQn ICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50 IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGNyb3NzLCBpbm5lcikKKwkpIGp0Owor IG4gfCBhIHwgYiB8IGMgIAorLS0tKy0tLSstLS0rLS0tLQorIDIgfCAyIHwgMSB8IDEwCisgMiB8 IDIgfCAxIHwgICAKKyAyIHwgMiB8IDEgfCAyMAorIDIgfCAyIHwgMiB8IDEwCisgMiB8IDIgfCAy IHwgICAKKyAyIHwgMiB8IDIgfCAyMAorIDIgfCAyIHwgMyB8IDEwCisgMiB8IDIgfCAzIHwgICAK KyAyIHwgMiB8IDMgfCAyMAorKDkgcm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBpbm5lciAo cGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0 LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMg KAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQg LTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1u cyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMg cGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIGlubmVyIChwYiBj cm9zcyBwYykpCisJKSBqdDsKKyBuIHwgYSB8IGIgfCBjICAKKy0tLSstLS0rLS0tKy0tLS0KKyAy IHwgMiB8IDEgfCAxMAorIDIgfCAyIHwgMSB8ICAgCisgMiB8IDIgfCAxIHwgMjAKKyAyIHwgMiB8 IDIgfCAxMAorIDIgfCAyIHwgMiB8ICAgCisgMiB8IDIgfCAyIHwgMjAKKyAyIHwgMiB8IDMgfCAx MAorIDIgfCAyIHwgMyB8ICAgCisgMiB8IDIgfCAzIHwgMjAKKyg5IHJvd3MpCisKKy0tIGRlZmF1 bHQgcGxhbiAob3V0ZXIsIGNyb3NzKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxl X3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJ CWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEn IGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMg cGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQu Y1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1 bHQgKG91dGVyLCBjcm9zcykKKwkpIGp0OworIG4gfCBhICB8IGIgfCBjICAKKy0tLSstLS0tKy0t LSstLS0tCisgMSB8ICAxIHwgICB8ICAgCisgMiB8ICAyIHwgMSB8IDEwCisgMiB8ICAyIHwgMSB8 ICAgCisgMiB8ICAyIHwgMSB8IDIwCisgMiB8ICAyIHwgMiB8IDEwCisgMiB8ICAyIHwgMiB8ICAg CisgMiB8ICAyIHwgMiB8IDIwCisgMiB8ICAyIHwgMyB8IDEwCisgMiB8ICAyIHwgMyB8ICAgCisg MiB8ICAyIHwgMyB8IDIwCisgMyB8ICAzIHwgICB8ICAgCisgNCB8IC0xIHwgICB8ICAgCisoMTIg cm93cykKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRlciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0 CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlq dHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0 eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0 ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICks CisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBh dGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChwYiBjcm9zcyBwYykpCisJKSBqdDsKKyBu IHwgYSAgfCBiIHwgYyAgCistLS0rLS0tLSstLS0rLS0tLQorIDEgfCAgMSB8ICAgfCAgIAorIDIg fCAgMiB8IDEgfCAxMAorIDIgfCAgMiB8IDEgfCAgIAorIDIgfCAgMiB8IDEgfCAyMAorIDIgfCAg MiB8IDIgfCAxMAorIDIgfCAgMiB8IDIgfCAgIAorIDIgfCAgMiB8IDIgfCAyMAorIDIgfCAgMiB8 IDMgfCAxMAorIDIgfCAgMiB8IDMgfCAgIAorIDIgfCAgMiB8IDMgfCAyMAorIDMgfCAgMyB8ICAg fCAgIAorIDQgfCAtMSB8ICAgfCAgIAorKDEyIHJvd3MpCisKK3NlbGVjdAorCWp0LiosIGIxICsg MTAwIGFzIGIKK2Zyb20KKwlqc29uX3RhYmxlIChqc29uYgorCQknWworCQkJeyJhIjogIDEsICAi YiI6IFtbMSwgMTBdLCBbMl0sIFszLCAzMCwgMzAwXV0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJ CXsiYSI6ICAyLCAgImIiOiBbMTAsIDIwXSwgImMiOiBbMSwgbnVsbCwgMl19LAorCQkJeyJ4Ijog IjMiLCAiYiI6IFsxMSwgMjIsIDMzLCA0NF19CisJCSBdJywKKwkJJyRbKl0nIGFzIHAKKwkJY29s dW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVm YXVsdCAtMSBvbiBlcnJvciwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBj b2x1bW5zICgKKwkJCQliIHRleHQgZm9ybWF0IGpzb24gcGF0aCAnJCcsCisJCQkJbmVzdGVkIHBh dGggJ3N0cmljdCAkWypdJyBhcyBwYjEgY29sdW1ucyAoCisJCQkJCWIxIGludCBwYXRoICckJwor CQkJCSkKKwkJCSksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1u cyAoCisJCQkJYyB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdz dHJpY3QgJFsqXScgYXMgcGMxIGNvbHVtbnMgKAorCQkJCQljMSBpbnQgcGF0aCAnJCcKKwkJCQkp CisJCQkpCisJCSkKKwkJLS1wbGFuIGRlZmF1bHQob3V0ZXIsIGNyb3NzKQorCQlwbGFuKHAgb3V0 ZXIgKChwYiBpbm5lciBwYjEpIGNyb3NzIChwYyBvdXRlciBwYzEpKSkKKwkpIGp0OworIG4gfCBh ICB8ICAgICAgYiAgICAgICB8IGIxICB8ICBjICAgfCBjMSB8ICBiICAKKy0tLSstLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tKy0tLS0tCisgMSB8ICAxIHwgWzEsIDEwXSAgICAg IHwgICAxIHwgMSAgICB8ICAgIHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwg bnVsbCB8ICAgIHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgICAxIHwgMiAgICB8ICAg IHwgMTAxCisgMSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwgMSAgICB8ICAgIHwgMTEwCisg MSB8ICAxIHwgWzEsIDEwXSAgICAgIHwgIDEwIHwgbnVsbCB8ICAgIHwgMTEwCisgMSB8ICAxIHwg WzEsIDEwXSAgICAgIHwgIDEwIHwgMiAgICB8ICAgIHwgMTEwCisgMSB8ICAxIHwgWzJdICAgICAg ICAgIHwgICAyIHwgMSAgICB8ICAgIHwgMTAyCisgMSB8ICAxIHwgWzJdICAgICAgICAgIHwgICAy IHwgbnVsbCB8ICAgIHwgMTAyCisgMSB8ICAxIHwgWzJdICAgICAgICAgIHwgICAyIHwgMiAgICB8 ICAgIHwgMTAyCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgMSAgICB8ICAgIHwgMTAz CisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgbnVsbCB8ICAgIHwgMTAzCisgMSB8ICAx IHwgWzMsIDMwLCAzMDBdIHwgICAzIHwgMiAgICB8ICAgIHwgMTAzCisgMSB8ICAxIHwgWzMsIDMw LCAzMDBdIHwgIDMwIHwgMSAgICB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwg IDMwIHwgbnVsbCB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgIDMwIHwgMiAg ICB8ICAgIHwgMTMwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgMSAgICB8ICAgIHwg NDAwCisgMSB8ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgbnVsbCB8ICAgIHwgNDAwCisgMSB8 ICAxIHwgWzMsIDMwLCAzMDBdIHwgMzAwIHwgMiAgICB8ICAgIHwgNDAwCisgMiB8ICAyIHwgICAg ICAgICAgICAgIHwgICAgIHwgICAgICB8ICAgIHwgICAgCisgMyB8IC0xIHwgICAgICAgICAgICAg IHwgICAgIHwgICAgICB8ICAgIHwgICAgCisoMjAgcm93cykKKworLS0gU2hvdWxkIHN1Y2NlZWQg KEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQorU0VM RUNUICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJpZXMo MSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMsNCw1 LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHggQVMgeCwg eSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAorCQkJ TkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09MVU1OUyAoCisJCQkJ eiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisgeCB8IHkgfCAgICAgIHkgICAgICAg fCB6IAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLSstLS0KKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8 IDEKKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyAyIHwgMSB8IFsxLCAyLCAzXSAgICB8IDMK KyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDEKKyAzIHwgMSB8IFsxLCAyLCAzXSAgICB8IDIKKyAz IHwgMSB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwg MSB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMSB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMSB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMSB8IFsxLCAyLCAzXSAgICB8IDEKKyA0IHwgMSB8IFsx LCAyLCAzXSAgICB8IDIKKyA0IHwgMSB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwgMSB8IFsyLCAz LCA0LCA1XSB8IDIKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMSB8IFsyLCAzLCA0 LCA1XSB8IDQKKyA0IHwgMSB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMSB8IFszLCA0LCA1LCA2 XSB8IDMKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDQKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8 IDUKKyA0IHwgMSB8IFszLCA0LCA1LCA2XSB8IDYKKyAyIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIK KyAyIHwgMiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyAz IHwgMiB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyAzIHwg MiB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyAzIHwgMiB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMiB8IFsxLCAyLCAzXSAgICB8IDIKKyA0IHwgMiB8IFsx LCAyLCAzXSAgICB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDIKKyA0IHwgMiB8IFsyLCAz LCA0LCA1XSB8IDMKKyA0IHwgMiB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwgMiB8IFsyLCAzLCA0 LCA1XSB8IDUKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwgMiB8IFszLCA0LCA1LCA2 XSB8IDQKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwgMiB8IFszLCA0LCA1LCA2XSB8 IDYKKyAyIHwgMyB8IFsxLCAyLCAzXSAgICB8IDMKKyAzIHwgMyB8IFsxLCAyLCAzXSAgICB8IDMK KyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDMKKyAzIHwgMyB8IFsyLCAzLCA0LCA1XSB8IDQKKyAz IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMyB8IFsxLCAyLCAzXSAgICB8IDMKKyA0IHwg MyB8IFsyLCAzLCA0LCA1XSB8IDMKKyA0IHwgMyB8IFsyLCAzLCA0LCA1XSB8IDQKKyA0IHwgMyB8 IFsyLCAzLCA0LCA1XSB8IDUKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDMKKyA0IHwgMyB8IFsz LCA0LCA1LCA2XSB8IDQKKyA0IHwgMyB8IFszLCA0LCA1LCA2XSB8IDUKKyA0IHwgMyB8IFszLCA0 LCA1LCA2XSB8IDYKKyg1MiByb3dzKQorCistLSBTaG91bGQgZmFpbCAoSlNPTiBhcmd1bWVudHMg YXJlIG5vdCBwYXNzZWQgdG8gY29sdW1uIHBhdGhzKQorU0VMRUNUICoKK0ZST00gSlNPTl9UQUJM RSgKKwlqc29uYiAnWzEsMiwzXScsCisJJyRbKl0gPyAoQCA8ICR4KScKKwkJUEFTU0lORyAxMCBB UyB4CisJCUNPTFVNTlMgKHkgdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckID8gKEAgPCAkeCknKQor CSkganQ7CitFUlJPUjogIGNvdWxkIG5vdCBmaW5kIGpzb25wYXRoIHZhcmlhYmxlICJ4IgorLS0g U2hvdWxkIGZhaWwgKG5vdCBzdXBwb3J0ZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNv bmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBDT0xVTU5TIChmb28gaW50KSk7CitF UlJPUjogIG9ubHkgc3RyaW5nIGNvbnN0YW50cyBhcmUgc3VwcG9ydGVkIGluIEpTT05fVEFCTEUg cGF0aCBzcGVjaWZpY2F0aW9uCitMSU5FIDE6IFNFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29u YiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJy4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hl ZHVsZQppbmRleCA5MTBmNmZlM2M5Li5kOGUyNWJiZDJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9ydGFsc19w MiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21ibwogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRl ZCkKICMgLS0tLS0tLS0tLQotdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpzb25wYXRo IGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24gc3FsanNvbl9xdWVyeWZ1 bmNzCit0ZXN0OiBqc29uIGpzb25iIGpzb25fZW5jb2RpbmcganNvbnBhdGgganNvbnBhdGhfZW5j b2RpbmcganNvbmJfanNvbnBhdGggc3FsanNvbiBzcWxqc29uX3F1ZXJ5ZnVuY3Mgc3FsanNvbl9q c29udGFibGUKIAogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVz dHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fanNvbnRhYmxlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42NzdhMTRmZGJjCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9qc29udGFibGUuc3FsCkBAIC0wLDAgKzEs NzI5IEBACistLSBKU09OX1RBQkxFCisKKy0tIFNob3VsZCBmYWlsIChKU09OX1RBQkxFIGNhbiBi ZSB1c2VkIG9ubHkgaW4gRlJPTSBjbGF1c2UpCitTRUxFQ1QgSlNPTl9UQUJMRSgnW10nLCAnJCcp OworCistLSBTaG91bGQgZmFpbCAoanNvbiBhcmd1bWVudCBub3Qgc3VwcG9ydGVkKQorU0VMRUNU ICogRlJPTSBKU09OX1RBQkxFKE5VTEwgRk9STUFUIEpTT04sICckJyBDT0xVTU5TIChmb28gdGV4 dCkpOworCistLSBTaG91bGQgZmFpbCAobm8gY29sdW1ucykKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRShOVUxMLCAnJCcgQ09MVU1OUyAoKSk7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSAo TlVMTDo6anNvbmIsICckJyBDT0xVTU5TICh2MSB0aW1lc3RhbXApKSBBUyBmICh2MSwgdjIpOwor CistLSBOVUxMID0+IGVtcHR5IHRhYmxlCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoTlVMTDo6 anNvbmIsICckJyBDT0xVTU5TIChmb28gaW50KSkgYmFyOworCistLQorU0VMRUNUICogRlJPTSBK U09OX1RBQkxFKGpzb25iICcxMjMnLCAnJCcKKwlDT0xVTU5TIChpdGVtIGludCBQQVRIICckJywg Zm9vIGludCkpIGJhcjsKKworLS0gSlNPTl9UQUJMRTogYmFzaWMgZnVuY3Rpb25hbGl0eQorQ1JF QVRFIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbiBBUyB0ZXh0IENIRUNLICh2YWx1ZSA8PiAnZm9v Jyk7CitDUkVBVEUgVEVNUCBUQUJMRSBqc29uX3RhYmxlX3Rlc3QgKGpzKSBBUworCShWQUxVRVMK KwkJKCcxJyksCisJCSgnW10nKSwKKwkJKCd7fScpLAorCQkoJ1sxLCAxLjIzLCAiMiIsICJhYWFh YWFhIiwgImZvbyIsIG51bGwsIGZhbHNlLCB0cnVlLCB7ImFhYSI6IDEyM30sICJbMSwyXSIsICJc InN0clwiIl0nKQorCSk7CisKKy0tIFJlZ3VsYXIgInVuZm9ybWF0dGVkIiBjb2x1bW5zCitTRUxF Q1QgKgorRlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05f VEFCTEUoCisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQg Rk9SIE9SRElOQUxJVFksCisJCQkiaW50IiBpbnQgUEFUSCAnJCcsCisJCQkidGV4dCIgdGV4dCBQ QVRIICckJywKKwkJCSJjaGFyKDQpIiBjaGFyKDQpIFBBVEggJyQnLAorCQkJImJvb2wiIGJvb2wg UEFUSCAnJCcsCisJCQkibnVtZXJpYyIgbnVtZXJpYyBQQVRIICckJywKKwkJCSJkb21haW4iIGpz b25iX3Rlc3RfZG9tYWluIFBBVEggJyQnLAorCQkJanMganNvbiBQQVRIICckJywKKwkJCWpiIGpz b25iIFBBVEggJyQnCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsKKworLS0gImZvcm1hdHRlZCIgY29s dW1ucworU0VMRUNUICoKK0ZST00ganNvbl90YWJsZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpP SU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpqc29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5T ICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJanN0IHRleHQgICAgRk9STUFUIEpTT04gIFBB VEggJyQnLAorCQkJanNjIGNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanN2IHZh cmNoYXIoNCkgRk9STUFUIEpTT04gIFBBVEggJyQnLAorCQkJanNiIGpzb25iIEZPUk1BVCBKU09O IFBBVEggJyQnLAorCQkJanNicSBqc29uYiBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RF UworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tIEVYSVNUUyBjb2x1bW5zCitTRUxFQ1QgKgor RlJPTSBqc29uX3RhYmxlX3Rlc3QgdmFscworCUxFRlQgT1VURVIgSk9JTgorCUpTT05fVEFCTEUo CisJCXZhbHMuanM6Ompzb25iLCAnbGF4ICRbKl0nCisJCUNPTFVNTlMgKAorCQkJaWQgRk9SIE9S RElOQUxJVFksCisJCQlleGlzdHMxIGJvb2wgRVhJU1RTIFBBVEggJyQuYWFhJywKKwkJCWV4aXN0 czIgaW50IEVYSVNUUyBQQVRIICckLmFhYScsCisJCQlleGlzdHMzIGludCBFWElTVFMgUEFUSCAn c3RyaWN0ICQuYWFhJyBVTktOT1dOIE9OIEVSUk9SLAorCQkJZXhpc3RzNCB0ZXh0IEVYSVNUUyBQ QVRIICdzdHJpY3QgJC5hYWEnIEZBTFNFIE9OIEVSUk9SCisJCSkKKwkpIGp0CisJT04gdHJ1ZTsK KworLS0gT3RoZXIgbWlzY2VsbGFub3VzIGNoZWNrcworU0VMRUNUICoKK0ZST00ganNvbl90YWJs ZV90ZXN0IHZhbHMKKwlMRUZUIE9VVEVSIEpPSU4KKwlKU09OX1RBQkxFKAorCQl2YWxzLmpzOjpq c29uYiwgJ2xheCAkWypdJworCQlDT0xVTU5TICgKKwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJ YWFhIGludCwgLS0gImFhYSIgaGFzIGltcGxpY2l0IHBhdGggJyQuImFhYSInCisJCQlhYWExIGlu dCBQQVRIICckLmFhYScsCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBB VEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVT LAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEg anNvbmJbXSBQQVRIICckJworCQkpCisJKSBqdAorCU9OIHRydWU7CisKKy0tIEpTT05fVEFCTEU6 IFRlc3QgYmFja3dhcmQgcGFyc2luZworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MSBB UworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypd JyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgK KwkJCWlkIEZPUiBPUkRJTkFMSVRZLAorCQkJTkVTVEVEIFBBVEggJyRbMV0nIEFTIHAxIENPTFVN TlMgKAorCQkJCWExIGludCwKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMgInAxIDEiIENPTFVN TlMgKAorCQkJCQlhMTEgdGV4dAorCQkJCSksCisJCQkJYjEgdGV4dAorCQkJKSwKKwkJCU5FU1RF RCBQQVRIICckWzJdJyBBUyBwMiBDT0xVTU5TICgKKwkJCQlORVNURUQgUEFUSCAnJFsqXScgQVMg InAyOjEiIENPTFVNTlMgKAorCQkJCQlhMjEgdGV4dAorCQkJCSksCisJCQkJTkVTVEVEIFBBVEgg JyRbKl0nIEFTIHAyMiBDT0xVTU5TICgKKwkJCQkJYTIyIHRleHQKKwkJCQkpCisJCQkpCisJCSkK KwkpOworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3MiBBUworU0VMRUNUICogRlJPTQor CUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypdJyBQQVNTSU5HIDEgKyAyIEFT IGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgKKwkJCSJpbnQiIGludCBQQVRI ICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnLAorCQkJImNoYXIoNCkiIGNoYXIoNCkgUEFU SCAnJCcsCisJCQkiYm9vbCIgYm9vbCBQQVRIICckJywKKwkJCSJudW1lcmljIiBudW1lcmljIFBB VEggJyQnLAorCQkJImRvbWFpbiIganNvbmJfdGVzdF9kb21haW4gUEFUSCAnJCcpKTsKKworQ1JF QVRFIFZJRVcganNvbmJfdGFibGVfdmlldzMgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxF KAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICci Zm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlqcyBqc29uIFBBVEggJyQnLAorCQkJamIg anNvbmIgUEFUSCAnJCcsCisJCQlqc3QgdGV4dCAgICBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJ CQlqc2MgY2hhcig0KSBGT1JNQVQgSlNPTiAgUEFUSCAnJCcsCisJCQlqc3YgdmFyY2hhcig0KSBG T1JNQVQgSlNPTiAgUEFUSCAnJCcpKTsKKworQ1JFQVRFIFZJRVcganNvbmJfdGFibGVfdmlldzQg QVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsq XScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAo CisgICAgICAgICAgICBqc2IganNvbmIgICBGT1JNQVQgSlNPTiBQQVRIICckJywKKyAgICAgICAg ICAgIGpzYnEganNvbmIgRk9STUFUIEpTT04gUEFUSCAnJCcgT01JVCBRVU9URVMsCisgICAgICAg ICAgICBhYWEgaW50LCAtLSBpbXBsaWNpdCBwYXRoICckLiJhYWEiJywKKyAgICAgICAgICAgIGFh YTEgaW50IFBBVEggJyQuYWFhJykpOworCitDUkVBVEUgVklFVyBqc29uYl90YWJsZV92aWV3NSBB UworU0VMRUNUICogRlJPTQorCUpTT05fVEFCTEUoCisJCWpzb25iICdudWxsJywgJ2xheCAkWypd JyBQQVNTSU5HIDEgKyAyIEFTIGEsIGpzb24gJyJmb28iJyBBUyAiYiBjIgorCQlDT0xVTU5TICgK KwkJCWV4aXN0czEgYm9vbCBFWElTVFMgUEFUSCAnJC5hYWEnLAorCQkJZXhpc3RzMiBpbnQgRVhJ U1RTIFBBVEggJyQuYWFhJyBUUlVFIE9OIEVSUk9SLAorCQkJZXhpc3RzMyB0ZXh0IEVYSVNUUyBQ QVRIICdzdHJpY3QgJC5hYWEnIFVOS05PV04gT04gRVJST1IpKTsKKworQ1JFQVRFIFZJRVcganNv bmJfdGFibGVfdmlldzYgQVMKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxFKAorCQlqc29uYiAn bnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICciZm9vIicgQVMgImIg YyIKKwkJQ09MVU1OUyAoCisJCQlqczIganNvbiBQQVRIICckJywKKwkJCWpzYjJ3IGpzb25iIFBB VEggJyQnIFdJVEggV1JBUFBFUiwKKwkJCWpzYjJxIGpzb25iIFBBVEggJyQnIE9NSVQgUVVPVEVT LAorCQkJaWEgaW50W10gUEFUSCAnJCcsCisJCQl0YSB0ZXh0W10gUEFUSCAnJCcsCisJCQlqYmEg anNvbmJbXSBQQVRIICckJykpOworCitcc3YganNvbmJfdGFibGVfdmlldzEKK1xzdiBqc29uYl90 YWJsZV92aWV3MgorXHN2IGpzb25iX3RhYmxlX3ZpZXczCitcc3YganNvbmJfdGFibGVfdmlldzQK K1xzdiBqc29uYl90YWJsZV92aWV3NQorXHN2IGpzb25iX3RhYmxlX3ZpZXc2CisKK0VYUExBSU4g KENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3MTsKK0VY UExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJsZV92aWV3 MjsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29uYl90YWJs ZV92aWV3MzsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJPTSBqc29u Yl90YWJsZV92aWV3NDsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNUICogRlJP TSBqc29uYl90YWJsZV92aWV3NTsKK0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkgU0VMRUNU ICogRlJPTSBqc29uYl90YWJsZV92aWV3NjsKKworLS0gSlNPTl9UQUJMRSgpIHdpdGggYWxpYXMK K0VYUExBSU4gKENPU1RTIE9GRiwgVkVSQk9TRSkKK1NFTEVDVCAqIEZST00KKwlKU09OX1RBQkxF KAorCQlqc29uYiAnbnVsbCcsICdsYXggJFsqXScgUEFTU0lORyAxICsgMiBBUyBhLCBqc29uICci Zm9vIicgQVMgImIgYyIKKwkJQ09MVU1OUyAoCisJCQlpZCBGT1IgT1JESU5BTElUWSwKKwkJCSJp bnQiIGludCBQQVRIICckJywKKwkJCSJ0ZXh0IiB0ZXh0IFBBVEggJyQnCisJKSkganNvbl90YWJs ZV9mdW5jOworCitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzE7CitEUk9QIFZJRVcganNvbmJf dGFibGVfdmlldzI7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzM7CitEUk9QIFZJRVcganNv bmJfdGFibGVfdmlldzQ7CitEUk9QIFZJRVcganNvbmJfdGFibGVfdmlldzU7CitEUk9QIFZJRVcg anNvbmJfdGFibGVfdmlldzY7CitEUk9QIERPTUFJTiBqc29uYl90ZXN0X2RvbWFpbjsKKworLS0g SlNPTl9UQUJMRTogb25seSBvbmUgRk9SIE9SRElOQUxJVFkgY29sdW1ucyBhbGxvd2VkCitTRUxF Q1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAoaWQgRk9SIE9SRElO QUxJVFksIGlkMiBGT1IgT1JESU5BTElUWSwgYSBpbnQgUEFUSCAnJC5hJyBFUlJPUiBPTiBFTVBU WSkpIGp0OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcxJywgJyQnIENPTFVNTlMg KGlkIEZPUiBPUkRJTkFMSVRZLCBhIGludCBQQVRIICckJyBFUlJPUiBPTiBFTVBUWSkpIGp0Owor CistLSBKU09OX1RBQkxFOiBPTiBFTVBUWS9PTiBFUlJPUiBiZWhhdmlvcgorU0VMRUNUICoKK0ZS T00KKwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpLAorCUpTT05fVEFCTEUodmFs cy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJykpIGp0OworCitTRUxFQ1Qg KgorRlJPTQorCShWQUxVRVMgKCcxJyksICgnImVyciInKSkgdmFscyhqcykKKwkJTEVGVCBPVVRF UiBKT0lOCisJSlNPTl9UQUJMRSh2YWxzLmpzOjpqc29uYiwgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJyQnKSBFUlJPUiBPTiBFUlJPUikganQKKwkJT04gdHJ1ZTsKKworU0VMRUNUICoKK0ZST00K KwkoVkFMVUVTICgnMScpLCAoJyJlcnIiJykpIHZhbHMoanMpCisJCUxFRlQgT1VURVIgSk9JTgor CUpTT05fVEFCTEUodmFscy5qczo6anNvbmIsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckJyBF UlJPUiBPTiBFUlJPUikpIGp0CisJCU9OIHRydWU7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGludCBQQVRIICckLmEnIEVSUk9SIE9OIEVNUFRZ KSkganQ7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJzEnLCAnJCcgQ09MVU1OUyAo YSBpbnQgUEFUSCAnc3RyaWN0ICQuYScgRVJST1IgT04gRU1QVFkpIEVSUk9SIE9OIEVSUk9SKSBq dDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnMScsICckJyBDT0xVTU5TIChhIGlu dCBQQVRIICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSkgRVJST1IgT04gRVJST1IpIGp0OworCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludCBQ QVRIICckJyAgIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBqdDsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50IFBB VEggJ3N0cmljdCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1IpKSBq dDsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEg aW50IFBBVEggJ2xheCAkLmEnIERFRkFVTFQgMSBPTiBFTVBUWSBERUZBVUxUIDIgT04gRVJST1Ip KSBqdDsKKworLS0gSlNPTl9UQUJMRTogRVhJU1RTIFBBVEggdHlwZXMKK1NFTEVDVCAqIEZST00g SlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgaW50NCBFWElTVFMgUEFUSCAn JC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcgQ09MVU1O UyAoYSBpbnQyIEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo anNvbmIgJyJhIicsICckJyBDT0xVTU5TIChhIGludDggRVhJU1RTIFBBVEggJyQuYScpKTsKK1NF TEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEgZmxvYXQ0 IEVYSVNUUyBQQVRIICckLmEnKSk7CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJh IicsICckJyBDT0xVTU5TIChhIGNoYXIoMykgRVhJU1RTIFBBVEggJyQuYScpKTsKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRShqc29uYiAnImEiJywgJyQnIENPTFVNTlMgKGEganNvbiBFWElTVFMg UEFUSCAnJC5hJykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICciYSInLCAnJCcg Q09MVU1OUyAoYSBqc29uYiBFWElTVFMgUEFUSCAnJC5hJykpOworCistLSBKU09OX1RBQkxFOiBX UkFQUEVSL1FVT1RFUyBjbGF1c2VzIG9uIHNjYWxhciBjb2x1bW5zCitTRUxFQ1QgKiBGUk9NIEpT T05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAoaXRlbSB0ZXh0IFBBVEggJyQn IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJM RShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChpdGVtIHRleHQgUEFUSCAnJCcgT01JVCBR VU9URVMgT04gU0NBTEFSIFNUUklORykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25i ICcid29ybGQiJywgJyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBL RUVQIFFVT1RFUykpOworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywg JyQnIENPTFVNTlMgKGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBPTUlUIFFVT1RFUykp OworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKGpzb25iICcid29ybGQiJywgJyQnIENPTFVNTlMg KGl0ZW0gdGV4dCBGT1JNQVQgSlNPTiBQQVRIICckJyBXSVRIT1VUIFdSQVBQRVIgS0VFUCBRVU9U RVMpKTsKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xV TU5TIChpdGVtIHRleHQgUEFUSCAnJCcgV0lUSE9VVCBXUkFQUEVSIE9NSVQgUVVPVEVTKSk7CisK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSKSk7CisKKy0tIEVycm9y OiBRVU9URVMgY2xhdXNlIG1lYW5pbmdsZXNzIHdoZW4gV0lUSCBXUkFQUEVSIGlzIHByZXNlbnQK K1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRShqc29uYiAnIndvcmxkIicsICckJyBDT0xVTU5TIChp dGVtIHRleHQgRk9STUFUIEpTT04gUEFUSCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKSk7 CitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJyJ3b3JsZCInLCAnJCcgQ09MVU1OUyAo aXRlbSB0ZXh0IFBBVEggJyQnIFdJVEggV1JBUFBFUiBPTUlUIFFVT1RFUykpOworCistLSBKU09O X1RBQkxFOiBuZXN0ZWQgcGF0aHMgYW5kIHBsYW5zCisKKy0tIFNob3VsZCBmYWlsIChKU09OX1RB QkxFIGNvbHVtbnMgbXVzdCBjb250YWluIGV4cGxpY2l0IEFTIHBhdGgKKy0tIHNwZWNpZmljYXRp b25zIGlmIGV4cGxpY2l0IFBMQU4gY2xhdXNlIGlzIHVzZWQpCitTRUxFQ1QgKiBGUk9NIEpTT05f VEFCTEUoCisJanNvbmIgJ1tdJywgJyQnIC0tIEFTIDxwYXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUK KwlDT0xVTU5TICgKKwkJZm9vIGludCBQQVRIICckJworCSkKKwlQTEFOIERFRkFVTFQgKFVOSU9O KQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBB UyBwYXRoMQorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQ09MVU1OUyAoIC0tIEFTIDxw YXRoIG5hbWU+IHJlcXVpcmVkIGhlcmUKKwkJCWZvbyBpbnQgUEFUSCAnJCcKKwkJKQorCSkKKwlQ TEFOIERFRkFVTFQgKFVOSU9OKQorKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKGNvbHVtbiBuYW1l cyBtdXN0IGJlIGRpc3RpbmN0KQorU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdb XScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWEgaW50CisJKQorKSBqdDsKKworU0VMRUNUICog RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbXScsICckJyBBUyBhCisJQ09MVU1OUyAoCisJCWIg aW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYQorCQlDT0xVTU5TICgKKwkJCWMgaW50CisJCSkK KwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIgJ1tdJywgJyQn CisJQ09MVU1OUyAoCisJCWIgaW50LAorCQlORVNURUQgUEFUSCAnJCcgQVMgYgorCQlDT0xVTU5T ICgKKwkJCWMgaW50CisJCSkKKwkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUo CisJanNvbmIgJ1tdJywgJyQnCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBhCisJ CUNPTFVNTlMgKAorCQkJYiBpbnQKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnCisJCUNPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIGEKKwkJCUNPTFVNTlMgKAorCQkJCWMgaW50CisJCQkp CisJCSkKKwkpCispIGp0OworCistLSBKU09OX1RBQkxFOiBwbGFuIHZhbGlkYXRpb24KKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcg QVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENP TFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMg KAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkp CisJUExBTiAocDEpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJanNvbmIg J251bGwnLCAnJFsqXScgQVMgcDAKKwlDT0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAx IENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCAp LAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJ CU5FU1RFRCBQQVRIICckJyBBUyBwMiBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MjEgQ09MVU1OUyAoIGJheiBpbnQgKQorCQkpCisJKQorCVBMQU4gKHAwKQorKSBqdDsKKworU0VM RUNUICogRlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09M VU1OUyAoCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRI ICckJyBBUyBwMTEgQ09MVU1OUyAoIGZvbyBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBw MTIgQ09MVU1OUyAoIGJhciBpbnQgKQorCQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJ KQorCSkKKwlQTEFOIChwMCBPVVRFUiBwMykKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9U QUJMRSgKKwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQg UEFUSCAnJCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVN TlMgKCBmb28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIg aW50ICkKKwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVE IFBBVEggJyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAg VU5JT04gcDEgVU5JT04gcDExKQorKSBqdDsKKworU0VMRUNUICogRlJPTSBKU09OX1RBQkxFKAor CWpzb25iICdudWxsJywgJyRbKl0nIEFTIHAwCisJQ09MVU1OUyAoCisJCU5FU1RFRCBQQVRIICck JyBBUyBwMSBDT0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTEgQ09MVU1OUyAoIGZv byBpbnQgKSwKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMTIgQ09MVU1OUyAoIGJhciBpbnQgKQor CQkpLAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDIgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAn JCcgQVMgcDIxIENPTFVNTlMgKCBiYXogaW50ICkKKwkJKQorCSkKKwlQTEFOIChwMCBPVVRFUiAo cDEgQ1JPU1MgcDEzKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKHAxIENS T1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVs bCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMgcDEgQ09M VU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50ICksCisJ CQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwKKwkJTkVT VEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFTIHAyMSBD T0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBVTklPTiBw MTEpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgKKwlqc29u YiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAnJCcgQVMg cDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBmb28gaW50 ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkKKwkJKSwK KwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIgKChwMSBJ Tk5FUiBwMTEpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAqIEZST00gSlNPTl9UQUJMRSgK Kwlqc29uYiAnbnVsbCcsICckWypdJyBBUyBwMAorCUNPTFVNTlMgKAorCQlORVNURUQgUEFUSCAn JCcgQVMgcDEgQ09MVU1OUyAoCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDExIENPTFVNTlMgKCBm b28gaW50ICksCisJCQlORVNURUQgUEFUSCAnJCcgQVMgcDEyIENPTFVNTlMgKCBiYXIgaW50ICkK KwkJKSwKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAyIENPTFVNTlMgKAorCQkJTkVTVEVEIFBBVEgg JyQnIEFTIHAyMSBDT0xVTU5TICggYmF6IGludCApCisJCSkKKwkpCisJUExBTiAocDAgT1VURVIg KChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIHAyKSkKKykganQ7CisKK1NFTEVDVCAq IEZST00gSlNPTl9UQUJMRSgKKwlqc29uYiAnbnVsbCcsICdzdHJpY3QgJFsqXScgQVMgcDAKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKHAwIE9VVEVSICgocDEgSU5ORVIgKHAxMiBDUk9TUyBwMTEpKSBDUk9T UyAocDIgSU5ORVIgcDIxKSkpCispIGp0OworCitTRUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoCisJ anNvbmIgJ251bGwnLCAnc3RyaWN0ICRbKl0nIC0tIHdpdGhvdXQgcm9vdCBwYXRoIG5hbWUKKwlD T0xVTU5TICgKKwkJTkVTVEVEIFBBVEggJyQnIEFTIHAxIENPTFVNTlMgKAorCQkJTkVTVEVEIFBB VEggJyQnIEFTIHAxMSBDT0xVTU5TICggZm9vIGludCApLAorCQkJTkVTVEVEIFBBVEggJyQnIEFT IHAxMiBDT0xVTU5TICggYmFyIGludCApCisJCSksCisJCU5FU1RFRCBQQVRIICckJyBBUyBwMiBD T0xVTU5TICgKKwkJCU5FU1RFRCBQQVRIICckJyBBUyBwMjEgQ09MVU1OUyAoIGJheiBpbnQgKQor CQkpCisJKQorCVBMQU4gKChwMSBJTk5FUiAocDEyIENST1NTIHAxMSkpIENST1NTIChwMiBJTk5F UiBwMjEpKQorKSBqdDsKKworLS0gSlNPTl9UQUJMRTogcGxhbiBleGVjdXRpb24KKworQ1JFQVRF IFRFTVAgVEFCTEUganNvbmJfdGFibGVfdGVzdCAoanMganNvbmIpOworCitJTlNFUlQgSU5UTyBq c29uYl90YWJsZV90ZXN0CitWQUxVRVMgKAorCSdbCisJCXsiYSI6ICAxLCAgImIiOiBbXSwgImMi OiBbXX0sCisJCXsiYSI6ICAyLCAgImIiOiBbMSwgMiwgM10sICJjIjogWzEwLCBudWxsLCAyMF19 LAorCQl7ImEiOiAgMywgICJiIjogWzEsIDJdLCAiYyI6IFtdfSwKKwkJeyJ4IjogIjQiLCAiYiI6 IFsxLCAyXSwgImMiOiAxMjN9CisJIF0nCispOworCistLSB1bnNwZWNpZmllZCBwbGFuIChvdXRl ciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJ anNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJ CQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBv biBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICgg YiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBj b2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJKSBqdDsKKworLS0gZGVmYXVsdCBwbGFu IChvdXRlciwgdW5pb24pCitzZWxlY3QKKwlqdC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBq dHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5qcywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1u cyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAorCQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVs dCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1 bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJCW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBh cyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAnJCcgKQorCQkpCisJCXBsYW4gZGVmYXVsdCAob3V0 ZXIsIHVuaW9uKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBiIHVuaW9u IHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29u X3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4g Zm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVt cHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGlu dCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVt bnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGIgdW5pb24gcGMp KQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgb3V0ZXIgKHBjIHVuaW9uIHBiKSkKK3Nl bGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgK KwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGlu YWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJ bmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICck JyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGlu dCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBvdXRlciAocGMgdW5pb24gcGIpKQorCSkganQ7 CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIHVuaW9uKQorc2VsZWN0CisJanQuKgorZnJvbQor CWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAk WypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBh dGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0 ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0 aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQor CQlwbGFuIGRlZmF1bHQgKGlubmVyKQorCSkganQ7CisKKy0tIHNwZWNpZmljIHBsYW4gKHAgaW5u ZXIgKHBiIHVuaW9uIHBjKSkKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90YWJsZV90ZXN0 IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMgcAorCQljb2x1 bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXggJC5hJyBkZWZh dWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0nIGFzIHBiIGNv bHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0n IGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiAocCBpbm5lciAo cGIgdW5pb24gcGMpKQorCSkganQ7CisKKy0tIGRlZmF1bHQgcGxhbiAoaW5uZXIsIGNyb3NzKQor c2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3QganR0LAorCWpzb25fdGFibGUg KAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJbiBmb3Igb3Jk aW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24gZW1wdHksCisJ CQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoIGIgaW50IHBhdGgg JyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScgYXMgcGMgY29sdW1ucyAoIGMg aW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIGRlZmF1bHQgKGNyb3NzLCBpbm5lcikKKwkpIGp0 OworCistLSBzcGVjaWZpYyBwbGFuIChwIGlubmVyIChwYiBjcm9zcyBwYykpCitzZWxlY3QKKwlq dC4qCitmcm9tCisJanNvbmJfdGFibGVfdGVzdCBqdHQsCisJanNvbl90YWJsZSAoCisJCWp0dC5q cywnc3RyaWN0ICRbKl0nIGFzIHAKKwkJY29sdW1ucyAoCisJCQluIGZvciBvcmRpbmFsaXR5LAor CQkJYSBpbnQgcGF0aCAnbGF4ICQuYScgZGVmYXVsdCAtMSBvbiBlbXB0eSwKKwkJCW5lc3RlZCBw YXRoICdzdHJpY3QgJC5iWypdJyBhcyBwYiBjb2x1bW5zICggYiBpbnQgcGF0aCAnJCcgKSwKKwkJ CW5lc3RlZCBwYXRoICdzdHJpY3QgJC5jWypdJyBhcyBwYyBjb2x1bW5zICggYyBpbnQgcGF0aCAn JCcgKQorCQkpCisJCXBsYW4gKHAgaW5uZXIgKHBiIGNyb3NzIHBjKSkKKwkpIGp0OworCistLSBk ZWZhdWx0IHBsYW4gKG91dGVyLCBjcm9zcykKK3NlbGVjdAorCWp0LioKK2Zyb20KKwlqc29uYl90 YWJsZV90ZXN0IGp0dCwKKwlqc29uX3RhYmxlICgKKwkJanR0LmpzLCdzdHJpY3QgJFsqXScgYXMg cAorCQljb2x1bW5zICgKKwkJCW4gZm9yIG9yZGluYWxpdHksCisJCQlhIGludCBwYXRoICdsYXgg JC5hJyBkZWZhdWx0IC0xIG9uIGVtcHR5LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmJbKl0n IGFzIHBiIGNvbHVtbnMgKCBiIGludCBwYXRoICckJyApLAorCQkJbmVzdGVkIHBhdGggJ3N0cmlj dCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKCBjIGludCBwYXRoICckJyApCisJCSkKKwkJcGxhbiBk ZWZhdWx0IChvdXRlciwgY3Jvc3MpCisJKSBqdDsKKworLS0gc3BlY2lmaWMgcGxhbiAocCBvdXRl ciAocGIgY3Jvc3MgcGMpKQorc2VsZWN0CisJanQuKgorZnJvbQorCWpzb25iX3RhYmxlX3Rlc3Qg anR0LAorCWpzb25fdGFibGUgKAorCQlqdHQuanMsJ3N0cmljdCAkWypdJyBhcyBwCisJCWNvbHVt bnMgKAorCQkJbiBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1 bHQgLTEgb24gZW1wdHksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29s dW1ucyAoIGIgaW50IHBhdGggJyQnICksCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuY1sqXScg YXMgcGMgY29sdW1ucyAoIGMgaW50IHBhdGggJyQnICkKKwkJKQorCQlwbGFuIChwIG91dGVyIChw YiBjcm9zcyBwYykpCisJKSBqdDsKKworCitzZWxlY3QKKwlqdC4qLCBiMSArIDEwMCBhcyBiCitm cm9tCisJanNvbl90YWJsZSAoanNvbmIKKwkJJ1sKKwkJCXsiYSI6ICAxLCAgImIiOiBbWzEsIDEw XSwgWzJdLCBbMywgMzAsIDMwMF1dLCAiYyI6IFsxLCBudWxsLCAyXX0sCisJCQl7ImEiOiAgMiwg ICJiIjogWzEwLCAyMF0sICJjIjogWzEsIG51bGwsIDJdfSwKKwkJCXsieCI6ICIzIiwgImIiOiBb MTEsIDIyLCAzMywgNDRdfQorCQkgXScsCisJCSckWypdJyBhcyBwCisJCWNvbHVtbnMgKAorCQkJ biBmb3Igb3JkaW5hbGl0eSwKKwkJCWEgaW50IHBhdGggJ2xheCAkLmEnIGRlZmF1bHQgLTEgb24g ZXJyb3IsCisJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICQuYlsqXScgYXMgcGIgY29sdW1ucyAoCisJ CQkJYiB0ZXh0IGZvcm1hdCBqc29uIHBhdGggJyQnLAorCQkJCW5lc3RlZCBwYXRoICdzdHJpY3Qg JFsqXScgYXMgcGIxIGNvbHVtbnMgKAorCQkJCQliMSBpbnQgcGF0aCAnJCcKKwkJCQkpCisJCQkp LAorCQkJbmVzdGVkIHBhdGggJ3N0cmljdCAkLmNbKl0nIGFzIHBjIGNvbHVtbnMgKAorCQkJCWMg dGV4dCBmb3JtYXQganNvbiBwYXRoICckJywKKwkJCQluZXN0ZWQgcGF0aCAnc3RyaWN0ICRbKl0n IGFzIHBjMSBjb2x1bW5zICgKKwkJCQkJYzEgaW50IHBhdGggJyQnCisJCQkJKQorCQkJKQorCQkp CisJCS0tcGxhbiBkZWZhdWx0KG91dGVyLCBjcm9zcykKKwkJcGxhbihwIG91dGVyICgocGIgaW5u ZXIgcGIxKSBjcm9zcyAocGMgb3V0ZXIgcGMxKSkpCisJKSBqdDsKKworLS0gU2hvdWxkIHN1Y2Nl ZWQgKEpTT04gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gcm9vdCBhbmQgbmVzdGVkIHBhdGhzKQor U0VMRUNUICoKK0ZST00KKwlnZW5lcmF0ZV9zZXJpZXMoMSwgNCkgeCwKKwlnZW5lcmF0ZV9zZXJp ZXMoMSwgMykgeSwKKwlKU09OX1RBQkxFKGpzb25iCisJCSdbWzEsMiwzXSxbMiwzLDQsNV0sWzMs NCw1LDZdXScsCisJCSdzdHJpY3QgJFsqXSA/IChAWypdIDwgJHgpJworCQlQQVNTSU5HIHggQVMg eCwgeSBBUyB5CisJCUNPTFVNTlMgKAorCQkJeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQnLAor CQkJTkVTVEVEIFBBVEggJ3N0cmljdCAkWypdID8gKEAgPj0gJHkpJworCQkJQ09MVU1OUyAoCisJ CQkJeiBpbnQgUEFUSCAnJCcKKwkJCSkKKwkJKQorCSkganQ7CisKKy0tIFNob3VsZCBmYWlsIChK U09OIGFyZ3VtZW50cyBhcmUgbm90IHBhc3NlZCB0byBjb2x1bW4gcGF0aHMpCitTRUxFQ1QgKgor RlJPTSBKU09OX1RBQkxFKAorCWpzb25iICdbMSwyLDNdJywKKwknJFsqXSA/IChAIDwgJHgpJwor CQlQQVNTSU5HIDEwIEFTIHgKKwkJQ09MVU1OUyAoeSB0ZXh0IEZPUk1BVCBKU09OIFBBVEggJyQg PyAoQCA8ICR4KScpCisJKSBqdDsKKworLS0gU2hvdWxkIGZhaWwgKG5vdCBzdXBwb3J0ZWQpCitT RUxFQ1QgKiBGUk9NIEpTT05fVEFCTEUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8 ICdhJyBDT0xVTU5TIChmb28gaW50KSk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM1 NWM4MTQ0YTIuLjA1YmRmYjkyYmIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMzI2 LDYgKzEzMjYsNyBAQCBKc29uUGF0aE11dGFibGVDb250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQog SnNvblBhdGhQYXJzZVJlc3VsdAogSnNvblBhdGhQcmVkaWNhdGVDYWxsYmFjaworSnNvblBhdGhT cGVjCiBKc29uUGF0aFN0cmluZwogSnNvblBhdGhWYXJpYWJsZQogSnNvblBhdGhWYXJpYWJsZUV2 YWxDb250ZXh0CkBAIC0xMzM1LDYgKzEzMzYsMjAgQEAgSnNvblJldHVybmluZwogSnNvblNjYWxh ckV4cHIKIEpzb25TZW1BY3Rpb24KIEpzb25TZXJpYWxpemVFeHByCitKc29uVGFibGUKK0pzb25U YWJsZUNvbHVtbgorSnNvblRhYmxlQ29sdW1uVHlwZQorSnNvblRhYmxlQ29udGV4dAorSnNvblRh YmxlUGFyc2VDb250ZXh0CitKc29uVGFibGVKb2luU3RhdGUKK0pzb25UYWJsZVBsYW4KK0pzb25U YWJsZVBsYW5TcGVjCitKc29uVGFibGVQbGFuU3RhdGUKK0pzb25UYWJsZVBsYW5TdGF0ZVR5cGUK K0pzb25UYWJsZVBsYW5Kb2luVHlwZQorSnNvblRhYmxlUGxhblR5cGUKK0pzb25UYWJsZVNjYW5T dGF0ZQorSnNvblRhYmxlU2libGluZwogSnNvblRva2VuVHlwZQogSnNvblRyYW5zZm9ybVN0cmlu Z1ZhbHVlc0FjdGlvbgogSnNvblR5cGVDYXRlZ29yeQpAQCAtMjgwMyw2ICsyODE4LDcgQEAgVGFi bGVGdW5jCiBUYWJsZUZ1bmNSb3V0aW5lCiBUYWJsZUZ1bmNTY2FuCiBUYWJsZUZ1bmNTY2FuU3Rh dGUKK1RhYmxlRnVuY1R5cGUKIFRhYmxlSW5mbwogVGFibGVMaWtlQ2xhdXNlCiBUYWJsZVNhbXBs ZUNsYXVzZQotLSAKMi40My4wCgo= --0000000000000d18b50612d284ac Content-Type: application/octet-stream; name="v40-0001-Add-SQL-JSON-query-functions.patch" Content-Disposition: attachment; filename="v40-0001-Add-SQL-JSON-query-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltcquaog0 RnJvbSA3ZDlkY2QyMDE4YjEzM2ZkZmJjYmViNTQ2M2VhOTQxODIyODFkNzMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgNCBNYXIgMjAyNCAxODowNDo1MCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQw IDEvM10gQWRkIFNRTC9KU09OIHF1ZXJ5IGZ1bmN0aW9ucwpNSU1FLVZlcnNpb246IDEuMApDb250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogOGJpdAoKVGhpcyBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgU1FML0pTT04gZnVuY3Rp b25zIGZvciBxdWVyeWluZyBKU09OCmRhdGEgdXNpbmcganNvbnBhdGggZXhwcmVzc2lvbnM6CgpK U09OX0VYSVNUUygpCkpTT05fUVVFUlkoKQpKU09OX1ZBTFVFKCkKCkpTT05fRVhJU1RTKCkgdGVz dHMgaWYgdGhlIGpzb25wYXRoIGV4cHJlc3Npb24gYXBwbGllZCB0byBhIGpzb25iCnZhbHVlIHlp ZWxkcyBhbnkgdmFsdWVzLgoKSlNPTl9WQUxVRSgpIGFwcGxpZXMgYSBqc29ucGF0aCBleHByZXNz aW9uIHRvIGEganNvbmIgdmFsdWUgdG8gcmV0dXJuCmEgc2luZ2xlIHNjYWxhciB2YWx1ZSwgcHJv ZHVjaW5nIGFuIGVycm9yIGlmIGl0IG11bHRpcGxlIHZhbHVlcyBhcmUKbWF0Y2hlZC4KCkpTT05f UVVFUlkoKSBhcHBsaWVzIGEganNvbnBhdGggZXhwcmVzc2lvbiB0byBhIGpzb25iIHZhbHVlIHRv CnJldHVybiBhIGpzb24gb2JqZWN0IG9yIGFycmF5LiAgVGhlcmUgYXJlIHZhcmlvdXMgb3B0aW9u cyB0byBjb250cm9sCndoZXRoZXIgbXVsdGktdmFsdWUgcmVzdWx0IHVzZXMgYXJyYXkgd3JhcHBl cnMgYW5kIHdoZXRoZXIgdGhlCnNpbmdsZXRvbiBzY2FsYXIgc3RyaW5ncyBhcmUgcXVvdGVkIG9y IG5vdC4KCkJvdGggSlNPTl9WQUxVRSgpIGFuZCBKU09OX1FVRVJZKCkgZnVuY3Rpb25zIGhhdmUg b3B0aW9ucyBmb3IKaGFuZGxpbmcgRU1QVFkgYW5kIEVSUk9SIGNvbmRpdGlvbnMsIHdoaWNoIGNh biBiZSB1c2VkIHRvIHNwZWNpZnkKdGhlIGJlaGF2aW9yIHdoZW4gbm8gdmFsdWVzIGFyZSBtYXRj aGVkIGFuZCB3aGVuIGFuIGVycm9yIG9jY3VycwpkdXJpbmcgZXZhbHVhdGlvbiwgcmVzcGVjdGl2 ZWx5LgoKQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBvbmx5IG9wZXJhdGUgb24ganNvbmIgdmFsdWVz LiBUaGUgd29ya2Fyb3VuZApmb3Igbm93IGlzIHRvIGNhc3QgdGhlIGFyZ3VtZW50IHRvIGpzb25i LgoKQXV0aG9yOiBOaWtpdGEgR2x1a2hvdiA8bi5nbHVob3ZAcG9zdGdyZXNwcm8ucnU+CkF1dGhv cjogVGVvZG9yIFNpZ2FldiA8dGVvZG9yQHNpZ2Fldi5ydT4KQXV0aG9yOiBPbGVnIEJhcnR1bm92 IDxvYmFydHVub3ZAZ21haWwuY29tPgpBdXRob3I6IEFsZXhhbmRlciBLb3JvdGtvdiA8YWVrb3Jv dGtvdkBnbWFpbC5jb20+CkF1dGhvcjogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5u ZXQ+CkF1dGhvcjogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KQXV0aG9y OiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz4KQXV0aG9yOiBKaWFuIEhl IDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CgpSZXZpZXdlcnMgaGF2ZSBpbmNsdWRlZCAo aW4gbm8gcGFydGljdWxhciBvcmRlcikgQW5kcmVzIEZyZXVuZCwgQWxleGFuZGVyCktvcm90a292 LCBQYXZlbCBTdGVodWxlLCBBbmRyZXcgQWxzdXAsIEVyaWsgUmlqa2VycywgWmlob25nIFl1LApI aW1hbnNodSBVcGFkaHlheWEsIERhbmllbCBHdXN0YWZzc29uLCBKdXN0aW4gUHJ5emJ5LCDDgWx2 YXJvIEhlcnJlcmEsCkppYW4gSGUsIEFudG9uIEEuIE1lbG5pa292LCBOaWtpdGEgTWFsYWtob3Ys IFBldGVyIEVpc2VudHJhdXQKCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vY2QwYmI5 MzUtMDE1OC03OGE3LTA4YjUtOTA0ODg2ZGVhYzRiQHBvc3RncmVzcHJvLnJ1CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vMjAyMjA2MTYyMzMxMzAucnBhcml2YWZpcHQ2ZG9qM0BhbGFw My5hbmFyYXplbC5kZQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2FiZDliODNiLWFh NjYtZjIzMC0zZDZkLTczNDgxN2YwOTk1ZCU0MHBvc3RncmVzcWwub3JnCkRpc2N1c3Npb246IGh0 dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUhST3BmOWU2NDREOEJScVl2YUFQbWdCWlZ1cC14S01E UGstbmQ0RXBnekh3QG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0ErSGl3cUU0WFRkZmIxblc9T2pveV90UVNSaFl0LXFfa2I2aTVkNHhjS3lyTEMxTmJnQG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDIxOSArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCAg ICAgICAgICB8ICAgMTIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAg ICAgICAgICB8ICAzNDkgKysrKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJw LmMgICAgICAgICB8ICAzODMgKysrKy0KIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jICAgICAgICAgICB8ICAxNDQgKysKIHNyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlw ZXMuYyAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMgICAg ICAgICAgICAgICAgIHwgICAxOCArCiBzcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyAgICAg ICAgICAgICAgICAgfCAgMjQ4ICsrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVz ZXMuYyAgICAgICAgICB8ICAgMjAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDE4OCArKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMg ICAgICAgICAgICAgICB8ICA2NjkgKysrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dGFyZ2V0LmMgICAgICAgICAgICAgfCAgIDE1ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3Jt YXR0aW5nLmMgICAgICAgICAgICB8ICAgNDQgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25i LmMgICAgICAgICAgICAgICAgIHwgICAzMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1 bmNzLmMgICAgICAgICAgICAgfCAgIDYyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbnBh dGguYyAgICAgICAgICAgICAgfCAgMjgwICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMgICAgICAgICB8ICAzMjIgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyAgICAgICAgICAgICB8ICAxMzYgKysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmggICAgICAgICAgICAgICB8ICAgMjQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgODcgKysKIHNyYy9pbmNsdWRlL25vZGVzL21ha2Vm dW5jcy5oICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgICA0NyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9k ZXMuaCAgICAgICAgICAgICAgICAgfCAgMTgwICsrKwogc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiBzcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0 aW5nLmggICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgg ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNz LmggICAgICAgICAgICAgICAgIHwgICAgNyArCiBzcmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5o ICAgICAgICAgICAgICAgICAgfCAgIDI0ICsKIHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9l Y3BnLnRyYWlsZXIgICAgICB8ICAgMjggKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9x dWVyeWZ1bmNzLm91dCAgIHwgMTI2MSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbCAgIHwgIDQyNyArKysrKysKIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMTggKwogMzQgZmlsZXMgY2hh bmdlZCwgNTIyNyBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3NxbGpzb25fcXVlcnlmdW5jcy5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Mu c3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9m dW5jLnNnbWwKaW5kZXggZTVmYTgyYzE2MS4uMTQ0NzEzNTQxMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xNTQ1OCw2 ICsxNTQ1OCwxMSBAQCB0YWJsZTItbWFwcGluZwogICAgICAgdGhlIFNRTC9KU09OIHBhdGggbGFu Z3VhZ2UKICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbnMKKyAgICAgPC9wYXJh PgorICAgIDwvbGlzdGl0ZW0+CiAgICA8L2l0ZW1pemVkbGlzdD4KICAgPC9wYXJhPgogCkBAIC0x ODU4Niw2ICsxODU5MSwyMjAgQEAgJC4qID8gKEAgbGlrZV9yZWdleCAiXlxcZCskIikKICAgICA8 L3BhcmE+CiAgICA8L3NlY3QzPgogICA8L3NlY3QyPgorCisgICA8c2VjdDIgaWQ9InNxbGpzb24t cXVlcnktZnVuY3Rpb25zIj4KKyAgICA8dGl0bGU+U1FML0pTT04gUXVlcnkgRnVuY3Rpb25zPC90 aXRsZT4KKyAgPHBhcmE+CisgICBTUUwvSlNPTiBmdW5jdGlvbnMgPGxpdGVyYWw+SlNPTl9FWElT VFMoKTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5KU09OX1FVRVJZKCk8L2xpdGVyYWw+LCBhbmQg PGxpdGVyYWw+SlNPTl9WQUxVRSgpPC9saXRlcmFsPgorICAgZGVzY3JpYmVkIGluIDx4cmVmIGxp bmtlbmQ9ImZ1bmN0aW9ucy1zcWxqc29uLXF1ZXJ5aW5nIi8+IGNhbiBiZSB1c2VkCisgICB0byBx dWVyeSBKU09OIGRvY3VtZW50LiAgRWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgYXBwbHkgYQorICAg PHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICh0aGUgcXVlcnkpIHRv IGEKKyAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiAodGhlIGRvY3Vt ZW50KTsgc2VlbgorICAgPHhyZWYgbGlua2VuZD0iZnVuY3Rpb25zLXNxbGpzb24tcGF0aCIvPiBm b3IgbW9yZSBkZXRhaWxzIG9uIHdoYXQKKyAgIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiBjYW4gY29udGFpbi4KKyAgPC9wYXJhPgorCisgIDxub3RlPgorICAgPHBh cmE+CisgICAgU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zIGN1cnJlbnRseSBvbmx5IGFjY2VwdCB2 YWx1ZXMgb2YgdGhlCisgICAgPHR5cGU+anNvbmI8L3R5cGU+IHR5cGUsIGJlY2F1c2UgdGhlIFNR TC9KU09OIHBhdGggbGFuZ3VhZ2Ugb25seQorICAgIHN1cHBvcnRzIHRob3NlLCBzbyBpdCBtaWdo dCBiZSBuZWNlc3NhcnkgdG8gY2FzdCB0aGUKKyAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVt PC9yZXBsYWNlYWJsZT4gYXJndW1lbnQgb2YgdGhlc2UgZnVuY3Rpb25zIHRvCisgICAgPHR5cGU+ anNvbmI8L3R5cGU+LgorICAgPC9wYXJhPgorICA8L25vdGU+CisKKyAgPHRhYmxlIGlkPSJmdW5j dGlvbnMtc3FsanNvbi1xdWVyeWluZyI+CisgICA8dGl0bGU+U1FML0pTT04gUXVlcnkgRnVuY3Rp b25zPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNf c2lnbmF0dXJlIj4KKyAgICAgICAgRnVuY3Rpb24gc2lnbmF0dXJlCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBEZXNjcmlwdGlvbgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgRXhhbXBsZShzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4K KyAgICAgICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uX2V4aXN0czwvcHJpbWFyeT48L2luZGV4 dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fZXhpc3RzPC9mdW5jdGlvbj4gKAorICAgICAg ICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5w YXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8 L2xpdGVyYWw+IHsgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8 L2xpdGVyYWw+IDxyZXBsYWNlYWJsZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+ LCAuLi48L29wdGlvbmFsPjwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0ZXJh bD5UUlVFPC9saXRlcmFsPiB8IDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiB8PGxpdGVyYWw+IFVO S05PV048L2xpdGVyYWw+IHwgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IH0gPGxpdGVyYWw+T04g RVJST1I8L2xpdGVyYWw+IDwvb3B0aW9uYWw+KQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFy YT4KKyAgICAgICAgUmV0dXJucyB0cnVlIGlmIHRoZSBTUUwvSlNPTiA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgYXBwbGllZCB0byB0aGUgPHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+IHVzaW5nIHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+dmFsdWU8L3JlcGxhY2VhYmxlPnMgeWllbGRzIGFueSBpdGVtcy4KKyAgICAgICAg VGhlIDxsaXRlcmFsPk9OIEVSUk9SPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVzIHRoZSBiZWhh dmlvciBpZgorICAgICAgICBhbiBlcnJvciBvY2N1cnM7IHRoZSBkZWZhdWx0IGlzIHRvIHJldHVy biB0aGUgPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgICAgPGxpdGVyYWw+RkFMU0U8L2xpdGVy YWw+IHZhbHVlLgorICAgICAgICBOb3RlIHRoYXQgaWYgdGhlIDxyZXBsYWNlYWJsZT5wYXRoX2V4 cHJlc3Npb248L3JlcGxhY2VhYmxlPgorICAgICAgICBpcyA8bGl0ZXJhbD5zdHJpY3Q8L2xpdGVy YWw+IGFuZCA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gYmVoYXZpb3IKKyAgICAgICAgaXMg PGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+LCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgaXQg eWllbGRzIG5vCisgICAgICAgIGl0ZW1zLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICA8bGl0ZXJhbD5zZWxlY3QganNvbl9leGlzdHMoanNvbmIgJ3sia2V5MSI6IFsxLDIsM119Jywg J3N0cmljdCAkLmtleTFbKl0gPyAoQCA+IDIpJyk8L2xpdGVyYWw+CisgICAgICAgIDxyZXR1cm52 YWx1ZT50PC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAg ICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX2V4aXN0cyhqc29uYiAneyJhIjogWzEsMiwzXX0nLCAn bGF4ICQuYVs1XScgRVJST1IgT04gRVJST1IpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFs dWU+ZjwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICA8bGl0ZXJhbD5zZWxlY3QganNvbl9leGlzdHMoanNvbmIgJ3siYSI6IFsxLDIsM119JywgJ3N0 cmljdCAkLmFbNV0nIEVSUk9SIE9OIEVSUk9SKTwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZh bHVlPjwvcmV0dXJudmFsdWU+Cis8cHJvZ3JhbWxpc3Rpbmc+CitFUlJPUjogIGpzb25wYXRoIGFy cmF5IHN1YnNjcmlwdCBpcyBvdXQgb2YgYm91bmRzCis8L3Byb2dyYW1saXN0aW5nPgorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAg ICAgPGluZGV4dGVybT48cHJpbWFyeT5qc29uX3F1ZXJ5PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPgor ICAgICAgICA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVuY3Rpb24+ICgKKyAgICAgICAgPHJlcGxh Y2VhYmxlPmNvbnRleHRfaXRlbTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGU+cGF0aF9leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gPG9wdGlvbmFsPiA8bGl0ZXJhbD5QQVNTSU5HPC9saXRlcmFs PiB7IDxyZXBsYWNlYWJsZT52YWx1ZTwvcmVwbGFjZWFibGU+IDxsaXRlcmFsPkFTPC9saXRlcmFs PiA8cmVwbGFjZWFibGU+dmFybmFtZTwvcmVwbGFjZWFibGU+IH0gPG9wdGlvbmFsPiwgLi4uPC9v cHRpb25hbD48L29wdGlvbmFsPgorICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlJFVFVSTklO RzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IDxvcHRpb25h bD4gPGxpdGVyYWw+Rk9STUFUIEpTT048L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+RU5D T0RJTkcgVVRGODwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4K KyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFsPldJVEhPVVQ8L2xpdGVyYWw+IHwgPGxpdGVy YWw+V0lUSDwvbGl0ZXJhbD4geyA8bGl0ZXJhbD5DT05ESVRJT05BTDwvbGl0ZXJhbD4gfCA8b3B0 aW9uYWw+PGxpdGVyYWw+VU5DT05ESVRJT05BTDwvbGl0ZXJhbD48L29wdGlvbmFsPiB9IH0gPG9w dGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gPGxpdGVyYWw+V1JB UFBFUjwvbGl0ZXJhbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PktFRVA8L2xpdGVyYWw+IHwgPGxpdGVyYWw+T01JVDwvbGl0ZXJhbD4gfSA8bGl0ZXJhbD5RVU9U RVM8L2xpdGVyYWw+IDxvcHRpb25hbD4gPGxpdGVyYWw+T04gU0NBTEFSIFNUUklORzwvbGl0ZXJh bD4gPC9vcHRpb25hbD4gPC9vcHRpb25hbD4KKyAgICAgICAgPG9wdGlvbmFsPiB7IDxsaXRlcmFs PkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHwgPGxpdGVyYWw+RU1Q VFk8L2xpdGVyYWw+IHsgPG9wdGlvbmFsPiA8bGl0ZXJhbD5BUlJBWTwvbGl0ZXJhbD4gPC9vcHRp b25hbD4gfCA8bGl0ZXJhbD5PQkpFQ1Q8L2xpdGVyYWw+IH0gfCA8bGl0ZXJhbD5ERUZBVUxUPC9s aXRlcmFsPiA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+ T04gRU1QVFk8L2xpdGVyYWw+IDwvb3B0aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4geyA8bGl0 ZXJhbD5FUlJPUjwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB8IDxsaXRlcmFs PkVNUFRZPC9saXRlcmFsPiB7IDxvcHRpb25hbD4gPGxpdGVyYWw+QVJSQVk8L2xpdGVyYWw+IDwv b3B0aW9uYWw+IHwgPGxpdGVyYWw+T0JKRUNUPC9saXRlcmFsPiB9IHwgPGxpdGVyYWw+REVGQVVM VDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB9IDxsaXRl cmFsPk9OIEVSUk9SPC9saXRlcmFsPiA8L29wdGlvbmFsPikKKyAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZQorICAg ICAgICA8cmVwbGFjZWFibGU+cGF0aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gdG8gdGhlCisg ICAgICAgIDxyZXBsYWNlYWJsZT5jb250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUK KyAgICAgICAgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLgorICAgICAgIDwvcGFy YT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IHJldHVybiBhIEpT T04gc3RyaW5nLCBzbyBpZiB0aGUgcGF0aCBleHByZXNzaW9uCisgICAgICAgIHJldHVybnMgbXVs dGlwbGUgU1FML0pTT04gaXRlbXMsIHlvdSBtdXN0IHdyYXAgdGhlIHJlc3VsdCB1c2luZyB0aGUK KyAgICAgICAgPGxpdGVyYWw+V0lUSCBXUkFQUEVSPC9saXRlcmFsPiBjbGF1c2UuICBJZiB0aGUg d3JhcHBlciBpcworICAgICAgICA8bGl0ZXJhbD5VTkNPTkRJVElPTkFMPC9saXRlcmFsPiwgYW4g YXJyYXkgd3JhcHBlciB3aWxsIGFsd2F5cyBiZQorICAgICAgICBhcHBsaWVkLCBldmVuIGlmIHRo ZSByZXR1cm5lZCB2YWx1ZSBpcyBhbHJlYWR5IGEgc2luZ2xlIEpTT04gb2JqZWN0CisgICAgICAg IG9yIGFuIGFycmF5LiAgSWYgdGhlIHdyYXBwZXIgaXMgPGxpdGVyYWw+VU5DT05ESVRJT05BTDwv bGl0ZXJhbD4sIGFuCisgICAgICAgIGFycmF5IHdyYXBwZXIgd2lsbCBhbHdheXMgYmUgYXBwbGll ZCwgZXZlbiBpZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMKKyAgICAgICAgYWxyZWFkeSBhIHNpbmds ZSBKU09OIG9iamVjdCBvciBhbiBhcnJheS4gIElmIGl0IGlzCisgICAgICAgIDxsaXRlcmFsPkNP TkRJVElPTkFMPC9saXRlcmFsPiwgaXQgd2lsbCBub3QgYmUgYXBwbGllZCB0byBhIHNpbmdsZQor ICAgICAgICBhcnJheSBvciBvYmplY3QuIDxsaXRlcmFsPlVOQ09ORElUSU9OQUw8L2xpdGVyYWw+ IGlzIHRoZSBkZWZhdWx0LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg SWYgdGhlIHJlc3VsdCBpcyBhIHNjYWxhciBzdHJpbmcsIGJ5IGRlZmF1bHQgdGhlIHZhbHVlIHJl dHVybmVkIHdpbGwKKyAgICAgICAgaGF2ZSBzdXJyb3VuZGluZyBxdW90ZXMgbWFraW5nIGl0IGEg dmFsaWQgSlNPTiB2YWx1ZSwKKyAgICAgICAgd2hpY2ggY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkg c3BlY2lmeWluZyA8bGl0ZXJhbD5LRUVQIFFVT1RFUzwvbGl0ZXJhbD4uCisgICAgICAgIENvbnZl cnNlbHksIHF1b3RlcyBjYW4gYmUgb21pdHRlZCBieSBzcGVjaWZ5aW5nIDxsaXRlcmFsPk9NSVQg UVVPVEVTPC9saXRlcmFsPi4KKyAgICAgICAgTm90ZSB0aGF0IDxsaXRlcmFsPk9NSVQgUVVPVEVT PC9saXRlcmFsPiBjYW5ub3QgYmUgc3BlY2lmaWVkIHdoZW4KKyAgICAgICAgPGxpdGVyYWw+V0lU SCBXUkFQUEVSPC9saXRlcmFsPiBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+IGNs YXVzZSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+ZGF0 YV90eXBlPC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0IG11c3QKKyAgICAg ICAgYmUgYSB0eXBlIGZvciB3aGljaCB0aGVyZSBpcyBhIGNhc3QgZnJvbSA8dHlwZT50ZXh0PC90 eXBlPiB0byB0aGF0IHR5cGUuCisgICAgICAgIElmIG5vIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0 ZXJhbD4gaXMgc3BjaWZpZWQsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsCisgICAgICAgIGJlIG9m IHR5cGUgPHR5cGU+anNvbmI8L3R5cGU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiBjbGF1c2Ugc3BlY2lmaWVz IHRoZSBiZWhhdmlvciBpZiB0aGUKKyAgICAgICAgPHJlcGxhY2VhYmxlPnBhdGhfZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IHlpZWxkcyBubyB2YWx1ZSBhdCBhbGw7IHRoZQorICAgICAgICBkZWZh dWx0IHdoZW4gPGxpdGVyYWw+T04gRU1QVFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQgaXMg dG8gcmV0dXJuCisgICAgICAgIGEgbnVsbCB2YWx1ZS4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIFRoZSA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gY2xhdXNlIHNw ZWNpZmllcyB0aGUKKyAgICAgICAgYmVoYXZpb3IgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gZXZh bHVhdGluZworICAgICAgICA8dHlwZT5wYXRoX2V4cHJlc3Npb248L3R5cGU+LCBpbmNsdWRpbmcg dGhlIG9wZXJhdGlvbiB0byBjYXN0IHRoZQorICAgICAgICByZXN1bHQgdGhlIG91dHB1dCB0eXBl LCBvciBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZgorICAgICAgICA8bGl0ZXJhbD5PTiBFTVBUWTwv bGl0ZXJhbD4gYmVoYXZpb3IgKHRoYXQgd2FzIGNhdXNlZCBieSBlbXB0eSByZXN1bHQgb2YKKyAg ICAgICAgPHR5cGU+cGF0aF9leHByZXNzaW9uPC90eXBlPiBldmFsdWF0aW9uKTsgdGhlIGRlZmF1 bHQgd2hlbgorICAgICAgICA8bGl0ZXJhbD5PTiBFUlJPUjwvbGl0ZXJhbD4gaXMgbm90IHNwZWNp ZmllZCBpcyB0byByZXR1cm4gYSBudWxsIHZhbHVlLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgRXhhbXBsZXM6CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgor ICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl9xdWVyeShqc29uYiAnWzEsWzIsM10sbnVsbF0n LCAnbGF4ICRbKl1bMV0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUik8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT5bM108L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+c2VsZWN0IGpzb25fcXVlcnkoanNvbmIgJ3siYSI6 ICJbMSwgMl0ifScsICdsYXggJC5hJyBPTUlUIFFVT1RFUyk7PC9saXRlcmFsPgorICAgICAgICA8 cmV0dXJudmFsdWU+WzEsIDJdPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAg PHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnNlbGVjdCBqc29uX3F1ZXJ5KGpzb25iICd7ImEiOiAi WzEsIDJdIn0nLCAnbGF4ICQuYScgUkVUVVJOSU5HIGludFtdIE9NSVQgUVVPVEVTKTs8L2xpdGVy YWw+CisgICAgICAgIDxyZXR1cm52YWx1ZT48L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4K KyAgICAgICA8cGFyYT4KKyAgICAgICAgPGxpdGVyYWw+c2VsZWN0IGpzb25fcXVlcnkoanNvbmIg J3siYSI6ICJbMSwgMl0ifScsICdsYXggJC5hJyBSRVRVUk5JTkcgaW50W10gT01JVCBRVU9URVMg RVJST1IgT04gRVJST1IpOzwvbGl0ZXJhbD4KKyAgICAgICAgPHJldHVybnZhbHVlPjwvcmV0dXJu dmFsdWU+Cis8cHJvZ3JhbWxpc3Rpbmc+CitFUlJPUjogIG1hbGZvcm1lZCBhcnJheSBsaXRlcmFs OiAiWzEsIDJdIgorREVUQUlMOiAgTWlzc2luZyAiXSIgYWZ0ZXIgYXJyYXkgZGltZW5zaW9ucy4K KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgPC9wYXJhPgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iZnVuY190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPjxwcmltYXJ5 Pmpzb25fdmFsdWU8L3ByaW1hcnk+PC9pbmRleHRlcm0+CisgICAgICAgIDxmdW5jdGlvbj5qc29u X3ZhbHVlPC9mdW5jdGlvbj4gKAorICAgICAgICA8cmVwbGFjZWFibGU+Y29udGV4dF9pdGVtPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZT5wYXRoX2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPgor ICAgICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPlBBU1NJTkc8L2xpdGVyYWw+IHsgPHJlcGxhY2Vh YmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+QVM8L2xpdGVyYWw+IDxyZXBsYWNlYWJs ZT52YXJuYW1lPC9yZXBsYWNlYWJsZT4gfSA8b3B0aW9uYWw+LCAuLi48L29wdGlvbmFsPjwvb3B0 aW9uYWw+CisgICAgICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiA8 cmVwbGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gPC9vcHRpb25hbD4KKyAgICAgICAg PG9wdGlvbmFsPiB7IDxsaXRlcmFsPkVSUk9SPC9saXRlcmFsPiB8IDxsaXRlcmFsPk5VTEw8L2xp dGVyYWw+IHwgPGxpdGVyYWw+REVGQVVMVDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPmV4cHJlc3Np b248L3JlcGxhY2VhYmxlPiB9IDxsaXRlcmFsPk9OIEVNUFRZPC9saXRlcmFsPiA8L29wdGlvbmFs PgorICAgICAgICA8b3B0aW9uYWw+IHsgPGxpdGVyYWw+RVJST1I8L2xpdGVyYWw+IHwgPGxpdGVy YWw+TlVMTDwvbGl0ZXJhbD4gfCA8bGl0ZXJhbD5ERUZBVUxUPC9saXRlcmFsPiA8cmVwbGFjZWFi bGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IH0gPGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+ IDwvb3B0aW9uYWw+KQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgUmV0 dXJucyB0aGUgcmVzdWx0IG9mIGFwcGx5aW5nIHRoZQorICAgICAgICA8cmVwbGFjZWFibGU+cGF0 aF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gdG8gdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5j b250ZXh0X2l0ZW08L3JlcGxhY2VhYmxlPiB1c2luZyB0aGUKKyAgICAgICAgPGxpdGVyYWw+UEFT U0lORzwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT5zLiBUaGUKKyAg ICAgICAgZXh0cmFjdGVkIHZhbHVlIG11c3QgYmUgYSBzaW5nbGUgPGFjcm9ueW0+U1FML0pTT048 L2Fjcm9ueW0+IHNjYWxhcgorICAgICAgICBpdGVtLiBGb3IgcmVzdWx0cyB0aGF0IGFyZSBvYmpl Y3RzIG9yIGFycmF5cywgdXNlIHRoZQorICAgICAgICA8ZnVuY3Rpb24+anNvbl9xdWVyeTwvZnVu Y3Rpb24+IGZ1bmN0aW9uIGluc3RlYWQuCisgICAgICAgIFRoZSA8bGl0ZXJhbD5SRVRVUk5JTkc8 L2xpdGVyYWw+IGNsYXVzZSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZQorICAgICAgICA8cmVw bGFjZWFibGU+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4gb2YgdGhlIHJlc3VsdCB2YWx1ZS4gIEl0 IG11c3QKKyAgICAgICAgYmUgYSB0eXBlIGZvciB3aGljaCB0aGVyZSBhcmUgY2FzdHMgZnJvbSBh bGwgcG9zc2libGUgSlNPTiBzY2FsYXIKKyAgICAgICAgdmFsdWUgdHlwZXMgKDx0eXBlPnRleHQ8 L3R5cGU+LCA8dHlwZT5ib29sZWFuPC90eXBlPiwgPHR5cGU+bnVtZXJpYzwvdHlwZT4sCisgICAg ICAgIGFuZCB2YXJpb3VzIGRhdGV0aW1lIHR5cGVzKSB0byB0aGF0IHR5cGUuICBJZiBubyA8bGl0 ZXJhbD5SRVRVUk5JTkc8L2xpdGVyYWw+CisgICAgICAgIGlzIHNwY2lmaWVkLCB0aGUgcmV0dXJu ZWQgdmFsdWUgd2lsbCBiZSBvZiB0eXBlIDx0eXBlPnRleHQ8L3R5cGU+LgorICAgICAgICBUaGUg PGxpdGVyYWw+T04gRVJST1I8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PTiBFTVBUWTwvbGl0ZXJh bD4KKyAgICAgICAgY2xhdXNlcyBoYXZlIHNpbWlsYXIgc2VtYW50aWNzIGFzIG1lbnRpb25lZCBp biB0aGUgZGVzY3JpcHRpb24gb2YKKyAgICAgICAgPGZ1bmN0aW9uPmpzb25fcXVlcnk8L2Z1bmN0 aW9uPi4gIE5vdGUgdGhhdCBzY2FsYXIgc3RyaW5ncyByZXR1cm5lZAorICAgICAgICBieSA8ZnVu Y3Rpb24+anNvbl92YWx1ZTwvZnVuY3Rpb24+IGFsd2F5cyBoYXZlIHRoZWlyIHF1b3RlcyByZW1v dmVkLAorICAgICAgICBlcXVpdmFsZW50IHRvIHdoYXQgb25lIHdvdWxkIGdldCB3aXRoIDxsaXRl cmFsPk9NSVQgUVVPVEVTPC9saXRlcmFsPgorICAgICAgICB3aGVuIHVzaW5nIDxmdW5jdGlvbj5q c29uX3F1ZXJ5PC9mdW5jdGlvbj4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAg ICAgICBFeGFtcGxlczoKKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxs aXRlcmFsPnNlbGVjdCBqc29uX3ZhbHVlKGpzb25iICciMTIzLjQ1IicsICckJyBSRVRVUk5JTkcg ZmxvYXQpPC9saXRlcmFsPgorICAgICAgICA8cmV0dXJudmFsdWU+MTIzLjQ1PC9yZXR1cm52YWx1 ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIDxsaXRlcmFsPnNlbGVj dCBqc29uX3ZhbHVlKGpzb25iICciMDM6MDQgMjAxNS0wMi0wMSInLCAnJC5kYXRldGltZSgiSEgy NDpNSSZuYnNwO1lZWVktTU0tREQiKScgUkVUVVJOSU5HIGRhdGUpPC9saXRlcmFsPgorICAgICAg ICA8cmV0dXJudmFsdWU+MjAxNS0wMi0wMTwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICA8bGl0ZXJhbD5zZWxlY3QganNvbl92YWx1ZShqc29uYiAn WzEsMl0nLCAnc3RyaWN0ICRbKl0nIERFRkFVTFQgOSBPTiBFUlJPUik8L2xpdGVyYWw+CisgICAg ICAgIDxyZXR1cm52YWx1ZT45PC9yZXR1cm52YWx1ZT4KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgIDwv c2VjdDI+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZnVuY3Rpb25zLXNlcXVlbmNlIj4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dCBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCA5MjVkMTVhMmMzLi44MGFjNTlmYmE0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CkBAIC01NDcsMTUgKzU0NywxNSBA QCBUODExCUJhc2ljIFNRTC9KU09OIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwkJCVlFUwogVDgxMglT UUwvSlNPTjogSlNPTl9PQkpFQ1RBR0cJCQlZRVMJCiBUODEzCVNRTC9KU09OOiBKU09OX0FSUkFZ QUdHIHdpdGggT1JERVIgQlkJCQlZRVMJCiBUODE0CUNvbG9uIGluIEpTT05fT0JKRUNUIG9yIEpT T05fT0JKRUNUQUdHCQkJWUVTCQotVDgyMQlCYXNpYyBTUUwvSlNPTiBxdWVyeSBvcGVyYXRvcnMJ CQlOTwkKK1Q4MjEJQmFzaWMgU1FML0pTT04gcXVlcnkgb3BlcmF0b3JzCQkJWUVTCQogVDgyMglT UUwvSlNPTjogSVMgSlNPTiBXSVRIIFVOSVFVRSBLRVlTIHByZWRpY2F0ZQkJCVlFUwkKLVQ4MjMJ U1FML0pTT046IFBBU1NJTkcgY2xhdXNlCQkJTk8JCitUODIzCVNRTC9KU09OOiBQQVNTSU5HIGNs YXVzZQkJCVlFUwkKIFQ4MjQJSlNPTl9UQUJMRTogc3BlY2lmaWMgUExBTiBjbGF1c2UJCQlOTwkK LVQ4MjUJU1FML0pTT046IE9OIEVNUFRZIGFuZCBPTiBFUlJPUiBjbGF1c2VzCQkJTk8JCi1UODI2 CUdlbmVyYWwgdmFsdWUgZXhwcmVzc2lvbiBpbiBPTiBFUlJPUiBvciBPTiBFTVBUWSBjbGF1c2Vz CQkJTk8JCitUODI1CVNRTC9KU09OOiBPTiBFTVBUWSBhbmQgT04gRVJST1IgY2xhdXNlcwkJCVlF UwkKK1Q4MjYJR2VuZXJhbCB2YWx1ZSBleHByZXNzaW9uIGluIE9OIEVSUk9SIG9yIE9OIEVNUFRZ IGNsYXVzZXMJCQlZRVMJCiBUODI3CUpTT05fVEFCTEU6IHNpYmxpbmcgTkVTVEVEIENPTFVNTlMg Y2xhdXNlcwkJCU5PCQotVDgyOAlKU09OX1FVRVJZCQkJTk8JCi1UODI5CUpTT05fUVVFUlk6IGFy cmF5IHdyYXBwZXIgb3B0aW9ucwkJCU5PCQorVDgyOAlKU09OX1FVRVJZCQkJWUVTCQorVDgyOQlK U09OX1FVRVJZOiBhcnJheSB3cmFwcGVyIG9wdGlvbnMJCQlZRVMJCiBUODMwCUVuZm9yY2luZyB1 bmlxdWUga2V5cyBpbiBTUUwvSlNPTiBjb25zdHJ1Y3RvciBmdW5jdGlvbnMJCQlZRVMJCiBUODMx CVNRTC9KU09OIHBhdGggbGFuZ3VhZ2U6IHN0cmljdCBtb2RlCQkJWUVTCQogVDgzMglTUUwvSlNP TiBwYXRoIGxhbmd1YWdlOiBpdGVtIG1ldGhvZAkJCVlFUwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j CmluZGV4IDMxODFiMTEzNmEuLmVhNjc2NDQ1NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi dXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9qc29uZnVuY3MuaCIKKyNpbmNsdWRlICJ1 dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3R5cGNhY2hlLmgiCiAKQEAgLTg4LDYgKzg5LDEyIEBAIHN0YXRpYyB2b2lkIEV4ZWNC dWlsZEFnZ1RyYW5zQ2FsbChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiAJ CQkJCQkJCSAgRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJh bnMsCiAJCQkJCQkJCSAgaW50IHRyYW5zbm8sIGludCBzZXRubywgaW50IHNldG9mZiwgYm9vbCBp c2hhc2gsCiAJCQkJCQkJCSAgYm9vbCBudWxsY2hlY2spOworc3RhdGljIHZvaWQgRXhlY0luaXRK c29uRXhwcihKc29uRXhwciAqamV4cHIsIEV4cHJTdGF0ZSAqc3RhdGUsCisJCQkJCQkJIERhdHVt ICpyZXN2LCBib29sICpyZXNudWxsLAorCQkJCQkJCSBFeHByRXZhbFN0ZXAgKnNjcmF0Y2gpOwor c3RhdGljIGludAlFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oRXhwclN0YXRlICpzdGF0ZSwgTm9k ZSAqY29lcmNpb24sCisJCQkJCQkJCQkgRXJyb3JTYXZlQ29udGV4dCAqZXNjb250ZXh0LAorCQkJ CQkJCQkJIERhdHVtICpyZXN2LCBib29sICpyZXNudWxsKTsKIAogCiAvKgpAQCAtMjQxMyw2ICsy NDIwLDE0IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3RhdGUgKnN0YXRlLAog CQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhw ciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKworCQkJCUV4ZWNJbml0SnNv bkV4cHIoamV4cHIsIHN0YXRlLCByZXN2LCByZXNudWxsLCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7 CisJCQl9CisKIAkJY2FzZSBUX051bGxUZXN0OgogCQkJewogCQkJCU51bGxUZXN0ICAgKm50ZXN0 ID0gKE51bGxUZXN0ICopIG5vZGU7CkBAIC00MTgxLDMgKzQxOTYsMzM3IEBAIEV4ZWNCdWlsZFBh cmFtU2V0RXF1YWwoVHVwbGVEZXNjIGRlc2MsCiAKIAlyZXR1cm4gc3RhdGU7CiB9CisKKy8qCisg KiBQdXNoIHN0ZXBzIHRvIGV2YWx1YXRlIGEgSnNvbkV4cHIgYW5kIGl0cyB2YXJpb3VzIHN1YnNp ZGlhcnkgZXhwcmVzc2lvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjSW5pdEpzb25FeHByKEpz b25FeHByICpqZXhwciwgRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkgRGF0dW0gKnJlc3YsIGJvb2wg KnJlc251bGwsCisJCQkJIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCkKK3sKKwlKc29uRXhwclN0YXRl ICpqc2VzdGF0ZSA9IHBhbGxvYzAoc2l6ZW9mKEpzb25FeHByU3RhdGUpKTsKKwlKc29uRXhwclBv c3RFdmFsU3RhdGUgKnBvc3RfZXZhbCA9ICZqc2VzdGF0ZS0+cG9zdF9ldmFsOworCUxpc3RDZWxs ICAgKmFyZ2V4cHJsYzsKKwlMaXN0Q2VsbCAgICphcmduYW1lbGM7CisJTGlzdAkgICAqanVtcHNf aWZfc2tpcCA9IE5JTDsKKwlMaXN0CSAgICpqdW1wc190b19jb2VyY2VfZmluaXNoID0gTklMOwor CUxpc3QJICAgKmp1bXBzX3RvX2VuZCA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlFeHByRXZh bFN0ZXAgKmFzOworCisJanNlc3RhdGUtPmpzZXhwciA9IGpleHByOworCisJLyoKKwkgKiBFdmFs dWF0ZSBmb3JtYXR0ZWRfZXhwciBzdG9yaW5nIHRoZSByZXN1bHQgaW50bworCSAqIGpzZXN0YXRl LT5mb3JtYXR0ZWRfZXhwci4KKwkgKi8KKwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHIt PmZvcm1hdHRlZF9leHByLCBzdGF0ZSwKKwkJCQkJJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52 YWx1ZSwKKwkJCQkJJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci5pc251bGwpOworCisJLyogU3Rl cHMgdG8ganVtcCB0byBlbmQgaWYgZm9ybWF0dGVkX2V4cHIgZXZhbHVhdGVzIHRvIE5VTEwgKi8K KwlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZfTlVMTDsKKwlzY3JhdGNoLT5yZXNudWxs ID0gJmpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci5pc251bGw7CisJc2NyYXRjaC0+ZC5qdW1wLmp1 bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCWp1bXBzX2lmX3NraXAgPSBsYXBwZW5kX2lu dChqdW1wc19pZl9za2lwLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwlFeHByRXZhbFB1c2hTdGVwKHN0 YXRlLCBzY3JhdGNoKTsKKworCS8qCisJICogRXZhbHVhdGUgcGF0aHNwZWMgZXhwcmVzc2lvbiBz dG9yaW5nIHRoZSByZXN1bHQgaW50bworCSAqIGpzZXN0YXRlLT5wYXRoc3BlYy4KKwkgKi8KKwlF eGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgamV4cHItPnBhdGhfc3BlYywgc3RhdGUsCisJCQkJCSZq c2VzdGF0ZS0+cGF0aHNwZWMudmFsdWUsCisJCQkJCSZqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxs KTsKKworCS8qIFN0ZXBzIHRvIEpVTVAgdG8gZW5kIGlmIHBhdGhzcGVjIGV2YWx1YXRlcyB0byBO VUxMICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05VTEw7CisJc2NyYXRjaC0+ cmVzbnVsbCA9ICZqc2VzdGF0ZS0+cGF0aHNwZWMuaXNudWxsOworCXNjcmF0Y2gtPmQuanVtcC5q dW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwlqdW1wc19pZl9za2lwID0gbGFwcGVuZF9p bnQoanVtcHNfaWZfc2tpcCwgc3RhdGUtPnN0ZXBzX2xlbik7CisJRXhwckV2YWxQdXNoU3RlcChz dGF0ZSwgc2NyYXRjaCk7CisKKwkvKiBTdGVwcyB0byBjb21wdXRlIFBBU1NJTkcgYXJncy4gKi8K Kwlqc2VzdGF0ZS0+YXJncyA9IE5JTDsKKwlmb3Jib3RoKGFyZ2V4cHJsYywgamV4cHItPnBhc3Np bmdfdmFsdWVzLAorCQkJYXJnbmFtZWxjLCBqZXhwci0+cGFzc2luZ19uYW1lcykKKwl7CisJCUV4 cHIJICAgKmFyZ2V4cHIgPSAoRXhwciAqKSBsZmlyc3QoYXJnZXhwcmxjKTsKKwkJU3RyaW5nCSAg ICphcmduYW1lID0gbGZpcnN0X25vZGUoU3RyaW5nLCBhcmduYW1lbGMpOworCQlKc29uUGF0aFZh cmlhYmxlICp2YXIgPSBwYWxsb2Moc2l6ZW9mKCp2YXIpKTsKKworCQl2YXItPm5hbWUgPSBhcmdu YW1lLT5zdmFsOworCQl2YXItPnR5cGlkID0gZXhwclR5cGUoKE5vZGUgKikgYXJnZXhwcik7CisJ CXZhci0+dHlwbW9kID0gZXhwclR5cG1vZCgoTm9kZSAqKSBhcmdleHByKTsKKworCQlFeGVjSW5p dEV4cHJSZWMoKEV4cHIgKikgYXJnZXhwciwgc3RhdGUsICZ2YXItPnZhbHVlLCAmdmFyLT5pc251 bGwpOworCisJCWpzZXN0YXRlLT5hcmdzID0gbGFwcGVuZChqc2VzdGF0ZS0+YXJncywgdmFyKTsK Kwl9CisKKwkvKiBTdGVwIGZvciBKc29uUGF0aCogZXZhbHVhdGlvbjsgc2VlIEV4ZWNFdmFsSnNv bkV4cHJQYXRoKCkuICovCisJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KU09ORVhQUl9QQVRIOwor CXNjcmF0Y2gtPnJlc3ZhbHVlID0gcmVzdjsKKwlzY3JhdGNoLT5yZXNudWxsID0gcmVzbnVsbDsK KwlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0YXRlID0ganNlc3RhdGU7CisJRXhwckV2YWxQdXNo U3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIFN0ZXAgdG8ganVtcCB0byBlbmQgd2hl biB0aGVyZSdzIG5laXRoZXIgYW4gZXJyb3Igd2hlbiBldmFsdWF0aW5nCisJICogSnNvblBhdGgq IG5vciBhbnkgbmVlZCB0byBjb2VyY2UgdGhlIHJlc3VsdCBiZWNhdXNlIGl0J3MgYWxyZWFkeSBv ZiB0aGUKKwkgKiBzcGVjaWZpZWQgdHlwZS4KKwkgKi8KKwlzY3JhdGNoLT5vcGNvZGUgPSBFRU9Q X0pVTVA7CisJc2NyYXRjaC0+ZC5qdW1wLmp1bXBkb25lID0gLTE7CS8qIHNldCBiZWxvdyAqLwor CWp1bXBzX3RvX2VuZCA9IGxhcHBlbmRfaW50KGp1bXBzX3RvX2VuZCwgc3RhdGUtPnN0ZXBzX2xl bik7CisJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkvKgorCSAqIFN0ZXBz IHRvIGNvZXJjZSB0aGUgcmVzdWx0IHZhbHVlIGNvbXB1dGVkIGJ5IEVFT1BfSlNPTkVYUFJfUEFU SC4gVG8KKwkgKiBoYW5kbGUgY29lcmNpb24gZXJyb3JzIHNvZnRseSwgdXNlIHRoZSBmb2xsb3dp bmcgRXJyb3JTYXZlQ29udGV4dCB3aGVuCisJICogaW5pdGlhbGl6aW5nIHRoZSBjb2VyY2lvbiBl eHByZXNzaW9ucywgaW5jbHVkaW5nIGFueSBKc29uQ29lcmNpb24KKwkgKiBub2Rlcy4KKwkgKi8K Kwlqc2VzdGF0ZS0+ZXNjb250ZXh0LnR5cGUgPSBUX0Vycm9yU2F2ZUNvbnRleHQ7CisJaWYgKGpl eHByLT5yZXN1bHRfY29lcmNpb24pCisJeworCQlqc2VzdGF0ZS0+anVtcF9ldmFsX3Jlc3VsdF9j b2VyY2lvbiA9CisJCQlFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oc3RhdGUsIGpleHByLT5yZXN1 bHRfY29lcmNpb24sCisJCQkJCQkJCQkgamV4cHItPm9uX2Vycm9yLT5idHlwZSAhPSBKU09OX0JF SEFWSU9SX0VSUk9SID8KKwkJCQkJCQkJCSAmanNlc3RhdGUtPmVzY29udGV4dCA6IE5VTEwsCisJ CQkJCQkJCQkgcmVzdiwgcmVzbnVsbCk7CisJCS8qIEp1bXAgdG8gQ09FUkNJT05fRklOSVNILiAq LworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IGxh cHBlbmRfaW50KGp1bXBzX3RvX2NvZXJjZV9maW5pc2gsCisJCQkJCQkJCQkJCSBzdGF0ZS0+c3Rl cHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCWVsc2UK KwkJanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPSAtMTsKKworCS8qIFN0ZXBz IGZvciBjb2VyY2luZyBKc29uSXRlbVR5cGUgdmFsdWVzIHJldHVybmVkIGJ5IEpzb25QYXRoVmFs dWUoKS4gKi8KKwlpZiAoamV4cHItPml0ZW1fY29lcmNpb25zKQorCXsKKwkJLyoKKwkJICogSGVy ZSB3ZSBjcmVhdGUgdGhlIHN0ZXBzIGZvciBlYWNoIEpzb25JdGVtVHlwZSB0eXBlJ3MgY29lcmNp b24KKwkJICogZXhwcmVzc2lvbiBhbmQgYWxzbyBzdG9yZSBhIGZsYWcgd2hldGhlciB0aGUgZXhw cmVzc2lvbiBpcyBhCisJCSAqIEpzb25Db2VyY2lvbiBub2RlLiAgRXhlY1ByZXBhcmVKc29uSXRl bUNvZXJjaW9uKCkgY2FsbGVkIGJ5CisJCSAqIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgd2lsbCBt YXAgYSBnaXZlbiBKc29uYlZhbHVlIHJldHVybmVkIGJ5CisJCSAqIEpzb25QYXRoVmFsdWUoKSB0 byBpdHMgIEpzb25JdGVtVHlwZSdzIGV4cHJlc3Npb24ncyBzdGVwIGFkZHJlc3MKKwkJICogYW5k IHRoZSBmbGFnIGJ5IGluZGV4aW5nIHRoZSBmb2xsb3dpbmcgYXJyYXlzIHdpdGggSnNvbkl0ZW1U eXBlCisJCSAqIGVudW0gdmFsdWUuCisJCSAqLworCQlqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNp b25zID0gbGlzdF9sZW5ndGgoamV4cHItPml0ZW1fY29lcmNpb25zKTsKKwkJanNlc3RhdGUtPmV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyA9IChpbnQgKikKKwkJCXBhbGxvYyhqc2VzdGF0ZS0+bnVt X2l0ZW1fY29lcmNpb25zICogc2l6ZW9mKGludCkpOworCQlqc2VzdGF0ZS0+aXRlbV9jb2VyY2lv bl92aWFfZXhwciA9IChib29sICopCisJCQlwYWxsb2MwKGpzZXN0YXRlLT5udW1faXRlbV9jb2Vy Y2lvbnMgKiBzaXplb2YoYm9vbCkpOworCQlmb3JlYWNoKGxjLCBqZXhwci0+aXRlbV9jb2VyY2lv bnMpCisJCXsKKwkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSBsZmlyc3QobGMp OworCQkJTm9kZQkgICAqY29lcmNpb24gPSBpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbjsKKworCQkJ anNlc3RhdGUtPml0ZW1fY29lcmNpb25fdmlhX2V4cHJbaXRlbV9jb2VyY2lvbi0+aXRlbV90eXBl XSA9CisJCQkJKGNvZXJjaW9uICE9IE5VTEwgJiYgIUlzQShjb2VyY2lvbiwgSnNvbkNvZXJjaW9u KSk7CisJCQlqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2l0ZW1fY29lcmNpb24t Pml0ZW1fdHlwZV0gPQorCQkJCUV4ZWNJbml0SnNvbkV4cHJDb2VyY2lvbihzdGF0ZSwgY29lcmNp b24sCisJCQkJCQkJCQkJIGpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9F UlJPUiA/CisJCQkJCQkJCQkJICZqc2VzdGF0ZS0+ZXNjb250ZXh0IDogTlVMTCwKKwkJCQkJCQkJ CQkgcmVzdiwgcmVzbnVsbCk7CisKKwkJCS8qIEp1bXAgdG8gQ09FUkNJT05fRklOSVNILiAqLwor CQkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QOworCQkJc2NyYXRjaC0+ZC5qdW1wLmp1bXBk b25lID0gLTE7CS8qIHNldCBiZWxvdyAqLworCQkJanVtcHNfdG9fY29lcmNlX2ZpbmlzaCA9IGxh cHBlbmRfaW50KGp1bXBzX3RvX2NvZXJjZV9maW5pc2gsCisJCQkJCQkJCQkJCQkgc3RhdGUtPnN0 ZXBzX2xlbik7CisJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwkJfQorCX0K KworCS8qCisJICogQWRkIHN0ZXAgdG8gcmVzZXQgdGhlIEVycm9yU2F2ZUNvbnRleHQgYW5kIHNl dCBlcnJvciBmbGFnIGlmIHRoZQorCSAqIGNvZXJjaW9uIHN0ZXBzIGVuY291bnRlcmVkIGFuIGVy cm9yIGJ1dCB3YXMgbm90IHRocm93biBiZWNhdXNlIG9mIHRoZQorCSAqIE9OIEVSUk9SIGJlaGF2 aW9yLgorCSAqLworCWlmIChqZXhwci0+cmVzdWx0X2NvZXJjaW9uIHx8IGpleHByLT5pdGVtX2Nv ZXJjaW9ucykKKwl7CisJCWZvcmVhY2gobGMsIGp1bXBzX3RvX2NvZXJjZV9maW5pc2gpCisJCXsK KwkJCWFzID0gJnN0YXRlLT5zdGVwc1tsZmlyc3RfaW50KGxjKV07CisJCQlhcy0+ZC5qdW1wLmp1 bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwkJfQorCisJCXNjcmF0Y2gtPm9wY29kZSA9IEVF T1BfSlNPTkVYUFJfQ09FUkNJT05fRklOSVNIOworCQlzY3JhdGNoLT5kLmpzb25leHByLmpzZXN0 YXRlID0ganNlc3RhdGU7CisJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNjcmF0Y2gpOworCX0K KworCWpzZXN0YXRlLT5qdW1wX2VtcHR5ID0ganNlc3RhdGUtPmp1bXBfZXJyb3IgPSAtMTsKKwor CS8qCisJICogU3RlcCB0byBoYW5kbGUgT04gRVJST1IgYmVoYXZpb3JzLiAgVGhpcyBoYW5kbGVz IGJvdGggdGhlIGVycm9ycyB0aGF0CisJICogb2NjdXIgZHVyaW5nIEVFT1BfSlNPTkVYUFJfUEFU SCBldmFsdWF0aW9uIGFuZCBzdWJzZXF1ZW50IGNvZXJjaW9uCisJICogZXZhbHVhdGlvbi4KKwkg Ki8KKwlpZiAoamV4cHItPm9uX2Vycm9yICYmCisJCWpleHByLT5vbl9lcnJvci0+YnR5cGUgIT0g SlNPTl9CRUhBVklPUl9FUlJPUikKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2Vycm9yID0gc3RhdGUt PnN0ZXBzX2xlbjsKKwkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9KVU1QX0lGX05PVF9UUlVFOwor CisJCS8qCisJCSAqIHBvc3RfZXZhbC5lcnJvciBpcyBzZXQgYnkgRXhlY0V2YWxKc29uRXhwclBh dGgoKSBhbmQKKwkJICogRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2goKS4KKwkJICovCisJCXNj cmF0Y2gtPnJlc3ZhbHVlID0gJnBvc3RfZXZhbC0+ZXJyb3IudmFsdWU7CisJCXNjcmF0Y2gtPnJl c251bGwgPSAmcG9zdF9ldmFsLT5lcnJvci5pc251bGw7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1w ZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQo anVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0 ZSwgc2NyYXRjaCk7CisKKwkJLyogU3RlcHMgdG8gZXZhbHVhdGUgdGhlIE9OIEVSUk9SIGV4cHJl c3Npb24gKi8KKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHByLT5vbl9lcnJvci0+ZXhw ciwKKwkJCQkJCXN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkvKiBTdGVwcyB0byBjb2VyY2Ug dGhlIE9OIEVSUk9SIGV4cHJlc3Npb24gaWYgbmVlZGVkICovCisJCSh2b2lkKSBFeGVjSW5pdEpz b25FeHByQ29lcmNpb24oc3RhdGUsCisJCQkJCQkJCQkJKE5vZGUgKikgamV4cHItPm9uX2Vycm9y LT5jb2VyY2lvbiwKKwkJCQkJCQkJCQkmanNlc3RhdGUtPmVzY29udGV4dCwKKwkJCQkJCQkJCQly ZXN2LCByZXNudWxsKTsKKworCQlqdW1wc190b19lbmQgPSBsYXBwZW5kX2ludChqdW1wc190b19l bmQsIHN0YXRlLT5zdGVwc19sZW4pOworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJ CXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCBzY3JhdGNoKTsKKwl9CisKKwkvKiBTdGVwIHRvIGhhbmRsZSBPTiBFTVBUWSBiZWhhdmlvcnMu ICovCisJaWYgKGpleHByLT5vbl9lbXB0eSAhPSBOVUxMICYmCisJCWpleHByLT5vbl9lbXB0eS0+ YnR5cGUgIT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwl7CisJCWpzZXN0YXRlLT5qdW1wX2VtcHR5 ID0gc3RhdGUtPnN0ZXBzX2xlbjsKKworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVBfSUZf Tk9UX1RSVUU7CisJCXNjcmF0Y2gtPnJlc3ZhbHVlID0gJnBvc3RfZXZhbC0+ZW1wdHkudmFsdWU7 CisJCXNjcmF0Y2gtPnJlc251bGwgPSAmcG9zdF9ldmFsLT5lbXB0eS5pc251bGw7CisJCXNjcmF0 Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5k ID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisKKwkJLyogU3RlcHMgdG8gZXZhbHVhdGUgdGhl IE9OIEVNUFRZIGV4cHJlc3Npb24gKi8KKwkJRXhlY0luaXRFeHByUmVjKChFeHByICopIGpleHBy LT5vbl9lbXB0eS0+ZXhwciwKKwkJCQkJCXN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkvKiBT dGVwcyB0byBjb2VyY2UgdGhlIE9OIEVNUFRZIGV4cHJlc3Npb24gaWYgbmVlZGVkICovCisJCSh2 b2lkKSBFeGVjSW5pdEpzb25FeHByQ29lcmNpb24oc3RhdGUsCisJCQkJCQkJCQkJKE5vZGUgKikg amV4cHItPm9uX2VtcHR5LT5jb2VyY2lvbiwKKwkJCQkJCQkJCQkmanNlc3RhdGUtPmVzY29udGV4 dCwKKwkJCQkJCQkJCQlyZXN2LCByZXNudWxsKTsKKworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9Q X0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9uZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8K KwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVtcHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNf bGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CisJfQorCisJaWYgKGpz ZXN0YXRlLT5qdW1wX2Vycm9yIDwgMCAmJiBqc2VzdGF0ZS0+anVtcF9lbXB0eSA8IDApCisJewor CQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gtPmQuanVtcC5qdW1wZG9u ZSA9IC0xOwkvKiBzZXQgYmVsb3cgKi8KKwkJanVtcHNfdG9fZW5kID0gbGFwcGVuZF9pbnQoanVt cHNfdG9fZW5kLCBzdGF0ZS0+c3RlcHNfbGVuKTsKKwkJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwg c2NyYXRjaCk7CisJfQorCisJLyogUmV0dXJuIE5VTEwgd2hlbiBlaXRoZXIgZm9ybWF0dGVkX2V4 cHIgb3IgcGF0aHNwZWMgaXMgTlVMTC4gKi8KKwlmb3JlYWNoKGxjLCBqdW1wc19pZl9za2lwKQor CXsKKwkJYXMgPSAmc3RhdGUtPnN0ZXBzW2xmaXJzdF9pbnQobGMpXTsKKwkJYXMtPmQuanVtcC5q dW1wZG9uZSA9IHN0YXRlLT5zdGVwc19sZW47CisJfQorCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1Bf Q09OU1Q7CisJc2NyYXRjaC0+cmVzdmFsdWUgPSByZXN2OworCXNjcmF0Y2gtPnJlc251bGwgPSBy ZXNudWxsOworCXNjcmF0Y2gtPmQuY29uc3R2YWwudmFsdWUgPSAoRGF0dW0pIDA7CisJc2NyYXRj aC0+ZC5jb25zdHZhbC5pc251bGwgPSB0cnVlOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsIHNj cmF0Y2gpOworCisJLyogSnVtcCB0byBjb2VyY2UgdGhlIE5VTEwgdXNpbmcgcmVzdWx0X2NvZXJj aW9uIGlzIHByZXNlbnQuICovCisJaWYgKGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJj aW9uID49IDApCisJeworCQlzY3JhdGNoLT5vcGNvZGUgPSBFRU9QX0pVTVA7CisJCXNjcmF0Y2gt PmQuanVtcC5qdW1wZG9uZSA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uOwor CQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCBzY3JhdGNoKTsKKwl9CisKKwlmb3JlYWNoKGxjLCBq dW1wc190b19lbmQpCisJeworCQlhcyA9ICZzdGF0ZS0+c3RlcHNbbGZpcnN0X2ludChsYyldOwor CQlhcy0+ZC5qdW1wLmp1bXBkb25lID0gc3RhdGUtPnN0ZXBzX2xlbjsKKwl9CisKKwlqc2VzdGF0 ZS0+anVtcF9lbmQgPSBzdGF0ZS0+c3RlcHNfbGVuOworfQorCisvKiBJbml0aWFsaXplIG9uZSBK c29uQ29lcmNpb24gZm9yIGV4ZWN1dGlvbi4gKi8KK3N0YXRpYyBpbnQKK0V4ZWNJbml0SnNvbkV4 cHJDb2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBOb2RlICpjb2VyY2lvbl9leHByLAorCQkJCQkJ IEVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dCwKKwkJCQkJCSBEYXR1bSAqcmVzdiwgYm9vbCAq cmVzbnVsbCkKK3sKKwlpbnQJCQlqdW1wX2V2YWxfY29lcmNpb247CisJRGF0dW0JICAgKnNhdmVf aW5uZXJtb3N0X2Nhc2V2YWw7CisJYm9vbAkgICAqc2F2ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJ RXJyb3JTYXZlQ29udGV4dCAqc2F2ZV9lc2NvbnRleHQ7CisKKwlpZiAoY29lcmNpb25fZXhwciA9 PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlqdW1wX2V2YWxfY29lcmNpb24gPSBzdGF0ZS0+c3Rl cHNfbGVuOworCWlmIChJc0EoY29lcmNpb25fZXhwciwgSnNvbkNvZXJjaW9uKSkKKwl7CisJCUpz b25Db2VyY2lvbiAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIGNvZXJjaW9uX2V4cHI7CisJ CUV4cHJFdmFsU3RlcCBzY3JhdGNoID0gezB9OworCQlPaWQJCQl0eXBpbnB1dDsKKwkJRm1ncklu Zm8gICAqZmluZm87CisJCU9pZAkJCXR5cGlvcGFyYW07CisKKwkJZ2V0VHlwZUlucHV0SW5mbygo KEpzb25Db2VyY2lvbiAqKSBjb2VyY2lvbiktPnRhcmdldHR5cGUsCisJCQkJCQkgJnR5cGlucHV0 LCAmdHlwaW9wYXJhbSk7CisJCWZpbmZvID0gcGFsbG9jMChzaXplb2YoRm1nckluZm8pKTsKKwkJ Zm1ncl9pbmZvKHR5cGlucHV0LCBmaW5mbyk7CisKKwkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX0pT T05FWFBSX0NPRVJDSU9OOworCQlzY3JhdGNoLnJlc3ZhbHVlID0gcmVzdjsKKwkJc2NyYXRjaC5y ZXNudWxsID0gcmVzbnVsbDsKKwkJc2NyYXRjaC5kLmpzb25leHByX2NvZXJjaW9uLmNvZXJjaW9u ID0gY29lcmNpb247CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5pbnB1dF9maW5mbyA9 IGZpbmZvOworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24udHlwaW9wYXJhbSA9IHR5cGlv cGFyYW07CisJCXNjcmF0Y2guZC5qc29uZXhwcl9jb2VyY2lvbi5qc29uX3BvcHVsYXRlX3R5cGVf Y2FjaGUgPSBOVUxMOworCQlzY3JhdGNoLmQuanNvbmV4cHJfY29lcmNpb24uZXNjb250ZXh0ID0g ZXNjb250ZXh0OworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCS8qIElu aXRpYWxpemUgdGhlIGNhc3QgZXhwcmVzc2lvbiBiZWxvdywgaWYgYW55LiAqLworCQlpZiAoY29l cmNpb24tPmNhc3RfZXhwciAhPSBOVUxMKQorCQkJY29lcmNpb25fZXhwciA9IGNvZXJjaW9uLT5j YXN0X2V4cHI7CisJCWVsc2UKKwkJCXJldHVybiBqdW1wX2V2YWxfY29lcmNpb247CisJfQorCisJ LyogUHVzaCBzdGVwKHMpIHRvIGNvbXB1dGUgY3N0YXRlLT5jb2VyY2lvbi4gKi8KKwlzYXZlX2lu bmVybW9zdF9jYXNldmFsID0gc3RhdGUtPmlubmVybW9zdF9jYXNldmFsOworCXNhdmVfaW5uZXJt b3N0X2Nhc2VudWxsID0gc3RhdGUtPmlubmVybW9zdF9jYXNlbnVsbDsKKwlzYXZlX2VzY29udGV4 dCA9IHN0YXRlLT5lc2NvbnRleHQ7CisKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2V2YWwgPSByZXN2 OworCXN0YXRlLT5pbm5lcm1vc3RfY2FzZW51bGwgPSByZXNudWxsOworCXN0YXRlLT5lc2NvbnRl eHQgPSBlc2NvbnRleHQ7CisKKwlFeGVjSW5pdEV4cHJSZWMoKEV4cHIgKikgY29lcmNpb25fZXhw ciwgc3RhdGUsIHJlc3YsIHJlc251bGwpOworCisJc3RhdGUtPmlubmVybW9zdF9jYXNldmFsID0g c2F2ZV9pbm5lcm1vc3RfY2FzZXZhbDsKKwlzdGF0ZS0+aW5uZXJtb3N0X2Nhc2VudWxsID0gc2F2 ZV9pbm5lcm1vc3RfY2FzZW51bGw7CisJc3RhdGUtPmVzY29udGV4dCA9IHNhdmVfZXNjb250ZXh0 OworCisJcmV0dXJuIGp1bXBfZXZhbF9jb2VyY2lvbjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCmluZGV4IDNmMjBmMWRkMzEuLmU2YjY5NTU2ZjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY0V4cHJJbnRlcnAuYwpAQCAtNzMsOCArNzMsOCBAQAogI2luY2x1ZGUgInV0aWxz L2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5kZWRyZWNvcmQuaCIKICNpbmNsdWRlICJ1 dGlscy9qc29uLmgiCi0jaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9q c29uZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCkBAIC0xODEsNiArMTgxLDEwIEBAIHN0YXRpYyBwZ19hdHRyaWJ1dGVf YWx3YXlzX2lubGluZSB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQnlSZWYoQWdnU3RhdGUgKmFnZ3N0 YXRlCiAJCQkJCQkJCQkJCQkJCQkgIEFnZ1N0YXRlUGVyR3JvdXAgcGVyZ3JvdXAsCiAJCQkJCQkJ CQkJCQkJCQkgIEV4cHJDb250ZXh0ICphZ2djb250ZXh0LAogCQkJCQkJCQkJCQkJCQkJICBpbnQg c2V0bm8pOworc3RhdGljIHZvaWQgRXhlY1ByZXBhcmVKc29uSXRlbUNvZXJjaW9uKEpzb25iVmFs dWUgKml0ZW0sIEpzb25FeHByU3RhdGUgKmpzZXN0YXRlLAorCQkJCQkJCQkJCWJvb2wgdGhyb3df ZXJyb3IsCisJCQkJCQkJCQkJaW50ICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiwKKwkJCQkJCQkJ CQlEYXR1bSAqcmVzdmFsdWUsIGJvb2wgKnJlc251bGwpOwogCiAvKgogICogU2NhbGFyQXJyYXlP cEV4cHJIYXNoRW50cnkKQEAgLTQ4Miw2ICs0ODYsOSBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3Rh dGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNF X0VFT1BfWE1MRVhQUiwKIAkJJiZDQVNFX0VFT1BfSlNPTl9DT05TVFJVQ1RPUiwKIAkJJiZDQVNF X0VFT1BfSVNfSlNPTiwKKwkJJiZDQVNFX0VFT1BfSlNPTkVYUFJfUEFUSCwKKwkJJiZDQVNFX0VF T1BfSlNPTkVYUFJfQ09FUkNJT04sCisJCSYmQ0FTRV9FRU9QX0pTT05FWFBSX0NPRVJDSU9OX0ZJ TklTSCwKIAkJJiZDQVNFX0VFT1BfQUdHUkVGLAogCQkmJkNBU0VfRUVPUF9HUk9VUElOR19GVU5D LAogCQkmJkNBU0VfRUVPUF9XSU5ET1dfRlVOQywKQEAgLTE1NTQsNiArMTU2MSwyOCBAQCBFeGVj SW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJCUVFT19ORVhUKCk7CiAJCX0KIAorCQlFRU9fQ0FTRShFRU9QX0pTT05FWFBS X1BBVEgpCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRp b24gKi8KKwkJCUVFT19KVU1QKEV4ZWNFdmFsSnNvbkV4cHJQYXRoKHN0YXRlLCBvcCwgZWNvbnRl eHQpKTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfSlNPTkVYUFJfQ09FUkNJT04pCisJCXsKKwkJ CS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNF dmFsSnNvbkNvZXJjaW9uKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCisJCQlFRU9fTkVYVCgpOwor CQl9CisKKwkJRUVPX0NBU0UoRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gpCisJCXsKKwkJ CS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KKwkJCUV4ZWNF dmFsSnNvbkNvZXJjaW9uRmluaXNoKHN0YXRlLCBvcCk7CisKKwkJCUVFT19ORVhUKCk7CisJCX0K KwogCQlFRU9fQ0FTRShFRU9QX0FHR1JFRikKIAkJewogCQkJLyoKQEAgLTQyMTQsNiArNDI0Mywz NTggQEAgRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxT dGVwICpvcCkKIAkqb3AtPnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKHJlcyk7CiB9CiAKKy8qCisg KiBQZXJmb3JtcyBKc29uUGF0aHtFeGlzdHN8UXVlcnl8VmFsdWV9KCkgZm9yIGdpdmVuIGNvbnRl eHQgaXRlbSBhbmQgSlNPTgorICogcGF0aC4KKyAqCisgKiBSZXN1bHQgaXMgc2V0IGluICpvcC0+ cmVzdmFsdWUgYW5kICpvcC0+cmVzbnVsbC4gIFJldHVybiB2YWx1ZSBpcyB0aGUKKyAqIHN0ZXAg YWRkcmVzcyB0byBiZSBwZXJmb3JtZWQgbmV4dC4KKyAqCisgKiBPbiByZXR1cm4sIEpzb25FeHBy UG9zdEV2YWxTdGF0ZSBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGRldGFpbHM6Cisg KgktIGVycm9yLnZhbHVlOiB0cnVlIGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBKc29uUGF0 aCBldmFsdWF0aW9uCisgKgktIGVtcHR5LnZhbHVlOiB0cnVlIGlmIEpzb25QYXRoe1F1ZXJ5fFZh bHVlfSgpIGZvdW5kIG5vIG1hdGNoaW5nIGl0ZW0KKyAqCisgKiBObyByZXR1cm4gaWYgdGhlIE9O IEVSUk9SL0VNUFRZIGJlaGF2aW9yIGlzIEVSUk9SLgorICovCitpbnQKK0V4ZWNFdmFsSnNvbkV4 cHJQYXRoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCisJCQkJCSBFeHByQ29u dGV4dCAqZWNvbnRleHQpCit7CisJSnNvbkV4cHJTdGF0ZSAqanNlc3RhdGUgPSBvcC0+ZC5qc29u ZXhwci5qc2VzdGF0ZTsKKwlKc29uRXhwclBvc3RFdmFsU3RhdGUgKnBvc3RfZXZhbCA9ICZqc2Vz dGF0ZS0+cG9zdF9ldmFsOworCUpzb25FeHByICAgKmpleHByID0ganNlc3RhdGUtPmpzZXhwcjsK KwlEYXR1bQkJaXRlbTsKKwlKc29uUGF0aCAgICpwYXRoOworCWJvb2wJCXRocm93X2Vycm9yID0g amV4cHItPm9uX2Vycm9yLT5idHlwZSA9PSBKU09OX0JFSEFWSU9SX0VSUk9SOworCWJvb2wJCWVy cm9yID0gZmFsc2UsCisJCQkJZW1wdHkgPSBmYWxzZTsKKworCS8qIE1pZ2h0IGdldCBvdmVycmlk ZGVuIGZvciBKU09OX1ZBTFVFX09QIGJ5IGFuIHBlci1pdGVtIGNvZXJjaW9uLiAqLworCWludAkJ CWp1bXBfZXZhbF9jb2VyY2lvbiA9IGpzZXN0YXRlLT5qdW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9u OworCisJaXRlbSA9IGpzZXN0YXRlLT5mb3JtYXR0ZWRfZXhwci52YWx1ZTsKKwlwYXRoID0gRGF0 dW1HZXRKc29uUGF0aFAoanNlc3RhdGUtPnBhdGhzcGVjLnZhbHVlKTsKKworCS8qIFJlc2V0IEpz b25FeHByUG9zdEV2YWxTdGF0ZSBmb3IgdGhpcyBldmFsdWF0aW9uLiAqLworCW1lbXNldChwb3N0 X2V2YWwsIDAsIHNpemVvZigqcG9zdF9ldmFsKSk7CisJc3dpdGNoIChqZXhwci0+b3ApCisJewor CQljYXNlIEpTT05fRVhJU1RTX09QOgorCQkJeworCQkJCWJvb2wJCWV4aXN0cyA9IEpzb25QYXRo RXhpc3RzKGl0ZW0sIHBhdGgsCisJCQkJCQkJCQkJCQkJIXRocm93X2Vycm9yID8gJmVycm9yIDog TlVMTCwKKwkJCQkJCQkJCQkJCQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoIWVycm9yKQor CQkJCXsKKwkJCQkJKm9wLT5yZXN2YWx1ZSA9IEJvb2xHZXREYXR1bShleGlzdHMpOworCQkJCQkq b3AtPnJlc251bGwgPSBmYWxzZTsKKwkJCQl9CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEpT T05fUVVFUllfT1A6CisJCQkqb3AtPnJlc3ZhbHVlID0gSnNvblBhdGhRdWVyeShpdGVtLCBwYXRo LCBqZXhwci0+d3JhcHBlciwgJmVtcHR5LAorCQkJCQkJCQkJCSAgIXRocm93X2Vycm9yID8gJmVy cm9yIDogTlVMTCwKKwkJCQkJCQkJCQkgIGpzZXN0YXRlLT5hcmdzKTsKKworCQkJaWYgKCFlcnJv ciAmJiAhZW1wdHkpCisJCQkJKm9wLT5yZXNudWxsID0gKERhdHVtR2V0UG9pbnRlcigqb3AtPnJl c3ZhbHVlKSA9PSBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJ CXsKKwkJCQlKc29uYlZhbHVlICpqYnYgPSBKc29uUGF0aFZhbHVlKGl0ZW0sIHBhdGgsICZlbXB0 eSwKKwkJCQkJCQkJCQkJCSF0aHJvd19lcnJvciA/ICZlcnJvciA6IE5VTEwsCisJCQkJCQkJCQkJ CQlqc2VzdGF0ZS0+YXJncyk7CisKKwkJCQlpZiAoamJ2ID09IE5VTEwpCisJCQkJeworCQkJCQkv KiBXaWxsIGJlIGNvZXJjZWQgd2l0aCByZXN1bHRfY29lcmNpb24uICovCisJCQkJCSpvcC0+cmVz dmFsdWUgPSAoRGF0dW0pIDA7CisJCQkJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCQkJfQorCQkJ CWVsc2UgaWYgKCFlcnJvciAmJiAhZW1wdHkpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBJZiB0 aGUgcmVxdWVzdGVkIG91dHB1dCB0eXBlIGlzIGpzb24oYiksIHVzZQorCQkJCQkgKiByZXN1bHRf Y29lcmNpb24gdG8gZG8gdGhlIGNvZXJjaW9uLgorCQkJCQkgKi8KKwkJCQkJaWYgKGpleHByLT5y ZXR1cm5pbmctPnR5cGlkID09IEpTT05PSUQgfHwKKwkJCQkJCWpleHByLT5yZXR1cm5pbmctPnR5 cGlkID09IEpTT05CT0lEKQorCQkJCQl7CisJCQkJCQkqb3AtPnJlc3ZhbHVlID0gSnNvbmJQR2V0 RGF0dW0oSnNvbmJWYWx1ZVRvSnNvbmIoamJ2KSk7CisJCQkJCQkqb3AtPnJlc251bGwgPSBmYWxz ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8qCisJCQkJCQkgKiBFbHNlLCB1 c2Ugb25lIG9mIHRoZSBpdGVtX2NvZXJjaW9ucy4KKwkJCQkJCSAqCisJCQkJCQkgKiBFcnJvciBv dXQgaWYgbm8gY2FzdCBleHByZXNzaW9uIGV4aXN0cy4KKwkJCQkJCSAqLworCQkJCQkJRXhlY1By ZXBhcmVKc29uSXRlbUNvZXJjaW9uKGpidiwganNlc3RhdGUsIHRocm93X2Vycm9yLAorCQkJCQkJ CQkJCQkJCSZqdW1wX2V2YWxfY29lcmNpb24sCisJCQkJCQkJCQkJCQkJb3AtPnJlc3ZhbHVlLCBv cC0+cmVzbnVsbCk7CisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJZGVmYXVs dDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU1FML0pTT04gZXhwcmVzc2lvbiBvcCAl ZCIsIGpleHByLT5vcCk7CisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKGVtcHR5KQorCXsK KwkJaWYgKGpleHByLT5vbl9lbXB0eSkKKwkJeworCQkJaWYgKGpleHByLT5vbl9lbXB0eS0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9FUlJPUikKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJy Y29kZShFUlJDT0RFX05PX1NRTF9KU09OX0lURU0pLAorCQkJCQkJZXJybXNnKCJubyBTUUwvSlNP TiBpdGVtIikpOworCQkJZWxzZQorCQkJCXBvc3RfZXZhbC0+ZW1wdHkudmFsdWUgPSBCb29sR2V0 RGF0dW0odHJ1ZSk7CisKKwkJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lbXB0eSA+PSAwKTsKKwkJ CXJldHVybiBqc2VzdGF0ZS0+anVtcF9lbXB0eTsKKwkJfQorCQllbHNlIGlmIChqZXhwci0+b25f ZXJyb3ItPmJ0eXBlID09IEpTT05fQkVIQVZJT1JfRVJST1IpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfTk9fU1FMX0pTT05fSVRFTSksCisJCQkJCWVycm1zZygibm8g U1FML0pTT04gaXRlbSIpKTsKKwkJZWxzZQorCQkJcG9zdF9ldmFsLT5lcnJvci52YWx1ZSA9IEJv b2xHZXREYXR1bSh0cnVlKTsKKworCQkqb3AtPnJlc3ZhbHVlID0gKERhdHVtKSAwOworCQkqb3At PnJlc251bGwgPSB0cnVlOworCisJCUFzc2VydChqc2VzdGF0ZS0+anVtcF9lcnJvciA+PSAwKTsK KwkJcmV0dXJuIGpzZXN0YXRlLT5qdW1wX2Vycm9yOworCX0KKworCWlmIChlcnJvcikKKwl7CisJ CUFzc2VydCghdGhyb3dfZXJyb3IgJiYganNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCk7CisJCSpv cC0+cmVzdmFsdWUgPSAoRGF0dW0pIDA7CisJCSpvcC0+cmVzbnVsbCA9IHRydWU7CisJCXBvc3Rf ZXZhbC0+ZXJyb3IudmFsdWUgPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJCXJldHVybiBqc2VzdGF0 ZS0+anVtcF9lcnJvcjsKKwl9CisKKwkvKiBFbHNlIHJldHVybiB0aGUgY29lcmNpb24gc3RlcCBh ZGRyZXNzIG9yIHRoZSBhZGRyZXNzIHRvIHNraXAgdG8gZW5kLiAqLworCXJldHVybiBqdW1wX2V2 YWxfY29lcmNpb24gPj0gMCA/IGp1bXBfZXZhbF9jb2VyY2lvbiA6IGpzZXN0YXRlLT5qdW1wX2Vu ZDsKK30KKworLyoKKyAqIFNlbGVjdHMgYSBjb2VyY2lvbiBmb3IgYSBnaXZlbiBKc29uYlZhbHVl IGJhc2VkIG9uIGl0cyB0eXBlLgorICoKKyAqIE9uIHJldHVybiwgKnJlc3ZhbHVlIGFuZCAqcmVz bnVsbCBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBleHRyYWN0ZWQgZnJvbSB0aGUKKyAqIEpzb25iVmFs dWUgYW5kICpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiBpcyBzZXQgdG8gdGhlIHN0ZXAgYWRkcmVz cyBvZiB0aGUKKyAqIGNvZXJjaW9uIGV4cHJlc3Npb24uCisgKgorICogSWYgdGhlIGZvdW5kIGV4 cHJlc3Npb24gaXMgYSBKc29uQ29lcmNpb24gbm9kZSB0aGF0IG1lYW5zIHRoZSBwYXJzZXIKKyAq IGRpZG50JyBmaW5kIGEgY2FzdCB0byBkbyB0aGUgY29lcmNpb24sIHNvIHRocm93IGFuIGVycm9y IGlmIHRoZQorICogT04gRVJST1IgYmVoYXZpb3Igc2F5cyB0byBkbyBzby4KKyAqLworc3RhdGlj IHZvaWQKK0V4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbihKc29uYlZhbHVlICppdGVtLCBKc29u RXhwclN0YXRlICpqc2VzdGF0ZSwKKwkJCQkJCQlib29sIHRocm93X2Vycm9yLAorCQkJCQkJCWlu dCAqanVtcF9ldmFsX2l0ZW1fY29lcmNpb24sCisJCQkJCQkJRGF0dW0gKnJlc3ZhbHVlLCBib29s ICpyZXNudWxsKQoreworCWludAkJICAgKmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyA9IGpzZXN0 YXRlLT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lvbl92 aWFfZXhwciA9IGpzZXN0YXRlLT5pdGVtX2NvZXJjaW9uX3ZpYV9leHByOworCWJvb2wJCXZpYV9l eHByOworCWludAkJCWp1bXBfdG87CisJSnNvbmJWYWx1ZQlidWY7CisKKwlpZiAoaXRlbS0+dHlw ZSA9PSBqYnZCaW5hcnkgJiYgSnNvbkNvbnRhaW5lcklzU2NhbGFyKGl0ZW0tPnZhbC5iaW5hcnku ZGF0YSkpCisJeworCQlib29sCQlpc19zY2FsYXIgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwor CisJCWlzX3NjYWxhciA9IEpzb25iRXh0cmFjdFNjYWxhcihpdGVtLT52YWwuYmluYXJ5LmRhdGEs ICZidWYpOworCQlpdGVtID0gJmJ1ZjsKKwkJQXNzZXJ0KGlzX3NjYWxhcik7CisJfQorCisJKnJl c251bGwgPSBmYWxzZTsKKworCS8qIGdldCBjb2VyY2lvbiBzdGF0ZSByZWZlcmVuY2UgYW5kIGRh dHVtIG9mIHRoZSBjb3JyZXNwb25kaW5nIFNRTCB0eXBlICovCisJc3dpdGNoIChpdGVtLT50eXBl KQorCXsKKwkJY2FzZSBqYnZOdWxsOgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9l eHByW0pzb25JdGVtVHlwZU51bGxdOworCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9q dW1wc1tKc29uSXRlbVR5cGVOdWxsXTsKKwkJCSpyZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJCSpy ZXNudWxsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2U3RyaW5nOgorCQkJdmlhX2V4 cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVN0cmluZ107CisJCQlqdW1w X3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZVN0cmluZ107CisJCQkq cmVzdmFsdWUgPQorCQkJCVBvaW50ZXJHZXREYXR1bShjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4o aXRlbS0+dmFsLnN0cmluZy52YWwsCisJCQkJCQkJCQkJCQkJCSBpdGVtLT52YWwuc3RyaW5nLmxl bikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZOdW1lcmljOgorCQkJdmlhX2V4cHIgPSBpdGVt X2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZU51bWVyaWNdOworCQkJanVtcF90byA9IGV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVOdW1lcmljXTsKKwkJCSpyZXN2YWx1 ZSA9IE51bWVyaWNHZXREYXR1bShpdGVtLT52YWwubnVtZXJpYyk7CisJCQlicmVhazsKKworCQlj YXNlIGpidkJvb2w6CisJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0 ZW1UeXBlQm9vbGVhbl07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW0pz b25JdGVtVHlwZUJvb2xlYW5dOworCQkJKnJlc3ZhbHVlID0gQm9vbEdldERhdHVtKGl0ZW0tPnZh bC5ib29sZWFuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgamJ2RGF0ZXRpbWU6CisJCQkqcmVzdmFs dWUgPSBpdGVtLT52YWwuZGF0ZXRpbWUudmFsdWU7CisJCQlzd2l0Y2ggKGl0ZW0tPnZhbC5kYXRl dGltZS50eXBpZCkKKwkJCXsKKwkJCQljYXNlIERBVEVPSUQ6CisJCQkJCXZpYV9leHByID0gaXRl bV9jb2VyY2lvbl92aWFfZXhwcltKc29uSXRlbVR5cGVEYXRlXTsKKwkJCQkJanVtcF90byA9IGV2 YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVEYXRlXTsKKwkJCQkJYnJlYWs7CisJ CQkJY2FzZSBUSU1FT0lEOgorCQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJb SnNvbkl0ZW1UeXBlVGltZV07CisJCQkJCWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVt cHNbSnNvbkl0ZW1UeXBlVGltZV07CisJCQkJCWJyZWFrOworCQkJCWNhc2UgVElNRVRaT0lEOgor CQkJCQl2aWFfZXhwciA9IGl0ZW1fY29lcmNpb25fdmlhX2V4cHJbSnNvbkl0ZW1UeXBlVGltZXR6 XTsKKwkJCQkJanVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVU aW1ldHpdOworCQkJCQlicmVhazsKKwkJCQljYXNlIFRJTUVTVEFNUE9JRDoKKwkJCQkJdmlhX2V4 cHIgPSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVRpbWVzdGFtcF07CisJCQkJ CWp1bXBfdG8gPSBldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbSnNvbkl0ZW1UeXBlVGltZXN0YW1w XTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQkJdmlhX2V4cHIg PSBpdGVtX2NvZXJjaW9uX3ZpYV9leHByW0pzb25JdGVtVHlwZVRpbWVzdGFtcHR6XTsKKwkJCQkJ anVtcF90byA9IGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tKc29uSXRlbVR5cGVUaW1lc3RhbXB0 el07CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIGpzb25iIGRhdGV0aW1lIHR5cGUgb2lkICV1IiwKKwkJCQkJCSBpdGVtLT52YWwuZGF0ZXRp bWUudHlwaWQpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBqYnZBcnJheToKKwkJY2FzZSBq YnZPYmplY3Q6CisJCWNhc2UgamJ2QmluYXJ5OgorCQkJdmlhX2V4cHIgPSBpdGVtX2NvZXJjaW9u X3ZpYV9leHByW0pzb25JdGVtVHlwZUNvbXBvc2l0ZV07CisJCQlqdW1wX3RvID0gZXZhbF9pdGVt X2NvZXJjaW9uX2p1bXBzW0pzb25JdGVtVHlwZUNvbXBvc2l0ZV07CisJCQkqcmVzdmFsdWUgPSBK c29uYlBHZXREYXR1bShKc29uYlZhbHVlVG9Kc29uYihpdGVtKSk7CisJCQlicmVhazsKKworCQlk ZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQganNvbmIgdmFsdWUgdHlwZSAlZCIs IGl0ZW0tPnR5cGUpOworCX0KKworCS8qIElmIHRoZSBleHByZXNzaW9uIGlzIGEgSnNvbkNvZXJj aW9uLCB0aHJvdyBhbiBlcnJvci4gKi8KKwlpZiAoanVtcF90byA+PSAwICYmICF2aWFfZXhwcikK Kwl7CisJCWlmICh0aHJvd19lcnJvcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUo RVJSQ09ERV9TUUxfSlNPTl9JVEVNX0NBTk5PVF9CRV9DQVNUX1RPX1RBUkdFVF9UWVBFKSwKKwkJ CQkJZXJybXNnKCJTUUwvSlNPTiBpdGVtIGNhbm5vdCBiZSBjYXN0IHRvIHRhcmdldCB0eXBlIikp OworCisJCSpyZXN2YWx1ZSA9IChEYXR1bSkgMDsKKwkJKnJlc251bGwgPSB0cnVlOworCX0KKwor CSpqdW1wX2V2YWxfaXRlbV9jb2VyY2lvbiA9IGp1bXBfdG87Cit9CisKKy8qCisgKiBDb2VyY2Ug YSBqc29uYiBvciBhIHNjYWxhciBzdHJpbmcgdmFsdWUgcHJvZHVjZWQgYnkgRXhlY0V2YWxKc29u RXhwclBhdGgoKQorICogb3IgYW4gT04gRVJST1IgLyBFTVBUWSBiZWhhdmlvciBleHByZXNzaW9u IHRvIHRoZSB0YXJnZXQgdHlwZS4KKyAqCisgKiBUaGlzIGlzIGFsc28gcmVzcG9uc2libGUgZm9y IHJlbW92aW5nIGFueSBxdW90ZXMgcHJlc2VudCBpbiBhIHNjYWxhciBzb3VyY2UKKyAqIHZhbHVl IGJlZm9yZSBjb2VyY2luZyB0byB0aGUgdGFyZ2V0IHR5cGUgaWYgSnNvbkNvZXJjaW9uLm9taXRf cXVvdGVzIGlzCisgKiB0cnVlICh0aGUgT01JVCBRVU9URVMgY2xhdXNlKS4KKyAqCisgKiBBbnkg c29mdCBlcnJvcnMgdGhhdCBvY2N1ciBoZXJlIHdpbGwgYmUgY2hlY2tlZCBieQorICogRUVPUF9K U09ORVhQUl9DT0VSQ0lPTl9GSU5JU0ggdGhhdCB3aWxsIHJ1biBhZnRlciB0aGlzLgorICovCit2 b2lkCitFeGVjRXZhbEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAorCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUpzb25Db2VyY2lvbiAqY29l cmNpb24gPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5jb2VyY2lvbjsKKwlFcnJvclNhdmVDb250 ZXh0ICplc2NvbnRleHQgPSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi5lc2NvbnRleHQ7CisJRGF0 dW0JCXJlcyA9ICpvcC0+cmVzdmFsdWU7CisKKwkvKgorCSAqIEhhbmRsZSBPTUlUIFFVT1RFUy4K KwkgKgorCSAqIE5vcm1hbGx5LCBqc29uX3BvcHVsYXRlX3R5cGUoKSBpcyB0aGUgcGxhY2UgdG8g Y29lcmNlIGpzb25iIHZhbHVlcyB0bworCSAqIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0IHR5cGUsIGlu Y2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBzY2FsYXIgc3RyaW5ncywgYnV0CisJICogaXQgZG9lc24n dCBoYXZlIHRoZSBzdXBwb3J0IGZvciByZW1vdmluZyBxdW90ZXMgdG8gaW1wbGVtZW50IHRoZQor CSAqIE9NSVQgUVVPVEVTIGNsYXVzZSwgc28gd2UgaGFuZGxlIGl0IGhlcmUuCisJICovCisJaWYg KGNvZXJjaW9uLT5vbWl0X3F1b3RlcykKKwl7CisJCUZtZ3JJbmZvICAgKmlucHV0X2ZpbmZvID0g b3AtPmQuanNvbmV4cHJfY29lcmNpb24uaW5wdXRfZmluZm87CisJCU9pZAkJCXR5cGlvcGFyYW0g PSBvcC0+ZC5qc29uZXhwcl9jb2VyY2lvbi50eXBpb3BhcmFtOworCQljaGFyCSAgICp2YWwgPSAh Km9wLT5yZXNudWxsID8KKwkJCUpzb25iVW5xdW90ZShEYXR1bUdldEpzb25iUChyZXMpKSA6IE5V TEw7CisKKwkJLyoKKwkJICogSWYgdGhlIGNvZXJjaW9uIG11c3QgYmUgZG9uZSB1c2luZyBhIGNh c3QgZXhwcmVzc2lvbiwgcGFzcyB0byBpdAorCQkgKiB0aGUgdGV4dCB2ZXJzaW9uIG9mIHRoZSBx dW90ZS1zdHJpcHBlZCBzdHJpbmcuICBJZiBub3QsIGZpbmlzaCB0aGUKKwkJICogY29lcmNpb24g YnkgY2FsbGluZyB0aGUgaW5wdXQgZnVuY3Rpb24uCisJCSAqLworCQlpZiAoY29lcmNpb24tPmNh c3RfZXhwcikKKwkJCSpvcC0+cmVzdmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKHRleHRpbiwK KwkJCQkJCQkJCQkJCUNTdHJpbmdHZXREYXR1bSh2YWwpKTsKKwkJZWxzZQorCQkJKHZvaWQpIElu cHV0RnVuY3Rpb25DYWxsU2FmZShpbnB1dF9maW5mbywgdmFsLCB0eXBpb3BhcmFtLAorCQkJCQkJ CQkJCSBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCSAoTm9kZSAqKSBlc2NvbnRl eHQsCisJCQkJCQkJCQkJIG9wLT5yZXN2YWx1ZSk7CisJfQorCWVsc2UKKwl7CisJCXZvaWQJICAg KmNhY2hlID0gb3AtPmQuanNvbmV4cHJfY29lcmNpb24uanNvbl9wb3B1bGF0ZV90eXBlX2NhY2hl OworCisJCSpvcC0+cmVzdmFsdWUgPSBqc29uX3BvcHVsYXRlX3R5cGUocmVzLCBKU09OQk9JRCwK KwkJCQkJCQkJCQkgICBjb2VyY2lvbi0+dGFyZ2V0dHlwZSwKKwkJCQkJCQkJCQkgICBjb2VyY2lv bi0+dGFyZ2V0dHlwbW9kLAorCQkJCQkJCQkJCSAgICZjYWNoZSwKKwkJCQkJCQkJCQkgICBlY29u dGV4dC0+ZWN4dF9wZXJfcXVlcnlfbWVtb3J5LAorCQkJCQkJCQkJCSAgIG9wLT5yZXNudWxsLCAo Tm9kZSAqKSBlc2NvbnRleHQpOworCX0KK30KKworLyoKKyAqIENoZWNrcyBpZiB0aGUgY29lcmNp b24gZXZhbHVhdGlvbiBsZWQgdG8gYW4gZXJyb3IuICBJZiBhbiBlcnJvciBkaWQgb2NjdXIsCisg KiB0aGlzIHNldHMgcG9zdF9ldmFsLT5lcnJvciB0byB0cmlnZ2VyIHRoZSBzdWJzZXF1ZW50IE9O IEVSUk9SIGhhbmRsaW5nCisgKiBzdGVwcy4KKyAqLwordm9pZAorRXhlY0V2YWxKc29uQ29lcmNp b25GaW5pc2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCkKK3sKKwlKc29uRXhw clN0YXRlICpqc2VzdGF0ZSA9IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCisJaWYgKFNPRlRf RVJST1JfT0NDVVJSRUQoJmpzZXN0YXRlLT5lc2NvbnRleHQpKQorCXsKKwkJKm9wLT5yZXN2YWx1 ZSA9IChEYXR1bSkgMDsKKwkJKm9wLT5yZXNudWxsID0gdHJ1ZTsKKwkJanNlc3RhdGUtPnBvc3Rf ZXZhbC5lcnJvci52YWx1ZSA9IEJvb2xHZXREYXR1bSh0cnVlKTsKKworCQkvKgorCQkgKiBBbHNv IG1ha2UgRXJyb3JTYXZlQ29udGV4dCByZWFkeSBmb3IgdGhlIG5leHQgcm93LiAgU2luY2Ugd2Ug bmV2ZXIKKwkJICogc2V0IGRldGFpbHNfd2FudGVkLCB3ZSBkb24ndCBuZWVkIHRvIGFsc28gcmVz ZXQgZXJyb3JfZGF0YSwgd2hpY2gKKwkJICogd291bGQgYmUgTlVMTCBhbnl3YXkuCisJCSAqLwor CQlBc3NlcnQoIWpzZXN0YXRlLT5lc2NvbnRleHQuZGV0YWlsc193YW50ZWQgJiYKKwkJCSAgIGpz ZXN0YXRlLT5lc2NvbnRleHQuZXJyb3JfZGF0YSA9PSBOVUxMKTsKKwkJanNlc3RhdGUtPmVzY29u dGV4dC5lcnJvcl9vY2N1cnJlZCA9IGZhbHNlOworCX0KK30KIAogLyoKICAqIEV4ZWNFdmFsR3Jv dXBpbmdGdW5jCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIu YyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDBjNDQ4NDIyZTIu LjMyMjkyZjllYzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCkBAIC0xOTMwLDYg KzE5MzAsMTUwIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExW TUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBF RU9QX0pTT05FWFBSX1BBVEg6CisJCQkJeworCQkJCQlKc29uRXhwclN0YXRlICpqc2VzdGF0ZSA9 IG9wLT5kLmpzb25leHByLmpzZXN0YXRlOworCQkJCQlMTFZNVmFsdWVSZWYgdl9yZXQ7CisKKwkJ CQkJLyoKKwkJCQkJICogQ2FsbCBFeGVjRXZhbEpzb25FeHByUGF0aCgpLiAgSXQgcmV0dXJucyB0 aGUgYWRkcmVzcyBvZgorCQkJCQkgKiB0aGUgc3RlcCB0byBwZXJmb3JtIG5leHQuCisJCQkJCSAq LworCQkJCQl2X3JldCA9IGJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25FeHBy UGF0aCIsCisJCQkJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCQkvKgor CQkJCQkgKiBCdWlsZCBhIHN3aXRjaCB0byBtYXAgdGhlIHJldHVybiB2YWx1ZSwgd2hpY2ggaXMg YQorCQkJCQkgKiBydW50aW1lIHZhbHVlIG9mIHRoZSBzdGVwIGFkZHJlc3MgdG8gcGVyZm9ybSBu ZXh0LCB0bworCQkJCQkgKiBlaXRoZXIganVtcF9lbXB0eSwganVtcF9lcnJvciwgb3IgdGhlIGNv ZXJjaW9uCisJCQkJCSAqIGV4cHJlc3Npb24uCisJCQkJCSAqLworCQkJCQlpZiAoanNlc3RhdGUt Pmp1bXBfZW1wdHkgPj0gMCB8fAorCQkJCQkJanNlc3RhdGUtPmp1bXBfZXJyb3IgPj0gMCB8fAor CQkJCQkJanNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24gPj0gMCB8fAorCQkJCQkJ anNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyA+IDApCisJCQkJCXsKKwkJCQkJCWludAkJCWk7 CisJCQkJCQlMTFZNVmFsdWVSZWYgdl9qdW1wX2VtcHR5OworCQkJCQkJTExWTVZhbHVlUmVmIHZf anVtcF9lcnJvcjsKKwkJCQkJCUxMVk1WYWx1ZVJlZiB2X2p1bXBfY29lcmNpb247CisJCQkJCQlM TFZNVmFsdWVSZWYgdl9zd2l0Y2g7CisJCQkJCQlMTFZNQmFzaWNCbG9ja1JlZiBiX2RvbmUsCisJ CQkJCQkJCQliX2VtcHR5LAorCQkJCQkJCQkJYl9lcnJvciwKKwkJCQkJCQkJCWJfcmVzdWx0X2Nv ZXJjaW9uLAorCQkJCQkJCQkgICAqYl9pdGVtX2NvZXJjaW9ucyA9IE5VTEw7CisKKwkJCQkJCWJf ZW1wdHkgPQorCQkJCQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJ CQkJCSAgIm9wLiVkLmpzb25leHByX2VtcHR5Iiwgb3Bubyk7CisJCQkJCQliX2Vycm9yID0KKwkJ CQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwKKwkJCQkJCQkJCQkgICJvcC4l ZC5qc29uZXhwcl9lcnJvciIsIG9wbm8pOworCQkJCQkJYl9yZXN1bHRfY29lcmNpb24gPQorCQkJ CQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVk Lmpzb25leHByX3Jlc3VsdF9jb2VyY2lvbiIsIG9wbm8pOworCQkJCQkJaWYgKGpzZXN0YXRlLT5u dW1faXRlbV9jb2VyY2lvbnMgPiAwKQorCQkJCQkJeworCQkJCQkJCWJfaXRlbV9jb2VyY2lvbnMg PSBwYWxsb2Moc2l6ZW9mKExMVk1CYXNpY0Jsb2NrUmVmKSAqCisJCQkJCQkJCQkJCQkJICBqc2Vz dGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25zKTsKKwkJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3Rh dGUtPm51bV9pdGVtX2NvZXJjaW9uczsgaSsrKQorCQkJCQkJCXsKKwkJCQkJCQkJYl9pdGVtX2Nv ZXJjaW9uc1tpXSA9CisJCQkJCQkJCQlsX2JiX2JlZm9yZV92KG9wYmxvY2tzW29wbm8gKyAxXSwK KwkJCQkJCQkJCQkJCSAgIm9wLiVkLmpzb25leHByX2l0ZW1fY29lcmNpb24uJWQiLAorCQkJCQkJ CQkJCQkJICBvcG5vLCBpKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQliX2RvbmUgPQorCQkJ CQkJCWxfYmJfYmVmb3JlX3Yob3BibG9ja3Nbb3BubyArIDFdLAorCQkJCQkJCQkJCSAgIm9wLiVk Lmpzb25leHByX2RvbmUiLCBvcG5vKTsKKworCQkJCQkJdl9zd2l0Y2ggPSBMTFZNQnVpbGRTd2l0 Y2goYiwKKwkJCQkJCQkJCQkJCSAgIHZfcmV0LAorCQkJCQkJCQkJCQkJICAgYl9kb25lLAorCQkJ CQkJCQkJCQkJICAganNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9ucyArIDMpOworCQkJCQkJLyog UmV0dXJuZWQganNlc3RhdGUtPmp1bXBfZW1wdHk/ICovCisJCQkJCQlpZiAoanNlc3RhdGUtPmp1 bXBfZW1wdHkgPj0gMCkKKwkJCQkJCXsKKwkJCQkJCQl2X2p1bXBfZW1wdHkgPSBsX2ludDMyX2Nv bnN0KGxjLCBqc2VzdGF0ZS0+anVtcF9lbXB0eSk7CisJCQkJCQkJTExWTUFkZENhc2Uodl9zd2l0 Y2gsIHZfanVtcF9lbXB0eSwgYl9lbXB0eSk7CisJCQkJCQl9CisJCQkJCQkvKiBSZXR1cm5lZCBq c2VzdGF0ZS0+anVtcF9lcnJvcj8gKi8KKwkJCQkJCWlmIChqc2VzdGF0ZS0+anVtcF9lcnJvciA+ PSAwKQorCQkJCQkJeworCQkJCQkJCXZfanVtcF9lcnJvciA9IGxfaW50MzJfY29uc3QobGMsIGpz ZXN0YXRlLT5qdW1wX2Vycm9yKTsKKwkJCQkJCQlMTFZNQWRkQ2FzZSh2X3N3aXRjaCwgdl9qdW1w X2Vycm9yLCBiX2Vycm9yKTsKKwkJCQkJCX0KKwkJCQkJCS8qIFJldHVybmVkIGpzZXN0YXRlLT5q dW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uPyAqLworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2V2 YWxfcmVzdWx0X2NvZXJjaW9uID49IDApCisJCQkJCQl7CisJCQkJCQkJdl9qdW1wX2NvZXJjaW9u ID0gbF9pbnQzMl9jb25zdChsYywganNlc3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb24p OworCQkJCQkJCUxMVk1BZGRDYXNlKHZfc3dpdGNoLCB2X2p1bXBfY29lcmNpb24sIGJfcmVzdWx0 X2NvZXJjaW9uKTsKKwkJCQkJCX0KKworCQkJCQkJLyoKKwkJCQkJCSAqIFJldHVybmVkIG9uZSBv ZgorCQkJCQkJICoganNlc3RhdGUtPmV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wc1tdPworCQkJCQkJ ICovCisJCQkJCQlmb3IgKGkgPSAwOyBpIDwganNlc3RhdGUtPm51bV9pdGVtX2NvZXJjaW9uczsg aSsrKQorCQkJCQkJeworCQkJCQkJCWlmIChqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1 bXBzW2ldID49IDApCisJCQkJCQkJeworCQkJCQkJCQl2X2p1bXBfY29lcmNpb24gPSBsX2ludDMy X2NvbnN0KGxjLCBqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9uX2p1bXBzW2ldKTsKKwkJCQkJ CQkJTExWTUFkZENhc2Uodl9zd2l0Y2gsIHZfanVtcF9jb2VyY2lvbiwgYl9pdGVtX2NvZXJjaW9u c1tpXSk7CisJCQkJCQkJfQorCQkJCQkJfQorCisJCQkJCQkvKiBPTiBFTVBUWSBjb2RlICovCisJ CQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRFbmQoYiwgYl9lbXB0eSk7CisJCQkJCQlpZiAoanNl c3RhdGUtPmp1bXBfZW1wdHkgPj0gMCkKKwkJCQkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tq c2VzdGF0ZS0+anVtcF9lbXB0eV0pOworCQkJCQkJZWxzZQorCQkJCQkJCUxMVk1CdWlsZFVucmVh Y2hhYmxlKGIpOworCQkJCQkJLyogT04gRVJST1IgY29kZSAqLworCQkJCQkJTExWTVBvc2l0aW9u QnVpbGRlckF0RW5kKGIsIGJfZXJyb3IpOworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2Vycm9y ID49IDApCisJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNlc3RhdGUtPmp1bXBfZXJy b3JdKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlMTFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJ CS8qIHJlc3VsdF9jb2VyY2lvbiBjb2RlICovCisJCQkJCQlMTFZNUG9zaXRpb25CdWlsZGVyQXRF bmQoYiwgYl9yZXN1bHRfY29lcmNpb24pOworCQkJCQkJaWYgKGpzZXN0YXRlLT5qdW1wX2V2YWxf cmVzdWx0X2NvZXJjaW9uID49IDApCisJCQkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3NbanNl c3RhdGUtPmp1bXBfZXZhbF9yZXN1bHRfY29lcmNpb25dKTsKKwkJCQkJCWVsc2UKKwkJCQkJCQlM TFZNQnVpbGRVbnJlYWNoYWJsZShiKTsKKwkJCQkJCS8qIGl0ZW0gY29lcmNpb24gY29kZSBibG9j a3MgKi8KKwkJCQkJCWZvciAoaSA9IDA7IGkgPCBqc2VzdGF0ZS0+bnVtX2l0ZW1fY29lcmNpb25z OyBpKyspCisJCQkJCQl7CisJCQkJCQkJTExWTVBvc2l0aW9uQnVpbGRlckF0RW5kKGIsIGJfaXRl bV9jb2VyY2lvbnNbaV0pOworCQkJCQkJCWlmIChqc2VzdGF0ZS0+ZXZhbF9pdGVtX2NvZXJjaW9u X2p1bXBzW2ldID49IDApCisJCQkJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW2pzZXN0YXRl LT5ldmFsX2l0ZW1fY29lcmNpb25fanVtcHNbaV1dKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCUxM Vk1CdWlsZFVucmVhY2hhYmxlKGIpOworCQkJCQkJfQorCisJCQkJCQlMTFZNUG9zaXRpb25CdWls ZGVyQXRFbmQoYiwgYl9kb25lKTsKKwkJCQkJfQorCisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxv Y2tzW29wbm8gKyAxXSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBFRU9QX0pTT05F WFBSX0NPRVJDSU9OOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbEpzb25D b2VyY2lvbiIsCisJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKworCQkJCUxMVk1C dWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgRUVP UF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0g6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwg IkV4ZWNFdmFsSnNvbkNvZXJjaW9uRmluaXNoIiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3ApOworCisJ CQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJ Y2FzZSBFRU9QX0FHR1JFRjoKIAkJCQl7CiAJCQkJCUxMVk1WYWx1ZVJlZiB2X2FnZ25vOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IDQ3YzlkYWY0MDIuLmVkZDFlMTY3OWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9z cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE3Miw2ICsxNzIsOSBAQCB2 b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFhtbEV4cHIsCiAJRXhl Y0V2YWxKc29uQ29uc3RydWN0b3IsCiAJRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUsCisJRXhlY0V2 YWxKc29uQ29lcmNpb24sCisJRXhlY0V2YWxKc29uQ29lcmNpb25GaW5pc2gsCisJRXhlY0V2YWxK c29uRXhwclBhdGgsCiAJTWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHlJbnRlcm5hbCwKIAlzbG90 X2dldG1pc3NpbmdhdHRycywKIAlzbG90X2dldHNvbWVhdHRyc19pbnQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5j cy5jCmluZGV4IGEwMjMzMmExZWMuLjA5YTA1YTAzNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBA IC04NTcsNiArODU3LDI0IEBAIG1ha2VKc29uVmFsdWVFeHByKEV4cHIgKnJhd19leHByLCBFeHBy ICpmb3JtYXR0ZWRfZXhwciwKIAlyZXR1cm4ganZlOwogfQogCisvKgorICogbWFrZUpzb25CZWhh dmlvciAtCisgKgkgIGNyZWF0ZXMgYSBKc29uQmVoYXZpb3Igbm9kZQorICovCitKc29uQmVoYXZp b3IgKgorbWFrZUpzb25CZWhhdmlvcihKc29uQmVoYXZpb3JUeXBlIHR5cGUsIE5vZGUgKmV4cHIs IEpzb25Db2VyY2lvbiAqY29lcmNpb24sCisJCQkJIGludCBsb2NhdGlvbikKK3sKKwlKc29uQmVo YXZpb3IgKmJlaGF2aW9yID0gbWFrZU5vZGUoSnNvbkJlaGF2aW9yKTsKKworCWJlaGF2aW9yLT5i dHlwZSA9IHR5cGU7CisJYmVoYXZpb3ItPmV4cHIgPSBleHByOworCWJlaGF2aW9yLT5jb2VyY2lv biA9IGNvZXJjaW9uOworCWJlaGF2aW9yLT5sb2NhdGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJu IGJlaGF2aW9yOworfQorCiAvKgogICogbWFrZUpzb25LZXlWYWx1ZSAtCiAgKgkgIGNyZWF0ZXMg YSBKc29uS2V5VmFsdWUgbm9kZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1 bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCBlMWE1YmM3ZTk1Li40 YTNkOTZiMjk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysg Yi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpAQCAtMjM0LDYgKzIzNCwzMyBAQCBleHBy VHlwZShjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJdHlw ZSA9IEJPT0xPSUQ7CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJCWNv bnN0IEpzb25FeHByICpqZXhwciA9IChjb25zdCBKc29uRXhwciAqKSBleHByOworCisJCQkJdHlw ZSA9IGpleHByLT5yZXR1cm5pbmctPnR5cGlkOworCQkJCWJyZWFrOworCQkJfQorCQljYXNlIFRf SnNvbkNvZXJjaW9uOgorCQkJeworCQkJCWNvbnN0IEpzb25Db2VyY2lvbiAqY29lcmNpb24gPSAo Y29uc3QgSnNvbkNvZXJjaW9uICopIGV4cHI7CisKKwkJCQl0eXBlID0gY29lcmNpb24tPnRhcmdl dHR5cGU7CisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgVF9Kc29uSXRlbUNvZXJjaW9uOgorCQkJ dHlwZSA9IGV4cHJUeXBlKCgoSnNvbkl0ZW1Db2VyY2lvbiAqKSBleHByKS0+Y29lcmNpb24pOwor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJY29uc3QgSnNvbkJl aGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhwcjsKKworCQkJCWlm IChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXR5cGUgPSBleHByVHlwZSgoTm9kZSAqKSBiZWhh dmlvci0+Y29lcmNpb24pOworCQkJCWVsc2UKKwkJCQkJdHlwZSA9IGV4cHJUeXBlKGJlaGF2aW9y LT5leHByKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJY2FzZSBUX051bGxUZXN0OgogCQkJdHlwZSA9 IEJPT0xPSUQ7CiAJCQlicmVhazsKQEAgLTQ5MSw4ICs1MTgsMzIgQEAgZXhwclR5cG1vZChjb25z dCBOb2RlICpleHByKQogCQkJcmV0dXJuICgoY29uc3QgU1FMVmFsdWVGdW5jdGlvbiAqKSBleHBy KS0+dHlwbW9kOwogCQljYXNlIFRfSnNvblZhbHVlRXhwcjoKIAkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopICgoY29uc3QgSnNvblZhbHVlRXhwciAqKSBleHByKS0+Zm9ybWF0dGVkX2V4cHIp OwotCQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKLQkJCXJldHVybiAoKGNvbnN0IEpzb25D b25zdHJ1Y3RvckV4cHIgKikgZXhwciktPnJldHVybmluZy0+dHlwbW9kOworCQljYXNlIFRfSnNv bkV4cHI6CisJCQl7CisJCQkJY29uc3QgSnNvbkV4cHIgKmpleHByID0gKGNvbnN0IEpzb25FeHBy ICopIGV4cHI7CisKKwkJCQlyZXR1cm4gamV4cHItPnJldHVybmluZy0+dHlwbW9kOworCQkJfQor CQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQl7CisJCQkJY29uc3QgSnNvbkNv ZXJjaW9uICpjb2VyY2lvbiA9IChjb25zdCBKc29uQ29lcmNpb24gKikgZXhwcjsKKworCQkJCXJl dHVybiBjb2VyY2lvbi0+dGFyZ2V0dHlwbW9kOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uSXRlbUNvZXJjaW9uOgorCQkJcmV0dXJuIGV4cHJUeXBtb2QoKChKc29uSXRlbUNvZXJjaW9u ICopIGV4cHIpLT5jb2VyY2lvbik7CisJCWNhc2UgVF9Kc29uQmVoYXZpb3I6CisJCQl7CisJCQkJ Y29uc3QgSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChjb25zdCBKc29uQmVoYXZpb3IgKikgZXhw cjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCXJldHVybiBleHByVHlwbW9k KChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gZXhw clR5cG1vZChiZWhhdmlvci0+ZXhwcik7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0NvZXJj ZVRvRG9tYWluOgogCQkJcmV0dXJuICgoY29uc3QgQ29lcmNlVG9Eb21haW4gKikgZXhwciktPnJl c3VsdHR5cG1vZDsKIAkJY2FzZSBUX0NvZXJjZVRvRG9tYWluVmFsdWU6CkBAIC05NjksNiArMTAy MCwyNyBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCQkvKiBJUyBKU09OJ3Mg cmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJCQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNv IGl0IGhhcyBubyBjb2xsYXRpb24gKi8KIAkJCWJyZWFrOworCQljYXNlIFRfSnNvbkV4cHI6CisJ CQljb2xsID0gZXhwckNvbGxhdGlvbigoKEpzb25FeHByICopIGV4cHIpLT5yZXN1bHRfY29lcmNp b24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQ29lcmNpb246CisJCQljb2xsID0gKChjb25z dCBKc29uQ29lcmNpb24gKikgZXhwciktPmNvbGxhdGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFRf SnNvbkl0ZW1Db2VyY2lvbjoKKwkJCWNvbGwgPSBleHByQ29sbGF0aW9uKCgoSnNvbkl0ZW1Db2Vy Y2lvbiAqKSBleHByKS0+Y29lcmNpb24pOworCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uQmVoYXZp b3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVoYXZpb3IgKikg ZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+Y29lcmNpb24pCisJCQkJCWNvbGwgPSBleHByQ29s bGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lvbik7CisJCQkJZWxzZSBpZiAoYmVoYXZp b3ItPmV4cHIpCisJCQkJCWNvbGwgPSBleHByQ29sbGF0aW9uKGJlaGF2aW9yLT5leHByKTsKKwkJ CQllbHNlCisJCQkJCWNvbGwgPSBJbnZhbGlkT2lkOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2Ug VF9OdWxsVGVzdDoKIAkJCS8qIE51bGxUZXN0J3MgcmVzdWx0IGlzIGJvb2xlYW4gLi4uICovCiAJ CQljb2xsID0gSW52YWxpZE9pZDsJLyogLi4uIHNvIGl0IGhhcyBubyBjb2xsYXRpb24gKi8KQEAg LTEyMDUsNiArMTI3Nyw0NCBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xs YXRpb24pCiAJCWNhc2UgVF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlBc3NlcnQoIU9pZElzVmFsaWQo Y29sbGF0aW9uKSk7IC8qIHJlc3VsdCBpcyBhbHdheXMgYm9vbGVhbiAqLwogCQkJYnJlYWs7CisJ CWNhc2UgVF9Kc29uRXhwcjoKKwkJCXsKKwkJCQlKc29uRXhwciAgICpqZXhwciA9IChKc29uRXhw ciAqKSBleHByOworCisJCQkJaWYgKGpleHByLT5yZXN1bHRfY29lcmNpb24pCisJCQkJCWV4cHJT ZXRDb2xsYXRpb24oKE5vZGUgKikgamV4cHItPnJlc3VsdF9jb2VyY2lvbiwgY29sbGF0aW9uKTsK KwkJCQllbHNlCisJCQkJCUFzc2VydCghT2lkSXNWYWxpZChjb2xsYXRpb24pKTsgLyogcmVzdWx0 IGlzIGFsd2F5cyBhCisJCQkJCQkJCQkJCQkJICoganNvbltiXSB0eXBlICovCisJCQl9CisJCQli cmVhazsKKwkJY2FzZSBUX0pzb25JdGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2Vy Y2lvbiAqaXRlbV9jb2VyY2lvbiA9IChKc29uSXRlbUNvZXJjaW9uICopIGV4cHI7CisKKwkJCQlp ZiAoaXRlbV9jb2VyY2lvbi0+Y29lcmNpb24pCisJCQkJCWV4cHJTZXRDb2xsYXRpb24oaXRlbV9j b2VyY2lvbi0+Y29lcmNpb24sIGNvbGxhdGlvbik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBU X0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpzb25D b2VyY2lvbiAqKSBleHByOworCisJCQkJaWYgKGNvZXJjaW9uLT5jYXN0X2V4cHIpCisJCQkJCWV4 cHJTZXRDb2xsYXRpb24oY29lcmNpb24tPmNhc3RfZXhwciwgY29sbGF0aW9uKTsKKwkJCQljb2Vy Y2lvbi0+Y29sbGF0aW9uID0gY29sbGF0aW9uOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQl7CisJCQkJSnNvbkJlaGF2aW9yICpiZWhhdmlvciA9IChKc29uQmVo YXZpb3IgKikgZXhwcjsKKworCQkJCWlmIChiZWhhdmlvci0+ZXhwcikKKwkJCQkJZXhwclNldENv bGxhdGlvbihiZWhhdmlvci0+ZXhwciwgY29sbGF0aW9uKTsKKwkJCQlpZiAoYmVoYXZpb3ItPmNv ZXJjaW9uKQorCQkJCQlleHByU2V0Q29sbGF0aW9uKChOb2RlICopIGJlaGF2aW9yLT5jb2VyY2lv biwgY29sbGF0aW9uKTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQkv KiBOdWxsVGVzdCdzIHJlc3VsdCBpcyBib29sZWFuIC4uLiAqLwogCQkJQXNzZXJ0KCFPaWRJc1Zh bGlkKGNvbGxhdGlvbikpOyAvKiAuLi4gc28gbmV2ZXIgc2V0IGEgY29sbGF0aW9uICovCkBAIC0x NTA4LDYgKzE2MTgsMTggQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2Ug VF9Kc29uSXNQcmVkaWNhdGU6CiAJCQlsb2MgPSAoKGNvbnN0IEpzb25Jc1ByZWRpY2F0ZSAqKSBl eHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX0pzb25FeHByOgorCQkJeworCQkJ CWNvbnN0IEpzb25FeHByICpqc2V4cHIgPSAoY29uc3QgSnNvbkV4cHIgKikgZXhwcjsKKworCQkJ CS8qIGNvbnNpZGVyIGJvdGggZnVuY3Rpb24gbmFtZSBhbmQgbGVmdG1vc3QgYXJnICovCisJCQkJ bG9jID0gbGVmdG1vc3RMb2MoanNleHByLT5sb2NhdGlvbiwKKwkJCQkJCQkJICBleHByTG9jYXRp b24oanNleHByLT5mb3JtYXR0ZWRfZXhwcikpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9K c29uQmVoYXZpb3I6CisJCQlsb2MgPSBleHByTG9jYXRpb24oKChKc29uQmVoYXZpb3IgKikgZXhw ciktPmV4cHIpOworCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXsKIAkJCQljb25z dCBOdWxsVGVzdCAqbmV4cHIgPSAoY29uc3QgTnVsbFRlc3QgKikgZXhwcjsKQEAgLTIyNjAsNiAr MjM4Miw1MSBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCWJy ZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0dXJuIFdBTEsoKChKc29uSXNQ cmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJ SnNvbkV4cHIgICAqamV4cHIgPSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGpl eHByLT5mb3JtYXR0ZWRfZXhwcikpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpl eHByLT5yZXN1bHRfY29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+aXRlbV9jb2VyY2lvbnMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhq ZXhwci0+cGFzc2luZ192YWx1ZXMpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkvKiB3ZSBhc3N1 bWUgd2Fsa2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBwYXNzaW5nX25hbWVzICovCisJCQkJaWYgKFdB TEsoamV4cHItPm9uX2VtcHR5KSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoamV4 cHItPm9uX2Vycm9yKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2Fz ZSBUX0pzb25Db2VyY2lvbjoKKwkJCXsKKwkJCQlKc29uQ29lcmNpb24gKmNvZXJjaW9uID0gKEpz b25Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoY29lcmNpb24tPmNhc3RfZXhwcikp CisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgVF9Kc29uSXRlbUNv ZXJjaW9uOgorCQkJeworCQkJCUpzb25JdGVtQ29lcmNpb24gKml0ZW1fY29lcmNpb24gPSAoSnNv bkl0ZW1Db2VyY2lvbiAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoaXRlbV9jb2VyY2lvbi0+Y29l cmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFRfSnNv bkJlaGF2aW9yOgorCQkJeworCQkJCUpzb25CZWhhdmlvciAqYmVoYXZpb3IgPSAoSnNvbkJlaGF2 aW9yICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhiZWhhdmlvci0+ZXhwcikpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChXQUxLKGJlaGF2aW9yLT5jb2VyY2lvbikpCisJCQkJCXJldHVybiB0 cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9OdWxsVGVzdDoKIAkJCXJldHVybiBXQUxL KCgoTnVsbFRlc3QgKikgbm9kZSktPmFyZyk7CiAJCWNhc2UgVF9Cb29sZWFuVGVzdDoKQEAgLTMy NjMsNiArMzQzMCw1MyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUs CiAKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KKwkJY2FzZSBUX0pzb25FeHBy OgorCQkJeworCQkJCUpzb25FeHByICAgKmpleHByID0gKEpzb25FeHByICopIG5vZGU7CisJCQkJ SnNvbkV4cHIgICAqbmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGpleHByLCBKc29u RXhwcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnBhdGhfc3BlYywgamV4cHItPnBhdGhfc3BlYywg Tm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+Zm9ybWF0dGVkX2V4cHIsIGpleHByLT5mb3Jt YXR0ZWRfZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmVzdWx0X2NvZXJjaW9u LCBqZXhwci0+cmVzdWx0X2NvZXJjaW9uLCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5p dGVtX2NvZXJjaW9ucywgamV4cHItPml0ZW1fY29lcmNpb25zLCBMaXN0ICopOworCQkJCU1VVEFU RShuZXdub2RlLT5wYXNzaW5nX3ZhbHVlcywgamV4cHItPnBhc3NpbmdfdmFsdWVzLCBMaXN0ICop OworCQkJCS8qIGFzc3VtZSBtdXRhdG9yIGRvZXMgbm90IGNhcmUgYWJvdXQgcGFzc2luZ19uYW1l cyAqLworCQkJCU1VVEFURShuZXdub2RlLT5vbl9lbXB0eSwgamV4cHItPm9uX2VtcHR5LCBKc29u QmVoYXZpb3IgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPm9uX2Vycm9yLCBqZXhwci0+b25fZXJy b3IsIEpzb25CZWhhdmlvciAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0K KwkJCWJyZWFrOworCQljYXNlIFRfSnNvbkNvZXJjaW9uOgorCQkJeworCQkJCUpzb25Db2VyY2lv biAqY29lcmNpb24gPSAoSnNvbkNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkNvZXJjaW9uICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgY29lcmNpb24sIEpzb25Db2VyY2lvbik7 CisJCQkJTVVUQVRFKG5ld25vZGUtPmNhc3RfZXhwciwgY29lcmNpb24tPmNhc3RfZXhwciwgTm9k ZSAqKTsKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJCX0KKwkJY2FzZSBUX0pzb25J dGVtQ29lcmNpb246CisJCQl7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqaXRlbV9jb2VyY2lvbiA9 IChKc29uSXRlbUNvZXJjaW9uICopIG5vZGU7CisJCQkJSnNvbkl0ZW1Db2VyY2lvbiAqbmV3bm9k ZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGl0ZW1fY29lcmNpb24sIEpzb25JdGVtQ29lcmNp b24pOworCQkJCU1VVEFURShuZXdub2RlLT5jb2VyY2lvbiwgaXRlbV9jb2VyY2lvbi0+Y29lcmNp b24sIE5vZGUgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVh azsKKwkJY2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmJlaGF2 aW9yID0gKEpzb25CZWhhdmlvciAqKSBub2RlOworCQkJCUpzb25CZWhhdmlvciAqbmV3bm9kZTsK KworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGJlaGF2aW9yLCBKc29uQmVoYXZpb3IpOworCQkJCU1V VEFURShuZXdub2RlLT5leHByLCBiZWhhdmlvci0+ZXhwciwgTm9kZSAqKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+Y29lcmNpb24sIGJlaGF2aW9yLT5jb2VyY2lvbiwgSnNvbkNvZXJjaW9uICopOwor CQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9O dWxsVGVzdDoKIAkJCXsKIAkJCQlOdWxsVGVzdCAgICpudGVzdCA9IChOdWxsVGVzdCAqKSBub2Rl OwpAQCAtMzk1MSw2ICs0MTY1LDM2IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwo Tm9kZSAqbm9kZSwKIAkJCWJyZWFrOwogCQljYXNlIFRfSnNvbklzUHJlZGljYXRlOgogCQkJcmV0 dXJuIFdBTEsoKChKc29uSXNQcmVkaWNhdGUgKikgbm9kZSktPmV4cHIpOworCQljYXNlIFRfSnNv bkFyZ3VtZW50OgorCQkJcmV0dXJuIFdBTEsoKChKc29uQXJndW1lbnQgKikgbm9kZSktPnZhbCk7 CisJCWNhc2UgVF9Kc29uRnVuY0V4cHI6CisJCQl7CisJCQkJSnNvbkZ1bmNFeHByICpqZmUgPSAo SnNvbkZ1bmNFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhqZmUtPmNvbnRleHRfaXRlbSkp CisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKGpmZS0+cGF0aHNwZWMpKQorCQkJCQly ZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhqZmUtPnBhc3NpbmcpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCQlpZiAoamZlLT5vdXRwdXQgJiYgV0FMSyhqZmUtPm91dHB1dCkpCisJCQkJCXJldHVy biB0cnVlOworCQkJCWlmIChqZmUtPm9uX2VtcHR5KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlp ZiAoamZlLT5vbl9lcnJvcikKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJ Y2FzZSBUX0pzb25CZWhhdmlvcjoKKwkJCXsKKwkJCQlKc29uQmVoYXZpb3IgKmpiID0gKEpzb25C ZWhhdmlvciAqKSBub2RlOworCisJCQkJaWYgKFdBTEsoamItPmV4cHIpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoV0FMSyhqYi0+Y29lcmNpb24pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfTnVsbFRlc3Q6CiAJCQlyZXR1cm4gV0FMSygoKE51bGxU ZXN0ICopIG5vZGUpLT5hcmcpOwogCQljYXNlIFRfQm9vbGVhblRlc3Q6CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvY29zdHNpemUuYwppbmRleCA4Yjc2ZTk4NTI5Li40Y2Q2MDZjYTczIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAgLTQ4NzksNyArNDg3OSw4IEBAIGNvc3Rf cXVhbF9ldmFsX3dhbGtlcihOb2RlICpub2RlLCBjb3N0X3F1YWxfZXZhbF9jb250ZXh0ICpjb250 ZXh0KQogCQkJIElzQShub2RlLCBTUUxWYWx1ZUZ1bmN0aW9uKSB8fAogCQkJIElzQShub2RlLCBY bWxFeHByKSB8fAogCQkJIElzQShub2RlLCBDb2VyY2VUb0RvbWFpbikgfHwKLQkJCSBJc0Eobm9k ZSwgTmV4dFZhbHVlRXhwcikpCisJCQkgSXNBKG5vZGUsIE5leHRWYWx1ZUV4cHIpIHx8CisJCQkg SXNBKG5vZGUsIEpzb25FeHByKSkKIAl7CiAJCS8qIFRyZWF0IGFsbCB0aGVzZSBhcyBoYXZpbmcg Y29zdCAxICovCiAJCWNvbnRleHQtPnRvdGFsLnBlcl90dXBsZSArPSBjcHVfb3BlcmF0b3JfY29z dDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYwppbmRleCBlZGMyNWQ3MTJlLi5iZWRm MWY1OTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCkBAIC01Myw2ICs1Myw3 IEBACiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uLmgi CiAjaW5jbHVkZSAidXRpbHMvanNvbmIuaCIKKyNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgog I2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTQxNyw2ICs0MTgsMjUgQEAgY29udGFp bl9tdXRhYmxlX2Z1bmN0aW9uc193YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAkJ LyogQ2hlY2sgYWxsIHN1Ym5vZGVzICovCiAJfQogCisJaWYgKElzQShub2RlLCBKc29uRXhwcikp CisJeworCQlKc29uRXhwciAgICpqZXhwciA9IGNhc3ROb2RlKEpzb25FeHByLCBub2RlKTsKKwkJ Q29uc3QJICAgKmNuc3Q7CisKKwkJaWYgKCFJc0EoamV4cHItPnBhdGhfc3BlYywgQ29uc3QpKQor CQkJcmV0dXJuIHRydWU7CisKKwkJY25zdCA9IGNhc3ROb2RlKENvbnN0LCBqZXhwci0+cGF0aF9z cGVjKTsKKworCQlBc3NlcnQoY25zdC0+Y29uc3R0eXBlID09IEpTT05QQVRIT0lEKTsKKwkJaWYg KGNuc3QtPmNvbnN0aXNudWxsKQorCQkJcmV0dXJuIGZhbHNlOworCisJCWlmIChqc3BJc011dGFi bGUoRGF0dW1HZXRKc29uUGF0aFAoY25zdC0+Y29uc3R2YWx1ZSksCisJCQkJCQkgamV4cHItPnBh c3NpbmdfbmFtZXMsIGpleHByLT5wYXNzaW5nX3ZhbHVlcykpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKIAlpZiAoSXNBKG5vZGUsIFNRTFZhbHVlRnVuY3Rpb24pKQogCXsKIAkJLyogYWxsIHZhcmlh bnRzIG9mIFNRTFZhbHVlRnVuY3Rpb24gYXJlIHN0YWJsZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMTMw ZjdmYzdjMy4uZTkwMGVkZmI4YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC02NTIsMTAgKzY1MiwxOSBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCWpzb25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKIAkJ CQlqc29uX25hbWVfYW5kX3ZhbHVlCiAJCQkJanNvbl9hZ2dyZWdhdGVfZnVuYworCQkJCWpzb25f YXJndW1lbnQKKwkJCQlqc29uX2JlaGF2aW9yCisJCQkJanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0 CiAldHlwZSA8bGlzdD4JanNvbl9uYW1lX2FuZF92YWx1ZV9saXN0CiAJCQkJanNvbl92YWx1ZV9l eHByX2xpc3QKIAkJCQlqc29uX2FycmF5X2FnZ3JlZ2F0ZV9vcmRlcl9ieV9jbGF1c2Vfb3B0Ci0l dHlwZSA8aXZhbD4JanNvbl9wcmVkaWNhdGVfdHlwZV9jb25zdHJhaW50CisJCQkJanNvbl9hcmd1 bWVudHMKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJCQlqc29uX3Bhc3NpbmdfY2xh dXNlX29wdAorJXR5cGUgPGl2YWw+CWpzb25fYmVoYXZpb3JfdHlwZQorCQkJCWpzb25fcHJlZGlj YXRlX3R5cGVfY29uc3RyYWludAorCQkJCWpzb25fcXVvdGVzX2NsYXVzZV9vcHQKKwkJCQlqc29u X3dyYXBwZXJfYmVoYXZpb3IKICV0eXBlIDxib29sZWFuPglqc29uX2tleV91bmlxdWVuZXNzX2Nv bnN0cmFpbnRfb3B0CiAJCQkJanNvbl9vYmplY3RfY29uc3RydWN0b3JfbnVsbF9jbGF1c2Vfb3B0 CiAJCQkJanNvbl9hcnJheV9jb25zdHJ1Y3Rvcl9udWxsX2NsYXVzZV9vcHQKQEAgLTY5Niw3ICs3 MDUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCUNBQ0hFIENBTEwgQ0FMTEVEIENBU0NB REUgQ0FTQ0FERUQgQ0FTRSBDQVNUIENBVEFMT0dfUCBDSEFJTiBDSEFSX1AKIAlDSEFSQUNURVIg Q0hBUkFDVEVSSVNUSUNTIENIRUNLIENIRUNLUE9JTlQgQ0xBU1MgQ0xPU0UKIAlDTFVTVEVSIENP QUxFU0NFIENPTExBVEUgQ09MTEFUSU9OIENPTFVNTiBDT0xVTU5TIENPTU1FTlQgQ09NTUVOVFMg Q09NTUlUCi0JQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05GSUdVUkFUSU9O IENPTkZMSUNUCisJQ09NTUlUVEVEIENPTVBSRVNTSU9OIENPTkNVUlJFTlRMWSBDT05ESVRJT05B TCBDT05GSUdVUkFUSU9OIENPTkZMSUNUCiAJQ09OTkVDVElPTiBDT05TVFJBSU5UIENPTlNUUkFJ TlRTIENPTlRFTlRfUCBDT05USU5VRV9QIENPTlZFUlNJT05fUCBDT1BZCiAJQ09TVCBDUkVBVEUg Q1JPU1MgQ1NWIENVQkUgQ1VSUkVOVF9QCiAJQ1VSUkVOVF9DQVRBTE9HIENVUlJFTlRfREFURSBD VVJSRU5UX1JPTEUgQ1VSUkVOVF9TQ0hFTUEKQEAgLTcwNyw4ICs3MTYsOCBAQCBzdGF0aWMgTm9k ZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywg Tm9kZSAqcXVlcnkpOwogCURFVEFDSCBESUNUSU9OQVJZIERJU0FCTEVfUCBESVNDQVJEIERJU1RJ TkNUIERPIERPQ1VNRU5UX1AgRE9NQUlOX1AKIAlET1VCTEVfUCBEUk9QCiAKLQlFQUNIIEVMU0Ug RU5BQkxFX1AgRU5DT0RJTkcgRU5DUllQVEVEIEVORF9QIEVOVU1fUCBFU0NBUEUgRVZFTlQgRVhD RVBUCi0JRVhDTFVERSBFWENMVURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4g RVhQUkVTU0lPTgorCUVBQ0ggRUxTRSBFTVBUWV9QIEVOQUJMRV9QIEVOQ09ESU5HIEVOQ1JZUFRF RCBFTkRfUCBFTlVNX1AgRVJST1JfUCBFU0NBUEUKKwlFVkVOVCBFWENFUFQgRVhDTFVERSBFWENM VURJTkcgRVhDTFVTSVZFIEVYRUNVVEUgRVhJU1RTIEVYUExBSU4gRVhQUkVTU0lPTgogCUVYVEVO U0lPTiBFWFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRDSCBGSUxURVIgRklO QUxJWkUgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKQEAgLTcyMywxMCArNzMyLDEwIEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJSU5ORVJfUCBJTk9VVCBJTlBVVF9QIElOU0VOU0lU SVZFIElOU0VSVCBJTlNURUFEIElOVF9QIElOVEVHRVIKIAlJTlRFUlNFQ1QgSU5URVJWQUwgSU5U TyBJTlZPS0VSIElTIElTTlVMTCBJU09MQVRJT04KIAotCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpT T05fQVJSQVlBR0cgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKLQlKU09OX1NDQUxBUiBKU09O X1NFUklBTElaRQorCUpPSU4gSlNPTiBKU09OX0FSUkFZIEpTT05fQVJSQVlBR0cgSlNPTl9FWElT VFMgSlNPTl9PQkpFQ1QgSlNPTl9PQkpFQ1RBR0cKKwlKU09OX1FVRVJZIEpTT05fU0NBTEFSIEpT T05fU0VSSUFMSVpFIEpTT05fVkFMVUUKIAotCUtFWSBLRVlTCisJS0VFUCBLRVkgS0VZUwogCiAJ TEFCRUwgTEFOR1VBR0UgTEFSR0VfUCBMQVNUX1AgTEFURVJBTF9QCiAJTEVBRElORyBMRUFLUFJP T0YgTEVBU1QgTEVGVCBMRVZFTCBMSUtFIExJTUlUIExJU1RFTiBMT0FEIExPQ0FMCkBAIC03NDAs NyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJl bG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlOT1QgTk9USElORyBOT1RJRlkg Tk9UTlVMTCBOT1dBSVQgTlVMTF9QIE5VTExJRgogCU5VTExTX1AgTlVNRVJJQwogCi0JT0JKRUNU X1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTiBPTkxZIE9QRVJBVE9SIE9QVElPTiBPUFRJT05T IE9SCisJT0JKRUNUX1AgT0YgT0ZGIE9GRlNFVCBPSURTIE9MRCBPTUlUIE9OIE9OTFkgT1BFUkFU T1IgT1BUSU9OIE9QVElPTlMgT1IKIAlPUkRFUiBPUkRJTkFMSVRZIE9USEVSUyBPVVRfUCBPVVRF Ul9QCiAJT1ZFUiBPVkVSTEFQUyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIApAQCAt NzQ5LDcgKzc1OCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJUE9TSVRJT04gUFJFQ0VE SU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKIAlQUklPUiBQ UklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJPR1JBTSBQVUJMSUNB VElPTgogCi0JUVVPVEUKKwlRVU9URSBRVU9URVMKIAogCVJBTkdFIFJFQUQgUkVBTCBSRUFTU0lH TiBSRUNIRUNLIFJFQ1VSU0lWRSBSRUZfUCBSRUZFUkVOQ0VTIFJFRkVSRU5DSU5HCiAJUkVGUkVT SCBSRUlOREVYIFJFTEFUSVZFX1AgUkVMRUFTRSBSRU5BTUUgUkVQRUFUQUJMRSBSRVBMQUNFIFJF UExJQ0EKQEAgLTc2MCw3ICs3NjksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNFUVVF TkNFIFNFUVVFTkNFUwogCVNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIg U0VUIFNFVFMgU0VUT0YgU0hBUkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQg U05BUFNIT1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCi0JU1RBUlQgU1RBVEVNRU5U IFNUQVRJU1RJQ1MgU1RESU4gU1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AK KwlTVEFSVCBTVEFURU1FTlQgU1RBVElTVElDUyBTVERJTiBTVERPVVQgU1RPUkFHRSBTVE9SRUQg U1RSSUNUX1AgU1RSSU5HX1AgU1RSSVBfUAogCVNVQlNDUklQVElPTiBTVUJTVFJJTkcgU1VQUE9S VCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AgU1lTVEVNX1VTRVIKIAogCVRBQkxFIFRBQkxFUyBU QUJMRVNBTVBMRSBUQUJMRVNQQUNFIFRFTVAgVEVNUExBVEUgVEVNUE9SQVJZIFRFWFRfUCBUSEVO CkBAIC03NjgsNyArNzc3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlUUkVBVCBUUklH R0VSIFRSSU0gVFJVRV9QCiAJVFJVTkNBVEUgVFJVU1RFRCBUWVBFX1AgVFlQRVNfUAogCi0JVUVT Q0FQRSBVTkJPVU5ERUQgVU5DT01NSVRURUQgVU5FTkNSWVBURUQgVU5JT04gVU5JUVVFIFVOS05P V04KKwlVRVNDQVBFIFVOQk9VTkRFRCBVTkNPTkRJVElPTkFMIFVOQ09NTUlUVEVEIFVORU5DUllQ VEVEIFVOSU9OIFVOSVFVRSBVTktOT1dOCiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRF IFVTRVIgVVNJTkcKIAogCVZBQ1VVTSBWQUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBW QUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBWQVJZSU5HCkBAIC0xNTc4OSw2ICsxNTc5OCw2MiBAQCBm dW5jX2V4cHJfY29tbW9uX3N1YmV4cHI6CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8IEpTT05fUVVFUlkgJygnCisJCQkJanNvbl92YWx1 ZV9leHByICcsJyBhX2V4cHIganNvbl9wYXNzaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX3JldHVy bmluZ19jbGF1c2Vfb3B0CisJCQkJanNvbl93cmFwcGVyX2JlaGF2aW9yCisJCQkJanNvbl9xdW90 ZXNfY2xhdXNlX29wdAorCQkJCWpzb25fYmVoYXZpb3JfY2xhdXNlX29wdAorCQkJJyknCisJCQkJ eworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShKc29uRnVuY0V4cHIpOworCisJCQkJ CW4tPm9wID0gSlNPTl9RVUVSWV9PUDsKKwkJCQkJbi0+Y29udGV4dF9pdGVtID0gKEpzb25WYWx1 ZUV4cHIgKikgJDM7CisJCQkJCW4tPnBhdGhzcGVjID0gJDU7CisJCQkJCW4tPnBhc3NpbmcgPSAk NjsKKwkJCQkJbi0+b3V0cHV0ID0gKEpzb25PdXRwdXQgKikgJDc7CisJCQkJCW4tPndyYXBwZXIg PSAkODsKKwkJCQkJbi0+cXVvdGVzID0gJDk7CisJCQkJCW4tPm9uX2VtcHR5ID0gKEpzb25CZWhh dmlvciAqKSBsaW5pdGlhbCgkMTApOworCQkJCQluLT5vbl9lcnJvciA9IChKc29uQmVoYXZpb3Ig KikgbHNlY29uZCgkMTApOworCQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2Rl ICopIG47CisJCQkJfQorCQkJfCBKU09OX0VYSVNUUyAnKCcKKwkJCQlqc29uX3ZhbHVlX2V4cHIg JywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpzb25fb25fZXJyb3JfY2xh dXNlX29wdAorCQkJJyknCisJCQkJeworCQkJCQlKc29uRnVuY0V4cHIgKm4gPSBtYWtlTm9kZShK c29uRnVuY0V4cHIpOworCisJCQkJCW4tPm9wID0gSlNPTl9FWElTVFNfT1A7CisJCQkJCW4tPmNv bnRleHRfaXRlbSA9IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1 OworCQkJCQluLT5wYXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IE5VTEw7CisJCQkJCW4t Pm9uX2Vycm9yID0gKEpzb25CZWhhdmlvciAqKSAkNzsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCXwgSlNPTl9WQUxVRSAnKCcKKwkJCQlq c29uX3ZhbHVlX2V4cHIgJywnIGFfZXhwciBqc29uX3Bhc3NpbmdfY2xhdXNlX29wdAorCQkJCWpz b25fcmV0dXJuaW5nX2NsYXVzZV9vcHQKKwkJCQlqc29uX2JlaGF2aW9yX2NsYXVzZV9vcHQKKwkJ CScpJworCQkJCXsKKwkJCQkJSnNvbkZ1bmNFeHByICpuID0gbWFrZU5vZGUoSnNvbkZ1bmNFeHBy KTsKKworCQkJCQluLT5vcCA9IEpTT05fVkFMVUVfT1A7CisJCQkJCW4tPmNvbnRleHRfaXRlbSA9 IChKc29uVmFsdWVFeHByICopICQzOworCQkJCQluLT5wYXRoc3BlYyA9ICQ1OworCQkJCQluLT5w YXNzaW5nID0gJDY7CisJCQkJCW4tPm91dHB1dCA9IChKc29uT3V0cHV0ICopICQ3OworCQkJCQlu LT5vbl9lbXB0eSA9IChKc29uQmVoYXZpb3IgKikgbGluaXRpYWwoJDgpOworCQkJCQluLT5vbl9l cnJvciA9IChKc29uQmVoYXZpb3IgKikgbHNlY29uZCgkOCk7CisJCQkJCW4tPmxvY2F0aW9uID0g QDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQk7CiAKIApAQCAtMTY1MTUsNiAr MTY1ODAsNzcgQEAgb3B0X2FzeW1tZXRyaWM6IEFTWU1NRVRSSUMKIAkJOwogCiAvKiBTUUwvSlNP TiBzdXBwb3J0ICovCitqc29uX3Bhc3NpbmdfY2xhdXNlX29wdDoKKwkJCVBBU1NJTkcganNvbl9h cmd1bWVudHMJCQkJCXsgJCQgPSAkMjsgfQorCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBO SUw7IH0KKwkJOworCitqc29uX2FyZ3VtZW50czoKKwkJCWpzb25fYXJndW1lbnQJCQkJCQkJeyAk JCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IGpzb25fYXJndW1lbnRzICcsJyBqc29uX2FyZ3Vt ZW50CQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsKKworanNvbl9hcmd1bWVudDoKKwkJ CWpzb25fdmFsdWVfZXhwciBBUyBDb2xMYWJlbAorCQkJeworCQkJCUpzb25Bcmd1bWVudCAqbiA9 IG1ha2VOb2RlKEpzb25Bcmd1bWVudCk7CisKKwkJCQluLT52YWwgPSAoSnNvblZhbHVlRXhwciAq KSAkMTsKKwkJCQluLT5uYW1lID0gJDM7CisJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJfQorCQk7 CisKKy8qIEFSUkFZIGlzIGEgbm9pc2Ugd29yZCAqLworanNvbl93cmFwcGVyX2JlaGF2aW9yOgor CQkJICBXSVRIT1VUIFdSQVBQRVIJCQkJCXsgJCQgPSBKU1dfTk9ORTsgfQorCQkJfCBXSVRIT1VU IEFSUkFZCVdSQVBQRVIJCQkJeyAkJCA9IEpTV19OT05FOyB9CisJCQl8IFdJVEggV1JBUFBFUgkJ CQkJCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRIIEFSUkFZIFdSQVBQRVIJ CQkJeyAkJCA9IEpTV19VTkNPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggQ09ORElUSU9OQUwgQVJS QVkgV1JBUFBFUgl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJVEggVU5DT05ESVRJ T05BTCBBUlJBWSBXUkFQUEVSCXsgJCQgPSBKU1dfVU5DT05ESVRJT05BTDsgfQorCQkJfCBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIJCQl7ICQkID0gSlNXX0NPTkRJVElPTkFMOyB9CisJCQl8IFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSCQl7ICQkID0gSlNXX1VOQ09ORElUSU9OQUw7IH0KKwkJ CXwgLyogZW1wdHkgKi8JCQkJCQl7ICQkID0gSlNXX1VOU1BFQzsgfQorCQk7CisKK2pzb25fYmVo YXZpb3I6CisJCQlERUZBVUxUIGFfZXhwcgorCQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlSnNvbkJl aGF2aW9yKEpTT05fQkVIQVZJT1JfREVGQVVMVCwgJDIsIE5VTEwsIEAxKTsgfQorCQkJfCBqc29u X2JlaGF2aW9yX3R5cGUKKwkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUpzb25CZWhhdmlvcigkMSwg TlVMTCwgTlVMTCwgQDEpOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl90eXBlOgorCQkJRVJST1Jf UAkJeyAkJCA9IEpTT05fQkVIQVZJT1JfRVJST1I7IH0KKwkJCXwgTlVMTF9QCXsgJCQgPSBKU09O X0JFSEFWSU9SX05VTEw7IH0KKwkJCXwgVFJVRV9QCXsgJCQgPSBKU09OX0JFSEFWSU9SX1RSVUU7 IH0KKwkJCXwgRkFMU0VfUAl7ICQkID0gSlNPTl9CRUhBVklPUl9GQUxTRTsgfQorCQkJfCBVTktO T1dOCXsgJCQgPSBKU09OX0JFSEFWSU9SX1VOS05PV047IH0KKwkJCXwgRU1QVFlfUCBBUlJBWQl7 ICQkID0gSlNPTl9CRUhBVklPUl9FTVBUWV9BUlJBWTsgfQorCQkJfCBFTVBUWV9QIE9CSkVDVF9Q CXsgJCQgPSBKU09OX0JFSEFWSU9SX0VNUFRZX09CSkVDVDsgfQorCQkJLyogbm9uLXN0YW5kYXJk LCBmb3IgT3JhY2xlIGNvbXBhdGliaWxpdHkgb25seSAqLworCQkJfCBFTVBUWV9QCXsgJCQgPSBK U09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOyB9CisJCTsKKworanNvbl9iZWhhdmlvcl9jbGF1c2Vf b3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFTVBUWV9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIo JDEsIE5VTEwpOyB9CisJCQl8IGpzb25fYmVoYXZpb3IgT04gRVJST1JfUAorCQkJCXsgJCQgPSBs aXN0X21ha2UyKE5VTEwsICQxKTsgfQorCQkJfCBqc29uX2JlaGF2aW9yIE9OIEVNUFRZX1AganNv bl9iZWhhdmlvciBPTiBFUlJPUl9QCisJCQkJeyAkJCA9IGxpc3RfbWFrZTIoJDEsICQ0KTsgfQor CQkJfCAvKiBFTVBUWSAqLworCQkJCXsgJCQgPSBsaXN0X21ha2UyKE5VTEwsIE5VTEwpOyB9CisJ CTsKKworanNvbl9vbl9lcnJvcl9jbGF1c2Vfb3B0OgorCQkJanNvbl9iZWhhdmlvciBPTiBFUlJP Ul9QCisJCQkJeyAkJCA9ICQxOyB9CisJCQl8IC8qIEVNUFRZICovCisJCQkJeyAkJCA9IE5VTEw7 IH0KKwkJOworCiBqc29uX3ZhbHVlX2V4cHI6CiAJCQlhX2V4cHIganNvbl9mb3JtYXRfY2xhdXNl X29wdAogCQkJewpAQCAtMTY1NTksNiArMTY2OTUsMTQgQEAganNvbl9mb3JtYXRfY2xhdXNlX29w dDoKIAkJCQl9CiAJCTsKIAoranNvbl9xdW90ZXNfY2xhdXNlX29wdDoKKwkJCUtFRVAgUVVPVEVT IE9OIFNDQUxBUiBTVFJJTkdfUAkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IEtFRVAg UVVPVEVTCQkJCQkJeyAkJCA9IEpTX1FVT1RFU19LRUVQOyB9CisJCQl8IE9NSVQgUVVPVEVTIE9O IFNDQUxBUiBTVFJJTkdfUAl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgT01JVCBRVU9U RVMJCQkJCQl7ICQkID0gSlNfUVVPVEVTX09NSVQ7IH0KKwkJCXwgLyogRU1QVFkgKi8JCQkJCQl7 ICQkID0gSlNfUVVPVEVTX1VOU1BFQzsgfQorCQk7CisKIGpzb25fcmV0dXJuaW5nX2NsYXVzZV9v cHQ6CiAJCQlSRVRVUk5JTkcgVHlwZW5hbWUganNvbl9mb3JtYXRfY2xhdXNlX29wdAogCQkJCXsK QEAgLTE3MTc1LDYgKzE3MzE5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBDT01NSVQK IAkJCXwgQ09NTUlUVEVECiAJCQl8IENPTVBSRVNTSU9OCisJCQl8IENPTkRJVElPTkFMCiAJCQl8 IENPTkZJR1VSQVRJT04KIAkJCXwgQ09ORkxJQ1QKIAkJCXwgQ09OTkVDVElPTgpAQCAtMTcyMTEs MTAgKzE3MzU2LDEyIEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgRE9VQkxFX1AKIAkJCXwg RFJPUAogCQkJfCBFQUNICisJCQl8IEVNUFRZX1AKIAkJCXwgRU5BQkxFX1AKIAkJCXwgRU5DT0RJ TkcKIAkJCXwgRU5DUllQVEVECiAJCQl8IEVOVU1fUAorCQkJfCBFUlJPUl9QCiAJCQl8IEVTQ0FQ RQogCQkJfCBFVkVOVAogCQkJfCBFWENMVURFCkBAIC0xNzI2NCw2ICsxNzQxMSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSU5TVEVBRAogCQkJfCBJTlZPS0VSCiAJCQl8IElTT0xBVElP TgorCQkJfCBLRUVQCiAJCQl8IEtFWQogCQkJfCBLRVlTCiAJCQl8IExBQkVMCkBAIC0xNzMxMCw2 ICsxNzQ1OCw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgT0ZGCiAJCQl8IE9JRFMKIAkJ CXwgT0xECisJCQl8IE9NSVQKIAkJCXwgT1BFUkFUT1IKIAkJCXwgT1BUSU9OCiAJCQl8IE9QVElP TlMKQEAgLTE3MzQwLDYgKzE3NDg5LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQUk9H UkFNCiAJCQl8IFBVQkxJQ0FUSU9OCiAJCQl8IFFVT1RFCisJCQl8IFFVT1RFUwogCQkJfCBSQU5H RQogCQkJfCBSRUFECiAJCQl8IFJFQVNTSUdOCkBAIC0xNzM5OSw2ICsxNzU0OSw3IEBAIHVucmVz ZXJ2ZWRfa2V5d29yZDoKIAkJCXwgU1RPUkFHRQogCQkJfCBTVE9SRUQKIAkJCXwgU1RSSUNUX1AK KwkJCXwgU1RSSU5HX1AKIAkJCXwgU1RSSVBfUAogCQkJfCBTVUJTQ1JJUFRJT04KIAkJCXwgU1VQ UE9SVApAQCAtMTc0MjEsNiArMTc1NzIsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5LTk9XTgogCQkJfCBVTkxJU1RFTgpAQCAtMTc0 ODEsMTAgKzE3NjMzLDEzIEBAIGNvbF9uYW1lX2tleXdvcmQ6CiAJCQl8IEpTT04KIAkJCXwgSlNP Tl9BUlJBWQogCQkJfCBKU09OX0FSUkFZQUdHCisJCQl8IEpTT05fRVhJU1RTCiAJCQl8IEpTT05f T0JKRUNUCiAJCQl8IEpTT05fT0JKRUNUQUdHCisJCQl8IEpTT05fUVVFUlkKIAkJCXwgSlNPTl9T Q0FMQVIKIAkJCXwgSlNPTl9TRVJJQUxJWkUKKwkJCXwgSlNPTl9WQUxVRQogCQkJfCBMRUFTVAog CQkJfCBOQVRJT05BTAogCQkJfCBOQ0hBUgpAQCAtMTc3MTcsNiArMTc4NzIsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IENPTU1JVFRFRAogCQkJfCBDT01QUkVTU0lPTgogCQkJfCBDT05D VVJSRU5UTFkKKwkJCXwgQ09ORElUSU9OQUwKIAkJCXwgQ09ORklHVVJBVElPTgogCQkJfCBDT05G TElDVAogCQkJfCBDT05ORUNUSU9OCkBAIC0xNzc2OSwxMSArMTc5MjUsMTMgQEAgYmFyZV9sYWJl bF9rZXl3b3JkOgogCQkJfCBEUk9QCiAJCQl8IEVBQ0gKIAkJCXwgRUxTRQorCQkJfCBFTVBUWV9Q CiAJCQl8IEVOQUJMRV9QCiAJCQl8IEVOQ09ESU5HCiAJCQl8IEVOQ1JZUFRFRAogCQkJfCBFTkRf UAogCQkJfCBFTlVNX1AKKwkJCXwgRVJST1JfUAogCQkJfCBFU0NBUEUKIAkJCXwgRVZFTlQKIAkJ CXwgRVhDTFVERQpAQCAtMTc4NDMsMTAgKzE4MDAxLDE0IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoK IAkJCXwgSlNPTgogCQkJfCBKU09OX0FSUkFZCiAJCQl8IEpTT05fQVJSQVlBR0cKKwkJCXwgSlNP Tl9FWElTVFMKIAkJCXwgSlNPTl9PQkpFQ1QKIAkJCXwgSlNPTl9PQkpFQ1RBR0cKKwkJCXwgSlNP Tl9RVUVSWQogCQkJfCBKU09OX1NDQUxBUgogCQkJfCBKU09OX1NFUklBTElaRQorCQkJfCBKU09O X1ZBTFVFCisJCQl8IEtFRVAKIAkJCXwgS0VZCiAJCQl8IEtFWVMKIAkJCXwgTEFCRUwKQEAgLTE3 OTA3LDYgKzE4MDY5LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBPRkYKIAkJCXwgT0lE UwogCQkJfCBPTEQKKwkJCXwgT01JVAogCQkJfCBPTkxZCiAJCQl8IE9QRVJBVE9SCiAJCQl8IE9Q VElPTgpAQCAtMTc5NDQsNiArMTgxMDcsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBS T0dSQU0KIAkJCXwgUFVCTElDQVRJT04KIAkJCXwgUVVPVEUKKwkJCXwgUVVPVEVTCiAJCQl8IFJB TkdFCiAJCQl8IFJFQUQKIAkJCXwgUkVBTApAQCAtMTgwMTIsNiArMTgxNzYsNyBAQCBiYXJlX2xh YmVsX2tleXdvcmQ6CiAJCQl8IFNUT1JBR0UKIAkJCXwgU1RPUkVECiAJCQl8IFNUUklDVF9QCisJ CQl8IFNUUklOR19QCiAJCQl8IFNUUklQX1AKIAkJCXwgU1VCU0NSSVBUSU9OCiAJCQl8IFNVQlNU UklORwpAQCAtMTgwNDYsNiArMTgyMTEsNyBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFVF U0NBUEUKIAkJCXwgVU5CT1VOREVECiAJCQl8IFVOQ09NTUlUVEVECisJCQl8IFVOQ09ORElUSU9O QUwKIAkJCXwgVU5FTkNSWVBURUQKIAkJCXwgVU5JUVVFCiAJCQl8IFVOS05PV04KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZXhwci5jCmluZGV4IDkzMDBjN2I5YWIuLjUzNDI2ZmFjNTMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvZGF0ZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCisj aW5jbHVkZSAidXRpbHMvanNvbmIuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy94bWwuaCIKQEAgLTkw LDYgKzkxLDIzIEBAIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1Kc29uUGFyc2VFeHByKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqZXhwcik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3Jt SnNvblNjYWxhckV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uU2NhbGFyRXhwciAqZXhwcik7 CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSnNvblNlcmlhbGl6ZUV4cHIoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJCQkJCUpzb25TZXJpYWxpemVFeHByICpleHByKTsKK3N0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKnAp Oworc3RhdGljIEpzb25FeHByICp0cmFuc2Zvcm1Kc29uRXhwckNvbW1vbihQYXJzZVN0YXRlICpw c3RhdGUsIEpzb25GdW5jRXhwciAqZnVuYywKKwkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29uc3Ry dWN0TmFtZSk7CitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Kc29uUGFzc2luZ0FyZ3MoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBjb25zdCBjaGFyICpjb25zdHJ1Y3ROYW1lLAorCQkJCQkJCQkJIEpzb25Gb3Jt YXRUeXBlIGZvcm1hdCwgTGlzdCAqYXJncywKKwkJCQkJCQkJCSBMaXN0ICoqcGFzc2luZ192YWx1 ZXMsIExpc3QgKipwYXNzaW5nX25hbWVzKTsKK3N0YXRpYyBOb2RlICpjb2VyY2VKc29uRnVuY0V4 cHJPdXRwdXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uRXhwciAqanNleHByKTsKK3N0YXRpYyBP aWQJSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoSnNvbkV4cHIgKmpzZXhwcik7CitzdGF0 aWMgTm9kZSAqY29lcmNlSnNvbkV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByLAor CQkJCQkJCWNvbnN0IEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgYm9vbCBvbWl0X3F1b3Rlcyk7 CitzdGF0aWMgSnNvbkNvZXJjaW9uICptYWtlSnNvbkNvZXJjaW9uKGNvbnN0IEpzb25SZXR1cm5p bmcgKnJldHVybmluZywKKwkJCQkJCQkJCSAgYm9vbCBvbWl0X3F1b3RlcywgTm9kZSAqY2FzdF9l eHByKTsKK3N0YXRpYyBMaXN0ICpJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCQkJCSAgIE9pZCBjb250 ZXh0SXRlbVR5cGVJZCk7CitzdGF0aWMgSnNvbkJlaGF2aW9yICp0cmFuc2Zvcm1Kc29uQmVoYXZp b3IoUGFyc2VTdGF0ZSAqcHN0YXRlLCBKc29uQmVoYXZpb3IgKmJlaGF2aW9yLAorCQkJCQkJCQkJ CSAgIEpzb25CZWhhdmlvclR5cGUgZGVmYXVsdF9iZWhhdmlvciwKKwkJCQkJCQkJCQkgICBKc29u UmV0dXJuaW5nICpyZXR1cm5pbmcpOwogc3RhdGljIE5vZGUgKm1ha2Vfcm93X2NvbXBhcmlzb25f b3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCiAJCQkJCQkJCQlMaXN0ICpsYXJn cywgTGlzdCAqcmFyZ3MsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZV9yb3dfZGlz dGluY3Rfb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsCkBAIC0zNTMsNiArMzcx LDEwIEBAIHRyYW5zZm9ybUV4cHJSZWN1cnNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhw cikKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKHBzdGF0ZSwgKEpzb25T ZXJpYWxpemVFeHByICopIGV4cHIpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0pzb25GdW5jRXhw cjoKKwkJCXJlc3VsdCA9IHRyYW5zZm9ybUpzb25GdW5jRXhwcihwc3RhdGUsIChKc29uRnVuY0V4 cHIgKikgZXhwcik7CisJCQlicmVhazsKKwogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkIG5vdCBy ZWFjaCBoZXJlICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQi LCAoaW50KSBub2RlVGFnKGV4cHIpKTsKQEAgLTMyMjksNyArMzI1MSw3IEBAIG1ha2VKc29uQnl0 ZWFUb1RleHRDb252ZXJzaW9uKE5vZGUgKmV4cHIsIEpzb25Gb3JtYXQgKmZvcm1hdCwgaW50IGxv Y2F0aW9uKQogc3RhdGljIE5vZGUgKgogdHJhbnNmb3JtSnNvblZhbHVlRXhwcihQYXJzZVN0YXRl ICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCiAJCQkJCSAgIEpzb25WYWx1ZUV4 cHIgKnZlLCBKc29uRm9ybWF0VHlwZSBkZWZhdWx0X2Zvcm1hdCwKLQkJCQkJICAgT2lkIHRhcmdl dHR5cGUpCisJCQkJCSAgIE9pZCB0YXJnZXR0eXBlLCBib29sIGlzYXJnKQogewogCU5vZGUJICAg KmV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIChOb2RlICopIHZlLT5yYXdfZXhw cik7CiAJTm9kZQkgICAqcmF3ZXhwcjsKQEAgLTMyNjEsNiArMzI4Myw0MSBAQCB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0TmFt ZSwKIAkJZWxzZQogCQkJZm9ybWF0ID0gdmUtPmZvcm1hdC0+Zm9ybWF0X3R5cGU7CiAJfQorCWVs c2UgaWYgKGlzYXJnKQorCXsKKwkJLyoKKwkJICogU3BlY2lhbCB0cmVhdG1lbnQgZm9yIFBBU1NJ TkcgYXJndW1lbnRzLgorCQkgKgorCQkgKiBQYXNzIHR5cGVzIHN1cHBvcnRlZCBieSBHZXRKc29u UGF0aFZhcigpIC8gSnNvbkl0ZW1Gcm9tRGF0dW0oKQorCQkgKiBkaXJlY3RseSB3aXRob3V0IGNv bnZlcnRpbmcgdG8ganNvbltiXS4KKwkJICovCisJCXN3aXRjaCAoZXhwcnR5cGUpCisJCXsKKwkJ CWNhc2UgQk9PTE9JRDoKKwkJCWNhc2UgTlVNRVJJQ09JRDoKKwkJCWNhc2UgSU5UMk9JRDoKKwkJ CWNhc2UgSU5UNE9JRDoKKwkJCWNhc2UgSU5UOE9JRDoKKwkJCWNhc2UgRkxPQVQ0T0lEOgorCQkJ Y2FzZSBGTE9BVDhPSUQ6CisJCQljYXNlIFRFWFRPSUQ6CisJCQljYXNlIFZBUkNIQVJPSUQ6CisJ CQljYXNlIERBVEVPSUQ6CisJCQljYXNlIFRJTUVPSUQ6CisJCQljYXNlIFRJTUVUWk9JRDoKKwkJ CWNhc2UgVElNRVNUQU1QT0lEOgorCQkJY2FzZSBUSU1FU1RBTVBUWk9JRDoKKwkJCQlyZXR1cm4g ZXhwcjsKKworCQkJZGVmYXVsdDoKKwkJCQlpZiAodHlwY2F0ZWdvcnkgPT0gVFlQQ0FURUdPUllf U1RSSU5HKQorCQkJCQlyZXR1cm4gZXhwcjsKKwkJCQkvKiBlbHNlIGNvbnZlcnQgYXJndW1lbnQg dG8ganNvbltiXSB0eXBlICovCisJCQkJYnJlYWs7CisJCX0KKworCQlmb3JtYXQgPSBkZWZhdWx0 X2Zvcm1hdDsKKwl9CiAJZWxzZSBpZiAoZXhwcnR5cGUgPT0gSlNPTk9JRCB8fCBleHBydHlwZSA9 PSBKU09OQk9JRCkKIAkJZm9ybWF0ID0gSlNfRk9STUFUX0RFRkFVTFQ7IC8qIGRvIG5vdCBmb3Jt YXQganNvbltiXSB0eXBlcyAqLwogCWVsc2UKQEAgLTMyNzIsNyArMzMyOSwxMiBAQCB0cmFuc2Zv cm1Kc29uVmFsdWVFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgY29uc3QgY2hhciAqY29uc3RydWN0 TmFtZSwKIAkJTm9kZQkgICAqY29lcmNlZDsKIAkJYm9vbAkJb25seV9hbGxvd19jYXN0ID0gT2lk SXNWYWxpZCh0YXJnZXR0eXBlKTsKIAotCQlpZiAoIW9ubHlfYWxsb3dfY2FzdCAmJgorCQkvKgor CQkgKiBQQVNTSU5HIGFyZ3MgYXJlIGhhbmRsZWQgYXBwcm9wcmlhdGVseSBieSBHZXRKc29uUGF0 aFZhcigpIC8KKwkJICogSnNvbkl0ZW1Gcm9tRGF0dW0oKS4KKwkJICovCisJCWlmICghaXNhcmcg JiYKKwkJCSFvbmx5X2FsbG93X2Nhc3QgJiYKIAkJCWV4cHJ0eXBlICE9IEJZVEVBT0lEICYmIHR5 cGNhdGVnb3J5ICE9IFRZUENBVEVHT1JZX1NUUklORykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCkBAIC0zNDI1LDYgKzM0ODcsMTEg QEAgdHJhbnNmb3JtSnNvbk91dHB1dChQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IEpzb25PdXRw dXQgKm91dHB1dCwKIAkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQllcnJtc2coInJldHVybmluZyBTRVRPRiB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNR TC9KU09OIGZ1bmN0aW9ucyIpKTsKIAorCWlmIChnZXRfdHlwdHlwZShyZXQtPnR5cGlkKSA9PSBU WVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInJldHVybmluZyBwc2V1ZG8tdHlwZXMg aXMgbm90IHN1cHBvcnRlZCBpbiBTUUwvSlNPTiBmdW5jdGlvbnMiKSk7CisKIAlpZiAocmV0LT5m b3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9ERUZBVUxUKQogCQkvKiBhc3NpZ24gSlNP TkIgZm9ybWF0IHdoZW4gcmV0dXJuaW5nIGpzb25iLCBvciBKU09OIGZvcm1hdCBvdGhlcndpc2Ug Ki8KIAkJcmV0LT5mb3JtYXQtPmZvcm1hdF90eXBlID0KQEAgLTM1MjEsNyArMzU4OCw2IEBAIGNv ZXJjZUpzb25GdW5jRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsCiAJLyogdHJ5 IHRvIGNvZXJjZSBleHByZXNzaW9uIHRvIHRoZSBvdXRwdXQgdHlwZSAqLwogCXJlcyA9IGNvZXJj ZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJ0eXBlLAogCQkJCQkJCQlyZXR1cm5p bmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1vZCwKLQkvKiBYWFggdGhyb3dpbmcgZXJyb3JzIHdo ZW4gY2FzdGluZyB0byBjaGFyKE4pICovCiAJCQkJCQkJCUNPRVJDSU9OX0VYUExJQ0lULAogCQkJ CQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FTVCwKIAkJCQkJCQkJbG9jYXRpb24pOwpAQCAtMzYyMSw3 ICszNjg3LDcgQEAgdHJhbnNmb3JtSnNvbk9iamVjdENvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvbk9iamVjdENvbnN0cnVjdG9yICpjdG9yKQogCQkJTm9kZQkgICAqdmFsID0gdHJh bnNmb3JtSnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX09CSkVDVCgpIiwKIAkJCQkJCQkJCQkJ CQkga3YtPnZhbHVlLAogCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIEludmFsaWRPaWQsIGZhbHNlKTsKIAog CQkJYXJncyA9IGxhcHBlbmQoYXJncywga2V5KTsKIAkJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIHZh bCk7CkBAIC0zODA4LDcgKzM4NzQsNyBAQCB0cmFuc2Zvcm1Kc29uT2JqZWN0QWdnKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgSnNvbk9iamVjdEFnZyAqYWdnKQogCXZhbCA9IHRyYW5zZm9ybUpzb25WYWx1 ZUV4cHIocHN0YXRlLCAiSlNPTl9PQkpFQ1RBR0coKSIsCiAJCQkJCQkJCSBhZ2ctPmFyZy0+dmFs dWUsCiAJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJIEludmFsaWRPaWQpOwor CQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCWFyZ3MgPSBsaXN0X21ha2UyKGtleSwgdmFs KTsKIAogCXJldHVybmluZyA9IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUs IGFnZy0+Y29uc3RydWN0b3ItPm91dHB1dCwKQEAgLTM4NjQsOSArMzkzMCw4IEBAIHRyYW5zZm9y bUpzb25BcnJheUFnZyhQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25BcnJheUFnZyAqYWdnKQogCU9p ZAkJCWFnZ2Zub2lkOwogCU9pZAkJCWFnZ3R5cGU7CiAKLQlhcmcgPSB0cmFuc2Zvcm1Kc29uVmFs dWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsCi0JCQkJCQkJCSBhZ2ctPmFyZywKLQkJ CQkJCQkJIEpTX0ZPUk1BVF9ERUZBVUxULCBJbnZhbGlkT2lkKTsKKwlhcmcgPSB0cmFuc2Zvcm1K c29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVlBR0coKSIsIGFnZy0+YXJnLAorCQkJCQkJ CQkgSlNfRk9STUFUX0RFRkFVTFQsIEludmFsaWRPaWQsIGZhbHNlKTsKIAogCXJldHVybmluZyA9 IHRyYW5zZm9ybUpzb25Db25zdHJ1Y3Rvck91dHB1dChwc3RhdGUsIGFnZy0+Y29uc3RydWN0b3It Pm91dHB1dCwKIAkJCQkJCQkJCQkJICAgbGlzdF9tYWtlMShhcmcpKTsKQEAgLTM5MTMsOSArMzk3 OCw4IEBAIHRyYW5zZm9ybUpzb25BcnJheUNvbnN0cnVjdG9yKFBhcnNlU3RhdGUgKnBzdGF0ZSwg SnNvbkFycmF5Q29uc3RydWN0b3IgKmN0b3IpCiAJCXsKIAkJCUpzb25WYWx1ZUV4cHIgKmpzdmFs ID0gY2FzdE5vZGUoSnNvblZhbHVlRXhwciwgbGZpcnN0KGxjKSk7CiAJCQlOb2RlCSAgICp2YWwg PSB0cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgIkpTT05fQVJSQVkoKSIsCi0JCQkJCQkJ CQkJCQkJIGpzdmFsLAotCQkJCQkJCQkJCQkJCSBKU19GT1JNQVRfREVGQVVMVCwKLQkJCQkJCQkJ CQkJCQkgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCQkJIGpzdmFsLCBKU19GT1JNQVRfREVGQVVM VCwKKwkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJCQlhcmdzID0gbGFwcGVu ZChhcmdzLCB2YWwpOwogCQl9CkBAIC00MDc0LDcgKzQxMzgsNyBAQCB0cmFuc2Zvcm1Kc29uUGFy c2VFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblBhcnNlRXhwciAqanNleHByKQogCQkgKiBm dW5jdGlvbi1saWtlIENBU1RzLgogCQkgKi8KIAkJYXJnID0gdHJhbnNmb3JtSnNvblZhbHVlRXhw cihwc3RhdGUsICJKU09OKCkiLCBqc2V4cHItPmV4cHIsCi0JCQkJCQkJCQkgSlNfRk9STUFUX0pT T04sIHJldHVybmluZy0+dHlwaWQpOworCQkJCQkJCQkJIEpTX0ZPUk1BVF9KU09OLCByZXR1cm5p bmctPnR5cGlkLCBmYWxzZSk7CiAJfQogCiAJcmV0dXJuIG1ha2VKc29uQ29uc3RydWN0b3JFeHBy KHBzdGF0ZSwgSlNDVE9SX0pTT05fUEFSU0UsIGxpc3RfbWFrZTEoYXJnKSwgTlVMTCwKQEAgLTQx MTksNyArNDE4Myw3IEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVFeHByKFBhcnNlU3RhdGUgKnBz dGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJTm9kZQkgICAqYXJnID0gdHJhbnNmb3Jt SnNvblZhbHVlRXhwcihwc3RhdGUsICJKU09OX1NFUklBTElaRSgpIiwKIAkJCQkJCQkJCQkJIGV4 cHItPmV4cHIsCiAJCQkJCQkJCQkJCSBKU19GT1JNQVRfSlNPTiwKLQkJCQkJCQkJCQkJIEludmFs aWRPaWQpOworCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwgZmFsc2UpOwogCiAJaWYgKGV4cHItPm91 dHB1dCkKIAl7CkBAIC00MTUzLDMgKzQyMTcsNTgyIEBAIHRyYW5zZm9ybUpzb25TZXJpYWxpemVF eHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgSnNvblNlcmlhbGl6ZUV4cHIgKmV4cHIpCiAJcmV0dXJu IG1ha2VKc29uQ29uc3RydWN0b3JFeHByKHBzdGF0ZSwgSlNDVE9SX0pTT05fU0VSSUFMSVpFLCBs aXN0X21ha2UxKGFyZyksCiAJCQkJCQkJCSAgIE5VTEwsIHJldHVybmluZywgZmFsc2UsIGZhbHNl LCBleHByLT5sb2NhdGlvbik7CiB9CisKKy8qCisgKiBUcmFuc2Zvcm0gSlNPTl9WQUxVRSwgSlNP Tl9RVUVSWSwgSlNPTl9FWElTVFMgZnVuY3Rpb25zIGludG8gYSBKc29uRXhwciBub2RlLgorICov CitzdGF0aWMgTm9kZSAqCit0cmFuc2Zvcm1Kc29uRnVuY0V4cHIoUGFyc2VTdGF0ZSAqcHN0YXRl LCBKc29uRnVuY0V4cHIgKmZ1bmMpCit7CisJSnNvbkV4cHIgICAqanNleHByID0gTlVMTDsKKwlj b25zdCBjaGFyICpmdW5jX25hbWUgPSBOVUxMOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNPTl9FWElTVFMiOworCQkJ YnJlYWs7CisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWZ1bmNfbmFtZSA9ICJKU09OX1FVRVJZ IjsKKwkJCWJyZWFrOworCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQlmdW5jX25hbWUgPSAiSlNP Tl9WQUxVRSI7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlk IEpzb25GdW5jRXhwciBvcCIpOworCQkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBGT1JNQVQgSlNP TiBzcGVjaWZpY2F0aW9uIGlzIG1lYW5pbmdsZXNzIGV4Y2VwdCBmb3IgSlNPTl9RVUVSWSgpLAor CSAqIHRob3VnaCB0aGUgc3ludGF4IGFsbG93cyBpdC4gIEZsYWcgaWYgbm90IEpTT05fUVVFUlko KS4KKwkgKi8KKwlpZiAoZnVuYy0+b3V0cHV0ICYmIGZ1bmMtPm9wICE9IEpTT05fUVVFUllfT1Ap CisJeworCQlKc29uRm9ybWF0ICpmb3JtYXQgPSBmdW5jLT5vdXRwdXQtPnJldHVybmluZy0+Zm9y bWF0OworCisJCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlICE9IEpTX0ZPUk1BVF9ERUZBVUxUIHx8 CisJCQlmb3JtYXQtPmVuY29kaW5nICE9IEpTX0VOQ19ERUZBVUxUKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCWVycm1zZygiY2Fu bm90IHNwZWNpZnkgRk9STUFUIGluIFJFVFVSTklORyBjbGF1c2Ugb2YgJXMoKSIsCisJCQkJCQkg ICBmdW5jX25hbWUpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBmb3JtYXQtPmxv Y2F0aW9uKSk7CisJfQorCisJLyogT01JVCBRVU9URVMgbWVhbmluZ2xlc3Mgd2hlbiBzdHJpbmdz IGFyZSB3cmFwcGVkLiAqLworCWlmIChmdW5jLT5vcCA9PSBKU09OX1FVRVJZX09QICYmCisJCWZ1 bmMtPnF1b3RlcyAhPSBKU19RVU9URVNfVU5TUEVDICYmCisJCShmdW5jLT53cmFwcGVyID09IEpT V19DT05ESVRJT05BTCB8fAorCQkgZnVuYy0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJZXJybXNnKCJTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVk IHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQiKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBmdW5jLT5sb2NhdGlvbikpOworCisJanNleHByID0gdHJhbnNmb3JtSnNvbkV4cHJDb21t b24ocHN0YXRlLCBmdW5jLCBmdW5jX25hbWUpOworCisJc3dpdGNoIChmdW5jLT5vcCkKKwl7CisJ CWNhc2UgSlNPTl9FWElTVFNfT1A6CisJCQkvKiBKU09OX0VYSVNUUyByZXR1cm5zIGJvb2xlYW4g YnkgZGVmYXVsdC4gKi8KKwkJCWlmICghT2lkSXNWYWxpZChqc2V4cHItPnJldHVybmluZy0+dHlw aWQpKQorCQkJeworCQkJCWpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCA9IEJPT0xPSUQ7CisJCQkJ anNleHByLT5yZXR1cm5pbmctPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHItPm9uX2Vy cm9yID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwgZnVuYy0+b25fZXJyb3IsCisJCQkJ CQkJCQkJCQkJIEpTT05fQkVIQVZJT1JfRkFMU0UsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0 dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9RVUVSWV9PUDoKKwkJCWpzZXhwci0+ d3JhcHBlciA9IGZ1bmMtPndyYXBwZXI7CisKKwkJCS8qCisJCQkgKiBLZWVwIHF1b3RlcyBvbiBz Y2FsYXIgc3RyaW5ncyBieSBkZWZhdWx0LCBvbWl0dGluZyB0aGVtIG9ubHkgaWYKKwkJCSAqIE9N SVQgUVVPVEVTIGlzIHNwZWNpZmllZC4KKwkJCSAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9 IChmdW5jLT5xdW90ZXMgPT0gSlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1FVRVJZIHJl dHVybnMganNvbihiKSBieSBkZWZhdWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+ cmV0dXJuaW5nLT50eXBpZCkpCisJCQl7CisJCQkJSnNvblJldHVybmluZyAqcmV0ID0ganNleHBy LT5yZXR1cm5pbmc7CisKKwkJCQlyZXQtPnR5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVy blR5cGUoanNleHByKTsKKwkJCQlyZXQtPnR5cG1vZCA9IC0xOworCQkJfQorCisJCQlqc2V4cHIt PnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChwc3RhdGUsIGpzZXhw cik7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkKKwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJh bnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5 LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklPUl9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNl eHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5vbl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhh dmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAorCQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9S X05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCS8qIEFsd2F5cyBvbWl0IHF1b3RlcyBmcm9tIHNjYWxh ciBzdHJpbmdzLiAqLworCQkJanNleHByLT5vbWl0X3F1b3RlcyA9IChmdW5jLT5xdW90ZXMgPT0g SlNfUVVPVEVTX09NSVQpOworCisJCQkvKiBKU09OX1ZBTFVFIHJldHVybnMgdGV4dCBieSBkZWZh dWx0LiAqLworCQkJaWYgKCFPaWRJc1ZhbGlkKGpzZXhwci0+cmV0dXJuaW5nLT50eXBpZCkpCisJ CQl7CisJCQkJanNleHByLT5yZXR1cm5pbmctPnR5cGlkID0gVEVYVE9JRDsKKwkJCQlqc2V4cHIt PnJldHVybmluZy0+dHlwbW9kID0gLTE7CisJCQl9CisKKwkJCS8qCisJCQkgKiBPdmVycmlkZSB3 aGF0ZXZlciB0cmFuc2Zvcm1Kc29uT3V0cHV0KCkgc2V0IHRoZXNlIHRvLCB3aGljaAorCQkJICog YXNzdW1lcyB0aGF0IG91dHB1dCB0eXBlIHRvIGJlIGpzb24oYikuCisJCQkgKi8KKwkJCWpzZXhw ci0+cmV0dXJuaW5nLT5mb3JtYXQtPmZvcm1hdF90eXBlID0gSlNfRk9STUFUX0RFRkFVTFQ7CisJ CQlqc2V4cHItPnJldHVybmluZy0+Zm9ybWF0LT5lbmNvZGluZyA9IEpTX0VOQ19ERUZBVUxUOwor CisJCQlqc2V4cHItPnJlc3VsdF9jb2VyY2lvbiA9IGNvZXJjZUpzb25GdW5jRXhwck91dHB1dChw c3RhdGUsIGpzZXhwcik7CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIGV4cHJlc3Npb25zIHRv IGNvZXJjZSB0aGUgc2NhbGFyIHZhbHVlIHJldHVybmVkIGJ5CisJCQkgKiBKc29uUGF0aFZhbHVl KCkgdG8gdGhlICJyZXR1cm5pbmciIHR5cGUuCisJCQkgKi8KKwkJCWlmIChqc2V4cHItPnJlc3Vs dF9jb2VyY2lvbikKKwkJCQlqc2V4cHItPml0ZW1fY29lcmNpb25zID0KKwkJCQkJSW5pdEpzb25J dGVtQ29lcmNpb25zKHBzdGF0ZSwganNleHByLT5yZXR1cm5pbmcsCisJCQkJCQkJCQkJICBleHBy VHlwZShqc2V4cHItPmZvcm1hdHRlZF9leHByKSk7CisKKwkJCWlmIChmdW5jLT5vbl9lbXB0eSkK KwkJCQlqc2V4cHItPm9uX2VtcHR5ID0gdHJhbnNmb3JtSnNvbkJlaGF2aW9yKHBzdGF0ZSwKKwkJ CQkJCQkJCQkJCQkJIGZ1bmMtPm9uX2VtcHR5LAorCQkJCQkJCQkJCQkJCQkgSlNPTl9CRUhBVklP Ul9OVUxMLAorCQkJCQkJCQkJCQkJCQkganNleHByLT5yZXR1cm5pbmcpOworCQkJanNleHByLT5v bl9lcnJvciA9IHRyYW5zZm9ybUpzb25CZWhhdmlvcihwc3RhdGUsIGZ1bmMtPm9uX2Vycm9yLAor CQkJCQkJCQkJCQkJCSBKU09OX0JFSEFWSU9SX05VTEwsCisJCQkJCQkJCQkJCQkJIGpzZXhwci0+ cmV0dXJuaW5nKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBKc29uRnVuY0V4cHIgb3AiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiAoTm9kZSAq KSBqc2V4cHI7Cit9CisKKy8qCisgKiBDb21tb24gY29kZSBmb3IgSlNPTl9WQUxVRSwgSlNPTl9R VUVSWSwgSlNPTl9FWElTVFMgdHJhbnNmb3JtYXRpb24KKyAqIGludG8gYSBKc29uRXhwciBub2Rl LgorICovCitzdGF0aWMgSnNvbkV4cHIgKgordHJhbnNmb3JtSnNvbkV4cHJDb21tb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBKc29uRnVuY0V4cHIgKmZ1bmMsCisJCQkJCQljb25zdCBjaGFyICpjb25z dHJ1Y3ROYW1lKQoreworCUpzb25FeHByICAgKmpzZXhwciA9IG1ha2VOb2RlKEpzb25FeHByKTsK KwlOb2RlCSAgICpwYXRoX3NwZWM7CisKKwlqc2V4cHItPmxvY2F0aW9uID0gZnVuYy0+bG9jYXRp b247CisJanNleHByLT5vcCA9IGZ1bmMtPm9wOworCWpzZXhwci0+Zm9ybWF0dGVkX2V4cHIgPSB0 cmFuc2Zvcm1Kc29uVmFsdWVFeHByKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkJCQkJ CQlmdW5jLT5jb250ZXh0X2l0ZW0sCisJCQkJCQkJCQkJCQkJSlNfRk9STUFUX0pTT04sCisJCQkJ CQkJCQkJCQkJSW52YWxpZE9pZCwgZmFsc2UpOworCisJaWYgKGV4cHJUeXBlKGpzZXhwci0+Zm9y bWF0dGVkX2V4cHIpICE9IEpTT05CT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiJXMoKSBpcyBub3Qg eWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlIiwKKwkJCQkJICAgY29uc3RydWN0TmFt ZSksCisJCQkJZXJyaGludCgiVHJ5IGNhc3RpbmcgdGhlIGFyZ3VtZW50IHRvIGpzb25iIiksCisJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGpzZXhwci0+Zm9ybWF0 dGVkX2V4cHIpKSk7CisKKwlqc2V4cHItPmZvcm1hdCA9IGZ1bmMtPmNvbnRleHRfaXRlbS0+Zm9y bWF0OworCisJcGF0aF9zcGVjID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBmdW5jLT5w YXRoc3BlYyk7CisJanNleHByLT5wYXRoX3NwZWMgPQorCQljb2VyY2VfdG9fdGFyZ2V0X3R5cGUo cHN0YXRlLCBwYXRoX3NwZWMsIGV4cHJUeXBlKHBhdGhfc3BlYyksCisJCQkJCQkJICBKU09OUEFU SE9JRCwgLTEsCisJCQkJCQkJICBDT0VSQ0lPTl9FWFBMSUNJVCwgQ09FUkNFX0lNUExJQ0lUX0NB U1QsCisJCQkJCQkJICBleHByTG9jYXRpb24ocGF0aF9zcGVjKSk7CisJaWYgKCFqc2V4cHItPnBh dGhfc3BlYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBF X01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJKU09OIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIG9m IHR5cGUgJXMsIG5vdCBvZiB0eXBlICVzIiwKKwkJCQkJCSJqc29ucGF0aCIsIGZvcm1hdF90eXBl X2JlKGV4cHJUeXBlKHBhdGhfc3BlYykpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZXhwckxvY2F0aW9uKHBhdGhfc3BlYykpKSk7CisKKwkvKgorCSAqIFRyYW5zZm9ybSBhbmQg Y29lcmNlIHRvIGpzb25bYl0gcGFzc2luZyBhcmd1bWVudHMsIHdob3NlIGZvcm1hdCBpcworCSAq IGRldGVybWluZWQgYnkgY29udGV4dCBpdGVtIHR5cGUuCisJICovCisJdHJhbnNmb3JtSnNvblBh c3NpbmdBcmdzKHBzdGF0ZSwgY29uc3RydWN0TmFtZSwKKwkJCQkJCQkgZXhwclR5cGUoanNleHBy LT5mb3JtYXR0ZWRfZXhwcikgPT0gSlNPTkJPSUQgPworCQkJCQkJCSBKU19GT1JNQVRfSlNPTkIg OiBKU19GT1JNQVRfSlNPTiwKKwkJCQkJCQkgZnVuYy0+cGFzc2luZywKKwkJCQkJCQkgJmpzZXhw ci0+cGFzc2luZ192YWx1ZXMsCisJCQkJCQkJICZqc2V4cHItPnBhc3NpbmdfbmFtZXMpOworCisJ anNleHByLT5yZXR1cm5pbmcgPSB0cmFuc2Zvcm1Kc29uT3V0cHV0KHBzdGF0ZSwgZnVuYy0+b3V0 cHV0LCBmYWxzZSk7CisKKwlyZXR1cm4ganNleHByOworfQorCisvKgorICogVHJhbnNmb3JtIGEg SlNPTiBQQVNTSU5HIGNsYXVzZS4KKyAqLworc3RhdGljIHZvaWQKK3RyYW5zZm9ybUpzb25QYXNz aW5nQXJncyhQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IGNoYXIgKmNvbnN0cnVjdE5hbWUsCisJ CQkJCQkgSnNvbkZvcm1hdFR5cGUgZm9ybWF0LCBMaXN0ICphcmdzLAorCQkJCQkJIExpc3QgKipw YXNzaW5nX3ZhbHVlcywgTGlzdCAqKnBhc3NpbmdfbmFtZXMpCit7CisJTGlzdENlbGwgICAqbGM7 CisKKwkqcGFzc2luZ192YWx1ZXMgPSBOSUw7CisJKnBhc3NpbmdfbmFtZXMgPSBOSUw7CisKKwlm b3JlYWNoKGxjLCBhcmdzKQorCXsKKwkJSnNvbkFyZ3VtZW50ICphcmcgPSBjYXN0Tm9kZShKc29u QXJndW1lbnQsIGxmaXJzdChsYykpOworCQlOb2RlCSAgICpleHByID0gdHJhbnNmb3JtSnNvblZh bHVlRXhwcihwc3RhdGUsIGNvbnN0cnVjdE5hbWUsCisJCQkJCQkJCQkJCQkgIGFyZy0+dmFsLCBm b3JtYXQsCisJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsIHRydWUpOworCisJCSpwYXNzaW5nX3Zh bHVlcyA9IGxhcHBlbmQoKnBhc3NpbmdfdmFsdWVzLCBleHByKTsKKwkJKnBhc3NpbmdfbmFtZXMg PSBsYXBwZW5kKCpwYXNzaW5nX25hbWVzLCBtYWtlU3RyaW5nKGFyZy0+bmFtZSkpOworCX0KK30K KworLyoKKyAqIENyZWF0ZSBhbiBleHByZXNzaW9uIHRvIGNvZXJjZSB0aGUgb3V0cHV0IG9mIEpT T05fVkFMVUUoKSAvIEpTT05fUVVFUlkoKQorICogdG8gdGhlIG91dHB1dCB0eXBlLCBpZiBuZWVk ZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK2NvZXJjZUpzb25GdW5jRXhwck91dHB1dChQYXJzZVN0 YXRlICpwc3RhdGUsIEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvblJldHVybmluZyAqcmV0dXJu aW5nID0ganNleHByLT5yZXR1cm5pbmc7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHBy LT5mb3JtYXR0ZWRfZXhwcjsKKwlOb2RlCSAgICpjb2VyY2lvbl9leHByID0gTlVMTDsKKwlpbnQJ CQlkZWZhdWx0X3R5cG1vZDsKKwlPaWQJCQlkZWZhdWx0X3R5cGlkOworCWJvb2wJCW9taXRfcXVv dGVzID0KKwkJanNleHByLT5vcCA9PSBKU09OX1FVRVJZX09QICYmIGpzZXhwci0+b21pdF9xdW90 ZXM7CisKKwlBc3NlcnQocmV0dXJuaW5nKTsKKworCS8qCisJICogQ2FzdCBmdW5jdGlvbnMgZnJv bSBqc29uYiB0byB0aGUgZm9sbG93aW5nIHR5cGVzIChqc29uYl9ib29sKCkgZXQgYWwpCisJICog ZG9uJ3QgaGFuZGxlIGVycm9ycyBzb2Z0bHksIHNvIGZvcmNlIHRvIHVzZSBqc29uX3BvcHVsYXRl X3R5cGUoKSB1c2luZworCSAqIGEgSnNvbkNvZXJjaW9uIG5vZGUgc28gdGhhdCBhbnkgZXJyb3Jz IGFyZSBoYW5kbGVkIGFwcHJvcHJpYXRlbHkuCisJICovCisJaWYgKGpzZXhwci0+b3AgPT0gSlNP Tl9RVUVSWV9PUCkKKwl7CisJCXN3aXRjaCAocmV0dXJuaW5nLT50eXBpZCkKKwkJeworCQkJY2Fz ZSBCT09MT0lEOgorCQkJY2FzZSBOVU1FUklDT0lEOgorCQkJY2FzZSBJTlQyT0lEOgorCQkJY2Fz ZSBJTlQ0T0lEOgorCQkJY2FzZSBJTlQ4T0lEOgorCQkJY2FzZSBGTE9BVDRPSUQ6CisJCQljYXNl IEZMT0FUOE9JRDoKKwkJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUpzb25Db2VyY2lvbihyZXR1cm5p bmcsIG9taXRfcXVvdGVzLCBOVUxMKTsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKwl9 CisKKwlkZWZhdWx0X3R5cGlkID0gSnNvbkZ1bmNFeHByRGVmYXVsdFJldHVyblR5cGUoanNleHBy KTsKKwlkZWZhdWx0X3R5cG1vZCA9IC0xOworCWlmIChyZXR1cm5pbmctPnR5cGlkICE9IGRlZmF1 bHRfdHlwaWQgfHwKKwkJcmV0dXJuaW5nLT50eXBtb2QgIT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJ b21pdF9xdW90ZXMpCisJeworCQkvKgorCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBh cyBwbGFjZWhvbGRlciB0byBwYXNzIHRoZSByZXN1bHQgb2YKKwkJICogZXZhbHVhdGluZyB0aGUg SlNPTl9WQUxVRS9RVUVSWSBqc29ucGF0aCBleHByZXNzaW9uIGFzIGlucHV0IHRvIHRoZQorCQkg KiBjb2VyY2lvbiBleHByZXNzaW9uLgorCQkgKi8KKwkJQ2FzZVRlc3RFeHByICpwbGFjZWhvbGRl ciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJLyoKKwkJICogV2hlbiBPTUlUIFFVT1RF UyBpcyB0cnVlLCBFeGVjRXZhbEpzb25Db2VyY2lvbigpIHdpbGwgY29udmVydCBhCisJCSAqIHF1 b3RlLXN0cmlwcGVkIHNvdXJjZSB2YWx1ZSB0byBpdHMgdGV4dCByZXByZXNlbnRhdGlvbiwgc28g dXNlCisJCSAqIFRFWFRPSUQgYXMgdGhlIHNvdXJjZSB0eXBlLgorCQkgKi8KKwkJcGxhY2Vob2xk ZXItPnR5cGVJZCA9IG9taXRfcXVvdGVzID8gVEVYVE9JRCA6IGV4cHJUeXBlKGNvbnRleHRfaXRl bSk7CisJCXBsYWNlaG9sZGVyLT50eXBlTW9kID0gb21pdF9xdW90ZXMgPyAtMSA6IGV4cHJUeXBt b2QoY29udGV4dF9pdGVtKTsKKworCQlBc3NlcnQocGxhY2Vob2xkZXItPnR5cGVJZCA9PSBkZWZh dWx0X3R5cGlkIHx8CisJCQkgICBwbGFjZWhvbGRlci0+dHlwZUlkID09IFRFWFRPSUQpOworCQlB c3NlcnQocGxhY2Vob2xkZXItPnR5cGVNb2QgPT0gZGVmYXVsdF90eXBtb2QgfHwKKwkJCSAgIHBs YWNlaG9sZGVyLT50eXBlTW9kID09IC0xKTsKKworCQljb2VyY2lvbl9leHByID0gY29lcmNlSnNv bkV4cHIocHN0YXRlLCAoTm9kZSAqKSBwbGFjZWhvbGRlciwKKwkJCQkJCQkJCSAgIHJldHVybmlu Zywgb21pdF9xdW90ZXMpOworCX0KKworCXJldHVybiBjb2VyY2lvbl9leHByOworfQorCisvKiBS ZXR1cm5zIHRoZSBkZWZhdWx0IHR5cGUgZm9yIGEgZ2l2ZW4gSnNvbkV4cHIgZm9yIGEgZ2l2ZW4g SnNvbkZvcm1hdC4gKi8KK3N0YXRpYyBPaWQKK0pzb25GdW5jRXhwckRlZmF1bHRSZXR1cm5UeXBl KEpzb25FeHByICpqc2V4cHIpCit7CisJSnNvbkZvcm1hdCAqZm9ybWF0ID0ganNleHByLT5mb3Jt YXQ7CisJTm9kZQkgICAqY29udGV4dF9pdGVtID0ganNleHByLT5mb3JtYXR0ZWRfZXhwcjsKKwor CUFzc2VydChmb3JtYXQpOworCWlmIChmb3JtYXQtPmZvcm1hdF90eXBlID09IEpTX0ZPUk1BVF9K U09OQikKKwkJcmV0dXJuIEpTT05CT0lEOworCWVsc2UgaWYgKGZvcm1hdC0+Zm9ybWF0X3R5cGUg PT0gSlNfRk9STUFUX0RFRkFVTFQgJiYKKwkJCSBleHByVHlwZShjb250ZXh0X2l0ZW0pID09IEpT T05CT0lEKQorCQlyZXR1cm4gSlNPTkJPSUQ7CisKKwlyZXR1cm4gSlNPTk9JRDsKK30KKworLyoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSB0byBjb2VyY2UgYSBqc29uYi12YWx1ZWQg ZXhwcmVzc2lvbiB0byB0aGUKKyAqIHRhcmdldCB0eXBlIGdpdmVuIGJ5ICdyZXR1cm5pbmcnIHVz aW5nIGVpdGhlciBqc29uX3BvcHVsYXRlX3R5cGUoKSBvcgorICogYnkgdXNpbmcgdGhlIHRhcmdl dCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyBKc29uQ29lcmNpb24gKgorbWFr ZUpzb25Db2VyY2lvbihjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsIGJvb2wgb21pdF9x dW90ZXMsCisJCQkJIE5vZGUgKmNhc3RfZXhwcikKK3sKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9u ID0gbWFrZU5vZGUoSnNvbkNvZXJjaW9uKTsKKworCWNvZXJjaW9uLT50YXJnZXR0eXBlID0gcmV0 dXJuaW5nLT50eXBpZDsKKwljb2VyY2lvbi0+dGFyZ2V0dHlwbW9kID0gcmV0dXJuaW5nLT50eXBt b2Q7CisJY29lcmNpb24tPm9taXRfcXVvdGVzID0gb21pdF9xdW90ZXM7CisJY29lcmNpb24tPmNh c3RfZXhwciA9IGNhc3RfZXhwcjsKKworCXJldHVybiBjb2VyY2lvbjsKK30KKworLyoKKyAqIENv ZXJjZSB0aGUgcmVzdWx0IG9mIEpTT05fVkFMVUUgLyBKU09OX1FVRVJZICgpIChvciBhIGJlaGF2 aW9yIGV4cHJlc3Npb24pCisgKiB0byB0aGUgb3V0cHV0IHR5cGUKKyAqCisgKiBSZXR1cm5zIE5V TEwgaWYgbm8gY29lcmNpb24gbmVlZGVkICh0aGUgaW5wdXQgZXhwcmVzc3Npb24gaXMgYWxyZWFk eSBvZiB0aGUKKyAqIGRlc2lyZWQgdHlwZSkgYW5kIE9NSVQgUVVPVEVTIGlzIGZhbHNlLgorICoK KyAqIFJldHVybnMgYSBKc29uQ29lcmNpb24gbm9kZSBpZiB0aGUgY2FzdCB3YXMgbm90IGZvdW5k IG9yIGlmIE9NSVQgUVVPVEVTIGlzCisgKiB0cnVlLgorICovCitzdGF0aWMgTm9kZSAqCitjb2Vy Y2VKc29uRXhwcihQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIsIGNvbnN0IEpzb25SZXR1 cm5pbmcgKnJldHVybmluZywKKwkJCSAgIGJvb2wgb21pdF9xdW90ZXMpCit7CisJTm9kZQkgICAq Y29lcmNlZF9leHByOworCisJQXNzZXJ0KGV4cHIgIT0gTlVMTCk7CisJY29lcmNlZF9leHByID0g Y29lcmNlSnNvbkZ1bmNFeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisKKwlp ZiAoY29lcmNlZF9leHByID09IGV4cHIgJiYgIW9taXRfcXVvdGVzKQorCQlyZXR1cm4gTlVMTDsK KworCS8qIFVzZSBjb2VyY2VkX2V4cHIgZm9yIEpzb25Db2VyY2lvbi5jYXN0X2V4cHIgaWZmIGNv ZXJjaW9uIGlzIG5lZWRlZC4gKi8KKwlpZiAoY29lcmNlZF9leHByID09IE5VTEwgfHwgb21pdF9x dW90ZXMpCisJCXJldHVybiAoTm9kZSAqKSBtYWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgb21p dF9xdW90ZXMsCisJCQkJCQkJCQkJIGNvZXJjZWRfZXhwciA9PSBleHByID8KKwkJCQkJCQkJCQkg TlVMTCA6IGNvZXJjZWRfZXhwcik7CisKKwlyZXR1cm4gY29lcmNlZF9leHByOworfQorCisvKgor ICogSW5pdGlhbGl6ZSBKc29uQ29lcmNpb24gbm9kZXMgZm9yIGNvZXJjaW5nIGEgZ2l2ZW4gSlNP TiBpdGVtIHZhbHVlIHByb2R1Y2VkCisgKiBieSBKU09OX1ZBTFVFIHRvIHRoZSB0YXJnZXQgInJl dHVybmluZyIgdHlwZTsgYWxzbyBzZWUKKyAqIEV4ZWNQcmVwYXJlSnNvbkl0ZW1Db2VyY2lvbigp LgorICovCitzdGF0aWMgTGlzdCAqCitJbml0SnNvbkl0ZW1Db2VyY2lvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBjb25zdCBKc29uUmV0dXJuaW5nICpyZXR1cm5pbmcsCisJCQkJCSAgT2lkIGNvbnRl eHRJdGVtVHlwZUlkKQoreworCUxpc3QJICAgKml0ZW1fY29lcmNpb25zID0gTklMOworCWludAkJ CWk7CisJT2lkCQkJdHlwZW9pZDsKKwlzdHJ1Y3QKKwl7CisJCUpzb25JdGVtVHlwZSBpdGVtX3R5 cGU7CisJCU9pZAkJCXR5cGVvaWQ7CisJfQkJCWl0ZW1fdHlwZXNbXSA9CisJeworCQl7SnNvbkl0 ZW1UeXBlTnVsbCwgVU5LTk9XTk9JRH0sCisJCXtKc29uSXRlbVR5cGVTdHJpbmcsIFRFWFRPSUR9 LAorCQl7SnNvbkl0ZW1UeXBlTnVtZXJpYywgTlVNRVJJQ09JRH0sCisJCXtKc29uSXRlbVR5cGVC b29sZWFuLCBCT09MT0lEfSwKKwkJe0pzb25JdGVtVHlwZURhdGUsIERBVEVPSUR9LAorCQl7SnNv bkl0ZW1UeXBlVGltZSwgVElNRU9JRH0sCisJCXtKc29uSXRlbVR5cGVUaW1ldHosIFRJTUVUWk9J RH0sCisJCXtKc29uSXRlbVR5cGVUaW1lc3RhbXAsIFRJTUVTVEFNUE9JRH0sCisJCXtKc29uSXRl bVR5cGVUaW1lc3RhbXB0eiwgVElNRVNUQU1QVFpPSUR9LAorCQl7SnNvbkl0ZW1UeXBlQ29tcG9z aXRlLCBjb250ZXh0SXRlbVR5cGVJZH0sCisJCXtKc29uSXRlbVR5cGVJbnZhbGlkLCBJbnZhbGlk T2lkfQorCX07CisKKwlmb3IgKGkgPSAwOyBPaWRJc1ZhbGlkKHR5cGVvaWQgPSBpdGVtX3R5cGVz W2ldLnR5cGVvaWQpOyBpKyspCisJeworCQlOb2RlCSAgICpleHByOworCQlKc29uSXRlbUNvZXJj aW9uICppdGVtX2NvZXJjaW9uID0gbWFrZU5vZGUoSnNvbkl0ZW1Db2VyY2lvbik7CisKKwkJaWYg KHR5cGVvaWQgPT0gVU5LTk9XTk9JRCkKKwkJeworCQkJZXhwciA9IChOb2RlICopIG1ha2VOdWxs Q29uc3QoVU5LTk9XTk9JRCwgLTEsIEludmFsaWRPaWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ Q2FzZVRlc3RFeHByICpwbGFjZWhvbGRlciA9IG1ha2VOb2RlKENhc2VUZXN0RXhwcik7CisKKwkJ CS8qCisJCQkgKiBXZSBhYnVzZSBDYXNlVGVzdEV4cHIgaGVyZSBhcyBwbGFjZWhvbGRlciB0byBw YXNzIHRoZSByZXN1bHQgb2YKKwkJCSAqIEpTT05fVkFMVUUganNvbnBhdGggZXhwcmVzc2lvbiB0 byB0aGUgY29lcmNpb24gZnVuY3Rpb24uCisJCQkgKi8KKwkJCXBsYWNlaG9sZGVyLT50eXBlSWQg PSBpdGVtX3R5cGVzW2ldLnR5cGVvaWQ7CisJCQlwbGFjZWhvbGRlci0+dHlwZU1vZCA9IC0xOwor CQkJcGxhY2Vob2xkZXItPmNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJCWV4cHIgPSAoTm9k ZSAqKSBwbGFjZWhvbGRlcjsKKwkJfQorCisJCWl0ZW1fY29lcmNpb24tPml0ZW1fdHlwZSA9IGl0 ZW1fdHlwZXNbaV0uaXRlbV90eXBlOworCQlpdGVtX2NvZXJjaW9uLT5jb2VyY2lvbiA9IGNvZXJj ZUpzb25FeHByKHBzdGF0ZSwgZXhwciwgcmV0dXJuaW5nLCBmYWxzZSk7CisJCWl0ZW1fY29lcmNp b25zID0gbGFwcGVuZChpdGVtX2NvZXJjaW9ucywgaXRlbV9jb2VyY2lvbik7CisJfQorCisJcmV0 dXJuIGl0ZW1fY29lcmNpb25zOworfQorCisvKgorICogUmV0dXJucyBjb25zdGFudCB2YWx1ZXMg dG8gYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIgZm9yIHZhcmlvdXMKKyAqIG5vbi1FUlJPUiBPTiBF UlJPUi9FTVBUWSBiZWhhdmlvcnMuCisgKgorICogTm90ZSB0aGF0IEpTT05fQkVIQVZJT1JfREVG QVVMVCBleHByZXNzaW9uIGlzIGhhbmRsZWQgYnkgdGhlCisgKiBjYWxsZXIgc2VwYXJhdGVseS4K KyAqLworc3RhdGljIE5vZGUgKgorR2V0SnNvbkJlaGF2aW9yQ29uc3RFeHByKEpzb25CZWhhdmlv clR5cGUgYnR5cGUsIGludCBsb2NhdGlvbikKK3sKKwlEYXR1bQkJdmFsID0gKERhdHVtKSAwOwor CU9pZAkJCXR5cGlkID0gSlNPTkJPSUQ7CisJaW50CQkJbGVuID0gLTE7CisJYm9vbAkJaXNieXZh bCA9IGZhbHNlOworCWJvb2wJCWlzbnVsbCA9IGZhbHNlOworCUNvbnN0CSAgICpjb247CisKKwlz d2l0Y2ggKGJ0eXBlKQorCXsKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZOgorCQkJ dmFsID0gRGlyZWN0RnVuY3Rpb25DYWxsMShqc29uYl9pbiwgQ1N0cmluZ0dldERhdHVtKCJbXSIp KTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9FTVBUWV9PQkpFQ1Q6CisJCQl2 YWwgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25iX2luLCBDU3RyaW5nR2V0RGF0dW0oInt9Iikp OworCQkJYnJlYWs7CisKKwkJY2FzZSBKU09OX0JFSEFWSU9SX1RSVUU6CisJCQl2YWwgPSBCb29s R2V0RGF0dW0odHJ1ZSk7CisJCQl0eXBpZCA9IEJPT0xPSUQ7CisJCQlsZW4gPSBzaXplb2YoYm9v bCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhBVklP Ul9GQUxTRToKKwkJCXZhbCA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisJCQl0eXBpZCA9IEJPT0xP SUQ7CisJCQlsZW4gPSBzaXplb2YoYm9vbCk7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFr OworCisJCWNhc2UgSlNPTl9CRUhBVklPUl9OVUxMOgorCQljYXNlIEpTT05fQkVIQVZJT1JfVU5L Tk9XTjoKKwkJY2FzZSBKU09OX0JFSEFWSU9SX0VNUFRZOgorCQkJdmFsID0gKERhdHVtKSAwOwor CQkJaXNudWxsID0gdHJ1ZTsKKwkJCXR5cGlkID0gSU5UNE9JRDsKKwkJCWxlbiA9IHNpemVvZihp bnQzMik7CisJCQlpc2J5dmFsID0gdHJ1ZTsKKwkJCWJyZWFrOworCisJCWNhc2UgSlNPTl9CRUhB VklPUl9ERUZBVUxUOgorCQljYXNlIEpTT05fQkVIQVZJT1JfRVJST1I6CisJCQkvKiBBbHdheXMg aGFuZGxlZCBpbiB0aGUgY2FsbGVyLiAqLworCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOwor CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIFNRTC9KU09OIGJlaGF2 aW9yICVkIiwgYnR5cGUpOworCQkJYnJlYWs7CisJfQorCisJY29uID0gbWFrZUNvbnN0KHR5cGlk LCAtMSwgSW52YWxpZE9pZCwgbGVuLCB2YWwsIGlzbnVsbCwgaXNieXZhbCk7CisJY29uLT5sb2Nh dGlvbiA9IGxvY2F0aW9uOworCisJcmV0dXJuIChOb2RlICopIGNvbjsKK30KKworLyoKKyAqIFRy YW5zZm9ybSBhIEpTT04gQkVIQVZJT1IgY2xhdXNlLgorICovCitzdGF0aWMgSnNvbkJlaGF2aW9y ICoKK3RyYW5zZm9ybUpzb25CZWhhdmlvcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25CZWhhdmlv ciAqYmVoYXZpb3IsCisJCQkJCSAgSnNvbkJlaGF2aW9yVHlwZSBkZWZhdWx0X2JlaGF2aW9yLAor CQkJCQkgIEpzb25SZXR1cm5pbmcgKnJldHVybmluZykKK3sKKwlKc29uQmVoYXZpb3JUeXBlIGJl aGF2aW9yX3R5cGUgPSBkZWZhdWx0X2JlaGF2aW9yOworCU5vZGUJICAgKmV4cHIgPSBOVUxMOwor CUpzb25Db2VyY2lvbiAqY29lcmNpb24gPSBOVUxMOworCWludAkJCWxvY2F0aW9uID0gLTE7CisK KwlpZiAoYmVoYXZpb3IpCisJeworCQliZWhhdmlvcl90eXBlID0gYmVoYXZpb3ItPmJ0eXBlOwor CQlsb2NhdGlvbiA9IGJlaGF2aW9yLT5sb2NhdGlvbjsKKwkJaWYgKGJlaGF2aW9yX3R5cGUgPT0g SlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQl7CisJCQlleHByID0gdHJhbnNmb3JtRXhwclJlY3Vy c2UocHN0YXRlLCBiZWhhdmlvci0+ZXhwcik7CisJCQlpZiAoIUlzQShleHByLCBDb25zdCkgJiYg IUlzQShleHByLCBGdW5jRXhwcikgJiYKKwkJCQkhSXNBKGV4cHIsIE9wRXhwcikpCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAor CQkJCQkJIGVycm1zZygiY2FuIG9ubHkgc3BlY2lmeSBjb25zdGFudCwgbm9uLWFnZ3JlZ2F0ZSIK KwkJCQkJCQkJIiBmdW5jdGlvbiwgb3Igb3BlcmF0b3IgZXhwcmVzc2lvbiBmb3IiCisJCQkJCQkJ CSIgREVGQVVMVCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGNvbnRhaW5fdmFyX2NsYXVzZShleHByKSkKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJ CQkJCQkgZXJybXNnKCJERUZBVUxUIGV4cHJlc3Npb24gbXVzdCBub3QgY29udGFpbiBjb2x1bW4g cmVmZXJlbmNlcyIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0 aW9uKGV4cHIpKSkpOworCQkJaWYgKGV4cHJlc3Npb25fcmV0dXJuc19zZXQoZXhwcikpCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkJIGVycm1zZygiREVGQVVMVCBleHByZXNzaW9uIG11c3Qgbm90IHJldHVybiBhIHNl dCIpLAorCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIp KSkpOworCQl9CisJfQorCisJaWYgKGV4cHIgPT0gTlVMTCAmJiBiZWhhdmlvcl90eXBlICE9IEpT T05fQkVIQVZJT1JfRVJST1IpCisJCWV4cHIgPSBHZXRKc29uQmVoYXZpb3JDb25zdEV4cHIoYmVo YXZpb3JfdHlwZSwgbG9jYXRpb24pOworCisJaWYgKGV4cHIpCisJeworCQlOb2RlCSAgICpjb2Vy Y2VkX2V4cHIgPSBleHByOworCQlib29sCQlpc251bGwgPSAoSXNBKGV4cHIsIENvbnN0KSAmJiAo KENvbnN0ICopIGV4cHIpLT5jb25zdGlzbnVsbCk7CisKKwkJLyoKKwkJICogQ29lcmNlIE5VTExz IGFuZCAiaW50ZXJuYWwiICh0aGF0IGlzLCBub3Qgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyKQorCQkg KiBqc29uYi12YWx1ZWQgZXhwcmVzc2lvbnMgd2l0aCBhIEpzb25Db2VyY2lvbiBub2RlLgorCQkg KgorCQkgKiBGb3Igb3RoZXIgKHVzZXItc3BlY2lmaWVkKSBub24tTlVMTCB2YWx1ZXMsIHRyeSB0 byBmaW5kIGEgY2FzdCBhbmQKKwkJICogZXJyb3Igb3V0IGlmIG9uZSBpcyBub3QgZm91bmQuCisJ CSAqLworCQlpZiAoaXNudWxsIHx8CisJCQkoZXhwclR5cGUoZXhwcikgPT0gSlNPTkJPSUQgJiYK KwkJCSBiZWhhdmlvcl90eXBlID09IGRlZmF1bHRfYmVoYXZpb3IpKQorCQkJY29lcmNpb24gPSBt YWtlSnNvbkNvZXJjaW9uKHJldHVybmluZywgZmFsc2UsIE5VTEwpOworCQllbHNlCisJCQljb2Vy Y2VkX2V4cHIgPQorCQkJCWNvZXJjZV90b190YXJnZXRfdHlwZShwc3RhdGUsIGV4cHIsIGV4cHJU eXBlKGV4cHIpLAorCQkJCQkJCQkJICByZXR1cm5pbmctPnR5cGlkLCByZXR1cm5pbmctPnR5cG1v ZCwKKwkJCQkJCQkJCSAgQ09FUkNJT05fRVhQTElDSVQsIENPRVJDRV9FWFBMSUNJVF9DQVNULAor CQkJCQkJCQkJICBleHByTG9jYXRpb24oKE5vZGUgKikgYmVoYXZpb3IpKTsKKworCQlpZiAoY29l cmNlZF9leHByID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNP REVfQ0FOTk9UX0NPRVJDRSksCisJCQkJCWVycm1zZygiY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhw cmVzc2lvbiBvZiB0eXBlICVzIHRvICVzIiwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGV4cHJU eXBlKGV4cHIpKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHJldHVybmluZy0+dHlwaWQpKSwK KwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSk7CisJ CWVsc2UKKwkJCWV4cHIgPSBjb2VyY2VkX2V4cHI7CisJfQorCisJcmV0dXJuIG1ha2VKc29uQmVo YXZpb3IoYmVoYXZpb3JfdHlwZSwgZXhwciwgY29lcmNpb24sIGxvY2F0aW9uKTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV90YXJnZXQuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV90YXJnZXQuYwppbmRleCAwY2Q5MDRmOGRhLi5lYTVhYzZiYWZlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdGFyZ2V0LmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3RhcmdldC5jCkBAIC0xOTg5LDYgKzE5ODksMjEgQEAgRmlndXJlQ29sbmFt ZUludGVybmFsKE5vZGUgKm5vZGUsIGNoYXIgKipuYW1lKQogCQkJLyogbWFrZSBKU09OX0FSUkFZ QUdHIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLwogCQkJKm5hbWUgPSAianNvbl9hcnJh eWFnZyI7CiAJCQlyZXR1cm4gMjsKKwkJY2FzZSBUX0pzb25GdW5jRXhwcjoKKwkJCS8qIG1ha2Ug U1FML0pTT04gZnVuY3Rpb25zIGFjdCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiAqLworCQkJc3dp dGNoICgoKEpzb25GdW5jRXhwciAqKSBub2RlKS0+b3ApCisJCQl7CisJCQkJY2FzZSBKU09OX0VY SVNUU19PUDoKKwkJCQkJKm5hbWUgPSAianNvbl9leGlzdHMiOworCQkJCQlyZXR1cm4gMjsKKwkJ CQljYXNlIEpTT05fUVVFUllfT1A6CisJCQkJCSpuYW1lID0gImpzb25fcXVlcnkiOworCQkJCQly ZXR1cm4gMjsKKwkJCQljYXNlIEpTT05fVkFMVUVfT1A6CisJCQkJCSpuYW1lID0gImpzb25fdmFs dWUiOworCQkJCQlyZXR1cm4gMjsKKwkJCX0KKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYnJl YWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggODI5YWFhOGQwZS4uNjgz ODZkMzU0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1hdHRpbmcuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jCkBAIC00NDY2LDYgKzQ0NjYs NTAgQEAgcGFyc2VfZGF0ZXRpbWUodGV4dCAqZGF0ZV90eHQsIHRleHQgKmZtdCwgT2lkIGNvbGxp ZCwgYm9vbCBzdHJpY3QsCiAJfQogfQogCisvKgorICogUGFyc2VzIHRoZSBkYXRldGltZSBmb3Jt YXQgc3RyaW5nIGluICdmbXRfc3RyJyBhbmQgcmV0dXJucyB0cnVlIGlmIGl0CisgKiBjb250YWlu cyBhIHRpbWV6b25lIHNwZWNpZmllciwgZmFsc2UgaWYgbm90LgorICovCitib29sCitkYXRldGlt ZV9mb3JtYXRfaGFzX3R6KGNvbnN0IGNoYXIgKmZtdF9zdHIpCit7CisJYm9vbAkJaW5jYWNoZTsK KwlpbnQJCQlmbXRfbGVuID0gc3RybGVuKGZtdF9zdHIpOworCWludAkJCXJlc3VsdDsKKwlGb3Jt YXROb2RlICpmb3JtYXQ7CisKKwlpZiAoZm10X2xlbiA+IERDSF9DQUNIRV9TSVpFKQorCXsKKwkJ LyoKKwkJICogQWxsb2NhdGUgbmV3IG1lbW9yeSBpZiBmb3JtYXQgcGljdHVyZSBpcyBiaWdnZXIg dGhhbiBzdGF0aWMgY2FjaGUKKwkJICogYW5kIGRvIG5vdCB1c2UgY2FjaGUgKGNhbGwgcGFyc2Vy IGFsd2F5cykKKwkJICovCisJCWluY2FjaGUgPSBmYWxzZTsKKworCQlmb3JtYXQgPSAoRm9ybWF0 Tm9kZSAqKSBwYWxsb2MoKGZtdF9sZW4gKyAxKSAqIHNpemVvZihGb3JtYXROb2RlKSk7CisKKwkJ cGFyc2VfZm9ybWF0KGZvcm1hdCwgZm10X3N0ciwgRENIX2tleXdvcmRzLAorCQkJCQkgRENIX3N1 ZmYsIERDSF9pbmRleCwgRENIX0ZMQUcsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkvKgorCQkg KiBVc2UgY2FjaGUgYnVmZmVycworCQkgKi8KKwkJRENIQ2FjaGVFbnRyeSAqZW50ID0gRENIX2Nh Y2hlX2ZldGNoKGZtdF9zdHIsIGZhbHNlKTsKKworCQlpbmNhY2hlID0gdHJ1ZTsKKwkJZm9ybWF0 ID0gZW50LT5mb3JtYXQ7CisJfQorCisJcmVzdWx0ID0gRENIX2RhdGV0aW1lX3R5cGUoZm9ybWF0 KTsKKworCWlmICghaW5jYWNoZSkKKwkJcGZyZWUoZm9ybWF0KTsKKworCXJldHVybiByZXN1bHQg JiBEQ0hfWk9ORUQ7Cit9CisKIC8qCiAgKiBkb190b190aW1lc3RhbXA6IHNoYXJlZCBjb2RlIGZv ciB0b190aW1lc3RhbXAgYW5kIHRvX2RhdGUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbmIuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCmluZGV4IGMx MGIzZmJlZGYuLjZkNzk3YzA5NTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9q c29uYi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jCkBAIC0yMTYzLDMgKzIx NjMsMzQgQEAganNvbmJfZmxvYXQ4KFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlQR19SRVRVUk5fREFU VU0ocmV0VmFsdWUpOwogfQorCisvKgorICogQ29udmVydCBqc29uYiB0byBhIEMtc3RyaW5nIHN0 cmlwcGluZyBxdW90ZXMgZnJvbSBzY2FsYXIgc3RyaW5ncy4KKyAqLworY2hhciAqCitKc29uYlVu cXVvdGUoSnNvbmIgKmpiKQoreworCWlmIChKQl9ST09UX0lTX1NDQUxBUihqYikpCisJeworCQlK c29uYlZhbHVlCXY7CisKKwkJKHZvaWQpIEpzb25iRXh0cmFjdFNjYWxhcigmamItPnJvb3QsICZ2 KTsKKworCQlpZiAodi50eXBlID09IGpidlN0cmluZykKKwkJCXJldHVybiBwbnN0cmR1cCh2LnZh bC5zdHJpbmcudmFsLCB2LnZhbC5zdHJpbmcubGVuKTsKKwkJZWxzZSBpZiAodi50eXBlID09IGpi dkJvb2wpCisJCQlyZXR1cm4gcHN0cmR1cCh2LnZhbC5ib29sZWFuID8gInRydWUiIDogImZhbHNl Iik7CisJCWVsc2UgaWYgKHYudHlwZSA9PSBqYnZOdW1lcmljKQorCQkJcmV0dXJuIERhdHVtR2V0 Q1N0cmluZyhEaXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfb3V0LAorCQkJCQkJCQkJCQkJCSAg IFBvaW50ZXJHZXREYXR1bSh2LnZhbC5udW1lcmljKSkpOworCQllbHNlIGlmICh2LnR5cGUgPT0g amJ2TnVsbCkKKwkJCXJldHVybiBwc3RyZHVwKCJudWxsIik7CisJCWVsc2UKKwkJeworCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBqc29uYiB2YWx1ZSB0eXBlICVkIiwgdi50eXBlKTsKKwkJ CXJldHVybiBOVUxMOworCQl9CisJfQorCWVsc2UKKwkJcmV0dXJuIEpzb25iVG9DU3RyaW5nKE5V TEwsICZqYi0+cm9vdCwgVkFSU0laRShqYikpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25mdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5j CmluZGV4IDFiMGY0OTQzMjkuLjU0ZGJkN2U3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9qc29uZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNz LmMKQEAgLTI4MzAsNyArMjgzMCw5IEBAIHBvcHVsYXRlX2FycmF5X2RpbV9qc29uYihQb3B1bGF0 ZUFycmF5Q29udGV4dCAqY3R4LCAvKiBjb250ZXh0ICovCiAKIAljaGVja19zdGFja19kZXB0aCgp OwogCi0JaWYgKGpidi0+dHlwZSAhPSBqYnZCaW5hcnkgfHwgIUpzb25Db250YWluZXJJc0FycmF5 KGpiYykpCisJLyogRXZlbiBzY2FsYXJzIGNhbiBlbmQgdXAgaGVyZSB0aGFua3MgdG8gSnNvblBh dGhRdWVyeS9WYWx1ZSgpLiAqLworCWlmIChqYnYtPnR5cGUgIT0gamJ2QmluYXJ5IHx8ICFKc29u Q29udGFpbmVySXNBcnJheShqYmMpIHx8CisJCUpzb25Db250YWluZXJJc1NjYWxhcihqYmMpKQog CXsKIAkJcG9wdWxhdGVfYXJyYXlfcmVwb3J0X2V4cGVjdGVkX2FycmF5KGN0eCwgbmRpbSAtIDEp OwogCQkvKiBHZXR0aW5nIGhlcmUgbWVhbnMgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBzb2Z0bHku ICovCkBAIC0yODM4LDggKzI4NDAsNiBAQCBwb3B1bGF0ZV9hcnJheV9kaW1fanNvbmIoUG9wdWxh dGVBcnJheUNvbnRleHQgKmN0eCwgLyogY29udGV4dCAqLwogCQlyZXR1cm4gZmFsc2U7CiAJfQog Ci0JQXNzZXJ0KCFKc29uQ29udGFpbmVySXNTY2FsYXIoamJjKSk7Ci0KIAlpdCA9IEpzb25iSXRl cmF0b3JJbml0KGpiYyk7CiAKIAl0b2sgPSBKc29uYkl0ZXJhdG9yTmV4dCgmaXQsICZ2YWwsIHRy dWUpOwpAQCAtMzMyMyw2ICszMzIzLDYyIEBAIHByZXBhcmVfY29sdW1uX2NhY2hlKENvbHVtbklP RGF0YSAqY29sdW1uLAogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwogfQogCisvKgorICogUG9wdWxh dGUgYW5kIHJldHVybiB0aGUgdmFsdWUgb2Ygc3BlY2lmaWVkIHR5cGUgZnJvbSBhIGdpdmVuIGpz b24vanNvbmIKKyAqIHZhbHVlICdqc29uX3ZhbCcuICAnY2FjaGUnIGlzIGNhbGxlci1zcGVjaWZp ZWQgcG9pbnRlciB0byBzYXZlIHRoZQorICogQ29sdW1uSU9EYXRhIHRoYXQgd2lsbCBiZSBpbml0 aWFsaXplZCBvbiB0aGUgMXN0IGNhbGwgYW5kIHRoZW4gcmV1c2VkCisgKiBkdXJpbmcgYW55IHN1 YnNlcXVlbnQgY2FsbHMuICAnbWN4dCcgZ2l2ZXMgdGhlIG1lbW9yeSBjb250ZXh0IHRvIGFsbG9j YXRlCisgKiB0aGUgQ29sdW1uSU9EYXRhIGFuZCBhbnkgb3RoZXIgc3Vic2lkaWFyeSBtZW1vcnkg aW4uICAnZXNjb250ZXh0JywKKyAqIGlmIG5vdCBOVUxMLCB0ZWxscyB0aGF0IGFueSBlcnJvcnMg dGhhdCBvY2N1ciBzaG91bGQgYmUgaGFuZGxlZCBzb2Z0bHkuCisgKi8KK0RhdHVtCitqc29uX3Bv cHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJICAgT2lkIHR5 cGlkLCBpbnQzMiB0eXBtb2QsCisJCQkJICAgdm9pZCAqKmNhY2hlLCBNZW1vcnlDb250ZXh0IG1j eHQsCisJCQkJICAgYm9vbCAqaXNudWxsLAorCQkJCSAgIE5vZGUgKmVzY29udGV4dCkKK3sKKwlK c1ZhbHVlCQlqc3YgPSB7MH07CisJSnNvbmJWYWx1ZQlqYnY7CisKKwlqc3YuaXNfanNvbiA9IGpz b25fdHlwZSA9PSBKU09OT0lEOworCisJaWYgKCppc251bGwpCisJeworCQlpZiAoanN2LmlzX2pz b24pCisJCQlqc3YudmFsLmpzb24uc3RyID0gTlVMTDsKKwkJZWxzZQorCQkJanN2LnZhbC5qc29u YiA9IE5VTEw7CisJfQorCWVsc2UgaWYgKGpzdi5pc19qc29uKQorCXsKKwkJdGV4dAkgICAqanNv biA9IERhdHVtR2V0VGV4dFBQKGpzb25fdmFsKTsKKworCQlqc3YudmFsLmpzb24uc3RyID0gVkFS REFUQV9BTlkoanNvbik7CisJCWpzdi52YWwuanNvbi5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUihq c29uKTsKKwkJanN2LnZhbC5qc29uLnR5cGUgPSBKU09OX1RPS0VOX0lOVkFMSUQ7IC8qIG5vdCB1 c2VkIGluCisJCQkJCQkJCQkJCQkgKiBwb3B1bGF0ZV9jb21wb3NpdGUoKSAqLworCX0KKwllbHNl CisJeworCQlKc29uYgkgICAqanNvbmIgPSBEYXR1bUdldEpzb25iUChqc29uX3ZhbCk7CisKKwkJ anN2LnZhbC5qc29uYiA9ICZqYnY7CisKKwkJLyogZmlsbCBiaW5hcnkganNvbmIgdmFsdWUgcG9p bnRpbmcgdG8gamIgKi8KKwkJamJ2LnR5cGUgPSBqYnZCaW5hcnk7CisJCWpidi52YWwuYmluYXJ5 LmRhdGEgPSAmanNvbmItPnJvb3Q7CisJCWpidi52YWwuYmluYXJ5LmxlbiA9IFZBUlNJWkUoanNv bmIpIC0gVkFSSERSU1o7CisJfQorCisJaWYgKCpjYWNoZSA9PSBOVUxMKQorCQkqY2FjaGUgPSBN ZW1vcnlDb250ZXh0QWxsb2NaZXJvKG1jeHQsIHNpemVvZihDb2x1bW5JT0RhdGEpKTsKKworCXJl dHVybiBwb3B1bGF0ZV9yZWNvcmRfZmllbGQoKmNhY2hlLCB0eXBpZCwgdHlwbW9kLCBOVUxMLCBt Y3h0LAorCQkJCQkJCQkgUG9pbnRlckdldERhdHVtKE5VTEwpLCAmanN2LCBpc251bGwsCisJCQkJ CQkJCSBlc2NvbnRleHQpOworfQorCiAvKiByZWN1cnNpdmVseSBwb3B1bGF0ZSBhIHJlY29yZCBm aWVsZCBvciBhbiBhcnJheSBlbGVtZW50IGZyb20gYSBqc29uL2pzb25iIHZhbHVlICovCiBzdGF0 aWMgRGF0dW0KIHBvcHVsYXRlX3JlY29yZF9maWVsZChDb2x1bW5JT0RhdGEgKmNvbCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKaW5kZXggMjU4ZWQ4ZWIxMS4uODk4ODcxOGYxMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2pzb25wYXRoLmMKQEAgLTY4LDcgKzY4LDkgQEAKICNpbmNsdWRlICJsaWJwcS9wcWZv cm1hdC5oIgogI2luY2x1ZGUgIm5vZGVzL21pc2Nub2Rlcy5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgorI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZm9ybWF0dGluZy5oIgogI2luY2x1ZGUgInV0aWxzL2pz b24uaCIKICNpbmNsdWRlICJ1dGlscy9qc29ucGF0aC5oIgogCkBAIC0xMjQwLDMgKzEyNDIsMjgx IEBAIGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJdGVtICpm cm9tLCBKc29uUGF0aEl0ZW0gKnRvLAogCiAJcmV0dXJuIHRydWU7CiB9CisKKy8qIFNRTC9KU09O IGRhdGF0eXBlIHN0YXR1czogKi8KK2VudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cworeworCWpw ZHNOb25EYXRlVGltZSwJCQkvKiBudWxsLCBib29sLCBudW1lcmljLCBzdHJpbmcsIGFycmF5LCBv YmplY3QgKi8KKwlqcGRzVW5rbm93bkRhdGVUaW1lLAkJLyogdW5rbm93biBkYXRldGltZSB0eXBl ICovCisJanBkc0RhdGVUaW1lWm9uZWQsCQkJLyogdGltZXR6LCB0aW1lc3RhbXB0eiAqLworCWpw ZHNEYXRlVGltZU5vblpvbmVkLAkJLyogdGltZSwgdGltZXN0YW1wLCBkYXRlICovCit9OworCisv KiBDb250ZXh0IGZvciBqc3BJc011dGFibGVXYWxrZXIoKSAqLworc3RydWN0IEpzb25QYXRoTXV0 YWJsZUNvbnRleHQKK3sKKwlMaXN0CSAgICp2YXJuYW1lczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUg bmFtZXMgKi8KKwlMaXN0CSAgICp2YXJleHByczsJCS8qIGxpc3Qgb2YgdmFyaWFibGUgZXhwcmVz c2lvbnMgKi8KKwllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMgY3VycmVudDsJLyogc3RhdHVz IG9mIEAgaXRlbSAqLworCWJvb2wJCWxheDsJCQkvKiBqc29ucGF0aCBpcyBsYXggb3Igc3RyaWN0 ICovCisJYm9vbAkJbXV0YWJsZTsJCS8qIHJlc3VsdGluZyBtdXRhYmlsaXR5IHN0YXR1cyAqLwor fTsKKworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBqc3BJc011dGFibGVXYWxr ZXIoSnNvblBhdGhJdGVtICpqcGksCisJCQkJCQkJCQkJCQkJICBzdHJ1Y3QgSnNvblBhdGhNdXRh YmxlQ29udGV4dCAqY3h0KTsKKworLyoKKyAqIEZ1bmN0aW9uIHRvIGNoZWNrIHdoZXRoZXIganNv bnBhdGggZXhwcmVzc2lvbiBpcyBtdXRhYmxlIHRvIGJlIHVzZWQgaW4gdGhlCisgKiBwbGFubmVy IGZ1bmN0aW9uIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKS4KKyAqLworYm9vbAoranNwSXNN dXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhwcnMpCit7 CisJc3RydWN0IEpzb25QYXRoTXV0YWJsZUNvbnRleHQgY3h0OworCUpzb25QYXRoSXRlbSBqcGk7 CisKKwljeHQudmFybmFtZXMgPSB2YXJuYW1lczsKKwljeHQudmFyZXhwcnMgPSB2YXJleHByczsK KwljeHQuY3VycmVudCA9IGpwZHNOb25EYXRlVGltZTsKKwljeHQubGF4ID0gKHBhdGgtPmhlYWRl ciAmIEpTT05QQVRIX0xBWCkgIT0gMDsKKwljeHQubXV0YWJsZSA9IGZhbHNlOworCisJanNwSW5p dCgmanBpLCBwYXRoKTsKKwkodm9pZCkganNwSXNNdXRhYmxlV2Fsa2VyKCZqcGksICZjeHQpOwor CisJcmV0dXJuIGN4dC5tdXRhYmxlOworfQorCisvKgorICogUmVjdXJzaXZlIHdhbGtlciBmb3Ig anNwSXNNdXRhYmxlKCkKKyAqLworc3RhdGljIGVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cwor anNwSXNNdXRhYmxlV2Fsa2VyKEpzb25QYXRoSXRlbSAqanBpLCBzdHJ1Y3QgSnNvblBhdGhNdXRh YmxlQ29udGV4dCAqY3h0KQoreworCUpzb25QYXRoSXRlbSBuZXh0OworCWVudW0gSnNvblBhdGhE YXRhdHlwZVN0YXR1cyBzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisKKwl3aGlsZSAoIWN4dC0+ bXV0YWJsZSkKKwl7CisJCUpzb25QYXRoSXRlbSBhcmc7CisJCWVudW0gSnNvblBhdGhEYXRhdHlw ZVN0YXR1cyBsZWZ0U3RhdHVzOworCQllbnVtIEpzb25QYXRoRGF0YXR5cGVTdGF0dXMgcmlnaHRT dGF0dXM7CisKKwkJc3dpdGNoIChqcGktPnR5cGUpCisJCXsKKwkJCWNhc2UganBpUm9vdDoKKwkJ CQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJCQkJYnJlYWs7CisKKwkJCWNh c2UganBpQ3VycmVudDoKKwkJCQlBc3NlcnQoc3RhdHVzID09IGpwZHNOb25EYXRlVGltZSk7CisJ CQkJc3RhdHVzID0gY3h0LT5jdXJyZW50OworCQkJCWJyZWFrOworCisJCQljYXNlIGpwaUZpbHRl cjoKKwkJCQl7CisJCQkJCWVudW0gSnNvblBhdGhEYXRhdHlwZVN0YXR1cyBwcmV2U3RhdHVzID0g Y3h0LT5jdXJyZW50OworCisJCQkJCWN4dC0+Y3VycmVudCA9IHN0YXR1czsKKwkJCQkJanNwR2V0 QXJnKGpwaSwgJmFyZyk7CisJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCisJ CQkJCWN4dC0+Y3VycmVudCA9IHByZXZTdGF0dXM7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJ Y2FzZSBqcGlWYXJpYWJsZToKKwkJCQl7CisJCQkJCWludDMyCQlsZW47CisJCQkJCWNvbnN0IGNo YXIgKm5hbWUgPSBqc3BHZXRTdHJpbmcoanBpLCAmbGVuKTsKKwkJCQkJTGlzdENlbGwgICAqbGMx OworCQkJCQlMaXN0Q2VsbCAgICpsYzI7CisKKwkJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9u RGF0ZVRpbWUpOworCisJCQkJCWZvcmJvdGgobGMxLCBjeHQtPnZhcm5hbWVzLCBsYzIsIGN4dC0+ dmFyZXhwcnMpCisJCQkJCXsKKwkJCQkJCVN0cmluZwkgICAqdmFybmFtZSA9IGxmaXJzdF9ub2Rl KFN0cmluZywgbGMxKTsKKwkJCQkJCU5vZGUJICAgKnZhcmV4cHIgPSBsZmlyc3QobGMyKTsKKwor CQkJCQkJaWYgKHN0cm5jbXAodmFybmFtZS0+c3ZhbCwgbmFtZSwgbGVuKSkKKwkJCQkJCQljb250 aW51ZTsKKworCQkJCQkJc3dpdGNoIChleHByVHlwZSh2YXJleHByKSkKKwkJCQkJCXsKKwkJCQkJ CQljYXNlIERBVEVPSUQ6CisJCQkJCQkJY2FzZSBUSU1FT0lEOgorCQkJCQkJCWNhc2UgVElNRVNU QU1QT0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJCQkJCQkJ YnJlYWs7CisKKwkJCQkJCQljYXNlIFRJTUVUWk9JRDoKKwkJCQkJCQljYXNlIFRJTUVTVEFNUFRa T0lEOgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVab25lZDsKKwkJCQkJCQkJYnJlYWs7 CisKKwkJCQkJCQlkZWZhdWx0OgorCQkJCQkJCQlzdGF0dXMgPSBqcGRzTm9uRGF0ZVRpbWU7CisJ CQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCQlicmVh azsKKwkJCQl9CisKKwkJCWNhc2UganBpRXF1YWw6CisJCQljYXNlIGpwaU5vdEVxdWFsOgorCQkJ Y2FzZSBqcGlMZXNzOgorCQkJY2FzZSBqcGlHcmVhdGVyOgorCQkJY2FzZSBqcGlMZXNzT3JFcXVh bDoKKwkJCWNhc2UganBpR3JlYXRlck9yRXF1YWw6CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRz Tm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldExlZnRBcmcoanBpLCAmYXJnKTsKKwkJCQlsZWZ0U3Rh dHVzID0ganNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisKKwkJCQlqc3BHZXRSaWdodEFy ZyhqcGksICZhcmcpOworCQkJCXJpZ2h0U3RhdHVzID0ganNwSXNNdXRhYmxlV2Fsa2VyKCZhcmcs IGN4dCk7CisKKwkJCQkvKgorCQkJCSAqIENvbXBhcmlzb24gb2YgZGF0ZXRpbWUgdHlwZSB3aXRo IGRpZmZlcmVudCB0aW1lem9uZSBzdGF0dXMKKwkJCQkgKiBpcyBtdXRhYmxlLgorCQkJCSAqLwor CQkJCWlmIChsZWZ0U3RhdHVzICE9IGpwZHNOb25EYXRlVGltZSAmJgorCQkJCQlyaWdodFN0YXR1 cyAhPSBqcGRzTm9uRGF0ZVRpbWUgJiYKKwkJCQkJKGxlZnRTdGF0dXMgPT0ganBkc1Vua25vd25E YXRlVGltZSB8fAorCQkJCQkgcmlnaHRTdGF0dXMgPT0ganBkc1Vua25vd25EYXRlVGltZSB8fAor CQkJCQkgbGVmdFN0YXR1cyAhPSByaWdodFN0YXR1cykpCisJCQkJCWN4dC0+bXV0YWJsZSA9IHRy dWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpTm90OgorCQkJY2FzZSBqcGlJc1Vua25vd246 CisJCQljYXNlIGpwaUV4aXN0czoKKwkJCWNhc2UganBpUGx1czoKKwkJCWNhc2UganBpTWludXM6 CisJCQkJQXNzZXJ0KHN0YXR1cyA9PSBqcGRzTm9uRGF0ZVRpbWUpOworCQkJCWpzcEdldEFyZyhq cGksICZhcmcpOworCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmYXJnLCBjeHQpOworCQkJCWJyZWFr OworCisJCQljYXNlIGpwaUFuZDoKKwkJCWNhc2UganBpT3I6CisJCQljYXNlIGpwaUFkZDoKKwkJ CWNhc2UganBpU3ViOgorCQkJY2FzZSBqcGlNdWw6CisJCQljYXNlIGpwaURpdjoKKwkJCWNhc2Ug anBpTW9kOgorCQkJY2FzZSBqcGlTdGFydHNXaXRoOgorCQkJCUFzc2VydChzdGF0dXMgPT0ganBk c05vbkRhdGVUaW1lKTsKKwkJCQlqc3BHZXRMZWZ0QXJnKGpwaSwgJmFyZyk7CisJCQkJanNwSXNN dXRhYmxlV2Fsa2VyKCZhcmcsIGN4dCk7CisJCQkJanNwR2V0UmlnaHRBcmcoanBpLCAmYXJnKTsK KwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFyZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJY2Fz ZSBqcGlJbmRleEFycmF5OgorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwganBpLT5jb250ZW50LmFy cmF5Lm5lbGVtczsgaSsrKQorCQkJCXsKKwkJCQkJSnNvblBhdGhJdGVtIGZyb207CisJCQkJCUpz b25QYXRoSXRlbSB0bzsKKworCQkJCQlpZiAoanNwR2V0QXJyYXlTdWJzY3JpcHQoanBpLCAmZnJv bSwgJnRvLCBpKSkKKwkJCQkJCWpzcElzTXV0YWJsZVdhbGtlcigmdG8sIGN4dCk7CisKKwkJCQkJ anNwSXNNdXRhYmxlV2Fsa2VyKCZmcm9tLCBjeHQpOworCQkJCX0KKwkJCQkvKiBGQUxMVEhST1VH SCAqLworCisJCQljYXNlIGpwaUFueUFycmF5OgorCQkJCWlmICghY3h0LT5sYXgpCisJCQkJCXN0 YXR1cyA9IGpwZHNOb25EYXRlVGltZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlBbnk6CisJ CQkJaWYgKGpwaS0+Y29udGVudC5hbnlib3VuZHMuZmlyc3QgPiAwKQorCQkJCQlzdGF0dXMgPSBq cGRzTm9uRGF0ZVRpbWU7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UganBpRGF0ZXRpbWU6CisJCQkJ aWYgKGpwaS0+Y29udGVudC5hcmcpCisJCQkJeworCQkJCQljaGFyCSAgICp0ZW1wbGF0ZTsKKwor CQkJCQlqc3BHZXRBcmcoanBpLCAmYXJnKTsKKwkJCQkJaWYgKGFyZy50eXBlICE9IGpwaVN0cmlu ZykKKwkJCQkJeworCQkJCQkJc3RhdHVzID0ganBkc05vbkRhdGVUaW1lOworCQkJCQkJYnJlYWs7 CS8qIHRoZXJlIHdpbGwgYmUgcnVudGltZSBlcnJvciAqLworCQkJCQl9CisKKwkJCQkJdGVtcGxh dGUgPSBqc3BHZXRTdHJpbmcoJmFyZywgTlVMTCk7CisJCQkJCWlmIChkYXRldGltZV9mb3JtYXRf aGFzX3R6KHRlbXBsYXRlKSkKKwkJCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZVpvbmVkOworCQkJ CQllbHNlCisJCQkJCQlzdGF0dXMgPSBqcGRzRGF0ZVRpbWVOb25ab25lZDsKKwkJCQl9CisJCQkJ ZWxzZQorCQkJCXsKKwkJCQkJc3RhdHVzID0ganBkc1Vua25vd25EYXRlVGltZTsKKwkJCQl9CisJ CQkJYnJlYWs7CisKKwkJCWNhc2UganBpTGlrZVJlZ2V4OgorCQkJCUFzc2VydChzdGF0dXMgPT0g anBkc05vbkRhdGVUaW1lKTsKKwkJCQlqc3BJbml0QnlCdWZmZXIoJmFyZywganBpLT5iYXNlLCBq cGktPmNvbnRlbnQubGlrZV9yZWdleC5leHByKTsKKwkJCQlqc3BJc011dGFibGVXYWxrZXIoJmFy ZywgY3h0KTsKKwkJCQlicmVhazsKKworCQkJCS8qIGxpdGVyYWxzICovCisJCQljYXNlIGpwaU51 bGw6CisJCQljYXNlIGpwaVN0cmluZzoKKwkJCWNhc2UganBpTnVtZXJpYzoKKwkJCWNhc2UganBp Qm9vbDoKKwkJCQlicmVhazsKKwkJCQkvKiBhY2Nlc3NvcnMgKi8KKwkJCWNhc2UganBpS2V5Ogor CQkJY2FzZSBqcGlBbnlLZXk6CisJCQkJLyogc3BlY2lhbCBpdGVtcyAqLworCQkJY2FzZSBqcGlT dWJzY3JpcHQ6CisJCQljYXNlIGpwaUxhc3Q6CisJCQkJLyogaXRlbSBtZXRob2RzICovCisJCQlj YXNlIGpwaVR5cGU6CisJCQljYXNlIGpwaVNpemU6CisJCQljYXNlIGpwaUFiczoKKwkJCWNhc2Ug anBpRmxvb3I6CisJCQljYXNlIGpwaUNlaWxpbmc6CisJCQljYXNlIGpwaURvdWJsZToKKwkJCWNh c2UganBpS2V5VmFsdWU6CisJCQljYXNlIGpwaUJpZ2ludDoKKwkJCWNhc2UganBpQm9vbGVhbjoK KwkJCWNhc2UganBpRGVjaW1hbDoKKwkJCWNhc2UganBpSW50ZWdlcjoKKwkJCWNhc2UganBpTnVt YmVyOgorCQkJY2FzZSBqcGlTdHJpbmdGdW5jOgorCQkJCXN0YXR1cyA9IGpwZHNOb25EYXRlVGlt ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlUaW1lOgorCQkJY2FzZSBqcGlEYXRlOgorCQkJ Y2FzZSBqcGlUaW1lc3RhbXA6CisJCQkJc3RhdHVzID0ganBkc0RhdGVUaW1lTm9uWm9uZWQ7CisJ CQkJY3h0LT5tdXRhYmxlID0gdHJ1ZTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBqcGlUaW1lVHo6 CisJCQljYXNlIGpwaVRpbWVzdGFtcFR6OgorCQkJCXN0YXR1cyA9IGpwZHNEYXRlVGltZU5vblpv bmVkOworCQkJCWN4dC0+bXV0YWJsZSA9IHRydWU7CisJCQkJYnJlYWs7CisKKwkJfQorCisJCWlm ICghanNwR2V0TmV4dChqcGksICZuZXh0KSkKKwkJCWJyZWFrOworCisJCWpwaSA9ICZuZXh0Owor CX0KKworCXJldHVybiBzdGF0dXM7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvanNvbnBhdGhfZXhlYy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMu YwppbmRleCAzZjMwYmM2MjIyLi45ZThmMmJiZGJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMKQEAgLTIzNCw2ICsyMzQsMTIgQEAgc3RhdGljIEpzb25QYXRoRXhlY1Jlc3Vs dCBhcHBlbmRCb29sUmVzdWx0KEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwKIAkJCQkJCQkJCQkg ICBKc29uUGF0aEl0ZW0gKmpzcCwgSnNvblZhbHVlTGlzdCAqZm91bmQsIEpzb25QYXRoQm9vbCBy ZXMpOwogc3RhdGljIHZvaWQgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4 dCwgSnNvblBhdGhJdGVtICppdGVtLAogCQkJCQkJCUpzb25iVmFsdWUgKnZhbHVlKTsKK3N0YXRp YyBKc29uYlZhbHVlICpHZXRKc29uUGF0aFZhcih2b2lkICpjeHQsIGNoYXIgKnZhck5hbWUsIGlu dCB2YXJOYW1lTGVuLAorCQkJCQkJCQkgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGludCAqYmFz ZU9iamVjdElkKTsKK3N0YXRpYyBpbnQJQ291bnRKc29uUGF0aFZhcnModm9pZCAqY3h0KTsKK3N0 YXRpYyB2b2lkIEpzb25JdGVtRnJvbURhdHVtKERhdHVtIHZhbCwgT2lkIHR5cGlkLCBpbnQzMiB0 eXBtb2QsCisJCQkJCQkJICBKc29uYlZhbHVlICpyZXMpOworc3RhdGljIHZvaWQgSnNvbmJWYWx1 ZUluaXROdW1lcmljRGF0dW0oSnNvbmJWYWx1ZSAqamJ2LCBEYXR1bSBudW0pOwogc3RhdGljIHZv aWQgZ2V0SnNvblBhdGhWYXJpYWJsZShKc29uUGF0aEV4ZWNDb250ZXh0ICpjeHQsCiAJCQkJCQkJ CUpzb25QYXRoSXRlbSAqdmFyaWFibGUsIEpzb25iVmFsdWUgKnZhbHVlKTsKIHN0YXRpYyBpbnQJ Y291bnRWYXJpYWJsZXNGcm9tSnNvbmIodm9pZCAqdmFyc0pzb25iKTsKQEAgLTI4NjUsNiArMjg3 MSwxNTUgQEAgZ2V0SnNvblBhdGhJdGVtKEpzb25QYXRoRXhlY0NvbnRleHQgKmN4dCwgSnNvblBh dGhJdGVtICppdGVtLAogCX0KIH0KIAorLyoKKyAqIFJldHVybnMgdGhlIGNvbXB1dGVkIHZhbHVl IG9mIGEgSlNPTiBwYXRoIHZhcmlhYmxlIHdpdGggZ2l2ZW4gbmFtZS4KKyAqLworc3RhdGljIEpz b25iVmFsdWUgKgorR2V0SnNvblBhdGhWYXIodm9pZCAqY3h0LCBjaGFyICp2YXJOYW1lLCBpbnQg dmFyTmFtZUxlbiwKKwkJCSAgIEpzb25iVmFsdWUgKmJhc2VPYmplY3QsIGludCAqYmFzZU9iamVj dElkKQoreworCUpzb25QYXRoVmFyaWFibGUgKnZhciA9IE5VTEw7CisJTGlzdAkgICAqdmFycyA9 IGN4dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlKc29uYlZhbHVlICpyZXN1bHQ7CisJaW50CQkJaWQg PSAxOworCisJZm9yZWFjaChsYywgdmFycykKKwl7CisJCUpzb25QYXRoVmFyaWFibGUgKmN1cnZh ciA9IGxmaXJzdChsYyk7CisKKwkJaWYgKCFzdHJuY21wKGN1cnZhci0+bmFtZSwgdmFyTmFtZSwg dmFyTmFtZUxlbikpCisJCXsKKwkJCXZhciA9IGN1cnZhcjsKKwkJCWJyZWFrOworCQl9CisKKwkJ aWQrKzsKKwl9CisKKwlpZiAodmFyID09IE5VTEwpCisJeworCQkqYmFzZU9iamVjdElkID0gLTE7 CisJCXJldHVybiBOVUxMOworCX0KKworCXJlc3VsdCA9IHBhbGxvYyhzaXplb2YoSnNvbmJWYWx1 ZSkpOworCWlmICh2YXItPmlzbnVsbCkKKwl7CisJCSpiYXNlT2JqZWN0SWQgPSAwOworCQlyZXN1 bHQtPnR5cGUgPSBqYnZOdWxsOworCX0KKwllbHNlCisJCUpzb25JdGVtRnJvbURhdHVtKHZhci0+ dmFsdWUsIHZhci0+dHlwaWQsIHZhci0+dHlwbW9kLCByZXN1bHQpOworCisJKmJhc2VPYmplY3Qg PSAqcmVzdWx0OworCSpiYXNlT2JqZWN0SWQgPSBpZDsKKworCXJldHVybiByZXN1bHQ7Cit9CisK K3N0YXRpYyBpbnQKK0NvdW50SnNvblBhdGhWYXJzKHZvaWQgKmN4dCkKK3sKKwlMaXN0CSAgICp2 YXJzID0gKExpc3QgKikgY3h0OworCisJcmV0dXJuIGxpc3RfbGVuZ3RoKHZhcnMpOworfQorCisK Ky8qCisgKiBJbml0aWFsaXplIEpzb25iVmFsdWUgdG8gcGFzcyB0byBqc29ucGF0aCBleGVjdXRv ciBmcm9tIGdpdmVuCisgKiBkYXR1bSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuCisgKi8K K3N0YXRpYyB2b2lkCitKc29uSXRlbUZyb21EYXR1bShEYXR1bSB2YWwsIE9pZCB0eXBpZCwgaW50 MzIgdHlwbW9kLCBKc29uYlZhbHVlICpyZXMpCit7CisJc3dpdGNoICh0eXBpZCkKKwl7CisJCWNh c2UgQk9PTE9JRDoKKwkJCXJlcy0+dHlwZSA9IGpidkJvb2w7CisJCQlyZXMtPnZhbC5ib29sZWFu ID0gRGF0dW1HZXRCb29sKHZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBOVU1FUklDT0lEOgorCQkJ SnNvbmJWYWx1ZUluaXROdW1lcmljRGF0dW0ocmVzLCB2YWwpOworCQkJYnJlYWs7CisJCWNhc2Ug SU5UMk9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rp b25DYWxsMShpbnQyX251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5UNE9JRDoK KwkJCUpzb25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShp bnQ0X251bWVyaWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgSU5UOE9JRDoKKwkJCUpzb25i VmFsdWVJbml0TnVtZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShpbnQ4X251bWVy aWMsIHZhbCkpOworCQkJYnJlYWs7CisJCWNhc2UgRkxPQVQ0T0lEOgorCQkJSnNvbmJWYWx1ZUlu aXROdW1lcmljRGF0dW0ocmVzLCBEaXJlY3RGdW5jdGlvbkNhbGwxKGZsb2F0NF9udW1lcmljLCB2 YWwpKTsKKwkJCWJyZWFrOworCQljYXNlIEZMT0FUOE9JRDoKKwkJCUpzb25iVmFsdWVJbml0TnVt ZXJpY0RhdHVtKHJlcywgRGlyZWN0RnVuY3Rpb25DYWxsMShmbG9hdDhfbnVtZXJpYywgdmFsKSk7 CisJCQlicmVhazsKKwkJY2FzZSBURVhUT0lEOgorCQljYXNlIFZBUkNIQVJPSUQ6CisJCQlyZXMt PnR5cGUgPSBqYnZTdHJpbmc7CisJCQlyZXMtPnZhbC5zdHJpbmcudmFsID0gVkFSREFUQV9BTlko dmFsKTsKKwkJCXJlcy0+dmFsLnN0cmluZy5sZW4gPSBWQVJTSVpFX0FOWV9FWEhEUih2YWwpOwor CQkJYnJlYWs7CisJCWNhc2UgREFURU9JRDoKKwkJY2FzZSBUSU1FT0lEOgorCQljYXNlIFRJTUVU Wk9JRDoKKwkJY2FzZSBUSU1FU1RBTVBPSUQ6CisJCWNhc2UgVElNRVNUQU1QVFpPSUQ6CisJCQly ZXMtPnR5cGUgPSBqYnZEYXRldGltZTsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnZhbHVlID0gdmFs OworCQkJcmVzLT52YWwuZGF0ZXRpbWUudHlwaWQgPSB0eXBpZDsKKwkJCXJlcy0+dmFsLmRhdGV0 aW1lLnR5cG1vZCA9IHR5cG1vZDsKKwkJCXJlcy0+dmFsLmRhdGV0aW1lLnR6ID0gMDsKKwkJCWJy ZWFrOworCQljYXNlIEpTT05CT0lEOgorCQkJeworCQkJCUpzb25iVmFsdWUgKmpidiA9IHJlczsK KwkJCQlKc29uYgkgICAqamIgPSBEYXR1bUdldEpzb25iUCh2YWwpOworCisJCQkJaWYgKEpzb25D b250YWluZXJJc1NjYWxhcigmamItPnJvb3QpKQorCQkJCXsKKwkJCQkJYm9vbAkJcmVzdWx0IFBH X1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJCQlyZXN1bHQgPSBKc29uYkV4dHJhY3RTY2Fs YXIoJmpiLT5yb290LCBqYnYpOworCQkJCQlBc3NlcnQocmVzdWx0KTsKKwkJCQl9CisJCQkJZWxz ZQorCQkJCQlKc29uYkluaXRCaW5hcnkoamJ2LCBqYik7CisJCQkJYnJlYWs7CisJCQl9CisJCWNh c2UgSlNPTk9JRDoKKwkJCXsKKwkJCQl0ZXh0CSAgICp0eHQgPSBEYXR1bUdldFRleHRQKHZhbCk7 CisJCQkJY2hhcgkgICAqc3RyID0gdGV4dF90b19jc3RyaW5nKHR4dCk7CisJCQkJSnNvbmIJICAg KmpiOworCisJCQkJamIgPSBEYXR1bUdldEpzb25iUChEaXJlY3RGdW5jdGlvbkNhbGwxKGpzb25i X2luLAorCQkJCQkJCQkJCQkJCQlDU3RyaW5nR2V0RGF0dW0oc3RyKSkpOworCQkJCXBmcmVlKHN0 cik7CisKKwkJCQlKc29uSXRlbUZyb21EYXR1bShKc29uYlBHZXREYXR1bShqYiksIEpTT05CT0lE LCAtMSwgcmVzKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ CWVycm1zZygiY291bGQgbm90IGNvbnZlcnQgdmFsdWUgb2YgdHlwZSAlcyB0byBqc29ucGF0aCIs CisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZSh0eXBpZCkpKTsKKwl9Cit9CisKKy8qIEluaXRpYWxp emUgbnVtZXJpYyB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBkYXR1bSAqLworc3RhdGljIHZvaWQKK0pz b25iVmFsdWVJbml0TnVtZXJpY0RhdHVtKEpzb25iVmFsdWUgKmpidiwgRGF0dW0gbnVtKQorewor CWpidi0+dHlwZSA9IGpidk51bWVyaWM7CisJamJ2LT52YWwubnVtZXJpYyA9IERhdHVtR2V0TnVt ZXJpYyhudW0pOworfQorCiAvKgogICogR2V0IHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSBwYXNzZWQg dG8ganNvbnBhdGggZXhlY3V0b3IKICAqLwpAQCAtMzYwMSwzICszNzU2LDE3MCBAQCBjb21wYXJl RGF0ZXRpbWUoRGF0dW0gdmFsMSwgT2lkIHR5cGlkMSwgRGF0dW0gdmFsMiwgT2lkIHR5cGlkMiwK IAogCXJldHVybiBEYXR1bUdldEludDMyKERpcmVjdEZ1bmN0aW9uQ2FsbDIoY21wZnVuYywgdmFs MSwgdmFsMikpOwogfQorCisvKgorICogRXhlY3V0b3ItY2FsbGFibGUgSlNPTl9FWElTVFMgaW1w bGVtZW50YXRpb24KKyAqCisgKiBSZXR1cm5zIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2luZyBlcnJv cnMgaWYgJ2Vycm9yJyBpcyBub3QgTlVMTCwgc2V0dGluZworICogKmVycm9yIHRvIHRydWUuCisg Ki8KK2Jvb2wKK0pzb25QYXRoRXhpc3RzKERhdHVtIGpiLCBKc29uUGF0aCAqanAsIGJvb2wgKmVy cm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25QYXRoRXhlY1Jlc3VsdCByZXM7CisKKwlyZXMgPSBl eGVjdXRlSnNvblBhdGgoanAsIHZhcnMsCisJCQkJCQkgIEdldEpzb25QYXRoVmFyLCBDb3VudEpz b25QYXRoVmFycywKKwkJCQkJCSAgRGF0dW1HZXRKc29uYlAoamIpLCAhZXJyb3IsIE5VTEwsIHRy dWUpOworCisJQXNzZXJ0KGVycm9yIHx8ICFqcGVySXNFcnJvcihyZXMpKTsKKworCWlmIChlcnJv ciAmJiBqcGVySXNFcnJvcihyZXMpKQorCQkqZXJyb3IgPSB0cnVlOworCisJcmV0dXJuIHJlcyA9 PSBqcGVyT2s7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1FVRVJZIGltcGxl bWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dpbmcgZXJyb3Jz IGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0cnVlLiAgKmVt cHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitEYXR1bQorSnNv blBhdGhRdWVyeShEYXR1bSBqYiwgSnNvblBhdGggKmpwLCBKc29uV3JhcHBlciB3cmFwcGVyLCBi b29sICplbXB0eSwKKwkJCSAgYm9vbCAqZXJyb3IsIExpc3QgKnZhcnMpCit7CisJSnNvbmJWYWx1 ZSAqc2luZ2xldG9uOworCWJvb2wJCXdyYXA7CisJSnNvblZhbHVlTGlzdCBmb3VuZCA9IHswfTsK KwlKc29uUGF0aEV4ZWNSZXN1bHQgcmVzOworCWludAkJCWNvdW50OworCisJcmVzID0gZXhlY3V0 ZUpzb25QYXRoKGpwLCB2YXJzLAorCQkJCQkJICBHZXRKc29uUGF0aFZhciwgQ291bnRKc29uUGF0 aFZhcnMsCisJCQkJCQkgIERhdHVtR2V0SnNvbmJQKGpiKSwgIWVycm9yLCAmZm91bmQsIHRydWUp OworCUFzc2VydChlcnJvciB8fCAhanBlcklzRXJyb3IocmVzKSk7CisJaWYgKGVycm9yICYmIGpw ZXJJc0Vycm9yKHJlcykpCisJeworCQkqZXJyb3IgPSB0cnVlOworCQkqZW1wdHkgPSBmYWxzZTsK KwkJcmV0dXJuIChEYXR1bSkgMDsKKwl9CisKKwkvKiBXUkFQIG9yIG5vdD8gKi8KKwljb3VudCA9 IEpzb25WYWx1ZUxpc3RMZW5ndGgoJmZvdW5kKTsKKwlzaW5nbGV0b24gPSBjb3VudCA+IDAgPyBK c29uVmFsdWVMaXN0SGVhZCgmZm91bmQpIDogTlVMTDsKKwlpZiAoc2luZ2xldG9uID09IE5VTEwp CisJCXdyYXAgPSBmYWxzZTsKKwllbHNlIGlmICh3cmFwcGVyID09IEpTV19OT05FIHx8IHdyYXBw ZXIgPT0gSlNXX1VOU1BFQykKKwkJd3JhcCA9IGZhbHNlOworCWVsc2UgaWYgKHdyYXBwZXIgPT0g SlNXX1VOQ09ORElUSU9OQUwpCisJCXdyYXAgPSB0cnVlOworCWVsc2UgaWYgKHdyYXBwZXIgPT0g SlNXX0NPTkRJVElPTkFMKQorCQl3cmFwID0gY291bnQgPiAxIHx8CisJCQlJc0FKc29uYlNjYWxh cihzaW5nbGV0b24pIHx8CisJCQkoc2luZ2xldG9uLT50eXBlID09IGpidkJpbmFyeSAmJgorCQkJ IEpzb25Db250YWluZXJJc1NjYWxhcihzaW5nbGV0b24tPnZhbC5iaW5hcnkuZGF0YSkpOworCWVs c2UKKwl7CisJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbiB3cmFwcGVyICVkIiwgd3Jh cHBlcik7CisJCXdyYXAgPSBmYWxzZTsKKwl9CisKKwlpZiAod3JhcCkKKwkJcmV0dXJuIEpzb25i UEdldERhdHVtKEpzb25iVmFsdWVUb0pzb25iKHdyYXBJdGVtc0luQXJyYXkoJmZvdW5kKSkpOwor CisJLyogTm8gd3JhcHBpbmcgbWVhbnMgb25seSBvbmUgaXRlbSBpcyBleHBlY3RlZC4gKi8KKwlp ZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVlOwor CQkJcmV0dXJuIChEYXR1bSkgMDsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9NT1JFX1RIQU5fT05FX1NRTF9KU09OX0lURU0pLAorCQkJCSBlcnJtc2coIkpT T04gcGF0aCBleHByZXNzaW9uIGluIEpTT05fUVVFUlkgc2hvdWxkIHJldHVybiBzaW5nbGV0b24g aXRlbSB3aXRob3V0IHdyYXBwZXIiKSwKKwkJCQkgZXJyaGludCgiVXNlIFdJVEggV1JBUFBFUiBj bGF1c2UgdG8gd3JhcCBTUUwvSlNPTiBpdGVtIHNlcXVlbmNlIGludG8gYXJyYXkuIikpKTsKKwl9 CisKKwlpZiAoc2luZ2xldG9uKQorCQlyZXR1cm4gSnNvbmJQR2V0RGF0dW0oSnNvbmJWYWx1ZVRv SnNvbmIoc2luZ2xldG9uKSk7CisKKwkqZW1wdHkgPSB0cnVlOworCXJldHVybiBQb2ludGVyR2V0 RGF0dW0oTlVMTCk7Cit9CisKKy8qCisgKiBFeGVjdXRvci1jYWxsYWJsZSBKU09OX1ZBTFVFIGlt cGxlbWVudGF0aW9uCisgKgorICogUmV0dXJucyBOVUxMIGluc3RlYWQgb2YgdGhyb3dpbmcgZXJy b3JzIGlmICdlcnJvcicgaXMgbm90IE5VTEwsIHNldHRpbmcKKyAqICplcnJvciB0byB0cnVlLiAg KmVtcHR5IGlzIHNldCB0byB0cnVlIGlmIG5vIG1hdGNoIGlzIGZvdW5kLgorICovCitKc29uYlZh bHVlICoKK0pzb25QYXRoVmFsdWUoRGF0dW0gamIsIEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHks IGJvb2wgKmVycm9yLCBMaXN0ICp2YXJzKQoreworCUpzb25iVmFsdWUgKnJlczsKKwlKc29uVmFs dWVMaXN0IGZvdW5kID0gezB9OworCUpzb25QYXRoRXhlY1Jlc3VsdCBqcGVyIFBHX1VTRURfRk9S X0FTU0VSVFNfT05MWTsKKwlpbnQJCQljb3VudDsKKworCWpwZXIgPSBleGVjdXRlSnNvblBhdGgo anAsIHZhcnMsIEdldEpzb25QYXRoVmFyLCBDb3VudEpzb25QYXRoVmFycywKKwkJCQkJCSAgIERh dHVtR2V0SnNvbmJQKGpiKSwKKwkJCQkJCSAgICFlcnJvciwgJmZvdW5kLCB0cnVlKTsKKworCUFz c2VydChlcnJvciB8fCAhanBlcklzRXJyb3IoanBlcikpOworCisJaWYgKGVycm9yICYmIGpwZXJJ c0Vycm9yKGpwZXIpKQorCXsKKwkJKmVycm9yID0gdHJ1ZTsKKwkJKmVtcHR5ID0gZmFsc2U7CisJ CXJldHVybiBOVUxMOworCX0KKworCWNvdW50ID0gSnNvblZhbHVlTGlzdExlbmd0aCgmZm91bmQp OworCisJKmVtcHR5ID0gKGNvdW50ID09IDApOworCisJaWYgKCplbXB0eSkKKwkJcmV0dXJuIE5V TEw7CisKKwkvKiBKU09OX1ZBTFVFIGV4cGVjdHMgdG8gZ2V0IG9ubHkgc2luZ2xldG9ucy4gKi8K KwlpZiAoY291bnQgPiAxKQorCXsKKwkJaWYgKGVycm9yKQorCQl7CisJCQkqZXJyb3IgPSB0cnVl OworCQkJcmV0dXJuIE5VTEw7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfTU9SRV9USEFOX09ORV9TUUxfSlNPTl9JVEVNKSwKKwkJCQkgZXJybXNnKCJKU09O IHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIHNj YWxhciBpdGVtIikpKTsKKwl9CisKKwlyZXMgPSBKc29uVmFsdWVMaXN0SGVhZCgmZm91bmQpOwor CWlmIChyZXMtPnR5cGUgPT0gamJ2QmluYXJ5ICYmIEpzb25Db250YWluZXJJc1NjYWxhcihyZXMt PnZhbC5iaW5hcnkuZGF0YSkpCisJCUpzb25iRXh0cmFjdFNjYWxhcihyZXMtPnZhbC5iaW5hcnku ZGF0YSwgcmVzKTsKKworCS8qIEpTT05fVkFMVUUgZXhwZWN0cyB0byBnZXQgb25seSBzY2FsYXJz LiAqLworCWlmICghSXNBSnNvbmJTY2FsYXIocmVzKSkKKwl7CisJCWlmIChlcnJvcikKKwkJewor CQkJKmVycm9yID0gdHJ1ZTsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NRTF9KU09OX1NDQUxBUl9SRVFVSVJFRCksCisJCQkJ IGVycm1zZygiSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJu IHNpbmdsZXRvbiBzY2FsYXIgaXRlbSIpKSk7CisJfQorCisJaWYgKHJlcy0+dHlwZSA9PSBqYnZO dWxsKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiByZXM7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMKaW5kZXggYTkyOGE4YzU1ZC4uODY1NjU2Y2JhMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwpAQCAtNDc1LDYgKzQ3NSw4IEBAIHN0YXRpYyB2b2lkIGdldF9jb25zdF9leHBy KENvbnN0ICpjb25zdHZhbCwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJICAgaW50 IHNob3d0eXBlKTsKIHN0YXRpYyB2b2lkIGdldF9jb25zdF9jb2xsYXRpb24oQ29uc3QgKmNvbnN0 dmFsLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIHZvaWQgZ2V0X2pzb25fZm9y bWF0KEpzb25Gb3JtYXQgKmZvcm1hdCwgU3RyaW5nSW5mbyBidWYpOworc3RhdGljIHZvaWQgZ2V0 X2pzb25fcmV0dXJuaW5nKEpzb25SZXR1cm5pbmcgKnJldHVybmluZywgU3RyaW5nSW5mbyBidWYs CisJCQkJCQkJICAgYm9vbCBqc29uX2Zvcm1hdF9ieV9kZWZhdWx0KTsKIHN0YXRpYyB2b2lkIGdl dF9qc29uX2NvbnN0cnVjdG9yKEpzb25Db25zdHJ1Y3RvckV4cHIgKmN0b3IsCiAJCQkJCQkJCSBk ZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KTsKIHN0YXRpYyB2b2lk IGdldF9qc29uX2NvbnN0cnVjdG9yX29wdGlvbnMoSnNvbkNvbnN0cnVjdG9yRXhwciAqY3RvciwK QEAgLTUxNyw2ICs1MTksOCBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcXVhbGlmaWVkX3R5cGVf bmFtZShPaWQgdHlwaWQpOwogc3RhdGljIHRleHQgKnN0cmluZ190b190ZXh0KGNoYXIgKnN0cik7 CiBzdGF0aWMgY2hhciAqZmxhdHRlbl9yZWxvcHRpb25zKE9pZCByZWxpZCk7CiBzdGF0aWMgdm9p ZCBnZXRfcmVsb3B0aW9ucyhTdHJpbmdJbmZvIGJ1ZiwgRGF0dW0gcmVsb3B0aW9ucyk7CitzdGF0 aWMgdm9pZCBnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQsCisJCQkJCQkJICAgYm9vbCBzaG93aW1wbGljaXQpOwogCiAjZGVmaW5lIG9u bHlfbWFya2VyKHJ0ZSkgICgocnRlKS0+aW5oID8gIiIgOiAiT05MWSAiKQogCkBAIC04MzAwLDYg KzgzMDQsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFyZW50Tm9kZSwgaW50 IHByZXR0eUZsYWdzKQogCQljYXNlIFRfV2luZG93RnVuYzoKIAkJY2FzZSBUX0Z1bmNFeHByOgog CQljYXNlIFRfSnNvbkNvbnN0cnVjdG9yRXhwcjoKKwkJY2FzZSBUX0pzb25FeHByOgogCQkJLyog ZnVuY3Rpb24tbGlrZTogbmFtZSguLikgb3IgbmFtZVsuLl0gKi8KIAkJCXJldHVybiB0cnVlOwog CkBAIC04NDcxLDYgKzg0NzYsNyBAQCBpc1NpbXBsZU5vZGUoTm9kZSAqbm9kZSwgTm9kZSAqcGFy ZW50Tm9kZSwgaW50IHByZXR0eUZsYWdzKQogCQkJCWNhc2UgVF9Hcm91cGluZ0Z1bmM6CS8qIG93 biBwYXJlbnRoZXNlcyAqLwogCQkJCWNhc2UgVF9XaW5kb3dGdW5jOgkvKiBvd24gcGFyZW50aGVz ZXMgKi8KIAkJCQljYXNlIFRfQ2FzZUV4cHI6CS8qIG90aGVyIHNlcGFyYXRvcnMgKi8KKwkJCQlj YXNlIFRfSnNvbkV4cHI6CS8qIG93biBwYXJlbnRoZXNlcyAqLwogCQkJCQlyZXR1cm4gdHJ1ZTsK IAkJCQlkZWZhdWx0OgogCQkJCQlyZXR1cm4gZmFsc2U7CkBAIC04NTg2LDYgKzg1OTIsNjQgQEAg Z2V0X3J1bGVfZXhwcl9wYXJlbihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQs CiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGNvbnRleHQtPmJ1ZiwgJyknKTsKIH0KIAorc3RhdGlj IHZvaWQKK2dldF9qc29uX2JlaGF2aW9yKEpzb25CZWhhdmlvciAqYmVoYXZpb3IsIGRlcGFyc2Vf Y29udGV4dCAqY29udGV4dCwKKwkJCQkgIGNvbnN0IGNoYXIgKm9uKQoreworCS8qCisJICogVGhl IG9yZGVyIG9mIGFycmF5IGVsZW1lbnRzIG11c3QgY29ycmVzcG9uZCB0byB0aGUgb3JkZXIgb2YK KwkgKiBKc29uQmVoYXZpb3JUeXBlIG1lbWJlcnMuCisJICovCisJY29uc3QgY2hhciAqYmVoYXZp b3JfbmFtZXNbXSA9CisJeworCQkiIE5VTEwiLAorCQkiIEVSUk9SIiwKKwkJIiBFTVBUWSIsCisJ CSIgVFJVRSIsCisJCSIgRkFMU0UiLAorCQkiIFVOS05PV04iLAorCQkiIEVNUFRZIEFSUkFZIiwK KwkJIiBFTVBUWSBPQkpFQ1QiLAorCQkiIERFRkFVTFQgIgorCX07CisKKwlpZiAoKGludCkgYmVo YXZpb3ItPmJ0eXBlIDwgMCB8fCBiZWhhdmlvci0+YnR5cGUgPj0gbGVuZ3Rob2YoYmVoYXZpb3Jf bmFtZXMpKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBqc29uIGJlaGF2aW9yIHR5cGU6ICVkIiwg YmVoYXZpb3ItPmJ0eXBlKTsKKworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY29udGV4dC0+YnVm LCBiZWhhdmlvcl9uYW1lc1tiZWhhdmlvci0+YnR5cGVdKTsKKworCWlmIChiZWhhdmlvci0+YnR5 cGUgPT0gSlNPTl9CRUhBVklPUl9ERUZBVUxUKQorCQlnZXRfcnVsZV9leHByKGJlaGF2aW9yLT5l eHByLCBjb250ZXh0LCBmYWxzZSk7CisKKwlhcHBlbmRTdHJpbmdJbmZvKGNvbnRleHQtPmJ1Ziwg IiBPTiAlcyIsIG9uKTsKK30KKworLyoKKyAqIGdldF9qc29uX2V4cHJfb3B0aW9ucworICoKKyAq IFBhcnNlIGJhY2sgY29tbW9uIG9wdGlvbnMgZm9yIEpTT05fUVVFUlksIEpTT05fVkFMVUUsIEpT T05fRVhJU1RTLgorICovCitzdGF0aWMgdm9pZAorZ2V0X2pzb25fZXhwcl9vcHRpb25zKEpzb25F eHByICpqc2V4cHIsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKKwkJCQkJICBKc29uQmVoYXZp b3JUeXBlIGRlZmF1bHRfYmVoYXZpb3IpCit7CisJaWYgKGpzZXhwci0+b3AgPT0gSlNPTl9RVUVS WV9PUCkKKwl7CisJCWlmIChqc2V4cHItPndyYXBwZXIgPT0gSlNXX0NPTkRJVElPTkFMKQorCQkJ YXBwZW5kU3RyaW5nSW5mbyhjb250ZXh0LT5idWYsICIgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVS Iik7CisJCWVsc2UgaWYgKGpzZXhwci0+d3JhcHBlciA9PSBKU1dfVU5DT05ESVRJT05BTCkKKwkJ CWFwcGVuZFN0cmluZ0luZm8oY29udGV4dC0+YnVmLCAiIFdJVEggVU5DT05ESVRJT05BTCBXUkFQ UEVSIik7CisKKwkJaWYgKGpzZXhwci0+b21pdF9xdW90ZXMpCisJCQlhcHBlbmRTdHJpbmdJbmZv KGNvbnRleHQtPmJ1ZiwgIiBPTUlUIFFVT1RFUyIpOworCX0KKworCWlmIChqc2V4cHItPm9uX2Vt cHR5ICYmIGpzZXhwci0+b25fZW1wdHktPmJ0eXBlICE9IGRlZmF1bHRfYmVoYXZpb3IpCisJCWdl dF9qc29uX2JlaGF2aW9yKGpzZXhwci0+b25fZW1wdHksIGNvbnRleHQsICJFTVBUWSIpOworCisJ aWYgKGpzZXhwci0+b25fZXJyb3IgJiYganNleHByLT5vbl9lcnJvci0+YnR5cGUgIT0gZGVmYXVs dF9iZWhhdmlvcikKKwkJZ2V0X2pzb25fYmVoYXZpb3IoanNleHByLT5vbl9lcnJvciwgY29udGV4 dCwgIkVSUk9SIik7Cit9CiAKIC8qIC0tLS0tLS0tLS0KICAqIGdldF9ydWxlX2V4cHIJCQktIFBh cnNlIGJhY2sgYW4gZXhwcmVzc2lvbgpAQCAtOTc0NSw2ICs5ODA5LDcgQEAgZ2V0X3J1bGVfZXhw cihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQlicmVhazsK IAorCiAJCWNhc2UgVF9Kc29uVmFsdWVFeHByOgogCQkJewogCQkJCUpzb25WYWx1ZUV4cHIgKmp2 ZSA9IChKc29uVmFsdWVFeHByICopIG5vZGU7CkBAIC05Nzk0LDYgKzk4NTksNjQgQEAgZ2V0X3J1 bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQl9CiAJCQli cmVhazsKIAorCQljYXNlIFRfSnNvbkV4cHI6CisJCQl7CisJCQkJSnNvbkV4cHIgICAqamV4cHIg PSAoSnNvbkV4cHIgKikgbm9kZTsKKworCQkJCXN3aXRjaCAoamV4cHItPm9wKQorCQkJCXsKKwkJ CQkJY2FzZSBKU09OX0VYSVNUU19PUDoKKwkJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LCAiSlNPTl9FWElTVFMoIik7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBKU09OX1FVRVJZX09Q OgorCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJKU09OX1FVRVJZKCIpOworCQkJ CQkJYnJlYWs7CisJCQkJCWNhc2UgSlNPTl9WQUxVRV9PUDoKKwkJCQkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiSlNPTl9WQUxVRSgiKTsKKwkJCQkJCWJyZWFrOworCQkJCX0KKworCQkJ CWdldF9ydWxlX2V4cHIoamV4cHItPmZvcm1hdHRlZF9leHByLCBjb250ZXh0LCBzaG93aW1wbGlj aXQpOworCisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCisJCQkJZ2V0 X2pzb25fcGF0aF9zcGVjKGpleHByLT5wYXRoX3NwZWMsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7 CisKKwkJCQlpZiAoamV4cHItPnBhc3NpbmdfdmFsdWVzKQorCQkJCXsKKwkJCQkJTGlzdENlbGwg ICAqbGMxLAorCQkJCQkJCSAgICpsYzI7CisJCQkJCWJvb2wJCW5lZWRjb21tYSA9IGZhbHNlOwor CisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBU1NJTkcgIik7CisKKwkJCQkJ Zm9yYm90aChsYzEsIGpleHByLT5wYXNzaW5nX25hbWVzLAorCQkJCQkJCWxjMiwgamV4cHItPnBh c3NpbmdfdmFsdWVzKQorCQkJCQl7CisJCQkJCQlpZiAobmVlZGNvbW1hKQorCQkJCQkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJCW5lZWRjb21tYSA9IHRydWU7CisK KwkJCQkJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikgbGZpcnN0KGxjMiksIGNvbnRleHQsIHNob3dp bXBsaWNpdCk7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiBBUyAlcyIsCisJCQkJCQkJ CQkJICgoU3RyaW5nICopIGxmaXJzdF9ub2RlKFN0cmluZywgbGMxKSktPnN2YWwpOworCQkJCQl9 CisJCQkJfQorCisJCQkJaWYgKGpleHByLT5vcCAhPSBKU09OX0VYSVNUU19PUCB8fAorCQkJCQlq ZXhwci0+cmV0dXJuaW5nLT50eXBpZCAhPSBCT09MT0lEKQorCQkJCQlnZXRfanNvbl9yZXR1cm5p bmcoamV4cHItPnJldHVybmluZywgY29udGV4dC0+YnVmLAorCQkJCQkJCQkJICAgamV4cHItPm9w ID09IEpTT05fUVVFUllfT1ApOworCisJCQkJZ2V0X2pzb25fZXhwcl9vcHRpb25zKGpleHByLCBj b250ZXh0LAorCQkJCQkJCQkJICBqZXhwci0+b3AgIT0gSlNPTl9FWElTVFNfT1AgPworCQkJCQkJ CQkJICBKU09OX0JFSEFWSU9SX05VTEwgOgorCQkJCQkJCQkJICBKU09OX0JFSEFWSU9SX0ZBTFNF KTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiKSIpOworCQkJfQorCQkJYnJl YWs7CisKIAkJY2FzZSBUX0xpc3Q6CiAJCQl7CiAJCQkJY2hhcgkgICAqc2VwOwpAQCAtOTkxNyw2 ICsxMDA0MCw3IEBAIGxvb2tzX2xpa2VfZnVuY3Rpb24oTm9kZSAqbm9kZSkKIAkJY2FzZSBUX01p bk1heEV4cHI6CiAJCWNhc2UgVF9TUUxWYWx1ZUZ1bmN0aW9uOgogCQljYXNlIFRfWG1sRXhwcjoK KwkJY2FzZSBUX0pzb25FeHByOgogCQkJLyogdGhlc2UgYXJlIGFsbCBhY2NlcHRlZCBieSBmdW5j X2V4cHJfY29tbW9uX3N1YmV4cHIgKi8KIAkJCXJldHVybiB0cnVlOwogCQlkZWZhdWx0OgpAQCAt MTA3ODYsNiArMTA5MTAsMTggQEAgZ2V0X2NvbnN0X2NvbGxhdGlvbihDb25zdCAqY29uc3R2YWws IGRlcGFyc2VfY29udGV4dCAqY29udGV4dCkKIAl9CiB9CiAKKy8qCisgKiBnZXRfanNvbl9wYXRo X3NwZWMJCS0gUGFyc2UgYmFjayBhIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9uCisgKi8KK3N0YXRp YyB2b2lkCitnZXRfanNvbl9wYXRoX3NwZWMoTm9kZSAqcGF0aF9zcGVjLCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQsIGJvb2wgc2hvd2ltcGxpY2l0KQoreworCWlmIChJc0EocGF0aF9zcGVjLCBD b25zdCkpCisJCWdldF9jb25zdF9leHByKChDb25zdCAqKSBwYXRoX3NwZWMsIGNvbnRleHQsIC0x KTsKKwllbHNlCisJCWdldF9ydWxlX2V4cHIocGF0aF9zcGVjLCBjb250ZXh0LCBzaG93aW1wbGlj aXQpOworfQorCiAvKgogICogZ2V0X2pzb25fZm9ybWF0CQkJLSBQYXJzZSBiYWNrIGEgSnNvbkZv cm1hdCBub2RlCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHBy LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCmluZGV4IGEyOGRkY2RkNzcuLjJi YWM4NzcwMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjQwLDYgKzI0MCw5IEBAIHR5 cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9YTUxFWFBSLAogCUVFT1BfSlNPTl9DT05TVFJV Q1RPUiwKIAlFRU9QX0lTX0pTT04sCisJRUVPUF9KU09ORVhQUl9QQVRILAorCUVFT1BfSlNPTkVY UFJfQ09FUkNJT04sCisJRUVPUF9KU09ORVhQUl9DT0VSQ0lPTl9GSU5JU0gsCiAJRUVPUF9BR0dS RUYsCiAJRUVPUF9HUk9VUElOR19GVU5DLAogCUVFT1BfV0lORE9XX0ZVTkMsCkBAIC02OTIsNiAr Njk1LDIxIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJSnNvbklzUHJlZGljYXRl ICpwcmVkOwkvKiBvcmlnaW5hbCBleHByZXNzaW9uIG5vZGUgKi8KIAkJfQkJCWlzX2pzb247CiAK KwkJLyogZm9yIEVFT1BfSlNPTkVYUFJfUEFUSCAqLworCQlzdHJ1Y3QKKwkJeworCQkJc3RydWN0 IEpzb25FeHByU3RhdGUgKmpzZXN0YXRlOworCQl9CQkJanNvbmV4cHI7CisKKwkJLyogZm9yIEVF T1BfSlNPTkVYUFJfQ09FUkNJT04gKi8KKwkJc3RydWN0CisJCXsKKwkJCUpzb25Db2VyY2lvbiAq Y29lcmNpb247CisJCQlGbWdySW5mbyAgICppbnB1dF9maW5mbzsKKwkJCU9pZAkJCXR5cGlvcGFy YW07CisJCQl2b2lkCSAgICpqc29uX3BvcHVsYXRlX3R5cGVfY2FjaGU7CisJCQlFcnJvclNhdmVD b250ZXh0ICplc2NvbnRleHQ7CisJCX0JCQlqc29uZXhwcl9jb2VyY2lvbjsKIAl9CQkJZDsKIH0g RXhwckV2YWxTdGVwOwogCkBAIC03NTUsNyArNzczLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbkNv bnN0cnVjdG9yRXhwclN0YXRlCiAJaW50CQkJbmFyZ3M7CiB9IEpzb25Db25zdHJ1Y3RvckV4cHJT dGF0ZTsKIAotCiAvKiBmdW5jdGlvbnMgaW4gZXhlY0V4cHIuYyAqLwogZXh0ZXJuIHZvaWQgRXhw ckV2YWxQdXNoU3RlcChFeHByU3RhdGUgKmVzLCBjb25zdCBFeHByRXZhbFN0ZXAgKnMpOwogCkBA IC04MDksNiArODI2LDExIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsWG1sRXhwcihFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wKTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkNvbnN0 cnVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsCiAJCQkJCQkJCQlFeHBy Q29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxKc29uSXNQcmVkaWNhdGUo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCk7CitleHRlcm4gdm9pZCBFeGVjRXZh bEpzb25Db2VyY2lvbihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkJ CQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNFdmFsSnNvbkNvZXJj aW9uRmluaXNoKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOworZXh0ZXJuIGlu dAlFeGVjRXZhbEpzb25FeHByUGF0aChFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w LAorCQkJCQkJCQkgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNFdmFs R3JvdXBpbmdGdW5jKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3ApOwogZXh0ZXJu IHZvaWQgRXhlY0V2YWxTdWJQbGFuKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3As CiAJCQkJCQkJRXhwckNvbnRleHQgKmVjb250ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXgg NDQ0YTVmMGZkNS4uMTk2MWQ5ZTBhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTEwMDgsNiAr MTAwOCw5MyBAQCB0eXBlZGVmIHN0cnVjdCBEb21haW5Db25zdHJhaW50U3RhdGUKIAlFeHByU3Rh dGUgICpjaGVja19leHByc3RhdGU7CS8qIGNoZWNrX2V4cHIncyBldmFsIHN0YXRlLCBvciBOVUxM ICovCiB9IERvbWFpbkNvbnN0cmFpbnRTdGF0ZTsKIAorLyoKKyAqIEluZm9ybWF0aW9uIGFib3V0 IHRoZSBzdGF0ZSBvZiBKc29uUGF0aCogZXZhbHVhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg SnNvbkV4cHJQb3N0RXZhbFN0YXRlCit7CisJLyogRGlkIEpzb25QYXRoKiBldmFsdWF0aW9uIGNh dXNlIGFuIGVycm9yPyAqLworCU51bGxhYmxlRGF0dW0gZXJyb3I7CisKKwkvKiBJcyB0aGUgcmVz dWx0IG9mIEpzb25QYXRoKiBldmFsdWF0aW9uIGVtcHR5PyAqLworCU51bGxhYmxlRGF0dW0gZW1w dHk7CisKKwkvKgorCSAqIEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgd2lsbCBzZXQgdGhpcyB0byB0 aGUgYWRkcmVzcyBvZiB0aGUgc3RlcCB0byB1c2UKKwkgKiB0byBjb2VyY2UgdGhlIHJlc3VsdCBv ZiBKc29uUGF0aCogZXZhbHVhdGlvbiB0byB0aGUgUkVUVVJOSU5HIHR5cGUuCisJICogQWxzbyBz ZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHBvc3NpYmxlIHN0ZXAgYWRkcmVzc2VzIHRoYXQgdGhpcyBj b3VsZCBiZQorCSAqIHNldCB0byBpbiB0aGUgZGVmaW5pdGlvbiBvZiBKc29uRXhwclN0YXRlLgor CSAqLworCWludAkJCWp1bXBfZXZhbF9jb2VyY2lvbjsKK30gSnNvbkV4cHJQb3N0RXZhbFN0YXRl OworCisvKiBTdGF0ZSBmb3IgZXZhbHVhdGluZyBhIEpzb25FeHByLCB0b28gYmlnIHRvIGlubGlu ZSAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkV4cHJTdGF0ZQoreworCS8qIG9yaWdpbmFsIGV4cHJl c3Npb24gbm9kZSAqLworCUpzb25FeHByICAgKmpzZXhwcjsKKworCS8qIHZhbHVlL2lzbnVsbCBm b3IgZm9ybWF0dGVkX2V4cHIgKi8KKwlOdWxsYWJsZURhdHVtIGZvcm1hdHRlZF9leHByOworCisJ LyogdmFsdWUvaXNudWxsIGZvciBwYXRoc3BlYyAqLworCU51bGxhYmxlRGF0dW0gcGF0aHNwZWM7 CisKKwkvKiBKc29uUGF0aFZhcmlhYmxlIGVudHJpZXMgZm9yIHBhc3NpbmdfdmFsdWVzICovCisJ TGlzdAkgICAqYXJnczsKKworCS8qCisJICogUGVyLXJvdyByZXN1bHQgc3RhdHVzIGluZm8gcG9w dWxhdGVkIGJ5IEV4ZWNFdmFsSnNvbkV4cHJQYXRoKCkgYW5kCisJICogRXhlY0V2YWxKc29uQ29l cmNpb25GaW5pc2goKS4KKwkgKi8KKwlKc29uRXhwclBvc3RFdmFsU3RhdGUgcG9zdF9ldmFsOwor CisJLyoKKwkgKiBBZGRyZXNzZXMgb2YgdGhlIHN0ZXBzIHRoYXQgaW1wbGVtZW50cyB0aGUgbm9u LUVSUk9SIHZhcmlhbnQgb2YgT04KKwkgKiBFTVBUWSBhbmQgT04gRVJST1IgYmVoYXZpb3JzLCBy ZXNwZWN0aXZlbHkuCisJICovCisJaW50CQkJanVtcF9lbXB0eTsKKwlpbnQJCQlqdW1wX2Vycm9y OworCisJLyoKKwkgKiBBZGRyZXNzZXMgb2Ygc3RlcHMgdG8gcGVyZm9ybSB0aGUgY29lcmNpb24g b2YgdGhlIEpzb25QYXRoKiByZXN1bHQKKwkgKiB2YWx1ZSB0byB0aGUgUkVUVVJOSU5HIHR5cGUu ICBFYWNoIGFkZHJlc3MgcG9pbnRzIHRvIGVpdGhlciAxKSBhCisJICogc3BlY2lhbCBFRU9QX0pT T05FWFBSX0NPRVJDSU9OIHN0ZXAgdGhhdCBoYW5kbGVzIGNvZXJjaW9uIHVzaW5nIHRoZQorCSAq IFJFVFVSTklORyB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24gb3IgYnkgdXNpbmcganNvbl92aWFfcG9w dWxhdGUoKSwgb3IgMikKKwkgKiBhbiBleHByZXNzaW9uIHN1Y2ggYXMgQ29lcmNlVmlhSU8uICBJ dCBtYXkgYmUgLTEgaWYgbm8gY29lcmNpb24gaXMKKwkgKiBuZWNlc3NhcnkuCisJICoKKwkgKiBq dW1wX2V2YWxfcmVzdWx0X2NvZXJjaW9uIHBvaW50cyB0byB0aGUgc3RlcCB0byBldmFsdWF0ZSB0 aGUgY29lcmNpb24KKwkgKiBnaXZlbiBpbiBKc29uRXhwci5yZXN1bHRfY29lcmNpb24uCisJICov CisJaW50CQkJanVtcF9ldmFsX3Jlc3VsdF9jb2VyY2lvbjsKKworCS8qIEp1bXAgdG8gZW5kIHRv IHNraXAgYWxsIHRoZSBzdGVwcyBhZnRlciBFRU9QX0pTT05FWFBSX1BBVEguICovCisJaW50CQkJ anVtcF9lbmQ7CisKKwkvKgorCSAqIGV2YWxfaXRlbV9jb2VyY2lvbl9qdW1wcyBpcyBhbiBhcnJh eSBvZiBudW1faXRlbV9jb2VyY2lvbnMgZWxlbWVudHMKKwkgKiBlYWNoIGNvbnRhaW5pbmcgYSBz dGVwIGFkZHJlc3MgdG8gZXZhbHVhdGUgdGhlIGNvZXJjaW9uIGZyb20gYSB2YWx1ZSBvZgorCSAq IHRoZSBnaXZlbiBKc29uSXRlbVR5cGUgdG8gdGhlIFJFVFVSTklORyB0eXBlLCBvciAtMSBpZiBu byBjb2VyY2lvbiBpcworCSAqIG5lY2Vzc2FyeS4gIGl0ZW1fY29lcmNpb25fdmlhX2V4cHIgaXMg YW4gYXJyYXkgb2YgYm9vbGVhbiBmbGFncyBvZiB0aGUKKwkgKiBzYW1lIGxlbmd0aCB0aGF0IGlu ZGljYXRlcyB3aGV0aGVyIGVhY2ggdmFsaWQgc3RlcCBhZGRyZXNzIGluIHRoZQorCSAqIGV2YWxf aXRlbV9jb2VyY2lvbl9qdW1wcyBhcnJheSBwb2ludHMgdG8gYW4gZXhwcmVzc2lvbiBvciBhCisJ ICogRUVPUF9KU09ORVhQUl9DT0VSQ0lPTiBzdGVwLiAgRXhlY0V2YWxKc29uRXhwclBhdGgoKSB3 aWxsIGNhdXNlIGFuCisJICogZXJyb3IgaWYgaXQncyB0aGUgbGF0dGVyLCBiZWNhdXNlIHRoYXQg bW9kZSBvZiBjb2VyY2lvbiBpcyBub3QKKwkgKiBzdXBwb3J0ZWQgZm9yIGFsbCBKc29uSXRlbVR5 cGVzLgorCSAqLworCWludAkJCW51bV9pdGVtX2NvZXJjaW9uczsKKwlpbnQJCSAgICpldmFsX2l0 ZW1fY29lcmNpb25fanVtcHM7CisJYm9vbAkgICAqaXRlbV9jb2VyY2lvbl92aWFfZXhwcjsKKwor CS8qCisJICogRm9yIHBhc3Npbmcgd2hlbiBpbml0aWFsaXppbmcgYSBFRU9QX0lPQ09FUkNFX1NB RkUgc3RlcCBmb3IgYW55CisJICogQ29lcmNlVmlhSU8gbm9kZXMgaW4gdGhlIGV4cHJlc3Npb24g dGhhdCBtdXN0IGJlIGV2YWx1YXRlZCBpbiBhbgorCSAqIGVycm9yLXNhZmUgbWFubmVyLgorCSAq LworCUVycm9yU2F2ZUNvbnRleHQgZXNjb250ZXh0OworfSBKc29uRXhwclN0YXRlOworCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqCQkJCSBFeGVjdXRvciBTdGF0ZSBUcmVlcwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvbWFrZWZ1bmNzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApp bmRleCAyZGM3OTY0OGQyLi45MWQ5NWZjNTJiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9tYWtlZnVuY3MuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaApAQCAtMTEy LDYgKzExMiw4IEBAIGV4dGVybiBKc29uRm9ybWF0ICptYWtlSnNvbkZvcm1hdChKc29uRm9ybWF0 VHlwZSB0eXBlLCBKc29uRW5jb2RpbmcgZW5jb2RpbmcsCiAJCQkJCQkJCSAgaW50IGxvY2F0aW9u KTsKIGV4dGVybiBKc29uVmFsdWVFeHByICptYWtlSnNvblZhbHVlRXhwcihFeHByICpyYXdfZXhw ciwgRXhwciAqZm9ybWF0dGVkX2V4cHIsCiAJCQkJCQkJCQkJSnNvbkZvcm1hdCAqZm9ybWF0KTsK K2V4dGVybiBKc29uQmVoYXZpb3IgKm1ha2VKc29uQmVoYXZpb3IoSnNvbkJlaGF2aW9yVHlwZSB0 eXBlLCBOb2RlICpleHByLAorCQkJCQkJCQkJICBKc29uQ29lcmNpb24gKmNvZXJjaW9uLCBpbnQg bG9jYXRpb24pOwogZXh0ZXJuIE5vZGUgKm1ha2VKc29uS2V5VmFsdWUoTm9kZSAqa2V5LCBOb2Rl ICp2YWx1ZSk7CiBleHRlcm4gTm9kZSAqbWFrZUpzb25Jc1ByZWRpY2F0ZShOb2RlICpleHByLCBK c29uRm9ybWF0ICpmb3JtYXQsCiAJCQkJCQkJCSBKc29uVmFsdWVUeXBlIGl0ZW1fdHlwZSwgYm9v bCB1bmlxdWVfa2V5cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkNjBlMTQ4ZmYyLi43Y2Vl M2JlYzQ5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNzAwLDYgKzE3MDAsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHJpZ2dlclRyYW5zaXRpb24KIAogLyogTm9kZXMgZm9yIFNRTC9KU09OIHN1 cHBvcnQgKi8KIAorLyoKKyAqIEpzb25QYXRoU3BlYyAtCisgKgkJcmVwcmVzZW50YXRpb24gb2Yg SlNPTiBwYXRoIGNvbnN0YW50CisgKi8KK3R5cGVkZWYgY2hhciAqSnNvblBhdGhTcGVjOworCiAv KgogICogSnNvbk91dHB1dCAtCiAgKgkJcmVwcmVzZW50YXRpb24gb2YgSlNPTiBvdXRwdXQgY2xh dXNlIChSRVRVUk5JTkcgdHlwZSBbRk9STUFUIGZvcm1hdF0pCkBAIC0xNzExLDYgKzE3MTcsNDcg QEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbk91dHB1dAogCUpzb25SZXR1cm5pbmcgKnJldHVybmluZzsJ LyogUkVUVVJOSU5HIEZPUk1BVCBjbGF1c2UgYW5kIHR5cGUgT2lkcyAqLwogfSBKc29uT3V0cHV0 OwogCisvKgorICogSnNvbkFyZ3VtZW50IC0KKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBhcmd1bWVu dCBmcm9tIEpTT04gUEFTU0lORyBjbGF1c2UKKyAqLwordHlwZWRlZiBzdHJ1Y3QgSnNvbkFyZ3Vt ZW50Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlKc29uVmFsdWVFeHByICp2YWw7CQkJLyogYXJndW1l bnQgdmFsdWUgZXhwcmVzc2lvbiAqLworCWNoYXIJICAgKm5hbWU7CQkJLyogYXJndW1lbnQgbmFt ZSAqLworfSBKc29uQXJndW1lbnQ7CisKKy8qCisgKiBKc29uUXVvdGVzIC0KKyAqCQlyZXByZXNl bnRhdGlvbiBvZiBbS0VFUHxPTUlUXSBRVU9URVMgY2xhdXNlIGZvciBKU09OX1FVRVJZKCkKKyAq LwordHlwZWRlZiBlbnVtIEpzb25RdW90ZXMKK3sKKwlKU19RVU9URVNfVU5TUEVDLAkJCS8qIHVu c3BlY2lmaWVkICovCisJSlNfUVVPVEVTX0tFRVAsCQkJCS8qIEtFRVAgUVVPVEVTICovCisJSlNf UVVPVEVTX09NSVQsCQkJCS8qIE9NSVQgUVVPVEVTICovCit9IEpzb25RdW90ZXM7CisKKy8qCisg KiBKc29uRnVuY0V4cHIgLQorICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRpb24gb2YgSlNP TiBmdW5jdGlvbiBleHByZXNzaW9ucworICovCit0eXBlZGVmIHN0cnVjdCBKc29uRnVuY0V4cHIK K3sKKwlOb2RlVGFnCQl0eXBlOworCUpzb25FeHByT3AJb3A7CQkJCS8qIGV4cHJlc3Npb24gdHlw ZSAqLworCUpzb25WYWx1ZUV4cHIgKmNvbnRleHRfaXRlbTsJLyogY29udGV4dCBpdGVtIGV4cHJl c3Npb24gKi8KKwlOb2RlCSAgICpwYXRoc3BlYzsJCS8qIEpTT04gcGF0aCBzcGVjaWZpY2F0aW9u IGV4cHJlc3Npb24gKi8KKwlMaXN0CSAgICpwYXNzaW5nOwkJLyogbGlzdCBvZiBQQVNTSU5HIGNs YXVzZSBhcmd1bWVudHMsIGlmIGFueSAqLworCUpzb25PdXRwdXQgKm91dHB1dDsJCQkvKiBvdXRw dXQgY2xhdXNlLCBpZiBzcGVjaWZpZWQgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OwkJLyog T04gRU1QVFkgYmVoYXZpb3IgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2Vycm9yOwkJLyogT04gRVJS T1IgYmVoYXZpb3IgKi8KKwlKc29uV3JhcHBlciB3cmFwcGVyOwkJLyogYXJyYXkgd3JhcHBlciBi ZWhhdmlvciAoSlNPTl9RVUVSWSBvbmx5KSAqLworCUpzb25RdW90ZXMJcXVvdGVzOwkJCS8qIG9t aXQgb3Iga2VlcCBxdW90ZXM/IChKU09OX1FVRVJZIG9ubHkpICovCisJaW50CQkJbG9jYXRpb247 CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLworfSBKc29uRnVuY0V4cHI7 CisKIC8qCiAgKiBKc29uS2V5VmFsdWUgLQogICoJCXVudHJhbnNmb3JtZWQgcmVwcmVzZW50YXRp b24gb2YgSlNPTiBvYmplY3Qga2V5LXZhbHVlIHBhaXIgZm9yCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmlu ZGV4IDRhMTU0NjA2ZDIuLmZhZDJkZDkwOTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0xNTUy LDYgKzE1NTIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgWG1sRXhwcgogCWludAkJCWxvY2F0aW9uOwog fSBYbWxFeHByOwogCisvKgorICogSnNvbkV4cHJPcCAtCisgKgkJZW51bWVyYXRpb24gb2YgSlNP TiBmdW5jdGlvbnMgdXNpbmcgSlNPTiBwYXRoCisgKi8KK3R5cGVkZWYgZW51bSBKc29uRXhwck9w Cit7CisJSlNPTl9WQUxVRV9PUCwJCQkJLyogSlNPTl9WQUxVRSgpICovCisJSlNPTl9RVUVSWV9P UCwJCQkJLyogSlNPTl9RVUVSWSgpICovCisJSlNPTl9FWElTVFNfT1AsCQkJCS8qIEpTT05fRVhJ U1RTKCkgKi8KK30gSnNvbkV4cHJPcDsKKwogLyoKICAqIEpzb25FbmNvZGluZyAtCiAgKgkJcmVw cmVzZW50YXRpb24gb2YgSlNPTiBFTkNPRElORyBjbGF1c2UKQEAgLTE2NzAsNiArMTY4MSwxNzUg QEAgdHlwZWRlZiBzdHJ1Y3QgSnNvbklzUHJlZGljYXRlCiAJaW50CQkJbG9jYXRpb247CQkvKiB0 b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwogfSBKc29uSXNQcmVkaWNhdGU7CiAK Ky8qIE5vZGVzIHVzZWQgaW4gU1FML0pTT04gcXVlcnkgZnVuY3Rpb25zICovCisKKy8qCisgKiBK c29uV3JhcHBlciAtCisgKgkJcmVwcmVzZW50YXRpb24gb2YgV1JBUFBFUiBjbGF1c2UgZm9yIEpT T05fUVVFUlkoKQorICovCit0eXBlZGVmIGVudW0gSnNvbldyYXBwZXIKK3sKKwlKU1dfVU5TUEVD LAorCUpTV19OT05FLAorCUpTV19DT05ESVRJT05BTCwKKwlKU1dfVU5DT05ESVRJT05BTCwKK30g SnNvbldyYXBwZXI7CisKKy8qCisgKiBKc29uQmVoYXZpb3JUeXBlIC0KKyAqCQllbnVtZXJhdGlv biBvZiBiZWhhdmlvciB0eXBlcyB1c2VkIGluIFNRTC9KU09OIE9OIEVSUk9SL0VNUFRZIGNsYXVz ZXMKKyAqCisgKiAJCUlmIGVudW0gbWVtYmVycyBhcmUgcmVvcmRlcmVkLCBnZXRfanNvbl9iZWhh dmlvcigpIGZyb20gcnVsZXV0aWxzLmMKKyAqIAkJbXVzdCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5 LgorICovCit0eXBlZGVmIGVudW0gSnNvbkJlaGF2aW9yVHlwZQoreworCUpTT05fQkVIQVZJT1Jf TlVMTCA9IDAsCisJSlNPTl9CRUhBVklPUl9FUlJPUiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZLAor CUpTT05fQkVIQVZJT1JfVFJVRSwKKwlKU09OX0JFSEFWSU9SX0ZBTFNFLAorCUpTT05fQkVIQVZJ T1JfVU5LTk9XTiwKKwlKU09OX0JFSEFWSU9SX0VNUFRZX0FSUkFZLAorCUpTT05fQkVIQVZJT1Jf RU1QVFlfT0JKRUNULAorCUpTT05fQkVIQVZJT1JfREVGQVVMVCwKK30gSnNvbkJlaGF2aW9yVHlw ZTsKKworLyoKKyAqIEpzb25Db2VyY2lvbgorICoJCUluZm9ybWF0aW9uIGFib3V0IGNvZXJjaW5n IGEgU1FML0pTT04gdmFsdWUgdG8gdGhlIHNwZWNpZmllZAorICoJCXR5cGUgYXQgcnVudGltZQor ICoKKyAqIEEgbm9kZSBvZiB0aGlzIHR5cGUgaXMgY3JlYXRlZCBpZiB0aGUgcGFyc2VyIGNhbm5v dCBmaW5kIGEgY2FzdCBleHByZXNzaW9uCisgKiB1c2luZyBjb2VyY2VfdHlwZSgpIG9yIE9NSVQg UVVPVEVTIGlzIHNwZWNpZmllZCBmb3IgSlNPTl9RVUVSWS4gIElmIHRoZQorICogbGF0dGVyLCAn ZXhwcicgbWF5IGNvbnRhaW4gdGhlIGNhc3QgZXhwcmVzc2lvbjsgaWYgbm90LCB0aGUgcXVvdGUt c3RyaXBwZWQKKyAqIHNjYWxhciBzdHJpbmcgd2lsbCBiZSBjb2VyY2VkIGJ5IGNhbGxpbmcgdGhl IHRhcmdldCB0eXBlJ3MgaW5wdXQgZnVuY3Rpb24uCisgKiBTZWUgRXhlY0V2YWxKc29uQ29lcmNp b24uCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25Db2VyY2lvbgoreworCU5vZGVUYWcJCXR5cGU7 CisKKwlPaWQJCQl0YXJnZXR0eXBlOworCWludDMyCQl0YXJnZXR0eXBtb2Q7CisJYm9vbAkJb21p dF9xdW90ZXM7CS8qIE9NSVQgUVVPVEVTIHNwZWNpZmllZCBmb3IgSlNPTl9RVUVSWT8gKi8KKwlO b2RlCSAgICpjYXN0X2V4cHI7CQkvKiBjb2VyY2lvbiBjYXN0IGV4cHJlc3Npb24gb3IgTlVMTCAq LworCU9pZAkJCWNvbGxhdGlvbjsKK30gSnNvbkNvZXJjaW9uOworCisvKgorICogSnNvbkl0ZW1U eXBlCisgKgkJUG9zc2libGUgdHlwZXMgZm9yIHNjYWxhciB2YWx1ZXMgcmV0dXJuZWQgYnkgSlNP Tl9WQUxVRSgpCisgKgorICogVGhlIGNvbW1lbnQgbmV4dCB0byBlYWNoIGl0ZW0gdHlwZSBtZW50 aW9ucyB0aGUgY29ycmVzcG9uZGluZworICogSnNvbmJWYWx1ZS5qYnZUeXBlLgorICovCit0eXBl ZGVmIGVudW0gSnNvbkl0ZW1UeXBlCit7CisJSnNvbkl0ZW1UeXBlTnVsbCwJCQkvKiBqYnZOdWxs ICovCisJSnNvbkl0ZW1UeXBlU3RyaW5nLAkJCS8qIGpidlN0cmluZyAqLworCUpzb25JdGVtVHlw ZU51bWVyaWMsCQkvKiBqYnZOdW1lcmljICovCisJSnNvbkl0ZW1UeXBlQm9vbGVhbiwJCS8qIGpi dkJvb2wgKi8KKwlKc29uSXRlbVR5cGVEYXRlLAkJCS8qIGpidkRhdGV0aW1lOiBEQVRFT0lEICov CisJSnNvbkl0ZW1UeXBlVGltZSwJCQkvKiBqYnZEYXRldGltZTogVElNRU9JRCAqLworCUpzb25J dGVtVHlwZVRpbWV0eiwJCQkvKiBqYnZEYXRldGltZTogVElNRVRaT0lEICovCisJSnNvbkl0ZW1U eXBlVGltZXN0YW1wLAkJLyogamJ2RGF0ZXRpbWU6IFRJTUVTVEFNUE9JRCAqLworCUpzb25JdGVt VHlwZVRpbWVzdGFtcHR6LAkvKiBqYnZEYXRldGltZTogVElNRVNUQU1QVFpPSUQgKi8KKwlKc29u SXRlbVR5cGVDb21wb3NpdGUsCQkvKiBqYnZBcnJheSwgamJ2T2JqZWN0LCBqYnZCaW5hcnkgKi8K KwlKc29uSXRlbVR5cGVJbnZhbGlkLAorfSBKc29uSXRlbVR5cGU7CisKKy8qCisgKiBKc29uSXRl bUNvZXJjaW9uCisgKgkJQ29lcmNpb24gZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIEpzb25JdGVt VHlwZQorICoKKyAqIElmIG5vdCBOVUxMLCAnY29lcmNpb24nIGdpdmVuIHRoZSBleHByZXNzaW9u IG5vZGUgdG8gY29udmVydCBhIHNjYWxhciB2YWx1ZQorICogZXh0cmFjdGVkIGZyb20gYSBKc29u YlZhbHVlIG9mIHRoZSBnaXZlbiB0eXBlIHRvIHRoZSB0YXJnZXQgdHlwZSBnaXZlbiBieQorICog SnNvbkV4cHIucmV0dXJuaW5nLiAgTlVMTCBtZWFucyB0aGUgY29lcmNpb24gaXMgdW5uZWNlc3Nh cnkuCisgKi8KK3R5cGVkZWYgc3RydWN0IEpzb25JdGVtQ29lcmNpb24KK3sKKwlOb2RlVGFnCQl0 eXBlOworCisJSnNvbkl0ZW1UeXBlIGl0ZW1fdHlwZTsKKwlOb2RlCSAgICpjb2VyY2lvbjsKK30g SnNvbkl0ZW1Db2VyY2lvbjsKKworLyoKKyAqIEpzb25CZWhhdmlvcgorICoJCUluZm9ybWF0aW9u IGFib3V0IE9OIEVSUk9SIC8gT04gRU1QVFkgYmVoYXZpb3JzIG9mIEpTT05fVkFMVUUoKSwKKyAq CQlKU09OX1FVRVJZKCksIGFuZCBKU09OX0VYSVNUUygpCisgKgorICogJ2V4cHInIGlzIHRoZSBl eHByZXNzaW9uIHRvIGVtaXQgd2hlbiBhIGdpdmVuIGJlaGF2aW9yIChFTVBUWSBvciBFUlJPUikK KyAqIG9jY3VycyBvbiBldmFsdWF0aW5nIHRoZSBTUUwvSlNPTiBxdWVyeSBmdW5jdGlvbi4gICdj b2VyY2lvbicgaXMgc2V0CisgKiBpZiAnZXhwcicgaXNuJ3QgYWxyZWFkeSBvZiB0aGUgZXhwZWN0 ZWQgdGFyZ2V0IHR5cGUgZ2l2ZW4gYnkKKyAqIEpzb25FeHByLnJldHVybmluZy4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgSnNvbkJlaGF2aW9yCit7CisJTm9kZVRhZwkJdHlwZTsKKworCUpzb25CZWhh dmlvclR5cGUgYnR5cGU7CisJTm9kZQkgICAqZXhwcjsKKwlKc29uQ29lcmNpb24gKmNvZXJjaW9u OwkJLyogdG8gY29lcmNlIGJlaGF2aW9yIGV4cHJlc3Npb24gd2hlbiB0aGVyZSBpcworCQkJCQkJ CQkgKiBubyBjYXN0IHRvIHRoZSB0YXJnZXQgdHlwZSAqLworCWludAkJCWxvY2F0aW9uOwkJLyog dG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gSnNvbkJlaGF2aW9yOworCisv KgorICogSnNvbkV4cHIgLQorICoJCVRyYW5zZm9ybWVkIHJlcHJlc2VudGF0aW9uIG9mIEpTT05f VkFMVUUoKSwgSlNPTl9RVUVSWSgpLCBhbmQKKyAqCQlKU09OX0VYSVNUUygpCisgKi8KK3R5cGVk ZWYgc3RydWN0IEpzb25FeHByCit7CisJRXhwcgkJeHByOworCisJLyogSlNPTl8qIGZ1bmN0aW9u IGlkZW50aWZpZXIgKi8KKwlKc29uRXhwck9wCW9wOworCisJLyoganNvbihiKS12YWx1ZWQgZXhw cmVzc2lvbiB0byBxdWVyeSAqLworCU5vZGUJICAgKmZvcm1hdHRlZF9leHByOworCisJLyogRm9y bWF0IG9mIHRoZSBhYm92ZSBleHByZXNzaW9uIG5lZWRlZCBieSBydWxldXRpbHMuYyAqLworCUpz b25Gb3JtYXQgKmZvcm1hdDsKKworCS8qIGpzb3BhdGgtdmFsdWVkIGV4cHJlc3Npb24gY29udGFp bmluZyB0aGUgcXVlcnkgcGF0dGVybiAqLworCU5vZGUJICAgKnBhdGhfc3BlYzsKKworCS8qIEV4 cGVjdGVkIHR5cGUvZm9ybWF0IG9mIHRoZSBvdXRwdXQuICovCisJSnNvblJldHVybmluZyAqcmV0 dXJuaW5nOworCisJLyogSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBBU1NJTkcgYXJndW1lbnQgZXhw cmVzc2lvbnMgKi8KKwlMaXN0CSAgICpwYXNzaW5nX25hbWVzOworCUxpc3QJICAgKnBhc3Npbmdf dmFsdWVzOworCisJLyogVXNlLXNwZWNpZmllZCBvciBkZWZhdWx0IE9OIEVNUFRZIGFuZCBPTiBF UlJPUiBiZWhhdmlvcnMgKi8KKwlKc29uQmVoYXZpb3IgKm9uX2VtcHR5OworCUpzb25CZWhhdmlv ciAqb25fZXJyb3I7CisKKwkvKgorCSAqIEV4cHJlc3Npb24gdG8gY29udmVydCB0aGUgcmVzdWx0 IG9mIEpTT05fKiBmdW5jdGlvbiB0byB0aGUgUkVUVVJOSU5HCisJICogdHlwZQorCSAqLworCU5v ZGUJICAgKnJlc3VsdF9jb2VyY2lvbjsKKworCS8qCisJICogTGlzdCBvZiBleHByZXNzaW9ucyBm b3IgY29lcmNpbmcgSlNPTl9WQUxVRSgpIHJlc3VsdCB2YWx1ZXMsIGNvbnRhaW5pbmcKKwkgKiBv bmUgZWxlbWVudCBmb3IgZXZlcnkgSnNvbkl0ZW1UeXBlLgorCSAqLworCUxpc3QJICAgKml0ZW1f Y29lcmNpb25zOworCisJLyogV1JBUFBFUiBzcGVjaWZpY2F0aW9uIGZvciBKU09OX1FVRVJZICov CisJSnNvbldyYXBwZXIgd3JhcHBlcjsKKworCS8qIEtFRVAgb3IgT01JVCBRVU9URVMgZm9yIHNp bmdsZXRvbiBzY2FsYXJzIHJldHVybmVkIGJ5IEpTT05fUVVFUlkoKSAqLworCWJvb2wJCW9taXRf cXVvdGVzOworCisJLyogT3JpZ2luYWwgSnNvbkZ1bmNFeHByJ3MgbG9jYXRpb24gKi8KKwlpbnQJ CQlsb2NhdGlvbjsKK30gSnNvbkV4cHI7CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqIE51bGxU ZXN0CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDIzMzFhY2FjMDkuLjk0ZTFjYjRkY2UgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmgKQEAgLTkzLDYgKzkzLDcgQEAgUEdfS0VZV09SRCgiY29tbWl0IiwgQ09NTUlU LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb21taXR0ZWQi LCBDT01NSVRURUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQo ImNvbXByZXNzaW9uIiwgQ09NUFJFU1NJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImNvbmN1cnJlbnRseSIsIENPTkNVUlJFTlRMWSwgVFlQRV9GVU5DX05B TUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImNvbmRpdGlvbmFsIiwgQ09ORElU SU9OQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImNvbmZp Z3VyYXRpb24iLCBDT05GSUdVUkFUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJjb25mbGljdCIsIENPTkZMSUNULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJjb25uZWN0aW9uIiwgQ09OTkVDVElPTiwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQpAQCAtMTQ3LDExICsxNDgsMTMgQEAgUEdfS0VZV09SRCgi ZG91YmxlIiwgRE9VQkxFX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImRyb3AiLCBEUk9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJlYWNoIiwgRUFDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgiZWxzZSIsIEVMU0UsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19L RVlXT1JEKCJlbXB0eSIsIEVNUFRZX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoImVuYWJsZSIsIEVOQUJMRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJlbmNvZGluZyIsIEVOQ09ESU5HLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlbmNyeXB0ZWQiLCBFTkNSWVBURUQsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImVuZCIsIEVORF9QLCBSRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZW51bSIsIEVOVU1fUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgiZXJyb3IiLCBFUlJPUl9Q LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJlc2NhcGUiLCBF U0NBUEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImV2ZW50 IiwgRVZFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImV4 Y2VwdCIsIEVYQ0VQVCwgUkVTRVJWRURfS0VZV09SRCwgQVNfTEFCRUwpCkBAIC0yMzMsMTAgKzIz NiwxNCBAQCBQR19LRVlXT1JEKCJqb2luIiwgSk9JTiwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImpzb24iLCBKU09OLCBDT0xfTkFNRV9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9hcnJheSIsIEpTT05fQVJSQVksIENPTF9OQU1F X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJqc29uX2FycmF5YWdnIiwgSlNPTl9B UlJBWUFHRywgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25f ZXhpc3RzIiwgSlNPTl9FWElTVFMsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJqc29uX29iamVjdCIsIEpTT05fT0JKRUNULCBDT0xfTkFNRV9LRVlXT1JELCBCQVJF X0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9vYmplY3RhZ2ciLCBKU09OX09CSkVDVEFHRywgQ09M X05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImpzb25fcXVlcnkiLCBKU09O X1FVRVJZLCBDT0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgianNvbl9z Y2FsYXIiLCBKU09OX1NDQUxBUiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImpzb25fc2VyaWFsaXplIiwgSlNPTl9TRVJJQUxJWkUsIENPTF9OQU1FX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJqc29uX3ZhbHVlIiwgSlNPTl9WQUxVRSwgQ09MX05B TUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImtlZXAiLCBLRUVQLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJrZXkiLCBLRVksIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImtleXMiLCBLRVlTLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJsYWJlbCIsIExBQkVMLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zMDIsNiArMzA5LDcgQEAgUEdfS0VZV09S RCgib2ZmIiwgT0ZGLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJvZmZzZXQiLCBPRkZTRVQsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09S RCgib2lkcyIsIE9JRFMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoIm9sZCIsIE9MRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09S RCgib21pdCIsIE9NSVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoIm9uIiwgT04sIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgib25s eSIsIE9OTFksIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJvcGVy YXRvciIsIE9QRVJBVE9SLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0zNDQs NiArMzUyLDcgQEAgUEdfS0VZV09SRCgicHJvY2VkdXJlcyIsIFBST0NFRFVSRVMsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByb2dyYW0iLCBQUk9HUkFNLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwdWJsaWNhdGlvbiIs IFBVQkxJQ0FUSU9OLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJxdW90ZSIsIFFVT1RFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJxdW90ZXMiLCBRVU9URVMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInJhbmdlIiwgUkFOR0UsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInJlYWQiLCBSRUFELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJyZWFsIiwgUkVBTCwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkK QEAgLTQxNCw2ICs0MjMsNyBAQCBQR19LRVlXT1JEKCJzdGRvdXQiLCBTVERPVVQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0b3JhZ2UiLCBTVE9SQUdFLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdG9yZWQiLCBTVE9S RUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0cmljdCIs IFNUUklDVF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJz dHJpbmciLCBTVFJJTkdfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgic3RyaXAiLCBTVFJJUF9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJzdWJzY3JpcHRpb24iLCBTVUJTQ1JJUFRJT04sIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN1YnN0cmluZyIsIFNVQlNUUklORywgQ09MX05B TUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQ0OSw2ICs0NTksNyBAQCBQR19LRVlXT1JEKCJ0 eXBlcyIsIFRZUEVTX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInVlc2NhcGUiLCBVRVNDQVBFLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJ1bmJvdW5kZWQiLCBVTkJPVU5ERUQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInVuY29tbWl0dGVkIiwgVU5DT01NSVRURUQsIFVOUkVTRVJW RURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInVuY29uZGl0aW9uYWwiLCBVTkNP TkRJVElPTkFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ1 bmVuY3J5cHRlZCIsIFVORU5DUllQVEVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJ1bmlvbiIsIFVOSU9OLCBSRVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkK IFBHX0tFWVdPUkQoInVuaXF1ZSIsIFVOSVFVRSwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Zvcm1hdHRpbmcuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL2Zvcm1hdHRpbmcuaAppbmRleCA3ZWExYTcwZjcxLi5jZGUwMzA0MTRlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9mb3JtYXR0aW5nLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvZm9ybWF0dGluZy5oCkBAIC0yOSw1ICsyOSw2IEBAIGV4dGVybiBjaGFyICphc2NfaW5p dGNhcChjb25zdCBjaGFyICpidWZmLCBzaXplX3QgbmJ5dGVzKTsKIGV4dGVybiBEYXR1bSBwYXJz ZV9kYXRldGltZSh0ZXh0ICpkYXRlX3R4dCwgdGV4dCAqZm10LCBPaWQgY29sbGlkLCBib29sIHN0 cmljdCwKIAkJCQkJCQlPaWQgKnR5cGlkLCBpbnQzMiAqdHlwbW9kLCBpbnQgKnR6LAogCQkJCQkJ CXN0cnVjdCBOb2RlICplc2NvbnRleHQpOworZXh0ZXJuIGJvb2wgZGF0ZXRpbWVfZm9ybWF0X2hh c190eihjb25zdCBjaGFyICpmbXRfc3RyKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9qc29uYi5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmIuaAppbmRleCBlMzhk ZmQ0OTAxLi5kNTg5YWNlNWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTQyMiw2ICs0MjIsNyBAQCBleHRl cm4gY2hhciAqSnNvbmJUb0NTdHJpbmcoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVyICpp biwKIAkJCQkJCQlpbnQgZXN0aW1hdGVkX2xlbik7CiBleHRlcm4gY2hhciAqSnNvbmJUb0NTdHJp bmdJbmRlbnQoU3RyaW5nSW5mbyBvdXQsIEpzb25iQ29udGFpbmVyICppbiwKIAkJCQkJCQkJICBp bnQgZXN0aW1hdGVkX2xlbik7CitleHRlcm4gY2hhciAqSnNvbmJVbnF1b3RlKEpzb25iICpqYik7 CiBleHRlcm4gYm9vbCBKc29uYkV4dHJhY3RTY2FsYXIoSnNvbmJDb250YWluZXIgKmpiYywgSnNv bmJWYWx1ZSAqcmVzKTsKIGV4dGVybiBjb25zdCBjaGFyICpKc29uYlR5cGVOYW1lKEpzb25iVmFs dWUgKnZhbCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25mdW5jcy5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKaW5kZXggMzFjMWFlNDc2Ny4uMTkwZTEzMjg0 YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvanNvbmZ1bmNzLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUgSlNPTkZV TkNTX0gKIAogI2luY2x1ZGUgImNvbW1vbi9qc29uYXBpLmgiCisjaW5jbHVkZSAibm9kZXMvbm9k ZXMuaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiAvKgpAQCAtODgsNCArODksMTAgQEAg ZXh0ZXJuIERhdHVtIGRhdHVtX3RvX2pzb25iKERhdHVtIHZhbCwgSnNvblR5cGVDYXRlZ29yeSB0 Y2F0ZWdvcnksCiAJCQkJCQkJT2lkIG91dGZ1bmNvaWQpOwogZXh0ZXJuIERhdHVtIGpzb25iX2Zy b21fdGV4dCh0ZXh0ICpqcywgYm9vbCB1bmlxdWVfa2V5cyk7CiAKK2V4dGVybiBEYXR1bSBqc29u X3BvcHVsYXRlX3R5cGUoRGF0dW0ganNvbl92YWwsIE9pZCBqc29uX3R5cGUsCisJCQkJCQkJCU9p ZCB0eXBpZCwgaW50MzIgdHlwbW9kLAorCQkJCQkJCQl2b2lkICoqY2FjaGUsIE1lbW9yeUNvbnRl eHQgbWN4dCwKKwkJCQkJCQkJYm9vbCAqaXNudWxsLAorCQkJCQkJCQlOb2RlICplc2NvbnRleHQp OworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmggYi9z cmMvaW5jbHVkZS91dGlscy9qc29ucGF0aC5oCmluZGV4IDBmMGUxMjZlMDMuLjBmNGIxZWJjOWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25wYXRoLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvanNvbnBhdGguaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiZm1nci5o IgogI2luY2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJub2Rlcy9wcmltbm9kZXMu aCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogCiB0eXBlZGVmIHN0cnVjdApAQCAtMjAyLDYg KzIwMyw3IEBAIGV4dGVybiBib29sIGpzcEdldEJvb2woSnNvblBhdGhJdGVtICp2KTsKIGV4dGVy biBjaGFyICpqc3BHZXRTdHJpbmcoSnNvblBhdGhJdGVtICp2LCBpbnQzMiAqbGVuKTsKIGV4dGVy biBib29sIGpzcEdldEFycmF5U3Vic2NyaXB0KEpzb25QYXRoSXRlbSAqdiwgSnNvblBhdGhJdGVt ICpmcm9tLAogCQkJCQkJCQkgSnNvblBhdGhJdGVtICp0bywgaW50IGkpOworZXh0ZXJuIGJvb2wg anNwSXNNdXRhYmxlKEpzb25QYXRoICpwYXRoLCBMaXN0ICp2YXJuYW1lcywgTGlzdCAqdmFyZXhw cnMpOwogCiBleHRlcm4gY29uc3QgY2hhciAqanNwT3BlcmF0aW9uTmFtZShKc29uUGF0aEl0ZW1U eXBlIHR5cGUpOwogCkBAIC0yNzksNCArMjgxLDI2IEBAIGV4dGVybiBib29sIGpzcENvbnZlcnRS ZWdleEZsYWdzKHVpbnQzMiB4ZmxhZ3MsIGludCAqcmVzdWx0LAogCQkJCQkJCQkgc3RydWN0IE5v ZGUgKmVzY29udGV4dCk7CiAKIAorLyoKKyAqIEV2YWx1YXRpb24gb2YganNvbnBhdGgKKyAqLwor CisvKiBFeHRlcm5hbCB2YXJpYWJsZSBwYXNzZWQgaW50byBqc29ucGF0aC4gKi8KK3R5cGVkZWYg c3RydWN0IEpzb25QYXRoVmFyaWFibGUKK3sKKwljaGFyCSAgICpuYW1lOworCU9pZAkJCXR5cGlk OworCWludDMyCQl0eXBtb2Q7CisJRGF0dW0JCXZhbHVlOworCWJvb2wJCWlzbnVsbDsKK30gSnNv blBhdGhWYXJpYWJsZTsKKworCisvKiBTUUwvSlNPTiBpdGVtICovCitleHRlcm4gYm9vbCBKc29u UGF0aEV4aXN0cyhEYXR1bSBqYiwgSnNvblBhdGggKnBhdGgsIGJvb2wgKmVycm9yLCBMaXN0ICp2 YXJzKTsKK2V4dGVybiBEYXR1bSBKc29uUGF0aFF1ZXJ5KERhdHVtIGpiLCBKc29uUGF0aCAqanAs IEpzb25XcmFwcGVyIHdyYXBwZXIsCisJCQkJCQkgICBib29sICplbXB0eSwgYm9vbCAqZXJyb3Is IExpc3QgKnZhcnMpOworZXh0ZXJuIEpzb25iVmFsdWUgKkpzb25QYXRoVmFsdWUoRGF0dW0gamIs IEpzb25QYXRoICpqcCwgYm9vbCAqZW1wdHksCisJCQkJCQkJCSBib29sICplcnJvciwgTGlzdCAq dmFycyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvZWNwZy9wcmVwcm9j L2VjcGcudHJhaWxlciBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvcHJlcHJvYy9lY3BnLnRyYWlsZXIK aW5kZXggNDM1YzEzOWVjMi4uYjJhYTQ0ZjM2ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMv ZWNwZy9wcmVwcm9jL2VjcGcudHJhaWxlcgorKysgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXBy b2MvZWNwZy50cmFpbGVyCkBAIC02NTEsNiArNjUxLDM0IEBAIHZhcl90eXBlOglzaW1wbGVfdHlw ZQogCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEiKTsKIAkJCSQkLnR5cGVfc2l6ZW9m ID0gTlVMTDsKIAkJfQorCQl8IFNUUklOR19QCisJCXsKKwkJCWlmIChJTkZPUk1JWF9NT0RFKQor CQkJeworCQkJCS8qIEluIEluZm9ybWl4IG1vZGUsICJzdHJpbmciIGlzIGF1dG9tYXRpY2FsbHkg YSB0eXBlZGVmICovCisJCQkJJCQudHlwZV9lbnVtID0gRUNQR3Rfc3RyaW5nOworCQkJCSQkLnR5 cGVfc3RyID0gbW1fc3RyZHVwKCJjaGFyIik7CisJCQkJJCQudHlwZV9kaW1lbnNpb24gPSBtbV9z dHJkdXAoIi0xIik7CisJCQkJJCQudHlwZV9pbmRleCA9IG1tX3N0cmR1cCgiLTEiKTsKKwkJCQkk JC50eXBlX3NpemVvZiA9IE5VTEw7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogT3RoZXJ3 aXNlLCBsZWdhbCBvbmx5IGlmIHVzZXIgdHlwZWRlZidlZCBpdCAqLworCQkJCXN0cnVjdCB0eXBl ZGVmcyAqdGhpcyA9IGdldF90eXBlZGVmKCJzdHJpbmciLCBmYWxzZSk7CisKKwkJCQkkJC50eXBl X3N0ciA9ICh0aGlzLT50eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfdmFyY2hhciB8fCB0aGlzLT50 eXBlLT50eXBlX2VudW0gPT0gRUNQR3RfYnl0ZWEpID8gRU1QVFkgOiBtbV9zdHJkdXAodGhpcy0+ bmFtZSk7CisJCQkJJCQudHlwZV9lbnVtID0gdGhpcy0+dHlwZS0+dHlwZV9lbnVtOworCQkJCSQk LnR5cGVfZGltZW5zaW9uID0gdGhpcy0+dHlwZS0+dHlwZV9kaW1lbnNpb247CisJCQkJJCQudHlw ZV9pbmRleCA9IHRoaXMtPnR5cGUtPnR5cGVfaW5kZXg7CisJCQkJaWYgKHRoaXMtPnR5cGUtPnR5 cGVfc2l6ZW9mICYmIHN0cmxlbih0aGlzLT50eXBlLT50eXBlX3NpemVvZikgIT0gMCkKKwkJCQkJ JCQudHlwZV9zaXplb2YgPSB0aGlzLT50eXBlLT50eXBlX3NpemVvZjsKKwkJCQllbHNlCisJCQkJ CSQkLnR5cGVfc2l6ZW9mID0gY2F0X3N0cigzLCBtbV9zdHJkdXAoInNpemVvZigiKSwgbW1fc3Ry ZHVwKHRoaXMtPm5hbWUpLCBtbV9zdHJkdXAoIikiKSk7CisKKwkJCQlzdHJ1Y3RfbWVtYmVyX2xp c3Rbc3RydWN0X2xldmVsXSA9IEVDUEdzdHJ1Y3RfbWVtYmVyX2R1cCh0aGlzLT5zdHJ1Y3RfbWVt YmVyX2xpc3QpOworCQkJfQorCQl9CiAJCXwgSU5URVJWQUwgZWNwZ19pbnRlcnZhbAogCQl7CiAJ CQkkJC50eXBlX2VudW0gPSBFQ1BHdF9pbnRlcnZhbDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3FsanNvbl9xdWVyeWZ1bmNzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi5mNWI1NzQ2NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zcWxqc29uX3F1ZXJ5ZnVuY3Mub3V0CkBAIC0wLDAgKzEsMTI2MSBAQAor LS0gSlNPTl9FWElTVFMKKy0tIGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVk CitTRUxFQ1QgSlNPTl9FWElTVFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKK0VSUk9SOiAgSlNP Tl9FWElTVFMoKSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5F IDE6IFNFTEVDVCBKU09OX0VYSVNUUyhOVUxMIEZPUk1BVCBKU09OLCAnJCcpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorSElOVDogIFRyeSBjYXN0aW5nIHRoZSBhcmd1bWVudCB0byBq c29uYgorU0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25fZXhpc3Rz IAorLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K1NFTEVDVCBKU09OX0VYSVNUUyhKU09OX09CSkVDVChSRVRVUk5JTkcganNvbmIpLCAnJCcpOwor IGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIEpTT05f RVhJU1RTKGpzb25iICcxJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnbnVsbCcsICckJyk7CisganNv bl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1tdJywgJyQnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEnKTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhq c29uYiAnMScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCisganNvbl9leGlzdHMg CistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg JzEnLCAnc3RyaWN0ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBqc29ucGF0aCBtZW1i ZXIgYWNjZXNzb3IgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBhbiBvYmplY3QKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAnbnVsbCcsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0t LS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnW10nLCAnJC5hJyk7 CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ3N0cmljdCAkLmEnKTsgLS0g RkFMU0Ugb24gZXJyb3IKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cp CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnWzEsICJhYWEiLCB7ImEiOiAxfV0nLCAnbGF4 ICQuYScpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICd7fScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0t LS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJiIjog MSwgImEiOiAyfScsICckLmEnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckLmEuYicpOworIGpzb25f ZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RT KGpzb25iICd7ImEiOiB7ImIiOiAxfX0nLCAnJC5hLmInKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjog MSwgImIiOiAyfScsICckLmEuYicpOworIGpzb25fZXhpc3RzIAorLS0tLS0tLS0tLS0tLQorIGYK KygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiAxLCAiYiI6IDJ9Jywg JyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIDEgQVMgeCk7CisganNvbl9leGlzdHMgCistLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEs ICJiIjogMn0nLCAnJC4qID8gKEAgPiAkeCknIFBBU1NJTkcgJzEnIEFTIHgpOworIGpzb25fZXhp c3RzIAorLS0tLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICd7ImEiOiAxLCAiYiI6IDJ9JywgJyQuKiA/IChAID4gJHggJiYgQCA8ICR5KScgUEFTU0lO RyAwIEFTIHgsIDIgQVMgeSk7CisganNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4q ID8gKEAgPiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMSBBUyB5KTsKKyBqc29uX2V4 aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKKy0tIGV4dGVuc2lvbjogYm9vbGVh biBleHByZXNzaW9ucworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQgPiAyJyk7Cisg anNvbl9leGlzdHMgCistLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9F WElTVFMoanNvbmIgJzEnLCAnJC5hID4gMicgRVJST1IgT04gRVJST1IpOworIGpzb25fZXhpc3Rz IAorLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gSlNPTl9WQUxVRQorLS0ganNvbiBh cmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEwg Rk9STUFUIEpTT04sICckJyk7CitFUlJPUjogIEpTT05fVkFMVUUoKSBpcyBub3QgeWV0IGltcGxl bWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5FIDE6IFNFTEVDVCBKU09OX1ZBTFVFKE5VTEwg Rk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBU cnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6 Ompzb25iLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAn JCcgUkVUVVJOSU5HIGludCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ3RydWUnLCAnJCcpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyB0cnVlCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICd0cnVlJywgJyQnIFJFVFVSTklORyBib29sKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMTIzJywg JyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgMTIzCisoMSByb3cpCisKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFM VUUoanNvbmIgJzEyMycsICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorIDEyMworKDEgcm93KQorCisvKiBqc29uYiBieXRlYSA/Pz8gKi8KK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICcxMjMnLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEVSUk9SIE9OIEVSUk9S KTsKK0VSUk9SOiAgU1FML0pTT04gaXRlbSBjYW5ub3QgYmUgY2FzdCB0byB0YXJnZXQgdHlwZQor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEuMjMnLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0t LS0tLS0tLS0KKyAxLjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIz JywgJyQnIFJFVFVSTklORyBpbnQpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAg ICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcg UkVUVVJOSU5HIG51bWVyaWMpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAx LjIzCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciMS4yMyInLCAnJCcgUkVU VVJOSU5HIGludCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIGludGVnZXI6ICIxLjIzIgorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEi JywgJyQnKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgYWFhCisoMSByb3cpCisKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIGFhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoNSkpOworIGpzb25fdmFsdWUgCist LS0tLS0tLS0tLS0KKyBhYWEgIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn ImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyBhYQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcg UkVUVVJOSU5HIGpzb24pOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEg cm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpz b25iKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVSUk9SIE9O IEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uYiBFUlJP UiBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICJhYWEiCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICciXCJhYWFcIiInLCAnJCcgUkVUVVJOSU5HIGpz b24pOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJvdykKKwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNvbmIp OworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAiXCJhYWFcIiIKKygxIHJvdykKKworU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBpbnQpOworIGpzb25f dmFsdWUgCistLS0tLS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogImFhYSIKK1NF TEVDVCBKU09OX1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgaW50IERFRkFVTFQg MTExIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgIDExMQor KDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIjEyMyInLCAnJCcgUkVUVVJOSU5H IGludCkgKyAyMzQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAgICAzNTcKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyIyMDE3LTAyLTIwIicsICckJyBSRVRVUk5JTkcg ZGF0ZSkgKyA5OworICA/Y29sdW1uPyAgCistLS0tLS0tLS0tLS0KKyAwMy0wMS0yMDE3CisoMSBy b3cpCisKKy0tIFRlc3QgTlVMTCBjaGVja3MgZXhlY3V0aW9uIGluIGRvbWFpbiB0eXBlcworQ1JF QVRFIERPTUFJTiBzcWxqc29uYl9pbnRfbm90X251bGwgQVMgaW50IE5PVCBOVUxMOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3Rf bnVsbCk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAKKygxIHJvdykK KworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25i X2ludF9ub3RfbnVsbCBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGRvbWFpbiBzcWxqc29uYl9p bnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVsbCB2YWx1ZXMKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVM VCAyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgZG9tYWluIHNxbGpzb25iX2lu dF9ub3RfbnVsbCBkb2VzIG5vdCBhbGxvdyBudWxsIHZhbHVlcworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxU IDIgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAgICAgICAgICAyCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgICck LmEnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgREVGQVVMVCBOVUxMIE9OIEVNUFRZ IEVSUk9SIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAg IAorKDEgcm93KQorCitDUkVBVEUgVFlQRSByYWluYm93IEFTIEVOVU0gKCdyZWQnLCAnb3Jhbmdl JywgJ3llbGxvdycsICdncmVlbicsICdibHVlJywgJ3B1cnBsZScpOworQ1JFQVRFIERPTUFJTiBy Z2IgQVMgcmFpbmJvdyBDSEVDSyAoVkFMVUUgSU4gKCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKTsK K1NFTEVDVCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0nIFJFVFVSTklO RyByZ2IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoJyJwdXJwbGUiJzo6anNvbmIsICdsYXggJFsqXScgUkVUVVJOSU5HIHJnYiBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gcmdiIHZpb2xhdGVzIGNo ZWNrIGNvbnN0cmFpbnQgInJnYl9jaGVjayIKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbXScs ICckJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09O IHBhdGggZXhwcmVzc2lvbiBpbiBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIHNj YWxhciBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAne30nLCAnJCcpOworIGpzb25fdmFs dWUgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg J3t9JywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24g aW4gSlNPTl9WQUxVRSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBzY2FsYXIgaXRlbQorU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJzEnLCAnJC5hJyk7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdzdHJpY3QgJC5h JyBFUlJPUiBPTiBFUlJPUik7CitFUlJPUjogIGpzb25wYXRoIG1lbWJlciBhY2Nlc3NvciBjYW4g b25seSBiZSBhcHBsaWVkIHRvIGFuIG9iamVjdAorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEn LCAnc3RyaWN0ICQuYScgREVGQVVMVCAnZXJyb3InIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAor LS0tLS0tLS0tLS0tCisgZXJyb3IKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JzEnLCAnbGF4ICQuYScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVt CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXggJC5hJyBFUlJPUiBPTiBFTVBUWSBF UlJPUiBPTiBFUlJPUik7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERFRkFVTFQgMiBPTiBFUlJPUik7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0t LS0tLS0tLS0tCisgMgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICds YXggJC5hJyBERUZBVUxUICcyJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0tLS0tLS0t LQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScg TlVMTCBPTiBFTVBUWSBERUZBVUxUICcyJyBPTiBFUlJPUik7CisganNvbl92YWx1ZSAKKy0tLS0t LS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICdsYXgg JC5hJyBERUZBVUxUICcyJyBPTiBFTVBUWSBERUZBVUxUICczJyBPTiBFUlJPUik7CisganNvbl92 YWx1ZSAKKy0tLS0tLS0tLS0tLQorIDIKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOwor RVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0n LCAnJFsqXScgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBKU09OIHBhdGggZXhwcmVzc2lvbiBp biBKU09OX1ZBTFVFIHNob3VsZCByZXR1cm4gc2luZ2xldG9uIHNjYWxhciBpdGVtCitTRUxFQ1Qg SlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsqXScgREVGQVVMVCAnMCcgT04gRVJST1IpOwor IGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAwCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsK K0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIiAiCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnWyIgIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBERUZBVUxU IDIgKyAzIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgICAgICAgICAg NQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0nLCAnJFsqXScgUkVU VVJOSU5HIGludCBERUZBVUxUIDIgKyAzIE9OIEVSUk9SKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0t LS0tLS0tCisgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn WyIxIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQgSlNPTik7IC0tIFJFVFVSTklORyBG T1JNQVQgbm90IGFsbG93ZWQKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgRk9STUFUIGluIFJFVFVS TklORyBjbGF1c2Ugb2YgSlNPTl9WQUxVRSgpCitMSU5FIDE6IC4uLkNUIEpTT05fVkFMVUUoanNv bmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQgRk9STUFUIEpTTy4uLgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdbIjEiXScsICckWypdJyBSRVRVUk5JTkcgcmVjb3JkKTsKK0VSUk9SOiAgcmV0dXJuaW5n IHBzZXVkby10eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNRTC9KU09OIGZ1bmN0aW9ucworU0VM RUNUCisJeCwKKwlKU09OX1ZBTFVFKAorCQlqc29uYiAneyJhIjogMSwgImIiOiAyfScsCisJCSck LiogPyAoQCA+ICR4KScgUEFTU0lORyB4IEFTIHgKKwkJUkVUVVJOSU5HIGludAorCQlERUZBVUxU IC0xIE9OIEVNUFRZCisJCURFRkFVTFQgLTIgT04gRVJST1IKKwkpIHkKK0ZST00KKwlnZW5lcmF0 ZV9zZXJpZXMoMCwgMikgeDsKKyB4IHwgeSAgCistLS0rLS0tLQorIDAgfCAtMgorIDEgfCAgMgor IDIgfCAtMQorKDMgcm93cykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJGEn IFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0t LS0tCisgKDEsMikKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAn JGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklORyBwb2ludCk7CisganNv bl92YWx1ZSAKKy0tLS0tLS0tLS0tLQorICgxLDIpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICdudWxsJywgJyRhJyBQQVNTSU5HIHBvaW50ICcgKDEsIDIgKScgQVMgYSBSRVRV Uk5JTkcgcG9pbnQgRVJST1IgT04gRVJST1IpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0K KyAoMSwyKQorKDEgcm93KQorCistLSBUZXN0IFBBU1NJTkcgYW5kIFJFVFVSTklORyBkYXRlL3Rp bWUgdHlwZXMKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0 aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzKTsKKyAgICAgICAgICBq c29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVHVl IEZlYiAyMCAxODozNDo1NiAyMDE4IFBTVAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6 NTYgKzEwJyBBUyB0cyBSRVRVUk5JTkcgdGltZXN0YW1wdHopOworICAgICAgICAgIGpzb25fdmFs dWUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUdWUgRmViIDIw IDE4OjM0OjU2IDIwMTggUFNUCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdu dWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAn IEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXApOworICAgICAgICBqc29uX3ZhbHVlICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVHVlIEZlYiAyMCAxODozNDo1NiAyMDE4Ciso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyBk YXRlICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGRhdGUpOworIGpz b25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAwMi0yMS0yMDE4CisoMSByb3cpCisKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lICcyMDE4LTAyLTIxIDEy OjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWUpOworIGpzb25fdmFsdWUgCistLS0tLS0t LS0tLS0KKyAxMjozNDo1NgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVs bCcsICckdHMnIFBBU1NJTkcgdGltZXR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMg UkVUVVJOSU5HIHRpbWV0eik7CisganNvbl92YWx1ZSAgCistLS0tLS0tLS0tLS0tCisgMTI6MzQ6 NTYrMTAKKygxIHJvdykKKworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcCAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklO RyB0aW1lc3RhbXApOworICAgICAgICBqc29uX3ZhbHVlICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2VkIEZlYiAyMSAxMjozNDo1NiAyMDE4CisoMSByb3cpCisKKy0tIEFs c28gdGVzdCBSRVRVUk5JTkcganNvbltiXQorU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwn LCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMg dHMgUkVUVVJOSU5HIGpzb24pOworICAgICAgICAganNvbl92YWx1ZSAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCiso MSByb3cpCisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0 aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29u Yik7CisgICAgICAgICBqc29uX3ZhbHVlICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAiMjAxOC0wMi0yMVQwMjozNDo1NiswMDowMCIKKygxIHJvdykKKworLS0gSlNP Tl9RVUVSWQorLS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQKK1NFTEVD VCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CitFUlJPUjogIEpTT05fUVVFUlko KSBpcyBub3QgeWV0IGltcGxlbWVudGVkIGZvciB0aGUganNvbiB0eXBlCitMSU5FIDE6IFNFTEVD VCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0hJTlQ6ICBUcnkgY2FzdGluZyB0aGUgYXJndW1lbnQgdG8ganNvbmIKK1NFTEVD VCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUCisJSlNPTl9RVUVSWShqcywgJyQnKSwKKwlKU09OX1FV RVJZKGpzLCAnJCcgV0lUSE9VVCBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBD T05ESVRJT05BTCBXUkFQUEVSKSwKKwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBVTkNPTkRJVElP TkFMIEFSUkFZIFdSQVBQRVIpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIIEFSUkFZIFdSQVBQ RVIpCitGUk9NCisJKFZBTFVFUworCQkoanNvbmIgJ251bGwnKSwKKwkJKCcxMi4zJyksCisJCSgn dHJ1ZScpLAorCQkoJyJhYWEiJyksCisJCSgnWzEsIG51bGwsICIyIl0nKSwKKwkJKCd7ImEiOiAx LCAiYiI6IFsyXX0nKQorCSkgZm9vKGpzKTsKKyAgICAganNvbl9xdWVyeSAgICAgfCAgICAganNv bl9xdWVyeSAgICAgfCAgICAganNvbl9xdWVyeSAgICAgfCAgICAgIGpzb25fcXVlcnkgICAgICB8 ICAgICAganNvbl9xdWVyeSAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgbnVsbCAgICAgICAgICAgICAgIHwgbnVsbCAgICAgICAgICAg ICAgIHwgW251bGxdICAgICAgICAgICAgIHwgW251bGxdICAgICAgICAgICAgICAgfCBbbnVsbF0K KyAxMi4zICAgICAgICAgICAgICAgfCAxMi4zICAgICAgICAgICAgICAgfCBbMTIuM10gICAgICAg ICAgICAgfCBbMTIuM10gICAgICAgICAgICAgICB8IFsxMi4zXQorIHRydWUgICAgICAgICAgICAg ICB8IHRydWUgICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICB8IFt0cnVlXSAgICAg ICAgICAgICAgIHwgW3RydWVdCisgImFhYSIgICAgICAgICAgICAgIHwgImFhYSIgICAgICAgICAg ICAgIHwgWyJhYWEiXSAgICAgICAgICAgIHwgWyJhYWEiXSAgICAgICAgICAgICAgfCBbImFhYSJd CisgWzEsIG51bGwsICIyIl0gICAgIHwgWzEsIG51bGwsICIyIl0gICAgIHwgWzEsIG51bGwsICIy Il0gICAgIHwgW1sxLCBudWxsLCAiMiJdXSAgICAgfCBbWzEsIG51bGwsICIyIl1dCisgeyJhIjog MSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwgeyJhIjogMSwgImIiOiBbMl19IHwg W3siYSI6IDEsICJiIjogWzJdfV0gfCBbeyJhIjogMSwgImIiOiBbMl19XQorKDYgcm93cykKKwor U0VMRUNUCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJykgQVMgInVuc3BlYyIsCisJSlNP Tl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIT1VUIFdSQVBQRVIpIEFTICJ3aXRob3V0IiwK KwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUikg QVMgIndpdGggY29uZCIsCisJSlNPTl9RVUVSWShqcywgJ3N0cmljdCAkWypdJyBXSVRIIFVOQ09O RElUSU9OQUwgQVJSQVkgV1JBUFBFUikgQVMgIndpdGggdW5jb25kIiwKKwlKU09OX1FVRVJZKGpz LCAnc3RyaWN0ICRbKl0nIFdJVEggQVJSQVkgV1JBUFBFUikgQVMgIndpdGgiCitGUk9NCisJKFZB TFVFUworCQkoanNvbmIgJzEnKSwKKwkJKCdbXScpLAorCQkoJ1tudWxsXScpLAorCQkoJ1sxMi4z XScpLAorCQkoJ1t0cnVlXScpLAorCQkoJ1siYWFhIl0nKSwKKwkJKCdbWzEsIDIsIDNdXScpLAor CQkoJ1t7ImEiOiAxLCAiYiI6IFsyXX1dJyksCisJCSgnWzEsICIyIiwgbnVsbCwgWzNdXScpCisJ KSBmb28oanMpOworICAgICAgIHVuc3BlYyAgICAgICB8ICAgICAgd2l0aG91dCAgICAgICB8ICAg ICAgd2l0aCBjb25kICAgICAgfCAgICAgd2l0aCB1bmNvbmQgICAgICB8ICAgICAgICAgd2l0aCAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8IAorICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICB8IAorIG51bGwgICAgICAgICAgICAgICB8IG51bGwgICAgICAgICAgICAgICB8 IFtudWxsXSAgICAgICAgICAgICAgfCBbbnVsbF0gICAgICAgICAgICAgICB8IFtudWxsXQorIDEy LjMgICAgICAgICAgICAgICB8IDEyLjMgICAgICAgICAgICAgICB8IFsxMi4zXSAgICAgICAgICAg ICAgfCBbMTIuM10gICAgICAgICAgICAgICB8IFsxMi4zXQorIHRydWUgICAgICAgICAgICAgICB8 IHRydWUgICAgICAgICAgICAgICB8IFt0cnVlXSAgICAgICAgICAgICAgfCBbdHJ1ZV0gICAgICAg ICAgICAgICB8IFt0cnVlXQorICJhYWEiICAgICAgICAgICAgICB8ICJhYWEiICAgICAgICAgICAg ICB8IFsiYWFhIl0gICAgICAgICAgICAgfCBbImFhYSJdICAgICAgICAgICAgICB8IFsiYWFhIl0K KyBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwgM10gICAgICAgICAgfCBbMSwgMiwgM10gICAg ICAgICAgIHwgW1sxLCAyLCAzXV0gICAgICAgICAgfCBbWzEsIDIsIDNdXQorIHsiYSI6IDEsICJi IjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSB8IHsiYSI6IDEsICJiIjogWzJdfSAgfCBbeyJh IjogMSwgImIiOiBbMl19XSB8IFt7ImEiOiAxLCAiYiI6IFsyXX1dCisgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgIHwgWzEsICIyIiwgbnVsbCwgWzNdXSB8IFsxLCAiMiIs IG51bGwsIFszXV0gIHwgWzEsICIyIiwgbnVsbCwgWzNdXQorKDkgcm93cykKKworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTKTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgImFhYSIKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJ TkcpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYWFhIgorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIHRleHQgT01JVCBRVU9U RVMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBhYWEKKygxIHJvdykKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVT IE9OIFNDQUxBUiBTVFJJTkcpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBhYWEKKygx IHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIE9NSVQgUVVPVEVT IEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUg anNvbgorREVUQUlMOiAgVG9rZW4gImFhYSIgaXMgaW52YWxpZC4KK0NPTlRFWFQ6ICBKU09OIGRh dGEsIGxpbmUgMTogYWFhCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlk IGlucHV0IHN5bnRheCBmb3IgdHlwZSBqc29uCitERVRBSUw6ICBUb2tlbiAiYWFhIiBpcyBpbnZh bGlkLgorQ09OVEVYVDogIEpTT04gZGF0YSwgbGluZSAxOiBhYWEKK1NFTEVDVCBKU09OX1FVRVJZ KGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgYnl0ZWEgRk9STUFUIEpTT04gT01JVCBRVU9U RVMgRVJST1IgT04gRVJST1IpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBceDYxNjE2 MQorKDEgcm93KQorCistLSBCZWhhdmlvciB3aGVuIGEgUkVUVVJOSU5HIHR5cGUgaGFzIHR5cG1v ZCAhPSAtMQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBj aGFyKDIpKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImEKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQg UVVPVEVTKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgYWEKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQuYScgUkVUVVJOSU5HIGNoYXIoMikgT01J VCBRVU9URVMgREVGQVVMVCAnYmJiJyBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0tLS0t LS0tLQorIGJiCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICck LmEnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQgUVVPVEVTIERFRkFVTFQgJyJiYmIiJzo6anNvbmIg T04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAiYgorKDEgcm93KQorCist LSBRVU9URVMgYmVoYXZpb3Igc2hvdWxkIG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQ RVIgdXNlZDoKKy0tIFNob3VsZCBmYWlsCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywg JyQnIFdJVEggV1JBUFBFUiBPTUlUIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBi ZWhhdmlvciBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAor TElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggV1JBUFBFUiBP TUlUIFFVT1RFUykuLi4KKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK0VSUk9SOiAgU1FML0pTT04g UVVPVEVTIGJlaGF2aW9yIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiBp cyB1c2VkCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBX UkFQUEVSIEtFRVAgUVVPVEVTKS4uLgorICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgS0VFUCBRVU9URVMp OworRVJST1I6ICBTUUwvSlNPTiBRVU9URVMgYmVoYXZpb3IgbXVzdCBub3QgYmUgc3BlY2lmaWVk IHdoZW4gV0lUSCBXUkFQUEVSIGlzIHVzZWQKK0xJTkUgMTogU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1sxXScsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIgLi4uCisgICAgICAgICAgICAg ICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwg V1JBUFBFUiBPTUlUIFFVT1RFUyk7CitFUlJPUjogIFNRTC9KU09OIFFVT1RFUyBiZWhhdmlvciBt dXN0IG5vdCBiZSBzcGVjaWZpZWQgd2hlbiBXSVRIIFdSQVBQRVIgaXMgdXNlZAorTElORSAxOiBT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEggQ09ORElUSU9OQUwgV1JBUFBF UiAuLi4KKyAgICAgICAgICAgICAgIF4KKy0tIFNob3VsZCBzdWNjZWVkCitTRUxFQ1QgSlNPTl9R VUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBPTUlUIFFVT1RFUyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CisganNvbl9x dWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxXQorKDEgcm93KQorCistLSB0ZXN0IFFVT1RFUyBiZWhh dmlvci4KK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogInsxLDIsM30ifScsICckLnJl YycgcmV0dXJuaW5nIGludFtdIG9taXQgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0t LS0tCisgezEsMiwzfQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6 ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnRbXSBrZWVwIHF1b3Rlcyk7CisganNv bl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYid7InJlYyI6ICJ7MSwyLDN9In0nLCAnJC5yZWMnIHJldHVybmluZyBpbnRbXSBrZWVwIHF1 b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGV4cGVjdGVkIEpTT04gYXJyYXkKK1NFTEVD VCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIHJldHVybmluZyBp bnQ0cmFuZ2Ugb21pdCBxdW90ZXMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwz KQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9Jywg JyQucmVjJyByZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKKyBqc29uX3F1ZXJ5IAor LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVj IjogIlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzIGVy cm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgbWFsZm9ybWVkIHJhbmdlIGxpdGVyYWw6ICIiWzEsMl0i IgorREVUQUlMOiAgTWlzc2luZyBsZWZ0IHBhcmVudGhlc2lzIG9yIGJyYWNrZXQuCitTRUxFQ1Qg SlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIE5V TEwgT04gRU1QVFkpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9OIEVNUFRZKTsKKyBq c29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIEFSUkFZIE9OIEVNUFRZKTsKKyBqc29uX3F1ZXJ5 IAorLS0tLS0tLS0tLS0tCisgW10KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J1tdJywgJyRbKl0nIEVNUFRZIE9CSkVDVCBPTiBFTVBUWSk7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorIHt9CisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICck WypdJyBFUlJPUiBPTiBFTVBUWSk7CitFUlJPUjogIG5vIFNRTC9KU09OIGl0ZW0KK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBERUZBVUxUICciZW1wdHkiJyBPTiBFTVBUWSk7 CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorICJlbXB0eSIKKygxIHJvdykKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIE5VTEwgT04gRVJS T1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn W10nLCAnJFsqXScgRVJST1IgT04gRU1QVFkgRU1QVFkgQVJSQVkgT04gRVJST1IpOworRVJST1I6 ICBubyBTUUwvSlNPTiBpdGVtCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScg RVJST1IgT04gRU1QVFkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pT T04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVN UFRZIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8gU1FML0pTT04gaXRlbQorU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgbm8g U1FML0pTT04gaXRlbQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIEVS Uk9SIE9OIEVSUk9SKTsKK0VSUk9SOiAgSlNPTiBwYXRoIGV4cHJlc3Npb24gaW4gSlNPTl9RVUVS WSBzaG91bGQgcmV0dXJuIHNpbmdsZXRvbiBpdGVtIHdpdGhvdXQgd3JhcHBlcgorSElOVDogIFVz ZSBXSVRIIFdSQVBQRVIgY2xhdXNlIHRvIHdyYXAgU1FML0pTT04gaXRlbSBzZXF1ZW5jZSBpbnRv IGFycmF5LgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERFRkFVTFQg JyJlbXB0eSInIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgImVtcHR5 IgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJO SU5HIGpzb24pOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykK KworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZP Uk1BVCBKU09OKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgWzEsIDJdCisoMSByb3cp CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIp OworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JNQVQgSlNP Tik7CisganNvbl9xdWVyeSAKKy0tLS0tLS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRleHQpOworIGpzb25f cXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMSwgMl0KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDEwKSk7CisganNvbl9xdWVyeSAK Ky0tLS0tLS0tLS0tLQorIFsxLCAyXSAgICAKKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFyKDMpKTsKKyBqc29uX3F1ZXJ5IAorLS0t LS0tLS0tLS0tCisgWzEsCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwy XScsICckJyBSRVRVUk5JTkcgdGV4dCBGT1JNQVQgSlNPTik7CisganNvbl9xdWVyeSAKKy0tLS0t LS0tLS0tLQorIFsxLCAyXQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEs Ml0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhKTsKKyAgIGpzb25fcXVlcnkgICAKKy0tLS0tLS0tLS0t LS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OKTsKKyAgIGpzb25fcXVl cnkgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBceDViMzEyYzIwMzI1ZAorKDEgcm93KQorCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEVNUFRZ IE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2aW9yIGV4cHJlc3Np b24gb2YgdHlwZSBqc29uYiB0byBieXRlYQorTElORSAxOiAuLi4gSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEVNUFRZIE9CSkUuLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEZPUk1B VCBKU09OIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitFUlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2 aW9yIGV4cHJlc3Npb24gb2YgdHlwZSBqc29uYiB0byBieXRlYQorTElORSAxOiAuLi5qc29uYiAn WzEsMl0nLCAnJFsqXScgUkVUVVJOSU5HIGJ5dGVhIEZPUk1BVCBKU09OIEVNUFRZIE9CSkUuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgUkVUVVJOSU5H IGpzb24gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0t Cisge30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0n IFJFVFVSTklORyBqc29uYiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworIGpzb25fcXVlcnkgCist LS0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzMs NF0nLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVNUFRZIE9CSkVDVCBPTiBFUlJPUik7CitF UlJPUjogIGNhbm5vdCBjYXN0IGJlaGF2aW9yIGV4cHJlc3Npb24gb2YgdHlwZSBqc29uYiB0byBi aWdpbnRbXQorTElORSAxOiAuLi5PTl9RVUVSWShqc29uYiAnWzMsNF0nLCAnJFsqXScgUkVUVVJO SU5HIGJpZ2ludFtdIEVNUFRZIE9CSkUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgSlNPTl9RVUVSWShqc29u YiAnIlszLDRdIicsICckWypdJyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRUNUIE9OIEVS Uk9SKTsKK0VSUk9SOiAgY2Fubm90IGNhc3QgYmVoYXZpb3IgZXhwcmVzc2lvbiBvZiB0eXBlIGpz b25iIHRvIGJpZ2ludFtdCitMSU5FIDE6IC4uLl9RVUVSWShqc29uYiAnIlszLDRdIicsICckWypd JyBSRVRVUk5JTkcgYmlnaW50W10gRU1QVFkgT0JKRS4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIENvZXJjaW9uIGZh aWxzIHdpdGggcXVvdGVzIG9uCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICck JyBSRVRVUk5JTkcgaW50MiBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAiIjEyMy4xIiIKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBpbnQ0IGVycm9yIG9uIGVycm9yKTsKK0VSUk9S OiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZWdlcjogIiIxMjMuMSIiCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50OCBlcnJvciBv biBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGJpZ2ludDog IiIxMjMuMSIiCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5J TkcgYm9vbCBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZv ciB0eXBlIGJvb2xlYW46ICIiMTIzLjEiIgorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMu MSInLCAnJCcgUkVUVVJOSU5HIG51bWVyaWMgZXJyb3Igb24gZXJyb3IpOworRVJST1I6ICBpbnZh bGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBudW1lcmljOiAiIjEyMy4xIiIKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyByZWFsIGVycm9yIG9uIGVycm9y KTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgcmVhbDogIiIxMjMuMSIi CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4 IGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUg ZG91YmxlIHByZWNpc2lvbjogIiIxMjMuMSIiCistLSBGaW5lIHdpdGggT01JVCBRVU9URVMKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzLjEiJywgJyQnIFJFVFVSTklORyBpbnQyIG9taXQg cXVvdGVzIGVycm9yIG9uIGVycm9yKTsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9y IHR5cGUgc21hbGxpbnQ6ICIxMjMuMSIKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciMTIzLjEi JywgJyQnIFJFVFVSTklORyBmbG9hdDggb21pdCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworIGpz b25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAgICAgIDEyMy4xCisoMSByb3cpCisKKy0tIFJFVFVH TklORyBwc2V1ZG8tdHlwZXMgbm90IGFsbG93ZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb Myw0XScsICckWypdJyBSRVRVUk5JTkcgYW55YXJyYXkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsK K0VSUk9SOiAgcmV0dXJuaW5nIHBzZXVkby10eXBlcyBpcyBub3Qgc3VwcG9ydGVkIGluIFNRTC9K U09OIGZ1bmN0aW9ucworU0VMRUNUCisJeCwgeSwKKwlKU09OX1FVRVJZKAorCQlqc29uYiAnWzEs MiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHggJiYgQCA8PSAkeSknCisJCVBBU1NJ TkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSCisJCUVNUFRZIEFS UkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHgsCisJ Z2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisgeCB8IHkgfCAgICAgbGlzdCAgICAgCistLS0rLS0t Ky0tLS0tLS0tLS0tLS0tCisgMCB8IDAgfCBbXQorIDAgfCAxIHwgWzFdCisgMCB8IDIgfCBbMSwg Ml0KKyAwIHwgMyB8IFsxLCAyLCAzXQorIDAgfCA0IHwgWzEsIDIsIDMsIDRdCisgMSB8IDAgfCBb XQorIDEgfCAxIHwgWzFdCisgMSB8IDIgfCBbMSwgMl0KKyAxIHwgMyB8IFsxLCAyLCAzXQorIDEg fCA0IHwgWzEsIDIsIDMsIDRdCisgMiB8IDAgfCBbXQorIDIgfCAxIHwgW10KKyAyIHwgMiB8IFsy XQorIDIgfCAzIHwgWzIsIDNdCisgMiB8IDQgfCBbMiwgMywgNF0KKyAzIHwgMCB8IFtdCisgMyB8 IDEgfCBbXQorIDMgfCAyIHwgW10KKyAzIHwgMyB8IFszXQorIDMgfCA0IHwgWzMsIDRdCisgNCB8 IDAgfCBbXQorIDQgfCAxIHwgW10KKyA0IHwgMiB8IFtdCisgNCB8IDMgfCBbXQorIDQgfCA0IHwg WzRdCisoMjUgcm93cykKKworLS0gcmVjb3JkIHR5cGUgcmV0dXJuaW5nIHdpdGggcXVvdGVzIGJl aGF2aW9yLgorQ1JFQVRFIFRZUEUgY29tcF9hYmMgQVMgKGEgdGV4dCwgYiBpbnQsIGMgdGltZXN0 YW1wKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iJ3sicmVjIjogIihhYmMsNDIsMDEuMDIuMjAw MykifScsICckLnJlYycgcmV0dXJuaW5nIGNvbXBfYWJjIG9taXQgcXVvdGVzKTsKKyAgICAgICAg ICAgICBqc29uX3F1ZXJ5ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAoYWJjLDQyLCJUaHUgSmFuIDAyIDAwOjAwOjAwIDIwMDMiKQorKDEgcm93 KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMp In0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3Rlcyk7CisganNvbl9xdWVy eSAKKy0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7 InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2Fi YyBrZWVwIHF1b3RlcyBlcnJvciBvbiBlcnJvcik7CitFUlJPUjogIGNhbm5vdCBjYWxsIHBvcHVs YXRlX2NvbXBvc2l0ZSBvbiBhIHNjYWxhcgorRFJPUCBUWVBFIGNvbXBfYWJjOworLS0gRXh0ZW5z aW9uOiByZWNvcmQgdHlwZXMgcmV0dXJuaW5nCitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWMgQVMg KGEgaW50LCB0IHRleHQsIGpzIGpzb24sIGpiIGpzb25iLCBqc2EganNvbltdKTsKK0NSRUFURSBU WVBFIHNxbGpzb25iX3JlY2EgQVMgKHJlY2Egc3FsanNvbmJfcmVjW10pOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwg IjIiLCB7fV0sICJqYiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0n IFJFVFVSTklORyBzcWxqc29uYl9yZWMpOworICAgICAgICAgICAgICAgICAgICAganNvbl9xdWVy eSAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKDEsYWFhLCJbMSwgIiIyIiIsIHt9XSIsInsiIngiIjog WzEsICIiMiIiLCB7fV19IiwpCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb eyJhIjogImEiLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJq YiI6IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBz cWxqc29uYl9yZWMgRVJST1IgT04gRVJST1IpOworRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRh eCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjog ImEiLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6IHsi eCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxqc29u Yl9yZWMpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIgJ3sianNhIjogIFt7ImEiOiAxLCAiYiI6 IFsiZm9vIl19LCB7ImEiOiAyLCAiYyI6IHt9fSwgMTIzXX0nLCAnJCcgUkVUVVJOSU5HIHNxbGpz b25iX3JlYykpLmpzYSk7CisgICAgICAgICB1bm5lc3QgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHsiYSI6IDEsICJiIjogWyJmb28iXX0KKyB7ImEiOiAyLCAiYyI6IHt9fQor IDEyMworKDMgcm93cykKKworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIg J3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9 LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOworIGEgfCAg ICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAgICB8IGpzYSAKKy0tLSstLS0tLS0tLS0tLS0tKy0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8IFsiZm9vIiwgW11dIHwgICAgfCAgICAgICAgICAg IHwgCisgMiB8ICAgICAgICAgICAgIHwgICAgfCBbe30sIHRydWVdIHwgCisoMiByb3dzKQorCitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIs ICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAy fV0nLCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbeyJhIjogMSwgImIi OiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwg IjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNvbnBhdGggRVJST1Ig T04gRVJST1IpOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAieyIgb2YganNvbnBh dGggaW5wdXQKKy0tIEV4dGVuc2lvbjogYXJyYXkgdHlwZXMgcmV0dXJuaW5nCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMixudWxsLCIzIl0nLCAnJFsqXScgUkVUVVJOSU5HIGludFtdIFdJ VEggV1JBUFBFUik7CisgIGpzb25fcXVlcnkgIAorLS0tLS0tLS0tLS0tLS0KKyB7MSwyLE5VTEws M30KKygxIHJvdykKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywg JyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1IgT04gRVJST1IpOworRVJS T1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlwZSBpbnRlZ2VyOiAiYSIKK1NFTEVDVCBK U09OX1FVRVJZKGpzb25iICdbMSwyLG51bGwsImEiXScsICckWypdJyBSRVRVUk5JTkcgaW50W10g V0lUSCBXUkFQUEVSKTsKKyBqc29uX3F1ZXJ5IAorLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gdW5uZXN0KEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAxLCAidCI6IFsi Zm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9LCB0cnVlXX1dJywgJyQnIFJFVFVSTklORyBz cWxqc29uYl9yZWNbXSkpOworIGEgfCAgICAgIHQgICAgICB8IGpzIHwgICAgIGpiICAgICB8IGpz YSAKKy0tLSstLS0tLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tCisgMSB8IFsiZm9v IiwgW11dIHwgICAgfCAgICAgICAgICAgIHwgCisgMiB8ICAgICAgICAgICAgIHwgICAgfCBbe30s IHRydWVdIHwgCisoMiByb3dzKQorCistLSBFeHRlbnNpb246IGRvbWFpbiB0eXBlcyByZXR1cm5p bmcKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICckLmEnIFJFVFVSTklORyBz cWxqc29uYl9pbnRfbm90X251bGwpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAgICAg ICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICck LmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwpOworIGpzb25fcXVlcnkgCistLS0t LS0tLS0tLS0KKyAgICAgICAgICAgCisoMSByb3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICd7ImEiOiAxfScsICckLmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1Ig T04gRVJST1IpOworRVJST1I6ICBubyBTUUwvSlNPTiBpdGVtCistLSBUZXN0IHRpbWVzdGFtcHR6 IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRz JyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMpOwor ICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAiCisoMSByb3cpCisKK1NFTEVDVCBKU09O X1FVRVJZKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0y MSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyBqc29uKTsKKyAgICAgICAgIGpzb25fcXVl cnkgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICIyMDE4LTAyLTIx VDAyOjM0OjU2KzAwOjAwIgorKDEgcm93KQorCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnbnVs bCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBB UyB0cyBSRVRVUk5JTkcganNvbmIpOworICAgICAgICAganNvbl9xdWVyeSAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIjIwMTgtMDItMjFUMDI6MzQ6NTYrMDA6MDAi CisoMSByb3cpCisKKy0tIFRlc3QgY29uc3RyYWludHMKK0NSRUFURSBUQUJMRSB0ZXN0X2pzb25i X2NvbnN0cmFpbnRzICgKKwlqcyB0ZXh0LAorCWkgaW50LAorCXgganNvbmIgREVGQVVMVCBKU09O X1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBXSVRIIFdSQVBQRVIpCisJQ09OU1RSQUlOVCB0 ZXN0X2pzb25iX2NvbnN0cmFpbnQxCisJCUNIRUNLIChqcyBJUyBKU09OKQorCUNPTlNUUkFJTlQg dGVzdF9qc29uYl9jb25zdHJhaW50MgorCQlDSEVDSyAoSlNPTl9FWElTVFMoanM6Ompzb25iLCAn JC5hJyBQQVNTSU5HIGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQsIGFycmF5WzEsMiwzXSBh cyBhcnIpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50MworCQlDSEVDSyAoSlNP Tl9WQUxVRShqczo6anNvbmIsICckLmEnIFJFVFVSTklORyBpbnQgREVGQVVMVCAnMTInIE9OIEVN UFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisJQ09OU1RSQUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFp bnQ0CisJCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29uYiwgJyQuYScgV0lUSCBDT05ESVRJT05B TCBXUkFQUEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCBqc29uYiAnWzEwXScpCisJQ09OU1RS QUlOVCB0ZXN0X2pzb25iX2NvbnN0cmFpbnQ1CisJCUNIRUNLIChKU09OX1FVRVJZKGpzOjpqc29u YiwgJyQuYScgUkVUVVJOSU5HIGNoYXIoNSkgT01JVCBRVU9URVMgRU1QVFkgQVJSQVkgT04gRU1Q VFkpID4gICdhJyBDT0xMQVRFICJDIikKKyk7CitcZCB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRl c3RfanNvbmJfY29uc3RyYWludHMiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBqcyAgICAgfCB0ZXh0 ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBpICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKKyB4ICAgICAgfCBqc29uYiAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCBKU09OX1FVRVJZKCdbMSwgMl0nOjpqc29uYiwgJyRbKl0nIFJFVFVSTklORyBqc29uYiBX SVRIIFVOQ09ORElUSU9OQUwgV1JBUFBFUikKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ0ZXN0 X2pzb25iX2NvbnN0cmFpbnQxIiBDSEVDSyAoanMgSVMgSlNPTikKKyAgICAidGVzdF9qc29uYl9j b25zdHJhaW50MiIgQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQuImEiJyBQQVNTSU5H IGkgKyA1IEFTIGludCwgaTo6dGV4dCBBUyB0eHQsIEFSUkFZWzEsIDIsIDNdIEFTIGFycikpCisg ICAgInRlc3RfanNvbmJfY29uc3RyYWludDMiIENIRUNLIChKU09OX1ZBTFVFKGpzOjpqc29uYiwg JyQuImEiJyBSRVRVUk5JTkcgaW50ZWdlciBERUZBVUxUIDEyIE9OIEVNUFRZIEVSUk9SIE9OIEVS Uk9SKSA+IGkpCisgICAgInRlc3RfanNvbmJfY29uc3RyYWludDQiIENIRUNLIChKU09OX1FVRVJZ KGpzOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcganNvbmIgV0lUSCBDT05ESVRJT05BTCBXUkFQ UEVSIEVNUFRZIE9CSkVDVCBPTiBFUlJPUikgPCAnWzEwXSc6Ompzb25iKQorICAgICJ0ZXN0X2pz b25iX2NvbnN0cmFpbnQ1IiBDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLiJhIicgUkVU VVJOSU5HIGNoYXJhY3Rlcig1KSBPTUlUIFFVT1RFUyBFTVBUWSBBUlJBWSBPTiBFTVBUWSkgPiAo J2EnOjpicGNoYXIgQ09MTEFURSAiQyIpKQorCitTRUxFQ1QgY2hlY2tfY2xhdXNlCitGUk9NIGlu Zm9ybWF0aW9uX3NjaGVtYS5jaGVja19jb25zdHJhaW50cworV0hFUkUgY29uc3RyYWludF9uYW1l IExJS0UgJ3Rlc3RfanNvbmJfY29uc3RyYWludCUnCitPUkRFUiBCWSAxOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2xhdXNlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAoSlNPTl9RVUVSWSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcgY2hhcmFjdGVy KDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZKSA+ICgnYSc6OmJwY2hhciBDT0xM QVRFICJDIikpCisgKEpTT05fUVVFUlkoKGpzKTo6anNvbmIsICckLiJhIicgUkVUVVJOSU5HIGpz b25iIFdJVEggQ09ORElUSU9OQUwgV1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwgJ1sx MF0nOjpqc29uYikKKyAoSlNPTl9WQUxVRSgoanMpOjpqc29uYiwgJyQuImEiJyBSRVRVUk5JTkcg aW50ZWdlciBERUZBVUxUIDEyIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKSA+IGkpCisgKGpzIElT IEpTT04pCisgSlNPTl9FWElTVFMoKGpzKTo6anNvbmIsICckLiJhIicgUEFTU0lORyAoaSArIDUp IEFTIGludCwgKGkpOjp0ZXh0IEFTIHR4dCwgQVJSQVlbMSwgMiwgM10gQVMgYXJyKQorKDUgcm93 cykKKworU0VMRUNUIHBnX2dldF9leHByKGFkYmluLCBhZHJlbGlkKQorRlJPTSBwZ19hdHRyZGVm CitXSEVSRSBhZHJlbGlkID0gJ3Rlc3RfanNvbmJfY29uc3RyYWludHMnOjpyZWdjbGFzcworT1JE RVIgQlkgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEpTT05fUVVFUlkoJ1sxLCAyXSc6Ompzb25iLCAnJFsqXScgUkVUVVJOSU5HIGpzb25iIFdJ VEggVU5DT05ESVRJT05BTCBXUkFQUEVSKQorKDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X2pz b25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJycsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxh dGlvbiAidGVzdF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAi dGVzdF9qc29uYl9jb25zdHJhaW50MSIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgs IDEsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAo JzEnLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3Ry YWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIi CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoMSwgMSwgWzEsIDJdKS4KK0lOU0VSVCBJ TlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgnW10nKTsKK0VSUk9SOiAgbmV3IHJv dyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJfY29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNv bnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3RyYWludDIiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBj b250YWlucyAoW10sIG51bGwsIFsxLCAyXSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0 cmFpbnRzIFZBTFVFUyAoJ3siYiI6IDF9JywgMSk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0 aW9uICJ0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJ0 ZXN0X2pzb25iX2NvbnN0cmFpbnQyIgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKHsi YiI6IDF9LCAxLCBbMSwgMl0pLgorSU5TRVJUIElOVE8gdGVzdF9qc29uYl9jb25zdHJhaW50cyBW QUxVRVMgKCd7ImEiOiAxfScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVz dF9qc29uYl9jb25zdHJhaW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29u Yl9jb25zdHJhaW50MyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiAxfSwg MSwgWzEsIDJdKS4KK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn eyJhIjogN30nLCAxKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlc3RfanNvbmJf Y29uc3RyYWludHMiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRlc3RfanNvbmJfY29uc3Ry YWludDUiCitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoeyJhIjogN30sIDEsIFsxLCAy XSkuCitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZBTFVFUyAoJ3siYSI6IDEw fScsIDEpOworRVJST1I6ICBuZXcgcm93IGZvciByZWxhdGlvbiAidGVzdF9qc29uYl9jb25zdHJh aW50cyIgdmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidGVzdF9qc29uYl9jb25zdHJhaW50NCIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICh7ImEiOiAxMH0sIDEsIFsxLCAyXSkuCitE Uk9QIFRBQkxFIHRlc3RfanNvbmJfY29uc3RyYWludHM7CistLSBUZXN0IG11dGFiaWxpbHkgb2Yg cXVlcnkgZnVuY3Rpb25zCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5KGpzIGpz b25iLCBiIGludCk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJCcpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkg KEpTT05fUVVFUlkoanMsICckLmFbMF0nKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50aW1lKCknKSk7CitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZSgpJykp OworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLnRpbWVfdHooKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJl c3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50aW1lc3RhbXAoKScpKTsKK0VSUk9SOiAg ZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50 aW1lc3RhbXBfdHooKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZSgpIDwgJC50aW1lX3R6KCkpJykp OworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJ TU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmEgPyAoQC5kYXRlKCkgPCAkLnRpbWUoKSknKSk7CitFUlJPUjogIGZ1bmN0aW9u cyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElO REVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRp bWUoKSA8ICQudGltZSgpKScpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Np b24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC50aW1lX3R6KCkp JykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtl ZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXAoKSA8ICQudGltZXN0YW1wX3R6KCkpJykpOwor RVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1V VEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlko anMsICckLmEgPyAoQC50aW1lc3RhbXBfdHooKSA8ICQudGltZXN0YW1wX3R6KCkpJykpOworRVJS T1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFC TEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMs ICckLmEgPyAoQC50aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJPUjog IGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu YSA/IChALmRhdGUoKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpKScpKTsKK0VSUk9SOiAgZnVu Y3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVB VEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8g KEAudGltZXN0YW1wKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitFUlJPUjogIGZ1 bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JF QVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/ IChALnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkiKSknKSk7CitFUlJPUjogIGZ1bmN0 aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChA LnRpbWVzdGFtcF90eigpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworRVJST1I6ICBm dW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEg PyAoQC50aW1lc3RhbXBfdHooKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIikpJykpOworRVJST1I6ICBm dW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRh dGUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitFUlJPUjogIGZ1bmN0 aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZSgp IDwgJHgnIFBBU1NJTkcgJzEyMzQnOjppbnQgQVMgeCkpOworRVJST1I6ICBmdW5jdGlvbnMgaW4g aW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBP TiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lc3Rh bXAoMikgPCAkLnRpbWVzdGFtcCgzKSknKSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBl eHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3Rf anNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKScpKTsKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAo QCA8ICQuZGF0ZXRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmls aXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAuZGF0ZXRpbWUoKSA8ICQuZGF0ZXRpbWUoKSkn KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2Vk IElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSkn KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2Vk IElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhI Ok1JIFRaSCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZ LU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0 ZXRpbWUoIllZLU1NLUREIEhIOk1JIikpJykpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXgg ZXhwcmVzc2lvbiBtdXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBUWkgi KSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04g dGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgiSEg6TUkg VFpIIikgPCAkeScgUEFTU0lORyAnMTI6MzQnOjp0aW1ldHogQVMgeCkpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8 ICR4JyBQQVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBp biBpbmRleCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoKSA8 ICR4JyBQQVNTSU5HICcxMjM0Jzo6aW50IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pz b25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPyAoQCA9PSAkeCkn IFBBU1NJTkcgJzEyOjM0Jzo6dGltZSBBUyB4KSk7CitFUlJPUjogIGZ1bmN0aW9ucyBpbiBpbmRl eCBleHByZXNzaW9uIG11c3QgYmUgbWFya2VkIElNTVVUQUJMRQorQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIllZLU1NLURE IikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIwMjAtMDctMTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFU RSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQu YSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsK K0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24gbXVzdCBiZSBtYXJrZWQgSU1N VVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZ KGpzLCAnJFsxLCAwIHRvICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScgUEFTU0lORyAnMTI6 MzQnOjp0aW1lIEFTIHgpKTsKK0VSUk9SOiAgZnVuY3Rpb25zIGluIGluZGV4IGV4cHJlc3Npb24g bXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxFCitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRh YmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJFsxLCAkLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA9 PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9WQUxVRShqcywgJyQnIERFRkFVTFQgcmFuZG9tKCk6 OmludCBPTiBFUlJPUikpOworRVJST1I6ICBmdW5jdGlvbnMgaW4gaW5kZXggZXhwcmVzc2lvbiBt dXN0IGJlIG1hcmtlZCBJTU1VVEFCTEUKKy0tIERFRkFVTFQgZXhwcmVzc2lvbgorQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gcmV0X3NldGludCgpIFJFVFVSTlMgU0VUT0YgaW50ZWdlciBBUwor JCQKK0JFR0lOCisgICAgUkVUVVJOIFFVRVJZIEVYRUNVVEUgJ3NlbGVjdCAxIHVuaW9uIGFsbCBz ZWxlY3QgMSc7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEU7CitTRUxFQ1Qg SlNPTl9RVUVSWShqcywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgcmV0X3NldGludCgpIE9O IEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK0VSUk9SOiAgREVGQVVMVCBleHBy ZXNzaW9uIG11c3Qgbm90IHJldHVybiBhIHNldAorTElORSAxOiBTRUxFQ1QgSlNPTl9RVUVSWShq cywgJyQnICBSRVRVUk5JTkcgaW50IERFRkFVTFQgcmV0X3NldGludCguLi4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1NFTEVDVCBK U09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBiICsgMSBPTiBFUlJPUikg RlJPTSB0ZXN0X2pzb25iX211dGFiaWxpdHk7CitFUlJPUjogIERFRkFVTFQgZXhwcmVzc2lvbiBt dXN0IG5vdCBjb250YWluIGNvbHVtbiByZWZlcmVuY2VzCitMSU5FIDE6IFNFTEVDVCBKU09OX1FV RVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCBiICsgMSBPTiBFUi4uLgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VM RUNUIEpTT05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIHN1bSgxKSBvdmVy KCkgT04gRVJST1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRVJST1I6ICBjYW4gb25s eSBzcGVjaWZ5IGNvbnN0YW50LCBub24tYWdncmVnYXRlIGZ1bmN0aW9uLCBvciBvcGVyYXRvciBl eHByZXNzaW9uIGZvciBERUZBVUxUCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcg IFJFVFVSTklORyBpbnQgREVGQVVMVCBzdW0oMSkgb3Zlci4uLgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorU0VMRUNUIEpTT05fUVVF UlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIChTRUxFQ1QgMSkgT04gRVJST1IpIEZS T00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRVJST1I6ICBjYW4gb25seSBzcGVjaWZ5IGNvbnN0 YW50LCBub24tYWdncmVnYXRlIGZ1bmN0aW9uLCBvciBvcGVyYXRvciBleHByZXNzaW9uIGZvciBE RUZBVUxUCitMSU5FIDE6IFNFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQg REVGQVVMVCAoU0VMRUNUIDEpIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSB0ZXN0X2pzb25iX211dGFiaWxp dHk7CitEUk9QIEZVTkNUSU9OIHJldF9zZXRpbnQ7CistLSBFeHRlbnNpb246IG5vbi1jb25zdGFu dCBKU09OIHBhdGgKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8 fCAnLicgfHwgJ2EnKTsKKyBqc29uX2V4aXN0cyAKKy0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAn YScpOworIGpzb25fdmFsdWUgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBERUZBVUxU ICdmb28nIE9OIEVNUFRZKTsKKyBqc29uX3ZhbHVlIAorLS0tLS0tLS0tLS0tCisgZm9vCisoMSBy b3cpCisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8 fCAnYScpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyAxMjMKKygxIHJvdykKKworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRI IFdSQVBQRVIpOworIGpzb25fcXVlcnkgCistLS0tLS0tLS0tLS0KKyBbMTIzXQorKDEgcm93KQor CistLSBTaG91bGQgZmFpbCAoaW52YWxpZCBwYXRoKQorU0VMRUNUIEpTT05fUVVFUlkoanNvbmIg J3siYSI6IDEyM30nLCAnZXJyb3InIHx8ICcgJyB8fCAnZXJyb3InKTsKK0VSUk9SOiAgc3ludGF4 IGVycm9yIGF0IG9yIG5lYXIgIiAiIG9mIGpzb25wYXRoIGlucHV0CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQppbmRleCAxZDhhNDE0ZWVhLi45MTBmNmZlM2M5IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZXN0OiBzZWxlY3Rfdmlld3MgcG9y dGFsc19wMiBmb3JlaWduX2tleSBjbHVzdGVyIGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBjb21i bwogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04g cmVsYXRlZCkKICMgLS0tLS0tLS0tLQotdGVzdDoganNvbiBqc29uYiBqc29uX2VuY29kaW5nIGpz b25wYXRoIGpzb25wYXRoX2VuY29kaW5nIGpzb25iX2pzb25wYXRoIHNxbGpzb24KK3Rlc3Q6IGpz b24ganNvbmIganNvbl9lbmNvZGluZyBqc29ucGF0aCBqc29ucGF0aF9lbmNvZGluZyBqc29uYl9q c29ucGF0aCBzcWxqc29uIHNxbGpzb25fcXVlcnlmdW5jcwogCiAjIC0tLS0tLS0tLS0KICMgQW5v dGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpz b25fcXVlcnlmdW5jcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u NWJlMmQ4ZTNmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpz b25fcXVlcnlmdW5jcy5zcWwKQEAgLTAsMCArMSw0MjcgQEAKKy0tIEpTT05fRVhJU1RTCisKKy0t IGpzb24gYXJndW1lbnRzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgSlNPTl9FWElT VFMoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKworU0VMRUNUIEpTT05fRVhJU1RTKE5VTEw6Ompz b25iLCAnJCcpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbXScsICckJyk7CitTRUxFQ1Qg SlNPTl9FWElTVFMoSlNPTl9PQkpFQ1QoUkVUVVJOSU5HIGpzb25iKSwgJyQnKTsKKworU0VMRUNU IEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQnKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAn bnVsbCcsICckJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ1tdJywgJyQnKTsKKworU0VM RUNUIEpTT05fRVhJU1RTKGpzb25iICcxJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJU1RTKGpz b25iICcxJywgJ3N0cmljdCAkLmEnKTsgLS0gRkFMU0Ugb24gZXJyb3IKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAnMScsICdzdHJpY3QgJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNP Tl9FWElTVFMoanNvbmIgJ251bGwnLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIg J1tdJywgJyQuYScpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICdbMSwgImFhYSIsIHsiYSI6 IDF9XScsICdzdHJpY3QgJC5hJyk7IC0tIEZBTFNFIG9uIGVycm9yCitTRUxFQ1QgSlNPTl9FWElT VFMoanNvbmIgJ1sxLCAiYWFhIiwgeyJhIjogMX1dJywgJ2xheCAkLmEnKTsKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAne30nLCAnJC5hJyk7CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3si YiI6IDEsICJhIjogMn0nLCAnJC5hJyk7CisKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScs ICckLmEuYicpOworU0VMRUNUIEpTT05fRVhJU1RTKGpzb25iICd7ImEiOiB7ImIiOiAxfX0nLCAn JC5hLmInKTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICck LmEuYicpOworCitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAn JC4qID8gKEAgPiAkeCknIFBBU1NJTkcgMSBBUyB4KTsKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29u YiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4KScgUEFTU0lORyAnMScgQVMgeCk7 CitTRUxFQ1QgSlNPTl9FWElTVFMoanNvbmIgJ3siYSI6IDEsICJiIjogMn0nLCAnJC4qID8gKEAg PiAkeCAmJiBAIDwgJHkpJyBQQVNTSU5HIDAgQVMgeCwgMiBBUyB5KTsKK1NFTEVDVCBKU09OX0VY SVNUUyhqc29uYiAneyJhIjogMSwgImIiOiAyfScsICckLiogPyAoQCA+ICR4ICYmIEAgPCAkeSkn IFBBU1NJTkcgMCBBUyB4LCAxIEFTIHkpOworCistLSBleHRlbnNpb246IGJvb2xlYW4gZXhwcmVz c2lvbnMKK1NFTEVDVCBKU09OX0VYSVNUUyhqc29uYiAnMScsICckID4gMicpOworU0VMRUNUIEpT T05fRVhJU1RTKGpzb25iICcxJywgJyQuYSA+IDInIEVSUk9SIE9OIEVSUk9SKTsKKworLS0gSlNP Tl9WQUxVRQorCistLSBqc29uIGFyZ3VtZW50cyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZAorU0VM RUNUIEpTT05fVkFMVUUoTlVMTCBGT1JNQVQgSlNPTiwgJyQnKTsKKworU0VMRUNUIEpTT05fVkFM VUUoTlVMTDo6anNvbmIsICckJyk7CisKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywg JyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBpbnQp OworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAndHJ1ZScsICckJyk7CitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAndHJ1ZScsICckJyBSRVRVUk5JTkcgYm9vbCk7CisKK1NFTEVDVCBKU09OX1ZB TFVFKGpzb25iICcxMjMnLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEyMycsICck JyBSRVRVUk5JTkcgaW50KSArIDIzNDsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxMjMnLCAn JCcgUkVUVVJOSU5HIHRleHQpOworLyoganNvbmIgYnl0ZWEgPz8/ICovCitTRUxFQ1QgSlNPTl9W QUxVRShqc29uYiAnMTIzJywgJyQnIFJFVFVSTklORyBieXRlYSBFUlJPUiBPTiBFUlJPUik7CisK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxLjIzJywgJyQnKTsKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICcxLjIzJywgJyQnIFJFVFVSTklORyBpbnQpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyIxLjIzIicsICckJyBSRVRVUk5JTkcgbnVtZXJpYyk7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnIjEuMjMiJywgJyQnIFJFVFVSTklORyBpbnQgRVJST1IgT04gRVJST1IpOworCitTRUxF Q1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0KTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICciYWFhIicsICckJyBSRVRVUk5JTkcgY2hhcig1KSk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworU0VMRUNUIEpTT05fVkFMVUUoanNv bmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25i ICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIg JyJhYWEiJywgJyQnIFJFVFVSTklORyBqc29uIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09O X1ZBTFVFKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcganNvbmIgRVJST1IgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJyJcImFhYVwiIicsICckJyBSRVRVUk5JTkcganNv bik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnIlwiYWFhXCIiJywgJyQnIFJFVFVSTklORyBq c29uYik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGlu dCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGludCBF UlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnImFhYSInLCAnJCcgUkVU VVJOSU5HIGludCBERUZBVUxUIDExMSBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29u YiAnIjEyMyInLCAnJCcgUkVUVVJOSU5HIGludCkgKyAyMzQ7CisKK1NFTEVDVCBKU09OX1ZBTFVF KGpzb25iICciMjAxNy0wMi0yMCInLCAnJCcgUkVUVVJOSU5HIGRhdGUpICsgOTsKKworLS0gVGVz dCBOVUxMIGNoZWNrcyBleGVjdXRpb24gaW4gZG9tYWluIHR5cGVzCitDUkVBVEUgRE9NQUlOIHNx bGpzb25iX2ludF9ub3RfbnVsbCBBUyBpbnQgTk9UIE5VTEw7CitTRUxFQ1QgSlNPTl9WQUxVRShq c29uYiAnbnVsbCcsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfaW50X25vdF9udWxsKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyQnIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90 X251bGwgRVJST1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAn JCcgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1QVFkgRVJS T1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJO SU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCBERUZBVUxUIDIgT04gRU1QVFkgRVJST1IgT04gRVJS T1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAgJyQuYScgUkVUVVJOSU5HIHNxbGpz b25iX2ludF9ub3RfbnVsbCBERUZBVUxUIE5VTEwgT04gRU1QVFkgRVJST1IgT04gRVJST1IpOwor Q1JFQVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVNICgncmVkJywgJ29yYW5nZScsICd5ZWxsb3cnLCAn Z3JlZW4nLCAnYmx1ZScsICdwdXJwbGUnKTsKK0NSRUFURSBET01BSU4gcmdiIEFTIHJhaW5ib3cg Q0hFQ0sgKFZBTFVFIElOICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSk7CitTRUxFQ1QgSlNPTl9W QUxVRSgnInB1cnBsZSInOjpqc29uYiwgJ2xheCAkWypdJyBSRVRVUk5JTkcgcmdiKTsKK1NFTEVD VCBKU09OX1ZBTFVFKCcicHVycGxlIic6Ompzb25iLCAnbGF4ICRbKl0nIFJFVFVSTklORyByZ2Ig RVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnW10nLCAnJCcpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1tdJywgJyQnIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICd7fScsICckJyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAn e30nLCAnJCcgRVJST1IgT04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScs ICckLmEnKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIEVSUk9S IE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ3N0cmljdCAkLmEnIERF RkFVTFQgJ2Vycm9yJyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICds YXggJC5hJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnMScsICds YXggJC5hJyBFUlJPUiBPTiBFTVBUWSBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxV RShqc29uYiAnMScsICdzdHJpY3QgJC5hJyBERUZBVUxUIDIgT04gRVJST1IpOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgREVGQVVMVCAyIE9OIEVSUk9SKTsKK1NFTEVD VCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIERFRkFVTFQgJzInIE9OIEVSUk9SKTsK K1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICcxJywgJ2xheCAkLmEnIE5VTEwgT04gRU1QVFkgREVG QVVMVCAnMicgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQu YScgREVGQVVMVCAnMicgT04gRU1QVFkgREVGQVVMVCAnMycgT04gRVJST1IpOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJzEnLCAnbGF4ICQuYScgRVJST1IgT04gRU1QVFkgREVGQVVMVCAnMycg T04gRVJST1IpOworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWzEsMl0nLCAnJFsqXScgRVJS T1IgT04gRVJST1IpOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1sxLDJdJywgJyRbKl0nIERF RkFVTFQgJzAnIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdbIiAiXScsICck WypdJyBSRVRVUk5JTkcgaW50IEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpz b25iICdbIiAiXScsICckWypdJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgMiArIDMgT04gRVJST1Ip OworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnQg REVGQVVMVCAyICsgMyBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnWyIxIl0n LCAnJFsqXScgUkVUVVJOSU5HIGludCBGT1JNQVQgSlNPTik7IC0tIFJFVFVSTklORyBGT1JNQVQg bm90IGFsbG93ZWQKKworLS0gUkVUVUdOSU5HIHBzZXVkby10eXBlcyBub3QgYWxsb3dlZAorU0VM RUNUIEpTT05fVkFMVUUoanNvbmIgJ1siMSJdJywgJyRbKl0nIFJFVFVSTklORyByZWNvcmQpOwor CitTRUxFQ1QKKwl4LAorCUpTT05fVkFMVUUoCisJCWpzb25iICd7ImEiOiAxLCAiYiI6IDJ9JywK KwkJJyQuKiA/IChAID4gJHgpJyBQQVNTSU5HIHggQVMgeAorCQlSRVRVUk5JTkcgaW50CisJCURF RkFVTFQgLTEgT04gRU1QVFkKKwkJREVGQVVMVCAtMiBPTiBFUlJPUgorCSkgeQorRlJPTQorCWdl bmVyYXRlX3NlcmllcygwLCAyKSB4OworCitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckYScgUEFTU0lORyBwb2ludCAnICgxLCAyICknIEFTIGEpOworU0VMRUNUIEpTT05fVkFMVUUo anNvbmIgJ251bGwnLCAnJGEnIFBBU1NJTkcgcG9pbnQgJyAoMSwgMiApJyBBUyBhIFJFVFVSTklO RyBwb2ludCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcsICckYScgUEFTU0lORyBw b2ludCAnICgxLCAyICknIEFTIGEgUkVUVVJOSU5HIHBvaW50IEVSUk9SIE9OIEVSUk9SKTsKKwor LS0gVGVzdCBQQVNTSU5HIGFuZCBSRVRVUk5JTkcgZGF0ZS90aW1lIHR5cGVzCitTRUxFQ1QgSlNP Tl9WQUxVRShqc29uYiAnbnVsbCcsICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDIt MjEgMTI6MzQ6NTYgKzEwJyBBUyB0cyk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgdGltZXN0YW1wdHogJzIwMTgtMDItMjEgMTI6MzQ6NTYgKzEwJyBBUyB0 cyBSRVRVUk5JTkcgdGltZXN0YW1wdHopOworU0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwn LCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMg dHMgUkVUVVJOSU5HIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9WQUxVRShqc29uYiAnbnVsbCcs ICckdHMnIFBBU1NJTkcgZGF0ZSAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVS TklORyBkYXRlKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFTU0lO RyB0aW1lICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIHRpbWUpOwor U0VMRUNUIEpTT05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWV0eiAnMjAx OC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1ldHopOworU0VMRUNUIEpT T05fVkFMVUUoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcCAnMjAxOC0wMi0y MSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklORyB0aW1lc3RhbXApOworCistLSBBbHNvIHRl c3QgUkVUVVJOSU5HIGpzb25bYl0KK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0 cycgUEFTU0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJF VFVSTklORyBqc29uKTsKK1NFTEVDVCBKU09OX1ZBTFVFKGpzb25iICdudWxsJywgJyR0cycgUEFT U0lORyB0aW1lc3RhbXB0eiAnMjAxOC0wMi0yMSAxMjozNDo1NiArMTAnIEFTIHRzIFJFVFVSTklO RyBqc29uYik7CisKKy0tIEpTT05fUVVFUlkKKworLS0ganNvbiBhcmd1bWVudHMgY3VycmVudGx5 IG5vdCBzdXBwb3J0ZWQKK1NFTEVDVCBKU09OX1FVRVJZKE5VTEwgRk9STUFUIEpTT04sICckJyk7 CisKK1NFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompzb25iLCAnJCcpOworCitTRUxFQ1QKKwlKU09O X1FVRVJZKGpzLCAnJCcpLAorCUpTT05fUVVFUlkoanMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAor CUpTT05fUVVFUlkoanMsICckJyBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIpLAorCUpTT05fUVVF UlkoanMsICckJyBXSVRIIFVOQ09ORElUSU9OQUwgQVJSQVkgV1JBUFBFUiksCisJSlNPTl9RVUVS WShqcywgJyQnIFdJVEggQVJSQVkgV1JBUFBFUikKK0ZST00KKwkoVkFMVUVTCisJCShqc29uYiAn bnVsbCcpLAorCQkoJzEyLjMnKSwKKwkJKCd0cnVlJyksCisJCSgnImFhYSInKSwKKwkJKCdbMSwg bnVsbCwgIjIiXScpLAorCQkoJ3siYSI6IDEsICJiIjogWzJdfScpCisJKSBmb28oanMpOworCitT RUxFQ1QKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nKSBBUyAidW5zcGVjIiwKKwlKU09O X1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEhPVVQgV1JBUFBFUikgQVMgIndpdGhvdXQiLAor CUpTT05fUVVFUlkoanMsICdzdHJpY3QgJFsqXScgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBB UyAid2l0aCBjb25kIiwKKwlKU09OX1FVRVJZKGpzLCAnc3RyaWN0ICRbKl0nIFdJVEggVU5DT05E SVRJT05BTCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCB1bmNvbmQiLAorCUpTT05fUVVFUlkoanMs ICdzdHJpY3QgJFsqXScgV0lUSCBBUlJBWSBXUkFQUEVSKSBBUyAid2l0aCIKK0ZST00KKwkoVkFM VUVTCisJCShqc29uYiAnMScpLAorCQkoJ1tdJyksCisJCSgnW251bGxdJyksCisJCSgnWzEyLjNd JyksCisJCSgnW3RydWVdJyksCisJCSgnWyJhYWEiXScpLAorCQkoJ1tbMSwgMiwgM11dJyksCisJ CSgnW3siYSI6IDEsICJiIjogWzJdfV0nKSwKKwkJKCdbMSwgIjIiLCBudWxsLCBbM11dJykKKwkp IGZvbyhqcyk7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5J TkcgdGV4dCk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5H IHRleHQgS0VFUCBRVU9URVMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQn IFJFVFVSTklORyB0ZXh0IEtFRVAgUVVPVEVTIE9OIFNDQUxBUiBTVFJJTkcpOworU0VMRUNUIEpT T05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyB0ZXh0IE9NSVQgUVVPVEVTKTsK K1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckJyBSRVRVUk5JTkcgdGV4dCBPTUlU IFFVT1RFUyBPTiBTQ0FMQVIgU1RSSU5HKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFh IicsICckJyBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGpzb24gT01JVCBRVU9URVMgRVJST1IgT04gRVJS T1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBieXRl YSBGT1JNQVQgSlNPTiBPTUlUIFFVT1RFUyBFUlJPUiBPTiBFUlJPUik7CisKKy0tIEJlaGF2aW9y IHdoZW4gYSBSRVRVUk5JTkcgdHlwZSBoYXMgdHlwbW9kICE9IC0xCitTRUxFQ1QgSlNPTl9RVUVS WShqc29uYiAnImFhYSInLCAnJCcgUkVUVVJOSU5HIGNoYXIoMikpOworU0VMRUNUIEpTT05fUVVF UlkoanNvbmIgJyJhYWEiJywgJyQnIFJFVFVSTklORyBjaGFyKDIpIE9NSVQgUVVPVEVTKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICciYWFhIicsICckLmEnIFJFVFVSTklORyBjaGFyKDIpIE9N SVQgUVVPVEVTIERFRkFVTFQgJ2JiYicgT04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJyJhYWEiJywgJyQuYScgUkVUVVJOSU5HIGNoYXIoMikgT01JVCBRVU9URVMgREVGQVVMVCAn ImJiYiInOjpqc29uYiBPTiBFTVBUWSk7CisKKy0tIFFVT1RFUyBiZWhhdmlvciBzaG91bGQgbm90 IGJlIHNwZWNpZmllZCB3aGVuIFdJVEggV1JBUFBFUiB1c2VkOgorLS0gU2hvdWxkIGZhaWwKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIE9NSVQgUVVPVEVT KTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBXUkFQUEVSIEtFRVAg UVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0nLCAnJCcgV0lUSCBDT05ESVRJ T05BTCBXUkFQUEVSIEtFRVAgUVVPVEVTKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMV0n LCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSIE9NSVQgUVVPVEVTKTsKKy0tIFNob3VsZCBz dWNjZWVkCitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhPVVQgV1JBUFBF UiBPTUlUIFFVT1RFUyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzFdJywgJyQnIFdJVEhP VVQgV1JBUFBFUiBLRUVQIFFVT1RFUyk7CisKKy0tIHRlc3QgUVVPVEVTIGJlaGF2aW9yLgorU0VM RUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5p bmcgaW50W10gb21pdCBxdW90ZXMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAi ezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcgaW50W10ga2VlcCBxdW90ZXMpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIneyJyZWMiOiAiezEsMiwzfSJ9JywgJyQucmVjJyByZXR1cm5pbmcg aW50W10ga2VlcCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIneyJyZWMiOiAiWzEsMl0ifScsICckLnJlYycgcmV0dXJuaW5nIGludDRyYW5nZSBvbWl0IHF1 b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICJbMSwyXSJ9JywgJyQucmVj JyByZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAgcXVvdGVzKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpz b25iJ3sicmVjIjogIlsxLDJdIn0nLCAnJC5yZWMnIAlyZXR1cm5pbmcgaW50NHJhbmdlIGtlZXAg cXVvdGVzIGVycm9yIG9uIGVycm9yKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywg JyRbKl0nKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBOVUxMIE9OIEVN UFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFTVBUWSBPTiBFTVBU WSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRU1QVFkgQVJSQVkgT04g RU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVNUFRZIE9CSkVD VCBPTiBFTVBUWSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW10nLCAnJFsqXScgRVJST1Ig T04gRU1QVFkpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIERFRkFVTFQg JyJlbXB0eSInIE9OIEVNUFRZKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRb Kl0nIEVSUk9SIE9OIEVNUFRZIE5VTEwgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ1tdJywgJyRbKl0nIEVSUk9SIE9OIEVNUFRZIEVNUFRZIEFSUkFZIE9OIEVSUk9SKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbXScsICckWypdJyBFUlJPUiBPTiBFTVBUWSBFTVBUWSBP QkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1tdJywgJyRbKl0nIEVS Uk9SIE9OIEVNUFRZIEVSUk9SIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb XScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MSwyXScsICckWypdJyBFUlJPUiBPTiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn WzEsMl0nLCAnJFsqXScgREVGQVVMVCAnImVtcHR5IicgT04gRVJST1IpOworCitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGpzb24pOworU0VMRUNUIEpTT05f UVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uIEZPUk1BVCBKU09OKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBSRVRVUk5JTkcganNvbmIpOworU0VM RUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBqc29uYiBGT1JNQVQg SlNPTik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIHRl eHQpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyBjaGFy KDEwKSk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnWzEsMl0nLCAnJCcgUkVUVVJOSU5HIGNo YXIoMykpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJFVFVSTklORyB0 ZXh0IEZPUk1BVCBKU09OKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckJyBS RVRVUk5JTkcgYnl0ZWEpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyQnIFJF VFVSTklORyBieXRlYSBGT1JNQVQgSlNPTik7CisKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb MSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NF TEVDVCBKU09OX1FVRVJZKGpzb25iICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcgYnl0ZWEgRk9S TUFUIEpTT04gRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25i ICdbMSwyXScsICckWypdJyBSRVRVUk5JTkcganNvbiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOwor U0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDJdJywgJyRbKl0nIFJFVFVSTklORyBqc29uYiBF TVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1szLDRdJywg JyRbKl0nIFJFVFVSTklORyBiaWdpbnRbXSBFTVBUWSBPQkpFQ1QgT04gRVJST1IpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJyJbMyw0XSInLCAnJFsqXScgUkVUVVJOSU5HIGJpZ2ludFtdIEVN UFRZIE9CSkVDVCBPTiBFUlJPUik7CisKKy0tIENvZXJjaW9uIGZhaWxzIHdpdGggcXVvdGVzIG9u CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50MiBl cnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBS RVRVUk5JTkcgaW50NCBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAn IjEyMy4xIicsICckJyBSRVRVUk5JTkcgaW50OCBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNP Tl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgYm9vbCBlcnJvciBvbiBlcnJv cik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgbnVt ZXJpYyBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnIjEyMy4xIics ICckJyBSRVRVUk5JTkcgcmVhbCBlcnJvciBvbiBlcnJvcik7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYiAnIjEyMy4xIicsICckJyBSRVRVUk5JTkcgZmxvYXQ4IGVycm9yIG9uIGVycm9yKTsKKy0t IEZpbmUgd2l0aCBPTUlUIFFVT1RFUworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSIn LCAnJCcgUkVUVVJOSU5HIGludDIgb21pdCBxdW90ZXMgZXJyb3Igb24gZXJyb3IpOworU0VMRUNU IEpTT05fUVVFUlkoanNvbmIgJyIxMjMuMSInLCAnJCcgUkVUVVJOSU5HIGZsb2F0OCBvbWl0IHF1 b3RlcyBlcnJvciBvbiBlcnJvcik7CisKKy0tIFJFVFVHTklORyBwc2V1ZG8tdHlwZXMgbm90IGFs bG93ZWQKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdbMyw0XScsICckWypdJyBSRVRVUk5JTkcg YW55YXJyYXkgRU1QVFkgT0JKRUNUIE9OIEVSUk9SKTsKKworU0VMRUNUCisJeCwgeSwKKwlKU09O X1FVRVJZKAorCQlqc29uYiAnWzEsMiwzLDQsNSxudWxsXScsCisJCSckWypdID8gKEAgPj0gJHgg JiYgQCA8PSAkeSknCisJCVBBU1NJTkcgeCBBUyB4LCB5IEFTIHkKKwkJV0lUSCBDT05ESVRJT05B TCBXUkFQUEVSCisJCUVNUFRZIEFSUkFZIE9OIEVNUFRZCisJKSBsaXN0CitGUk9NCisJZ2VuZXJh dGVfc2VyaWVzKDAsIDQpIHgsCisJZ2VuZXJhdGVfc2VyaWVzKDAsIDQpIHk7CisKKy0tIHJlY29y ZCB0eXBlIHJldHVybmluZyB3aXRoIHF1b3RlcyBiZWhhdmlvci4KK0NSRUFURSBUWVBFIGNvbXBf YWJjIEFTIChhIHRleHQsIGIgaW50LCBjIHRpbWVzdGFtcCk7CitTRUxFQ1QgSlNPTl9RVUVSWShq c29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBj b21wX2FiYyBvbWl0IHF1b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIo YWJjLDQyLDAxLjAyLjIwMDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1 b3Rlcyk7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYid7InJlYyI6ICIoYWJjLDQyLDAxLjAyLjIw MDMpIn0nLCAnJC5yZWMnIHJldHVybmluZyBjb21wX2FiYyBrZWVwIHF1b3RlcyBlcnJvciBvbiBl cnJvcik7CitEUk9QIFRZUEUgY29tcF9hYmM7CisKKy0tIEV4dGVuc2lvbjogcmVjb3JkIHR5cGVz IHJldHVybmluZworQ1JFQVRFIFRZUEUgc3FsanNvbmJfcmVjIEFTIChhIGludCwgdCB0ZXh0LCBq cyBqc29uLCBqYiBqc29uYiwganNhIGpzb25bXSk7CitDUkVBVEUgVFlQRSBzcWxqc29uYl9yZWNh IEFTIChyZWNhIHNxbGpzb25iX3JlY1tdKTsKKworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7 ImEiOiAxLCAiYiI6ICJmb28iLCAidCI6ICJhYWEiLCAianMiOiBbMSwgIjIiLCB7fV0sICJqYiI6 IHsieCI6IFsxLCAiMiIsIHt9XX19LCAgeyJhIjogMn1dJywgJyRbMF0nIFJFVFVSTklORyBzcWxq c29uYl9yZWMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1t7ImEiOiAiYSIsICJiIjogImZv byIsICJ0IjogImFhYSIsICJqcyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwg e31dfX0sICB7ImEiOiAyfV0nLCAnJFswXScgUkVUVVJOSU5HIHNxbGpzb25iX3JlYyBFUlJPUiBP TiBFUlJPUik7CitTRUxFQ1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6ICJhIiwgImIiOiAiZm9v IiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIiOiB7IngiOiBbMSwgIjIiLCB7 fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjKTsKK1NFTEVD VCAqIEZST00gdW5uZXN0KChKU09OX1FVRVJZKGpzb25iICd7ImpzYSI6ICBbeyJhIjogMSwgImIi OiBbImZvbyJdfSwgeyJhIjogMiwgImMiOiB7fX0sIDEyM119JywgJyQnIFJFVFVSTklORyBzcWxq c29uYl9yZWMpKS5qc2EpOworU0VMRUNUICogRlJPTSB1bm5lc3QoKEpTT05fUVVFUlkoanNvbmIg J3sicmVjYSI6IFt7ImEiOiAxLCAidCI6IFsiZm9vIiwgW11dfSwgeyJhIjogMiwgImpiIjogW3t9 LCB0cnVlXX1dfScsICckJyBSRVRVUk5JTkcgc3FsanNvbmJfcmVjYSkpLnJlY2EpOworCitTRUxF Q1QgSlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJiIjogImZvbyIsICJ0IjogImFhYSIsICJq cyI6IFsxLCAiMiIsIHt9XSwgImpiIjogeyJ4IjogWzEsICIyIiwge31dfX0sICB7ImEiOiAyfV0n LCAnJFswXScgUkVUVVJOSU5HIGpzb25wYXRoKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICdb eyJhIjogMSwgImIiOiAiZm9vIiwgInQiOiAiYWFhIiwgImpzIjogWzEsICIyIiwge31dLCAiamIi OiB7IngiOiBbMSwgIjIiLCB7fV19fSwgIHsiYSI6IDJ9XScsICckWzBdJyBSRVRVUk5JTkcganNv bnBhdGggRVJST1IgT04gRVJST1IpOworCistLSBFeHRlbnNpb246IGFycmF5IHR5cGVzIHJldHVy bmluZworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiMyJdJywgJyRbKl0nIFJF VFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sx LDIsbnVsbCwiYSJdJywgJyRbKl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIgRVJST1Ig T04gRVJST1IpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ1sxLDIsbnVsbCwiYSJdJywgJyRb Kl0nIFJFVFVSTklORyBpbnRbXSBXSVRIIFdSQVBQRVIpOworU0VMRUNUICogRlJPTSB1bm5lc3Qo SlNPTl9RVUVSWShqc29uYiAnW3siYSI6IDEsICJ0IjogWyJmb28iLCBbXV19LCB7ImEiOiAyLCAi amIiOiBbe30sIHRydWVdfV0nLCAnJCcgUkVUVVJOSU5HIHNxbGpzb25iX3JlY1tdKSk7CisKKy0t IEV4dGVuc2lvbjogZG9tYWluIHR5cGVzIHJldHVybmluZworU0VMRUNUIEpTT05fUVVFUlkoanNv bmIgJ3siYSI6IDF9JywgJyQuYScgUkVUVVJOSU5HIHNxbGpzb25iX2ludF9ub3RfbnVsbCk7CitT RUxFQ1QgSlNPTl9RVUVSWShqc29uYiAneyJhIjogMX0nLCAnJC5iJyBSRVRVUk5JTkcgc3FsanNv bmJfaW50X25vdF9udWxsKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxfScsICck LmInIFJFVFVSTklORyBzcWxqc29uYl9pbnRfbm90X251bGwgRVJST1IgT04gRVJST1IpOworCist LSBUZXN0IHRpbWVzdGFtcHR6IHBhc3NpbmcgYW5kIG91dHB1dAorU0VMRUNUIEpTT05fUVVFUlko anNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0 OjU2ICsxMCcgQVMgdHMpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQ QVNTSU5HIHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJO SU5HIGpzb24pOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ251bGwnLCAnJHRzJyBQQVNTSU5H IHRpbWVzdGFtcHR6ICcyMDE4LTAyLTIxIDEyOjM0OjU2ICsxMCcgQVMgdHMgUkVUVVJOSU5HIGpz b25iKTsKKworLS0gVGVzdCBjb25zdHJhaW50cworCitDUkVBVEUgVEFCTEUgdGVzdF9qc29uYl9j b25zdHJhaW50cyAoCisJanMgdGV4dCwKKwlpIGludCwKKwl4IGpzb25iIERFRkFVTFQgSlNPTl9R VUVSWShqc29uYiAnWzEsMl0nLCAnJFsqXScgV0lUSCBXUkFQUEVSKQorCUNPTlNUUkFJTlQgdGVz dF9qc29uYl9jb25zdHJhaW50MQorCQlDSEVDSyAoanMgSVMgSlNPTikKKwlDT05TVFJBSU5UIHRl c3RfanNvbmJfY29uc3RyYWludDIKKwkJQ0hFQ0sgKEpTT05fRVhJU1RTKGpzOjpqc29uYiwgJyQu YScgUEFTU0lORyBpICsgNSBBUyBpbnQsIGk6OnRleHQgQVMgdHh0LCBhcnJheVsxLDIsM10gYXMg YXJyKSkKKwlDT05TVFJBSU5UIHRlc3RfanNvbmJfY29uc3RyYWludDMKKwkJQ0hFQ0sgKEpTT05f VkFMVUUoanM6Ompzb25iLCAnJC5hJyBSRVRVUk5JTkcgaW50IERFRkFVTFQgJzEyJyBPTiBFTVBU WSBFUlJPUiBPTiBFUlJPUikgPiBpKQorCUNPTlNUUkFJTlQgdGVzdF9qc29uYl9jb25zdHJhaW50 NAorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIsICckLmEnIFdJVEggQ09ORElUSU9OQUwg V1JBUFBFUiBFTVBUWSBPQkpFQ1QgT04gRVJST1IpIDwganNvbmIgJ1sxMF0nKQorCUNPTlNUUkFJ TlQgdGVzdF9qc29uYl9jb25zdHJhaW50NQorCQlDSEVDSyAoSlNPTl9RVUVSWShqczo6anNvbmIs ICckLmEnIFJFVFVSTklORyBjaGFyKDUpIE9NSVQgUVVPVEVTIEVNUFRZIEFSUkFZIE9OIEVNUFRZ KSA+ICAnYScgQ09MTEFURSAiQyIpCispOworCitcZCB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzCisK K1NFTEVDVCBjaGVja19jbGF1c2UKK0ZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNoZWNrX2NvbnN0 cmFpbnRzCitXSEVSRSBjb25zdHJhaW50X25hbWUgTElLRSAndGVzdF9qc29uYl9jb25zdHJhaW50 JScKK09SREVSIEJZIDE7CisKK1NFTEVDVCBwZ19nZXRfZXhwcihhZGJpbiwgYWRyZWxpZCkKK0ZS T00gcGdfYXR0cmRlZgorV0hFUkUgYWRyZWxpZCA9ICd0ZXN0X2pzb25iX2NvbnN0cmFpbnRzJzo6 cmVnY2xhc3MKK09SREVSIEJZIDE7CisKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWlu dHMgVkFMVUVTICgnJywgMSk7CitJTlNFUlQgSU5UTyB0ZXN0X2pzb25iX2NvbnN0cmFpbnRzIFZB TFVFUyAoJzEnLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVT ICgnW10nKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgneyJi IjogMX0nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVTICgn eyJhIjogMX0nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFMVUVT ICgneyJhIjogN30nLCAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfanNvbmJfY29uc3RyYWludHMgVkFM VUVTICgneyJhIjogMTB9JywgMSk7CisKK0RST1AgVEFCTEUgdGVzdF9qc29uYl9jb25zdHJhaW50 czsKKworLS0gVGVzdCBtdXRhYmlsaWx5IG9mIHF1ZXJ5IGZ1bmN0aW9ucworQ1JFQVRFIFRBQkxF IHRlc3RfanNvbmJfbXV0YWJpbGl0eShqcyBqc29uYiwgYiBpbnQpOworQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQnKSk7CitDUkVBVEUgSU5E RVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hWzBdJykpOwor Q1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQu dGltZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuZGF0ZSgpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJp bGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZV90eigpJykpOworQ1JFQVRFIElOREVYIE9OIHRl c3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQudGltZXN0YW1wKCknKSk7CitD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC50 aW1lc3RhbXBfdHooKScpKTsKKworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0 eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALmRhdGUoKSA8ICQudGltZV90eigpKScpKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEg PyAoQC5kYXRlKCkgPCAkLnRpbWUoKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9t dXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZSgpIDwgJC50aW1lKCkpJykp OworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuYSA/IChALnRpbWUoKSA8ICQudGltZV90eigpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0 X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lc3RhbXAoKSA8 ICQudGltZXN0YW1wX3R6KCkpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJp bGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRpbWVzdGFtcF90eigpIDwgJC50aW1lc3Rh bXBfdHooKSknKSk7CisKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpT T05fUVVFUlkoanMsICckLmEgPyAoQC50aW1lKCkgPCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSkn KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpz LCAnJC5hID8gKEAuZGF0ZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRF IElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChA LnRpbWVzdGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikpJykpOworQ1JFQVRFIElOREVY IE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyQuYSA/IChALnRpbWVz dGFtcCgpIDwgJC5kYXRldGltZSgiSEg6TUkiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9q c29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wX3R6KCkg PCAkLmRhdGV0aW1lKCJISDpNSSBUWkgiKSknKSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5hID8gKEAudGltZXN0YW1wX3R6KCkgPCAk LmRhdGV0aW1lKCJISDpNSSIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGUoKSA8ICR4JyBQQVNTSU5HICcxMjozNCc6OnRp bWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5kYXRlKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6OmludCBBUyB4KSk7CitD UkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5h ID8gKEAudGltZXN0YW1wKDIpIDwgJC50aW1lc3RhbXAoMykpJykpOworCitDUkVBVEUgSU5ERVgg T04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpJykp OworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywg JyQuYSA/IChAIDwgJC5kYXRldGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRl dGltZSgpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05f UVVFUlkoanMsICckLmEgPyAoQC5kYXRldGltZSgpIDwgJC5kYXRldGltZSgiSEg6TUkgVFpIIikp JykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShq cywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUoIkhIOk1JIFRa SCIpKScpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fUVVF UlkoanMsICckLmEgPyAoQC5kYXRldGltZSgiSEg6TUkiKSA8ICQuZGF0ZXRpbWUoIllZLU1NLURE IEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNP Tl9RVUVSWShqcywgJyQuYSA/IChALmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICQuZGF0ZXRpbWUo IllZLU1NLUREIEhIOk1JIikpJykpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJp bGl0eSAoSlNPTl9RVUVSWShqcywgJyQuZGF0ZXRpbWUoIkhIOk1JIFRaSCIpIDwgJHgnIFBBU1NJ TkcgJzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211 dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCJISDpNSSBUWkgiKSA8ICR5JyBQ QVNTSU5HICcxMjozNCc6OnRpbWV0eiBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29u Yl9tdXRhYmlsaXR5IChKU09OX1FVRVJZKGpzLCAnJC5kYXRldGltZSgpIDwgJHgnIFBBU1NJTkcg JzEyOjM0Jzo6dGltZXR6IEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckLmRhdGV0aW1lKCkgPCAkeCcgUEFTU0lORyAnMTIzNCc6 OmludCBBUyB4KSk7CitDUkVBVEUgSU5ERVggT04gdGVzdF9qc29uYl9tdXRhYmlsaXR5IChKU09O X1FVRVJZKGpzLCAnJC5kYXRldGltZSgpID8gKEAgPT0gJHgpJyBQQVNTSU5HICcxMjozNCc6OnRp bWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9OIHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9R VUVSWShqcywgJyQuZGF0ZXRpbWUoIllZLU1NLUREIikgPyAoQCA9PSAkeCknIFBBU1NJTkcgJzIw MjAtMDctMTQnOjpkYXRlIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFi aWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsICQuYSA/IChALmRhdGV0aW1lKCkgPT0gJHgpXScg UEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NSRUFURSBJTkRFWCBPTiB0ZXN0X2pzb25i X211dGFiaWxpdHkgKEpTT05fUVVFUlkoanMsICckWzEsIDAgdG8gJC5hID8gKEAuZGF0ZXRpbWUo KSA9PSAkeCldJyBQQVNTSU5HICcxMjozNCc6OnRpbWUgQVMgeCkpOworQ1JFQVRFIElOREVYIE9O IHRlc3RfanNvbmJfbXV0YWJpbGl0eSAoSlNPTl9RVUVSWShqcywgJyRbMSwgJC5hID8gKEAuZGF0 ZXRpbWUoIkhIOk1JIikgPT0gJHgpXScgUEFTU0lORyAnMTI6MzQnOjp0aW1lIEFTIHgpKTsKK0NS RUFURSBJTkRFWCBPTiB0ZXN0X2pzb25iX211dGFiaWxpdHkgKEpTT05fVkFMVUUoanMsICckJyBE RUZBVUxUIHJhbmRvbSgpOjppbnQgT04gRVJST1IpKTsKKworLS0gREVGQVVMVCBleHByZXNzaW9u CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiByZXRfc2V0aW50KCkgUkVUVVJOUyBTRVRPRiBp bnRlZ2VyIEFTCiskJAorQkVHSU4KKyAgICBSRVRVUk4gUVVFUlkgRVhFQ1VURSAnc2VsZWN0IDEg dW5pb24gYWxsIHNlbGVjdCAxJzsKK0VORDsKKyQkCitMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJM RTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQgREVGQVVMVCByZXRf c2V0aW50KCkgT04gRVJST1IpIEZST00gdGVzdF9qc29uYl9tdXRhYmlsaXR5OworU0VMRUNUIEpT T05fUVVFUlkoanMsICckJyAgUkVUVVJOSU5HIGludCBERUZBVUxUIGIgKyAxIE9OIEVSUk9SKSBG Uk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJF VFVSTklORyBpbnQgREVGQVVMVCBzdW0oMSkgb3ZlcigpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNv bmJfbXV0YWJpbGl0eTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzLCAnJCcgIFJFVFVSTklORyBpbnQg REVGQVVMVCAoU0VMRUNUIDEpIE9OIEVSUk9SKSBGUk9NIHRlc3RfanNvbmJfbXV0YWJpbGl0eTsK K0RST1AgVEFCTEUgdGVzdF9qc29uYl9tdXRhYmlsaXR5OworRFJPUCBGVU5DVElPTiByZXRfc2V0 aW50OworCistLSBFeHRlbnNpb246IG5vbi1jb25zdGFudCBKU09OIHBhdGgKK1NFTEVDVCBKU09O X0VYSVNUUyhqc29uYiAneyJhIjogMTIzfScsICckJyB8fCAnLicgfHwgJ2EnKTsKK1NFTEVDVCBK U09OX1ZBTFVFKGpzb25iICd7ImEiOiAxMjN9JywgJyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNU IEpTT05fVkFMVUUoanNvbmIgJ3siYSI6IDEyM30nLCAnJCcgfHwgJy4nIHx8ICdiJyBERUZBVUxU ICdmb28nIE9OIEVNUFRZKTsKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9Jywg JyQnIHx8ICcuJyB8fCAnYScpOworU0VMRUNUIEpTT05fUVVFUlkoanNvbmIgJ3siYSI6IDEyM30n LCAnJCcgfHwgJy4nIHx8ICdhJyBXSVRIIFdSQVBQRVIpOworLS0gU2hvdWxkIGZhaWwgKGludmFs aWQgcGF0aCkKK1NFTEVDVCBKU09OX1FVRVJZKGpzb25iICd7ImEiOiAxMjN9JywgJ2Vycm9yJyB8 fCAnICcgfHwgJ2Vycm9yJyk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDk1YWU3ODQ1 ZDguLjM1NWM4MTQ0YTIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjU5LDYgKzEy NTksNyBAQCBKb2luCiBKb2luQ29zdFdvcmtzcGFjZQogSm9pbkRvbWFpbgogSm9pbkV4cHIKK0pz b25GdW5jRXhwcgogSm9pbkhhc2hFbnRyeQogSm9pblBhdGgKIEpvaW5QYXRoRXh0cmFEYXRhCkBA IC0xMjY5LDE4ICsxMjcwLDI4IEBAIEpzT2JqZWN0CiBKc1ZhbHVlCiBKc29uQWdnQ29uc3RydWN0 b3IKIEpzb25BZ2dTdGF0ZQorSnNvbkFyZ3VtZW50CiBKc29uQXJyYXlBZ2cKIEpzb25BcnJheUNv bnN0cnVjdG9yCiBKc29uQXJyYXlRdWVyeUNvbnN0cnVjdG9yCiBKc29uQmFzZU9iamVjdEluZm8K K0pzb25CZWhhdmlvcgorSnNvbkJlaGF2aW9yVHlwZQorSnNvbkNvZXJjaW9uCiBKc29uQ29uc3Ry dWN0b3JFeHByCiBKc29uQ29uc3RydWN0b3JFeHByU3RhdGUKIEpzb25Db25zdHJ1Y3RvclR5cGUK IEpzb25FbmNvZGluZworSnNvbkV4cHIKK0pzb25FeHByT3AKK0pzb25FeHByUG9zdEV2YWxTdGF0 ZQorSnNvbkV4cHJTdGF0ZQogSnNvbkZvcm1hdAogSnNvbkZvcm1hdFR5cGUKIEpzb25IYXNoRW50 cnkKIEpzb25Jc1ByZWRpY2F0ZQorSnNvbkl0ZW1Db2VyY2lvbgorSnNvbkl0ZW1UeXBlCiBKc29u SXRlcmF0ZVN0cmluZ1ZhbHVlc0FjdGlvbgogSnNvbktleVZhbHVlCiBKc29uTGV4Q29udGV4dApA QCAtMTI5OCw2ICsxMzA5LDcgQEAgSnNvblBhcnNlQ29udGV4dAogSnNvblBhcnNlRXJyb3JUeXBl CiBKc29uUGF0aAogSnNvblBhdGhCb29sCitKc29uUGF0aERhdGF0eXBlU3RhdHVzCiBKc29uUGF0 aEV4ZWNDb250ZXh0CiBKc29uUGF0aEV4ZWNSZXN1bHQKIEpzb25QYXRoR2luQWRkUGF0aEl0ZW1G dW5jCkBAIC0xMzEwLDEwICsxMzIyLDE1IEBAIEpzb25QYXRoR2luUGF0aEl0ZW0KIEpzb25QYXRo SXRlbQogSnNvblBhdGhJdGVtVHlwZQogSnNvblBhdGhLZXl3b3JkCitKc29uUGF0aE11dGFibGVD b250ZXh0CiBKc29uUGF0aFBhcnNlSXRlbQogSnNvblBhdGhQYXJzZVJlc3VsdAogSnNvblBhdGhQ cmVkaWNhdGVDYWxsYmFjawogSnNvblBhdGhTdHJpbmcKK0pzb25QYXRoVmFyaWFibGUKK0pzb25Q YXRoVmFyaWFibGVFdmFsQ29udGV4dAorSnNvblBhdGhWYXJDYWxsYmFjaworSnNvblF1b3Rlcwog SnNvblJldHVybmluZwogSnNvblNjYWxhckV4cHIKIEpzb25TZW1BY3Rpb24KQEAgLTEzMzAsNiAr MTM0Nyw3IEBAIEpzb25WYWx1ZUV4cHIKIEpzb25WYWx1ZUxpc3QKIEpzb25WYWx1ZUxpc3RJdGVy YXRvcgogSnNvblZhbHVlVHlwZQorSnNvbldyYXBwZXIKIEpzb25iCiBKc29uYkFnZ1N0YXRlCiBK c29uYkNvbnRhaW5lcgotLSAKMi40My4wCgo= --0000000000000d18b50612d284ac--