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.96) (envelope-from ) id 1we4Pl-004XPD-0Z for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Jun 2026 05:20:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1we4Pj-001GeI-1K for pgsql-hackers@arkaria.postgresql.org; Mon, 29 Jun 2026 05:20:11 +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.96) (envelope-from ) id 1we4Pi-001Gdv-18 for pgsql-hackers@lists.postgresql.org; Mon, 29 Jun 2026 05:20:11 +0000 Received: from mail-yw1-x1131.google.com ([2607:f8b0:4864:20::1131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1we4Pf-00000000i4h-1xi3 for pgsql-hackers@postgresql.org; Mon, 29 Jun 2026 05:20:09 +0000 Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-80cd342a796so14676387b3.0 for ; Sun, 28 Jun 2026 22:20:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782710406; cv=none; d=google.com; s=arc-20260327; b=j1QJ7o6CtfxH9fmkf/ua5OZ4Uuc3LBOiJgzZYIuNuqkc1SKvTORW9LRM7RuvQG6xqh 7F/kml3ODyazEqfgzbPnTS8k5p3RzaXCaTWJeNiq7Stre2urnKZsX/TqqW3k/ID4hGmn ETqxMp6Y6hSgVyLJE9MXg4iGLTXk6zPT4ukvGc+/WgyB71zQZy62ClGZ/1+7emZlw3Zy /Y5pyuOp2lLsZW6s+r5nDOyHEi5+a5b01Nl/i2pqQmh9DFgEP935RvnTfHYypQxidhCO swtEuUigxK517PZ2vu0R9Bzr5tWQOEEEpl+taDpGiPQCOEcnXw8PfTcSzPHUwo3rkB7V 8AJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=jZkEWHZIDvIidYQEpODjy7jAilce+xUSOBR9+diVjME=; fh=QLWKuTb8uF3d0NG9KiyaOVvzxahD6n7LNaexF2nQL60=; b=aFVC28U1LkNf9m9ncxRwFp9oCxfokkmcH9/pXEUtxU7zaE4JAttthaLe5iWM1VGxXL DtB3CVMTWQD/NCOntK8CAVdgx1gmQNui8r9c3Kx8+j+29FSZTBfHdMf6UoEEsSNHORCL a6wKgVnYh3t/Vnraz6NHoMlzTujn1A6FWk/HzzXoeXbXUzd1W1u1nifDwe1q59IHUCnu YDeLWzIkiJmH389TJpbLO9SVOuYcPG1biwlHmjI1daTO4ejWhVCOg+zoimEIXSlCIwv/ ZrMoN7Vg4aA1eQPTXJMOiKT7msnsrnQjGk+xhfGzon0kQHx/8hmFumwXM8Edv2pmDoX3 Fqww==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782710406; x=1783315206; 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=jZkEWHZIDvIidYQEpODjy7jAilce+xUSOBR9+diVjME=; b=rkAYa++gTWkPgPt4DYdD4GcFaOZzwuTvSt3wE4u2UFh1eAub1z/JBNhTj4xoXPI1kR V4gN9L0dHzxUfs6ihWxpucDaetYhAzHPfupdPlTnQfLcz8TYxujC16ElosOlyp1YaG7/ AyHGtFKvBBzLMn/mcRkL0mJZ8SULeLbQlf+k+Jpr9fY7X/oJb1jtLjJnxpbfsY9PBieB 3xtdXLnO2HglJRGEhc7blnc4XXtHvlXgVrTR4/6tA5Z4k6VYabr47JRpIzEyMibgQOeU 7XcPZInVJ+J5J2ISbx0uO50zrgk20GOVKvAItfPlTYDt0ITznXn/igsKW2/iuVfHfriv 2MBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782710406; x=1783315206; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=jZkEWHZIDvIidYQEpODjy7jAilce+xUSOBR9+diVjME=; b=ULGrxVV21Y1E+M0z2z96x2DzWHQQH0JOna71yS5s2Cw8534duVdzjWFbT4w+JPspOH rLDnpuJvbEKO2cyVs1Fy3R17HVszq/Ex/GXZZJhixwdEuLHGItHsJt6Ih5wAz3EAFyCd kAqhhqq8dV+tRtZ5GZBakYVqdB6v+vQlzzuIjMmiQihCvpyqVtH4iPpwcNt9YQhC4PxI PftHOsD8okLWKPDxTW/Yqc8+BWWLMLGpnn3gH2KMnR7Gk0flIL+QCITWZjXmhrYjuabI 4goB2WIJrnRKCj+HMa+J5MtSZJ+uBrUHCIMR66fqlIKT1PE7GR9smXWNK5pPPnSx11T4 WuNw== X-Forwarded-Encrypted: i=1; AHgh+RrcEYg07ynvsWEvgNAkgHHmgF6EgMtVgC5+l6UVOnugeiMtL8cpdyijNi5M95+gEByLVMUPzE7JovsQgsK1@postgresql.org X-Gm-Message-State: AOJu0Yz9pM3Ihg8fgGrU8eMWD+oV8NAReyxXSb9lEMpLtM7Ad9OSYsyg DL15ydSuGrSYQOFQTuNZH6UUZhYqZL0c1rpNgHvD6QuLcYVE5BjXEJp266V/Qgoj2BZfaOqg+Yd w/2zaLy4of/yfojcY6A8ixyH/UK6O0KY= X-Gm-Gg: AfdE7ckOPVVs89ErX1FkSgr8j8tx8SJgdmTKc9O+c0gKrs21bEOCuFOr/N1fFywSijj 1kf0jSjuxpFGDbmiXonlcnPX/obbv22U5EpRvrCLtMqzVgoUKLvf5G9ytqmHqOGPAE0Pc9zSjje TWW+Sf7ag4gssN/UCYHk1QkQWQL7xDix8fKo679V2JQKQ6aeSqqQF/Taw2hvK04X4/k58IAV3AW l0eysKB03IrKoILJ9Dx2S7bNAxE2zNnTg8xsVEEQ02r6zNalzNnC4zvvHO6CRuDgr3md8ouFa5d MhF+4UINUvdCDgSj8ihw6FwCNsuXb5Yij6h3C8QN X-Received: by 2002:a05:690c:6310:b0:80b:9114:3b95 with SMTP id 00721157ae682-80b911443e1mr117951377b3.14.1782710406116; Sun, 28 Jun 2026 22:20:06 -0700 (PDT) MIME-Version: 1.0 References: <4c358bf8-87e8-4760-83d5-a6f9fcd88907@postgresfriends.org> <1b702de4-86b0-4144-a2d0-38266296894f@postgresfriends.org> <82b4223e-84d4-432d-8167-dd698ce489f5@postgresfriends.org> In-Reply-To: From: Haibo Yan Date: Sun, 28 Jun 2026 22:19:53 -0700 X-Gm-Features: AVVi8CevU9EOv_IV26-QBcruBcadFZ71l-_TWwGtNh3TFrE2UyQyudTEwSekbKw Message-ID: Subject: Re: implement CAST(expr AS type FORMAT 'template') To: Robert Haas Cc: Corey Huinker , jian he , Zsolt Parragi , Vik Fearing , "David G. Johnston" , PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000007f28fa06555d9ca3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007f28fa06555d9ca3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jun 18, 2026 at 7:52=E2=80=AFAM Robert Haas = wrote: > > On Tue, Mar 31, 2026 at 1:48=E2=80=AFPM Corey Huinker wrote: > > Everything's passing, moving the tests out of citext, etc into cast.sql= is good. > > > > I think the next step it to bring each TODO and FIXME into the thread, = and explain the factors that prevent you from being certain about what to d= o in those situations. > > IMHO, this patch as currently written is basically dead on arrival. > The v7 patch still works by constructing calls to > pg_catalog.{to_date,to_number,to_timestamp,to_char} based on the input > data type. But I think it's been clearly stated on this thread that we > need some kind of more generic infrastructure. Vik said it best: "we > need to find a way to make this generic so that custom types can > define formatting rules for themselves." I completely agree. The > extensible type system in PostgreSQL is one of the project's greatest > triumphs, and I do not think anyone is going to be enthusiastic about > committing a patch that purports to implement a flavor of casting but > is completely unextensible by out-of-core types and doesn't even cover > all the in-core types for which it might be interesting. Even if > someone is, -1 from me. > > I suggest backing up to David G. Johnston's comment here: "How about > changing the specification for create type. Right now input functions > must declare either 1 or 3 arguments. Let=E2=80=99s also allow for 2 and > 4-argument functions where the 2nd or 4th is where the format is > passed. If a data type input function lacks one of those signatures > it is a runtime error if a format clause is attached to its cast > expression. For output, we go from having zero input arguments to > zero or one, with the same resolution behavior." I'm not sure that > David's proposal here is really the best thing, but it's the kind of > thing that *could* be right, i.e. a generic infrastructure that can > work for any choice of data type. > > The reason I somewhat hesitate to endorse that specific proposal is > that I'm not convinced that we should actually treat this as a form of > casting. Casts can be set to IMPLICIT or ASSIGNMENT or EXPLICIT, and > they can be WITHOUT FUNCTION or WITH INOUT, and none of that can be > relevant here. A CAST with FORMAT always needs to be implemented by a > function, is always explicit from a syntax point of view, and the code > to implement probably looks pretty different from the code needed for > a non-FORMAT cast. I am somewhat inclined to think we want something > that's like a cast function but actually a wholly separate mechanism, > e.g. a new pg_formatter catalog. I note that Jian He proposed putting > something in pg_type but I don't see how that can work, since there > are two types involved. > > I don't accept the argument that we should start with this and extend > it later. The patch as proposed is just syntactic sugar. Said another > way, there is existing syntax that already delivers the functionality. > So I don't see why we would rush out support for a bit of new syntax; > anyone who wants to use this functionality can already do so. Getting > the infrastructure right is, IMHO, the interesting part of the > project, and I think that work needs to be done first. > > -- > Robert Haas > EDB: http://www.enterprisedb.com > > Robert pointed out earlier that hard-coding specific functions like to_date and to_char in the parser would make the feature feel like a set of special cases rather than a general mechanism. I agree, and this version moves to a catalog-driven design. I added a new pg_formatter catalog. A row in this catalog represents one formatted conversion from a source type to a target type, and points to a formatter function with this signature: formatter(source_type, text) returns target_type The second argument is the FORMAT expression coerced to text. I kept this separate from pg_cast because formatted casts have different semantics from ordinary casts. Ordinary casts have concepts like implicit casts, assignment casts, binary-compatible casts, and I/O casts. A formatted cast is different: it is always explicit, it has an extra format expression, and it needs a function that receives both the source value and the format string. Putting this into pg_cast seemed likely to add special cases there, while a separate catalog keeps the model simpler. Another important point in this version is that built-in and user-defined formatters use the same mechanism. The parser and analyzer do not know about to_date, to_char, or to_timestamp. Built-in datetime/string formatters are registered as catalog rows, and user-defined formatters are registered the same way. If no formatter exists for the exact source and target type pair, the formatted cast fails. It does not fall back to ordinary cast resolution. I split the work into four patches. Patch 1 only adds parser support for the syntax: CAST(expr AS type FORMAT format_expr) It extends the raw TypeCast node with an optional format field and updates the grammar and raw expression walker. Parse analysis still rejects formatted casts in this patch, so this is only the syntax and raw parse-tree representation. Patch 2 adds the catalog and DDL infrastructure. It introduces pg_formatter, syscache support, CREATE FORMATTER, DROP FORMATTER, dependency handling, object-address support, and pg_dump support. At this point CAST ... FORMAT still does not execute; the patch only adds the catalog object model. Patch 3 is where formatted casts are resolved. During parse analysis, the source expression is transformed, the FORMAT expression is transformed and coerced to text, and pg_formatter is searched by exact source and target type. I also treat unknown source literals as text, so cases like this resolve naturally: CAST('2026-06-28' AS date FORMAT 'YYYY-MM-DD') I added a CoerceViaFormatter node rather than using a plain FuncExpr. This preserves CAST(... FORMAT ...) syntax in ruleutils and pg_dump, and allows the dependency walker to record a dependency on the pg_formatter row itself. Execution still uses the normal function-call machinery, so no new executor opcode is needed. Patch 4 adds an initial set of built-in formatter functions and bootstrap pg_formatter rows for common datetime/string cases: text/varchar/bpchar <-> date text/varchar/bpchar <-> timestamp text/varchar/bpchar <-> timestamptz These built-ins are reached through the same catalog lookup path as user-defined formatters. They are not special-cased in parse analysis. Th= e wrappers reuse PostgreSQL=E2=80=99s existing formatting code and are marked= STRICT, so NULL input or NULL FORMAT returns NULL. This gives us SQL-standard-style CAST ... FORMAT support for the common datetime/string cases, but the series intentionally does not claim complete SQL-standard datetime-template conformance. The built-ins reuse PostgreSQL=E2=80=99s existing formatting template behavior. Additional typ= es such as time, timetz, numeric, and interval, or stricter standard-template coverage, can be added later as formatter functions without changing the parser or the CoerceViaFormatter representation. The main goal of this redesign is to make CAST ... FORMAT a real catalog-driven facility rather than a parser rewrite to a few built-in functions. I think this addresses Robert=E2=80=99s concern better and give= s us a path for both built-in and extension-defined formatters. I have attached the full patch series for review. Comments are welcome. Regards, Haibo --0000000000007f28fa06555d9ca3 Content-Type: application/octet-stream; name="0004-Add-built-in-formatters-for-CAST-FORMAT.patch" Content-Disposition: attachment; filename="0004-Add-built-in-formatters-for-CAST-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqyrq4yc3 RnJvbSBkOThmZmZkOThhNWNiOTA0NjExNzU1NWQxYjg4MTQ3NjIxMzExZDhiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPHRyaXN0YW4ueWltQGdtYWlsLmNvbT4KRGF0 ZTogU3VuLCAyOCBKdW4gMjAyNiAxMzoyODoxOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBi dWlsdC1pbiBmb3JtYXR0ZXJzIGZvciBDQVNUIC4uLiBGT1JNQVQKCkFkZCBidWlsdC1pbiBmb3Jt YXR0ZXIgZnVuY3Rpb25zIGFuZCBwZ19mb3JtYXR0ZXIgYm9vdHN0cmFwIHJvd3MgZm9yIHRoZQpp bml0aWFsIGRhdGV0aW1lL3N0cmluZyBmb3JtYXR0ZWQgY2FzdHM6CgogICAgdGV4dC92YXJjaGFy L2JwY2hhciA8LT4gZGF0ZQogICAgdGV4dC92YXJjaGFyL2JwY2hhciA8LT4gdGltZXN0YW1wCiAg ICB0ZXh0L3ZhcmNoYXIvYnBjaGFyIDwtPiB0aW1lc3RhbXB0egoKVGhlIHdyYXBwZXJzIHJldXNl IFBvc3RncmVTUUwncyBleGlzdGluZyBmb3JtYXR0aW5nIGNvZGUgYW5kIGFyZSByZWFjaGVkCnRo cm91Z2ggcGdfZm9ybWF0dGVyLCBub3QgYnkgcGFyc2VyIG9yIGFuYWx5emVyIHNwZWNpYWwgY2Fz ZXMuICBUaGV5IGFyZQpTVFJJQ1QsIHNvIE5VTEwgaW5wdXQgb3IgTlVMTCBGT1JNQVQgcmV0dXJu cyBOVUxMLgoKVGhpcyBwcm92aWRlcyBTUUwtc3RhbmRhcmQtc3R5bGUgQ0FTVCAuLi4gRk9STUFU IHN1cHBvcnQgZm9yIHRoZSBjb21tb24KZGF0ZXRpbWUvc3RyaW5nIGNhc2VzLCB3aGlsZSBrZWVw aW5nIFBvc3RncmVTUUwgZXh0ZW5zaW9ucyBmcm9tIHRoZQpnZW5lcmljIGluZnJhc3RydWN0dXJl OiBGT1JNQVQgbWF5IGJlIGFueSBleHByZXNzaW9uIGNvZXJjaWJsZSB0byB0ZXh0LAphbmQgZm9y bWF0dGVyIGxvb2t1cCByZW1haW5zIGNhdGFsb2ctZHJpdmVuLiAgVGhlIHBhdGNoIGRvZXMgbm90 IGNsYWltCmNvbXBsZXRlIFNRTC1zdGFuZGFyZCBkYXRldGltZS10ZW1wbGF0ZSBjb25mb3JtYW5j ZTsgdGltZSwgdGltZXR6LApudW1lcmljLCBpbnRlcnZhbCwgYW5kIGZ1bGxlciB0ZW1wbGF0ZSBj b3ZlcmFnZSBhcmUgbGVmdCBmb3IgZnV0dXJlIHdvcmsuCgpCdWlsdC1pbiBmb3JtYXR0ZXIgcm93 cyBhcmUgdHJlYXRlZCBhcyBzeXN0ZW0gb2JqZWN0cyBhbmQgYXJlIG5vdCBkdW1wZWQKYnkgcGdf ZHVtcC4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZm9ybWF0dGluZy5jICAgICAgICB8IDMy NSArKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAg ICAgICAgICAgICB8ICAyNSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JtYXR0ZXIuZGF0 ICAgICAgfCAgNzEgKysrKysKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgIHwgIDc3ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cHJlc3Npb25zLm91 dCB8ICAyNSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JtYXR0ZXJzLm91dCAgfCAy ODIgKysrKysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwcmVzc2lvbnMu c3FsICAgICAgfCAgMTcgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcm1hdHRlcnMuc3FsICAg ICAgIHwgMTMxICsrKysrKysrLQogOCBmaWxlcyBjaGFuZ2VkLCA5MzAgaW5zZXJ0aW9ucygrKSwg MjMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19mb3JtYXR0ZXIuZGF0CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Zvcm1h dHRpbmcuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKaW5kZXggZDUyZDcx YjBhOGMuLmIxYzA1MjRhN2FjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZm9y bWF0dGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9mb3JtYXR0aW5nLmMKQEAgLTQx MzgsNiArNDEzOCwzMzEgQEAgdG9fZGF0ZShQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVSTl9E QVRFQURUKHJlc3VsdCk7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIEJ1aWx0LWluIGZvcm1hdHRl cnMgZm9yIENBU1QgKCA8b3BlcmFuZD4gQVMgPHR5cGU+IEZPUk1BVCA8dGVtcGxhdGU+ICkKKyAq CisgKiBUaGVzZSB0aGluIHdyYXBwZXJzIHByb3ZpZGUgdGhlIGluaXRpYWwgZGF0ZXRpbWUvc3Ry aW5nIENBU1QgLi4uIEZPUk1BVAorICogYnVpbHQtaW5zLiAgVGhleSBhcmUgcmVnaXN0ZXJlZCBp biBwZ19mb3JtYXR0ZXIgKHNlZSBwZ19mb3JtYXR0ZXIuZGF0KSBhbmQKKyAqIHJlYWNoZWQgb25s eSB0aHJvdWdoIGEgQ29lcmNlVmlhRm9ybWF0dGVyIG5vZGU7IHRoZXkgYXJlIG5vdCBhIHByaW1h cnkKKyAqIHVzZXItZmFjaW5nIEFQSSAodG9fY2hhcigpL3RvX2RhdGUoKS90b190aW1lc3RhbXAo KSBzZXJ2ZSB0aGF0IHB1cnBvc2UpLgorICogVGhleSByZXVzZSBQb3N0Z3JlU1FMJ3MgZXhpc3Rp bmcgZm9ybWF0dGluZyBjb2RlIHJhdGhlciB0aGFuIGludHJvZHVjaW5nIGEKKyAqIHNlY29uZCB0 ZW1wbGF0ZSBlbmdpbmU6IHRvX2RhdGUoKS90b190aW1lc3RhbXAoKS9wYXJzZV9kYXRldGltZSgp IGZvciB0aGUKKyAqIHN0cmluZyAtPiBkYXRldGltZSBkaXJlY3Rpb24gYW5kIHRpbWVzdGFtcF90 b19jaGFyKCkvdGltZXN0YW1wdHpfdG9fY2hhcigpCisgKiBmb3IgdGhlIGRhdGV0aW1lIC0+IHN0 cmluZyBkaXJlY3Rpb24uICBUaGUgYWNjZXB0ZWQgdGVtcGxhdGUgdG9rZW5zIGFyZSB0aHVzCisg KiBleGFjdGx5IHRob3NlIG9mIHRvX2NoYXIoKS90b19kYXRlKCkuCisgKgorICogQSBzZXBhcmF0 ZSB3cmFwcGVyIHBlciBzb3VyY2UvdGFyZ2V0IHR5cGUgaXMgbmVlZGVkIGJlY2F1c2UgcGdfZm9y bWF0dGVyCisgKiBsb29rdXAgbWF0Y2hlcyB0aGUgZXhhY3Qgc291cmNlIGFuZCB0YXJnZXQgdHlw ZXM6IHRleHQsIHZhcmNoYXIgYW5kIGJwY2hhcgorICogYXJlIGRpc3RpbmN0IG9uIGVhY2ggc2lk ZS4gIE9uIHRoZSBzb3VyY2Ugc2lkZSB0ZXh0IGFuZCB2YXJjaGFyIHNoYXJlIGEgQworICogc3lt Ym9sIChpZGVudGljYWwgdmFybGVuYSByZXByZXNlbnRhdGlvbiBhbmQgcmV0dXJuIHR5cGUpLCB3 aGlsZSBicGNoYXIgZ2V0cworICogaXRzIG93biBzeW1ib2wgYmVjYXVzZSB0aGUgYmxhbmsgcGFk ZGluZyBtdXN0IGJlIHRyaW1tZWQgZmlyc3QuICBPbiB0aGUKKyAqIHRhcmdldCBzaWRlIGVhY2gg b2YgdGV4dCwgdmFyY2hhciBhbmQgYnBjaGFyIGdldHMgaXRzIG93biBleHBvcnRlZCBzeW1ib2wK KyAqIChzbyBubyB0d28gYnVpbHQtaW4gZnVuY3Rpb25zIHNoYXJlIGEgcHJvc3JjIHdpdGggYSBk aWZmZXJlbnQgcmV0dXJuIHR5cGUpLAorICogYWxsIGRlbGVnYXRpbmcgdG8gYSBjb21tb24gc3Rh dGljIGhlbHBlci4gIFRoZSByZXR1cm5lZCB0ZXh0IHZhcmxlbmEgaXMgYQorICogdmFsaWQgdmFy Y2hhci9icGNoYXIgdmFsdWU7IGFueSBkZWNsYXJlZCBsZW5ndGgvdHlwbW9kIGlzIGVuZm9yY2Vk IGFmdGVyd2FyZAorICogYnkgdGhlIG9yZGluYXJ5IGNvZXJjaW9uIGxheWVyZWQgYWJvdmUgdGhl IENvZXJjZVZpYUZvcm1hdHRlciBub2RlLgorICoKKyAqIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMg YXJlIFNUUklDVCAocHJvaXNzdHJpY3QgaW4gcGdfcHJvYy5kYXQpLCBzbyBhIE5VTEwKKyAqIHNv dXJjZSB2YWx1ZSBvciBOVUxMIEZPUk1BVCBleHByZXNzaW9uIHlpZWxkcyBOVUxMIHdpdGhvdXQg dGhlIEMgY29kZSBldmVyCisgKiBiZWluZyBjYWxsZWQsIG1hdGNoaW5nIG9yZGluYXJ5IHN0cmlj dCBjYXN0LWZ1bmN0aW9uIGJlaGF2aW9yLgorICogLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBT dHJpcCBibGFuayBwYWRkaW5nIGZyb20gYSBicGNoYXIgYXJndW1lbnQsIHJldHVybmluZyBhIHBs YWluIHRleHQgdmFsdWUuCisgKiBTdGFuZGFyZC1zdHlsZSBjaGFyYWN0ZXIgY2FzdHMgbXVzdCBu b3QgZmFpbCBtZXJlbHkgYmVjYXVzZSBhIGZpeGVkLWxlbmd0aAorICogQ0hBUihuKSBzb3VyY2Ug Y2FycmllcyB0cmFpbGluZyBzcGFjZXMsIHNvIGJwY2hhciBzb3VyY2VzIGFyZSByaWdodC10cmlt bWVkCisgKiBiZWZvcmUgdGhlIGZvcm1hdCB0ZW1wbGF0ZSBpcyBhcHBsaWVkLgorICoKKyAqIGJw Y2hhciBwYWRkaW5nIHVzZXMgb3JkaW5hcnkgQVNDSUkgc3BhY2UgYnl0ZXMsIHNvIHdlIHRyaW0g b25seSB0cmFpbGluZworICogJyAnIGJ5dGVzIGhlcmUuICBUaGlzIGlzIGRlbGliZXJhdGVseSBu b3QgYSBnZW5lcmFsIFVuaWNvZGUgd2hpdGVzcGFjZSB0cmltLgorICovCitzdGF0aWMgdGV4dCAq Citmb3JtYXRjYXN0X3J0cmltX2JsYW5rcyh0ZXh0ICpzcmMpCit7CisJY2hhcgkgICAqZGF0YSA9 IFZBUkRBVEFfQU5ZKHNyYyk7CisJaW50CQkJbGVuID0gVkFSU0laRV9BTllfRVhIRFIoc3JjKTsK KwlpbnQJCQlvcmlnX2xlbiA9IGxlbjsKKworCXdoaWxlIChsZW4gPiAwICYmIGRhdGFbbGVuIC0g MV0gPT0gJyAnKQorCQlsZW4tLTsKKworCS8qIEF2b2lkIGEgY29weSB3aGVuIHRoZXJlIHdhcyBu byB0cmFpbGluZyBwYWRkaW5nIHRvIHRyaW0uICovCisJaWYgKGxlbiA9PSBvcmlnX2xlbikKKwkJ cmV0dXJuIHNyYzsKKworCXJldHVybiBjc3RyaW5nX3RvX3RleHRfd2l0aF9sZW4oZGF0YSwgbGVu KTsKK30KKworLyoKKyAqIHN0cmluZyAtPiBkYXRlOiByZXVzZSB0b19kYXRlKCkgdmVyYmF0aW0s IHNvIGJlaGF2aW9yIG1hdGNoZXMgdGhlCisgKiBTUUwtY2FsbGFibGUgdG9fZGF0ZSh0ZXh0LCB0 ZXh0KS4KKyAqLworc3RhdGljIERhdHVtCitmb3JtYXRjYXN0X2luX2RhdGUodGV4dCAqc3JjLCB0 ZXh0ICpmbXQsIE9pZCBjb2xsaWQpCit7CisJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xs KHRvX2RhdGUsIGNvbGxpZCwKKwkJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKHNyYyksIFBvaW50 ZXJHZXREYXR1bShmbXQpKTsKK30KKworLyoKKyAqIHN0cmluZyAtPiB0aW1lc3RhbXAgd2l0aG91 dCB0aW1lIHpvbmUuICBUaGVyZSBpcyBubyBTUUwtY2FsbGFibGUgZnVuY3Rpb24KKyAqIGZvciB0 aGlzICh0b190aW1lc3RhbXAoKSByZXR1cm5zIHRpbWVzdGFtcHR6KSwgc28gd2UgcGFyc2Ugd2l0 aAorICogcGFyc2VfZGF0ZXRpbWUoKSBhbmQgYnVpbGQgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2Nh bCBkYXRldGltZSBmaWVsZHMgd2l0aG91dAorICogY29uc3VsdGluZyB0aGUgc2Vzc2lvbiB0aW1l IHpvbmUuICBBIGRhdGUtb25seSB0ZW1wbGF0ZSBpcyB3aWRlbmVkIHRvCisgKiB0aW1lc3RhbXA7 IGEgem9uZWQgdGVtcGxhdGUgaXMgcmVqZWN0ZWQsIHNpbmNlIHRoZSByZXN1bHQgdHlwZSBjYXJy aWVzIG5vCisgKiB6b25lIGFuZCB3ZSBtdXN0IG5vdCBzaWxlbnRseSBmb2xkIGEgdGltZSB6b25l IHRocm91Z2ggdGhlIHNlc3Npb24gc2V0dGluZy4KKyAqLworc3RhdGljIERhdHVtCitmb3JtYXRj YXN0X2luX3RpbWVzdGFtcCh0ZXh0ICpzcmMsIHRleHQgKmZtdCwgT2lkIGNvbGxpZCkKK3sKKwlP aWQJCQl0eXBpZDsKKwlpbnQzMgkJdHlwbW9kOworCWludAkJCXR6OworCURhdHVtCQlkOworCisJ ZCA9IHBhcnNlX2RhdGV0aW1lKHNyYywgZm10LCBjb2xsaWQsIGZhbHNlLCAmdHlwaWQsICZ0eXBt b2QsICZ0eiwgTlVMTCk7CisKKwlzd2l0Y2ggKHR5cGlkKQorCXsKKwkJY2FzZSBUSU1FU1RBTVBP SUQ6CisJCQlyZXR1cm4gZDsKKwkJY2FzZSBEQVRFT0lEOgorCQkJcmV0dXJuIFRpbWVzdGFtcEdl dERhdHVtKGRhdGUydGltZXN0YW1wX3NhZmUoRGF0dW1HZXREYXRlQURUKGQpLAorCQkJCQkJCQkJ CQkJCQkgTlVMTCkpOworCQlkZWZhdWx0OgorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX0RBVEVUSU1FX0ZPUk1BVCksCisJCQkJCSBlcnJtc2coIkZPUk1B VCB0ZW1wbGF0ZSBmb3IgYSBjYXN0IHRvIHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSBtdXN0 IG5vdCBzcGVjaWZ5IGEgdGltZSB6b25lIikpKTsKKwkJCXJldHVybiAoRGF0dW0pIDA7CS8qIGtl ZXAgY29tcGlsZXIgcXVpZXQgKi8KKwl9Cit9CisKKy8qCisgKiBzdHJpbmcgLT4gdGltZXN0YW1w IHdpdGggdGltZSB6b25lOiByZXVzZSB0b190aW1lc3RhbXAoKSB2ZXJiYXRpbSwgbWF0Y2hpbmcK KyAqIHRoZSBTUUwtY2FsbGFibGUgdG9fdGltZXN0YW1wKHRleHQsIHRleHQpLgorICovCitzdGF0 aWMgRGF0dW0KK2Zvcm1hdGNhc3RfaW5fdGltZXN0YW1wdHoodGV4dCAqc3JjLCB0ZXh0ICpmbXQs IE9pZCBjb2xsaWQpCit7CisJcmV0dXJuIERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHRvX3RpbWVz dGFtcCwgY29sbGlkLAorCQkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0oc3JjKSwgUG9pbnRlckdl dERhdHVtKGZtdCkpOworfQorCisvKiBzdHJpbmcgLT4gZGF0ZSAodGV4dCBhbmQgdmFyY2hhciBz b3VyY2VzKSAqLworRGF0dW0KK2Zvcm1hdGNhc3Rfc3RyX3RvX2RhdGUoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlyZXR1cm4gZm9ybWF0Y2FzdF9pbl9kYXRlKFBHX0dFVEFSR19URVhUX1BQKDApLCBQ R19HRVRBUkdfVEVYVF9QUCgxKSwKKwkJCQkJCQkgIFBHX0dFVF9DT0xMQVRJT04oKSk7Cit9CisK Ky8qIHN0cmluZyAtPiBkYXRlIChicGNoYXIgc291cmNlOyB0cmFpbGluZyBibGFua3MgdHJpbW1l ZCkgKi8KK0RhdHVtCitmb3JtYXRjYXN0X2JwY2hhcl90b19kYXRlKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJcmV0dXJuIGZvcm1hdGNhc3RfaW5fZGF0ZShmb3JtYXRjYXN0X3J0cmltX2JsYW5rcyhQ R19HRVRBUkdfVEVYVF9QUCgwKSksCisJCQkJCQkJICBQR19HRVRBUkdfVEVYVF9QUCgxKSwgUEdf R0VUX0NPTExBVElPTigpKTsKK30KKworLyogc3RyaW5nIC0+IHRpbWVzdGFtcCAodGV4dCBhbmQg dmFyY2hhciBzb3VyY2VzKSAqLworRGF0dW0KK2Zvcm1hdGNhc3Rfc3RyX3RvX3RpbWVzdGFtcChQ R19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBmb3JtYXRjYXN0X2luX3RpbWVzdGFtcChQR19H RVRBUkdfVEVYVF9QUCgwKSwgUEdfR0VUQVJHX1RFWFRfUFAoMSksCisJCQkJCQkJCSAgIFBHX0dF VF9DT0xMQVRJT04oKSk7Cit9CisKKy8qIHN0cmluZyAtPiB0aW1lc3RhbXAgKGJwY2hhciBzb3Vy Y2U7IHRyYWlsaW5nIGJsYW5rcyB0cmltbWVkKSAqLworRGF0dW0KK2Zvcm1hdGNhc3RfYnBjaGFy X3RvX3RpbWVzdGFtcChQR19GVU5DVElPTl9BUkdTKQoreworCXJldHVybiBmb3JtYXRjYXN0X2lu X3RpbWVzdGFtcChmb3JtYXRjYXN0X3J0cmltX2JsYW5rcyhQR19HRVRBUkdfVEVYVF9QUCgwKSks CisJCQkJCQkJCSAgIFBHX0dFVEFSR19URVhUX1BQKDEpLCBQR19HRVRfQ09MTEFUSU9OKCkpOwor fQorCisvKiBzdHJpbmcgLT4gdGltZXN0YW1wdHogKHRleHQgYW5kIHZhcmNoYXIgc291cmNlcykg Ki8KK0RhdHVtCitmb3JtYXRjYXN0X3N0cl90b190aW1lc3RhbXB0eihQR19GVU5DVElPTl9BUkdT KQoreworCXJldHVybiBmb3JtYXRjYXN0X2luX3RpbWVzdGFtcHR6KFBHX0dFVEFSR19URVhUX1BQ KDApLCBQR19HRVRBUkdfVEVYVF9QUCgxKSwKKwkJCQkJCQkJCSBQR19HRVRfQ09MTEFUSU9OKCkp OworfQorCisvKiBzdHJpbmcgLT4gdGltZXN0YW1wdHogKGJwY2hhciBzb3VyY2U7IHRyYWlsaW5n IGJsYW5rcyB0cmltbWVkKSAqLworRGF0dW0KK2Zvcm1hdGNhc3RfYnBjaGFyX3RvX3RpbWVzdGFt cHR6KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcmV0dXJuIGZvcm1hdGNhc3RfaW5fdGltZXN0YW1w dHooZm9ybWF0Y2FzdF9ydHJpbV9ibGFua3MoUEdfR0VUQVJHX1RFWFRfUFAoMCkpLAorCQkJCQkJ CQkJIFBHX0dFVEFSR19URVhUX1BQKDEpLCBQR19HRVRfQ09MTEFUSU9OKCkpOworfQorCisvKgor ICogQ2FsbCBhIGNvbGxhdGlvbi1hd2FyZSAoZGF0ZXRpbWUsIHRleHQpIC0+IHRleHQgZm9ybWF0 dGluZyBmdW5jdGlvbiwKKyAqIHByb3BhZ2F0aW5nIGEgU1FMIE5VTEwgcmVzdWx0LiAgRGlyZWN0 RnVuY3Rpb25DYWxsIGNhbm5vdCBoYW5kbGUgYSBTUUwgTlVMTAorICogcmVzdWx0LCBzbyBidWls ZCBhIGxvY2FsIEZ1bmN0aW9uQ2FsbEluZm8uICBQYXNzIHRoZSBjYWxsZXIncyBmbGluZm8gdG8K KyAqIHByb3ZpZGUgYSBub3JtYWwgZm1nciBjb250ZXh0OyB0aGUgY2FsbGVlcyB1c2VkIGhlcmUg ZG8gbm90IGRlcGVuZCBvbgorICogZnVuY3Rpb24tc3BlY2lmaWMgZmxpbmZvIHN0YXRlLgorICov CitzdGF0aWMgRGF0dW0KK2Zvcm1hdGNhc3RfdG9fY2hhcl9jYWxsKEZ1bmN0aW9uQ2FsbEluZm8g Y2FsbGVyX2ZjaW5mbywgUEdGdW5jdGlvbiBmbiwKKwkJCQkJCU9pZCBjb2xsaWQsIERhdHVtIHZh bHVlLCBEYXR1bSBmbXQsIGJvb2wgKnJlc3VsdG51bGwpCit7CisJTE9DQUxfRkNJTkZPKGZjaW5m bywgMik7CisJRGF0dW0JCXJlc3VsdDsKKworCUluaXRGdW5jdGlvbkNhbGxJbmZvRGF0YSgqZmNp bmZvLCBjYWxsZXJfZmNpbmZvLT5mbGluZm8sIDIsIGNvbGxpZCwKKwkJCQkJCQkgTlVMTCwgTlVM TCk7CisJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gdmFsdWU7CisJZmNpbmZvLT5hcmdzWzBdLmlz bnVsbCA9IGZhbHNlOworCWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9IGZtdDsKKwlmY2luZm8tPmFy Z3NbMV0uaXNudWxsID0gZmFsc2U7CisKKwlyZXN1bHQgPSAoKmZuKSAoZmNpbmZvKTsKKwkqcmVz dWx0bnVsbCA9IGZjaW5mby0+aXNudWxsOworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBQ ZXItc291cmNlLXR5cGUgaGVscGVycyBzaGFyZWQgYnkgdGhlIGRhdGV0aW1lIC0+IHN0cmluZyB3 cmFwcGVycyBiZWxvdy4KKyAqIEVhY2ggZm9ybWF0cyB0aGUgc291cmNlIHZhbHVlIHdpdGggdGhl IGdpdmVuIHRlbXBsYXRlLCByZXR1cm5pbmcgdGhlIHJlc3VsdAorICogdGV4dCAod2l0aCAqcmVz dWx0bnVsbCBzZXQgb24gYW4gZW1wdHkgdGVtcGxhdGUsIGFzIGZvciB0b19jaGFyKCkpLgorICov CitzdGF0aWMgRGF0dW0KK2Zvcm1hdGNhc3RfZGF0ZV9vdXQoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIGJvb2wgKnJlc3VsdG51bGwpCit7CisJRGF0ZUFEVAkJZGF0ZVZhbCA9IFBHX0dFVEFSR19E QVRFQURUKDApOworCXRleHQJICAgKmZtdCA9IFBHX0dFVEFSR19URVhUX1BQKDEpOworCVRpbWVz dGFtcAl0cyA9IGRhdGUydGltZXN0YW1wX3NhZmUoZGF0ZVZhbCwgTlVMTCk7CisKKwlyZXR1cm4g Zm9ybWF0Y2FzdF90b19jaGFyX2NhbGwoZmNpbmZvLCB0aW1lc3RhbXBfdG9fY2hhciwgUEdfR0VU X0NPTExBVElPTigpLAorCQkJCQkJCQkgICBUaW1lc3RhbXBHZXREYXR1bSh0cyksIFBvaW50ZXJH ZXREYXR1bShmbXQpLAorCQkJCQkJCQkgICByZXN1bHRudWxsKTsKK30KKworc3RhdGljIERhdHVt Citmb3JtYXRjYXN0X3RpbWVzdGFtcF9vdXQoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wg KnJlc3VsdG51bGwpCit7CisJcmV0dXJuIGZvcm1hdGNhc3RfdG9fY2hhcl9jYWxsKGZjaW5mbywg dGltZXN0YW1wX3RvX2NoYXIsIFBHX0dFVF9DT0xMQVRJT04oKSwKKwkJCQkJCQkJICAgUEdfR0VU QVJHX0RBVFVNKDApLCBQR19HRVRBUkdfREFUVU0oMSksCisJCQkJCQkJCSAgIHJlc3VsdG51bGwp OworfQorCitzdGF0aWMgRGF0dW0KK2Zvcm1hdGNhc3RfdGltZXN0YW1wdHpfb3V0KEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBib29sICpyZXN1bHRudWxsKQoreworCXJldHVybiBmb3JtYXRjYXN0 X3RvX2NoYXJfY2FsbChmY2luZm8sIHRpbWVzdGFtcHR6X3RvX2NoYXIsIFBHX0dFVF9DT0xMQVRJ T04oKSwKKwkJCQkJCQkJICAgUEdfR0VUQVJHX0RBVFVNKDApLCBQR19HRVRBUkdfREFUVU0oMSks CisJCQkJCQkJCSAgIHJlc3VsdG51bGwpOworfQorCisvKgorICogRXhwb3J0ZWQgZGF0ZXRpbWUg LT4gc3RyaW5nIHdyYXBwZXJzLiAgVGhlIHRleHQsIHZhcmNoYXIgYW5kIGJwY2hhciB0YXJnZXRz CisgKiBlYWNoIGdldCBhIGRpc3RpbmN0IEMgc3ltYm9sIHNvIHRoYXQgbm8gdHdvIGJ1aWx0LWlu IGZ1bmN0aW9ucyBzaGFyZSBhCisgKiBwcm9zcmMgd2l0aCBhIGRpZmZlcmVudCByZXR1cm4gdHlw ZTsgdGhleSBhbGwgZGVsZWdhdGUgdG8gdGhlIHBlci1zb3VyY2UKKyAqIGhlbHBlciBhYm92ZSwg c28gdGhlcmUgaXMgbm8gZHVwbGljYXRlZCBsb2dpYy4gIFRoZSByZXR1cm5lZCB0ZXh0IHZhcmxl bmEgaXMKKyAqIGEgdmFsaWQgdmFyY2hhci9icGNoYXIgdmFsdWU7IGFueSBkZWNsYXJlZCBsZW5n dGgvdHlwbW9kIGlzIGVuZm9yY2VkIGJ5IHRoZQorICogb3JkaW5hcnkgY29lcmNpb24gbGF5ZXJl ZCBhYm92ZSB0aGUgQ29lcmNlVmlhRm9ybWF0dGVyIG5vZGUuCisgKi8KK0RhdHVtCitmb3JtYXRj YXN0X2RhdGVfdG9fdGV4dChQR19GVU5DVElPTl9BUkdTKQoreworCWJvb2wJCXJlc3VsdG51bGw7 CisJRGF0dW0JCXJlc3VsdCA9IGZvcm1hdGNhc3RfZGF0ZV9vdXQoZmNpbmZvLCAmcmVzdWx0bnVs bCk7CisKKwlpZiAocmVzdWx0bnVsbCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19SRVRVUk5f REFUVU0ocmVzdWx0KTsKK30KKworRGF0dW0KK2Zvcm1hdGNhc3RfZGF0ZV90b192YXJjaGFyKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisJYm9vbAkJcmVzdWx0bnVsbDsKKwlEYXR1bQkJcmVzdWx0ID0g Zm9ybWF0Y2FzdF9kYXRlX291dChmY2luZm8sICZyZXN1bHRudWxsKTsKKworCWlmIChyZXN1bHRu dWxsKQorCQlQR19SRVRVUk5fTlVMTCgpOworCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQpOworfQor CitEYXR1bQorZm9ybWF0Y2FzdF9kYXRlX3RvX2JwY2hhcihQR19GVU5DVElPTl9BUkdTKQorewor CWJvb2wJCXJlc3VsdG51bGw7CisJRGF0dW0JCXJlc3VsdCA9IGZvcm1hdGNhc3RfZGF0ZV9vdXQo ZmNpbmZvLCAmcmVzdWx0bnVsbCk7CisKKwlpZiAocmVzdWx0bnVsbCkKKwkJUEdfUkVUVVJOX05V TEwoKTsKKwlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKK30KKworRGF0dW0KK2Zvcm1hdGNhc3Rf dGltZXN0YW1wX3RvX3RleHQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlib29sCQlyZXN1bHRudWxs OworCURhdHVtCQlyZXN1bHQgPSBmb3JtYXRjYXN0X3RpbWVzdGFtcF9vdXQoZmNpbmZvLCAmcmVz dWx0bnVsbCk7CisKKwlpZiAocmVzdWx0bnVsbCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19S RVRVUk5fREFUVU0ocmVzdWx0KTsKK30KKworRGF0dW0KK2Zvcm1hdGNhc3RfdGltZXN0YW1wX3Rv X3ZhcmNoYXIoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlib29sCQlyZXN1bHRudWxsOworCURhdHVt CQlyZXN1bHQgPSBmb3JtYXRjYXN0X3RpbWVzdGFtcF9vdXQoZmNpbmZvLCAmcmVzdWx0bnVsbCk7 CisKKwlpZiAocmVzdWx0bnVsbCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19SRVRVUk5fREFU VU0ocmVzdWx0KTsKK30KKworRGF0dW0KK2Zvcm1hdGNhc3RfdGltZXN0YW1wX3RvX2JwY2hhcihQ R19GVU5DVElPTl9BUkdTKQoreworCWJvb2wJCXJlc3VsdG51bGw7CisJRGF0dW0JCXJlc3VsdCA9 IGZvcm1hdGNhc3RfdGltZXN0YW1wX291dChmY2luZm8sICZyZXN1bHRudWxsKTsKKworCWlmIChy ZXN1bHRudWxsKQorCQlQR19SRVRVUk5fTlVMTCgpOworCVBHX1JFVFVSTl9EQVRVTShyZXN1bHQp OworfQorCitEYXR1bQorZm9ybWF0Y2FzdF90aW1lc3RhbXB0el90b190ZXh0KFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJYm9vbAkJcmVzdWx0bnVsbDsKKwlEYXR1bQkJcmVzdWx0ID0gZm9ybWF0Y2Fz dF90aW1lc3RhbXB0el9vdXQoZmNpbmZvLCAmcmVzdWx0bnVsbCk7CisKKwlpZiAocmVzdWx0bnVs bCkKKwkJUEdfUkVUVVJOX05VTEwoKTsKKwlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKK30KKwor RGF0dW0KK2Zvcm1hdGNhc3RfdGltZXN0YW1wdHpfdG9fdmFyY2hhcihQR19GVU5DVElPTl9BUkdT KQoreworCWJvb2wJCXJlc3VsdG51bGw7CisJRGF0dW0JCXJlc3VsdCA9IGZvcm1hdGNhc3RfdGlt ZXN0YW1wdHpfb3V0KGZjaW5mbywgJnJlc3VsdG51bGwpOworCisJaWYgKHJlc3VsdG51bGwpCisJ CVBHX1JFVFVSTl9OVUxMKCk7CisJUEdfUkVUVVJOX0RBVFVNKHJlc3VsdCk7Cit9CisKK0RhdHVt Citmb3JtYXRjYXN0X3RpbWVzdGFtcHR6X3RvX2JwY2hhcihQR19GVU5DVElPTl9BUkdTKQorewor CWJvb2wJCXJlc3VsdG51bGw7CisJRGF0dW0JCXJlc3VsdCA9IGZvcm1hdGNhc3RfdGltZXN0YW1w dHpfb3V0KGZjaW5mbywgJnJlc3VsdG51bGwpOworCisJaWYgKHJlc3VsdG51bGwpCisJCVBHX1JF VFVSTl9OVUxMKCk7CisJUEdfUkVUVVJOX0RBVFVNKHJlc3VsdCk7Cit9CisKIC8qCiAgKiBDb252 ZXJ0IHRoZSAnZGF0ZV90eHQnIGlucHV0IHRvIGEgZGF0ZXRpbWUgdHlwZSB1c2luZyBhcmd1bWVu dCAnZm10JwogICogYXMgYSBmb3JtYXQgc3RyaW5nLiAgVGhlIGNvbGxhdGlvbiAnY29sbGlkJyBt YXkgYmUgdXNlZCBmb3IgY2FzZS1mb2xkaW5nCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA5Mjg4Mzc0MDc0My4u ZWVmM2RhMDBjZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMjE4OCw2ICsyMTg4LDI5IEBAIHNlbGVjdER1 bXBhYmxlQ2FzdChDYXN0SW5mbyAqY2FzdCwgQXJjaGl2ZSAqZm91dCkKIAkJCURVTVBfQ09NUE9O RU5UX0FMTCA6IERVTVBfQ09NUE9ORU5UX05PTkU7CiB9CiAKKy8qCisgKiBzZWxlY3REdW1wYWJs ZUZvcm1hdHRlcjogcG9saWN5LXNldHRpbmcgc3Vicm91dGluZQorICoJCU1hcmsgYSBmb3JtYXR0 ZXIgYXMgdG8gYmUgZHVtcGVkIG9yIG5vdAorICoKKyAqIExpa2UgY2FzdHMsIGZvcm1hdHRlcnMg aGF2ZSBubyBuYW1lc3BhY2UgYW5kIG5vIGlkZW50aWZpYWJsZSBvd25lciwgc28gd2UKKyAqIGRp c3Rpbmd1aXNoIHRoZSBidWlsdC1pbiAoaW5pdGRiLWNyZWF0ZWQpIGZvcm1hdHRlcnMgZnJvbSB1 c2VyLWRlZmluZWQgb25lcworICogYnkgY2hlY2tpbmcgd2hldGhlciB0aGUgZm9ybWF0dGVyJ3Mg T0lEIGlzIGluIHRoZSByYW5nZSByZXNlcnZlZCBmb3IgaW5pdGRiLgorICogQnVpbHQtaW4gZm9y bWF0dGVycyBhcmUgcGFydCBvZiB0aGUgc3lzdGVtIGNhdGFsb2dzIGFuZCBtdXN0IG5vdCBiZSBk dW1wZWQKKyAqIGFzIENSRUFURSBGT1JNQVRURVIgY29tbWFuZHMuCisgKi8KK3N0YXRpYyB2b2lk CitzZWxlY3REdW1wYWJsZUZvcm1hdHRlcihGb3JtYXR0ZXJJbmZvICpmb3JtYXR0ZXIsIEFyY2hp dmUgKmZvdXQpCit7CisJaWYgKGNoZWNrRXh0ZW5zaW9uTWVtYmVyc2hpcCgmZm9ybWF0dGVyLT5k b2JqLCBmb3V0KSkKKwkJcmV0dXJuOwkJCQkJLyogZXh0ZW5zaW9uIG1lbWJlcnNoaXAgb3ZlcnJp ZGVzIGFsbCBlbHNlICovCisKKwlpZiAoZm9ybWF0dGVyLT5kb2JqLmNhdElkLm9pZCA8PSBnX2xh c3RfYnVpbHRpbl9vaWQpCisJCWZvcm1hdHRlci0+ZG9iai5kdW1wID0gRFVNUF9DT01QT05FTlRf Tk9ORTsKKwllbHNlCisJCWZvcm1hdHRlci0+ZG9iai5kdW1wID0gZm91dC0+ZG9wdC0+aW5jbHVk ZV9ldmVyeXRoaW5nID8KKwkJCURVTVBfQ09NUE9ORU5UX0FMTCA6IERVTVBfQ09NUE9ORU5UX05P TkU7Cit9CisKIC8qCiAgKiBzZWxlY3REdW1wYWJsZVByb2NMYW5nOiBwb2xpY3ktc2V0dGluZyBz dWJyb3V0aW5lCiAgKgkJTWFyayBhIHByb2NlZHVyYWwgbGFuZ3VhZ2UgYXMgdG8gYmUgZHVtcGVk IG9yIG5vdApAQCAtOTM5MCw3ICs5NDEzLDcgQEAgZ2V0Rm9ybWF0dGVycyhBcmNoaXZlICpmb3V0 KQogCQlmb3JtYXR0ZXJpbmZvW2ldLmRvYmoubmFtZSA9IG5hbWVidWYuZGF0YTsKIAogCQkvKiBE ZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KLQkJc2VsZWN0RHVtcGFibGVPYmpl Y3QoJihmb3JtYXR0ZXJpbmZvW2ldLmRvYmopLCBmb3V0KTsKKwkJc2VsZWN0RHVtcGFibGVGb3Jt YXR0ZXIoJihmb3JtYXR0ZXJpbmZvW2ldKSwgZm91dCk7CiAJfQogCiAJUFFjbGVhcihyZXMpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JtYXR0ZXIuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19mb3JtYXR0ZXIuZGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi40NTE4MDcxMDM5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfZm9ybWF0dGVyLmRhdApAQCAtMCwwICsxLDcxIEBACisjLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIworIyBwZ19mb3JtYXR0ZXIuZGF0CisjICAgIEluaXRpYWwgY29udGVudHMgb2YgdGhlIHBn X2Zvcm1hdHRlciBzeXN0ZW0gY2F0YWxvZy4KKyMKKyMgVGhlc2UgYXJlIHRoZSBidWlsdC1pbiBm b3JtYXR0ZXJzIGZvciBDQVNUICggPG9wZXJhbmQ+IEFTIDx0eXBlPgorIyBGT1JNQVQgPHRlbXBs YXRlPiApLiAgRWFjaCByb3cgbWFwcyBhbiBleGFjdCAoc291cmNlIHR5cGUsIHRhcmdldCB0eXBl KSBwYWlyCisjIHRvIGEgd3JhcHBlciBmdW5jdGlvbiB3aXRoIHRoZSBzaWduYXR1cmUKKyMgICAg IGZvcm1hdHRlcihzb3VyY2VfdHlwZSwgdGV4dCkgcmV0dXJucyB0YXJnZXRfdHlwZQorIyBMb29r dXAgaXMgYnkgZXhhY3Qgc291cmNlIGFuZCB0YXJnZXQgdHlwZSwgc28gdGV4dCwgdmFyY2hhciBh bmQgYnBjaGFyIGFyZQorIyByZWdpc3RlcmVkIHNlcGFyYXRlbHkgb24gZWFjaCBzaWRlLiAgVGhl IHdyYXBwZXIgZnVuY3Rpb25zIGxpdmUgaW4KKyMgZm9ybWF0dGluZy5jIGFuZCByZXVzZSBQb3N0 Z3JlU1FMJ3MgZXhpc3RpbmcgZm9ybWF0dGluZyBjb2RlLgorIworIyBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMg UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEKKyMKKyMgc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19mb3JtYXR0ZXIuZGF0Cisj CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorCitbCisKKyMgc3RyaW5nIC0+IGRhdGUKK3sgb2lkID0+ICc4NjY4 JywgZm10c291cmNlID0+ICd0ZXh0JywgZm10dGFyZ2V0ID0+ICdkYXRlJywKKyAgZm10ZnVuYyA9 PiAncGdfZm9ybWF0X3RleHRfdG9fZGF0ZSh0ZXh0LHRleHQpJyB9LAoreyBvaWQgPT4gJzg2Njkn LCBmbXRzb3VyY2UgPT4gJ3ZhcmNoYXInLCBmbXR0YXJnZXQgPT4gJ2RhdGUnLAorICBmbXRmdW5j ID0+ICdwZ19mb3JtYXRfdmFyY2hhcl90b19kYXRlKHZhcmNoYXIsdGV4dCknIH0sCit7IG9pZCA9 PiAnODY3MCcsIGZtdHNvdXJjZSA9PiAnYnBjaGFyJywgZm10dGFyZ2V0ID0+ICdkYXRlJywKKyAg Zm10ZnVuYyA9PiAncGdfZm9ybWF0X2JwY2hhcl90b19kYXRlKGJwY2hhcix0ZXh0KScgfSwKKwor IyBzdHJpbmcgLT4gdGltZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lCit7IG9pZCA9PiAnODY3MScs IGZtdHNvdXJjZSA9PiAndGV4dCcsIGZtdHRhcmdldCA9PiAndGltZXN0YW1wJywKKyAgZm10ZnVu YyA9PiAncGdfZm9ybWF0X3RleHRfdG9fdGltZXN0YW1wKHRleHQsdGV4dCknIH0sCit7IG9pZCA9 PiAnODY3MicsIGZtdHNvdXJjZSA9PiAndmFyY2hhcicsIGZtdHRhcmdldCA9PiAndGltZXN0YW1w JywKKyAgZm10ZnVuYyA9PiAncGdfZm9ybWF0X3ZhcmNoYXJfdG9fdGltZXN0YW1wKHZhcmNoYXIs dGV4dCknIH0sCit7IG9pZCA9PiAnODY3MycsIGZtdHNvdXJjZSA9PiAnYnBjaGFyJywgZm10dGFy Z2V0ID0+ICd0aW1lc3RhbXAnLAorICBmbXRmdW5jID0+ICdwZ19mb3JtYXRfYnBjaGFyX3RvX3Rp bWVzdGFtcChicGNoYXIsdGV4dCknIH0sCisKKyMgc3RyaW5nIC0+IHRpbWVzdGFtcCB3aXRoIHRp bWUgem9uZQoreyBvaWQgPT4gJzg2NzQnLCBmbXRzb3VyY2UgPT4gJ3RleHQnLCBmbXR0YXJnZXQg PT4gJ3RpbWVzdGFtcHR6JywKKyAgZm10ZnVuYyA9PiAncGdfZm9ybWF0X3RleHRfdG9fdGltZXN0 YW1wdHoodGV4dCx0ZXh0KScgfSwKK3sgb2lkID0+ICc4Njc1JywgZm10c291cmNlID0+ICd2YXJj aGFyJywgZm10dGFyZ2V0ID0+ICd0aW1lc3RhbXB0eicsCisgIGZtdGZ1bmMgPT4gJ3BnX2Zvcm1h dF92YXJjaGFyX3RvX3RpbWVzdGFtcHR6KHZhcmNoYXIsdGV4dCknIH0sCit7IG9pZCA9PiAnODY3 NicsIGZtdHNvdXJjZSA9PiAnYnBjaGFyJywgZm10dGFyZ2V0ID0+ICd0aW1lc3RhbXB0eicsCisg IGZtdGZ1bmMgPT4gJ3BnX2Zvcm1hdF9icGNoYXJfdG9fdGltZXN0YW1wdHooYnBjaGFyLHRleHQp JyB9LAorCisjIGRhdGUgLT4gc3RyaW5nCit7IG9pZCA9PiAnODY3NycsIGZtdHNvdXJjZSA9PiAn ZGF0ZScsIGZtdHRhcmdldCA9PiAndGV4dCcsCisgIGZtdGZ1bmMgPT4gJ3BnX2Zvcm1hdF9kYXRl X3RvX3RleHQoZGF0ZSx0ZXh0KScgfSwKK3sgb2lkID0+ICc4Njc4JywgZm10c291cmNlID0+ICdk YXRlJywgZm10dGFyZ2V0ID0+ICd2YXJjaGFyJywKKyAgZm10ZnVuYyA9PiAncGdfZm9ybWF0X2Rh dGVfdG9fdmFyY2hhcihkYXRlLHRleHQpJyB9LAoreyBvaWQgPT4gJzg2NzknLCBmbXRzb3VyY2Ug PT4gJ2RhdGUnLCBmbXR0YXJnZXQgPT4gJ2JwY2hhcicsCisgIGZtdGZ1bmMgPT4gJ3BnX2Zvcm1h dF9kYXRlX3RvX2JwY2hhcihkYXRlLHRleHQpJyB9LAorCisjIHRpbWVzdGFtcCB3aXRob3V0IHRp bWUgem9uZSAtPiBzdHJpbmcKK3sgb2lkID0+ICc4NjgwJywgZm10c291cmNlID0+ICd0aW1lc3Rh bXAnLCBmbXR0YXJnZXQgPT4gJ3RleHQnLAorICBmbXRmdW5jID0+ICdwZ19mb3JtYXRfdGltZXN0 YW1wX3RvX3RleHQodGltZXN0YW1wLHRleHQpJyB9LAoreyBvaWQgPT4gJzg2ODEnLCBmbXRzb3Vy Y2UgPT4gJ3RpbWVzdGFtcCcsIGZtdHRhcmdldCA9PiAndmFyY2hhcicsCisgIGZtdGZ1bmMgPT4g J3BnX2Zvcm1hdF90aW1lc3RhbXBfdG9fdmFyY2hhcih0aW1lc3RhbXAsdGV4dCknIH0sCit7IG9p ZCA9PiAnODY4MicsIGZtdHNvdXJjZSA9PiAndGltZXN0YW1wJywgZm10dGFyZ2V0ID0+ICdicGNo YXInLAorICBmbXRmdW5jID0+ICdwZ19mb3JtYXRfdGltZXN0YW1wX3RvX2JwY2hhcih0aW1lc3Rh bXAsdGV4dCknIH0sCisKKyMgdGltZXN0YW1wIHdpdGggdGltZSB6b25lIC0+IHN0cmluZworeyBv aWQgPT4gJzg2ODMnLCBmbXRzb3VyY2UgPT4gJ3RpbWVzdGFtcHR6JywgZm10dGFyZ2V0ID0+ICd0 ZXh0JywKKyAgZm10ZnVuYyA9PiAncGdfZm9ybWF0X3RpbWVzdGFtcHR6X3RvX3RleHQodGltZXN0 YW1wdHosdGV4dCknIH0sCit7IG9pZCA9PiAnODY4NCcsIGZtdHNvdXJjZSA9PiAndGltZXN0YW1w dHonLCBmbXR0YXJnZXQgPT4gJ3ZhcmNoYXInLAorICBmbXRmdW5jID0+ICdwZ19mb3JtYXRfdGlt ZXN0YW1wdHpfdG9fdmFyY2hhcih0aW1lc3RhbXB0eix0ZXh0KScgfSwKK3sgb2lkID0+ICc4Njg1 JywgZm10c291cmNlID0+ICd0aW1lc3RhbXB0eicsIGZtdHRhcmdldCA9PiAnYnBjaGFyJywKKyAg Zm10ZnVuYyA9PiAncGdfZm9ybWF0X3RpbWVzdGFtcHR6X3RvX2JwY2hhcih0aW1lc3RhbXB0eix0 ZXh0KScgfSwKKworXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNDAyZDg2OTcxMGIuLjQw ZDhmMzM0OTdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTQ4NDcsNiArNDg0Nyw4MyBA QAogeyBvaWQgPT4gJzE3ODAnLCBkZXNjciA9PiAnY29udmVydCB0ZXh0IHRvIGRhdGUnLAogICBw cm9uYW1lID0+ICd0b19kYXRlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdk YXRlJywKICAgcHJvYXJndHlwZXMgPT4gJ3RleHQgdGV4dCcsIHByb3NyYyA9PiAndG9fZGF0ZScg fSwKKworIyBCdWlsdC1pbiBmb3JtYXR0ZXJzIGZvciBDQVNUICggLi4uIEZPUk1BVCAuLi4gKS4g IFRoZXNlIGFyZSB0aGluIHdyYXBwZXJzCisjIGFyb3VuZCB0aGUgZXhpc3RpbmcgdG9fY2hhci90 b19kYXRlL3RvX3RpbWVzdGFtcC9wYXJzZV9kYXRldGltZSBtYWNoaW5lcnksCisjIHJlZ2lzdGVy ZWQgaW4gcGdfZm9ybWF0dGVyIChzZWUgcGdfZm9ybWF0dGVyLmRhdCkgYW5kIHJlYWNoZWQgb25s eSB0aHJvdWdoIGEKKyMgQ29lcmNlVmlhRm9ybWF0dGVyIG5vZGU7IHRoZXkgYXJlIG5vdCBhIHBy aW1hcnkgdXNlci1mYWNpbmcgQVBJLgoreyBvaWQgPT4gJzg2NTAnLCBkZXNjciA9PiAnZm9ybWF0 dGVkIGNhc3Q6IHRleHQgdG8gZGF0ZScsCisgIHByb25hbWUgPT4gJ3BnX2Zvcm1hdF90ZXh0X3Rv X2RhdGUnLCBwcm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0 dHlwZSA9PiAnZGF0ZScsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQnLAorICBwcm9zcmMgPT4g J2Zvcm1hdGNhc3Rfc3RyX3RvX2RhdGUnIH0sCit7IG9pZCA9PiAnODY1MScsIGRlc2NyID0+ICdm b3JtYXR0ZWQgY2FzdDogdmFyY2hhciB0byBkYXRlJywKKyAgcHJvbmFtZSA9PiAncGdfZm9ybWF0 X3ZhcmNoYXJfdG9fZGF0ZScsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3Mn LAorICBwcm9yZXR0eXBlID0+ICdkYXRlJywgcHJvYXJndHlwZXMgPT4gJ3ZhcmNoYXIgdGV4dCcs CisgIHByb3NyYyA9PiAnZm9ybWF0Y2FzdF9zdHJfdG9fZGF0ZScgfSwKK3sgb2lkID0+ICc4NjUy JywgZGVzY3IgPT4gJ2Zvcm1hdHRlZCBjYXN0OiBicGNoYXIgdG8gZGF0ZScsCisgIHByb25hbWUg PT4gJ3BnX2Zvcm1hdF9icGNoYXJfdG9fZGF0ZScsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJvdm9s YXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdkYXRlJywgcHJvYXJndHlwZXMgPT4gJ2Jw Y2hhciB0ZXh0JywKKyAgcHJvc3JjID0+ICdmb3JtYXRjYXN0X2JwY2hhcl90b19kYXRlJyB9LAor eyBvaWQgPT4gJzg2NTMnLCBkZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IHRleHQgdG8gdGltZXN0 YW1wJywKKyAgcHJvbmFtZSA9PiAncGdfZm9ybWF0X3RleHRfdG9fdGltZXN0YW1wJywgcHJvaXNz dHJpY3QgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ3RpbWVz dGFtcCcsIHByb2FyZ3R5cGVzID0+ICd0ZXh0IHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNh c3Rfc3RyX3RvX3RpbWVzdGFtcCcgfSwKK3sgb2lkID0+ICc4NjU0JywgZGVzY3IgPT4gJ2Zvcm1h dHRlZCBjYXN0OiB2YXJjaGFyIHRvIHRpbWVzdGFtcCcsCisgIHByb25hbWUgPT4gJ3BnX2Zvcm1h dF92YXJjaGFyX3RvX3RpbWVzdGFtcCcsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJvdm9sYXRpbGUg PT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICd0aW1lc3RhbXAnLCBwcm9hcmd0eXBlcyA9PiAndmFy Y2hhciB0ZXh0JywKKyAgcHJvc3JjID0+ICdmb3JtYXRjYXN0X3N0cl90b190aW1lc3RhbXAnIH0s Cit7IG9pZCA9PiAnODY1NScsIGRlc2NyID0+ICdmb3JtYXR0ZWQgY2FzdDogYnBjaGFyIHRvIHRp bWVzdGFtcCcsCisgIHByb25hbWUgPT4gJ3BnX2Zvcm1hdF9icGNoYXJfdG9fdGltZXN0YW1wJywg cHJvaXNzdHJpY3QgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4g J3RpbWVzdGFtcCcsIHByb2FyZ3R5cGVzID0+ICdicGNoYXIgdGV4dCcsCisgIHByb3NyYyA9PiAn Zm9ybWF0Y2FzdF9icGNoYXJfdG9fdGltZXN0YW1wJyB9LAoreyBvaWQgPT4gJzg2NTYnLCBkZXNj ciA9PiAnZm9ybWF0dGVkIGNhc3Q6IHRleHQgdG8gdGltZXN0YW1wdHonLAorICBwcm9uYW1lID0+ ICdwZ19mb3JtYXRfdGV4dF90b190aW1lc3RhbXB0eicsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJv dm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICd0aW1lc3RhbXB0eicsIHByb2FyZ3R5 cGVzID0+ICd0ZXh0IHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3Rfc3RyX3RvX3RpbWVz dGFtcHR6JyB9LAoreyBvaWQgPT4gJzg2NTcnLCBkZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IHZh cmNoYXIgdG8gdGltZXN0YW1wdHonLAorICBwcm9uYW1lID0+ICdwZ19mb3JtYXRfdmFyY2hhcl90 b190aW1lc3RhbXB0eicsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAor ICBwcm9yZXR0eXBlID0+ICd0aW1lc3RhbXB0eicsIHByb2FyZ3R5cGVzID0+ICd2YXJjaGFyIHRl eHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3Rfc3RyX3RvX3RpbWVzdGFtcHR6JyB9LAoreyBv aWQgPT4gJzg2NTgnLCBkZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IGJwY2hhciB0byB0aW1lc3Rh bXB0eicsCisgIHByb25hbWUgPT4gJ3BnX2Zvcm1hdF9icGNoYXJfdG9fdGltZXN0YW1wdHonLCBw cm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAn dGltZXN0YW1wdHonLCBwcm9hcmd0eXBlcyA9PiAnYnBjaGFyIHRleHQnLAorICBwcm9zcmMgPT4g J2Zvcm1hdGNhc3RfYnBjaGFyX3RvX3RpbWVzdGFtcHR6JyB9LAoreyBvaWQgPT4gJzg2NTknLCBk ZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IGRhdGUgdG8gdGV4dCcsCisgIHByb25hbWUgPT4gJ3Bn X2Zvcm1hdF9kYXRlX3RvX3RleHQnLCBwcm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdkYXRlIHRleHQn LAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3RfZGF0ZV90b190ZXh0JyB9LAoreyBvaWQgPT4gJzg2 NjAnLCBkZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IGRhdGUgdG8gdmFyY2hhcicsCisgIHByb25h bWUgPT4gJ3BnX2Zvcm1hdF9kYXRlX3RvX3ZhcmNoYXInLCBwcm9pc3N0cmljdCA9PiAndCcsIHBy b3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAndmFyY2hhcicsIHByb2FyZ3R5cGVz ID0+ICdkYXRlIHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3RfZGF0ZV90b192YXJjaGFy JyB9LAoreyBvaWQgPT4gJzg2NjEnLCBkZXNjciA9PiAnZm9ybWF0dGVkIGNhc3Q6IGRhdGUgdG8g YnBjaGFyJywKKyAgcHJvbmFtZSA9PiAncGdfZm9ybWF0X2RhdGVfdG9fYnBjaGFyJywgcHJvaXNz dHJpY3QgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ2JwY2hh cicsIHByb2FyZ3R5cGVzID0+ICdkYXRlIHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3Rf ZGF0ZV90b19icGNoYXInIH0sCit7IG9pZCA9PiAnODY2MicsIGRlc2NyID0+ICdmb3JtYXR0ZWQg Y2FzdDogdGltZXN0YW1wIHRvIHRleHQnLAorICBwcm9uYW1lID0+ICdwZ19mb3JtYXRfdGltZXN0 YW1wX3RvX3RleHQnLCBwcm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAg cHJvcmV0dHlwZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICd0aW1lc3RhbXAgdGV4dCcsCisg IHByb3NyYyA9PiAnZm9ybWF0Y2FzdF90aW1lc3RhbXBfdG9fdGV4dCcgfSwKK3sgb2lkID0+ICc4 NjYzJywgZGVzY3IgPT4gJ2Zvcm1hdHRlZCBjYXN0OiB0aW1lc3RhbXAgdG8gdmFyY2hhcicsCisg IHByb25hbWUgPT4gJ3BnX2Zvcm1hdF90aW1lc3RhbXBfdG9fdmFyY2hhcicsIHByb2lzc3RyaWN0 ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICd2YXJjaGFyJywg cHJvYXJndHlwZXMgPT4gJ3RpbWVzdGFtcCB0ZXh0JywKKyAgcHJvc3JjID0+ICdmb3JtYXRjYXN0 X3RpbWVzdGFtcF90b192YXJjaGFyJyB9LAoreyBvaWQgPT4gJzg2NjQnLCBkZXNjciA9PiAnZm9y bWF0dGVkIGNhc3Q6IHRpbWVzdGFtcCB0byBicGNoYXInLAorICBwcm9uYW1lID0+ICdwZ19mb3Jt YXRfdGltZXN0YW1wX3RvX2JwY2hhcicsIHByb2lzc3RyaWN0ID0+ICd0JywgcHJvdm9sYXRpbGUg PT4gJ3MnLAorICBwcm9yZXR0eXBlID0+ICdicGNoYXInLCBwcm9hcmd0eXBlcyA9PiAndGltZXN0 YW1wIHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3RfdGltZXN0YW1wX3RvX2JwY2hhcicg fSwKK3sgb2lkID0+ICc4NjY1JywgZGVzY3IgPT4gJ2Zvcm1hdHRlZCBjYXN0OiB0aW1lc3RhbXB0 eiB0byB0ZXh0JywKKyAgcHJvbmFtZSA9PiAncGdfZm9ybWF0X3RpbWVzdGFtcHR6X3RvX3RleHQn LCBwcm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9 PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICd0aW1lc3RhbXB0eiB0ZXh0JywKKyAgcHJvc3JjID0+ ICdmb3JtYXRjYXN0X3RpbWVzdGFtcHR6X3RvX3RleHQnIH0sCit7IG9pZCA9PiAnODY2NicsIGRl c2NyID0+ICdmb3JtYXR0ZWQgY2FzdDogdGltZXN0YW1wdHogdG8gdmFyY2hhcicsCisgIHByb25h bWUgPT4gJ3BnX2Zvcm1hdF90aW1lc3RhbXB0el90b192YXJjaGFyJywgcHJvaXNzdHJpY3QgPT4g J3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3JldHR5cGUgPT4gJ3ZhcmNoYXInLCBwcm9h cmd0eXBlcyA9PiAndGltZXN0YW1wdHogdGV4dCcsCisgIHByb3NyYyA9PiAnZm9ybWF0Y2FzdF90 aW1lc3RhbXB0el90b192YXJjaGFyJyB9LAoreyBvaWQgPT4gJzg2NjcnLCBkZXNjciA9PiAnZm9y bWF0dGVkIGNhc3Q6IHRpbWVzdGFtcHR6IHRvIGJwY2hhcicsCisgIHByb25hbWUgPT4gJ3BnX2Zv cm1hdF90aW1lc3RhbXB0el90b19icGNoYXInLCBwcm9pc3N0cmljdCA9PiAndCcsIHByb3ZvbGF0 aWxlID0+ICdzJywKKyAgcHJvcmV0dHlwZSA9PiAnYnBjaGFyJywgcHJvYXJndHlwZXMgPT4gJ3Rp bWVzdGFtcHR6IHRleHQnLAorICBwcm9zcmMgPT4gJ2Zvcm1hdGNhc3RfdGltZXN0YW1wdHpfdG9f YnBjaGFyJyB9LAogeyBvaWQgPT4gJzE3NjgnLCBkZXNjciA9PiAnZm9ybWF0IGludGVydmFsIHRv IHRleHQnLAogICBwcm9uYW1lID0+ICd0b19jaGFyJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9y ZXR0eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMgPT4gJ2ludGVydmFsIHRleHQnLCBwcm9z cmMgPT4gJ2ludGVydmFsX3RvX2NoYXInIH0sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2V4cHJlc3Npb25zLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhw cmVzc2lvbnMub3V0CmluZGV4IDdkMDY0MDI0YjNhLi5iYzViMzdmOWNjNCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHByZXNzaW9ucy5vdXQKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9leHByZXNzaW9ucy5vdXQKQEAgLTU2NSwyMSArNTY1LDIyIEBAIHJv bGxiYWNrOwogLS0gQ0FTVChleHByIEFTIHR5cGUgRk9STUFUIGZvcm1hdF9leHByKQogLS0KIC0t IEEgRk9STUFUIGNsYXVzZSBpcyByZXNvbHZlZCB0aHJvdWdoIGEgcmVnaXN0ZXJlZCBmb3JtYXR0 ZXIgKHNlZSBDUkVBVEUKLS0tIEZPUk1BVFRFUikgYW5kIG5ldmVyIGZhbGxzIGJhY2sgdG8gYW4g b3JkaW5hcnkgY2FzdC4gIE5vIGZvcm1hdHRlcnMgYXJlCi0tLSBkZWZpbmVkIGluIHRoaXMgdGVz dCwgc28gdGhlc2UgY2FzdHMgZmFpbCB3aXRoIGEgbWlzc2luZy1mb3JtYXR0ZXIgZXJyb3I7Ci0t LSB0aGlzIGNvbmZpcm1zIHRoZSBGT1JNQVQgY2xhdXNlIGlzIG5laXRoZXIgaWdub3JlZCBub3Ig dHJlYXRlZCBhcyBhbgotLS0gb3JkaW5hcnkgY2FzdC4gIEFuIHVua25vd24tdHlwZSBzb3VyY2Ug bGl0ZXJhbCBpcyBjb2VyY2VkIHRvIHRleHQgZmlyc3QsCi0tLSBzbyB0aGUgbG9va3VwIGtleSBp cyAodGV4dCwgdGFyZ2V0KS4KLS0tIGJhc2ljIGZvcm0gKGxvb2tzIHVwIGEgZm9ybWF0dGVyIGZv ciAodGV4dCwgZGF0ZSkpCi1TRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBGT1JNQVQg J1lZWVktTU0tREQnKTsKLUVSUk9SOiAgZm9ybWF0dGVyIGZvciBjYXN0IGZyb20gdHlwZSB0ZXh0 IHRvIHR5cGUgZGF0ZSBkb2VzIG5vdCBleGlzdAotTElORSAxOiBTRUxFQ1QgQ0FTVCgnMjAyNi0w Ni0yNCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVktTU0tREQnKTsKKy0tIEZPUk1BVFRFUikgYW5kIG5l dmVyIGZhbGxzIGJhY2sgdG8gYW4gb3JkaW5hcnkgY2FzdC4gIFRoZSB0eXBlIHBhaXJzIHVzZWQK Ky0tIGhlcmUgaGF2ZSBubyBmb3JtYXR0ZXIgKHRoZSBidWlsdC1pbiBmb3JtYXR0ZXJzIGNvdmVy IGRhdGV0aW1lL3N0cmluZyBwYWlycywKKy0tIG5vdCB0aGVzZSksIHNvIHRoZXNlIGNhc3RzIGZh aWwgd2l0aCBhIG1pc3NpbmctZm9ybWF0dGVyIGVycm9yIGV2ZW4gdGhvdWdoIGFuCistLSBvcmRp bmFyeSBjYXN0IHdvdWxkIHN1Y2NlZWQ7IHRoaXMgY29uZmlybXMgdGhlIEZPUk1BVCBjbGF1c2Ug aXMgbmVpdGhlcgorLS0gaWdub3JlZCBub3IgdHJlYXRlZCBhcyBhbiBvcmRpbmFyeSBjYXN0LiAg QW4gdW5rbm93bi10eXBlIHNvdXJjZSBsaXRlcmFsIGlzCistLSBjb2VyY2VkIHRvIHRleHQgZmly c3QsIHNvIHRoZSBsb29rdXAga2V5IGlzICh0ZXh0LCB0YXJnZXQpLgorLS0gYmFzaWMgZm9ybSAo bG9va3MgdXAgYSBmb3JtYXR0ZXIgZm9yICh0ZXh0LCBpbnRlZ2VyKTsgbm9uZSBleGlzdHMpCitT RUxFQ1QgQ0FTVCgnNDInIEFTIGludGVnZXIgRk9STUFUICd3aGF0ZXZlcicpOworRVJST1I6ICBm b3JtYXR0ZXIgZm9yIGNhc3QgZnJvbSB0eXBlIHRleHQgdG8gdHlwZSBpbnRlZ2VyIGRvZXMgbm90 IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBDQVNUKCc0MicgQVMgaW50ZWdlciBGT1JNQVQgJ3doYXRl dmVyJyk7CiAgICAgICAgICAgICAgICBeCiBISU5UOiAgVXNlIENSRUFURSBGT1JNQVRURVIgdG8g ZGVmaW5lIGEgZm9ybWF0dGVyIGZvciB0aGlzIHR5cGUgcGFpci4KIC0tIHRoZSBmb3JtYXQgbWF5 IGJlIGEgZ2VuZXJhbCBleHByZXNzaW9uLCBub3QganVzdCBhIHN0cmluZyBsaXRlcmFsCi1TRUxF Q1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVknIHx8ICctTU0tREQnKTsK LUVSUk9SOiAgZm9ybWF0dGVyIGZvciBjYXN0IGZyb20gdHlwZSB0ZXh0IHRvIHR5cGUgZGF0ZSBk b2VzIG5vdCBleGlzdAotTElORSAxOiBTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBG T1JNQVQgJ1lZWVknIHx8ICctTU0tREQnKTsKK1NFTEVDVCBDQVNUKCc0MicgQVMgaW50ZWdlciBG T1JNQVQgJ3doYXQnIHx8ICdldmVyJyk7CitFUlJPUjogIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9t IHR5cGUgdGV4dCB0byB0eXBlIGludGVnZXIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMTogU0VMRUNU IENBU1QoJzQyJyBBUyBpbnRlZ2VyIEZPUk1BVCAnd2hhdCcgfHwgJ2V2ZXInKTsKICAgICAgICAg ICAgICAgIF4KIEhJTlQ6ICBVc2UgQ1JFQVRFIEZPUk1BVFRFUiB0byBkZWZpbmUgYSBmb3JtYXR0 ZXIgZm9yIHRoaXMgdHlwZSBwYWlyLgogLS0gYSBuby1vcC1sb29raW5nIGNhc3QgbXVzdCBub3Qg YmUgcmVsYWJlbGVkIGF3YXk7IGl0IG5lZWRzIGEgKHRleHQsIHRleHQpIGZvcm1hdHRlcgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JtYXR0ZXJzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9ybWF0dGVycy5vdXQKaW5kZXggNmE0N2YwMDdmMTIuLjJk MmNkNWQwMWZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcm1hdHRl cnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9ybWF0dGVycy5vdXQKQEAg LTU5LDcgKzU5LDkgQEAgQ1JFQVRFIEZVTkNUSU9OIGZtdF9iYWRfc2V0KGludGVnZXIsIHRleHQp IFJFVFVSTlMgU0VUT0YgdGV4dAogQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBB UyB0ZXh0KQogCVdJVEggRlVOQ1RJT04gZm10X2JhZF9zZXQoaW50ZWdlciwgdGV4dCk7CQktLSBz ZXQtcmV0dXJuaW5nIHJlamVjdGVkCiBFUlJPUjogIGZvcm1hdHRlciBmdW5jdGlvbiBtdXN0IG5v dCByZXR1cm4gYSBzZXQKLS0tIE5vIHBzZXVkby10eXBlcworLS0gTm8gcHNldWRvLXR5cGVzOiBh IGZvcm1hdHRlcidzIHNvdXJjZS90YXJnZXQgbWF5IG5vdCBiZSBhIHBzZXVkby10eXBlLCBzbwor LS0gQ1JFQVRFIEZPUk1BVFRFUiBvbiBhIHBvbHltb3JwaGljIChhbnllbGVtZW50KSBzb3VyY2Ug aXMgaW50ZW50aW9uYWxseQorLS0gcmVqZWN0ZWQuCiBDUkVBVEUgRlVOQ1RJT04gZm10X2FueWVs KGFueWVsZW1lbnQsIHRleHQpIFJFVFVSTlMgdGV4dAogCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUg QVMgJCQgU0VMRUNUICQyICQkOwogQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoYW55ZWxlbWVu dCBBUyB0ZXh0KQpAQCAtMzU3LDMgKzM1OSwyODEgQEAgU0VMRUNUIGNvdW50KCopIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdmb3JtYXR0ZXJfY2hhaW5fdmlldyc7CiAgICAgIDAKICgx IHJvdykKIAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJ1aWx0LWluIGZvcm1hdHRlcnM6IFNRTC1zdGFu ZGFyZC1zdHlsZSAoU1FMOjIwMTYvU1FMOjIwMjMpIGZvcm1hdHRlZCBjYXN0cworLS0gYmV0d2Vl biBjaGFyYWN0ZXItc3RyaW5nIGFuZCBkYXRldGltZSB0eXBlcywgcmVnaXN0ZXJlZCBpbiBwZ19m b3JtYXR0ZXIgYW5kCistLSByZWFjaGVkIHRocm91Z2ggQ29lcmNlVmlhRm9ybWF0dGVyIChubyBw YXJzZXIvYW5hbHl6ZXIgaGFyZC1jb2Rpbmcgb2YKKy0tIGZ1bmN0aW9uIG5hbWVzLCBhbmQgbm8g ZmFsbGJhY2sgdG8gb3JkaW5hcnkgY2FzdHMpLiAgVGhlIGJ1aWx0LWlucyByZXVzZQorLS0gUG9z dGdyZVNRTCdzIGV4aXN0aW5nIHRvX2NoYXIvdG9fZGF0ZS90b190aW1lc3RhbXAgdGVtcGxhdGUg ZW5naW5lOyB0aGV5IGRvCistLSBub3QgY2xhaW0gYnl0ZS1mb3ItYnl0ZSBjb25mb3JtYW5jZSB0 byBldmVyeSBTUUwtc3RhbmRhcmQgdGVtcGxhdGUgcnVsZS4KKy0tIEluY2x1ZGVkOiBkYXRlLCB0 aW1lc3RhbXAsIHRpbWVzdGFtcHR6IHdpdGggdGV4dC92YXJjaGFyL2JwY2hhciBvbiB0aGUgb3Ro ZXIKKy0tIHNpZGUuICBEZWZlcnJlZDogdGltZSwgdGltZXR6LCBudW1lcmljLCBpbnRlcnZhbCwg YW5kIGZ1bGwgc3RhbmRhcmQKKy0tIHRlbXBsYXRlLXRva2VuIGNvdmVyYWdlLgorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFBpbiB0aGUgdGltZSB6b25lIHNvIHRpbWVzdGFtcHR6IHJlc3VsdHMgYXJlIHN0 YWJsZSBhY3Jvc3MgbWFjaGluZXMuCitTRVQgVGltZVpvbmUgPSAnVVRDJzsKKy0tIHRleHQgLT4g ZGF0ZSAodGhlIHNvdXJjZSBpcyBhbiB1bmtub3duLXR5cGUgbGl0ZXJhbCBjb2VyY2VkIHRvIHRl eHQsIHNvIHRoaXMKKy0tIGFsc28gZXhlcmNpc2VzIFBhdGNoIDMncyB1bmtub3duIC0+IHRleHQg aGFuZGxpbmcpLgorU0VMRUNUIENBU1QoJzIwMjYtMDYtMjgnIEFTIGRhdGUgRk9STUFUICdZWVlZ LU1NLUREJyk7CisgICAgZGF0ZSAgICAKKy0tLS0tLS0tLS0tLQorIDIwMjYtMDYtMjgKKygxIHJv dykKKworLS0gdmFyY2hhciBzb3VyY2UgLT4gZGF0ZQorU0VMRUNUIENBU1QoJzIwMjYtMDYtMjgn Ojp2YXJjaGFyIEFTIGRhdGUgRk9STUFUICdZWVlZLU1NLUREJyk7CisgICAgZGF0ZSAgICAKKy0t LS0tLS0tLS0tLQorIDIwMjYtMDYtMjgKKygxIHJvdykKKworLS0gYnBjaGFyIHNvdXJjZSAtPiBk YXRlOiBhIENIQVIoMTApIGhvbGRzIHRoZSB2YWx1ZSBleGFjdGx5LCBhbmQgYSB3aWRlcgorLS0g Q0hBUigyMCkgcGFkcyB3aXRoIGJsYW5rcyB0aGF0IHRoZSBmb3JtYXR0ZXIgdHJpbXMgYmVmb3Jl IHBhcnNpbmcuCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yOCc6OmNoYXIoMTApIEFTIGRhdGUgRk9S TUFUICdZWVlZLU1NLUREJyk7CisgICAgZGF0ZSAgICAKKy0tLS0tLS0tLS0tLQorIDIwMjYtMDYt MjgKKygxIHJvdykKKworU0VMRUNUIENBU1QoJzIwMjYtMDYtMjgnOjpjaGFyKDIwKSBBUyBkYXRl IEZPUk1BVCAnWVlZWS1NTS1ERCcpOworICAgIGRhdGUgICAgCistLS0tLS0tLS0tLS0KKyAyMDI2 LTA2LTI4CisoMSByb3cpCisKKy0tIFRoZSBidWlsdC1pbiBmb3JtYXR0ZXIgZnVuY3Rpb25zIGFy ZSBTVFJJQ1Q6IGEgTlVMTCBzb3VyY2Ugb3IgYSBOVUxMIEZPUk1BVAorLS0gZXhwcmVzc2lvbiB5 aWVsZHMgTlVMTCB3aXRob3V0IGludm9raW5nIHRoZSBmb3JtYXR0ZXIuCitTRUxFQ1QgQ0FTVChO VUxMOjp0ZXh0IEFTIGRhdGUgRk9STUFUICdZWVlZLU1NLUREJykgSVMgTlVMTCBBUyBudWxsX3Ny YzsKKyBudWxsX3NyYyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCcy MDI2LTA2LTI4JyBBUyBkYXRlIEZPUk1BVCBOVUxMOjp0ZXh0KSBJUyBOVUxMIEFTIG51bGxfZm10 OworIG51bGxfZm10IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIENBU1QoTlVM TDo6ZGF0ZSBBUyB0ZXh0IEZPUk1BVCAnWVlZWS1NTS1ERCcpIElTIE5VTEwgQVMgbnVsbF9zcmNf b3V0OworIG51bGxfc3JjX291dCAKKy0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBk YXRlIC0+IHRleHQgLyB2YXJjaGFyCitTRUxFQ1QgQ0FTVChkYXRlICcyMDI2LTA2LTI4JyBBUyB0 ZXh0IEZPUk1BVCAnWVlZWS1NTS1ERCcpOworICAgIHRleHQgICAgCistLS0tLS0tLS0tLS0KKyAy MDI2LTA2LTI4CisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGRhdGUgJzIwMjYtMDYtMjgnIEFTIHZh cmNoYXIgRk9STUFUICdZWVlZLU1NLUREJyk7CisgIHZhcmNoYXIgICAKKy0tLS0tLS0tLS0tLQor IDIwMjYtMDYtMjgKKygxIHJvdykKKworLS0gZGF0ZSAtPiB2YXJjaGFyIHdpdGggYSB0eXBtb2Q6 IHRoZSBkZWNsYXJlZCBsZW5ndGggaXMgZW5mb3JjZWQgYnkgdGhlCistLSBvcmRpbmFyeSBjb2Vy Y2lvbiBsYXllcmVkIGFib3ZlIHRoZSBmb3JtYXR0ZXIgKGhlcmUgaXQgdHJ1bmNhdGVzIHRvIDcp LgorU0VMRUNUIENBU1QoZGF0ZSAnMjAyNi0wNi0yOCcgQVMgdmFyY2hhcig3KSBGT1JNQVQgJ1lZ WVktTU0tREQnKTsKKyB2YXJjaGFyIAorLS0tLS0tLS0tCisgMjAyNi0wNgorKDEgcm93KQorCist LSBkYXRlIC0+IGJwY2hhcjogQVMgY2hhcigxMikgcGFkcyB0byB0aGUgZGVjbGFyZWQgbGVuZ3Ro OyBiYXJlIEFTIGNoYXIgaXMKKy0tIGNoYXIoMSksIHNvIHRoZSBvcmRpbmFyeSBjb2VyY2lvbiB0 cnVuY2F0ZXMgdG8gb25lIGNoYXJhY3Rlci4gIFRoZSB3cmFwcGVyCistLSByZXR1cm5zIGEgdGV4 dCB2YXJsZW5hIHRoYXQgaXMgYSB2YWxpZCBicGNoYXIgdmFsdWUuCitTRUxFQ1QgQ0FTVChkYXRl ICcyMDI2LTA2LTI4JyBBUyBjaGFyKDEyKSBGT1JNQVQgJ1lZWVktTU0tREQnKTsKKyAgICBicGNo YXIgICAgCistLS0tLS0tLS0tLS0tLQorIDIwMjYtMDYtMjggIAorKDEgcm93KQorCitTRUxFQ1Qg Q0FTVChkYXRlICcyMDI2LTA2LTI4JyBBUyBjaGFyIEZPUk1BVCAnWVlZWS1NTS1ERCcpOworIGJw Y2hhciAKKy0tLS0tLS0tCisgMgorKDEgcm93KQorCistLSBDb2xsYXRpb246IGEgZm9ybWF0dGVk IGNhc3QgaXMgY29sbGF0ZWQgbGlrZSB0aGUgZnVuY3Rpb24gY2FsbCBpdCBleGVjdXRlcy4KKy0t IEEgY29sbGF0YWJsZSByZXN1bHQgdHlwZSAodGV4dCkgbXVzdCBnZXQgYSByZWFsIHJlc3VsdCBj b2xsYXRpb24sIG5vdAorLS0gSW52YWxpZE9pZDsgImNvbGxhdGlvbiBmb3IiIHJlcG9ydHMgImRl ZmF1bHQiIChpdCB3b3VsZCBiZSBOVUxMIGlmIHRoZQorLS0gcmVzdWx0IGNvbGxhdGlvbiB3ZXJl IHVuc2V0KSwgYW5kIGFuIGV4cGxpY2l0IENPTExBVEUgb24gdGhlIHJlc3VsdCB3b3Jrcy4KK1NF TEVDVCBwZ19jb2xsYXRpb25fZm9yKENBU1QoZGF0ZSAnMjAyNi0wNi0yOCcgQVMgdGV4dCBGT1JN QVQgJ1lZWVktTU0tREQnKSk7CisgcGdfY29sbGF0aW9uX2ZvciAKKy0tLS0tLS0tLS0tLS0tLS0t LQorICJkZWZhdWx0IgorKDEgcm93KQorCitTRUxFQ1QgcGdfY29sbGF0aW9uX2ZvcihDQVNUKGRh dGUgJzIwMjYtMDYtMjgnIEFTIHRleHQgRk9STUFUICdZWVlZLU1NLUREJykgQ09MTEFURSAiQyIp OworIHBnX2NvbGxhdGlvbl9mb3IgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAiQyIKKygxIHJvdykK KworLS0gQW4gZXhwbGljaXQgQ09MTEFURSBvbiB0aGUgRk9STUFUIGFyZ3VtZW50IGZsb3dzIGlu IGFzIHRoZSBpbnB1dCBjb2xsYXRpb24uCitTRUxFQ1QgcGdfY29sbGF0aW9uX2ZvcihDQVNUKGRh dGUgJzIwMjYtMDYtMjgnIEFTIHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9S TUFUICdZWVlZLU1NLUREJzo6dGV4dCBDT0xMQVRFICJDIikpOworIHBnX2NvbGxhdGlvbl9mb3Ig CistLS0tLS0tLS0tLS0tLS0tLS0KKyAiQyIKKygxIHJvdykKKworLS0gdGltZXN0YW1wIHdpdGhv dXQgdGltZSB6b25lLCBib3RoIGRpcmVjdGlvbnMKK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4IDEz OjQ1OjMwJyBBUyB0aW1lc3RhbXAgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MnKTsKKyAg ICAgIHRpbWVzdGFtcCAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMjAyNi0wNi0yOCAx Mzo0NTozMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCh0aW1lc3RhbXAgJzIwMjYtMDYtMjggMTM6 NDU6MzAnIEFTIHRleHQgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MnKTsKKyAgICAgICAg dGV4dCAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMjAyNi0wNi0yOCAxMzo0NToz MAorKDEgcm93KQorCistLSBhIGRhdGUtb25seSB0ZW1wbGF0ZSBpcyB3aWRlbmVkIHRvIHRpbWVz dGFtcCAobWlkbmlnaHQpCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yOCcgQVMgdGltZXN0YW1wIEZP Uk1BVCAnWVlZWS1NTS1ERCcpOworICAgICAgdGltZXN0YW1wICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAyMDI2LTA2LTI4IDAwOjAwOjAwCisoMSByb3cpCisKKy0tIFRoZSBidWlsdC1p bnMgcmV1c2UgUG9zdGdyZVNRTCdzIGV4aXN0aW5nIGZvcm1hdHRpbmcgcGFyc2VyOiBhIHRlbXBs YXRlIHdpdGgKKy0tIG5vIHRpbWUtem9uZSBmaWVsZCBjb25zdW1lcyBvbmx5IHRoZSBmaWVsZHMg aXQgbmFtZXMsIHNvIGEgdHJhaWxpbmcgdGltZSB6b25lCistLSBpbiB0aGUgaW5wdXQgaXMgc2lt cGx5IGlnbm9yZWQgKGV4aXN0aW5nIHRvX3RpbWVzdGFtcCgpIGJlaGF2aW9yLCB1bmNoYW5nZWQp LgorU0VMRUNUIENBU1QoJzIwMjYtMDYtMjggMTM6NDU6MzArMDUnIEFTIHRpbWVzdGFtcCBGT1JN QVQgJ1lZWVktTU0tREQgSEgyNDpNSTpTUycpOworICAgICAgdGltZXN0YW1wICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAyMDI2LTA2LTI4IDEzOjQ1OjMwCisoMSByb3cpCisKKy0tIEJ1 dCBhIHRlbXBsYXRlIHRoYXQgZXhwbGljaXRseSBjb250YWlucyBhIHRpbWUtem9uZSBmaWVsZCBp cyByZWplY3RlZCBmb3IgYQorLS0gdGltZXN0YW1wLXdpdGhvdXQtdGltZS16b25lIHRhcmdldCAo d2UgbXVzdCBub3QgZm9sZCBhIHpvbmUgaW50byBhIHpvbmVsZXNzCistLSByZXN1bHQgdmlhIHRo ZSBzZXNzaW9uIFRpbWVab25lKS4KK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4IDEzOjQ1OjMwKzA1 JyBBUyB0aW1lc3RhbXAgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MgVFpIJyk7CitFUlJP UjogIEZPUk1BVCB0ZW1wbGF0ZSBmb3IgYSBjYXN0IHRvIHRpbWVzdGFtcCB3aXRob3V0IHRpbWUg em9uZSBtdXN0IG5vdCBzcGVjaWZ5IGEgdGltZSB6b25lCistLSB0aW1lc3RhbXAgV0lUSE9VVCB0 aW1lIHpvbmUgbXVzdCBub3QgZGVwZW5kIG9uIHRoZSBzZXNzaW9uIFRpbWVab25lOiB0aGUgc2Ft ZQorLS0gKHVuem9uZWQpIGlucHV0L3RlbXBsYXRlIHlpZWxkcyB0aGUgc2FtZSB3YWxsLWNsb2Nr IHZhbHVlIHVuZGVyIGFueSB6b25lLgorU0VUIFRpbWVab25lID0gJ0FtZXJpY2EvTG9zX0FuZ2Vs ZXMnOworU0VMRUNUIENBU1QoJzIwMjYtMDYtMjggMTM6NDU6MzAnIEFTIHRpbWVzdGFtcCBGT1JN QVQgJ1lZWVktTU0tREQgSEgyNDpNSTpTUycpOworICAgICAgdGltZXN0YW1wICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAyMDI2LTA2LTI4IDEzOjQ1OjMwCisoMSByb3cpCisKK1NFVCBU aW1lWm9uZSA9ICdVVEMnOworU0VMRUNUIENBU1QoJzIwMjYtMDYtMjggMTM6NDU6MzAnIEFTIHRp bWVzdGFtcCBGT1JNQVQgJ1lZWVktTU0tREQgSEgyNDpNSTpTUycpOworICAgICAgdGltZXN0YW1w ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyMDI2LTA2LTI4IDEzOjQ1OjMwCisoMSBy b3cpCisKKy0tIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwgYm90aCBkaXJlY3Rpb25zIChUaW1l Wm9uZSBpcyBVVEMsIHNldCBhYm92ZSkKK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4IDEzOjQ1OjMw ICswMCcgQVMgdGltZXN0YW1wdHogRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MgVFpIJyk7 CisgICAgICB0aW1lc3RhbXB0eiAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIw MjYtMDYtMjggMTM6NDU6MzArMDAKKygxIHJvdykKKworU0VMRUNUIENBU1QodGltZXN0YW1wdHog JzIwMjYtMDYtMjggMTM6NDU6MzArMDAnIEFTIHRleHQgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6 TUk6U1MgVFpIJyk7CisgICAgICAgICAgdGV4dCAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgMjAyNi0wNi0yOCAxMzo0NTozMCArMDAKKygxIHJvdykKKworLS0gQSBzYW1w bGluZyBvZiBTUUwtc3RhbmRhcmQtc3R5bGUgZGF0ZXRpbWUgdGVtcGxhdGUgdG9rZW5zLCBleGVy Y2lzZWQgdGhyb3VnaAorLS0gdGhlIGV4aXN0aW5nIHRvX2NoYXIvdG9fdGltZXN0YW1wIGVuZ2lu ZS4gIFRaTSBhbmQgU1NTU1MgYXJlIHN1cHBvcnRlZCBoZXJlOworLS0gdGhpcyBpcyBub3QgZXho YXVzdGl2ZSBzdGFuZGFyZC10b2tlbiBjb3ZlcmFnZS4KK1NFTEVDVCBDQVNUKHRpbWVzdGFtcHR6 ICcyMDI2LTA2LTI4IDEzOjQ1OjMwKzAwJyBBUyB0ZXh0CisgICAgICAgICAgICBGT1JNQVQgJ1lZ WVktTU0tREQiVCJISDI0Ok1JOlNTIFRaSDpUWk0nKTsKKyAgICAgICAgICAgIHRleHQgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyMDI2LTA2LTI4VDEzOjQ1OjMw ICswMDowMAorKDEgcm93KQorCitTRUxFQ1QgQ0FTVCh0aW1lc3RhbXAgJzIwMjYtMDYtMjggMTM6 NDU6MzAnIEFTIHRleHQgRk9STUFUICdTU1NTUycpOworIHRleHQgIAorLS0tLS0tLQorIDQ5NTMw CisoMSByb3cpCisKKy0tIEZyYWN0aW9uYWwgc2Vjb25kcyAoRkZuKSBhcmUgYWNjZXB0ZWQgYnkg dG9fY2hhciBpbiB0aGUgb3V0cHV0IGRpcmVjdGlvbi4KK1NFTEVDVCBDQVNUKHRpbWVzdGFtcCAn MjAyNi0wNi0yOCAxMzo0NTozMC4xMjM0NTYnIEFTIHRleHQKKyAgICAgICAgICAgIEZPUk1BVCAn SEgyNDpNSTpTUy5GRjYnKTsKKyAgICAgIHRleHQgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLQor IDEzOjQ1OjMwLjEyMzQ1NgorKDEgcm93KQorCistLSBFbXB0eSBGT1JNQVQgdGVtcGxhdGU6IHN0 YWJsZSwgbmV2ZXIgYSBjcmFzaC4gIEluIHRoZSBwYXJzZSBkaXJlY3Rpb24gdGhlCistLSB1bmRl cmx5aW5nIHRvX2RhdGUoKSBlbmdpbmUgcGFyc2VzIG5vIGZpZWxkcyBhbmQgcmV0dXJucyB0aGUg YWxsLWRlZmF1bHRzCistLSBkYXRlOyBpbiB0aGUgZm9ybWF0IGRpcmVjdGlvbiB0aGUgd3JhcHBl cnMgbWlycm9yIHRvX2NoYXIodmFsdWUsICcnKSwgd2hpY2gKKy0tIGlzIE5VTEwuCitTRUxFQ1Qg Q0FTVCgnMjAyNi0wNi0yOCcgQVMgZGF0ZSBGT1JNQVQgJycpOworICAgICBkYXRlICAgICAgCist LS0tLS0tLS0tLS0tLS0KKyAwMDAxLTAxLTAxIEJDCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKGRh dGUgJzIwMjYtMDYtMjgnIEFTIHRleHQgRk9STUFUICcnKSBJUyBOVUxMIEFTIGVtcHR5X2ZtdF9v dXQ7CisgZW1wdHlfZm10X291dCAKKy0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0g VGhlIEZPUk1BVCBjbGF1c2UgcmVtYWlucyBhIFBvc3RncmVTUUwgZXh0ZW5zaW9uOiBpdCBtYXkg YmUgYW55IGV4cHJlc3Npb24KKy0tIGNvZXJjaWJsZSB0byB0ZXh0LCBub3QganVzdCBhIHN0cmlu ZyBsaXRlcmFsLgorU0VMRUNUIENBU1QoJzIwMjYtJyB8fCAnMDYtMjgnIEFTIGRhdGUgRk9STUFU ICdZWVlZLScgfHwgJ01NLUREJyk7CisgICAgZGF0ZSAgICAKKy0tLS0tLS0tLS0tLQorIDIwMjYt MDYtMjgKKygxIHJvdykKKworLS0gQSBGT1JNQVQgY2xhdXNlIG5ldmVyIGZhbGxzIGJhY2sgdG8g YW4gb3JkaW5hcnkgY2FzdDogYW4gaW50ZWdlciAtPiBkYXRlCistLSBwYWlyIGhhcyBubyBmb3Jt YXR0ZXIgKGFuZCBubyBvcmRpbmFyeSBjYXN0KSwgc28gaXQgZXJyb3JzLgorU0VMRUNUIENBU1Qo NSBBUyBkYXRlIEZPUk1BVCAnWVlZWScpOworRVJST1I6ICBmb3JtYXR0ZXIgZm9yIGNhc3QgZnJv bSB0eXBlIGludGVnZXIgdG8gdHlwZSBkYXRlIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVD VCBDQVNUKDUgQVMgZGF0ZSBGT1JNQVQgJ1lZWVknKTsKKyAgICAgICAgICAgICAgIF4KK0hJTlQ6 ICBVc2UgQ1JFQVRFIEZPUk1BVFRFUiB0byBkZWZpbmUgYSBmb3JtYXR0ZXIgZm9yIHRoaXMgdHlw ZSBwYWlyLgorLS0gQSBidWlsdC1pbiBmb3JtYXR0ZXIgb2NjdXBpZXMgaXRzIChzb3VyY2UsIHRh cmdldCkgcGFpciwgc28gYSB1c2VyCistLSBDUkVBVEUgRk9STUFUVEVSIGZvciB0aGUgc2FtZSBw YWlyIGZhaWxzIHdpdGggdGhlIHVzdWFsIGR1cGxpY2F0ZSBlcnJvci4KK0NSRUFURSBGVU5DVElP TiBteV90ZXh0X3RvX2RhdGUodGV4dCwgdGV4dCkgUkVUVVJOUyBkYXRlCisJTEFOR1VBR0Ugc3Fs IElNTVVUQUJMRSBSRVRVUk4gdG9fZGF0ZSgkMSwgJDIpOworQ1JFQVRFIEZPUk1BVFRFUiBGT1Ig Q0FTVCAodGV4dCBBUyBkYXRlKQorCVdJVEggRlVOQ1RJT04gbXlfdGV4dF90b19kYXRlKHRleHQs IHRleHQpOwkJLS0gZmFpbHM6IGFscmVhZHkgZXhpc3RzCitFUlJPUjogIGZvcm1hdHRlciBmb3Ig Y2FzdCBmcm9tIHR5cGUgdGV4dCB0byB0eXBlIGRhdGUgYWxyZWFkeSBleGlzdHMKK0RST1AgRlVO Q1RJT04gbXlfdGV4dF90b19kYXRlKHRleHQsIHRleHQpOworLS0gQnVpbHQtaW4gZm9ybWF0dGVy IHJvd3MgYXJlIHN5c3RlbSBvYmplY3RzICh0aGVpciBPSURzIGFyZSBpbiB0aGUgcGlubmVkCist LSByYW5nZSksIHNvIHRoZXkgY2Fubm90IGJlIGRyb3BwZWQuCitEUk9QIEZPUk1BVFRFUiBGT1Ig Q0FTVCAodGV4dCBBUyBkYXRlKTsJCQkJLS0gZmFpbHM6IHBpbm5lZCBzeXN0ZW0gb2JqZWN0CitF UlJPUjogIGNhbm5vdCBkcm9wIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIHRleHQgdG8gZGF0ZSBi ZWNhdXNlIGl0IGlzIHJlcXVpcmVkIGJ5IHRoZSBkYXRhYmFzZSBzeXN0ZW0KKy0tIEEgdmlldyBv dmVyIGEgYnVpbHQtaW4gZm9ybWF0dGVkIGNhc3QgZGVwYXJzZXMgYmFjayB0byBDQVNUKC4uLiBG T1JNQVQgLi4uKS4KK0NSRUFURSBWSUVXIGJ1aWx0aW5fZm9ybWF0dGVyX3ZpZXcgQVMKKwlTRUxF Q1QgQ0FTVCgnMjAyNi0wNi0yOCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVktTU0tREQnKSBBUyBkOwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCdidWlsdGluX2Zvcm1hdHRlcl92aWV3Jzo6cmVnY2xhc3Ms IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBD QVNUKCcyMDI2LTA2LTI4Jzo6dGV4dCBBUyBkYXRlIEZPUk1BVCAnWVlZWS1NTS1ERCc6OnRleHQp IEFTIGQ7CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gYnVpbHRpbl9mb3JtYXR0ZXJfdmlldzsK KyAgICAgZCAgICAgIAorLS0tLS0tLS0tLS0tCisgMjAyNi0wNi0yOAorKDEgcm93KQorCitEUk9Q IFZJRVcgYnVpbHRpbl9mb3JtYXR0ZXJfdmlldzsKKy0tIFBhdGNoIDMgYWRkZWQgYSBuZXcgZXhw cmVzc2lvbiBub2RlOyBtYWtlIHN1cmUgcXVlcnkganVtYmxpbmcgaGFuZGxlcyBpdC4KK1NFVCBj b21wdXRlX3F1ZXJ5X2lkID0gb247CitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yOCcgQVMgZGF0ZSBG T1JNQVQgJ1lZWVktTU0tREQnKTsKKyAgICBkYXRlICAgIAorLS0tLS0tLS0tLS0tCisgMjAyNi0w Ni0yOAorKDEgcm93KQorCitSRVNFVCBjb21wdXRlX3F1ZXJ5X2lkOworUkVTRVQgVGltZVpvbmU7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHByZXNzaW9ucy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9leHByZXNzaW9ucy5zcWwKaW5kZXggNDY1NzViYzQxMGQuLjY3YWVm NDI5Mzk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHByZXNzaW9ucy5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwcmVzc2lvbnMuc3FsCkBAIC0zMDYsMTcgKzMw NiwxOCBAQCByb2xsYmFjazsKIC0tIENBU1QoZXhwciBBUyB0eXBlIEZPUk1BVCBmb3JtYXRfZXhw cikKIC0tCiAtLSBBIEZPUk1BVCBjbGF1c2UgaXMgcmVzb2x2ZWQgdGhyb3VnaCBhIHJlZ2lzdGVy ZWQgZm9ybWF0dGVyIChzZWUgQ1JFQVRFCi0tLSBGT1JNQVRURVIpIGFuZCBuZXZlciBmYWxscyBi YWNrIHRvIGFuIG9yZGluYXJ5IGNhc3QuICBObyBmb3JtYXR0ZXJzIGFyZQotLS0gZGVmaW5lZCBp biB0aGlzIHRlc3QsIHNvIHRoZXNlIGNhc3RzIGZhaWwgd2l0aCBhIG1pc3NpbmctZm9ybWF0dGVy IGVycm9yOwotLS0gdGhpcyBjb25maXJtcyB0aGUgRk9STUFUIGNsYXVzZSBpcyBuZWl0aGVyIGln bm9yZWQgbm9yIHRyZWF0ZWQgYXMgYW4KLS0tIG9yZGluYXJ5IGNhc3QuICBBbiB1bmtub3duLXR5 cGUgc291cmNlIGxpdGVyYWwgaXMgY29lcmNlZCB0byB0ZXh0IGZpcnN0LAotLS0gc28gdGhlIGxv b2t1cCBrZXkgaXMgKHRleHQsIHRhcmdldCkuCistLSBGT1JNQVRURVIpIGFuZCBuZXZlciBmYWxs cyBiYWNrIHRvIGFuIG9yZGluYXJ5IGNhc3QuICBUaGUgdHlwZSBwYWlycyB1c2VkCistLSBoZXJl IGhhdmUgbm8gZm9ybWF0dGVyICh0aGUgYnVpbHQtaW4gZm9ybWF0dGVycyBjb3ZlciBkYXRldGlt ZS9zdHJpbmcgcGFpcnMsCistLSBub3QgdGhlc2UpLCBzbyB0aGVzZSBjYXN0cyBmYWlsIHdpdGgg YSBtaXNzaW5nLWZvcm1hdHRlciBlcnJvciBldmVuIHRob3VnaCBhbgorLS0gb3JkaW5hcnkgY2Fz dCB3b3VsZCBzdWNjZWVkOyB0aGlzIGNvbmZpcm1zIHRoZSBGT1JNQVQgY2xhdXNlIGlzIG5laXRo ZXIKKy0tIGlnbm9yZWQgbm9yIHRyZWF0ZWQgYXMgYW4gb3JkaW5hcnkgY2FzdC4gIEFuIHVua25v d24tdHlwZSBzb3VyY2UgbGl0ZXJhbCBpcworLS0gY29lcmNlZCB0byB0ZXh0IGZpcnN0LCBzbyB0 aGUgbG9va3VwIGtleSBpcyAodGV4dCwgdGFyZ2V0KS4KIAotLS0gYmFzaWMgZm9ybSAobG9va3Mg dXAgYSBmb3JtYXR0ZXIgZm9yICh0ZXh0LCBkYXRlKSkKLVNFTEVDVCBDQVNUKCcyMDI2LTA2LTI0 JyBBUyBkYXRlIEZPUk1BVCAnWVlZWS1NTS1ERCcpOworLS0gYmFzaWMgZm9ybSAobG9va3MgdXAg YSBmb3JtYXR0ZXIgZm9yICh0ZXh0LCBpbnRlZ2VyKTsgbm9uZSBleGlzdHMpCitTRUxFQ1QgQ0FT VCgnNDInIEFTIGludGVnZXIgRk9STUFUICd3aGF0ZXZlcicpOwogCiAtLSB0aGUgZm9ybWF0IG1h eSBiZSBhIGdlbmVyYWwgZXhwcmVzc2lvbiwgbm90IGp1c3QgYSBzdHJpbmcgbGl0ZXJhbAotU0VM RUNUIENBU1QoJzIwMjYtMDYtMjQnIEFTIGRhdGUgRk9STUFUICdZWVlZJyB8fCAnLU1NLUREJyk7 CitTRUxFQ1QgQ0FTVCgnNDInIEFTIGludGVnZXIgRk9STUFUICd3aGF0JyB8fCAnZXZlcicpOwog CiAtLSBhIG5vLW9wLWxvb2tpbmcgY2FzdCBtdXN0IG5vdCBiZSByZWxhYmVsZWQgYXdheTsgaXQg bmVlZHMgYSAodGV4dCwgdGV4dCkgZm9ybWF0dGVyCiBTRUxFQ1QgQ0FTVCgnYWJjJzo6dGV4dCBB UyB0ZXh0IEZPUk1BVCAnd2hhdGV2ZXInKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2Zvcm1hdHRlcnMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9ybWF0dGVycy5zcWwK aW5kZXggMmM5YjQzNTE2NTIuLjlhZDhlOTJjNDJiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9mb3JtYXR0ZXJzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JtYXR0 ZXJzLnNxbApAQCAtNTQsNyArNTQsOSBAQCBDUkVBVEUgRlVOQ1RJT04gZm10X2JhZF9zZXQoaW50 ZWdlciwgdGV4dCkgUkVUVVJOUyBTRVRPRiB0ZXh0CiBDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNU IChpbnRlZ2VyIEFTIHRleHQpCiAJV0lUSCBGVU5DVElPTiBmbXRfYmFkX3NldChpbnRlZ2VyLCB0 ZXh0KTsJCS0tIHNldC1yZXR1cm5pbmcgcmVqZWN0ZWQKIAotLS0gTm8gcHNldWRvLXR5cGVzCist LSBObyBwc2V1ZG8tdHlwZXM6IGEgZm9ybWF0dGVyJ3Mgc291cmNlL3RhcmdldCBtYXkgbm90IGJl IGEgcHNldWRvLXR5cGUsIHNvCistLSBDUkVBVEUgRk9STUFUVEVSIG9uIGEgcG9seW1vcnBoaWMg KGFueWVsZW1lbnQpIHNvdXJjZSBpcyBpbnRlbnRpb25hbGx5CistLSByZWplY3RlZC4KIENSRUFU RSBGVU5DVElPTiBmbXRfYW55ZWwoYW55ZWxlbWVudCwgdGV4dCkgUkVUVVJOUyB0ZXh0CiAJTEFO R1VBR0Ugc3FsIElNTVVUQUJMRSBBUyAkJCBTRUxFQ1QgJDIgJCQ7CiBDUkVBVEUgRk9STUFUVEVS IEZPUiBDQVNUIChhbnllbGVtZW50IEFTIHRleHQpCkBAIC0yMzYsMyArMjM4LDEzMCBAQCBEUk9Q IEZVTkNUSU9OIGkydF9jaGFpbihpbnRlZ2VyLCB0ZXh0KSBDQVNDQURFOwkJCS0tIGRyb3BzIGZv cm1hdHRlciBhbmQgdmlldwogU0VMRUNUIGNvdW50KCopIEZST00gcGdfZm9ybWF0dGVyCiAJV0hF UkUgZm10c291cmNlID0gJ2ludGVnZXInOjpyZWd0eXBlIEFORCBmbXR0YXJnZXQgPSAndGV4dCc6 OnJlZ3R5cGU7CiBTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0g J2Zvcm1hdHRlcl9jaGFpbl92aWV3JzsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEJ1aWx0LWluIGZv cm1hdHRlcnM6IFNRTC1zdGFuZGFyZC1zdHlsZSAoU1FMOjIwMTYvU1FMOjIwMjMpIGZvcm1hdHRl ZCBjYXN0cworLS0gYmV0d2VlbiBjaGFyYWN0ZXItc3RyaW5nIGFuZCBkYXRldGltZSB0eXBlcywg cmVnaXN0ZXJlZCBpbiBwZ19mb3JtYXR0ZXIgYW5kCistLSByZWFjaGVkIHRocm91Z2ggQ29lcmNl VmlhRm9ybWF0dGVyIChubyBwYXJzZXIvYW5hbHl6ZXIgaGFyZC1jb2Rpbmcgb2YKKy0tIGZ1bmN0 aW9uIG5hbWVzLCBhbmQgbm8gZmFsbGJhY2sgdG8gb3JkaW5hcnkgY2FzdHMpLiAgVGhlIGJ1aWx0 LWlucyByZXVzZQorLS0gUG9zdGdyZVNRTCdzIGV4aXN0aW5nIHRvX2NoYXIvdG9fZGF0ZS90b190 aW1lc3RhbXAgdGVtcGxhdGUgZW5naW5lOyB0aGV5IGRvCistLSBub3QgY2xhaW0gYnl0ZS1mb3It Ynl0ZSBjb25mb3JtYW5jZSB0byBldmVyeSBTUUwtc3RhbmRhcmQgdGVtcGxhdGUgcnVsZS4KKy0t IEluY2x1ZGVkOiBkYXRlLCB0aW1lc3RhbXAsIHRpbWVzdGFtcHR6IHdpdGggdGV4dC92YXJjaGFy L2JwY2hhciBvbiB0aGUgb3RoZXIKKy0tIHNpZGUuICBEZWZlcnJlZDogdGltZSwgdGltZXR6LCBu dW1lcmljLCBpbnRlcnZhbCwgYW5kIGZ1bGwgc3RhbmRhcmQKKy0tIHRlbXBsYXRlLXRva2VuIGNv dmVyYWdlLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBpbiB0aGUgdGltZSB6b25lIHNvIHRpbWVzdGFt cHR6IHJlc3VsdHMgYXJlIHN0YWJsZSBhY3Jvc3MgbWFjaGluZXMuCitTRVQgVGltZVpvbmUgPSAn VVRDJzsKKworLS0gdGV4dCAtPiBkYXRlICh0aGUgc291cmNlIGlzIGFuIHVua25vd24tdHlwZSBs aXRlcmFsIGNvZXJjZWQgdG8gdGV4dCwgc28gdGhpcworLS0gYWxzbyBleGVyY2lzZXMgUGF0Y2gg MydzIHVua25vd24gLT4gdGV4dCBoYW5kbGluZykuCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yOCcg QVMgZGF0ZSBGT1JNQVQgJ1lZWVktTU0tREQnKTsKKy0tIHZhcmNoYXIgc291cmNlIC0+IGRhdGUK K1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4Jzo6dmFyY2hhciBBUyBkYXRlIEZPUk1BVCAnWVlZWS1N TS1ERCcpOworLS0gYnBjaGFyIHNvdXJjZSAtPiBkYXRlOiBhIENIQVIoMTApIGhvbGRzIHRoZSB2 YWx1ZSBleGFjdGx5LCBhbmQgYSB3aWRlcgorLS0gQ0hBUigyMCkgcGFkcyB3aXRoIGJsYW5rcyB0 aGF0IHRoZSBmb3JtYXR0ZXIgdHJpbXMgYmVmb3JlIHBhcnNpbmcuCitTRUxFQ1QgQ0FTVCgnMjAy Ni0wNi0yOCc6OmNoYXIoMTApIEFTIGRhdGUgRk9STUFUICdZWVlZLU1NLUREJyk7CitTRUxFQ1Qg Q0FTVCgnMjAyNi0wNi0yOCc6OmNoYXIoMjApIEFTIGRhdGUgRk9STUFUICdZWVlZLU1NLUREJyk7 CisKKy0tIFRoZSBidWlsdC1pbiBmb3JtYXR0ZXIgZnVuY3Rpb25zIGFyZSBTVFJJQ1Q6IGEgTlVM TCBzb3VyY2Ugb3IgYSBOVUxMIEZPUk1BVAorLS0gZXhwcmVzc2lvbiB5aWVsZHMgTlVMTCB3aXRo b3V0IGludm9raW5nIHRoZSBmb3JtYXR0ZXIuCitTRUxFQ1QgQ0FTVChOVUxMOjp0ZXh0IEFTIGRh dGUgRk9STUFUICdZWVlZLU1NLUREJykgSVMgTlVMTCBBUyBudWxsX3NyYzsKK1NFTEVDVCBDQVNU KCcyMDI2LTA2LTI4JyBBUyBkYXRlIEZPUk1BVCBOVUxMOjp0ZXh0KSBJUyBOVUxMIEFTIG51bGxf Zm10OworU0VMRUNUIENBU1QoTlVMTDo6ZGF0ZSBBUyB0ZXh0IEZPUk1BVCAnWVlZWS1NTS1ERCcp IElTIE5VTEwgQVMgbnVsbF9zcmNfb3V0OworCistLSBkYXRlIC0+IHRleHQgLyB2YXJjaGFyCitT RUxFQ1QgQ0FTVChkYXRlICcyMDI2LTA2LTI4JyBBUyB0ZXh0IEZPUk1BVCAnWVlZWS1NTS1ERCcp OworU0VMRUNUIENBU1QoZGF0ZSAnMjAyNi0wNi0yOCcgQVMgdmFyY2hhciBGT1JNQVQgJ1lZWVkt TU0tREQnKTsKKy0tIGRhdGUgLT4gdmFyY2hhciB3aXRoIGEgdHlwbW9kOiB0aGUgZGVjbGFyZWQg bGVuZ3RoIGlzIGVuZm9yY2VkIGJ5IHRoZQorLS0gb3JkaW5hcnkgY29lcmNpb24gbGF5ZXJlZCBh Ym92ZSB0aGUgZm9ybWF0dGVyIChoZXJlIGl0IHRydW5jYXRlcyB0byA3KS4KK1NFTEVDVCBDQVNU KGRhdGUgJzIwMjYtMDYtMjgnIEFTIHZhcmNoYXIoNykgRk9STUFUICdZWVlZLU1NLUREJyk7Cist LSBkYXRlIC0+IGJwY2hhcjogQVMgY2hhcigxMikgcGFkcyB0byB0aGUgZGVjbGFyZWQgbGVuZ3Ro OyBiYXJlIEFTIGNoYXIgaXMKKy0tIGNoYXIoMSksIHNvIHRoZSBvcmRpbmFyeSBjb2VyY2lvbiB0 cnVuY2F0ZXMgdG8gb25lIGNoYXJhY3Rlci4gIFRoZSB3cmFwcGVyCistLSByZXR1cm5zIGEgdGV4 dCB2YXJsZW5hIHRoYXQgaXMgYSB2YWxpZCBicGNoYXIgdmFsdWUuCitTRUxFQ1QgQ0FTVChkYXRl ICcyMDI2LTA2LTI4JyBBUyBjaGFyKDEyKSBGT1JNQVQgJ1lZWVktTU0tREQnKTsKK1NFTEVDVCBD QVNUKGRhdGUgJzIwMjYtMDYtMjgnIEFTIGNoYXIgRk9STUFUICdZWVlZLU1NLUREJyk7CisKKy0t IENvbGxhdGlvbjogYSBmb3JtYXR0ZWQgY2FzdCBpcyBjb2xsYXRlZCBsaWtlIHRoZSBmdW5jdGlv biBjYWxsIGl0IGV4ZWN1dGVzLgorLS0gQSBjb2xsYXRhYmxlIHJlc3VsdCB0eXBlICh0ZXh0KSBt dXN0IGdldCBhIHJlYWwgcmVzdWx0IGNvbGxhdGlvbiwgbm90CistLSBJbnZhbGlkT2lkOyAiY29s bGF0aW9uIGZvciIgcmVwb3J0cyAiZGVmYXVsdCIgKGl0IHdvdWxkIGJlIE5VTEwgaWYgdGhlCist LSByZXN1bHQgY29sbGF0aW9uIHdlcmUgdW5zZXQpLCBhbmQgYW4gZXhwbGljaXQgQ09MTEFURSBv biB0aGUgcmVzdWx0IHdvcmtzLgorU0VMRUNUIHBnX2NvbGxhdGlvbl9mb3IoQ0FTVChkYXRlICcy MDI2LTA2LTI4JyBBUyB0ZXh0IEZPUk1BVCAnWVlZWS1NTS1ERCcpKTsKK1NFTEVDVCBwZ19jb2xs YXRpb25fZm9yKENBU1QoZGF0ZSAnMjAyNi0wNi0yOCcgQVMgdGV4dCBGT1JNQVQgJ1lZWVktTU0t REQnKSBDT0xMQVRFICJDIik7CistLSBBbiBleHBsaWNpdCBDT0xMQVRFIG9uIHRoZSBGT1JNQVQg YXJndW1lbnQgZmxvd3MgaW4gYXMgdGhlIGlucHV0IGNvbGxhdGlvbi4KK1NFTEVDVCBwZ19jb2xs YXRpb25fZm9yKENBU1QoZGF0ZSAnMjAyNi0wNi0yOCcgQVMgdGV4dAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGT1JNQVQgJ1lZWVktTU0tREQnOjp0ZXh0IENPTExBVEUgIkMiKSk7CisK Ky0tIHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSwgYm90aCBkaXJlY3Rpb25zCitTRUxFQ1Qg Q0FTVCgnMjAyNi0wNi0yOCAxMzo0NTozMCcgQVMgdGltZXN0YW1wIEZPUk1BVCAnWVlZWS1NTS1E RCBISDI0Ok1JOlNTJyk7CitTRUxFQ1QgQ0FTVCh0aW1lc3RhbXAgJzIwMjYtMDYtMjggMTM6NDU6 MzAnIEFTIHRleHQgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MnKTsKKy0tIGEgZGF0ZS1v bmx5IHRlbXBsYXRlIGlzIHdpZGVuZWQgdG8gdGltZXN0YW1wIChtaWRuaWdodCkKK1NFTEVDVCBD QVNUKCcyMDI2LTA2LTI4JyBBUyB0aW1lc3RhbXAgRk9STUFUICdZWVlZLU1NLUREJyk7CistLSBU aGUgYnVpbHQtaW5zIHJldXNlIFBvc3RncmVTUUwncyBleGlzdGluZyBmb3JtYXR0aW5nIHBhcnNl cjogYSB0ZW1wbGF0ZSB3aXRoCistLSBubyB0aW1lLXpvbmUgZmllbGQgY29uc3VtZXMgb25seSB0 aGUgZmllbGRzIGl0IG5hbWVzLCBzbyBhIHRyYWlsaW5nIHRpbWUgem9uZQorLS0gaW4gdGhlIGlu cHV0IGlzIHNpbXBseSBpZ25vcmVkIChleGlzdGluZyB0b190aW1lc3RhbXAoKSBiZWhhdmlvciwg dW5jaGFuZ2VkKS4KK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4IDEzOjQ1OjMwKzA1JyBBUyB0aW1l c3RhbXAgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MnKTsKKy0tIEJ1dCBhIHRlbXBsYXRl IHRoYXQgZXhwbGljaXRseSBjb250YWlucyBhIHRpbWUtem9uZSBmaWVsZCBpcyByZWplY3RlZCBm b3IgYQorLS0gdGltZXN0YW1wLXdpdGhvdXQtdGltZS16b25lIHRhcmdldCAod2UgbXVzdCBub3Qg Zm9sZCBhIHpvbmUgaW50byBhIHpvbmVsZXNzCistLSByZXN1bHQgdmlhIHRoZSBzZXNzaW9uIFRp bWVab25lKS4KK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4IDEzOjQ1OjMwKzA1JyBBUyB0aW1lc3Rh bXAgRk9STUFUICdZWVlZLU1NLUREIEhIMjQ6TUk6U1MgVFpIJyk7CistLSB0aW1lc3RhbXAgV0lU SE9VVCB0aW1lIHpvbmUgbXVzdCBub3QgZGVwZW5kIG9uIHRoZSBzZXNzaW9uIFRpbWVab25lOiB0 aGUgc2FtZQorLS0gKHVuem9uZWQpIGlucHV0L3RlbXBsYXRlIHlpZWxkcyB0aGUgc2FtZSB3YWxs LWNsb2NrIHZhbHVlIHVuZGVyIGFueSB6b25lLgorU0VUIFRpbWVab25lID0gJ0FtZXJpY2EvTG9z X0FuZ2VsZXMnOworU0VMRUNUIENBU1QoJzIwMjYtMDYtMjggMTM6NDU6MzAnIEFTIHRpbWVzdGFt cCBGT1JNQVQgJ1lZWVktTU0tREQgSEgyNDpNSTpTUycpOworU0VUIFRpbWVab25lID0gJ1VUQyc7 CitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yOCAxMzo0NTozMCcgQVMgdGltZXN0YW1wIEZPUk1BVCAn WVlZWS1NTS1ERCBISDI0Ok1JOlNTJyk7CisKKy0tIHRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZSwg Ym90aCBkaXJlY3Rpb25zIChUaW1lWm9uZSBpcyBVVEMsIHNldCBhYm92ZSkKK1NFTEVDVCBDQVNU KCcyMDI2LTA2LTI4IDEzOjQ1OjMwICswMCcgQVMgdGltZXN0YW1wdHogRk9STUFUICdZWVlZLU1N LUREIEhIMjQ6TUk6U1MgVFpIJyk7CitTRUxFQ1QgQ0FTVCh0aW1lc3RhbXB0eiAnMjAyNi0wNi0y OCAxMzo0NTozMCswMCcgQVMgdGV4dCBGT1JNQVQgJ1lZWVktTU0tREQgSEgyNDpNSTpTUyBUWkgn KTsKKworLS0gQSBzYW1wbGluZyBvZiBTUUwtc3RhbmRhcmQtc3R5bGUgZGF0ZXRpbWUgdGVtcGxh dGUgdG9rZW5zLCBleGVyY2lzZWQgdGhyb3VnaAorLS0gdGhlIGV4aXN0aW5nIHRvX2NoYXIvdG9f dGltZXN0YW1wIGVuZ2luZS4gIFRaTSBhbmQgU1NTU1MgYXJlIHN1cHBvcnRlZCBoZXJlOworLS0g dGhpcyBpcyBub3QgZXhoYXVzdGl2ZSBzdGFuZGFyZC10b2tlbiBjb3ZlcmFnZS4KK1NFTEVDVCBD QVNUKHRpbWVzdGFtcHR6ICcyMDI2LTA2LTI4IDEzOjQ1OjMwKzAwJyBBUyB0ZXh0CisgICAgICAg ICAgICBGT1JNQVQgJ1lZWVktTU0tREQiVCJISDI0Ok1JOlNTIFRaSDpUWk0nKTsKK1NFTEVDVCBD QVNUKHRpbWVzdGFtcCAnMjAyNi0wNi0yOCAxMzo0NTozMCcgQVMgdGV4dCBGT1JNQVQgJ1NTU1NT Jyk7CistLSBGcmFjdGlvbmFsIHNlY29uZHMgKEZGbikgYXJlIGFjY2VwdGVkIGJ5IHRvX2NoYXIg aW4gdGhlIG91dHB1dCBkaXJlY3Rpb24uCitTRUxFQ1QgQ0FTVCh0aW1lc3RhbXAgJzIwMjYtMDYt MjggMTM6NDU6MzAuMTIzNDU2JyBBUyB0ZXh0CisgICAgICAgICAgICBGT1JNQVQgJ0hIMjQ6TUk6 U1MuRkY2Jyk7CisKKy0tIEVtcHR5IEZPUk1BVCB0ZW1wbGF0ZTogc3RhYmxlLCBuZXZlciBhIGNy YXNoLiAgSW4gdGhlIHBhcnNlIGRpcmVjdGlvbiB0aGUKKy0tIHVuZGVybHlpbmcgdG9fZGF0ZSgp IGVuZ2luZSBwYXJzZXMgbm8gZmllbGRzIGFuZCByZXR1cm5zIHRoZSBhbGwtZGVmYXVsdHMKKy0t IGRhdGU7IGluIHRoZSBmb3JtYXQgZGlyZWN0aW9uIHRoZSB3cmFwcGVycyBtaXJyb3IgdG9fY2hh cih2YWx1ZSwgJycpLCB3aGljaAorLS0gaXMgTlVMTC4KK1NFTEVDVCBDQVNUKCcyMDI2LTA2LTI4 JyBBUyBkYXRlIEZPUk1BVCAnJyk7CitTRUxFQ1QgQ0FTVChkYXRlICcyMDI2LTA2LTI4JyBBUyB0 ZXh0IEZPUk1BVCAnJykgSVMgTlVMTCBBUyBlbXB0eV9mbXRfb3V0OworCistLSBUaGUgRk9STUFU IGNsYXVzZSByZW1haW5zIGEgUG9zdGdyZVNRTCBleHRlbnNpb246IGl0IG1heSBiZSBhbnkgZXhw cmVzc2lvbgorLS0gY29lcmNpYmxlIHRvIHRleHQsIG5vdCBqdXN0IGEgc3RyaW5nIGxpdGVyYWwu CitTRUxFQ1QgQ0FTVCgnMjAyNi0nIHx8ICcwNi0yOCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVktJyB8 fCAnTU0tREQnKTsKKworLS0gQSBGT1JNQVQgY2xhdXNlIG5ldmVyIGZhbGxzIGJhY2sgdG8gYW4g b3JkaW5hcnkgY2FzdDogYW4gaW50ZWdlciAtPiBkYXRlCistLSBwYWlyIGhhcyBubyBmb3JtYXR0 ZXIgKGFuZCBubyBvcmRpbmFyeSBjYXN0KSwgc28gaXQgZXJyb3JzLgorU0VMRUNUIENBU1QoNSBB UyBkYXRlIEZPUk1BVCAnWVlZWScpOworCistLSBBIGJ1aWx0LWluIGZvcm1hdHRlciBvY2N1cGll cyBpdHMgKHNvdXJjZSwgdGFyZ2V0KSBwYWlyLCBzbyBhIHVzZXIKKy0tIENSRUFURSBGT1JNQVRU RVIgZm9yIHRoZSBzYW1lIHBhaXIgZmFpbHMgd2l0aCB0aGUgdXN1YWwgZHVwbGljYXRlIGVycm9y LgorQ1JFQVRFIEZVTkNUSU9OIG15X3RleHRfdG9fZGF0ZSh0ZXh0LCB0ZXh0KSBSRVRVUk5TIGRh dGUKKwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFJFVFVSTiB0b19kYXRlKCQxLCAkMik7CitDUkVB VEUgRk9STUFUVEVSIEZPUiBDQVNUICh0ZXh0IEFTIGRhdGUpCisJV0lUSCBGVU5DVElPTiBteV90 ZXh0X3RvX2RhdGUodGV4dCwgdGV4dCk7CQktLSBmYWlsczogYWxyZWFkeSBleGlzdHMKK0RST1Ag RlVOQ1RJT04gbXlfdGV4dF90b19kYXRlKHRleHQsIHRleHQpOworCistLSBCdWlsdC1pbiBmb3Jt YXR0ZXIgcm93cyBhcmUgc3lzdGVtIG9iamVjdHMgKHRoZWlyIE9JRHMgYXJlIGluIHRoZSBwaW5u ZWQKKy0tIHJhbmdlKSwgc28gdGhleSBjYW5ub3QgYmUgZHJvcHBlZC4KK0RST1AgRk9STUFUVEVS IEZPUiBDQVNUICh0ZXh0IEFTIGRhdGUpOwkJCQktLSBmYWlsczogcGlubmVkIHN5c3RlbSBvYmpl Y3QKKworLS0gQSB2aWV3IG92ZXIgYSBidWlsdC1pbiBmb3JtYXR0ZWQgY2FzdCBkZXBhcnNlcyBi YWNrIHRvIENBU1QoLi4uIEZPUk1BVCAuLi4pLgorQ1JFQVRFIFZJRVcgYnVpbHRpbl9mb3JtYXR0 ZXJfdmlldyBBUworCVNFTEVDVCBDQVNUKCcyMDI2LTA2LTI4JyBBUyBkYXRlIEZPUk1BVCAnWVlZ WS1NTS1ERCcpIEFTIGQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2J1aWx0aW5fZm9ybWF0dGVy X3ZpZXcnOjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1QgKiBGUk9NIGJ1aWx0aW5fZm9ybWF0dGVy X3ZpZXc7CitEUk9QIFZJRVcgYnVpbHRpbl9mb3JtYXR0ZXJfdmlldzsKKworLS0gUGF0Y2ggMyBh ZGRlZCBhIG5ldyBleHByZXNzaW9uIG5vZGU7IG1ha2Ugc3VyZSBxdWVyeSBqdW1ibGluZyBoYW5k bGVzIGl0LgorU0VUIGNvbXB1dGVfcXVlcnlfaWQgPSBvbjsKK1NFTEVDVCBDQVNUKCcyMDI2LTA2 LTI4JyBBUyBkYXRlIEZPUk1BVCAnWVlZWS1NTS1ERCcpOworUkVTRVQgY29tcHV0ZV9xdWVyeV9p ZDsKKworUkVTRVQgVGltZVpvbmU7Ci0tIAoyLjU0LjAKCg== --0000000000007f28fa06555d9ca3 Content-Type: application/octet-stream; name="0003-Use-CoerceViaFormatter-for-CAST-FORMAT.patch" Content-Disposition: attachment; filename="0003-Use-CoerceViaFormatter-for-CAST-FORMAT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqyrq4y82 RnJvbSBkZTcwOWM2OTIzN2UzMzA0YjczNjljODk3ODQyZGMzNjJkNzNlZTRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPHRyaXN0YW4ueWltQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyNCBKdW4gMjAyNiAyMDo0NjowMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFJlc29s dmUgQ0FTVCAuLi4gRk9STUFUIHdpdGggQ29lcmNlVmlhRm9ybWF0dGVyCgpSZXNvbHZlIGZvcm1h dHRlZCBjYXN0cyB0aHJvdWdoIHBnX2Zvcm1hdHRlciBkdXJpbmcgcGFyc2UgYW5hbHlzaXMuICBU aGUKRk9STUFUIGV4cHJlc3Npb24gaXMgdHJhbnNmb3JtZWQgYW5kIGNvZXJjZWQgdG8gdGV4dCwg dW5rbm93biBzb3VyY2UKbGl0ZXJhbHMgYXJlIHRyZWF0ZWQgYXMgdGV4dCwgYW5kIGZvcm1hdHRl ciBsb29rdXAgaXMgcGVyZm9ybWVkIGJ5IGV4YWN0CnNvdXJjZSBhbmQgdGFyZ2V0IHR5cGUuICBJ ZiBubyBmb3JtYXR0ZXIgZXhpc3RzLCB0aGUgY2FzdCBmYWlsczsgYSBGT1JNQVQKY2xhdXNlIG5l dmVyIGZhbGxzIGJhY2sgdG8gb3JkaW5hcnkgY2FzdCByZXNvbHV0aW9uLgoKUmVwcmVzZW50IHRo ZSBhbmFseXplZCBleHByZXNzaW9uIHdpdGggYSBDb2VyY2VWaWFGb3JtYXR0ZXIgbm9kZS4gIFRo ZQpub2RlIHByZXNlcnZlcyBDQVNUIC4uLiBGT1JNQVQgc3ludGF4IGZvciBydWxldXRpbHMgYW5k IHBnX2R1bXAsIGFuZApyZWNvcmRzIGEgZGVwZW5kZW5jeSBvbiB0aGUgcGdfZm9ybWF0dGVyIHJv dyBhcyB3ZWxsIGFzIG9uIHRoZSBmb3JtYXR0ZXIKZnVuY3Rpb24uICBFeGVjdXRpb24gc3RpbGwg dXNlcyB0aGUgb3JkaW5hcnkgZnVuY3Rpb24tY2FsbCBtYWNoaW5lcnkgdmlhCkV4ZWNJbml0RnVu Yywgc28gbm8gbmV3IGV4ZWN1dG9yIG9wY29kZSBvciBKSVQgc3VwcG9ydCBpcyBuZWVkZWQuCgpU YXJnZXQgdHlwbW9kcyBhbmQgZG9tYWluIGNoZWNrcyBhcmUgZW5mb3JjZWQgYnkgdGhlIGV4aXN0 aW5nIGNvZXJjaW9uCm1hY2hpbmVyeSBsYXllcmVkIGFib3ZlIHRoZSBub2RlLgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jICAgICAgICAgIHwgIDIzICsrCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgICAgICB8ICAxOCArKwogc3JjL2JhY2tlbmQvbm9k ZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgfCAgNTMgKysrKysKIHNyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgICAgICAgICAgIHwgMTM2ICsrKysrKysrKystCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICB8ICAxOSArKwogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMgICAgICAgfCAgMzcgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaCAgICAgICAgICAgICB8ICAzOCArKysrCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cHJl c3Npb25zLm91dCB8ICAzMCArLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9ybWF0dGVy cy5vdXQgIHwgMjYzICsrKysrKysrKysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2V4cHJlc3Npb25zLnNxbCAgICAgIHwgIDE0ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jt YXR0ZXJzLnNxbCAgICAgICB8IDE1MyArKysrKysrKysrKystCiAxMiBmaWxlcyBjaGFuZ2VkLCA3 NDIgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3ku YwppbmRleCA3ZWVhYzkxMjY0Zi4uNjFlOWEyODM2MWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5j eS5jCkBAIC0yMTMxLDYgKzIxMzEsMjkgQEAgZmluZF9leHByX3JlZmVyZW5jZXNfd2Fsa2VyKE5v ZGUgKm5vZGUsCiAJCQlhZGRfb2JqZWN0X2FkZHJlc3MoQ29sbGF0aW9uUmVsYXRpb25JZCwgaW9j b2VyY2UtPnJlc3VsdGNvbGxpZCwgMCwKIAkJCQkJCQkgICBjb250ZXh0LT5hZGRycyk7CiAJfQor CWVsc2UgaWYgKElzQShub2RlLCBDb2VyY2VWaWFGb3JtYXR0ZXIpKQorCXsKKwkJQ29lcmNlVmlh Rm9ybWF0dGVyICpmbXQgPSAoQ29lcmNlVmlhRm9ybWF0dGVyICopIG5vZGU7CisKKwkJLyogZGVw ZW5kIG9uIHRoZSByZXN1bHQgdHlwZSAqLworCQlhZGRfb2JqZWN0X2FkZHJlc3MoVHlwZVJlbGF0 aW9uSWQsIGZtdC0+cmVzdWx0dHlwZSwgMCwKKwkJCQkJCSAgIGNvbnRleHQtPmFkZHJzKTsKKwkJ LyogZGVwZW5kIG9uIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24gKi8KKwkJYWRkX29iamVjdF9hZGRy ZXNzKFByb2NlZHVyZVJlbGF0aW9uSWQsIGZtdC0+Zm9ybWF0dGVyZnVuYywgMCwKKwkJCQkJCSAg IGNvbnRleHQtPmFkZHJzKTsKKwkJLyoKKwkJICogQWxzbyBkZXBlbmQgb24gdGhlIHBnX2Zvcm1h dHRlciByb3cgaXRzZWxmLCBzbyB0aGF0IERST1AgRk9STUFUVEVSCisJCSAqIGlzIHJlZnVzZWQg KG9yIGNhc2NhZGVzKSB3aGlsZSBhIHN0b3JlZCBleHByZXNzaW9uIHVzZXMgaXQuCisJCSAqLwor CQlpZiAoT2lkSXNWYWxpZChmbXQtPmZvcm1hdHRlcmlkKSkKKwkJCWFkZF9vYmplY3RfYWRkcmVz cyhGb3JtYXR0ZXJSZWxhdGlvbklkLCBmbXQtPmZvcm1hdHRlcmlkLCAwLAorCQkJCQkJCSAgIGNv bnRleHQtPmFkZHJzKTsKKwkJLyogdGhlIGNvbGxhdGlvbiBtaWdodCBub3QgYmUgcmVmZXJlbmNl ZCBhbnl3aGVyZSBlbHNlLCBlaXRoZXIgKi8KKwkJaWYgKE9pZElzVmFsaWQoZm10LT5yZXN1bHRj b2xsaWQpICYmCisJCQlmbXQtPnJlc3VsdGNvbGxpZCAhPSBERUZBVUxUX0NPTExBVElPTl9PSUQp CisJCQlhZGRfb2JqZWN0X2FkZHJlc3MoQ29sbGF0aW9uUmVsYXRpb25JZCwgZm10LT5yZXN1bHRj b2xsaWQsIDAsCisJCQkJCQkJICAgY29udGV4dC0+YWRkcnMpOworCX0KIAllbHNlIGlmIChJc0Eo bm9kZSwgQXJyYXlDb2VyY2VFeHByKSkKIAl7CiAJCUFycmF5Q29lcmNlRXhwciAqYWNvZXJjZSA9 IChBcnJheUNvZXJjZUV4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCmluZGV4IGNm ZWE3ZTE2MGMyLi4wMGVmM2E4NzA4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCkBAIC0xMjAw LDYgKzEyMDAsMjQgQEAgRXhlY0luaXRFeHByUmVjKEV4cHIgKm5vZGUsIEV4cHJTdGF0ZSAqc3Rh dGUsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBUX0NvZXJjZVZpYUZvcm1hdHRlcjoKKwkJ CXsKKwkJCQlDb2VyY2VWaWFGb3JtYXR0ZXIgKmZtdCA9IChDb2VyY2VWaWFGb3JtYXR0ZXIgKikg bm9kZTsKKworCQkJCS8qCisJCQkJICogQSBmb3JtYXR0ZWQgY2FzdCBpcyBleGVjdXRlZCBleGFj dGx5IGxpa2UgYSBjYWxsIHRvIGl0cworCQkJCSAqIGZvcm1hdHRlciBmdW5jdGlvbjogZm9ybWF0 dGVyZnVuYyhhcmcsIGZvcm1hdCkuICBSZXVzZSB0aGUKKwkJCQkgKiBvcmRpbmFyeSBmdW5jdGlv bi1jYWxsIHNldHVwLCB3aGljaCBhbHNvIHBlcmZvcm1zIHRoZQorCQkJCSAqIHJ1bi10aW1lIEVY RUNVVEUgcGVybWlzc2lvbiBjaGVjayBvbiB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uLgorCQkJCSAq LworCQkJCUV4ZWNJbml0RnVuYygmc2NyYXRjaCwgbm9kZSwKKwkJCQkJCQkgbGlzdF9tYWtlMihm bXQtPmFyZywgZm10LT5mb3JtYXQpLAorCQkJCQkJCSBmbXQtPmZvcm1hdHRlcmZ1bmMsIGZtdC0+ aW5wdXRjb2xsaWQsCisJCQkJCQkJIHN0YXRlKTsKKwkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCAmc2NyYXRjaCk7CisJCQkJYnJlYWs7CisJCQl9CisKIAkJY2FzZSBUX09wRXhwcjoKIAkJCXsK IAkJCQlPcEV4cHIJICAgKm9wID0gKE9wRXhwciAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpp bmRleCA2NjQ5NTU0NjE3OS4uZWFjM2ZlZTA0MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0x ODIsNiArMTgyLDkgQEAgZXhwclR5cGUoY29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX0NvZXJj ZVZpYUlPOgogCQkJdHlwZSA9ICgoY29uc3QgQ29lcmNlVmlhSU8gKikgZXhwciktPnJlc3VsdHR5 cGU7CiAJCQlicmVhazsKKwkJY2FzZSBUX0NvZXJjZVZpYUZvcm1hdHRlcjoKKwkJCXR5cGUgPSAo KGNvbnN0IENvZXJjZVZpYUZvcm1hdHRlciAqKSBleHByKS0+cmVzdWx0dHlwZTsKKwkJCWJyZWFr OwogCQljYXNlIFRfQXJyYXlDb2VyY2VFeHByOgogCQkJdHlwZSA9ICgoY29uc3QgQXJyYXlDb2Vy Y2VFeHByICopIGV4cHIpLT5yZXN1bHR0eXBlOwogCQkJYnJlYWs7CkBAIC01MzEsNiArNTM0LDgg QEAgZXhwclR5cG1vZChjb25zdCBOb2RlICpleHByKQogCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2Vy Y2VUb0RvbWFpbjoKIAkJCXJldHVybiAoKGNvbnN0IENvZXJjZVRvRG9tYWluICopIGV4cHIpLT5y ZXN1bHR0eXBtb2Q7CisJCWNhc2UgVF9Db2VyY2VWaWFGb3JtYXR0ZXI6CisJCQlyZXR1cm4gKChj b25zdCBDb2VyY2VWaWFGb3JtYXR0ZXIgKikgZXhwciktPnJlc3VsdHR5cG1vZDsKIAkJY2FzZSBU X0NvZXJjZVRvRG9tYWluVmFsdWU6CiAJCQlyZXR1cm4gKChjb25zdCBDb2VyY2VUb0RvbWFpblZh bHVlICopIGV4cHIpLT50eXBlTW9kOwogCQljYXNlIFRfU2V0VG9EZWZhdWx0OgpAQCAtOTQzLDYg Kzk0OCw5IEBAIGV4cHJDb2xsYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJY2FzZSBUX0NvZXJj ZVZpYUlPOgogCQkJY29sbCA9ICgoY29uc3QgQ29lcmNlVmlhSU8gKikgZXhwciktPnJlc3VsdGNv bGxpZDsKIAkJCWJyZWFrOworCQljYXNlIFRfQ29lcmNlVmlhRm9ybWF0dGVyOgorCQkJY29sbCA9 ICgoY29uc3QgQ29lcmNlVmlhRm9ybWF0dGVyICopIGV4cHIpLT5yZXN1bHRjb2xsaWQ7CisJCQli cmVhazsKIAkJY2FzZSBUX0FycmF5Q29lcmNlRXhwcjoKIAkJCWNvbGwgPSAoKGNvbnN0IEFycmF5 Q29lcmNlRXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOwogCQkJYnJlYWs7CkBAIC0xMjI3LDYg KzEyMzUsOSBAQCBleHByU2V0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9pZCBjb2xsYXRpb24pCiAJ CWNhc2UgVF9Db2VyY2VWaWFJTzoKIAkJCSgoQ29lcmNlVmlhSU8gKikgZXhwciktPnJlc3VsdGNv bGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfQ29lcmNlVmlhRm9ybWF0dGVy OgorCQkJKChDb2VyY2VWaWFGb3JtYXR0ZXIgKikgZXhwciktPnJlc3VsdGNvbGxpZCA9IGNvbGxh dGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfQXJyYXlDb2VyY2VFeHByOgogCQkJKChBcnJheUNv ZXJjZUV4cHIgKikgZXhwciktPnJlc3VsdGNvbGxpZCA9IGNvbGxhdGlvbjsKIAkJCWJyZWFrOwpA QCAtMTM0OSw2ICsxMzYwLDkgQEAgZXhwclNldElucHV0Q29sbGF0aW9uKE5vZGUgKmV4cHIsIE9p ZCBpbnB1dGNvbGxhdGlvbikKIAkJY2FzZSBUX0Z1bmNFeHByOgogCQkJKChGdW5jRXhwciAqKSBl eHByKS0+aW5wdXRjb2xsaWQgPSBpbnB1dGNvbGxhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRf Q29lcmNlVmlhRm9ybWF0dGVyOgorCQkJKChDb2VyY2VWaWFGb3JtYXR0ZXIgKikgZXhwciktPmlu cHV0Y29sbGlkID0gaW5wdXRjb2xsYXRpb247CisJCQlicmVhazsKIAkJY2FzZSBUX09wRXhwcjoK IAkJCSgoT3BFeHByICopIGV4cHIpLT5pbnB1dGNvbGxpZCA9IGlucHV0Y29sbGF0aW9uOwogCQkJ YnJlYWs7CkBAIC0xNTI3LDYgKzE1NDEsMTUgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4 cHIpCiAJCQkJCQkJCSAgZXhwckxvY2F0aW9uKChOb2RlICopIGNleHByLT5hcmcpKTsKIAkJCX0K IAkJCWJyZWFrOworCQljYXNlIFRfQ29lcmNlVmlhRm9ybWF0dGVyOgorCQkJeworCQkJCWNvbnN0 IENvZXJjZVZpYUZvcm1hdHRlciAqY2V4cHIgPSAoY29uc3QgQ29lcmNlVmlhRm9ybWF0dGVyICop IGV4cHI7CisKKwkJCQkvKiBNdWNoIGFzIGFib3ZlICovCisJCQkJbG9jID0gbGVmdG1vc3RMb2Mo Y2V4cHItPmxvY2F0aW9uLAorCQkJCQkJCQkgIGV4cHJMb2NhdGlvbigoTm9kZSAqKSBjZXhwci0+ YXJnKSk7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FycmF5Q29lcmNlRXhwcjoKIAkJCXsK IAkJCQljb25zdCBBcnJheUNvZXJjZUV4cHIgKmNleHByID0gKGNvbnN0IEFycmF5Q29lcmNlRXhw ciAqKSBleHByOwpAQCAtMTk5NCw2ICsyMDE3LDE1IEBAIGNoZWNrX2Z1bmN0aW9uc19pbl9ub2Rl KE5vZGUgKm5vZGUsIGNoZWNrX2Z1bmN0aW9uX2NhbGxiYWNrIGNoZWNrZXIsCiAJCQkJCXJldHVy biB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Db2VyY2VWaWFGb3JtYXR0ZXI6CisJ CQl7CisJCQkJQ29lcmNlVmlhRm9ybWF0dGVyICpleHByID0gKENvZXJjZVZpYUZvcm1hdHRlciAq KSBub2RlOworCisJCQkJLyogY2hlY2sgdGhlIGZvcm1hdHRlciBmdW5jdGlvbiAqLworCQkJCWlm IChjaGVja2VyKGV4cHItPmZvcm1hdHRlcmZ1bmMsIGNvbnRleHQpKQorCQkJCQlyZXR1cm4gdHJ1 ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUm93Q29tcGFyZUV4cHI6CiAJCQl7CiAJCQkJ Um93Q29tcGFyZUV4cHIgKnJjZXhwciA9IChSb3dDb21wYXJlRXhwciAqKSBub2RlOwpAQCAtMjI5 Niw2ICsyMzI4LDE2IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAog CQkJcmV0dXJuIFdBTEsoKChSZWxhYmVsVHlwZSAqKSBub2RlKS0+YXJnKTsKIAkJY2FzZSBUX0Nv ZXJjZVZpYUlPOgogCQkJcmV0dXJuIFdBTEsoKChDb2VyY2VWaWFJTyAqKSBub2RlKS0+YXJnKTsK KwkJY2FzZSBUX0NvZXJjZVZpYUZvcm1hdHRlcjoKKwkJCXsKKwkJCQlDb2VyY2VWaWFGb3JtYXR0 ZXIgKmZtdCA9IChDb2VyY2VWaWFGb3JtYXR0ZXIgKikgbm9kZTsKKworCQkJCWlmIChXQUxLKGZt dC0+YXJnKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoZm10LT5mb3JtYXQpKQor CQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfQXJyYXlDb2VyY2VF eHByOgogCQkJewogCQkJCUFycmF5Q29lcmNlRXhwciAqYWNvZXJjZSA9IChBcnJheUNvZXJjZUV4 cHIgKikgbm9kZTsKQEAgLTMzMTgsNiArMzM2MCwxNyBAQCBleHByZXNzaW9uX3RyZWVfbXV0YXRv cl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CiAJCQl9CiAJ CQlicmVhazsKKwkJY2FzZSBUX0NvZXJjZVZpYUZvcm1hdHRlcjoKKwkJCXsKKwkJCQlDb2VyY2VW aWFGb3JtYXR0ZXIgKmZtdGNvZXJjZSA9IChDb2VyY2VWaWFGb3JtYXR0ZXIgKikgbm9kZTsKKwkJ CQlDb2VyY2VWaWFGb3JtYXR0ZXIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBm bXRjb2VyY2UsIENvZXJjZVZpYUZvcm1hdHRlcik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmFyZywg Zm10Y29lcmNlLT5hcmcsIEV4cHIgKik7CisJCQkJTVVUQVRFKG5ld25vZGUtPmZvcm1hdCwgZm10 Y29lcmNlLT5mb3JtYXQsIEV4cHIgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJ CQl9CisJCQlicmVhazsKIAkJY2FzZSBUX0FycmF5Q29lcmNlRXhwcjoKIAkJCXsKIAkJCQlBcnJh eUNvZXJjZUV4cHIgKmFjb2VyY2UgPSAoQXJyYXlDb2VyY2VFeHByICopIG5vZGU7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwppbmRleCAxNzI5YmE1NjAxMy4uMjQzYzkxMjE3MDAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2V4cHIuYwpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtV2hv bGVSb3dSZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkgIGludCBzdWJsZXZlbHNfdXAs IGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtSW5kaXJlY3Rpb24oUGFyc2VT dGF0ZSAqcHN0YXRlLCBBX0luZGlyZWN0aW9uICppbmQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9y bVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKTsKK3N0YXRpYyBOb2Rl ICp0cmFuc2Zvcm1Gb3JtYXR0ZWRUeXBlQ2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0 ICp0Yyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtQ29sbGF0ZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsIENvbGxhdGVDbGF1c2UgKmMpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUpzb25PYmpl Y3RDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCUpzb25PYmplY3RD b25zdHJ1Y3RvciAqY3Rvcik7CkBAIC0yNzQ0LDE3ICsyNzQ1LDEyIEBAIHRyYW5zZm9ybVR5cGVD YXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogCWludAkJCWxvY2F0aW9uOwog CiAJLyoKLQkgKiBGb3JtYXR0ZWQgY2FzdHMgKENBU1QoZXhwciBBUyB0eXBlIEZPUk1BVCBmb3Jt YXRfZXhwcikpIGFyZSBwYXJzZWQgYW5kCi0JICogcmVwcmVzZW50ZWQgaW4gdGhlIHBhcnNlIHRy ZWUsIGJ1dCBmb3JtYXR0ZXIgcmVzb2x1dGlvbiBpcyBub3QgeWV0Ci0JICogaW1wbGVtZW50ZWQu ICBSZWplY3Qgc3VjaCBjYXN0cyBoZXJlIHJhdGhlciB0aGFuIHNpbGVudGx5IGlnbm9yaW5nIHRo ZQotCSAqIEZPUk1BVCBjbGF1c2UuCisJICogQSBGT1JNQVQgY2xhdXNlIHR1cm5zIHRoaXMgaW50 byBhIGZvcm1hdHRlZCBjYXN0LCB3aGljaCBpcyByZXNvbHZlZAorCSAqIGV4Y2x1c2l2ZWx5IHRo cm91Z2ggdGhlIHBnX2Zvcm1hdHRlciBjYXRhbG9nIChuZXZlciB0aHJvdWdoIG9yZGluYXJ5CisJ ICogY2FzdCBydWxlcykuICBIYW5kbGUgaXQgaW4gYSBzZXBhcmF0ZSBjb2RlIHBhdGguCiAJICov CiAJaWYgKHRjLT5mb3JtYXQgIT0gTlVMTCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1zZygiZm9ybWF0dGVk IGNhc3RzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IiksCi0JCQkJIGVycmRldGFpbCgiTm8gZm9y bWF0dGVyIHJlc29sdXRpb24gbWVjaGFuaXNtIGlzIGF2YWlsYWJsZS4iKSwKLQkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKHRjLT5mb3JtYXQpKSkpOworCQlyZXR1 cm4gdHJhbnNmb3JtRm9ybWF0dGVkVHlwZUNhc3QocHN0YXRlLCB0Yyk7CiAKIAkvKiBMb29rIHVw IHRoZSB0eXBlIG5hbWUgZmlyc3QgKi8KIAl0eXBlbmFtZVR5cGVJZEFuZE1vZChwc3RhdGUsIHRj LT50eXBlTmFtZSwgJnRhcmdldFR5cGUsICZ0YXJnZXRUeXBtb2QpOwpAQCAtMjgyNCw2ICsyODIw LDEyOCBAQCB0cmFuc2Zvcm1UeXBlQ2FzdChQYXJzZVN0YXRlICpwc3RhdGUsIFR5cGVDYXN0ICp0 YykKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogSGFuZGxlIGEgZm9ybWF0dGVkIGNhc3Q6 IENBU1QoYXJnIEFTIHR5cGVOYW1lIEZPUk1BVCBmb3JtYXQpLgorICoKKyAqIFJlc29sdmVkIGV4 Y2x1c2l2ZWx5IHRocm91Z2ggdGhlIHBnX2Zvcm1hdHRlciBjYXRhbG9nLCBrZXllZCBieQorICog KHNvdXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkuICBXZSBidWlsZCBhIENvZXJjZVZpYUZvcm1hdHRl ciBub2RlLCB3aGljaCBhdAorICogZXhlY3V0aW9uIHRpbWUgY2FsbHMgdGhlIHJlZ2lzdGVyZWQg Zm9ybWF0dGVyIGZ1bmN0aW9uIHdpdGggdGhlIHNvdXJjZQorICogdmFsdWUgYW5kIHRoZSBGT1JN QVQgZXhwcmVzc2lvbiAoY29lcmNlZCB0byB0ZXh0KS4gIFVzaW5nIGEgZGVkaWNhdGVkIG5vZGUK KyAqIChyYXRoZXIgdGhhbiBhIGJhcmUgRnVuY0V4cHIpIGxldHMgdGhlIGV4cHJlc3Npb24gZGVw YXJzZSBiYWNrIHRvCisgKiBDQVNUIC4uLiBGT1JNQVQgYW5kIGRlcGVuZCBvbiB0aGUgcGdfZm9y bWF0dGVyIHJvdy4KKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtRm9ybWF0dGVkVHlwZUNh c3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBUeXBlQ2FzdCAqdGMpCit7CisJTm9kZQkgICAqZXhwcjsK KwlOb2RlCSAgICpmbXQ7CisJT2lkCQkJc291cmNlVHlwZTsKKwlPaWQJCQl0YXJnZXRUeXBlOwor CWludDMyCQl0YXJnZXRUeXBtb2Q7CisJT2lkCQkJZm9ybWF0dGVyaWQ7CisJT2lkCQkJZm10ZnVu Y2lkID0gSW52YWxpZE9pZDsKKwlPaWQJCQlmdW5jcmV0dHlwZTsKKwlDb2VyY2VWaWFGb3JtYXR0 ZXIgKmN2ZjsKKwlOb2RlCSAgICpyZXN1bHQ7CisJaW50CQkJbG9jYXRpb247CisKKwkvKiBSZXNv bHZlIHRoZSBkZWNsYXJlZCB0YXJnZXQgdHlwZSwgZXhhY3RseSBhcyBhbiBvcmRpbmFyeSBjYXN0 IGRvZXMuICovCisJdHlwZW5hbWVUeXBlSWRBbmRNb2QocHN0YXRlLCB0Yy0+dHlwZU5hbWUsICZ0 YXJnZXRUeXBlLCAmdGFyZ2V0VHlwbW9kKTsKKworCS8qIFRyYW5zZm9ybSB0aGUgc291cmNlIGV4 cHJlc3Npb24uICovCisJZXhwciA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgdGMtPmFy Zyk7CisJc291cmNlVHlwZSA9IGV4cHJUeXBlKGV4cHIpOworCisJLyoKKwkgKiBBbiB1bmtub3du LXR5cGUgc291cmNlICh0eXBpY2FsbHkgYSBiYXJlIHN0cmluZyBsaXRlcmFsIG9yIHVudHlwZWQK KwkgKiBOVUxMKSBpcyBjb2VyY2VkIHRvIHRleHQgYmVmb3JlIHRoZSBmb3JtYXR0ZXIgbG9va3Vw LCBzbyB0aGF0LCBlLmcuLAorCSAqIENBU1QoJzIwMjYtMDYtMjQnIEFTIGRhdGUgRk9STUFUICdZ WVlZLU1NLUREJykgdXNlcyBhIGZvcm1hdHRlcgorCSAqIHJlZ2lzdGVyZWQgZm9yICh0ZXh0LCBk YXRlKSByYXRoZXIgdGhhbiByZXF1aXJpbmcgb25lIGZvciAodW5rbm93biwKKwkgKiBkYXRlKS4K KwkgKi8KKwlpZiAoc291cmNlVHlwZSA9PSBVTktOT1dOT0lEKQorCXsKKwkJZXhwciA9IGNvZXJj ZV90b19zcGVjaWZpY190eXBlKHBzdGF0ZSwgZXhwciwgVEVYVE9JRCwgIkNBU1QiKTsKKwkJc291 cmNlVHlwZSA9IGV4cHJUeXBlKGV4cHIpOworCX0KKworCWxvY2F0aW9uID0gdGMtPmxvY2F0aW9u OworCWlmIChsb2NhdGlvbiA8IDApCisJCWxvY2F0aW9uID0gdGMtPnR5cGVOYW1lLT5sb2NhdGlv bjsKKworCS8qCisJICogVHJhbnNmb3JtIHRoZSBGT1JNQVQgZXhwcmVzc2lvbiBhbmQgY29lcmNl IGl0IHRvIHRleHQgYmVmb3JlIHRoZQorCSAqIGZvcm1hdHRlciBsb29rdXAsIHNvIGFuIGludmFs aWQgRk9STUFUIGV4cHJlc3Npb24gcmVwb3J0cyBhIG5vcm1hbAorCSAqIGVycm9yIHJhdGhlciB0 aGFuIGJlaW5nIG1hc2tlZCBieSBhIG1pc3NpbmctZm9ybWF0dGVyIGVycm9yLgorCSAqLworCWZt dCA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0ZSwgdGMtPmZvcm1hdCk7CisJZm10ID0gY29l cmNlX3RvX3NwZWNpZmljX3R5cGUocHN0YXRlLCBmbXQsIFRFWFRPSUQsICJGT1JNQVQiKTsKKwor CS8qCisJICogTG9vayB1cCB0aGUgZm9ybWF0dGVyIGZvciB0aGlzIChzb3VyY2UsIHRhcmdldCkg cGFpci4gIEEgRk9STUFUIGNsYXVzZQorCSAqIG5ldmVyIGZhbGxzIGJhY2sgdG8gb3JkaW5hcnkg Y2FzdCByZXNvbHV0aW9uLgorCSAqLworCWZvcm1hdHRlcmlkID0gZ2V0X2Zvcm1hdHRlcl9mb3Jf Y2FzdChzb3VyY2VUeXBlLCB0YXJnZXRUeXBlLCAmZm10ZnVuY2lkKTsKKwlpZiAoIU9pZElzVmFs aWQoZm9ybWF0dGVyaWQpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygiZm9ybWF0dGVyIGZvciBjYXN0IGZyb20g dHlwZSAlcyB0byB0eXBlICVzIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCWZvcm1hdF90eXBlX2Jl KHNvdXJjZVR5cGUpLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUodGFyZ2V0VHlwZSkpLAorCQkJCSBl cnJoaW50KCJVc2UgQ1JFQVRFIEZPUk1BVFRFUiB0byBkZWZpbmUgYSBmb3JtYXR0ZXIgZm9yIHRo aXMgdHlwZSBwYWlyLiIpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlv bikpKTsKKworCS8qCisJICogQnVpbGQgdGhlIENvZXJjZVZpYUZvcm1hdHRlciBub2RlLiAgSXRz IHJlc3VsdCB0eXBlIGlzIHRoZSBmb3JtYXR0ZXIKKwkgKiBmdW5jdGlvbidzIHJldHVybiB0eXBl LCB3aGljaCBDUkVBVEUgRk9STUFUVEVSIGd1YXJhbnRlZXMgZXF1YWxzIHRoZQorCSAqIHRhcmdl dCB0eXBlLgorCSAqCisJICogVGhlIGNvbGxhdGlvbiBmaWVsZHMgYXJlIGxlZnQgdW5zZXQgaGVy ZTsgdGhleSBhcmUgYXNzaWduZWQgbGF0ZXIgYnkKKwkgKiBwYXJzZV9jb2xsYXRlLmMsIHdoZXJl IENvZXJjZVZpYUZvcm1hdHRlciB0YWtlcyB0aGUgc2FtZSBnZW5lcmFsIG4tYXJ5CisJICogZXhw cmVzc2lvbiBwYXRoIGFzIEZ1bmNFeHByIChpdHMgcmVzdWx0L2lucHV0IGNvbGxhdGlvbiBnZXQv c2V0IGhvb2tzCisJICogbGl2ZSBpbiBub2RlRnVuY3MuYykuCisJICovCisJZnVuY3JldHR5cGUg PSBnZXRfZnVuY19yZXR0eXBlKGZtdGZ1bmNpZCk7CisJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNyZXR0 eXBlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1 IiwgZm10ZnVuY2lkKTsKKwlBc3NlcnQoZnVuY3JldHR5cGUgPT0gdGFyZ2V0VHlwZSk7CisKKwlj dmYgPSBtYWtlTm9kZShDb2VyY2VWaWFGb3JtYXR0ZXIpOworCWN2Zi0+YXJnID0gKEV4cHIgKikg ZXhwcjsKKwljdmYtPmZvcm1hdCA9IChFeHByICopIGZtdDsKKwljdmYtPnJlc3VsdHR5cGUgPSBm dW5jcmV0dHlwZTsKKwljdmYtPnJlc3VsdHR5cG1vZCA9IC0xOwkJLyogdHlwbW9kIGVuZm9yY2Vk IGJlbG93LCBpZiBhbnkgKi8KKwljdmYtPnJlc3VsdGNvbGxpZCA9IEludmFsaWRPaWQ7CisJY3Zm LT5pbnB1dGNvbGxpZCA9IEludmFsaWRPaWQ7CisJY3ZmLT5mb3JtYXR0ZXJmdW5jID0gZm10ZnVu Y2lkOworCWN2Zi0+Zm9ybWF0dGVyaWQgPSBmb3JtYXR0ZXJpZDsKKwljdmYtPmNvZXJjaW9uZm9y bWF0ID0gQ09FUkNFX0VYUExJQ0lUX0NBU1Q7CisJY3ZmLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwor CXJlc3VsdCA9IChOb2RlICopIGN2ZjsKKworCS8qCisJICogRW5mb3JjZSB0aGUgZGVjbGFyZWQg dGFyZ2V0IHR5cGUgbW9kaWZpZXIgKGFuZCBhbnkgZG9tYWluIGNvbnN0cmFpbnRzKQorCSAqIHVz aW5nIHRoZSBvcmRpbmFyeSBjb2VyY2lvbiBtYWNoaW5lcnkuICBJbiB0aGUgY29tbW9uIGNhc2Ug d2hlcmUgdGhlCisJICogdGFyZ2V0IGhhcyBubyB0eXBtb2QgYW5kIGlzIG5vdCBhIGRvbWFpbiB0 aGlzIGlzIGEgbm8tb3A7IG90aGVyd2lzZSBpdAorCSAqIGxheWVycyB0aGUgc2FtZSBsZW5ndGgg Y29lcmNpb24gLyBkb21haW4gY2hlY2sgdGhhdCBhbiBvcmRpbmFyeSBjYXN0IHRvCisJICogdGhl IHNhbWUgdGFyZ2V0IHdvdWxkIGFwcGx5LgorCSAqLworCXJlc3VsdCA9IGNvZXJjZV90b190YXJn ZXRfdHlwZShwc3RhdGUsIHJlc3VsdCwgZnVuY3JldHR5cGUsCisJCQkJCQkJCSAgIHRhcmdldFR5 cGUsIHRhcmdldFR5cG1vZCwKKwkJCQkJCQkJICAgQ09FUkNJT05fRVhQTElDSVQsCisJCQkJCQkJ CSAgIENPRVJDRV9FWFBMSUNJVF9DQVNULAorCQkJCQkJCQkgICBsb2NhdGlvbik7CisJaWYgKHJl c3VsdCA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FO Tk9UX0NPRVJDRSksCisJCQkJIGVycm1zZygiY2Fubm90IGNhc3QgdHlwZSAlcyB0byAlcyIsCisJ CQkJCQlmb3JtYXRfdHlwZV9iZShmdW5jcmV0dHlwZSksCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0 YXJnZXRUeXBlKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9uKSkp OworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEhhbmRsZSBhbiBleHBsaWNpdCBDT0xM QVRFIGNsYXVzZS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggODhkZTVjMDQ4 MWMuLjc2ZjA3Yzg1YThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC05NDQ3LDYg Kzk0NDcsMTAgQEAgaXNTaW1wbGVOb2RlKE5vZGUgKm5vZGUsIE5vZGUgKnBhcmVudE5vZGUsIGlu dCBwcmV0dHlGbGFncykKIAkJCS8qIGZ1bmN0aW9uLWxpa2U6IG5hbWUoLi4pIG9yIG5hbWVbLi5d ICovCiAJCQlyZXR1cm4gdHJ1ZTsKIAorCQljYXNlIFRfQ29lcmNlVmlhRm9ybWF0dGVyOgorCQkJ LyogZGVwYXJzZXMgYXMgQ0FTVCguLiBGT1JNQVQgLi4pLCBzZWxmLWRlbGltaXRpbmcgKi8KKwkJ CXJldHVybiB0cnVlOworCiAJCQkvKiBDQVNFIGtleXdvcmRzIGFjdCBhcyBwYXJlbnRoZXNlcyAq LwogCQljYXNlIFRfQ2FzZUV4cHI6CiAJCQlyZXR1cm4gdHJ1ZTsKQEAgLTEwMzEwLDYgKzEwMzE0 LDIxIEBAIGdldF9ydWxlX2V4cHIoTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0 LAogCQkJfQogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX0NvZXJjZVZpYUZvcm1hdHRlcjoKKwkJCXsK KwkJCQlDb2VyY2VWaWFGb3JtYXR0ZXIgKmZtdCA9IChDb2VyY2VWaWFGb3JtYXR0ZXIgKikgbm9k ZTsKKworCQkJCS8qIGFsd2F5cyBwcmludCB0aGUgU1FMLXN0YW5kYXJkIENBU1QoLi4uIEZPUk1B VCAuLi4pIHN5bnRheCAqLworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiQ0FTVCgi KTsKKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIGZtdC0+YXJnLCBjb250ZXh0LCBmYWxzZSk7 CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIgQVMgJXMgRk9STUFUICIsCisJCQkJCQkJCSBm b3JtYXRfdHlwZV93aXRoX3R5cGVtb2QoZm10LT5yZXN1bHR0eXBlLAorCQkJCQkJCQkJCQkJCQkg IGZtdC0+cmVzdWx0dHlwbW9kKSk7CisJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBmbXQtPmZv cm1hdCwgY29udGV4dCwgZmFsc2UpOworCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJykn KTsKKwkJCX0KKwkJCWJyZWFrOworCiAJCWNhc2UgVF9BcnJheUNvZXJjZUV4cHI6CiAJCQl7CiAJ CQkJQXJyYXlDb2VyY2VFeHByICphY29lcmNlID0gKEFycmF5Q29lcmNlRXhwciAqKSBub2RlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCAwMzZkZTVmNzllZi4uYTU4MTExYjQz MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yNyw2ICsyNyw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19mb3JtYXR0ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luZGV4LmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19sYW5ndWFnZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFt ZXNwYWNlLmgiCkBAIC0xMjM4LDYgKzEyMzksNDIgQEAgZ2V0X2Nhc3Rfb2lkKE9pZCBzb3VyY2V0 eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQsIGJvb2wgbWlzc2luZ19vaykKIAlyZXR1cm4gb2lkOwog fQogCisvKgkJCQktLS0tLS0tLS0tIFBHX0ZPUk1BVFRFUiBDQUNIRSAtLS0tLS0tLS0tCQkJCSAq LworCisvKgorICogZ2V0X2Zvcm1hdHRlcl9mb3JfY2FzdAorICoKKyAqCQlHaXZlbiBzb3VyY2Ug YW5kIHRhcmdldCB0eXBlIE9JRHMsIGxvb2sgdXAgdGhlIGZvcm1hdHRlciByZWdpc3RlcmVkCisg KgkJZm9yIHRoYXQgKHNvdXJjZSwgdGFyZ2V0KSBwYWlyLiAgUmV0dXJucyB0aGUgcGdfZm9ybWF0 dGVyIHJvdyBPSUQsIG9yCisgKgkJSW52YWxpZE9pZCBpZiBub25lIGlzIHJlZ2lzdGVyZWQuICBJ ZiBmb3VuZCBhbmQgZm9ybWF0dGVyZnVuYyBpcyBub3QKKyAqCQlOVUxMLCAqZm9ybWF0dGVyZnVu YyBpcyBzZXQgdG8gdGhlIGZvcm1hdHRlciBmdW5jdGlvbiBPSUQuCisgKi8KK09pZAorZ2V0X2Zv cm1hdHRlcl9mb3JfY2FzdChPaWQgc291cmNldHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBPaWQg KmZvcm1hdHRlcmZ1bmMpCit7CisJSGVhcFR1cGxlCXRwOworCU9pZAkJCXJlc3VsdDsKKworCXRw ID0gU2VhcmNoU3lzQ2FjaGUyKEZPUk1BVFRFUlNPVVJDRVRBUkdFVCwKKwkJCQkJCSBPYmplY3RJ ZEdldERhdHVtKHNvdXJjZXR5cGVpZCksCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bSh0YXJnZXR0 eXBlaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQlyZXR1cm4gSW52YWxpZE9p ZDsKKworCXsKKwkJRm9ybV9wZ19mb3JtYXR0ZXIgZm10ID0gKEZvcm1fcGdfZm9ybWF0dGVyKSBH RVRTVFJVQ1QodHApOworCisJCS8qIEEgdmFsaWQgcGdfZm9ybWF0dGVyIHJvdyBhbHdheXMgbmFt ZXMgYSBmb3JtYXR0ZXIgZnVuY3Rpb24uICovCisJCUFzc2VydChPaWRJc1ZhbGlkKGZtdC0+Zm10 ZnVuYykpOworCisJCXJlc3VsdCA9IGZtdC0+b2lkOworCQlpZiAoZm9ybWF0dGVyZnVuYyAhPSBO VUxMKQorCQkJKmZvcm1hdHRlcmZ1bmMgPSBmbXQtPmZtdGZ1bmM7CisJfQorCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBDT0xMQVRJ T04gQ0FDSEUgLS0tLS0tLS0tLQkJCQkJICovCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4 IGJiMDVhZWViZWU0Li5mNTc1MmZlZmVlMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTEyMzAs NiArMTIzMCw0NCBAQCB0eXBlZGVmIHN0cnVjdCBDb2VyY2VWaWFJTwogCVBhcnNlTG9jCWxvY2F0 aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gQ29lcmNlVmlh SU87CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqIENvZXJjZVZpYUZvcm1hdHRlcgorICoKKyAq IENvZXJjZVZpYUZvcm1hdHRlciByZXByZXNlbnRzIENBU1QoYXJnIEFTIHJlc3VsdHR5cGUgRk9S TUFUIGZvcm1hdCksIGEKKyAqIGZvcm1hdHRlZCBjYXN0IHJlc29sdmVkIHRocm91Z2ggdGhlIHBn X2Zvcm1hdHRlciBjYXRhbG9nLiAgSXQgY2FsbHMgdGhlCisgKiByZWdpc3RlcmVkIGZvcm1hdHRl ciBmdW5jdGlvbiB3aXRoIHRoZSBzb3VyY2UgdmFsdWUgYW5kIHRoZSBGT1JNQVQKKyAqIGV4cHJl c3Npb24gKGFscmVhZHkgY29lcmNlZCB0byB0ZXh0KSwgcmV0dXJuaW5nIHRoZSB0YXJnZXQgdHlw ZToKKyAqCisgKgkJZm9ybWF0dGVyZnVuYyhhcmcsIGZvcm1hdCkgcmV0dXJucyByZXN1bHR0eXBl CisgKgorICogVW5saWtlIGEgcGxhaW4gRnVuY0V4cHIsIHRoaXMgbm9kZSByZW1lbWJlcnMgdGhh dCBpdCBjYW1lIGZyb20KKyAqIENBU1QgLi4uIEZPUk1BVCAoc28gaXQgZGVwYXJzZXMgYmFjayB0 byB0aGF0IHN5bnRheCkgYW5kIHdoaWNoCisgKiBwZ19mb3JtYXR0ZXIgcm93IGl0IHJlc29sdmVk IHRvIChzbyBhIHN0b3JlZCBleHByZXNzaW9uIGNhbiBkZXBlbmQgb24gdGhlCisgKiBmb3JtYXR0 ZXIgb2JqZWN0KS4gIEl0IGlzIGV4ZWN1dGVkIGJ5IHJldXNpbmcgb3JkaW5hcnkgZnVuY3Rpb24t Y2FsbAorICogZXZhbHVhdGlvbiwgc28gRVhFQ1VURSBwZXJtaXNzaW9uIG9uIGZvcm1hdHRlcmZ1 bmMgaXMgY2hlY2tlZCBhdCBydW4gdGltZSwKKyAqIGFzIGZvciBhbiBvcmRpbmFyeSBmdW5jdGlv bi1iYWNrZWQgY2FzdC4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg Q29lcmNlVmlhRm9ybWF0dGVyCit7CisJRXhwcgkJeHByOworCUV4cHIJICAgKmFyZzsJCQkvKiBz b3VyY2UgZXhwcmVzc2lvbiAqLworCUV4cHIJICAgKmZvcm1hdDsJCQkvKiBGT1JNQVQgZXhwcmVz c2lvbiwgYWxyZWFkeSBjb2VyY2VkIHRvIHRleHQgKi8KKwlPaWQJCQlyZXN1bHR0eXBlOwkJLyog b3V0cHV0IHR5cGUgb2YgdGhlIGNhc3QgKi8KKwkvKiBvdXRwdXQgdHlwbW9kICh1c3VhbGx5IC0x OyB0eXBtb2QgZW5mb3JjZW1lbnQgaXMgbGF5ZXJlZCBhYm92ZSkgKi8KKwlpbnQzMgkJcmVzdWx0 dHlwbW9kIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBPSUQgb2YgcmVz dWx0IGNvbGxhdGlvbiwgb3IgSW52YWxpZE9pZCBpZiBub25lICovCisJT2lkCQkJcmVzdWx0Y29s bGlkIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwkvKiBpbnB1dCBjb2xsYXRp b24gZm9yIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24gY2FsbCAqLworCU9pZAkJCWlucHV0Y29sbGlk IHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKKwlPaWQJCQlmb3JtYXR0ZXJmdW5j OwkvKiBwZ19mb3JtYXR0ZXIuZm10ZnVuYyAqLworCS8qIHBnX2Zvcm1hdHRlciByb3cgT0lEIHRo aXMgcmVzb2x2ZWQgdG8gKGZvciBkZXBlbmRlbmNpZXMpICovCisJT2lkCQkJZm9ybWF0dGVyaWQg cGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8qIGhvdyB0byBkaXNwbGF5IHRo aXMgbm9kZSAqLworCUNvZXJjaW9uRm9ybSBjb2VyY2lvbmZvcm1hdCBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CisJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlv biwgb3IgLTEgaWYgdW5rbm93biAqLworfSBDb2VyY2VWaWFGb3JtYXR0ZXI7CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqIEFycmF5Q29lcmNlRXhwcgogICoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5k ZXggODY1OTgwY2IwZjEuLmM5NDZiZjZmNTliIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTAz LDYgKzEwMyw4IEBAIGV4dGVybiB2b2lkIGdldF9hdHR0eXBldHlwbW9kY29sbChPaWQgcmVsaWQs IEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkgIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2Qs IE9pZCAqY29sbGlkKTsKIGV4dGVybiBEYXR1bSBnZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGlu dDE2IGF0dG51bSk7CiBleHRlcm4gT2lkCWdldF9jYXN0X29pZChPaWQgc291cmNldHlwZWlkLCBP aWQgdGFyZ2V0dHlwZWlkLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIE9pZAlnZXRfZm9ybWF0 dGVyX2Zvcl9jYXN0KE9pZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQsCisJCQkJCQkJ CSAgIE9pZCAqZm9ybWF0dGVyZnVuYyk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1l KE9pZCBjb2xsb2lkKTsKIGV4dGVybiBib29sIGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGlj KE9pZCBjb2xsb2lkKTsKIGV4dGVybiBjaGFyICpnZXRfY29uc3RyYWludF9uYW1lKE9pZCBjb25v aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHByZXNzaW9ucy5v dXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cHJlc3Npb25zLm91dAppbmRleCBiMmQ3 MWRjYTRmYS4uN2QwNjQwMjRiM2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZXhwcmVzc2lvbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwcmVz c2lvbnMub3V0CkBAIC01NjQsMjMgKzU2NCwyNyBAQCByb2xsYmFjazsKIC0tCiAtLSBDQVNUKGV4 cHIgQVMgdHlwZSBGT1JNQVQgZm9ybWF0X2V4cHIpCiAtLQotLS0gVGhlIEZPUk1BVCBjbGF1c2Ug aXMgcGFyc2VkIGFuZCBzdG9yZWQsIGJ1dCBmb3JtYXR0ZXIgcmVzb2x1dGlvbiBpcyBub3QKLS0t IGltcGxlbWVudGVkIHlldCwgc28gcGFyc2UgYW5hbHlzaXMgbXVzdCByZWplY3QgaXQgKG5vdCBp Z25vcmUgaXQpLgotLS0gYmFzaWMgZm9ybQorLS0gQSBGT1JNQVQgY2xhdXNlIGlzIHJlc29sdmVk IHRocm91Z2ggYSByZWdpc3RlcmVkIGZvcm1hdHRlciAoc2VlIENSRUFURQorLS0gRk9STUFUVEVS KSBhbmQgbmV2ZXIgZmFsbHMgYmFjayB0byBhbiBvcmRpbmFyeSBjYXN0LiAgTm8gZm9ybWF0dGVy cyBhcmUKKy0tIGRlZmluZWQgaW4gdGhpcyB0ZXN0LCBzbyB0aGVzZSBjYXN0cyBmYWlsIHdpdGgg YSBtaXNzaW5nLWZvcm1hdHRlciBlcnJvcjsKKy0tIHRoaXMgY29uZmlybXMgdGhlIEZPUk1BVCBj bGF1c2UgaXMgbmVpdGhlciBpZ25vcmVkIG5vciB0cmVhdGVkIGFzIGFuCistLSBvcmRpbmFyeSBj YXN0LiAgQW4gdW5rbm93bi10eXBlIHNvdXJjZSBsaXRlcmFsIGlzIGNvZXJjZWQgdG8gdGV4dCBm aXJzdCwKKy0tIHNvIHRoZSBsb29rdXAga2V5IGlzICh0ZXh0LCB0YXJnZXQpLgorLS0gYmFzaWMg Zm9ybSAobG9va3MgdXAgYSBmb3JtYXR0ZXIgZm9yICh0ZXh0LCBkYXRlKSkKIFNFTEVDVCBDQVNU KCcyMDI2LTA2LTI0JyBBUyBkYXRlIEZPUk1BVCAnWVlZWS1NTS1ERCcpOwotRVJST1I6ICBmb3Jt YXR0ZWQgY2FzdHMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQKK0VSUk9SOiAgZm9ybWF0dGVyIGZv ciBjYXN0IGZyb20gdHlwZSB0ZXh0IHRvIHR5cGUgZGF0ZSBkb2VzIG5vdCBleGlzdAogTElORSAx OiBTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVktTU0tREQnKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLURFVEFJ TDogIE5vIGZvcm1hdHRlciByZXNvbHV0aW9uIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUuCisgICAg ICAgICAgICAgICBeCitISU5UOiAgVXNlIENSRUFURSBGT1JNQVRURVIgdG8gZGVmaW5lIGEgZm9y bWF0dGVyIGZvciB0aGlzIHR5cGUgcGFpci4KIC0tIHRoZSBmb3JtYXQgbWF5IGJlIGEgZ2VuZXJh bCBleHByZXNzaW9uLCBub3QganVzdCBhIHN0cmluZyBsaXRlcmFsCiBTRUxFQ1QgQ0FTVCgnMjAy Ni0wNi0yNCcgQVMgZGF0ZSBGT1JNQVQgJ1lZWVknIHx8ICctTU0tREQnKTsKLUVSUk9SOiAgZm9y bWF0dGVkIGNhc3RzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0CitFUlJPUjogIGZvcm1hdHRlciBm b3IgY2FzdCBmcm9tIHR5cGUgdGV4dCB0byB0eXBlIGRhdGUgZG9lcyBub3QgZXhpc3QKIExJTkUg MTogU0VMRUNUIENBU1QoJzIwMjYtMDYtMjQnIEFTIGRhdGUgRk9STUFUICdZWVlZJyB8fCAnLU1N LUREJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe Ci1ERVRBSUw6ICBObyBmb3JtYXR0ZXIgcmVzb2x1dGlvbiBtZWNoYW5pc20gaXMgYXZhaWxhYmxl LgotLS0gYSBuby1vcC1sb29raW5nIGNhc3QgbXVzdCBzdGlsbCBiZSByZWplY3RlZCwgbm90IHJl bGFiZWxlZCBhd2F5CisgICAgICAgICAgICAgICBeCitISU5UOiAgVXNlIENSRUFURSBGT1JNQVRU RVIgdG8gZGVmaW5lIGEgZm9ybWF0dGVyIGZvciB0aGlzIHR5cGUgcGFpci4KKy0tIGEgbm8tb3At bG9va2luZyBjYXN0IG11c3Qgbm90IGJlIHJlbGFiZWxlZCBhd2F5OyBpdCBuZWVkcyBhICh0ZXh0 LCB0ZXh0KSBmb3JtYXR0ZXIKIFNFTEVDVCBDQVNUKCdhYmMnOjp0ZXh0IEFTIHRleHQgRk9STUFU ICd3aGF0ZXZlcicpOwotRVJST1I6ICBmb3JtYXR0ZWQgY2FzdHMgYXJlIG5vdCBpbXBsZW1lbnRl ZCB5ZXQKK0VSUk9SOiAgZm9ybWF0dGVyIGZvciBjYXN0IGZyb20gdHlwZSB0ZXh0IHRvIHR5cGUg dGV4dCBkb2VzIG5vdCBleGlzdAogTElORSAxOiBTRUxFQ1QgQ0FTVCgnYWJjJzo6dGV4dCBBUyB0 ZXh0IEZPUk1BVCAnd2hhdGV2ZXInKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXgotREVUQUlMOiAgTm8gZm9ybWF0dGVyIHJlc29sdXRpb24gbWVjaGFu aXNtIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgQ1JFQVRFIEZP Uk1BVFRFUiB0byBkZWZpbmUgYSBmb3JtYXR0ZXIgZm9yIHRoaXMgdHlwZSBwYWlyLgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JtYXR0ZXJzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9ybWF0dGVycy5vdXQKaW5kZXggYmIxZjA5MWExYjguLjZhNDdm MDA3ZjEyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcm1hdHRlcnMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9ybWF0dGVycy5vdXQKQEAgLTEs OSArMSwxMCBAQAogLS0KIC0tIEZPUk1BVFRFUlMKIC0tCi0tLSBDUkVBVEUvRFJPUCBGT1JNQVRU RVIgcmVnaXN0ZXJzIGZvcm1hdHRlciBtZXRhZGF0YSBpbiBwZ19mb3JtYXR0ZXIsCi0tLSBrZXll ZCBieSBhIChzb3VyY2UgdHlwZSwgdGFyZ2V0IHR5cGUpIHBhaXIuICBUaGlzIGlzIGNhdGFsb2cg YW5kIERETAotLS0gaW5mcmFzdHJ1Y3R1cmUgb25seTsgaXQgZG9lcyBub3QgdHJhbnNmb3JtIG9y IGV4ZWN1dGUgZm9ybWF0dGVkIGNhc3RzLgorLS0gQSBmb3JtYXR0ZXIgcmVnaXN0ZXJzIGEgZnVu Y3Rpb24gZm9yIGEgKHNvdXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkgcGFpcjsgYQorLS0gQ0FTVCgu Li4gQVMgdGFyZ2V0IEZPUk1BVCBmb3JtYXRfZXhwcikgaXMgcmVzb2x2ZWQgdGhyb3VnaCBwZ19m b3JtYXR0ZXIgYW5kCistLSBjYWxscyB0aGF0IGZ1bmN0aW9uLiAgVGhpcyB0ZXN0IGNvdmVycyBi b3RoIHRoZSBDUkVBVEUvRFJPUCBGT1JNQVRURVIKKy0tIGNhdGFsb2cgRERMIGFuZCB0aGUgZXhl Y3V0aW9uIG9mIGZvcm1hdHRlZCBjYXN0cy4KIC0tIEEgc2ltcGxlIGZvcm1hdHRlciBmdW5jdGlv biB3aXRoIHRoZSByZXF1aXJlZCBzaWduYXR1cmUKIC0tICAgZm9ybWF0dGVyKHNvdXJjZV90eXBl LCB0ZXh0KSByZXR1cm5zIHRhcmdldF90eXBlCiBDUkVBVEUgRlVOQ1RJT04gaW50NF90b190ZXh0 X2ZtdChpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIHRleHQKQEAgLTY0LDE0ICs2NSwxMjQgQEAgQ1JF QVRFIEZVTkNUSU9OIGZtdF9hbnllbChhbnllbGVtZW50LCB0ZXh0KSBSRVRVUk5TIHRleHQKIENS RUFURSBGT1JNQVRURVIgRk9SIENBU1QgKGFueWVsZW1lbnQgQVMgdGV4dCkKIAlXSVRIIEZVTkNU SU9OIGZtdF9hbnllbChhbnllbGVtZW50LCB0ZXh0KTsKIEVSUk9SOiAgc291cmNlIGRhdGEgdHlw ZSBhbnllbGVtZW50IGlzIGEgcHNldWRvLXR5cGUKLS0tIFJlZ2lzdGVyaW5nIGEgZm9ybWF0dGVy IGRvZXMgbm90IGVuYWJsZSBhIGZvcm1hdHRlZCBjYXN0OiB0aGUgRk9STUFUCi0tLSBjbGF1c2Ug bXVzdCBub3QgYmUgc2lsZW50bHkgaWdub3JlZCBvciByZXdyaXR0ZW4gdG8gYSBidWlsdC1pbiBm dW5jdGlvbiwKLS0tIHNvIENBU1QoLi4uIEZPUk1BVCAuLi4pIGlzIHJlamVjdGVkIGR1cmluZyBw YXJzZSBhbmFseXNpcy4KLVNFTEVDVCBDQVNUKDUgQVMgdGV4dCBGT1JNQVQgJ1lZWVknKTsKLUVS Uk9SOiAgZm9ybWF0dGVkIGNhc3RzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0Ci1MSU5FIDE6IFNF TEVDVCBDQVNUKDUgQVMgdGV4dCBGT1JNQVQgJ1lZWVknKTsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBF eGVjdXRpb246IGEgZm9ybWF0dGVkIGNhc3QgcmVzb2x2ZXMgdGhyb3VnaCBwZ19mb3JtYXR0ZXIg YW5kIGNhbGxzIHRoZQorLS0gcmVnaXN0ZXJlZCBmb3JtYXR0ZXIgZnVuY3Rpb24uCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gYmFzaWMgZXhlY3V0aW9uLCB1c2luZyB0aGUgKGludGVnZXIsIHRleHQpIGZv cm1hdHRlciBjcmVhdGVkIGFib3ZlCitTRUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9STUFUICdhYmMn KTsKKyB0ZXh0ICAKKy0tLS0tLS0KKyA1OmFiYworKDEgcm93KQorCistLSB0aGUgRk9STUFUIGV4 cHJlc3Npb24gbWF5IGJlIGFueSBleHByZXNzaW9uLCBjb2VyY2VkIHRvIHRleHQKK1NFTEVDVCBD QVNUKDUgQVMgdGV4dCBGT1JNQVQgJ2EnIHx8ICdiJyk7CisgdGV4dCAKKy0tLS0tLQorIDU6YWIK KygxIHJvdykKKworU0VMRUNUIENBU1QoNSBBUyB0ZXh0IEZPUk1BVCAxMjMpOworIHRleHQgIAor LS0tLS0tLQorIDU6MTIzCisoMSByb3cpCisKKy0tIFRoZSBGT1JNQVQgZXhwcmVzc2lvbiBpcyBw YXJzZS1hbmFseXplZCBpbmRlcGVuZGVudGx5IG9mIChhbmQgYmVmb3JlKSB0aGUKKy0tIGZvcm1h dHRlciBsb29rdXAsIHNvIGFuIGludmFsaWQgRk9STUFUIGV4cHJlc3Npb24gcmVwb3J0cyBhIG5v cm1hbCBlcnJvci4KK1NFTEVDVCBDQVNUKDUgQVMgdGV4dCBGT1JNQVQgbm9fc3VjaF9jb2x1bW4p OworRVJST1I6ICBjb2x1bW4gIm5vX3N1Y2hfY29sdW1uIiBkb2VzIG5vdCBleGlzdAorTElORSAx OiBTRUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9STUFUIG5vX3N1Y2hfY29sdW1uKTsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1ERVRBSUw6ICBObyBmb3JtYXR0ZXIgcmVz b2x1dGlvbiBtZWNoYW5pc20gaXMgYXZhaWxhYmxlLgorLS0gTGlrZSBhbiBvcmRpbmFyeSBjYXN0 IHRoYXQgdXNlcyBhIGNhc3QgZnVuY3Rpb24sIGEgZm9ybWF0dGVkIGNhc3QgY2hlY2tzCistLSBF WEVDVVRFIG9uIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24gYXQgdXNlIHRpbWUuCitSRVZPS0UgRVhF Q1VURSBPTiBGVU5DVElPTiBpbnQ0X3RvX3RleHRfZm10KGludGVnZXIsIHRleHQpIEZST00gUFVC TElDOworQ1JFQVRFIFJPTEUgcmVncmVzc19mb3JtYXR0ZXJfbm9leGVjIE5PTE9HSU47CitTRVQg Uk9MRSByZWdyZXNzX2Zvcm1hdHRlcl9ub2V4ZWM7CitTRUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9S TUFUICdwJyk7CQkJLS0gZmFpbHM6IG5vIEVYRUNVVEUgb24gZm9ybWF0dGVyIGZ1bmN0aW9uCitF UlJPUjogIHBlcm1pc3Npb24gZGVuaWVkIGZvciBmdW5jdGlvbiBpbnQ0X3RvX3RleHRfZm10CitS RVNFVCBST0xFOworRFJPUCBST0xFIHJlZ3Jlc3NfZm9ybWF0dGVyX25vZXhlYzsKK0dSQU5UIEVY RUNVVEUgT04gRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLCB0ZXh0KSBUTyBQVUJM SUM7CistLSBBIEZPUk1BVCBjbGF1c2UgbmV2ZXIgZmFsbHMgYmFjayB0byBhbiBvcmRpbmFyeSBj YXN0OiB0ZXh0IC0+IHRleHQgaXMgYQorLS0gdHJpdmlhbCBvcmRpbmFyeSBjYXN0LCBidXQgYSBm b3JtYXR0ZWQgY2FzdCBzdGlsbCByZXF1aXJlcyBhIGZvcm1hdHRlci4KK1NFTEVDVCBDQVNUKCdh YmMnOjp0ZXh0IEFTIHRleHQgRk9STUFUICd3aGF0ZXZlcicpOworRVJST1I6ICBmb3JtYXR0ZXIg Zm9yIGNhc3QgZnJvbSB0eXBlIHRleHQgdG8gdHlwZSB0ZXh0IGRvZXMgbm90IGV4aXN0CitMSU5F IDE6IFNFTEVDVCBDQVNUKCdhYmMnOjp0ZXh0IEFTIHRleHQgRk9STUFUICd3aGF0ZXZlcicpOwor ICAgICAgICAgICAgICAgXgorSElOVDogIFVzZSBDUkVBVEUgRk9STUFUVEVSIHRvIGRlZmluZSBh IGZvcm1hdHRlciBmb3IgdGhpcyB0eXBlIHBhaXIuCistLSBBbiB1bmtub3duLXR5cGUgc291cmNl IGxpdGVyYWwgaXMgY29lcmNlZCB0byB0ZXh0IGZpcnN0LCBzbyB0aGlzIGFsc28gbG9va3MKKy0t IHVwICh0ZXh0LCB0ZXh0KSwgbm90ICh1bmtub3duLCB0ZXh0KS4KK1NFTEVDVCBDQVNUKCdhYmMn IEFTIHRleHQgRk9STUFUICdmbXQnKTsKK0VSUk9SOiAgZm9ybWF0dGVyIGZvciBjYXN0IGZyb20g dHlwZSB0ZXh0IHRvIHR5cGUgdGV4dCBkb2VzIG5vdCBleGlzdAorTElORSAxOiBTRUxFQ1QgQ0FT VCgnYWJjJyBBUyB0ZXh0IEZPUk1BVCAnZm10Jyk7CisgICAgICAgICAgICAgICBeCitISU5UOiAg VXNlIENSRUFURSBGT1JNQVRURVIgdG8gZGVmaW5lIGEgZm9ybWF0dGVyIGZvciB0aGlzIHR5cGUg cGFpci4KKy0tIEEgbWlzc2luZyBmb3JtYXR0ZXIgaXMgYW4gZXJyb3IgZXZlbiB3aGVyZSBhbiBv cmRpbmFyeSBjYXN0IHdvdWxkIGJlIHZhbGlkLgorU0VMRUNUIENBU1QoNSBBUyBpbnRlZ2VyIEZP Uk1BVCAneCcpOworRVJST1I6ICBmb3JtYXR0ZXIgZm9yIGNhc3QgZnJvbSB0eXBlIGludGVnZXIg dG8gdHlwZSBpbnRlZ2VyIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCBDQVNUKDUgQVMg aW50ZWdlciBGT1JNQVQgJ3gnKTsKKyAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgQ1JFQVRF IEZPUk1BVFRFUiB0byBkZWZpbmUgYSBmb3JtYXR0ZXIgZm9yIHRoaXMgdHlwZSBwYWlyLgorLS0g RGVmaW5lIHRoZSAodGV4dCwgdGV4dCkgZm9ybWF0dGVyIGFuZCByZS1ydW4gdGhlIHRleHQtc291 cmNlIGNhc2VzLgorQ1JFQVRFIEZVTkNUSU9OIHRleHRfdG9fdGV4dF9mbXQodGV4dCwgdGV4dCkg UkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gJDEgfHwgJy8nIHx8 ICQyOworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAodGV4dCBBUyB0ZXh0KQorCVdJVEggRlVO Q1RJT04gdGV4dF90b190ZXh0X2ZtdCh0ZXh0LCB0ZXh0KTsKK1NFTEVDVCBDQVNUKCdhYmMnOjp0 ZXh0IEFTIHRleHQgRk9STUFUICd3aGF0ZXZlcicpOworICAgICB0ZXh0ICAgICAKKy0tLS0tLS0t LS0tLS0tCisgYWJjL3doYXRldmVyCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKCdhYmMnIEFTIHRl eHQgRk9STUFUICdmbXQnKTsKKyAgdGV4dCAgIAorLS0tLS0tLS0tCisgYWJjL2ZtdAorKDEgcm93 KQorCistLSBBIHR5cGUgbW9kaWZpZXIgb24gdGhlIHRhcmdldCBpcyBlbmZvcmNlZCB0aHJvdWdo IHRoZSBvcmRpbmFyeSBjb2VyY2lvbiBwYXRoLgorQ1JFQVRFIEZVTkNUSU9OIGludDRfdG9fdmNf Zm10KGludGVnZXIsIHRleHQpIFJFVFVSTlMgdmFyY2hhcgorCUxBTkdVQUdFIHNxbCBJTU1VVEFC TEUgUkVUVVJOICQxOjp0ZXh0IHx8ICQyOworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50 ZWdlciBBUyB2YXJjaGFyKQorCVdJVEggRlVOQ1RJT04gaW50NF90b192Y19mbXQoaW50ZWdlciwg dGV4dCk7CitTRUxFQ1QgQ0FTVCg1IEFTIHZhcmNoYXIgRk9STUFUICdYWFhYJyk7CisgdmFyY2hh ciAKKy0tLS0tLS0tLQorIDVYWFhYCisoMSByb3cpCisKK1NFTEVDVCBDQVNUKDUgQVMgdmFyY2hh cigzKSBGT1JNQVQgJ1hYWFgnKTsJCQktLSBsZW5ndGggMyBlbmZvcmNlZAorIHZhcmNoYXIgCist LS0tLS0tLS0KKyA1WFgKKygxIHJvdykKKworLS0gRG9tYWluIHRhcmdldDogdGhlIGZvcm1hdHRl ciBtdXN0IHJldHVybiB0aGUgZG9tYWluIHR5cGUsIHNvIHRoZSBkb21haW4ncworLS0gY29uc3Ry YWludHMgYXJlIGVuZm9yY2VkIGJ5IHRoZSBmdW5jdGlvbidzIHJlc3VsdC4KK0NSRUFURSBET01B SU4gbm9uZW1wdHlfdGV4dCBBUyB0ZXh0IENIRUNLIChWQUxVRSA8PiAnJyk7CitDUkVBVEUgRlVO Q1RJT04gdGV4dF90b19uZXRleHRfZm10KHRleHQsIHRleHQpIFJFVFVSTlMgbm9uZW1wdHlfdGV4 dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOICQyOjpub25lbXB0eV90ZXh0OworQ1JF QVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAodGV4dCBBUyBub25lbXB0eV90ZXh0KQorCVdJVEggRlVO Q1RJT04gdGV4dF90b19uZXRleHRfZm10KHRleHQsIHRleHQpOworU0VMRUNUIENBU1QoJ3onOjp0 ZXh0IEFTIG5vbmVtcHR5X3RleHQgRk9STUFUICdvaycpOworIG5vbmVtcHR5X3RleHQgCistLS0t LS0tLS0tLS0tLS0KKyBvaworKDEgcm93KQorCitTRUxFQ1QgQ0FTVCgneic6OnRleHQgQVMgbm9u ZW1wdHlfdGV4dCBGT1JNQVQgJycpOwktLSBkb21haW4gY2hlY2sgdmlvbGF0aW9uCitFUlJPUjog IHZhbHVlIGZvciBkb21haW4gbm9uZW1wdHlfdGV4dCB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJub25lbXB0eV90ZXh0X2NoZWNrIgorQ09OVEVYVDogIFNRTCBmdW5jdGlvbiAidGV4dF90b19u ZXRleHRfZm10IiBzdGF0ZW1lbnQgMQorLS0gRHJvcCB0aGUgb2JqZWN0cyBjcmVhdGVkIGluIHRo aXMgZXhlY3V0aW9uIHNlY3Rpb24uCitEUk9QIEZPUk1BVFRFUiBGT1IgQ0FTVCAodGV4dCBBUyB0 ZXh0KTsKK0RST1AgRlVOQ1RJT04gdGV4dF90b190ZXh0X2ZtdCh0ZXh0LCB0ZXh0KTsKK0RST1Ag Rk9STUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHZhcmNoYXIpOworRFJPUCBGVU5DVElPTiBp bnQ0X3RvX3ZjX2ZtdChpbnRlZ2VyLCB0ZXh0KTsKK0RST1AgRk9STUFUVEVSIEZPUiBDQVNUICh0 ZXh0IEFTIG5vbmVtcHR5X3RleHQpOworRFJPUCBGVU5DVElPTiB0ZXh0X3RvX25ldGV4dF9mbXQo dGV4dCwgdGV4dCk7CitEUk9QIERPTUFJTiBub25lbXB0eV90ZXh0OwogLS0gRGVwZW5kZW5jeSBi ZWhhdmlvcjogdGhlIGZvcm1hdHRlciBkZXBlbmRzIG9uIGl0cyBmdW5jdGlvbi4KIERST1AgRlVO Q1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLCB0ZXh0KTsJCQkJLS0gZmFpbHMgKFJFU1RS SUNUKQogRVJST1I6ICBjYW5ub3QgZHJvcCBmdW5jdGlvbiBpbnQ0X3RvX3RleHRfZm10KGludGVn ZXIsdGV4dCkgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdApAQCAtMTE0LDMgKzIy NSwxMzUgQEAgRFJPUCBGVU5DVElPTiBmbXRfYmFkX2FyZzEoYmlnaW50LCB0ZXh0KTsKIERST1Ag RlVOQ1RJT04gZm10X2JhZF9yZXQoaW50ZWdlciwgdGV4dCk7CiBEUk9QIEZVTkNUSU9OIGZtdF9i YWRfc2V0KGludGVnZXIsIHRleHQpOwogRFJPUCBGVU5DVElPTiBmbXRfYW55ZWwoYW55ZWxlbWVu dCwgdGV4dCk7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29lcmNlVmlhRm9ybWF0dGVyOiBkZXBhcnNl IGZpZGVsaXR5IGFuZCBkZXBlbmRlbmN5IG9uIHRoZSBmb3JtYXR0ZXIgcm93CistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorQ1JFQVRFIEZVTkNUSU9OIGkydF92aWV3KGludGVnZXIsIHRleHQpIFJFVFVSTlMgdGV4 dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOICQxOjp0ZXh0IHx8ICc6JyB8fCAkMjsK K0NSRUFURSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlXSVRIIEZVTkNU SU9OIGkydF92aWV3KGludGVnZXIsIHRleHQpOworLS0gQSB2aWV3IG92ZXIgYSBmb3JtYXR0ZWQg Y2FzdCBkZXBhcnNlcyBiYWNrIHRvIENBU1QoLi4uIEZPUk1BVCAuLi4pLgorQ1JFQVRFIFZJRVcg Zm9ybWF0dGVyX3ZpZXcgQVMgU0VMRUNUIENBU1QoNSBBUyB0ZXh0IEZPUk1BVCAnYWJjJykgQVMg eDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignZm9ybWF0dGVyX3ZpZXcnOjpyZWdjbGFzcywgdHJ1 ZSk7CisgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VM RUNUIENBU1QoNSBBUyB0ZXh0IEZPUk1BVCAnYWJjJzo6dGV4dCkgQVMgeDsKKygxIHJvdykKKwor U0VMRUNUICogRlJPTSBmb3JtYXR0ZXJfdmlldzsKKyAgIHggICAKKy0tLS0tLS0KKyA1OmFiYwor KDEgcm93KQorCistLSBUaGUgdmlldyBkZXBlbmRzIG9uIHRoZSBwZ19mb3JtYXR0ZXIgcm93LCBz byBEUk9QIEZPUk1BVFRFUiBSRVNUUklDVCBmYWlscy4KK0RST1AgRk9STUFUVEVSIEZPUiBDQVNU IChpbnRlZ2VyIEFTIHRleHQpOwkJCQkJLS0gZmFpbHMgKFJFU1RSSUNULCB2aWV3IGRlcGVuZHMp CitFUlJPUjogIGNhbm5vdCBkcm9wIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIGludGVnZXIgdG8g dGV4dCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICB2aWV3IGZv cm1hdHRlcl92aWV3IGRlcGVuZHMgb24gZm9ybWF0dGVyIGZvciBjYXN0IGZyb20gaW50ZWdlciB0 byB0ZXh0CitISU5UOiAgVXNlIERST1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50 IG9iamVjdHMgdG9vLgorLS0gLi4uIGFuZCBDQVNDQURFIGRyb3BzIHRoZSBkZXBlbmRlbnQgdmll dy4KK0RST1AgRk9STUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpIENBU0NBREU7CitO T1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHZpZXcgZm9ybWF0dGVyX3ZpZXcKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZm9ybWF0dGVyX3ZpZXcnOworIGNv dW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK0RST1AgRlVOQ1RJT04gaTJ0X3ZpZXco aW50ZWdlciwgdGV4dCk7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29sbGF0aW9uOiBhIGZvcm1hdHRl ZCBjYXN0IGJlaGF2ZXMgbGlrZSBjYWxsaW5nIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24KKy0tIGZv cm1hdHRlcmZ1bmMoYXJnLCBmb3JtYXQpLiAgSXRzIHJlc3VsdCBjb2xsYXRpb24gaXMgdGhlIHJl c3VsdCB0eXBlJ3MKKy0tIGNvbGxhdGlvbiwgYW5kIHRoZSBpbnB1dCBjb2xsYXRpb24gaXMgZGVy aXZlZCBmcm9tIHRoZSBhcmcgYW5kIEZPUk1BVAorLS0gZXhwcmVzc2lvbnMgZXhhY3RseSBhcyBm b3IgYW4gb3JkaW5hcnkgdHdvLWFyZ3VtZW50IGZ1bmN0aW9uIGNhbGwuCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gdGV4dF9sYXJnZXIodGV4dCwgdGV4dCkgcmV0dXJucyB0ZXh0IGFuZCBpcyBjb2xsYXRp b24tc2Vuc2l0aXZlIGF0IHRoZSBDCistLSBsZXZlbCAoaXQgcmVhZHMgUEdfR0VUX0NPTExBVElP TiksIHNvIGl0IGV4ZXJjaXNlcyB0aGUgaW5wdXQgY29sbGF0aW9uLgorQ1JFQVRFIEZPUk1BVFRF UiBGT1IgQ0FTVCAodGV4dCBBUyB0ZXh0KQorCVdJVEggRlVOQ1RJT04gcGdfY2F0YWxvZy50ZXh0 X2xhcmdlcih0ZXh0LCB0ZXh0KTsKKy0tIFRoZSBkZWZhdWx0IGNvbGxhdGlvbiBmbG93cyBpbnRv IHRoZSBmb3JtYXR0ZXIgY2FsbDsgaWYgdGhlIGlucHV0IGNvbGxhdGlvbgorLS0gd2VyZSBsZWZ0 IHVuc2V0IHRoaXMgd291bGQgZmFpbCB3aXRoICJjb3VsZCBub3QgZGV0ZXJtaW5lIHdoaWNoIGNv bGxhdGlvbiIuCitTRUxFQ1QgQ0FTVCgnYXBwbGUnOjp0ZXh0IEFTIHRleHQgRk9STUFUICdiYW5h bmEnOjp0ZXh0KTsKKyAgdGV4dCAgCistLS0tLS0tLQorIGJhbmFuYQorKDEgcm93KQorCistLSBB biBleHBsaWNpdCBDT0xMQVRFIG9uIGFuIG9wZXJhbmQgaXMgaG9ub3JlZCBhcyB0aGUgaW5wdXQg Y29sbGF0aW9uLgorU0VMRUNUIENBU1QoJ2FwcGxlJzo6dGV4dCBBUyB0ZXh0IEZPUk1BVCAnYmFu YW5hJzo6dGV4dCBDT0xMQVRFICJDIik7CisgIHRleHQgIAorLS0tLS0tLS0KKyBiYW5hbmEKKygx IHJvdykKKworLS0gVGhlIHJlc3VsdCBpcyBjb2xsYXRhYmxlLCBzbyBhbiBleHBsaWNpdCBDT0xM QVRFIG9uIHRoZSBjYXN0IGl0c2VsZiB3b3Jrcy4KK1NFTEVDVCBDQVNUKCdhcHBsZSc6OnRleHQg QVMgdGV4dCBGT1JNQVQgJ2JhbmFuYSc6OnRleHQpIENPTExBVEUgIkMiIDwgJ3p6eic7CisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBDb25mbGljdGluZyBleHBsaWNp dCBpbnB1dCBjb2xsYXRpb25zIGFyZSByZWplY3RlZCwganVzdCBsaWtlIGEgcGxhaW4KKy0tIGZ1 bmN0aW9uIGNhbGwgdGV4dF9sYXJnZXIoJ2EnIENPTExBVEUgIkMiLCAnYicgQ09MTEFURSAiUE9T SVgiKS4KK1NFTEVDVCBDQVNUKCdhJzo6dGV4dCBDT0xMQVRFICJDIiBBUyB0ZXh0IEZPUk1BVCAn Yic6OnRleHQgQ09MTEFURSAiUE9TSVgiKTsKK0VSUk9SOiAgY29sbGF0aW9uIG1pc21hdGNoIGJl dHdlZW4gZXhwbGljaXQgY29sbGF0aW9ucyAiQyIgYW5kICJQT1NJWCIKK0xJTkUgMTogLi4uU1Qo J2EnOjp0ZXh0IENPTExBVEUgIkMiIEFTIHRleHQgRk9STUFUICdiJzo6dGV4dCBDT0xMQVRFICJQ Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorRFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKHRleHQgQVMgdGV4dCk7CistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gcnVsZXV0aWxzOiBhcmcgYW5kIEZPUk1BVCBzdWJleHByZXNzaW9ucyBk ZXBhcnNlIHVuYW1iaWd1b3VzbHkgaW5zaWRlCistLSBDQVNUKC4uLiksIG5lZWRpbmcgbm8gZXh0 cmEgcGFyZW50aGVzZXMsIGFuZCByZS1wYXJzZSB0byB0aGUgc2FtZSB0aGluZy4KKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CitDUkVBVEUgRlVOQ1RJT04gaTJ0X3BhcmVuKGludGVnZXIsIHRleHQpIFJFVFVSTlMg dGV4dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOICQxOjp0ZXh0IHx8ICQyOworQ1JF QVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KQorCVdJVEggRlVOQ1RJT04g aTJ0X3BhcmVuKGludGVnZXIsIHRleHQpOworQ1JFQVRFIFZJRVcgZm9ybWF0dGVyX3BhcmVuX3Zp ZXcgQVMKKwlTRUxFQ1QgQ0FTVCgoMSArIDIpIEFTIHRleHQgRk9STUFUICgnYScgfHwgJ2InKSkg QVMgeDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZignZm9ybWF0dGVyX3BhcmVuX3ZpZXcnOjpyZWdj bGFzcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIENBU1QoMSArIDIgQVMg dGV4dCBGT1JNQVQgJ2EnOjp0ZXh0IHx8ICdiJzo6dGV4dCkgQVMgeDsKKygxIHJvdykKKworU0VM RUNUICogRlJPTSBmb3JtYXR0ZXJfcGFyZW5fdmlldzsKKyAgeCAgCistLS0tLQorIDNhYgorKDEg cm93KQorCitEUk9QIFZJRVcgZm9ybWF0dGVyX3BhcmVuX3ZpZXc7CitEUk9QIEZPUk1BVFRFUiBG T1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KTsKK0RST1AgRlVOQ1RJT04gaTJ0X3BhcmVuKGludGVn ZXIsIHRleHQpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIERlcGVuZGVuY3kgY29tcGxldGVuZXNzOiBh IHZpZXcgb3ZlciBhIGZvcm1hdHRlZCBjYXN0IGRlcGVuZHMgKHRocm91Z2ggdGhlCistLSBwZ19m b3JtYXR0ZXIgcm93KSBvbiB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uLCBzbyBkcm9wcGluZyB0aGUg ZnVuY3Rpb24gd2l0aAorLS0gQ0FTQ0FERSByZW1vdmVzIGJvdGggdGhlIGZvcm1hdHRlciByb3cg YW5kIHRoZSB2aWV3IGluIG9uZSBzdGVwLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBGVU5DVElP TiBpMnRfY2hhaW4oaW50ZWdlciwgdGV4dCkgUkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElN TVVUQUJMRSBSRVRVUk4gJDE6OnRleHQgfHwgJDI7CitDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNU IChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpMnRfY2hhaW4oaW50ZWdlciwgdGV4 dCk7CitDUkVBVEUgVklFVyBmb3JtYXR0ZXJfY2hhaW5fdmlldyBBUyBTRUxFQ1QgQ0FTVCg3IEFT IHRleHQgRk9STUFUICdxJykgQVMgeDsKK0RST1AgRlVOQ1RJT04gaTJ0X2NoYWluKGludGVnZXIs IHRleHQpOwkJCQkJLS0gZmFpbHM6IGZvcm1hdHRlciArIHZpZXcgZGVwZW5kCitFUlJPUjogIGNh bm5vdCBkcm9wIGZ1bmN0aW9uIGkydF9jaGFpbihpbnRlZ2VyLHRleHQpIGJlY2F1c2Ugb3RoZXIg b2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIGlu dGVnZXIgdG8gdGV4dCBkZXBlbmRzIG9uIGZ1bmN0aW9uIGkydF9jaGFpbihpbnRlZ2VyLHRleHQp Cit2aWV3IGZvcm1hdHRlcl9jaGFpbl92aWV3IGRlcGVuZHMgb24gZnVuY3Rpb24gaTJ0X2NoYWlu KGludGVnZXIsdGV4dCkKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBk ZXBlbmRlbnQgb2JqZWN0cyB0b28uCitEUk9QIEZVTkNUSU9OIGkydF9jaGFpbihpbnRlZ2VyLCB0 ZXh0KSBDQVNDQURFOwkJCS0tIGRyb3BzIGZvcm1hdHRlciBhbmQgdmlldworTk9USUNFOiAgZHJv cCBjYXNjYWRlcyB0byAyIG90aGVyIG9iamVjdHMKK0RFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8g Zm9ybWF0dGVyIGZvciBjYXN0IGZyb20gaW50ZWdlciB0byB0ZXh0Citkcm9wIGNhc2NhZGVzIHRv IHZpZXcgZm9ybWF0dGVyX2NoYWluX3ZpZXcKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2Zvcm1h dHRlcgorCVdIRVJFIGZtdHNvdXJjZSA9ICdpbnRlZ2VyJzo6cmVndHlwZSBBTkQgZm10dGFyZ2V0 ID0gJ3RleHQnOjpyZWd0eXBlOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZm9ybWF0dGVy X2NoYWluX3ZpZXcnOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cHJlc3Npb25zLnNxbCBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2V4cHJlc3Npb25zLnNxbAppbmRleCBmYjA1OTkwZWQyZC4uNDY1NzViYzQxMGQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cHJlc3Npb25zLnNxbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9leHByZXNzaW9ucy5zcWwKQEAgLTMwNSwxNCArMzA1LDE4IEBA IHJvbGxiYWNrOwogLS0KIC0tIENBU1QoZXhwciBBUyB0eXBlIEZPUk1BVCBmb3JtYXRfZXhwcikK IC0tCi0tLSBUaGUgRk9STUFUIGNsYXVzZSBpcyBwYXJzZWQgYW5kIHN0b3JlZCwgYnV0IGZvcm1h dHRlciByZXNvbHV0aW9uIGlzIG5vdAotLS0gaW1wbGVtZW50ZWQgeWV0LCBzbyBwYXJzZSBhbmFs eXNpcyBtdXN0IHJlamVjdCBpdCAobm90IGlnbm9yZSBpdCkuCi0KLS0tIGJhc2ljIGZvcm0KKy0t IEEgRk9STUFUIGNsYXVzZSBpcyByZXNvbHZlZCB0aHJvdWdoIGEgcmVnaXN0ZXJlZCBmb3JtYXR0 ZXIgKHNlZSBDUkVBVEUKKy0tIEZPUk1BVFRFUikgYW5kIG5ldmVyIGZhbGxzIGJhY2sgdG8gYW4g b3JkaW5hcnkgY2FzdC4gIE5vIGZvcm1hdHRlcnMgYXJlCistLSBkZWZpbmVkIGluIHRoaXMgdGVz dCwgc28gdGhlc2UgY2FzdHMgZmFpbCB3aXRoIGEgbWlzc2luZy1mb3JtYXR0ZXIgZXJyb3I7Cist LSB0aGlzIGNvbmZpcm1zIHRoZSBGT1JNQVQgY2xhdXNlIGlzIG5laXRoZXIgaWdub3JlZCBub3Ig dHJlYXRlZCBhcyBhbgorLS0gb3JkaW5hcnkgY2FzdC4gIEFuIHVua25vd24tdHlwZSBzb3VyY2Ug bGl0ZXJhbCBpcyBjb2VyY2VkIHRvIHRleHQgZmlyc3QsCistLSBzbyB0aGUgbG9va3VwIGtleSBp cyAodGV4dCwgdGFyZ2V0KS4KKworLS0gYmFzaWMgZm9ybSAobG9va3MgdXAgYSBmb3JtYXR0ZXIg Zm9yICh0ZXh0LCBkYXRlKSkKIFNFTEVDVCBDQVNUKCcyMDI2LTA2LTI0JyBBUyBkYXRlIEZPUk1B VCAnWVlZWS1NTS1ERCcpOwogCiAtLSB0aGUgZm9ybWF0IG1heSBiZSBhIGdlbmVyYWwgZXhwcmVz c2lvbiwgbm90IGp1c3QgYSBzdHJpbmcgbGl0ZXJhbAogU0VMRUNUIENBU1QoJzIwMjYtMDYtMjQn IEFTIGRhdGUgRk9STUFUICdZWVlZJyB8fCAnLU1NLUREJyk7CiAKLS0tIGEgbm8tb3AtbG9va2lu ZyBjYXN0IG11c3Qgc3RpbGwgYmUgcmVqZWN0ZWQsIG5vdCByZWxhYmVsZWQgYXdheQorLS0gYSBu by1vcC1sb29raW5nIGNhc3QgbXVzdCBub3QgYmUgcmVsYWJlbGVkIGF3YXk7IGl0IG5lZWRzIGEg KHRleHQsIHRleHQpIGZvcm1hdHRlcgogU0VMRUNUIENBU1QoJ2FiYyc6OnRleHQgQVMgdGV4dCBG T1JNQVQgJ3doYXRldmVyJyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jt YXR0ZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcm1hdHRlcnMuc3FsCmluZGV4IDgw NTBhZWU2ZjQ1Li4yYzliNDM1MTY1MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Zm9ybWF0dGVycy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9ybWF0dGVycy5zcWwK QEAgLTEsOSArMSwxMCBAQAogLS0KIC0tIEZPUk1BVFRFUlMKIC0tCi0tLSBDUkVBVEUvRFJPUCBG T1JNQVRURVIgcmVnaXN0ZXJzIGZvcm1hdHRlciBtZXRhZGF0YSBpbiBwZ19mb3JtYXR0ZXIsCi0t LSBrZXllZCBieSBhIChzb3VyY2UgdHlwZSwgdGFyZ2V0IHR5cGUpIHBhaXIuICBUaGlzIGlzIGNh dGFsb2cgYW5kIERETAotLS0gaW5mcmFzdHJ1Y3R1cmUgb25seTsgaXQgZG9lcyBub3QgdHJhbnNm b3JtIG9yIGV4ZWN1dGUgZm9ybWF0dGVkIGNhc3RzLgorLS0gQSBmb3JtYXR0ZXIgcmVnaXN0ZXJz IGEgZnVuY3Rpb24gZm9yIGEgKHNvdXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkgcGFpcjsgYQorLS0g Q0FTVCguLi4gQVMgdGFyZ2V0IEZPUk1BVCBmb3JtYXRfZXhwcikgaXMgcmVzb2x2ZWQgdGhyb3Vn aCBwZ19mb3JtYXR0ZXIgYW5kCistLSBjYWxscyB0aGF0IGZ1bmN0aW9uLiAgVGhpcyB0ZXN0IGNv dmVycyBib3RoIHRoZSBDUkVBVEUvRFJPUCBGT1JNQVRURVIKKy0tIGNhdGFsb2cgRERMIGFuZCB0 aGUgZXhlY3V0aW9uIG9mIGZvcm1hdHRlZCBjYXN0cy4KIAogLS0gQSBzaW1wbGUgZm9ybWF0dGVy IGZ1bmN0aW9uIHdpdGggdGhlIHJlcXVpcmVkIHNpZ25hdHVyZQogLS0gICBmb3JtYXR0ZXIoc291 cmNlX3R5cGUsIHRleHQpIHJldHVybnMgdGFyZ2V0X3R5cGUKQEAgLTU5LDEwICs2MCw3NCBAQCBD UkVBVEUgRlVOQ1RJT04gZm10X2FueWVsKGFueWVsZW1lbnQsIHRleHQpIFJFVFVSTlMgdGV4dAog Q1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoYW55ZWxlbWVudCBBUyB0ZXh0KQogCVdJVEggRlVO Q1RJT04gZm10X2FueWVsKGFueWVsZW1lbnQsIHRleHQpOwogCi0tLSBSZWdpc3RlcmluZyBhIGZv cm1hdHRlciBkb2VzIG5vdCBlbmFibGUgYSBmb3JtYXR0ZWQgY2FzdDogdGhlIEZPUk1BVAotLS0g Y2xhdXNlIG11c3Qgbm90IGJlIHNpbGVudGx5IGlnbm9yZWQgb3IgcmV3cml0dGVuIHRvIGEgYnVp bHQtaW4gZnVuY3Rpb24sCi0tLSBzbyBDQVNUKC4uLiBGT1JNQVQgLi4uKSBpcyByZWplY3RlZCBk dXJpbmcgcGFyc2UgYW5hbHlzaXMuCi1TRUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9STUFUICdZWVlZ Jyk7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gRXhlY3V0aW9uOiBhIGZvcm1hdHRlZCBjYXN0IHJlc29s dmVzIHRocm91Z2ggcGdfZm9ybWF0dGVyIGFuZCBjYWxscyB0aGUKKy0tIHJlZ2lzdGVyZWQgZm9y bWF0dGVyIGZ1bmN0aW9uLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gYmFzaWMgZXhlY3V0aW9uLCB1 c2luZyB0aGUgKGludGVnZXIsIHRleHQpIGZvcm1hdHRlciBjcmVhdGVkIGFib3ZlCitTRUxFQ1Qg Q0FTVCg1IEFTIHRleHQgRk9STUFUICdhYmMnKTsKKy0tIHRoZSBGT1JNQVQgZXhwcmVzc2lvbiBt YXkgYmUgYW55IGV4cHJlc3Npb24sIGNvZXJjZWQgdG8gdGV4dAorU0VMRUNUIENBU1QoNSBBUyB0 ZXh0IEZPUk1BVCAnYScgfHwgJ2InKTsKK1NFTEVDVCBDQVNUKDUgQVMgdGV4dCBGT1JNQVQgMTIz KTsKKworLS0gVGhlIEZPUk1BVCBleHByZXNzaW9uIGlzIHBhcnNlLWFuYWx5emVkIGluZGVwZW5k ZW50bHkgb2YgKGFuZCBiZWZvcmUpIHRoZQorLS0gZm9ybWF0dGVyIGxvb2t1cCwgc28gYW4gaW52 YWxpZCBGT1JNQVQgZXhwcmVzc2lvbiByZXBvcnRzIGEgbm9ybWFsIGVycm9yLgorU0VMRUNUIENB U1QoNSBBUyB0ZXh0IEZPUk1BVCBub19zdWNoX2NvbHVtbik7CisKKy0tIExpa2UgYW4gb3JkaW5h cnkgY2FzdCB0aGF0IHVzZXMgYSBjYXN0IGZ1bmN0aW9uLCBhIGZvcm1hdHRlZCBjYXN0IGNoZWNr cworLS0gRVhFQ1VURSBvbiB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uIGF0IHVzZSB0aW1lLgorUkVW T0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLCB0ZXh0KSBG Uk9NIFBVQkxJQzsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZm9ybWF0dGVyX25vZXhlYyBOT0xPR0lO OworU0VUIFJPTEUgcmVncmVzc19mb3JtYXR0ZXJfbm9leGVjOworU0VMRUNUIENBU1QoNSBBUyB0 ZXh0IEZPUk1BVCAncCcpOwkJCS0tIGZhaWxzOiBubyBFWEVDVVRFIG9uIGZvcm1hdHRlciBmdW5j dGlvbgorUkVTRVQgUk9MRTsKK0RST1AgUk9MRSByZWdyZXNzX2Zvcm1hdHRlcl9ub2V4ZWM7CitH UkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGludDRfdG9fdGV4dF9mbXQoaW50ZWdlciwgdGV4dCkg VE8gUFVCTElDOworCistLSBBIEZPUk1BVCBjbGF1c2UgbmV2ZXIgZmFsbHMgYmFjayB0byBhbiBv cmRpbmFyeSBjYXN0OiB0ZXh0IC0+IHRleHQgaXMgYQorLS0gdHJpdmlhbCBvcmRpbmFyeSBjYXN0 LCBidXQgYSBmb3JtYXR0ZWQgY2FzdCBzdGlsbCByZXF1aXJlcyBhIGZvcm1hdHRlci4KK1NFTEVD VCBDQVNUKCdhYmMnOjp0ZXh0IEFTIHRleHQgRk9STUFUICd3aGF0ZXZlcicpOworLS0gQW4gdW5r bm93bi10eXBlIHNvdXJjZSBsaXRlcmFsIGlzIGNvZXJjZWQgdG8gdGV4dCBmaXJzdCwgc28gdGhp cyBhbHNvIGxvb2tzCistLSB1cCAodGV4dCwgdGV4dCksIG5vdCAodW5rbm93biwgdGV4dCkuCitT RUxFQ1QgQ0FTVCgnYWJjJyBBUyB0ZXh0IEZPUk1BVCAnZm10Jyk7CistLSBBIG1pc3NpbmcgZm9y bWF0dGVyIGlzIGFuIGVycm9yIGV2ZW4gd2hlcmUgYW4gb3JkaW5hcnkgY2FzdCB3b3VsZCBiZSB2 YWxpZC4KK1NFTEVDVCBDQVNUKDUgQVMgaW50ZWdlciBGT1JNQVQgJ3gnKTsKKworLS0gRGVmaW5l IHRoZSAodGV4dCwgdGV4dCkgZm9ybWF0dGVyIGFuZCByZS1ydW4gdGhlIHRleHQtc291cmNlIGNh c2VzLgorQ1JFQVRFIEZVTkNUSU9OIHRleHRfdG9fdGV4dF9mbXQodGV4dCwgdGV4dCkgUkVUVVJO UyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gJDEgfHwgJy8nIHx8ICQyOwor Q1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAodGV4dCBBUyB0ZXh0KQorCVdJVEggRlVOQ1RJT04g dGV4dF90b190ZXh0X2ZtdCh0ZXh0LCB0ZXh0KTsKK1NFTEVDVCBDQVNUKCdhYmMnOjp0ZXh0IEFT IHRleHQgRk9STUFUICd3aGF0ZXZlcicpOworU0VMRUNUIENBU1QoJ2FiYycgQVMgdGV4dCBGT1JN QVQgJ2ZtdCcpOworCistLSBBIHR5cGUgbW9kaWZpZXIgb24gdGhlIHRhcmdldCBpcyBlbmZvcmNl ZCB0aHJvdWdoIHRoZSBvcmRpbmFyeSBjb2VyY2lvbiBwYXRoLgorQ1JFQVRFIEZVTkNUSU9OIGlu dDRfdG9fdmNfZm10KGludGVnZXIsIHRleHQpIFJFVFVSTlMgdmFyY2hhcgorCUxBTkdVQUdFIHNx bCBJTU1VVEFCTEUgUkVUVVJOICQxOjp0ZXh0IHx8ICQyOworQ1JFQVRFIEZPUk1BVFRFUiBGT1Ig Q0FTVCAoaW50ZWdlciBBUyB2YXJjaGFyKQorCVdJVEggRlVOQ1RJT04gaW50NF90b192Y19mbXQo aW50ZWdlciwgdGV4dCk7CitTRUxFQ1QgQ0FTVCg1IEFTIHZhcmNoYXIgRk9STUFUICdYWFhYJyk7 CitTRUxFQ1QgQ0FTVCg1IEFTIHZhcmNoYXIoMykgRk9STUFUICdYWFhYJyk7CQkJLS0gbGVuZ3Ro IDMgZW5mb3JjZWQKKworLS0gRG9tYWluIHRhcmdldDogdGhlIGZvcm1hdHRlciBtdXN0IHJldHVy biB0aGUgZG9tYWluIHR5cGUsIHNvIHRoZSBkb21haW4ncworLS0gY29uc3RyYWludHMgYXJlIGVu Zm9yY2VkIGJ5IHRoZSBmdW5jdGlvbidzIHJlc3VsdC4KK0NSRUFURSBET01BSU4gbm9uZW1wdHlf dGV4dCBBUyB0ZXh0IENIRUNLIChWQUxVRSA8PiAnJyk7CitDUkVBVEUgRlVOQ1RJT04gdGV4dF90 b19uZXRleHRfZm10KHRleHQsIHRleHQpIFJFVFVSTlMgbm9uZW1wdHlfdGV4dAorCUxBTkdVQUdF IHNxbCBJTU1VVEFCTEUgUkVUVVJOICQyOjpub25lbXB0eV90ZXh0OworQ1JFQVRFIEZPUk1BVFRF UiBGT1IgQ0FTVCAodGV4dCBBUyBub25lbXB0eV90ZXh0KQorCVdJVEggRlVOQ1RJT04gdGV4dF90 b19uZXRleHRfZm10KHRleHQsIHRleHQpOworU0VMRUNUIENBU1QoJ3onOjp0ZXh0IEFTIG5vbmVt cHR5X3RleHQgRk9STUFUICdvaycpOworU0VMRUNUIENBU1QoJ3onOjp0ZXh0IEFTIG5vbmVtcHR5 X3RleHQgRk9STUFUICcnKTsJLS0gZG9tYWluIGNoZWNrIHZpb2xhdGlvbgorCistLSBEcm9wIHRo ZSBvYmplY3RzIGNyZWF0ZWQgaW4gdGhpcyBleGVjdXRpb24gc2VjdGlvbi4KK0RST1AgRk9STUFU VEVSIEZPUiBDQVNUICh0ZXh0IEFTIHRleHQpOworRFJPUCBGVU5DVElPTiB0ZXh0X3RvX3RleHRf Zm10KHRleHQsIHRleHQpOworRFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdmFy Y2hhcik7CitEUk9QIEZVTkNUSU9OIGludDRfdG9fdmNfZm10KGludGVnZXIsIHRleHQpOworRFJP UCBGT1JNQVRURVIgRk9SIENBU1QgKHRleHQgQVMgbm9uZW1wdHlfdGV4dCk7CitEUk9QIEZVTkNU SU9OIHRleHRfdG9fbmV0ZXh0X2ZtdCh0ZXh0LCB0ZXh0KTsKK0RST1AgRE9NQUlOIG5vbmVtcHR5 X3RleHQ7CiAKIC0tIERlcGVuZGVuY3kgYmVoYXZpb3I6IHRoZSBmb3JtYXR0ZXIgZGVwZW5kcyBv biBpdHMgZnVuY3Rpb24uCiBEUk9QIEZVTkNUSU9OIGludDRfdG9fdGV4dF9mbXQoaW50ZWdlciwg dGV4dCk7CQkJCS0tIGZhaWxzIChSRVNUUklDVCkKQEAgLTk3LDMgKzE2Miw3NyBAQCBEUk9QIEZV TkNUSU9OIGZtdF9iYWRfYXJnMShiaWdpbnQsIHRleHQpOwogRFJPUCBGVU5DVElPTiBmbXRfYmFk X3JldChpbnRlZ2VyLCB0ZXh0KTsKIERST1AgRlVOQ1RJT04gZm10X2JhZF9zZXQoaW50ZWdlciwg dGV4dCk7CiBEUk9QIEZVTkNUSU9OIGZtdF9hbnllbChhbnllbGVtZW50LCB0ZXh0KTsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIENvZXJjZVZpYUZvcm1hdHRlcjogZGVwYXJzZSBmaWRlbGl0eSBhbmQg ZGVwZW5kZW5jeSBvbiB0aGUgZm9ybWF0dGVyIHJvdworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFURSBG VU5DVElPTiBpMnRfdmlldyhpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIHRleHQKKwlMQU5HVUFHRSBz cWwgSU1NVVRBQkxFIFJFVFVSTiAkMTo6dGV4dCB8fCAnOicgfHwgJDI7CitDUkVBVEUgRk9STUFU VEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpMnRfdmlldyhp bnRlZ2VyLCB0ZXh0KTsKKworLS0gQSB2aWV3IG92ZXIgYSBmb3JtYXR0ZWQgY2FzdCBkZXBhcnNl cyBiYWNrIHRvIENBU1QoLi4uIEZPUk1BVCAuLi4pLgorQ1JFQVRFIFZJRVcgZm9ybWF0dGVyX3Zp ZXcgQVMgU0VMRUNUIENBU1QoNSBBUyB0ZXh0IEZPUk1BVCAnYWJjJykgQVMgeDsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZignZm9ybWF0dGVyX3ZpZXcnOjpyZWdjbGFzcywgdHJ1ZSk7CitTRUxFQ1Qg KiBGUk9NIGZvcm1hdHRlcl92aWV3OworCistLSBUaGUgdmlldyBkZXBlbmRzIG9uIHRoZSBwZ19m b3JtYXR0ZXIgcm93LCBzbyBEUk9QIEZPUk1BVFRFUiBSRVNUUklDVCBmYWlscy4KK0RST1AgRk9S TUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpOwkJCQkJLS0gZmFpbHMgKFJFU1RSSUNU LCB2aWV3IGRlcGVuZHMpCistLSAuLi4gYW5kIENBU0NBREUgZHJvcHMgdGhlIGRlcGVuZGVudCB2 aWV3LgorRFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkgQ0FTQ0FERTsK K1NFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZm9ybWF0dGVy X3ZpZXcnOworRFJPUCBGVU5DVElPTiBpMnRfdmlldyhpbnRlZ2VyLCB0ZXh0KTsKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIENvbGxhdGlvbjogYSBmb3JtYXR0ZWQgY2FzdCBiZWhhdmVzIGxpa2UgY2Fs bGluZyB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uCistLSBmb3JtYXR0ZXJmdW5jKGFyZywgZm9ybWF0 KS4gIEl0cyByZXN1bHQgY29sbGF0aW9uIGlzIHRoZSByZXN1bHQgdHlwZSdzCistLSBjb2xsYXRp b24sIGFuZCB0aGUgaW5wdXQgY29sbGF0aW9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgYXJnIGFuZCBG T1JNQVQKKy0tIGV4cHJlc3Npb25zIGV4YWN0bHkgYXMgZm9yIGFuIG9yZGluYXJ5IHR3by1hcmd1 bWVudCBmdW5jdGlvbiBjYWxsLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIHRleHRfbGFyZ2VyKHRleHQs IHRleHQpIHJldHVybnMgdGV4dCBhbmQgaXMgY29sbGF0aW9uLXNlbnNpdGl2ZSBhdCB0aGUgQwor LS0gbGV2ZWwgKGl0IHJlYWRzIFBHX0dFVF9DT0xMQVRJT04pLCBzbyBpdCBleGVyY2lzZXMgdGhl IGlucHV0IGNvbGxhdGlvbi4KK0NSRUFURSBGT1JNQVRURVIgRk9SIENBU1QgKHRleHQgQVMgdGV4 dCkKKwlXSVRIIEZVTkNUSU9OIHBnX2NhdGFsb2cudGV4dF9sYXJnZXIodGV4dCwgdGV4dCk7Cist LSBUaGUgZGVmYXVsdCBjb2xsYXRpb24gZmxvd3MgaW50byB0aGUgZm9ybWF0dGVyIGNhbGw7IGlm IHRoZSBpbnB1dCBjb2xsYXRpb24KKy0tIHdlcmUgbGVmdCB1bnNldCB0aGlzIHdvdWxkIGZhaWwg d2l0aCAiY291bGQgbm90IGRldGVybWluZSB3aGljaCBjb2xsYXRpb24iLgorU0VMRUNUIENBU1Qo J2FwcGxlJzo6dGV4dCBBUyB0ZXh0IEZPUk1BVCAnYmFuYW5hJzo6dGV4dCk7CistLSBBbiBleHBs aWNpdCBDT0xMQVRFIG9uIGFuIG9wZXJhbmQgaXMgaG9ub3JlZCBhcyB0aGUgaW5wdXQgY29sbGF0 aW9uLgorU0VMRUNUIENBU1QoJ2FwcGxlJzo6dGV4dCBBUyB0ZXh0IEZPUk1BVCAnYmFuYW5hJzo6 dGV4dCBDT0xMQVRFICJDIik7CistLSBUaGUgcmVzdWx0IGlzIGNvbGxhdGFibGUsIHNvIGFuIGV4 cGxpY2l0IENPTExBVEUgb24gdGhlIGNhc3QgaXRzZWxmIHdvcmtzLgorU0VMRUNUIENBU1QoJ2Fw cGxlJzo6dGV4dCBBUyB0ZXh0IEZPUk1BVCAnYmFuYW5hJzo6dGV4dCkgQ09MTEFURSAiQyIgPCAn enp6JzsKKy0tIENvbmZsaWN0aW5nIGV4cGxpY2l0IGlucHV0IGNvbGxhdGlvbnMgYXJlIHJlamVj dGVkLCBqdXN0IGxpa2UgYSBwbGFpbgorLS0gZnVuY3Rpb24gY2FsbCB0ZXh0X2xhcmdlcignYScg Q09MTEFURSAiQyIsICdiJyBDT0xMQVRFICJQT1NJWCIpLgorU0VMRUNUIENBU1QoJ2EnOjp0ZXh0 IENPTExBVEUgIkMiIEFTIHRleHQgRk9STUFUICdiJzo6dGV4dCBDT0xMQVRFICJQT1NJWCIpOwor RFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKHRleHQgQVMgdGV4dCk7CisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBydWxldXRpbHM6IGFyZyBhbmQgRk9STUFUIHN1YmV4cHJlc3Npb25zIGRlcGFyc2UgdW5h bWJpZ3VvdXNseSBpbnNpZGUKKy0tIENBU1QoLi4uKSwgbmVlZGluZyBubyBleHRyYSBwYXJlbnRo ZXNlcywgYW5kIHJlLXBhcnNlIHRvIHRoZSBzYW1lIHRoaW5nLgorLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NS RUFURSBGVU5DVElPTiBpMnRfcGFyZW4oaW50ZWdlciwgdGV4dCkgUkVUVVJOUyB0ZXh0CisJTEFO R1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gJDE6OnRleHQgfHwgJDI7CitDUkVBVEUgRk9STUFU VEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpMnRfcGFyZW4o aW50ZWdlciwgdGV4dCk7CitDUkVBVEUgVklFVyBmb3JtYXR0ZXJfcGFyZW5fdmlldyBBUworCVNF TEVDVCBDQVNUKCgxICsgMikgQVMgdGV4dCBGT1JNQVQgKCdhJyB8fCAnYicpKSBBUyB4OworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdmb3JtYXR0ZXJfcGFyZW5fdmlldyc6OnJlZ2NsYXNzLCB0cnVl KTsKK1NFTEVDVCAqIEZST00gZm9ybWF0dGVyX3BhcmVuX3ZpZXc7CitEUk9QIFZJRVcgZm9ybWF0 dGVyX3BhcmVuX3ZpZXc7CitEUk9QIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0 KTsKK0RST1AgRlVOQ1RJT04gaTJ0X3BhcmVuKGludGVnZXIsIHRleHQpOworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gRGVwZW5kZW5jeSBjb21wbGV0ZW5lc3M6IGEgdmlldyBvdmVyIGEgZm9ybWF0dGVk IGNhc3QgZGVwZW5kcyAodGhyb3VnaCB0aGUKKy0tIHBnX2Zvcm1hdHRlciByb3cpIG9uIHRoZSBm b3JtYXR0ZXIgZnVuY3Rpb24sIHNvIGRyb3BwaW5nIHRoZSBmdW5jdGlvbiB3aXRoCistLSBDQVND QURFIHJlbW92ZXMgYm90aCB0aGUgZm9ybWF0dGVyIHJvdyBhbmQgdGhlIHZpZXcgaW4gb25lIHN0 ZXAuCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIEZVTkNUSU9OIGkydF9jaGFpbihpbnRlZ2VyLCB0 ZXh0KSBSRVRVUk5TIHRleHQKKwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFJFVFVSTiAkMTo6dGV4 dCB8fCAkMjsKK0NSRUFURSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlX SVRIIEZVTkNUSU9OIGkydF9jaGFpbihpbnRlZ2VyLCB0ZXh0KTsKK0NSRUFURSBWSUVXIGZvcm1h dHRlcl9jaGFpbl92aWV3IEFTIFNFTEVDVCBDQVNUKDcgQVMgdGV4dCBGT1JNQVQgJ3EnKSBBUyB4 OworRFJPUCBGVU5DVElPTiBpMnRfY2hhaW4oaW50ZWdlciwgdGV4dCk7CQkJCQktLSBmYWlsczog Zm9ybWF0dGVyICsgdmlldyBkZXBlbmQKK0RST1AgRlVOQ1RJT04gaTJ0X2NoYWluKGludGVnZXIs IHRleHQpIENBU0NBREU7CQkJLS0gZHJvcHMgZm9ybWF0dGVyIGFuZCB2aWV3CitTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19mb3JtYXR0ZXIKKwlXSEVSRSBmbXRzb3VyY2UgPSAnaW50ZWdlcic6OnJl Z3R5cGUgQU5EIGZtdHRhcmdldCA9ICd0ZXh0Jzo6cmVndHlwZTsKK1NFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZm9ybWF0dGVyX2NoYWluX3ZpZXcnOwotLSAK Mi41NC4wCgo= --0000000000007f28fa06555d9ca3 Content-Type: application/octet-stream; name="0001-Add-parser-support-for-CAST-FORMAT-syntax.patch" Content-Disposition: attachment; filename="0001-Add-parser-support-for-CAST-FORMAT-syntax.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqyrq4xu0 RnJvbSA4YmI3M2RiM2FlMGZkZWM0YzBiNTNkMGMzYjY3YTJjMzM0MGQ5MWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPHRyaXN0YW4ueWltQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyNCBKdW4gMjAyNiAxMjoyNDowMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBw YXJzZXIgc3VwcG9ydCBmb3IgQ0FTVCAuLi4gRk9STUFUCgpBZGQgZ3JhbW1hciBhbmQgcmF3IHBh cnNlLXRyZWUgc3VwcG9ydCBmb3IKCiAgICBDQVNUKGV4cHIgQVMgdHlwZSBGT1JNQVQgZm9ybWF0 X2V4cHIpCgpieSBzdG9yaW5nIHRoZSBGT1JNQVQgZXhwcmVzc2lvbiBpbiBUeXBlQ2FzdC4gIE9y ZGluYXJ5IGNhc3RzIGxlYXZlIHRoZQpuZXcgZmllbGQgdW5zZXQuCgpQYXJzZSBhbmFseXNpcyBz dGlsbCByZWplY3RzIGZvcm1hdHRlZCBjYXN0cyBpbiB0aGlzIHBhdGNoLiAgRm9ybWF0dGVyCnJl c29sdXRpb24gYW5kIGV4ZWN1dGlvbiBhcmUgYWRkZWQgbGF0ZXIsIHNvIHRoaXMgcGF0Y2ggb25s eSBlc3RhYmxpc2hlcwp0aGUgc3ludGF4IGFuZCBwYXJzZS1ub2RlIHJlcHJlc2VudGF0aW9uLgot LS0KIHNyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgIHwgIDIgKysKIHNy Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgIHwgIDcgKysrKysrKwogc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAgfCAxMyArKysrKysrKysrKysr CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICB8ICAxICsKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwcmVzc2lvbnMub3V0IHwgMjMgKysrKysrKysrKysrKysr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cHJlc3Npb25zLnNxbCAgICAgIHwgMTUg KysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jCmluZGV4IDJhMmUwMGIzNzJlLi42NjQ5NTU0NjE3OSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKQEAgLTQ1ODEsNiArNDU4MSw4IEBAIHJhd19leHByZXNzaW9uX3RyZWVfd2Fsa2Vy X2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKFdBTEsodGMtPnR5 cGVOYW1lKSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsodGMtPmZvcm1hdCkpCisJ CQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2xsYXRlQ2xhdXNl OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkKaW5kZXggZmY0ZTEzODhjNTUuLmVmNDg4MWVmYzgxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK QEAgLTE2Nzg3LDYgKzE2Nzg3LDEzIEBAIGZ1bmNfZXhwcl9jb21tb25fc3ViZXhwcjoKIAkJCQl9 CiAJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSAnKScKIAkJCQl7ICQkID0gbWFrZVR5 cGVDYXN0KCQzLCAkNSwgQDEpOyB9CisJCQl8IENBU1QgJygnIGFfZXhwciBBUyBUeXBlbmFtZSBG T1JNQVQgYV9leHByICcpJworCQkJCXsKKwkJCQkJVHlwZUNhc3QgICAqbiA9IChUeXBlQ2FzdCAq KSBtYWtlVHlwZUNhc3QoJDMsICQ1LCBAMSk7CisKKwkJCQkJbi0+Zm9ybWF0ID0gJDc7CisJCQkJ CSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8IEVYVFJBQ1QgJygnIGV4dHJhY3RfbGlzdCAn KScKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZUZ1bmNDYWxsKFN5c3RlbUZ1bmNOYW1l KCJleHRyYWN0IiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA5YWRjOWQ0YzBmNi4uMTcy OWJhNTYwMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtMjc0Myw2ICsyNzQzLDE5IEBA IHRyYW5zZm9ybVR5cGVDYXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVHlwZUNhc3QgKnRjKQogCWlu dDMyCQl0YXJnZXRUeXBtb2Q7CiAJaW50CQkJbG9jYXRpb247CiAKKwkvKgorCSAqIEZvcm1hdHRl ZCBjYXN0cyAoQ0FTVChleHByIEFTIHR5cGUgRk9STUFUIGZvcm1hdF9leHByKSkgYXJlIHBhcnNl ZCBhbmQKKwkgKiByZXByZXNlbnRlZCBpbiB0aGUgcGFyc2UgdHJlZSwgYnV0IGZvcm1hdHRlciBy ZXNvbHV0aW9uIGlzIG5vdCB5ZXQKKwkgKiBpbXBsZW1lbnRlZC4gIFJlamVjdCBzdWNoIGNhc3Rz IGhlcmUgcmF0aGVyIHRoYW4gc2lsZW50bHkgaWdub3JpbmcgdGhlCisJICogRk9STUFUIGNsYXVz ZS4KKwkgKi8KKwlpZiAodGMtPmZvcm1hdCAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJm b3JtYXR0ZWQgY2FzdHMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQiKSwKKwkJCQkgZXJyZGV0YWls KCJObyBmb3JtYXR0ZXIgcmVzb2x1dGlvbiBtZWNoYW5pc20gaXMgYXZhaWxhYmxlLiIpLAorCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBleHByTG9jYXRpb24odGMtPmZvcm1hdCkpKSk7 CisKIAkvKiBMb29rIHVwIHRoZSB0eXBlIG5hbWUgZmlyc3QgKi8KIAl0eXBlbmFtZVR5cGVJZEFu ZE1vZChwc3RhdGUsIHRjLT50eXBlTmFtZSwgJnRhcmdldFR5cGUsICZ0YXJnZXRUeXBtb2QpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNDEzM2M0MDRhNmIuLjc1OWM2YmZhZTU0IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC00MDIsNiArNDAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVHlw ZUNhc3QKIAlOb2RlVGFnCQl0eXBlOwogCU5vZGUJICAgKmFyZzsJCQkvKiB0aGUgZXhwcmVzc2lv biBiZWluZyBjYXN0ZWQgKi8KIAlUeXBlTmFtZSAgICp0eXBlTmFtZTsJCS8qIHRoZSB0YXJnZXQg dHlwZSAqLworCU5vZGUJICAgKmZvcm1hdDsJCQkvKiBGT1JNQVQgZXhwcmVzc2lvbiwgb3IgTlVM TCBpZiBub25lICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3Ig LTEgaWYgdW5rbm93biAqLwogfSBUeXBlQ2FzdDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9leHByZXNzaW9ucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2V4cHJlc3Npb25zLm91dAppbmRleCA3MzBmN2JjN2ViYS4uYjJkNzFkY2E0ZmEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwcmVzc2lvbnMub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwcmVzc2lvbnMub3V0CkBAIC01NjEsMyArNTYxLDI2IEBA IGZyb20gaW50dGVzdDsKICgzIHJvd3MpCiAKIHJvbGxiYWNrOworLS0KKy0tIENBU1QoZXhwciBB UyB0eXBlIEZPUk1BVCBmb3JtYXRfZXhwcikKKy0tCistLSBUaGUgRk9STUFUIGNsYXVzZSBpcyBw YXJzZWQgYW5kIHN0b3JlZCwgYnV0IGZvcm1hdHRlciByZXNvbHV0aW9uIGlzIG5vdAorLS0gaW1w bGVtZW50ZWQgeWV0LCBzbyBwYXJzZSBhbmFseXNpcyBtdXN0IHJlamVjdCBpdCAobm90IGlnbm9y ZSBpdCkuCistLSBiYXNpYyBmb3JtCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBG T1JNQVQgJ1lZWVktTU0tREQnKTsKK0VSUk9SOiAgZm9ybWF0dGVkIGNhc3RzIGFyZSBub3QgaW1w bGVtZW50ZWQgeWV0CitMSU5FIDE6IFNFTEVDVCBDQVNUKCcyMDI2LTA2LTI0JyBBUyBkYXRlIEZP Uk1BVCAnWVlZWS1NTS1ERCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorREVUQUlMOiAgTm8gZm9ybWF0dGVyIHJlc29sdXRpb24gbWVjaGFuaXNt IGlzIGF2YWlsYWJsZS4KKy0tIHRoZSBmb3JtYXQgbWF5IGJlIGEgZ2VuZXJhbCBleHByZXNzaW9u LCBub3QganVzdCBhIHN0cmluZyBsaXRlcmFsCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMg ZGF0ZSBGT1JNQVQgJ1lZWVknIHx8ICctTU0tREQnKTsKK0VSUk9SOiAgZm9ybWF0dGVkIGNhc3Rz IGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0CitMSU5FIDE6IFNFTEVDVCBDQVNUKCcyMDI2LTA2LTI0 JyBBUyBkYXRlIEZPUk1BVCAnWVlZWScgfHwgJy1NTS1ERCcpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgTm8gZm9ybWF0dGVyIHJl c29sdXRpb24gbWVjaGFuaXNtIGlzIGF2YWlsYWJsZS4KKy0tIGEgbm8tb3AtbG9va2luZyBjYXN0 IG11c3Qgc3RpbGwgYmUgcmVqZWN0ZWQsIG5vdCByZWxhYmVsZWQgYXdheQorU0VMRUNUIENBU1Qo J2FiYyc6OnRleHQgQVMgdGV4dCBGT1JNQVQgJ3doYXRldmVyJyk7CitFUlJPUjogIGZvcm1hdHRl ZCBjYXN0cyBhcmUgbm90IGltcGxlbWVudGVkIHlldAorTElORSAxOiBTRUxFQ1QgQ0FTVCgnYWJj Jzo6dGV4dCBBUyB0ZXh0IEZPUk1BVCAnd2hhdGV2ZXInKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgTm8gZm9ybWF0dGVyIHJlc29s dXRpb24gbWVjaGFuaXNtIGlzIGF2YWlsYWJsZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2V4cHJlc3Npb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cHJlc3Npb25z LnNxbAppbmRleCAzYjMwNDhmOTczMS4uZmIwNTk5MGVkMmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2V4cHJlc3Npb25zLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9l eHByZXNzaW9ucy5zcWwKQEAgLTMwMSwzICszMDEsMTggQEAgc2VsZWN0CiBmcm9tIGludHRlc3Q7 CiAKIHJvbGxiYWNrOworCistLQorLS0gQ0FTVChleHByIEFTIHR5cGUgRk9STUFUIGZvcm1hdF9l eHByKQorLS0KKy0tIFRoZSBGT1JNQVQgY2xhdXNlIGlzIHBhcnNlZCBhbmQgc3RvcmVkLCBidXQg Zm9ybWF0dGVyIHJlc29sdXRpb24gaXMgbm90CistLSBpbXBsZW1lbnRlZCB5ZXQsIHNvIHBhcnNl IGFuYWx5c2lzIG11c3QgcmVqZWN0IGl0IChub3QgaWdub3JlIGl0KS4KKworLS0gYmFzaWMgZm9y bQorU0VMRUNUIENBU1QoJzIwMjYtMDYtMjQnIEFTIGRhdGUgRk9STUFUICdZWVlZLU1NLUREJyk7 CisKKy0tIHRoZSBmb3JtYXQgbWF5IGJlIGEgZ2VuZXJhbCBleHByZXNzaW9uLCBub3QganVzdCBh IHN0cmluZyBsaXRlcmFsCitTRUxFQ1QgQ0FTVCgnMjAyNi0wNi0yNCcgQVMgZGF0ZSBGT1JNQVQg J1lZWVknIHx8ICctTU0tREQnKTsKKworLS0gYSBuby1vcC1sb29raW5nIGNhc3QgbXVzdCBzdGls bCBiZSByZWplY3RlZCwgbm90IHJlbGFiZWxlZCBhd2F5CitTRUxFQ1QgQ0FTVCgnYWJjJzo6dGV4 dCBBUyB0ZXh0IEZPUk1BVCAnd2hhdGV2ZXInKTsKLS0gCjIuNTQuMAoK --0000000000007f28fa06555d9ca3 Content-Type: application/octet-stream; name="0002-Add-pg_formatter-catalog-and-CREATE-DROP-FORMATTER.patch" Content-Disposition: attachment; filename="0002-Add-pg_formatter-catalog-and-CREATE-DROP-FORMATTER.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqyrq4y31 RnJvbSA3MGQzNmU4ZmQxMzg3MjMzY2MwMWY1YWExMzBiZGM4ZjhkM2NjZDEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYWlibyBZYW4gPHRyaXN0YW4ueWltQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyNCBKdW4gMjAyNiAxNDo1Mjo0NiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBw Z19mb3JtYXR0ZXIgYW5kIENSRUFURS9EUk9QIEZPUk1BVFRFUgoKQWRkIHBnX2Zvcm1hdHRlciwg YSBjYXRhbG9nIGZvciByZWdpc3RlcmluZyBmb3JtYXR0ZWQgY29udmVyc2lvbnMgYnkKc291cmNl IGFuZCB0YXJnZXQgdHlwZS4gIEEgZm9ybWF0dGVyIGZ1bmN0aW9uIGhhcyB0aGUgc2lnbmF0dXJl CgogICAgZm9ybWF0dGVyKHNvdXJjZV90eXBlLCB0ZXh0KSByZXR1cm5zIHRhcmdldF90eXBlCgp3 aGVyZSB0aGUgc2Vjb25kIGFyZ3VtZW50IHJlY2VpdmVzIHRoZSBGT1JNQVQgZXhwcmVzc2lvbiBj b2VyY2VkIHRvIHRleHQuCgpBZGQgQ1JFQVRFIEZPUk1BVFRFUiBhbmQgRFJPUCBGT1JNQVRURVIs IHN5c2NhY2hlIHN1cHBvcnQsIG9iamVjdC1hZGRyZXNzCmFuZCBkZXBlbmRlbmN5IGhhbmRsaW5n LCBhbmQgcGdfZHVtcCBzdXBwb3J0LiAgRm9ybWF0dGVyIG9iamVjdHMgYXJlCnNlcGFyYXRlIGZy b20gcGdfY2FzdCBiZWNhdXNlIGZvcm1hdHRlZCBjYXN0cyBhcmUgYWx3YXlzIGV4cGxpY2l0LApm dW5jdGlvbi1iYWNrZWQsIGFuZCBrZXllZCBieSBhIHNvdXJjZS90YXJnZXQgdHlwZSBwYWlyIHJh dGhlciB0aGFuIGJ5Cm9yZGluYXJ5IGNhc3Qgc2VtYW50aWNzIHN1Y2ggYXMgaW1wbGljaXQsIGFz c2lnbm1lbnQsIGJpbmFyeSwgb3IgaW4vb3V0CmNhc3RzLgoKVGhpcyBwYXRjaCBvbmx5IGFkZHMg Y2F0YWxvZyBhbmQgRERMIGluZnJhc3RydWN0dXJlLiAgQ0FTVCAuLi4gRk9STUFUCmV4ZWN1dGlv biBpcyBhZGRlZCBzZXBhcmF0ZWx5LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgfCAgODMgKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dt bCAgICAgICAgICAgfCAgIDIgKwogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9ybWF0dGVyLnNn bWwgICB8IDEzMSArKysrKysrKysrKysKIGRvYy9zcmMvc2dtbC9yZWYvZHJvcF9mb3JtYXR0ZXIu c2dtbCAgICAgfCAxMjYgKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAgIHwgMTA1ICsr KysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYyAgICAgICAgICB8ICAyMiArKwogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9mb3JtYXR0ZXJjbWRzLmMgICAgIHwgMjQ1ICsrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZCAgICAgICAgIHwgICAxICsKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICB8ICA0MCArKystCiBzcmMvYmFja2VuZC90 Y29wL3V0aWxpdHkuYyAgICAgICAgICAgICAgIHwgIDE3ICsrCiBzcmMvYmluL3BnX2R1bXAvY29t bW9uLmMgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMg ICAgICAgICAgICAgICAgfCAxNjYgKysrKysrKysrKysrKysrCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oICAgICAgICAgICAgICAgIHwgIDEwICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3Nv cnQuYyAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCAgICAgICAg IHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfZm9ybWF0dGVyLmggICAgICAgfCAgNjIgKysrKysr CiBzcmMvaW5jbHVkZS9jb21tYW5kcy9mb3JtYXR0ZXIuaCAgICAgICAgIHwgIDI0ICsrKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICB8ICAxNyArKwogc3JjL2luY2x1 ZGUvcGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS90Y29w L2NtZHRhZ2xpc3QuaCAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9ybWF0dGVycy5vdXQgfCAxMTYgKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvb2lkam9pbnMub3V0ICAgfCAgIDMgKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZSAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9ybWF0dGVycy5z cWwgICAgICB8ICA5OSArKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 ICAgICAgICAgfCAgIDQgKwogMzMgZmlsZXMgY2hhbmdlZCwgMTMwMCBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2Zvcm1hdHRlci5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL3NyYy9zZ21sL3JlZi9kcm9w X2Zvcm1hdHRlci5zZ21sCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMv Zm9ybWF0dGVyY21kcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19mb3JtYXR0ZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL2NvbW1hbmRzL2Zv cm1hdHRlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9m b3JtYXR0ZXJzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zv cm1hdHRlcnMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0YjQ3NGMxMzkxNy4uNzVmNGU0ODQwZmQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCkBAIC0xNzAsNiArMTcwLDExIEBACiAgICAgICA8ZW50cnk+YWRkaXRp b25hbCBmb3JlaWduIHRhYmxlIGluZm9ybWF0aW9uPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWZvcm1hdHRl ciI+PHN0cnVjdG5hbWU+cGdfZm9ybWF0dGVyPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5Pgor ICAgICAgPGVudHJ5PmZvcm1hdHRlciBmdW5jdGlvbnMgZm9yIGZvcm1hdHRlZCBjYXN0czwvZW50 cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2Vu ZD0iY2F0YWxvZy1wZy1pbmRleCI+PHN0cnVjdG5hbWU+cGdfaW5kZXg8L3N0cnVjdG5hbWU+PC9s aW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+YWRkaXRpb25hbCBpbmRleCBpbmZvcm1hdGlvbjwv ZW50cnk+CkBAIC00MzkxLDYgKzQzOTYsODQgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+ Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICA8 L3NlY3QxPgogCiAKKyA8c2VjdDEgaWQ9ImNhdGFsb2ctcGctZm9ybWF0dGVyIj4KKyAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX2Zvcm1hdHRlcjwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRl eHRlcm0gem9uZT0iY2F0YWxvZy1wZy1mb3JtYXR0ZXIiPgorICAgPHByaW1hcnk+cGdfZm9ybWF0 dGVyPC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFRoZSBjYXRhbG9n IDxzdHJ1Y3RuYW1lPnBnX2Zvcm1hdHRlcjwvc3RydWN0bmFtZT4gc3RvcmVzIGZvcm1hdHRpbmcK KyAgIGNvbnZlcnNpb24gZnVuY3Rpb25zIGZvciBmb3JtYXR0ZWQgY2FzdHMuICBBIGZvcm1hdHRl ciBpcyBpZGVudGlmaWVkIGJ5IGEKKyAgIHNvdXJjZSB0eXBlIGFuZCBhIHRhcmdldCB0eXBlLiAg VGhlIGFzc29jaWF0ZWQgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlCisgICBzb3VyY2UgdmFs dWUgYW5kIHRoZSA8bGl0ZXJhbD5GT1JNQVQ8L2xpdGVyYWw+IGV4cHJlc3Npb24gY29lcmNlZCB0 bworICAgPHR5cGU+dGV4dDwvdHlwZT4sIGFuZCByZXR1cm5zIHRoZSB0YXJnZXQgdHlwZS4gIEF0 IG1vc3Qgb25lIGZvcm1hdHRlcgorICAgZXhpc3RzIGZvciBhbnkgZ2l2ZW4gcGFpciBvZiBzb3Vy Y2UgYW5kIHRhcmdldCB0eXBlcy4gIFNlZSA8eHJlZgorICAgbGlua2VuZD0ic3FsLWNyZWF0ZWZv cm1hdHRlciIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4K KyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19mb3JtYXR0ZXI8L3N0cnVjdG5hbWU+IENvbHVtbnM8 L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mbXRzb3VyY2U8L3N0cnVjdGZpZWxkPiA8dHlw ZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1w Zy10eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZp ZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgT0lEIG9mIHRoZSBzb3VyY2UgZGF0YSB0eXBlIG9mIHRoZSBmb3JtYXR0ZWQgY2FzdAorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50 cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mbXR0YXJnZXQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5v aWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy10 eXBlIj48c3RydWN0bmFtZT5wZ190eXBlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk Pm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAg T0lEIG9mIHRoZSB0YXJnZXQgZGF0YSB0eXBlIG9mIHRoZSBmb3JtYXR0ZWQgY2FzdAorICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5mbXRmdW5jPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90 eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHJvYyI+ PHN0cnVjdG5hbWU+cGdfcHJvYzwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8 L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE9JRCBv ZiB0aGUgZm9ybWF0dGVyIGZ1bmN0aW9uLCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZQorICAgICAg IDxyZXBsYWNlYWJsZT5mdW5jdGlvbjwvcmVwbGFjZWFibGU+KDxyZXBsYWNlYWJsZT5zb3VyY2Vf dHlwZTwvcmVwbGFjZWFibGU+LCA8dHlwZT50ZXh0PC90eXBlPikKKyAgICAgICByZXR1cm5pbmcg PHJlcGxhY2VhYmxlPnRhcmdldF90eXBlPC9yZXBsYWNlYWJsZT4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+ CisgPC9zZWN0MT4KKworCiAgPHNlY3QxIGlkPSJjYXRhbG9nLXBnLWluZGV4Ij4KICAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX2luZGV4PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWxsZmls ZXMuc2dtbAppbmRleCBlMWE1NmMzNjIyMS4uYjBiZGE1NGQ4N2IgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvYWxsZmlsZXMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsbGZpbGVz LnNnbWwKQEAgLTcwLDYgKzcwLDcgQEAgQ29tcGxldGUgbGlzdCBvZiB1c2FibGUgc2dtbCBzb3Vy Y2UgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCiA8IUVOVElUWSBjcmVhdGVFeHRlbnNpb24gICAg U1lTVEVNICJjcmVhdGVfZXh0ZW5zaW9uLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlRm9yZWlnbkRh dGFXcmFwcGVyIFNZU1RFTSAiY3JlYXRlX2ZvcmVpZ25fZGF0YV93cmFwcGVyLnNnbWwiPgogPCFF TlRJVFkgY3JlYXRlRm9yZWlnblRhYmxlIFNZU1RFTSAiY3JlYXRlX2ZvcmVpZ25fdGFibGUuc2dt bCI+Cis8IUVOVElUWSBjcmVhdGVGb3JtYXR0ZXIgICAgU1lTVEVNICJjcmVhdGVfZm9ybWF0dGVy LnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlRnVuY3Rpb24gICAgIFNZU1RFTSAiY3JlYXRlX2Z1bmN0 aW9uLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlR3JvdXAgICAgICAgIFNZU1RFTSAiY3JlYXRlX2dy b3VwLnNnbWwiPgogPCFFTlRJVFkgY3JlYXRlSW5kZXggICAgICAgIFNZU1RFTSAiY3JlYXRlX2lu ZGV4LnNnbWwiPgpAQCAtMTE4LDYgKzExOSw3IEBAIENvbXBsZXRlIGxpc3Qgb2YgdXNhYmxlIHNn bWwgc291cmNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LgogPCFFTlRJVFkgZHJvcEV4dGVuc2lv biAgICAgIFNZU1RFTSAiZHJvcF9leHRlbnNpb24uc2dtbCI+CiA8IUVOVElUWSBkcm9wRm9yZWln bkRhdGFXcmFwcGVyIFNZU1RFTSAiZHJvcF9mb3JlaWduX2RhdGFfd3JhcHBlci5zZ21sIj4KIDwh RU5USVRZIGRyb3BGb3JlaWduVGFibGUgICBTWVNURU0gImRyb3BfZm9yZWlnbl90YWJsZS5zZ21s Ij4KKzwhRU5USVRZIGRyb3BGb3JtYXR0ZXIgICAgICBTWVNURU0gImRyb3BfZm9ybWF0dGVyLnNn bWwiPgogPCFFTlRJVFkgZHJvcEZ1bmN0aW9uICAgICAgIFNZU1RFTSAiZHJvcF9mdW5jdGlvbi5z Z21sIj4KIDwhRU5USVRZIGRyb3BHcm91cCAgICAgICAgICBTWVNURU0gImRyb3BfZ3JvdXAuc2dt bCI+CiA8IUVOVElUWSBkcm9wSW5kZXggICAgICAgICAgU1lTVEVNICJkcm9wX2luZGV4LnNnbWwi PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9ybWF0dGVyLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JtYXR0ZXIuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMjY4YjUzZTdkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9mb3JtYXR0ZXIuc2dtbApAQCAtMCwwICsxLDEzMSBAQAorPCEt LQorZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfZm9ybWF0dGVyLnNnbWwKK1Bvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgorLS0+CisKKzxyZWZlbnRyeSBpZD0ic3FsLWNyZWF0ZWZvcm1hdHRlciI+Cisg PGluZGV4dGVybSB6b25lPSJzcWwtY3JlYXRlZm9ybWF0dGVyIj4KKyAgPHByaW1hcnk+Q1JFQVRF IEZPUk1BVFRFUjwvcHJpbWFyeT4KKyA8L2luZGV4dGVybT4KKworIDxyZWZtZXRhPgorICA8cmVm ZW50cnl0aXRsZT5DUkVBVEUgRk9STUFUVEVSPC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVt Pjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2NpbmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8 L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4KKworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5D UkVBVEUgRk9STUFUVEVSPC9yZWZuYW1lPgorICA8cmVmcHVycG9zZT5kZWZpbmUgYSBuZXcgZm9y bWF0dGVyIGZvciBhIGZvcm1hdHRlZCBjYXN0PC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRpdj4K KworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0NSRUFURSBGT1JNQVRURVIgRk9SIENB U1QgKDxyZXBsYWNlYWJsZT5zb3VyY2VfdHlwZTwvcmVwbGFjZWFibGU+IEFTIDxyZXBsYWNlYWJs ZT50YXJnZXRfdHlwZTwvcmVwbGFjZWFibGU+KQorICAgIFdJVEggRlVOQ1RJT04gPHJlcGxhY2Vh YmxlPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiBbICg8cmVwbGFjZWFibGU+YXJndW1lbnRf dHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pIF0KKzwvc3lub3BzaXM+CisgPC9yZWZzeW5vcHNp c2Rpdj4KKworIDxyZWZzZWN0MSBpZD0ic3FsLWNyZWF0ZWZvcm1hdHRlci1kZXNjcmlwdGlvbiI+ CisgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgPHBhcmE+CisgICA8Y29tbWFuZD5D UkVBVEUgRk9STUFUVEVSPC9jb21tYW5kPiBkZWZpbmVzIGEgZm9ybWF0dGluZyBjb252ZXJzaW9u IGZvcgorICAgPGxpdGVyYWw+Q0FTVCg8cmVwbGFjZWFibGU+ZXhwcjwvcmVwbGFjZWFibGU+IEFT IDxyZXBsYWNlYWJsZT50YXJnZXRfdHlwZTwvcmVwbGFjZWFibGU+IEZPUk1BVCA8cmVwbGFjZWFi bGU+Zm9ybWF0X2V4cHI8L3JlcGxhY2VhYmxlPik8L2xpdGVyYWw+LgorICAgQSBmb3JtYXR0ZXIg aXMgc2VsZWN0ZWQgYnkgdGhlIHNvdXJjZSB0eXBlIGFuZCB0YXJnZXQgdHlwZSBvZiB0aGUgY2Fz dC4KKyAgIFVubGlrZSBhbiBvcmRpbmFyeSBjYXN0IChzZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNy ZWF0ZWNhc3QiLz4pLCBhIGZvcm1hdHRlZAorICAgY2FzdCBpcyBhbHdheXMgZXhwbGljaXQgYW5k IGFsd2F5cyB1c2VzIGEgZnVuY3Rpb24sIGFuZCB0aGUgZnVuY3Rpb24KKyAgIGFkZGl0aW9uYWxs eSByZWNlaXZlcyB0aGUgPGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPiBleHByZXNzaW9uLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgZm9ybWF0dGVyIGZ1bmN0aW9uIG11c3QgdGFrZSBl eGFjdGx5IHR3byBhcmd1bWVudHMgYW5kIHJldHVybiB0aGUKKyAgIHRhcmdldCB0eXBlOgorPHN5 bm9wc2lzPgorPHJlcGxhY2VhYmxlPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPig8cmVwbGFj ZWFibGU+c291cmNlX3R5cGU8L3JlcGxhY2VhYmxlPiwgdGV4dCkgUkVUVVJOUyA8cmVwbGFjZWFi bGU+dGFyZ2V0X3R5cGU8L3JlcGxhY2VhYmxlPgorPC9zeW5vcHNpcz4KKyAgIFRoZSBmaXJzdCBh cmd1bWVudCBpcyB0aGUgdmFsdWUgYmVpbmcgZm9ybWF0dGVkLCBhbmQgdGhlIHNlY29uZCBhcmd1 bWVudAorICAgcmVjZWl2ZXMgdGhlIDxsaXRlcmFsPkZPUk1BVDwvbGl0ZXJhbD4gZXhwcmVzc2lv biBjb2VyY2VkIHRvCisgICA8dHlwZT50ZXh0PC90eXBlPi4gIE9ubHkgb25lIGZvcm1hdHRlciBt YXkgYmUgcmVnaXN0ZXJlZCBmb3IgYSBnaXZlbgorICAgPGxpdGVyYWw+KDxyZXBsYWNlYWJsZT5z b3VyY2VfdHlwZTwvcmVwbGFjZWFibGU+LAorICAgPHJlcGxhY2VhYmxlPnRhcmdldF90eXBlPC9y ZXBsYWNlYWJsZT4pPC9saXRlcmFsPiBwYWlyLiAgTmVpdGhlciB0aGUgc291cmNlCisgICB0eXBl IG5vciB0aGUgdGFyZ2V0IHR5cGUgbWF5IGJlIGEgcHNldWRvLXR5cGUuCisgIDwvcGFyYT4KKwor ICA8cGFyYT4KKyAgIFRvIGNyZWF0ZSBhIGZvcm1hdHRlciwgeW91IG11c3QgYmUgdGhlIG93bmVy IG9mIHRoZSBzb3VyY2UgdHlwZSBvciB0aGUKKyAgIHRhcmdldCB0eXBlLCBhbmQgeW91IG11c3Qg aGF2ZSA8bGl0ZXJhbD5FWEVDVVRFPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24gdGhlCisgICBmb3Jt YXR0ZXIgZnVuY3Rpb24uCisgIDwvcGFyYT4KKyA8L3JlZnNlY3QxPgorCisgPHJlZnNlY3QxPgor ICA8dGl0bGU+UGFyYW1ldGVyczwvdGl0bGU+CisKKyAgIDx2YXJpYWJsZWxpc3Q+CisgICAgPHZh cmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnNvdXJjZV90eXBlPC9yZXBsYWNl YWJsZT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBk YXRhIHR5cGUgb2YgdGhlIHZhbHVlIHBhc3NlZCB0byB0aGUgZm9ybWF0dGVyICh0aGUgc291cmNl IG9mIHRoZQorICAgICAgIGNhc3QpLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgor ICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PHJl cGxhY2VhYmxlPnRhcmdldF90eXBlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBkYXRhIHR5cGUgcmV0dXJuZWQgYnkgdGhlIGZv cm1hdHRlciAodGhlIHRhcmdldCBvZiB0aGUgY2FzdCkuCisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAg ICA8dGVybT48cmVwbGFjZWFibGU+ZnVuY3Rpb25fbmFtZTwvcmVwbGFjZWFibGU+Wyg8cmVwbGFj ZWFibGU+YXJndW1lbnRfdHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pXTwvdGVybT4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIGZ1bmN0aW9uIHVzZWQgdG8gcGVy Zm9ybSB0aGUgZm9ybWF0dGVkIGNhc3QuICBUaGUgYXJndW1lbnQgbGlzdCwgaWYKKyAgICAgICBn aXZlbiwgbXVzdCBuYW1lIHRoZSB0d28gYXJndW1lbnQgdHlwZXMKKyAgICAgICAoPHJlcGxhY2Vh YmxlPnNvdXJjZV90eXBlPC9yZXBsYWNlYWJsZT4gYW5kIDx0eXBlPnRleHQ8L3R5cGU+KS4KKyAg ICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDwv dmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDEgaWQ9InNxbC1jcmVhdGVm b3JtYXR0ZXItZXhhbXBsZXMiPgorICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgIDxwYXJh PgorICAgUmVnaXN0ZXIgYSBmb3JtYXR0ZXIgdGhhdCBjb252ZXJ0cyBhbiA8dHlwZT5pbnRlZ2Vy PC90eXBlPiB0bworICAgPHR5cGU+dGV4dDwvdHlwZT4gdXNpbmcgdGhlIHN1cHBsaWVkIGZvcm1h dCBzdHJpbmc6Cis8cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgRlVOQ1RJT04gaW50NF90b190ZXh0 X2ZtdChpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIHRleHQKKyAgICBMQU5HVUFHRSBzcWwgSU1NVVRB QkxFIFJFVFVSTiAkMTo6dGV4dCB8fCAnOicgfHwgJDI7CisKK0NSRUFURSBGT1JNQVRURVIgRk9S IENBU1QgKGludGVnZXIgQVMgdGV4dCkKKyAgICBXSVRIIEZVTkNUSU9OIGludDRfdG9fdGV4dF9m bXQoaW50ZWdlciwgdGV4dCk7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKyA8L3JlZnNlY3Qx PgorCisgPHJlZnNlY3QxIGlkPSJzcWwtY3JlYXRlZm9ybWF0dGVyLWNvbXBhdCI+CisgIDx0aXRs ZT5Db21wYXRpYmlsaXR5PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkNSRUFURSBG T1JNQVRURVI8L2NvbW1hbmQ+IGlzIGEKKyAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9k dWN0bmFtZT4gZXh0ZW5zaW9uLgorICA8L3BhcmE+CisgPC9yZWZzZWN0MT4KKworIDxyZWZzZWN0 MT4KKyAgPHRpdGxlPlNlZSBBbHNvPC90aXRsZT4KKworICA8c2ltcGxlbGlzdCB0eXBlPSJpbmxp bmUiPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtZHJvcGZvcm1hdHRlciIvPjwvbWVt YmVyPgorICAgPG1lbWJlcj48eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlY2FzdCIvPjwvbWVtYmVy PgorICA8L3NpbXBsZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcF9mb3JtYXR0ZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvZHJvcF9mb3JtYXR0ZXIuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYjdmMzY3YTU5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ry b3BfZm9ybWF0dGVyLnNnbWwKQEAgLTAsMCArMSwxMjYgQEAKKzwhLS0KK2RvYy9zcmMvc2dtbC9y ZWYvZHJvcF9mb3JtYXR0ZXIuc2dtbAorUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCistLT4KKwor PHJlZmVudHJ5IGlkPSJzcWwtZHJvcGZvcm1hdHRlciI+CisgPGluZGV4dGVybSB6b25lPSJzcWwt ZHJvcGZvcm1hdHRlciI+CisgIDxwcmltYXJ5PkRST1AgRk9STUFUVEVSPC9wcmltYXJ5PgorIDwv aW5kZXh0ZXJtPgorCisgPHJlZm1ldGE+CisgIDxyZWZlbnRyeXRpdGxlPkRST1AgRk9STUFUVEVS PC9yZWZlbnRyeXRpdGxlPgorICA8bWFudm9sbnVtPjc8L21hbnZvbG51bT4KKyAgPHJlZm1pc2Np bmZvPlNRTCAtIExhbmd1YWdlIFN0YXRlbWVudHM8L3JlZm1pc2NpbmZvPgorIDwvcmVmbWV0YT4K KworIDxyZWZuYW1lZGl2PgorICA8cmVmbmFtZT5EUk9QIEZPUk1BVFRFUjwvcmVmbmFtZT4KKyAg PHJlZnB1cnBvc2U+cmVtb3ZlIGEgZm9ybWF0dGVyPC9yZWZwdXJwb3NlPgorIDwvcmVmbmFtZWRp dj4KKworIDxyZWZzeW5vcHNpc2Rpdj4KKzxzeW5vcHNpcz4KK0RST1AgRk9STUFUVEVSIFsgSUYg RVhJU1RTIF0gRk9SIENBU1QgKDxyZXBsYWNlYWJsZT5zb3VyY2VfdHlwZTwvcmVwbGFjZWFibGU+ IEFTIDxyZXBsYWNlYWJsZT50YXJnZXRfdHlwZTwvcmVwbGFjZWFibGU+KSBbIENBU0NBREUgfCBS RVNUUklDVCBdCis8L3N5bm9wc2lzPgorIDwvcmVmc3lub3BzaXNkaXY+CisKKyA8cmVmc2VjdDEg aWQ9InNxbC1kcm9wZm9ybWF0dGVyLWRlc2NyaXB0aW9uIj4KKyAgPHRpdGxlPkRlc2NyaXB0aW9u PC90aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgRk9STUFUVEVSPC9jb21tYW5k PiByZW1vdmVzIGEgcHJldmlvdXNseSBkZWZpbmVkIGZvcm1hdHRlciBmb3IKKyAgIHRoZSBnaXZl biBwYWlyIG9mIHNvdXJjZSBhbmQgdGFyZ2V0IHR5cGVzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+ CisgICBEcm9wcGluZyBhIGZvcm1hdHRlciByZXF1aXJlcyBvd25lcnNoaXAgb2YgZWl0aGVyIHRo ZSBzb3VyY2UgdHlwZSBvciB0aGUKKyAgIHRhcmdldCB0eXBlLgorICA8L3BhcmE+CisgPC9yZWZz ZWN0MT4KKworIDxyZWZzZWN0MT4KKyAgPHRpdGxlPlBhcmFtZXRlcnM8L3RpdGxlPgorCisgICA8 dmFyaWFibGVsaXN0PgorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPklG IEVYSVNUUzwvbGl0ZXJhbD48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgor ICAgICAgIERvIG5vdCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgZm9ybWF0dGVyIGRvZXMgbm90IGV4 aXN0LiAgQSBub3RpY2UgaXMKKyAgICAgICBpc3N1ZWQgaW4gdGhpcyBjYXNlLgorICAgICAgPC9w YXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgPHRlcm0+PHJlcGxhY2VhYmxlPnNvdXJjZV90eXBlPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBzb3Vy Y2UgZGF0YSB0eXBlIG9mIHRoZSBmb3JtYXR0ZXIuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8 dGVybT48cmVwbGFjZWFibGU+dGFyZ2V0X3R5cGU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICAg PGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIHRhcmdldCBkYXRhIHR5cGUgb2Yg dGhlIGZvcm1hdHRlci4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zh cmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJtPjxsaXRlcmFsPkNB U0NBREU8L2xpdGVyYWw+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAg ICAgICBBdXRvbWF0aWNhbGx5IGRyb3Agb2JqZWN0cyB0aGF0IGRlcGVuZCBvbiB0aGUgZm9ybWF0 dGVyLAorICAgICAgIGFuZCBpbiB0dXJuIGFsbCBvYmplY3RzIHRoYXQgZGVwZW5kIG9uIHRob3Nl IG9iamVjdHMKKyAgICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgorICAg ICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAg PHZhcmxpc3RlbnRyeT4KKyAgICAgPHRlcm0+PGxpdGVyYWw+UkVTVFJJQ1Q8L2xpdGVyYWw+PC90 ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBSZWZ1c2UgdG8gZHJv cCB0aGUgZm9ybWF0dGVyIGlmIGFueSBvYmplY3RzIGRlcGVuZCBvbiBpdC4gIFRoaXMgaXMgdGhl CisgICAgICAgZGVmYXVsdC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8 L3Zhcmxpc3RlbnRyeT4KKyAgIDwvdmFyaWFibGVsaXN0PgorIDwvcmVmc2VjdDE+CisKKyA8cmVm c2VjdDEgaWQ9InNxbC1kcm9wZm9ybWF0dGVyLWV4YW1wbGVzIj4KKyAgPHRpdGxlPkV4YW1wbGVz PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRvIGRyb3AgdGhlIGZvcm1hdHRlciBmb3IgdGhlIGNh c3QgZnJvbSA8dHlwZT5pbnRlZ2VyPC90eXBlPiB0bworICAgPHR5cGU+dGV4dDwvdHlwZT46Cis8 cHJvZ3JhbWxpc3Rpbmc+CitEUk9QIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0 KTsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDEg aWQ9InNxbC1kcm9wZm9ybWF0dGVyLWNvbXBhdCI+CisgIDx0aXRsZT5Db21wYXRpYmlsaXR5PC90 aXRsZT4KKworICA8cGFyYT4KKyAgIDxjb21tYW5kPkRST1AgRk9STUFUVEVSPC9jb21tYW5kPiBp cyBhCisgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGV4dGVuc2lvbi4g IFNlZSA8eHJlZgorICAgbGlua2VuZD0ic3FsLWNyZWF0ZWZvcm1hdHRlciIvPiBmb3IgZGV0YWls cy4KKyAgPC9wYXJhPgorIDwvcmVmc2VjdDE+CisKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5TZWUg QWxzbzwvdGl0bGU+CisKKyAgPHNpbXBsZWxpc3QgdHlwZT0iaW5saW5lIj4KKyAgIDxtZW1iZXI+ PHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZWZvcm1hdHRlciIvPjwvbWVtYmVyPgorICA8L3NpbXBs ZWxpc3Q+CisgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWZlcmVuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWZlcmVuY2Uuc2dtbAppbmRleCA2 NzRhYzE3ZTgyYy4uYTFkMDU1NTA5YzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWZlcmVu Y2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmZXJlbmNlLnNnbWwKQEAgLTk4LDYgKzk4LDcg QEAKICAgICZjcmVhdGVFeHRlbnNpb247CiAgICAmY3JlYXRlRm9yZWlnbkRhdGFXcmFwcGVyOwog ICAgJmNyZWF0ZUZvcmVpZ25UYWJsZTsKKyAgICZjcmVhdGVGb3JtYXR0ZXI7CiAgICAmY3JlYXRl RnVuY3Rpb247CiAgICAmY3JlYXRlR3JvdXA7CiAgICAmY3JlYXRlSW5kZXg7CkBAIC0xNDYsNiAr MTQ3LDcgQEAKICAgICZkcm9wRXh0ZW5zaW9uOwogICAgJmRyb3BGb3JlaWduRGF0YVdyYXBwZXI7 CiAgICAmZHJvcEZvcmVpZ25UYWJsZTsKKyAgICZkcm9wRm9ybWF0dGVyOwogICAgJmRyb3BGdW5j dGlvbjsKICAgICZkcm9wR3JvdXA7CiAgICAmZHJvcEluZGV4OwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKaW5k ZXggMDA3ZWRlOTk3YzUuLjBmMDIxMWRkNmMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL2FjbGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKQEAgLTI3OTQs NiArMjc5NCw3IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUg b2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfQU1QUk9DOgogCQkJCQljYXNlIE9CSkVDVF9BVFRS SUJVVEU6CiAJCQkJCWNhc2UgT0JKRUNUX0NBU1Q6CisJCQkJCWNhc2UgT0JKRUNUX0ZPUk1BVFRF UjoKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQVVMVDoKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQUNMOgog CQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgpAQCAtMjkzNyw2ICsyOTM4LDcgQEAgYWNs Y2hlY2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQlj YXNlIE9CSkVDVF9BTVBST0M6CiAJCQkJCWNhc2UgT0JKRUNUX0FUVFJJQlVURToKIAkJCQkJY2Fz ZSBPQkpFQ1RfQ0FTVDoKKwkJCQkJY2FzZSBPQkpFQ1RfRk9STUFUVEVSOgogCQkJCQljYXNlIE9C SkVDVF9ERUZBVUxUOgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNU X0RPTUNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVu Y3kuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IGM1NDc3NGIzMjc1 Li43ZWVhYzkxMjY0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQxLDYgKzQxLDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2V4dGVuc2lvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25f c2VydmVyLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JtYXR0ZXIuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX2luaXRfcHJpdnMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhbmd1YWdlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdC5oIgpAQCAtMTUzNCw2ICsxNTM1LDcg QEAgZG9EZWxldGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGludCBmbGFncykKIAkJ Y2FzZSBEZWZhdWx0QWNsUmVsYXRpb25JZDoKIAkJY2FzZSBFdmVudFRyaWdnZXJSZWxhdGlvbklk OgogCQljYXNlIFRyYW5zZm9ybVJlbGF0aW9uSWQ6CisJCWNhc2UgRm9ybWF0dGVyUmVsYXRpb25J ZDoKIAkJY2FzZSBBdXRoTWVtUmVsYXRpb25JZDoKIAkJCURyb3BPYmplY3RCeUlkKG9iamVjdCk7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVz cy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKaW5kZXggYWYwZTQ3MDM2 MTYuLmZjZjM4ZGI4YzU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFk ZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpAQCAtMzcs NiArMzcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19mb3JlaWduX2RhdGFfd3JhcHBlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf Zm9yZWlnbl9zZXJ2ZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2Zvcm1hdHRlci5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfbGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdl b2JqZWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9tZXRhZGF0YS5oIgpA QCAtNzAsNiArNzEsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24u aCIKKyNpbmNsdWRlICJjb21tYW5kcy9mb3JtYXR0ZXIuaCIKICNpbmNsdWRlICJjb21tYW5kcy9w b2xpY3kuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9jbGFuZy5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3RhYmxlc3BhY2UuaCIKQEAgLTE3OSw2ICsxODEsMjAgQEAgc3RhdGljIGNvbnN0IE9iamVj dFByb3BlcnR5VHlwZSBPYmplY3RQcm9wZXJ0eVtdID0KIAkJT0JKRUNUX0NBU1QsCiAJCWZhbHNl CiAJfSwKKwl7CisJCSJmb3JtYXR0ZXIiLAorCQlGb3JtYXR0ZXJSZWxhdGlvbklkLAorCQlGb3Jt YXR0ZXJPaWRJbmRleElkLAorCQlGT1JNQVRURVJPSUQsCisJCVNZU0NBQ0hFSURfSU5WQUxJRCwK KwkJQW51bV9wZ19mb3JtYXR0ZXJfb2lkLAorCQlJbnZhbGlkQXR0ck51bWJlciwKKwkJSW52YWxp ZEF0dHJOdW1iZXIsCisJCUludmFsaWRBdHRyTnVtYmVyLAorCQlJbnZhbGlkQXR0ck51bWJlciwK KwkJT0JKRUNUX0ZPUk1BVFRFUiwKKwkJZmFsc2UKKwl9LAogCXsKIAkJImNvbGxhdGlvbiIsCiAJ CUNvbGxhdGlvblJlbGF0aW9uSWQsCkBAIC03OTYsNiArODEyLDkgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBvYmplY3RfdHlwZV9tYXAKIAl7CiAJCSJjYXN0IiwgT0JKRUNUX0NBU1QKIAl9LAorCXsK KwkJImZvcm1hdHRlciIsIE9CSkVDVF9GT1JNQVRURVIKKwl9LAogCXsKIAkJImNvbGxhdGlvbiIs IE9CSkVDVF9DT0xMQVRJT04KIAl9LApAQCAtMTE2NSw2ICsxMTg0LDIxIEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCQkJYWRkcmVzcy5v YmplY3RTdWJJZCA9IDA7CiAJCQkJfQogCQkJCWJyZWFrOworCQkJY2FzZSBPQkpFQ1RfRk9STUFU VEVSOgorCQkJCXsKKwkJCQkJVHlwZU5hbWUgICAqc291cmNldHlwZSA9IGxpbml0aWFsX25vZGUo VHlwZU5hbWUsIGNhc3ROb2RlKExpc3QsIG9iamVjdCkpOworCQkJCQlUeXBlTmFtZSAgICp0YXJn ZXR0eXBlID0gbHNlY29uZF9ub2RlKFR5cGVOYW1lLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpKTsK KwkJCQkJT2lkCQkJc291cmNldHlwZWlkOworCQkJCQlPaWQJCQl0YXJnZXR0eXBlaWQ7CisKKwkJ CQkJc291cmNldHlwZWlkID0gTG9va3VwVHlwZU5hbWVPaWQoTlVMTCwgc291cmNldHlwZSwgbWlz c2luZ19vayk7CisJCQkJCXRhcmdldHR5cGVpZCA9IExvb2t1cFR5cGVOYW1lT2lkKE5VTEwsIHRh cmdldHR5cGUsIG1pc3Npbmdfb2spOworCQkJCQlhZGRyZXNzLmNsYXNzSWQgPSBGb3JtYXR0ZXJS ZWxhdGlvbklkOworCQkJCQlhZGRyZXNzLm9iamVjdElkID0KKwkJCQkJCWdldF9mb3JtYXR0ZXJf b2lkKHNvdXJjZXR5cGVpZCwgdGFyZ2V0dHlwZWlkLCBtaXNzaW5nX29rKTsKKwkJCQkJYWRkcmVz cy5vYmplY3RTdWJJZCA9IDA7CisJCQkJfQorCQkJCWJyZWFrOwogCQkJY2FzZSBPQkpFQ1RfVFJB TlNGT1JNOgogCQkJCXsKIAkJCQkJVHlwZU5hbWUgICAqdHlwZW5hbWUgPSBsaW5pdGlhbF9ub2Rl KFR5cGVOYW1lLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpKTsKQEAgLTIyMzksNiArMjI3Myw3IEBA IHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdTKQogCSAqIGV4Y2VwdGlvbnMu CiAJICovCiAJaWYgKHR5cGUgPT0gT0JKRUNUX1RZUEUgfHwgdHlwZSA9PSBPQkpFQ1RfRE9NQUlO IHx8IHR5cGUgPT0gT0JKRUNUX0NBU1QgfHwKKwkJdHlwZSA9PSBPQkpFQ1RfRk9STUFUVEVSIHx8 CiAJCXR5cGUgPT0gT0JKRUNUX1RSQU5TRk9STSB8fCB0eXBlID09IE9CSkVDVF9ET01DT05TVFJB SU5UKQogCXsKIAkJRGF0dW0JICAgKmVsZW1zOwpAQCAtMjI5MSw2ICsyMzI2LDcgQEAgcGdfZ2V0 X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXR5cGUgPT0gT0JKRUNUX1JPVVRJ TkUgfHwKIAkJdHlwZSA9PSBPQkpFQ1RfT1BFUkFUT1IgfHwKIAkJdHlwZSA9PSBPQkpFQ1RfQ0FT VCB8fAorCQl0eXBlID09IE9CSkVDVF9GT1JNQVRURVIgfHwKIAkJdHlwZSA9PSBPQkpFQ1RfQU1P UCB8fAogCQl0eXBlID09IE9CSkVDVF9BTVBST0MpCiAJewpAQCAtMjMzNiw2ICsyMzcyLDcgQEAg cGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlwZ19mYWxsdGhyb3Vn aDsKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJY2FzZSBPQkpFQ1RfQ0FTVDoKKwkJ Y2FzZSBPQkpFQ1RfRk9STUFUVEVSOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJ CWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJY2FzZSBPQkpFQ1RfVFJBTlNGT1JNOgpAQCAtMjQyNCw2 ICsyNDYxLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlv Ympub2RlID0gKE5vZGUgKikgdHlwZW5hbWU7CiAJCQlicmVhazsKIAkJY2FzZSBPQkpFQ1RfQ0FT VDoKKwkJY2FzZSBPQkpFQ1RfRk9STUFUVEVSOgogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5U OgogCQljYXNlIE9CSkVDVF9UUkFOU0ZPUk06CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbGlzdF9t YWtlMih0eXBlbmFtZSwgbGluaXRpYWwoYXJncykpOwpAQCAtMjU4Myw2ICsyNjIxLDcgQEAgY2hl Y2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9iamVj dEFkZHJlc3MgYWRkcmVzcywKIAkJCQkJCQkJYWRkcmVzcy5vYmplY3RJZCkpKTsKIAkJCWJyZWFr OwogCQljYXNlIE9CSkVDVF9DQVNUOgorCQljYXNlIE9CSkVDVF9GT1JNQVRURVI6CiAJCQl7CiAJ CQkJLyogV2UgY2FuIG9ubHkgY2hlY2sgcGVybWlzc2lvbnMgb24gdGhlIHNvdXJjZS90YXJnZXQg dHlwZXMgKi8KIAkJCQlUeXBlTmFtZSAgICpzb3VyY2V0eXBlID0gbGluaXRpYWxfbm9kZShUeXBl TmFtZSwgY2FzdE5vZGUoTGlzdCwgb2JqZWN0KSk7CkBAIC0zMTExLDYgKzMxNTAsMzEgQEAgZ2V0 T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Np bmdfb2spCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBGb3JtYXR0ZXJSZWxhdGlvbklkOgor CQkJeworCQkJCUhlYXBUdXBsZQlmbXRUdXA7CisJCQkJRm9ybV9wZ19mb3JtYXR0ZXIgZm10Rm9y bTsKKworCQkJCWZtdFR1cCA9IFNlYXJjaFN5c0NhY2hlMShGT1JNQVRURVJPSUQsCisJCQkJCQkJ CQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChmbXRUdXApKQorCQkJCXsKKwkJCQkJaWYgKCFtaXNzaW5nX29rKQorCQkJCQkJ ZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBmaW5kIHR1cGxlIGZvciBmb3JtYXR0ZXIgJXUiLAorCQkJ CQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZm10Rm9y bSA9IChGb3JtX3BnX2Zvcm1hdHRlcikgR0VUU1RSVUNUKGZtdFR1cCk7CisKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZidWZmZXIsIF8oImZvcm1hdHRlciBmb3IgY2FzdCBmcm9tICVzIHRvICVzIiks CisJCQkJCQkJCSBmb3JtYXRfdHlwZV9iZShmbXRGb3JtLT5mbXRzb3VyY2UpLAorCQkJCQkJCQkg Zm9ybWF0X3R5cGVfYmUoZm10Rm9ybS0+Zm10dGFyZ2V0KSk7CisKKwkJCQlSZWxlYXNlU3lzQ2Fj aGUoZm10VHVwKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIENvbGxhdGlvblJlbGF0aW9u SWQ6CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNvbGxUdXA7CkBAIC00NzYyLDYgKzQ4MjYsMTAgQEAg Z2V0T2JqZWN0VHlwZURlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9v bCBtaXNzaW5nX29rKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAiY2FzdCIp OwogCQkJYnJlYWs7CiAKKwkJY2FzZSBGb3JtYXR0ZXJSZWxhdGlvbklkOgorCQkJYXBwZW5kU3Ry aW5nSW5mb1N0cmluZygmYnVmZmVyLCAiZm9ybWF0dGVyIik7CisJCQlicmVhazsKKwogCQljYXNl IENvbGxhdGlvblJlbGF0aW9uSWQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIs ICJjb2xsYXRpb24iKTsKIAkJCWJyZWFrOwpAQCAtNTIyNSw2ICs1MjkzLDQzIEBAIGdldE9iamVj dElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LAogCQkJCWJyZWFrOwog CQkJfQogCisJCWNhc2UgRm9ybWF0dGVyUmVsYXRpb25JZDoKKwkJCXsKKwkJCQlSZWxhdGlvbglm bXRSZWw7CisJCQkJSGVhcFR1cGxlCXR1cDsKKwkJCQlGb3JtX3BnX2Zvcm1hdHRlciBmbXRGb3Jt OworCisJCQkJZm10UmVsID0gdGFibGVfb3BlbihGb3JtYXR0ZXJSZWxhdGlvbklkLCBBY2Nlc3NT aGFyZUxvY2spOworCisJCQkJdHVwID0gZ2V0X2NhdGFsb2dfb2JqZWN0X2J5X29pZChmbXRSZWws IEFudW1fcGdfZm9ybWF0dGVyX29pZCwKKwkJCQkJCQkJCQkJCW9iamVjdC0+b2JqZWN0SWQpOwor CisJCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCQkJeworCQkJCQlpZiAoIW1pc3Np bmdfb2spCisJCQkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgdHVwbGUgZm9yIGZvcm1h dHRlciAldSIsCisJCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCisJCQkJCXRhYmxlX2Nsb3Nl KGZtdFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZm10 Rm9ybSA9IChGb3JtX3BnX2Zvcm1hdHRlcikgR0VUU1RSVUNUKHR1cCk7CisKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKCZidWZmZXIsICJmb3IgY2FzdCAoJXMgQVMgJXMpIiwKKwkJCQkJCQkJIGZvcm1h dF90eXBlX2JlX3F1YWxpZmllZChmbXRGb3JtLT5mbXRzb3VyY2UpLAorCQkJCQkJCQkgZm9ybWF0 X3R5cGVfYmVfcXVhbGlmaWVkKGZtdEZvcm0tPmZtdHRhcmdldCkpOworCisJCQkJaWYgKG9iam5h bWUpCisJCQkJeworCQkJCQkqb2JqbmFtZSA9IGxpc3RfbWFrZTEoZm9ybWF0X3R5cGVfYmVfcXVh bGlmaWVkKGZtdEZvcm0tPmZtdHNvdXJjZSkpOworCQkJCQkqb2JqYXJncyA9IGxpc3RfbWFrZTEo Zm9ybWF0X3R5cGVfYmVfcXVhbGlmaWVkKGZtdEZvcm0tPmZtdHRhcmdldCkpOworCQkJCX0KKwor CQkJCXRhYmxlX2Nsb3NlKGZtdFJlbCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJCQlicmVhazsKKwkJ CX0KKwogCQljYXNlIENvbGxhdGlvblJlbGF0aW9uSWQ6CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNv bGxUdXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlCmluZGV4IDViOWQwODQ5NzdlLi43YTQwNjY4NjdlMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvTWFrZWZpbGUKQEAgLTM4LDYgKzM4LDcgQEAgT0JKUyA9IFwKIAlleHBsYWlu X3N0YXRlLm8gXAogCWV4dGVuc2lvbi5vIFwKIAlmb3JlaWduY21kcy5vIFwKKwlmb3JtYXR0ZXJj bWRzLm8gXAogCWZ1bmN0aW9uY21kcy5vIFwKIAlpbmRleGNtZHMubyBcCiAJbG9ja2NtZHMubyBc CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA4OGEyZGY2NWM2OS4uOTBlMjUwZjg1YmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZHJvcGNtZHMuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKIAogCkBAIC00MDEsNiArNDAyLDI3IEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5n KE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0KQogCQkJCX0KIAkJCX0KIAkJCWJyZWFr OworCQljYXNlIE9CSkVDVF9GT1JNQVRURVI6CisJCQl7CisJCQkJaWYgKCF0eXBlX2luX2xpc3Rf ZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcobGlzdF9tYWtlMShsaW5pdGlhbChjYXN0Tm9kZShMaXN0 LCBvYmplY3QpKSksICZtc2csICZuYW1lKSAmJgorCQkJCQkhdHlwZV9pbl9saXN0X2RvZXNfbm90 X2V4aXN0X3NraXBwaW5nKGxpc3RfbWFrZTEobHNlY29uZChjYXN0Tm9kZShMaXN0LCBvYmplY3Qp KSksICZtc2csICZuYW1lKSkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEJvdGggdHlwZXMgZXhp c3QgKGVsc2UgdGhlIGNoZWNrcyBhYm92ZSB3b3VsZCBoYXZlCisJCQkJCSAqIHByb2R1Y2VkIGEg bWVzc2FnZSksIHNvIHJlc29sdmUgdGhlbSB0byBPSURzIGFuZCByZXBvcnQKKwkJCQkJICogdGhl bSB3aXRoIGZvcm1hdF90eXBlX2JlKCkuICBUaGlzIGtlZXBzIHRoZSB3b3JkaW5nCisJCQkJCSAq IGNvbnNpc3RlbnQgd2l0aCB0aGUgZHVwbGljYXRlLW9iamVjdCBhbmQgdW5kZWZpbmVkLW9iamVj dAorCQkJCQkgKiBlcnJvcnMsIHdoaWNoIGFsc28gdXNlIGZvcm1hdF90eXBlX2JlKCkuCisJCQkJ CSAqLworCQkJCQlPaWQJCQlzb3VyY2V0eXBlaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBsaW5p dGlhbF9ub2RlKFR5cGVOYW1lLCBjYXN0Tm9kZShMaXN0LCBvYmplY3QpKSk7CisJCQkJCU9pZAkJ CXRhcmdldHR5cGVpZCA9IHR5cGVuYW1lVHlwZUlkKE5VTEwsIGxzZWNvbmRfbm9kZShUeXBlTmFt ZSwgY2FzdE5vZGUoTGlzdCwgb2JqZWN0KSkpOworCisJCQkJCW1zZyA9IGdldHRleHRfbm9vcCgi Zm9ybWF0dGVyIGZvciBjYXN0IGZyb20gdHlwZSAlcyB0byB0eXBlICVzIGRvZXMgbm90IGV4aXN0 LCBza2lwcGluZyIpOworCQkJCQluYW1lID0gZm9ybWF0X3R5cGVfYmUoc291cmNldHlwZWlkKTsK KwkJCQkJYXJncyA9IGZvcm1hdF90eXBlX2JlKHRhcmdldHR5cGVpZCk7CisJCQkJfQorCQkJfQor CQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX1RSQU5TRk9STToKIAkJCWlmICghdHlwZV9pbl9saXN0 X2RvZXNfbm90X2V4aXN0X3NraXBwaW5nKGxpc3RfbWFrZTEobGluaXRpYWwoY2FzdE5vZGUoTGlz dCwgb2JqZWN0KSkpLCAmbXNnLCAmbmFtZSkpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90 cmlnZ2VyLmMKaW5kZXggYWRjNmVhYmMwZjQuLjEzOWJkZjUxYzYxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXZlbnRfdHJpZ2dlci5jCkBAIC0yMzAxLDYgKzIzMDEsNyBAQCBzdHJpbmdpZnlfZ3JhbnRf b2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX0FNUFJPQzoKIAkJY2Fz ZSBPQkpFQ1RfQVRUUklCVVRFOgogCQljYXNlIE9CSkVDVF9DQVNUOgorCQljYXNlIE9CSkVDVF9G T1JNQVRURVI6CiAJCWNhc2UgT0JKRUNUX0NPTExBVElPTjoKIAkJY2FzZSBPQkpFQ1RfQ09OVkVS U0lPTjoKIAkJY2FzZSBPQkpFQ1RfREVGQVVMVDoKQEAgLTIzODUsNiArMjM4Niw3IEBAIHN0cmlu Z2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNU X0FNUFJPQzoKIAkJY2FzZSBPQkpFQ1RfQVRUUklCVVRFOgogCQljYXNlIE9CSkVDVF9DQVNUOgor CQljYXNlIE9CSkVDVF9GT1JNQVRURVI6CiAJCWNhc2UgT0JKRUNUX0NPTExBVElPTjoKIAkJY2Fz ZSBPQkpFQ1RfQ09OVkVSU0lPTjoKIAkJY2FzZSBPQkpFQ1RfREVGQVVMVDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Zvcm1hdHRlcmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2Zvcm1hdHRlcmNtZHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMjI3NjUxOWY1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9m b3JtYXR0ZXJjbWRzLmMKQEAgLTAsMCArMSwyNDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIGZvcm1hdHRlcmNtZHMuYworICoJICBSb3V0aW5lcyBmb3IgU1FMIGNvbW1hbmRzIHRoYXQg bWFuaXB1bGF0ZSBmb3JtYXR0ZXJzLgorICoKKyAqIEEgZm9ybWF0dGVyIGFzc29jaWF0ZXMgYSBm dW5jdGlvbiB3aXRoIGEgKHNvdXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkgcGFpci4KKyAqIFRoZSBm dW5jdGlvbiBpbXBsZW1lbnRzIENBU1QoZXhwciBBUyB0YXJnZXQgRk9STUFUIGZvcm1hdF9leHBy KTogaXQKKyAqIHJlY2VpdmVzIHRoZSBzb3VyY2UgdmFsdWUgYW5kIHRoZSBGT1JNQVQgZXhwcmVz c2lvbiAocGFzc2VkIGFzIHRleHQpIGFuZAorICogcmV0dXJucyB0aGUgdGFyZ2V0IHR5cGUuICBG b3JtYXR0ZXJzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBwZ19mb3JtYXR0ZXIKKyAqIGNhdGFsb2cg YW5kIGFyZSBpbnRlbnRpb25hbGx5IHNlcGFyYXRlIGZyb20gcGdfY2FzdCAoc2VlIHBnX2Zvcm1h dHRlci5oKS4KKyAqCisgKiBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGNhdGFsb2cgcmVnaXN0cmF0 aW9uIG1hY2hpbmVyeSAoQ1JFQVRFL0RST1AKKyAqIEZPUk1BVFRFUikuICBJdCBkb2VzIG5vdCBw ZXJmb3JtIGV4cHJlc3Npb24gdHJhbnNmb3JtYXRpb24gb3IgZXhlY3V0aW9uIG9mCisgKiBmb3Jt YXR0ZWQgY2FzdHMuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAq CisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9jb21tYW5kcy9mb3JtYXR0ZXJj bWRzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgi CisKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9k ZXBlbmRlbmN5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNh dGFsb2cvb2JqZWN0YWNjZXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JtYXR0ZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3Byb2MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9mb3JtYXR0ZXIuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwYXJzZXIv cGFyc2VfZnVuYy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAi dXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9z eXNjYWNoZS5oIgorCisvKgorICogVmFsaWRhdGUgdGhlIHNpZ25hdHVyZSBvZiBhIGZvcm1hdHRl ciBmdW5jdGlvbjogaXQgbXVzdCBiZSBhIG5vcm1hbAorICogZnVuY3Rpb24gKG5vdCBhIHByb2Nl ZHVyZSwgYWdncmVnYXRlIG9yIHdpbmRvdyBmdW5jdGlvbiksIG11c3Qgbm90IHJldHVybgorICog YSBzZXQsIGFuZCBtdXN0IGhhdmUgdGhlIHNpZ25hdHVyZQorICoKKyAqCQlmb3JtYXR0ZXIoc291 cmNlX3R5cGUsIHRleHQpIHJldHVybnMgdGFyZ2V0X3R5cGUKKyAqCisgKiBOQjogdGhlIGZvcm1h dHRlciBzaWduYXR1cmUgaXMgZml4ZWQgYXQgdHdvIGFyZ3VtZW50cyBhbmQgZG9lcyBub3QgaW5j bHVkZQorICogdGhlIHRhcmdldCB0eXBlIG1vZGlmaWVyOyB0eXBtb2QtYXdhcmUgZm9ybWF0dGVy IHNpZ25hdHVyZXMgYXJlIG5vdAorICogc3VwcG9ydGVkLgorICovCitzdGF0aWMgdm9pZAorY2hl Y2tfZm9ybWF0dGVyX2Z1bmN0aW9uKEZvcm1fcGdfcHJvYyBwcm9jc3RydWN0LAorCQkJCQkJIE9p ZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQpCit7CisJaWYgKHByb2NzdHJ1Y3QtPnBy b2tpbmQgIT0gUFJPS0lORF9GVU5DVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImZvcm1h dHRlciBmdW5jdGlvbiBtdXN0IGJlIGEgbm9ybWFsIGZ1bmN0aW9uIikpKTsKKwlpZiAocHJvY3N0 cnVjdC0+cHJvcmV0c2V0KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiZm9ybWF0dGVyIGZ1bmN0 aW9uIG11c3Qgbm90IHJldHVybiBhIHNldCIpKSk7CisJaWYgKHByb2NzdHJ1Y3QtPnByb25hcmdz ICE9IDIpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09C SkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJmb3JtYXR0ZXIgZnVuY3Rpb24gbXVzdCB0 YWtlIGV4YWN0bHkgdHdvIGFyZ3VtZW50cyIpKSk7CisJaWYgKHByb2NzdHJ1Y3QtPnByb2FyZ3R5 cGVzLnZhbHVlc1swXSAhPSBzb3VyY2V0eXBlaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJm aXJzdCBhcmd1bWVudCBvZiBmb3JtYXR0ZXIgZnVuY3Rpb24gbXVzdCBiZSB0eXBlICVzIiwKKwkJ CQkJCWZvcm1hdF90eXBlX2JlKHNvdXJjZXR5cGVpZCkpKSk7CisJaWYgKHByb2NzdHJ1Y3QtPnBy b2FyZ3R5cGVzLnZhbHVlc1sxXSAhPSBURVhUT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygi c2Vjb25kIGFyZ3VtZW50IG9mIGZvcm1hdHRlciBmdW5jdGlvbiBtdXN0IGJlIHR5cGUgJXMiLAor CQkJCQkJInRleHQiKSkpOworCWlmIChwcm9jc3RydWN0LT5wcm9yZXR0eXBlICE9IHRhcmdldHR5 cGVpZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JK RUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coInJldHVybiBkYXRhIHR5cGUgb2YgZm9ybWF0 dGVyIGZ1bmN0aW9uIG11c3QgYmUgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZSh0YXJn ZXR0eXBlaWQpKSkpOworfQorCisvKgorICogQ1JFQVRFIEZPUk1BVFRFUgorICovCitPYmplY3RB ZGRyZXNzCitDcmVhdGVGb3JtYXR0ZXIoQ3JlYXRlRm9ybWF0dGVyU3RtdCAqc3RtdCkKK3sKKwlP aWQJCQlzb3VyY2V0eXBlaWQ7CisJT2lkCQkJdGFyZ2V0dHlwZWlkOworCWNoYXIJCXNvdXJjZXR5 cHR5cGU7CisJY2hhcgkJdGFyZ2V0dHlwdHlwZTsKKwlPaWQJCQlmdW5jaWQ7CisJQWNsUmVzdWx0 CWFjbHJlc3VsdDsKKwlGb3JtX3BnX3Byb2MgcHJvY3N0cnVjdDsKKwlIZWFwVHVwbGUJdHVwbGU7 CisJSGVhcFR1cGxlCW5ld3R1cGxlOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfZm9ybWF0dGVy XTsKKwlib29sCQludWxsc1tOYXR0c19wZ19mb3JtYXR0ZXJdID0gezB9OworCU9pZAkJCWZvcm1h dHRlcmlkOworCVJlbGF0aW9uCXJlbGF0aW9uOworCU9iamVjdEFkZHJlc3MgbXlzZWxmLAorCQkJ CXJlZmVyZW5jZWQ7CisJT2JqZWN0QWRkcmVzc2VzICphZGRyczsKKworCXNvdXJjZXR5cGVpZCA9 IHR5cGVuYW1lVHlwZUlkKE5VTEwsIHN0bXQtPnNvdXJjZXR5cGUpOworCXRhcmdldHR5cGVpZCA9 IHR5cGVuYW1lVHlwZUlkKE5VTEwsIHN0bXQtPnRhcmdldHR5cGUpOworCXNvdXJjZXR5cHR5cGUg PSBnZXRfdHlwdHlwZShzb3VyY2V0eXBlaWQpOworCXRhcmdldHR5cHR5cGUgPSBnZXRfdHlwdHlw ZSh0YXJnZXR0eXBlaWQpOworCisJLyogTm8gcHNldWRvLXR5cGVzIGFsbG93ZWQgKi8KKwlpZiAo c291cmNldHlwdHlwZSA9PSBUWVBUWVBFX1BTRVVETykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJzb3VyY2Ug ZGF0YSB0eXBlICVzIGlzIGEgcHNldWRvLXR5cGUiLAorCQkJCQkJVHlwZU5hbWVUb1N0cmluZyhz dG10LT5zb3VyY2V0eXBlKSkpKTsKKwlpZiAodGFyZ2V0dHlwdHlwZSA9PSBUWVBUWVBFX1BTRVVE TykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9U WVBFKSwKKwkJCQkgZXJybXNnKCJ0YXJnZXQgZGF0YSB0eXBlICVzIGlzIGEgcHNldWRvLXR5cGUi LAorCQkJCQkJVHlwZU5hbWVUb1N0cmluZyhzdG10LT50YXJnZXR0eXBlKSkpKTsKKworCS8qCisJ ICogUGVybWlzc2lvbiBjaGVjay4gIEFzIGZvciBDUkVBVEUgQ0FTVCwgdGhlIGNhbGxlciBtdXN0 IG93biBhdCBsZWFzdCBvbmUKKwkgKiBvZiB0aGUgdHdvIHR5cGVzIGludm9sdmVkOyBvd25pbmcg YSB0eXBlIGlzIHdoYXQgYXV0aG9yaXplcyBkZWZpbmluZworCSAqIGNvbnZlcnNpb24gYmVoYXZp b3IgZm9yIGl0LiAgSW4gYWRkaXRpb24sIGFuZCBmb2xsb3dpbmcgQ1JFQVRFIE9QRVJBVE9SCisJ ICogYW5kIENSRUFURSBBR0dSRUdBVEUsIHdlIHJlcXVpcmUgRVhFQ1VURSBwZXJtaXNzaW9uIG9u IHRoZSBmb3JtYXR0ZXIKKwkgKiBmdW5jdGlvbiAodGhpcyB3aWxsIGFsc28gYmUgY2hlY2tlZCB3 aGVuIHRoZSBmb3JtYXR0ZXIgaXMgdXNlZCwgYnV0IGl0CisJICogaXMgYSBnb29kIGlkZWEgdG8g dmVyaWZ5IGl0IHVwIGZyb250KS4gIFdlIGludGVudGlvbmFsbHkgZG8gbm90IHJlcXVpcmUKKwkg KiBvd25lcnNoaXAgb2YgdGhlIGZ1bmN0aW9uLCB1bmxpa2UgQ1JFQVRFIFRSQU5TRk9STSwgYmVj YXVzZSBhIGZvcm1hdHRlcgorCSAqIGlzIGEgZGF0YSBjb252ZXJzaW9uIHJhdGhlciB0aGFuIGEg cHJvY2VkdXJhbC1sYW5ndWFnZSBiaW5kaW5nLgorCSAqLworCWlmICghb2JqZWN0X293bmVyY2hl Y2soVHlwZVJlbGF0aW9uSWQsIHNvdXJjZXR5cGVpZCwgR2V0VXNlcklkKCkpCisJCSYmICFvYmpl Y3Rfb3duZXJjaGVjayhUeXBlUmVsYXRpb25JZCwgdGFyZ2V0dHlwZWlkLCBHZXRVc2VySWQoKSkp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJ VklMRUdFKSwKKwkJCQkgZXJybXNnKCJtdXN0IGJlIG93bmVyIG9mIHR5cGUgJXMgb3IgdHlwZSAl cyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzb3VyY2V0eXBlaWQpLAorCQkJCQkJZm9ybWF0X3R5 cGVfYmUodGFyZ2V0dHlwZWlkKSkpKTsKKworCS8qCisJICogTG9vayB1cCBhbmQgdmFsaWRhdGUg dGhlIGZvcm1hdHRlciBmdW5jdGlvbi4KKwkgKi8KKwlmdW5jaWQgPSBMb29rdXBGdW5jV2l0aEFy Z3MoT0JKRUNUX0ZVTkNUSU9OLCBzdG10LT5mdW5jLCBmYWxzZSk7CisKKwlhY2xyZXN1bHQgPSBv YmplY3RfYWNsY2hlY2soUHJvY2VkdXJlUmVsYXRpb25JZCwgZnVuY2lkLCBHZXRVc2VySWQoKSwg QUNMX0VYRUNVVEUpOworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNr X2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX0ZVTkNUSU9OLAorCQkJCQkgICBOYW1lTGlzdFRvU3Ry aW5nKHN0bXQtPmZ1bmMtPm9iam5hbWUpKTsKKworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFBS T0NPSUQsIE9iamVjdElkR2V0RGF0dW0oZnVuY2lkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGZ1bmN0aW9u ICV1IiwgZnVuY2lkKTsKKwlwcm9jc3RydWN0ID0gKEZvcm1fcGdfcHJvYykgR0VUU1RSVUNUKHR1 cGxlKTsKKwljaGVja19mb3JtYXR0ZXJfZnVuY3Rpb24ocHJvY3N0cnVjdCwgc291cmNldHlwZWlk LCB0YXJnZXR0eXBlaWQpOworCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisKKwkvKgorCSAqIENo ZWNrIGZvciBhIHByZS1leGlzdGluZyBmb3JtYXR0ZXIgZm9yIHRoaXMgKHNvdXJjZSwgdGFyZ2V0 KSBwYWlyLiAgRm9yCisJICogdGhpcyB2ZXJzaW9uIG9ubHkgb25lIGZvcm1hdHRlciBwZXIgcGFp ciBpcyBhbGxvd2VkLgorCSAqLworCXJlbGF0aW9uID0gdGFibGVfb3BlbihGb3JtYXR0ZXJSZWxh dGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCWlmIChTZWFyY2hTeXNDYWNoZUV4aXN0czIo Rk9STUFUVEVSU09VUkNFVEFSR0VULAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShzb3VyY2V0 eXBlaWQpLAorCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bSh0YXJnZXR0eXBlaWQpKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9PQkpFQ1QpLAorCQkJ CSBlcnJtc2coImZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIHR5cGUgJXMgdG8gdHlwZSAlcyBhbHJl YWR5IGV4aXN0cyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzb3VyY2V0eXBlaWQpLAorCQkJCQkJ Zm9ybWF0X3R5cGVfYmUodGFyZ2V0dHlwZWlkKSkpKTsKKworCS8qCisJICogQnVpbGQgYW5kIGlu c2VydCB0aGUgY2F0YWxvZyB0dXBsZS4KKwkgKi8KKwlmb3JtYXR0ZXJpZCA9IEdldE5ld09pZFdp dGhJbmRleChyZWxhdGlvbiwgRm9ybWF0dGVyT2lkSW5kZXhJZCwKKwkJCQkJCQkJCSBBbnVtX3Bn X2Zvcm1hdHRlcl9vaWQpOworCXZhbHVlc1tBbnVtX3BnX2Zvcm1hdHRlcl9vaWQgLSAxXSA9IE9i amVjdElkR2V0RGF0dW0oZm9ybWF0dGVyaWQpOworCXZhbHVlc1tBbnVtX3BnX2Zvcm1hdHRlcl9m bXRzb3VyY2UgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0oc291cmNldHlwZWlkKTsKKwl2YWx1ZXNb QW51bV9wZ19mb3JtYXR0ZXJfZm10dGFyZ2V0IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKHRhcmdl dHR5cGVpZCk7CisJdmFsdWVzW0FudW1fcGdfZm9ybWF0dGVyX2ZtdGZ1bmMgLSAxXSA9IE9iamVj dElkR2V0RGF0dW0oZnVuY2lkKTsKKworCW5ld3R1cGxlID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0 aW9uR2V0RGVzY3IocmVsYXRpb24pLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNl cnQocmVsYXRpb24sIG5ld3R1cGxlKTsKKworCWFkZHJzID0gbmV3X29iamVjdF9hZGRyZXNzZXMo KTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBGb3JtYXR0ZXJSZWxhdGlvbklkLCBmb3Jt YXR0ZXJpZCk7CisKKwkvKiBkZXBlbmRlbmN5IG9uIHNvdXJjZSB0eXBlICovCisJT2JqZWN0QWRk cmVzc1NldChyZWZlcmVuY2VkLCBUeXBlUmVsYXRpb25JZCwgc291cmNldHlwZWlkKTsKKwlhZGRf ZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJnJlZmVyZW5jZWQsIGFkZHJzKTsKKworCS8qIGRlcGVuZGVu Y3kgb24gdGFyZ2V0IHR5cGUgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFR5cGVS ZWxhdGlvbklkLCB0YXJnZXR0eXBlaWQpOworCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcmVm ZXJlbmNlZCwgYWRkcnMpOworCisJLyogZGVwZW5kZW5jeSBvbiB0aGUgZm9ybWF0dGVyIGZ1bmN0 aW9uICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBQcm9jZWR1cmVSZWxhdGlvbklk LCBmdW5jaWQpOworCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmcmVmZXJlbmNlZCwgYWRkcnMp OworCisJcmVjb3JkX29iamVjdF9hZGRyZXNzX2RlcGVuZGVuY2llcygmbXlzZWxmLCBhZGRycywg REVQRU5ERU5DWV9OT1JNQUwpOworCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhhZGRycyk7CisKKwkv KiBkZXBlbmRlbmN5IG9uIGV4dGVuc2lvbiAqLworCXJlY29yZERlcGVuZGVuY3lPbkN1cnJlbnRF eHRlbnNpb24oJm15c2VsZiwgZmFsc2UpOworCisJLyogUG9zdCBjcmVhdGlvbiBob29rIGZvciBu ZXcgZm9ybWF0dGVyICovCisJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soRm9ybWF0dGVyUmVs YXRpb25JZCwgZm9ybWF0dGVyaWQsIDApOworCisJaGVhcF9mcmVldHVwbGUobmV3dHVwbGUpOwor CisJdGFibGVfY2xvc2UocmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIG15 c2VsZjsKK30KKworLyoKKyAqIGdldF9mb3JtYXR0ZXJfb2lkIC0gZ2l2ZW4gc291cmNlIGFuZCB0 YXJnZXQgdHlwZSBPSURzLCBsb29rIHVwIGEKKyAqIGZvcm1hdHRlciBPSUQKKyAqLworT2lkCitn ZXRfZm9ybWF0dGVyX29pZChPaWQgc291cmNldHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBib29s IG1pc3Npbmdfb2spCit7CisJT2lkCQkJb2lkOworCisJb2lkID0gR2V0U3lzQ2FjaGVPaWQyKEZP Uk1BVFRFUlNPVVJDRVRBUkdFVCwgQW51bV9wZ19mb3JtYXR0ZXJfb2lkLAorCQkJCQkJICBPYmpl Y3RJZEdldERhdHVtKHNvdXJjZXR5cGVpZCksCisJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0odGFy Z2V0dHlwZWlkKSk7CisJaWYgKCFPaWRJc1ZhbGlkKG9pZCkgJiYgIW1pc3Npbmdfb2spCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJ CQkgZXJybXNnKCJmb3JtYXR0ZXIgZm9yIGNhc3QgZnJvbSB0eXBlICVzIHRvIHR5cGUgJXMgZG9l cyBub3QgZXhpc3QiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc291cmNldHlwZWlkKSwKKwkJCQkJ CWZvcm1hdF90eXBlX2JlKHRhcmdldHR5cGVpZCkpKSk7CisJcmV0dXJuIG9pZDsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWVzb24uYnVpbGQKaW5kZXggOWYyNThkNTY2ZWIuLjhjNGVjYjgzYzNhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9tZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0g ZmlsZXMoCiAgICdleHBsYWluX3N0YXRlLmMnLAogICAnZXh0ZW5zaW9uLmMnLAogICAnZm9yZWln bmNtZHMuYycsCisgICdmb3JtYXR0ZXJjbWRzLmMnLAogICAnZnVuY3Rpb25jbWRzLmMnLAogICAn aW5kZXhjbWRzLmMnLAogICAnbG9ja2NtZHMuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwppbmRl eCA3NzU0MmQwNDIwMC4uZjdkMTc3OWRhZDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAt NjYsNiArNjYsNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5 cGUpCiAJCWNhc2UgT0JKRUNUX0FNUFJPQzoKIAkJY2FzZSBPQkpFQ1RfQVRUUklCVVRFOgogCQlj YXNlIE9CSkVDVF9DQVNUOgorCQljYXNlIE9CSkVDVF9GT1JNQVRURVI6CiAJCWNhc2UgT0JKRUNU X0NPTExBVElPTjoKIAkJY2FzZSBPQkpFQ1RfQ09OVkVSU0lPTjoKIAkJY2FzZSBPQkpFQ1RfREVG QVVMVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CmluZGV4IGVmNDg4MWVmYzgxLi42ZTgyYTRlMDkwZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CkBAIC0yOTUsMTMgKzI5NSwxNCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQlDcmVh dGVTY2hlbWFTdG10IENyZWF0ZVNlcVN0bXQgQ3JlYXRlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3Jl YXRlVGFibGVTcGFjZVN0bXQKIAkJQ3JlYXRlRmR3U3RtdCBDcmVhdGVGb3JlaWduU2VydmVyU3Rt dCBDcmVhdGVGb3JlaWduVGFibGVTdG10CiAJCUNyZWF0ZUFzc2VydGlvblN0bXQgQ3JlYXRlVHJh bnNmb3JtU3RtdCBDcmVhdGVUcmlnU3RtdCBDcmVhdGVFdmVudFRyaWdTdG10CisJCUNyZWF0ZUZv cm1hdHRlclN0bXQKIAkJQ3JlYXRlUHJvcEdyYXBoU3RtdCBBbHRlclByb3BHcmFwaFN0bXQKIAkJ Q3JlYXRlVXNlclN0bXQgQ3JlYXRlVXNlck1hcHBpbmdTdG10IENyZWF0ZVJvbGVTdG10IENyZWF0 ZVBvbGljeVN0bXQKIAkJQ3JlYXRlZGJTdG10IERlY2xhcmVDdXJzb3JTdG10IERlZmluZVN0bXQg RGVsZXRlU3RtdCBEaXNjYXJkU3RtdCBEb1N0bXQKIAkJRHJvcE9wQ2xhc3NTdG10IERyb3BPcEZh bWlseVN0bXQgRHJvcFN0bXQKIAkJRHJvcENhc3RTdG10IERyb3BSb2xlU3RtdAogCQlEcm9wZGJT dG10IERyb3BUYWJsZVNwYWNlU3RtdAotCQlEcm9wVHJhbnNmb3JtU3RtdAorCQlEcm9wVHJhbnNm b3JtU3RtdCBEcm9wRm9ybWF0dGVyU3RtdAogCQlEcm9wVXNlck1hcHBpbmdTdG10IEV4cGxhaW5T dG10IEZldGNoU3RtdAogCQlHcmFudFN0bXQgR3JhbnRSb2xlU3RtdCBJbXBvcnRGb3JlaWduU2No ZW1hU3RtdCBJbmRleFN0bXQgSW5zZXJ0U3RtdAogCQlMaXN0ZW5TdG10IExvYWRTdG10IExvY2tT dG10IE1lcmdlU3RtdCBOb3RpZnlTdG10IEV4cGxhaW5hYmxlU3RtdCBQcmVwYXJhYmxlU3RtdApA QCAtNzY5LDcgKzc3MCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJRVhQTEFJTiBFWFBS RVNTSU9OIEVYVEVOU0lPTiBFWFRFUk5BTCBFWFRSQUNUCiAKIAlGQUxTRV9QIEZBTUlMWSBGRVRD SCBGSUxURVIgRklOQUxJWkUgRklSU1RfUCBGTE9BVF9QIEZPTExPV0lORyBGT1IKLQlGT1JDRSBG T1JFSUdOIEZPUk1BVCBGT1JXQVJEIEZSRUVaRSBGUk9NIEZVTEwgRlVOQ1RJT04gRlVOQ1RJT05T CisJRk9SQ0UgRk9SRUlHTiBGT1JNQVQgRk9STUFUVEVSIEZPUldBUkQgRlJFRVpFIEZST00gRlVM TCBGVU5DVElPTiBGVU5DVElPTlMKIAogCUdFTkVSQVRFRCBHTE9CQUwgR1JBTlQgR1JBTlRFRCBH UkFQSCBHUkFQSF9UQUJMRSBHUkVBVEVTVCBHUk9VUF9QIEdST1VQSU5HIEdST1VQUwogCkBAIC0x MTA1LDYgKzExMDYsNyBAQCBzdG10OgogCQkJfCBDcmVhdGVTdGF0c1N0bXQKIAkJCXwgQ3JlYXRl VGFibGVTcGFjZVN0bXQKIAkJCXwgQ3JlYXRlVHJhbnNmb3JtU3RtdAorCQkJfCBDcmVhdGVGb3Jt YXR0ZXJTdG10CiAJCQl8IENyZWF0ZVRyaWdTdG10CiAJCQl8IENyZWF0ZUV2ZW50VHJpZ1N0bXQK IAkJCXwgQ3JlYXRlUm9sZVN0bXQKQEAgLTExMjUsNiArMTEyNyw3IEBAIHN0bXQ6CiAJCQl8IERy b3BTdWJzY3JpcHRpb25TdG10CiAJCQl8IERyb3BUYWJsZVNwYWNlU3RtdAogCQkJfCBEcm9wVHJh bnNmb3JtU3RtdAorCQkJfCBEcm9wRm9ybWF0dGVyU3RtdAogCQkJfCBEcm9wUm9sZVN0bXQKIAkJ CXwgRHJvcFVzZXJNYXBwaW5nU3RtdAogCQkJfCBEcm9wZGJTdG10CkBAIC05ODkzLDYgKzk4OTYs MzggQEAgRHJvcFRyYW5zZm9ybVN0bXQ6IERST1AgVFJBTlNGT1JNIG9wdF9pZl9leGlzdHMgRk9S IFR5cGVuYW1lIExBTkdVQUdFIG5hbWUgb3B0X2QKIAkJOwogCiAKKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICoKKyAqCQlDUkVBVEUgRk9STUFUVEVSIC8gRFJPUCBGT1JNQVRURVIKKyAqCisgKiBB IGZvcm1hdHRlciByZWdpc3RlcnMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZworICogQ0FTVChl eHByIEFTIHRhcmdldCBGT1JNQVQgZm9ybWF0X2V4cHIpIGZvciBhIChzb3VyY2UsIHRhcmdldCkg dHlwZSBwYWlyLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitDcmVhdGVGb3JtYXR0ZXJTdG10 OiBDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUICcoJyBUeXBlbmFtZSBBUyBUeXBlbmFtZSAnKScg V0lUSCBGVU5DVElPTiBmdW5jdGlvbl93aXRoX2FyZ3R5cGVzCisJCQkJeworCQkJCQlDcmVhdGVG b3JtYXR0ZXJTdG10ICpuID0gbWFrZU5vZGUoQ3JlYXRlRm9ybWF0dGVyU3RtdCk7CisKKwkJCQkJ bi0+c291cmNldHlwZSA9ICQ2OworCQkJCQluLT50YXJnZXR0eXBlID0gJDg7CisJCQkJCW4tPmZ1 bmMgPSAkMTI7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworRHJvcEZvcm1h dHRlclN0bXQ6IERST1AgRk9STUFUVEVSIG9wdF9pZl9leGlzdHMgRk9SIENBU1QgJygnIFR5cGVu YW1lIEFTIFR5cGVuYW1lICcpJyBvcHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJRHJvcFN0 bXQgKm4gPSBtYWtlTm9kZShEcm9wU3RtdCk7CisKKwkJCQkJbi0+cmVtb3ZlVHlwZSA9IE9CSkVD VF9GT1JNQVRURVI7CisJCQkJCW4tPm9iamVjdHMgPSBsaXN0X21ha2UxKGxpc3RfbWFrZTIoJDcs ICQ5KSk7CisJCQkJCW4tPmJlaGF2aW9yID0gJDExOworCQkJCQluLT5taXNzaW5nX29rID0gJDM7 CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsKKworCiAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKICAqCiAgKgkJUVVFUlk6CkBAIC0xODkzMyw2ICsxODk2OCw3IEBAIHVucmVzZXJ2ZWRf a2V5d29yZDoKIAkJCXwgRk9MTE9XSU5HCiAJCQl8IEZPUkNFCiAJCQl8IEZPUk1BVAorCQkJfCBG T1JNQVRURVIKIAkJCXwgRk9SV0FSRAogCQkJfCBGVU5DVElPTgogCQkJfCBGVU5DVElPTlMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKaW5kZXggNzNhNTZmMWRmMWQuLmVlNjYyOTZlMGQwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpA QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNp bmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5zaW9u LmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZm9ybWF0dGVyLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv bG9ja2NtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy9tYXR2aWV3LmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcG9saWN5LmgiCkBAIC0xOTMsNiArMTk0LDcgQEAgQ2xhc3NpZnlVdGlsaXR5Q29tbWFu ZEFzUmVhZE9ubHkoTm9kZSAqcGFyc2V0cmVlKQogCQljYXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6 CiAJCWNhc2UgVF9DcmVhdGVUYWJsZVNwYWNlU3RtdDoKIAkJY2FzZSBUX0NyZWF0ZVRyYW5zZm9y bVN0bXQ6CisJCWNhc2UgVF9DcmVhdGVGb3JtYXR0ZXJTdG10OgogCQljYXNlIFRfQ3JlYXRlVHJp Z1N0bXQ6CiAJCWNhc2UgVF9DcmVhdGVVc2VyTWFwcGluZ1N0bXQ6CiAJCWNhc2UgVF9DcmVhdGVk YlN0bXQ6CkBAIC0xNzU1LDYgKzE3NTcsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQlhZGRyZXNzID0gQ3JlYXRlVHJhbnNmb3JtKChDcmVhdGVUcmFuc2Zv cm1TdG10ICopIHBhcnNldHJlZSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgVF9DcmVhdGVGb3Jt YXR0ZXJTdG10OgorCQkJCWFkZHJlc3MgPSBDcmVhdGVGb3JtYXR0ZXIoKENyZWF0ZUZvcm1hdHRl clN0bXQgKikgcGFyc2V0cmVlKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBUX0FsdGVyT3BGYW1p bHlTdG10OgogCQkJCUFsdGVyT3BGYW1pbHkoKEFsdGVyT3BGYW1pbHlTdG10ICopIHBhcnNldHJl ZSk7CiAJCQkJLyogY29tbWFuZHMgYXJlIHN0YXNoZWQgaW4gQWx0ZXJPcEZhbWlseSAqLwpAQCAt MjY2Niw2ICsyNjcyLDkgQEAgQ3JlYXRlQ29tbWFuZFRhZyhOb2RlICpwYXJzZXRyZWUpCiAJCQkJ Y2FzZSBPQkpFQ1RfVFJBTlNGT1JNOgogCQkJCQl0YWcgPSBDTURUQUdfRFJPUF9UUkFOU0ZPUk07 CiAJCQkJCWJyZWFrOworCQkJCWNhc2UgT0JKRUNUX0ZPUk1BVFRFUjoKKwkJCQkJdGFnID0gQ01E VEFHX0RST1BfRk9STUFUVEVSOworCQkJCQlicmVhazsKIAkJCQljYXNlIE9CSkVDVF9BQ0NFU1Nf TUVUSE9EOgogCQkJCQl0YWcgPSBDTURUQUdfRFJPUF9BQ0NFU1NfTUVUSE9EOwogCQkJCQlicmVh azsKQEAgLTI5ODEsNiArMjk5MCwxMCBAQCBDcmVhdGVDb21tYW5kVGFnKE5vZGUgKnBhcnNldHJl ZSkKIAkJCXRhZyA9IENNRFRBR19DUkVBVEVfVFJBTlNGT1JNOwogCQkJYnJlYWs7CiAKKwkJY2Fz ZSBUX0NyZWF0ZUZvcm1hdHRlclN0bXQ6CisJCQl0YWcgPSBDTURUQUdfQ1JFQVRFX0ZPUk1BVFRF UjsKKwkJCWJyZWFrOworCiAJCWNhc2UgVF9DcmVhdGVUcmlnU3RtdDoKIAkJCXRhZyA9IENNRFRB R19DUkVBVEVfVFJJR0dFUjsKIAkJCWJyZWFrOwpAQCAtMzY5MCw2ICszNzAzLDEwIEBAIEdldENv bW1hbmRMb2dMZXZlbChOb2RlICpwYXJzZXRyZWUpCiAJCQlsZXYgPSBMT0dTVE1UX0RETDsKIAkJ CWJyZWFrOwogCisJCWNhc2UgVF9DcmVhdGVGb3JtYXR0ZXJTdG10OgorCQkJbGV2ID0gTE9HU1RN VF9EREw7CisJCQlicmVhazsKKwogCQljYXNlIFRfQWx0ZXJPcEZhbWlseVN0bXQ6CiAJCQlsZXYg PSBMT0dTVE1UX0RETDsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2Nv bW1vbi5jIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCmluZGV4IGRjOThjNWM1YzA5Li5kNzA3 NTM5MDVlYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9i aW4vcGdfZHVtcC9jb21tb24uYwpAQCAtMTg4LDYgKzE4OCw5IEBAIGdldFNjaGVtYURhdGEoQXJj aGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXNQdHIpCiAJcGdfbG9nX2luZm8oInJlYWRpbmcgdHJh bnNmb3JtcyIpOwogCWdldFRyYW5zZm9ybXMoZm91dCk7CiAKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyBmb3JtYXR0ZXJzIik7CisJZ2V0Rm9ybWF0dGVycyhmb3V0KTsKKwogCXBnX2xvZ19pbmZvKCJy ZWFkaW5nIHRhYmxlIGluaGVyaXRhbmNlIGluZm9ybWF0aW9uIik7CiAJaW5oaW5mbyA9IGdldElu aGVyaXRzKGZvdXQsICZudW1Jbmhlcml0cyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGM1NjQzN2Q2MDU3 Li45Mjg4Mzc0MDc0MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0zMDAsNiArMzAwLDcgQEAgc3RhdGljIHZv aWQgZHVtcFByb2NMYW5nKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFByb2NMYW5nSW5mbyAqcGxhbmcp Owogc3RhdGljIHZvaWQgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgY29uc3QgRnVuY0luZm8gKmZp bmZvKTsKIHN0YXRpYyB2b2lkIGR1bXBDYXN0KEFyY2hpdmUgKmZvdXQsIGNvbnN0IENhc3RJbmZv ICpjYXN0KTsKIHN0YXRpYyB2b2lkIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgY29uc3Qg VHJhbnNmb3JtSW5mbyAqdHJhbnNmb3JtKTsKK3N0YXRpYyB2b2lkIGR1bXBGb3JtYXR0ZXIoQXJj aGl2ZSAqZm91dCwgY29uc3QgRm9ybWF0dGVySW5mbyAqZm9ybWF0dGVyKTsKIHN0YXRpYyB2b2lk IGR1bXBPcHIoQXJjaGl2ZSAqZm91dCwgY29uc3QgT3BySW5mbyAqb3ByaW5mbyk7CiBzdGF0aWMg dm9pZCBkdW1wQWNjZXNzTWV0aG9kKEFyY2hpdmUgKmZvdXQsIGNvbnN0IEFjY2Vzc01ldGhvZElu Zm8gKmFtaW5mbyk7CiBzdGF0aWMgdm9pZCBkdW1wT3BjbGFzcyhBcmNoaXZlICpmb3V0LCBjb25z dCBPcGNsYXNzSW5mbyAqb3BjaW5mbyk7CkBAIC05MzIwLDYgKzkzMjEsODMgQEAgZ2V0VHJhbnNm b3JtcyhBcmNoaXZlICpmb3V0KQogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiB9CiAKKy8q CisgKiBnZXRGb3JtYXR0ZXJzCisgKgkgIGdldCBiYXNpYyBpbmZvcm1hdGlvbiBhYm91dCBldmVy eSBmb3JtYXR0ZXIgaW4gdGhlIHN5c3RlbQorICovCit2b2lkCitnZXRGb3JtYXR0ZXJzKEFyY2hp dmUgKmZvdXQpCit7CisJUEdyZXN1bHQgICAqcmVzOworCWludAkJCW50dXBzOworCWludAkJCWk7 CisJUFFFeHBCdWZmZXIgcXVlcnk7CisJRm9ybWF0dGVySW5mbyAqZm9ybWF0dGVyaW5mbzsKKwlp bnQJCQlpX3RhYmxlb2lkOworCWludAkJCWlfb2lkOworCWludAkJCWlfZm10c291cmNlOworCWlu dAkJCWlfZm10dGFyZ2V0OworCWludAkJCWlfZm10ZnVuYzsKKworCS8qIEZvcm1hdHRlcnMgd2Vy ZSBpbnRyb2R1Y2VkIGluIHYxOSAqLworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uIDwgMTkwMDAw KQorCQlyZXR1cm47CisKKwlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CisKKwlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCAiCisJCQkJCQkgImZt dHNvdXJjZSwgZm10dGFyZ2V0LCBmbXRmdW5jICIKKwkJCQkJCSAiRlJPTSBwZ19mb3JtYXR0ZXIg IgorCQkJCQkJICJPUkRFUiBCWSAzLDQiKTsKKworCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0 LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCW50dXBzID0gUFFudHVwbGVzKHJl cyk7CisKKwlmb3JtYXR0ZXJpbmZvID0gcGdfbWFsbG9jX2FycmF5KEZvcm1hdHRlckluZm8sIG50 dXBzKTsKKworCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsKKwlpX29p ZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKKwlpX2ZtdHNvdXJjZSA9IFBRZm51bWJlcihyZXMs ICJmbXRzb3VyY2UiKTsKKwlpX2ZtdHRhcmdldCA9IFBRZm51bWJlcihyZXMsICJmbXR0YXJnZXQi KTsKKwlpX2ZtdGZ1bmMgPSBQUWZudW1iZXIocmVzLCAiZm10ZnVuYyIpOworCisJZm9yIChpID0g MDsgaSA8IG50dXBzOyBpKyspCisJeworCQlQUUV4cEJ1ZmZlckRhdGEgbmFtZWJ1ZjsKKwkJVHlw ZUluZm8gICAqc1R5cGVJbmZvOworCQlUeXBlSW5mbyAgICp0VHlwZUluZm87CisKKwkJZm9ybWF0 dGVyaW5mb1tpXS5kb2JqLm9ialR5cGUgPSBET19GT1JNQVRURVI7CisJCWZvcm1hdHRlcmluZm9b aV0uZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV90YWJs ZW9pZCkpOworCQlmb3JtYXR0ZXJpbmZvW2ldLmRvYmouY2F0SWQub2lkID0gYXRvb2lkKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX29pZCkpOworCQlBc3NpZ25EdW1wSWQoJmZvcm1hdHRlcmluZm9baV0u ZG9iaik7CisJCWZvcm1hdHRlcmluZm9baV0uZm10c291cmNlID0gYXRvb2lkKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX2ZtdHNvdXJjZSkpOworCQlmb3JtYXR0ZXJpbmZvW2ldLmZtdHRhcmdldCA9IGF0 b29pZChQUWdldHZhbHVlKHJlcywgaSwgaV9mbXR0YXJnZXQpKTsKKwkJZm9ybWF0dGVyaW5mb1tp XS5mbXRmdW5jID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBpX2ZtdGZ1bmMpKTsKKworCQkv KgorCQkgKiBUcnkgdG8gbmFtZSB0aGUgZm9ybWF0dGVyIGFzIGEgY29uY2F0ZW5hdGlvbiBvZiB0 aGUgdHlwZSBuYW1lcy4KKwkJICogVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHB1cnBvc2VzIG9mIHNv cnRpbmcuICBJZiB3ZSBmYWlsIHRvIGZpbmQKKwkJICogZWl0aGVyIHR5cGUsIHRoZSBuYW1lIHdp bGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorCQkgKi8KKwkJaW5pdFBRRXhwQnVmZmVyKCZuYW1lYnVm KTsKKwkJc1R5cGVJbmZvID0gZmluZFR5cGVCeU9pZChmb3JtYXR0ZXJpbmZvW2ldLmZtdHNvdXJj ZSk7CisJCXRUeXBlSW5mbyA9IGZpbmRUeXBlQnlPaWQoZm9ybWF0dGVyaW5mb1tpXS5mbXR0YXJn ZXQpOworCQlpZiAoc1R5cGVJbmZvICYmIHRUeXBlSW5mbykKKwkJCWFwcGVuZFBRRXhwQnVmZmVy KCZuYW1lYnVmLCAiJXMgJXMiLAorCQkJCQkJCSAgc1R5cGVJbmZvLT5kb2JqLm5hbWUsIHRUeXBl SW5mby0+ZG9iai5uYW1lKTsKKwkJZm9ybWF0dGVyaW5mb1tpXS5kb2JqLm5hbWUgPSBuYW1lYnVm LmRhdGE7CisKKwkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBkdW1wIGl0ICovCisJCXNl bGVjdER1bXBhYmxlT2JqZWN0KCYoZm9ybWF0dGVyaW5mb1tpXS5kb2JqKSwgZm91dCk7CisJfQor CisJUFFjbGVhcihyZXMpOworCisJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKK30KKwogLyoK ICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRlcmVzdGluZyB0YWJsZSwgcmVh ZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCkBAIC0xMTkxMyw2ICsxMTk5MSw5IEBAIGR1bXBE dW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1wYWJsZU9iamVjdCAqZG9iaikKIAkJY2Fz ZSBET19UUkFOU0ZPUk06CiAJCQlkdW1wVHJhbnNmb3JtKGZvdXQsIChjb25zdCBUcmFuc2Zvcm1J bmZvICopIGRvYmopOwogCQkJYnJlYWs7CisJCWNhc2UgRE9fRk9STUFUVEVSOgorCQkJZHVtcEZv cm1hdHRlcihmb3V0LCAoY29uc3QgRm9ybWF0dGVySW5mbyAqKSBkb2JqKTsKKwkJCWJyZWFrOwog CQljYXNlIERPX1NFUVVFTkNFX1NFVDoKIAkJCWR1bXBTZXF1ZW5jZURhdGEoZm91dCwgKGNvbnN0 IFRhYmxlRGF0YUluZm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE0MjU1LDYgKzE0MzM2LDkw IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgY29uc3QgVHJhbnNmb3JtSW5mbyAqdHJh bnNmb3JtKQogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0cmFuc2Zvcm1hcmdzKTsKIH0KIAorLyoKKyAq IER1bXAgYSBmb3JtYXR0ZXIKKyAqLworc3RhdGljIHZvaWQKK2R1bXBGb3JtYXR0ZXIoQXJjaGl2 ZSAqZm91dCwgY29uc3QgRm9ybWF0dGVySW5mbyAqZm9ybWF0dGVyKQoreworCUR1bXBPcHRpb25z ICpkb3B0ID0gZm91dC0+ZG9wdDsKKwlQUUV4cEJ1ZmZlciBkZWZxcnk7CisJUFFFeHBCdWZmZXIg ZGVscXJ5OworCVBRRXhwQnVmZmVyIGxhYmVscTsKKwlQUUV4cEJ1ZmZlciBmb3JtYXR0ZXJhcmdz OworCUZ1bmNJbmZvICAgKmZ1bmNJbmZvOworCWNvbnN0IGNoYXIgKnNvdXJjZVR5cGU7CisJY29u c3QgY2hhciAqdGFyZ2V0VHlwZTsKKworCS8qIERvIG5vdGhpbmcgaWYgbm90IGR1bXBpbmcgc2No ZW1hICovCisJaWYgKCFkb3B0LT5kdW1wU2NoZW1hKQorCQlyZXR1cm47CisKKwkvKiBDYW5ub3Qg ZHVtcCBpZiB3ZSBkb24ndCBoYXZlIHRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24ncyBpbmZvICovCisJ ZnVuY0luZm8gPSBmaW5kRnVuY0J5T2lkKGZvcm1hdHRlci0+Zm10ZnVuYyk7CisJaWYgKGZ1bmNJ bmZvID09IE5VTEwpCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0 aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldSIsCisJCQkJIGZvcm1hdHRlci0+Zm10ZnVuYyk7 CisKKwlkZWZxcnkgPSBjcmVhdGVQUUV4cEJ1ZmZlcigpOworCWRlbHFyeSA9IGNyZWF0ZVBRRXhw QnVmZmVyKCk7CisJbGFiZWxxID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKwlmb3JtYXR0ZXJhcmdz ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKKworCXNvdXJjZVR5cGUgPSBnZXRGb3JtYXR0ZWRUeXBl TmFtZShmb3V0LCBmb3JtYXR0ZXItPmZtdHNvdXJjZSwgemVyb0FzTm9uZSk7CisJdGFyZ2V0VHlw ZSA9IGdldEZvcm1hdHRlZFR5cGVOYW1lKGZvdXQsIGZvcm1hdHRlci0+Zm10dGFyZ2V0LCB6ZXJv QXNOb25lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVyKGRlbHFyeSwgIkRST1AgRk9STUFUVEVSIEZP UiBDQVNUICglcyBBUyAlcyk7XG4iLAorCQkJCQkgIHNvdXJjZVR5cGUsIHRhcmdldFR5cGUpOwor CisJYXBwZW5kUFFFeHBCdWZmZXIoZGVmcXJ5LCAiQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAo JXMgQVMgJXMpICIsCisJCQkJCSAgc291cmNlVHlwZSwgdGFyZ2V0VHlwZSk7CisKKwl7CisJCWNo YXIJICAgKmZzaWcgPSBmb3JtYXRfZnVuY3Rpb25fc2lnbmF0dXJlKGZvdXQsIGZ1bmNJbmZvLCB0 cnVlKTsKKworCQkvKgorCQkgKiBBbHdheXMgcXVhbGlmeSB0aGUgZnVuY3Rpb24gbmFtZSAoZm9y bWF0X2Z1bmN0aW9uX3NpZ25hdHVyZSB3b24ndAorCQkgKiBxdWFsaWZ5IGl0KS4KKwkJICovCisJ CWFwcGVuZFBRRXhwQnVmZmVyKGRlZnFyeSwgIldJVEggRlVOQ1RJT04gJXMuJXMiLAorCQkJCQkJ ICBmbXRJZChmdW5jSW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSksIGZzaWcpOworCQlm cmVlKGZzaWcpOworCX0KKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZWZxcnksICI7XG4iKTsKKwor CWFwcGVuZFBRRXhwQnVmZmVyKGxhYmVscSwgIkZPUk1BVFRFUiBGT1IgQ0FTVCAoJXMgQVMgJXMp IiwKKwkJCQkJICBzb3VyY2VUeXBlLCB0YXJnZXRUeXBlKTsKKworCWFwcGVuZFBRRXhwQnVmZmVy KGZvcm1hdHRlcmFyZ3MsICJGT1IgQ0FTVCAoJXMgQVMgJXMpIiwKKwkJCQkJICBzb3VyY2VUeXBl LCB0YXJnZXRUeXBlKTsKKworCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSkKKwkJYmluYXJ5X3Vw Z3JhZGVfZXh0ZW5zaW9uX21lbWJlcihkZWZxcnksICZmb3JtYXR0ZXItPmRvYmosCisJCQkJCQkJ CQkJIkZPUk1BVFRFUiIsIGZvcm1hdHRlcmFyZ3MtPmRhdGEsIE5VTEwpOworCisJaWYgKGZvcm1h dHRlci0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikKKwkJQXJjaGl2ZUVu dHJ5KGZvdXQsIGZvcm1hdHRlci0+ZG9iai5jYXRJZCwgZm9ybWF0dGVyLT5kb2JqLmR1bXBJZCwK KwkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gbGFiZWxxLT5kYXRhLAorCQkJCQkJCQkgIC5kZXNj cmlwdGlvbiA9ICJGT1JNQVRURVIiLAorCQkJCQkJCQkgIC5zZWN0aW9uID0gU0VDVElPTl9QUkVf REFUQSwKKwkJCQkJCQkJICAuY3JlYXRlU3RtdCA9IGRlZnFyeS0+ZGF0YSwKKwkJCQkJCQkJICAu ZHJvcFN0bXQgPSBkZWxxcnktPmRhdGEsCisJCQkJCQkJCSAgLmRlcHMgPSBmb3JtYXR0ZXItPmRv YmouZGVwZW5kZW5jaWVzLAorCQkJCQkJCQkgIC5uRGVwcyA9IGZvcm1hdHRlci0+ZG9iai5uRGVw cykpOworCisJLyogRHVtcCBGb3JtYXR0ZXIgQ29tbWVudHMgKi8KKwlpZiAoZm9ybWF0dGVyLT5k b2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9DT01NRU5UKQorCQlkdW1wQ29tbWVudChmb3V0LCAi Rk9STUFUVEVSIiwgZm9ybWF0dGVyYXJncy0+ZGF0YSwKKwkJCQkJTlVMTCwgIiIsCisJCQkJCWZv cm1hdHRlci0+ZG9iai5jYXRJZCwgMCwgZm9ybWF0dGVyLT5kb2JqLmR1bXBJZCk7CisKKwlkZXN0 cm95UFFFeHBCdWZmZXIoZGVmcXJ5KTsKKwlkZXN0cm95UFFFeHBCdWZmZXIoZGVscXJ5KTsKKwlk ZXN0cm95UFFFeHBCdWZmZXIobGFiZWxxKTsKKwlkZXN0cm95UFFFeHBCdWZmZXIoZm9ybWF0dGVy YXJncyk7Cit9CisKIAogLyoKICAqIGR1bXBPcHIKQEAgLTIwNjk2LDYgKzIwODYxLDcgQEAgYWRk Qm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2JqcywgaW50IG51bU9ianMs CiAJCQljYXNlIERPX0ZEVzoKIAkJCWNhc2UgRE9fRk9SRUlHTl9TRVJWRVI6CiAJCQljYXNlIERP X1RSQU5TRk9STToKKwkJCWNhc2UgRE9fRk9STUFUVEVSOgogCQkJCS8qIFByZS1kYXRhIG9iamVj dHM6IG11c3QgY29tZSBiZWZvcmUgdGhlIHByZS1kYXRhIGJvdW5kYXJ5ICovCiAJCQkJYWRkT2Jq ZWN0RGVwZW5kZW5jeShwcmVEYXRhQm91bmQsIGRvYmotPmR1bXBJZCk7CiAJCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaAppbmRleCA1YTY3MjZkOGIxMi4uYjNhZGI5N2I1YmEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAt NzMsNiArNzMsNyBAQCB0eXBlZGVmIGVudW0KIAlET19GT1JFSUdOX1NFUlZFUiwKIAlET19ERUZB VUxUX0FDTCwKIAlET19UUkFOU0ZPUk0sCisJRE9fRk9STUFUVEVSLAogCURPX0xBUkdFX09CSkVD VCwKIAlET19MQVJHRV9PQkpFQ1RfREFUQSwKIAlET19QUkVfREFUQV9CT1VOREFSWSwKQEAgLTU1 OSw2ICs1NjAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RyYW5zZm9ybUluZm8KIAlPaWQJCQl0cmZ0 b3NxbDsKIH0gVHJhbnNmb3JtSW5mbzsKIAordHlwZWRlZiBzdHJ1Y3QgX2Zvcm1hdHRlckluZm8K K3sKKwlEdW1wYWJsZU9iamVjdCBkb2JqOworCU9pZAkJCWZtdHNvdXJjZTsKKwlPaWQJCQlmbXR0 YXJnZXQ7CisJT2lkCQkJZm10ZnVuYzsKK30gRm9ybWF0dGVySW5mbzsKKwogLyogSW5oSW5mbyBp c24ndCBhIER1bXBhYmxlT2JqZWN0LCBqdXN0IHRlbXBvcmFyeSBzdGF0ZSAqLwogdHlwZWRlZiBz dHJ1Y3QgX2luaEluZm8KIHsKQEAgLTgxNCw2ICs4MjMsNyBAQCBleHRlcm4gdm9pZCBnZXRUcmln Z2VycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKTsK IGV4dGVybiB2b2lkIGdldFByb2NMYW5ncyhBcmNoaXZlICpmb3V0KTsKIGV4dGVybiB2b2lkIGdl dENhc3RzKEFyY2hpdmUgKmZvdXQpOwogZXh0ZXJuIHZvaWQgZ2V0VHJhbnNmb3JtcyhBcmNoaXZl ICpmb3V0KTsKK2V4dGVybiB2b2lkIGdldEZvcm1hdHRlcnMoQXJjaGl2ZSAqZm91dCk7CiBleHRl cm4gdm9pZCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywg aW50IG51bVRhYmxlcyk7CiBleHRlcm4gYm9vbCBzaG91bGRQcmludENvbHVtbihjb25zdCBEdW1w T3B0aW9ucyAqZG9wdCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8sIGludCBjb2xubyk7CiBleHRl cm4gdm9pZCBnZXRUU1BhcnNlcnMoQXJjaGl2ZSAqZm91dCk7CmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMK aW5kZXggMDNlNWMxYzExMTYuLjY1ZGY4MWM5MzI0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBA IC02MCw2ICs2MCw3IEBAIGVudW0gZGJPYmplY3RUeXBlUHJpb3JpdGllcwogCVBSSU9fRVhURU5T SU9OLAogCVBSSU9fVFlQRSwJCQkJCS8qIHVzZWQgZm9yIERPX1RZUEUgYW5kIERPX1NIRUxMX1RZ UEUgKi8KIAlQUklPX0NBU1QsCisJUFJJT19GT1JNQVRURVIsCiAJUFJJT19GVU5DLAogCVBSSU9f QUdHLAogCVBSSU9fQUNDRVNTX01FVEhPRCwKQEAgLTEyOCw2ICsxMjksNyBAQCBzdGF0aWMgY29u c3QgaW50IGRiT2JqZWN0VHlwZVByaW9yaXR5W10gPQogCVtET19GS19DT05TVFJBSU5UXSA9IFBS SU9fRktfQ09OU1RSQUlOVCwKIAlbRE9fUFJPQ0xBTkddID0gUFJJT19QUk9DTEFORywKIAlbRE9f Q0FTVF0gPSBQUklPX0NBU1QsCisJW0RPX0ZPUk1BVFRFUl0gPSBQUklPX0ZPUk1BVFRFUiwKIAlb RE9fVEFCTEVfREFUQV0gPSBQUklPX1RBQkxFX0RBVEEsCiAJW0RPX1NFUVVFTkNFX1NFVF0gPSBQ UklPX1NFUVVFTkNFX1NFVCwKIAlbRE9fRFVNTVlfVFlQRV0gPSBQUklPX0RVTU1ZX1RZUEUsCkBA IC0xNjQ5LDYgKzE2NTEsMTMgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChEdW1wYWJsZU9iamVj dCAqb2JqLCBjaGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkgKChDYXN0SW5mbyAqKSBvYmop LT5jYXN0dGFyZ2V0LAogCQkJCQkgb2JqLT5kdW1wSWQsIG9iai0+Y2F0SWQub2lkKTsKIAkJCXJl dHVybjsKKwkJY2FzZSBET19GT1JNQVRURVI6CisJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCisJ CQkJCSAiRk9STUFUVEVSICV1IHRvICV1ICAoSUQgJWQgT0lEICV1KSIsCisJCQkJCSAoKEZvcm1h dHRlckluZm8gKikgb2JqKS0+Zm10c291cmNlLAorCQkJCQkgKChGb3JtYXR0ZXJJbmZvICopIG9i aiktPmZtdHRhcmdldCwKKwkJCQkJIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJCQly ZXR1cm47CiAJCWNhc2UgRE9fVFJBTlNGT1JNOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAog CQkJCQkgIlRSQU5TRk9STSAldSBsYW5nICV1ICAoSUQgJWQgT0lEICV1KSIsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtl ZmlsZQppbmRleCBiYWI1NzM3MmI4OC4uODcyZjIyYjM5MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQpA QCAtNzUsNiArNzUsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCiAJcGdfcmFuZ2UuaCBcCisJcGdfZm9ybWF0 dGVyLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKIAlwZ19wdWJsaWNh dGlvbi5oIFwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggNjM1YzBkOWNiMTMuLjY0MDJj Yzc2Yzg3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICov CiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAy NjA2MjgxCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDYyODIKIAogI2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCBmYTgzNmU0ZWUyNS4uZWE3ZmVmNTc0NGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9tZXNvbi5idWlsZApAQCAtNjIsNiArNjIsNyBAQCBjYXRhbG9nX2hlYWRlcnMgPSBb CiAgICdwZ19wYXJhbWV0ZXJfYWNsLmgnLAogICAncGdfcGFydGl0aW9uZWRfdGFibGUuaCcsCiAg ICdwZ19yYW5nZS5oJywKKyAgJ3BnX2Zvcm1hdHRlci5oJywKICAgJ3BnX3RyYW5zZm9ybS5oJywK ICAgJ3BnX3NlcXVlbmNlLmgnLAogICAncGdfcHVibGljYXRpb24uaCcsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Zvcm1hdHRlci5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19mb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTQx YTFkZTU0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Zvcm1h dHRlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX2Zv cm1hdHRlci5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJmb3JtYXR0ZXIiIHN5c3RlbSBjYXRh bG9nIChwZ19mb3JtYXR0ZXIpCisgKgorICogQSBmb3JtYXR0ZXIgcmVnaXN0ZXJzIGEgZnVuY3Rp b24gdGhhdCBpbXBsZW1lbnRzCisgKiBDQVNUKGV4cHIgQVMgdGFyZ2V0IEZPUk1BVCBmb3JtYXRf ZXhwcikgZm9yIGEgcGFydGljdWxhcgorICogKHNvdXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkgcGFp ci4gIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb24gcmVjZWl2ZXMgdGhlCisgKiBzb3VyY2UgdmFsdWUg YW5kIHRoZSBGT1JNQVQgZXhwcmVzc2lvbiAoYXMgdGV4dCkgYW5kIHJldHVybnMgdGhlIHRhcmdl dAorICogdHlwZS4gIFRoaXMgaXMgaW50ZW50aW9uYWxseSBzZXBhcmF0ZSBmcm9tIHBnX2Nhc3Q6 IG9yZGluYXJ5IGNhc3RzIGhhdmUKKyAqIGltcGxpY2l0L2Fzc2lnbm1lbnQvZXhwbGljaXQgY29u dGV4dHMgYW5kIGJpbmFyeS1jb2VyY2libGUvV0lUSCBJTk9VVC8KKyAqIFdJVEhPVVQgRlVOQ1RJ T04gbWV0aG9kcywgd2hlcmVhcyBhIGZvcm1hdHRlZCBjYXN0IGlzIGFsd2F5cyBleHBsaWNpdCBh bmQKKyAqIGFsd2F5cyByZXF1aXJlcyBhIGZ1bmN0aW9uLgorICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Zvcm1hdHRlci5o CisgKgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmls ZSBhbmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfRk9STUFUVEVSX0gKKyNkZWZpbmUgUEdfRk9STUFUVEVS X0gKKworI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19m b3JtYXR0ZXJfZC5oIgkvKiBJV1lVIHByYWdtYTogZXhwb3J0ICovCisKKy8qIC0tLS0tLS0tLS0t LS0tLS0KKyAqCQlwZ19mb3JtYXR0ZXIgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGludG8K KyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19mb3JtYXR0ZXIKKyAqIC0tLS0tLS0tLS0t LS0tLS0KKyAqLworQkVHSU5fQ0FUQUxPR19TVFJVQ1QKKworQ0FUQUxPRyhwZ19mb3JtYXR0ZXIs ODY0NyxGb3JtYXR0ZXJSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KKwlP aWQJCQlmbXRzb3VyY2UgQktJX0xPT0tVUChwZ190eXBlKTsJLyogc291cmNlIHR5cGUgKi8KKwlP aWQJCQlmbXR0YXJnZXQgQktJX0xPT0tVUChwZ190eXBlKTsJLyogdGFyZ2V0IHR5cGUgKi8KKwlP aWQJCQlmbXRmdW5jIEJLSV9MT09LVVAocGdfcHJvYyk7CS8qIGZvcm1hdHRlciBmdW5jdGlvbiAq LworfSBGb3JtRGF0YV9wZ19mb3JtYXR0ZXI7CisKK0VORF9DQVRBTE9HX1NUUlVDVAorCisvKiAt LS0tLS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19mb3JtYXR0ZXIgY29ycmVzcG9uZHMgdG8gYSBw b2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfZm9ybWF0dGVyIHJl bGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX2Zv cm1hdHRlciAqRm9ybV9wZ19mb3JtYXR0ZXI7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVko cGdfZm9ybWF0dGVyX29pZF9pbmRleCwgODY0OCwgRm9ybWF0dGVyT2lkSW5kZXhJZCwgcGdfZm9y bWF0dGVyLCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfZm9y bWF0dGVyX3NvdXJjZV90YXJnZXRfaW5kZXgsIDg2NDksIEZvcm1hdHRlclNvdXJjZVRhcmdldElu ZGV4SWQsIHBnX2Zvcm1hdHRlciwgYnRyZWUoZm10c291cmNlIG9pZF9vcHMsIGZtdHRhcmdldCBv aWRfb3BzKSk7CisKK01BS0VfU1lTQ0FDSEUoRk9STUFUVEVST0lELCBwZ19mb3JtYXR0ZXJfb2lk X2luZGV4LCA4KTsKK01BS0VfU1lTQ0FDSEUoRk9STUFUVEVSU09VUkNFVEFSR0VULCBwZ19mb3Jt YXR0ZXJfc291cmNlX3RhcmdldF9pbmRleCwgOCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19GT1JN QVRURVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZm9ybWF0dGVyLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9mb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uYzY4YTg3NDU2NzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9mb3JtYXR0ZXIuaApAQCAtMCwwICsxLDI0IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqCisgKiBmb3JtYXR0ZXIuaAorICoJICBwcm90b3R5cGVzIGZvciBmb3JtYXR0ZXJj bWRzLmMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBz cmMvaW5jbHVkZS9jb21tYW5kcy9mb3JtYXR0ZXIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaWZuZGVmIEZPUk1BVFRFUl9ICisjZGVmaW5lIEZPUk1BVFRFUl9ICisKKyNpbmNsdWRl ICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgi CisKK2V4dGVybiBPYmplY3RBZGRyZXNzIENyZWF0ZUZvcm1hdHRlcihDcmVhdGVGb3JtYXR0ZXJT dG10ICpzdG10KTsKK2V4dGVybiBPaWQJZ2V0X2Zvcm1hdHRlcl9vaWQoT2lkIHNvdXJjZXR5cGVp ZCwgT2lkIHRhcmdldHR5cGVpZCwKKwkJCQkJCQkgIGJvb2wgbWlzc2luZ19vayk7CisKKyNlbmRp ZgkJCQkJCQkvKiBGT1JNQVRURVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDc1OWM2 YmZhZTU0Li4wYjA0MzFmNGI2YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjQ0NSw2ICsy NDQ1LDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1RfRkRXLAogCU9CSkVDVF9G T1JFSUdOX1NFUlZFUiwKIAlPQkpFQ1RfRk9SRUlHTl9UQUJMRSwKKwlPQkpFQ1RfRk9STUFUVEVS LAogCU9CSkVDVF9GVU5DVElPTiwKIAlPQkpFQ1RfSU5ERVgsCiAJT0JKRUNUX0xBTkdVQUdFLApA QCAtNDM1Niw2ICs0MzU3LDIyIEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVRyYW5zZm9ybVN0bXQK IAlPYmplY3RXaXRoQXJncyAqdG9zcWw7CiB9IENyZWF0ZVRyYW5zZm9ybVN0bXQ7CiAKKy8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCUNSRUFURSBGT1JNQVRURVIgU3RhdGVtZW50CisgKgor ICogUmVnaXN0ZXJzIGEgZm9ybWF0dGVyIGZ1bmN0aW9uIGZvciBDQVNUKC4uLiBBUyB0YXJnZXQg Rk9STUFUIC4uLikgb24gYQorICogKHNvdXJjZXR5cGUsIHRhcmdldHR5cGUpIHBhaXIuICBEUk9Q IEZPUk1BVFRFUiByZXVzZXMgdGhlIGdlbmVyaWMKKyAqIERyb3BTdG10IHBhdGggd2l0aCByZW1v dmVUeXBlID09IE9CSkVDVF9GT1JNQVRURVIuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KK3R5cGVkZWYgc3RydWN0IENyZWF0ZUZvcm1hdHRlclN0bXQKK3sKKwlOb2RlVGFnCQl0eXBl OworCVR5cGVOYW1lICAgKnNvdXJjZXR5cGU7CQkvKiBzb3VyY2UgZGF0YSB0eXBlICovCisJVHlw ZU5hbWUgICAqdGFyZ2V0dHlwZTsJCS8qIHRhcmdldCBkYXRhIHR5cGUgKi8KKwlPYmplY3RXaXRo QXJncyAqZnVuYzsJCS8qIGZvcm1hdHRlciBmdW5jdGlvbiAqLworfSBDcmVhdGVGb3JtYXR0ZXJT dG10OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJUFJFUEFSRSBTdGF0ZW1lbnQK ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNl ci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1MWVhZDU0ZjAx NS4uN2NlNTM5Yzc5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTE4Myw2ICsxODMsNyBAQCBQR19L RVlXT1JEKCJmb3IiLCBGT1IsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09S RCgiZm9yY2UiLCBGT1JDRSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgiZm9yZWlnbiIsIEZPUkVJR04sIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQ R19LRVlXT1JEKCJmb3JtYXQiLCBGT1JNQVQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKK1BHX0tFWVdPUkQoImZvcm1hdHRlciIsIEZPUk1BVFRFUiwgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZm9yd2FyZCIsIEZPUldBUkQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImZyZWV6ZSIsIEZSRUVaRSwgVFlQRV9G VU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImZyb20iLCBGUk9NLCBS RVNFUlZFRF9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3Av Y21kdGFnbGlzdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmgKaW5kZXggYmVmYWU1 ZjZiNGYuLmM1NzAxYjRhOGFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xp c3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL2NtZHRhZ2xpc3QuaApAQCAtOTUsNiArOTUsNyBA QCBQR19DTURUQUcoQ01EVEFHX0NSRUFURV9FVkVOVF9UUklHR0VSLCAiQ1JFQVRFIEVWRU5UIFRS SUdHRVIiLCBmYWxzZSwgZmFsc2UsIGZhbAogUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRVhURU5T SU9OLCAiQ1JFQVRFIEVYVEVOU0lPTiIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhD TURUQUdfQ1JFQVRFX0ZPUkVJR05fREFUQV9XUkFQUEVSLCAiQ1JFQVRFIEZPUkVJR04gREFUQSBX UkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9S RUlHTl9UQUJMRSwgIkNSRUFURSBGT1JFSUdOIFRBQkxFIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQor UEdfQ01EVEFHKENNRFRBR19DUkVBVEVfRk9STUFUVEVSLCAiQ1JFQVRFIEZPUk1BVFRFUiIsIHRy dWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhDTURUQUdfQ1JFQVRFX0ZVTkNUSU9OLCAiQ1JF QVRFIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19DUkVB VEVfSU5ERVgsICJDUkVBVEUgSU5ERVgiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUco Q01EVEFHX0NSRUFURV9MQU5HVUFHRSwgIkNSRUFURSBMQU5HVUFHRSIsIHRydWUsIGZhbHNlLCBm YWxzZSkKQEAgLTE0OCw2ICsxNDksNyBAQCBQR19DTURUQUcoQ01EVEFHX0RST1BfRVZFTlRfVFJJ R0dFUiwgIkRST1AgRVZFTlQgVFJJR0dFUiIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURU QUcoQ01EVEFHX0RST1BfRVhURU5TSU9OLCAiRFJPUCBFWFRFTlNJT04iLCB0cnVlLCBmYWxzZSwg ZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RST1BfRk9SRUlHTl9EQVRBX1dSQVBQRVIsICJEUk9Q IEZPUkVJR04gREFUQSBXUkFQUEVSIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENN RFRBR19EUk9QX0ZPUkVJR05fVEFCTEUsICJEUk9QIEZPUkVJR04gVEFCTEUiLCB0cnVlLCBmYWxz ZSwgZmFsc2UpCitQR19DTURUQUcoQ01EVEFHX0RST1BfRk9STUFUVEVSLCAiRFJPUCBGT1JNQVRU RVIiLCB0cnVlLCBmYWxzZSwgZmFsc2UpCiBQR19DTURUQUcoQ01EVEFHX0RST1BfRlVOQ1RJT04s ICJEUk9QIEZVTkNUSU9OIiwgdHJ1ZSwgZmFsc2UsIGZhbHNlKQogUEdfQ01EVEFHKENNRFRBR19E Uk9QX0lOREVYLCAiRFJPUCBJTkRFWCIsIHRydWUsIGZhbHNlLCBmYWxzZSkKIFBHX0NNRFRBRyhD TURUQUdfRFJPUF9MQU5HVUFHRSwgIkRST1AgTEFOR1VBR0UiLCB0cnVlLCBmYWxzZSwgZmFsc2Up CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcm1hdHRlcnMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JtYXR0ZXJzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmIxZjA5MWExYjgKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcm1hdHRlcnMub3V0CkBAIC0wLDAgKzEsMTE2IEBA CistLQorLS0gRk9STUFUVEVSUworLS0KKy0tIENSRUFURS9EUk9QIEZPUk1BVFRFUiByZWdpc3Rl cnMgZm9ybWF0dGVyIG1ldGFkYXRhIGluIHBnX2Zvcm1hdHRlciwKKy0tIGtleWVkIGJ5IGEgKHNv dXJjZSB0eXBlLCB0YXJnZXQgdHlwZSkgcGFpci4gIFRoaXMgaXMgY2F0YWxvZyBhbmQgRERMCist LSBpbmZyYXN0cnVjdHVyZSBvbmx5OyBpdCBkb2VzIG5vdCB0cmFuc2Zvcm0gb3IgZXhlY3V0ZSBm b3JtYXR0ZWQgY2FzdHMuCistLSBBIHNpbXBsZSBmb3JtYXR0ZXIgZnVuY3Rpb24gd2l0aCB0aGUg cmVxdWlyZWQgc2lnbmF0dXJlCistLSAgIGZvcm1hdHRlcihzb3VyY2VfdHlwZSwgdGV4dCkgcmV0 dXJucyB0YXJnZXRfdHlwZQorQ1JFQVRFIEZVTkNUSU9OIGludDRfdG9fdGV4dF9mbXQoaW50ZWdl ciwgdGV4dCkgUkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gJDE6 OnRleHQgfHwgJzonIHx8ICQyOworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBB UyB0ZXh0KQorCVdJVEggRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLCB0ZXh0KTsK Ky0tIEl0IHNob3dzIHVwIGluIHRoZSBjYXRhbG9nICh1c2UgcmVndHlwZS9yZWdwcm9jZWR1cmUs IG5vdCByYXcgT0lEcykKK1NFTEVDVCBmbXRzb3VyY2U6OnJlZ3R5cGUsIGZtdHRhcmdldDo6cmVn dHlwZSwgZm10ZnVuYzo6cmVncHJvY2VkdXJlCisJRlJPTSBwZ19mb3JtYXR0ZXIKKwlXSEVSRSBm bXRzb3VyY2UgPSAnaW50ZWdlcic6OnJlZ3R5cGUgQU5EIGZtdHRhcmdldCA9ICd0ZXh0Jzo6cmVn dHlwZTsKKyBmbXRzb3VyY2UgfCBmbXR0YXJnZXQgfCAgICAgICAgICAgIGZtdGZ1bmMgICAgICAg ICAgICAgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIGludGVnZXIgICB8IHRleHQgICAgICB8IGludDRfdG9fdGV4dF9mbXQoaW50ZWdl cix0ZXh0KQorKDEgcm93KQorCistLSAuLi4gYW5kIGFzIGEgZmlyc3QtY2xhc3Mgb2JqZWN0CitT RUxFQ1QgcGdfZGVzY3JpYmVfb2JqZWN0KCdwZ19mb3JtYXR0ZXInOjpyZWdjbGFzcywgb2lkLCAw KQorCUZST00gcGdfZm9ybWF0dGVyCisJV0hFUkUgZm10c291cmNlID0gJ2ludGVnZXInOjpyZWd0 eXBlIEFORCBmbXR0YXJnZXQgPSAndGV4dCc6OnJlZ3R5cGU7CisgICAgICAgICAgIHBnX2Rlc2Ny aWJlX29iamVjdCAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBmb3JtYXR0ZXIgZm9yIGNhc3QgZnJvbSBpbnRlZ2VyIHRvIHRleHQKKygxIHJv dykKKworLS0gT25seSBvbmUgZm9ybWF0dGVyIHBlciAoc291cmNlLCB0YXJnZXQpIHBhaXIKK0NS RUFURSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlXSVRIIEZVTkNUSU9O IGludDRfdG9fdGV4dF9mbXQoaW50ZWdlciwgdGV4dCk7CitFUlJPUjogIGZvcm1hdHRlciBmb3Ig Y2FzdCBmcm9tIHR5cGUgaW50ZWdlciB0byB0eXBlIHRleHQgYWxyZWFkeSBleGlzdHMKKy0tIEZ1 bmN0aW9uIHNpZ25hdHVyZSB2YWxpZGF0aW9uCitDUkVBVEUgRlVOQ1RJT04gZm10X2JhZF9uYXJn cyhpbnRlZ2VyKSBSRVRVUk5TIHRleHQKKwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFJFVFVSTiAk MTo6dGV4dDsKK0NSRUFURSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlX SVRIIEZVTkNUSU9OIGZtdF9iYWRfbmFyZ3MoaW50ZWdlcik7CQkJLS0gd3JvbmcgIyBvZiBhcmd1 bWVudHMKK0VSUk9SOiAgZm9ybWF0dGVyIGZ1bmN0aW9uIG11c3QgdGFrZSBleGFjdGx5IHR3byBh cmd1bWVudHMKK0NSRUFURSBGVU5DVElPTiBmbXRfYmFkX2FyZzIoaW50ZWdlciwgaW50ZWdlcikg UkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gJDE6OnRleHQ7CitD UkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElP TiBmbXRfYmFkX2FyZzIoaW50ZWdlciwgaW50ZWdlcik7CS0tIHNlY29uZCBhcmcgbm90IHRleHQK K0VSUk9SOiAgc2Vjb25kIGFyZ3VtZW50IG9mIGZvcm1hdHRlciBmdW5jdGlvbiBtdXN0IGJlIHR5 cGUgdGV4dAorQ1JFQVRFIEZVTkNUSU9OIGZtdF9iYWRfYXJnMShiaWdpbnQsIHRleHQpIFJFVFVS TlMgdGV4dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOICQxOjp0ZXh0OworQ1JFQVRF IEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KQorCVdJVEggRlVOQ1RJT04gZm10 X2JhZF9hcmcxKGJpZ2ludCwgdGV4dCk7CQktLSBmaXJzdCBhcmcgbWlzbWF0Y2gKK0VSUk9SOiAg Zmlyc3QgYXJndW1lbnQgb2YgZm9ybWF0dGVyIGZ1bmN0aW9uIG11c3QgYmUgdHlwZSBpbnRlZ2Vy CitDUkVBVEUgRlVOQ1RJT04gZm10X2JhZF9yZXQoaW50ZWdlciwgdGV4dCkgUkVUVVJOUyBib29s ZWFuCisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBSRVRVUk4gdHJ1ZTsKK0NSRUFURSBGT1JNQVRU RVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlXSVRIIEZVTkNUSU9OIGZtdF9iYWRfcmV0 KGludGVnZXIsIHRleHQpOwkJLS0gcmV0dXJuIHR5cGUgbWlzbWF0Y2gKK0VSUk9SOiAgcmV0dXJu IGRhdGEgdHlwZSBvZiBmb3JtYXR0ZXIgZnVuY3Rpb24gbXVzdCBiZSB0eXBlIHRleHQKK0NSRUFU RSBGVU5DVElPTiBmbXRfYmFkX3NldChpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIFNFVE9GIHRleHQK KwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIEFTICQkIFNFTEVDVCAkMTo6dGV4dCAkJDsKK0NSRUFU RSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlXSVRIIEZVTkNUSU9OIGZt dF9iYWRfc2V0KGludGVnZXIsIHRleHQpOwkJLS0gc2V0LXJldHVybmluZyByZWplY3RlZAorRVJS T1I6ICBmb3JtYXR0ZXIgZnVuY3Rpb24gbXVzdCBub3QgcmV0dXJuIGEgc2V0CistLSBObyBwc2V1 ZG8tdHlwZXMKK0NSRUFURSBGVU5DVElPTiBmbXRfYW55ZWwoYW55ZWxlbWVudCwgdGV4dCkgUkVU VVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBBUyAkJCBTRUxFQ1QgJDIgJCQ7CitD UkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUIChhbnllbGVtZW50IEFTIHRleHQpCisJV0lUSCBGVU5D VElPTiBmbXRfYW55ZWwoYW55ZWxlbWVudCwgdGV4dCk7CitFUlJPUjogIHNvdXJjZSBkYXRhIHR5 cGUgYW55ZWxlbWVudCBpcyBhIHBzZXVkby10eXBlCistLSBSZWdpc3RlcmluZyBhIGZvcm1hdHRl ciBkb2VzIG5vdCBlbmFibGUgYSBmb3JtYXR0ZWQgY2FzdDogdGhlIEZPUk1BVAorLS0gY2xhdXNl IG11c3Qgbm90IGJlIHNpbGVudGx5IGlnbm9yZWQgb3IgcmV3cml0dGVuIHRvIGEgYnVpbHQtaW4g ZnVuY3Rpb24sCistLSBzbyBDQVNUKC4uLiBGT1JNQVQgLi4uKSBpcyByZWplY3RlZCBkdXJpbmcg cGFyc2UgYW5hbHlzaXMuCitTRUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9STUFUICdZWVlZJyk7CitF UlJPUjogIGZvcm1hdHRlZCBjYXN0cyBhcmUgbm90IGltcGxlbWVudGVkIHlldAorTElORSAxOiBT RUxFQ1QgQ0FTVCg1IEFTIHRleHQgRk9STUFUICdZWVlZJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorREVUQUlMOiAgTm8gZm9ybWF0dGVyIHJlc29sdXRpb24gbWVj aGFuaXNtIGlzIGF2YWlsYWJsZS4KKy0tIERlcGVuZGVuY3kgYmVoYXZpb3I6IHRoZSBmb3JtYXR0 ZXIgZGVwZW5kcyBvbiBpdHMgZnVuY3Rpb24uCitEUk9QIEZVTkNUSU9OIGludDRfdG9fdGV4dF9m bXQoaW50ZWdlciwgdGV4dCk7CQkJCS0tIGZhaWxzIChSRVNUUklDVCkKK0VSUk9SOiAgY2Fubm90 IGRyb3AgZnVuY3Rpb24gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLHRleHQpIGJlY2F1c2Ugb3Ro ZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9t IGludGVnZXIgdG8gdGV4dCBkZXBlbmRzIG9uIGZ1bmN0aW9uIGludDRfdG9fdGV4dF9mbXQoaW50 ZWdlcix0ZXh0KQorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVu ZGVudCBvYmplY3RzIHRvby4KK0RST1AgRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2Vy LCB0ZXh0KSBDQVNDQURFOwkJLS0gZHJvcHMgZm9ybWF0dGVyCitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIGludGVnZXIgdG8gdGV4dAorU0VMRUNUIGNv dW50KCopIEZST00gcGdfZm9ybWF0dGVyCisJV0hFUkUgZm10c291cmNlID0gJ2ludGVnZXInOjpy ZWd0eXBlIEFORCBmbXR0YXJnZXQgPSAndGV4dCc6OnJlZ3R5cGU7CisgY291bnQgCistLS0tLS0t CisgICAgIDAKKygxIHJvdykKKworLS0gUHJpdmlsZWdlczogdGhlIGNyZWF0b3IgbXVzdCBvd24g dGhlIHNvdXJjZSBvciB0aGUgdGFyZ2V0IHR5cGUuICAoVGhlCistLSBvd25lcnNoaXAgY2hlY2sg aGFwcGVucyBiZWZvcmUgdGhlIGZ1bmN0aW9uIGlzIGxvb2tlZCB1cCwgc28gdGhlIGZ1bmN0aW9u CistLSBuYW1lIGhlcmUgaXMgaXJyZWxldmFudC4pCitDUkVBVEUgUk9MRSByZWdyZXNzX2Zvcm1h dHRlcl91c2VyOworU0VUIFJPTEUgcmVncmVzc19mb3JtYXR0ZXJfdXNlcjsKK0NSRUFURSBGT1JN QVRURVIgRk9SIENBU1QgKHRleHQgQVMgaW50ZWdlcikKKwlXSVRIIEZVTkNUSU9OIHBnX2NhdGFs b2cubGVuZ3RoKHRleHQpOworRVJST1I6ICBtdXN0IGJlIG93bmVyIG9mIHR5cGUgdGV4dCBvciB0 eXBlIGludGVnZXIKK1JFU0VUIFJPTEU7CitEUk9QIFJPTEUgcmVncmVzc19mb3JtYXR0ZXJfdXNl cjsKKy0tIERST1AgRk9STUFUVEVSLCBpbmNsdWRpbmcgSUYgRVhJU1RTCitDUkVBVEUgRlVOQ1RJ T04gaW50NF90b190ZXh0X2ZtdChpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIHRleHQKKwlMQU5HVUFH RSBzcWwgSU1NVVRBQkxFIFJFVFVSTiAkMTo6dGV4dCB8fCAnOicgfHwgJDI7CitDUkVBVEUgRk9S TUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpbnQ0X3Rv X3RleHRfZm10KGludGVnZXIsIHRleHQpOworRFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKGludGVn ZXIgQVMgdGV4dCk7CitEUk9QIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KTsJ CQkJCS0tIGZhaWxzLCBnb25lCitFUlJPUjogIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIHR5cGUg aW50ZWdlciB0byB0eXBlIHRleHQgZG9lcyBub3QgZXhpc3QKK0RST1AgRk9STUFUVEVSIElGIEVY SVNUUyBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KTsJCS0tIG5vdGljZSwgbm8gZXJyb3IKK05P VElDRTogIGZvcm1hdHRlciBmb3IgY2FzdCBmcm9tIHR5cGUgaW50ZWdlciB0byB0eXBlIHRleHQg ZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nCistLSBDbGVhbiB1cAorRFJPUCBGVU5DVElPTiBpbnQ0 X3RvX3RleHRfZm10KGludGVnZXIsIHRleHQpOworRFJPUCBGVU5DVElPTiBmbXRfYmFkX25hcmdz KGludGVnZXIpOworRFJPUCBGVU5DVElPTiBmbXRfYmFkX2FyZzIoaW50ZWdlciwgaW50ZWdlcik7 CitEUk9QIEZVTkNUSU9OIGZtdF9iYWRfYXJnMShiaWdpbnQsIHRleHQpOworRFJPUCBGVU5DVElP TiBmbXRfYmFkX3JldChpbnRlZ2VyLCB0ZXh0KTsKK0RST1AgRlVOQ1RJT04gZm10X2JhZF9zZXQo aW50ZWdlciwgdGV4dCk7CitEUk9QIEZVTkNUSU9OIGZtdF9hbnllbChhbnllbGVtZW50LCB0ZXh0 KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQKaW5kZXggZDY0MTY5YjdiZjAu LjZiNjBiMDJhYWIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpv aW5zLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApAQCAt MjU3LDYgKzI1Nyw5IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX3JhbmdlIHtybmdtbHRjb25zdHJ1 Y3QxfSA9PiBwZ19wcm9jIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ19yYW5nZSB7cm5nbWx0 Y29uc3RydWN0Mn0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfcmFuZ2Ug e3JuZ2Nhbm9uaWNhbH0gPT4gcGdfcHJvYyB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfcmFu Z2Uge3JuZ3N1YmRpZmZ9ID0+IHBnX3Byb2Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX2Zv cm1hdHRlciB7Zm10c291cmNlfSA9PiBwZ190eXBlIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBw Z19mb3JtYXR0ZXIge2ZtdHRhcmdldH0gPT4gcGdfdHlwZSB7b2lkfQorTk9USUNFOiAgY2hlY2tp bmcgcGdfZm9ybWF0dGVyIHtmbXRmdW5jfSA9PiBwZ19wcm9jIHtvaWR9CiBOT1RJQ0U6ICBjaGVj a2luZyBwZ190cmFuc2Zvcm0ge3RyZnR5cGV9ID0+IHBnX3R5cGUge29pZH0KIE5PVElDRTogIGNo ZWNraW5nIHBnX3RyYW5zZm9ybSB7dHJmbGFuZ30gPT4gcGdfbGFuZ3VhZ2Uge29pZH0KIE5PVElD RTogIGNoZWNraW5nIHBnX3RyYW5zZm9ybSB7dHJmZnJvbXNxbH0gPT4gcGdfcHJvYyB7b2lkfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggOGZhMGE2YzQ3ZmIuLmEwMjgxZjFmYjJh IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDog Y3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVk aW5nIGluZGV4X2luY2x1ZGkKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFs bGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1 bmN0aW9uX3NxbCBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJp dCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVh dHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgY3Jl YXRlX3Byb3BlcnR5X2dyYXBoIGZvcl9wb3J0aW9uX29mCit0ZXN0OiBjcmVhdGVfYWdncmVnYXRl IGNyZWF0ZV9mdW5jdGlvbl9zcWwgY3JlYXRlX2Nhc3QgZm9ybWF0dGVycyBjb25zdHJhaW50cyB0 cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9pZl9leGlzdHMg dXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3Jz IGluZmluaXRlX3JlY3Vyc2UgY3JlYXRlX3Byb3BlcnR5X2dyYXBoIGZvcl9wb3J0aW9uX29mCiAK ICMgLS0tLS0tLS0tLQogIyBzYW5pdHlfY2hlY2sgZG9lcyBhIHZhY3V1bSwgYWZmZWN0aW5nIHRo ZSBzb3J0IG9yZGVyIG9mIFNFTEVDVCAqCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mb3JtYXR0ZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcm1hdHRlcnMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44MDUwYWVlNmY0NQotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcm1hdHRlcnMuc3FsCkBAIC0wLDAg KzEsOTkgQEAKKy0tCistLSBGT1JNQVRURVJTCistLQorLS0gQ1JFQVRFL0RST1AgRk9STUFUVEVS IHJlZ2lzdGVycyBmb3JtYXR0ZXIgbWV0YWRhdGEgaW4gcGdfZm9ybWF0dGVyLAorLS0ga2V5ZWQg YnkgYSAoc291cmNlIHR5cGUsIHRhcmdldCB0eXBlKSBwYWlyLiAgVGhpcyBpcyBjYXRhbG9nIGFu ZCBEREwKKy0tIGluZnJhc3RydWN0dXJlIG9ubHk7IGl0IGRvZXMgbm90IHRyYW5zZm9ybSBvciBl eGVjdXRlIGZvcm1hdHRlZCBjYXN0cy4KKworLS0gQSBzaW1wbGUgZm9ybWF0dGVyIGZ1bmN0aW9u IHdpdGggdGhlIHJlcXVpcmVkIHNpZ25hdHVyZQorLS0gICBmb3JtYXR0ZXIoc291cmNlX3R5cGUs IHRleHQpIHJldHVybnMgdGFyZ2V0X3R5cGUKK0NSRUFURSBGVU5DVElPTiBpbnQ0X3RvX3RleHRf Zm10KGludGVnZXIsIHRleHQpIFJFVFVSTlMgdGV4dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUg UkVUVVJOICQxOjp0ZXh0IHx8ICc6JyB8fCAkMjsKKworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FT VCAoaW50ZWdlciBBUyB0ZXh0KQorCVdJVEggRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRl Z2VyLCB0ZXh0KTsKKworLS0gSXQgc2hvd3MgdXAgaW4gdGhlIGNhdGFsb2cgKHVzZSByZWd0eXBl L3JlZ3Byb2NlZHVyZSwgbm90IHJhdyBPSURzKQorU0VMRUNUIGZtdHNvdXJjZTo6cmVndHlwZSwg Zm10dGFyZ2V0OjpyZWd0eXBlLCBmbXRmdW5jOjpyZWdwcm9jZWR1cmUKKwlGUk9NIHBnX2Zvcm1h dHRlcgorCVdIRVJFIGZtdHNvdXJjZSA9ICdpbnRlZ2VyJzo6cmVndHlwZSBBTkQgZm10dGFyZ2V0 ID0gJ3RleHQnOjpyZWd0eXBlOworCistLSAuLi4gYW5kIGFzIGEgZmlyc3QtY2xhc3Mgb2JqZWN0 CitTRUxFQ1QgcGdfZGVzY3JpYmVfb2JqZWN0KCdwZ19mb3JtYXR0ZXInOjpyZWdjbGFzcywgb2lk LCAwKQorCUZST00gcGdfZm9ybWF0dGVyCisJV0hFUkUgZm10c291cmNlID0gJ2ludGVnZXInOjpy ZWd0eXBlIEFORCBmbXR0YXJnZXQgPSAndGV4dCc6OnJlZ3R5cGU7CisKKy0tIE9ubHkgb25lIGZv cm1hdHRlciBwZXIgKHNvdXJjZSwgdGFyZ2V0KSBwYWlyCitDUkVBVEUgRk9STUFUVEVSIEZPUiBD QVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpbnQ0X3RvX3RleHRfZm10KGlu dGVnZXIsIHRleHQpOworCistLSBGdW5jdGlvbiBzaWduYXR1cmUgdmFsaWRhdGlvbgorQ1JFQVRF IEZVTkNUSU9OIGZtdF9iYWRfbmFyZ3MoaW50ZWdlcikgUkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ug c3FsIElNTVVUQUJMRSBSRVRVUk4gJDE6OnRleHQ7CitDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNU IChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBmbXRfYmFkX25hcmdzKGludGVnZXIp OwkJCS0tIHdyb25nICMgb2YgYXJndW1lbnRzCisKK0NSRUFURSBGVU5DVElPTiBmbXRfYmFkX2Fy ZzIoaW50ZWdlciwgaW50ZWdlcikgUkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJM RSBSRVRVUk4gJDE6OnRleHQ7CitDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFT IHRleHQpCisJV0lUSCBGVU5DVElPTiBmbXRfYmFkX2FyZzIoaW50ZWdlciwgaW50ZWdlcik7CS0t IHNlY29uZCBhcmcgbm90IHRleHQKKworQ1JFQVRFIEZVTkNUSU9OIGZtdF9iYWRfYXJnMShiaWdp bnQsIHRleHQpIFJFVFVSTlMgdGV4dAorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOICQx Ojp0ZXh0OworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KQorCVdJ VEggRlVOQ1RJT04gZm10X2JhZF9hcmcxKGJpZ2ludCwgdGV4dCk7CQktLSBmaXJzdCBhcmcgbWlz bWF0Y2gKKworQ1JFQVRFIEZVTkNUSU9OIGZtdF9iYWRfcmV0KGludGVnZXIsIHRleHQpIFJFVFVS TlMgYm9vbGVhbgorCUxBTkdVQUdFIHNxbCBJTU1VVEFCTEUgUkVUVVJOIHRydWU7CitDUkVBVEUg Rk9STUFUVEVSIEZPUiBDQVNUIChpbnRlZ2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBmbXRf YmFkX3JldChpbnRlZ2VyLCB0ZXh0KTsJCS0tIHJldHVybiB0eXBlIG1pc21hdGNoCisKK0NSRUFU RSBGVU5DVElPTiBmbXRfYmFkX3NldChpbnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIFNFVE9GIHRleHQK KwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIEFTICQkIFNFTEVDVCAkMTo6dGV4dCAkJDsKK0NSRUFU RSBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCkKKwlXSVRIIEZVTkNUSU9OIGZt dF9iYWRfc2V0KGludGVnZXIsIHRleHQpOwkJLS0gc2V0LXJldHVybmluZyByZWplY3RlZAorCist LSBObyBwc2V1ZG8tdHlwZXMKK0NSRUFURSBGVU5DVElPTiBmbXRfYW55ZWwoYW55ZWxlbWVudCwg dGV4dCkgUkVUVVJOUyB0ZXh0CisJTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBBUyAkJCBTRUxFQ1Qg JDIgJCQ7CitDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUIChhbnllbGVtZW50IEFTIHRleHQpCisJ V0lUSCBGVU5DVElPTiBmbXRfYW55ZWwoYW55ZWxlbWVudCwgdGV4dCk7CisKKy0tIFJlZ2lzdGVy aW5nIGEgZm9ybWF0dGVyIGRvZXMgbm90IGVuYWJsZSBhIGZvcm1hdHRlZCBjYXN0OiB0aGUgRk9S TUFUCistLSBjbGF1c2UgbXVzdCBub3QgYmUgc2lsZW50bHkgaWdub3JlZCBvciByZXdyaXR0ZW4g dG8gYSBidWlsdC1pbiBmdW5jdGlvbiwKKy0tIHNvIENBU1QoLi4uIEZPUk1BVCAuLi4pIGlzIHJl amVjdGVkIGR1cmluZyBwYXJzZSBhbmFseXNpcy4KK1NFTEVDVCBDQVNUKDUgQVMgdGV4dCBGT1JN QVQgJ1lZWVknKTsKKworLS0gRGVwZW5kZW5jeSBiZWhhdmlvcjogdGhlIGZvcm1hdHRlciBkZXBl bmRzIG9uIGl0cyBmdW5jdGlvbi4KK0RST1AgRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChpbnRl Z2VyLCB0ZXh0KTsJCQkJLS0gZmFpbHMgKFJFU1RSSUNUKQorRFJPUCBGVU5DVElPTiBpbnQ0X3Rv X3RleHRfZm10KGludGVnZXIsIHRleHQpIENBU0NBREU7CQktLSBkcm9wcyBmb3JtYXR0ZXIKK1NF TEVDVCBjb3VudCgqKSBGUk9NIHBnX2Zvcm1hdHRlcgorCVdIRVJFIGZtdHNvdXJjZSA9ICdpbnRl Z2VyJzo6cmVndHlwZSBBTkQgZm10dGFyZ2V0ID0gJ3RleHQnOjpyZWd0eXBlOworCistLSBQcml2 aWxlZ2VzOiB0aGUgY3JlYXRvciBtdXN0IG93biB0aGUgc291cmNlIG9yIHRoZSB0YXJnZXQgdHlw ZS4gIChUaGUKKy0tIG93bmVyc2hpcCBjaGVjayBoYXBwZW5zIGJlZm9yZSB0aGUgZnVuY3Rpb24g aXMgbG9va2VkIHVwLCBzbyB0aGUgZnVuY3Rpb24KKy0tIG5hbWUgaGVyZSBpcyBpcnJlbGV2YW50 LikKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZm9ybWF0dGVyX3VzZXI7CitTRVQgUk9MRSByZWdyZXNz X2Zvcm1hdHRlcl91c2VyOworQ1JFQVRFIEZPUk1BVFRFUiBGT1IgQ0FTVCAodGV4dCBBUyBpbnRl Z2VyKQorCVdJVEggRlVOQ1RJT04gcGdfY2F0YWxvZy5sZW5ndGgodGV4dCk7CitSRVNFVCBST0xF OworRFJPUCBST0xFIHJlZ3Jlc3NfZm9ybWF0dGVyX3VzZXI7CisKKy0tIERST1AgRk9STUFUVEVS LCBpbmNsdWRpbmcgSUYgRVhJU1RTCitDUkVBVEUgRlVOQ1RJT04gaW50NF90b190ZXh0X2ZtdChp bnRlZ2VyLCB0ZXh0KSBSRVRVUk5TIHRleHQKKwlMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIFJFVFVS TiAkMTo6dGV4dCB8fCAnOicgfHwgJDI7CitDUkVBVEUgRk9STUFUVEVSIEZPUiBDQVNUIChpbnRl Z2VyIEFTIHRleHQpCisJV0lUSCBGVU5DVElPTiBpbnQ0X3RvX3RleHRfZm10KGludGVnZXIsIHRl eHQpOworRFJPUCBGT1JNQVRURVIgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCk7CitEUk9QIEZP Uk1BVFRFUiBGT1IgQ0FTVCAoaW50ZWdlciBBUyB0ZXh0KTsJCQkJCS0tIGZhaWxzLCBnb25lCitE Uk9QIEZPUk1BVFRFUiBJRiBFWElTVFMgRk9SIENBU1QgKGludGVnZXIgQVMgdGV4dCk7CQktLSBu b3RpY2UsIG5vIGVycm9yCisKKy0tIENsZWFuIHVwCitEUk9QIEZVTkNUSU9OIGludDRfdG9fdGV4 dF9mbXQoaW50ZWdlciwgdGV4dCk7CitEUk9QIEZVTkNUSU9OIGZtdF9iYWRfbmFyZ3MoaW50ZWdl cik7CitEUk9QIEZVTkNUSU9OIGZtdF9iYWRfYXJnMihpbnRlZ2VyLCBpbnRlZ2VyKTsKK0RST1Ag RlVOQ1RJT04gZm10X2JhZF9hcmcxKGJpZ2ludCwgdGV4dCk7CitEUk9QIEZVTkNUSU9OIGZtdF9i YWRfcmV0KGludGVnZXIsIHRleHQpOworRFJPUCBGVU5DVElPTiBmbXRfYmFkX3NldChpbnRlZ2Vy LCB0ZXh0KTsKK0RST1AgRlVOQ1RJT04gZm10X2FueWVsKGFueWVsZW1lbnQsIHRleHQpOwpkaWZm IC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBjNWRiNmNhNjcwNS4uMmZlZWE3NGIzYTUgMTAwNjQ0 Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CkBAIC01NzUsNiArNTc1LDcgQEAgQ3JlYXRlRXh0ZW5zaW9u U3RtdAogQ3JlYXRlRmR3U3RtdAogQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQKIENyZWF0ZUZvcmVp Z25UYWJsZVN0bXQKK0NyZWF0ZUZvcm1hdHRlclN0bXQKIENyZWF0ZUZ1bmN0aW9uU3RtdAogQ3Jl YXRlT3BDbGFzc0l0ZW0KIENyZWF0ZU9wQ2xhc3NTdG10CkBAIC05MjEsNiArOTIyLDcgQEAgRm9y bURhdGFfcGdfZXh0ZW5zaW9uCiBGb3JtRGF0YV9wZ19mb3JlaWduX2RhdGFfd3JhcHBlcgogRm9y bURhdGFfcGdfZm9yZWlnbl9zZXJ2ZXIKIEZvcm1EYXRhX3BnX2ZvcmVpZ25fdGFibGUKK0Zvcm1E YXRhX3BnX2Zvcm1hdHRlcgogRm9ybURhdGFfcGdfaW5kZXgKIEZvcm1EYXRhX3BnX2luaGVyaXRz CiBGb3JtRGF0YV9wZ19sYW5ndWFnZQpAQCAtOTg2LDYgKzk4OCw3IEBAIEZvcm1fcGdfZXh0ZW5z aW9uCiBGb3JtX3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyCiBGb3JtX3BnX2ZvcmVpZ25fc2VydmVy CiBGb3JtX3BnX2ZvcmVpZ25fdGFibGUKK0Zvcm1fcGdfZm9ybWF0dGVyCiBGb3JtX3BnX2luZGV4 CiBGb3JtX3BnX2luaGVyaXRzCiBGb3JtX3BnX2xhbmd1YWdlCkBAIC0xMDI4LDYgKzEwMzEsNyBA QCBGb3JtX3BnX3RzX3RlbXBsYXRlCiBGb3JtX3BnX3R5cGUKIEZvcm1fcGdfdXNlcl9tYXBwaW5n CiBGb3JtYXROb2RlCitGb3JtYXR0ZXJJbmZvCiBGcmVlQmxvY2tOdW1iZXJBcnJheQogRnJlZUxp c3REYXRhCiBGcmVlUGFnZUJ0cmVlCi0tIAoyLjU0LjAKCg== --0000000000007f28fa06555d9ca3--