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 1whlao-000PJH-2h for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 10:02:56 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1whlam-00CJO0-03 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Jul 2026 10:02:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1whSuW-007VOp-2U for pgsql-hackers@lists.postgresql.org; Wed, 08 Jul 2026 14:06:02 +0000 Received: from fout-a3-smtp.messagingengine.com ([103.168.172.146]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1whSuJ-00000000HXb-1UnA for pgsql-hackers@postgresql.org; Wed, 08 Jul 2026 14:06:01 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 3F302EC01AD for ; Wed, 8 Jul 2026 10:05:45 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Wed, 08 Jul 2026 10:05:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1783519545; x=1783605945; bh=TYbPSQZsKw BoL48Q1qNwGmcQD8McC+fEte9irgPhEFI=; b=g9XcfH9M6VJKxPNRb3WW4fxXb1 1x7pDKiTKgNoaG5Q5CjlnRwxHGQ/vwXhO1UZBnpd3u0MV7leaEEwAAG+rTrx87/Y 99jF/xiZnCrxLT/GG7BDKks396x7xWJcyUts7r+5jhgLnglLofK9EQzeDeqR5kDX BQzDA1j3d0xDd8pt9+G2KguFo8VA+nMCk0R+FgYuaxZcU+535ObXWK6t3p0GZgOe 6Xv2H6dCSI1z2/eODyDLrTCvPDbGr1F5856nVZ2H/TEAF8IZ8gDprX7OpNm4xNXM gga8PMcgQDj3/nwTz5ulY0zXS9LvcIJWVbe4xORIQXqI6Pg/+1fGCQUffK0A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1783519545; x=1783605945; bh=TYbPSQZsKwBoL48Q1qNwGmcQD8McC+fEte9 irgPhEFI=; b=fLAJvqWMWLezotrGqBwq7lUekgxEHbtiXJ+aQd6do2hv9nxtCkQ 9C9xqc/oClxUnTjgejUEhvgAY2JZP7u0IrlJKapErpfml3MScZ1iAaW64sTqiNnJ bz3NJkgPjyraZYM/xS+UVXIHzwUlbvI7SE9yo6Y2k3H3VdZtuAFzSct/vytm1lMc Jzl9YxeS23VBN/jrDAr/iusgiWK5vfRcbAEzLxLy0YHf9O38EpdcnNxVsifeSjzy pYcQ4HgPAQ4ptUgfH60fhUO19NENQvpR3Rofq+i4jG4XbJQm5oWmVKOCsPIe4BEY dMlJGJJ+Nf+n4fcjoQyAmUeyvJCpVMLimyw== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTF4HSwX4DHUYeG5fRk46/5LmQHRRBLhyeJgCdw3PEVT9ktMfPDlclLI4E6jD/SywT WfELi8N6vFBk1dNpQb+cKR4BqJNv7R6lYckPF5mdSywhDShB42pRVOfsK/eFQEJU6AqtJC DDWkgopLJEf2qAb9pf1xAXPi8q4epHuwnxbU+HWhZ4kdkGUnxKi8P2QFQ4zaY07kRS0DsA Ej2BzIJwBoGm6JuFzl0oTiZ/057UT5KeyB5+abF6Jg+l+fp3EfSNI3i1sb8Uc7YhwJiwPG r9DZ4sWYsfsThnityhrnWDfwzumaScz5Dp4LEcr0n6Mob0EWpKXGL/EraJAx/yV6/KzOo+ iml/NTR+n7wOBhGKcysdFQ38wyTOKJ9FWBtrM0G5bHMvyiUaOvgTMwmBiVKbKAMf5RIQea 1GAvV35zudTitz9uibt+xIQxX7uT8uii//OmFOnmVJXjLe7zFpAexsEvlhH3iL6WS7mKuD +cBykAN6q3tUC/C36FwXNKUq+LqBKPfJkXieAQmDOCxT3uH79n1dIfZ4Tm1Zi0T4/tukhC QAAmiXasn87FLwGe5FlIxUuB57HtpvwRelyvHde6VvxMnISxvXRuZ1fDEfR4+bQXNVVUuf WhlAY+UJCgb+SVqseq4+zlfMhrJLlcb/u48fWl7b1YXbJs2KSzAyWrHOE0yQ X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id BAAAD700065; Wed, 8 Jul 2026 10:05:44 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Wed, 08 Jul 2026 10:05:24 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: <84c8e4b7-1042-48ac-99b0-7dce6af837cd@app.fastmail.com> In-Reply-To: References: <780845de-c0f9-4888-b43d-8d3caa7c2899@app.fastmail.com> <57c9e23a-bb03-4d7c-81f5-551cd42f8b34@app.fastmail.com> <264c0f83-708d-4ac2-88fa-a5d6d73200d3@app.fastmail.com> Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello, I've tried to call out below all the issues that I think will need discussion rather than ask you to identify them so as to make better use of everyone's precious time. Thanks in advance. Attached is a rebased patch set (v57, on 16a4b3ef8ee) for HOT-indexed updates -- extending the HOT optimization so that an UPDATE which changes an indexed column only maintains the indexes whose attributes actually changed, rather than falling back to a full non-HOT update. This is the mechanism the "HOT expression updates" thread and, before it, WARM and PHOT were all circling. Rather than lead with benchmarks, I want to put the contentious design decisions on the table first, because if the core model is a non-starter on principle I would much rather hear that now than after another round of implementation. I have tried to write this the way I would want to review it: every open question stated as a question, with the options I considered and why the patch currently chooses what it does, so the debate can be about the choice and not about excavating what the choice even was. I owe an obvious debt to Pavan Deolasee (HOT, WARM), to Nathan Bossart's partial-HOT sketch, and to everyone who pushed back on those threads -- much of what follows is an attempt to answer objections that were raised years ago and never adequately resolved. == The one question that gates everything else == Q0. Is attribute-bitmap staleness -- as opposed to a value recheck -- an acceptable foundation at all? A HOT-indexed update writes the new version as a heap-only tuple and appends, inline in the line-pointer item past the tuple's natts, a fixed-size bitmap of which indexed attributes changed at that hop. A reader arriving through a possibly-stale index entry walks the chain and unions the bitmaps it crosses; if the union overlaps the scanned index's attributes, the entry is stale and skipped. There is no comparison of the leaf's stored key against the live tuple. This is the decision that plagued WARM, so I want to be explicit about why the patch does NOT recheck values: - A value recheck is provably wrong under an ABA cycle. If an indexed value goes X -> Y -> X, the live tuple's key equals BOTH the old and the new leaf, so both pass a value recheck and the row is returned twice. We hit exactly this. The crossed-attribute bitmap gets it right because it is positional: the fresh entry points at the version whose key it matched and crosses no later key-changing hop, while the stale entry's walk does cross one -- even when the values coincide. - Because the read side never reconstructs or compares a key, it is access-method agnostic. btree, hash, GIN, GiST and SP-GiST all work with no per-AM recheck logic (all exercised in the suite, including the hash ABA case). The cost of this choice, stated plainly: it adds a per-hop on-disk bitmap and a chain-walk bitmap-union to the read path, and it weakens the informal contract that "an index entry accurately reflects the current indexed value." That contract-weakening is the real thing to debate. My claim is that the contract is already softer than it looks (kill_prior_tuple, bottom-up deletion and bitmap scans all tolerate entries that no longer match), but I would like that challenged directly. Options if the list rejects bitmap-staleness: (a) Value recheck instead -- rejected above (ABA), and it reintroduces a per-scan leaf-materialize cost this design does not have. (b) Do nothing / keep HOT as-is -- the status quo; the WARM/PHOT/expression threads exist because the write amplification is real. (c) A different staleness authority I haven't thought of, and I am genuinely open to this. == Is this WARM again? == Let's review the four objections that stalled it. If the answer to Q0 is "maybe," these are the specific WARM objections and how the patch answers them. I would like to know whether each answer actually lands or whether I am repeating history. W1 -- Duplicate results from index scans. Answered by Q0: exactly one entry per index survives the bitmap test; no duplicates, no lost rows. W2 -- Only one WARM update per chain (which crippled the benefit). There is no chain-length cap here. A chain takes as many HOT-indexed hops as fit on the page; growth is bounded by the page (an update that no longer fits falls back to non-HOT) and by prune/collapse reclaiming superseded members. (An early draft had a fillfactor-derived cap; it measured from the wrong end of the chain and bounded nothing, so it was removed. If the list wants an explicit cap for predictability rather than correctness, that is a knob we could add -- see Q3.) W3 -- "Converting chains back" and its interaction with VACUUM was the major sticking point. There is no convert-back step. Staleness is decided at read time; prune collapses a dead chain prefix into xid-free forwarding stubs that preserve each surviving hop's bitmap, and VACUUM reclaims the stubs and re-points the root redirect once the stale leaves are swept -- collapsing naturally back to classic HOT. No alternating state machine, no per-tuple flag to clear. Whether this collapse machinery is actually simpler than WARM's, or just relocates the complexity, is a fair question for reviewers of pruneheap.c / vacuumlazy.c. W4 -- Recheck correctness across all index/scan kinds and opclasses. Subsumed by the AM-agnostic read path in Q0. == The on-disk format == Q1. Is the on-disk format acceptable to freeze? Two new LP_NORMAL shapes carry one infomask2 bit (HEAP_INDEXED_UPDATED, 0x0800, previously free): - a data-bearing HOT-indexed tuple (natts >= 1) with a trailing bitmap sized by the tuple's own write-time natts; and - an xid-free collapse-survivor stub (natts == 0, a signature no real tuple can produce) that stashes its write-time natts in the block half of t_ctid and its forward link in the offset half. Every consumer of LP_NORMAL items must tolerate both. I have audited the in-tree consumers: visibility-gated paths (seqscan, bitmap, ANALYZE, index build) are safe because stubs are XMIN_INVALID and the bitmap is past natts; amcheck and prune/VACUUM are stub-aware; pg_surgery skips stubs; pageinspect and pgstattuple are read-only and merely imprecise. Alternatives considered and rejected, with reasons, so the format debate is concrete: - separate relation fork: heavy, and the marker must be co-located with the tuple for the chain walk; - a separate adjacent "tombstone" line pointer per hop: doubles line-pointer pressure; the inline bitmap needs no extra item; - "redirect-with-data" LP_REDIRECT carrying the bitmap: LP_REDIRECT has no storage for a payload; - a new line-pointer flavor: consumes scarce lp_flags space and touches far more code than reusing LP_NORMAL + one infomask2 bit. The known-unknown I most want eyes on: is stealing an infomask2 bit and overloading natts==0 as a stub sentinel acceptable, or does the project want a cleaner (costlier) representation before this is worth committing? Q1a. The bit budget. This is worth stating on its own because it is irreversible. t_infomask2 has exactly two spare bits above the 11-bit natts mask: 0x0800 and 0x1000. This patch consumes 0x0800 (HEAP_INDEXED_UPDATED), leaving 0x1000 as the last free t_infomask2 bit in the heap format. I do not take that lightly. The argument for spending one now: the feature is unimplementable without a persistent per-tuple signal, and every alternative to a bit (Q1's rejected list) costs more -- an lp_flags value, a fork, or a second line pointer. The argument against: a bit is a scarce, permanent resource and the list may want it reserved for something the project already knows it wants. If the answer is "not this bit," I need to hear it before the format freezes, because the whole on-disk encoding hangs off it. Q1b. Longer chains. A chain here can be arbitrarily long within a page (Q3), which is a real change from classic HOT's practical behavior and from WARM's hard one-update cap (W2). The read cost is not free: a scan that arrives through a stale-ish leaf walks the chain accumulating a bitmap-union until it reaches the live tuple, so worst-case read work is O(chain length) in bitmap-unions, and a page that accumulates many preserved HOT-indexed members stays denser and non-all-visible (Q1c) for longer. My position: this is bounded in practice -- an update that no longer fits the page falls back to non-HOT, and prune/collapse reclaims superseded members and re-points the root redirect, so a chain does not grow without bound and a hot row's chain is continually shortened by the same VACUUM that would clean any other bloat. But "bounded in practice" is exactly the kind of claim WARM made, so I want it challenged: is an uncapped chain length acceptable given the O(length) read walk, or does predictability argue for the cap discussed in Q3? The read_indexscan benchmark cell exists to measure the walk cost on a stub-free table; I expect parity there but will prove it on real hardware. Q1c. The all-visible / index-only-scan interaction. This one deserves an explicit debate because it is a visible operational cost, not just an internal detail. A stale leaf can resolve, through the chain, to a live tuple whose current key differs from the leaf's stored key. If the page holding that chain were marked all-visible, an index-only scan would take the visibility-map fast path, skip the heap fetch, and return the leaf's STALE key -- wrong results with no chance to detect it. The patch closes that from the prune side: any page still carrying something a stale leaf can resolve through -- a preserved live HEAP_INDEXED_UPDATED member, an LP_REDIRECT forwarding into one, or a collapse-survivor stub -- is deliberately kept OUT of the visibility map (prune forces set_all_visible=false, re-applied in heap_page_would_be_all_visible), and once forced to the heap the IOS re-checks the arriving entry with the same bitmap test before trusting xs_itup. The consequence to debate: such a page is not all-visible until its chains fully collapse, so index-only scans over hot, recently-SIU-updated rows lose the VM fast path and pay a heap fetch until VACUUM collapses the chains. A conventionally-updated page reaches all-visible after one VACUUM; an SIU page with a surviving stub needs the later VACUUM that reclaims the stub and re-points the redirect. I argue this is the correct conservative default (correctness over an IOS micro-optimization on exactly the rows that are being churned, and it self-heals as the chain collapses), and that IOS on genuinely-stable all-visible pages is unaffected because such a page cannot hold a live SIU chain. But it is a real regression for an IOS-heavy workload on churned rows, and if the list considers that unacceptable the alternative is a per-entry mechanism that lets a page go all-visible while still forcing a fetch only for stale leaves -- more complex, and I did not want to build it before the model is accepted. == Eligibility carve-outs: which are permanent vs provisional? == Q2. The patch is deliberately conservative about what takes the HOT-indexed path. Some carve-outs are fundamental; others are "not proven yet" and may be liftable. I want the list to tell me which it considers permanent. - System catalogs (permanent, I think): Catalogs are reached through access paths -- systable scans, SnapshotDirty unique checks, seqscans -- I have not proven safe, so a catalog UPDATE stays classic HOT. There is a second, mechanical reason this carve-out needs explicit discussion: catalog tuples are not updated through the executor, so the modified-indexed-attribute set that the executor computes for a normal UPDATE (by diffing the old/new TupleTableSlots in ExecUpdateModifiedIdxAttrs) simply does not exist on the catalog path. simple_heap_update -- the entry point CatalogTupleUpdate and friends use -- therefore has to reconstruct an equivalent bitmap itself: it fetches the old tuple by TID and diffs it against the new one to derive modified_idx_attrs, duplicating in heapam.c the logic the executor already performs. Today that duplicated path deliberately keeps catalog updates on the classic-HOT track, so the mirror only has to be correct enough to make the eligibility decision, not to drive selective maintenance. The debate: is a second copy of the "which indexed attributes changed" computation -- one in the executor, one in simple_heap_update -- acceptable, and is the right long-term answer to (a) keep them separate and documented as mirrors, (b) factor the diff into one shared helper both call, or (c) have the catalog callers pass down the "replaces" array they already have (most of them do) instead of re-deriving it? The current code chooses (a) with a comment calling out the repetition; I lean toward (c) eventually but did not want to churn every catalog caller before the model is settled. - Expression indexes (provisional): The bitmap is attribute-granular and cannot tell whether the expression's *value* changed, only whether an attribute it references changed. This is precisely the "HOT expression updates" thread's problem. I believe it is liftable the same way the partial-index restriction was (predicate/expression-aware maintenance), but it is not wired up and not tested, so it is a carve-out for now. Is attribute-granular the right initial granularity, or should expression support be in the first committed version? - Every indexed attribute changed (permanent, by construction): Nothing can be skipped, so a plain non-HOT update is cheaper. "Every" is an exact test -- there is deliberately no percentage GUC. Q3 asks whether that is the right call (which I feel it is). - The logical-replication apply path (per-subscription gate, hot_indexed_on_apply = off / subset_only (default) / always): A HOT-indexed update of a replica-identity attribute leaves a stale leaf the apply worker's RI lookup must tolerate, which it safely does only when the indexed attributes are a subset of the replica identity. Is a three-valued per-subscription option the right control surface, or does replication safety want something coarser/finer/entirely different? == Smaller decisions worth a sentence each == Q3. No tuning knobs, which is a Good Thing (TM), right? There is no chain-length cap and no "skip if < N% of indexes change" GUC. My reasoning is correctness never needs them, and every knob is a support burden and a planner-surprise. Counter-argument I take seriously (and which Q1b sharpens): operators may want a predictability cap even at some efficiency cost, precisely because the read walk is O(chain length) and the all-visible loss (Q1c) persists until collapse. Add a cap, or hold the line and rely on page-fit + prune to bound it? Q4. Unique checks. _bt_check_unique gains a value recheck (opclass comparator) used ONLY to distinguish a real duplicate from a stale leaf during a unique insert -- this is the one place a value comparison is load-bearing, and it routes a genuine hit into the existing xwait wait-and-recheck. I believe this is both necessary and sufficient; I would like it confirmed, since it is the subtlest correctness argument in the set. Q5. catversion. The patch adds a pg_subscription column, so it needs a catversion bump; I have left a placeholder (value matching master, with an XXX comment) rather than a real bump, so the series does not rebase-conflict on catversion every time master moves. == What is deferred, honestly == - Expression-index support (Q2). If even the first two commits in this series land I'll revisit/finish this in the thread about CF-5556. - Broader concurrency / crash stress matrices beyond the current isolation spec + crash-recovery TAP test under wal_consistency_checking. - I've done a representative-hardware benchmark sweep using a variety of instance types in "the cloud" and found performance numers to be stable and predictable. The A/B numbers show WAL update down ~23% on a single-indexed-column update and up to ~59% on a wide table where one of many indexes changes, throughput (TPS) is up ~18-26%, and others are at parity. The results that matter (WAL and index bloat on the write workloads; any read-path cost on a tombstone-free table; net TPS on a mixed workload) are in a commit labled DO-NOT-MERGE harness in the series so anyone can reproduce/critique/etc. == The ask == In priority order: 1. Q0 -- is bitmap-staleness acceptable in principle? Everything else is wasted effort if this is a no. 2. W1-W4 -- do the answers actually address what sank WARM? 3. Q1 / Q1a -- can the on-disk format be frozen, and is spending one of the two remaining t_infomask2 bits the right call? 4. Q1c -- is losing the index-only-scan all-visible fast path over not-yet-collapsed chains an acceptable cost, or a blocker? 5. Q1b / Q3 -- is an uncapped, page-bounded chain length acceptable given the O(length) read walk, or do we want an explicit cap? 6. Q2 -- which carve-outs are permanent; must expression indexes be in v1; and is the duplicated catalog-path attr-diff the right structure? 7. Benchmarking, where did I go wrong and/or what else would you like to see qualified/tested empirically and under what conditions? Thanks for reading this far, I look forward to constructive debate and hope the community finds this valuable work. best. -greg PS: Tepid is on the https://github.com/gburd/postgres/tree/tepid branch --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA5NjUxMmFlYTM4YWUwMGNlMWVkMjJmNmFkZjdkMDc4MTRhNmQ0YzQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDEv OV0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGV4aXN0aW5nIGNsYXNzaWMg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZQpiZWhhdmlvciwgY29tbWl0dGVkIGZpcnN0 IHNvIHRoZSBiZWhhdmlvcmFsIGNoYW5nZXMgaW4gdGhlIGxhdGVyIEhPVC1pbmRleGVkCmNv bW1pdHMgYXJlIGRpZmZhYmxlIGFnYWluc3QgYSBrbm93bi1nb29kIGJhc2VsaW5lLiAgVGhp cyBjb21taXQgYWRkcwp0ZXN0cyBzbyBhcyB0byBjb2RpZnkgZXhwbGljaXRseSB0aGUgSE9U IGNvbnRyYWN0IGZvciB0aGUgaGVhcCBBTS4KClRoZSBuZXcgaG90X3VwZGF0ZXMgcmVncmVz c2lvbiB0ZXN0IGV4ZXJjaXNlczoKLSBCYXNpYyBIT1QgdnMgbm9uLUhPVCB1cGRhdGUgZGVj aXNpb25zCi0gVGhlIGFsbC1vci1ub25lIHByb3BlcnR5IGFjcm9zcyBtdWx0aXBsZSBpbmRl eGVzCi0gUGFydGlhbCBpbmRleGVzIGFuZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChz dW1tYXJpemluZykgaW5kZXhlcyBhbGxvd2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVt biBoYW5kbGluZyB3aXRoIEhPVAotIFVuaXF1ZSBjb25zdHJhaW50IGJlaGF2aW9yCi0gTXVs dGktY29sdW1uIGluZGV4ZXMKLSBQYXJ0aXRpb25lZCB0YWJsZSBIT1QgdXBkYXRlcwotIEhP VCBjaGFpbiBmb3JtYXRpb24gYW5kIHRoZSBpbmRleC1zY2FuIHdhbGsgb3ZlciBhIGNoYWlu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgfCA3NDUgKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgfCA2MDUg KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNTUgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVz Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjczZmUzMzEw ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDc0NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBU ZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhp cyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVz ZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUu Zy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNl IG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rp b25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVj dCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0 byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcworLS0KKy0tIExvYWQgcmVxdWly ZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNw ZWN0OworLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMg VEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5ULAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQK K0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitCRUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1l OjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBm b3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6 IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0 YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291 bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGlu ZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlv bi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09BTEVTQ0UocGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ2hl Y2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3Nv ciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2No YWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOwor QkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFn ZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9j dGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8 fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AK KyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRp bmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmlu dF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRB QkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3Rp ZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1 c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsK KyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOwor ICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAg cGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxz ZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3Nv ciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9P UAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcg fHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNl c3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHBy ZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBm b3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7 CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUg cG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJl bnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElO CisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdI RVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50 X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs CisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3Np dGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQp CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMg b2NjdXJyZWQKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAgMworKDEgcm93 KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJy ZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90 X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFn cyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwx KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygyIHJvd3MpCisKKy0tIFZhY3V1bSB0aGUg cmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0gaG90 X3Rlc3Q7CistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCitX SVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBw cmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJy ZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwg IGxwX2ZsYWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBmICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSByb3cpCisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisg ICAgICAgNCB8ICAgMworKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQg KG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2 YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVT RVQgZW5hYmxlX3NlcXNjYW47CistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcg b25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVzCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBp bnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gVXBkYXRlIG9u bHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1u IGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChh bGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygx IHJvdykKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIFBhcnRp YWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAn ZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywg J2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywg J2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJv dyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVk aWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAn dXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0 byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FMIGlz IGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNo ZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJl IG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxl dGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAg IDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZl JyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZl CisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9u LVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAg dmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVz dCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1 bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQor VVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28g YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0 IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsK Ky0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcp OworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVtbiB1 bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cp CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAzIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1 bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgdW5pcXVlIGNv bnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBG Uk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAg CistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAxMDAgfCB1cGRh dGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKworLS0gVGhpcyBz aG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5p cXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFs dWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5 IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KKy0t IE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xf YyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Cist LSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAg MAorKDEgcm93KQorCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIw OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAt IHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNiB8ICAgMgorKDEgcm93KQorCistLSBQ YXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK05PVElDRTog IHRhYmxlICJob3RfdGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5n CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwKKyAg ICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0 ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9O IEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFM VUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVS RSBpZCA9IDE7CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVt bikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRh dGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4ZXMgd29y ayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDIwMDsKKyBpZCAKKy0tLS0KKyAgMgorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBj b2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cpCisKKy0t IFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQorQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04g aG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKKy0tIENyZWF0ZSBhIHRyaWdnZXIg dGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitC RUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOwor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRS SUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKKyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90 cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1v ZGlmeV90cmlnZ2VyZWRfY29sKCk7CitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1 bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQ REFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0g MTsKKy0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4g d2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBj b2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9N IGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9jb2wgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90 X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBKU09OQiBw YXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lm aWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9q c29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rl c3QgVkFMVUVTCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJO WUMifScpLAorICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0n KTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJl IEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tu YW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29y a3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScg PSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCistLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAwCisoMSByb3cpCisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAorU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr CistLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQorTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CitJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9y ZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUg SE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIp CitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMSdd IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDAKKygxIHJvdykKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFmdGVy IGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGluZyBv biBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBhbmQg dmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7ImtleTEi OiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMg fCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBp ZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdI RVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3In0nOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYmQ5NWNjMjQ5Nzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQzLDYgKzE0MywxMSBA QCB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCiAjIHRoaXMgdGVzdCBhbHNvIHVzZXMgZXZl bnQgdHJpZ2dlcnMsIHNvIGxpa2V3aXNlIHJ1biBpdCBieSBpdHNlbGYKIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogCisjIC0tLS0tLS0tLS0KKyMgSE9UIHVwZGF0ZXMgdGVzdHMKKyMgLS0tLS0t LS0tLQordGVzdDogaG90X3VwZGF0ZXMKKwogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRo ZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwog IyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE4ODk0MDA2MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsNjA1IEBACist LQorLS0gSE9UX1VQREFURVMKKy0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tCistLSBUaGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMg dGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZv aWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1v ZGlmaWVkKS4KKy0tCistLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgor LS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1p bmF0aW9uCistLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRh dGVzCistLQorCistLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJ T04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IEhP VCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291 bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5U LAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQKK0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitC RUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJl YWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIElu IGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMg d29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAo QkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBm bHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGlj aXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2Yg YSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0 X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgIGJsb2NrX251 bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHRh cmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBMb29rIGZvciBhIGRp ZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJn ZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFt ZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAgIFJFVFVSTiB0cnVlOworICBFTkQg TE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CistLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRl eHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQs IGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVh bikgQVMKKyQkCisjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBsaW5lX3B0ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0g c3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlkIHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7Cisg IG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZv dW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsK K0JFR0lOCisgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0 byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwg bHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAg IEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0g KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8 fCAnKScpOjp0aWQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElU OworICBFTkQgTE9PUDsKKworICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQg d2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgor ICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9s bG93IHRoZSBjaGFpbiBmb3J3YXJkCisgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlv bnMgTE9PUAorICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworCisgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAg TE9PUAorICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1l IDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVz ZWQgKDApJworICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMp JworICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgIEVORDsKKworICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICBwb3NpdGlvbiwKKyAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19u YW1lLAorICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRf Y3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29s ZWFuCisgICAgICA7CisKKyAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOwor ICAgICAgRU5EIElGOworCisgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsK KworICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBjdXJy ZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAx OworICAgIEVORCBMT09QOworCisgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJF VFVSTjsKKyAgICBFTkQgSUY7CisgIEVORCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt bikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9p ZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgz LCAzMDAsICdpbml0aWFsJyk7CisKKy0tIEdldCBiYXNlbGluZQorU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMg KG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOworCistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK KyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFn cywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCistLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhv dF90ZXN0OworCistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAor ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOworCistLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZCA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRp Y2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworCistLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1 bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCist LSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAo b3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24g bm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwK KyAgICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworCistLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmlu X2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IGFsc28gYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0g VE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QK K0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90 ZXh0IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9j b2wpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1 bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK KworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUg aW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0 YTInKTsKKworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZp b2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBp ZCA9IDI7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBu b24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2Ig aW50LAorICAgIGNvbF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAy MCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKworLS0gVXBkYXRl IGNvbF9iIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYiA9IDIwOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEgKG5vdCBp bmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBh cnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQs CisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkg UkFOR0UgKHBhcnRpdGlvbl9rZXkpOworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEg UEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CisKKy0tIFVw ZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScg V0hFUkUgaWQgPSAxOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVk IGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9u IHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9u ZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVt biBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisKKy0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9U CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5 IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBo ZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4g dGhlIFVQREFURSdzIFNFVCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwK KyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OworCistLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1 bW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkK K1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9 IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkK KyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKK0lO U0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwor CistLSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5k ZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2Rp ZmllZCBhbiBpbmRleGVkIGNvbHVtbgorVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBWZXJpZnkgaXQgd2FzIE5PVCBh IEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisKKy0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 CisKK0RST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElP TiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tp bmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRv IG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworCitDUkVBVEUg VEFCTEUgaG90X2pzb25iX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBk YXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENyZWF0ZSBleHBy ZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90 X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwor CitJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6 IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJC b2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O IHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScs ICczMScpIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0t IFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworCistLSBUZXN0IGpzb25iX2RlbGV0ZSBv biBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hF UkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7CisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBz aG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90 ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0 dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0 aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRl cworCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVBVEUgSU5ERVgg aG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1l L3RleHQoKScsIGRvYykpKTsKKworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwor ICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJz b24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+ PC9wZXJzb24+Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9y IGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKKy0tIEZ1bGwgWE1MIHZhbHVl IHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1 aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8 cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJF IGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3Qn KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNl MjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBp bmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKKwor RFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBh bWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNo CisKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CitDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKKworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CisKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK K1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10g V0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5f dGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1j b21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5nIG9uIEdJ TiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1 ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZh bDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitVUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOworCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1NFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Rf cGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3Vu dCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41MC4xCgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAyMzQ2MGM5ZGI3ZDRjODRkOWJkMTFmMWU5NTBjNmJkZDMzZjUyNDg5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDIv OV0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXM7CndoYXQgbW92ZXMgdG8gdGhlIGV4ZWN1dG9yIGlzIG9ubHkgdGhl IGRldGVybWluYXRpb24gb2YgdGhlICJtb2RpZmllZAppbmRleGVkIGF0dHJpYnV0ZXMiICht b2RpZmllZF9pZHhfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSByZXBs YWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9yZSB0 YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4K ZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1cGxl IGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxvY2sg aXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFwX3Vw ZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBwYXJ0 aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdBTCBs b2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhhdCBsb2dpYwptb3ZlcyBpbnRv IGhlYXBfdXBkYXRlKCkgYW5kIGludG8gdGhlIHJlcGxhY2VtZW50IGhlbHBlcgpIZWFwVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpLCBzbyBzaW1wbGVfaGVhcF91cGRhdGUoKSBhbmQKaGVh cGFtX3R1cGxlX3VwZGF0ZSgpIHNoYXJlIHRoZSBzYW1lIGxvZ2ljIHNpbmNlIGJvdGggY2Fs bCBpbnRvCmhlYXBfdXBkYXRlKCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KCkgaW4gRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHVzZXMgRXhlY0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGlj aCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0 aCB0aGUgc2V0IG9mCmluZGV4ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZp ZWQgaW5kZXhlZCBzZXQsIHRoZQptb2RpZmllZF9pZHhfYXR0cnMuCgpUaGlzIHBhdGNoIGlu dHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNh dGlvbgphbmQgaW5jcmVhc2UgcmVhZGFiaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo KSBhbmQKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIHVzZWQgaW4gYm90aCBoZWFw X3VwZGF0ZSgpIGFuZApzaW1wbGVfaGVhcF91cGRhdGUoKS4KCmhlYXBfdXBkYXRlKCkgaXMg bm93IGNhbGxlZCB3aXRoIGxvY2ttb2RlIHByZS1kZXRlcm1pbmVkIGFuZCBhIGJvb2xlYW4K aW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgbWF5IGJlIEhPVCwgYm90aCBjb25zdC4g SWYgZHVyaW5nCmhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSBmaXRzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHRoYXQgYm9vbGVhbiBpcwp0cnVlLCB0aGUgdXBkYXRlIGlzIEhPVC4gU28g YWx0aG91Z2ggdGhlIGZ1bmN0aW9ucyBhbmQgdGltaW5nIG9mIHRoZQpIT1QgZGVjaXNpb24g Y29kZSBoYXZlIGNoYW5nZWQsIG5vbmUgb2YgdGhlIGxvZ2ljIGdvdmVybmluZyB3aGVuIEhP VCBpcwphbGxvd2VkIGhhcyBjaGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJl IGV4cG9zZWQgbm9uZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0 ZXN0cywgd2hpY2ggaGF2ZSBiZWVuIGFkanVzdGVkIHRvIGF2b2lkIGluY29uc2lzdGVudCBy ZXN1bHRzCmR1ZSB0byB0dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgoK QXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpEaXNjdXNzaW9uOiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTU1Ni8KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0Lzc4NTc0QjI0LUJF MEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQyU0MGFtYXpvbi5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NTEgKysrKysrKysrKysr LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAg ICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAg ICAgICAgICB8ICA3MiArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICA4NiArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hl LXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQog MjMgZmlsZXMgY2hhbmdlZCwgNTc2IGluc2VydGlvbnMoKyksIDIyNiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi41YjA1OWE1 YWNlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDggQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRy YW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBAQCBz dGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMg dm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlm Ci1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBI ZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wg Kmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxv Y2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwK IAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMsNyBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAg KiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5 IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhl IGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxl J3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3Qs IGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICszMjAz LDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAs CiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2Vk KCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0Owog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlCaXRt YXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQgICpp bnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlCaXRt YXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsKIAlI ZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEsMTMg KzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxl X2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRl ID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlr ZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9j a2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwg PSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJhbnNh Y3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50MTYJ CWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBh dHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgot CSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3 ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24g YSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBi ZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYg d2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lz dGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRj aCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBjYWNo ZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgotCSAq IFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkgYW5k IGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBhbGwg aW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0gTlVM TDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVy cyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaWRf YXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0 YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUg ZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICogY2F0 YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBs YXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGllcyBv ZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxjYWNo ZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRvIGZy ZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVf aW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCi0J CWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0 IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAqIEZp bGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4g b2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAqIHJl cXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdl R2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRo ZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkgb2Yg dGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUK LQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBpcyBy ZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRlbmVk IHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcgdHVw bGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUu ICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBsaWNh SWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1 dGUKKwkgKiBpcyB1c2VkIGFzIGEgcmVwbGljYSBpZGVudGl0eSBvciBpZiBhbnkgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGluIGFu IGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkgaW4g dGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1heSBi ZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gc28gdGhleSBhcmUgYXZhaWxhYmxl IHRvIHJlcGxpY2FzLgogCSAqLwotCW1vZGlmaWVkX2F0dHJzID0gSGVhcERldGVybWluZUNv bHVtbnNJbmZvKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKLQkJCQkJCQkJCQkJICBp ZF9hdHRycywgJm9sZHR1cCwKLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0ZXJu YWwpOworCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhf YXR0cnMsIGlkX2F0dHJzKTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJeworCQlC aXRtYXBzZXQgICphdHRyczsKKwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERl c2NyKHJlbGF0aW9uKTsKKwkJaW50CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICogUmVk dWNlIHRoZSBzZXQgdW5kZXIgcmV2aWV3IHRvIG9ubHkgdGhlIHVubW9kaWZpZWQgaW5kZXhl ZCByZXBsaWNhCisJCSAqIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzLiAgaWR4X2F0dHJzIGlz IGNvcGllZCAoYnkgYm1zX2RpZmZlcmVuY2UoKSkKKwkJICogbm90IG1vZGlmaWVkIGhlcmUu CisJCSAqLworCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkeF9hdHRycywgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwkJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIGlkX2F0dHJz KTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4 KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRy bnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRyTnVt YmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgorCQkJ ICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJfQklU TUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJQXNz ZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1cCwg YXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hlY2sg YXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlpZiAo aXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAt IDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlmIHRo ZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJCWlm IChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9pbnRl cih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOworCQkJ CWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8qCiAJ ICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBncmFi IGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTMzOTQsOSArMzQxNyw4IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUga2V5 IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2ZSBh dCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9kaWZp ZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5vS2V5 RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNpdmU7 CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlrZXlf aW50YWN0ID0gdHJ1ZTsKIApAQCAtMzQxMyw3ICszNDM1LDcgQEAgaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVz aXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJbXhh Y3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0gZmFs c2U7CiAJfQpAQCAtMzQ5Miw3ICszNTE0LDcgQEAgbDI6CiAJCQlib29sCQljdXJyZW50X2lz X21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3QoKE11 bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2RlLCAmY3Vy cmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9pc19tZW1i ZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwogCkBAIC0zNTAxLDcgKzM1MjMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEgbG9j ayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8KIAkJ CQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9jayhy ZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2FjcXVp cmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUsCiAJCQkJ CQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyogd2Fp dCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNTg2LDcgKzM2MDgsNyBAQCBsMjoKIAkJCSAqIGxv Y2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2VsZiks ICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1 cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAmb2xk dHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM2NDYsMTcgKzM2Njgs MTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJVW5s b2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21vZGUp OworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCBs b2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJUmVsZWFz ZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJ Ym1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2Zy ZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJlZShtb2Rp ZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2Zy ZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRo ZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0KIApA QCAtMzY4Niw3ICszNzA1LDcgQEAgbDI6CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhI ZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAgb2xk dHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRfaW5m b21hc2syLAotCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4aWQs IGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21hc2tf b2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0zODAz LDcgKzM4MjIsNyBAQCBsMjoKIAkJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFwVHVw bGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1cC50 X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFz azIsCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhpZCwg bG9ja21vZGUsIGZhbHNlLAogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAmaW5m b21hc2tfbG9ja19vbGRfdHVwbGUsCiAJCQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29sZF90 dXBsZSk7CiAKQEAgLTM5NzYsMjAgKzM5OTUsOCBAQCBsMjoKIAkJICogdG8gZG8gYSBIT1Qg dXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVlbgog CQkgKiBjaGFuZ2VkLgogCQkgKi8KLQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9hdHRy cywgaG90X2F0dHJzKSkKLQkJeworCQlpZiAoaG90X2FsbG93ZWQpCiAJCQl1c2VfaG90X3Vw ZGF0ZSA9IHRydWU7Ci0KLQkJCS8qCi0JCQkgKiBJZiBub25lIG9mIHRoZSBjb2x1bW5zIHRo YXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMKLQkJCSAqIHdlcmUgdXBkYXRl ZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sKLQkJ CSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBhbmQg dXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5zIHdlcmUgdXBkYXRl ZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVlIGJvdW5kIGNo YW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KLQkJCSAqLwotCQkJaWYgKGJtc19vdmVy bGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBkYXRl ID0gdHJ1ZTsKLQkJfQogCX0KIAllbHNlCiAJewpAQCAtNDAwNSw4ICs0MDEyLDcgQEAgbDI6 CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEuCiAJ ICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVsYXRpb24s ICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIGlk X2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwKKwkJCQkJCQkJCQkg ICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGllZCk7 CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBs b2dnZWQgKi8KQEAgLTQxMzYsNyArNDE0Miw3IEBAIGwyOgogCSAqIFJlbGVhc2UgdGhlIGxt Z3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0LgogCSAqLwogCWlmIChoYXZlX3R1cGxlX2xv Y2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwg KmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50 X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVsYXRp b24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKIApAQCAtNDE1MCwzMSAr NDE1NiwxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CiAJfQogCi0JLyoK LQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1cGRhdGUgbWF5IHN0aWxsIG5lZWQg dG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8gdXBk YXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGluY29ycmVjdAotCSAqIHJlc3VsdHMgKGZv ciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRoZSBibG9jayBtYXkgY2hhbmdlIHdpdGgg dGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYgKHVzZV9ob3RfdXBkYXRlKQotCXsKLQkJ aWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3VtbWFy aXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0JfQotCWVs c2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCiAJaWYgKG9sZF9rZXlfdHVwbGUg IT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tleV90 dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRycyk7 Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1zX2Zy ZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwli bXNfZnJlZShpZHhfYXR0cnMpOworCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25lZCBi eSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCiAKIAlyZXR1cm4gVE1fT2s7CiB9CkBA IC00MzQ3LDI4ICs0MzM0LDExNSBAQCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0dXBk ZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsCiB9CiAKIC8q Ci0gKiBDaGVjayB3aGljaCBjb2x1bW5zIGFyZSBiZWluZyB1cGRhdGVkLgotICoKLSAqIEdp dmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRoZSBv dXRwdXQgYml0bWFwc2V0KSwKLSAqIGZyb20gdGhvc2UgbGlzdGVkIGFzIGludGVyZXN0aW5n LCB0aGUgc2V0IG9mIGNvbHVtbnMgdGhhdCBjaGFuZ2VkLgotICoKLSAqIGhhc19leHRlcm5h bCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZyb20g dGhvc2UKLSAqIGxpc3RlZCBhcyBpbnRlcmVzdGluZykgb2YgdGhlIG9sZCB0dXBsZSBpcyBh IG1lbWJlciBvZiBleHRlcm5hbF9jb2xzIGFuZCBpcwotICogc3RvcmVkIGV4dGVybmFsbHku CisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRoZXI6IGEpIHRoZXJlIGFy ZSBubyBtb2RpZmllZCBpbmRleGVkCisgKiBhdHRyaWJ1dGVzLCBvciBiKSB0aGUgbW9kaWZp ZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGluZGV4ZXMuCisgKiBMYXRl ciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBwZXJmb3JtIGEgSE9UIHVw ZGF0ZSBpZiB0aGVyZSBpcworICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRoZSBuZXcgdHVw bGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZAorICogdGhhdCBIT1Qg aXMgYWxsb3dlZC4KKyAqLworYm9vbAorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJ CSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSkKK3sKKwlib29sCQlob3RfYWxsb3dlZDsKKwor CS8qCisJICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2ZmIGJ5IGFzc3VtaW5n IHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKKwkgKiBuZWVkIHVwZGF0aW5nIGFuZCBIT1Qg aXMgYWxsb3dhYmxlLgorCSAqLworCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkqc3VtbWFyaXpl ZF9vbmx5ID0gZmFsc2U7CisKKwkvKgorCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hlbiB0 aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKKwkgKiBhbGxv d2VkLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJ aG90X2FsbG93ZWQgPSB0cnVlOworCWVsc2UKKwl7CisJCUJpdG1hcHNldCAgKnN1bV9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJ CQkgICBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEKTsKKworCQkvKgorCQkgKiBBdCBs ZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMgY2Fz ZSAoYikKKwkJICogd2hlcmUgYWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIGFy ZSBvbmx5IHVzZWQgYnkKKwkJICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlzLCB0 aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlzIHVw ZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKKwkJICogYW5k IGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUgcmVs YXRpb24uCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0cnMs IHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJCSpzdW1tYXJp emVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5vdyB3 ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVk CisJCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhl IFVQREFURSkgYW5kIHRoYXQKKwkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBhdHRy aWJ1dGVzIGlzIHVzZWQgYnkgYQorCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBIT1Qg aXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7CisJCX0K KworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxsb3dlZDsK K30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgYXR0cmlidXRlcyB1c2Vk IHdoZW4gZm9ybWluZyB0aGUgaW5kZXgga2V5cyB3ZSBjYW4KKyAqIGdyYWIgYSB3ZWFrZXIg bG9jayB0eXBlLiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdlIGFy ZQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZvcmVpZ24ga2V5IGNoZWNrcy4K KyAqLworTG9ja1R1cGxlTW9kZQorSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykKK3sK KwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCisJQml0 bWFwc2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCisJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlmICgh Ym1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBrZXlfYXR0cnMpKQorCQlsb2NrbW9k ZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOworCisJYm1zX2ZyZWUoa2V5X2F0dHJzKTsK KworCXJldHVybiBsb2NrbW9kZTsKK30KKworLyoKKyAqIFJldHVybiBhIEJpdG1hcHNldCB0 aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQKKyAq IGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5ld3R1cC4KICAqLwogc3RhdGljIEJp dG1hcHNldCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRpb24s Ci0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1hcHNl dCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUg bmV3dHVwLAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2RpZmll ZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmllZCA9 IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0dHJz ID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRp b24pOwogCisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbCBp bmRleGVzIGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisKKwkv KiBObyBpbmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lzX2Vt cHR5KGF0dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1cGRh dGUgZnVuY3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5saWtl CisJICogaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJlbElu Zm8gYW5kIEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0dHJp YnV0ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNHZXRB bGxVcGRhdGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmlidXRl cyB0bworCSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0J3Mg dGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVkX2lk eF9hdHRycyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBibXNf bmV4dF9tZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGlsZSAo KGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7CiAJ CS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmli dXRlIG51bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDU4LDcgQEAgSGVh cERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJaWYg KGF0dHJudW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2Rp ZmllZCwgYXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVtYmVy KG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAg LTQzOTcsNyArNDQ3MSw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlvbiBy ZWxhdGlvbiwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVOdW1i ZXIpCiAJCQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwgYXR0 aWR4KTsKKwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2RpZmll ZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTQ0 MTMsMjkgKzQ0ODcsMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJl bGF0aW9uLAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVtLCB2 YWx1ZTEsCiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0JCQlt b2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29udGlu dWU7Ci0JCX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMgdGhh dCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3RlbSBh dHRyaWJ1dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYgKGF0 dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRl c2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJLyoK LQkJICogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQgZXh0 ZXJuYWxseSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJICov Ci0JCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2ludGVy KHZhbHVlMSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29scykp Ci0JCQkqaGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJt c19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQlyZXR1 cm4gbW9kaWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVkX2lk eF9hdHRyczsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MTAsOTQgQEAgc2ltcGxlX2hlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSB0dXAKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZTsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsK KwlCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OworCUhlYXBUdXBsZQlvbGR0dXA7 CisJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOworCWJvb2wJCWhvdF9hbGxvd2VkLAorCQkJCXN1bW1hcml6ZWRfb25seTsKKwlC dWZmZXIJCWJ1ZmZlcjsKIAotCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlk LCB0dXAsCi0JCQkJCQkgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwKLQkJCQkJCSBJ bnZhbGlkU25hcHNob3QsCi0JCQkJCQkgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAot CQkJCQkJICZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwlBc3NlcnQoSXRl bVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKKworCS8qCisJICogVG8gdXBkYXRlIGEgaGVhcCB0 dXBsZSB3ZSBuZWVkIHRvIGZpbmQgdGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkCisJICog YXR0cmlidXRlcyAoIm1vZGlmaWVkX2lkeF9hdHRycyIpIGFuZCB1c2UgdGhhdCB0byBkZXRl cm1pbmUgaWYgYSBIT1QKKwkgKiB1cGRhdGUgaXMgYWxsb3dhYmxlIG9yIG5vdC4gV2hlbiB1 cGRhdGluZyBoZWFwIHR1cGxlcyB2aWEgZXhlY3V0aW9uIG9mCisJICogVVBEQVRFIHN0YXRl bWVudHMgdGhpcyBzZXQgaXMgY29uc3RydWN0ZWQgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUg dGFibGUKKwkgKiBBTSdzIHVwZGF0ZSBmdW5jdGlvbiBieSBFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHdoaWNoIGNvbXBhcmVzIHRoZQorCSAqIG9sZC9uZXcgVHVwbGVUYWJsZVNs b3RzLgorCSAqCisJICogSGVyZSB0aGluZ3MgYXJlIGEgYml0IGRpZmZlcmVudCwgd2UgaGF2 ZSB0aGUgb2xkIFRJRCBhbmQgdGhlIG5ldyB0dXBsZSwKKwkgKiBub3QgdHdvIFR1cGxlVGFi bGVTbG90cywgYnV0IHdlIHN0aWxsIG5lZWQgdG8gY29uc3RydWN0IGEgc2ltaWxhcgorCSAq IGJpdG1hcCBzbyBhcyB0byBiZSBhYmxlIHRvIGtub3cgaWYgSE9UIHVwZGF0ZXMgYXJlIGFs bG93ZWQgb3Igbm90LgorCSAqCisJICogVG8gZG8gdGhhdCB3ZSBmaXJzdCBoYXZlIHRvIGZl dGNoIHRoZSBvbGQgdHVwbGUgaXRzZWxmLCBidXQgYmVjYXVzZQorCSAqIGhlYXBhbV9mZXRj aF9yb3dfdmVyc2lvbigpIGlzIHN0YXRpYywgd2UgcmVwbGljYXRlIGluIHBhcnQgdGhhdCBj b2RlCisJICogaGVyZS4KKwkgKgorCSAqIFRoaXMgaXMgYSBiaXQgcmVwZXRpdGl2ZSBiZWNh dXNlIGhlYXBfdXBkYXRlKCkgd2lsbCBhZ2FpbiBmaW5kIGFuZCBmb3JtCisJICogdGhlIG9s ZCBIZWFwVHVwbGUgZnJvbSB0aGUgb2xkIFRJRCBhbmQgaW4gbW9zdCBjYXNlcyB0aGUgY2Fs bGVycworCSAqIChpZ25vcmluZyBleHRlbnNpb25zLCBhcmUgYWx3YXlzIGNhdGFsb2cgdHVw bGUgdXBkYXRlcykgYWxyZWFkeSBoYWQgdGhlCisJICogc2V0IG9mIGNoYW5nZWQgYXR0cmli dXRlcyAodGhlICJyZXBsYWNlcyIgYXJyYXkpLCBidXQgZm9yIG5vdyB0aGlzCisJICogbWlu b3IgcmVwZXRpdGlvbiBvZiB3b3JrIGlzIG5lY2Vzc2FyeS4KKwkgKi8KKwlJTkpFQ1RJT05f UE9JTlQoInNpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwlzbG90 ID0gTWFrZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pLCAmVFRT T3BzQnVmZmVySGVhcFR1cGxlLCAwKTsKKwlic2xvdCA9IChCdWZmZXJIZWFwVHVwbGVUYWJs ZVNsb3QgKikgc2xvdDsKKworCS8qCisJICogU2V0IHRoZSBUSUQgaW4gdGhlIHNsb3QgYW5k IHRoZW4gZmV0Y2ggdGhlIG9sZCB0dXBsZSBzbyB3ZSBjYW4gZXhhbWluZQorCSAqIGl0CisJ ICovCisJYnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqb3RpZDsKKwlpZiAoIWhlYXBf ZmV0Y2gocmVsYXRpb24sIFNuYXBzaG90QW55LCAmYnNsb3QtPmJhc2UudHVwZGF0YSwgJmJ1 ZmZlciwgZmFsc2UpKQorCXsKKwkJLyoKKwkJICogaGVhcF91cGRhdGUoKSBjaGVja3MgZm9y ICFJdGVtSWRJc05vcm1hbChscCkgYW5kIHdpbGwgcmV0dXJuIGZhbHNlCisJCSAqIGluIHRo b3NlIGNhc2VzLgorCQkgKi8KKwkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShS ZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSkpOworCisJCSp1cGRhdGVfaW5kZXhlcyA9IFRV X05vbmU7CisKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQg Ki8KKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCQllbG9nKEVS Uk9SLCAidHVwbGUgY29uY3VycmVudGx5IGRlbGV0ZWQiKTsKKworCQlyZXR1cm47CisJfQor CisJQXNzZXJ0KGJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKTsKKworCS8qIFN0b3JlIGluIHNs b3QsIHRyYW5zZmVycmluZyBleGlzdGluZyBwaW4gKi8KKwlFeGVjU3RvcmVQaW5uZWRCdWZm ZXJIZWFwVHVwbGUoJmJzbG90LT5iYXNlLnR1cGRhdGEsIHNsb3QsIGJ1ZmZlcik7CisJb2xk dHVwID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCBmYWxzZSwgJnNob3VsZEZyZWUp OworCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gSGVhcFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMo cmVsYXRpb24sIG9sZHR1cCwgdHVwKTsKKwlsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1p bmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfYWxsb3dl ZCA9IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRy cywgJnN1bW1hcml6ZWRfb25seSk7CisKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlv biwgb3RpZCwgdHVwLCBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpLCAwLAorCQkJCQkJIElu dmFsaWRTbmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAorCQkJCQkJICZ0 bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7CisKKwlp ZiAoc2hvdWxkRnJlZSkKKwkJaGVhcF9mcmVldHVwbGUob2xkdHVwKTsKKworCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVy IG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICog SWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4g SWYgdGhlIHVwZGF0ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVk IHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3Vt bWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4 ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9k aWZpZWQ6CkBAIC00NDY4LDYgKzQ2MDcsMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0 dXAKIAogCQljYXNlIFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlm ICghSGVhcFR1cGxlSXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRV X0FsbDsKKwkJCWVsc2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4 ZXMgPSBUVV9TdW1tYXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGJmODc0 MzBjZjAxLi43NWI0ZDQwYWFmYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1faGFuZGxlci5jCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNz Y2FuLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mv dHNtYXBpLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvaW5kZXguaCIKQEAgLTIxOCwyMCArMjE3LDI2IEBAIHN0YXRpYyBUTV9S ZXN1bHQKIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssCi0JCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxv Y2tUdXBsZU1vZGUgKmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhl cykKKwkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRG cmVlID0gdHJ1ZTsKIAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxl KHNsb3QsIHRydWUsICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29s CQlzdW1tYXJpemVkX29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVt UG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29u bHkpOworCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlv biwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0 YWJsZSBvaWQgKi8KIAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bGF0aW9uKTsKIAl0dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAot CXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRp b25zLAotCQkJCQkJIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUs IHVwZGF0ZV9pbmRleGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3Rp ZCwgdHVwbGUsIGNpZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZk LCAqbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Q b2ludGVyQ29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAg LTI0NCwxNiArMjQ5LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRp b24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwg aXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2Ug ZWl0aGVyCiAJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0 IGFsbC4KIAkgKi8KLQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9 IFRVX05vbmU7CisJaWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRl X2luZGV4ZXMgPT0gVFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJ CWlmIChIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6 ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQor CQllbHNlCisJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFI ZWFwVHVwbGVJc0hlYXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9 PSBUVV9BbGwpOwotCWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3Vt bWFyaXppbmcpIHx8Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAog CWlmIChzaG91bGRGcmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYwppbmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBs ZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAog CQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJ CQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJ cmVzdWx0OwpAQCAtMzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUo UmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29t bWFuZElkKHRydWUpLAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAog CQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAm bG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwK KwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7 CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9yZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IGZh YTA3ZDFhMTE4Li45NzYxYmRhYzlkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcmVwYWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2 ODksOCArMjY4OSwxOCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWws IFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21v ZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9p bmRleGVzOworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJ cmVzOwogCisJLyoKKwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAo c3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJ ICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhl ZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNV cGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9u ZGlza190dXBsZSwKKwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICog Q2Fycnkgb3V0IHRoZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0 LgogCSAqLwpAQCAtMjcwMCw3ICsyNzEwLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUo UmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkg SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZh bHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJ CQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5k ZXhlcyk7CiAJaWYgKHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJj b2RlKEVSUkNPREVfVF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzIxLDYgKzI3 MzEsOCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFi bGVTbG90ICpzcGlsbGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3Bh cmFtKFBST0dSRVNTX1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19m cmVlKG1vZGlmaWVkX2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcx YmQ5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMz LDYgKzMzLDcgQEAKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0 aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkx MCw2ICs5MTEsNyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24J cmVsID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRp ZCA9ICYoc2VhcmNoc2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOwogCiAJLyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMs IHdpdGgKQEAgLTk0OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNw YXJ0aXRpb24pCiAJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwg ZXN0YXRlLCB0cnVlKTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9k aWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90 LCBzbG90KTsKKwogCQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90 LCBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJ CQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNf ZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVz dWx0UmVsSW5mby0+cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjVHVwbGVzLmMKaW5kZXggN2Y0ZWJmOTU0MzIuLjI5ZjllNmNlNjdjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk ZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAj aW5jbHVkZSAidXRpbHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMs NzcgQEAgRXhlY0ZldGNoU2xvdEhlYXBUdXBsZURhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90 KQogCXJldHVybiByZXQ7CiB9CiAKKy8qCisgKiBFeGVjQ29tcGFyZVNsb3RBdHRycworICoK KyAqIENvbXBhcmUgdGhlIHN1YnNldCBvZiBhdHRyaWJ1dGVzIGluIGF0dHJzIGJldHdlZW4g VHVwbGVUYWJsZVNsb3RzIHRvIGRldGVjdAorICogd2hpY2ggYXR0cmlidXRlcyBoYXZlIGNo YW5nZWQuCisgKgorICogVGhlIGlucHV0IEJpdG1hcHNldCBhdHRycyBpcyBtb2RpZmllZCBp biBwbGFjZSAocmVjeWNsZWQgd2hlbiBwb3NzaWJsZSB2aWEKKyAqIGJtc19kZWxfbWVtYmVy LCB3aGljaCBtYXkgcGZyZWUgaXQgYW5kIHJldHVybiBOVUxMKSBhbmQgbWF5IGJlIGZyZWVk OworICogY2FsbGVycyBtdXN0IHVzZSBvbmx5IHRoZSByZXR1cm5lZCBwb2ludGVyLCBub3Qg dGhlaXIgb3JpZ2luYWwgYXR0cnMKKyAqIHZhbHVlLiAgUmV0dXJucyB0aGUgQml0bWFwc2V0 IG9mIGF0dHJpYnV0ZSBpbmRpY2VzICh1c2luZyB0aGUKKyAqIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXIgY29udmVudGlvbikgdGhhdCBkaWZmZXIgYmV0d2VlbiB0aGUg dHdvCisgKiBzbG90cy4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNDb21wYXJlU2xvdEF0dHJz KEJpdG1hcHNldCAqYXR0cnMsIFR1cGxlRGVzYyB0dXBkZXNjLAorCQkJCQkgVHVwbGVUYWJs ZVNsb3QgKnMxLCBUdXBsZVRhYmxlU2xvdCAqczIpCit7CisJaW50CQkJYXR0aWR4ID0gLTE7 CisKKwl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkg Pj0gMCkKKwl7CisJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBu b3JtYWwgYXR0cmlidXRlIG51bWJlciAqLworCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRp ZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCQlEYXR1bQkJdmFs dWUxLAorCQkJCQl2YWx1ZTI7CisJCWJvb2wJCW51bGwxLAorCQkJCQludWxsMjsKKwkJQ29t cGFjdEF0dHJpYnV0ZSAqYXR0OworCisJCS8qCisJCSAqIElmIGl0J3MgYSB3aG9sZS10dXBs ZSByZWZlcmVuY2UsIHNheSAibm90IGVxdWFsIi4gIEl0J3Mgbm90IHJlYWxseQorCQkgKiB3 b3J0aCBzdXBwb3J0aW5nIHRoaXMgY2FzZSwgc2luY2UgaXQgY291bGQgb25seSBzdWNjZWVk IGFmdGVyIGEKKwkJICogbm8tb3AgdXBkYXRlLCB3aGljaCBpcyBoYXJkbHkgYSBjYXNlIHdv cnRoIG9wdGltaXppbmcgZm9yLgorCQkgKi8KKwkJaWYgKGF0dHJudW0gPT0gMCkKKwkJCWNv bnRpbnVlOworCisJCS8qCisJCSAqIExpa2V3aXNlLCBhdXRvbWF0aWNhbGx5IHNheSAibm90 IGVxdWFsIiBmb3IgYW55IHN5c3RlbSBhdHRyaWJ1dGUKKwkJICogb3RoZXIgdGhhbiB0YWJs ZU9JRDsgd2UgY2Fubm90IGV4cGVjdCB0aGVzZSB0byBiZSBjb25zaXN0ZW50IGluIGEKKwkJ ICogSE9UIGNoYWluLCBvciBldmVuIHRvIGJlIHNldCBjb3JyZWN0bHkgeWV0IGluIHRoZSBu ZXcgdHVwbGUuCisJCSAqLworCQlpZiAoYXR0cm51bSA8IDApCisJCXsKKwkJCWlmIChhdHRy bnVtID09IFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyKQorCQkJCWF0dHJzID0gYm1zX2RlbF9t ZW1iZXIoYXR0cnMsIGF0dGlkeCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWF0dCA9IFR1 cGxlRGVzY0NvbXBhY3RBdHRyKHR1cGRlc2MsIGF0dHJudW0gLSAxKTsKKwkJdmFsdWUxID0g c2xvdF9nZXRhdHRyKHMxLCBhdHRybnVtLCAmbnVsbDEpOworCQl2YWx1ZTIgPSBzbG90X2dl dGF0dHIoczIsIGF0dHJudW0sICZudWxsMik7CisKKwkJLyogQSBjaGFuZ2UgdG8vZnJvbSBO VUxMLCBzbyBub3QgZXF1YWwgKi8KKwkJaWYgKG51bGwxICE9IG51bGwyKQorCQkJY29udGlu dWU7CisKKwkJLyogQm90aCBOVUxMLCBubyBjaGFuZ2UvdW5tb2RpZmllZCAqLworCQlpZiAo bnVsbDIpCisJCXsKKwkJCWF0dHJzID0gYm1zX2RlbF9tZW1iZXIoYXR0cnMsIGF0dGlkeCk7 CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChkYXR1bV9pbWFnZV9lcSh2YWx1ZTEsIHZh bHVlMiwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQorCQkJYXR0cnMgPSBibXNfZGVs X21lbWJlcihhdHRycywgYXR0aWR4KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQkJCWNvbnZlbmllbmNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVz CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CmluZGV4IGMzMzNkNzEzOWZhLi5lYjZlMGVmMmFkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAqCQlFeGVjTW9kaWZ5 VGFibGUJCS0gcmV0cmlldmUgdGhlIG5leHQgdHVwbGUgZnJvbSB0aGUgbm9kZQogICoJCUV4 ZWNFbmRNb2RpZnlUYWJsZQktIHNodXQgZG93biB0aGUgTW9kaWZ5VGFibGUgbm9kZQogICoJ CUV4ZWNSZVNjYW5Nb2RpZnlUYWJsZSAtIHJlc2NhbiB0aGUgTW9kaWZ5VGFibGUgbm9kZQor ICoJCUV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzIC0gZmluZCBzZXQgb2YgdXBkYXRlZCBp bmRleGVkIGNvbHVtbnMKICAqCiAgKgkgTk9URVMKICAqCQlUaGUgTW9kaWZ5VGFibGUgbm9k ZSByZWNlaXZlcyBpbnB1dCBmcm9tIGl0cyBvdXRlclBsYW4sIHdoaWNoIGlzCkBAIC01Niw2 ICs1Nyw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUg ImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R1cGNvbnZlcnQuaCIKKyNp bmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCIKQEAgLTIwMiw2ICsyMDQsNjMgQEAgc3RhdGljIHZvaWQgZmlyZUFTVHJp Z2dlcnMoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSk7CiBzdGF0aWMgdm9pZCBFeGVjSW5pdEZv clBvcnRpb25PZihNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOwogCisvKgorICogRXhl Y1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMKKyAqCisgKiBGaW5kIHRoZSBzZXQgb2YgYXR0cmli dXRlcyByZWZlcmVuY2VkIGJ5IHRoaXMgcmVsYXRpb24gYW5kIHVzZWQgaW4gdGhpcworICog VVBEQVRFIHRoYXQgbm93IGRpZmZlciBpbiB2YWx1ZS4gIFRoaXMgaXMgZG9uZSBieSByZXZp ZXdpbmcgc2xvdCBkYXR1bSB0aGF0CisgKiBhcmUgaW4gdGhlIFVQREFURSBzdGF0bWVudCBh bmQgYXJlIGtub3duIHRvIGJlIHJlZmVyZW5jZWQgYnkgYXQgbGVhc3Qgb25lCisgKiBpbmRl eCBpbiBzb21lIHdheS4gIFRoaXMgc2V0IGlzIGNhbGxlZCB0aGUgIm1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcyIgb3IKKyAqICJtb2RpZmllZF9pZHhfYXR0cnMiLiAgQW4gb3Zlcmxh cCBvZiBhIHNpbmdsZSBpbmRleCdzIGF0dHJpYnV0ZXMgYW5kIHRoaXMKKyAqIG1vZGlmaWVk X2lkeF9hdHRycyBzZXQgc2lnbmFscyB0aGF0IHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBuZXdf dHRzIHVzZWQgdG8KKyAqIGZvcm0gdGhlIGluZGV4IGRhdHVtIGhhdmUgY2hhbmdlZC4KKyAq CisgKiBSZXR1cm4gYSBCaXRtYXBzZXQgdGhhdCBjb250YWlucyB0aGUgc2V0IG9mIG1vZGlm aWVkIChjaGFuZ2VkKSBpbmRleGVkCisgKiBhdHRyaWJ1dGVzIGJldHdlZW4gb2xkdHVwIGFu ZCBuZXd0dXAuCisgKgorICogTm90ZTogVGhlcmUgaXMgYSBzaW1pbGFyIGZ1bmN0aW9uIGNh bGxlZCBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycygpIHRoYXQgb3BlcmF0ZXMKKyAqIG9u IHRoZSBvbGQgVElEIGFuZCBuZXcgSGVhcFR1cGxlIHJhdGhlciB0aGFuIHRoZSBvbGQvbmV3 IFR1cGxlVGFibGVTbG90cyBhcworICogdGhpcyBmdW5jdGlvbiBkb2VzLiAgVGhlc2UgdHdv IGZ1bmN0aW9ucyBzaG91bGQgbWlycm9yIG9uZSBhbm90aGVyIHVudGlsCisgKiBzb21lZGF5 IHdoZW4gY2F0YWxvZyB0dXBsZSB1cGRhdGVzIHRyYWNrIHRoZWlyIGNoYW5nZXMgYXZvaWRp bmcgdGhlIG5lZWQgdG8KKyAqIHJlLWRpc2NvdmVyIHRoZW0gaW4gc2ltcGxlX2hlYXBfdXBk YXRlKCkuCisgKi8KK0JpdG1hcHNldCAqCitFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJICAgVHVwbGVUYWJsZVNsb3Qg Km9sZF90dHMsCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cykKK3sKKwlSZWxh dGlvbglyZWxhdGlvbiA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlUdXBs ZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCUJpdG1hcHNl dCAgKmF0dHJzOworCisJLyogSWYgbm8gaW5kZXhlcywgd2UncmUgZG9uZSAqLworCWlmIChy ZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID09IDApCisJCXJldHVybiBOVUxMOworCisJ LyoKKwkgKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4 ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQorCSAqIHRoZSByZWxjYWNoZSwgaXQgcmV0dXJu cyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBzbyB3ZSBjYW4gbW9kaWZ5IGl0LgorCSAqCisJ ICogTm90ZTogV2UgaW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMgd2hl biBsb29raW5nIGZvcgorCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQgc2V0 IGJ5IGludGVyc2VjdGluZyBpdCB3aXRoCisJICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCku ICBEZXNpcHRlIHRoZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKKwkgKiB0YXJnZXRl ZCBhdHRyaWJ1dGVzIGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55IHRy aWdnZXJzLAorCSAqIGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRlcyB1 cGRhdGVkIHVzaW5nCisJICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9uZSB0 ZXN0IGluIHRzZWFyY2guc3FsIHRoYXQgZG9lcyBqdXN0CisJICogdGhhdCwgbW9kaWZpZXMg YW4gaW5kZXhlZCBhdHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNRTCBh bmQKKwkgKiBzbyBpc24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqLworCWF0 dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sIElOREVYX0FUVFJf QklUTUFQX0lOREVYRUQpOworCisJLyoKKwkgKiBXaGVuIHRoZXJlIGFyZSBpbmRleGVkIGF0 dHJpYnV0ZXMgbWVudGlvbmVkIGluIHRoZSBVUERBVEUgdGhlbiB3ZSBuZWVkCisJICogdG8g ZmluZCB0aGUgc3Vic2V0IHRoYXQgY2hhbmdlZCB2YWx1ZS4gIFRoYXQncyB0aGUKKwkgKiAi bW9kaWZpZWRfaWR4X2F0dHJzIi4KKwkgKi8KKwlhdHRycyA9IEV4ZWNDb21wYXJlU2xvdEF0 dHJzKGF0dHJzLCB0dXBkZXNjLCBvbGRfdHRzLCBuZXdfdHRzKTsKKworCXJldHVybiBhdHRy czsKK30KIAogLyoKICAqIFZlcmlmeSB0aGF0IHRoZSB0dXBsZXMgdG8gYmUgcHJvZHVjZWQg YnkgSU5TRVJUIG1hdGNoIHRoZQpAQCAtMjQ0NiwxNCArMjUwNSwxNyBAQCBFeGVjVXBkYXRl UHJlcGFyZVNsb3QoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKICAqLwogc3RhdGlj IFRNX1Jlc3VsdAogRXhlY1VwZGF0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCi0JCQkgIEl0ZW1Qb2ludGVyIHR1cGxl aWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCi0JCQkgIGJv b2wgY2FuU2V0VGFnLCBVcGRhdGVDb250ZXh0ICp1cGRhdGVDeHQpCisJCQkgIEl0ZW1Qb2lu dGVyIHR1cGxlaWQsIEhlYXBUdXBsZSBvbGR0dXBsZSwgVHVwbGVUYWJsZVNsb3QgKm9sZFNs b3QsCisJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBib29sIGNhblNldFRhZywgVXBkYXRl Q29udGV4dCAqdXBkYXRlQ3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ ZXN0YXRlOwogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYyA9IHJlc3VsdFJlbEluZm8t PnJpX1JlbGF0aW9uRGVzYzsKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWlsZWQ7 CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLworCUJpdG1h cHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisKIAl1cGRhdGVDeHQtPmNyb3Nz UGFydFVwZGF0ZSA9IGZhbHNlOwogCiAJLyoKQEAgLTI1NzAsNyArMjYzMiwxNiBAQCBscmVw bGFjZToKIAkJRXhlY0NvbnN0cmFpbnRzKHJlc3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSk7 CiAKIAkvKgotCSAqIHJlcGxhY2UgdGhlIGhlYXAgdHVwbGUKKwkgKiBOZXh0IHVwIHdlIG5l ZWQgdG8gZmluZCBvdXQgdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBoYXZl CisJICogY2hhbmdlZCBpbiB2YWx1ZSBhbmQgc2hvdWxkIHRyaWdnZXIgYSBuZXcgaW5kZXgg dHVwbGUuICBXZSBjb3VsZCBzdGFydAorCSAqIHdpdGggdGhlIHNldCBvZiB1cGRhdGVkIGNv bHVtbnMgdmlhIEV4ZWNHZXRVcGRhdGVkQ29scygpLCBidXQgaWYgd2UgZG8KKwkgKiB3ZSB3 aWxsIG92ZXJsb29rIGF0dHJpYnV0ZXMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgaGVhcF9tb2Rp ZnlfdHVwbGUoKQorCSAqIHdoaWNoIGFyZSBub3Qga25vd24gdG8gRXhlY0dldFVwZGF0ZWRD b2xzKCkuCisJICovCisJbW9kaWZpZWRfaWR4X2F0dHJzID0gRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCk7CisKKwkvKgorCSAqIENh bGwgaW50byB0aGUgdGFibGUgQU0gdG8gdXBkYXRlIHRoZSBoZWFwIHR1cGxlLgogCSAqCiAJ ICogTm90ZTogaWYgZXNfY3Jvc3NjaGVja19zbmFwc2hvdCBpc24ndCBJbnZhbGlkU25hcHNo b3QsIHdlIGNoZWNrIHRoYXQKIAkgKiB0aGUgcm93IHRvIGJlIHVwZGF0ZWQgaXMgdmlzaWJs ZSB0byB0aGF0IHNuYXBzaG90LCBhbmQgdGhyb3cgYQpAQCAtMjU4NSw2ICsyNjU2LDcgQEAg bHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJ CQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAogCQkJCQkJCQkmY29udGV4dC0+ dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCisJCQkJCQkJCW1vZGlmaWVkX2lkeF9hdHRy cywKIAkJCQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyk7CiAKIAlyZXR1cm4gcmVz dWx0OwpAQCAtMjgxMiw4ICsyODg0LDggQEAgRXhlY1VwZGF0ZShNb2RpZnlUYWJsZUNvbnRl eHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCSAqLwogcmVk b19hY3Q6CiAJCWxvY2tlZHRpZCA9ICp0dXBsZWlkOwotCQlyZXN1bHQgPSBFeGVjVXBkYXRl QWN0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLCBzbG90LAot CQkJCQkJCSAgIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CisJCXJlc3VsdCA9IEV4ZWNVcGRh dGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIG9sZFNs b3QsCisJCQkJCQkJICAgc2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkvKgog CQkgKiBJZiBFeGVjVXBkYXRlQWN0IHJlcG9ydHMgdGhhdCBhIGNyb3NzLXBhcnRpdGlvbiB1 cGRhdGUgd2FzIGRvbmUsCkBAIC0zNjYzLDggKzM3MzUsOCBAQCBsbWVyZ2VfbWF0Y2hlZDoK IAkJCQkJQXNzZXJ0KG9sZHR1cGxlID09IE5VTEwpOwogCiAJCQkJCXJlc3VsdCA9IEV4ZWNV cGRhdGVBY3QoY29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwKLQkJCQkJCQkJCQkg ICBOVUxMLCBuZXdzbG90LCBjYW5TZXRUYWcsCi0JCQkJCQkJCQkJICAgJnVwZGF0ZUN4dCk7 CisJCQkJCQkJCQkJICAgTlVMTCwgcmVzdWx0UmVsSW5mby0+cmlfb2xkVHVwbGVTbG90LAor CQkJCQkJCQkJCSAgIG5ld3Nsb3QsIGNhblNldFRhZywgJnVwZGF0ZUN4dCk7CiAKIAkJCQkJ LyoKIAkJCQkJICogQXMgaW4gRXhlY1VwZGF0ZSgpLCBpZiBFeGVjVXBkYXRlQWN0KCkgcmVw b3J0cyB0aGF0IGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGZiNGUw NDJiZThhLi4wNTVmNzU3MTA3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlv biByZWxhdGlvbiwgYm9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9rZXlhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAlibXNf ZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90 YmxvY2tpbmdhdHRyKTsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOwog CWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJaWYgKHJlbGF0aW9u LT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxhdGlvbi0+cmRfcHViZGVzYyk7CkBAIC01Mjkx LDggKzUyOTEsOCBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0 aW9uKQogICoJCQkJCQkJCQkoYmV3YXJlOiBldmVuIGlmIFBLIGlzIGRlZmVycmFibGUhKQog ICoJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZCUNvbHVtbnMgaW4gdGhlIHRhYmxl J3MgcmVwbGljYSBpZGVudGl0eQogICoJCQkJCQkJCQlpbmRleCAoZW1wdHkgaWYgRlVMTCkK LSAqCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORwlDb2x1bW5zIHRoYXQgYmxvY2sg dXBkYXRlcyBmcm9tIGJlaW5nIEhPVAotICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RAlDb2x1bW5zIGluY2x1ZGVkIGluIHN1bW1hcml6aW5nIGluZGV4ZXMKKyAqCUlOREVYX0FU VFJfQklUTUFQX0lOREVYRUQJCUNvbHVtbnMgcmVmZXJlbmNlZCBieSBpbmRleGVzCisgKglJ TkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVECUNvbHVtbnMgb25seSBpbmNsdWRlZCBpbiBz dW1tYXJpemluZyBpbmRleGVzCiAgKgogICogQXR0cmlidXRlIG51bWJlcnMgYXJlIG9mZnNl dCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIHNvIHRoYXQKICAqIHdl IGNhbiBpbmNsdWRlIHN5c3RlbSBhdHRyaWJ1dGVzIChlLmcuLCBPSUQpIGluIHRoZSBiaXRt YXAgcmVwcmVzZW50YXRpb24uCkBAIC01MzE1LDggKzUzMTUsOCBAQCBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0bWFwS2luZCBh dHRyS2luZCkKIAlCaXRtYXBzZXQgICp1aW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB1bmlx dWUgaW5kZXhlcyAqLwogCUJpdG1hcHNldCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBp biB0aGUgcHJpbWFyeSBpbmRleCAqLwogCUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyog Y29sdW1ucyBpbiB0aGUgcmVwbGljYSBpZGVudGl0eSAqLwotCUJpdG1hcHNldCAgKmhvdGJs b2NraW5nYXR0cnM7CS8qIGNvbHVtbnMgd2l0aCBIT1QgYmxvY2tpbmcgaW5kZXhlcyAqLwot CUJpdG1hcHNldCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyB3aXRoIHN1bW1hcml6 aW5nIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CS8qIGNvbHVtbnMg cmVmZXJlbmNlZCBieSBpbmRleGVzICovCisJQml0bWFwc2V0ICAqc3VtbWFyaXplZGF0dHJz OwkvKiBjb2x1bW5zIG9ubHkgaW4gc3VtbWFyaXppbmcgaW5kZXhlcyAqLwogCUxpc3QJICAg KmluZGV4b2lkbGlzdDsKIAlMaXN0CSAgICpuZXdpbmRleG9pZGxpc3Q7CiAJT2lkCQkJcmVs cGtpbmRleDsKQEAgLTUzMzUsOCArNTMzNSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5kIGF0dHJLaW5kKQog CQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfcGthdHRyKTsKIAkJCWNhc2UgSU5E RVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZOgogCQkJCXJldHVybiBibXNfY29weShyZWxh dGlvbi0+cmRfaWRhdHRyKTsKLQkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSE9UX0JMT0NL SU5HOgotCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRy KTsKKwkJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRDoKKwkJCQlyZXR1cm4gYm1z X2NvcHkocmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyKTsKIAkJCWNhc2UgSU5ERVhfQVRUUl9C SVRNQVBfU1VNTUFSSVpFRDoKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3N1 bW1hcml6ZWRhdHRyKTsKIAkJCWRlZmF1bHQ6CkBAIC01MzgxLDcgKzUzODEsNyBAQCByZXN0 YXJ0OgogCXVpbmRleGF0dHJzID0gTlVMTDsKIAlwa2luZGV4YXR0cnMgPSBOVUxMOwogCWlk aW5kZXhhdHRycyA9IE5VTEw7Ci0JaG90YmxvY2tpbmdhdHRycyA9IE5VTEw7CisJaW5kZXhl ZGF0dHJzID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOwogCWZvcmVhY2gobCwg aW5kZXhvaWRsaXN0KQogCXsKQEAgLTU0NDEsNyArNTQ0MSw3IEBAIHJlc3RhcnQ6CiAJCWlm IChpbmRleERlc2MtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nKQogCQkJYXR0cnMgPSAmc3Vt bWFyaXplZGF0dHJzOwogCQllbHNlCi0JCQlhdHRycyA9ICZob3RibG9ja2luZ2F0dHJzOwor CQkJYXR0cnMgPSAmaW5kZXhlZGF0dHJzOwogCiAJCS8qIENvbGxlY3Qgc2ltcGxlIGF0dHJp YnV0ZSByZWZlcmVuY2VzICovCiAJCWZvciAoaSA9IDA7IGkgPCBpbmRleERlc2MtPnJkX2lu ZGV4LT5pbmRuYXR0czsgaSsrKQpAQCAtNTQ1MCw5ICs1NDUwLDkgQEAgcmVzdGFydDoKIAog CQkJLyoKIAkJCSAqIFNpbmNlIHdlIGhhdmUgY292ZXJpbmcgaW5kZXhlcyB3aXRoIG5vbi1r ZXkgY29sdW1ucywgd2UgbXVzdAotCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJl LiBub24ta2V5IGNvbHVtbnMgbXVzdCBiZSBhZGRlZCBpbnRvCi0JCQkgKiBob3RibG9ja2lu Z2F0dHJzIG9yIHN1bW1hcml6ZWRhdHRycywgc2luY2UgdGhleSBhcmUgaW4gaW5kZXgsCi0J CQkgKiBhbmQgdXBkYXRlIHNob3VsZG4ndCBtaXNzIHRoZW0uCisJCQkgKiBoYW5kbGUgdGhl bSBhY2N1cmF0ZWx5IGhlcmUuIE5vbi1rZXkgY29sdW1ucyBtdXN0IGJlIGFkZGVkIGludG8K KwkJCSAqIGluZGV4ZWRhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRoZXkgYXJl IGluIGluZGV4LCBhbmQKKwkJCSAqIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVtLgogCQkJ ICoKIAkJCSAqIFN1bW1hcml6aW5nIGluZGV4ZXMgZG8gbm90IGJsb2NrIEhPVCwgYnV0IGRv IG5lZWQgdG8gYmUgdXBkYXRlZAogCQkJICogd2hlbiB0aGUgY29sdW1uIHZhbHVlIGNoYW5n ZXMsIHRodXMgcmVxdWlyZSBhIHNlcGFyYXRlCkBAIC01NTEzLDEyICs1NTEzLDIwIEBAIHJl c3RhcnQ6CiAJCWJtc19mcmVlKHVpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUocGtpbmRleGF0 dHJzKTsKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKLQkJYm1zX2ZyZWUoaG90YmxvY2tp bmdhdHRycyk7CisJCWJtc19mcmVlKGluZGV4ZWRhdHRycyk7CiAJCWJtc19mcmVlKHN1bW1h cml6ZWRhdHRycyk7CiAKIAkJZ290byByZXN0YXJ0OwogCX0KIAorCS8qCisJICogUmVjb3Jk IHdoYXQgYXR0cmlidXRlcyBhcmUgb25seSByZWZlcmVuY2VkIGJ5IHN1bW1hcml6aW5nIGlu ZGV4ZXMuIFRoZW4KKwkgKiBhZGQgdGhhdCBpbnRvIHRoZSBvdGhlciBpbmRleGVkIGF0dHJp YnV0ZXMgdG8gdHJhY2sgYWxsIHJlZmVyZW5jZWQKKwkgKiBhdHRyaWJ1dGVzLgorCSAqLwor CXN1bW1hcml6ZWRhdHRycyA9IGJtc19kZWxfbWVtYmVycyhzdW1tYXJpemVkYXR0cnMsIGlu ZGV4ZWRhdHRycyk7CisJaW5kZXhlZGF0dHJzID0gYm1zX2FkZF9tZW1iZXJzKGluZGV4ZWRh dHRycywgc3VtbWFyaXplZGF0dHJzKTsKKwogCS8qIERvbid0IGxlYWsgdGhlIG9sZCB2YWx1 ZXMgb2YgdGhlc2UgYml0bWFwcywgaWYgYW55ICovCiAJcmVsYXRpb24tPnJkX2F0dHJzdmFs aWQgPSBmYWxzZTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7CkBAIC01NTI3 LDggKzU1MzUsOCBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBOVUxMOwog CWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIg PSBOVUxMOwotCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIpOwotCXJl bGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxMOworCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9pbmRleGVkYXR0cik7CisJcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyID0gTlVMTDsK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwogCXJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0ciA9IE5VTEw7CiAKQEAgLTU1NDMsNyArNTU1MSw3IEBAIHJlc3Rh cnQ6CiAJcmVsYXRpb24tPnJkX2tleWF0dHIgPSBibXNfY29weSh1aW5kZXhhdHRycyk7CiAJ cmVsYXRpb24tPnJkX3BrYXR0ciA9IGJtc19jb3B5KHBraW5kZXhhdHRycyk7CiAJcmVsYXRp b24tPnJkX2lkYXR0ciA9IGJtc19jb3B5KGlkaW5kZXhhdHRycyk7Ci0JcmVsYXRpb24tPnJk X2hvdGJsb2NraW5nYXR0ciA9IGJtc19jb3B5KGhvdGJsb2NraW5nYXR0cnMpOworCXJlbGF0 aW9uLT5yZF9pbmRleGVkYXR0ciA9IGJtc19jb3B5KGluZGV4ZWRhdHRycyk7CiAJcmVsYXRp b24tPnJkX3N1bW1hcml6ZWRhdHRyID0gYm1zX2NvcHkoc3VtbWFyaXplZGF0dHJzKTsKIAly ZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCA9IHRydWU7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CkBAIC01NTU3LDggKzU1NjUsOCBAQCByZXN0YXJ0OgogCQkJcmV0dXJuIHBr aW5kZXhhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVk6CiAJ CQlyZXR1cm4gaWRpbmRleGF0dHJzOwotCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0hPVF9C TE9DS0lORzoKLQkJCXJldHVybiBob3RibG9ja2luZ2F0dHJzOworCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4gaW5kZXhlZGF0dHJzOwogCQljYXNlIElO REVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQlyZXR1cm4gc3VtbWFyaXplZGF0dHJz OwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDUxNzY0NzhjMjk1Li4yZGJm YWQ5MjExMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMzg1LDExICszODUsMTAgQEAgZXh0 ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQsCiBleHRlcm4gdm9pZCBoZWFwX2ZpbmlzaF9zcGVjdWxhdGl2 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0 ZXJuIHZvaWQgaGVhcF9hYm9ydF9zcGVjdWxhdGl2ZShSZWxhdGlvbiByZWxhdGlvbiwgY29u c3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX3VwZGF0 ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLAotCQkJ CQkJCSBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCSBDb21tYW5kSWQgY2lkLCB1aW50MzIg b3B0aW9ucywKKwkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgdWlu dDMyIG9wdGlvbnMsCiAJCQkJCQkJIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwK LQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2Rl LAotCQkJCQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJ IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAor CQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywgY29uc3QgYm9v bCBob3RfYWxsb3dlZCk7CiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfbG9ja190dXBsZShSZWxh dGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlLAogCQkJCQkJCQkgQ29tbWFuZElkIGNp ZCwgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJ CQkJCQkJIGJvb2wgZm9sbG93X3VwZGF0ZXMsCkBAIC00NjQsNiArNDYzLDEyIEBAIGV4dGVy biB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFk LAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpOwogCisv KiBpbiBoZWFwL2hlYXBhbS5jICovCitleHRlcm4gYm9vbCBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywKKwkJCQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KTsKK2V4dGVybiBMb2Nr VHVwbGVNb2RlIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShSZWxhdGlvbiByZWxhdGlv biwKKwkJCQkJCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7 CisKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICovCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1 bV9yZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1z LCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3kpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK aW5kZXggZjJjMzY2OTZiY2EuLmE5Nzc4YjM1MjhkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK QEAgLTU4Niw2ICs1ODYsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJ CQkJCQkgYm9vbCB3YWl0LAogCQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJ CQkJCSBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKKwkJCQkJCQkJIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBk YXRlX2luZGV4ZXMpOwogCiAJLyogc2VlIHRhYmxlX3R1cGxlX2xvY2soKSBmb3IgcmVmZXJl bmNlIGFib3V0IHBhcmFtZXRlcnMgKi8KQEAgLTE1OTksMTIgKzE2MDAsMTIgQEAgdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJICAgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCiAJ CQkJICAgU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCiAJCQkJICAg Ym9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21v ZGUsCi0JCQkJICAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIFRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQogewogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX3Vw ZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywgc25hcHNo b3QsIGNyb3NzY2hlY2ssCi0JCQkJCQkJCQkJIHdhaXQsIHRtZmQsCi0JCQkJCQkJCQkJIGxv Y2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2tt b2RlLAorCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsK IH0KIAogLyoKQEAgLTIwODksNiArMjA5MCw3IEBAIGV4dGVybiB2b2lkIHNpbXBsZV90YWJs ZV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJ CQkgIFNuYXBzaG90IHNuYXBzaG90KTsKIGV4dGVybiB2b2lkIHNpbXBsZV90YWJsZV90dXBs ZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkJICBU dXBsZVRhYmxlU2xvdCAqc2xvdCwgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkgIGNv bnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJCQkJICBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKaW5kZXggMTc5OGU2MDI3ZDQuLjE2NjYxYmM2NmQ5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3Rh bXAuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImZtZ3Iu aCIKKyNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nr b3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgpAQCAtNjE1LDYgKzYxNiwxMCBAQCBleHRlcm4gVHVwbGVEZXNj IEV4ZWNDbGVhblR5cGVGcm9tVEwoTGlzdCAqdGFyZ2V0TGlzdCk7CiBleHRlcm4gVHVwbGVE ZXNjIEV4ZWNUeXBlRnJvbUV4cHJMaXN0KExpc3QgKmV4cHJMaXN0KTsKIGV4dGVybiB2b2lk IEV4ZWNUeXBlU2V0Q29sTmFtZXMoVHVwbGVEZXNjIHR5cGVJbmZvLCBMaXN0ICpuYW1lc0xp c3QpOwogZXh0ZXJuIHZvaWQgVXBkYXRlQ2hhbmdlZFBhcmFtU2V0KFBsYW5TdGF0ZSAqbm9k ZSwgQml0bWFwc2V0ICpuZXdjaGcpOworZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0NvbXBhcmVT bG90QXR0cnMoQml0bWFwc2V0ICphdHRycywKKwkJCQkJCQkJCSAgIFR1cGxlRGVzYyB0dXBk ZXNjLAorCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMsCisJCQkJCQkJCQkg ICBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKIHR5cGVkZWYgc3RydWN0IFR1cE91dHB1 dFN0YXRlCiB7CkBAIC04MTQsNSArODE5LDggQEAgZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4 ZWNMb29rdXBSZXN1bHRSZWxCeU9pZChNb2RpZnlUYWJsZVN0YXRlICpub2RlLAogCQkJCQkJ CQkJCQkgICBPaWQgcmVzdWx0b2lkLAogCQkJCQkJCQkJCQkgICBib29sIG1pc3Npbmdfb2ss CiAJCQkJCQkJCQkJCSAgIGJvb2wgdXBkYXRlX2NhY2hlKTsKK2V4dGVybiBCaXRtYXBzZXQg KkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCisJ CQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqb2xkX3R0cywKKwkJCQkJCQkJCQkJIFR1cGxl VGFibGVTbG90ICpuZXdfdHRzKTsKIAogI2VuZGlmCQkJCQkJCS8qIEVYRUNVVE9SX0ggICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3JlbC5oCmluZGV4IDg5YzE1OWIxMzNmLi4xN2RiZGJlNjQ1ZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK QEAgLTE2Miw3ICsxNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlCaXRt YXBzZXQgICpyZF9rZXlhdHRyOwkJLyogY29scyB0aGF0IGNhbiBiZSByZWYnZCBieSBmb3Jl aWduIGtleXMgKi8KIAlCaXRtYXBzZXQgICpyZF9wa2F0dHI7CQkvKiBjb2xzIGluY2x1ZGVk IGluIHByaW1hcnkga2V5ICovCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVk ZWQgaW4gcmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwotCUJpdG1hcHNldCAgKnJkX2hvdGJs b2NraW5nYXR0cjsgLyogY29scyBibG9ja2luZyBIT1QgdXBkYXRlICovCisJQml0bWFwc2V0 ICAqcmRfaW5kZXhlZGF0dHI7IC8qIGFsbCBjb2xzIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAq LwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6ZWRhdHRyOwkvKiBjb2xzIGluZGV4ZWQgYnkg c3VtbWFyaXppbmcgaW5kZXhlcyAqLwogCiAJUHVibGljYXRpb25EZXNjICpyZF9wdWJkZXNj OwkvKiBwdWJsaWNhdGlvbiBkZXNjcmlwdG9yLCBvciBOVUxMICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaAppbmRleCA4OWMyN2FhMTUyOS4uODk3ODgwOTE1NzYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaApAQCAtNzAsNyArNzAsNyBAQCB0eXBlZGVmIGVudW0gSW5kZXhBdHRyQml0bWFwS2lu ZAogCUlOREVYX0FUVFJfQklUTUFQX0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9QUklNQVJZ X0tFWSwKIAlJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVksCi0JSU5ERVhfQVRUUl9C SVRNQVBfSE9UX0JMT0NLSU5HLAorCUlOREVYX0FUVFJfQklUTUFQX0lOREVYRUQsCiAJSU5E RVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKIH0gSW5kZXhBdHRyQml0bWFwS2luZDsKIApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4cGVjdGVk L3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0CmluZGV4IGE2 YTRlOGRiOTk2Li4wN2VmNjdhMWViNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2V4cGVjdGVkL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQub3V0Cisr KyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dApAQCAtMTYsOCArMTYsOCBAQCBzdGVwIHdha2VpbnZhbDQ6 CiBzdGVwIGF0MjogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VpbnZhbDQ6IDwuLi4gY29t cGxldGVkPgogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9p bnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwotCVNFTEVDVCBGUk9NIGlu amVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VM RUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBsZV9oZWFwX3VwZGF0ZS1i ZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ3Np bXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRpbmcgLi4uPgogc3RlcCBn cmFudDE6IDwuLi4gY29tcGxldGVkPgogRVJST1I6ICB0dXBsZSBjb25jdXJyZW50bHkgZGVs ZXRlZApAQCAtNDIsOCArNDIsOCBAQCBzdGVwIG1rcmVsczQ6CiAJU0VMRUNUIEZST00gdmFj dGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwgMTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5V U0VECiAKIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50 c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmpl Y3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVm b3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1w bGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3Jh bnQxOiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9s YXRlcyB1bmlxdWUgY29uc3RyYWludCAicGdfY2xhc3Nfb2lkX2luZGV4IgpAQCAtNzEsOCAr NzEsOCBAQCBzdGVwIGF0MjogPC4uLiBjb21wbGV0ZWQ+CiBzdGVwIHdha2VpbnZhbDQ6IDwu Li4gY29tcGxldGVkPgogc3RlcCBhdDQ6IEFMVEVSIFRBQkxFIHZhY3Rlc3QuY2hpbGQ1MCBJ TkhFUklUIHZhY3Rlc3Qub3JpZzUwOwogc3RlcCB3YWtlZ3JhbnQ0OiAKLQlTRUxFQ1QgRlJP TSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ3NpbXBs ZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3Bv aW50c193YWtldXAoJ3NpbXBsZV9oZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7CiAgPHdhaXRp bmcgLi4uPgogc3RlcCBncmFudDE6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3YWtlZ3JhbnQ0 OiA8Li4uIGNvbXBsZXRlZD4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9zcGVjcy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5l ZC5zcGVjCmluZGV4IGUzYTQyOTViZDEyLi5mZWY5YWM4OTVhMSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1w cnVuZWQuc3BlYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3Bl Y3Mvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5zcGVjCkBAIC0xMDMsNyArMTAzLDcgQEAgc2Vz c2lvbiBzMQogc2V0dXAJewogCVNFVCBkZWJ1Z19kaXNjYXJkX2NhY2hlcyA9IDA7CiAJU0VM RUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19zZXRfbG9jYWwoKTsKLQlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX2F0dGFjaCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicsICd3YWl0 Jyk7CisJU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3NpbXBsZV9oZWFw X3VwZGF0ZS1iZWZvcmUtcGluJywgJ3dhaXQnKTsKIH0KIHN0ZXAgY2FjaGVmaWxsMQl7IFNF TEVDVCBGUk9NIHZhY3Rlc3QucmVsb2lkX2NhdGNhY2hlX3NldCgndmFjdGVzdC5vcmlnNTAn KTsgfQogc3RlcCBncmFudDEJeyBHUkFOVCBTRUxFQ1QgT04gdmFjdGVzdC5vcmlnNTAgVE8g UFVCTElDOyB9CkBAIC0xNDAsOCArMTQwLDggQEAgc3RlcCBta3JlbHM0CXsKIAlTRUxFQ1Qg RlJPTSB2YWN0ZXN0Lm1rcmVscygnaW50cnVkZXInLCAxLCAxMDApOyAgLS0gcmVwb3B1bGF0 ZSBMUF9VTlVTRUQKIH0KIHN0ZXAgd2FrZWdyYW50NAl7Ci0JU0VMRUNUIEZST00gaW5qZWN0 aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1Qg RlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicp OworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91 cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2Fr ZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogfQogc3RlcCBhdDQJeyBB TFRFUiBUQUJMRSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsgfQog c3RlcCB3YWtlaW52YWw0CXsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n ZW5lcmF0ZWRfdmlydHVhbC5vdXQKaW5kZXggMDFlZTI5ZmVlMTAuLmE3YTI0NjNlNTRkIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFs Lm91dApAQCAtMjg3LDcgKzI4Nyw3IEBAIERFVEFJTDogIENvbHVtbiAiYiIgaXMgYSBnZW5l cmF0ZWQgY29sdW1uLgogSU5TRVJUIElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQp LCAoOSwgREVGQVVMVCk7ICAtLSBlcnJvcgogRVJST1I6ICBjYW5ub3QgaW5zZXJ0IGEgbm9u LURFRkFVTFQgdmFsdWUgaW50byBjb2x1bW4gImIiCiBERVRBSUw6ICBDb2x1bW4gImIiIGlz IGEgZ2VuZXJhdGVkIGNvbHVtbi4KLVNFTEVDVCAqIEZST00gZ3Rlc3QxdjsKK1NFTEVDVCAq IEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogIGEgfCBiICAKIC0tLSstLS0tCiAgMyB8ICA2 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CmluZGV4IDhmY2IzM2Fj ODFhLi4wMGViZTMwNTg3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC90cmlnZ2Vycy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90cmlnZ2Vy cy5vdXQKQEAgLTk1OSwxNiArOTU5LDI0IEBAIE5PVElDRTogIG1haW5fdmlldyBCRUZPUkUg VVBEQVRFIFNUQVRFTUVOVCAoYmVmb3JlX3ZpZXdfdXBkX3N0bXQpCiBOT1RJQ0U6ICBtYWlu X3ZpZXcgQUZURVIgVVBEQVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld191cGRfc3RtdCkKIFVQ REFURSAwCiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdnZXIKLURFTEVURSBGUk9N IG1haW5fdmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcg V0hFUkUgYSA9IDIwIEFORCBiID0gMzE7CiBOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERF TEVURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92 aWV3IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCi1OT1RJQ0U6ICBP TEQ6ICgyMSwxMCkKLU5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cg KGluc3RlYWRfb2ZfZGVsKQogTk9USUNFOiAgT0xEOiAoMjAsMzEpCitOT1RJQ0U6ICBtYWlu X3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0ZXJfdmlld19kZWxfc3RtdCkKK0RF TEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFORCBiID0gMTA7 CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBTVEFURU1FTlQgKGJlZm9yZV92 aWV3X2RlbF9zdG10KQorTk9USUNFOiAgbWFpbl92aWV3IElOU1RFQUQgT0YgREVMRVRFIFJP VyAoaW5zdGVhZF9vZl9kZWwpCitOT1RJQ0U6ICBPTEQ6ICgyMSwxMCkKK05PVElDRTogIG1h aW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChhZnRlcl92aWV3X2RlbF9zdG10KQor REVMRVRFIDEKK0RFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0gMjEgQU5EIGIgPSAz MjsKK05PVElDRTogIG1haW5fdmlldyBCRUZPUkUgREVMRVRFIFNUQVRFTUVOVCAoYmVmb3Jl X3ZpZXdfZGVsX3N0bXQpCiBOT1RJQ0U6ICBtYWluX3ZpZXcgSU5TVEVBRCBPRiBERUxFVEUg Uk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIxLDMyKQogTk9USUNFOiAg bWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVyX3ZpZXdfZGVsX3N0bXQp Ci1ERUxFVEUgMworREVMRVRFIDEKIERFTEVURSBGUk9NIG1haW5fdmlldyBXSEVSRSBhID0g MzEgUkVUVVJOSU5HIGEsIGI7CiBOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVURSBT VEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3IElO U1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RzZWFyY2gub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC90c2VhcmNoLm91dAppbmRleCA1YjdjMjEyM2YzNy4uNmRjMTkzZjAyZDYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dApAQCAtMjQ5Myw3ICsyNDkz LDggQEAgU0VMRUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBib29LcycpOwogICdza3kn IHwgJ2Jvb2snCiAoMSByb3cpCiAKLS0tdHJpZ2dlcgorLS0gdHN2ZWN0b3JfdXBkYXRlX3Ry aWdnZXIoKSB1c2VzIGhlYXBfbW9kaWZ5X3R1cGxlKCkgdG8gc2V0IGNvbHVtbiAnYScKKy0t IHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgZXhlY3V0b3IncyBTRVQtY2xhdXNlIHRyYWNr aW5nLgogQ1JFQVRFIFRSSUdHRVIgdHN2ZWN0b3J1cGRhdGUKIEJFRk9SRSBVUERBVEUgT1Ig SU5TRVJUIE9OIHRlc3RfdHN2ZWN0b3IKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVS RSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcihhLCAncGdfY2F0YWxvZy5lbmdsaXNoJywgdCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3 cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQK aW5kZXggN2IwMGM3NDI3NzYuLmNkNmU3MWFjNDkwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zNzIsMTUgKzM3MiwxNSBA QCBJTlNFUlQgSU5UTyByd192aWV3MTYgKGEsIGIpIFZBTFVFUyAoMywgJ1JvdyAzJyk7IC0t IHNob3VsZCBiZSBPSwogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYT0zLCBhYT0tMyBXSEVSRSBh PTM7IC0tIHNob3VsZCBmYWlsCiBFUlJPUjogIG11bHRpcGxlIGFzc2lnbm1lbnRzIHRvIHNh bWUgY29sdW1uICJhIgogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9LTMgV0hFUkUgYT0zOyAt LSBzaG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7CitTRUxFQ1QgKiBGUk9N IGJhc2VfdGJsIE9SREVSIEJZIGE7CiAgYSAgfCAgIGIgICAgCiAtLS0tKy0tLS0tLS0tCisg LTMgfCBSb3cgMwogIC0yIHwgUm93IC0yCiAgLTEgfCBSb3cgLTEKICAgMCB8IFJvdyAwCiAg IDEgfCBSb3cgMQogICAyIHwgUm93IDIKLSAtMyB8IFJvdyAzCiAoNiByb3dzKQogCiBERUxF VEUgRlJPTSByd192aWV3MTYgV0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9nZW5lcmF0ZWRfdmlydHVhbC5zcWwKaW5kZXggMGNiMTRlYjBl MzYuLmJjOTE3NDJhNDkyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nZW5l cmF0ZWRfdmlydHVhbC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsCkBAIC0xMjcsNyArMTI3LDcgQEAgQUxURVIgVklFVyBndGVzdDF2IEFM VEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEwMDsKIElOU0VSVCBJTlRPIGd0ZXN0MXYgVkFM VUVTICg4LCBERUZBVUxUKTsgIC0tIGVycm9yCiBJTlNFUlQgSU5UTyBndGVzdDF2IFZBTFVF UyAoOCwgREVGQVVMVCksICg5LCBERUZBVUxUKTsgIC0tIGVycm9yCiAKLVNFTEVDVCAqIEZS T00gZ3Rlc3QxdjsKK1NFTEVDVCAqIEZST00gZ3Rlc3QxdiBPUkRFUiBCWSBhOwogREVMRVRF IEZST00gZ3Rlc3QxdiBXSEVSRSBhID49IDU7CiBEUk9QIFZJRVcgZ3Rlc3QxdjsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCmluZGV4IDIyODVlOTAxMTBlLi4xOWMyNTcyMjAx ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbApAQCAtNjYwLDcgKzY2MCw5IEBA IFVQREFURSBtYWluX3ZpZXcgU0VUIGIgPSAzMiBXSEVSRSBhID0gMjEgQU5EIGIgPSAzMSBS RVRVUk5JTkcgYSwgYjsKIFVQREFURSBtYWluX3ZpZXcgU0VUIGIgPSAwIFdIRVJFIGZhbHNl OwogCiAtLSBEZWxldGUgZnJvbSB2aWV3IHVzaW5nIHRyaWdnZXIKLURFTEVURSBGUk9NIG1h aW5fdmlldyBXSEVSRSBhIElOICgyMCwyMSk7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hF UkUgYSA9IDIwIEFORCBiID0gMzE7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9 IDIxIEFORCBiID0gMTA7CitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDIxIEFO RCBiID0gMzI7CiBERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklO RyBhLCBiOwogCiBcc2V0IFFVSUVUIHRydWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RzZWFyY2guc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwK aW5kZXggOGIzZDcwMGY1N2MuLjA5NDE4MWU3NzY0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC90c2VhcmNoLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2Vh cmNoLnNxbApAQCAtNzYwLDcgKzc2MCw4IEBAIFNFTEVDVCB0b190c3ZlY3RvcignU0tJRVMg TXkgYm9vS3MnKTsKIFNFTEVDVCBwbGFpbnRvX3RzcXVlcnkoJ1NLSUVTIE15IGJvb0tzJyk7 CiBTRUxFQ1QgdG9fdHNxdWVyeSgnU0tJRVMgJiBNeSB8IGJvb0tzJyk7CiAKLS0tdHJpZ2dl cgorLS0gdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSB1c2VzIGhlYXBfbW9kaWZ5X3R1cGxl KCkgdG8gc2V0IGNvbHVtbiAnYScKKy0tIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgZXhl Y3V0b3IncyBTRVQtY2xhdXNlIHRyYWNraW5nLgogQ1JFQVRFIFRSSUdHRVIgdHN2ZWN0b3J1 cGRhdGUKIEJFRk9SRSBVUERBVEUgT1IgSU5TRVJUIE9OIHRlc3RfdHN2ZWN0b3IKIEZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0c3ZlY3Rvcl91cGRhdGVfdHJpZ2dlcihhLCAn cGdfY2F0YWxvZy5lbmdsaXNoJywgdCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRh YmxlX3ZpZXdzLnNxbAppbmRleCA0YTYwMTI2ZWM5MC4uMDE3MDA0MGMwOTggMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbApAQCAtMTI1LDcgKzEyNSw3 IEBAIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiBWQUxVRVMgKDMsICdSb3cgMycsIDMpOyAtLSBz aG91bGQgZmFpbAogSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxVRVMgKDMsICdS b3cgMycpOyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VUIGE9MywgYWE9 LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgZmFpbAogVVBEQVRFIHJ3X3ZpZXcxNiBTRVQgYWE9 LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgYmUgT0sKLVNFTEVDVCAqIEZST00gYmFzZV90Ymw7 CitTRUxFQ1QgKiBGUk9NIGJhc2VfdGJsIE9SREVSIEJZIGE7CiBERUxFVEUgRlJPTSByd192 aWV3MTYgV0hFUkUgYT0tMzsgLS0gc2hvdWxkIGJlIE9LCiAtLSBSZWFkLW9ubHkgdmlld3MK IElOU0VSVCBJTlRPIHJvX3ZpZXcxNyBWQUxVRVMgKDMsICdST1cgMycpOwotLSAKMi41MC4x Cgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA3Yzc5MWY0YzY3NDIwZjNmODNiYTUwNDg1MTE2OTUyMjgwNDgwNzEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDMv OV0gQWRkIHRoZSBIT1QtaW5kZXhlZCBvbi1kaXNrIGZvcm1hdDogaW5saW5lIGF0dHIKIGJp dG1hcCBhbmQgc3R1YnMKCkRlZmluZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBhIEhP VC1pbmRleGVkIHVwZGF0ZSBhbmQgaXRzIGxhdGVyCnBydW5lL2NvbGxhcHNlIHByb2R1Y2Us IGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgb3Igd3JpdGVzIGl0OgoKLSBIRUFQX0lO REVYRURfVVBEQVRFRCAoaHR1cF9kZXRhaWxzLmgpLCB0aGUgdF9pbmZvbWFzazIgYml0IG1h cmtpbmcgYQogIGhlYXAtb25seSB0dXBsZSB3aG9zZSBwcm9kdWNpbmcgVVBEQVRFIGFsc28g Y2hhbmdlZCBhbiBpbmRleGVkIGNvbHVtbjsgYW5kCi0gYWNjZXNzL2hvdF9pbmRleGVkLmgs IHRoZSBpbmxpbmUgZml4ZWQtc2l6ZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgc3RvcmVkIGlu CiAgdGhlIHRhaWwgb2Ygc3VjaCBhIHR1cGxlLCBwbHVzIHRoZSB4aWQtZnJlZSAiY29sbGFw c2Utc3Vydml2b3Igc3R1YiIgZm9ybWF0CiAgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHdpdGgg bmF0dHMgPT0gMCwgYSBmb3J3YXJkIGxpbmssIGFuZCB0aGUgc2VnbWVudCdzCiAgYml0bWFw KSBhbmQgdGhlIGFjY2Vzc29ycyBib3RoIHNoYXJlLgoKUkVBRE1FLkhPVC1JTkRFWEVEIGlu dHJvZHVjZXMgdGhlIGRlc2lnbiBhbmQgdGhlIHJlbGF4ZWQgY2xhc3NpYy1IT1QKaW52YXJp YW50OyBsYXRlciBjb21taXRzIGRvY3VtZW50IHRoZSBlbGlnaWJpbGl0eSwgd3JpdGUsIHJl YWQsIGFuZApwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgaW4gdGhlaXIgb3duIHNlY3Rpb25z LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3Jl ZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAgNTYgKysrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaCAgICAgICAgICAgfCAxOTggKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgg ICAgICAgICAgfCAgIDggKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNGI3MDFlNDI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTAsMCArMSw1NiBAQAorSE9ULWluZGV4ZWQg dXBkYXRlcyAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSwgIkhPVC9TSVUiKQorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDbGFz c2ljIEhPVCAoc2VlIFJFQURNRS5IT1QpIGtlZXBzIGFuIFVQREFURSBvZmYgdGhlIGluZGV4 ZXMgb25seSB3aGVuIG5vCitpbmRleGVkIGNvbHVtbiBjaGFuZ2VkOiB0aGUgbmV3IHR1cGxl IGlzIGEgaGVhcC1vbmx5IHR1cGxlIGFwcGVuZGVkIHRvIHRoZQorY2hhaW4sIGFuZCBldmVy eSBpbmRleCBlbnRyeSBjb250aW51ZXMgdG8gcmVzb2x2ZSwgdmlhIHRoZSBzYW1lLXBhZ2Ug dF9jdGlkCitjaGFpbiwgdG8gYSB0dXBsZSB3aG9zZSBpbmRleGVkIHZhbHVlcyBzdGlsbCBl cXVhbCB0aGUgZW50cnkncyBrZXkuCisKK0hPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXgg VXBkYXRlLCBTSVUpIHJlbGF4ZXMgdGhhdCB0bzogYW4gVVBEQVRFIG1heQorY2hhbmdlIGlu ZGV4ZWQgY29sdW1ucyBhbmQgc3RpbGwgYmUgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwKK3Byb3ZpZGVkIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBpbnNlcnRlZCBvbmx5 IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5CithdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5n ZWQuICBUaGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGRpZCBub3QgY2hhbmdlIGFyZQor bGVmdCB1bnRvdWNoZWQsIHdoaWNoIGlzIHdoZXJlIHRoZSB3cml0ZS1hbXBsaWZpY2F0aW9u IHNhdmluZyBjb21lcyBmcm9tLgorCitUaGUgcHJpY2UgaXMgdGhhdCBhIGNoYWluIG1heSBu b3cgY29udGFpbiB0dXBsZXMgd2l0aCBkaWZmZXJlbnQgaW5kZXgga2V5cywgc28KK2FuIGlu ZGV4IGVudHJ5IGZvciBhbiBvbGQga2V5IGNhbiBjaGFpbi1yZXNvbHZlIHRvIGEgbGl2ZSB0 dXBsZSB3aG9zZSBjdXJyZW50CitrZXkgZGlmZmVycy4gIFN1Y2ggYW4gZW50cnkgaXMgU1RB TEUuICBUaGUgcmVhZCBzaWRlIGRldGVjdHMgYW5kIGRyb3BzIHN0YWxlCitlbnRyaWVzIGJ5 IHRlc3RpbmcgdGhlIGhlYXAncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgYWdhaW5zdCB0 aGUgaW5kZXgncwora2V5IGNvbHVtbnMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVs aWdpYmlsaXR5IHJ1bGVzLCB0aGUgd3JpdGUgcGF0aCwgdGhlIG9uLWNoYWluCityZXByZXNl bnRhdGlvbiwgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCwgcHJ1bmUvY29sbGFwc2Us IHZhY3V1bSByZWNsYW1hdGlvbiwKK3JlY292ZXJ5LCB0aGUgbG9naWNhbC1yZXBsaWNhdGlv biBhcHBseSBnYXRpbmcsIGFuZCB0aGUgc3RhdGlzdGljcy4KKworCitUaGUgY2xhc3NpYy1I T1QgaW52YXJpYW50IHdlIGFyZSByZWxheGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsYXNzaWMgSE9UIHJlbGllcyBvbiB0d28gcHJvcGVy dGllczoKKworICAoYSkgZXZlcnkgbGl2ZSBpbmRleCBlbnRyeSByZXNvbHZlcywgdmlhIGEg c2FtZS1wYWdlIHRfY3RpZCBjaGFpbiwgdG8gdGhlCisgICAgICBjaGFpbidzIHJvb3QgbGlu ZSBwb2ludGVyOyBhbmQKKworICAoYikgdGhlIGluZGV4ZWQgdmFsdWVzIG9mIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBjaGFpbiBlcXVhbCB0aGUga2V5IG9mIGV2ZXJ5CisgICAgICBpbmRleCBl bnRyeSB0aGF0IHJlYWNoZXMgaXQuCisKK0hPVC1pbmRleGVkIGtlZXBzIChhKSBidXQgYnJl YWtzIChiKTogYWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlIGNoYWluCitob2xkcyB0 dXBsZXMgd2l0aCBkaWZmZXJlbnQga2V5cywgYW5kIGEgbmV3IGluZGV4IGVudHJ5IGlzIHBs YW50ZWQgdGhhdCBwb2ludHMKK2F0IHRoZSAqc3BlY2lmaWMqIGhlYXAtb25seSB0dXBsZSB3 aG9zZSBrZXkgaXQgbWF0Y2hlcyAtLSBub3QgbmVjZXNzYXJpbHkgdGhlCityb290LgorCisK K1RoZSBIT1QtaW5kZXhlZCBpbnZhcmlhbnQgKHRoZSBuZXcgY29udHJhY3QpCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFuIGluZGV4IGVu dHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHR1cGxlIHZlcnNpb24gd2hvc2UgaW5kZXhl ZCBrZXkgaXQKKyAgbWF0Y2hlZCBhdCBpbnNlcnRpb24gdGltZS4gIEEgY2hhaW4gd2FsayB0 aGF0IHJlYWNoZXMgYSBsaXZlIHR1cGxlIGJ5CisgIGNyb3NzaW5nIGEgSE9ULWluZGV4ZWQg aG9wICphZnRlciogdGhlIGVudHJ5J3Mgb3duIHRhcmdldCBtYXkgYmUgc3RhbGU6IGlmCisg IHRoZSB1bmlvbiBvZiB0aG9zZSBjcm9zc2VkIGhvcHMnIG1vZGlmaWVkIGF0dHJpYnV0ZXMg b3ZlcmxhcHMgdGhlIGluZGV4J3MKKyAga2V5IGNvbHVtbnMsIHRoZSBlbnRyeSBpcyBzdGFs ZSBhbmQgdGhlIHR1cGxlIGlzIGRyb3BwZWQgZnJvbSB0aGF0IHNjYW4uCisgIFRoZSByb3cg aXMKKyAgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IHRoYXQgdGhlIHNhbWUgdXBk YXRlIGluc2VydGVkIGZvciB0aGUgbmV3CisgIGtleS4KKworVGhpcyBpcyB3aGF0IG1ha2Vz IGRyb3BwaW5nIGEgc3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwor cmVhY2hhYmxlIHRocm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRl eC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjI5NWY1ODk1MzVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCArMSwxOTggQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgKKyAqCSAgSW5saW5lLXRyYWls aW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJ VSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBsZSBwcm9kdWNlZCBieSBhIEhP VC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0CisgKiBpbiB0 X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0ZXIgaXRzIG5vcm1hbCBhdHRy aWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAgcmVjb3JkaW5nIHdoaWNoIGhl YXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4gaG9wCisgKiAocmVsYXRpdmUg dG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0dG51bSAtIDEpIGNvcnJlc3Bv bmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisgKgorICogVGhlIGJpdG1hcCBp cyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93 bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0IHdhcyB3cml0dGVuIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0dXBsZTsgcHJlc2VydmVkIHNl cGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0cyBsZW5ndGggaXMgbm90Cisg KiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5lIHBvaW50ZXIncyBpdGVtIGFu ZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwgcGFzdCB0aGUKKyAqIGF0dHJp YnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUgdHVwbGUgc3RvcCBhdCBuYXR0 cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNhdXNlIEFERCBDT0xVTU4gcmFp c2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4aXN0aW5nCisg KiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdob3NlIGJpdG1hcHMgd2VyZSBz aXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0dHMgdGhhbiB0aGUgcmVsYXRp b24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6ZSBhbmQKKyAqIGxvY2F0ZSBh IHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9XTiB3cml0ZS10aW1lIG5hdHRz CisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBuZXZlciBmcm9tIHRoZSByZWxh dGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUg YmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlcgorICogYml0 bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9mIGEgbGFyZ2VyIGFjY3VtdWxh dG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gKKyNkZWZpbmUgSE9UX0lOREVY RURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorCisvKgorICogTnVt YmVyIG9mIGJ5dGVzIGluIHRoZSB0cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAgZm9y IGEgcmVsYXRpb24gd2l0aAorICogbmF0dHMgdXNlciBhdHRyaWJ1dGVzIChvbmUgYml0IHBl ciBhdHRyaWJ1dGUsIGF0dG51bSAtIDEpLgorICovCitzdGF0aWMgaW5saW5lIFNpemUKK0hv dEluZGV4ZWRCaXRtYXBCeXRlcyhpbnQgbmF0dHMpCit7CisJQXNzZXJ0KG5hdHRzID49IDAp OworCXJldHVybiAoU2l6ZSkgKChuYXR0cyArIDcpIC8gOCk7Cit9CisKKy8qCisgKiBSZWFk LW9ubHkgcG9pbnRlciB0byB0aGUgdHJhaWxpbmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9m IGEgSE9ULWluZGV4ZWQKKyAqIHR1cGxlLiAgaXRlbV9sZW4gaXMgSXRlbUlkR2V0TGVuZ3Ro KCkgb2YgdGhlIHR1cGxlJ3MgbGluZSBwb2ludGVyOyBuYXR0cyBpcworICogdGhlIHJlbGF0 aW9uJ3MgbnVtYmVyIG9mIGF0dHJpYnV0ZXMuICBUaGUgY2FsbGVyIG11c3QgaGF2ZSB2ZXJp ZmllZCB0aGF0CisgKiB0aGUgdHVwbGUgaGFzIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldC4K KyAqLworc3RhdGljIGlubGluZSBjb25zdCB1aW50OCAqCitIb3RJbmRleGVkR2V0TW9kaWZp ZWRCaXRtYXAoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAqaHR1cCwKKwkJCQkJCQlTaXpl IGl0ZW1fbGVuLCBpbnQgbmF0dHMpCit7CisJcmV0dXJuIChjb25zdCB1aW50OCAqKSAoKGNv bnN0IGNoYXIgKikgaHR1cCArCisJCQkJCQkJaXRlbV9sZW4gLSBIb3RJbmRleGVkQml0bWFw Qnl0ZXMobmF0dHMpKTsKK30KKworLyogV3JpdGFibGUgdmFyaWFudCwgZm9yIE9SLWluZyB0 aGUgdW5pb24gb250byBhIHN1cnZpdmluZyByZWRpcmVjdCB0YXJnZXQuICovCitzdGF0aWMg aW5saW5lIHVpbnQ4ICoKK0hvdEluZGV4ZWRHZXRNb2RpZmllZEJpdG1hcFJXKEhlYXBUdXBs ZUhlYWRlckRhdGEgKmh0dXAsCisJCQkJCQkJICBTaXplIGl0ZW1fbGVuLCBpbnQgbmF0dHMp Cit7CisJcmV0dXJuICh1aW50OCAqKSAoKGNoYXIgKikgaHR1cCArCisJCQkJCSAgaXRlbV9s ZW4gLSBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMpKTsKK30KKworLyogVHJ1ZSBpZiB1 c2VyIGF0dHJpYnV0ZSBhdHRudW0gKDEtYmFzZWQpIGlzIHNldCBpbiB0aGUgYml0bWFwLiAq Lworc3RhdGljIGlubGluZSBib29sCitIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQoY29uc3Qg dWludDggKmJpdG1hcCwgQXR0ck51bWJlciBhdHRudW0pCit7CisJaW50CQkJYml0ID0gYXR0 bnVtIC0gMTsKKworCUFzc2VydChhdHRudW0gPj0gMSk7CisJcmV0dXJuIChiaXRtYXBbYml0 IC8gOF0gJiAoMSA8PCAoYml0ICUgOCkpKSAhPSAwOworfQorCisvKiBTZXQgdXNlciBhdHRy aWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpbiB0aGUgYml0bWFwLiAqLworc3RhdGljIGlubGlu ZSB2b2lkCitIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKHVpbnQ4ICpiaXRtYXAsIEF0dHJO dW1iZXIgYXR0bnVtKQoreworCWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlBc3NlcnQo YXR0bnVtID49IDEpOworCWJpdG1hcFtiaXQgLyA4XSB8PSAodWludDgpICgxIDw8IChiaXQg JSA4KSk7Cit9CisKKy8qIE9SIHRoZSBmaXJzdCBuYnl0ZXMgb2Ygc3JjIGludG8gZHN0LiAg ZHN0IG11c3QgYmUgYXQgbGVhc3QgbmJ5dGVzIGxvbmc7IGl0CisgKiBtYXkgYmUgbG9uZ2Vy IChzaXplZCBmb3IgYSBsYXJnZXIgbmF0dHMpIC0tIGJpdCBwb3NpdGlvbnMgYXJlIGF0dHJp YnV0ZQorICogYmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIE9SLWluZyBv bmx5IHNyYydzIGJ5dGVzIGlzIGNvcnJlY3QuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0hv dEluZGV4ZWRCaXRtYXBVbmlvbih1aW50OCAqZHN0LCBjb25zdCB1aW50OCAqc3JjLCBpbnQg c3JjX25hdHRzKQoreworCVNpemUJCW5ieXRlcyA9IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhz cmNfbmF0dHMpOworCisJZm9yIChTaXplIGkgPSAwOyBpIDwgbmJ5dGVzOyBpKyspCisJCWRz dFtpXSB8PSBzcmNbaV07Cit9CisKKy8qCisgKiBJcyBldmVyeSBiaXQgc2V0IGluIHN1YiBh bHNvIHNldCBpbiBzdXBlcj8gIHN1YiBpcyBzaXplZCBmb3Igc3ViX25hdHRzOworICogc3Vw ZXIgbXVzdCBiZSBhdCBsZWFzdCB0aGF0IGxvbmcuICBVc2VkIGJ5IHBydW5lIHRvIGRlY2lk ZSBhIGNvbGxhcHNlCisgKiBzdXJ2aXZvciBpcyByZWNsYWltYWJsZTogd2hlbiB0aGUgYXR0 cmlidXRlcyBhIGRlYWQgbWVtYmVyIGNoYW5nZWQgYXJlIGFsbAorICogY2hhbmdlZCBhZ2Fp biBieSBsYXRlciBob3BzLCBldmVyeSBpbmRleCBlbnRyeSBwb2ludGluZyBhdCB0aGF0IG1l bWJlciBpcworICogc3VwZXJzZWRlZCAoc3RhbGUpLCBzbyBpdCBjYXJyaWVzIG5vIGxpdmUg ZW50cnkuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEJpdG1hcElzU3Vi c2V0KGNvbnN0IHVpbnQ4ICpzdWIsIGNvbnN0IHVpbnQ4ICpzdXBlciwgaW50IHN1Yl9uYXR0 cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoc3ViX25hdHRz KTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5ieXRlczsgaSsrKQorCQlpZiAoKHN1Yltp XSAmIH5zdXBlcltpXSkgIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gdHJ1ZTsK K30KKworLyoKKyAqIFN0dWIgbGluZSBwb2ludGVycyAoY29sbGFwc2Ugc3Vydml2b3JzKS4K KyAqCisgKiBXaGVuIHBydW5lIGNvbGxhcHNlcyBhIGRlYWQgSE9ULWluZGV4ZWQgY2hhaW4g aXQgY2Fubm90IGtlZXAgdGhlIGRlYWQga2V5CisgKiB0dXBsZXMgYXMgbGl2ZSBkYXRhLWJl YXJpbmcgdHVwbGVzICh0aGVpciBYSURzIHdvdWxkIGhvbGQgYmFjaworICogcmVsZnJvemVu eGlkKS4gIEVhY2ggcHJlc2VydmVkIGRlYWQga2V5IHR1cGxlIGlzIGluc3RlYWQgY29udmVy dGVkIHRvIGFuCisgKiB4aWQtZnJlZSAic3R1YiI6IGFuIExQX05PUk1BTCBpdGVtIHdob3Nl IEhlYXBUdXBsZUhlYWRlciBpcyBmcm96ZW4gYW5kCisgKiBtYXJrZWQgbm90LWEtcmVhbC10 dXBsZSAoSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0LCBIZWFwVHVwbGVIZWFkZXJHZXROYXR0 cworICogPT0gMCksIHdob3NlIHRfY3RpZC5vZmZudW0gZm9yd2FyZHMgdG8gdGhlIG5leHQg a2V5IHR1cGxlIG9uIHRoZSBwYWdlLCBhbmQKKyAqIHdob3NlIHBheWxvYWQgaXMgdGhlIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcCBmb3IgdGhlIHNlZ21lbnQgaXQgcmVwcmVzZW50cyAtLQor ICogbG9jYXRlZCwgbGlrZSBhIGxpdmUgdHVwbGUncyBpbmxpbmUgYml0bWFwLCBpbiB0aGUg ZmluYWwKKyAqIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YgdGhlIGl0 ZW0sIHNvIHRoZSBzYW1lIGFjY2Vzc29ycyB3b3JrCisgKiBmb3IgYm90aC4gIEJlY2F1c2Ug dGhlIG5hdHRzIGZpZWxkIGlzIG92ZXJ3cml0dGVuIHdpdGggdGhlIDAgc2VudGluZWwsIHRo ZQorICogc3R1YidzIHdyaXRlLXRpbWUgbmF0dHMgKG5lZWRlZCB0byBzaXplL2xvY2F0ZSB0 aGF0IGJpdG1hcCkgaXMgcHJlc2VydmVkIGluCisgKiB0aGUgb3RoZXJ3aXNlLXVudXNlZCBi bG9jay1udW1iZXIgaGFsZiBvZiB0X2N0aWQ7IEhvdEluZGV4ZWRTdHViR2V0Rm9yd2FyZAor ICogcmVhZHMgb25seSB0aGUgb2Zmc2V0IGhhbGYuCisgKgorICogQSBzdHViIGlzIHNpZ25h dHVyZS1za2lwcGVkIChub3QgdmlzaWJpbGl0eS1za2lwcGVkKSBieSBldmVyeSBjb25zdW1l ciB0aGF0CisgKiB3YWxrcyBMUF9OT1JNQUwgaXRlbXMuCisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorSG90SW5kZXhlZEhlYWRlcklzU3R1Yihjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRh ICp0dXApCit7CisJcmV0dXJuICh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQ REFURUQpICE9IDAgJiYKKwkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKSA9PSAwOwor fQorCisvKiBPZmZzZXQgb2YgdGhlIG5leHQga2V5IHR1cGxlIHRoaXMgc3R1YiBmb3J3YXJk cyB0byAoc2FtZSBwYWdlKS4gKi8KK3N0YXRpYyBpbmxpbmUgT2Zmc2V0TnVtYmVyCitIb3RJ bmRleGVkU3R1YkdldEZvcndhcmQoY29uc3QgSGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwKQor eworCXJldHVybiBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlck5vQ2hlY2soJnR1cC0+dF9j dGlkKTsKK30KKworLyoKKyAqIEJpdG1hcCBzaXppbmcgYWNyb3NzIHRoZSByZWxhdGlvbidz IGxpZmV0aW1lLgorICoKKyAqIFRoZSB0cmFpbGluZyBiaXRtYXAgaXMgY2VpbChuYXR0cyAv IDgpIGJ5dGVzLCB3aGVyZSBuYXR0cyBpcyB0aGUgcmVsYXRpb24ncworICogYXR0cmlidXRl IGNvdW50ICphdCB0aGUgdGltZSB0aGUgdHVwbGUgd2FzIHdyaXR0ZW4qLiAgQUREIENPTFVN TiByYWlzZXMgdGhlCisgKiByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4 aXN0aW5nIHR1cGxlcywgc28gYSBjaGFpbiBjYW4gaG9sZAorICogdHVwbGVzIHdob3NlIGJp dG1hcHMgd2VyZSBzaXplZCBmb3IgZGlmZmVyZW50IChzbWFsbGVyKSBuYXR0cyB0aGFuIHRo ZQorICogcmVsYXRpb24gaGFzIG5vdy4gIEV2ZXJ5IGNvbnN1bWVyIG11c3QgdGhlcmVmb3Jl IHNpemUgYW5kIGxvY2F0ZSBhIHR1cGxlJ3MKKyAqIGJpdG1hcCBmcm9tIHRoYXQgdHVwbGUn cyBvd24gd3JpdGUtdGltZSBuYXR0cywgbmV2ZXIgZnJvbSB0aGUgcmVsYXRpb24ncworICog Y3VycmVudCBuYXR0cy4KKyAqCisgKiBGb3IgYSBsaXZlIEhPVC1pbmRleGVkIHR1cGxlIHRo ZSB3cml0ZS10aW1lIG5hdHRzIGlzIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzCisgKiAoYSBm cmVzaGx5IGZvcm1lZCBVUERBVEUgdHVwbGUgc3RvcmVzIHRoZSBmdWxsIHJlbGF0aW9uIG5h dHRzLCB3aGljaCBpcyB3aGF0CisgKiBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUgc2l6 ZWQgdGhlIGJpdG1hcCB3aXRoKS4gIEEgc3R1YiBvdmVyd3JpdGVzIG5hdHRzCisgKiB3aXRo IDAgYXMgaXRzIHNlbnRpbmVsLCBzbyBpdCBwcmVzZXJ2ZXMgaXRzIHdyaXRlLXRpbWUgbmF0 dHMgaW4gdGhlIHVudXNlZAorICogYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlkIGluc3Rl YWQgKHRoZSBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZAorICogbGluaykuCisgKi8K K3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFN0dWJTZXRCaXRtYXBOYXR0cyhIZWFw VHVwbGVIZWFkZXJEYXRhICp0dXAsIGludCBuYXR0cykKK3sKKwlCbG9ja0lkU2V0KCZ0dXAt PnRfY3RpZC5pcF9ibGtpZCwgKEJsb2NrTnVtYmVyKSBuYXR0cyk7Cit9CisKK3N0YXRpYyBp bmxpbmUgaW50CitIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKGNvbnN0IEhlYXBUdXBs ZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gKGludCkgQmxvY2tJZEdldEJsb2NrTnVt YmVyKCZ0dXAtPnRfY3RpZC5pcF9ibGtpZCk7Cit9CisKKy8qIFdyaXRlLXRpbWUgbmF0dHMg b2YgYW55IEhPVC1pbmRleGVkIGl0ZW0gKGxpdmUgdHVwbGUgb3Igc3R1YikuICovCitzdGF0 aWMgaW5saW5lIGludAorSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoY29uc3QgSGVhcFR1 cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKHR1 cCkpCisJCXJldHVybiBIb3RJbmRleGVkU3R1YkdldEJpdG1hcE5hdHRzKHR1cCk7CisJcmV0 dXJuIEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKHR1cCk7Cit9CisKKyNlbmRpZgkJCQkJCQkv KiBIT1RfSU5ERVhFRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1 cF9kZXRhaWxzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKaW5kZXgg NzdhNmM0OGZkNzEuLjdlYjdmODZmNWVkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaHR1cF9kZXRhaWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWls cy5oCkBAIC0yODksNyArMjg5LDEzIEBAIEhFQVBfWE1BWF9JU19LRVlTSFJfTE9DS0VEKHVp bnQxNiBpbmZvbWFzaykKICAqIGluZm9ybWF0aW9uIHN0b3JlZCBpbiB0X2luZm9tYXNrMjoK ICAqLwogI2RlZmluZSBIRUFQX05BVFRTX01BU0sJCQkweDA3RkYJLyogMTEgYml0cyBmb3Ig bnVtYmVyIG9mIGF0dHJpYnV0ZXMgKi8KLS8qIGJpdHMgMHgxODAwIGFyZSBhdmFpbGFibGUg Ki8KKyNkZWZpbmUgSEVBUF9JTkRFWEVEX1VQREFURUQJMHgwODAwCS8qIEhPVCB0dXBsZSBw cm9kdWNlZCBieSBhbiBVUERBVEUKKwkJCQkJCQkJCQkgKiB0aGF0IGFsc28gY2hhbmdlZCBh biBpbmRleGVkCisJCQkJCQkJCQkJICogYXR0cmlidXRlIChIT1QvU0lVKTsgaW5kZXggc2Nh bnMKKwkJCQkJCQkJCQkgKiB0aGF0IHJlYWNoIGl0IHZpYSBhIGNoYWluIHJlY2hlY2sKKwkJ CQkJCQkJCQkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdhaW5zdCB0aGUKKwkJCQkJCQkJ CQkgKiBsaXZlIHR1cGxlLiAqLworLyogYml0IDB4MTAwMCBpcyBhdmFpbGFibGUgKi8KICNk ZWZpbmUgSEVBUF9LRVlTX1VQREFURUQJCTB4MjAwMAkvKiB0dXBsZSB3YXMgdXBkYXRlZCBh bmQga2V5IGNvbHMKIAkJCQkJCQkJCQkgKiBtb2RpZmllZCwgb3IgdHVwbGUgZGVsZXRlZCAq LwogI2RlZmluZSBIRUFQX0hPVF9VUERBVEVECQkweDQwMDAJLyogdHVwbGUgd2FzIEhPVC11 cGRhdGVkICovCi0tIAoyLjUwLjEKCg== --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAzMTA5MWZmY2E0ZGNlYmVkNGU5ZTExNGZiYjQxY2YwMWE2ZWYzODg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDQv OV0gQWRkIEhPVC1pbmRleGVkIHVwZGF0ZXM6IHNlbGVjdGl2ZSBpbmRleCBtYWludGVuYW5j ZQogYW5kIHJlYWRzCgpJbXBsZW1lbnQgdGhlIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5k ZXggVXBkYXRlKSBmZWF0dXJlIG9uIHRoZSBmb3VuZGF0aW9uCmxhaWQgYnkgdGhlIGV4ZWN1 dG9yJ3MgbW9kaWZpZWQtYXR0cmlidXRlIGlkZW50aWZpY2F0aW9uLgoKRWxpZ2liaWxpdHk6 IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBhIEhlYXBVcGRhdGVJbmRleE1vZGUg LS0KSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgKG5vdCBIT1Q7IGV2ZXJ5IGluZGV4IG5lZWRz IGFuIGVudHJ5KSwgSEVBUF9VUERBVEVfSE9UCihjbGFzc2ljIEhPVDsgbm8gaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgKEhPVApjaGFp biwgb25seSB0aGUgY2hhbmdlZCBpbmRleGVzIG1haW50YWluZWQpIC0tIGNvbXB1dGVkIGZy b20gbW9kaWZpZWRfaWR4X2F0dHJzCmFuZCB0aGUgcGVyLXJlbGF0aW9uIGluZGV4ZWQtYXR0 cmlidXRlIHNldCAoUmVsYXRpb25HZXRJbmRleGVkQXR0cnMpLiAgQW4KVVBEQVRFIHRoYXQg Y2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBpcwpIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUgdW5sZXNzIGl0IGlzIGZvcmNlZCB0byBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBieQpvbmUgb2Y6IGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5n ZWQgKG5vdGhpbmcgdG8gc2tpcCksIGFuIGF0dHJpYnV0ZQpyZWZlcmVuY2VkIGJ5IGFuIGV4 cHJlc3Npb24gaW5kZXggY2hhbmdlZCAoZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZSBp cyBub3QKaW1wbGVtZW50ZWQgeWV0KSwgYSBzeXN0ZW0gY2F0YWxvZywgb3IgdGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgZ2F0ZSAoc2VlCnRoZSBhcHBseS1nYXRpbmcgY29tbWl0 KS4gIFBhcnRpYWwgaW5kZXhlcywgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25l ZAp0YWJsZXMsIGFuZCBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgYXJlIGFsbCBlbGlnaWJs ZSAtLSB0aGUgcmVhZCBwYXRoIGlzCmFjY2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MKYXR0cmlidXRlIHNldCwg c28gbm8gY2FydmUtb3V0IGlzIG5lZWRlZCBmb3IgdGhlbS4KCldyaXRlIHBhdGg6IHRoZSB0 YWJsZS1BTSB1cGRhdGUgY29udHJhY3QgY2FycmllcyBtb2RpZmllZCBhdHRyaWJ1dGVzIElO L09VVCBhcwphIEJpdG1hcHNldCAob24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1y b3cgc2VudGluZWwsClRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCB0byBzaWduYWwgImV2 ZXJ5IGluZGV4IG5lZWRzIGFuIGVudHJ5IiksIGFuZApoZWFwX3VwZGF0ZSwgZm9yIEhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSwga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uIHRoZSBI T1QKY2hhaW4gd2hpbGUgRXhlY0luc2VydEluZGV4VHVwbGVzIG1haW50YWlucyBvbmx5IHRo ZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMKY2hhbmdlZC4gIFRoZSBuZXcgaGVhcC1vbmx5 IHR1cGxlIHJlY29yZHMsIGluIGFuIGlubGluZSBiaXRtYXAgaW4gaXRzIHRhaWwsIHRoZQph dHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBhdCBpdHMgaG9wLiAgT25seSB0aGUgc3RvcmVkIHR1 cGxlIGNhcnJpZXMgdGhlIGJpdG1hcAphbmQgdGhlIEhFQVBfSU5ERVhFRF9VUERBVEVEIGZs YWc7IHRoZSBjYWxsZXIncyBpbi1tZW1vcnkgY29weSBpcyBsZWZ0IHVubWFya2VkCnNvIHRo ZSBmbGFnIG5ldmVyIHByb21pc2VzIGEgdHJhaWxpbmcgYml0bWFwIHRoYXQgaXMgbm90IHBy ZXNlbnQuCgpSZWFkIHBhdGg6IGEgY2hhaW4gd2FsayB0byB0aGUgbGl2ZSB0dXBsZSB1bmlv bnMgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZQpiaXRtYXBzIG9mIGV2ZXJ5IGhvcCBpdCBjcm9z c2VzLiAgVGhlIGluZGV4LWFjY2VzcyBsYXllciB0cmVhdHMgdGhhdApjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgYXMgdGhlIHN0YWxlbmVzcyBhdXRob3JpdHk6IGlmIGl0IG92ZXJsYXBz IHRoZQphcnJpdmluZyBpbmRleCdzIGtleSBjb2x1bW5zIHRoZSBlbnRyeSBpcyBzdGFsZSBh bmQgaXMgZHJvcHBlZCwgYW5kIHRoZSByb3cgaXMKcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNo IGVudHJ5IHRoZSBzYW1lIHVwZGF0ZSBwbGFudGVkLiAgVGhlIHJlYWQgcGF0aCBpcwphY2Nl c3MtbWV0aG9kIGFnbm9zdGljIGFuZCBuZWVkcyBubyB2YWx1ZSByZWNoZWNrIG9yIGxlYWYg a2V5OiBpdCBpcyBjb3JyZWN0CmV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQgYXdheSBhbmQg YmFjaywgYmVjYXVzZSB0aGUgdmFsdWUtcmVzdG9yaW5nIHVwZGF0ZQpwbGFudGVkIGEgZnJl c2ggZW50cnkgd2hvc2Ugd2FsayBjcm9zc2VzIG5vIGxhdGVyIGtleS1jaGFuZ2luZyBob3Au CgpVbmlxdWUgY2hlY2tzIGFyZSB0aGUgb25lIHBsYWNlIHRoYXQgZG9lcyBjb21wYXJlIHZh bHVlczogX2J0X2NoZWNrX3VuaXF1ZQpmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1 bmRlciBTbmFwc2hvdERpcnR5IGFuZCwgb24gYSBjcm9zc2VkLWhvcAphcnJpdmFsLCBjb21w YXJlcyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5n IGxlYWYgd2l0aAp0aGUgaW5kZXgncyBvd24gb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVh cF9rZXlzX2VxdWFsX2xlYWYsIEJUT1JERVJfUFJPQwp1bmRlciBlYWNoIGNvbHVtbidzIGNv bGxhdGlvbikuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhIGJpdHdp c2UKaW1hZ2UgY29tcGFyaXNvbiAtLSBkaXN0aW5ndWlzaGVzIGEgc3RhbGUgYW5jZXN0b3Ig bGVhZiBmcm9tIGEgZ2VudWluZWx5IGxpdmUKZHVwbGljYXRlIChlcXVhbCB1bmRlciB0aGUg b3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCkgYW5kLCBpbiB0aGUKaW4t ZmxpZ2h0IHdpbmRvdyBvZiBhIHJlc3RvcmluZyB1cGRhdGUsIHJvdXRlcyB0aGUgc3RhbGUt YW5jZXN0b3IgaGl0IGludG8KX2J0X2RvaW5zZXJ0J3MgeHdhaXQgc28gdGhlIGR1cGxpY2F0 ZSBpcyBzdGlsbCBjYXVnaHQuICBUaGUgY29tcGFyaXNvbiByZWFkcwpwbGFpbiBrZXkgY29s dW1ucyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Q7IGl0IG5ldmVyIGV2YWx1YXRlcyBh biBpbmRleGVkCmV4cHJlc3Npb24sIGJlY2F1c2UgYW4gVVBEQVRFIHRvdWNoaW5nIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlIGlzCmluZWxpZ2libGUgZm9yIEhPVC1pbmRleGVk LCBzbyBhbiBleHByZXNzaW9uIGluZGV4IGlzIG5ldmVyIHRoZSBvbmUgcmVjZWl2aW5nCnRo ZSBmcmVzaCBlbnRyeSB3aG9zZSBpbnNlcnQgcnVucyB0aGlzIGNoZWNrLgoKQ28tYXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3JlZC1ieTogTmF0aGFu IEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICB8ICAzNCArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICB8IDMwNiArKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgfCA0NzEgKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgIHwgMTg3 ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMgICB8 IDE5MiArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAg ICAgfCAgOTQgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAg ICAgICB8IDE3MSArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAg ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAg ICAgICAgICAgIHwgIDY2ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAg ICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgfCAzMjkgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICB8ICAzMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyAgICAgICB8ICA3MyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgICAgICAgICAgIHwgMjQxICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmggICAgICAgICAgICAgICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oICAgICAgICAgICAgICAgICAgfCAgNTAgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmggICAgICAgICAgICAgICAgIHwgIDYwICsrCiBzcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICB8ICA3MSArLQogc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvaW5jbHVkZS9w Z3N0YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMSArLQogc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwogc3JjL2luY2x1ZGUv dXRpbHMvcmVsY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgICAgfCA3NzEgKysrKysrKy0tLS0tLS0t LS0tLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgICAgfCA2 MDMgKysrKystLS0tLS0tLS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICB8ICAgMiArLQogMzMgZmlsZXMgY2hhbmdlZCwgMjU5NCBpbnNlcnRpb25z KCspLCAxMzgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U CmluZGV4IDc0ZTQwN2YzNzVhLi43MTIzNjU2MTczYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9SRUFETUUuSE9UCkBAIC0xNTYsNiArMTU2LDQwIEBAIGFsbCBzdW1tYXJpemluZyBpbmRl eGVzLiAgKFJlYWxpc3RpY2FsbHksIHdlIG9ubHkgbmVlZCB0byBwcm9wYWdhdGUgdGhlCiB1 cGRhdGUgdG8gdGhlIGluZGV4ZXMgdGhhdCBjb250YWluIHRoZSB1cGRhdGVkIHZhbHVlcywg YnV0IHRoYXQgaXMgeWV0IHRvCiBiZSBpbXBsZW1lbnRlZC4pCiAKKworUGVyLUluZGV4IFVw ZGF0ZSBUcmFja2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZnRlciB0aGUg dGFibGUgQU0gcGVyZm9ybXMgdGhlIHVwZGF0ZSwgdGhlIGV4ZWN1dG9yIGRldGVybWluZXMg d2hpY2gKK2luZGV4ZXMgbmVlZCBuZXcgZW50cmllcyB1c2luZyBwZXItaW5kZXggdHJhY2tp bmcuCisKK1RoZSB0YWJsZSBBTSBjb21tdW5pY2F0ZXMgd2hldGhlciBhIEhPVCB1cGRhdGUg b2NjdXJyZWQgdmlhIHRoZQordXBkYXRlX2FsbF9pbmRleGVzIGJvb2xlYW4gb3V0cHV0IG9m IHRhYmxlX3R1cGxlX3VwZGF0ZSgpLCB0b2dldGhlciB3aXRoIHRoZQorbW9kaWZpZWQtYXR0 cnMgQml0bWFwc2V0IHRoZSBjYWxsZXIgcGFzc2VkIGluIChhdHRyaWJ1dGUgbnVtYmVycyBl bmNvZGVkIHdpdGgKK0ZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpLiAgV2hl biB1cGRhdGVfYWxsX2luZGV4ZXMgaXMgdHJ1ZSB0aGUKK3VwZGF0ZSB3YXMgbm9uLUhPVCBh bmQgZXZlcnkgaW5kZXggcmVxdWlyZXMgYSBuZXcgZW50cnkgKHRoZSB0dXBsZSBoYXMgYSBu ZXcKK1RJRCkuICBXaGVuIGZhbHNlIHRoZSB1cGRhdGUgd2FzIEhPVDogdGhlIGNhbGxlciBj b25zdWx0cyBtb2RpZmllZF9hdHRycyB3aXRoCitlYWNoIGluZGV4J3Mgb3duIGF0dHJpYnV0 ZXMgdG8gaW5zZXJ0IGVudHJpZXMgb25seSBpbnRvIHRoZSBpbmRleGVzIHdob3NlIGtleQor YXR0cmlidXRlcyBjaGFuZ2VkIChhIEhPVC1pbmRleGVkIHVwZGF0ZSkgb3Igb25seSB0aGUg c3VtbWFyaXppbmcgaW5kZXhlcyAoYQorY2xhc3NpYyBIT1QgdXBkYXRlIHRoYXQgY2hhbmdl ZCBhIHN1bW1hcml6ZWQgY29sdW1uKSwgYW5kIHNraXBzIHRoZSByZXN0LgorCitUaGUgZXhl Y3V0b3IgdGhlbiBjYWxscyBFeGVjU2V0SW5kZXhVbmNoYW5nZWQoKSB0byBwb3B1bGF0ZSB0 aGUgcGVyLWluZGV4CitpaV9JbmRleFVuY2hhbmdlZCBmbGFnIG9uIGVhY2ggSW5kZXhJbmZv LiAgVGhpcyBmbGFnIGluZGljYXRlcyB3aGV0aGVyIGVhY2gKK2luZGV4J3Mga2V5IHZhbHVl cyBhcmUgdW5jaGFuZ2VkIGJ5IHRoZSB1cGRhdGUuICBGb3Igbm9uLUhPVCB1cGRhdGVzCit0 aGUgZmxhZyBpcyBjbGVhcmVkIG9uIGV2ZXJ5IGluZGV4LCBzbyBlYWNoIGdldHMgYSBmcmVz aCBlbnRyeSBhdCB0aGUKK25ldyBUSUQ7IHRoZSBmbGFnIGlzIG5ldmVyIGEgc2tpcCBvbiBp dHMgb3duLCBqdXN0IGEgaGludCB0byB0aGUKK2luZGV4IEFNJ3MgYW1pbnNlcnQgZm9yIG9w dGltaXphdGlvbnMgc3VjaCBhcyBib3R0b20tdXAgZGVsZXRpb24gb2YKK2xvZ2ljYWxseSBl cXVpdmFsZW50IGR1cGxpY2F0ZSBlbnRyaWVzLgorCitFeGVjSW5zZXJ0SW5kZXhUdXBsZXMg Y29uc3VsdHMgaWlfSW5kZXhVbmNoYW5nZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8KK3NraXAg YSBub24tc3VtbWFyaXppbmcgaW5kZXggZHVyaW5nIGFuIFVQREFURTogaWYgdGhlIGluZGV4 IGlzIG1hcmtlZAordW5jaGFuZ2VkLCB0aGUgSE9UIGNoYWluIHJvb3QncyBleGlzdGluZyBl bnRyeSBzdGlsbCBwb2ludHMgYXQgdGhlCit0dXBsZSwgc28gbm8gbmV3IGVudHJ5IGlzIG5l ZWRlZC4gIEZvciBub24tSE9UIHVwZGF0ZXMgdGhlIFRJRAorY2hhbmdlZCBhbmQgRXhlY1Nl dEluZGV4VW5jaGFuZ2VkIG1hcmtzIGV2ZXJ5IGluZGV4IGFzIGNoYW5nZWQsCitmb3JjaW5n IGVhY2ggdG8gcmVjZWl2ZSBhIG5ldyBlbnRyeS4gIFN1bW1hcml6aW5nIGluZGV4ZXMgYWx3 YXlzIGdldAordGhlIG9wcG9ydHVuaXR5IHRvIHVwZGF0ZSB0aGVpciBibG9jay1sZXZlbCBz dW1tYXJpZXMuCisKKwogQWJvcnQgQ2FzZXMKIC0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCA0YjcwMWU0MjU4Ni4u NWQ0YTJjN2Q2NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURN RS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQKQEAgLTU0LDMgKzU0LDMwOSBAQCBUaGUgSE9ULWluZGV4ZWQgaW52YXJpYW50 ICh0aGUgbmV3IGNvbnRyYWN0KQogCiBUaGlzIGlzIHdoYXQgbWFrZXMgZHJvcHBpbmcgYSBz dGFsZSBlbnRyeSBzYWZlOiB0aGUgbGl2ZSByb3cgaXMgYWx3YXlzCiByZWFjaGFibGUgdGhy b3VnaCBleGFjdGx5IG9uZSBub24tc3RhbGUgZW50cnkgcGVyIGluZGV4LgorCisKK0VsaWdp YmlsaXR5OiBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitUaGUgZXhlY3V0b3IgY29tcHV0ZXMgbW9kaWZpZWRfaWR4X2F0 dHJzICh0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIHRoaXMgVVBEQVRFCitjaGFuZ2VkLCBhdHRy aWJ1dGUgbnVtYmVycyBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlcikgYW5kCitwYXNzZXMgaXQgdG8gaGVhcF91cGRhdGUgdmlhIHRhYmxlX3R1cGxlX3Vw ZGF0ZS4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUKK2NsYXNzaWZpZXMgdGhlIHVwZGF0ZToK KworICBIRUFQX1VQREFURV9BTExfSU5ERVhFUworICAgICAgICBIT1QgaXMgbm90IHBlcm1p dHRlZDsgdGhlIG5ldyB0dXBsZSBnb2VzIG9uIGEgZnJlc2ggVElEIGFuZCBldmVyeQorICAg ICAgICBpbmRleCBnZXRzIGEgbmV3IGVudHJ5LgorICBIRUFQX0hFQVBfT05MWV9VUERBVEUK KyAgICAgICAgbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQs IHNvIG5vIGluZGV4IG5lZWRzIGEKKyAgICAgICAgbmV3IGVudHJ5IChjbGFzc2ljIEhPVCku CisgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURQorICAgICAgICBhdCBsZWFzdCBvbmUg bm9uLXN1bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0aGUKKyAg ICAgICAgdXBkYXRlIG1heSBzdGF5IG9uIHRoZSBIT1QgY2hhaW4gYW5kIG1haW50YWluIG9u bHkgdGhlIGNoYW5nZWQKKyAgICAgICAgaW5kZXhlcyBzZWxlY3RpdmVseS4KKworQSBub24t c3VtbWFyaXppbmcgaW5kZXhlZCBhdHRyaWJ1dGUgY2hhbmdpbmcgeWllbGRzIEhFQVBfU0VM RUNUSVZFX0lOREVYX1VQREFURQordW5sZXNzIG9uZSBvZiB0aGVzZSBmb3JjZXMgSEVBUF9V UERBVEVfQUxMX0lOREVYRVM6CisKKyAgMS4gVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBw bHkgcGF0aCwgZ2F0ZWQgcGVyIHN1YnNjcmlwdGlvbiAoc2VlICJMb2dpY2FsCisgICAgIHJl cGxpY2F0aW9uIiBiZWxvdykuCisgIDIuIEFuIFVQREFURSB0b3VjaGluZyBhbiBhdHRyaWJ1 dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uIGluZGV4CisgICAgIChzZWxlY3RpdmUg bWFpbnRlbmFuY2Ugb2YgZXhwcmVzc2lvbiBpbmRleGVzIGlzIG5vdCBpbXBsZW1lbnRlZCB5 ZXQpLgorICAzLiBBbiBVUERBVEUgdGhhdCBjaGFuZ2VzICpldmVyeSogaW5kZXhlZCBhdHRy aWJ1dGU6IHRoZXJlIGlzIG5vIGluZGV4IHRvCisgICAgIHNraXAsIHNvIGEgcGxhaW4gbm9u LUhPVCB1cGRhdGUgaXMgY2hlYXBlci4KKworU3lzdGVtIGNhdGFsb2dzIHN0YXkgY2xhc3Np Yy1IT1Qgb25seTogYSBjYXRhbG9nIFVQREFURSB0aGF0IGNoYW5nZXMgYQorbm9uLXN1bW1h cml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGZhbGxzIGJhY2sgdG8gSEVBUF9VUERBVEVfQUxM X0lOREVYRVMsIGJlY2F1c2UKK2NhdGFsb2cgcmVhZHMgZ28gdGhyb3VnaCBtYW55IHBhdGhz IG5vdCBhbGwgcHJvdmVuIHNhZmUgYWdhaW5zdCBzdGFsZSBjaGFpbgorZW50cmllcy4gIFRo aXMgaXMgdGhlIHByZS1IT1QtaW5kZXhlZCBiZWhhdmlvdXIgZm9yIHN1Y2ggdXBkYXRlcy4K KworSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCAoY2FjaGVkIGluIHJkX2luZGV4ZWRhdHRy KSBpcyB0aGUgc2V0IG9mIGNvbHVtbnMKK3JlZmVyZW5jZWQgYnkgbm9uLXN1bW1hcml6aW5n IGluZGV4ZXMgcGx1cywgZm9sZGVkIGluLCB0aGUgY29sdW1ucyByZWZlcmVuY2VkCitvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHNvIHRoYXQgYSBjaGFuZ2UgdG8gYSBzdW1tYXJp emluZy1vbmx5IGNvbHVtbiBpcworc2VlbiBieSB0aGUgbW9kaWZpZWQtYXR0cmlidXRlIGNv bXBhcmlzb24gKGl0cyBpbmRleCBpcyBtYWludGFpbmVkIHZpYSB0aGUKK2NsYXNzaWMtSE9U IHN1bW1hcml6aW5nIHBhdGgpLiAgUmVhZC1zaWRlIHN0YWxlbmVzcyBpcyBmaWx0ZXJlZCBi eSB0aGUKK2Nyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggaXMgYWNjZXNzLW1ldGhv ZCBhZ25vc3RpYywgc28gYSBjaGFuZ2UgdG8gYQorY29sdW1uIGNvdmVyZWQgYnkgYW55IGlu ZGV4IGlzIEhPVC1pbmRleGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGluZGV4J3MgYWNjZXNzCitt ZXRob2QuICBTdW1tYXJpemluZyBpbmRleGVzIChlLmcuIEJSSU4pIGtlZXAgbm8gcGVyLXJv dyBsZWFmIHRoYXQgY2FuIGdvCitzdGFsZSBhbmQgYXJlIG1haW50YWluZWQgdmlhIHRoZSBz dW1tYXJpemluZyBwYXRoLgorCisKK1RoZSB3cml0ZSBwYXRoCistLS0tLS0tLS0tLS0tLQor CitGb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFLCBoZWFwX3VwZGF0ZToKKworICAt IHN0b3JlcyB0aGUgbmV3IHR1cGxlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIG9uIHRoZSBzYW1l IHBhZ2UsIGxpbmtlZCBpbnRvCisgICAgdGhlIGNoYWluIHZpYSB0X2N0aWQsIGV4YWN0bHkg bGlrZSBjbGFzc2ljIEhPVDsgYW5kCisgIC0gc2V0cyBIRUFQX0lOREVYRURfVVBEQVRFRCAo dF9pbmZvbWFzazIgYml0IDB4MDgwMCkgb24gdGhlIG5ldyB0dXBsZSB0bworICAgIG1hcmsg dGhhdCB0aGUgY2hhaW4gbm93IGNhcnJpZXMgZGlmZmVyaW5nIGtleXMuCisKK1RoZXJlIGlz IG5vIHNlcGFyYXRlIG9uLXBhZ2UgbWV0YS1pdGVtOiB0aGUgYml0IG9uIHRoZSBoZWFwLW9u bHkgdHVwbGUgaXMgdGhlCitlbnRpcmUgb24tZGlzayBmb290cHJpbnQuICBBcyBmb3IgY2xh c3NpYyBIT1QsIGlmIHRoZSBuZXcgdHVwbGUgZG9lcyBub3QgZml0CitvbiB0aGUgcGFnZSB0 aGUgdXBkYXRlIGZhbGxzIGJhY2sgdG8gYSBub24tSE9UIChuZXctcGFnZSkgdXBkYXRlLgor CitUaGUgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpcyBjZWlsKG5hdHRzLzgpIGJ5 dGVzLCBzaXplZCBieSB0aGUgdHVwbGUncworT1dOIGF0dHJpYnV0ZSBjb3VudCBhdCB3cml0 ZSB0aW1lIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyksIG5vdCB0aGUgcmVsYXRpb24ncwor Y3VycmVudCBuYXR0cy4gIEFERCBDT0xVTU4gcmFpc2VzIHRoZSByZWxhdGlvbidzIG5hdHRz IHdpdGhvdXQgcmV3cml0aW5nCitleGlzdGluZyB0dXBsZXMsIHNvIG9uZSBjaGFpbiBjYW4g aG9sZCBob3BzIHdob3NlIGJpdG1hcHMgd2VyZSBzaXplZCBmb3IKK2RpZmZlcmVudCAoc21h bGxlcikgbmF0dHM7IGV2ZXJ5IGNvbnN1bWVyIGxvY2F0ZXMgYW5kIHNpemVzIGEgaG9wJ3Mg Yml0bWFwCitmcm9tIHRoYXQgaG9wJ3Mgb3duIHdyaXRlLXRpbWUgbmF0dHMgKEhvdEluZGV4 ZWRUdXBsZUJpdG1hcE5hdHRzIGluCithY2Nlc3MvaG90X2luZGV4ZWQuaCkuICBBIGNvbGxh cHNlLXN1cnZpdm9yIHN0dWIgb3ZlcndyaXRlcyBuYXR0cyB3aXRoIGl0cyAwCitzZW50aW5l bCwgc28gaXQgcHJlc2VydmVzIGl0cyB3cml0ZS10aW1lIG5hdHRzIGluIHRoZSB1bnVzZWQg YmxvY2stbnVtYmVyIGhhbGYKK29mIHRfY3RpZCAodGhlIG9mZnNldCBoYWxmIGlzIHRoZSBm b3J3YXJkIGxpbmspLiAgQml0IHBvc2l0aW9ucyBhcmUgYXR0cmlidXRlCitiYXNlZCBhbmQg aWRlbnRpY2FsIGFjcm9zcyBzaXplcywgc28gYSBzbWFsbGVyIGJpdG1hcCBzaW1wbHkgT1Jz IGludG8gdGhlIGxvdworYnl0ZXMgb2YgYSBsYXJnZXIgY3Jvc3NlZC1hdHRyaWJ1dGUgYWNj dW11bGF0b3IuICBEUk9QIENPTFVNTiBrZWVwcyB0aGUgYXR0bnVtCitzbG90IChpdCBuZXZl ciByZW51bWJlcnMpLCBzbyBleGlzdGluZyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KKworQWZ0 ZXIgdGhlIHVwZGF0ZSwgdGFibGVfdHVwbGVfdXBkYXRlIHJlcG9ydHMgdXBkYXRlX2FsbF9p bmRleGVzID0gZmFsc2UgKHRoZQordHVwbGUgaXMgaGVhcC1vbmx5KS4gIFRoZSBleGVjdXRv ciB0aGVuIG1haW50YWlucyBpbmRleGVzIHNlbGVjdGl2ZWx5OgorRXhlY1NldEluZGV4VW5j aGFuZ2VkIG1hcmtzIGVhY2ggaW5kZXggd2hvc2Uga2V5IGF0dHJpYnV0ZXMgZGlkIG5vdCBj aGFuZ2UgYXMKK3VuY2hhbmdlZCwgYW5kIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyBpbnNlcnRz IGEgZnJlc2ggZW50cnkgb25seSBpbnRvIHRoZQoraW5kZXhlcyB0aGF0IGRpZCBjaGFuZ2Uu ICBFYWNoIHN1Y2ggZW50cnkgcG9pbnRzIGF0IHRoZSBuZXcgdHVwbGUncyBvd24gVElELgor CisKK1RoZSBjaGFpbiBhbmQgdGhlIHR3byBraW5kcyBvZiBsZWFmIGVudHJ5CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgYSBIT1QtaW5k ZXhlZCB1cGRhdGUgdGhlcmUgYXJlLCBmb3IgYSBjaGFuZ2VkIGluZGV4LCB0d28ga2luZHMg b2YgbGVhZgorZW50cnkgcmVhY2hpbmcgdGhlIGNoYWluOgorCisgIC0gdGhlIHByZS11cGRh dGUgZW50cnkgZm9yIHRoZSBPTEQga2V5LCBzdGlsbCBwb2ludGluZyBhdCBhbiBvbGRlciBj aGFpbgorICAgIG1lbWJlciAobm93IHN0YWxlIG9uY2UgdGhlIHdhbGsgY3Jvc3NlcyB0aGUg SE9ULWluZGV4ZWQgaG9wKTsgYW5kCisgIC0gdGhlIGZyZXNoIGVudHJ5IGZvciB0aGUgTkVX IGtleSwgcG9pbnRpbmcgYXQgdGhlIG5ldyBoZWFwLW9ubHkgdHVwbGUuCisKK0luZGV4IGJ1 aWxkIGFuZCBSRUlOREVYIGluZGV4IGEgbGl2ZSBIT1QtaW5kZXhlZCB0dXBsZSB1bmRlciBp dHMgT1dOIFRJRCAobm90Cit0aGUgY2hhaW4gcm9vdCksIHNvIHRoZSBmcmVzaGx5IGJ1aWx0 IGVudHJ5IGhhcyBubyBob3AgYWZ0ZXIgaXQgYW5kIGlzIG5ldmVyCit0cmVhdGVkIGFzIHN0 YWxlLgorCisKK1JlYWQtc2lkZSBjb3JyZWN0bmVzczogdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisKK2hlYXBfaG90X3NlYXJjaF9idWZmZXIgd2Fsa3MgdGhlIGNoYWluIGZyb20g dGhlIGVudHJ5J3MgdGFyZ2V0IHRvIHRoZSBsaXZlCit2aXNpYmxlIHR1cGxlLiAgRWFjaCBo b3AgaXQgY3Jvc3NlcyBhZnRlciB0aGUgZW50cnkncyBvd24gdGFyZ2V0IC0tIGEgbGl2ZQor SE9ULWluZGV4ZWQgbWVtYmVyLCBhIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsIG9yIGEgY29s bGFwc2VkIChyZWRpcmVjdGVkKQorcHJlZml4IC0tIGNvbnRyaWJ1dGVzIHRoYXQgaG9wJ3Mg aW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0byBhIHJ1bm5pbmcKK3VuaW9uLCBJbmRl eEZldGNoVGFibGVEYXRhLnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQsIGFuZCBzZXRzCisqaG90 X2luZGV4ZWRfcmVjaGVjayB0byBmbGFnIHRoYXQgdGhlIHdhbGsgY3Jvc3NlZCBhdCBsZWFz dCBvbmUgc3VjaCBob3AuCisKK1RoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgKGluZGV4X2ZldGNo X2hlYXApIHRlc3RzIHRoYXQgdW5pb24gYWdhaW5zdCB0aGUKK2Fycml2aW5nIGluZGV4J3Mg a2V5IGNvbHVtbnMuICBBbnkgb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNoYW5nZWQg b25lIG9mCit0aGlzIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUgZW50cnkncyBzdG9yZWQga2V5 IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBsaXZlCit0dXBsZTogSW5kZXhTY2FuRGVzYy54c19o b3RfaW5kZXhlZF9zdGFsZSBpcyBzZXQsIGFuZCBJbmRleFNjYW4sCitJbmRleE9ubHlTY2Fu LCBDTFVTVEVSLCBhbmQgdGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gcmVwbGljYS1pZGVudGl0 eSBsb29rdXBzCitkcm9wIHRoZSB0dXBsZS4gIElmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBm cm9tIHRoZSBpbmRleCdzIGtleSBjb2x1bW5zLCBub25lCitvZiB0aGUgaW5kZXgncyBpbnB1 dHMgY2hhbmdlZCBhY3Jvc3MgdGhlIGNoYWluLCBzbyB0aGUgZW50cnkgaXMgY3VycmVudCBh bmQKK3RoZSByb3cgaXMgcmV0dXJuZWQuCisKK1RoZSB1bmlvbiBpcyBjb21wbGV0ZTogZXZl cnkgY3Jvc3NlZCBsaXZlIGhvcCBhbmQgc3R1YiBjb250cmlidXRlcyBpdHMKK2JpdG1hcCwg YW5kIGNoYWluIGNvbGxhcHNlIG9ubHkgZXZlciByZWNsYWltcyBhIG1lbWJlciB3aG9zZSBh dHRyaWJ1dGVzIGFyZSBhCitzdWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRlciBob3BzIChz ZWUgIlBydW5lIGFuZCBjaGFpbiBjb2xsYXBzZSIpLCBzbyBhCityZWFkZXIgY3Jvc3Npbmcg dGhlIHN1cnZpdm9ycyBzdGlsbCBzZWVzIGV2ZXJ5IGNvbGxhcHNlZCBob3AncyBhdHRyaWJ1 dGVzLgorRGlzam9pbnRuZXNzIHRoZXJlZm9yZSByZWxpYWJseSBtZWFucyB0aGUgZW50cnkg aXMgY3VycmVudC4KKworVGhpcyBuZWVkcyBubyB2YWx1ZSBjb21wYXJpc29uIGFuZCBubyBs ZWFmIGtleSwgc28gaXQgc2VydmVzIGVxdWFsaXR5LCByYW5nZSwKK2FuZCBpbmVxdWFsaXR5 IHNjYW5zIHVuaWZvcm1seSwgd29ya3MgZm9yIGFueSBhY2Nlc3MgbWV0aG9kIHdob3NlIGNv bHVtbnMgYXJlCitlbGlnaWJsZSBmb3IgSE9ULWluZGV4ZWQgdXBkYXRlcywgYW5kIGlzIGNv cnJlY3QgZXZlbiB3aGVuIGEga2V5IGlzIGN5Y2xlZAorYXdheSBhbmQgYmFjayAoWCAtPiBZ IC0+IFgpOiB0aGUgdXBkYXRlIHRoYXQgcmVzdG9yZWQgdGhlIHZhbHVlIHBsYW50ZWQgYQor ZnJlc2ggZW50cnkgcG9pbnRpbmcgYXQgaXRzIG93biBsaXZlIHR1cGxlLCB3aG9zZSB3YWxr IGNyb3NzZXMgbm8gbGF0ZXIKK2tleS1jaGFuZ2luZyBob3AsIHNvIHRoYXQgZW50cnkgdW5p cXVlbHkgcmV0dXJucyB0aGUgcm93IHdoaWxlIHRoZSBzdGFsZQorYW5jZXN0b3IgZW50cnkg LS0gd2hvc2Ugd2FsayBkb2VzIGNyb3NzIHRoZSBjaGFuZ2luZyBob3BzIC0tIGlzIGRyb3Bw ZWQuCisKK1RoZSByZWFkIG1lY2hhbmlzbSBuZXZlciByZWNvbnN0cnVjdHMgb3IgY29tcGFy ZXMgYW4gaW5kZXgga2V5LCBzbyBpdCBuZWVkcyBubworcGVyLWFjY2Vzcy1tZXRob2Qgc3Vw cG9ydC4gIChuYnRyZWUga2VlcHMgYW4gaW50ZXJuYWwgbGVhZi1rZXkgY29tcGFyaXNvbiwK K19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiwgdXNlZCBvbmx5IGJ5IF9idF9jaGVja191bmlx dWUgdG8gdGVsbCBhIHN0YWxlIGNoYWluCitlbnRyeSBmcm9tIGEgbGl2ZSBkdXBsaWNhdGUg ZHVyaW5nIGEgdW5pcXVlIGluc2VydDsgaXQgaXMgbm90IHBhcnQgb2YgdGhlIHJlYWQKK3Bh dGguKQorCitVbmlxdWUgY2hlY2tzLiAgX2J0X2NoZWNrX3VuaXF1ZSBmZXRjaGVzIHRoZSBj b25mbGljdGluZyB0dXBsZSB1bmRlcgorU25hcHNob3REaXJ0eSBhbmQsIHdoZW4gdGhlIGNo YWluIHdhbGsgY3Jvc3NlZCBhIEhPVC1pbmRleGVkIGhvcCwgY29tcGFyZXMgdGhlCitsaXZl IHR1cGxlJ3MgY3VycmVudCBrZXkgYWdhaW5zdCB0aGUgYXJyaXZpbmcgbGVhZiB3aXRoIHRo ZSBpbmRleCdzIG93bgorb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVhcF9rZXlzX2VxdWFs X2xlYWYsIHVzaW5nIEJUT1JERVJfUFJPQyB1bmRlciBlYWNoCitjb2x1bW4ncyBjb2xsYXRp b24pLiAgVGhpcyByZWNoZWNrIGlzIHJlYWNoZWQgb25seSBmb3IgYW4gaW5kZXggcmVjZWl2 aW5nIGEKK2ZyZXNoIGVudHJ5IGR1cmluZyBhIEhPVC1pbmRleGVkIHVwZGF0ZTsgSGVhcFVw ZGF0ZUhvdEFsbG93YWJsZSBkaXNxdWFsaWZpZXMKK2FueSBVUERBVEUgdGhhdCB0b3VjaGVz IGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRlLCBzbyB0aGUgaW5kZXggaGVyZSBuZXZl cgoraGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkga2V5IGNvbHVtbiBpcyBh IHBsYWluIGF0dHJpYnV0ZSksIGFuZCB0aGUKK2NvbXBhcmlzb24gcmVhZHMgYXR0cmlidXRl IHZhbHVlcyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3QgLS0gbm8gZXhwcmVzc2lvbgor ZXZhbHVhdGlvbiBvciBleGVjdXRvciBzdGF0ZSBpcyBuZWVkZWQuICBVc2luZyB0aGUgb3Bj bGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhCitiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24gLS0g bWVhbnMgYSBrZXkKK3RoYXQgd2FzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChYIC0+IFkgLT4g WCkgZG9lcyBub3QgcmFpc2UgYSBzcHVyaW91cworZHVwbGljYXRlIGFnYWluc3QgaXRzIG93 biBzdGFsZSBsZWFmLCB3aGlsZSBhIGdlbnVpbmVseSBsaXZlIGR1cGxpY2F0ZSAoZXF1YWwK K3VuZGVyIHRoZSBvcGNsYXNzIGV2ZW4gaWYgbm90IGJpdHdpc2UtaWRlbnRpY2FsLCBlLmcu IG51bWVyaWMgMS4wIHZzIDEuMDApIGlzCitzdGlsbCBkZXRlY3RlZC4gIChBcHBlbmRpeCBB IG1vdGl2YXRlcyB0aGlzIHJlY2hlY2sgaW4gZGV0YWlsLikKKworCitBcHBlbmRpY2VzCist LS0tLS0tLS0tCisKK0FwcGVuZGl4IEE6IFdoeSB0aGUgdW5pcXVlLWNoZWNrIHBhdGggbmVl ZHMgYSB2YWx1ZSBjb21wYXJpc29uIGF0IGFsbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMg aXMgdGhlIG9uZSBwbGFjZSBIT1QtaW5kZXhlZCBkb2VzIGNvbXBhcmUgYSBrZXkgdmFsdWUs IGV2ZW4gdGhvdWdoIHRoZQorcmVhZCBwYXRoIGRlbGliZXJhdGVseSBhdm9pZHMgb25lLiAg VGhlIHJlc3Qgb2YgdGhpcyBhcHBlbmRpeCBleHBsYWlucyB3aHkgdGhlCitjb21wYXJpc29u IGlzIG5lZWRlZCwgd2h5IGl0IG11c3QgdXNlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IgcmF0 aGVyIHRoYW4gYQorYml0d2lzZSBvbmUsIGFuZCB3aHkgdGhlIEFCQSBjYXNlIGlzIHdoYXQg Zm9yY2VzIHRoZSBpc3N1ZS4KKworMS4gVGhlIHNldHVwOiB3aHkgYSB1bmlxdWUgaW5zZXJ0 IGNhbiBldmVuIHJlYWNoIGEgc3RhbGUgbGVhZgorCitVbmRlciBjbGFzc2ljIEhPVCwgYW4g aW5kZXggaGFzIGV4YWN0bHkgb25lIGxlYWYgZW50cnkgcGVyIGxvZ2ljYWwgcm93LCBhbmQK K2V2ZXJ5IGxlYWYgZW50cnkncyBrZXkgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZSBpdCBjaGFp bi1yZXNvbHZlcyB0by4gIFNvCitfYnRfY2hlY2tfdW5pcXVlIGNhbiB0cnVzdDogImlmIEkg ZmluZCBhIGxlYWYgd2hvc2Uga2V5IGVxdWFscyBteSBuZXcga2V5LCBhbmQKK2l0IHJlc29s dmVzIHRvIGEgbGl2ZSB0dXBsZSwgdGhhdCdzIGEgZ2VudWluZSBkdXBsaWNhdGUuIgorCitI T1QvU0lVIGJyZWFrcyB0aGF0IG9uZS10by1vbmUgY29ycmVzcG9uZGVuY2UuICBBIEhPVC1p bmRleGVkIFVQREFURSB0aGF0CitjaGFuZ2VzIGNvbHVtbiBhIGZyb20gWCB0byBZOgorIC0g aW5zZXJ0cyBhIGZyZXNoIGxlYWYgZW50cnkgKFkgLT4gbmV3IHR1cGxlKSBpbnRvIGlkeF9h LCBhbmQKKyAtIGxlYXZlcyB0aGUgb2xkIGxlYWYgZW50cnkgKFggLT4gb2xkIGNoYWluIHJv b3QpIGluIHBsYWNlLgorCitUaGF0IG9sZCAoWCAtPiByb290KSBlbnRyeSBpcyBub3cgc3Rh bGU6IGl0IHN0aWxsIGNoYWluLXJlc29sdmVzIHRvIGEgbGl2ZQordHVwbGUsIGJ1dCB0aGF0 IGxpdmUgdHVwbGUncyBjdXJyZW50IGEgaXMgWSwgbm90IFguICBUaGUgcmVhZCBwYXRoIGhh bmRsZXMgdGhpcword2l0aCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIChubyB2YWx1 ZSBjb21wYXJpc29uIG5lZWRlZCk6IGlmIHRoZSB3YWxrCitmcm9tIHRoZSBlbnRyeSdzIHRh cmdldCB0byB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VzIGEgaG9wIHRoYXQgY2hhbmdlZCBhLCB0 aGUKK2VudHJ5IGlzIHN0YWxlIGFuZCBkcm9wcGVkLgorCitXaGVuIHlvdSBub3cgSU5TRVJU IGEgcm93IHdpdGggYSA9IFgsIF9idF9jaGVja191bmlxdWUgc2NhbnMgaWR4X2EgZm9yIGtl eSBYCithbmQgZmluZHMgdGhhdCBzdGFsZSAoWCAtPiByb290KSBsZWFmLiAgSXQgbXVzdCBk ZWNpZGU6IGlzIHRoaXMgYSByZWFsCitjb25mbGljdD8KKworMi4gV2h5IHRoZSByZWFkLXBh dGggYml0bWFwIGlzIG5vdCBzdWZmaWNpZW50IGhlcmUKKworVGhlIHJlYWQgcGF0aCdzIGxv Z2ljIGlzOiAidGhpcyBlbnRyeSBjcm9zc2VkIGEgaG9wIHRoYXQgY2hhbmdlZCBhID0+IHN0 YWxlID0+Citkcm9wIGl0LCB0aGUgZnJlc2ggZW50cnkgd2lsbCBzdXBwbHkgdGhlIHJvdy4i ICBGb3Igc2NhbnMgdGhhdCdzIGNvcnJlY3QgYW5kCitjb21wbGV0ZSwgYmVjYXVzZSBldmVy eSBsaXZlIHJvdyBoYXMgZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHRoYXQKK3JlLXN1 cHBsaWVzIGl0LgorCitCdXQgYSB1bmlxdWUgY2hlY2sgaXMgYXNraW5nIGEgZGlmZmVyZW50 IHF1ZXN0aW9uLiAgSXQgaXMgbm90ICJzaG91bGQgSSByZXR1cm4KK3RoaXMgcm93PyIgLS0g aXQgaXMgImRvZXMgdGhlIGxpdmUgdHVwbGUgdGhpcyBlbnRyeSByZXNvbHZlcyB0byBjb25m bGljdCB3aXRoCit0aGUga2V5IEknbSBpbnNlcnRpbmc/IiAgVGhlIGJpdG1hcCBjYW4gb25s eSB0ZWxsIHlvdSAiYW4gaW5kZXhlZCBhdHRyaWJ1dGUKK2NoYW5nZWQgc29tZXdoZXJlIG9u IHRoZSBjaGFpbi4iICBJdCBjYW5ub3QgdGVsbCB5b3Ugd2hhdCB0aGUgbGl2ZSB2YWx1ZSBp cworbm93LCBhbmQgdGhhdCBpcyBleGFjdGx5IHdoYXQgeW91IG5lZWQgdG8ga25vdyB0byBk ZXRlY3QgYSBkdXBsaWNhdGUuCisKK1RoaXMgaXMgdGhlIGNydXggb2YgdGhlIEFCQSBwcm9i bGVtLiAgQ29uc2lkZXI6CisKKyAgSU5TRVJUIChhPTEwKSAgICAgICAgICAgICAgICAgIExQ WzFdIGE9MTAgICAocm9vdCkKKyAgVVBEQVRFIGE9MTEgICAoSE9ULWluZGV4ZWQpICAgIExQ WzJdIGE9MTEgICBiaXRtYXAge2F9LCBsZWFmICgxMSktPkxQWzJdCisgIFVQREFURSBhPTEw ICAgKEhPVC1pbmRleGVkKSAgICBMUFszXSBhPTEwICAgYml0bWFwIHthfSwgbGVhZiAoMTAp LT5MUFszXSwgbGl2ZQorCitpZHhfYSBub3cgaGFzIGxlYXZlcyAoMTApLT5MUFsxXSBbc3Rh bGUgYW5jZXN0b3JdLCAoMTEpLT5MUFsyXSBbc3RhbGVdLCBhbmQKKygxMCktPkxQWzNdIFtm cmVzaCwgbGl2ZV0uCisKK05vdyBJTlNFUlQgKGE9MTApLCBhIGdlbnVpbmUgZHVwbGljYXRl IG9mIHRoZSBsaXZlIHJvdy4gIF9idF9jaGVja191bmlxdWUgc2NhbnMKK2ZvciBrZXkgMTAg YW5kIGZpbmRzIHRoZSAoMTApLT5MUFsxXSBzdGFsZSBhbmNlc3RvciBlbnRyeS4gIFRoZSBj aGFpbiB3YWxrIGZyb20KK0xQWzFdIHRvIHRoZSBsaXZlIHR1cGxlIExQWzNdIGNyb3NzZXMg aG9wcyB0aGF0IGNoYW5nZWQgYSAoMTAtPjExLCB0aGVuCisxMS0+MTApLCBzbyB0aGUgYml0 bWFwIHNheXMgInN0YWxlLiIgIElmIHRoZSB1bmlxdWUgY2hlY2sgdHJ1c3RlZCB0aGUgYml0 bWFwCithbG9uZSBpdCB3b3VsZCBza2lwICgxMCktPkxQWzFdIGFzIHN0YWxlIGFuZCBtaXNz IHRoZSByZWFsIGR1cGxpY2F0ZS4gIFRoZQorYml0bWFwIGlzIGZvb2xlZCBiZWNhdXNlIGEg Y2hhbmdlZCAoc28gdGhlIGJpdCBpcyBzZXQpIGV2ZW4gdGhvdWdoIGl0IGNoYW5nZWQKK2Jh Y2sgdG8gdGhlIHNhbWUgdmFsdWU6ICJhbiBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0aGUgY2hh aW4iIGlzIG5vdCAidGhlIGxpdmUKK3ZhbHVlIGRpZmZlcnMgZnJvbSB0aGlzIGxlYWYncyBr ZXkuIiAgVW5kZXIgQUJBIHRoZXkgZGl2ZXJnZS4KKworVGhlIHNoYXJwZXIgY2FzZSBpcyBj b25jdXJyZW5jeS4gIFdoaWxlIHRoZSByZXN0b3JpbmcgVVBEQVRFIChhOiAxMSAtPiAxMCkg aXMKK2luIGZsaWdodCwgaXQgaGFzIHdyaXR0ZW4gaXRzIG5ldyBoZWFwIHR1cGxlIGJ1dCBu b3QgeWV0IGluc2VydGVkIHRoZSBmcmVzaAorKDEwKS0+TFBbM10gbGVhZi4gIEEgY29uY3Vy cmVudCBJTlNFUlQgKGE9MTApIHJ1bm5pbmcgaXRzIF9idF9jaGVja191bmlxdWUgc2Nhbgor aW4gdGhhdCB3aW5kb3cgc2VlcyBvbmx5IHRoZSBzdGFsZSAoMTApLT5MUFsxXSBhbmNlc3Rv ci4gIFRoZSB2YWx1ZSByZWNoZWNrCitiZWxvdyBtYWtlcyB0aGF0IGhpdCByZXNvbHZlIHRv IHh3YWl0IG9uIHRoZSBpbi1mbGlnaHQgdXBkYXRlciAodmlhCitfYnRfZG9pbnNlcnQncyB3 YWl0LWFuZC1yZWNoZWNrKSwgc28gdGhlIGluc2VydGVyIHJlLWNoZWNrcyBhZnRlciB0aGUg dXBkYXRlcgorY29tbWl0cyBhbmQgZmluZHMgdGhlIGNvbmZsaWN0LiAgQSBiaXRtYXAtb25s eSB2ZXJkaWN0IHdvdWxkIHNraXAgdGhlIGFuY2VzdG9yCitiZWZvcmUgcmVhY2hpbmcgdGhl IHh3YWl0IGxvZ2ljIGFuZCBhZG1pdCBhIGR1cGxpY2F0ZSAtLSB3aGljaCBpcyB3aHkgdGhl CityZWNoZWNrIGlzIGEgY29ycmVjdG5lc3MgcmVxdWlyZW1lbnQsIG5vdCBtZXJlbHkgYW4g b3B0aW1pemF0aW9uLgorCiszLiBXaHkgYSB2YWx1ZSBjb21wYXJpc29uIGZpeGVzIGl0LCBh bmQgd2h5IGl0IG11c3QgYmUgdGhlIG9wY2xhc3MgY29tcGFyYXRvcgorCitTbyB0aGUgdW5p cXVlIHBhdGggbmVlZHMgdG8gbG9vayBhdCB0aGUgYWN0dWFsIGxpdmUgdmFsdWUsIG5vdCBq dXN0ICJkaWQKK3NvbWV0aGluZyBjaGFuZ2UuIiAgX2J0X2NoZWNrX3VuaXF1ZSBmZXRjaGVz IHRoZSBjb25mbGljdGluZyB0dXBsZSB1bmRlcgorU25hcHNob3REaXJ0eSBhbmQsIHdoZW4g aGlfcmVjaGVjayBzYXlzIGEgSE9ULWluZGV4ZWQgaG9wIHdhcyBjcm9zc2VkLCBjYWxscwor X2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmIHRvIGNvbXBhcmUgdGhlIGxpdmUgdHVwbGUncyBj dXJyZW50IGtleSBhZ2FpbnN0IHRoZQorYXJyaXZpbmcgbGVhZidzIHN0b3JlZCBrZXk6CisK KyAtIGxpdmUga2V5IGVxdWFscyB0aGUgbGVhZiBrZXkgLT4gZ2VudWluZSBkdXBsaWNhdGUg KG9yIGFuIGluLWZsaWdodCBjb25mbGljdAorICAgcmVhY2hlZCBhcyB4d2FpdCkgLS0gY29y cmVjdDogQUJBIGJhY2sgdG8gWCBpcyBhIHJlYWwgY29uZmxpY3Qgd2l0aCBhIG5ldyBYLgor IC0gbGl2ZSBrZXkgZGlmZmVycyAtPiB0aGUgbGVhZiBpcyB0cnVseSBzdGFsZSAtPiBza2lw IGl0ICh0aGUgZnJlc2ggZW50cnkKKyAgIGhhbmRsZXMgdGhlIHJlYWwgcm93KS4KKworV2hp Y2ggZXF1YWxpdHk/ICBUd28gY2FuZGlkYXRlczoKKworQml0d2lzZS9pbWFnZSBjb21wYXJp c29uIChkYXR1bV9pbWFnZV9lcSkgY29tcGFyZXMgcmF3IGJ5dGVzLiAgVGhhdCBpcyB3cm9u ZworZm9yIHVuaXF1ZSBjaGVja2luZyBpbiB0aGUgZGFuZ2Vyb3VzIGRpcmVjdGlvbi4gIFVu aXF1ZW5lc3MgaW4gUG9zdGdyZVNRTCBpcworZGVmaW5lZCBieSB0aGUgaW5kZXggb3BjbGFz cydzIGVxdWFsaXR5IG9wZXJhdG9yLCBub3QgYnl0ZSBpZGVudGl0eSwgYW5kIG1hbnkKK3R5 cGVzIGhhdmUgdmFsdWVzIGVxdWFsIHVuZGVyIHRoZSBvcGNsYXNzIGJ1dCBieXRlLWRpc3Rp bmN0OgorIC0gbnVtZXJpYzogMS4wIGFuZCAxLjAwIGFyZSBvcGNsYXNzLWVxdWFsLCBkaWZm ZXJlbnQgb24tZGlzayBieXRlcy4KKyAtIGZsb2F0ODogLTAuMCBhbmQgKzAuMCBhcmUgZXF1 YWwsIGRpZmZlcmVudCBiaXQgcGF0dGVybnMuCisgLSB0ZXh0L2NpdGV4dCB1bmRlciBhIG5v bmRldGVybWluaXN0aWMgY29sbGF0aW9uOiBjYW5vbmljYWxseS1lcXVpdmFsZW50CisgICBz dHJpbmdzIHRoYXQgYXJlIG5vdCBieXRlLWlkZW50aWNhbC4KKworQSBiaXR3aXNlIGNvbXBh cmlzb24gd291bGQgY29uY2x1ZGUgIm5vdCBlcXVhbCA9PiBzdGFsZSA9PiBza2lwIiBmb3Ig YSBsaXZlCisxLjAwIHZlcnN1cyBhbiBpbnNlcnRlZCAxLjAgYW5kIG1pc3MgYSBnZW51aW5l IHZpb2xhdGlvbiAtLSBhIGNvcnJlY3RuZXNzIGhvbGUKK2FzIGJhZCBhcyB0aGUgQUJBIG9u ZS4KKworU28gX2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmIHVzZXMgdGhlIGluZGV4J3Mgb3du IEJUT1JERVJfUFJPQyAoYnRyZWUgc3VwcG9ydAorZnVuY3Rpb24gMSkgdW5kZXIgZWFjaCBr ZXkgY29sdW1uJ3MgY29sbGF0aW9uLCB0aGUgc2FtZSBtYWNoaW5lcnkgX2J0X2NvbXBhcmUK K2FuZCBfYnRfbWtzY2Fua2V5IHVzZSB0byBkZWZpbmUgZXF1YWxpdHkgZm9yIHRoZSBpbmRl eC4gIEEgemVybyByZXN1bHQgbWVhbnMKKyJlcXVhbCBhcyB0aGUgaW5kZXggZGVmaW5lcyBl cXVhbGl0eSwiIHdoaWNoIGlzIHByZWNpc2VseSB0aGUgdW5pcXVlLXZpb2xhdGlvbgorY29u ZGl0aW9uLCBhbmQgdGhlIHZlcmRpY3QgYWdyZWVzIHdpdGggdGhlIGluZGV4J3Mgb3duIG5v dGlvbiBvZiB1bmlxdWVuZXNzIGluCitib3RoIGRpcmVjdGlvbnMuCisKKzQuIFdoeSBubyBl eHByZXNzaW9uIGV2YWx1YXRpb24gaXMgbmVlZGVkCisKK19idF9oZWFwX2tleXNfZXF1YWxf bGVhZiByZWFkcyBlYWNoIGtleSBjb2x1bW4gc3RyYWlnaHQgZnJvbSB0aGUgaGVhcCBzbG90 Cisoc2xvdF9nZXRhdHRyKSBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIGxlYWYgZGF0dW07IGl0 IGRvZXMgbm90IGV2YWx1YXRlIGluZGV4ZWQKK2V4cHJlc3Npb25zIGFuZCBuZWVkcyBubyBl eGVjdXRvciBzdGF0ZS4gIFRoYXQgaXMgc3VmZmljaWVudCBiZWNhdXNlIHRoZQorcmVjaGVj ayBpcyBvbmx5IGV2ZXIgcmVhY2hlZCBmb3IgYW4gaW5kZXggcmVjZWl2aW5nIGEgZnJlc2gg ZW50cnkgZHVyaW5nIGEKK0hPVC1pbmRleGVkIHVwZGF0ZSwgYW5kIEhlYXBVcGRhdGVIb3RB bGxvd2FibGUgZGlzcXVhbGlmaWVzIGFueSBVUERBVEUgdGhhdAordG91Y2hlcyBhbiBhdHRy aWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uIGluZGV4CisoSU5ERVhfQVRUUl9C SVRNQVBfRVhQUkVTU0lPTiBjYXB0dXJlcyBldmVyeSBzdWNoIGF0dHJpYnV0ZSkuICBTbyBh IEhPVC1pbmRleGVkCitjaGFpbiBuZXZlciBoYXMgYSBjcm9zc2VkIGhvcCBhZmZlY3Rpbmcg YW4gZXhwcmVzc2lvbiBpbmRleCwgdGhlIGluZGV4IHJlYWNoaW5nCit0aGUgcmVjaGVjayBu ZXZlciBoYXMgYW4gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkgaXMgYSBy ZWFsCithdHRyaWJ1dGUgbnVtYmVyKSwgYW5kIHRoZXJlIGlzIG5vdGhpbmcgdG8gZXZhbHVh dGUuICBJZiBzZWxlY3RpdmUgbWFpbnRlbmFuY2UKK29mIGV4cHJlc3Npb24gaW5kZXhlcyBp cyBpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlLCB0aGlzIGlzIHdoZXJlIGFuCitleHByZXNz aW9uLWV2YWx1YXRpbmcgY29tcGFyaXNvbiAoZS5nLiBGb3JtSW5kZXhEYXR1bSkgd291bGQg YmUgcmVpbnRyb2R1Y2VkLgorCis1LiBXaHkgdGhlIGFzeW1tZXRyeSAoYml0bWFwIG9uIHJl YWQsIHZhbHVlIHJlY2hlY2sgb24gdW5pcXVlKSBpcyBpbnRlbnRpb25hbAorCitJdCBsb29r cyBsaWtlIHR3byBkaWZmZXJlbnQgYW5zd2VycyB0byB0aGUgc2FtZSBxdWVzdGlvbiwgYnV0 IHRoZSBxdWVzdGlvbnMKK2RpZmZlcjoKKworIC0gUmVhZC9zY2FuIHBhdGg6ICJzaG91bGQg dGhpcyByb3cgYmUgcmV0dXJuZWQ/IiAgQSBzdGFsZSBlbnRyeSBpcyByZWR1bmRhbnQKKyAg ICh0aGUgZnJlc2ggZW50cnkgc3VwcGxpZXMgdGhlIHJvdyksIHNvIHRoZSBjb25zZXJ2YXRp dmUgYml0bWFwIHZlcmRpY3QgaXMKKyAgIHN1ZmZpY2llbnQgLS0gd29yc3QgY2FzZSB1bmRl ciBBQkEgeW91IGRyb3AgYSByZWR1bmRhbnQgZW50cnkgYW5kIHRoZSBmcmVzaAorICAgb25l IHN0aWxsIHJldHVybnMgdGhlIHJvdy4gIE5vIHZhbHVlIGNvbXBhcmlzb24sIHNvIHJlYWRz IHN0YXkKKyAgIGFjY2Vzcy1tZXRob2QtYWdub3N0aWMgYW5kIGNoZWFwLgorIC0gVW5pcXVl LWNoZWNrIHBhdGg6ICJpcyB0aGlzIGEgY29uZmxpY3Q/IiAgQSB3cm9uZyAic3RhbGUiIHZl cmRpY3QgaGVyZSBkb2VzCisgICBub3QganVzdCBkcm9wIGEgcmVkdW5kYW50IGVudHJ5OyBp dCBzaWxlbnRseSBhZG1pdHMgYSBkdXBsaWNhdGUsIGNvcnJ1cHRpbmcKKyAgIHRoZSBjb25z dHJhaW50LiAgSXQgY2Fubm90IHRvbGVyYXRlIHRoZSBiaXRtYXAncyBmYWxzZSAic3RhbGUi IHVuZGVyIEFCQSBhbmQKKyAgIG11c3QgY29uc3VsdCB0aGUgbGl2ZSB2YWx1ZSAob3Igd2Fp dCBvbiBhbiBpbi1mbGlnaHQgdXBkYXRlcikgdmlhIHRoZQorICAgb3BjbGFzcyBjb21wYXJh dG9yLgorCitUaGUgYml0bWFwIGlzIGEgZmlsdGVyIChhIG5lY2Vzc2FyeSBjb25kaXRpb246 ICJjb3VsZCBiZSBzdGFsZSIpOyB0aGUgb3BjbGFzcworcmVjaGVjayBpcyB0aGUgYXV0aG9y aXR5ICh0aGUgc3VmZmljaWVudCBjb25kaXRpb246ICJpcyB0aGUgbGl2ZSBrZXkgYWN0dWFs bHkKK2RpZmZlcmVudCwgb3IgaXMgYSBjb25mbGljdGluZyB1cGRhdGUgaW4gZmxpZ2h0Iiku ICBUaGUgdW5pcXVlIHBhdGggbGF5ZXJzIHRoZQorYXV0aG9yaXR5IG9uIHRvcCBvZiB0aGUg ZmlsdGVyIHByZWNpc2VseSBiZWNhdXNlIGl0cyBlcnJvciBtb2RlIGlzCit1bmZvcmdpdmlu Zy4KKworSW4gb25lIHNlbnRlbmNlOiB0aGUgdW5pcXVlIGNoZWNrIGNvbXBhcmVzIHRoZSBs aXZlIHR1cGxlJ3MgY3VycmVudCBrZXkgdG8gdGhlCithcnJpdmluZyBsZWFmIHdpdGggdGhl IGluZGV4J3Mgb3duIGVxdWFsaXR5IChub3QgYnl0ZXMpIGJlY2F1c2UgdGhlCitjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAgY2FuIG9ubHkgc2F5ICJzb21ldGhpbmcgY2hhbmdlZCIgLS0g dHJ1ZSB1bmRlciBhbgorWC0+WS0+WCBjeWNsZSBldmVuIHRob3VnaCB0aGUgdmFsdWUgaXMg YmFjayB0byBYIC0tIGFuZCBvbmx5IGFuIG9wY2xhc3MtY29ycmVjdAordmFsdWUgY29tcGFy aXNvbiAod2hpY2ggYWxzbyByb3V0ZXMgYW4gaW4tZmxpZ2h0IHJlc3RvcmluZyB1cGRhdGUg dG8geHdhaXQpIGNhbgorYm90aCByZWNvZ25pemUgdGhlIGN5Y2xlZC1iYWNrIHZhbHVlIGFz IGEgZ2VudWluZSBkdXBsaWNhdGUgYW5kIGNhdGNoCitkdXBsaWNhdGVzIHRoYXQgYXJlIG9w Y2xhc3MtZXF1YWwgYnV0IG5vdCBieXRlLWlkZW50aWNhbCwgZWl0aGVyIG9mIHdoaWNoIGEK K2JpdG1hcCBvciBhIGJpdHdpc2UgY29tcGFyaXNvbiB3b3VsZCBnZXQgd3JvbmcuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDViMDU5YTVhY2VmLi4zYmZhYzhjMGIxOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2FzdC5oIgog I2luY2x1ZGUgImFjY2Vzcy9oaW8uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQu aCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1 YnRyYW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCkBAIC00NCwxMyArNDUs MTQgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMvbG9ja29w dGlvbnMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2JpdHV0 aWxzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKQEAg LTc4LDYgKzgwLDggQEAgc3RhdGljIHZvaWQgY2hlY2tfaW5wbGFjZV9yZWxfbG9jayhIZWFw VHVwbGUgb2xkdHVwKTsKICNlbmRpZgogc3RhdGljIEJpdG1hcHNldCAqSGVhcFVwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCSBIZWFwVHVw bGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwKTsKK3N0YXRpYyBIZWFwVHVwbGUgaGVhcF9m b3JtX2hvdF9pbmRleGVkX3R1cGxlKEhlYXBUdXBsZSB0dXAsIGludCByZWxuYXR0cywKKwkJ CQkJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiBzdGF0 aWMgYm9vbCBoZWFwX2FjcXVpcmVfdHVwbG9jayhSZWxhdGlvbiByZWxhdGlvbiwgY29uc3Qg SXRlbVBvaW50ZXJEYXRhICp0aWQsCiAJCQkJCQkJCSBMb2NrVHVwbGVNb2RlIG1vZGUsIExv Y2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCAqaGF2ZV90dXBsZV9s b2NrKTsKQEAgLTIxMDksOSArMjExMywyOCBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxh dGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJICogSWYgdGhpcyBpcyB0 aGUgc2luZ2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLCB3ZSBjYW4gcmVpbml0IHRoZQog CQkgKiBwYWdlIGluc3RlYWQgb2YgcmVzdG9yaW5nIHRoZSB3aG9sZSB0aGluZy4gIFNldCBm bGFnLCBhbmQgaGlkZQogCQkgKiBidWZmZXIgcmVmZXJlbmNlcyBmcm9tIFhMb2dJbnNlcnQu CisJCSAqCisJCSAqIEFsc28gcmVxdWlyZSB0aGF0IHRoZSBwYWdlJ3MgdHVwbGUgYXJlYSBj b250YWlucyBub3RoaW5nIG90aGVyIHRoYW4KKwkJICogdGhpcyB0dXBsZS4gIFZhY3V1bSdz IGxwX3RydW5jYXRlX29ubHkgc2Vjb25kIHBhc3MKKwkJICogKFBSVU5FX1ZBQ1VVTV9DTEVB TlVQKSBkb2VzIG5vdCBjYWxsIFBhZ2VSZXBhaXJGcmFnbWVudGF0aW9uLCBzbyBhCisJCSAq IHBhZ2UgY2FuIGxlZ2l0aW1hdGVseSBlbmQgdXAgd2l0aCBvbmUgTFBfVU5VU0VEIHNsb3Qg YXQgb2Zmc2V0IDEKKwkJICogcGx1cyBvcnBoYW4gdHVwbGUgYnl0ZXMgbGVmdCBvdmVyIGZy b20gdGhlIHByZXZpb3VzIGxpZmV0aW1lLiBJZgorCQkgKiBoZWFwX2luc2VydCByZXVzZXMg dGhhdCBMUF9VTlVTRUQgc2xvdCwgcHJpbWFyeSdzIHBhZ2Uga2VlcHMgdGhlCisJCSAqIG9y cGhhbiBieXRlcyB3aGlsZSBhIHN0YW5kYnkgcmVwbGF5aW5nIElOU0VSVCtJTklUIHplcm9l cyB0aGVtLgorCQkgKiBFbWl0dGluZyBJTlNFUlQrSU5JVCBpbiB0aGF0IGNhc2UgdHJpcHMg d2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nLgorCQkgKiBGYWxsaW5nIGJhY2sgdG8gYSByZWd1 bGFyIElOU0VSVCAod2l0aCB0aGUgRlBJIG9uIGZpcnN0IHRvdWNoIGFmdGVyCisJCSAqIGEg Y2hlY2twb2ludCkga2VlcHMgcmVwbGF5IGJ5dGUtaWRlbnRpY2FsIHdpdGhvdXQgc2Fjcmlm aWNpbmcgY3Jhc2gKKwkJICogc2FmZXR5LgorCQkgKgorCQkgKiBOT1RFOiBoZWFwX211bHRp X2luc2VydCgpIGRvZXMgbm90IG5lZWQgdGhpcyBleHRyYSBjaGVjazogaXQgdXNlcyB0aGUK KwkJICogc2ltcGxlciBzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgKFBhZ2VHZXRNYXhPZmZz ZXROdW1iZXIocGFnZSkgPT0gMCkKKwkJICogZ2F0ZSBmb3IgaXRzIG93biBJTklUX1BBR0Ug ZGVjaXNpb24sIGJlY2F1c2UgYnkgY29uc3RydWN0aW9uIGl0IGlzCisJCSAqIG5ldmVyIGhh bmRlZCBhIHBhZ2Ugd2l0aCBsZWZ0b3ZlciBvcnBoYW4gYnl0ZXMgZnJvbSBhIHByaW9yIGxp ZmV0aW1lLgogCQkgKi8KIAkJaWYgKEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCYoaGVh cHR1cC0+dF9zZWxmKSkgPT0gRmlyc3RPZmZzZXROdW1iZXIgJiYKLQkJCVBhZ2VHZXRNYXhP ZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXROdW1iZXIpCisJCQlQYWdlR2V0TWF4 T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkoKFBhZ2VI ZWFkZXIpIHBhZ2UpLT5wZF91cHBlciA9PQorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRf c3BlY2lhbCAtIE1BWEFMSUdOKGhlYXB0dXAtPnRfbGVuKSkKIAkJewogCQkJaW5mbyB8PSBY TE9HX0hFQVBfSU5JVF9QQUdFOwogCQkJYnVmZmxhZ3MgfD0gUkVHQlVGX1dJTExfSU5JVDsK QEAgLTMyMDIsOSArMzIyNSwxMSBAQCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKQogICovCiBUTV9SZXN1bHQKIGhl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSBuZXd0dXAsCi0JCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cyBwZ19hdHRyaWJ1dGVfdW51c2VkKCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2Fp dCwKKwkJCUNvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zIHBnX2F0dHJpYnV0ZV91bnVz ZWQoKSwKKwkJCVNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCVRNX0ZhaWx1 cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVwbGVNb2RlIGxvY2ttb2RlLAotCQkJY29uc3Qg Qml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQp CisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKKwkJCUhlYXBVcGRh dGVJbmRleE1vZGUgaG90X21vZGUpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUcmFuc2Fj dGlvbklkIHhpZCA9IEdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CkBAIC0zMjMwLDYgKzMy NTUsOSBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVwLAogCWJvb2wJCWhhdmVfdHVwbGVfbG9j ayA9IGZhbHNlOwogCWJvb2wJCWlzY29tYm87CiAJYm9vbAkJdXNlX2hvdF91cGRhdGUgPSBm YWxzZTsKKwlib29sCQlob3RfaW5kZXhlZCA9IGZhbHNlOwkvKiBIT1QtaW5kZXhlZCB1cGRh dGUgKG1vZGlmaWVkIGFuCisJCQkJCQkJCQkJICogaW5kZXhlZCBhdHRyIGJ1dCBzdGF5ZWQg SE9UKSAqLworCVNpemUJCWhpX2JtYnl0ZXMgPSAwOyAvKiB0cmFpbGluZyBtb2RpZmllZC1h dHRycyBiaXRtYXAgc2l6ZSwgaWYgYW55ICovCiAJYm9vbAkJa2V5X2ludGFjdDsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xl YXJlZF9uZXcgPSBmYWxzZTsKQEAgLTM3OTQsNiArMzgyMiwzOCBAQCBsMjoKIAogCW5ld3R1 cHNpemUgPSBNQVhBTElHTihuZXd0dXAtPnRfbGVuKTsKIAorCS8qCisJICogS2VlcCBIT1Qt aW5kZXhlZCAoU0lVKSBjaGFpbnMgdW5pZm9ybS4gIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg cmV0dXJucworCSAqIEhFQVBfSEVBUF9PTkxZX1VQREFURSB3aGVuZXZlciB0aGlzIHVwZGF0 ZSBtb2RpZmllcyBubyBpbmRleGVkCisJICogYXR0cmlidXRlLiAgQnV0IGlmIHRoZSB0dXBs ZSBiZWluZyB1cGRhdGVkIGlzIGFscmVhZHkgYSBIT1QtaW5kZXhlZAorCSAqIGNoYWluIG1l bWJlciAoaXQgY2FycmllcyBIRUFQX0lOREVYRURfVVBEQVRFRCksIGVtaXR0aW5nIGEgY2xh c3NpYy1IT1QKKwkgKiB2ZXJzaW9uIHdvdWxkIHNwbGljZSBhIG5vbi1IRUFQX0lOREVYRURf VVBEQVRFRCB0dXBsZSBpbnRvIHRoZSBjaGFpbi4KKwkgKiBUaGUgcHJ1bmUvY29sbGFwc2Ug bWFjaGluZXJ5IGZvcndhcmRzIG9ubHkgSEVBUF9JTkRFWEVEX1VQREFURUQgbWVtYmVycwor CSAqIHRocm91Z2ggYnJpZGdlcywgc28gc3VjaCBhIGNsYXNzaWMtSE9UIHZlcnNpb24sIG9u Y2UgaXQgZGllcyBtaWQKKwkgKiBjb2xsYXBzZWQtY2hhaW4sIGhhcyBubyBoYW5kbGVyIGFu ZCB0cmlwcyB0aGUgIm5vdCBsaW5rZWQgdG8gZnJvbSBhbnkKKwkgKiBIT1QgY2hhaW4iIGVy cm9yLiAgUHJvbW90ZSB0byBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgaW5zdGVhZDog d2l0aCBhbgorCSAqIGVtcHR5IG1vZGlmaWVkLWF0dHJzIHNldCB0aGUgbmV3IHZlcnNpb24g Y2FycmllcyBIRUFQX0lOREVYRURfVVBEQVRFRAorCSAqIGFuZCBhbiBlbXB0eSBpbmxpbmUt dHJhaWxpbmcgYml0bWFwLCBpbnNlcnRzIGludG8gbm8gaW5kZXggKG5vdGhpbmcKKwkgKiBj aGFuZ2VkKSwgYW5kIGtlZXBzIGV2ZXJ5IGNoYWluIG1lbWJlciB1bmlmb3JtLiAgQ2F0YWxv ZyByZWxhdGlvbnMgYXJlCisJICogY2xhc3NpYy1IT1Qgb25seSBhbmQgbmV2ZXIgY2Fycnkg SEVBUF9JTkRFWEVEX1VQREFURUQsIHNvIHRoaXMgbmV2ZXIKKwkgKiBmaXJlcyBmb3IgdGhl bS4KKwkgKi8KKwlpZiAoaG90X21vZGUgPT0gSEVBUF9IRUFQX09OTFlfVVBEQVRFICYmCisJ CShvbGR0dXAudF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwKQorCQlob3RfbW9kZSA9IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURTsKKworCS8q CisJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgYXBwZW5kcyBhIGZpeGVkLXNpemUgaW5saW5l LXRyYWlsaW5nCisJICogbW9kaWZpZWQtYXR0cnMgYml0bWFwIHRvIHRoZSBuZXcgdHVwbGUg KHNlZSBhY2Nlc3MvaG90X2luZGV4ZWQuaCkuCisJICogUmVzZXJ2ZSByb29tIGZvciBpdCBp biB0aGUgcGFnZS1maXQgY2FsY3VsYXRpb24gbm93LCB3aGlsZSB3ZSBzdGlsbAorCSAqIG1p Z2h0IHRha2UgdGhlIHNhbWUtcGFnZSBIT1QgcGF0aDsgaWYgdGhlIHVwZGF0ZSBsYXRlciBk cm9wcyB0byBub24tSE9UCisJICogKHRoZSB0dXBsZSBkb2VzIG5vdCBmaXQgb24gdGhlIHBh Z2UpIGl0IGlzIHN0b3JlZCB3aXRob3V0IHRoZSBiaXRtYXAgYW5kCisJICogdGhlIHJlc2Vy dmF0aW9uIGlzIHNpbXBseSBjb25zZXJ2YXRpdmUuCisJICovCisJaWYgKGhvdF9tb2RlID09 IEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSkKKwkJaGlfYm1ieXRlcyA9IEhvdEluZGV4 ZWRCaXRtYXBCeXRlcyhSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhyZWxhdGlvbikp OworCW5ld3R1cHNpemUgPSBNQVhBTElHTihuZXd0dXAtPnRfbGVuICsgaGlfYm1ieXRlcyk7 CisKIAlpZiAobmVlZF90b2FzdCB8fCBuZXd0dXBzaXplID4gcGFnZWZyZWUpCiAJewogCQlU cmFuc2FjdGlvbklkIHhtYXhfbG9ja19vbGRfdHVwbGU7CkBAIC0zODkxLDcgKzM5NTEsNyBA QCBsMjoKIAkJewogCQkJLyogTm90ZSB3ZSBhbHdheXMgdXNlIFdBTCBhbmQgRlNNIGR1cmlu ZyB1cGRhdGVzICovCiAJCQloZWFwdHVwID0gaGVhcF90b2FzdF9pbnNlcnRfb3JfdXBkYXRl KHJlbGF0aW9uLCBuZXd0dXAsICZvbGR0dXAsIDApOwotCQkJbmV3dHVwc2l6ZSA9IE1BWEFM SUdOKGhlYXB0dXAtPnRfbGVuKTsKKwkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVw LT50X2xlbiArIGhpX2JtYnl0ZXMpOwogCQl9CiAJCWVsc2UKIAkJCWhlYXB0dXAgPSBuZXd0 dXA7CkBAIC0zOTkyLDEwICs0MDUyLDEwIEBAIGwyOgogCXsKIAkJLyoKIAkJICogU2luY2Ug dGhlIG5ldyB0dXBsZSBpcyBnb2luZyBpbnRvIHRoZSBzYW1lIHBhZ2UsIHdlIG1pZ2h0IGJl IGFibGUKLQkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBp bmRleCBjb2x1bW5zIGhhdmUgYmVlbgotCQkgKiBjaGFuZ2VkLgorCQkgKiB0byBkbyBhIEhP VCB1cGRhdGUuICBDaGVjayBpZiBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgaGFzCisJCSAq IHNhbmN0aW9uZWQgaXQgKEhFQVBfSEVBUF9PTkxZX1VQREFURSBvciBIRUFQX1NFTEVDVElW RV9JTkRFWF9VUERBVEUpLgogCQkgKi8KLQkJaWYgKGhvdF9hbGxvd2VkKQorCQlpZiAoaG90 X21vZGUgIT0gSEVBUF9VUERBVEVfQUxMX0lOREVYRVMpCiAJCQl1c2VfaG90X3VwZGF0ZSA9 IHRydWU7CiAJfQogCWVsc2UKQEAgLTQwMDQsNiArNDA2NCwyNyBAQCBsMjoKIAkJUGFnZVNl dEZ1bGwocGFnZSk7CiAJfQogCisJLyoKKwkgKiBGb3IgYSBzYW1lLXBhZ2UgSE9ULWluZGV4 ZWQgdXBkYXRlLCByZXBsYWNlIGhlYXB0dXAgd2l0aCBhIGNvcHkgdGhhdAorCSAqIGNhcnJp ZXMgdGhlIGlubGluZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAgKGFuZAorCSAq IEhFQVBfSU5ERVhFRF9VUERBVEVEKS4gIERvbmUgaGVyZSwgb3V0c2lkZSB0aGUgY3JpdGlj YWwgc2VjdGlvbiwKKwkgKiBiZWNhdXNlIGl0IGFsbG9jYXRlczsgdGhlIGJpdG1hcCdzIHNp emUgd2FzIHJlc2VydmVkIGluIG5ld3R1cHNpemUKKwkgKiBhYm92ZS4gIE9ubHkgdGhlIHN0 b3JlZCB0dXBsZSAoaGVhcHR1cCkgZ2V0cyB0aGUgYml0bWFwIGFuZCB0aGUgZmxhZzsKKwkg KiB0aGUgY2FsbGVyJ3MgbmV3dHVwIG11c3QgTk9UIGJlIG1hcmtlZCBIRUFQX0lOREVYRURf VVBEQVRFRCwgYmVjYXVzZSBpdAorCSAqIGhhcyBubyB0cmFpbGluZyBiaXRtYXAgLS0gc2Vl IHRoZSBmbGFnIGhhbmRsaW5nIGJlbG93LgorCSAqLworCWlmICh1c2VfaG90X3VwZGF0ZSAm JiBob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJeworCQlIZWFw VHVwbGUJZXh0OworCisJCWV4dCA9IGhlYXBfZm9ybV9ob3RfaW5kZXhlZF90dXBsZShoZWFw dHVwLAorCQkJCQkJCQkJCSAgUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRp b24pLAorCQkJCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJaWYgKGhlYXB0dXAg IT0gbmV3dHVwKQorCQkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CisJCWhlYXB0dXAgPSBl eHQ7CisJfQorCiAJLyoKIAkgKiBDb21wdXRlIHJlcGxpY2EgaWRlbnRpdHkgdHVwbGUgYmVm b3JlIGVudGVyaW5nIHRoZSBjcml0aWNhbCBzZWN0aW9uIHNvCiAJICogd2UgZG9uJ3QgUEFO SUMgdXBvbiBhIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCkBAIC00MDQwLDYgKzQxMjEs MjkgQEAgbDI6CiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5KGhlYXB0dXApOwogCQkvKiBNYXJr IHRoZSBjYWxsZXIncyBjb3B5IHRvbywgaW4gY2FzZSBkaWZmZXJlbnQgZnJvbSBoZWFwdHVw ICovCiAJCUhlYXBUdXBsZVNldEhlYXBPbmx5KG5ld3R1cCk7CisKKwkJLyoKKwkJICogRm9y IGEgSE9ULWluZGV4ZWQgdXBkYXRlLCB0aGUgbmV3IGxpdmUgdHVwbGUgY2FycmllcworCQkg KiBIRUFQX0lOREVYRURfVVBEQVRFRCBzbyBpbmRleCBzY2FucyB3YWxraW5nIHRoZSBjaGFp biBrbm93IGl0IGlzIGEKKwkJICogSE9ULWluZGV4ZWQgaG9wIGNhcnJ5aW5nIGFuIGlubGlu ZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAuCisJCSAqCisJCSAqIFNldCB0aGUg ZmxhZyBvbmx5IG9uIGhlYXB0dXAsIHRoZSB2ZXJzaW9uIGFjdHVhbGx5IHN0b3JlZCBvbiB0 aGUKKwkJICogcGFnZTogaGVhcHR1cCBjYXJyaWVzIHRoZSB0cmFpbGluZyBiaXRtYXAsIHNv IHRoZSBmbGFnJ3MgcHJvbWlzZSAoYQorCQkgKiBiaXRtYXAgb2NjdXBpZXMgdGhlIGZpbmFs IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YgdGhlCisJCSAqIGl0ZW0p IGhvbGRzLiAgVGhlIGNhbGxlcidzIG5ld3R1cCBpcyBhIHNlcGFyYXRlIGluLW1lbW9yeSB0 dXBsZQorCQkgKiB3aG9zZSB0X2xlbiBkb2VzIG5vdCBpbmNsdWRlIHRoZSBiaXRtYXA7IG1h cmtpbmcgaXQKKwkJICogSEVBUF9JTkRFWEVEX1VQREFURUQgd291bGQgYXNzZXJ0IGEgdHJh aWxpbmcgYml0bWFwIHRoYXQgaXMgbm90CisJCSAqIHRoZXJlLCBzbyBhbnkgbGF0ZXIgcmVh ZGVyIHVzaW5nIEl0ZW1JZEdldExlbmd0aCgpLXJlbGF0aXZlIGFjY2VzcworCQkgKiB3b3Vs ZCBtaXNyZWFkIGF0dHJpYnV0ZSBkYXRhIGFzIHRoZSBiaXRtYXAuICBXZSB0aGVyZWZvcmUg bGVhdmUKKwkJICogbmV3dHVwJ3MgZmxhZyBjbGVhci4gIE5vdGhpbmcgcmVhZHMgdGhlIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcCBvZmYgYW4KKwkJICogaW4tbWVtb3J5IHR1cGxlOyBldmVy eSBjb25zdW1lciByZWFkcyBpdCBmcm9tIHRoZSBwYWdlIHZpYSB0aGUgbGluZQorCQkgKiBw b2ludGVyJ3MgbGVuZ3RoLgorCQkgKi8KKwkJaWYgKGhvdF9tb2RlID09IEhFQVBfU0VMRUNU SVZFX0lOREVYX1VQREFURSkKKwkJeworCQkJaGVhcHR1cC0+dF9kYXRhLT50X2luZm9tYXNr MiB8PSBIRUFQX0lOREVYRURfVVBEQVRFRDsKKwkJCWhvdF9pbmRleGVkID0gdHJ1ZTsKKwkJ fQogCX0KIAllbHNlCiAJewpAQCAtNDE0NCw3ICs0MjQ4LDggQEAgbDI6CiAJaWYgKGhhdmVf dHVwbGVfbG9jaykKIAkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50 X3NlbGYpLCBsb2NrbW9kZSk7CiAKLQlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVsYXRp b24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKKwlwZ3N0YXRfY291bnRf aGVhcF91cGRhdGUocmVsYXRpb24sIHVzZV9ob3RfdXBkYXRlLCBob3RfaW5kZXhlZCwKKwkJ CQkJCQkgbmV3YnVmICE9IGJ1ZmZlcik7CiAKIAkvKgogCSAqIElmIGhlYXB0dXAgaXMgYSBw cml2YXRlIGNvcHksIHJlbGVhc2UgaXQuICBEb24ndCBmb3JnZXQgdG8gY29weSB0X3NlbGYK QEAgLTQyOTAsNyArNDM5NSw3IEBAIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVhcFR1cGxl IG9sZHR1cCkKIAogLyoKICAqIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlJ3Mg dmFsdWVzIGFyZSB0aGUgc2FtZS4gIFN1YnJvdXRpbmUgZm9yCi0gKiBIZWFwRGV0ZXJtaW5l Q29sdW1uc0luZm8uCisgKiBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycy4KICAqLwogc3Rh dGljIGJvb2wKIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBhdHRy bnVtLCBEYXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKQEAgLTQzMzQsNjMgKzQ0MzksMTAz IEBAIGhlYXBfYXR0cl9lcXVhbHMoVHVwbGVEZXNjIHR1cGRlc2MsIGludCBhdHRybnVtLCBE YXR1bSB2YWx1ZTEsIERhdHVtIHZhbHVlMiwKIH0KIAogLyoKLSAqIEhPVCB1cGRhdGVzIGFy ZSBwb3NzaWJsZSB3aGVuIGVpdGhlcjogYSkgdGhlcmUgYXJlIG5vIG1vZGlmaWVkIGluZGV4 ZWQKLSAqIGF0dHJpYnV0ZXMsIG9yIGIpIHRoZSBtb2RpZmllZCBhdHRyaWJ1dGVzIGFyZSBh bGwgb24gc3VtbWFyaXppbmcgaW5kZXhlcy4KLSAqIExhdGVyLCBpbiBoZWFwX3VwZGF0ZSgp LCB3ZSBjYW4gY2hvb3NlIHRvIHBlcmZvcm0gYSBIT1QgdXBkYXRlIGlmIHRoZXJlIGlzCi0g KiBzcGFjZSBvbiB0aGUgcGFnZSBmb3IgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIGZvbGxvd2lu ZyBjb2RlIGhhcyBkZXRlcm1pbmVkCi0gKiB0aGF0IEhPVCBpcyBhbGxvd2VkLgorICogSGVh cFVwZGF0ZUhvdEFsbG93YWJsZSAtLQorICoKKyAqIENsYXNzaWZ5IGFuIFVQREFURSBmb3Ig SE9UIGVsaWdpYmlsaXR5IGZyb20gdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMKKyAq IGl0IGNoYW5nZWQgKG1vZGlmaWVkX2lkeF9hdHRycywgY29tcHV0ZWQgYnkgdGhlIGV4ZWN1 dG9yKToKKyAqCisgKiAgIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTICAgSE9UIGlzIG5vdCBw ZXJtaXR0ZWQ7IHRoZSBuZXcgdHVwbGUgZ29lcyBvbiBhCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJlc2ggVElEIGFuZCBldmVyeSBpbmRleCBnZXRzIGEgbmV3IGVudHJ5 LgorICogICBIRUFQX0hFQVBfT05MWV9VUERBVEUgICAgIENsYXNzaWMgSE9UOiBubyBub24t c3VtbWFyaXppbmcgaW5kZXhlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0 dHJpYnV0ZSBjaGFuZ2VkLCBzbyBubyBpbmRleCBuZWVkcyBhIG5ldworICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudHJ5IGFuZCB0aGUgbmV3IHR1cGxlIGpvaW5zIHRoZSBj aGFpbiB2aWEgYQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRfY3RpZCBmb3J3 YXJkIGxpbmsuCisgKiAgIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSBIT1Qgd2l0aCBz ZWxlY3RpdmUgaW5kZXggdXBkYXRlOiBhdCBsZWFzdCBvbmUKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBub24tc3VtbWFyaXppbmcgaW5kZXgncyBhdHRyaWJ1dGUgY2hhbmdl ZCwgYnV0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5ldyB0dXBsZSBj YW4gc3RpbGwgam9pbiB0aGUgSE9UIGNoYWluIG9uCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhlIHNhbWUgcGFnZTsgb25seSB0aGUgaW5kZXhlcyB3aG9zZQorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgY2hhbmdlZCByZWNlaXZlIGEg bmV3IGVudHJ5LgorICoKKyAqIFRoaXMgcm91dGluZSBvbmx5IGNsYXNzaWZpZXMgdGhlIHVw ZGF0ZTsgaGVhcF91cGRhdGUoKSBwZXJmb3JtcyBpdCBhbmQgbWF5CisgKiBzdGlsbCBmYWxs IGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZSB3aGVuIHRoZSBuZXcgdHVwbGUgZG9lcyBub3Qg Zml0IG9uIHRoZQorICogcGFnZSwgZXhhY3RseSBhcyBmb3IgY2xhc3NpYyBIT1QuCiAgKi8K LWJvb2wKLUhlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkgICBib29sICpzdW1tYXJp emVkX29ubHkpCitIZWFwVXBkYXRlSW5kZXhNb2RlCitIZWFwVXBkYXRlSG90QWxsb3dhYmxl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRy cykKIHsKLQlib29sCQlob3RfYWxsb3dlZDsKKwljb25zdCBCaXRtYXBzZXQgKmFsbF9pZHhf YXR0cnM7CiAKIAkvKgotCSAqIExldCdzIGJlIG9wdGltaXN0aWMgYW5kIHN0YXJ0IG9mZiBi eSBhc3N1bWluZyB0aGUgYmVzdCBjYXNlLCBubyBpbmRleGVzCi0JICogbmVlZCB1cGRhdGlu ZyBhbmQgSE9UIGlzIGFsbG93YWJsZS4KKwkgKiBDYXNlIChhKTogbm8gaW5kZXhlZCBhdHRy aWJ1dGUgd2FzIG1vZGlmaWVkIC0+IGNsYXNzaWMgSE9ULgogCSAqLwotCWhvdF9hbGxvd2Vk ID0gdHJ1ZTsKLQkqc3VtbWFyaXplZF9vbmx5ID0gZmFsc2U7CisJaWYgKGJtc19pc19lbXB0 eShtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4gSEVBUF9IRUFQX09OTFlfVVBEQVRF OwogCiAJLyoKLQkgKiBDaGVjayBmb3IgY2FzZSAoYSk7IHdoZW4gdGhlcmUgYXJlIG5vIG1v ZGlmaWVkIGluZGV4IGF0dHJpYnV0ZXMgSE9UIGlzCi0JICogYWxsb3dlZC4KKwkgKiBDYXNl IChiKTogYXQgbGVhc3Qgb25lIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBJZiBhbGwg b2YgdGhlbSBhcmUKKwkgKiB1c2VkIG9ubHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcywgd2Ug Y2FuIHN0aWxsIHRha2UgdGhlIGNsYXNzaWMgSE9UCisJICogcGF0aCAtLSB0aGUgc3VtbWFy aXppbmcgaW5kZXggQU0gZ2V0cyBhIG5ldyBlbnRyeSB2aWEgYW1pbnNlcnQgYW5kIG5vCisJ ICogbm9uLXN1bW1hcml6aW5nIGluZGV4IG5lZWRzIHRvIGNoYW5nZS4KIAkgKi8KLQlpZiAo Ym1zX2lzX2VtcHR5KG1vZGlmaWVkX2lkeF9hdHRycykpCi0JCWhvdF9hbGxvd2VkID0gdHJ1 ZTsKLQllbHNlCi0JewotCQlCaXRtYXBzZXQgICpzdW1fYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9C SVRNQVBfU1VNTUFSSVpFRCk7CisJaWYgKGJtc19pc19zdWJzZXQobW9kaWZpZWRfaWR4X2F0 dHJzLCBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJ CQkJCQkJCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpKSkKKwkJcmV0dXJuIEhFQVBf SEVBUF9PTkxZX1VQREFURTsKIAotCQkvKgotCQkgKiBBdCBsZWFzdCBvbmUgaW5kZXggYXR0 cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMgY2FzZSAoYikKLQkJICogd2hlcmUg YWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVzIGFyZSBvbmx5IHVzZWQgYnkKLQkJ ICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlzLCB0aGVuIHdlIG5lZWQgdG8gdXBk YXRlIHRob3NlCi0JCSAqIGluZGV4ZXMsIGJ1dCB0aGlzIHVwZGF0ZSBjYW4gc3RpbGwgYmUg Y29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKLQkJICogYW5kIGF2b2lkIHVwZGF0aW5nIGFu eSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUgcmVsYXRpb24uCi0JCSAqLwotCQlp ZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0cnMsIHN1bV9hdHRycykpCi0JCXsK LQkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKLQkJCSpzdW1tYXJpemVkX29ubHkgPSB0cnVlOwot CQl9Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIE5vdyB3ZSBrbm93IGEpIG9uZSBvciBt b3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlmaWVkCi0JCQkgKiAoY2hhbmdlZCB2 YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIFVQREFURSkgYW5kIHRoYXQK LQkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBhdHRyaWJ1dGVzIGlzIHVzZWQgYnkg YQotCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBIT1QgaXMgbm90IGFsbG93ZWQuCi0J CQkgKi8KLQkJCWhvdF9hbGxvd2VkID0gZmFsc2U7Ci0JCX0KKwkvKgorCSAqIEEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQuICBIT1QtaW5kZXhlZCBpcyBz dXBwb3J0ZWQKKwkgKiB3aGVuZXZlciB0aGUgcmVsYXRpb24gY2FuIHRvbGVyYXRlIGV4dHJh IGluZGV4IGVudHJpZXMgaW4gYSBjaGFpbiB3aG9zZQorCSAqIHBlci1jaGFpbi1tZW1iZXIg a2V5cyBtYXkgZGlmZmVyLiAgVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aAor CSAqIGlzIGdhdGVkIGFib3ZlIGJ5IGhvdF9pbmRleGVkX29uX2FwcGx5LiAgVGhlIHJlbWFp bmluZworCSAqIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTIGZhbGxiYWNrcyBhcmU6CisJICoK KwkgKiAtIEFuIFVQREFURSB0aGF0IG1vZGlmaWVzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2Vk IGJ5IGFuIGV4cHJlc3Npb24KKwkgKiBpbmRleC4gIFNlbGVjdGl2ZSBtYWludGVuYW5jZSBv ZiBhbiBleHByZXNzaW9uIGluZGV4IHJlcXVpcmVzCisJICogZXZhbHVhdGluZyB0aGUgaW5k ZXhlZCBleHByZXNzaW9uIHRvIGRlY2lkZSB3aGV0aGVyIGl0cyB2YWx1ZSAoaGVuY2UKKwkg KiBpdHMgZW50cnkpIGNoYW5nZWQ7IHRoYXQgZXhwcmVzc2lvbi1hd2FyZSBwYXRoIGlzIG5v dCBpbXBsZW1lbnRlZCB5ZXQsCisJICogc28gc3VjaCBhbiB1cGRhdGUgZmFsbHMgYmFjayB0 byBub24tSE9ULiAgVXBkYXRlcyB0aGF0IGRvIG5vdCB0b3VjaCBhbnkKKwkgKiBleHByZXNz aW9uLWluZGV4IGF0dHJpYnV0ZSBzdGF5IGVsaWdpYmxlLgorCSAqCisJICogLSBBbiBVUERB VEUgdGhhdCBtb2RpZmllcyBldmVyeSBpbmRleGVkIGF0dHJpYnV0ZSBvZiB0aGUgcmVsYXRp b24uCisJICogSE9ULWluZGV4ZWQgb25seSBwYXlzIG9mZiB3aGVuIGl0IGNhbiBza2lwIG1h aW50YWluaW5nIGF0IGxlYXN0IG9uZQorCSAqIGluZGV4IHdob3NlIGtleSBkaWQgbm90IGNo YW5nZTsgaWYgYWxsIGluZGV4ZWQgYXR0cmlidXRlcyBjaGFuZ2VkIHRoZXJlCisJICogaXMg bm90aGluZyB0byBza2lwLCBzbyBhIHBsYWluIG5vbi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIg KGl0IGF2b2lkcyB0aGUKKwkgKiBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVy aGVhZCkuCisJICovCisJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKTsKIAotCQlibXNfZnJlZShzdW1fYXR0cnMpOwotCX0KKwkvKgorCSAqIFN5c3Rl bSBjYXRhbG9ncyBrZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcgbm8gbm9u LXN1bW1hcml6aW5nCisJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1cm5lZCBI RUFQX0hFQVBfT05MWV9VUERBVEUgYWJvdmUpLCBidXQgZG8KKwkgKiBOT1QgdGFrZSB0aGUg SE9ULWluZGV4ZWQgcGF0aDogY2F0YWxvZyByZWFkcyBnbyB0aHJvdWdoIG1hbnkgY29kZSBw YXRocworCSAqIChzeXN0YWJsZSBpbmRleCBzY2FucywgU25hcHNob3REaXJ0eSB1bmlxdWUg Y2hlY2tzLCBzZXFzY2FucyBpbgorCSAqIG9yZGVyaW5ncyB0aGUgY2hhaW4td2FsayBkZWR1 cCBkb2VzIG5vdCBjb3ZlcikgdGhhdCBhcmUgbm90IGFsbCBwcm92ZW4KKwkgKiBzYWZlIGFn YWluc3Qgc3RhbGUgY2hhaW4gZW50cmllcy4gIEZhbGxpbmcgYmFjayB0byBhIG5vbi1IT1Qg dXBkYXRlCisJICogaGVyZSBpcyBleGFjdGx5IHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZp b3VyIGZvciBzdWNoIGNhdGFsb2cgdXBkYXRlcy4KKwkgKi8KKwlpZiAoSXNDYXRhbG9nUmVs YXRpb24ocmVsYXRpb24pKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CiAK LQlyZXR1cm4gaG90X2FsbG93ZWQ7CisJLyoKKwkgKiBEaXNxdWFsaWZ5IHdoZW4gdGhlIHVw ZGF0ZSB0b3VjaGVzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2VkIGJ5IGFuCisJICogZXhwcmVz c2lvbiBpbmRleCAoc2VlIGNhc2UgMSBhYm92ZSkuICBVcGRhdGVzIHRoYXQgbGVhdmUgZXZl cnkKKwkgKiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSB1bmNoYW5nZWQgcmVtYWluIGVs aWdpYmxlLgorCSAqLworCWlmIChibXNfb3ZlcmxhcChtb2RpZmllZF9pZHhfYXR0cnMsCisJ CQkJCVJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OKSkpCisJCXJldHVybiBIRUFQ X1VQREFURV9BTExfSU5ERVhFUzsKKworCS8qCisJICogSWYgZXZlcnkgaW5kZXhlZCBhdHRy aWJ1dGUgY2hhbmdlZCwgYSBIT1Qtc2VsZWN0aXZlIHVwZGF0ZSBjb3VsZCBub3QKKwkgKiBz a2lwIGFueSBpbmRleCAtLSBlYWNoIGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkgYW55d2F5 IC0tIHNvIGl0IHdvdWxkCisJICogcGF5IHRoZSBIT1QvU0lVIGNoYWluLXdhbGsgYW5kIGJp dG1hcC1vdmVybGFwIG92ZXJoZWFkIGZvciBubyBzYXZlZAorCSAqIGluZGV4IG1haW50ZW5h bmNlLiAgRmFsbCBiYWNrIHRvIGEgcGxhaW4gbm9uLUhPVCB1cGRhdGUgaW4gdGhhdCBjYXNl LgorCSAqLworCWlmIChibXNfaXNfc3Vic2V0KGFsbF9pZHhfYXR0cnMsIG1vZGlmaWVkX2lk eF9hdHRycykpCisJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKworCXJldHVy biBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEU7CiB9CiAKIC8qCkBAIC00NDAyLDE1ICs0 NTQ3LDMzIEBAIExvY2tUdXBsZU1vZGUKIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMp CiB7CiAJTG9ja1R1cGxlTW9kZSBsb2NrbW9kZSA9IExvY2tUdXBsZUV4Y2x1c2l2ZTsKKwlj b25zdCBCaXRtYXBzZXQgKmtleV9hdHRyczsKKworCS8qCisJICogQ29tbW9uIGZhc3QgcGF0 aDogd2hlbiBubyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkIChlLmcuIHBnYmVuY2gtc3R5 bGUKKwkgKiAiVVBEQVRFIHQgU0VUIG5vbl9pZHhfY29sID0gLi4uIiBvciB0aGUgd2lkZV8w ICJVUERBVEUgdCBTRVQgaWQgPSBpZCIKKwkgKiB3b3JrbG9hZCBhZnRlciB0aGUgZXhlY3V0 b3IncyBmYXN0IHBhdGggaW4gRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMpLAorCSAqIG1v ZGlmaWVkX2lkeF9hdHRycyBpcyBlbXB0eSBhbmQgYSBrZXkgY29sdW1uIGNhbm5vdCBoYXZl IGNoYW5nZWQuICBTa2lwCisJICogdGhlIHJlbGNhY2hlIGxvb2t1cCBhbmQgcmV0dXJuIHRo ZSB3ZWFrZXIgbG9jayBpbW1lZGlhdGVseS4gIEF0IGhpZ2gKKwkgKiBUUFMgdGhpcyBhdm9p ZHMgYSBwZXItVVBEQVRFIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwIGNhbGwgKGFuZCBp dHMKKwkgKiBibXNfY29weSkgb24gdGhlIEtFWSBiaXRtYXAuCisJICovCisJaWYgKGJtc19p c19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4gTG9ja1R1cGxlTm9LZXlF eGNsdXNpdmU7CiAKLQlCaXRtYXBzZXQgICprZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1B UF9LRVkpOworCS8qCisJICogQm9ycm93IHRoZSBjYWNoZWQgYml0bWFwIHJhdGhlciB0aGFu IGNvcHlpbmcgaXQ7IHdlIG9ubHkgdGVzdCBvdmVybGFwCisJICogYW5kIG5ldmVyIG11dGF0 ZSBvciBmcmVlIGtleV9hdHRycy4gIEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZSBydW5z CisJICogd2l0aG91dCBidWZmZXIgbG9ja3MgYnV0IHRoZSByZWxjYWNoZSBlbnRyeSBpcyBw aW5uZWQgYnkgdGhlIGNhbGxlcidzCisJICogbG9jayBvbiB0aGUgcmVsYXRpb24sIGFuZCB3 ZSB0b3VjaCBub3RoaW5nIGJldHdlZW4gZmV0Y2ggYW5kIHRoZQorCSAqIGJtc19vdmVybGFw IHRoYXQgY291bGQgdHJpZ2dlciBhIHJlbGNhY2hlIGludmFsaWRhdGlvbi4KKwkgKi8KKwlr ZXlfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwK KwkJCQkJCQkJCQkJCSBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCiAJaWYgKCFibXNfb3Zl cmxhcChtb2RpZmllZF9pZHhfYXR0cnMsIGtleV9hdHRycykpCiAJCWxvY2ttb2RlID0gTG9j a1R1cGxlTm9LZXlFeGNsdXNpdmU7CiAKLQlibXNfZnJlZShrZXlfYXR0cnMpOwotCiAJcmV0 dXJuIGxvY2ttb2RlOwogfQogCkBAIC00NDk1LDYgKzQ2NTgsNzEgQEAgSGVhcFVwZGF0ZU1v ZGlmaWVkSWR4QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhl YXBUdXBsZSBuZXd0dXAKIAlyZXR1cm4gbW9kaWZpZWRfaWR4X2F0dHJzOwogfQogCisvKgor ICogaGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlCisgKgorICogUmV0dXJuIGEgbmV3bHkg cGFsbG9jJ2QgY29weSBvZiB0dXAgdGhhdCBjYXJyaWVzIHRoZSBmaXhlZC1zaXplCisgKiBp bmxpbmUtdHJhaWxpbmcgbW9kaWZpZWQtYXR0cmlidXRlcyBiaXRtYXAgKHNlZSBhY2Nlc3Mv aG90X2luZGV4ZWQuaCksCisgKiB3aXRoIEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldC4gIFRo ZSBiaXRtYXAgcmVjb3JkcyB0aGUgdXNlciBhdHRyaWJ1dGVzIGluCisgKiBtb2RpZmllZF9p ZHhfYXR0cnMgKHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhpcyBVUERBVEUgY2hhbmdlZCwg dXNpbmcgdGhlCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIG9mZnNl dCBjb252ZW50aW9uKTsgYW4gZW1wdHkgc2V0IHlpZWxkcworICogYW4gYWxsLXplcm8gYml0 bWFwLCB3aGljaCBpcyBjb3JyZWN0IGZvciB0aGUgY2hhaW4tdW5pZm9ybWl0eSBwcm9tb3Rp b24gb2YKKyAqIGEgY2xhc3NpYy1IT1QgdXBkYXRlIG9uIGFuIGFscmVhZHktSE9ULWluZGV4 ZWQgY2hhaW4uCisgKgorICogVGhlIGJpdG1hcCBvY2N1cGllcyB0aGUgZmluYWwgSG90SW5k ZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSBieXRlcyBvZiB0aGUKKyAqIHR1cGxlLCB3aGVyZSBu YXR0cyBpcyB0aGUgdHVwbGUncyBvd24gYXR0cmlidXRlIGNvdW50CisgKiAoSGVhcFR1cGxl SGVhZGVyR2V0TmF0dHMpIC0tIHdoaWNoIGEgcmVhZGVyIHJlY292ZXJzIGZyb20gdGhlIHN0 b3JlZCB0dXBsZSwKKyAqIHNvIHRoZSBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIGV2ZW4gYWZ0 ZXIgdGhlIHJlbGF0aW9uJ3MgbmF0dHMgbGF0ZXIgZ3Jvd3MKKyAqIHZpYSBBREQgQ09MVU1O LiAgRm9yIGEgZnJlc2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHRoaXMgZXF1YWxzIHRoZQor ICogcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzOyB3ZSBhc3NlcnQgdGhhdCB0byBjYXRjaCBh bnkgZnV0dXJlIGRpdmVyZ2VuY2UuCisgKiBUaGUgYml0bWFwIHNpdHMgcGFzdCB0aGUgYXR0 cmlidXRlIGRhdGEsIHNvIGhlYXBfZGVmb3JtX3R1cGxlIG5ldmVyIHNlZXMKKyAqIGl0LiAg VGhlIGNhbGxlciBtdXN0IGhhdmUgcmVzZXJ2ZWQgcm9vbSBmb3IgdGhlIGV4dHJhIGJ5dGVz IGluIHRoZSBwYWdlLWZpdAorICogY2FsY3VsYXRpb24sIGFuZCBtdXN0IGZyZWUgdGhlIHJl dHVybmVkIHR1cGxlLgorICovCitzdGF0aWMgSGVhcFR1cGxlCitoZWFwX2Zvcm1faG90X2lu ZGV4ZWRfdHVwbGUoSGVhcFR1cGxlIHR1cCwgaW50IHJlbG5hdHRzLAorCQkJCQkJCWNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQoreworCWludAkJCW5hdHRzID0gSGVh cFR1cGxlSGVhZGVyR2V0TmF0dHModHVwLT50X2RhdGEpOworCVNpemUJCWJtYnl0ZXM7CisJ U2l6ZQkJbmV3bGVuOworCUhlYXBUdXBsZQluZXd0dXBsZTsKKwl1aW50OAkgICAqYml0bWFw OworCWludAkJCXggPSAtMTsKKworCS8qCisJICogVGhlIGJpdG1hcCBpcyBzaXplZCBhbmQg bG9jYXRlZCBieSB0aGUgdHVwbGUncyBvd24gbmF0dHM7IGEgZnJlc2hseQorCSAqIGZvcm1l ZCBVUERBVEUgdHVwbGUgY2FycmllcyB0aGUgZnVsbCByZWxhdGlvbiBuYXR0cy4gIElmIHRo ZXNlIGV2ZXIKKwkgKiBkaXZlcmdlIHRoZSBwYWdlLWZpdCByZXNlcnZhdGlvbiAobWFkZSB3 aXRoIHJlbG5hdHRzKSBhbmQgdGhlIGFjdHVhbAorCSAqIGJpdG1hcCBzaXplIHdvdWxkIGRp c2FncmVlLgorCSAqLworCUFzc2VydChuYXR0cyA9PSByZWxuYXR0cyk7CisJYm1ieXRlcyA9 IEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0cyk7CisJbmV3bGVuID0gdHVwLT50X2xlbiAr IGJtYnl0ZXM7CisKKwluZXd0dXBsZSA9IChIZWFwVHVwbGUpIHBhbGxvYzAoSEVBUFRVUExF U0laRSArIG5ld2xlbik7CisJbmV3dHVwbGUtPnRfbGVuID0gbmV3bGVuOworCW5ld3R1cGxl LT50X3NlbGYgPSB0dXAtPnRfc2VsZjsKKwluZXd0dXBsZS0+dF90YWJsZU9pZCA9IHR1cC0+ dF90YWJsZU9pZDsKKwluZXd0dXBsZS0+dF9kYXRhID0gKEhlYXBUdXBsZUhlYWRlcikgKChj aGFyICopIG5ld3R1cGxlICsgSEVBUFRVUExFU0laRSk7CisKKwkvKiBjb3B5IHRoZSBvcmln aW5hbCB0dXBsZTsgdGhlIHRyYWlsaW5nIGJpdG1hcCBieXRlcyBzdGF5IHplcm8gKi8KKwlt ZW1jcHkobmV3dHVwbGUtPnRfZGF0YSwgdHVwLT50X2RhdGEsIHR1cC0+dF9sZW4pOworCW5l d3R1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syIHw9IEhFQVBfSU5ERVhFRF9VUERBVEVEOwor CisJYml0bWFwID0gSG90SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwUlcobmV3dHVwbGUtPnRf ZGF0YSwgbmV3bGVuLCBuYXR0cyk7CisJd2hpbGUgKCh4ID0gYm1zX25leHRfbWVtYmVyKG1v ZGlmaWVkX2lkeF9hdHRycywgeCkpID49IDApCisJeworCQlBdHRyTnVtYmVyCWF0dG51bSA9 IHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCS8qIG9ubHkg dXNlciBhdHRyaWJ1dGVzIGNhbiBiZSBtb2RpZmllZC1hbmQtaW5kZXhlZCAqLworCQlpZiAo YXR0bnVtID49IDEpCisJCQlIb3RJbmRleGVkU2V0QXR0ck1vZGlmaWVkKGJpdG1hcCwgYXR0 bnVtKTsKKwl9CisKKwlyZXR1cm4gbmV3dHVwbGU7Cit9CisKIC8qCiAgKglzaW1wbGVfaGVh cF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCkBAIC00NTA1LDcgKzQ3MzMsNyBAQCBI ZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cAogICovCiB2b2lkCiBzaW1wbGVfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIHR1cCwKLQkJCQkgICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykK KwkJCQkgICBib29sICp1cGRhdGVfYWxsX2luZGV4ZXMpCiB7CiAJVE1fUmVzdWx0CXJlc3Vs dDsKIAlUTV9GYWlsdXJlRGF0YSB0bWZkOwpAQCAtNDUxNCwxMyArNDc0MiwxNCBAQCBzaW1w bGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0 YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCUJ1ZmZlckhlYXBUdXBsZVRhYmxlU2xvdCAqYnNs b3Q7CiAJSGVhcFR1cGxlCW9sZHR1cDsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsKLQlC aXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnM7Ci0JYm9vbAkJaG90X2FsbG93ZWQsCi0J CQkJc3VtbWFyaXplZF9vbmx5OworCUJpdG1hcHNldCAgKmxvY2FsX21vZGlmaWVkX2lkeF9h dHRyczsKKwlIZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVy OwogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxpZChvdGlkKSk7CiAKKwkqdXBkYXRlX2Fs bF9pbmRleGVzID0gZmFsc2U7CisKIAkvKgogCSAqIFRvIHVwZGF0ZSBhIGhlYXAgdHVwbGUg d2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAogCSAqIGF0dHJp YnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0ZXJtaW5l IGlmIGEgSE9UCkBAIC00NTYxLDggKzQ3OTAsNiBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxl IHR1cAogCQkgKi8KIAkJQXNzZXJ0KFJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShSZWxhdGlv bkdldFJlbGlkKHJlbGF0aW9uKSkpOwogCi0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7 Ci0KIAkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQgKi8KIAkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIApAQCAtNDU3NywyNyArNDgw NCwyMCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0 ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1cAogCUV4ZWNTdG9yZVBpbm5lZEJ1 ZmZlckhlYXBUdXBsZSgmYnNsb3QtPmJhc2UudHVwZGF0YSwgc2xvdCwgYnVmZmVyKTsKIAlv bGR0dXAgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZhbHNlLCAmc2hvdWxkRnJl ZSk7CiAKLQltb2RpZmllZF9pZHhfYXR0cnMgPSBIZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOwotCWxvY2ttb2RlID0gSGVhcFVwZGF0ZURldGVy bWluZUxvY2ttb2RlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMpOwotCWhvdF9hbGxv d2VkID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0 dHJzLCAmc3VtbWFyaXplZF9vbmx5KTsKKwlsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMgPSBI ZWFwVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZWxhdGlvbiwgb2xkdHVwLCB0dXApOworCWxv Y2ttb2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCBsb2NhbF9t b2RpZmllZF9pZHhfYXR0cnMpOworCWhvdF9tb2RlID0gSGVhcFVwZGF0ZUhvdEFsbG93YWJs ZShyZWxhdGlvbiwgbG9jYWxfbW9kaWZpZWRfaWR4X2F0dHJzKTsKIAotCXJlc3VsdCA9IGhl YXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsIEdldEN1cnJlbnRDb21tYW5kSWQodHJ1 ZSksIDAsCisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0 Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCSAwIC8qIG9wdGlvbnMgKi8gLAogCQkJ CQkJIEludmFsaWRTbmFwc2hvdCwgdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAotCQkJ CQkJICZ0bWZkLCBsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3RfYWxsb3dlZCk7 CisJCQkJCQkgJnRtZmQsIGxvY2ttb2RlLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9tb2RlKTsKIAogCWlmIChzaG91bGRGcmVlKQogCQloZWFwX2ZyZWV0dXBsZShvbGR0dXAp OwogCiAJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAotCS8qCi0JICog RGVjaWRlIHdoZXRoZXIgbmV3IGluZGV4IGVudHJpZXMgYXJlIG5lZWRlZCBmb3IgdGhlIHR1 cGxlCi0JICoKLQkgKiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRl IGFsbCBpbmRleGVzLiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0 aGF0IHdlIHVwZGF0ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1 cGRhdGUgb25seSBzdW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgotCSAqLwot CSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAJc3dpdGNoIChyZXN1bHQpCiAJewogCQlj YXNlIFRNX1NlbGZNb2RpZmllZDoKQEAgLTQ2MDYsMTEgKzQ4MjYsMTQgQEAgc2ltcGxlX2hl YXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90 aWQsIEhlYXBUdXBsZSB0dXAKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fT2s6Ci0JCQkvKiBk b25lIHN1Y2Nlc3NmdWxseSAqLwotCQkJaWYgKCFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCkp Ci0JCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCQkJZWxzZSBpZiAoc3VtbWFyaXpl ZF9vbmx5KQotCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX1N1bW1hcml6aW5nOworCisJCQkv KgorCQkJICogSWYgdGhlIHR1cGxlIHN0b3JlZCBieSBoZWFwX3VwZGF0ZSBpcyBoZWFwLW9u bHkgdGhpcyB3YXMgYSBIT1QKKwkJCSAqIHVwZGF0ZSBhbmQgKHN1YmplY3QgdG8gcGVyLWlu ZGV4IGNoZWNrcykgbm90IGV2ZXJ5IGluZGV4IG5lZWRzCisJCQkgKiBhIG5ldyBlbnRyeTsg b3RoZXJ3aXNlIGV2ZXJ5IGluZGV4IG11c3QgZ2V0IG9uZSBwb2ludGluZyBhdCB0aGUKKwkJ CSAqIG5ldyB0dXBsZSdzIFRJRC4KKwkJCSAqLworCQkJKnVwZGF0ZV9hbGxfaW5kZXhlcyA9 ICFIZWFwVHVwbGVJc0hlYXBPbmx5KHR1cCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRNX1Vw ZGF0ZWQ6CkBAIC00NjI1LDYgKzQ4NDgsOCBAQCBzaW1wbGVfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIHR1 cAogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBoZWFwX3VwZGF0ZSBzdGF0dXM6ICV1 IiwgcmVzdWx0KTsKIAkJCWJyZWFrOwogCX0KKworCWJtc19mcmVlKGxvY2FsX21vZGlmaWVk X2lkeF9hdHRycyk7CiB9CiAKIApAQCAtODE4OSw0MCArODQxNCw0MiBAQCBpbmRleF9kZWxl dGVfY2hlY2tfaHRpZChUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSwKIAlBc3NlcnQoT2Zm c2V0TnVtYmVySXNWYWxpZChpc3RhdHVzLT5pZHhvZmZudW0pKTsKIAogCWlmICh1bmxpa2Vs eShpbmRleHBhZ2Vob2ZmbnVtID4gbWF4b2ZmKSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQko ZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZ19pbnRlcm5h bCgiaGVhcCB0aWQgZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyBwYXN0IGVuZCBv ZiBoZWFwIHBhZ2UgbGluZSBwb2ludGVyIGFycmF5IGF0IG9mZnNldCAldSBvZiBibG9jayAl dSBpbiBpbmRleCBcIiVzXCIiLAotCQkJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJl cihodGlkKSwKLQkJCQkJCQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCSBpc3RhdHVz LT5pZHhvZmZudW0sIGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJCQkJCQkgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmlyZWwpKSkpOworCXsKKwkJLyoKKwkJICogVW5kZXIg SE9ULWluZGV4ZWQgdXBkYXRlcywgYSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gb3V0bGl2ZSBo ZWFwCisJCSAqIHBydW5pbmcvdmFjdXVtIG9mIHRoZSBwYWdlIGl0IHRhcmdldHM7IGlmIHRo ZSB0YXJnZXQgb2Zmc2V0IGlzIHBhc3QKKwkJICogdGhlIGN1cnJlbnQgbWF4LCB0cmVhdCBh cyB2YWN1dW1hYmxlIGluc3RlYWQgb2YgcmFpc2luZyBhbgorCQkgKiBpbmRleC1jb3JydXB0 aW9uIGVycm9yLgorCQkgKi8KKwkJcmV0dXJuOworCX0KIAogCWlpZCA9IFBhZ2VHZXRJdGVt SWQocGFnZSwgaW5kZXhwYWdlaG9mZm51bSk7CiAJaWYgKHVubGlrZWx5KCFJdGVtSWRJc1Vz ZWQoaWlkKSkpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRF WF9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5k ZXggdHVwbGUgKCV1LCV1KSBwb2ludHMgdG8gdW51c2VkIGhlYXAgcGFnZSBpdGVtIGF0IG9m ZnNldCAldSBvZiBibG9jayAldSBpbiBpbmRleCBcIiVzXCIiLAotCQkJCQkJCQkgSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJCQkJCQkJIGluZGV4cGFnZWhvZmZudW0s Ci0JCQkJCQkJCSBpc3RhdHVzLT5pZHhvZmZudW0sIGRlbHN0YXRlLT5pYmxrbnVtLAotCQkJ CQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmlyZWwpKSkpOwotCi0J aWYgKEl0ZW1JZEhhc1N0b3JhZ2UoaWlkKSkKIAl7Ci0JCUhlYXBUdXBsZUhlYWRlciBodHVw OwotCi0JCUFzc2VydChJdGVtSWRJc05vcm1hbChpaWQpKTsKLQkJaHR1cCA9IChIZWFwVHVw bGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGlpZCk7Ci0KLQkJaWYgKHVubGlrZWx5KEhl YXBUdXBsZUhlYWRlcklzSGVhcE9ubHkoaHR1cCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCQkgZXJybXNnX2lu dGVybmFsKCJoZWFwIHRpZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIGhl YXAtb25seSB0dXBsZSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wi IiwKLQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKGh0aWQpLAotCQkJCQkJ CQkJIGluZGV4cGFnZWhvZmZudW0sCi0JCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBk ZWxzdGF0ZS0+aWJsa251bSwKLQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShk ZWxzdGF0ZS0+aXJlbCkpKSk7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0 ZXMsIGEgc3RhbGUgYnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBh dCBhbiBMUCB0aGF0IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkK KwkJICogcHJ1bmluZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVh dCB0aGF0IGFzICJ0aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRv d25zdHJlYW0gY2hhaW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNp b24pIHJhdGhlciB0aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQly ZXR1cm47CiAJfQorCisJLyoKKwkgKiBBIHJlZGlyZWN0IHRhcmdldCAoTFBfUkVESVJFQ1Qp IGlzIGEgdmFsaWQgY2hhaW4gcm9vdDogYW4gaW5kZXggZW50cnkKKwkgKiBwb2ludGluZyBh dCBpdCBpcyBsZWdpdGltYXRlIGFuZCB0aGUgY2FsbGVyJ3MgY2hhaW4gd2FsayBkZWNpZGVz CisJICogZGVsZXRhYmlsaXR5LiAgT25seSBnZW51aW5lbHkgbm9ybWFsIHR1cGxlcyBhcmUg aW5zcGVjdGVkIGJlbG93LgorCSAqCisJICogQSBub3JtYWwgdHVwbGUgdGhhdCBpcyBoZWFw LW9ubHkgKEhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkpIGlzIGFsc28KKwkgKiB0b2xlcmF0 ZWQgd2l0aG91dCBmdXJ0aGVyIGNoZWNrczogYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRz IGEgZnJlc2gKKwkgKiBpbmRleCBlbnRyeSB0aGF0IHBvaW50cyBkaXJlY3RseSBhdCBzdWNo IGEgdHVwbGUgKGl0IGNhcnJpZXMKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCksIGFuZCBh IHN0YWxlIGJ0cmVlIGVudHJ5IGNhbiBsaWtld2lzZSBhcnJpdmUgYXQKKwkgKiBhIGhlYXAt b25seSB0dXBsZSB3aGVuIGl0cyBjaGFpbiByb290IHdhcyBwcnVuZWQgb3V0LiAgQm90aCBh cmUgbGVnYWwKKwkgKiB1bmRlciBIT1QtaW5kZXhlZDsgdGhlIGNhbGxlcidzIGNoYWluIHdh bGsgZGVjaWRlcyB3aGV0aGVyIHRoZSBlbnRyeQorCSAqIGlzIGRlbGV0YWJsZSwgc28gdGhl cmUgaXMgbm90aGluZyB0byBjaGVjayBoZXJlIGZvciB0aGF0IGNhc2UuCisJICovCiB9CiAK IC8qCkBAIC04NDM2LDcgKzg2NjMsNyBAQCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVs YXRpb24gcmVsLCBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAogCQkJLyogQXJlIGFu eSB0dXBsZXMgZnJvbSB0aGlzIEhPVCBjaGFpbiBub24tdmFjdXVtYWJsZT8gKi8KIAkJCWlm IChoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKCZ0bXAsIHJlbCwgYnVmLCAmU25hcHNob3ROb25W YWN1dW1hYmxlLAotCQkJCQkJCQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCisJCQkJ CQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLCBOVUxMLCBOVUxMLCBOVUxMKSkKIAkJ CQljb250aW51ZTsJCS8qIGNhbid0IGRlbGV0ZSBlbnRyeSAqLwogCiAJCQkvKiBDYWxsZXIg d2lsbCBkZWxldGUsIHNpbmNlIHdob2xlIEhPVCBjaGFpbiBpcyB2YWN1dW1hYmxlICovCkBA IC05MDE4LDkgKzkyNDUsMjAgQEAgbG9nX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbG4sIEJ1 ZmZlciBvbGRidWYsCiAJCX0KIAl9CiAKLQkvKiBJZiBuZXcgdHVwbGUgaXMgdGhlIHNpbmds ZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZS4uLiAqLworCS8qCisJICogSWYgbmV3IHR1cGxl IGlzIHRoZSBzaW5nbGUgYW5kIGZpcnN0IHR1cGxlIG9uIHBhZ2UsIHJlcGxheSBjYW4gcmVp bml0CisJICogdGhlIHBhZ2UgZnJvbSBzY3JhdGNoLgorCSAqCisJICogQWxzbyByZXF1aXJl IHRoYXQgdGhlIHBhZ2UncyB0dXBsZSBhcmVhIGNvbnRhaW5zIG5vdGhpbmcgb3RoZXIgdGhh biB0aGlzCisJICogdHVwbGUuICBTZWUgaGVhcF9pbnNlcnQgZm9yIHdoeSB0aGlzIG1hdHRl cnMgd2hlbiB2YWN1dW0gaGFzIGxlZnQgb3JwaGFuCisJICogdHVwbGUgYnl0ZXMgYmVoaW5k IGFuIExQX1VOVVNFRCBzbG90LgorCSAqCisJICogTk9URTogdGhpcyBtdXN0IG1pcnJvciB0 aGUgc2FtZSBsb2dpYyBpbiBoZWFwX2luc2VydCgpCisJICovCiAJaWYgKEl0ZW1Qb2ludGVy R2V0T2Zmc2V0TnVtYmVyKCYobmV3dHVwLT50X3NlbGYpKSA9PSBGaXJzdE9mZnNldE51bWJl ciAmJgotCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVt YmVyKQorCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCisJCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3VwcGVyID09CisJCSgoUGFnZUhl YWRlcikgcGFnZSktPnBkX3NwZWNpYWwgLSBNQVhBTElHTihuZXd0dXAtPnRfbGVuKSkKIAl7 CiAJCWluZm8gfD0gWExPR19IRUFQX0lOSVRfUEFHRTsKIAkJaW5pdCA9IHRydWU7CkBAIC05 MDgyLDYgKzkzMjAsNyBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwgQnVmZmVy IG9sZGJ1ZiwKIAkgKiBUaGUgJ2RhdGEnIGRvZXNuJ3QgaW5jbHVkZSB0aGUgY29tbW9uIHBy ZWZpeCBvciBzdWZmaXguCiAJICovCiAJWExvZ1JlZ2lzdGVyQnVmRGF0YSgwLCAmeGxoZHIs IFNpemVPZkhlYXBIZWFkZXIpOworCiAJaWYgKHByZWZpeGxlbiA9PSAwKQogCXsKIAkJWExv Z1JlZ2lzdGVyQnVmRGF0YSgwLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggNzViNGQ0MGFhZmMuLjA3ZGY5YWJjMjdhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTIxOCw0OCArMjE4LDM3IEBA IGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIg b3B0aW9ucywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ss CiAJCQkJCWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLAotCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJCUJpdG1hcHNldCAqKm1v ZGlmaWVkX2F0dHJzKQogewogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBs ZQl0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1ZSwgJnNob3VsZEZy ZWUpOwotCWJvb2wJCWhvdF9hbGxvd2VkOwotCWJvb2wJCXN1bW1hcml6ZWRfb25seTsKKwlI ZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2RlOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKIAlB c3NlcnQoSXRlbVBvaW50ZXJJc1ZhbGlkKG90aWQpKTsKIAotCWhvdF9hbGxvd2VkID0gSGVh cFVwZGF0ZUhvdEFsbG93YWJsZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzLCAmc3Vt bWFyaXplZF9vbmx5KTsKLQkqbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21v ZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBk YXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCAqbW9kaWZpZWRfYXR0cnMpOworCSpsb2NrbW9k ZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgKm1vZGlmaWVkX2F0 dHJzKTsKIAogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8KIAlzbG90 LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0dXBsZS0+ dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhlYXBfdXBk YXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLCBjcm9zc2NoZWNrLCB3 YWl0LAotCQkJCQkJIHRtZmQsICpsb2NrbW9kZSwgbW9kaWZpZWRfaWR4X2F0dHJzLCBob3Rf YWxsb3dlZCk7CisJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxl LCBjaWQsIG9wdGlvbnMsCisJCQkJCQkgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZk LCAqbG9ja21vZGUsICptb2RpZmllZF9hdHRycywgaG90X21vZGUpOwogCUl0ZW1Qb2ludGVy Q29weSgmdHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKLQkgKiBEZWNp ZGUgd2hldGhlciBuZXcgaW5kZXggZW50cmllcyBhcmUgbmVlZGVkIGZvciB0aGUgdHVwbGUK LQkgKgotCSAqIE5vdGU6IGhlYXBfdXBkYXRlIHJldHVybnMgdGhlIHRpZCAobG9jYXRpb24p IG9mIHRoZSBuZXcgdHVwbGUgaW4gdGhlCi0JICogdF9zZWxmIGZpZWxkLgotCSAqCi0JICog SWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4g SWYgdGhlIHVwZGF0ZSBpcwotCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVk IHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCi0JICogdXBkYXRlIG9ubHkgc3Vt bWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KKwkgKiBUZWxsIHRoZSBjYWxsZXIg d2hldGhlciBldmVyeSBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeS4gIElmIHRoZSBuZXcKKwkg KiB0dXBsZSBpcyBub3QgaGVhcC1vbmx5IHRoZSB1cGRhdGUgd2FzIG5vdCBIT1Q6IGl0IGlz IGFuIGluZGVwZW5kZW50CisJICogdmVyc2lvbiByZXF1aXJpbmcgYSBmcmVzaCBlbnRyeSBp biBldmVyeSBpbmRleCwgd2hpY2ggd2Ugc2lnbmFsIGJ5CisJICogYWRkaW5nIHRoZSB3aG9s ZS1yb3cgYXR0cmlidXRlIHRvICptb2RpZmllZF9hdHRycy4gIE90aGVyd2lzZSAoY2xhc3Np YworCSAqIEhPVCBvciBIT1QtaW5kZXhlZCkgdGhlIGNhbGxlciBjb25zdWx0cyB0aGUgcGVy LWluZGV4IGF0dHJpYnV0ZXMuCiAJICovCi0JKnVwZGF0ZV9pbmRleGVzID0gVFVfTm9uZTsK LQlpZiAocmVzdWx0ID09IFRNX09rKQotCXsKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHko dHVwbGUpKQotCQl7Ci0JCQlpZiAoc3VtbWFyaXplZF9vbmx5KQotCQkJCSp1cGRhdGVfaW5k ZXhlcyA9IFRVX1N1bW1hcml6aW5nOwotCQl9Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhl cyA9IFRVX0FsbDsKLQl9CisJaWYgKHJlc3VsdCA9PSBUTV9PayAmJiAhSGVhcFR1cGxlSXNI ZWFwT25seSh0dXBsZSkpCisJCSptb2RpZmllZF9hdHRycyA9IGJtc19hZGRfbWVtYmVyKCpt b2RpZmllZF9hdHRycywKKwkJCQkJCQkJCQkgVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMp OwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCXBmcmVlKHR1cGxlKTsKQEAgLTcyNSw5ICs3MTQs MzMgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVh cCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJCWlmICghaW5kZXhfZ2V0bmV4dF9zbG90KGluZGV4 U2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCQkJCWJyZWFrOwogCi0JCQkv KiBTaW5jZSB3ZSB1c2VkIG5vIHNjYW4ga2V5cywgc2hvdWxkIG5ldmVyIG5lZWQgdG8gcmVj aGVjayAqLworCQkJLyoKKwkJCSAqIENMVVNURVIgdXNlcyBhIG5vLWtleSBmdWxsLWluZGV4 IHNjYW47IGl0IGNhbm5vdCBkbyBhbnkKKwkJCSAqIHR1cGxlLWxldmVsIGZpbHRlcmluZyBp dHNlbGYuICBUaGUgSE9ULWluZGV4ZWQgcmVhZGVyIHBhdGgKKwkJCSAqIHJvdXRpbmVseSBz ZXRzIHhzX3JlY2hlY2sgd2hlbiB3YWxraW5nIGNoYWluIGVudHJpZXMgd2hvc2UKKwkJCSAq IGluZGV4IGtleSBtYXkgYmUgc3RhbGUgcmVsYXRpdmUgdG8gdGhlIHZpc2libGUgaGVhcCB0 dXBsZS4KKwkJCSAqIFRob3NlIGVudHJpZXMgY2F1c2UgdGhlIHNhbWUgbGl2ZSB0dXBsZSB0 byBiZSB2aXNpdGVkIHZpYSB0aGUKKwkJCSAqIGZyZXNoIGhvdC1pbmRleGVkLWluc2VydGVk IGVudHJ5IHRvbzsgaW5jbHVkaW5nIHRoZW0gd291bGQKKwkJCSAqIGR1cGxpY2F0ZSByb3dz IGluIHRoZSByZXdyaXR0ZW4gaGVhcC4gIFNraXAgdGhlbSBoZXJlIC0tIHRoZQorCQkJICog dHVwbGUgaXMgcmVhY2hhYmxlIHRocm91Z2ggaXRzIGNhbm9uaWNhbCBpbmRleCBlbnRyeS4K KwkJCSAqCisJCQkgKiBJZiB4c19yZWNoZWNrIGlzIHNldCB3aXRoIGFjdHVhbCBzY2FuIGtl eXMsIHRoYXQncyBhIHJlYWwgbG9zc3kKKwkJCSAqIGluZGV4IHNjZW5hcmlvIENMVVNURVIg Y2FuJ3QgaGFuZGxlIChoaXN0b3JpY2FsIHJlc3RyaWN0aW9uKS4KKwkJCSAqLwogCQkJaWYg KGluZGV4U2Nhbi0+eHNfcmVjaGVjaykKLQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RFUiBkb2Vz IG5vdCBzdXBwb3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCXsKKwkJCQlpZiAo aW5kZXhTY2FuLT5udW1iZXJPZktleXMgPiAwKQorCQkJCQllbG9nKEVSUk9SLCAiQ0xVU1RF UiBkb2VzIG5vdCBzdXBwb3J0IGxvc3N5IGluZGV4IGNvbmRpdGlvbnMiKTsKKwkJCQljb250 aW51ZTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFNhbWUgcmVhc29uaW5nIGFzIGZvciB4c19y ZWNoZWNrOiBhIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5CisJCQkgKiB3b3VsZCByZS1lbWl0 IGFuIGFscmVhZHktdmlzaXRlZCB0dXBsZSB2aWEgaXRzIGNhbm9uaWNhbCBmcmVzaAorCQkJ ICogZW50cnkuICBTa2lwLgorCQkJICovCisJCQlpZiAoaW5kZXhTY2FuLT54c19ob3RfaW5k ZXhlZF9zdGFsZSkKKwkJCQljb250aW51ZTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTE2NDEs MzAgKzE2NTQsNDggQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCiAJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJl cigmaGVhcFR1cGxlLT50X3NlbGYpOwogCi0JCQkvKgotCQkJICogSWYgYSBIT1QgdHVwbGUg cG9pbnRzIHRvIGEgcm9vdCB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQsCi0JCQkgKiBvYnRh aW4gcm9vdCBpdGVtcyBhZnJlc2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQg YXMKLQkJCSAqIGNvcnJ1cHRpb24uCi0JCQkgKi8KLQkJCWlmIChyb290X29mZnNldHNbb2Zm bnVtIC0gMV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikKKwkJCWlmICgoaGVhcFR1cGxlLT50 X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCiAJCQl7 Ci0JCQkJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwotCi0J CQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hBUkUpOwotCQkJ CWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7Ci0JCQkJTG9ja0J1 ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkvKgorCQkJ CSAqIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXggVXBkYXRlKSBsaXZlIHR1cGxlOiBp bmRleCBpdAorCQkJCSAqIHVuZGVyIGl0cyBPV04gVElELCBub3QgdGhlIGNoYWluIHJvb3Qu ICBJdHMgaW5kZXhlZCB2YWx1ZXMKKwkJCQkgKiBkaWZmZXIgZnJvbSBlYXJsaWVyIGNoYWlu IG1lbWJlcnMnLCBhbmQgdGhlIGJpdG1hcC1vdmVybGFwCisJCQkJICogcmVhZCBwYXRoIGtl ZXBzIGFuIGVudHJ5IG9ubHkgd2hlbiBubyBob3AgYWZ0ZXIgdGhlIGVudHJ5J3MKKwkJCQkg KiB0YXJnZXQgY2hhbmdlZCB0aGUgaW5kZXgncyBhdHRyaWJ1dGVzLiAgVGhhdCBob2xkcyBm b3IgYW4KKwkJCQkgKiBlbnRyeSBwb2ludGluZyBkaXJlY3RseSBhdCB0aGUgbGl2ZSB0dXBs ZSAobm8gbGF0ZXIgaG9wKTsKKwkJCQkgKiBhbiBlbnRyeSBwb2ludGVkIGF0IHRoZSByb290 IHdvdWxkIGJlIGRyb3BwZWQgYXMgc3RhbGUsCisJCQkJICogbG9zaW5nIHRoZSByb3cuCisJ CQkJICovCisJCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051 bWJlcigmaGVhcFR1cGxlLT50X3NlbGYpLAorCQkJCQkJCSAgIG9mZm51bSk7CiAJCQl9CisJ CQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiBhIEhPVCB0dXBsZSBwb2ludHMgdG8g YSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKKwkJCQkgKiBvYnRhaW4gcm9vdCBp dGVtcyBhZnJlc2guICBJZiB0aGF0IHN0aWxsIGZhaWxzLCByZXBvcnQgaXQKKwkJCQkgKiBh cyBjb3JydXB0aW9uLgorCQkJCSAqLworCQkJCWlmIChyb290X29mZnNldHNbb2ZmbnVtIC0g MV0gPT0gSW52YWxpZE9mZnNldE51bWJlcikKKwkJCQl7CisJCQkJCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGhzY2FuLT5yc19jYnVmKTsKIAotCQkJaWYgKCFPZmZzZXROdW1iZXJJ c1ZhbGlkKHJvb3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSkpCi0JCQkJZXJlcG9ydChFUlJPUiwK LQkJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCQkJIGVycm1z Z19pbnRlcm5hbCgiZmFpbGVkIHRvIGZpbmQgcGFyZW50IHR1cGxlIGZvciBoZWFwLW9ubHkg dHVwbGUgYXQgKCV1LCV1KSBpbiB0YWJsZSBcIiVzXCIiLAotCQkJCQkJCQkJCSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkJCQkJIG9m Zm51bSwKLQkJCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9u KSkpKTsKKwkJCQkJTG9ja0J1ZmZlcihoc2Nhbi0+cnNfY2J1ZiwgQlVGRkVSX0xPQ0tfU0hB UkUpOworCQkJCQloZWFwX2dldF9yb290X3R1cGxlcyhwYWdlLCByb290X29mZnNldHMpOwor CQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOwor CQkJCX0KIAotCQkJSXRlbVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051 bWJlcigmaGVhcFR1cGxlLT50X3NlbGYpLAotCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51 bSAtIDFdKTsKKwkJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZzZXRzW29m Zm51bSAtIDFdKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFsKCJmYWlsZWQg dG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25seSB0dXBsZSBhdCAoJXUsJXUpIGlu IHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJCQkJCSBvZmZudW0sCisJCQkJCQkJCQkJ CSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRpb24pKSkpOworCisJCQkJSXRl bVBvaW50ZXJTZXQoJnRpZCwgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmaGVhcFR1cGxl LT50X3NlbGYpLAorCQkJCQkJCSAgIHJvb3Rfb2Zmc2V0c1tvZmZudW0gLSAxXSk7CisJCQl9 CiAKIAkJCS8qIENhbGwgdGhlIEFNJ3MgY2FsbGJhY2sgcm91dGluZSB0byBwcm9jZXNzIHRo ZSB0dXBsZSAqLwogCQkJY2FsbGJhY2soaW5kZXhSZWxhdGlvbiwgJnRpZCwgdmFsdWVzLCBp c251bGwsIHR1cGxlSXNBbGl2ZSwKQEAgLTE4MjksNyArMTg2MCw4IEBAIGhlYXBhbV9pbmRl eF92YWxpZGF0ZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJcm9vdFR1cGxlID0g KmhlYXBjdXJzb3I7CiAJCXJvb3Rfb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1i ZXIoaGVhcGN1cnNvcik7CiAKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxl KSkKKwkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJgorCQkJKGhlYXBU dXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSA9PSAw KQogCQl7CiAJCQlyb290X29mZm51bSA9IHJvb3Rfb2Zmc2V0c1tyb290X29mZm51bSAtIDFd OwogCQkJaWYgKCFPZmZzZXROdW1iZXJJc1ZhbGlkKHJvb3Rfb2ZmbnVtKSkKQEAgLTI1ODYs NiArMjYxOCw3IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2Nh biwKIAkJICogb2Zmc2V0LgogCQkgKi8KIAkJaW50CQkJY3Vyc2xvdDsKKwkJYm9vbAkJcGFn ZV9oYWRfaG90X2luZGV4ZWQgPSBmYWxzZTsKIAogCQkvKiBXZSBtdXN0IGhhdmUgZXh0cmFj dGVkIHRoZSB0dXBsZSBvZmZzZXRzIGJ5IG5vdyAqLwogCQlBc3NlcnQobm9mZnNldHMgPiAt MSk7CkBAIC0yNTk1LDExICsyNjI4LDYzIEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRh YmxlU2NhbkRlc2Mgc2NhbiwKIAkJCU9mZnNldE51bWJlciBvZmZudW0gPSBvZmZzZXRzW2N1 cnNsb3RdOwogCQkJSXRlbVBvaW50ZXJEYXRhIHRpZDsKIAkJCUhlYXBUdXBsZURhdGEgaGVh cFR1cGxlOworCQkJYm9vbAkJaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKIAogCQkJSXRl bVBvaW50ZXJTZXQoJnRpZCwgYmxvY2ssIG9mZm51bSk7CiAJCQlpZiAoaGVhcF9ob3Rfc2Vh cmNoX2J1ZmZlcigmdGlkLCBzY2FuLT5yc19yZCwgYnVmZmVyLCBzbmFwc2hvdCwKLQkJCQkJ CQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUpKQotCQkJCWhzY2FuLT5yc192aXN0dXBs ZXNbbnR1cCsrXSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZ0aWQpOworCQkJCQkJ CQkJICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSwKKwkJCQkJCQkJCSAgICZob3RfaW5kZXhl ZF9zdGFsZSwgTlVMTCwgTlVMTCkpCisJCQl7CisJCQkJT2Zmc2V0TnVtYmVyIHJlc29sdmVk ID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJYm9vbAkJYWxyZWFk eV9oYXZlID0gZmFsc2U7CisKKwkJCQkvKgorCQkJCSAqIEEgYml0bWFwIGhlYXAgc2NhbiBj YW5ub3QgYXR0cmlidXRlIGEgVElEIHRvIG9uZSBpbmRleCwgc28KKwkJCQkgKiBhbnkgY3Jv c3NlZCBpbi1jaGFpbiBIT1QvU0lVIGhvcCBtZWFucyB0aGUgYXJyaXZpbmcgZW50cnkKKwkJ CQkgKiBtYXkgYmUgc3RhbGU7IHJlY2hlY2svZGVkdXAgY29uc2VydmF0aXZlbHkuCisJCQkJ ICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQlwYWdlX2hhZF9ob3RfaW5k ZXhlZCA9IHRydWU7CisKKwkJCQkvKgorCQkJCSAqIFdpdGggSE9ULWluZGV4ZWQgdXBkYXRl cywgbW9yZSB0aGFuIG9uZSBiaXRtYXAgZW50cnkgb24gdGhlCisJCQkJICogc2FtZSBibG9j ayBjYW4gY2hhaW4tcmVzb2x2ZSB0byB0aGUgc2FtZSBsaXZlIHR1cGxlIChhCisJCQkJICog c3RhbGUgb2xkLWtleSBlbnRyeSBwbHVzIHRoZSBmcmVzaCBuZXcta2V5IGVudHJ5LCBvcgor CQkJCSAqIG11bHRpcGxlIHN0YWxlIGVudHJpZXMgZnJvbSBzdWNjZXNzaXZlIGhvdC1pbmRl eGVkCisJCQkJICogdXBkYXRlcykuICBPbmNlIHdlJ3ZlIHNlZW4gYW55IGhvdC1pbmRleGVk IGhvcCBvbiB0aGlzCisJCQkJICogYmxvY2sgZGVkdXAgaW5saW5lIHNvIHVwcGVyIG5vZGVz IChlLmcuLCBNRVJHRSkgZG9uJ3Qgc2VlCisJCQkJICogdGhlIHNhbWUgcm93IHR3aWNlLiAg UHJlc2VydmUgb3JpZ2luYWwgaW5zZXJ0aW9uIG9yZGVyOgorCQkJCSAqIE1FUkdFJ3MgUkVU VVJOSU5HIG9yZGVyaW5nIGFuZCB0ZXN0IGhhcm5lc3Mgc3RhYmlsaXR5IGJvdGgKKwkJCQkg KiBkZXBlbmQgb24gaXQuICBJbiB0aGUgYWJzZW5jZSBvZiBob3QtaW5kZXhlZCBvbiB0aGUg cGFnZSB3ZQorCQkJCSAqIHNraXAgdGhlIGxpbmVhciBzY2FuIGVudGlyZWx5IC0tIHRoZSBU Qk0ncyBUSURzIGFyZSBhbHJlYWR5CisJCQkJICogZGlzdGluY3QgYnkgY29uc3RydWN0aW9u LgorCQkJCSAqLworCQkJCWlmIChwYWdlX2hhZF9ob3RfaW5kZXhlZCkKKwkJCQl7CisJCQkJ CWZvciAoaW50IGogPSAwOyBqIDwgbnR1cDsgaisrKQorCQkJCQl7CisJCQkJCQlpZiAoaHNj YW4tPnJzX3Zpc3R1cGxlc1tqXSA9PSByZXNvbHZlZCkKKwkJCQkJCXsKKwkJCQkJCQlhbHJl YWR5X2hhdmUgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJ fQorCisJCQkJaWYgKCFhbHJlYWR5X2hhdmUpCisJCQkJCWhzY2FuLT5yc192aXN0dXBsZXNb bnR1cCsrXSA9IHJlc29sdmVkOworCisJCQkJLyoKKwkJCQkgKiBJZiB3ZSByZWFjaGVkIHRo ZSB2aXNpYmxlIHR1cGxlIHRocm91Z2ggYSBIT1QtaW5kZXhlZAorCQkJCSAqIChob3QtaW5k ZXhlZCkgaG9wLCB0aGUgYml0bWFwIGluZGV4IGVudHJ5IHRoYXQgcG9pbnRlZCB1cworCQkJ CSAqIGF0IHRoZSBjaGFpbiByb290IG1heSBkZXNjcmliZSBrZXkgdmFsdWVzIHRoZSB2aXNp YmxlIHR1cGxlCisJCQkJICogbm8gbG9uZ2VyIGhhcy4gIEZvcmNlIEJpdG1hcEhlYXBTY2Fu IHRvIHJ1biBpdHMgcmVjaGVjaworCQkJCSAqIHF1YWwgYWdhaW5zdCB0aGVzZSB0dXBsZXMg ZXZlbiBpZiB0aGUgYml0bWFwIHBhZ2Ugd2FzCisJCQkJICogb3RoZXJ3aXNlIGV4YWN0Lgor CQkJCSAqLworCQkJCWlmIChob3RfaW5kZXhlZF9zdGFsZSkKKwkJCQkJKnJlY2hlY2sgPSB0 cnVlOworCQkJfQogCQl9CiAJfQogCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9pbmRleHNjYW4uYwppbmRleCAzM2QxNGYxZGU3ZC4uODJhM2ZiMmIzMjQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMKQEAgLTE1 LDYgKzE1LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNz L2hlYXBhbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9ob3RfaW5kZXhlZC5oIgogI2luY2x1ZGUg ImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKIApA QCAtMzUsNiArMzYsMTQgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJl bCwgdWludDMyIGZsYWdzKQogCWhzY2FuLT54c19ibGsgPSBJbnZhbGlkQmxvY2tOdW1iZXI7 CiAJaHNjYW4tPnhzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAorCS8qCisJICogU2Ny YXRjaCBzcGFjZSBmb3IgdGhlIHVuaW9uIG9mIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgdGhh dCBhIEhPVC9TSVUKKwkgKiBjaGFpbiB3YWxrIGNyb3NzZXMsIHNpemVkIGZvciB0aGlzIHJl bGF0aW9uJ3MgY29sdW1uIGNvdW50LiAgVGhyZWFkZWQKKwkgKiBiYWNrIG91dCB0aHJvdWdo IHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQgZm9yIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIuCisJ ICovCisJaHNjYW4tPnhzX2Jhc2UueHNfaG90X2luZGV4ZWRfY3Jvc3NlZCA9CisJCXBhbGxv YzAoSG90SW5kZXhlZEJpdG1hcEJ5dGVzKFJlbGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVz KHJlbCkpKTsKKwogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CiAKQEAgLTYzLDYgKzcy LDkgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2VuZChJbmRleEZldGNoVGFibGVEYXRhICpzY2Fu KQogCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2FuLT54c192bWJ1ZmZlcikpCiAJCVJlbGVhc2VC dWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAorCWlmIChoc2Nhbi0+eHNfYmFzZS54c19o b3RfaW5kZXhlZF9jcm9zc2VkICE9IE5VTEwpCisJCXBmcmVlKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQpOworCiAJcGZyZWUoaHNjYW4pOwogfQogCkBAIC04Mywx MyArOTUsMjQgQEAgaGVhcGFtX2luZGV4X2ZldGNoX2VuZChJbmRleEZldGNoVGFibGVEYXRh ICpzY2FuKQogICogZ2xvYmFsbHkgZGVhZDsgKmFsbF9kZWFkIGlzIHNldCB0cnVlIGlmIGFs bCBtZW1iZXJzIG9mIHRoZSBIT1QgY2hhaW4KICAqIGFyZSB2YWN1dW1hYmxlLCBmYWxzZSBp ZiBub3QuCiAgKgorICogSWYgaG90X2luZGV4ZWRfcmVjaGVjayBpcyBub3QgTlVMTCwgKmhv dF9pbmRleGVkX3JlY2hlY2sgaXMgc2V0IHRydWUgaWZmIHRoZQorICogd2FsayBjcm9zc2Vk IGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpIGhvcCBhZnRlciB0aGUgZW50 cnkgdHVwbGUKKyAqIG9uIHRoZSB3YXkgdG8gdGhlIHJldHVybmVkIHR1cGxlIC0tIGkuZS4g dGhlIGFycml2aW5nIGluZGV4IGVudHJ5J3Mgc3RvcmVkCisgKiBrZXkgbWF5IG5vIGxvbmdl ciBtYXRjaCB0aGUgbGl2ZSB0dXBsZSwgc28gdGhlIGNhbGxlciBtdXN0IHJlY2hlY2sgaXQg KHZpYQorICogYSBsZWFmLWtleSBjb21wYXJpc29uIG9yIGEgcXVhbCByZWNoZWNrKS4gIFRo ZSBlbnRyeSB0dXBsZSdzIG93biBwcm9kdWNpbmcKKyAqIGhvcCBpcyBleGNsdWRlZCwgc28g YSBmcmVzaCBlbnRyeSBwb2ludGluZyBkaXJlY3RseSBhdCBpdHMgdHVwbGUgaXMgbm90Cisg KiBmbGFnZ2VkLiAgV2hlbiBubyBzdWNoIGhvcCB3YXMgY3Jvc3NlZCwgKmhvdF9pbmRleGVk X3JlY2hlY2sgaXMgbGVmdCBmYWxzZS4KKyAqCiAgKiBVbmxpa2UgaGVhcF9mZXRjaCwgdGhl IGNhbGxlciBtdXN0IGFscmVhZHkgaGF2ZSBwaW4gYW5kIChhdCBsZWFzdCkgc2hhcmUKICAq IGxvY2sgb24gdGhlIGJ1ZmZlcjsgaXQgaXMgc3RpbGwgcGlubmVkL2xvY2tlZCBhdCBleGl0 LgogICovCiBib29sCiBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2ludGVyIHRpZCwg UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCSAgIFNuYXBzaG90IHNu YXBzaG90LCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCQkgICBib29sICphbGxfZGVhZCwg Ym9vbCBmaXJzdF9jYWxsKQorCQkJCQkgICBib29sICphbGxfZGVhZCwgYm9vbCBmaXJzdF9j YWxsLAorCQkJCQkgICBib29sICpob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkgICB1aW50 OCAqY3Jvc3NlZF9iaXRtYXAsCisJCQkJCSAgIGJvb2wgKnByZWZpeF9hbGxfZGVhZCkKIHsK IAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQg cHJldl94bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CkBAIC05OCwxMiArMTIxLDMwIEBA IGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlib29sCQlhdF9jaGFpbl9zdGFydDsKIAlib29sCQl2 YWxpZDsKIAlib29sCQlza2lwOworCWJvb2wJCXByZWZpeF9kZWFkOwogCUdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0aW9uR2V0TnVt YmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKTsKKworCS8qIE9ubHkgdHJhY2sgcHJlZml4X2Rl YWQgd2hlbiB0aGUgY2FsbGVyIGFjdHVhbGx5IHdhbnRzIGl0LiAqLworCXByZWZpeF9kZWFk ID0gKHByZWZpeF9hbGxfZGVhZCAhPSBOVUxMKTsKIAogCS8qIElmIHRoaXMgaXMgbm90IHRo ZSBmaXJzdCBjYWxsLCBwcmV2aW91cyBjYWxsIHJldHVybmVkIGEgKGxpdmUhKSB0dXBsZSAq LwogCWlmIChhbGxfZGVhZCkKIAkJKmFsbF9kZWFkID0gZmlyc3RfY2FsbDsKIAorCS8qCisJ ICogT24gdGhlIGZpcnN0IGNhbGwsIGNsZWFyIHRoZSByZWNoZWNrIGZsYWcgYW5kIHRoZSBj cm9zc2VkLWF0dHJzIHVuaW9uLgorCSAqIE9uIHN1YnNlcXVlbnQgY2FsbHMgKHNhbWUgY2hh aW4gY29udGludWluZykga2VlcCB3aGF0ZXZlciBhbiBlYXJsaWVyCisJICogaG9wIGFscmVh ZHkgYWNjdW11bGF0ZWQuCisJICovCisJaWYgKGZpcnN0X2NhbGwpCisJeworCQlpZiAoaG90 X2luZGV4ZWRfcmVjaGVjaykKKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFsc2U7CisJ CWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCW1lbXNldChjcm9zc2VkX2JpdG1hcCwgMCwgSG90 SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJfQorCiAJYmxrbm8gPSBJdGVtUG9p bnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CiAJb2ZmbnVtID0gSXRlbVBvaW50ZXJHZXRPZmZz ZXROdW1iZXIodGlkKTsKIAlhdF9jaGFpbl9zdGFydCA9IGZpcnN0X2NhbGw7CkBAIC0xMzAs NyArMTcxLDE3IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3VsZCBvbmx5 IHNlZSBhIHJlZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRlbUlkSXNS ZWRpcmVjdGVkKGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBGb2xsb3cg dGhlIHJlZGlyZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGlyZWN0LiAg QSBjb2xsYXBzZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMgYSBydW4g b2YgZm9yd2FyZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdzCisJCQkJ ICogbW9kaWZpZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxpdmUgdHVw bGU7CisJCQkJICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJlciBvbmx5 IHdoZW4gaXRzCisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhlIHN1cnZp dmluZyBsYXRlciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0aGUgc3R1 YnMgYW5kIGxpdmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93IGNvbnRy aWJ1dGUgdGhlIGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJCSAqIGhv cCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0aGUKKwkJ CQkgKiBvdmVybGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNzIGxheWVy LgorCQkJCSAqLwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKIAkJCQlh dF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEwICsyMDIs MTExIEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJSXRlbVBvaW50ZXJTZXQoJmhlYXBUdXBs ZS0+dF9zZWxmLCBibGtubywgb2ZmbnVtKTsKIAogCQkvKgotCQkgKiBTaG91bGRuJ3Qgc2Vl IGEgSEVBUF9PTkxZIHR1cGxlIGF0IGNoYWluIHN0YXJ0LgorCQkgKiBBIGNvbGxhcHNlLXN1 cnZpdm9yIHN0dWIgaXMgYW4gTFBfTk9STUFMIGl0ZW0gYnV0IG5vdCBhIHJlYWwgdHVwbGU6 CisJCSAqIGl0IGlzIGEgZnJlZXplLXNhZmUgZm9yd2FyZGluZyBub2RlIGNhcnJ5aW5nIHRo ZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdtZW50IGl0 IHJlcHJlc2VudHMuICBUcmVhdCBpdCBsaWtlIGEKKwkJICogY3Jvc3NlZCBIT1QvU0lVIGhv cCAtLSBhcm0gdGhlIHJlY2hlY2sgYW5kIE9SIGl0cyBiaXRtYXAgaW50byB0aGUKKwkJICog Y3Jvc3NlZCB1bmlvbiAodW5sZXNzIHdlIGFycml2ZWQgZGlyZWN0bHkgYXQgaXQsIGluIHdo aWNoIGNhc2UgdGhlCisJCSAqIGFycml2aW5nIGVudHJ5IGFscmVhZHkgcmVmbGVjdHMgdGhp cyBzZWdtZW50J3MgdmFsdWUpIC0tIHRoZW4KKwkJICogZm9sbG93IGl0cyBmb3J3YXJkIGxp bmsuICBBIHN0dWIgaXMgbmV2ZXIgdmlzaWJsZSBhbmQgbmV2ZXIKKwkJICogcmV0dXJuZWQs IGFuZCBpdHMgZm9yd2FyZCBsaW5rIGlzIGEgbG9naWNhbCwgbm90IHhpZC1jb250aW51b3Vz LAorCQkgKiBlZGdlLCBzbyByZXNldCBwcmV2X3htYXggdG8gc2tpcCB0aGUgY2hhaW4taW50 ZWdyaXR5IGNoZWNrIG9uIHRoZQorCQkgKiBuZXh0IG1lbWJlci4KKwkJICovCisJCWlmIChI b3RJbmRleGVkSGVhZGVySXNTdHViKGhlYXBUdXBsZS0+dF9kYXRhKSkKKwkJeworCQkJaWYg KCFhdF9jaGFpbl9zdGFydCkKKwkJCXsKKwkJCQlpZiAoaG90X2luZGV4ZWRfcmVjaGVjaykK KwkJCQkJKmhvdF9pbmRleGVkX3JlY2hlY2sgPSB0cnVlOworCQkJCWlmIChjcm9zc2VkX2Jp dG1hcCkKKwkJCQl7CisJCQkJCWludAkJCWJtbmF0dHMgPQorCQkJCQkJSG90SW5kZXhlZFR1 cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJCS8qCisJCQkJCSAq IEEgaG9wJ3Mgd3JpdGUtdGltZSBuYXR0cyBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2Vl ZAorCQkJCQkgKiB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzLiAgT24gYSBjb3JydXB0 IHBhZ2UgYQorCQkJCQkgKiBzdHViJ3MgdW5ib3VuZGVkIHN0YXNoZWQgbmF0dHMgY291bGQg b3RoZXJ3aXNlIG92ZXJmbG93CisJCQkJCSAqIGNyb3NzZWRfYml0bWFwLCB3aGljaCBpcyBh bGxvY2F0ZWQgZm9yIHJlbG5hdHRzOyBjbGFtcAorCQkJCQkgKiBkZWZlbnNpdmVseS4KKwkJ CQkJICovCisJCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQkJaWYgKGJt bmF0dHMgPiByZWxuYXR0cykKKwkJCQkJCWJtbmF0dHMgPSByZWxuYXR0czsKKworCQkJCQlI b3RJbmRleGVkQml0bWFwVW5pb24oY3Jvc3NlZF9iaXRtYXAsCisJCQkJCQkJCQkJICBIb3RJ bmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJ CQkJCQkJCSAgaGVhcFR1cGxlLT50X2xlbiwKKwkJCQkJCQkJCQkJCQkJCQkJICBibW5hdHRz KSwKKwkJCQkJCQkJCQkgIGJtbmF0dHMpOworCQkJCX0KKwkJCX0KKwkJCW9mZm51bSA9IEhv dEluZGV4ZWRTdHViR2V0Rm9yd2FyZChoZWFwVHVwbGUtPnRfZGF0YSk7CisJCQlhdF9jaGFp bl9zdGFydCA9IGZhbHNlOworCQkJcHJldl94bWF4ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qCisJCSAqIFNob3VsZG4ndCBzZWUgYSBIRUFQ X09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQsIHVubGVzcyB0aGF0IHR1cGxlCisJCSAqIGlz IHRoZSB0YXJnZXQgb2YgYSBmcmVzaGx5LWluc2VydGVkIGhvdC1pbmRleGVkIGluZGV4IGVu dHJ5OiB0aGVuCisJCSAqIGFycml2aW5nIGRpcmVjdGx5IGF0IGEgaGVhcC1vbmx5IEhPVC1p bmRleGVkIHR1cGxlIGlzIGxlZ2FsIGFuZCB0aGUKKwkJICogdHVwbGUgaXMgdGhlIGNhbm9u aWNhbCB2aXNpYmxlIHZlcnNpb24sIHNvIHdlIGZhbGwgdGhyb3VnaCBhbmQKKwkJICogYXBw bHkgbm9ybWFsIHZpc2liaWxpdHkgY2hlY2tzIHRvIGl0LiAgT3RoZXJ3aXNlLCB0cmVhdCBp dCBhcyBhCisJCSAqIGJyb2tlbiBjaGFpbi4KIAkJICovCiAJCWlmIChhdF9jaGFpbl9zdGFy dCAmJiBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpCi0JCQlicmVhazsKKwkJewor CQkJaWYgKChoZWFwVHVwbGUtPnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURf VVBEQVRFRCkgPT0gMCkKKwkJCQlicmVhazsKKworCQkJLyoKKwkJCSAqIFdlIHdlcmUgcG9p bnRlZCBkaXJlY3RseSBhdCB0aGlzIGhvdC1pbmRleGVkIHR1cGxlLiAgVGhlIGluZGV4CisJ CQkgKiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91Z2ggd2FzIGluc2VydGVkICpmb3IqIHRoaXMg dXBkYXRlLCBzbyBpdAorCQkJICogcmVmbGVjdHMgdGhpcyB0dXBsZSdzIGN1cnJlbnQgYXR0 cmlidXRlIHZhbHVlczsgaXRzIG93bgorCQkJICogcHJvZHVjaW5nIGhvcCBpcyBub3QgYSBj cm9zc2VkIGhvcCwgc28gaXQgaXMgbm90IGZsYWdnZWQgZm9yCisJCQkgKiByZWNoZWNrIChh IGZyZXNoIGVudHJ5IGlzIG5ldmVyIHN0YWxlIGZvciBpdHMgb3duIGluZGV4KS4KKwkJCSAq LworCQl9CisJCWVsc2UgaWYgKGhvdF9pbmRleGVkX3JlY2hlY2sgIT0gTlVMTCAmJgorCQkJ CSAoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFU RUQpICE9IDApCisJCXsKKwkJCS8qCisJCQkgKiBBIEhPVC9TSVUgaG9wIHJlYWNoZWQgYnkg Zm9sbG93aW5nIHRoZSBjaGFpbiAob3IgYSByZWRpcmVjdCkKKwkJCSAqIGZyb20gYW4gZWFy bGllciBlbnRyeTogdGhpcyBob3AgaXMgY3Jvc3NlZCwgc28gdGhlIGFycml2aW5nCisJCQkg KiBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdlciBtYXRjaCB0aGUgbGl2ZSB0dXBs ZS4gIFNldCB0aGUKKwkJCSAqIHJlY2hlY2sgZmxhZyB0byB0ZWxsIHRoZSBpbmRleC1hY2Nl c3MgbGF5ZXIgdG8gY29uc3VsdCB0aGUKKwkJCSAqIGNyb3NzZWQtYXR0cnMgdW5pb247IHRo YXQgdW5pb24gKGFjY3VtdWxhdGVkIGJlbG93KSBpcyB3aGF0CisJCQkgKiBkZWNpZGVzIHN0 YWxlbmVzcy4KKwkJCSAqLworCQkJKmhvdF9pbmRleGVkX3JlY2hlY2sgPSB0cnVlOworCisJ CQkvKgorCQkJICogQWNjdW11bGF0ZSB0aGlzIGhvcCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1h cCBpbnRvIHRoZSBjcm9zc2VkCisJCQkgKiB1bmlvbi4gIEEgdHVwbGUncyBpbmxpbmUgYml0 bWFwIHJlY29yZHMgdGhlIGluZGV4ZWQgYXR0cmlidXRlcworCQkJICogdGhhdCBjaGFuZ2Vk IGF0IHRoZSBob3AgSU5UTyBpdCwgd2hpY2ggaXMgZXhhY3RseSB0aGUgaG9wIHdlCisJCQkg KiBqdXN0IGNyb3NzZWQgYnkgYWR2YW5jaW5nIHRvIGl0OyBPUmluZyBlYWNoIGNyb3NzZWQg aG9wIHlpZWxkcworCQkJICogdGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGNoYW5nZWQg YWZ0ZXIgdGhlIGVudHJ5J3Mgb3duCisJCQkgKiB0dXBsZS4KKwkJCSAqLworCQkJaWYgKGNy b3NzZWRfYml0bWFwKQorCQkJeworCQkJCWludAkJCWJtbmF0dHMgPQorCQkJCQlIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkvKiBTZWUg dGhlIGNvbW1lbnQgb24gdGhlIHN0dWIgY2FzZSdzIGNyb3NzZWRfYml0bWFwIHVzZS4gKi8K KwkJCQlBc3NlcnQoYm1uYXR0cyA8PSByZWxuYXR0cyk7CisJCQkJaWYgKGJtbmF0dHMgPiBy ZWxuYXR0cykKKwkJCQkJYm1uYXR0cyA9IHJlbG5hdHRzOworCisJCQkJSG90SW5kZXhlZEJp dG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9k aWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJCQkJCQkJICBoZWFw VHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkg IGJtbmF0dHMpOworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogVGhlIHhtaW4gc2hvdWxkIG1h dGNoIHRoZSBwcmV2aW91cyB4bWF4IHZhbHVlLCBlbHNlIGNoYWluIGlzCkBAIC0xODYsNiAr MzM4LDE1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJIEhlYXBUdXBsZUhlYWRl ckdldFhtaW4oaGVhcFR1cGxlLT50X2RhdGEpKTsKIAkJCQlpZiAoYWxsX2RlYWQpCiAJCQkJ CSphbGxfZGVhZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBSZXBvcnQgd2hldGhlciBl dmVyeSBjaGFpbiBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhpcworCQkJCSAqIHZpc2libGUg dHVwbGUgaXMgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLiAgV2l0aCBhIHN0YWxlCisJCQkJ ICogdmVyZGljdCB0aGlzIGxldHMgdGhlIGNhbGxlciBraWxsIHRoZSBhcnJpdmluZyBsZWFm IHNhZmVseS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlZml4X2FsbF9kZWFkKQorCQkJCQkqcHJl Zml4X2FsbF9kZWFkID0gcHJlZml4X2RlYWQ7CisKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJfQpAQCAtMTk0LDE4ICszNTUsMjUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVt UG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBJZiB3ZSBjYW4ndCBzZWUgaXQsIG1heWJlIG5vIG9uZSBlbHNlIGNhbiBlaXRoZXIu ICBBdCBjYWxsZXIKIAkJICogcmVxdWVzdCwgY2hlY2sgd2hldGhlciBhbGwgY2hhaW4gbWVt YmVycyBhcmUgZGVhZCB0byBhbGwKLQkJICogdHJhbnNhY3Rpb25zLgorCQkgKiB0cmFuc2Fj dGlvbnMuICBUaGUgc2FtZSBzdXJlbHktZGVhZCB0ZXN0IGZlZWRzIHByZWZpeF9kZWFkLCB3 aGljaAorCQkgKiAodW5saWtlIGFsbF9kZWFkKSBpcyBub3QgcmVzZXQgd2hlbiBhIHZpc2li bGUgdHVwbGUgaXMgZm91bmQsIHNvIGl0CisJCSAqIHJlY29yZHMgd2hldGhlciB0aGUgbWVt YmVycyBza2lwcGVkIGFoZWFkIG9mIHRoZSByZXR1cm5lZCB0dXBsZSBhcmUKKwkJICogYWxs IGRlYWQgdG8gYWxsIC0tIHRoZSBzYWZlLXRvLWtpbGwtdGhpcy1sZWFmIGNvbmRpdGlvbi4K IAkJICoKIAkJICogTm90ZTogaWYgeW91IGNoYW5nZSB0aGUgY3JpdGVyaW9uIGhlcmUgZm9y IHdoYXQgaXMgImRlYWQiLCBmaXggdGhlCiAJCSAqIHBsYW5uZXIncyBnZXRfYWN0dWFsX3Zh cmlhYmxlX3JhbmdlKCkgZnVuY3Rpb24gdG8gbWF0Y2guCiAJCSAqLwotCQlpZiAoYWxsX2Rl YWQgJiYgKmFsbF9kZWFkKQorCQlpZiAoKGFsbF9kZWFkICYmICphbGxfZGVhZCkgfHwgKHBy ZWZpeF9hbGxfZGVhZCAmJiBwcmVmaXhfZGVhZCkpCiAJCXsKIAkJCWlmICghdmlzdGVzdCkK IAkJCQl2aXN0ZXN0ID0gR2xvYmFsVmlzVGVzdEZvcihyZWxhdGlvbik7CiAKIAkJCWlmICgh SGVhcFR1cGxlSXNTdXJlbHlEZWFkKGhlYXBUdXBsZSwgdmlzdGVzdCkpCi0JCQkJKmFsbF9k ZWFkID0gZmFsc2U7CisJCQl7CisJCQkJaWYgKGFsbF9kZWFkKQorCQkJCQkqYWxsX2RlYWQg PSBmYWxzZTsKKwkJCQlwcmVmaXhfZGVhZCA9IGZhbHNlOworCQkJfQogCQl9CiAKIAkJLyoK QEAgLTI3Myw3ICs0NDEsMTUgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJ bmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJCQlzbmFwc2hvdCwKIAkJCQkJ CQkJCQkJJmJzbG90LT5iYXNlLnR1cGRhdGEsCiAJCQkJCQkJCQkJCWFsbF9kZWFkLAotCQkJ CQkJCQkJCQkhKmhlYXBfY29udGludWUpOworCQkJCQkJCQkJCQkhKmhlYXBfY29udGludWUs CisJCQkJCQkJCQkJCSZzY2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkJ CQlzY2FuLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJCQkmc2Nhbi0+eHNf cHJlZml4X2FsbF9kZWFkKTsKKwlpZiAoIWdvdF9oZWFwX3R1cGxlKQorCXsKKwkJc2Nhbi0+ eHNfaG90X2luZGV4ZWRfcmVjaGVjayA9IGZhbHNlOworCQlzY2FuLT54c19wcmVmaXhfYWxs X2RlYWQgPSBmYWxzZTsKKwl9CiAJYnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqdGlk OwogCUxvY2tCdWZmZXIoaHNjYW4tPnhzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggMTQwODk4OWM1NjguLjY2MjhmOWJm ODVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtMTAzLDYgKzEwMyw5IEBA IFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGludCBua2V5 cywgaW50IG5vcmRlcmJ5cykKIAkJc2Nhbi0+b3JkZXJCeURhdGEgPSBOVUxMOwogCiAJc2Nh bi0+eHNfd2FudF9pdHVwID0gZmFsc2U7IC8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKwlzY2Fu LT54c19pbmRleF9vbmx5ID0gZmFsc2U7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKworCXNj YW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkvKgogCSAqIER1cmluZyBy ZWNvdmVyeSB3ZSBpZ25vcmUga2lsbGVkIHR1cGxlcyBhbmQgZG9uJ3QgYm90aGVyIHRvIGtp bGwgdGhlbQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXggNzk2N2U5Mzk4 NDcuLjcyMzc3NzdlNjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgv aW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAg LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNj ZXNzL2FtYXBpLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIK ICNpbmNsdWRlICJhY2Nlc3MvcmVsc2Nhbi5oIgpAQCAtNjA2LDYgKzYwNywxNSBAQCBpbmRl eF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uKQogCS8qIFhYWDogd2Ugc2hvdWxkIGFzc2VydCB0aGF0IGEgc25hcHNob3QgaXMgcHVz aGVkIG9yIHJlZ2lzdGVyZWQgKi8KIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoUmVj ZW50WG1pbikpOwogCisJLyoKKwkgKiBSZXNldCB0aGUgSE9ULWluZGV4ZWQgcmVjaGVjayBm bGFnOiBpdCBpcyBzZXQgYnkgdGhlIGhlYXAgQU0gZHVyaW5nCisJICogaW5kZXhfZmV0Y2hf aGVhcCBhbmQgaXMgcGVyLWZldGNoZWQtdHVwbGUsIG5vdCBwZXItaW5kZXgtZW50cnkuIEZv cgorCSAqIEluZGV4T25seVNjYW4sIHdoaWNoIG1heSBza2lwIGluZGV4X2ZldGNoX2hlYXAg d2hlbiB0aGUgVk0gc2F5cyB0aGUKKwkgKiBlbnRyeSBpcyB2aXNpYmxlLXRvLWFsbCwgdGhp cyBlbnN1cmVzIHdlIGRvbid0IGNhcnJ5IGEgc3RhbGUgdmFsdWUgZnJvbQorCSAqIGEgcHJl dmlvdXMgZW50cnkuCisJICovCisJc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxz ZTsKKwogCS8qCiAJICogVGhlIEFNJ3MgYW1nZXR0dXBsZSBwcm9jIGZpbmRzIHRoZSBuZXh0 IGluZGV4IGVudHJ5IG1hdGNoaW5nIHRoZSBzY2FuCiAJICoga2V5cywgYW5kIHB1dHMgdGhl IFRJRCBpbnRvIHNjYW4tPnhzX2hlYXB0aWQuICBJdCBzaG91bGQgYWxzbyBzZXQKQEAgLTY2 NiwxNSArNjc2LDk3IEBAIGluZGV4X2ZldGNoX2hlYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCkKIAlpZiAoZm91bmQpCiAJCXBnc3RhdF9jb3VudF9oZWFw X2ZldGNoKHNjYW4tPmluZGV4UmVsYXRpb24pOwogCisJLyoKKwkgKiBUaGUgdGFibGUgQU0g cmVwb3J0ZWQsIHZpYSB4c19ob3RfaW5kZXhlZF9yZWNoZWNrLCB3aGV0aGVyIHRoZSB3YWxr IHRvCisJICogdGhlIGxpdmUgdHVwbGUgY3Jvc3NlZCBhIEhPVC1pbmRleGVkIGhvcCBhZnRl ciB0aGUgYXJyaXZpbmcgaW5kZXgKKwkgKiBlbnRyeSdzIG93biB0dXBsZS4gIFdoZW4gaXQg ZGlkLCB0aGUgZW50cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIKKwkgKiBhZ3JlZSB3 aXRoIHRoZSBsaXZlIHR1cGxlLCBhbmQgd2UgbXVzdCBkZWNpZGUgd2hldGhlciB0byBkcm9w IGl0LgorCSAqCisJICogVGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAoeHNfaG90X2lu ZGV4ZWRfY3Jvc3NlZCkgaXMgdGhlIHN0YWxlbmVzcworCSAqIGF1dGhvcml0eS4gIEl0IGlz IHRoZSB1bmlvbiBvZiB0aGUgcGVyLWhvcCBtb2RpZmllZC1hdHRyaWJ1dGUgYml0bWFwcwor CSAqIG9mIGV2ZXJ5IGhvcCB0aGUgd2FsayBjcm9zc2VkLCBhbmQgaXQgaXMgY29tcGxldGU6 IGVhY2ggY3Jvc3NlZCBsaXZlCisJICogaG9wLCBjb2xsYXBzZS1zdXJ2aXZvciBzdHViLCBh bmQgcmVkaXJlY3RlZCAoY29sbGFwc2VkKSBwcmVmaXgKKwkgKiBjb250cmlidXRlcyBpdHMg c2VnbWVudCdzIGJpdG1hcCwgYW5kIGNoYWluIGNvbGxhcHNlIG9ubHkgZXZlciByZWNsYWlt cworCSAqIGEgbWVtYmVyIHdob3NlIGF0dHJpYnV0ZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBz dXJ2aXZpbmcgbGF0ZXIgaG9wcyAoc2VlCisJICogcHJ1bmVoZWFwLmMpLiAgVGhlcmVmb3Jl OgorCSAqCisJICogLSBpZiB0aGUgdW5pb24gaXMgZGlzam9pbnQgZnJvbSB0aGUgaGVhcCBj b2x1bW5zIHRoaXMgaW5kZXggcmVmZXJlbmNlcywKKwkgKiBub25lIG9mIHRoZSBpbmRleCdz IGlucHV0cyBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW4sIHNvIHRoZSBlbnRyeSdzIGtleQor CSAqIHN0aWxsIG1hdGNoZXMgdGhlIGxpdmUgdHVwbGU6IGtlZXAgaXQ7IGFuZAorCSAqCisJ ICogLSBpZiB0aGUgdW5pb24gb3ZlcmxhcHMgdGhlbSwgb25lIG9mIHRoaXMgaW5kZXgncyBr ZXkgY29sdW1ucyBjaGFuZ2VkCisJICogYWZ0ZXIgdGhlIGVudHJ5J3Mgb3duIHR1cGxlLCBz byB0aGUgZW50cnkgaXMgc3RhbGU6IGRyb3AgaXQuCisJICoKKwkgKiBEcm9wcGluZyBvbiBv dmVybGFwIGlzIGNvcnJlY3QgZXZlbiB3aGVuIHRoZSBrZXkgd2FzIGN5Y2xlZCBhd2F5IGFu ZAorCSAqIGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIChhbiBBQkEgdXBkYXRlKTogdGhl IHVwZGF0ZSB0aGF0IHNldCB0aGUKKwkgKiB2YWx1ZSBiYWNrIGNyZWF0ZWQgYSBmcmVzaCBl bnRyeSBwb2ludGluZyBhdCBpdHMgb3duIChsaXZlKSB0dXBsZSwKKwkgKiB3aG9zZSB3YWxr IGNyb3NzZXMgbm8gbGF0ZXIga2V5LWNoYW5naW5nIGhvcCwgc28gdGhhdCBlbnRyeSB1bmlx dWVseQorCSAqIHN1cHBsaWVzIHRoZSByb3cgd2hpbGUgdGhpcyBzdGFsZSBhbmNlc3RvciBl bnRyeSBpcyBkcm9wcGVkLiAgTm8KKwkgKiB2YWx1ZS1yZWNoZWNrIGlzIG5lZWRlZCwgc28g dGhpcyB3b3JrcyBmb3IgYW55IGFjY2VzcyBtZXRob2Q7IHRoZQorCSAqIHN0YWxlbmVzcyBk ZWNpc2lvbiBpcyBwdXJlbHkgYXR0cmlidXRlLWJhc2VkLgorCSAqLworCXNjYW4tPnhzX2hv dF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CisJaWYgKGZvdW5kICYmCisJCXNjYW4tPnhzX2hl YXBmZXRjaC0+eHNfaG90X2luZGV4ZWRfcmVjaGVjayAmJgorCQlzY2FuLT54c19oZWFwZmV0 Y2gtPnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwl7CisJCUJpdG1hcHNldCAg KmlkeGF0dHJzID0gUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoc2Nhbi0+aW5kZXhSZWxhdGlv bik7CisJCWludAkJCXggPSAtMTsKKworCQl3aGlsZSAoKHggPSBibXNfbmV4dF9tZW1iZXIo aWR4YXR0cnMsIHgpKSA+PSAwKQorCQl7CisJCQlBdHRyTnVtYmVyCWF0dG51bSA9IHggKyBG aXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQkvKiB0aGUgY3Jvc3Nl ZCBiaXRtYXAgcmVjb3JkcyBvbmx5IHVzZXIgYXR0cmlidXRlcyAqLworCQkJaWYgKGF0dG51 bSA+PSAxICYmCisJCQkJSG90SW5kZXhlZEF0dHJJc01vZGlmaWVkKHNjYW4tPnhzX2hlYXBm ZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCwKKwkJCQkJCQkJCQkgYXR0bnVtKSkKKwkJ CXsKKwkJCQlzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQl9CisJCX0KKwkJYm1zX2ZyZWUoaWR4YXR0cnMpOworCX0KKwogCS8qCiAJICogSWYg d2Ugc2Nhbm5lZCBhIHdob2xlIEhPVCBjaGFpbiBhbmQgZm91bmQgb25seSBkZWFkIHR1cGxl cywgdGVsbCBpbmRleAogCSAqIEFNIHRvIGtpbGwgaXRzIGVudHJ5IGZvciB0aGF0IFRJRCAo dGhpcyB3aWxsIHRha2UgZWZmZWN0IGluIHRoZSBuZXh0CiAJICogYW1nZXR0dXBsZSBjYWxs LCBpbiBpbmRleF9nZXRuZXh0X3RpZCkuICBXZSBkbyBub3QgZG8gdGhpcyB3aGVuIGluCiAJ ICogcmVjb3ZlcnkgYmVjYXVzZSBpdCBtYXkgdmlvbGF0ZSBNVkNDIHRvIGRvIHNvLiAgU2Vl IGNvbW1lbnRzIGluCiAJICogUmVsYXRpb25HZXRJbmRleFNjYW4oKS4KKwkgKgorCSAqIEFk ZGl0aW9uYWxseSBraWxsIGEgc3RhbGUgSE9ULWluZGV4ZWQgbGVhZiAob25lIHdob3NlIGtl eSB0aGUgbGl2ZQorCSAqIHR1cGxlIG5vIGxvbmdlciBob2xkcykgd2hlbiBldmVyeSBjaGFp biBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhlCisJICogcmV0dXJuZWQgdHVwbGUgaXMgZGVh ZCB0byBhbGwgdHJhbnNhY3Rpb25zICh4c19wcmVmaXhfYWxsX2RlYWQpOiBubworCSAqIHNu YXBzaG90IGNhbiByZWFjaCBhIG1hdGNoaW5nIHZlcnNpb24gdGhyb3VnaCB0aGlzIGxlYWYs IHNvIGl0IGlzCisJICogcmVkdW5kYW50IGFuZCByZWNsYWltaW5nIGl0IGJvdW5kcyB0aGUg aW5kZXggYmxvYXQgSE9ULWluZGV4ZWQgdXBkYXRlcworCSAqIGNyZWF0ZS4KKwkgKgorCSAq IFR3byBpbmRlcGVuZGVudCBjb25kaXRpb25zIG1ha2UgdGhpcyBzYWZlOgorCSAqCisJICog IC0gVGhlIHN1cmVseS1kZWFkIHByZWZpeCBnYXRlICh4c19wcmVmaXhfYWxsX2RlYWQpIG1l YW5zIG5vIHNuYXBzaG90LAorCSAqICAgIGluY2x1ZGluZyBvbGRlciBvbmVzIHN0aWxsIHJ1 bm5pbmcsIGNhbiByZWFjaCBhIHZlcnNpb24gdGhyb3VnaCB0aGlzCisJICogICAgbGVhZiB3 aG9zZSBrZXkgbWF0Y2hlczogZXZlcnkgbWVtYmVyIGFoZWFkIG9mIHRoZSBsaXZlIHR1cGxl IGlzIGRlYWQKKwkgKiAgICB0byBhbGwuICBUaGlzIGlzIHdoYXQgbWFrZXMgaXQgTVZDQy1z YWZlLCBleGFjdGx5IGFzIGZvciB0aGUKKwkgKiAgICBhbGxfZGVhZCBjYXNlLgorCSAqCisJ ICogIC0gVGhlIGxlYWYgaXMgZ2VudWluZWx5IHJlZHVuZGFudCwgbm90IHRoZSByb3cncyBv bmx5IGVudHJ5LiAgQSBzdGFsZQorCSAqICAgIHZlcmRpY3QgbWVhbnMgdGhlIGNyb3NzZWQt aG9wIHVuaW9uIG92ZXJsYXBzIHRoaXMgaW5kZXgncyBjb2x1bW5zLAorCSAqICAgIGkuZS4g b25lIG9mIHRoaXMgaW5kZXgncyBhdHRyaWJ1dGVzIGNoYW5nZWQgb24gYSBob3AgYWZ0ZXIg dGhpcworCSAqICAgIGxlYWYncyB0YXJnZXQuICBUaGUgdXBkYXRlIHRoYXQgbWFkZSB0aGF0 IGNoYW5nZSBtYWludGFpbmVkIHRoaXMKKwkgKiAgICBpbmRleCAoaXRzIGF0dHJpYnV0ZSBj aGFuZ2VkKSwgc28gaXQgcGxhbnRlZCBhIGZyZXNoIGVudHJ5IHBvaW50aW5nCisJICogICAg YXQgaXRzIG93biBsaXZlIHR1cGxlOyB0aGF0IGZyZXNoIGVudHJ5IGNyb3NzZXMgbm8gbGF0 ZXIKKwkgKiAgICBrZXktY2hhbmdpbmcgaG9wIGFuZCB1bmlxdWVseSBzdXBwbGllcyB0aGUg cm93LiAgRHJvcHBpbmcgdGhlIHN0YWxlCisJICogICAgYW5jZXN0b3IgdGhlcmVmb3JlIG5l dmVyIHJlbW92ZXMgdGhlIHJvdydzIGxhc3QgcmVhY2hhYmxlIGVudHJ5LgorCSAqICAgIFRo aXMgaG9sZHMgZXZlbiB1bmRlciBBQkEga2V5IGN5Y2xpbmcgKFggLT4gWSAtPiBYKTogdGhl IFgtcmVzdG9yaW5nCisJICogICAgdXBkYXRlIGNoYW5nZWQgdGhpcyBpbmRleCdzIGNvbHVt biAoWSAtPiBYKSBhbmQgc28gcGxhbnRlZCB0aGUgZnJlc2gKKwkgKiAgICBlbnRyeS4KIAkg Ki8KIAlpZiAoIXNjYW4tPnhhY3RTdGFydGVkSW5SZWNvdmVyeSkKLQkJc2Nhbi0+a2lsbF9w cmlvcl90dXBsZSA9IGFsbF9kZWFkOworCQlzY2FuLT5raWxsX3ByaW9yX3R1cGxlID0KKwkJ CWFsbF9kZWFkIHx8CisJCQkoc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgJiYgc2Nhbi0+ eHNfaGVhcGZldGNoLT54c19wcmVmaXhfYWxsX2RlYWQpOwogCiAJcmV0dXJuIGZvdW5kOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKaW5kZXggYzhhZjk3ZGQy M2QuLjJhMTA2Mzk4ZDUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0 LmMKQEAgLTE1LDYgKzE1LDggQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNs dWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgi CiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1ZGUgImFjY2Vzcy9uYnR4bG9n LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKQEAgLTIyLDE4ICsyNCwyNCBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5o IgogI2luY2x1ZGUgImNvbW1vbi9wZ19wcm5nLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVw dGFibGUuaCIKICNpbmNsdWRlICJsaWIvcXVuaXF1ZS5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJl ZGljYXRlLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9p bmplY3Rpb25fcG9pbnQuaCIKLQogLyogTWluaW11bSB0cmVlIGhlaWdodCBmb3IgYXBwbGlj YXRpb24gb2YgZmFzdHBhdGggb3B0aW1pemF0aW9uICovCiAjZGVmaW5lIEJUUkVFX0ZBU1RQ QVRIX01JTl9MRVZFTAkyCiAKIAogc3RhdGljIEJUU3RhY2sgX2J0X3NlYXJjaF9pbnNlcnQo UmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkgQlRJbnNlcnRTdGF0 ZSBpbnNlcnRzdGF0ZSk7CisKKy8qIEludGVybmFsIGhlbHBlcjogSE9ULWluZGV4ZWQgbGVh Zi1rZXkgc3RhbGVuZXNzIGNoZWNrIGZvciBfYnRfY2hlY2tfdW5pcXVlLiAqLworc3RhdGlj IGJvb2wgX2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBs ZSBsZWFmdHVwLAorCQkJCQkJCQkJIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCAqaGVhcFNsb3Qp OworCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJl bCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwKIAkJCQkJCQkJCSAgUmVsYXRpb24gaGVh cFJlbCwKIAkJCQkJCQkJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwgYm9vbCAq aXNfdW5pcXVlLApAQCAtNDI2LDYgKzQzNCw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRp b24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAog CWJvb2wJCWlucG9zdGluZyA9IGZhbHNlOwogCWJvb2wJCXByZXZhbGxkZWFkID0gdHJ1ZTsK IAlpbnQJCQljdXJwb3N0aSA9IDA7CisJVHVwbGVUYWJsZVNsb3QgKmNoYWluX3dhbGtfc2xv dCA9IE5VTEw7CisJYm9vbAkJaGlfcmVjaGVjayA9IGZhbHNlOwogCiAJLyogQXNzdW1lIHVu aXF1ZSB1bnRpbCB3ZSBmaW5kIGEgZHVwbGljYXRlICovCiAJKmlzX3VuaXF1ZSA9IHRydWU7 CkBAIC01MDksNiArNTE5LDcgQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJU SW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQl7CiAJCQkJ SXRlbVBvaW50ZXJEYXRhIGh0aWQ7CiAJCQkJYm9vbAkJYWxsX2RlYWQgPSBmYWxzZTsKKwkJ CQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQkJaWYgKCFpbnBvc3Rp bmcpCiAJCQkJewpAQCAtNTU5LDEzICs1NzAsODAgQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxh dGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWws CiAJCQkJICogc2F0aXNmeWluZyBTbmFwc2hvdERpcnR5LiBUaGlzIGlzIG5lY2Vzc2FyeSBi ZWNhdXNlIGZvciBBTXMKIAkJCQkgKiB3aXRoIG9wdGltaXphdGlvbnMgbGlrZSBoZWFwJ3Mg SE9ULCB3ZSBoYXZlIGp1c3QgYSBzaW5nbGUKIAkJCQkgKiBpbmRleCBlbnRyeSBmb3IgdGhl IGVudGlyZSBjaGFpbi4KKwkJCQkgKgorCQkJCSAqIFRoZSBmZXRjaCByZXBvcnRzIChoaV9y ZWNoZWNrKSB3aGV0aGVyIHRoZSBjaGFpbiB3YWxrIHRvCisJCQkJICogdGhlIGxpdmUgdHVw bGUgY3Jvc3NlZCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lVKQorCQkJCSAq IGhvcC4gSW4gY2xhc3NpYyBIT1QgdGhlIGNoYWluIHByZXNlcnZlcyB0aGUgaW5kZXgga2V5 LCBzbyBhCisJCQkJICogbGl2ZSB0dXBsZSBhbnl3aGVyZSBpbiB0aGUgY2hhaW4gaXMgYSBk ZWZpbml0ZSBjb25mbGljdDsKKwkJCQkgKiB3aXRoIEhPVC9TSVUgdGhhdCBpbnZhcmlhbnQg bm8gbG9uZ2VyIGhvbGRzIC0tIGFuIG9sZCBpbmRleAorCQkJCSAqIGVudHJ5IGZvciBrZXkg SyBtYXkgY2hhaW4tbGVhZCB0byBhIGhlYXAgdHVwbGUgd2hvc2UgYWN0dWFsCisJCQkJICog aW5kZXgga2V5IGlzIEsnLiAgV2hlbiBhIGhvcCB3YXMgY3Jvc3NlZCB3ZSByZWNoZWNrIHRo ZQorCQkJCSAqIGxlYWYga2V5IGFnYWluc3QgdGhlIGxpdmUgdHVwbGUgYmVsb3c7IGEgc3Rh bGUgZW50cnkgaXMKKwkJCQkgKiBmaWx0ZXJlZCBvdXQsIG5vdCB0cmVhdGVkIGFzIGEgY29u ZmxpY3QuICBjaGFpbl93YWxrX3Nsb3QKKwkJCQkgKiBob2xkcyB0aGUgbGl2ZSB0dXBsZSBm b3IgdGhhdCByZWNoZWNrIGFuZCBpcyBmcmVlZCBhdCBldmVyeQorCQkJCSAqIGV4aXQuCiAJ CQkJICovCi0JCQkJZWxzZSBpZiAodGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVh cFJlbCwgJmh0aWQsCisJCQkJZWxzZSBpZiAoKGNoYWluX3dhbGtfc2xvdCAhPSBOVUxMIHx8 CisJCQkJCQkgIChjaGFpbl93YWxrX3Nsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShoZWFwUmVs LCBOVUxMKSkpICYmCisJCQkJCQkgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soaGVh cFJlbCwgJmh0aWQsCiAJCQkJCQkJCQkJCQkJICAgJlNuYXBzaG90RGlydHksCi0JCQkJCQkJ CQkJCQkJICAgJmFsbF9kZWFkKSkKKwkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQsCisJCQkJ CQkJCQkJCQkJICAgJmhpX3JlY2hlY2ssCisJCQkJCQkJCQkJCQkJICAgY2hhaW5fd2Fsa19z bG90KSkKIAkJCQl7CiAJCQkJCVRyYW5zYWN0aW9uSWQgeHdhaXQ7CiAKKwkJCQkJLyoKKwkJ CQkJICogVGhlIGNoYWluIHdhbGsgcmVwb3J0ZWQgKGhpX3JlY2hlY2spIHRoYXQgaXQgY3Jv c3NlZCBhdAorCQkJCQkgKiBsZWFzdCBvbmUgSE9UL1NJVSBob3Agb24gdGhlIHdheSB0byB0 aGUgbGl2ZSB0dXBsZSwgc28KKwkJCQkJICogdGhlIGNsYXNzaWMgImxpdmUgdHVwbGUgaW4g dGhlIGNoYWluIGltcGxpZXMgdGhlIHNhbWUKKwkJCQkJICogaW5kZXgga2V5IiBpbnZhcmlh bnQgbWF5IG5vdCBob2xkOiBhbiBvbGQgaW5kZXggZW50cnkKKwkJCQkJICogZm9yIGtleSBL IG1heSBjaGFpbi1sZWFkIHRvIGEgdHVwbGUgd2hvc2UgY3VycmVudCBrZXkKKwkJCQkJICog aXMgSycuICBSZWNoZWNrIHRoZSBsZWFmJ3Mgc3RvcmVkIGtleSBhZ2FpbnN0IHRoZSBsaXZl CisJCQkJCSAqIHR1cGxlJ3MgY3VycmVudCBpbmRleCBmb3JtLiAgQSBtaXNtYXRjaCBtZWFu cyB0aGUgbGVhZgorCQkJCQkgKiBpcyBzdGFsZSAobm90IGEgY29uZmxpY3QpOiBza2lwIGl0 OyB0aGUgZnJlc2ggZW50cnkKKwkJCQkJICogaW5zZXJ0ZWQgZm9yIHRoZSBjdXJyZW50IHZh bHVlIGlzIHRoZSBjYW5vbmljYWwgb25lLgorCQkJCQkgKiBCZWNhdXNlIHRoZSBsZWFmIHN0 aWxsIHJlc29sdmVzIHRvIGEgbGl2ZSB0dXBsZSwgY2xlYXIKKwkJCQkJICogcHJldmFsbGRl YWQgc28gdGhlIGNhbGxlciBuZXZlciBtYXJrcyBpdCBMUF9ERUFECisJCQkJCSAqIChraWxs YWJsZSkuCisJCQkJCSAqLworCQkJCQlob3RfaW5kZXhlZF9zdGFsZSA9CisJCQkJCQkoaGlf cmVjaGVjayAmJgorCQkJCQkJICFfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYocmVsLCBjdXJp dHVwLCBjaGFpbl93YWxrX3Nsb3QpKTsKKworCQkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUp CisJCQkJCXsKKwkJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisJCQkJCQlpZiAobmJ1ZiAh PSBJbnZhbGlkQnVmZmVyKQorCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVmKTsKKwkJCQkJ CW5idWYgPSBJbnZhbGlkQnVmZmVyOworCQkJCQkJRXhlY0NsZWFyVHVwbGUoY2hhaW5fd2Fs a19zbG90KTsKKwkJCQkJCWdvdG8gYnRfY2hhaW5fd2Fsa19za2lwOworCQkJCQl9CisKKwkJ CQkJLyoKKwkJCQkJICogVGhlIGxlYWYncyBrZXkgc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0 dXBsZS4gIElmIHRoZQorCQkJCQkgKiBjaGFpbiB3YWxrIGNyb3NzZWQgYSBIT1QtaW5kZXhl ZCBob3AgYW5kIHJlc29sdmVkIHRvCisJCQkJCSAqIHRoZSB2ZXJ5IHR1cGxlIHRoZSBjYWxs ZXIgaXMgaW5zZXJ0aW5nIGFuIGVudHJ5IGZvciwKKwkJCQkJICogdGhpcyBpcyBub3QgYSBk dXBsaWNhdGUgLS0gaXQgaXMgdGhlIHNhbWUgbG9naWNhbCByb3cKKwkJCQkJICogYmVpbmcg cmUtaW5kZXhlZCAoZS5nLiBhIEhPVC1pbmRleGVkIFVQREFURSB0aGF0IGxlZnQKKwkJCQkJ ICogdGhpcyBpbmRleCdzIGtleSB1bmNoYW5nZWQsIG9yIGEga2V5IGN5Y2xlZCBhd2F5IGFu ZAorCQkJCQkgKiBiYWNrKS4gU2tpcCBpdCByYXRoZXIgdGhhbiByYWlzaW5nIGEgc3B1cmlv dXMgdW5pcXVlCisJCQkJCSAqIHZpb2xhdGlvbi4KKwkJCQkJICovCisJCQkJCWlmIChoaV9y ZWNoZWNrICYmCisJCQkJCQlJdGVtUG9pbnRlckNvbXBhcmUoJmh0aWQsICZpdHVwLT50X3Rp ZCkgPT0gMCkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJCQkJCWlm IChuYnVmICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYp OworCQkJCQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJUdXBsZShj aGFpbl93YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7CisJCQkJ CX0KKwkJCQkJaWYgKGNoYWluX3dhbGtfc2xvdCAhPSBOVUxMKQorCQkJCQkJRXhlY0NsZWFy VHVwbGUoY2hhaW5fd2Fsa19zbG90KTsKKwogCQkJCQkvKgogCQkJCQkgKiBJdCBpcyBhIGR1 cGxpY2F0ZS4gSWYgd2UgYXJlIG9ubHkgZG9pbmcgYSBwYXJ0aWFsCiAJCQkJCSAqIGNoZWNr LCB0aGVuIGRvbid0IGJvdGhlciBjaGVja2luZyBpZiB0aGUgdHVwbGUgaXMgYmVpbmcKQEAg LTU3OCw2ICs2NTYsOCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJewogCQkJCQkJ aWYgKG5idWYgIT0gSW52YWxpZEJ1ZmZlcikKIAkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1 Zik7CisJCQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQkJCQkJCUV4ZWNEcm9wU2luZ2xl VHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKIAkJCQkJCSppc191bmlxdWUgPSBm YWxzZTsKIAkJCQkJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkJCQkJfQpAQCAt NTkzLDYgKzY3Myw4IEBAIF9idF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2Vy dFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQl7CiAJCQkJCQlp ZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVm KTsKKwkJCQkJCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCQkJCQkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCQkJCQkJLyogVGVsbCBfYnRfZG9p bnNlcnQgdG8gd2FpdC4uLiAqLwogCQkJCQkJKnNwZWN1bGF0aXZlVG9rZW4gPSBTbmFwc2hv dERpcnR5LnNwZWN1bGF0aXZlVG9rZW47CiAJCQkJCQkvKiBDYWxsZXIgcmVsZWFzZXMgbG9j ayBvbiBidWYgaW1tZWRpYXRlbHkgKi8KQEAgLTYxOSw3ICs3MDEsOCBAQCBfYnRfY2hlY2tf dW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRp b24gaGVhcFJlbCwKIAkJCQkJICovCiAJCQkJCWh0aWQgPSBpdHVwLT50X3RpZDsKIAkJCQkJ aWYgKHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlX2NoZWNrKGhlYXBSZWwsICZodGlkLAotCQkJ CQkJCQkJCQkJCSAgU25hcHNob3RTZWxmLCBOVUxMKSkKKwkJCQkJCQkJCQkJCQkgIFNuYXBz aG90U2VsZiwgTlVMTCwKKwkJCQkJCQkJCQkJCQkgIE5VTEwsIE5VTEwpKQogCQkJCQl7CiAJ CQkJCQkvKiBOb3JtYWwgY2FzZSAtLS0gaXQncyBzdGlsbCBsaXZlICovCiAJCQkJCX0KQEAg LTY1NCw2ICs3MzcsOCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNl cnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJX2J0X3JlbGJ1 ZihyZWwsIGluc2VydHN0YXRlLT5idWYpOwogCQkJCQlpbnNlcnRzdGF0ZS0+YnVmID0gSW52 YWxpZEJ1ZmZlcjsKIAkJCQkJaW5zZXJ0c3RhdGUtPmJvdW5kc192YWxpZCA9IGZhbHNlOwor CQkJCQlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQkJCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRh YmxlU2xvdChjaGFpbl93YWxrX3Nsb3QpOwogCiAJCQkJCXsKIAkJCQkJCURhdHVtCQl2YWx1 ZXNbSU5ERVhfTUFYX0tFWVNdOwpAQCAtNzE1LDYgKzgwMCw5IEBAIF9idF9jaGVja191bmlx dWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLCBSZWxhdGlvbiBo ZWFwUmVsLAogCQkJCSAqLwogCQkJCWlmICghYWxsX2RlYWQgJiYgaW5wb3N0aW5nKQogCQkJ CQlwcmV2YWxsZGVhZCA9IGZhbHNlOworCisJCWJ0X2NoYWluX3dhbGtfc2tpcDoKKwkJCQk7 CiAJCQl9CiAJCX0KIApAQCAtNzgyLDkgKzg3MCw4NCBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAlpZiAobmJ1ZiAhPSBJbnZhbGlkQnVmZmVyKQogCQlfYnRfcmVsYnVmKHJlbCwgbmJ1 Zik7CiAKKwlpZiAoY2hhaW5fd2Fsa19zbG90KQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFi bGVTbG90KGNoYWluX3dhbGtfc2xvdCk7CisKIAlyZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9u SWQ7CiB9CiAKKy8qCisgKglfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoKSAtLSBDb21wYXJl IGEgaGVhcCB0dXBsZSdzIGN1cnJlbnQgYnRyZWUga2V5CisgKglhZ2FpbnN0IHRoZSBrZXkg c3RvcmVkIGluIGEgbGVhZiBJbmRleFR1cGxlLgorICoKKyAqCVRoZSBIT1QtaW5kZXhlZCB1 bmlxdWUtY2hlY2sgcGF0aCB1c2VzIHRoaXMgdG8gZGlzdGluZ3Vpc2ggYSBsaXZlIHR1cGxl CisgKgl3aG9zZSBjdXJyZW50IGtleSBzdGlsbCBtYXRjaGVzIHRoZSBhcnJpdmluZyBsZWFm IChhIGdlbnVpbmUgY29uZmxpY3QpCisgKglmcm9tIGEgc3RhbGUgY2hhaW4gaGl0OiB3aXRo IGEgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGNoYWluCisgKgl0aGUg bGVhZiBlbnRyeSBmb3IgYW4gb2xkIGtleSBzdGlsbCByZXNvbHZlcyB0byB0aGUgbGl2ZSB0 dXBsZSwgd2hvc2UKKyAqCWN1cnJlbnQgaW5kZXggZm9ybSBtYXkgZGlmZmVyLgorICoKKyAq CUVxdWFsaXR5IG11c3QgYWdyZWUgd2l0aCB0aGUgaW5kZXgncyBvd24gbm90aW9uIG9mIGVx dWFsaXR5LCBiZWNhdXNlIHRoZQorICoJY2FsbGVyIHVzZXMgdGhlIHZlcmRpY3QgdG8gZGVj aWRlIHdoZXRoZXIgdG8gcmFpc2UgYSB1bmlxdWUgdmlvbGF0aW9uLgorICoJV2UgY29tcGFy ZSBlYWNoIGtleSBjb2x1bW4gd2l0aCBpdHMgYnRyZWUgb3JkZXJpbmcgcHJvY2VkdXJlIChC VE9SREVSX1BST0MsCisgKgl0aGUgc2FtZSBzdXBwb3J0IGZ1bmN0aW9uIF9idF9ta3NjYW5r ZXkgdXNlcykgdW5kZXIgdGhlIGNvbHVtbidzIGNvbGxhdGlvbgorICoJLS0gbm90IGEgYml0 d2lzZSBpbWFnZSBjb21wYXJpc29uLiAgQml0d2lzZSBlcXVhbGl0eSB3b3VsZCB3cm9uZ2x5 IHRyZWF0CisgKglvcGNsYXNzLWVxdWFsIGJ1dCBpbWFnZS1kaXN0aW5jdCB2YWx1ZXMgKG51 bWVyaWMgMS4wIHZzIDEuMDAsIGZsb2F0IC0wLjAKKyAqCXZzIDAuMCwgdGV4dCB1bmRlciBh IG5vbmRldGVybWluaXN0aWMgY29sbGF0aW9uKSBhcyAibm90IGVxdWFsIiBhbmQgc2tpcCBh CisgKglnZW51aW5lIGR1cGxpY2F0ZS4KKyAqCisgKglUaGlzIGlzIGNhbGxlZCBmcm9tIF9i dF9jaGVja191bmlxdWUgd2hpbGUgdGhlIGxlYWYgYnVmZmVyIGlzIGxvY2tlZCwgc28gaXQK KyAqCWRlbGliZXJhdGVseSBhdm9pZHMgZXhlY3V0b3IgbWFjaGluZXJ5OiBpdCBmZXRjaGVz IGVhY2gga2V5IGF0dHJpYnV0ZQorICoJc3RyYWlnaHQgZnJvbSB0aGUgc2xvdC4gIEl0IGlz IG9ubHkgZXZlciByZWFjaGVkIGZvciBhbiBpbmRleCByZWNlaXZpbmcgYQorICoJZnJlc2gg ZW50cnkgZHVyaW5nIGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhbmQgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZQorICoJZGlzcXVhbGlmaWVzIGFueSBVUERBVEUgdGhhdCB0b3VjaGVzIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlLCBzbyB0aGUKKyAqCWluZGV4IGhlcmUgaGFzIG5v IGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5IGlzIGEgcmVhbCBhdHRyaWJ1 dGUKKyAqCW51bWJlcikuICBXZSBhc3NlcnQgdGhhdCByYXRoZXIgdGhhbiBoYW5kbGUgYSBr ZXljb2wgPT0gMCBjYXNlIHRoYXQgY2Fubm90CisgKglvY2N1cjsgaWYgZXhwcmVzc2lvbi1p bmRleCBzZWxlY3RpdmUgbWFpbnRlbmFuY2UgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCisgKglm dXR1cmUsIHRoaXMgaXMgd2hlcmUgYW4gZXhwcmVzc2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlz b24gd291bGQgYmUgYWRkZWQuCisgKgorICoJaGVhcFNsb3QgbXVzdCBhbHJlYWR5IGJlIHBv cHVsYXRlZCBieSB0aGUgY2FsbGVyICh2aWEKKyAqCXRhYmxlX2luZGV4X2ZldGNoX3R1cGxl IC8gdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2spLgorICovCitzdGF0aWMgYm9vbAor X2J0X2hlYXBfa2V5c19lcXVhbF9sZWFmKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsZWFm dHVwLAorCQkJCQkJIHN0cnVjdCBUdXBsZVRhYmxlU2xvdCAqaGVhcFNsb3QpCit7CisJVHVw bGVEZXNjCWluZGV4RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwlpbnQJCQlua2V5 ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOworCUZvcm1f cGdfaW5kZXggaW5kZXhTdHJ1Y3QgPSByZWwtPnJkX2luZGV4OworCisJQXNzZXJ0KGxlYWZ0 dXAgIT0gTlVMTCk7CisJQXNzZXJ0KGhlYXBTbG90ICE9IE5VTEwgJiYgIVRUU19FTVBUWSho ZWFwU2xvdCkpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBua2V5OyBpKyspCisJeworCQlB dHRyTnVtYmVyCWtleWNvbCA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCQlE YXR1bQkJaGVhcF9kYXR1bTsKKwkJYm9vbAkJaGVhcF9pc251bGw7CisJCURhdHVtCQlsZWFm X2RhdHVtOworCQlib29sCQlsZWFmX2lzbnVsbDsKKwkJRm1nckluZm8gICAqY21wcHJvYzsK KworCQkvKiBFeHByZXNzaW9uIGtleSBjb2x1bW5zIGNhbm5vdCByZWFjaCBoZXJlIChzZWUg aGVhZGVyKS4gKi8KKwkJQXNzZXJ0KGtleWNvbCAhPSAwKTsKKworCQloZWFwX2RhdHVtID0g c2xvdF9nZXRhdHRyKGhlYXBTbG90LCBrZXljb2wsICZoZWFwX2lzbnVsbCk7CisJCWxlYWZf ZGF0dW0gPSBpbmRleF9nZXRhdHRyKGxlYWZ0dXAsIGkgKyAxLCBpbmRleERlc2MsICZsZWFm X2lzbnVsbCk7CisKKwkJaWYgKGhlYXBfaXNudWxsICE9IGxlYWZfaXNudWxsKQorCQkJcmV0 dXJuIGZhbHNlOworCQlpZiAoaGVhcF9pc251bGwpCisJCQljb250aW51ZTsKKworCQkvKiBv cGNsYXNzIDMtd2F5IGNvbXBhcmUgdW5kZXIgdGhlIGNvbHVtbidzIGNvbGxhdGlvbjsgMCA9 PSBlcXVhbCAqLworCQljbXBwcm9jID0gaW5kZXhfZ2V0cHJvY2luZm8ocmVsLCBpICsgMSwg QlRPUkRFUl9QUk9DKTsKKwkJaWYgKERhdHVtR2V0SW50MzIoRnVuY3Rpb25DYWxsMkNvbGwo Y21wcHJvYywgcmVsLT5yZF9pbmRjb2xsYXRpb25baV0sCisJCQkJCQkJCQkJCWhlYXBfZGF0 dW0sIGxlYWZfZGF0dW0pKSAhPSAwKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVy biB0cnVlOworfQogCiAvKgogICoJX2J0X2ZpbmRpbnNlcnRsb2MoKSAtLSBGaW5kcyBhbiBp bnNlcnQgbG9jYXRpb24gZm9yIGEgdHVwbGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJl ZS5jCmluZGV4IDNkZjJjNzUyZWFkLi41YjI2OWVhYWE5MyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHJlZS5jCkBAIC00MDgsNiArNDA4LDE2IEBAIGJ0cmVzY2FuKEluZGV4U2Nh bkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5LCBpbnQgbnNjYW5rZXlzLAogCSAqIHJhY2Ug Y29uZGl0aW9uIGludm9sdmluZyBWQUNVVU0gc2V0dGluZyBwYWdlcyBhbGwtdmlzaWJsZSBp biB0aGUgVk0uCiAJICogSXQncyBhbHNvIHVuc2FmZSBmb3IgcGxhaW4gaW5kZXggc2NhbnMg dGhhdCB1c2UgYSBub24tTVZDQyBzbmFwc2hvdC4KIAkgKgorCSAqIE5vdGUgdGhhdCB3YW50 aW5nIHRoZSBpbmRleCB0dXBsZSAoeHNfd2FudF9pdHVwKSBpcyBub3QgYnkgaXRzZWxmIGEK KwkgKiByZWFzb24gdG8gcmV0YWluIHRoZSBwaW46IGJ0cmVlIGNvcGllcyBlYWNoIHJldHVy bmVkIEluZGV4VHVwbGUgaW50bworCSAqIHNvLT5jdXJyVHVwbGVzIChzY2FuLWxvY2FsIG1l bW9yeSkgYW5kIHBvaW50cyB4c19pdHVwIHRoZXJlLCBzbyB0aGUKKwkgKiB0dXBsZSBzdGF5 cyB2YWxpZCBhZnRlciB0aGUgcGluIGlzIGRyb3BwZWQuICBPbmx5IGdlbnVpbmUgaW5kZXgt b25seQorCSAqIHNjYW5zICh4c19pbmRleF9vbmx5KSwgd2hpY2ggbWF5IHJldHVybiBhIHR1 cGxlIHdpdGhvdXQgZmV0Y2hpbmcgdGhlCisJICogaGVhcCBhbmQgdGhlcmVmb3JlIHJlbHkg b24gdGhlIFZNLCBtdXN0IGtlZXAgdGhlIHBpbi4gIEEgcGxhaW4gaW5kZXgKKwkgKiBzY2Fu IHRoYXQgc2V0cyB4c193YW50X2l0dXAgbWVyZWx5IHRvIGluc3BlY3Qgb3IgcmVjaGVjayB0 aGUgaW5kZXgKKwkgKiB0dXBsZSBzdGlsbCBmZXRjaGVzIGFuZCB2aXNpYmlsaXR5LWNoZWNr cyB0aGUgaGVhcCwgc28gaXQgaGFzIG5vIFZNCisJICogcmFjZSBhbmQgbWF5IGRyb3AgcGlu cyBsaWtlIGFueSBvdGhlciBwbGFpbiBzY2FuLgorCSAqCiAJICogQWxzbyBvcHQgb3V0IG9m IGRyb3BwaW5nIGxlYWYgcGFnZSBwaW5zIGVhZ2VybHkgZHVyaW5nIGJpdG1hcCBzY2Fucy4K IAkgKiBQaW5zIGNhbm5vdCBiZSBoZWxkIGZvciBtb3JlIHRoYW4gYW4gaW5zdGFudCBkdXJp bmcgYml0bWFwIHNjYW5zIGVpdGhlcgogCSAqIHdheSwgc28gd2UgbWlnaHQgYXMgd2VsbCBh dm9pZCB3YXN0aW5nIGN5Y2xlcyBvbiBhY3F1aXJpbmcgcGFnZSBMU05zLgpAQCAtNDE2LDcg KzQyNiw3IEBAIGJ0cmVzY2FuKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbktleSBzY2Fua2V5 LCBpbnQgbnNjYW5rZXlzLAogCSAqCiAJICogTm90ZTogc28tPmRyb3BQaW4gc2hvdWxkIG5l dmVyIGNoYW5nZSBhY3Jvc3MgcmVzY2Fucy4KIAkgKi8KLQlzby0+ZHJvcFBpbiA9ICghc2Nh bi0+eHNfd2FudF9pdHVwICYmCisJc28tPmRyb3BQaW4gPSAoIXNjYW4tPnhzX2luZGV4X29u bHkgJiYKIAkJCQkgICBJc01WQ0NMaWtlU25hcHNob3Qoc2Nhbi0+eHNfc25hcHNob3QpICYm CiAJCQkJICAgc2Nhbi0+aGVhcFJlbGF0aW9uICE9IE5VTEwpOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwppbmRleCAxMmMyNjc0Y2JkNy4uZjA1Y2FiYzhjNjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMjQyLDE5ICsyNDIsMzEgQEAgYm9v bAogdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVsYXRpb24gcmVsLAogCQkJCQkJ CSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJ CQkJICBib29sICphbGxfZGVhZCkKKwkJCQkJCQkgIGJvb2wgKmFsbF9kZWFkLAorCQkJCQkJ CSAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVja19vdXQsCisJCQkJCQkJICBUdXBsZVRhYmxl U2xvdCAqa2VlcF9zbG90KQogewogCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW47CiAJVHVw bGVUYWJsZVNsb3QgKnNsb3Q7CiAJYm9vbAkJY2FsbF9hZ2FpbiA9IGZhbHNlOwogCWJvb2wJ CWZvdW5kOwogCi0Jc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVMTCk7CisJc2xv dCA9IGtlZXBfc2xvdCA/IGtlZXBfc2xvdCA6IHRhYmxlX3Nsb3RfY3JlYXRlKHJlbCwgTlVM TCk7CiAJc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCwgU09fTk9ORSk7CiAJ Zm91bmQgPSB0YWJsZV9pbmRleF9mZXRjaF90dXBsZShzY2FuLCB0aWQsIHNuYXBzaG90LCBz bG90LCAmY2FsbF9hZ2FpbiwKIAkJCQkJCQkJCWFsbF9kZWFkKTsKKworCS8qCisJICogU3Vy ZmFjZSB0aGUgdGFibGUgQU0ncyBIT1QvU0lVIHJlY2hlY2sgc2lnbmFsIHRvIHRoZSBjYWxs ZXIgKHRoZSBpbmRleAorCSAqIEFNLCB3aGljaCByZWNoZWNrcyB0aGUgYXJyaXZpbmcgbGVh ZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSk7IHRoZQorCSAqIHNjYW4gaXMgZnJlZWQg YmVsb3csIHNvIGNvcHkgaXQgb3V0LgorCSAqLworCWlmIChob3RfaW5kZXhlZF9yZWNoZWNr X291dCAhPSBOVUxMKQorCQkqaG90X2luZGV4ZWRfcmVjaGVja19vdXQgPSBmb3VuZCAmJiBz Y2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrOworCiAJdGFibGVfaW5kZXhfZmV0Y2hfZW5k KHNjYW4pOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJaWYgKGtl ZXBfc2xvdCA9PSBOVUxMKQorCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3Qp OwogCiAJcmV0dXJuIGZvdW5kOwogfQpAQCAtMzYxLDggKzM3Myw3IEBAIHZvaWQKIHNpbXBs ZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAog CQkJCQkJICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNo b3QsCi0JCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJ CQkJICBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJCSAgQml0bWFw c2V0ICoqbW9kaWZpZWRfYXR0cnMpCiB7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWls dXJlRGF0YSB0bWZkOwpAQCAtMzczLDggKzM4NCw3IEBAIHNpbXBsZV90YWJsZV90dXBsZV91 cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQkwLCBzbmFw c2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1p dCAqLyAsCiAJCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsCi0JCQkJCQkJCW1vZGlmaWVkX2lk eF9hdHRycywKLQkJCQkJCQkJdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQltb2RpZmllZF9h dHRycyk7CiAKIAlzd2l0Y2ggKHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMK aW5kZXggZmQ3ZDJlYzBlM2EuLmVmZDhhMTljMjI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleGlu Zy5jCkBAIC0xOCwxMSArMTgsMTQgQEAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hh Y3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9p bmRleGluZy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAi bm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAi dXRpbHMvcmVsY2FjaGUuaCIKIAogCiAvKgpAQCAtNjksMTEgKzcyLDE3IEBAIENhdGFsb2dD bG9zZUluZGV4ZXMoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUpCiAgKgogICogVGhpcyBz aG91bGQgYmUgY2FsbGVkIGZvciBlYWNoIGluc2VydGVkIG9yIHVwZGF0ZWQgY2F0YWxvZyB0 dXBsZS4KICAqCi0gKiBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgY3V0LWRvd24gdmVyc2lvbiBv ZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMuCisgKiBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgY3V0 LWRvd24gdmVyc2lvbiBvZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMuICBGb3IKKyAqIFVQREFU RSBwYXRocyB0aGUgY2FsbGVyIHN1cHBsaWVzIHVwZGF0ZV9hbGxfaW5kZXhlcyAoZnJvbQor ICogdGFibGVfdHVwbGVfdXBkYXRlIC8gc2ltcGxlX2hlYXBfdXBkYXRlKSBzbyB3ZSBjYW4g dGVsbCB3aGljaCBpbmRleGVzCisgKiBhY3R1YWxseSBuZWVkIGEgbmV3IGVudHJ5OiB1cGRh dGVfYWxsX2luZGV4ZXMgaXMgdHJ1ZSBmb3IgYSBmcmVzaCBpbnNlcnQgb3IKKyAqIGEgbm9u LUhPVCB1cGRhdGUgKGV2ZXJ5IGluZGV4IGdldHMgYW4gZW50cnkpLCBmYWxzZSBmb3IgYSBj bGFzc2ljLUhPVAorICogY2F0YWxvZyB1cGRhdGUgKG5vbi1zdW1tYXJpemluZyBpbmRleGVz IGFyZSBza2lwcGVkLCBzaW5jZSB0aGVpciBleGlzdGluZworICogZW50cmllcyBzdGlsbCBy ZXNvbHZlIHRoZSBjaGFpbikuCiAgKi8KIHN0YXRpYyB2b2lkCiBDYXRhbG9nSW5kZXhJbnNl cnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0J CQkJICAgVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzKQorCQkJCSAgIGJvb2wgdXBk YXRlX2FsbF9pbmRleGVzKQogewogCWludAkJCWk7CiAJaW50CQkJbnVtSW5kZXhlczsKQEAg LTgzLDIwICs5Miw2IEBAIENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBp bmRzdGF0ZSwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKIAlJbmRleEluZm8gKippbmRleEluZm9B cnJheTsKIAlEYXR1bQkJdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKIAlib29sCQlpc251bGxb SU5ERVhfTUFYX0tFWVNdOwotCWJvb2wJCW9ubHlTdW1tYXJpemVkID0gKHVwZGF0ZUluZGV4 ZXMgPT0gVFVfU3VtbWFyaXppbmcpOwotCi0JLyoKLQkgKiBIT1QgdXBkYXRlIGRvZXMgbm90 IHJlcXVpcmUgaW5kZXggaW5zZXJ0cy4gQnV0IHdpdGggYXNzZXJ0cyBlbmFibGVkIHdlCi0J ICogd2FudCB0byBjaGVjayB0aGF0IGl0J2QgYmUgbGVnYWwgdG8gY3VycmVudGx5IGluc2Vy dCBpbnRvIHRoZQotCSAqIHRhYmxlL2luZGV4LgotCSAqLwotI2lmbmRlZiBVU0VfQVNTRVJU X0NIRUNLSU5HCi0JaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJiAhb25s eVN1bW1hcml6ZWQpCi0JCXJldHVybjsKLSNlbmRpZgotCi0JLyogV2hlbiBvbmx5IHVwZGF0 aW5nIHN1bW1hcml6ZWQgaW5kZXhlcywgdGhlIHR1cGxlIGhhcyB0byBiZSBIT1QuICovCi0J QXNzZXJ0KCghb25seVN1bW1hcml6ZWQpIHx8IEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1 cGxlKSk7CiAKIAkvKgogCSAqIEdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzdGF0ZSBzdHJ1 Y3R1cmUuICBGYWxsIG91dCBpZiBub3RoaW5nIHRvIGRvLgpAQCAtMTIwLDYgKzExNSw3IEBA IENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1 cGxlIGhlYXBUdXBsZSwKIAl7CiAJCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIAkJUmVsYXRp b24JaW5kZXg7CisJCWJvb2wJCWluZGV4X3VuY2hhbmdlZDsKIAogCQlpbmRleEluZm8gPSBp bmRleEluZm9BcnJheVtpXTsKIAkJaW5kZXggPSByZWxhdGlvbkRlc2NzW2ldOwpAQCAtMTM4 LDIwICsxMzQsMTYgQEAgQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRleFN0YXRlIGlu ZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAogCQlBc3NlcnQoaW5kZXgtPnJkX2luZGV4 LT5pbmRpbW1lZGlhdGUpOwogCQlBc3NlcnQoaW5kZXhJbmZvLT5paV9OdW1JbmRleEtleUF0 dHJzICE9IDApOwogCi0JCS8qIHNlZSBlYXJsaWVyIGNoZWNrIGFib3ZlICovCi0jaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpICYmICFvbmx5U3VtbWFyaXplZCkKLQkJewotCQkJQXNzZXJ0KCFSZWluZGV4SXNQcm9j ZXNzaW5nSW5kZXgoUmVsYXRpb25HZXRSZWxpZChpbmRleCkpKTsKLQkJCWNvbnRpbnVlOwot CQl9Ci0jZW5kaWYJCQkJCQkJLyogVVNFX0FTU0VSVF9DSEVDS0lORyAqLwotCiAJCS8qCi0J CSAqIFNraXAgaW5zZXJ0aW9ucyBpbnRvIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdl IG9ubHkgbmVlZCB0bwotCQkgKiB1cGRhdGUgc3VtbWFyaXppbmcgaW5kZXhlcy4KKwkJICog RGVjaWRlIHdoZXRoZXIgdGhpcyBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeS4gIE9uIElOU0VS VCBvciBhCisJCSAqIG5vbi1IT1QgdXBkYXRlICh1cGRhdGVfYWxsX2luZGV4ZXMpIGV2ZXJ5 IGluZGV4IGdldHMgb25lLiAgT24gYQorCQkgKiBjbGFzc2ljLUhPVCBjYXRhbG9nIHVwZGF0 ZSBubyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkLCBzbyB0aGUKKwkJICogbm9uLXN1bW1h cml6aW5nIGluZGV4ZXMgYXJlIHNraXBwZWQgKHN1bW1hcml6aW5nIGluZGV4ZXMgYWx3YXlz IGdldAorCQkgKiBhIGNoYW5jZSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwgc3VtbWFy aWVzIGJlbG93KS4KIAkJICovCi0JCWlmIChvbmx5U3VtbWFyaXplZCAmJiAhaW5kZXhJbmZv LT5paV9TdW1tYXJpemluZykKKwkJaW5kZXhfdW5jaGFuZ2VkID0gIXVwZGF0ZV9hbGxfaW5k ZXhlczsKKworCQlpZiAoaW5kZXhfdW5jaGFuZ2VkICYmICFpbmRleEluZm8tPmlpX1N1bW1h cml6aW5nKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTI0MCw3ICsyMzIsNyBAQCBDYXRh bG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCkKIAogCXNp bXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0 KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRl LCB0dXAsIHRydWUpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOwogfQogCkBA IC0yNjAsNyArMjUyLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVsYXRpb24g aGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVs LCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7 CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHRydWUpOwogfQogCiAvKgpA QCAtMjkxLDcgKzI4Myw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJbmZvKFJl bGF0aW9uIGhlYXBSZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBsZSA9IEV4 ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVlKTsKIAkJ dHVwbGUtPnRfdGFibGVPaWQgPSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJbmRleElu c2VydChpbmRzdGF0ZSwgdHVwbGUsIHRydWUpOwogCiAJCWlmIChzaG91bGRfZnJlZSkKIAkJ CWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywxNSArMzA1LDE1IEBAIHZvaWQKIENh dGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRh dGEgKm90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3Rh dGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOworCWJvb2wJ CXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3RyYWludHMo aGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVzKGhlYXBS ZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwgJnVwZGF0 ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0dXAsICZ1 cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0 dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVw LCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUp OwogfQogCkBAIC0zMzcsMTMgKzMyOSwxMyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVVcGRhdGVX aXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQs IEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkK IHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJYm9vbAkJ dXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJhaW50cyho ZWFwUmVsLCB0dXApOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1 cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlk LCB0dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRz dGF0ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy90 b2FzdGluZy5jCmluZGV4IDRhYTUyYTRiZDI1Li5lMGJjMDFmNjNkMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvdG9hc3RpbmcuYwpAQCAtMzA3LDggKzMwNyw2IEBAIGNyZWF0ZV90b2FzdF90YWJsZShS ZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJaW5kZXhJ bmZvLT5paV9VbmlxdWUgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfTnVsbHNOb3REaXN0aW5j dCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzID0gdHJ1ZTsKLQlp bmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsKLQlpbmRleEluZm8tPmlp X0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0g ZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwogCWluZGV4 SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5k ZXggOTc2MWJkYWM5ZDAuLjcwNmJjMjQ0OTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYwpA QCAtMjY4OCwxNCArMjY4OCwxNCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogewogCUxvY2tUdXBsZU1v ZGUgbG9ja21vZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKLQlUVV9VcGRhdGVJbmRleGVz IHVwZGF0ZV9pbmRleGVzOwogCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlU TV9SZXN1bHQJcmVzOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQg aW5kZXhlZCBhdHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCi0JICogKG9uZGlzaykg YW5kIG5ldyAoc3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBj b3JyZWN0Ci0JICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAi bm8gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqIChvbmRpc2spIGFuZCBuZXcgKHNw aWxsZWQpIHR1cGxlcy4gIGhlYXBfdXBkYXRlIG5lZWRzIHRoaXMgdG8gbWFrZSBhCisJICog Y29ycmVjdCBIT1QgZGVjaXNpb247IHdpdGhvdXQgaXQgbW9kaWZpZWRfaWR4X2F0dHJzIHdv dWxkIGJlIE5VTEwgYW5kCisJICogaGVhcF91cGRhdGUgd291bGQgYWx3YXlzIHRyZWF0IHRo ZSB1cGRhdGUgYXMgSE9ULWVsaWdpYmxlLgogCSAqLwogCW1vZGlmaWVkX2lkeF9hdHRycyA9 IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAogCQkJCQkJCQkJ CQkJCW9uZGlza190dXBsZSwKQEAgLTI3MTAsMjkgKzI3MTAsMzMgQEAgYXBwbHlfY29uY3Vy cmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBs ZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2RpZmllZF9p ZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICZ0bWZkLCAmbG9ja21vZGUs CisJCQkJCQkJICZtb2RpZmllZF9pZHhfYXR0cnMpOwogCWlmIChyZXMgIT0gVE1fT2spCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJWkFUSU9O X0ZBSUxVUkUpLAogCQkJCWVycm1zZygiY291bGQgbm90IGFwcGx5IGNvbmN1cnJlbnQgJXMg b24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgIlVQREFURSIsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKIAotCWlmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9Ob25lKQor CWlmIChjaGdjeHQtPmNjX3JyaS0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJtc19pc19l bXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRf SVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRh YmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JCWlm ICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRf T05MWV9TVU1NQVJJWklORzsKKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKGNoZ2N4dC0+Y2Nf cnJpLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQlFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoY2hn Y3h0LT5jY19ycmksCiAJCQkJCQkJICBjaGdjeHQtPmNjX2VzdGF0ZSwKLQkJCQkJCQkgIGZs YWdzLAorCQkJCQkJCSAgRUlJVF9JU19VUERBVEUgfAorCQkJCQkJCSAgKGFsbF9pbmRleGVz ID8KKwkJCQkJCQkgICAwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCiAJCQkJCQkJICBzcGls bGVkX3R1cGxlLAogCQkJCQkJCSAgTklMLCBOVUxMKTsKIAl9CiAKLQlwZ3N0YXRfcHJvZ3Jl c3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRFRCwgMSk7 Ci0KIAlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCisJcGdzdGF0X3Byb2dyZXNz X2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQsIDEpOwog fQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRl eCBlYjM4MzgxMjkwMS4uYTIzMTQ0NTkyZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJ bmRleGluZy5jCkBAIC0xMTMsMTEgKzExMywxMyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm5vZGVz L25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0eXBlcy5o IgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwu aCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIHdhaXRNb2RlIGFyZ3VtZW50 IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCkBAIC0xNDAs MTEgKzE0Miw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBib29sIGlu ZGV4X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25z dHJfcHJvY3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVlcywgY29u c3QgYm9vbCAqZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVtICpuZXdf dmFsdWVzKTsKLXN0YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsIElu ZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u KTsKLXN0YXRpYyBib29sIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAq bm9kZSwKLQkJCQkJCQkJCQkJQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scyk7CiBzdGF0aWMg dm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0 YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBlLCBPaWQg YXR0dHlwaWQpOwogCkBAIC0yNzcsMjQgKzI3NCwxMiBAQCBFeGVjQ2xvc2VJbmRpY2VzKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAgKgkJaW50byBhbGwgdGhlIHJlbGF0aW9u cyBpbmRleGluZyB0aGUgcmVzdWx0IHJlbGF0aW9uCiAgKgkJd2hlbiBhIGhlYXAgdHVwbGUg aXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVzdWx0IHJlbGF0aW9uLgogICoKLSAqCQlXaGVuIEVJ SVRfSVNfVVBEQVRFIGlzIHNldCBhbmQgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlzbid0LAot ICoJCWV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4gVVBEQVRFIHRoYXQgY291bGQgbm90IHVz ZSBhbgotICoJCW9wdGltaXphdGlvbiBsaWtlIGhlYXBhbSdzIEhPVCAoaW4gbW9yZSBnZW5l cmFsIHRlcm1zIGEKLSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxh Y2UgYW5kIHNldAotICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfQWxsKS4gIFJlY2Vpdmlu ZyB0aGlzIGhpbnQgbWFrZXMKLSAqCQl1cyBjb25zaWRlciBpZiB3ZSBzaG91bGQgcGFzcyBk b3duIHRoZSAnaW5kZXhVbmNoYW5nZWQnCi0gKgkJaGludCBpbiB0dXJuLiAgVGhhdCdzIHNv bWV0aGluZyB0aGF0IHdlIGZpZ3VyZSBvdXQgZm9yCi0gKgkJZWFjaCBpbmRleF9pbnNlcnQo KSBjYWxsIGlmZiBFSUlUX0lTX1VQREFURSBpcyBzZXQuCi0gKgkJKFdoZW4gdGhhdCBmbGFn IGlzIG5vdCBzZXQgd2UgYWxyZWFkeSBrbm93IG5vdCB0byBwYXNzIHRoZQotICoJCWhpbnQg dG8gYW55IGluZGV4LikKLSAqCi0gKgkJSWYgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlzIHNl dCwgYW4gZXF1aXZhbGVudCBvcHRpbWl6YXRpb24gdG8KLSAqCQlIT1QgaGFzIGJlZW4gYXBw bGllZCBhbmQgYW55IHVwZGF0ZWQgY29sdW1ucyBhcmUgaW5kZXhlZAotICoJCW9ubHkgYnkg c3VtbWFyaXppbmcgaW5kZXhlcyAob3IgaW4gbW9yZSBnZW5lcmFsIHRlcm1zIGEKLSAqCQlj YWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxhY2UgYW5kIHNldAotICoJCSd1 cGRhdGVfaW5kZXhlcycgdG8gVFVfU3VtbWFyaXppbmcpLiBXZSBjYW4gKGFuZCBtdXN0KQot ICoJCXRoZXJlZm9yZSBvbmx5IHVwZGF0ZSB0aGUgaW5kZXhlcyB0aGF0IGhhdmUKLSAqCQkn YW1zdW1tYXJpemluZycgPSB0cnVlLgorICoJCVdoZW4gRUlJVF9JU19VUERBVEUgaXMgc2V0 LCB0aGUgZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbgorICoJCVVQREFURS4gIFRoZSBwZXIt aW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZyAocG9wdWxhdGVkIGJ5CisgKgkJRXhlY1Nl dEluZGV4VW5jaGFuZ2VkKCkpIGluZGljYXRlcyB3aGV0aGVyIGVhY2ggaW5kZXgncyBrZXkK KyAqCQl2YWx1ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGlzIHVwZGF0ZS4gIFdoZW4gaWlfSW5k ZXhVbmNoYW5nZWQKKyAqCQlpcyB0cnVlLCB3ZSBwYXNzIGluZGV4VW5jaGFuZ2VkPXRydWUg dG8gaW5kZXhfaW5zZXJ0KCkgYXMgYQorICoJCWhpbnQgZm9yIGJvdHRvbS11cCBkZWxldGlv biBvcHRpbWl6YXRpb24uCiAgKgogICoJCVVuaXF1ZSBhbmQgZXhjbHVzaW9uIGNvbnN0cmFp bnRzIGFyZSBlbmZvcmNlZCBhdCB0aGUgc2FtZQogICoJCXRpbWUuICBUaGlzIHJldHVybnMg YSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIGFueSB1bmlxdWUgb3IKQEAgLTM3MCwxMSArMzU1 LDMyIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJ bmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2tpcCBwcm9jZXNzaW5nIG9mIG5v bi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBkYXRlCi0JCSAqIHN1bW1hcml6 aW5nIGluZGV4ZXMKKwkJICogVVBEQVRFIHNraXAgcnVsZS4gIEV4ZWNTZXRJbmRleFVuY2hh bmdlZCBwb3B1bGF0ZWQKKwkJICogaWlfSW5kZXhOZWVkc1VwZGF0ZSBmb3IgZXZlcnkgaW5k ZXg6IHRydWUgd2hlbiB0aGUgdGFibGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVwZW5kZW50 IG5ldyB2ZXJzaW9uLCBvciB3aGVuIGFueSBhdHRyaWJ1dGUgdGhlIGluZGV4CisJCSAqIHJl ZmVyZW5jZXMgKGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNh dGUgY29sdW1uKQorCQkgKiBvdmVybGFwcyB0aGUgbW9kaWZpZWQtYXR0cnMgYml0bWFwLiAg V2hlbiBpdCBpcyBmYWxzZSBvbiBhCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleCB3ZSBz a2lwIHRoZSBpbnNlcnQgZW50aXJlbHk7IHRoZSBIT1QgY2hhaW4KKwkJICoga2VlcHMgZXhp c3RpbmcgZW50cmllcyBwb2ludGluZyBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1bW1hcml6aW5n CisJCSAqIGluZGV4ZXMgYWx3YXlzIGdldCBhIGNoYW5jZSB0byB1cGRhdGUgdGhlaXIgYmxv Y2stbGV2ZWwgc3VtbWFyaWVzLgogCQkgKi8KLQkJaWYgKChmbGFncyAmIEVJSVRfT05MWV9T VU1NQVJJWklORykgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCWlmICgoZmxh Z3MgJiBFSUlUX0lTX1VQREFURSkgJiYKKwkJCSFpbmRleEluZm8tPmlpX0luZGV4TmVlZHNV cGRhdGUgJiYKKwkJCSFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQl7CisJCQkvKgor CQkJICogVGhpcyBpbmRleCB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0cyBrZXkgYXR0cmlidXRl cyBkaWQgbm90CisJCQkgKiBjaGFuZ2UuICBXaGVuIHRoZSBvdmVyYWxsIHVwZGF0ZSBpcyBh IEhPVC1pbmRleGVkIHVwZGF0ZSAoc29tZQorCQkJICogb3RoZXIgbm9uLXN1bW1hcml6aW5n IGluZGV4IGRpZCBjaGFuZ2UpLCByZWNvcmQgdGhlIHNraXAgb24KKwkJCSAqIHRoaXMgaW5k ZXgncyBwZ3N0YXQgZW50cnkuICBBIGNsYXNzaWMtSE9UIHVwZGF0ZSAobm8gaW5kZXhlZAor CQkJICogYXR0cmlidXRlIGNoYW5nZWQpIGRvZXMgbm90IHJlYWNoIHRoaXMgcGF0aCAtLQor CQkJICogRXhlY0luc2VydEluZGV4VHVwbGVzIGlzIG9ubHkgaW52b2tlZCB3aGVuIGF0IGxl YXN0IG9uZSBpbmRleAorCQkJICogbmVlZHMgYSBmcmVzaCBlbnRyeS4KKwkJCSAqLworCQkJ aWYgKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkKKwkJCQlwZ3N0YXRfY291bnRfaG90 X2luZGV4ZWRfdXBkX3NraXBwZWQoaW5kZXhSZWxhdGlvbik7CiAJCQljb250aW51ZTsKKwkJ fQogCiAJCS8qIENoZWNrIGZvciBwYXJ0aWFsIGluZGV4ICovCiAJCWlmIChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZSAhPSBOSUwpCkBAIC0zOTcsNiArNDAzLDE3IEBAIEV4ZWNJbnNlcnRJ bmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCWNvbnRpbnVl OwogCQl9CiAKKwkJLyoKKwkJICogTm9uLXNraXBwZWQgaW5kZXggdW5kZXIgYSBIT1QtaW5k ZXhlZCB1cGRhdGU6IHRoaXMgaW5kZXggaXMKKwkJICogcmVjZWl2aW5nIGEgZnJlc2ggZW50 cnkgYmVjYXVzZSBvbmUgb2YgaXRzIGtleSBhdHRyaWJ1dGVzIGNoYW5nZWQuCisJCSAqIFN1 bW1hcml6aW5nIGluZGV4ZXMgYWx3YXlzIGluc2VydCByZWdhcmRsZXNzIG9mIHRoZSBIT1Qt aW5kZXhlZAorCQkgKiBkZWNpc2lvbiAoc2FtZSBhcyBjbGFzc2ljIEhPVCksIHNvIHRoZXkg YXJlIG5vdCBjb3VudGVkIGhlcmUuICBDb3VudAorCQkgKiBvbmx5IG5vdyB0aGF0IHRoZSBw YXJ0aWFsLWluZGV4IHByZWRpY2F0ZSAoaWYgYW55KSBoYXMgYWxzbyBwYXNzZWQsCisJCSAq IHNvIGEgcHJlZGljYXRlLWV4Y2x1ZGVkIHBhcnRpYWwgaW5kZXggaXMgbm90IGNvdW50ZWQg YXMgbWF0Y2hlZC4KKwkJICovCisJCWlmICgoZmxhZ3MgJiBFSUlUX0lTX0hPVF9JTkRFWEVE KSAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKKwkJCXBnc3RhdF9jb3VudF9ob3Rf aW5kZXhlZF91cGRfbWF0Y2hlZChpbmRleFJlbGF0aW9uKTsKKwogCQkvKgogCQkgKiBGb3Jt SW5kZXhEYXR1bSBmaWxscyBpbiBpdHMgdmFsdWVzIGFuZCBpc251bGwgcGFyYW1ldGVycyB3 aXRoIHRoZQogCQkgKiBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHRoZSBjb2x1bW4ocykgb2Yg dGhlIGluZGV4LgpAQCAtNDM2LDE1ICs0NTMsMTMgQEAgRXhlY0luc2VydEluZGV4VHVwbGVz KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQljaGVja1VuaXF1ZSA9IFVOSVFV RV9DSEVDS19QQVJUSUFMOwogCiAJCS8qCi0JCSAqIFRoZXJlJ3MgZGVmaW5pdGVseSBnb2lu ZyB0byBiZSBhbiBpbmRleF9pbnNlcnQoKSBjYWxsIGZvciB0aGlzCi0JCSAqIGluZGV4LiAg SWYgd2UncmUgYmVpbmcgY2FsbGVkIGFzIHBhcnQgb2YgYW4gVVBEQVRFIHN0YXRlbWVudCwK LQkJICogY29uc2lkZXIgaWYgdGhlICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgc2hv dWxkIGJlIHBhc3NlZC4KKwkJICogRm9yIFVQREFURSBvcGVyYXRpb25zLCB1c2UgdGhlIHBl ci1pbmRleCBpaV9JbmRleFVuY2hhbmdlZCBmbGFnCisJCSAqIChwb3B1bGF0ZWQgYnkgRXhl Y1NldEluZGV4VW5jaGFuZ2VkKSB0byBoaW50IHdoZXRoZXIgdGhlIGluZGV4CisJCSAqIHZh bHVlcyBhcmUgdW5jaGFuZ2VkLiAgVGhpcyBoZWxwcyB0aGUgaW5kZXggQU0gb3B0aW1pemUg Zm9yCisJCSAqIGJvdHRvbS11cCBkZWxldGlvbiBvZiBkdXBsaWNhdGUgaW5kZXggZW50cmll cy4KIAkJICovCi0JCWluZGV4VW5jaGFuZ2VkID0gKChmbGFncyAmIEVJSVRfSVNfVVBEQVRF KSAmJgotCQkJCQkJICBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKHJlc3VsdFJlbEluZm8s Ci0JCQkJCQkJCQkJCQkJZXN0YXRlLAotCQkJCQkJCQkJCQkJCWluZGV4SW5mbywKLQkJCQkJ CQkJCQkJCQlpbmRleFJlbGF0aW9uKSk7CisJCWluZGV4VW5jaGFuZ2VkID0gKGZsYWdzICYg RUlJVF9JU19VUERBVEUpID8KKwkJCWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgOiBm YWxzZTsKIAogCQlzYXRpc2ZpZXNDb25zdHJhaW50ID0KIAkJCWluZGV4X2luc2VydChpbmRl eFJlbGF0aW9uLCAvKiBpbmRleCByZWxhdGlvbiAqLwpAQCAtNzIxLDYgKzczNiw3IEBAIGNo ZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwKIAlpbnQJCQlpOwogCWJvb2wJCWNvbmZsaWN0OwogCWJvb2wJCWZvdW5k X3NlbGY7CisJYm9vbAkJZm91bmRfc2VsZl9zaXVfaGl0OwogCUV4cHJDb250ZXh0ICplY29u dGV4dDsKIAlUdXBsZVRhYmxlU2xvdCAqZXhpc3Rpbmdfc2xvdDsKIAlUdXBsZVRhYmxlU2xv dCAqc2F2ZV9zY2FudHVwbGU7CkBAIC04MjMsNiArODM5LDcgQEAgY2hlY2tfZXhjbHVzaW9u X29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog cmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9zZWxmID0gZmFsc2U7CisJZm91 bmRfc2VsZl9zaXVfaGl0ID0gZmFsc2U7CiAJaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihoZWFwLCBpbmRleCwKIAkJCQkJCQkJICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5 YXR0cywgMCwKIAkJCQkJCQkJIFNPX05PTkUpOwpAQCAtODM4LDE0ICs4NTUsMjggQEAgcmV0 cnk6CiAJCWNoYXIJICAgKmVycm9yX2V4aXN0aW5nOwogCiAJCS8qCi0JCSAqIElnbm9yZSB0 aGUgZW50cnkgZm9yIHRoZSB0dXBsZSB3ZSdyZSB0cnlpbmcgdG8gY2hlY2suCisJCSAqIEln bm9yZSB0aGUgZW50cnkgZm9yIHRoZSB0dXBsZSB3ZSdyZSB0cnlpbmcgdG8gY2hlY2suICBX aXRoIEhPVC0KKwkJICogaW5kZXhlZCAoaG90LWluZGV4ZWQpIHVwZGF0ZXMsIHNldmVyYWwg aW5kZXggZW50cmllcyBtYXkgY2hhaW4tbGVhZAorCQkgKiB0byB0aGUgc2FtZSBoZWFwIHR1 cGxlIChhIHN0YWxlIGVudHJ5IGZvciB0aGUgb2xkIGtleSBhbmQgYSBmcmVzaAorCQkgKiBl bnRyeSBmb3IgdGhlIG5ldyBrZXkpLiAgVGhleSBhbGwgcmVzb2x2ZSB0byB0aGUgc2FtZSBU SUQgaGVyZSBhbmQKKwkJICogbXVzdCBhbGwgYmUgdHJlYXRlZCBhcyAic2VsZiIsIG5vdCBh cyBhIGR1cGxpY2F0ZSBlcnJvci4gIFdlCisJCSAqIHRvbGVyYXRlIHRoZSBkdXBsaWNhdGUg c2VsZiBhcnJpdmFsIHdoZW5ldmVyICplaXRoZXIqIHRoaXMKKwkJICogaXRlcmF0aW9uIG9y IGFuIGVhcmxpZXIgb25lIHNhdyB4c19ob3RfaW5kZXhlZF9zdGFsZSAtLSB0aGUKKwkJICog Y2Fub25pY2FsIGRpcmVjdCBlbnRyeSBhbmQgdGhlIHN0YWxlIGNoYWluLXdhbGsgZW50cmll cyBjYW4gYXJyaXZlCisJCSAqIGluIGVpdGhlciBvcmRlci4KIAkJICovCiAJCWlmIChJdGVt UG9pbnRlcklzVmFsaWQodHVwbGVpZCkgJiYKIAkJCUl0ZW1Qb2ludGVyRXF1YWxzKHR1cGxl aWQsICZleGlzdGluZ19zbG90LT50dHNfdGlkKSkKIAkJewotCQkJaWYgKGZvdW5kX3NlbGYp CQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLworCQkJaWYgKGluZGV4X3NjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWZvdW5kX3NlbGZfc2l1X2hpdCA9IHRydWU7CisJCQlpZiAo Zm91bmRfc2VsZikKKwkJCXsKKwkJCQlpZiAoZm91bmRfc2VsZl9zaXVfaGl0KQorCQkJCQlj b250aW51ZTsKIAkJCQllbG9nKEVSUk9SLCAiZm91bmQgc2VsZiB0dXBsZSBtdWx0aXBsZSB0 aW1lcyBpbiBpbmRleCBcIiVzXCIiLAogCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo aW5kZXgpKTsKKwkJCX0KIAkJCWZvdW5kX3NlbGYgPSB0cnVlOwogCQkJY29udGludWU7CiAJ CX0KQEAgLTg2OSw2ICs5MDAsMzEgQEAgcmV0cnk6CiAJCQkJCQkJCSAqIGNvbmZsaWN0ICov CiAJCX0KIAorCQkvKgorCQkgKiBIT1QtaW5kZXhlZCBjaGFpbnMgY2FuIHJlYWNoIHRoaXMg bG9vcCB2aWEgYSBzdGFsZSBidHJlZSBsZWFmIGVudHJ5CisJCSAqIHdob3NlIGtleSBpcyBk aWZmZXJlbnQgZnJvbSB0aGUgaGVhcCB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybS4KKwkJ ICogZXhpc3RpbmdfdmFsdWVzIGhvbGRzIHRoZSBjdXJyZW50IGhlYXAgdHVwbGUncyBpbmRl eC1mb3JtCisJCSAqIChGb3JtSW5kZXhEYXR1bSBhYm92ZSkuICBDb21wYXJlIGl0IGFnYWlu c3Qgb3VyIG5ldyB0dXBsZSdzIHZhbHVlcworCQkgKiB1c2luZyB0aGUgc2FtZSBjb25zdHJh aW50IG9wZXJhdG9yczsgaWYgdGhleSBkb24ndCBhZ3JlZSwgdGhlCisJCSAqIGNoYWluLXdh bGtlZCB0dXBsZSBpcyBub3QgYWN0dWFsbHkgaW4gY29uZmxpY3Qgd2l0aCBvdXIgaW5zZXJ0 aW9uCisJCSAqIC0tIGl0IGp1c3Qgc2hhcmVkIGEgVElEIHdpdGggYSBzdGFsZSBsZWFmIGVu dHJ5IHdlIGhhcHBlbmVkIHRvIHNjYW4KKwkJICogdGhyb3VnaC4gIFNraXAgaXQuCisJCSAq CisJCSAqIFRoaXMgbWlycm9ycyBfYnRfY2hlY2tfdW5pcXVlJ3MgSE9ULWluZGV4ZWQgcmVj aGVjayBwYXRoOyBmb3IKKwkJICogZXhjbHVzaW9uIGNvbnN0cmFpbnRzIHRoZSB1c2VyLXN1 cHBsaWVkIG9wZXJhdG9yIGluIGNvbnN0cl9wcm9jcworCQkgKiByZXBsYWNlcyB0aGUgYnRy ZWUgZXF1YWxpdHkgY29tcGFyYXRvciwgYW5kCisJCSAqIGluZGV4X3JlY2hlY2tfY29uc3Ry YWludCBkb2VzIHRoZSByaWdodCB0aGluZyBmb3IgZWl0aGVyLgorCQkgKi8KKwkJaWYgKGlu ZGV4X3NjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQl7CisJCQlpZiAoIWluZGV4X3Jl Y2hlY2tfY29uc3RyYWludChpbmRleCwKKwkJCQkJCQkJCQkgIGNvbnN0cl9wcm9jcywKKwkJ CQkJCQkJCQkgIGV4aXN0aW5nX3ZhbHVlcywKKwkJCQkJCQkJCQkgIGV4aXN0aW5nX2lzbnVs bCwKKwkJCQkJCQkJCQkgIHZhbHVlcykpCisJCQkJY29udGludWU7CQkvKiBzdGFsZSBjaGFp biBoaXQsIG5vdCBhIHJlYWwgY29uZmxpY3QgKi8KKwkJfQorCiAJCS8qCiAJCSAqIEF0IHRo aXMgcG9pbnQgd2UgaGF2ZSBlaXRoZXIgYSBjb25mbGljdCBvciBhIHBvdGVudGlhbCBjb25m bGljdC4KIAkJICoKQEAgLTEwMDksMTQ5ICsxMDY1LDk0IEBAIGluZGV4X3JlY2hlY2tfY29u c3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lkICpjb25zdHJfcHJvY3MsCiB9CiAK IC8qCi0gKiBDaGVjayBpZiBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoKSBzaG91bGQgcGFzcyBp bmRleFVuY2hhbmdlZCBoaW50LgorICogRXhlY1NldEluZGV4VW5jaGFuZ2VkCisgKgorICog UG9wdWxhdGUgdHdvIHBlci1pbmRleCBmbGFncyBhaGVhZCBvZiBFeGVjSW5zZXJ0SW5kZXhU dXBsZXM6CisgKgorICogICAtIGlpX0luZGV4TmVlZHNVcGRhdGUgKHdpZGUpIGRyaXZlcyB0 aGUgc2tpcCBkZWNpc2lvbi4gIEl0IGlzIHRydWUgd2hlbgorICogICAgIHRoZSB0YWJsZSBB TSBzdG9yZWQgYW4gaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24gKHdob2xlLXJvdyBhdHRyaWJ1 dGUKKyAqICAgICBwcmVzZW50IGluIG1vZGlmaWVkX2lkeF9hdHRycykgb3Igd2hlbiBhbnkg YXR0cmlidXRlIHRoZSBpbmRleAorICogICAgIHJlZmVyZW5jZXMgLS0ga2V5LCBJTkNMVURF LCBleHByZXNzaW9uLCBvciBwYXJ0aWFsLXByZWRpY2F0ZSBjb2x1bW4sCisgKiAgICAgcGVy IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgLS0gY2hhbmdlZC4gIEEgbm9uLXN1bW1hcml6 aW5nIGluZGV4IGZvcgorICogICAgIHdoaWNoIHRoaXMgaXMgZmFsc2UgaXMgc2tpcHBlZDog aXRzIGV4aXN0aW5nIGVudHJ5IGtlZXBzIHJlc29sdmluZyB0aGUKKyAqICAgICBIT1QgY2hh aW4uCiAgKgotICogV2hlbiB0aGUgZXhlY3V0b3IgcGVyZm9ybXMgYW4gVVBEQVRFIHRoYXQg cmVxdWlyZXMgYSBuZXcgcm91bmQgb2YgaW5kZXgKLSAqIHR1cGxlcywgZGV0ZXJtaW5lIGlm IHdlIHNob3VsZCBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVlIGhpbnQgZm9yIG9uZQot ICogc2luZ2xlIGluZGV4LgorICogICAtIGlpX0luZGV4VW5jaGFuZ2VkIChuYXJyb3cpIGlz IHRoZSBpbmRleFVuY2hhbmdlZCBoaW50IHRvIGFtaW5zZXJ0LAorICogICAgIGNvbnN1bWVk IGJ5IG5idHJlZSBkZWR1cGxpY2F0aW9uIC8gYm90dG9tLXVwIGRlbGV0aW9uLiAgUGVyIHRo ZQorICogICAgIGhpc3RvcmljYWwgcnVsZSBpdCBjb3VudHMgb25seSBrZXkgY29sdW1uczsg SU5DTFVERSBhbmQgcHJlZGljYXRlCisgKiAgICAgY29sdW1ucyBhcmUgZGVsaWJlcmF0ZWx5 IGlnbm9yZWQsIGFuZCBhbiBleHByZXNzaW9uIGtleSBpcyB0cmVhdGVkCisgKiAgICAgY29u c2VydmF0aXZlbHkgYXMgcG9zc2libHkgY2hhbmdlZC4KICAqLwotc3RhdGljIGJvb2wKLWlu ZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywg RVN0YXRlICplc3RhdGUsCi0JCQkJCQkgIEluZGV4SW5mbyAqaW5kZXhJbmZvLCBSZWxhdGlv biBpbmRleFJlbGF0aW9uKQordm9pZAorRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3VsdFJl bEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmll ZF9pZHhfYXR0cnMpCiB7Ci0JQml0bWFwc2V0ICAqdXBkYXRlZENvbHM7Ci0JQml0bWFwc2V0 ICAqZXh0cmFVcGRhdGVkQ29sczsKLQlCaXRtYXBzZXQgICphbGxVcGRhdGVkQ29sczsKLQli b29sCQloYXNleHByZXNzaW9uID0gZmFsc2U7Ci0JTGlzdAkgICAqaWR4RXhwcnM7Ci0KLQkv KgotCSAqIENoZWNrIGNhY2hlIGZpcnN0Ci0JICovCi0JaWYgKGluZGV4SW5mby0+aWlfQ2hl Y2tlZFVuY2hhbmdlZCkKLQkJcmV0dXJuIGluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQ7 Ci0JaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2VkID0gdHJ1ZTsKLQotCS8qCi0JICog Q2hlY2sgZm9yIGluZGV4ZWQgYXR0cmlidXRlIG92ZXJsYXAgd2l0aCB1cGRhdGVkIGNvbHVt bnMuCi0JICoKLQkgKiBPbmx5IGRvIHRoaXMgZm9yIGtleSBjb2x1bW5zLiAgQSBjaGFuZ2Ug dG8gYSBub24ta2V5IGNvbHVtbiB3aXRoaW4gYW4KLQkgKiBJTkNMVURFIGluZGV4IHNob3Vs ZCBub3QgYmUgY291bnRlZCBoZXJlLiAgTm9uLWtleSBjb2x1bW4gdmFsdWVzIGFyZQotCSAq IG9wYXF1ZSBwYXlsb2FkIHN0YXRlIHRvIHRoZSBpbmRleCBBTSwgYSBsaXR0bGUgbGlrZSBh biBleHRyYSB0YWJsZSBUSUQuCi0JICoKLQkgKiBOb3RlIHRoYXQgcm93LWxldmVsIEJFRk9S RSB0cmlnZ2VycyB3b24ndCBhZmZlY3Qgb3VyIGJlaGF2aW9yLCBzaW5jZQotCSAqIHRoZXkg ZG9uJ3QgYWZmZWN0IHRoZSB1cGRhdGVkQ29scyBiaXRtYXBzIGdlbmVyYWxseS4gIEl0IGRv ZXNuJ3Qgc2VlbQotCSAqIHdvcnRoIHRoZSB0cm91YmxlIG9mIGNoZWNraW5nIHdoaWNoIGF0 dHJpYnV0ZXMgd2VyZSBjaGFuZ2VkIGRpcmVjdGx5LgotCSAqLwotCXVwZGF0ZWRDb2xzID0g RXhlY0dldFVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSk7Ci0JZXh0cmFVcGRh dGVkQ29scyA9IEV4ZWNHZXRFeHRyYVVwZGF0ZWRDb2xzKHJlc3VsdFJlbEluZm8sIGVzdGF0 ZSk7Ci0JZm9yIChpbnQgYXR0ciA9IDA7IGF0dHIgPCBpbmRleEluZm8tPmlpX051bUluZGV4 S2V5QXR0cnM7IGF0dHIrKykKLQl7Ci0JCWludAkJCWtleWNvbCA9IGluZGV4SW5mby0+aWlf SW5kZXhBdHRyTnVtYmVyc1thdHRyXTsKLQotCQlpZiAoa2V5Y29sIDw9IDApCi0JCXsKLQkJ CS8qCi0JCQkgKiBTa2lwIGV4cHJlc3Npb25zIGZvciBub3csIGJ1dCByZW1lbWJlciB0byBk ZWFsIHdpdGggdGhlbSBsYXRlcgotCQkJICogb24KLQkJCSAqLwotCQkJaGFzZXhwcmVzc2lv biA9IHRydWU7Ci0JCQljb250aW51ZTsKLQkJfQorCWludAkJCW51bUluZGljZXMgPSByZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzOworCUluZGV4SW5mbyAqKmluZGV4SW5mb0FycmF5 ID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkluZm87CisJUmVsYXRpb25QdHIg aW5kZXhEZXNjcyA9IHJlc3VsdFJlbEluZm8tPnJpX0luZGV4UmVsYXRpb25EZXNjczsKKwli b29sCQlhbGxfaW5kZXhlczsKIAotCQlpZiAoYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAotCQkJCQkJICB1cGRhdGVkQ29scykg fHwKLQkJCWJtc19pc19tZW1iZXIoa2V5Y29sIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciwKLQkJCQkJCSAgZXh0cmFVcGRhdGVkQ29scykpCi0JCXsKLQkJCS8qIENo YW5nZWQga2V5IGNvbHVtbiAtLSBkb24ndCBoaW50IGZvciB0aGlzIGluZGV4ICovCi0JCQlp bmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7Ci0JCQlyZXR1cm4gZmFsc2U7 Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIFdoZW4gd2UgZ2V0IHRoaXMgZmFyIGFuZCBpbmRleCBo YXMgbm8gZXhwcmVzc2lvbnMsIHJldHVybiB0cnVlIHNvIHRoYXQKLQkgKiBpbmRleF9pbnNl cnQoKSBjYWxsIHdpbGwgZ28gb24gdG8gcGFzcyAnaW5kZXhVbmNoYW5nZWQnID0gdHJ1ZSBo aW50LgotCSAqCi0JICogVGhlIF9hYnNlbmNlXyBvZiBhbiBpbmRleGVkIGtleSBhdHRyaWJ1 dGUgdGhhdCBvdmVybGFwcyB3aXRoIHVwZGF0ZWQKLQkgKiBhdHRyaWJ1dGVzIChpbiBhZGRp dGlvbiB0byB0aGUgdG90YWwgYWJzZW5jZSBvZiBpbmRleGVkIGV4cHJlc3Npb25zKQotCSAq IHNob3dzIHRoYXQgdGhlIGluZGV4IGFzIGEgd2hvbGUgaXMgbG9naWNhbGx5IHVuY2hhbmdl ZCBieSBVUERBVEUuCi0JICovCi0JaWYgKCFoYXNleHByZXNzaW9uKQotCXsKLQkJaW5kZXhJ bmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IHRydWU7Ci0JCXJldHVybiB0cnVlOwotCX0KKwlp ZiAobnVtSW5kaWNlcyA9PSAwKQorCQlyZXR1cm47CiAKIAkvKgotCSAqIE5lZWQgdG8gcGFz cyBvbmx5IG9uZSBibXMgdG8gZXhwcmVzc2lvbl90cmVlX3dhbGtlciBoZWxwZXIgZnVuY3Rp b24uCi0JICogQXZvaWQgYWxsb2NhdGluZyBtZW1vcnkgaW4gY29tbW9uIGNhc2Ugd2hlcmUg dGhlcmUgYXJlIG5vIGV4dHJhIGNvbHMuCisJICogQSB3aG9sZS1yb3cgZW50cnkgaW4gbW9k aWZpZWRfaWR4X2F0dHJzIG1lYW5zIHRoZSB0YWJsZSBBTSBzdG9yZWQgYW4KKwkgKiBpbmRl cGVuZGVudCBuZXcgdmVyc2lvbiAoZS5nLiBhdCBhIG5ldyBUSUQpLCBzbyBldmVyeSBpbmRl eCBuZWVkcyBhCisJICogZnJlc2ggZW50cnkgcmVnYXJkbGVzcyBvZiB3aGljaCBhdHRyaWJ1 dGVzIGNoYW5nZWQuCiAJICovCi0JaWYgKCFleHRyYVVwZGF0ZWRDb2xzKQotCQlhbGxVcGRh dGVkQ29scyA9IHVwZGF0ZWRDb2xzOwotCWVsc2UKLQkJYWxsVXBkYXRlZENvbHMgPSBibXNf dW5pb24odXBkYXRlZENvbHMsIGV4dHJhVXBkYXRlZENvbHMpOworCWFsbF9pbmRleGVzID0g Ym1zX2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4 X2F0dHJzKTsKIAotCS8qCi0JICogV2UgaGF2ZSB0byB3b3JrIHNsaWdodGx5IGhhcmRlciBp biB0aGUgZXZlbnQgb2YgaW5kZXhlZCBleHByZXNzaW9ucywKLQkgKiBidXQgdGhlIHByaW5j aXBsZSBpcyB0aGUgc2FtZSBhcyBiZWZvcmU6IHRyeSB0byBmaW5kIGNvbHVtbnMgKFZhcnMs Ci0JICogYWN0dWFsbHkpIHRoYXQgb3ZlcmxhcCB3aXRoIGtub3duLXVwZGF0ZWQgY29sdW1u cy4KLQkgKgotCSAqIElmIHdlIGZpbmQgYW55IG1hdGNoaW5nIFZhcnMsIGRvbid0IHBhc3Mg aGludCBmb3IgaW5kZXguICBPdGhlcndpc2UKLQkgKiBwYXNzIGhpbnQuCi0JICovCi0JaWR4 RXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWxhdGlvbik7Ci0J aGFzZXhwcmVzc2lvbiA9IGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoKE5vZGUg KikgaWR4RXhwcnMsCi0JCQkJCQkJCQkJCQkJYWxsVXBkYXRlZENvbHMpOwotCWxpc3RfZnJl ZShpZHhFeHBycyk7Ci0JaWYgKGV4dHJhVXBkYXRlZENvbHMpCi0JCWJtc19mcmVlKGFsbFVw ZGF0ZWRDb2xzKTsKLQotCWlmIChoYXNleHByZXNzaW9uKQorCWZvciAoaW50IGkgPSAwOyBp IDwgbnVtSW5kaWNlczsgaSsrKQogCXsKLQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9IGZhbHNlOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQorCQlJbmRleEluZm8gICppbmRleElu Zm8gPSBpbmRleEluZm9BcnJheVtpXTsKKwkJUmVsYXRpb24JaW5kZXhEZXNjID0gaW5kZXhE ZXNjc1tpXTsKKwkJQml0bWFwc2V0ICAqaW5kZXhlZGF0dHJzOworCQlib29sCQlrZXljaGFu Z2VkOwogCi0JLyoKLQkgKiBEZWxpYmVyYXRlbHkgZG9uJ3QgY29uc2lkZXIgaW5kZXggcHJl ZGljYXRlcy4gIFdlIHNob3VsZCBldmVuIGdpdmUgdGhlCi0JICogaGludCB3aGVuIHJlc3Vs dCByZWwncyAidXBkYXRlZCB0dXBsZSIgaGFzIG5vIGNvcnJlc3BvbmRpbmcgaW5kZXgKLQkg KiB0dXBsZSwgd2hpY2ggaXMgcG9zc2libGUgd2l0aCBhIHBhcnRpYWwgaW5kZXggKHByb3Zp ZGVkIHRoZSB1c3VhbAotCSAqIGNvbmRpdGlvbnMgYXJlIG1ldCkuCi0JICovCi0JaW5kZXhJ bmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IHRydWU7Ci0JcmV0dXJuIHRydWU7Ci19Ci0KLS8q Ci0gKiBJbmRleGVkIGV4cHJlc3Npb24gaGVscGVyIGZvciBpbmRleF91bmNoYW5nZWRfYnlf dXBkYXRlKCkuCi0gKgotICogUmV0dXJucyB0cnVlIHdoZW4gVmFyIHRoYXQgYXBwZWFycyB3 aXRoaW4gYWxsVXBkYXRlZENvbHMgbG9jYXRlZC4KLSAqLwotc3RhdGljIGJvb2wKLWluZGV4 X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIoTm9kZSAqbm9kZSwgQml0bWFwc2V0ICphbGxV cGRhdGVkQ29scykKLXsKLQlpZiAobm9kZSA9PSBOVUxMKQotCQlyZXR1cm4gZmFsc2U7CisJ CWlmIChpbmRleERlc2MgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwogCi0JaWYgKElzQShub2Rl LCBWYXIpKQotCXsKLQkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOworCQkvKgorCQkg KiBTa2lwIGRlY2lzaW9uICh3aWRlKS4gIFRoZSBpbmRleCBuZWVkcyBhIG5ldyBlbnRyeSBp ZiB0aGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVwZW5kZW50IHZlcnNpb24sIG9yIGlmIGFu eSBhdHRyaWJ1dGUgaXQgcmVmZXJlbmNlcyAtLSBrZXksCisJCSAqIElOQ0xVREUsIGV4cHJl c3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiAtLSBjaGFuZ2VkLgorCQkgKiBS ZWxhdGlvbkdldEluZGV4ZWRBdHRycygpIGNvdmVycyBhbGwgb2YgdGhvc2UuICAoQW4gVVBE QVRFIHRoYXQKKwkJICogdG91Y2hlcyBhbiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSBu ZXZlciByZWFjaGVzIHRoZSBIT1QtaW5kZXhlZAorCQkgKiBwYXRoOiBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBpdCwgcGVuZGluZworCQkgKiBleHByZXNzaW9uLWF3 YXJlIG1haW50ZW5hbmNlLikKKwkJICovCisJCWluZGV4ZWRhdHRycyA9IFJlbGF0aW9uR2V0 SW5kZXhlZEF0dHJzKGluZGV4RGVzYyk7CisJCWluZGV4SW5mby0+aWlfSW5kZXhOZWVkc1Vw ZGF0ZSA9CisJCQlhbGxfaW5kZXhlcyB8fCBibXNfb3ZlcmxhcChpbmRleGVkYXR0cnMsIG1v ZGlmaWVkX2lkeF9hdHRycyk7CisJCWJtc19mcmVlKGluZGV4ZWRhdHRycyk7CiAKLQkJaWYg KGJtc19pc19tZW1iZXIodmFyLT52YXJhdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIsCi0JCQkJCQkgIGFsbFVwZGF0ZWRDb2xzKSkKKwkJLyoKKwkJICogYW1p bnNlcnQgaGludCAobmFycm93KS4gIGlpX0luZGV4VW5jaGFuZ2VkIGZlZWRzIG5idHJlZQor CQkgKiBkZWR1cGxpY2F0aW9uIC8gYm90dG9tLXVwIGRlbGV0aW9uIGhldXJpc3RpY3MgYW5k LCBwZXIgdGhlCisJCSAqIGhpc3RvcmljYWwgcnVsZSwgY291bnRzIG9ubHkga2V5IGNvbHVt bnM6IGEgY2hhbmdlIHRvIGFuIElOQ0xVREUKKwkJICogY29sdW1uIG9yIHRvIGEgcGFydGlh bC1pbmRleCBwcmVkaWNhdGUgY29sdW1uIGRvZXMgbm90IGRpc3F1YWxpZnkKKwkJICogdGhl IGhpbnQuICBBbiBleHByZXNzaW9uIGtleSBjb2x1bW4gaXMgdHJlYXRlZCBjb25zZXJ2YXRp dmVseSBhcworCQkgKiBwb3NzaWJseSBjaGFuZ2VkLgorCQkgKi8KKwkJa2V5Y2hhbmdlZCA9 IGZhbHNlOworCQlmb3IgKGludCBrID0gMDsgayA8IGluZGV4SW5mby0+aWlfTnVtSW5kZXhL ZXlBdHRyczsgaysrKQogCQl7Ci0JCQkvKiBWYXIgd2FzIHVwZGF0ZWQgLS0gaW5kaWNhdGVz IHRoYXQgd2Ugc2hvdWxkIG5vdCBoaW50ICovCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQorCQkJ QXR0ck51bWJlcglrZXljb2wgPSBpbmRleEluZm8tPmlpX0luZGV4QXR0ck51bWJlcnNba107 CiAKLQkJLyogU3RpbGwgaGF2ZW4ndCBmb3VuZCBhIHJlYXNvbiB0byBub3QgcGFzcyB0aGUg aGludCAqLwotCQlyZXR1cm4gZmFsc2U7CisJCQlpZiAoa2V5Y29sID09IDApCS8qIGV4cHJl c3Npb24ga2V5OiBhc3N1bWUgaXQgbWF5IGhhdmUgY2hhbmdlZCAqLworCQkJeworCQkJCWtl eWNoYW5nZWQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKGJtc19pc19tZW1i ZXIoa2V5Y29sIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJ CQkgIG1vZGlmaWVkX2lkeF9hdHRycykpCisJCQl7CisJCQkJa2V5Y2hhbmdlZCA9IHRydWU7 CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZCA9ICFrZXljaGFuZ2VkOwogCX0KLQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy KG5vZGUsIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIsCi0JCQkJCQkJCSAgYWxs VXBkYXRlZENvbHMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGlj YXRpb24uYwppbmRleCA2MjYyZjcxYmQ5My4uN2I1YmJkYmZkN2EgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0yMTcsNiArMjE3LDE4IEBAIHJldHJ5 OgogCS8qIFRyeSB0byBmaW5kIHRoZSB0dXBsZSAqLwogCXdoaWxlIChpbmRleF9nZXRuZXh0 X3Nsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIG91dHNsb3QpKQogCXsKKwkJLyoK KwkJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgY2FuIGxlYXZlIGEgc3RhbGUgaW5kZXggbGVh ZjogYW4gZW50cnkgd2hvc2UKKwkJICoga2V5IGlzIGEgcHJlLXVwZGF0ZSB2YWx1ZSBidXQg d2hvc2UgVElEIGNoYWluLXJlc29sdmVzIHRvIGEgbGl2ZQorCQkgKiB0dXBsZSBub3cgY2Fy cnlpbmcgYSBkaWZmZXJlbnQga2V5LiAgU3VjaCBhIHR1cGxlIGlzIG5vdCB0aGUKKwkJICog cmVwbGljYS1pZGVudGl0eSBtYXRjaCB3ZSBhcmUgbG9va2luZyBmb3IgKGFuZCB0aGUgUEsv UkkgZmFzdCBwYXRoCisJCSAqIGJlbG93IHNraXBzIHRoZSBlcXVhbGl0eSByZWNoZWNrIHRo YXQgd291bGQgb3RoZXJ3aXNlIGNhdGNoIGl0KSwgc28KKwkJICogZHJvcCBpdCAtLSBleGFj dGx5IGFzIEluZGV4U2Nhbi9JbmRleE9ubHlTY2FuIGRvLiAgVGhlIGZyZXNoIGxlYWYKKwkJ ICogZm9yIHRoZSBjdXJyZW50IGtleSwgaWYgYW55LCBpcyByZXR1cm5lZCBieSBhIGxhdGVy IGl0ZXJhdGlvbi4KKwkJICovCisJCWlmIChzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSkK KwkJCWNvbnRpbnVlOworCiAJCS8qCiAJCSAqIEF2b2lkIGV4cGVuc2l2ZSBlcXVhbGl0eSBj aGVjayBpZiB0aGUgaW5kZXggaXMgcHJpbWFyeSBrZXkgb3IKIAkJICogcmVwbGljYSBpZGVu dGl0eSBpbmRleC4KQEAgLTY3OCw2ICs2OTAsMTAgQEAgUmVsYXRpb25GaW5kRGVsZXRlZFR1 cGxlSW5mb0J5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCS8qIFRyeSB0byBm aW5kIHRoZSB0dXBsZSAqLwogCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbiwgRm9y d2FyZFNjYW5EaXJlY3Rpb24sIHNjYW5zbG90KSkKIAl7CisJCS8qIFNraXAgc3RhbGUgSE9U LWluZGV4ZWQgbGVhdmVzIChzZWUgUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleCkuICov CisJCWlmIChzY2FuLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCWNvbnRpbnVlOworCiAJ CS8qCiAJCSAqIEF2b2lkIGV4cGVuc2l2ZSBlcXVhbGl0eSBjaGVjayBpZiB0aGUgaW5kZXgg aXMgcHJpbWFyeSBrZXkgb3IKIAkJICogcmVwbGljYSBpZGVudGl0eSBpbmRleC4KQEAgLTkx MSw3ICs5MjcsNyBAQCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24J cmVsID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRp ZCA9ICYoc2VhcmNoc2xvdC0+dHRzX3RpZCk7Ci0JQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4 X2F0dHJzOworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CiAKIAkv KgogCSAqIFdlIHN1cHBvcnQgb25seSBub24tc3lzdGVtIHRhYmxlcywgd2l0aApAQCAtOTM0 LDcgKzk1MCw2IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCWlmICghc2tpcF90dXBsZSkKIAl7CiAJCUxpc3QJICAgKnJlY2hl Y2tJbmRleGVzID0gTklMOwotCQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOwog CQlMaXN0CSAgICpjb25mbGljdGluZGV4ZXM7CiAJCWJvb2wJCWNvbmZsaWN0ID0gZmFsc2U7 CiAKQEAgLTk1MywyNyArOTY4LDM0IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVj VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJCQkJCQlz ZWFyY2hzbG90LCBzbG90KTsKIAorCQlBc3NlcnQoIWJtc19pc19tZW1iZXIoVGFibGVUdXBs ZVVwZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRycykpOwogCQlzaW1wbGVfdGFi bGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVzX3NuYXBzaG90LAot CQkJCQkJCQkgIG1vZGlmaWVkX2lkeF9hdHRycywgJnVwZGF0ZV9pbmRleGVzKTsKLQkJYm1z X2ZyZWUobW9kaWZpZWRfaWR4X2F0dHJzKTsKLQorCQkJCQkJCQkgICZtb2RpZmllZF9pZHhf YXR0cnMpOwogCiAJCWNvbmZsaWN0aW5kZXhlcyA9IHJlc3VsdFJlbEluZm8tPnJpX29uQ29u ZmxpY3RBcmJpdGVySW5kZXhlczsKIAotCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5k aWNlcyA+IDAgJiYgKHVwZGF0ZV9pbmRleGVzICE9IFRVX05vbmUpKQorCQlpZiAocmVzdWx0 UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJCSFibXNfaXNfZW1wdHkobW9kaWZp ZWRfaWR4X2F0dHJzKSkKIAkJeworCQkJYm9vbAkJYWxsX2luZGV4ZXMgPQorCQkJCWJtc19p c19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsIG1vZGlmaWVkX2lkeF9hdHRy cyk7CiAJCQl1aW50MzIJCWZsYWdzID0gRUlJVF9JU19VUERBVEU7CiAKIAkJCWlmIChjb25m bGljdGluZGV4ZXMgIT0gTklMKQogCQkJCWZsYWdzIHw9IEVJSVRfTk9fRFVQRV9FUlJPUjsK LQkJCWlmICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCQlmbGFncyB8 PSBFSUlUX09OTFlfU1VNTUFSSVpJTkc7CisJCQlpZiAoIWFsbF9pbmRleGVzKQorCQkJCWZs YWdzIHw9IEVJSVRfSVNfSE9UX0lOREVYRUQ7CisKKwkJCUV4ZWNTZXRJbmRleFVuY2hhbmdl ZChyZXN1bHRSZWxJbmZvLCBtb2RpZmllZF9pZHhfYXR0cnMpOworCiAJCQlyZWNoZWNrSW5k ZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJ CQkJICAgZXN0YXRlLCBmbGFncywKIAkJCQkJCQkJCQkJCSAgIHNsb3QsIGNvbmZsaWN0aW5k ZXhlcywKIAkJCQkJCQkJCQkJCSAgICZjb25mbGljdCk7CiAJCX0KIAorCQlibXNfZnJlZSht b2RpZmllZF9pZHhfYXR0cnMpOworCiAJCS8qCiAJCSAqIFJlZmVyIHRvIHRoZSBjb21tZW50 cyBhYm92ZSB0aGUgY2FsbCB0byBDaGVja0FuZFJlcG9ydENvbmZsaWN0KCkgaW4KIAkJICog RXhlY1NpbXBsZVJlbGF0aW9uSW5zZXJ0IHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgY2hlY2sg aXMgZG9uZSBhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMK aW5kZXggZDUyMDEyZThhNjkuLmNkMGNhZWYxMzY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTEwNCw2ICsxMDQsNyBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAogCQkvKiBTZXQgaXQgdXAgZm9yIGlu ZGV4LW9ubHkgc2NhbiAqLwogCQlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAg PSB0cnVlOworCQlub2RlLT5pb3NzX1NjYW5EZXNjLT54c19pbmRleF9vbmx5ID0gdHJ1ZTsK IAkJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkJLyoKQEAgLTE3 Miw2ICsxNzMsMjUgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAJCQlpZiAoIWluZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIG5vZGUtPmlvc3NfVGFibGVT bG90KSkKIAkJCQljb250aW51ZTsJCS8qIG5vIHZpc2libGUgdHVwbGUsIHRyeSBuZXh0IGlu ZGV4IGVudHJ5ICovCiAKKwkJCS8qCisJCQkgKiBIT1QtaW5kZXhlZCBzdGFsZSBlbnRyeTog aWYgdGhlIGNoYWluIHdhbGsgdG8gcmVhY2ggdGhpcyB0dXBsZQorCQkJICogY3Jvc3NlZCBh IGhvdC1pbmRleGVkIGhvcCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXgK KwkJCSAqIGNvdmVycywgdGhlIGxlYWYgd2UgYXJyaXZlZCB0aHJvdWdoIGlzIHN0YWxlLiAg Rm9yIElPUyB3ZSBzZXJ2ZQorCQkJICogdmFsdWVzIG91dCBvZiB4c19pdHVwLCBzbyBhIHN0 YWxlIGxlYWYgd291bGQgc3VyZmFjZSB0aGUgd3JvbmcKKwkJCSAqIHZhbHVlczsgZHJvcCBp dC4gIFRoZSBmcmVzaCBlbnRyeSBmb3IgdGhlIG5ldyB2YWx1ZSByZXR1cm5zIHRoZQorCQkJ ICogcm93IHdpdGggY29ycmVjdCB2YWx1ZXMgdmlhIGl0cyBvd24gcGF0aC4gIFBydW5lIGtl ZXBzIGFueSBwYWdlCisJCQkgKiB0aGF0IGNhbiBjYXJyeSBzdWNoIGEgc3RhbGUgbGVhZiAt LSBvbmUgd2l0aCBhIHJlZGlyZWN0IHRvIGEKKwkJCSAqIGxpdmUgSEVBUF9JTkRFWEVEX1VQ REFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcAorCQkJICogKHNlZSBo ZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCksIHNvIGFuIGluZGV4LW9ubHkgc2NhbiBhbHdh eXMKKwkJCSAqIHJlYWNoZXMgdGhpcyBoZWFwIGZldGNoIHdoZW4gc3RhbGVuZXNzIGNvdWxk IGFwcGx5LgorCQkJICovCisJCQlpZiAoc2NhbmRlc2MtPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJeworCQkJCUluc3RyQ291bnRGaWx0ZXJlZDIobm9kZSwgMSk7CisJCQkJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+aW9zc19UYWJsZVNsb3QpOworCQkJCWNvbnRpbnVlOworCQkJfQor CiAJCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xvdCk7CiAKIAkJCS8qCkBA IC0yMjksNiArMjQ5LDE2IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpu b2RlKQogCQkJfQogCQl9CiAKKwkJLyoKKwkJICogTm8gSE9ULWluZGV4ZWQgc3RhbGVuZXNz IGNoZWNrIGlzIG5lZWRlZCBvbiB0aGUgVk0tYWxsLXZpc2libGUgcGF0aAorCQkgKiAod2hl cmUgd2Ugc2tpcHBlZCB0aGUgaGVhcCBmZXRjaCkuICBQcnVuZSBrZWVwcyBhbnkgcGFnZSB0 aGF0IGNvdWxkCisJCSAqIGNhcnJ5IGEgc3RhbGUgbGVhZiAtLSBvbmUgd2l0aCBhIHJlZGly ZWN0IHRvIGEgbGl2ZQorCQkgKiBIRUFQX0lOREVYRURfVVBEQVRFRCB0dXBsZSAtLSBvdXQg b2YgdGhlIHZpc2liaWxpdHkgbWFwLCBzbyBhbgorCQkgKiBhbGwtdmlzaWJsZSBlbnRyeSBu ZXZlciBjcm9zc2VkIGEgSE9UL1NJVSBob3AuICAoaW5kZXhfZ2V0bmV4dF90aWQKKwkJICog YWxzbyByZXNldHMgeHNfaG90X2luZGV4ZWRfc3RhbGUgcGVyIGVudHJ5LCBhbmQgb25seSB0 aGUgaGVhcCBmZXRjaAorCQkgKiBpbiBpbmRleF9mZXRjaF9oZWFwIGV2ZXIgc2V0cyBpdCwg c28gaXQgY2Fubm90IGJlIHNldCBoZXJlIGFueXdheS4pCisJCSAqLworCiAJCS8qCiAJCSAq IFdlIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IHJlY2hlY2tpbmcgT1JERVIgQlkgZGlzdGFu Y2VzLiAgKEluCiAJCSAqIHByaW5jaXBsZSwgaWYgdGhlIGluZGV4IGNhbiBzdXBwb3J0IHJl dHJpZXZhbCBvZiB0aGUgb3JpZ2luYWxseQpAQCAtNzc1LDYgKzgwNSw3IEBAIEV4ZWNJbmRl eE9ubHlTY2FuSW5pdGlhbGl6ZURTTShJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUsCiAJCQkJ CQkJCSBTY2FuUmVsSXNSZWFkT25seSgmbm9kZS0+c3MpID8KIAkJCQkJCQkJIFNPX0hJTlRf UkVMX1JFQURfT05MWSA6IFNPX05PTkUpOwogCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dh bnRfaXR1cCA9IHRydWU7CisJbm9kZS0+aW9zc19TY2FuRGVzYy0+eHNfaW5kZXhfb25seSA9 IHRydWU7CiAJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAKIAkvKgpA QCAtODI1LDYgKzg1Niw3IEBAIEV4ZWNJbmRleE9ubHlTY2FuSW5pdGlhbGl6ZVdvcmtlcihJ bmRleE9ubHlTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJCSBTY2FuUmVsSXNSZWFkT25seSgm bm9kZS0+c3MpID8KIAkJCQkJCQkJIFNPX0hJTlRfUkVMX1JFQURfT05MWSA6IFNPX05PTkUp OwogCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX3dhbnRfaXR1cCA9IHRydWU7CisJbm9kZS0+ aW9zc19TY2FuRGVzYy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAKIAkvKgogCSAqIElmIG5v IHJ1bi10aW1lIGtleXMgdG8gY2FsY3VsYXRlIG9yIHRoZXkgYXJlIHJlYWR5LCBnbyBhaGVh ZCBhbmQgcGFzcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCmluZGV4IDM5 ZjY2OTFlZTM1Li5kYWQ5MjVkY2IxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYwpAQCAtMTUxLDYgKzE1MSwyMCBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUg Km5vZGUpCiAJCQl9CiAJCX0KIAorCQkvKgorCQkgKiBIT1QtaW5kZXhlZCBzdGFsZSBlbnRy eTogdGhlIGNoYWluIHdlIHdhbGtlZCB0byByZWFjaCB0aGlzIHR1cGxlCisJCSAqIGNyb3Nz ZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFuZ2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGlu ZGV4CisJCSAqIGNvdmVycywgc28gdGhlIGxlYWYgZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdo IGlzIHN0YWxlLiAgRHJvcCBpdDsKKwkJICogdGhlIGZyZXNoIGVudHJ5IGluc2VydGVkIGZv ciB0aGUgbmV3IHZhbHVlIHJldHVybnMgdGhlIHJvdyB0aHJvdWdoCisJCSAqIGl0cyBvd24g cGF0aC4gIFN0YWxlbmVzcyB3YXMgZGVjaWRlZCBieSB0aGUgaGVhcCBBTSB2aWEgcGVyLWhv cAorCQkgKiBtb2RpZmllZC1hdHRycyBiaXRtYXBzIChzZWUgaGVhcF9ob3Rfc2VhcmNoX2J1 ZmZlcikuCisJCSAqLworCQlpZiAoc2NhbmRlc2MtPnhzX2hvdF9pbmRleGVkX3N0YWxlKQor CQl7CisJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOworCQkJY29udGludWU7CisJ CX0KKwogCQlyZXR1cm4gc2xvdDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMKaW5kZXggZWI2ZTBlZjJhZDkuLjYzNWE2Nzg4NGQ4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTMwLDcgKzEzMCwxNCBAQCB0 eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZUNvbnRleHQKIHR5cGVkZWYgc3RydWN0IFVwZGF0 ZUNvbnRleHQKIHsKIAlib29sCQljcm9zc1BhcnRVcGRhdGU7CS8qIHdhcyBpdCBhIGNyb3Nz LXBhcnRpdGlvbiB1cGRhdGU/ICovCi0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVz OyAvKiBXaGljaCBpbmRleCB1cGRhdGVzIGFyZSByZXF1aXJlZD8gKi8KKworCS8qCisJICog U2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGUgVVBEQVRFIGNoYW5nZWQgKGluL291dCBm b3IgdGhlIHRhYmxlIEFNJ3MKKwkgKiB1cGRhdGUgY2FsbGJhY2spLiAgUG9wdWxhdGVkIGJ5 IEV4ZWNVcGRhdGVBY3QgYW5kIGNvbnN1bWVkIGJ5CisJICogRXhlY1VwZGF0ZUVwaWxvZ3Vl OyB0aGUgQU0gYWRkcyB0aGUgd2hvbGUtcm93IGF0dHJpYnV0ZQorCSAqIChUYWJsZVR1cGxl VXBkYXRlQWxsSW5kZXhlcykgd2hlbiBldmVyeSBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5 LgorCSAqLworCUJpdG1hcHNldCAgKm1vZGlmaWVkX2F0dHJzOwogCiAJLyoKIAkgKiBMb2Nr IG1vZGUgdG8gYWNxdWlyZSBvbiB0aGUgbGF0ZXN0IHR1cGxlIHZlcnNpb24gYmVmb3JlIHBl cmZvcm1pbmcKQEAgLTIzOCwyNSArMjQ1LDIzIEBAIEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCXJldHVybiBOVUxMOwogCiAJ LyoKLQkgKiBHZXQgdGhlIHNldCBvZiBhbGwgYXR0cmlidXRlcyBhY3Jvc3MgYWxsIGluZGV4 ZXMgZm9yIHRoaXMgcmVsYXRpb24gZnJvbQotCSAqIHRoZSByZWxjYWNoZSwgaXQgcmV0dXJu cyB1cyBhIGNvcHkgb2YgdGhlIGJpdG1hcCBzbyB3ZSBjYW4gbW9kaWZ5IGl0LgorCSAqIERl dGVybWluZSB3aGljaCBpbmRleGVkIGF0dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZCB2YWx1 ZSBieSBjb21wYXJpbmcKKwkgKiB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIGF0dHJpYnV0ZS1i eS1hdHRyaWJ1dGUgb3ZlciB0aGUgcmVsYXRpb24ncyBmdWxsCisJICogaW5kZXhlZC1hdHRy aWJ1dGUgc2V0LiAgV2UgZGVsaWJlcmF0ZWx5IGRvIE5PVCB0cnkgdG8gbmFycm93IHRoZSB3 b3JrCisJICogdXNpbmcgdGhlIFNRTCBVUERBVEUncyB0YXJnZXQgbGlzdCAoRXhlY0dldEFs bFVwZGF0ZWRDb2xzKTogdGhhdCBsaXN0CisJICogZG9lcyBub3QgY2FwdHVyZSBpbmRleGVk IGNvbHVtbnMgbXV0YXRlZCBvdXRzaWRlIHRoZSBTRVQgY2xhdXNlLCBzdWNoCisJICogYXMg YSBjb2x1bW4gcmV3cml0dGVuIGJ5IGEgQkVGT1JFL0lOU1RFQUQtT0YgdHJpZ2dlciB2aWEK KwkgKiBoZWFwX21vZGlmeV90dXBsZSAoc2VlIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkg aW4gdHNlYXJjaC5zcWwpLCB0aGUKKwkgKiBpbXBsaWNpdCB0ZW1wb3JhbCByYW5nZSBjb2x1 bW4gb2YgYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUsIG9yIHRoZQorCSAqIHByZS1idWlsdCB0 dXBsZXMgYXBwbGllZCBieSBSRVBBQ0sgKENPTkNVUlJFTlRMWSkgYW5kIGxvZ2ljYWwKKwkg KiByZXBsaWNhdGlvbiB0aHJvdWdoIGEgc3ludGhldGljIFJlc3VsdFJlbEluZm8uICBDb21w YXJpbmcgdGhlIGFjdHVhbAorCSAqIHR1cGxlIHZhbHVlcyBpcyBhbHdheXMgY29ycmVjdC4K IAkgKgotCSAqIE5vdGU6IFdlIGludGVudGlvbmFsbHkgc2NhbiBhbGwgaW5kZXhlZCBjb2x1 bW5zIHdoZW4gbG9va2luZyBmb3IKLQkgKiBjaGFuZ2VzIHJhdGhlciB0aGFuIHJlZHVjZSB0 aGF0IHNldCBieSBpbnRlcnNlY3RpbmcgaXQgd2l0aAotCSAqIEV4ZWNHZXRBbGxVcGRhdGVk Q29scygpLiAgRGVzaXB0ZSB0aGUgbmFtZSBpdCBwcm92aWRlcyB0aGUgc2V0IG9mCi0JICog dGFyZ2V0ZWQgYXR0cmlidXRlcyBpbiB0aGUgU1FMIHVzZWQgZm9yIHRoZSBVUERBVEUgYW5k IGFueSB0cmlnZ2VycywKLQkgKiBidXQgdGhhdCBkb2Vzbid0IGluY2x1ZGUgYW55IGF0dHJp YnV0ZXMgdXBkYXRlZCB1c2luZwotCSAqIGhlYXBfbW9kaWZpeV90dXBsZSgpLiBUaGVyZSBp cyBvbmUgdGVzdCBpbiB0c2VhcmNoLnNxbCB0aGF0IGRvZXMganVzdAotCSAqIHRoYXQsIG1v ZGlmaWVzIGFuIGluZGV4ZWQgYXR0cmlidXRlIHRoYXQgaXNuJ3Qgc3BlY2lmaWVkIGluIHRo ZSBTUUwgYW5kCi0JICogc28gaXNuJ3QgcHJlc2VudCBpbiB0aGF0IGJpdG1hcHNldC4KKwkg KiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zIGEgY29weSB3ZSBhcmUgZnJl ZSB0byBtdXRhdGU7CisJICogRXhlY0NvbXBhcmVTbG90QXR0cnMgZGVsZXRlcyB0aGUgYXR0 cmlidXRlcyB0aGF0IGRpZCBub3QgY2hhbmdlIGFuZAorCSAqIHJldHVybnMgdGhlIHN1cnZp dmluZyAibW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIiBzZXQuCiAJICovCiAJYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCk7Ci0KLQkvKgotCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmli dXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKLQkgKiB0byBmaW5k IHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQotCSAqICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgotCSAqLwogCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90QXR0cnMo YXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOwogCiAJcmV0dXJuIGF0dHJzOwpA QCAtMjUxMyw4ICsyNTE4LDggQEAgRXhlY1VwZGF0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJYm9vbAkJcGFydGl0 aW9uX2NvbnN0cmFpbnRfZmFpbGVkOwogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAKLQkvKiBUaGUg c2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IHRyaWdnZXIgbmV3IGlu ZGV4IGVudHJpZXMgKi8KLQlCaXRtYXBzZXQgICptb2RpZmllZF9pZHhfYXR0cnMgPSBOVUxM OworCS8qIFJlc2V0IGFueSBzdGF0ZSBsZWZ0IG92ZXIgZnJvbSBhIHByZXZpb3VzIGNhbGwg Ki8KKwl1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzID0gTlVMTDsKIAogCXVwZGF0ZUN4dC0+ Y3Jvc3NQYXJ0VXBkYXRlID0gZmFsc2U7CiAKQEAgLTI2MzgsNyArMjY0Myw4IEBAIGxyZXBs YWNlOgogCSAqIHdlIHdpbGwgb3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmll ZCBieSBoZWFwX21vZGlmeV90dXBsZSgpCiAJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBF eGVjR2V0VXBkYXRlZENvbHMoKS4KIAkgKi8KLQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVj VXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsK Kwl1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzID0KKwkJRXhlY1VwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMocmVzdWx0UmVsSW5mbywgb2xkU2xvdCwgc2xvdCk7CiAKIAkvKgogCSAqIENhbGwg aW50byB0aGUgdGFibGUgQU0gdG8gdXBkYXRlIHRoZSBoZWFwIHR1cGxlLgpAQCAtMjY0OSw2 ICsyNjU1LDggQEAgbHJlcGxhY2U6CiAJICogZm9yIHJlZmVyZW50aWFsIGludGVncml0eSB1 cGRhdGVzIGluIHRyYW5zYWN0aW9uLXNuYXBzaG90IG1vZGUKIAkgKiB0cmFuc2FjdGlvbnMu CiAJICovCisJQXNzZXJ0KCFibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRl eGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKSk7CiAJcmVzdWx0ID0g dGFibGVfdHVwbGVfdXBkYXRlKHJlc3VsdFJlbGF0aW9uRGVzYywgdHVwbGVpZCwgc2xvdCwK IAkJCQkJCQkJZXN0YXRlLT5lc19vdXRwdXRfY2lkLAogCQkJCQkJCQkwLApAQCAtMjY1Niw4 ICsyNjY0LDcgQEAgbHJlcGxhY2U6CiAJCQkJCQkJCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19z bmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQgKi8gLAogCQkJCQkJ CQkmY29udGV4dC0+dG1mZCwgJnVwZGF0ZUN4dC0+bG9ja21vZGUsCi0JCQkJCQkJCW1vZGlm aWVkX2lkeF9hdHRycywKLQkJCQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyk7CisJ CQkJCQkJCSZ1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKIAogCXJldHVybiByZXN1bHQ7 CiB9CkBAIC0yNjc4LDE0ICsyNjg1LDI2IEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlU YWJsZUNvbnRleHQgKmNvbnRleHQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAlMaXN0 CSAgICpyZWNoZWNrSW5kZXhlcyA9IE5JTDsKIAogCS8qIGluc2VydCBpbmRleCBlbnRyaWVz IGZvciB0dXBsZSBpZiBuZWNlc3NhcnkgKi8KLQlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVt SW5kaWNlcyA+IDAgJiYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyAhPSBUVV9Ob25lKSkK KwlpZiAocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJtc19pc19l bXB0eSh1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKSkKIAl7Ci0JCXVpbnQzMgkJZmxhZ3Mg PSBFSUlUX0lTX1VQREFURTsKKwkJYm9vbAkJYWxsX2luZGV4ZXMgPQorCQkJYm1zX2lzX21l bWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywKKwkJCQkJCSAgdXBkYXRlQ3h0LT5t b2RpZmllZF9hdHRycyk7CisKKwkJLyoKKwkJICogUG9wdWxhdGUgcGVyLWluZGV4IGlpX0lu ZGV4VW5jaGFuZ2VkIGJlZm9yZSBpbnNlcnRpbmcuICBXaGVuIHRoZSBBTQorCQkgKiBzdG9y ZWQgYW4gaW5kZXBlbmRlbnQgbmV3IHZlcnNpb24gKHdob2xlLXJvdyBhdHRyaWJ1dGUgcHJl c2VudCkKKwkJICogZXZlcnkgaW5kZXggbmVlZHMgYSBmcmVzaCBlbnRyeTsgZm9yIGEgSE9U IHVwZGF0ZSBvbmx5IHRob3NlIHdob3NlCisJCSAqIGF0dHJpYnV0ZXMgb3ZlcmxhcCB0aGUg bW9kaWZpZWQgc2V0IGRvLgorCQkgKi8KKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKHJlc3Vs dFJlbEluZm8sIHVwZGF0ZUN4dC0+bW9kaWZpZWRfYXR0cnMpOwogCi0JCWlmICh1cGRhdGVD eHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpCi0JCQlmbGFncyB8PSBFSUlU X09OTFlfU1VNTUFSSVpJTkc7CiAJCXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4 VHVwbGVzKHJlc3VsdFJlbEluZm8sIGNvbnRleHQtPmVzdGF0ZSwKLQkJCQkJCQkJCQkJICAg ZmxhZ3MsIHNsb3QsIE5JTCwKKwkJCQkJCQkJCQkJICAgRUlJVF9JU19VUERBVEUgfAorCQkJ CQkJCQkJCQkgICAoYWxsX2luZGV4ZXMgPworCQkJCQkJCQkJCQkJMCA6IEVJSVRfSVNfSE9U X0lOREVYRUQpLAorCQkJCQkJCQkJCQkgICBzbG90LCBOSUwsCiAJCQkJCQkJCQkJCSAgIE5V TEwpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYwppbmRleCA0MGIwOTk1OGFjMi4uZjA1 MGMwODhkMjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04NDUsOCArODQ1LDYgQEAg bWFrZUluZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lk LCBMaXN0ICpleHByZXNzaW9ucywKIAluLT5paV9VbmlxdWUgPSB1bmlxdWU7CiAJbi0+aWlf TnVsbHNOb3REaXN0aW5jdCA9IG51bGxzX25vdF9kaXN0aW5jdDsKIAluLT5paV9SZWFkeUZv ckluc2VydHMgPSBpc3JlYWR5OwotCW4tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsK LQluLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCW4tPmlpX0NvbmN1cnJlbnQgPSBj b25jdXJyZW50OwogCW4tPmlpX1N1bW1hcml6aW5nID0gc3VtbWFyaXppbmc7CiAJbi0+aWlf V2l0aG91dE92ZXJsYXBzID0gd2l0aG91dG92ZXJsYXBzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYwppbmRleCAwNGYyZWIyMWQwYi4uZGQx MTQwYjI5ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9y ZWxhdGlvbi5jCkBAIC0zODQsMTEgKzM4NCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF9pbnNl cnQoUmVsYXRpb24gcmVsLCBQZ1N0YXRfQ291bnRlciBuKQogCiAvKgogICogY291bnQgYSB0 dXBsZSB1cGRhdGUKKyAqCisgKiBob3QgICAgICAtLSB0aGUgdXBkYXRlIHdhcyBhIGhlYXAt b25seSB0dXBsZSAoY2xhc3NpYyBIT1Qgb3IgSE9ULWluZGV4ZWQpCisgKiBob3RfaW5kZXhl ZCAtLSB0aGUgdXBkYXRlIHdhcyBhIEhPVC1pbmRleGVkIHVwZGF0ZSwgYSBzdWJjYXNlIG9m CisgKiAgICAgICAgICAgICAgICBob3Q9dHJ1ZTsgaG90X2luZGV4ZWQgaW1wbGllcyBob3QK KyAqIG5ld3BhZ2UgIC0tIHRoZSBuZXcgdHVwbGUgd2VudCB0byBhIGRpZmZlcmVudCBidWZm ZXIgdGhhbiB0aGUgb2xkIG9uZQogICovCiB2b2lkCi1wZ3N0YXRfY291bnRfaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQorcGdzdGF0X2NvdW50 X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3QsIGJvb2wgaG90X2luZGV4ZWQs IGJvb2wgbmV3cGFnZSkKIHsKIAlBc3NlcnQoIShob3QgJiYgbmV3cGFnZSkpOworCUFzc2Vy dCghKGhvdF9pbmRleGVkICYmICFob3QpKTsKIAogCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50 X3JlbGF0aW9uKHJlbCkpCiAJewpAQCAtMzk4LDExICs0MDQsMTcgQEAgcGdzdGF0X2NvdW50 X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3QsIGJvb2wgbmV3cGFnZSkKIAkJ cGdzdGF0X2luZm8tPnRyYW5zLT50dXBsZXNfdXBkYXRlZCsrOwogCiAJCS8qCi0JCSAqIHR1 cGxlc19ob3RfdXBkYXRlZCBhbmQgdHVwbGVzX25ld3BhZ2VfdXBkYXRlZCBjb3VudGVycyBh cmUKLQkJICogbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdCBhZHZhbmNlIHRoZW0KKwkJICog dHVwbGVzX2hvdF91cGRhdGVkLCB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCwgYW5kCisJ CSAqIHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQgY291bnRlcnMgYXJlIG5vbnRyYW5zYWN0aW9u YWwsIHNvIGp1c3QKKwkJICogYWR2YW5jZSB0aGVtLiAgdHVwbGVzX2hvdF9pbmRleGVkX3Vw ZGF0ZWQgaXMgY291bnRlZCBpbiAqYWRkaXRpb24qIHRvCisJCSAqIHR1cGxlc19ob3Q6IGV2 ZXJ5IGhvdC1pbmRleGVkIHVwZGF0ZSBpcyBhbHNvIGEgSE9UIHVwZGF0ZS4KIAkJICovCiAJ CWlmIChob3QpCisJCXsKIAkJCXBnc3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF91cGRh dGVkKys7CisJCQlpZiAoaG90X2luZGV4ZWQpCisJCQkJcGdzdGF0X2luZm8tPmNvdW50cy50 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCsrOworCQl9CiAJCWVsc2UgaWYgKG5ld3BhZ2Up CiAJCQlwZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19uZXdwYWdlX3VwZGF0ZWQrKzsKIAl9 CkBAIC04NTQsNyArODY2LDEwIEBAIHBnc3RhdF9yZWxhdGlvbl9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCiAJdGFiZW50cnktPnR1cGxlc191 cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc191cGRhdGVkOwogCXRhYmVudHJ5LT50 dXBsZXNfZGVsZXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfZGVsZXRlZDsKIAl0YWJl bnRyeS0+dHVwbGVzX2hvdF91cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3Rf dXBkYXRlZDsKKwl0YWJlbnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQgKz0gbHN0 YXRzLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQ7CiAJdGFiZW50cnktPnR1 cGxlc19uZXdwYWdlX3VwZGF0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVwbGVzX25ld3BhZ2Vf dXBkYXRlZDsKKwl0YWJlbnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkICs9 IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDsKKwl0YWJl bnRyeS0+dHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICs9IGxzdGF0cy0+Y291bnRz LnR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKIAogCS8qCiAJICogSWYgdGFibGUg d2FzIHRydW5jYXRlZC9kcm9wcGVkLCBmaXJzdCByZXNldCB0aGUgbGl2ZS9kZWFkIGNvdW50 ZXJzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggMDU1Zjc1NzEwN2Yu LmNhNjA1MjY1NzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTE1 ODYsNiArMTU4Niw3IEBAIFJlbGF0aW9uSW5pdEluZGV4QWNjZXNzSW5mbyhSZWxhdGlvbiBy ZWxhdGlvbikKIAkgKi8KIAlyZWxhdGlvbi0+cmRfaW5kZXhwcnMgPSBOSUw7CiAJcmVsYXRp b24tPnJkX2luZHByZWQgPSBOSUw7CisJcmVsYXRpb24tPnJkX2luZGF0dHIgPSBOVUxMOwog CXJlbGF0aW9uLT5yZF9leGNsb3BzID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbHByb2Nz ID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CkBAIC0yNDg0LDYg KzI0ODUsNyBAQCBSZWxhdGlvbkRlc3Ryb3lSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwg Ym9vbCByZW1lbWJlcl90dXBkZXNjKQogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pZGF0dHIp OwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJYm1zX2ZyZWUocmVs YXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyKTsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhw cmluZGV4YXR0cik7CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJkZXNjKQogCQlwZnJlZShyZWxh dGlvbi0+cmRfcHViZGVzYyk7CiAJaWYgKHJlbGF0aW9uLT5yZF9vcHRpb25zKQpAQCAtNTI3 NSw2ICs1Mjc3LDEzMCBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJl bGF0aW9uKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBSZWxhdGlvbkdldEluZGV4 ZWRBdHRycyAtLSBwYWxsb2MnZCBCaXRtYXBzZXQgb2YgaGVhcCBhdHRycyB0aGlzIGluZGV4 CisgKiByZWZlcmVuY2VzLgorICoKKyAqIEluY2x1ZGVzIGF0dHJpYnV0ZXMgdXNlZCBhcyBz aW1wbGUga2V5IGNvbHVtbnMsIElOQ0xVREUgY29sdW1ucywgaW5zaWRlCisgKiBleHByZXNz aW9uIGNvbHVtbnMsIGFuZCBpbnNpZGUgdGhlIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlLiAg QXR0cmlidXRlCisgKiBudW1iZXJzIHVzZSB0aGUgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciBvZmZzZXQgY29udmVudGlvbiBzbworICogdGhhdCBzeXN0ZW0gYXR0cmli dXRlcyBhcmUgcmVwcmVzZW50YWJsZSBhbG9uZ3NpZGUgdXNlciBhdHRyaWJ1dGVzLgorICoK KyAqIFRoZSBmdW5jdGlvbiBidWlsZHMgdXAgdGhlIGJpdG1hcCBmcm9tOgorICogICAtIHJk X2luZGV4LT5pbmRrZXkgICAgICAgICAgIChrZXlzICsgSU5DTFVERSkKKyAqICAgLSBSZWxh dGlvbkdldEluZGV4RXhwcmVzc2lvbnMgKHBhcnNlZCBleHByZXNzaW9uIHRyZWVzLCBhbHJl YWR5IGNhY2hlZCkKKyAqICAgLSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlICAgKHBhcnNl ZCBwcmVkaWNhdGUgdHJlZSwgYWxyZWFkeSBjYWNoZWQpCisgKiBhbmQgY2FjaGVzIGEgY29w eSBpbiByZF9pbmRleGVkYXR0ciwgd2hpY2ggbGl2ZXMgaW4gcmRfaW5kZXhjeHQuCisgKgor ICogVGhlIHJldHVybmVkIEJpdG1hcHNldCBpcyBhbGxvY2F0ZWQgaW4gdGhlIGNhbGxlcidz IGN1cnJlbnQgbWVtb3J5CisgKiBjb250ZXh0OyB0aGUgY2FsbGVyIG93bnMgaXQgYW5kIG11 c3QgYm1zX2ZyZWUgd2hlbiBkb25lLiAgV2UgbmV2ZXIgaGFuZAorICogb3V0IGEgYm9ycm93 ZWQgcG9pbnRlciB0byB0aGUgY2FjaGVkIGNvcHkgYmVjYXVzZSByZWxjYWNoZSBpbnZhbGlk YXRpb24KKyAqIGNhbiByZWJ1aWxkIHJkX2luZGV4Y3h0IGluIHBsYWNlIGV2ZW4gd2hpbGUg YSByZWZjb3VudCBpcyBoZWxkLgorICoKKyAqIENhbGxlciBtdXN0IGhvbGQgYW4gb3BlbiBs b2NrIG9uIHRoZSBpbmRleCByZWxhdGlvbi4KKyAqLworQml0bWFwc2V0ICoKK1JlbGF0aW9u R2V0SW5kZXhlZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKQoreworCUJpdG1hcHNldCAgKmF0 dHJzID0gTlVMTDsKKwlGb3JtX3BnX2luZGV4IGluZGV4U3RydWN0OworCUxpc3QJICAgKmlu ZGV4cHJzOworCUxpc3QJICAgKmluZHByZWQ7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisK KwlBc3NlcnQoaW5kZXhSZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX0lOREVYIHx8 CisJCSAgIGluZGV4UmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05F RF9JTkRFWCk7CisKKwkvKiBGYXN0IHBhdGg6IHJldHVybiBhIGNvcHkgb2YgdGhlIGNhY2hl ZCBiaXRtYXAuICovCisJaWYgKGluZGV4UmVsLT5yZF9pbmRhdHRyICE9IE5VTEwpCisJCXJl dHVybiBibXNfY29weShpbmRleFJlbC0+cmRfaW5kYXR0cik7CisKKwlpbmRleFN0cnVjdCA9 IGluZGV4UmVsLT5yZF9pbmRleDsKKworCS8qCisJICogRHVyaW5nIHZlcnkgZWFybHkgYm9v dHN0cmFwIHJkX2luZGV4dHVwbGUgbWF5IG5vdCBiZSBwb3B1bGF0ZWQgeWV0LiBJbgorCSAq IHRoYXQgY2FzZSB3ZSBmYWxsIGJhY2sgdG8ganVzdCB0aGUga2V5IGNvbHVtbnMgd2l0aG91 dCBjYWNoaW5nLgorCSAqLworCWlmIChpbmRleFJlbC0+cmRfaW5kZXh0dXBsZSA9PSBOVUxM KQorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmF0dHM7IGkr KykKKwkJeworCQkJQXR0ck51bWJlcglhdHRybnVtID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52 YWx1ZXNbaV07CisKKwkJCWlmIChhdHRybnVtICE9IDApCisJCQkJYXR0cnMgPSBibXNfYWRk X21lbWJlcihhdHRycywKKwkJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJfQorCQlyZXR1cm4gYXR0cnM7CisJfQorCisJLyoK KwkgKiBLZXkgY29sdW1ucyBhbmQgSU5DTFVERSAoY292ZXJpbmcpIGNvbHVtbnMuICBJTkNM VURFIGNvbHVtbnMgbXVzdCBiZQorCSAqIGNvdW50ZWQ6IHRoZWlyIHZhbHVlcyBhcmUgc3Rv cmVkIGluIHRoZSBpbmRleCBsZWFmIGFuZCBzZXJ2ZWQgYnkKKwkgKiBpbmRleC1vbmx5IHNj YW5zLCBzbyBhbiB1cGRhdGUgdGhhdCBjaGFuZ2VzIGFuIElOQ0xVREUgY29sdW1uIG11c3QK KwkgKiBpbnNlcnQgYSBmcmVzaCBpbmRleCBlbnRyeSAob3IgYmUgZGlzcXVhbGlmaWVkIGZy b20gc3RheWluZworCSAqIEhPVC1pbmRleGVkKSBleGFjdGx5IGFzIGZvciBhIGtleSBjb2x1 bW4uICBUaGlzIG1hdGNoZXMgdGhlIGhlYXAtbGV2ZWwKKwkgKiBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcCguLi4sIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQpLCB3aGljaCBhbHNv CisJICogdW5pb25zIGFsbCBpbmRuYXR0cy4gIEV4cHJlc3Npb24gYW5kIHBhcnRpYWwtcHJl ZGljYXRlIGNvbHVtbnMgYXJlCisJICogYWRkZWQgYmVsb3cuCisJICovCisJZm9yIChpbnQg aSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmF0dHM7IGkrKykKKwl7CisJCUF0dHJOdW1i ZXIJYXR0cm51bSA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCisJCS8qIGF0 dG51bSAwIG1lYW5zICJleHByZXNzaW9uIjsgdGhvc2UgYXR0cnMgYXJlIHBpY2tlZCB1cCBi ZWxvdy4gKi8KKwkJaWYgKGF0dHJudW0gIT0gMCkKKwkJCWF0dHJzID0gYm1zX2FkZF9tZW1i ZXIoYXR0cnMsCisJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyKTsKKwl9CisKKwkvKgorCSAqIEV4cHJlc3Npb24gY29sdW1ucyBhbmQg cGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1ucy4gIERlbGliZXJhdGVseQorCSAqIGRv IE5PVCB1c2UgUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zKCkvUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZSgpCisJICogaGVyZSwgZm9yIHRoZSBzYW1lIHJlYXNvbiBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcCBhdm9pZHMgdGhlbTogdGhvc2UKKwkgKiBmdW5jdGlvbnMgcnVu IGV2YWxfY29uc3RfZXhwcmVzc2lvbnMoKSwgd2hpY2ggbmVlZHMgYSBzbmFwc2hvdCB3ZSBt YXkKKwkgKiBub3QgaGF2ZSwgYW5kIGNhbiBjb25zdC1mb2xkIGF3YXkgYSBWYXIgcmVmZXJl bmNlIChlLmcuIGEgQ0FTRSB3aXRoIGEKKwkgKiBzdGF0aWNhbGx5LWRlY2lkYWJsZSBicmFu Y2gpLCBjYXVzaW5nIHRoaXMgYml0bWFwIHRvIHVuZGVyLXJlcG9ydCBhbgorCSAqIGF0dHJp YnV0ZSB0aGF0IHJkX2luZGV4ZWRhdHRyL3JkX2V4cHJpbmRleGF0dHIgKGJ1aWx0IGZyb20g dGhlIHNhbWUgcmF3CisJICogY2F0YWxvZyB0ZXh0KSBzdGlsbCByZWNvcmQuICBQYXJzZSB0 aGUgcmF3IHN0b3JlZCB0cmVlcyBpbnN0ZWFkLCBzbworCSAqIHRoaXMgZnVuY3Rpb24ncyBy ZXN1bHQgc3RheXMgYSBzdXBlcnNldC1jb25zaXN0ZW50IG1hdGNoIHdpdGggdGhvc2UuCisJ ICovCisJeworCQlEYXR1bQkJZGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKworCQlkYXR1bSA9 IGhlYXBfZ2V0YXR0cihpbmRleFJlbC0+cmRfaW5kZXh0dXBsZSwgQW51bV9wZ19pbmRleF9p bmRleHBycywKKwkJCQkJCQkgR2V0UGdJbmRleERlc2NyaXB0b3IoKSwgJmlzbnVsbCk7CisJ CWlmICghaXNudWxsKQorCQl7CisJCQlpbmRleHBycyA9IChMaXN0ICopIHN0cmluZ1RvTm9k ZShUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKSk7CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9k ZSAqKSBpbmRleHBycywgMSwgJmF0dHJzKTsKKwkJfQorCisJCWRhdHVtID0gaGVhcF9nZXRh dHRyKGluZGV4UmVsLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZHByZWQsCisJ CQkJCQkJIEdldFBnSW5kZXhEZXNjcmlwdG9yKCksICZpc251bGwpOworCQlpZiAoIWlzbnVs bCkKKwkJeworCQkJaW5kcHJlZCA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShUZXh0RGF0dW1H ZXRDU3RyaW5nKGRhdHVtKSk7CisJCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpbmRwcmVk LCAxLCAmYXR0cnMpOworCQl9CisJfQorCisJLyoKKwkgKiBDYWNoZSBhIGNvcHkgaW5zaWRl IHJkX2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgYXJlIGNoZWFwLiAgVGhlCisJICog Y2FjaGVkIGJpdG1hcCBpcyBmcmVlZCBhbG9uZyB3aXRoIHJkX2luZGV4Y3h0IG9uIHJlbGNh Y2hlIHJlYnVpbGQsIHNvCisJICogaXQncyBzYWZlIHRvIHN0YXNoIGhlcmUuCisJICovCisJ aWYgKGluZGV4UmVsLT5yZF9pbmRleGN4dCAhPSBOVUxMKQorCXsKKwkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsLT5yZF9pbmRleGN4dCk7CisJCWluZGV4UmVs LT5yZF9pbmRhdHRyID0gYm1zX2NvcHkoYXR0cnMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3h0KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8qCiAgKiBSZWxhdGlv bkdldEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0cmlidXRl IG51bWJlcnMKICAqCkBAIC01MzEzLDYgKzU0MzksNyBAQCBCaXRtYXBzZXQgKgogUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1h cEtpbmQgYXR0cktpbmQpCiB7CiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVt bnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpleHByaW5kZXhhdHRyczsg LyogY29sdW1ucyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLwogCUJpdG1h cHNldCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAq LwogCUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGlj YSBpZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyBy ZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KQEAgLTUzMzksNiArNTQ2Niw4IEBAIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBL aW5kIGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhl ZGF0dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJl dHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJ TkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxh dGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1Is ICJ1bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzgzLDYgKzU1 MTIsNyBAQCByZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaW5kZXhlZGF0dHJz ID0gTlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWV4cHJpbmRleGF0dHJzID0g TlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CiAJCU9pZAkJCWluZGV4T2lk ID0gbGZpcnN0X29pZChsKTsKQEAgLTU0ODcsNiArNTYxNywyOCBAQCByZXN0YXJ0OgogCQkv KiBDb2xsZWN0IGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAq LwogCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOwogCisJCS8q CisJCSAqIElmIHRoaXMgaW5kZXggZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24sIHJlY29yZCBl dmVyeSBoZWFwIGF0dHJpYnV0ZQorCQkgKiBpdCByZWZlcmVuY2VzIChrZXkgY29sdW1ucywg ZXhwcmVzc2lvbiB2YXJzLCBwcmVkaWNhdGUgdmFycykgaW4KKwkJICogZXhwcmluZGV4YXR0 cnMuICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgZGlzcXVhbGlmaWVzIHRoZQorCQkgKiBI T1QtaW5kZXhlZCBwYXRoIGZvciBhbiBVUERBVEUgdGhhdCB0b3VjaGVzIG9uZSBvZiB0aGVz ZSwgYmVjYXVzZQorCQkgKiBleHByZXNzaW9uLWF3YXJlIHNlbGVjdGl2ZSBpbmRleCBtYWlu dGVuYW5jZSBpcyBub3QgaW1wbGVtZW50ZWQKKwkJICogeWV0LgorCQkgKi8KKwkJaWYgKGlu ZGV4RXhwcmVzc2lvbnMgIT0gTlVMTCkKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4 RGVzYy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQl7CisJCQkJaW50CQkJYXR0cm51 bSA9IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCQlpZiAo YXR0cm51bSAhPSAwKQorCQkJCQlleHByaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGV4 cHJpbmRleGF0dHJzLAorCQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhw cmVzc2lvbnMsIDEsICZleHByaW5kZXhhdHRycyk7CisJCQlwdWxsX3ZhcmF0dG5vcyhpbmRl eFByZWRpY2F0ZSwgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJfQorCiAJCWluZGV4X2Nsb3Nl KGluZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CiAKQEAgLTU1MTUsMTQgKzU2Njcs MjcgQEAgcmVzdGFydDoKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUo aW5kZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsKKwkJYm1zX2Zy ZWUoZXhwcmluZGV4YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKIAkvKgotCSAq IFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJp emluZyBpbmRleGVzLiBUaGVuCi0JICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCi0JICogYXR0cmlidXRlcy4K KwkgKiBSZWNvcmQgd2hpY2ggYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1 bW1hcml6aW5nIGluZGV4ZXMsIHNvCisJICogSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpF RCByZXBvcnRzIGNvbHVtbnMgd2hvc2Ugc29sZSBpbmRleGVzIGFyZQorCSAqIHN1bW1hcml6 aW5nIG9uZXMsIHRoZW4gZm9sZCB0aG9zZSBjb2x1bW5zIGludG8gaW5kZXhlZGF0dHJzIGFz IHdlbGwuCisJICoKKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIG11c3QgaW5jbHVk ZSBzdW1tYXJpemluZy1pbmRleCBjb2x1bW5zIGZvcgorCSAqIHRoZSBIT1QtaW5kZXhlZCB3 cml0ZSBwYXRoOiBpdCBjb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIG92ZXIKKwkg KiB0aGlzIGJpdG1hcCB0byBidWlsZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlcywgYW5kIG9ubHkKKwkgKiBtYWludGFpbnMgaW5kZXhlcyB3aGVuIHRoYXQgc2V0 IGlzIG5vbi1lbXB0eSAob3IgdGhlIHVwZGF0ZSBpcworCSAqIG5vbi1IT1QpLiAgQSBjaGFu Z2UgdG8gYSBjb2x1bW4gaW5kZXhlZCBvbmx5IGJ5IGEgc3VtbWFyaXppbmcgaW5kZXgKKwkg KiBtdXN0IHRoZXJlZm9yZSBhcHBlYXIgaW4gdGhlIGJpdG1hcCBzbyB0aGUgc3VtbWFyaXpp bmcgaW5kZXggZ2V0cyBpdHMKKwkgKiBibG9jayBzdW1tYXJ5IHJlZnJlc2hlZC4gIEhlYXBV cGRhdGVIb3RBbGxvd2FibGUncyBhbGxfc3VtbWFyaXppbmcKKwkgKiBjaGVjayBzdGlsbCBr ZWVwcyBzdWNoIGFuIHVwZGF0ZSBvbiB0aGUgY2xhc3NpYy1IT1QgcGF0aCAoaXQgc3RheXMK KwkgKiBjbGFzc2ljIEhPVCwgc2luY2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCAt LSBzdW1tYXJpemluZy1vbmx5IC0tCisJICogaXMgYSBzdXBlcnNldCBvZiB0aGUgbW9kaWZp ZWQgYXR0cmlidXRlcyksIGFuZCB0aGUgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBpbnNlcnRz IHVuY29uZGl0aW9uYWxseSB2aWEgaXRzIGlpX1N1bW1hcml6aW5nIGZsYWcuCiAJICovCiAJ c3VtbWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywgaW5k ZXhlZGF0dHJzKTsKIAlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhlZGF0 dHJzLCBzdW1tYXJpemVkYXR0cnMpOwpAQCAtNTUzOSw2ICs1NzA0LDggQEAgcmVzdGFydDoK IAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9u LT5yZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0g TlVMTDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CisJcmVsYXRp b24tPnJkX2V4cHJpbmRleGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3Bp ZXMgb2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9u YWxseQpAQCAtNTU1Myw2ICs1NzIwLDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRh dHRyID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIgPSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVk YXR0ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJp bmRleGF0dHIgPSBibXNfY29weShleHByaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0 dHJzdmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBA IC01NTY5LDYgKzU3MzcsNzIgQEAgcmVzdGFydDoKIAkJCXJldHVybiBpbmRleGVkYXR0cnM7 CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1t YXJpemVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJ CXJldHVybiBleHByaW5kZXhhdHRyczsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOworCQkJcmV0dXJuIE5VTEw7CisJfQor fQorCisvKgorICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkgLS0gYm9ycm93 aW5nIHZhcmlhbnQgb2YKKyAqCQlSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcAorICoKKyAq IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSByZWxjYWNoZS1vd25lZCBiaXRtYXAgZm9yIHRo ZSBnaXZlbiBhdHRyS2luZAorICogd2l0aG91dCBtYWtpbmcgYSBkZWZlbnNpdmUgY29weS4g IFRoaXMgaXMgYSBob3QtcGF0aCBvcHRpbWl6YXRpb24gZm9yCisgKiByZWFkLW9ubHkgY2Fs bGVycyB0aGF0IHBlcmZvcm0gc2V0IG9wZXJhdGlvbnMgbGlrZSBibXNfb3ZlcmxhcCwKKyAq IGJtc19pc19zdWJzZXQsIGJtc19lcXVhbCwgb3IgYm1zX251bV9tZW1iZXJzIGFuZCBuZXZl ciBtdXRhdGUgdGhlCisgKiByZXR1cm5lZCBiaXRtYXAuICBUaGUgcmVzdWx0IGlzIGNvbmNl cHR1YWxseSBgY29uc3QgQml0bWFwc2V0ICpgOyBjYWxsZXJzCisgKiBtdXN0IG5vdCBwYXNz IGl0IHRvIGFueXRoaW5nIHRoYXQgY291bGQgZnJlZSBvciBtb2RpZnkgdGhlIHVuZGVybHlp bmcKKyAqIG1lbW9yeSAoZS5nLiwgYm1zX2FkZF9tZW1iZXIsIGJtc19pbnRfbWVtYmVycywg Ym1zX2ZyZWUpLgorICoKKyAqIExpZmV0aW1lOiB0aGUgcG9pbnRlciBpcyB2YWxpZCBvbmx5 IHVudGlsIHRoZSBuZXh0IGV2ZW50IHRoYXQgY291bGQKKyAqIHRyaWdnZXIgYSByZWxjYWNo ZSBpbnZhbGlkYXRpb24gb24gYHJlbGF0aW9uYC4gIENhbGxlcnMgbXVzdCBub3QgaW52b2tl CisgKiBhbnkgY29kZSB0aGF0IG9wZW5zIGEgcmVsYXRpb24sIHJ1bnMgY2F0YWxvZyBsb29r dXBzLCBvciBvdGhlcndpc2UKKyAqIGFjY2VwdHMgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGJl dHdlZW4gdGhlIGZldGNoIGFuZCB0aGUgbGFzdCB1c2UuCisgKgorICogRm9yIHRoZSBjb21t b24gY2FzZSB0aGUgcmVsY2FjaGUgZW50cnkncyBhdHRyaWJ1dGUgYml0bWFwcyBhcmUgYWxy ZWFkeQorICogY29tcHV0ZWQgKHJkX2F0dHJzdmFsaWQgaXMgdHJ1ZSkuICBXaGVuIHRoZXkg YXJlbid0LCB3ZSBnbyB0aHJvdWdoCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCB0 byBwb3B1bGF0ZSB0aGUgY2FjaGUgKHdoaWNoIGNvc3RzIG9uZQorICogdGhyb3dhd2F5IGJt c19jb3B5IG9uIGZpcnN0IHVzZSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBjYWNoZWQgcG9pbnRl ciBvbgorICogdGhlIHNlY29uZCBwYXNzLiAgVGhlIGZpcnN0LXVzZSBwYXRoIGlzIHJhcmUg YW5kIG5ldmVyIG9uIHRoZSBiZW5jaCBob3QKKyAqIHBhdGgsIHNvIHRoZSBzaW1wbGljaXR5 IGlzIHByZWZlcnJlZCBvdmVyIG9wZW4tY29kaW5nIHRoZSBwb3B1bGF0ZS1vbmx5CisgKiB2 YXJpYW50LgorICovCitjb25zdCBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0 cktpbmQpCit7CisJaWYgKCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwl7CisJCUJpdG1h cHNldCAgKnBvcHVsYXRlZDsKKworCQkvKiBQb3B1bGF0ZSByZF8qYXR0ciBmaWVsZHM7IGRp c2NhcmQgdGhlIHJldHVybmVkIGNvcHkuICovCisJCXBvcHVsYXRlZCA9IFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBhdHRyS2luZCk7CisJCWJtc19mcmVlKHBvcHVs YXRlZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zCisJCSAqIE5VTEwgd2l0aG91dCBz ZXR0aW5nIHJkX2F0dHJzdmFsaWQuICBNaXJyb3IgdGhhdCBoZXJlLgorCQkgKi8KKwkJaWYg KCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXN3 aXRjaCAoYXR0cktpbmQpCisJeworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0tFWToKKwkJ CXJldHVybiByZWxhdGlvbi0+cmRfa2V5YXR0cjsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1B UF9QUklNQVJZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfcGthdHRyOworCQljYXNl IElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+ cmRfaWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1 cm4gcmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQ X1NVTU1BUklaRUQ6CisJCQlyZXR1cm4gcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyOwor CQljYXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gcmVsYXRp b24tPnJkX2V4cHJpbmRleGF0dHI7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5r bm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpAQCAtNjUw OCw2ICs2NzQyLDcgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJ CXJlbC0+cmRfcGFydGNoZWNrY3h0ID0gTlVMTDsKIAkJcmVsLT5yZF9pbmRleHBycyA9IE5J TDsKIAkJcmVsLT5yZF9pbmRwcmVkID0gTklMOworCQlyZWwtPnJkX2luZGF0dHIgPSBOVUxM OwogCQlyZWwtPnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5V TEw7CiAJCXJlbC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4 IDc5MjQwMzMzNTMwLi4xN2M3NmUzN2NkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTI5LDcg KzI5LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQYXRoIEluZGV4UGF0aDsKIC8qIExpa2V3 aXNlLCB0aGlzIGZpbGUgc2hvdWxkbid0IGRlcGVuZCBvbiBleGVjbm9kZXMuaC4gKi8KIHR5 cGVkZWYgc3RydWN0IEluZGV4SW5mbyBJbmRleEluZm87CiAKLQogLyoKICAqIFByb3BlcnRp ZXMgZm9yIGFtcHJvcGVydHkgQVBJLiAgVGhpcyBsaXN0IGNvdmVycyBwcm9wZXJ0aWVzIGtu b3duIHRvIHRoZQogICogY29yZSBjb2RlLCBidXQgYW4gaW5kZXggQU0gY2FuIGRlZmluZSBp dHMgb3duIHByb3BlcnRpZXMsIGJ5IG1hdGNoaW5nIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmlu ZGV4IDJkYmZhZDkyMTEzLi4yMzY3NmFlNzFlOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt Mzg0LDExICszODQsNDcgQEAgZXh0ZXJuIFRNX1Jlc3VsdCBoZWFwX2RlbGV0ZShSZWxhdGlv biByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQsCiAJCQkJCQkJIGJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQpOwogZXh0ZXJuIHZvaWQgaGVhcF9maW5pc2hf c3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAq dGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVs YXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKKworLyoKKyAqIEhlYXBVcGRh dGVJbmRleE1vZGUgLS0KKyAqCVRocmVlLXZhbHVlZCBjbGFzc2lmaWNhdGlvbiByZXR1cm5l ZCBieSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgdGhhdAorICoJdGVsbHMgaGVhcF91cGRh dGUoKSB3aGV0aGVyIGEgSE9UIHVwZGF0ZSBpcyBwZXJtaXR0ZWQgZm9yIHRoaXMgdHVwbGUg YW5kLAorICoJaWYgc28sIHdoZXRoZXIgdGhlIGluZGV4ZXMgbWF5IGJlIG1haW50YWluZWQg c2VsZWN0aXZlbHkuCisgKgorICoJSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAqCQlIT1Qg aXMgbm90IGFsbG93ZWQ7IHRoZSBuZXcgdHVwbGUgbXVzdCBnbyBvbiBpdHMgb3duIFRJRCBh bmQgZXZlcnkKKyAqCQlpbmRleCByZWNlaXZlcyBhIGZyZXNoIGVudHJ5LiAgVGhpcyBpcyB0 aGUgY2xhc3NpYyBwcmUtSE9ULWluZGV4ZWQKKyAqCQliZWhhdmlvciBmb3IgdXBkYXRlcyB0 aGF0IG1vZGlmeSBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZS4KKyAqCisg KglIRUFQX0hFQVBfT05MWV9VUERBVEUKKyAqCQlDbGFzc2ljIEhPVCB1cGRhdGU6IG5vIG5v bi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkIChvbmx5CisgKgkJc3Vt bWFyaXppbmcgb25lcywgaWYgYW55KSwgc28gbm8gaW5kZXggbmVlZHMgYSBuZXcgZW50cnku CisgKgorICoJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFCisgKgkJSE9UIHdpdGggc2Vs ZWN0aXZlIGluZGV4IHVwZGF0ZTogYXQgbGVhc3Qgb25lIG5vbi1zdW1tYXJpemluZyBpbmRl eCdzCisgKgkJYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0aGUgbmV3IHR1cGxlIGNhbiBzdGls bCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqCQl0aGUgc2FtZSBwYWdlOyBvbmx5IHRoZSBp bmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZCByZWNlaXZlIGEgbmV3CisgKgkJZW50 cnkuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGhlYXBfdXBkYXRlKCkgc3RpbGwgZmFsbHMgYmFj ayB0byBhCisgKgkJbm9uLUhPVCB1cGRhdGUgaWYgdGhlIG5ldyB0dXBsZSBkb2VzIG5vdCBm aXQgb24gdGhlIHBhZ2UuCisgKgorICoJQ2FsbGVycyBzaG91bGQgc3BlbGwgdGhlIGV4YWN0 IG1vZGUgdGhleSBjYXJlIGFib3V0LiAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAqCWlz IHRoZSB6ZXJvL2ZhbHNlIHZhbHVlIGFuZCBkb3VibGVzIGFzIGEgZGlzdGluZ3Vpc2hlZCAi bm8gSE9UIiBzZW50aW5lbAorICoJKGUuZy4gdGVzdGluZyBob3RfbW9kZSAhPSBIRUFQX1VQ REFURV9BTExfSU5ERVhFUyksIGJ1dCB0aGUgdmFsdWVzIGFyZSBub3QKKyAqCW1lYW5pbmdm dWwgYXMgYSBudW1lcmljIG9yZGVyaW5nLgorICovCit0eXBlZGVmIGVudW0gSGVhcFVwZGF0 ZUluZGV4TW9kZQoreworCUhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTID0gMCwKKwlIRUFQX0hF QVBfT05MWV9VUERBVEUgPSAxLAorCUhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSA9IDIs Cit9IEhlYXBVcGRhdGVJbmRleE1vZGU7CisKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKIAkJ CQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwgQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMs CiAJCQkJCQkJIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCQkJCQkgVE1f RmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCi0JCQkJ CQkJIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBjb25zdCBib29sIGhv dF9hbGxvd2VkKTsKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0 cnMsCisJCQkJCQkJIEhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGUpOwogZXh0ZXJuIFRN X1Jlc3VsdCBoZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0 dXBsZSwKIAkJCQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9j a1dhaXRQb2xpY3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVz LApAQCAtNDIzLDcgKzQ1OSw3IEBAIGV4dGVybiBib29sIGhlYXBfdHVwbGVfbmVlZHNfZXZl bnR1YWxfZnJlZXplKEhlYXBUdXBsZUhlYWRlciB0dXBsZSk7CiBleHRlcm4gdm9pZCBzaW1w bGVfaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXApOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJ dGVtUG9pbnRlckRhdGEgKnRpZCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwKLQkJCQkJ CQkgICBIZWFwVHVwbGUgdHVwLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcyk7 CisJCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgYm9vbCAqdXBkYXRlX2FsbF9pbmRleGVzKTsK IAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0 aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSk7CkBA IC00MzQsNyArNDcwLDEwIEBAIGV4dGVybiB2b2lkIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNl dChJbmRleEZldGNoVGFibGVEYXRhICpzY2FuKTsKIGV4dGVybiB2b2lkIGhlYXBhbV9pbmRl eF9mZXRjaF9lbmQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nhbik7CiBleHRlcm4gYm9vbCBo ZWFwX2hvdF9zZWFyY2hfYnVmZmVyKEl0ZW1Qb2ludGVyIHRpZCwgUmVsYXRpb24gcmVsYXRp b24sCiAJCQkJCQkJCSAgIEJ1ZmZlciBidWZmZXIsIFNuYXBzaG90IHNuYXBzaG90LCBIZWFw VHVwbGUgaGVhcFR1cGxlLAotCQkJCQkJCQkgICBib29sICphbGxfZGVhZCwgYm9vbCBmaXJz dF9jYWxsKTsKKwkJCQkJCQkJICAgYm9vbCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCwK KwkJCQkJCQkJICAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVjaywKKwkJCQkJCQkJICAgdWlu dDggKmNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkgICBib29sICpwcmVmaXhfYWxsX2RlYWQp OwogZXh0ZXJuIGJvb2wgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZl dGNoVGFibGVEYXRhICpzY2FuLAogCQkJCQkJCQkJIEl0ZW1Qb2ludGVyIHRpZCwgU25hcHNo b3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgKmhl YXBfY29udGludWUsCkBAIC00NjQsOCArNTAzLDkgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKIAogLyogaW4g aGVhcC9oZWFwYW0uYyAqLwotZXh0ZXJuIGJvb2wgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMs Ci0JCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSk7CisKK2V4dGVybiBIZWFwVXBk YXRlSW5kZXhNb2RlIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24s CisJCQkJCQkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycyk7CiBl eHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCAyZWEwNmE2N2E2My4uZmU0 NDY5MTc4YWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTM0LDYgKzEzNCw0NSBAQCB0 eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhCiAJICogcGVybWl0dGVkLgogCSAq LwogCXVpbnQzMgkJZmxhZ3M7CisKKwkvKgorCSAqIFNpZGUgY2hhbm5lbCBmb3IgdGFibGUg QU1zIHdob3NlIHVwZGF0ZSBjaGFpbnMgY2FuIHJlYWNoIGEgZGlmZmVyZW50CisJICogc2V0 IG9mIGluZGV4LWtleSB2YWx1ZXMgdGhhbiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkgcmVj b3JkZWQgKGhlYXAncworCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNoYWlucykuICBT ZXQgdHJ1ZSBieSB0aGUgdGFibGUgQU0gd2hlbiB0aGUKKwkgKiB3YWxrIHRvIHRoZSBsaXZl IHR1cGxlIGNyb3NzZWQgYSBIT1QvU0lVIGhvcCBhZnRlciB0aGUgZW50cnkncyBvd24KKwkg KiB0dXBsZSwgbWVhbmluZyB0aGUgYXJyaXZpbmcgZW50cnkncyBzdG9yZWQga2V5IG1heSBu byBsb25nZXIgbWF0Y2ggdGhlCisJICogbGl2ZSB0dXBsZSBhbmQgdGhlIGluZGV4LWFjY2Vz cyBsYXllciBtdXN0IHJlY2hlY2sgaXQuICBMZWZ0IGZhbHNlIHdoZW4KKwkgKiBubyBzdWNo IGhvcCB3YXMgY3Jvc3NlZCAodGhlIGVudHJ5IGlzIGRlZmluaXRlbHkgY3VycmVudCksIGFu ZCBhbHdheXMKKwkgKiBmYWxzZSBmb3IgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMuCisJICov CisJYm9vbAkJeHNfaG90X2luZGV4ZWRfcmVjaGVjazsKKworCS8qCisJICogQ29tcGFuaW9u IHRvIHhzX2hvdF9pbmRleGVkX3JlY2hlY2suICB4c19ob3RfaW5kZXhlZF9jcm9zc2VkIGlz IHRoZQorCSAqIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMg dGhlIHdhbGsgY3Jvc3NlZCBhZnRlciB0aGUKKwkgKiBlbnRyeSdzIG93biB0dXBsZSwgb3Zl ciBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIChiaXQgYXR0bnVtLTEgZm9yIGEKKwkgKiAxLWJh c2VkIGF0dG51bSkuICBUaGUgaW5kZXgtYWNjZXNzIGxheWVyIHRlc3RzIGl0IGFnYWluc3Qg dGhlIGFycml2aW5nCisJICogaW5kZXgncyBrZXkgY29sdW1ucyB0byBqdWRnZSBzdGFsZW5l c3Mgd2l0aG91dCBhIGtleSBjb21wYXJpc29uOiBhbnkKKwkgKiBvdmVybGFwIG1lYW5zIGEg Y3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUgb2YgdGhlIGluZGV4J3MgaW5wdXRzLCBzbyB0aGUK KwkgKiBlbnRyeSBpcyBzdGFsZS4gIFRoZSB1bmlvbiBpcyBjb21wbGV0ZSAoZXZlcnkgY3Jv c3NlZCBsaXZlIGhvcCBhbmQKKwkgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGNvbnRyaWJ1 dGVzIGl0cyBiaXRtYXAsIGFuZCBjb2xsYXBzZSBvbmx5CisJICogcmVjbGFpbXMgbWVtYmVy cyBzdWJzdW1lZCBieSBzdXJ2aXZpbmcgaG9wcyksIHNvIGRpc2pvaW50bmVzcyByZWxpYWJs eQorCSAqIG1lYW5zIGZyZXNoLiAgSXQgaXMgTlVMTCBmb3IgQU1zIHdpdGhvdXQgc3VjaCBj aGFpbnMgYW5kIGlzIHNpemVkIGJ5CisJICogdGhlIHRhYmxlIEFNIGZvciB0aGUgaGVhcCBy ZWxhdGlvbidzIGNvbHVtbiBjb3VudC4KKwkgKi8KKwl1aW50OAkgICAqeHNfaG90X2luZGV4 ZWRfY3Jvc3NlZDsKKworCS8qCisJICogU2V0IGJ5IHRoZSB0YWJsZSBBTSB3aGVuIGl0IHJl dHVybnMgYSB0dXBsZTogdHJ1ZSBpZmYgZXZlcnkgY2hhaW4KKwkgKiBtZW1iZXIgdGhlIHdh bGsgc2tpcHBlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHJldHVybmVkICh2aXNpYmxlKSB0dXBs ZSBpcworCSAqIGRlYWQgdG8gYWxsIHRyYW5zYWN0aW9ucyAoYmVsb3cgdGhlIGdsb2JhbCB4 bWluIGhvcml6b24pLiAgQ29tYmluZWQKKwkgKiB3aXRoIGEgc3RhbGUgdmVyZGljdCAodGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFwcGVkIHRoZQorCSAqIGluZGV4J3Mg a2V5IGNvbHVtbnMpLCB0aGlzIGxldHMgdGhlIGluZGV4LWFjY2VzcyBsYXllcgorCSAqIGtp bGwgdGhlIGFycml2aW5nIGxlYWY6IG5vIHNuYXBzaG90IGNhbiByZWFjaCBhIG1hdGNoaW5n IHZlcnNpb24KKwkgKiB0aHJvdWdoIGl0LCBzbyBpdCBpcyByZWR1bmRhbnQuICBBTXMgd2l0 aG91dCBzdWNoIGNoYWlucyBsZWF2ZSBpdAorCSAqIGZhbHNlLgorCSAqLworCWJvb2wJCXhz X3ByZWZpeF9hbGxfZGVhZDsKIH0gSW5kZXhGZXRjaFRhYmxlRGF0YTsKIAogc3RydWN0IElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKQEAgLTE1NCw2ICsxOTMsMTMgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAlzdHJ1Y3QgU2NhbktleURhdGEgKmtleURhdGE7 CS8qIGFycmF5IG9mIGluZGV4IHF1YWxpZmllciBkZXNjcmlwdG9ycyAqLwogCXN0cnVjdCBT Y2FuS2V5RGF0YSAqb3JkZXJCeURhdGE7CS8qIGFycmF5IG9mIG9yZGVyaW5nIG9wIGRlc2Ny aXB0b3JzICovCiAJYm9vbAkJeHNfd2FudF9pdHVwOwkvKiBjYWxsZXIgcmVxdWVzdHMgaW5k ZXggdHVwbGVzICovCisJYm9vbAkJeHNfaW5kZXhfb25seTsJLyogY2FsbGVyIGlzIGFuIGlu ZGV4LW9ubHkgc2NhbiB0aGF0IG1heQorCQkJCQkJCQkgKiByZXR1cm4gdHVwbGVzIHdpdGhv dXQgZmV0Y2hpbmcgdGhlIGhlYXA7CisJCQkJCQkJCSAqIEFNcyBtdXN0IHJldGFpbiBsZWFm LXBhZ2UgcGlucyBmb3Igc3VjaAorCQkJCQkJCQkgKiBzY2FucyAoVk0gYWxsLXZpc2libGUg LyBUSUQtcmVjeWNsZSByYWNlKSwKKwkJCQkJCQkJICogd2hlcmVhcyBhIHBsYWluIHNjYW4g dGhhdCBzZXRzIHhzX3dhbnRfaXR1cAorCQkJCQkJCQkgKiBvbmx5IHRvIGluc3BlY3QgdGhl IGluZGV4IHR1cGxlIHN0aWxsCisJCQkJCQkJCSAqIGZldGNoZXMgdGhlIGhlYXAgYW5kIG1h eSBkcm9wIHBpbnMgKi8KIAlib29sCQl4c190ZW1wX3NuYXA7CS8qIHVucmVnaXN0ZXIgc25h cHNob3QgYXQgc2NhbiBlbmQ/ICovCiAKIAkvKiBzaWduYWxpbmcgdG8gaW5kZXggQU0gYWJv dXQga2lsbGluZyBpbmRleCB0dXBsZXMgKi8KQEAgLTE4OSw2ICsyMzUsMjAgQEAgdHlwZWRl ZiBzdHJ1Y3QgSW5kZXhTY2FuRGVzY0RhdGEKIAogCWJvb2wJCXhzX3JlY2hlY2s7CQkvKiBU IG1lYW5zIHNjYW4ga2V5cyBtdXN0IGJlIHJlY2hlY2tlZCAqLwogCisJLyoKKwkgKiBUIG1l YW5zIHRoZSBpbmRleCBlbnRyeSB0aGF0IHJlYWNoZWQgeHNfaGVhcHRpZCBpcyBzdGFsZTog dGhlIEhPVCBjaGFpbgorCSAqIHdhbGtlZCB0byByZWFjaCB0aGUgdHVwbGUgY3Jvc3NlZCBh IEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIChIT1QvU0lVKQorCSAqIGhvcCB0aGF0IGNoYW5n ZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXggY292ZXJzLCBzbyB0aGUgYXJyaXZpbmcKKwkg KiBlbnRyeSdzIHN0b3JlZCBrZXkgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUu ICBUaGUgZXhlY3V0b3IKKwkgKiBkcm9wcyBzdWNoIGEgdHVwbGU7IHRoZSByb3cgaXMgcmUt c3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IGluc2VydGVkCisJICogZm9yIHRoZSBuZXcg dmFsdWUuICBVbmxpa2UgeHNfcmVjaGVjayAoc2V0IGJ5IGxvc3N5IEFNcyBzdWNoIGFzIEdp U1QKKwkgKiBhbmQgR0lOKSwgdGhpcyBpcyBjb21wdXRlZCBieSB0aGUgaW5kZXgtYWNjZXNz IGxheWVyIGJ5IHRlc3RpbmcgdGhlCisJICogaGVhcCBBTSdzIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCAoeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCkgYWdhaW5zdAorCSAqIHRoaXMgaW5k ZXgncyBrZXkgY29sdW1uczogYW55IG92ZXJsYXAgbWVhbnMgYSBjcm9zc2VkIGhvcCBjaGFu Z2VkIG9uZQorCSAqIG9mIHRoZSBpbmRleCdzIGlucHV0cywgc28gdGhlIGVudHJ5IGlzIHN0 YWxlLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVkX3N0YWxlOworCiAJLyoKIAkgKiBX aGVuIGZldGNoaW5nIHdpdGggYW4gb3JkZXJpbmcgb3BlcmF0b3IsIHRoZSB2YWx1ZXMgb2Yg dGhlIE9SREVSIEJZCiAJICogZXhwcmVzc2lvbnMgb2YgdGhlIGxhc3QgcmV0dXJuZWQgdHVw bGUsIGFjY29yZGluZyB0byB0aGUgaW5kZXguICBJZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5k ZXggYTk3NzhiMzUyOGQuLmU3YmQ5ZjNlNmZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAg LTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9yZWxzY2FuLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3NkaXIuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvc3lzYXR0ci5oIgogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCkBAIC0yOCw2ICsyOSwxOCBAQAogCiAj ZGVmaW5lIERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKIAorLyoKKyAqIFdo b2xlLXJvdyBzZW50aW5lbCBmb3IgdGhlIGluL291dCBtb2RpZmllZC1hdHRyaWJ1dGVzIHNl dCBvZgorICogdGFibGVfdHVwbGVfdXBkYXRlKCkuICBPbiBpbnB1dCB0aGUgY2FsbGVyIHN1 cHBsaWVzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKyAqIHdob3NlIHZhbHVlcyBjaGFuZ2Vk LiAgQSB0YWJsZSBBTSB0aGF0IHN0b3JlZCB0aGUgbmV3IHR1cGxlIGFzIGFuCisgKiBpbmRl cGVuZGVudCB2ZXJzaW9uIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGUgZXhpc3RpbmcgaW5k ZXggZW50cmllcyAoZm9yCisgKiBoZWFwLCBhIG5vbi1IT1QgdXBkYXRlKSBhZGRzIHRoaXMg d2hvbGUtcm93IGF0dHJpYnV0ZSAoYXR0cmlidXRlIG51bWJlciAwLAorICogRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBjb252ZW50aW9uKSBvbiBvdXRwdXQsIHNpZ25h bGxpbmcgdGhhdAorICogZXZlcnkgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBEaWZmaW5n IHJlYWwgY29sdW1ucyBuZXZlciB5aWVsZHMgYXR0cmlidXRlCisgKiAwLCBzbyBpdCBpcyB1 bmFtYmlndW91cyBhcyB0aGlzIHNlbnRpbmVsLgorICovCisjZGVmaW5lIFRhYmxlVHVwbGVV cGRhdGVBbGxJbmRleGVzCSgwIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cikKKwogLyogR1VDcyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKmRlZmF1bHRfdGFi bGVfYWNjZXNzX21ldGhvZDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHN5bmNocm9uaXpl X3NlcXNjYW5zOwpAQCAtMTI1LDIyICsxMzgsNiBAQCB0eXBlZGVmIGVudW0gVE1fUmVzdWx0 CiAJVE1fV291bGRCbG9jaywKIH0gVE1fUmVzdWx0OwogCi0vKgotICogUmVzdWx0IGNvZGVz IGZvciB0YWJsZV91cGRhdGUoLi4uLCB1cGRhdGVfaW5kZXhlcyouLikuCi0gKiBVc2VkIHRv IGRldGVybWluZSB3aGljaCBpbmRleGVzIHRvIHVwZGF0ZS4KLSAqLwotdHlwZWRlZiBlbnVt IFRVX1VwZGF0ZUluZGV4ZXMKLXsKLQkvKiBObyBpbmRleGVkIGNvbHVtbnMgd2VyZSB1cGRh dGVkIChpbmNsLiBUSUQgYWRkcmVzc2luZyBvZiB0dXBsZSkgKi8KLQlUVV9Ob25lLAotCi0J LyogQSBub24tc3VtbWFyaXppbmcgaW5kZXhlZCBjb2x1bW4gd2FzIHVwZGF0ZWQsIG9yIHRo ZSBUSUQgaGFzIGNoYW5nZWQgKi8KLQlUVV9BbGwsCi0KLQkvKiBPbmx5IHN1bW1hcml6ZWQg Y29sdW1ucyB3ZXJlIHVwZGF0ZWQsIFRJRCBpcyB1bmNoYW5nZWQgKi8KLQlUVV9TdW1tYXJp emluZywKLX0gVFVfVXBkYXRlSW5kZXhlczsKLQogLyoKICAqIFdoZW4gdGFibGVfdHVwbGVf dXBkYXRlLCB0YWJsZV90dXBsZV9kZWxldGUsIG9yIHRhYmxlX3R1cGxlX2xvY2sgZmFpbAog ICogYmVjYXVzZSB0aGUgdGFyZ2V0IHR1cGxlIGlzIGFscmVhZHkgb3V0ZGF0ZWQsIHRoZXkg ZmlsbCBpbiB0aGlzIHN0cnVjdCB0bwpAQCAtNDg4LDYgKzQ4NSwxMyBAQCB0eXBlZGVmIHN0 cnVjdCBUYWJsZUFtUm91dGluZQogCSAqIGluZGV4X2ZldGNoX3R1cGxlIGlmZiBpdCBpcyBn dWFyYW50ZWVkIHRoYXQgbm8gYmFja2VuZCBuZWVkcyB0byBzZWUKIAkgKiB0aGF0IHR1cGxl LiBJbmRleCBBTXMgY2FuIHVzZSB0aGF0IHRvIGF2b2lkIHJldHVybmluZyB0aGF0IHRpZCBp bgogCSAqIGZ1dHVyZSBzZWFyY2hlcy4KKwkgKgorCSAqIElmIGEgdHVwbGUgaXMgcmV0dXJu ZWQgYW5kIHRoZSB0YWJsZSBBTSByZWFjaGVkIGl0IGJ5IHdhbGtpbmcgYSBIT1QKKwkgKiBj aGFpbiB0aGF0IGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkg aG9wIGFmdGVyIHRoZQorCSAqIGFycml2aW5nIGVudHJ5J3Mgb3duIHR1cGxlLCBpdCBzZXRz IHNjYW4tPnhzX2hvdF9pbmRleGVkX3JlY2hlY2sgKHNlZQorCSAqIHN0cnVjdCBJbmRleEZl dGNoVGFibGVEYXRhKSB0byB0ZWxsIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgdG8gcmVjaGVj aworCSAqIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlLiAg QU1zIHdpdGhvdXQgc3VjaCB1cGRhdGUKKwkgKiBjaGFpbnMgbGVhdmUgaXQgZmFsc2UuCiAJ ICovCiAJYm9vbAkJKCppbmRleF9mZXRjaF90dXBsZSkgKHN0cnVjdCBJbmRleEZldGNoVGFi bGVEYXRhICpzY2FuLAogCQkJCQkJCQkJICBJdGVtUG9pbnRlciB0aWQsCkBAIC01ODYsOCAr NTkwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wg d2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1 cGxlTW9kZSAqbG9ja21vZGUsCi0JCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywKLQkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KTsKKwkJCQkJCQkJIEJpdG1hcHNldCAqKm1vZGlmaWVkX2F0dHJzKTsKIAogCS8qIHNlZSB0 YWJsZV90dXBsZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCiAJ VE1fUmVzdWx0CSgqdHVwbGVfbG9jaykgKFJlbGF0aW9uIHJlbCwKQEAgLTEzMTksMTEgKzEz MjIsMjAgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJs ZURhdGEgKnNjYW4sCiAgKiByZXR1cm5zIHdoZXRoZXIgdGhlcmUgYXJlIHRhYmxlIHR1cGxl IGl0ZW1zIGNvcnJlc3BvbmRpbmcgdG8gYW4gaW5kZXgKICAqIGVudHJ5LiAgVGhpcyBsaWtl bHkgaXMgb25seSB1c2VmdWwgdG8gdmVyaWZ5IGlmIHRoZXJlJ3MgYSBjb25mbGljdCBpbiBh CiAgKiB1bmlxdWUgaW5kZXguCisgKgorICogSWYga2VlcF9zbG90IGlzIG5vbi1OVUxMLCBv biBhIHBvc2l0aXZlIHJlc3VsdCB0aGUgZnVuY3Rpb24gc3RvcmVzIHRoZQorICogZmV0Y2hl ZCB0dXBsZSBpbnRvICprZWVwX3Nsb3QgKHdoaWNoIG11c3QgYmUgYSB2YWxpZCBzbG90IG9m IHRoZQorICogcmVsYXRpb24ncyB0eXBlKSBhbmQgcmV0dXJucyB3aXRoIHRoZSBzbG90IHBv cHVsYXRlZDsgdGhlIGNhbGxlciBpcworICogcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRo ZSBzbG90LiAgV2hlbiBrZWVwX3Nsb3QgaXMgTlVMTCBhIHRlbXBvcmFyeQorICogc2xvdCBp cyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGRyb3BwZWQgYmVmb3JlIHJldHVybiwgbWF0Y2hp bmcgdGhlCisgKiBwcmUtZXhpc3RpbmcgYmVoYXZpb3VyLgogICovCiBleHRlcm4gYm9vbCB0 YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJ ICBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJ CQkJCQkJCQkgIGJvb2wgKmFsbF9kZWFkKTsKKwkJCQkJCQkJCQkgIGJvb2wgKmFsbF9kZWFk LAorCQkJCQkJCQkJCSAgYm9vbCAqaG90X2luZGV4ZWRfcmVjaGVja19vdXQsCisJCQkJCQkJ CQkJICBUdXBsZVRhYmxlU2xvdCAqa2VlcF9zbG90KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTE1NzQsMTIgKzE1ODYsMjAgQEAgdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0 aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLCBDb21tYW5kSWQgY2lkLAogICoJCVRBQkxFX1VQ REFURV9OT19MT0dJQ0FMIC0tIGZvcmNlLWRpc2FibGVzIHRoZSBlbWl0dGluZyBvZiBsb2dp Y2FsCiAgKgkJZGVjb2RpbmcgaW5mb3JtYXRpb24gZm9yIHRoZSB0dXBsZS4KICAqCisgKiBJ biBwYXJhbWV0ZXJzOgorICoJbW9kaWZpZWRfYXR0cnMgLSBpbi9vdXQ7IG9uIGlucHV0LCB0 aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB3aG9zZQorICoJCXZhbHVlcyBjaGFuZ2Vk IChGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyIGNvbnZlbnRpb24pLiAgQQor ICoJCXRhYmxlIEFNIG1heSB1c2UgdGhpcyB0byBjaG9vc2UgYmV0d2VlbiBIT1QgYW5kIG5v bi1IT1Qgc3RvcmFnZSBvZiB0aGUKKyAqCQluZXcgdHVwbGUuICBPbiBvdXRwdXQgdGhlIEFN IGFkZHMgdGhlIHdob2xlLXJvdyBhdHRyaWJ1dGUKKyAqCQkoVGFibGVUdXBsZVVwZGF0ZUFs bEluZGV4ZXMpIGlmZiBpdCBzdG9yZWQgdGhlIG5ldyB0dXBsZSBhcyBhbgorICoJCWluZGVw ZW5kZW50IHZlcnNpb24gcmVxdWlyaW5nIGEgZnJlc2ggZW50cnkgaW4gZXZlcnkgaW5kZXg7 IG90aGVyd2lzZQorICoJCXRoZSBjYWxsZXIgY29uc3VsdHMgZWFjaCBpbmRleCdzIG93biBh dHRyaWJ1dGVzIGFnYWluc3QgdGhpcyBzZXQgdG8KKyAqCQlkZWNpZGUgcGVyIGluZGV4ICh0 aGUgc3RhbmRhcmQgSE9UIC8gc2VsZWN0aXZlLWluZGV4LXVwZGF0ZSBjYXNlcykuCisgKgog ICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKglzbG90IC0gbmV3bHkgY29uc3RydWN0ZWQgdHVw bGUgZGF0YSB0byBzdG9yZQogICoJdG1mZCAtIGZpbGxlZCBpbiBmYWlsdXJlIGNhc2VzIChz ZWUgYmVsb3cpCiAgKglsb2NrbW9kZSAtIGZpbGxlZCB3aXRoIGxvY2sgbW9kZSBhY3F1aXJl ZCBvbiB0dXBsZQotICoJdXBkYXRlX2luZGV4ZXMgLSBpbiBzdWNjZXNzIGNhc2VzIHRoaXMg aXMgc2V0IGlmIG5ldyBpbmRleCBlbnRyaWVzCi0gKgkJYXJlIHJlcXVpcmVkIGZvciB0aGlz IHR1cGxlOyBzZWUgVFVfVXBkYXRlSW5kZXhlcwogICoKICAqIE5vcm1hbCwgc3VjY2Vzc2Z1 bCByZXR1cm4gdmFsdWUgaXMgVE1fT2ssIHdoaWNoIG1lYW5zIHdlIGRpZCBhY3R1YWxseQog ICogdXBkYXRlIGl0LiAgRmFpbHVyZSByZXR1cm4gY29kZXMgYXJlIFRNX1NlbGZNb2RpZmll ZCwgVE1fVXBkYXRlZCwgYW5kCkBAIC0xNjAwLDEyICsxNjIwLDE0IEBAIHRhYmxlX3R1cGxl X3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90 ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCSAg IFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAgIGJvb2wg d2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAot CQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkgICBCaXRtYXBzZXQgKiptb2RpZmllZF9h dHRycykKIHsKKwlBc3NlcnQobW9kaWZpZWRfYXR0cnMgPT0gTlVMTCB8fAorCQkgICAhYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgKm1vZGlmaWVkX2F0dHJz KSk7CiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwg c2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBvcHRpb25zLCBzbmFwc2hvdCwgY3Jvc3NjaGVjaywK IAkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUsCi0JCQkJCQkJCQkJIG1vZGlmaWVk X2lkeF9hdHRycywgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJCSBtb2RpZmllZF9hdHRy cyk7CiB9CiAKIC8qCkBAIC0yMDkwLDggKzIxMTIsNyBAQCBleHRlcm4gdm9pZCBzaW1wbGVf dGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgdGlkLAogCQkJ CQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9pZCBzaW1wbGVfdGFibGVf dHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIgb3RpZCwKIAkJCQkJCQkJ CSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJ ICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKLQkJCQkJCQkJCSAgVFVf VXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJICBCaXRtYXBzZXQg Kiptb2RpZmllZF9hdHRycyk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMTY2NjFiYzY2ZDkuLmY3MjExZWNlY2ZmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5o IgogI2luY2x1ZGUgImZtZ3IuaCIKLSNpbmNsdWRlICJub2Rlcy9leGVjbm9kZXMuaCIKICNp bmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9k ZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzU1LDExICs3NTQsMTMg QEAgZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0dldEFsbFVwZGF0ZWRDb2xzKFJlc3VsdFJlbElu Zm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRlKTsKICAqLwogZXh0ZXJuIHZvaWQgRXhlY09w ZW5JbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sIGJvb2wgc3BlY3VsYXRp dmUpOwogZXh0ZXJuIHZvaWQgRXhlY0Nsb3NlSW5kaWNlcyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvKTsKK2V4dGVybiB2b2lkIEV4ZWNTZXRJbmRleFVuY2hhbmdlZChSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkgIGNvbnN0IEJpdG1hcHNldCAqbW9k aWZpZWRfaWR4X2F0dHJzKTsKIAogLyogZmxhZ3MgZm9yIEV4ZWNJbnNlcnRJbmRleFR1cGxl cyAqLwogI2RlZmluZQkJRUlJVF9JU19VUERBVEUJCQkoMTw8MCkKICNkZWZpbmUJCUVJSVRf Tk9fRFVQRV9FUlJPUgkJKDE8PDEpCi0jZGVmaW5lCQlFSUlUX09OTFlfU1VNTUFSSVpJTkcJ KDE8PDIpCisjZGVmaW5lCQlFSUlUX0lTX0hPVF9JTkRFWEVECQkoMTw8MikKIGV4dGVybiBM aXN0ICpFeGVjSW5zZXJ0SW5kZXhUdXBsZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywgRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCSAgIHVpbnQzMiBmbGFncywgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCiAJCQkJCQkJCSAgIExpc3QgKmFyYml0ZXJJbmRleGVzLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBlNjRmZDhjN2VhMy4uMmUzNzEyMjA1YTQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC0yMTYsMTAgKzIxNiwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJ bmRleEluZm8KIAlib29sCQlpaV9OdWxsc05vdERpc3RpbmN0OwogCS8qIGlzIGl0IHZhbGlk IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWlpX1JlYWR5Rm9ySW5zZXJ0czsKLQkvKiBJbmRl eFVuY2hhbmdlZCBzdGF0dXMgZGV0ZXJtaW5lZCB5ZXQ/ICovCi0JYm9vbAkJaWlfQ2hlY2tl ZFVuY2hhbmdlZDsKLQkvKiBhbWluc2VydCBoaW50LCBjYWNoZWQgZm9yIHJldGFpbCBpbnNl cnRzICovCisJLyoKKwkgKiBhbWluc2VydCBoaW50OiBpbmRleCBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURT8gIE5hcnJvdyBydWxlOiBrZXkKKwkgKiBjb2x1bW5zIG9ubHk7IElO Q0xVREUgY29sdW1ucyBhbmQgdGhlIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGFyZSBub3QK KwkgKiBjb25zaWRlcmVkIChleHByZXNzaW9uIGluZGV4ZXMgYXJlIHRyZWF0ZWQgY29uc2Vy dmF0aXZlbHkpLgorCSAqLwogCWJvb2wJCWlpX0luZGV4VW5jaGFuZ2VkOworCS8qCisJICog c2VsZWN0aXZlIFVQREFURTogZG9lcyB0aGlzIGluZGV4IG5lZWQgYSBuZXcgZW50cnk/ICBX aWRlIHJ1bGU6IHRydWUgaWYKKwkgKiBhbnkga2V5LCBJTkNMVURFLCBleHByZXNzaW9uLCBv ciBwcmVkaWNhdGUgY29sdW1uIGl0IHJlZmVyZW5jZXMgY2hhbmdlZAorCSAqIChvciB0aGUg QU0gc3RvcmVkIGFuIGluZGVwZW5kZW50IG5ldyB2ZXJzaW9uKS4KKwkgKi8KKwlib29sCQlp aV9JbmRleE5lZWRzVXBkYXRlOwogCS8qIGFyZSB3ZSBkb2luZyBhIGNvbmN1cnJlbnQgaW5k ZXggYnVpbGQ/ICovCiAJYm9vbAkJaWlfQ29uY3VycmVudDsKIAkvKiBkaWQgd2UgZGV0ZWN0 IGFueSBicm9rZW4gSE9UIGNoYWlucz8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bn c3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggNThhNDQ4NTdmMTMuLjI4Yjc5 MzcwZjBkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaApAQCAtMTUxLDcgKzE1MSwxOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0 YXRfVGFibGVDb3VudHMKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfdXBkYXRlZDsKIAlQZ1N0 YXRfQ291bnRlciB0dXBsZXNfZGVsZXRlZDsKIAlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90 X3VwZGF0ZWQ7CisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQ7 CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX25ld3BhZ2VfdXBkYXRlZDsKKworCS8qCisJICog UGVyLWluZGV4IEhPVC1pbmRleGVkIHVwZGF0ZSBjb3VudGVycy4gIE1haW50YWluZWQgb24g cGdzdGF0IGVudHJpZXMKKwkgKiBrZXllZCBvbiBhbiBpbmRleCBvaWQsIG5vdCBvbiB0aGUg b3duaW5nIHRhYmxlJ3MgZW50cnkuICBUaGV5IGNvdW50IGhvdworCSAqIG1hbnkgSE9ULWlu ZGV4ZWQgdXBkYXRlcyBza2lwcGVkIHRoaXMgaW5kZXggKGtleSB1bmNoYW5nZWQpIHZzLgor CSAqIGluc2VydGVkIGEgZnJlc2ggZW50cnkgKGtleSBjaGFuZ2VkKS4gIFN1bW1hcml6aW5n IGluZGV4ZXMgZG8gbm90CisJICogY29udHJpYnV0ZSB0byBlaXRoZXIgY291bnRlci4KKwkg Ki8KKwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQ7CisJ UGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOworCiAJYm9v bAkJdHJ1bmNkcm9wcGVkOwogCiAJUGdTdGF0X0NvdW50ZXIgZGVsdGFfbGl2ZV90dXBsZXM7 CkBAIC0yMTgsNyArMjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlWGFjdFN0 YXR1cwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKi8KIAotI2RlZmluZSBQR1NUQVRfRklMRV9GT1JNQVRfSUQJ MHgwMUE1QkNCQworI2RlZmluZSBQR1NUQVRfRklMRV9GT1JNQVRfSUQJMHgwMUE1QkNCRAog CiB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfQXJjaGl2ZXJTdGF0cwogewpAQCAtNDYwLDggKzQ3 MiwxMyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVudHJ5CiAJUGdTdGF0X0Nv dW50ZXIgdHVwbGVzX3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7 CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVy IHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19u ZXdwYWdlX3VwZGF0ZWQ7CiAKKwkvKiBQZXItaW5kZXggSE9ULWluZGV4ZWQgdXBkYXRlIGNv dW50ZXJzIChzZWUgUGdTdGF0X1RhYmxlQ291bnRzKS4gKi8KKwlQZ1N0YXRfQ291bnRlciB0 dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQ7CisJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkOworCiAJUGdTdGF0X0NvdW50ZXIgbGl2ZV90dXBs ZXM7CiAJUGdTdGF0X0NvdW50ZXIgZGVhZF90dXBsZXM7CiAJUGdTdGF0X0NvdW50ZXIgbW9k X3NpbmNlX2FuYWx5emU7CkBAIC03NTIsNiArNzY5LDE2IEBAIGV4dGVybiB2b2lkIHBnc3Rh dF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiByZWwsCiAJCWlmIChwZ3N0YXRfc2hvdWxkX2Nv dW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAogCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3Vu dHMudHVwbGVzX3JldHVybmVkICs9IChuKTsJCVwKIAl9IHdoaWxlICgwKQorI2RlZmluZSBw Z3N0YXRfY291bnRfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQocmVsKQkJCQkJCVwKKwlkbyB7 CQkJCQkJCQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihy ZWwpKQkJCQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19ob3Rf aW5kZXhlZF91cGRfc2tpcHBlZCsrO1wKKwl9IHdoaWxlICgwKQorI2RlZmluZSBwZ3N0YXRf Y291bnRfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQocmVsKQkJCQkJCVwKKwlkbyB7CQkJCQkJ CQkJCQkJCQkJXAorCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJ CQkJCVwKKwkJCShyZWwpLT5wZ3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhl ZF91cGRfbWF0Y2hlZCsrO1wKKwl9IHdoaWxlICgwKQogI2RlZmluZSBwZ3N0YXRfY291bnRf YnVmZmVyX3JlYWQocmVsKQkJCQkJCQkJXAogCWRvIHsJCQkJCQkJCQkJCQkJCQlcCiAJCWlm IChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXApAQCAtNzY0LDcg Kzc5MSw3IEBAIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfYW5hbHl6ZShSZWxhdGlvbiBy ZWwsCiAJfSB3aGlsZSAoMCkKIAogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfaW5z ZXJ0KFJlbGF0aW9uIHJlbCwgUGdTdGF0X0NvdW50ZXIgbik7Ci1leHRlcm4gdm9pZCBwZ3N0 YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdw YWdlKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWwsIGJvb2wgaG90LCBib29sIGhvdF9pbmRleGVkLCBib29sIG5ld3BhZ2UpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4g dm9pZCBwZ3N0YXRfY291bnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lk IHBnc3RhdF91cGRhdGVfaGVhcF9kZWFkX3R1cGxlcyhSZWxhdGlvbiByZWwsIGludCBkZWx0 YSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3JlbC5oCmluZGV4IDE3ZGJkYmU2NDVkLi4zMDQ3ODNmMGJiYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlC aXRtYXBzZXQgICpyZF9pZGF0dHI7CQkvKiBpbmNsdWRlZCBpbiByZXBsaWNhIGlkZW50aXR5 IGluZGV4ICovCiAJQml0bWFwc2V0ICAqcmRfaW5kZXhlZGF0dHI7IC8qIGFsbCBjb2xzIHJl ZmVyZW5jZWQgYnkgaW5kZXhlcyAqLwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6ZWRhdHRy OwkvKiBjb2xzIGluZGV4ZWQgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnJkX2V4cHJpbmRleGF0dHI7CS8qIGNvbHMgcmVmZXJlbmNlZCBieSBleHByZXNzaW9u IGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGlj YXRpb24gZGVzY3JpcHRvciwgb3IgTlVMTCAqLwogCkBAIC0yMTcsNiArMjE4LDE2IEBAIHR5 cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0YQogCU9pZAkJICAgKnJkX2luZGNvbGxhdGlvbjsJ LyogT0lEcyBvZiBpbmRleCBjb2xsYXRpb25zICovCiAJYnl0ZWEJICAqKnJkX29wY29wdGlv bnM7CS8qIHBhcnNlZCBvcGNsYXNzLXNwZWNpZmljIG9wdGlvbnMgKi8KIAorCS8qCisJICog Qml0bWFwIG9mIGhlYXAgYXR0cmlidXRlIG51bWJlcnMgcmVmZXJlbmNlZCBieSB0aGlzIGlu ZGV4IChzaW1wbGUga2V5cywKKwkgKiBJTkNMVURFIGNvbHVtbnMsIGV4cHJlc3Npb24gY29s dW1ucywgYW5kIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlCisJICogY29sdW1ucyksIG9mZnNl dCBieSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLiBMYXppbHkgYnVpbHQg YnkKKwkgKiBSZWxhdGlvbkdldEluZGV4ZWRBdHRycygpIGFuZCBjYWNoZWQgaW4gcmRfaW5k ZXhjeHQuIENvbnN1bWVycyBtdXN0CisJICogYm1zX2NvcHkgYmVmb3JlIHJlbHlpbmcgb24g dGhlIHBvaW50ZXIgYmV5b25kIGFueSBwb3RlbnRpYWwKKwkgKiBBY2NlcHRJbnZhbGlkYXRp b25NZXNzYWdlcygpIGNhbGwuCisJICovCisJQml0bWFwc2V0ICAqcmRfaW5kYXR0cjsKKwog CS8qCiAJICogcmRfYW1jYWNoZSBpcyBhdmFpbGFibGUgZm9yIGluZGV4IGFuZCB0YWJsZSBB TXMgdG8gY2FjaGUgcHJpdmF0ZSBkYXRhCiAJICogYWJvdXQgdGhlIHJlbGF0aW9uLiAgVGhp cyBtdXN0IGJlIGp1c3QgYSBjYWNoZSBzaW5jZSBpdCBtYXkgZ2V0IHJlc2V0CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsY2FjaGUuaAppbmRleCA4OTc4ODA5MTU3Ni4uYTM4MWFhM2UwOTUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVsY2FjaGUuaApAQCAtNjIsNiArNjIsMTkgQEAgZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0 RHVtbXlJbmRleEV4cHJlc3Npb25zKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVybiBMaXN0 ICpSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0aW9uIHJlbGF0aW9uKTsKIGV4dGVy biBieXRlYSAqKlJlbGF0aW9uR2V0SW5kZXhBdHRPcHRpb25zKFJlbGF0aW9uIHJlbGF0aW9u LCBib29sIGNvcHkpOwogCisvKgorICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMgLS0gcmV0 dXJuIGEgZnJlc2hseS1wYWxsb2MnZCBCaXRtYXBzZXQgb2YgZXZlcnkKKyAqIGhlYXAgYXR0 cmlidXRlIHRoaXMgaW5kZXggcmVmZXJlbmNlcywgdmlhIGtleXMsIElOQ0xVREUgY29sdW1u cywKKyAqIGV4cHJlc3Npb25zLCBvciBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZXMuCisgKgor ICogVGhlIGFyZ3VtZW50IG11c3QgYmUgYW4gaW5kZXggUmVsYXRpb24gKG5vdCBpdHMgb3du aW5nIGhlYXApLiAgQXR0cmlidXRlCisgKiBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlci4gIFRoZSByZXN1bHQgaXMKKyAqIHBhbGxv YydkIGluIHRoZSBjYWxsZXIncyBjb250ZXh0OyBibXNfZnJlZSB3aGVuIGRvbmUuICBUaGUg cmVsY2FjaGUKKyAqIGNhY2hlcyBpdHMgb3duIGNvcHkgaW4gcmRfaW5kZXhjeHQgc28gc3Vi c2VxdWVudCBjYWxscyBvbmx5IHBheSBmb3IgdGhlCisgKiBmaW5hbCBibXNfY29weS4KKyAq LworZXh0ZXJuIEJpdG1hcHNldCAqUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoUmVsYXRpb24g aW5kZXhSZWwpOworCiAvKgogICogV2hpY2ggc2V0IG9mIGNvbHVtbnMgdG8gcmV0dXJuIGJ5 IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgogICovCkBAIC03MiwxMSArODUsMTUgQEAg dHlwZWRlZiBlbnVtIEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9J REVOVElUWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCwKIAlJTkRFWF9BVFRS X0JJVE1BUF9TVU1NQVJJWkVELAorCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04sCiB9 IEluZGV4QXR0ckJpdG1hcEtpbmQ7CiAKIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgSW5kZXhB dHRyQml0bWFwS2luZCBhdHRyS2luZCk7CiAKK2V4dGVybiBjb25zdCBCaXRtYXBzZXQgKlJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJ CQkJCQkJCQkJCQkgSW5kZXhBdHRyQml0bWFwS2luZCBhdHRyS2luZCk7CisKIGV4dGVybiBC aXRtYXBzZXQgKlJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAoUmVsYXRpb24gcmVsYXRp b24pOwogCiBleHRlcm4gdm9pZCBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv aG90X3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRl cy5vdXQKaW5kZXggMjczZmUzMzEwZGEuLjA2OTc5ZWQzMWQwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dApAQCAtMSwxNDcgKzEsMTMyIEBACiAt LQogLS0gSE9UX1VQREFURVMKLS0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tIFRlc3QgY2xhc3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBk YXRlIGRlY2lzaW9ucwogLS0KLS0tIFRoaXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmll cyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBh dm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChlLmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUg bW9kaWZpZWQpLgorLS0gVGhpcyBmaWxlIGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBw bHkgaWRlbnRpY2FsbHkgb24gYSBwcmUtaG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkg VVBEQVRFIGhlcmUgZWl0aGVyIGxlYXZlcyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1 bmNoYW5nZWQgb3IgdG91Y2hlcyBvbmx5IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRy aWJ1dGVzLCBzbyB0aGUKKy0tIEhPVCB2cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBl bmQgb24gd2hldGhlciBTZWxlY3RpdmUgSW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQp IGlzIGVuYWJsZWQuICBob3QtaW5kZXhlZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMg dGhhdCBtb2RpZnkKKy0tIGEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBp cyBjb3ZlcmVkIGluCistLSBob3RfaW5kZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1 c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5j dGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNw ZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlO IHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1l dGhvZHM6CistLSAgIDEuIFN0YXRpc3RpY3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tICAgMi4gcGFnZWluc3BlY3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0t ICAgMy4gRVhQTEFJTiB0byBjb25maXJtIHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBp bmRleAogLS0KIC0tIExvYWQgcmVxdWlyZWQgZXh0ZW5zaW9ucwogQ1JFQVRFIEVYVEVOU0lP TiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNwZWN0OwotLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1 cGRhdGUgY291bnQKKy0tIFN1bSBvZiBjb21taXR0ZWQgYW5kIGluLXByb2dyZXNzIChub24t SE9ULCBIT1QpIHVwZGF0ZSBjb3VudGVycy4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKIFJFVFVSTlMgVEFCTEUgKAogICAgIHVw ZGF0ZXMgQklHSU5ULAogICAgIGhvdCBCSUdJTlQKICkgQVMgJCQKIERFQ0xBUkUKLSAgcmVs X29pZCBvaWQ7CisgICAgcmVsX29pZCBvaWQ7CiBCRUdJTgotICByZWxfb2lkIDo9IHJlbF9u YW1lOjpyZWdjbGFzczo6b2lkOwotCi0gIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRy YW5zYWN0aW9uLWxvY2FsIHN0YXRzCi0gIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVs dCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5Ci0gIC0tIE5v dGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVk IHN0YXRzIGFscmVhZHkKLSAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMg d291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKLSAgLS0gdHJhbnNhY3Rpb24gdGVz dGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5j dGlvbi4KLSAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRl ZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOwotICBob3QgOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCi0gICAgICAgICBD T0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCk7Ci0KLSAgUkVUVVJOIE5FWFQ7CisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xh c3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191 cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0 X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09B TEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisg ICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKIEVORDsKICQkIExBTkdVQUdFIHBs cGdzcWw7Ci0tLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhh cyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlk IGlzIHRoZSBUQUlMIG9mIGEgSE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdl dF9jdGlkIHRpZCkKIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19u dW0gaW50OwotICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAg cGFnZV9pdGVtIHJlY29yZDsKIEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1 cGxlIG9uIHRoZSBzYW1lIHBhZ2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQot ICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0g ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1Qg TlVMTAotICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8 fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0 YXJnZXRfY3RpZAotICBMT09QCi0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0g IFJFVFVSTiBmYWxzZTsKKyAgICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludDsKKyAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBs cCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRf cmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdz ID0gMQorICAgICAgICAgIEFORCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQg dF9jdGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06 OnRleHQgfHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAor ICAgIExPT1AKKyAgICAgICAgUkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVU VVJOIGZhbHNlOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLS0tIFByaW50IHRoZSBI T1QgY2hhaW4gc3RhcnRpbmcgZnJvbSBhIGdpdmVuIHR1cGxlCistLSBFbWl0IHRoZSBIT1Qg Y2hhaW4gcm9vdGVkIGF0IHN0YXJ0X2N0aWQuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBwcmludF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCiBSRVRV Uk5TIFRBQkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQs IHRfY3RpZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUwogJCQKICN2YXJpYWJsZV9jb25m bGljdCB1c2VfY29sdW1uCiBERUNMQVJFCi0gIGJsb2NrX251bSBpbnQ7Ci0gIGxpbmVfcHRy IGludDsKLSAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOwotICBuZXh0X2N0aWQg dGlkOwotICBwb3NpdGlvbiBpbnQgOj0gMDsKLSAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEw MDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKLSAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6 PSBmYWxzZTsKLSAgZmxhZ3NfbmFtZSB0ZXh0OworICAgIGJsb2NrX251bSBpbnQ7CisgICAg bGluZV9wdHIgaW50OworICAgIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3RpZDsKKyAg ICBuZXh0X2N0aWQgdGlkOworICAgIHBvc2l0aW9uIGludCA6PSAwOworICAgIG1heF9pdGVy YXRpb25zIGludCA6PSAxMDA7CisgICAgcGFnZV9pdGVtIHJlY29yZDsKKyAgICBmb3VuZF9w cmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOworICAgIGZsYWdzX25hbWUgdGV4dDsKIEJF R0lOCi0gIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7 Ci0KLSAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0byBv dXIgc3RhcnRfY3RpZCkKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBscCwgbHBf ZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShy ZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAgICAgIEFO RCB0X2N0aWQgPSBzdGFydF9jdGlkCi0gIExPT1AKLSAgICBjdXJyZW50X2N0aWQgOj0gKCco JyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAn KScpOjp0aWQ7Ci0gICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKLSAgICBFWElUOwot ICBFTkQgTE9PUDsKLQotICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQgd2l0 aCB0aGUgZ2l2ZW4gY3RpZAotICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgotICAg IGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwotICBFTkQgSUY7Ci0KLSAgLS0gRm9sbG93 IHRoZSBjaGFpbiBmb3J3YXJkCi0gIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlvbnMg TE9PUAotICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsxXTo6 aW50OworICAgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CiAKICAgICBGT1IgcGFnZV9pdGVtIElOCi0gICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdz LCB0X2N0aWQKLSAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxf bmFtZSwgYmxvY2tfbnVtKSkKLSAgICAgIFdIRVJFIGxwID0gbGluZV9wdHIKKyAgICAgICAg U0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgIEZST00gaGVhcF9wYWdlX2l0 ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgV0hFUkUg bHBfZmxhZ3MgPSAxCisgICAgICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKICAgICBM T09QCi0gICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8gbmFtZXMKLSAgICAgIGZsYWdzX25hbWUg Oj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKLSAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNl ZCAoMCknCi0gICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEpJwotICAgICAgICBXSEVO IDIgVEhFTiAncmVkaXJlY3QgKDIpJwotICAgICAgICBXSEVOIDMgVEhFTiAnZGVhZCAoMykn Ci0gICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0 IHx8ICcpJwotICAgICAgRU5EOwotCi0gICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCi0gICAg ICAgIHBvc2l0aW9uLAotICAgICAgICBjdXJyZW50X2N0aWQsCi0gICAgICAgIGZsYWdzX25h bWUsCi0gICAgICAgIHBhZ2VfaXRlbS50X2N0aWQsCi0gICAgICAgIChwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xl YW4KLSAgICAgIDsKLQotICAgICAgSUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBh Z2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQgVEhFTgotICAgICAgICBSRVRVUk47Ci0g ICAgICBFTkQgSUY7Ci0KLSAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOwot Ci0gICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19u dW0gVEhFTgotICAgICAgICBSRVRVUk47Ci0gICAgICBFTkQgSUY7Ci0KLSAgICAgIGN1cnJl bnRfY3RpZCA6PSBuZXh0X2N0aWQ7Ci0gICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7 CisgICAgICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAn LCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICAgICAgZm91bmRf cHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICAgICAgRVhJVDsKICAgICBFTkQgTE9PUDsKLQot ICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCi0gICAgICBSRVRVUk47CisgICAgSUYgTk9UIGZv dW5kX3ByZWRlY2Vzc29yIFRIRU4KKyAgICAgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0 aWQ7CiAgICAgRU5EIElGOwotICBFTkQgTE9PUDsKKworICAgIFdISUxFIHBvc2l0aW9uIDwg bWF4X2l0ZXJhdGlvbnMgTE9PUAorICAgICAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlk Ojp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICAgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAg ICAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgICAgICBGUk9N IGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisg ICAgICAgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAgICAgIExPT1AKKyAgICAgICAg ICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAgICAgICAgICAg ICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKKyAgICAgICAgICAgICAgICBXSEVOIDEg VEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJl Y3QgKDIpJworICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKKyAgICAg ICAgICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgICAgICAgIEVORDsKKyAgICAgICAgICAgIFJFVFVSTiBRVUVSWSBT RUxFQ1QKKyAgICAgICAgICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICBjdXJy ZW50X2N0aWQsCisgICAgICAgICAgICAgICAgZmxhZ3NfbmFtZSwKKyAgICAgICAgICAgICAg ICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAgICAgICAgIChwYWdlX2l0ZW0udF9jdGlk IElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW47 CisKKyAgICAgICAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0 ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47 CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9p dGVtLnRfY3RpZDsKKyAgICAgICAgICAgIElGIChuZXh0X2N0aWQ6OnRleHQ6OnBvaW50KVsw XTo6aW50ICE9IGJsb2NrX251bSBUSEVOCisgICAgICAgICAgICAgICAgUkVUVVJOOworICAg ICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRfY3Rp ZDsKKyAgICAgICAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgRU5E IExPT1A7CisgICAgICAgIElGIHBvc2l0aW9uID0gMCBUSEVOCisgICAgICAgICAgICBSRVRV Uk47CisgICAgICAgIEVORCBJRjsKKyAgICBFTkQgTE9PUDsKIEVORDsKICQkIExBTkdVQUdF IHBscGdzcWw7Ci0tLSBCYXNpYyBIT1QgdXBkYXRlICh1cGRhdGUgbm9uLWluZGV4ZWQgY29s dW1uKQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0 ZSBvZiBhIG5vbi1pbmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBD UkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBp bmRleGVkX2NvbCBpbnQsCkBAIC0xNTEsMjM5ICsxMzYsMjE4IEBAIENSRUFURSBJTkRFWCBo b3RfdGVzdF9pbmRleGVkX2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7CiBJTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKIElOU0VSVCBJTlRP IGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOwogSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7Ci0tLSBHZXQgYmFzZWxpbmUKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAK IC0tLS0tLS0tLSstLS0tLQogICAgICAgIDAgfCAgIDAKICgxIHJvdykKIAotLS0gU2hvdWxk IGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkKKy0t IFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCkuCiBVUERBVEUg aG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAx OwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDInIFdI RVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3Vw ZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0tLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhv dCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDMgfCAgIDMKICgxIHJvdykKIAotLS0gRHVt cCB0aGUgSE9UIGNoYWluIGJlZm9yZSBWQUNVVU1pbmcKLVdJVEggY3VycmVudF90dXBsZSBB UyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxF Q1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFT IGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlk LAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFM IHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworLS0g Q2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9pbnRl ci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50 X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJp bnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5j dGlkKTsKICBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwgIGxwX2ZsYWdz ICB8IHRfY3RpZCAKIC0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0KICB0ICAgICAgICAgfCAgICAgICAgICAgICAgMCB8ICgwLDEp IHwgbm9ybWFsICgxKSB8ICgwLDQpCiAgdCAgICAgICAgIHwgICAgICAgICAgICAgIDEgfCAo MCw0KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogKDIgcm93cykKIAotLS0gVmFjdXVtIHRoZSBy ZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKKy0tIFZBQ1VVTSBj b2xsYXBzZXMgdGhlIGNoYWluLgogVkFDVVVNIGhvdF90ZXN0OwotLS0gU2hvdyB0aGF0IHRo ZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZhY3V1bQotV0lUSCBjdXJyZW50X3R1cGxlIEFTICgK LSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNFTEVDVAot ICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFz X2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0aWQsCi0g IGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVSQUwgcHJp bnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CitXSVRIIGN1 cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAx KQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFp bi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwg cHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFz X2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQg CiAtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tCiAgZiAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCw0KSB8IG5vcm1hbCAo MSkgfCAoMCw0KQogKDEgcm93KQogCi0tLSBOb24tSE9UIHVwZGF0ZSAodXBkYXRlIGluZGV4 ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVS RSBpZCA9IDE7CitEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBub3QgYmxvY2sgSE9U CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwKKyAgICB2YWx1ZSBp bnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfdHNfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKHRzKTsK K0NSRUFURSBJTkRFWCBob3RfdGVzdF9icmluX2NvbF9icmluIE9OIGhvdF90ZXN0IFVTSU5H IGJyaW4oYnJpbl9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAy NC0wMS0wMScsIDEwMCwgMTAwMCk7CistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5n OyB1cGRhdGluZyB0aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVp ciB2YWx1ZXMgY2hhbmdlLgorVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAy JywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQot ICAgICAgIDQgfCAgIDMKKyAgICAgICAxIHwgICAxCiAoMSByb3cpCiAKLS0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZpbmRhYmxlKQotU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29s IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7Ci0gICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKLSAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDE1MCkKLSgyIHJvd3MpCi0KLVNFTEVDVCBpZCwgaW5kZXhlZF9jb2wg RlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKLSBpZCB8IGluZGV4ZWRf Y29sIAotLS0tLSstLS0tLS0tLS0tLS0tCi0gIDEgfCAgICAgICAgIDE1MAorLS0gTm9uLWlu ZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCiAoMSByb3cpCiAKLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGluIGluZGV4 Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlu ZGV4ZWRfY29sID0gMTAwOwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4 IG9uIGhvdF90ZXN0Ci0gICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCi0oMiBy b3dzKQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKLSBpZCAKLS0tLS0KLSgwIHJvd3MpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAg IDIgfCAgIDIKKygxIHJvdykKIAotUkVTRVQgZW5hYmxlX3NlcXNjYW47Ci0tLSBBbGwtb3It bm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFM TCBpbmRleCB1cGRhdGVzCiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAzLiBUT0FTVCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhl ZCBjb2x1bW4gcGF0aHMgb25seSkKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRF IFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2Eg aW50LAotICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQg dGV4dAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0IHRleHQsCisgICAg c21hbGxfdGV4dCB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5E RVggaG90X3Rlc3RfYV9pZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhv dF90ZXN0X2JfaWR4IE9OIGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVz dF9jX2lkeCBPTiBob3RfdGVzdChjb2xfYyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxV RVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7Ci0tLSBVcGRhdGUgb25seSBjb2xfYSAt IHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgYW4gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZAot LS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBtdXN0IGJlIHVwZGF0ZWQgKGFsbC1vci1ub25l IHByb3BlcnR5KQotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0g MTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMw MDApLCAnc21hbGwnKTsKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0t LS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAwCisgICAgICAgMSB8ICAgMQorKDEgcm93KQor CistLSBUT0FTVCBjb2x1bW4sIGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgorVVBEQVRF IGhvdF90ZXN0IFNFVCBsYXJnZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykKIAotLS0gTm93IHVw ZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSst LS0tLQotICAgICAgIDIgfCAgIDEKKyAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0tIFBh cnRpYWwgaW5kZXg6IGJvdGggb2xkIGFuZCBuZXcgb3V0c2lkZSBwcmVkaWNhdGUgKGNvbnNl cnZhdGl2ZSA9IG5vbi1IT1QpCiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4IHdoZXJlIHVwZGF0ZSBsZWF2ZXMg aW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JF QVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgc3Rh dHVzIHRleHQsCiAgICAgZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0t LSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCiBDUkVBVEUg SU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdIRVJFIHN0 YXR1cyA9ICdhY3RpdmUnOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0 aXZlJywgJ2RhdGExJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFj dGl2ZScsICdkYXRhMicpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOwotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnYWN0 aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkKLS0tIFNob3VsZCBi ZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IHdob3NlIHN0YXR1cyBtYXRjaGVzIHRo ZSBwYXJ0aWFsIHByZWRpY2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAx IHwgICAxCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1bW4gb24gJ2lu YWN0aXZlJyByb3cgKG91dHNpZGUgcHJlZGljYXRlKQotLS0gU2hvdWxkIGJlIEhPVAorLS0g VXBkYXRlIGRhdGEgb24gYSByb3cgb3V0c2lkZSB0aGUgcHJlZGljYXRlOiBIT1QuCiBVUERB VEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAot LS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMiB8ICAgMgorU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAn aW5hY3RpdmUnIHRvICdkZWxldGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFBv c3RncmVTUUwgaXMgY29uc2VydmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBw cmVkaWNhdGUgY2hlY2sKLS0tIFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3Ro IHZhbHVlcyBhcmUgb3V0c2lkZSBwcmVkaWNhdGUKLVVQREFURSBob3RfdGVzdCBTRVQgc3Rh dHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0g ICAgICAgMyB8ICAgMgorICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0gVmVyaWZ5IGlu ZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCiBTRUxFQ1QgaWQsIHN0YXR1cyBG Uk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwogIGlkIHwgc3RhdHVzIAog LS0tLSstLS0tLS0tLQogICAxIHwgYWN0aXZlCiAoMSByb3cpCiAKLS0tIE9ubHkgQlJJTiAo c3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9uLVBLIGNvbHVtbnMKIERST1AgVEFCTEUgaG90 X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDUuIE11bHRpLWNvbHVtbiBi dHJlZTogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKLSAgICB0cyB0aW1lc3RhbXAsCi0gICAgdmFsdWUgaW50LAotICAgIGJyaW5fY29sIGlu dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X3Rz X2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7Ci1DUkVBVEUgSU5ERVggaG90X3Rl c3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKLUlO U0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDAp OwotLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAo b25seSBzdW1tYXJpemluZyBpbmRleGVzKQotVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcy MDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0t LS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMQotKDEgcm93KQotCi0tLSBVcGRhdGUgbm9uLWlu ZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28gYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VU IHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAg ICAgMiB8ICAgMgotKDEgcm93KQotCi0tLSBUT0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVt bnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAotRFJPUCBUQUJMRSBob3RfdGVzdDsKLUNSRUFU RSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAotICAgIGluZGV4 ZWRfY29sIGludCwKLSAgICBsYXJnZV90ZXh0IHRleHQsCi0gICAgc21hbGxfdGV4dCB0ZXh0 CisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAg ZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci1DUkVBVEUgSU5ERVggaG90 X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKLS0tIEluc2VydCByb3cgd2l0 aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCi1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcpOwotLS0gVXBkYXRlIG5vbi1p bmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90 X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDEgfCAgIDEKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90 X3Rlc3QoY29sX2EsIGNvbF9iKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgJ2RhdGEnKTsKKy0tIGNvbF9jIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4K K1VQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKy0tIGRhdGEgbm90IGluIGFueSBp bmRleDogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VM RUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVw ZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4g dW5jaGFuZ2VkCi1VUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQoJ3kn LCAzMDAwKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1 cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMiB8ICAgMgogKDEgcm93 KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2NvbCA9IDIwMDsKLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgMyB8ICAgMgotKDEgcm93KQotCi0tLSBVbmlxdWUgY29uc3RyYWludCAo dW5pcXVlIGluZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBo b3RfdGVzdDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gVW5pcXVlIGluZGV4 OiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uICsgdW5pcXVlbmVzcyBlbmZvcmNlbWVu dAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAog ICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCkBA IC0zOTEsMTUgKzM1NSwxOSBAQCBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAs ICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRh MicpOwotLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQ REFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0t LQogICAgICAgIDIgfCAgIDIKICgxIHJvdykKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCiBTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKICBpZCB8IHVuaXF1ZV9jb2wgfCAgZGF0YSAgIAogLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tCkBAIC00MDcsNjAgKzM3NSwxNCBAQCBTRUxFQ1Qg aWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKICAgMiB8 ICAgICAgICAyMDAgfCB1cGRhdGVkCiAoMiByb3dzKQogCi0tLSBUaGlzIHNob3VsZCBmYWls ICh1bmlxdWUgdmlvbGF0aW9uKQorLS0gVW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3Jj ZWQgb24gYW55IHBhdGguCiBVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1ZV9jb2wgPSAxMDAg V0hFUkUgaWQgPSAyOwogRVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVu aXF1ZSBjb25zdHJhaW50ICJob3RfdGVzdF91bmlxdWVfY29sX2tleSIKIERFVEFJTDogIEtl eSAodW5pcXVlX2NvbCk9KDEwMCkgYWxyZWFkeSBleGlzdHMuCi0tLSBNdWx0aS1jb2x1bW4g aW5kZXg6IGFueSBjb2x1bW4gY2hhbmdlID0gbm9uLUhPVAogRFJPUCBUQUJMRSBob3RfdGVz dDsKLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZLAot ICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2MgaW50LAotICAgIGRh dGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotQ1JFQVRFIElOREVYIGhvdF90 ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChjb2xfYSwgY29sX2IpOwotSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnZGF0YScpOwotLS0gVXBkYXRlIGNvbF9h IChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDE1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAg ICAgICAxIHwgICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VU IGNvbF9hID0gMTA7Ci0tLSBVcGRhdGUgY29sX2IgKHBhcnQgb2YgbXVsdGktY29sdW1uIGlu ZGV4KSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjU7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDAKLSgxIHJvdykKLQot LS0gUmVzZXQKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyMDsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0t LS0tKy0tLS0tCi0gICAgICAgNCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUgY29sX2Mg KG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29s X2MgPSAzNTsKLS0tIFVwZGF0ZSBkYXRhIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9U Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7Ci1TRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDYgfCAgIDIKLSgxIHJvdykKLQotLS0gUGFydGl0aW9uZWQgdGFi bGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJU1RT IGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7Ci1OT1RJQ0U6ICB0YWJsZSAiaG90X3Rl c3RfcGFydGl0aW9uZWQiIGRvZXMgbm90IGV4aXN0LCBza2lwcGluZworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSA3LiBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3aXRoaW4gYSBw YXJ0aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0X3BhcnRpdGlvbmVkICgKICAgICBpZCBpbnQsCiAgICAgcGFydGl0aW9uX2tleSBpbnQs CkBAIC00NzUsMjMgKzM5NywzMiBAQCBDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDIgUEFS VElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCiBDUkVBVEUgSU5ERVggaG90X3Rlc3Rf cGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wpOwogSU5TRVJU IElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5pdGlh bDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUw LCAyMDAsICdpbml0aWFsMicpOwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAxIChub24taW5k ZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlv bmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7Ci0tLSBVcGRhdGUgaW4g cGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERB VEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlk ID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CiAg dXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDEgfCAgIDEKICgxIHJv dykKIAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDInKTsKICB1 cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93 KQogCi0tLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlvbnMKIFNFTEVDVCBpZCBG Uk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwogIGlk IAogLS0tLQpAQCAtNTA0LDI0MiArNDM1LDEwMCBAQCBTRUxFQ1QgaWQgRlJPTSBob3RfdGVz dF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9IDIwMDsKICAgMgogKDEgcm93KQog Ci0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAx NTAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVz dF9wYXJ0MScpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAy IHwgICAxCi0oMSByb3cpCi0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAotU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 Ci0gaWQgCi0tLS0tCi0gIDEKLSgxIHJvdykKLQotLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gVHJpZ2dlciBtb2RpZmljYXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBI T1QKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0 bHkgZGV0ZWN0IHdoZW4gdHJpZ2dlcnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKLS0t IGhlYXBfbW9kaWZ5X3R1cGxlKCksIGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBp biB0aGUgVVBEQVRFJ3MgU0VUIGNsYXVzZQotQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAotICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICB0cmlnZ2VyZWRfY29sIGludCwK LSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJTkRF WCBob3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsK LS0tIENyZWF0ZSBhIHRyaWdnZXIgdGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgot Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQotUkVU VVJOUyBUUklHR0VSIEFTICQkCi1CRUdJTgotICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVX LnRyaWdnZXJlZF9jb2wgKyAxOwotICAgIFJFVFVSTiBORVc7Ci1FTkQ7Ci0kJCBMQU5HVUFH RSBwbHBnc3FsOwotQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKLSAgICBC RUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKLSAgICBGT1IgRUFDSCBST1cKLSAg ICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7Ci1JTlNFUlQgSU5U TyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwotU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7Ci0gdXBkYXRlcyB8 IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0g VXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQg Y29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQg YW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLS0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVw ZGF0ZSAoaW5kZXhlZCBjb2x1bW4gd2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCi1TRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLSB1cGRhdGVzIHwg aG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBW ZXJpZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1TRUxF Q1QgdHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOwot IHRyaWdnZXJlZF9jb2wgCi0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgMTAxCi0oMSBy b3cpCi0KLURST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOwotRFJPUCBGVU5D VElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gSlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNr aW5nCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0 byBub24taW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFC TEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogbm9uLWluZGV4ZWQgcGF0aCBj aGFuZ2UgaXMgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBo b3RfanNvbmJfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIGRhdGEganNv bmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLS0tIENyZWF0ZSBleHByZXNzaW9uIGlu ZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCiBDUkVBVEUgSU5ERVggaG90X2pzb25iX25h bWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwogSU5TRVJUIElO VE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFn ZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoy NSwiY2l0eSI6IkxBIn0nKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAg MCB8ICAgMAorLS0gVGhlIGpzb25iIGNvbHVtbiBpcyB0aGUgZXhwcmVzc2lvbiBpbmRleCdz IGlucHV0LCBzbyBIT1QtaW5kZXhlZCBpcworLS0gZGlzcXVhbGlmaWVkIChleHByZXNzaW9u IGluZGV4ZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKSBhbmQgdGhlIGpzb25iCistLSBjaGFu Z2UgYmxvY2tzIGNsYXNzaWMgSE9UOiBub24tSE9UIHVwZGF0ZS4KK1VQREFURSBob3RfanNv bmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVS RSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgx IHJvdykKIAotLS0gVXBkYXRlIG5vbi1pbmRleGVkIEpTT04gcGF0aCAoYWdlKSAtIHNob3Vs ZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rlc3Qg U0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAx OwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogIHVw ZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAxIHwgICAwCiAoMSByb3cp CiAKLS0tIFVwZGF0ZSBpbmRleGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJl IEhPVAotVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEs ICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CistLSBMaWtld2lzZSBub24t SE9UOiBleHByZXNzaW9uIGluZGV4IGRpc3F1YWxpZmllcyBIT1QtaW5kZXhlZC4KK1VQREFU RSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hFUkUgaWQgPSAy OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRh dGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAgMiB8ICAgMAogKDEgcm93KQog Ci0tLSBWZXJpZnkgaW5kZXggd29ya3MKLVNFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0 IFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsKLSBpZCAKLS0tLS0KLSAgMQorLS0g TGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZpZXMgSE9ULWlu ZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9pbnNlcnQo ZGF0YSwgJ3tjb3VudHJ5fScsICciVVNBIicpIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAg ICAzIHwgICAwCiAoMSByb3cpCiAKLS0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDQgfCAgIDAKLSgxIHJvdykKLQogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKLS0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKLUNSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAotICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKLSAgICBkb2MgeG1sCi0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 Ci0tLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKLUlOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKLSAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAotICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOwotRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0t Ci0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr Ci0tLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCi1VUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0K LSAgICAgICAwIHwgICAwCi0oMSByb3cpCi0KLS0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAg MAotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5kZXggd29ya3MKLVNFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07Ci1FUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQotTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1ERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCi1ISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCi1EUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKLS0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDkuIEEgY2hhbmdlIHRvIGEg R0lOLWluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkCistLQorLS0gVGhlIHJlYWQgc2lk ZSBmaWx0ZXJzIGEgc3RhbGUgbGVhZiB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1h cCwgd2hpY2gKKy0tIGlzIGFjY2Vzcy1tZXRob2QgYWdub3N0aWMsIHNvIGEgR0lOLWNvdmVy ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkIGxpa2UgYW55CistLSBvdGhlcjogb25seSB0aGUg R0lOIGluZGV4IGlzIG1haW50YWluZWQsIGFuZCBhIEdJTiBzY2FuICh3aGljaCByZWNoZWNr cyBvbgorLS0gdGhlIGhlYXApIHJldHVybnMgY29ycmVjdCByZXN1bHRzIGFjcm9zcyB0aGUg Y2hhaW4uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfZ2lu X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICB0YWdzIHRleHRbXSwKICAg ICBwcm9wZXJ0aWVzIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0tLSBHSU4g aW5kZXggb24gdGV4dCBhcnJheQogQ1JFQVRFIElOREVYIGhvdF9naW5fdGFnc19pZHggT04g aG90X2dpbl90ZXN0IFVTSU5HIGdpbiAodGFncyk7Ci0tLSBHSU4gaW5kZXggb24gSlNPTkIg KGpzb25iX29wcyAtIGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3By b3BzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIElOU0VS VCBJTlRPIGhvdF9naW5fdGVzdCBWQUxVRVMKICAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFn MiddLCAneyJrZXkxIjoidmFsMSIsImtleTIiOiJ2YWwyIn0nKSwKICAgICAoMiwgQVJSQVlb J3RhZzMnLCAndGFnNCddLCAneyJrZXkzIjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKLVNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8 IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0g VXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3JkZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIg YW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBIT1QKLS0tIChHSU4gZXh0cmFjdHMgc2FtZSBr ZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikKKy0tIFJlb3JkZXIgdGFnczogYSBHSU4tY292 ZXJlZCBjb2x1bW4gY2hhbmdlcywgc28gdGhpcyBpcyBIT1QtaW5kZXhlZC4KIFVQREFURSBo b3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10gV0hFUkUgaWQg PSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLSB1 cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93 KQotCi0tLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1jb21wYXJl ZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAotLS0gZGVwZW5kaW5nIG9uIEdJTiBvcGVy YXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1ZXMpCi1V UERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZhbDFfbmV3 Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0tKy0t LS0tCi0gICAgICAgMiB8ICAgMAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCiAoMSByb3cpCiAKLS0tIEFkZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1Qg KGRpZmZlcmVudCBleHRyYWN0ZWQga2V5cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRh Z3MgPSBBUlJBWVsndGFnMicsICd0YWcxJywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CiBTRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAzIHwgICAwCi0oMSByb3cpCi0KLS0tIFZl cmlmeSBHSU4gaW5kZXhlcyB3b3JrCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hF UkUgdGFncyBAPiBBUlJBWVsndGFnNSddOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0K LVNFTEVDVCBpZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7Imtl eTEiOiJ2YWwxX25ldyJ9JzsKLSBpZCAKLS0tLS0KLSAgMQorICAgICAgIDEgfCAgIDEKICgx IHJvdykKIAogRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIENsZWFudXAKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0OwotRFJP UCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKLURST1Ag RlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKLURST1AgRlVO Q1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBGVU5D VElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorRFJPUCBGVU5DVElPTiBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9Q IEZVTkNUSU9OIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBn ZXRfaG90X2NvdW50KHRleHQpOwogRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKaW5kZXggYTg4OTQwMDYxNzcuLjM1Y2U3 ZTFjZGNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0xLDM1 NCArMSwyNTggQEAKIC0tCiAtLSBIT1RfVVBEQVRFUwotLS0gVGVzdCBIZWFwLU9ubHkgVHVw bGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucworLS0gVGVzdCBjbGFzc2ljIEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCiAtLQotLS0gVGhpcyB0ZXN0IHN5c3RlbWF0 aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVzZWQgd2hlbiBhcHByb3By aWF0ZQotLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUuZy4sIHdoZW4gaW5kZXhl ZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLSBUaGlzIGZpbGUgY292ZXJzIEhPVCBkZWNp c2lvbnMgdGhhdCBhcHBseSBpZGVudGljYWxseSBvbiBhIHByZS1ob3QtaW5kZXhlZAorLS0g c2VydmVyOiBldmVyeSBVUERBVEUgaGVyZSBlaXRoZXIgbGVhdmVzIGFsbCBpbmRleGVkIGF0 dHJpYnV0ZXMKKy0tIHVuY2hhbmdlZCBvciB0b3VjaGVzIG9ubHkgc3VtbWFyaXppbmctaW5k ZXggKEJSSU4pIGF0dHJpYnV0ZXMsIHNvIHRoZQorLS0gSE9UIHZzIG5vbi1IT1QgY2hvaWNl IGRvZXMgbm90IGRlcGVuZCBvbiB3aGV0aGVyIFNlbGVjdGl2ZSBJbmRleAorLS0gVXBkYXRl IChob3QtaW5kZXhlZCkgaXMgZW5hYmxlZC4gIGhvdC1pbmRleGVkLXNwZWNpZmljIGJlaGF2 aW91ciAoVVBEQVRFcyB0aGF0IG1vZGlmeQorLS0gYSBub24tc3VtbWFyaXppbmcgaW5kZXhl ZCBhdHRyaWJ1dGUpIGlzIGNvdmVyZWQgaW4KKy0tIGhvdF9pbmRleGVkX3VwZGF0ZXMuc3Fs LgogLS0KLS0tIFdlIHVzZSBtdWx0aXBsZSB2YWxpZGF0aW9uIG1ldGhvZHM6Ci0tLSAxLiBT dGF0aXN0aWNzIGZ1bmN0aW9ucyAocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKQot LS0gMi4gcGFnZWluc3BlY3QgZXh0ZW5zaW9uIGZvciBIT1QgY2hhaW4gZXhhbWluYXRpb24K LS0tIDMuIEVYUExBSU4gdG8gdmVyaWZ5IGluZGV4IHVzYWdlIGFmdGVyIHVwZGF0ZXMKKy0t IFZhbGlkYXRpb24gbWV0aG9kczoKKy0tICAgMS4gU3RhdGlzdGljcyAocGdfc3RhdF9nZXRf dHVwbGVzX2hvdF91cGRhdGVkKQorLS0gICAyLiBwYWdlaW5zcGVjdCBmb3IgSE9UIGNoYWlu IHN0cnVjdHVyZQorLS0gICAzLiBFWFBMQUlOIHRvIGNvbmZpcm0gdGhlIHBsYW5uZXIgc3Rp bGwgcGlja3MgdGhlIGluZGV4CiAtLQogCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMK IENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKIAotLS0gRnVu Y3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKKy0tIFN1bSBvZiBjb21taXR0ZWQgYW5k IGluLXByb2dyZXNzIChub24tSE9ULCBIT1QpIHVwZGF0ZSBjb3VudGVycy4KIENSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKIFJFVFVS TlMgVEFCTEUgKAogICAgIHVwZGF0ZXMgQklHSU5ULAogICAgIGhvdCBCSUdJTlQKICkgQVMg JCQKIERFQ0xBUkUKLSAgcmVsX29pZCBvaWQ7CisgICAgcmVsX29pZCBvaWQ7CiBCRUdJTgot ICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOwotCi0gIC0tIFJlYWQgYm90 aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCi0gIC0tIEluIGF1dG9j b21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3Mg Y29ycmVjdGx5Ci0gIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4v Q09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKLSAgLS0gaW5jbHVkZSBmbHVzaGVk IHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKLSAg LS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KLSAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgICAgIENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOwotICBo b3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQp LCAwKSArCi0gICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCk7Ci0KLSAgUkVUVVJOIE5FWFQ7CisgICAgcmVsX29pZCA6 PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVzIDo9IENPQUxFU0NFKHBn X3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgICAg ICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAw KTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVk KHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKIEVO RDsKICQkIExBTkdVQUdFIHBscGdzcWw7CiAKLS0tIENoZWNrIGlmIGEgdHVwbGUgaXMgcGFy dCBvZiBhIEhPVCBjaGFpbiAoaGFzIGEgcHJlZGVjZXNzb3Igb24gc2FtZSBwYWdlKQorLS0g VHJ1ZSBpZmYgdGFyZ2V0X2N0aWQgaXMgdGhlIFRBSUwgb2YgYSBIT1QgY2hhaW4gb24gdGhl IHNhbWUgcGFnZS4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4o cmVsX25hbWUgdGV4dCwgdGFyZ2V0X2N0aWQgdGlkKQogUkVUVVJOUyBib29sZWFuIEFTICQk CiBERUNMQVJFCi0gIGJsb2NrX251bSBpbnQ7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7CisgICAg YmxvY2tfbnVtIGludDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOwogQkVHSU4KLSAgYmxvY2tf bnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7Ci0KLSAgLS0gTG9v ayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSB0aGF0IHBvaW50cyB0 byBvdXIgdGFyZ2V0IHR1cGxlCi0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAgICBTRUxFQ1QgbHAs IGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3Bh Z2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUgbHBfZmxhZ3MgPSAxCi0gICAg ICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCi0gICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0 aWQKLSAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRl eHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCi0gIExPT1AKLSAgICBSRVRVUk4gdHJ1 ZTsKLSAgRU5EIExPT1A7Ci0KLSAgUkVUVVJOIGZhbHNlOworICAgIGJsb2NrX251bSA6PSAo dGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OworICAgIEZPUiBwYWdlX2l0ZW0g SU4KKyAgICAgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgICAgIEZST00g aGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAg ICAgICAgV0hFUkUgbHBfZmxhZ3MgPSAxCisgICAgICAgICAgQU5EIHRfY3RpZCBJUyBOT1Qg TlVMTAorICAgICAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAgICAgIEFO RCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6 dGlkICE9IHRhcmdldF9jdGlkCisgICAgTE9PUAorICAgICAgICBSRVRVUk4gdHJ1ZTsKKyAg ICBFTkQgTE9PUDsKKyAgICBSRVRVUk4gZmFsc2U7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBn c3FsOwogCi0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0 dXBsZQorLS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQs IHN0YXJ0X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0 aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikg QVMKICQkCiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9j a19udW0gaW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3Rh cnRfY3RpZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1h eF9pdGVyYXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5k X3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAg ICBibG9ja19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQg dGlkIDo9IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBp bnQgOj0gMDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRl bSByZWNvcmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAg ICBmbGFnc19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6 OnRleHQ6OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChv bGQgdHVwbGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0g SU4KLSAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFn ZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUg bHBfZmxhZ3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0g ICAgY3VycmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBw YWdlX2l0ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29y IDo9IHRydWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVj ZXNzb3IgZm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5k X3ByZWRlY2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAg RU5EIElGOwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3Np dGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9j dGlkOjp0ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0 aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAg ICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBs cCA9IGxpbmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAg ICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2Nr X251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0 aWQgPSBzdGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5h bWVzCi0gICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAg ICAgIFdIRU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9y bWFsICgxKScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAg V0hFTiAzIFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBh Z2VfaXRlbS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVU VVJOIFFVRVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9j dGlkLAotICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAot ICAgICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQg PSBjdXJyZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRl bS50X2N0aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRI RU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQg Oj0gcGFnZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9p bnQpWzBdOjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAg RU5EIElGOwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9z aXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8 fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScp Ojp0aWQ7CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVY SVQ7CiAgICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAg UkVUVVJOOworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisK KyAgICBXSElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGlu ZV9wdHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAg IEZPUiBwYWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRf Y3RpZAorICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJl bF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgor ICAgICAgICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVt LmxwX2ZsYWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisg ICAgICAgICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAg ICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMg VEhFTiAnZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBw YWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAg ICAgICAgICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24s CisgICAgICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdz X25hbWUsCisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAg ICAgICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBj dXJyZW50X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9j dGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisg ICAgICAgICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAg ICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4 dF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAg ICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1 cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3Np dGlvbiArIDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAg VEhFTgorICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExP T1A7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBCYXNpYyBIT1QgdXBkYXRl ICh1cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uKQorCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDEuIEJhc2ljIEhPVDogdXBkYXRlIG9mIGEgbm9uLWluZGV4ZWQgY29sdW1uCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAg aWQgaW50IFBSSU1BUlkgS0VZLAogICAgIGluZGV4ZWRfY29sIGludCwKICAgICBub25faW5k ZXhlZF9jb2wgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCiBDUkVBVEUgSU5E RVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOwogCiBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKIElOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnaW5pdGlhbCcpOwogSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgzLCAzMDAsICdpbml0aWFsJyk7CiAKLS0tIEdldCBiYXNl bGluZQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBTaG91bGQgYmUgSE9UIHVwZGF0 ZXMgKG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorLS0gVGhyZWUgY2xhc3Np YyBIT1QgdXBkYXRlcyAobm9uLWluZGV4ZWQgY29sKS4KIFVQREFURSBob3RfdGVzdCBTRVQg bm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CiBVUERBVEUgaG90 X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwog VVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDMnIFdIRVJF IGlkID0gMzsKLQotLS0gVmVyaWZ5IEhPVCB1cGRhdGVzIG9jY3VycmVkCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0KLS0tIER1bXAgdGhlIEhPVCBjaGFp biBiZWZvcmUgVkFDVVVNaW5nCi1XSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1Qg Y3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3Rf Y2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0g IGNoYWluX3Bvc2l0aW9uLAotICBwcmludF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3Ms Ci0gIHRfY3RpZAotRlJPTSBjdXJyZW50X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hh aW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKTsKLQotLS0gVmFjdXVtIHRoZSBy ZWxhdGlvbiwgZXhwZWN0IHRoZSBIT1QgY2hhaW4gdG8gY29sbGFwc2UKLVZBQ1VVTSBob3Rf dGVzdDsKLQotLS0gU2hvdyB0aGF0IHRoZXJlIGlzIG5vIGNoYWluIGFmdGVyIHZhY3V1bQot V0lUSCBjdXJyZW50X3R1cGxlIEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBX SEVSRSBpZCA9IDEKLSkKLVNFTEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAg cHJpbnRfaG90X2NoYWluLmN0aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3Vy cmVudF90dXBsZSwKLUxBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJl bnRfdHVwbGUuY3RpZCk7Ci0KLS0tIE5vbi1IT1QgdXBkYXRlICh1cGRhdGUgaW5kZXhlZCBj b2x1bW4pCi1VUERBVEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlk ID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLQotLS0g VmVyaWZ5IGluZGV4IHdhcyB1cGRhdGVkIChuZXcgdmFsdWUgZmluZGFibGUpCi1TRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwgaW5k ZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKLVNFTEVD VCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDE1 MDsKLQotLS0gVmVyaWZ5IG9sZCB2YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKLUVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wg PSAxMDA7Ci1TRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEw MDsKLVJFU0VUIGVuYWJsZV9zZXFzY2FuOwotCi0tLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTog dXBkYXRpbmcgb25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVz Ci1EUk9QIFRBQkxFIGhvdF90ZXN0OwotCi1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAg IGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAot ICAgIGNvbF9jIGludCwKLSAgICBub25faW5kZXhlZCB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7Ci0KLUNSRUFURSBJTkRFWCBob3RfdGVzdF9hX2lkeCBPTiBob3RfdGVzdChj b2xfYSk7Ci1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYl9pZHggT04gaG90X3Rlc3QoY29sX2Ip OwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2NfaWR4IE9OIGhvdF90ZXN0KGNvbF9jKTsKLQot SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcp OwotCi0tLSBVcGRhdGUgb25seSBjb2xfYSAtIHNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2Ug YW4gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZAotLS0gVGhpcyBtZWFucyBBTEwgaW5kZXhlcyBt dXN0IGJlIHVwZGF0ZWQgKGFsbC1vci1ub25lIHByb3BlcnR5KQotVVBEQVRFIGhvdF90ZXN0 IFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK IAotLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBiZSBI T1QKLVVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7Ci1TRUxF Q1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSBDaGFpbi1vZi0xIG9u IGlkPTEgc3RpbGwgaGFzIGEgcHJlZGVjZXNzb3IgbGluZSBwb2ludGVyLgorV0lUSCBjdXJy ZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGlkID0gMSkK K1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9uLCBwcmludF9ob3RfY2hhaW4u Y3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50X3R1cGxlLCBMQVRFUkFMIHBy aW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwogCi0tLSBQ YXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUgcHJlZGljYXRlIChjb25z ZXJ2YXRpdmUgPSBub24tSE9UKQotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRFIFRB QkxFIGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgc3RhdHVzIHRl eHQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLS0tIFBh cnRpYWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKLUNSRUFURSBJTkRF WCBob3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgJ2FjdGl2 ZScsICdkYXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAnaW5hY3Rp dmUnLCAnZGF0YTInKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgJ2RlbGV0 ZWQnLCAnZGF0YTMnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnYWN0 aXZlJyByb3cgKGluIHByZWRpY2F0ZSwgc3RhdHVzIHVuY2hhbmdlZCkKLS0tIFNob3VsZCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBV cGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHBy ZWRpY2F0ZSkKLS0tIFNob3VsZCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkMicgV0hFUkUgaWQgPSAyOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworLS0gVkFDVVVNIGNvbGxhcHNlcyB0aGUgY2hhaW4uCitWQUNVVU0g aG90X3Rlc3Q7CiAKLS0tIFVwZGF0ZSBzdGF0dXMgZnJvbSAnaW5hY3RpdmUnIHRvICdkZWxl dGVkJyAoYm90aCBvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFBvc3RncmVTUUwgaXMgY29uc2Vy dmF0aXZlOiBoZWFwIGluc2VydCBoYXBwZW5zIGJlZm9yZSBwcmVkaWNhdGUgY2hlY2sKLS0t IFNvIHRoaXMgaXMgTk9OLUhPVCBldmVuIHRob3VnaCBib3RoIHZhbHVlcyBhcmUgb3V0c2lk ZSBwcmVkaWNhdGUKLVVQREFURSBob3RfdGVzdCBTRVQgc3RhdHVzID0gJ2RlbGV0ZWQnIFdI RVJFIGlkID0gMjsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK K1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVS RSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwgcHJpbnRf aG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90dXBsZSwg TEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlk KTsKIAotLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZlJyByb3dzCi1T RUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUn OwotCi0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1 bW5zCiBEUk9QIFRBQkxFIGhvdF90ZXN0OwogCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDIuIFN1bW1hcml6aW5nIGluZGV4ZXMgKEJSSU4pIGRvIG5vdCBibG9jayBIT1QKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdHMgdGltZXN0YW1wLAogICAgIHZhbHVlIGludCwK ICAgICBicmluX2NvbCBpbnQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQogQ1JFQVRF IElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJpbih0cyk7CiBD UkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVzdCBVU0lORyBi cmluKGJyaW5fY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnMjAy NC0wMS0wMScsIDEwMCwgMTAwMCk7CiAKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAt IHNob3VsZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKKy0tIEJS SU4gY29sdW1ucyBhcmUgc3VtbWFyaXppbmc7IHVwZGF0aW5nIHRoZW0gc3RheXMgY2xhc3Np YyBIT1QgZXZlbgorLS0gdGhvdWdoIHRoZWlyIHZhbHVlcyBjaGFuZ2UuCiBVUERBVEUgaG90 X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmluX2NvbCA9IDIwMDAgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGFsc28gYmUgSE9UCistLSBOb24taW5kZXhlZCBjb2x1bW46IGFs c28gSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7 CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRPQVNUIGFuZCBIT1Q6IFRPQVNUZWQg Y29sdW1ucyBjYW4gcGFydGljaXBhdGUgaW4gSE9UCiBEUk9QIFRBQkxFIGhvdF90ZXN0Owog CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMuIFRPQVNUIHBhcnRpY2lwYXRlcyBp biBIT1QgKG5vbi1pbmRleGVkIGNvbHVtbiBwYXRocyBvbmx5KQorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZ IEtFWSwKICAgICBpbmRleGVkX2NvbCBpbnQsCiAgICAgbGFyZ2VfdGV4dCB0ZXh0LAogICAg IHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCiBDUkVBVEUg SU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKIAotLS0gSW5z ZXJ0IHJvdyB3aXRoIFRPQVNUZWQgY29sdW1uICg+IDJLQikKIElOU0VSVCBJTlRPIGhvdF90 ZXN0IFZBTFVFUyAoMSwgMTAwLCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CiAKLS0t IFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhP VAorLS0gTm9uLWluZGV4ZWQsIG5vbi1UT0FTVCBjb2x1bW46IEhPVC4KIFVQREFURSBob3Rf dGVzdCBTRVQgc21hbGxfdGV4dCA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKIAotLS0gVXBkYXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRl eGVkIGNvbHVtbiB1bmNoYW5nZWQKKy0tIFRPQVNUIGNvbHVtbiwgaW5kZXhlZF9jb2wgdW5j aGFuZ2VkOiBIT1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVXBkYXRlIGluZGV4 ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5k ZXhlZF9jb2wgPSAyMDA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0 Jyk7Ci0KLS0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlr ZSByZWd1bGFyIGluZGV4CiBEUk9QIFRBQkxFIGhvdF90ZXN0OwogCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDQuIFBhcnRpYWwgaW5kZXggd2hlcmUgdXBkYXRlIGxlYXZlcyBp bmRleGVkIGF0dHJzIHVuY2hhbmdlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICB1bmlx dWVfY29sIGludCBVTklRVUUsCisgICAgc3RhdHVzIHRleHQsCiAgICAgZGF0YSB0ZXh0CiAp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZl X2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwogCi1J TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2RhdGExJyk7Ci1JTlNFUlQg SU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CiAKLS0tIFVwZGF0ZSBk YXRhIChub24taW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VU IGRhdGEgPSAndXBkYXRlZCc7CistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBzdGF0 dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KK1VQREFURSBob3RfdGVz dCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwogCi0tLSBWZXJpZnkgdW5pcXVlIGNvbnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQK LVNFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0IE9SREVSIEJZIGlk OworLS0gVXBkYXRlIGRhdGEgb24gYSByb3cgb3V0c2lkZSB0aGUgcHJlZGljYXRlOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVl IHZpb2xhdGlvbikKLVVQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVS RSBpZCA9IDI7CitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1 cyA9ICdhY3RpdmUnOwogCi0tLSBNdWx0aS1jb2x1bW4gaW5kZXg6IGFueSBjb2x1bW4gY2hh bmdlID0gbm9uLUhPVAogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSA1LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5k ZXhlZCBjb2x1bW4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhv dF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgY29sX2EgaW50LApAQCAt MzU2LDM2ICsyNjAsNDUgQEAgQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBjb2xfYyBp bnQsCiAgICAgZGF0YSB0ZXh0CiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KIENSRUFU RSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsKIAog SU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnZGF0YScpOwog Ci0tLSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3Vs ZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CistLSBjb2xf YyBub3QgaW4gYW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0g MzU7CistLSBkYXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBT RVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUmVz ZXQKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKLQotLS0gVXBkYXRlIGNvbF9i IChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfdGVzdCcpOworRFJPUCBUQUJMRSBob3RfdGVzdDsKIAotLS0gUmVzZXQKLVVQ REFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyMDsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gVW5p cXVlIGluZGV4OiB1cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uICsgdW5pcXVlbmVzcyBl bmZvcmNlbWVudAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90 X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB1bmlxdWVfY29sIGludCBV TklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CiAKLS0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgx LCAxMDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAs ICdkYXRhMicpOwogCi0tLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJl IEhPVAogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworU0VMRUNUIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOwogCi0tLSBQYXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRo aW4gcGFydGl0aW9ucwotRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9u ZWQgQ0FTQ0FERTsKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBGUk9NIGhvdF90ZXN0 IE9SREVSIEJZIGlkOwogCistLSBVbmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZCBv biBhbnkgcGF0aC4KK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVS RSBpZCA9IDI7CisKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd2l0aGluIGEgcGFydGl0 aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdF9w YXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAogICAgIHBhcnRpdGlvbl9rZXkgaW50LApAQCAt NDA0LDIwMiArMzE3LDgyIEBAIENSRUFURSBJTkRFWCBob3RfdGVzdF9wYXJ0X2lkeCBPTiBo b3RfdGVzdF9wYXJ0aXRpb25lZChpbmRleGVkX2NvbCk7CiBJTlNFUlQgSU5UTyBob3RfdGVz dF9wYXJ0aXRpb25lZCBWQUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOwogSU5TRVJU IElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRp YWwyJyk7CiAKLS0tIFVwZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1u KSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0 YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOwotCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9u IDIgKG5vbi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rl c3RfcGFydGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKIAor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0 MicpOwogCi0tLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9uIHBhcnRpdGlvbnMKIFNFTEVDVCBp ZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOwog U0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wg PSAyMDA7CiAKLS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24gLSBzaG91 bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBpbmRleGVk X2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0X3BhcnQxJyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAotU0VM RUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAx NTA7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0 aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJz IG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBl dmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1 c2UKLQotQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAotICAgIGlkIGludCBQUklN QVJZIEtFWSwKLSAgICB0cmlnZ2VyZWRfY29sIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKLQotQ1JFQVRFIElOREVYIGhvdF90cmlnZ2VyX2lkeCBP TiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wpOwotCi0tLSBDcmVhdGUgYSB0cmln Z2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAk JAotQkVHSU4KLSAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsg MTsKLSAgICBSRVRVUk4gTkVXOwotRU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLQotQ1JF QVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKLSAgICBCRUZPUkUgVVBEQVRFIE9O IGhvdF90cmlnZ2VyX3Rlc3QKLSAgICBGT1IgRUFDSCBST1cKLSAgICBFWEVDVVRFIEZVTkNU SU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90cmlnZ2Vy X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7Ci0KLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0tLSBVcGRhdGUgb25seSBkYXRh IGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW4KLS0tIFNob3Vs ZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2RpZmllZCBhbiBpbmRleGVkIGNvbHVt bgotVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUg aWQgPSAxOwotCi0tLSBWZXJpZnkgaXQgd2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQg Y29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSB0aGUgdHJpZ2dlcmVk IGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKLVNFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7Ci0KLURST1AgVEFCTEUgaG90X3Ry aWdnZXJfdGVzdCBDQVNDQURFOwotRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2Nv bCgpOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU09OQiBleHByZXNzaW9u IGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKLS0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIEpTT05CIHBh dGhzIGNhbiBiZSBIT1QgdXBkYXRlcworRFJPUCBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25l ZCBDQVNDQURFOwogCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4 cHJlc3Npb24gaW5kZXg6IG5vbi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAg IGlkIGludCBQUklNQVJZIEtFWSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7Ci0KLS0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMg SlNPTiBwYXRoCiBDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29u Yl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwogCiBJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVz dCBWQUxVRVMKICAgICAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5Z QyJ9JyksCiAgICAgKDIsICd7Im5hbWUiOiJCb2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScp OwogCi1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0K LS0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9U IGFmdGVyIGluc3RydW1lbnRhdGlvbgorLS0gVGhlIGpzb25iIGNvbHVtbiBpcyB0aGUgZXhw cmVzc2lvbiBpbmRleCdzIGlucHV0LCBzbyBIT1QtaW5kZXhlZCBpcworLS0gZGlzcXVhbGlm aWVkIChleHByZXNzaW9uIGluZGV4ZXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkKSBhbmQgdGhl IGpzb25iCistLSBjaGFuZ2UgYmxvY2tzIGNsYXNzaWMgSE9UOiBub24tSE9UIHVwZGF0ZS4K IFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2Fn ZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2pzb25iX3Rlc3QnKTsKLQotLS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRh dGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0g MTsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogCi0tLSBWZXJpZnkgaW5kZXgg d29ya3MKLVNFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFt ZScgPSAnQWxpY2UyJzsKLQotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQg cGF0aCAtIHNob3VsZCBiZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCistLSBMaWtld2lz ZSBub24tSE9UOiBleHByZXNzaW9uIGluZGV4IGRpc3F1YWxpZmllcyBIT1QtaW5kZXhlZC4K IFVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hFUkUg aWQgPSAyOwotCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CiAKLS0tIFRlc3QganNv bmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGlu c3RydW1lbnRhdGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBk aXNxdWFsaWZpZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRh dGEgPSBqc29uYl9pbnNlcnQoZGF0YSwgJ3tjb3VudHJ5fScsICciVVNBIicpIFdIRVJFIGlk ID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwogCiBEUk9QIFRBQkxFIGhv dF9qc29uYl90ZXN0OwogCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBYTUwgZXhw cmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0tLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBY TUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi0KLUNSRUFURSBUQUJMRSBob3RfeG1sX3Rl c3QgKAotICAgIGlkIGludCBQUklNQVJZIEtFWSwKLSAgICBkb2MgeG1sCi0pIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7Ci0KLS0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3Bl Y2lmaWMgWFBhdGgKLUNSRUFURSBJTkRFWCBob3RfeG1sX25hbWVfaWR4IE9OIGhvdF94bWxf dGVzdCAoKHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSkpOwotCi1JTlNFUlQg SU5UTyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNl PC9uYW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+PG5h bWU+Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLQotU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRl eGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29tcGFyaXNvbiBm YWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMgbm9uLWluZGV4 ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNvbgotVVBEQVRF IGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFn ZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBGUk9NIGdl dF9ob3RfY291bnQoJ2hvdF94bWxfdGVzdCcpOwotCi0tLSBVcGRhdGUgaW5kZXhlZCBYUGF0 aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQg ZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNv bj4nIFdIRVJFIGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf eG1sX3Rlc3QnKTsKLQotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBo b3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0g QVJSQVlbJ0FsaWNlMic6OnRleHRdOwotCi1EUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKLQot LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gR0lOIGluZGV4ZXMgYW5kIGFtY29tcGFy ZWRhdHVtcyBmb3IgSlNPTkIKLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3Qg dGhhdCBHSU4gaW5kZXhlcyBjYW4gdXNlIGFtY29tcGFyZWRhdHVtcyB0byBlbmFibGUgSE9U IHdoZW4gZXh0cmFjdGVkIGtleXMgbWF0Y2gKLQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA5LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhl ZAorLS0KKy0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFn bm9zdGljLCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFu eQorLS0gb3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBH SU4gc2NhbiAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJl Y3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVks CiAgICAgdGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotCi0tLSBHSU4gaW5kZXggb24gdGV4dCBhcnJheQogQ1JFQVRFIElO REVYIGhvdF9naW5fdGFnc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAodGFncyk7 Ci0KLS0tIEdJTiBpbmRleCBvbiBKU09OQiAoanNvbmJfb3BzIC0ga2V5cyBhbmQgdmFsdWVz KQogQ1JFQVRFIElOREVYIGhvdF9naW5fcHJvcHNfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lO RyBnaW4gKHByb3BlcnRpZXMpOwogCiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CiAgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CiAKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVy IGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9U Ci0tLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCist LSBSZW9yZGVyIHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMg aXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlb J3RhZzInLCAndGFnMSddIFdIRVJFIGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qg a2V5KSAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0t IGRlcGVuZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJv dGgga2V5cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGll cyA9ICd7ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsK LQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwogU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3QnKTsKIAotLS0gQWRkIG5ldyB0YWcgLSBzaG91 bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQotVVBEQVRFIGhvdF9n aW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFnNSddIFdIRVJF IGlkID0gMTsKLQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3Qn KTsKLQotLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKLVNFTEVDVCBpZCBGUk9NIGhvdF9n aW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107Ci1TRUxFQ1QgaWQgRlJPTSBo b3RfZ2luX3Rlc3QgV0hFUkUgcHJvcGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7 Ci0KIERST1AgVEFCTEUgaG90X2dpbl90ZXN0OwogCi0tLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIENsZWFudXAKLS0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0OwotRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKLURST1AgRlVO Q1RJT04gSUYgRVhJU1RTIGhhc19ob3RfY2hhaW4odGV4dCwgdGlkKTsKLURST1AgRlVOQ1RJ T04gSUYgRVhJU1RTIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOwotRFJPUCBGVU5DVElP TiBJRiBFWElTVFMgZ2V0X2hvdF9jb3VudCh0ZXh0KTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorRFJPUCBGVU5DVElPTiBoYXNfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZV TkNUSU9OIHByaW50X2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBnZXRf aG90X2NvdW50KHRleHQpOwogRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGZmYjQxM2FiNjEyLi4wYmMxZDUxNDM0MSAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEyNzcsNiArMTI3Nyw3IEBAIEhlYXBU dXBsZUZyZWV6ZQogSGVhcFR1cGxlSGVhZGVyCiBIZWFwVHVwbGVIZWFkZXJEYXRhCiBIZWFw VHVwbGVUYWJsZVNsb3QKK0hlYXBVcGRhdGVJbmRleE1vZGUKIEhpc3RDb250cm9sCiBIb3N0 Q2FjaGVFbnRyeQogSG9zdHNGaWxlTG9hZFJlc3VsdApAQCAtMzEzOCw3ICszMTM5LDYgQEAg VFNWZWN0b3JTdGF0CiBUU3RhdGUKIFRTdGF0dXMKIFRTdG9yZVN0YXRlCi1UVV9VcGRhdGVJ bmRleGVzCiBUWE5FbnRyeUZpbGUKIFRZUENBVEVHT1JZCiBUX0FjdGlvbgotLSAKMi41MC4x Cgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBiOWEwOTE2NGUxODNmZjMzMmY5MWRhY2QxMjg1N2Q1M2EwYmM4NjU1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDUv OV0gQ29sbGFwc2UgZGVhZCBIT1QtaW5kZXhlZCBjaGFpbnMgdG8geGlkLWZyZWUgc3R1YnMg b24KIHBydW5lL3ZhY3V1bQoKQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGluZGV4IGVu dHJpZXMgdGhhdCBwb2ludCBhdCBtaWQtY2hhaW4gaGVhcC1vbmx5CnR1cGxlcywgc28gYSBk ZWFkIGNoYWluIG1lbWJlciBjYW5ub3Qgc2ltcGx5IGJlIHJlbW92ZWQ6IGEgbm90LXlldC1z d2VwdCBpbmRleAplbnRyeSBtYXkgc3RpbGwgYXJyaXZlIGF0IGl0LCBhbmQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9uIGl0IGlzCndoYXQgYSByZWFkZXIgdW5pb25z IHRvIGp1ZGdlIHN0YWxlbmVzcy4KClRlYWNoIHBydW5lIHRvIGNvbGxhcHNlIGEgZGVhZCBj aGFpbiBwcmVmaXggaW50byB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzOgplYWNoIHByZXNl cnZlZCBkZWFkIGtleSB0dXBsZSBpcyByZXdyaXR0ZW4gaW4gcGxhY2UgdG8gYSBzdHViIChm cm96ZW4sCm5hdHRzID09IDAsIEhFQVBfSU5ERVhFRF9VUERBVEVELCBmb3J3YXJkaW5nIHZp YSB0X2N0aWQub2ZmbnVtKSB0aGF0IGtlZXBzIGl0cwpzZWdtZW50J3MgbW9kaWZpZWQtYXR0 cnMgYml0bWFwLCBhbmQgYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgd2hvbGx5CnN1 YnN1bWVkIGJ5IGxhdGVyIGhvcHMgaXMgcmVjbGFpbWVkIGluc3RlYWQuICBSZWFkZXJzIHN0 ZXAgdGhyb3VnaCBzdHVicwp0cmFuc3BhcmVudGx5IGFuZCBzdGlsbCBjcm9zcyBldmVyeSBz dXJ2aXZpbmcgaG9wJ3MgYml0bWFwLiAgVGhlIGNvbGxhcHNlIGJhY2sKdG8gY2xhc3NpYyBI T1QgaXMgZHJpdmVuIGJ5IHBydW5lOiBvbmNlIGEgY2hhaW4gaXMgZnVsbHkgZGVhZCwgYSBs YXRlciBwcnVuZQooaGVhcF9wcnVuZV9jaGFpbiAvIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9s aXZlKSByZWNsYWltcyBpdHMgbWVtYmVycyBhbmQKcmUtcG9pbnRzIHRoZSByb290IHJlZGly ZWN0IHN0cmFpZ2h0IGF0IHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgVkFDVVVNJ3MgaW5kZXgK Y2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGxlYXZlczsgaXRzIHNlY29uZCBwYXNzIChsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMKdGhlIHVzdWFsIExQX0RFQUQgLT4gTFBfVU5VU0VE IGNvbnZlcnNpb24gYW5kIGxlYXZlcyB0aGUgSE9ULWluZGV4ZWQgY29sbGFwc2UKdG8gcHJ1 bmUuCgpUaGUgY29sbGFwc2UgcmV1c2VzIHRoZSBleGlzdGluZyBwcnVuZS9mcmVlemUgV0FM IHZpYSBhbiB4bGhwX3BydW5lX2l0ZW1zCnN1Yi1yZWNvcmQgY2FycnlpbmcgdGhlIChvZmZz ZXQsIGZvcndhcmQpIHN0dWIgcGFpcnM7IG5vIG5ldyByZWNvcmQgdHlwZSBpcwppbnRyb2R1 Y2VkLiAgQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBhIHByZXNlcnZlZCBzdHViIChvciBh IHJlZGlyZWN0IHRoYXQKZm9yd2FyZHMgaW50byBhIGxpdmUgSE9ULWluZGV4ZWQgbWVtYmVy KSBpcyBrZXB0IG5vbi1hbGwtdmlzaWJsZSBzbyBpbmRleC1vbmx5CnNjYW5zIGhlYXAtZmV0 Y2ggdGhyb3VnaCB0aGUgY2hhaW47IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSBy ZWNvZ25pemVzCmJvdGggdGhlIHJlZGlyZWN0LXRvLVNJVSBhbmQgdGhlIHN0dWIgY2FzZSBl eHBsaWNpdGx5LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpD by1hdXRob3JlZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAg MzggKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgIHwgNjY4 ICsrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgIHwgIDkyICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICAgICB8ICAxOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA4MDkgaW5zZXJ0aW9ucygr KSwgNjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5hYjRmOGJjMTg4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjA2LDYgKzIw Niw0NCBAQCB1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNh bCwgZS5nLiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcwogc3RpbGwgZGV0ZWN0ZWQuICAoQXBw ZW5kaXggQSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCiAKIAorUHJ1bmUg YW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1 c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4IGVudHJ5IHBvaW50aW5n IGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24gVElELCBjbGFzc2ljIEhP VCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9pbnRlcnMgaGF2ZSBubyBl eHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBydW5pbmcgdGhlcmVmb3Jl IG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIgd2hpbGUgYSBub3QteWV0 LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0IGl0LgorCitoZWFwX3By dW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWluIG1lbWJlcnMgdG8gYSBz aW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhlIGZpcnN0IGxpdmUgdHVw bGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2YgYSBsaXZlIEhPVC1pbmRl eGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkKK3Nv IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0aWxsIGZpbmRzIGEgd2Fs a2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1QgbWF5IGZvcndhcmQgdG8g dGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZlY3ljbGUKK3JldXNlcyB0 aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlzIG5vIG5ldyBvbi1kaXNr IGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQor CitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgaW5kZXggZW50cmll cy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBpcyBkcml2ZW4gYnkgcHJ1 bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBhIGNoYWluIGlzCitmdWxs eSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9j aGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBhbmQgcmUtcG9pbnRzIHRo ZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUuCitSZS1wb2ludGluZyBh IHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlciBzdGlsbCBy ZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRlciB0aGUgZXhjbHVzaXZl IGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJlLXBvaW50CityZWRpcmVj dHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVzdWFsIExQX0RFQUQgLT4g TFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhPVC1pbmRleGVkIGNvbGxh cHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZpdm9yCitzdHViIGlzIGRl bGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhhdCBhbiBpbmRleC1vbmx5 IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRyaWVzIChlbmZvcmNlZCBp biBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIgcmVjb3JkZXJzLCBhbmQK K2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwogQXBwZW5kaWNlcwogLS0t LS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5 ZWQ3MDI0ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJl ZXplX3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZz ZXROdW1iZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIg PSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlk b19wcnVuZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxh bnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJl Y3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAg Jm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCwKKwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3By dW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBu c3R1YnMgPiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICov CiAJCUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxh Z3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5y ZWRpcmVjdGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVz ZWQsIG51bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJ c3R1YnMsIG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBw ID0gMDsgcCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmZGRkZDIzMDM1Yi4uZWUzYjM0MGM1YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJl ZGlyZWN0ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlp bnQJCQluZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQlu ZnJvemVuOwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0 byBiZSBjaGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVy UGFnZV07CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CisKKwkvKgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9y IHN0dWJzOiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMg cmV3cml0dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJz IHRoYXQgcHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4K KwkgKi8KKwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsK KwogCUhlYXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJ LyoKQEAgLTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0 aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2Zm bnVtLAogCQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBf cHJ1bmVfcmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKKwkJCQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0 YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3By ZXNlcnZlc19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAt NDM5LDYgKzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+ bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVu ID0gMDsKIAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5 X2l0ZW1zID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhl IHR1cGxlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNz aW5nLgogCQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlz IGFuIExQX05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVB UF9JTkRFWEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2li bGUKKwkJICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsg YW5kIHRoZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdt ZW50IGl0IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIHdvdWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5n IHdvdWxkIHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMu CisJCSAqIFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2 ZWQ7IHRoZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFy ZW50bHkgdG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ dHVwLnRfZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVt aWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsK QEAgLTY3NywxOCArNzEwLDM4IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAo bGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJ CUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJ CQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOworCQkJLyoKKwkJCSAqIEEg ZGVhZCBoZWFwLW9ubHkgdHVwbGUgdGhhdCBjYXJyaWVzIGEgc3RhbGUgYnRyZWUgbGVhZiBv ZiBpdHMKKwkJCSAqIG93biAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzID4gMCkgaXMg YSBIT1QtaW5kZXhlZCBjaGFpbgorCQkJICogbWVtYmVyIG5vdCByZWFjaGVkIGJ5IGFueSBj aGFpbiB3YWxrIChhbiBhYm9ydGVkCisJCQkgKiBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBz dWItY2hhaW4sIG9yIGEgbWVtYmVyIHdob3NlIGxpdmUgcm9vdAorCQkJICogc3RvcHBlZCB0 aGUgd2FsaykuICBNYXJrIGl0IExQX0RFQUQgaW5zdGVhZCBvZiByZWNsYWltaW5nIGl0CisJ CQkgKiBvdXRyaWdodDogdGhhdCBwaW5zIHRoZSBzbG90IGFnYWluc3QgcmV1c2UgYW5kIGFk ZHMgaXQgdG8gdGhlCisJCQkgKiBkZWFkLWl0ZW1zIGFycmF5IHNvIGFtYnVsa2RlbGV0ZSBz d2VlcHMgdGhlIHN0YWxlIGxlYWYgYW5kIGEKKwkJCSAqIGxhdGVyIHZhY3V1bSByZWNsYWlt cyB0aGUgTFAuCisJCQkgKgorCQkJICogT3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBjbGFzc2lj LUhPVCBjYXNlIHVwc3RyZWFtIGhhcyBhbHdheXMKKwkJCSAqIGhhbmRsZWQgaGVyZTogYSBk ZWFkIGhlYXAtb25seSB0dXBsZSB3aXRoIG5vIGxlYWYgb2YgaXRzIG93bgorCQkJICogc2hv dWxkIGhhdmUgYmVlbiByZWFjaGVkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgcHJ1bmluZyBp dHMKKwkJCSAqIEhPVCBjaGFpbi4gIElmIGl0IGlzIG5vdCBIb3RVcGRhdGVkLCBpdCBpcyBh IGxlZ2l0aW1hdGUKKwkJCSAqIHN0YW5kYWxvbmUgZGVhZCBoZWFwLW9ubHkgdHVwbGUgKGUu Zy4gYW4gYWJvcnRlZCB1cGRhdGUpIGFuZAorCQkJICogY2FuIGJlIHJlY2xhaW1lZDsgaWYg aXQgKmlzKiBIb3RVcGRhdGVkLCBzb21ldGhpbmcgaXMgd3JvbmcgLS0KKwkJCSAqIHByZXNl cnZlIGl0IGFuZCBlcnJvciBvdXQgcmF0aGVyIHRoYW4gc2lsZW50bHkgZGVzdHJveSB0aGUK KwkJCSAqIGV2aWRlbmNlLgorCQkJICovCisJCQlIZWFwVHVwbGVIZWFkZXJBZHZhbmNlQ29u ZmxpY3RIb3Jpem9uKGh0dXAsCisJCQkJCQkJCQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlk X3JlbW92ZWQpOworCQkJaWYgKChodHVwLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9V UERBVEVEKSAhPSAwICYmCisJCQkJSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMoaHR1cCkgPiAw KQorCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIG9mZm51 bSwgdHJ1ZSk7CisJCQllbHNlIGlmIChsaWtlbHkoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBk YXRlZChodHVwKSkpCiAJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9m Zm51bSwgdHJ1ZSk7Ci0JCQl9CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKLQkJCQkgKiBUaGlz IHR1cGxlIHNob3VsZCd2ZSBiZWVuIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBhcyBwYXJ0IG9m Ci0JCQkJICogYSBIT1QgY2hhaW4sIHNvIHNvbWV0aGluZydzIHdyb25nLiAgVG8gcHJlc2Vy dmUgZXZpZGVuY2UsCi0JCQkJICogd2UgZG9uJ3QgZGFyZSB0byByZW1vdmUgaXQuICBXZSBj YW5ub3QgbGVhdmUgYmVoaW5kIGEgREVBRAorCQkJCSAqIFRoaXMgdHVwbGUgc2hvdWxkJ3Zl IGJlZW4gcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGFzIHBhcnQgb2YgYQorCQkJCSAqIEhPVCBj aGFpbiwgc28gc29tZXRoaW5nJ3Mgd3JvbmcuICBUbyBwcmVzZXJ2ZSBldmlkZW5jZSwgd2UK KwkJCQkgKiBkb24ndCBkYXJlIHRvIHJlbW92ZSBpdC4gIFdlIGNhbm5vdCBsZWF2ZSBiZWhp bmQgYSBERUFECiAJCQkJICogdHVwbGUgZWl0aGVyLCBiZWNhdXNlIHRoYXQgd2lsbCBjYXVz ZSBWQUNVVU0gdG8gZXJyb3Igb3V0LgogCQkJCSAqIFRocm93aW5nIGFuIGVycm9yIHdpdGgg YSBkaXN0aW5jdCBlcnJvciBtZXNzYWdlIHNlZW1zIGxpa2UKIAkJCQkgKiB0aGUgbGVhc3Qg YmFkIG9wdGlvbi4KQEAgLTExNjMsNyArMTIxNiw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3Rh dGUubnJlZGlyZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3Rh dGUubnVudXNlZCA+IDA7CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5u c3R1YnMgPiAwOwogCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5n LCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEzMTgsOCBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQkJaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAog CQkJCQkJCQkJcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJ CQkJCQkJcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0 ZS5ub3d1bnVzZWQsIHByc3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3Vu dXNlZCwgcHJzdGF0ZS5udW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0 ZS5uc3R1YnMpOwogCQl9CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM2Miw4 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJh bXMsCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJ CQkJCQkgIHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJ CQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0 YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5u b3d1bnVzZWQsIHByc3RhdGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywg cHJzdGF0ZS5uc3R1YnMpOwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE1MDQsMTAxIEBAIGh0 c3ZfZ2V0X3ZhbGlkX3N0YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQp IHN0YXR1czsKIH0KIAorLyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJ Rm9sbG93IGEgSE9UIGNoYWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5n IG1lbWJlci4KKyAqCisgKiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4g dGhhdCB3YXMgY29sbGFwc2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBh bmQgYW55IGVudHJ5LWJlYXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBf UkVESVJFQ1RzIHRvCisgKiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAg SWYgdGhhdCB0dXBsZSBoYXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5k IGRpZWQsIHRoZSByZWRpcmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50 IGZpcnN0IGxpdmUKKyAqIHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5n IHRvIG9uZSBsaXZlIHR1cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5l ZWQgdGhlIGNoYWluJ3MgY3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAq IFdhbGtzIHRfY3RpZCBvbiB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBp bmcgREVBRCBtZW1iZXJzLCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmly c3Qgbm9uLURFQUQgKHN1cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9m ZnNldE51bWJlciBpZiB0aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3Ig cnVucyBvZmYgdGhlCisgKiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVj dXRlIHN0YXRlLCBzbyBpdCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRl ciBpbiB3aGljaCBzaWJsaW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0 aWMgT2Zmc2V0TnVtYmVyCitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRl ICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3Rh dGUtPnBhZ2U7CisJT2Zmc2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1i ZXIocGFnZSk7CisJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJl ciBzdXJ2aXZvciA9IHN0YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1i ZXIgKi8KKwlpbnQJCQlsb29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zm c2V0TnVtYmVyICYmIG9mZm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhl YXBUdXBsZUhlYWRlciBodHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRl bSBjYW5ub3QgYmUgYSBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1J ZElzTm9ybWFsKGxwKSkKKwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0 dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoK KwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRp bmcgbm9kZSwgbm90IGEKKwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29y ZHMgaXQgdW5jaGFuZ2VkIHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNv IGl0cyBodHN2IHNsb3QgaXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAq IGZvcndhcmQgbGluayByYXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRy aXAgdGhlCisJCSAqIHZhbGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVk SGVhZGVySXNTdHViKGh0dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoaHR1cCk7CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4g SW52YWxpZE9mZnNldE51bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0g aHRzdl9nZXRfdmFsaWRfc3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAg PSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0 YXR1cyA9PSBIRUFQVFVQTEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1i ZXIgaXMgcmVjbGFpbWVkL3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJ ICogc3RhcnRzIGF0IGl0cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2 ZSBzdWNjZXNzb3IKKwkJCSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJ ICovCisJCQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJ CUl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+ YmxvY2spCisJCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9y ID0gb2ZmbnVtOworCQl9CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxv bmcgdG8gdGhlIHN1cnZpdmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBm b2xsb3dzIHRoZW0gKHdoaWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICog ZGVhZCBwcmVmaXgpLiAgS2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFk dmFuY2UgdGhlCisJCQkgKiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBv ZiB0aGUgbGFzdCBERUFEIG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFk ZXJJc0hvdFVwZGF0ZWQoaHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZodHVwLT50X2N0aWQpICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZv cjsKKwkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0 aWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0 aGUgc3Vydml2aW5nIHRhaWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsK KwkJfQorCisJCWlmICgrK2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZz ZXROdW1iZXI7IC8qIGRlZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKwor CXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lm aWVkIGxpbmUgcG9pbnRlciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBv aW50ZXIuCiAgKgpAQCAtMTUxOCw2ICsxNjY5LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zm c2V0TnVtYmVyIG1heG9mZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZu dW0gPiBtYXhvZmYpCiAJCQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50 bHkgdGhyb3VnaCBhIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJ CSAqIGFuIGVhcmxpZXIgc3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxh Y2VkIGEgZGVhZAorCQkgKiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFk eSByZWNvcmRlZCAoYXMgdW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBp cyBub3QgaXRzZWxmIGEgY2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndh cmQgbGluayByYXRoZXIgdGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJl bG93LgorCQkgKi8KKwkJeworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IG9mZm51bSk7CisKKwkJCWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhl YXBUdXBsZUhlYWRlciBzaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIHNscCk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJ CQkJeworCQkJCQkvKgorCQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWlu L3htYXggbGlua2FnZSBjYW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAg VHJ1c3QgdGhlIHN0dWIncyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHBy aW9yLXhtYXggY2hlY2sgZm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAo b3RoZXJ3aXNlIHRoZSBjaGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZwor CQkJCQkgKiBpdHMgdGFpbCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVk U3R1YkdldEZvcndhcmQoc2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYg aXRlbSBpcyBhbHJlYWR5IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2Ft ZSBjaGFpbiAqLwogCQlpZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVh azsKQEAgLTE2MjQsMTMgKzE4MDUsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1i ZXIgbWF4b2ZmLCBPZmZzZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRp cmVjdGVkKHJvb3RscCkgJiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5k IGEgcmVkaXJlY3QgaXRlbSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ct b24KLQkJICogaXRlbS4gIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVh ZCBzdWNjZXNzb3Igb2YgYSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0 aGUgcmVkaXJlY3QgaXRlbS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkg KiByZWRpcmVjdCBpdGVtIHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBj YWxsZXIKLQkJICogaW5kaWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBh c3QgdGhlIHJlZGlyZWN0OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBw cm9jZXNzZWQgYnkgYSBzaWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVj dHMKKwkJICogb2YgYSBjb2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBz YW1lIGxpdmUgdHVwbGUpIG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxh cHNlZCBmdXJ0aGVyLiAgUmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hh aW4ncyBjdXJyZW50IGZpcnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhh dAorCQkgKiByZXNvbHZlcyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVw bGUuICBJZiBubyBzdXJ2aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFu Z2xpbmcgYW5kIGlzIHJlY2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlm IHRoZSBjYWxsZXIgYWxsb3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQg PSBJdGVtSWRHZXRSZWRpcmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhl YXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9m ZnNldE51bWJlcklzVmFsaWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkK KwkJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwg cm9vdG9mZm51bSk7CisJCQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Qo cHJzdGF0ZSwgcm9vdG9mZm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisK IAkJaGVhcF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51 bSwgZmFsc2UpOwogCQlyZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTg1MSwxNDMgQEAgcHJv Y2Vzc19jaGFpbjoKIAllbHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8q Ci0JCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBw b2ludGVyIExQX0RFQUQsIGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxl cyBpbiB0aGUgY2hhaW4uCisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxp dmUgdHVwbGUgcmVtYWlucyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290 IExQX0RFQUQgKG9yIExQX1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJ CSAqIHJlY2xhaW0gZWFjaCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgbWVtYmVyIG1heQorCQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2lu dGluZyBhdCBpdDogbWFyayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5l ZCBhZ2FpbnN0IHJldXNlIGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJ ICogbGV0dGluZyBhbWJ1bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFj dXVtIHJlY2xhaW0gdGhlCisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJl cnMgY2Fycnkgbm8gbGVhZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRv IExQX1VOVVNFRC4KIAkJICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2Vk KHByc3RhdGUsIHJvb3RvZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3Ig KGludCBpID0gMTsgaSA8IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51 c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9w cnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkK KwkJCQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0 ZW1zW2ldLCB0cnVlKTsKKwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQo cHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJ LyoKLQkJICogV2UgZm91bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0 IHRoZSByb290IGxpbmUgcG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVw bGUsIGFuZCBtYXJrIGFzIHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRo YXQgd2UgYXJlIGFibGUgdG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hh aW4gaGFzIGEgZGVhZCBwcmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENv bGxhcHNlCisJCSAqIGl0IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhl IHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUg Yml0bWFwLW92ZXJsYXAgcmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1l bWJlcnMgZnJvbSB0aGUgbGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJ ICogbGF0ZXJhdHRycyB0aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMg b2YgdGhlIG1lbWJlcnMKKwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAg QSBkZWFkIGtleSB0dXBsZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5k ZXggZW50cmllcyBiZWNhdXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1 dGUgYXQgaXRzIGhvcCAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkg LS0gaXMKKwkJICogZGlzcG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBl dmVyeSBhdHRyaWJ1dGUgaXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVy IGhvcAorCQkgKiAoaXRzIGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZl cnkgaW5kZXggZW50cnkgcG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28g bm8gbGl2ZSBlbnRyeSByZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFE KSwgd2hpY2ggbGV0cyB0aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1z dGFsZQorCQkgKiBsZWF2ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50 ZXIuICBUaGlzIGxvc2VzIG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRl cnMgLS0gaXRzIGF0dHJpYnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUg c3Vydml2aW5nIGxhdGVyIG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkg KgorCQkgKiAtIE90aGVyd2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hh bmdlZCBhZ2Fpbiwgc28gYSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDog a2VlcCBpdCBhcyBhbiB4aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5l eHQgc3Vydml2b3IsIHByZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFk IHBhdGguCisJCSAqCisJCSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkg b2YgdGhlaXIgb3duIGFuZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vy dml2b3JzIGZvcndhcmQgcGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkg KiB0byB0aGUgZmlyc3Qgc3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUg cGFnZSBzdGF5cworCQkgKiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRv IHRoZSBuZXh0IHN1cnZpdm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRl ciBjcm9zc2luZyB0aGUgY29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZp dmluZyBob3AncyBiaXRtYXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxh dGVyCisJCSAqIGNvbGxhcHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGlu ZyBleGlzdGluZyBzdHVicy4KIAkJICovCi0JCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0 KHByc3RhdGUsIHJvb3RvZmZudW0sIGNoYWluaXRlbXNbbmRlYWRjaGFpbl0sCi0JCQkJCQkJ CSAgIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwotCQlmb3IgKGludCBpID0gMTsgaSA8IG5k ZWFkY2hhaW47IGkrKykKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZChwcnN0YXRlLCBj aGFpbml0ZW1zW2ldLCB0cnVlKTsKKwkJT2Zmc2V0TnVtYmVyIGZpcnN0X2xpdmUgPSBjaGFp bml0ZW1zW25kZWFkY2hhaW5dOworCQlPZmZzZXROdW1iZXIgbmV4dF9zdXJ2aXZvciA9IGZp cnN0X2xpdmU7CisJCU9mZnNldE51bWJlciByb290X3RhcmdldDsKKwkJaW50CQkJcmVsbmF0 dHMgPSBSZWxhdGlvbkdldE51bWJlck9mQXR0cmlidXRlcyhwcnN0YXRlLT5yZWxhdGlvbik7 CisJCXVpbnQ4CQlsYXRlcmF0dHJzWyhNYXhIZWFwQXR0cmlidXRlTnVtYmVyICsgNykgLyA4 XTsKKworCQkvKgorCQkgKiBsYXRlcmF0dHJzIGFjY3VtdWxhdGVzIGV2ZXJ5IHN1cnZpdmlu ZyBob3AncyBtb2RpZmllZCBhdHRyaWJ1dGVzLgorCQkgKiBTaXplIGl0IGZvciB0aGUgcmVs YXRpb24ncyBjdXJyZW50IG5hdHRzICh0aGUgbWF4aW11bSk7IGVhY2gKKwkJICogY29udHJp YnV0aW5nIHR1cGxlJ3MgYml0bWFwIGlzIGxvY2F0ZWQgYW5kIE9SLWVkIHVzaW5nIHRoYXQg dHVwbGUncworCQkgKiB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRleGVkVHVwbGVCaXRtYXBO YXR0cyksIHNpbmNlIEFERCBDT0xVTU4gbWF5CisJCSAqIGhhdmUgZ3Jvd24gdGhlIHJlbGF0 aW9uIHNpbmNlIHNvbWUgaG9wcyB3ZXJlIHdyaXR0ZW4uCisJCSAqLworCQltZW1zZXQobGF0 ZXJhdHRycywgMCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAo aW50IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJ bHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxl SGVhZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7 CisKKwkJCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkg IT0gMCkKKwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaHR1cCk7CisKKwkJCQkvKgorCQkJCSAqIEEgaG9wJ3Mgd3JpdGUtdGltZSBuYXR0 cyBjYW4gbmV2ZXIgbGVnaXRpbWF0ZWx5IGV4Y2VlZCB0aGUKKwkJCQkgKiByZWxhdGlvbidz IGN1cnJlbnQgbmF0dHMgKG5hdHRzIG9ubHkgZ3Jvd3MgdmlhIEFERCBDT0xVTU4pLgorCQkJ CSAqIE9uIGEgY29ycnVwdCBwYWdlIGEgc3R1YidzIHVuYm91bmRlZCBzdGFzaGVkIG5hdHRz IChvciBhCisJCQkJICogY29ycnVwdCBsaXZlIHR1cGxlJ3MgbmF0dHMgZmllbGQpIGNvdWxk IG90aGVyd2lzZSBvdmVyZmxvdworCQkJCSAqIGxhdGVyYXR0cnMsIHdoaWNoIGlzIHNpemVk IGZvciByZWxuYXR0czsgY2xhbXAgZGVmZW5zaXZlbHkuCisJCQkJICovCisJCQkJQXNzZXJ0 KGJtbmF0dHMgPD0gcmVsbmF0dHMpOworCQkJCWlmIChibW5hdHRzID4gcmVsbmF0dHMpCisJ CQkJCWJtbmF0dHMgPSByZWxuYXR0czsKKworCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihs YXRlcmF0dHJzLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1 cCwKKwkJCQkJCQkJCQkJCQkJCSAgSXRlbUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJ CQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkgIGJtbmF0dHMpOworCQkJfQorCQl9CisKKwkJ LyogZGVhZCBwcmVmaXg6IHJlY2xhaW0gc3VwZXJzZWRlZCBtZW1iZXJzLCBzdHViIHRoZSBy ZXN0ICovCisJCWZvciAoaW50IGkgPSBuZGVhZGNoYWluIC0gMTsgaSA+PSAxOyBpLS0pCisJ CXsKKwkJCWlmIChoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkKHBhZ2Us IGNoYWluaXRlbXNbaV0pKQorCQkJeworCQkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJCUhlYXBUdXBsZUhlYWRlciBodHVwID0gKEhl YXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCQkJCWludAkJCWJtbmF0 dHMgPSBIb3RJbmRleGVkVHVwbGVCaXRtYXBOYXR0cyhodHVwKTsKKwkJCQljb25zdCB1aW50 OCAqYXR0cnM7CisKKwkJCQkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUgbGF0ZXJhdHRycycg Zmlyc3QgdXNlLiAqLworCQkJCUFzc2VydChibW5hdHRzIDw9IHJlbG5hdHRzKTsKKwkJCQlp ZiAoYm1uYXR0cyA+IHJlbG5hdHRzKQorCQkJCQlibW5hdHRzID0gcmVsbmF0dHM7CisJCQkJ YXR0cnMgPSBIb3RJbmRleGVkR2V0TW9kaWZpZWRCaXRtYXAoaHR1cCwKKwkJCQkJCQkJCQkJ CQkgSXRlbUlkR2V0TGVuZ3RoKGxwKSwKKwkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJ CQlpZiAoSG90SW5kZXhlZEJpdG1hcElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5h dHRzKSkKKwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwg Y2hhaW5pdGVtc1tpXSwgdHJ1ZSk7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfc3R1YihwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsK KwkJCQkJbmV4dF9zdXJ2aXZvciA9IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdElu ZGV4ZWRCaXRtYXBVbmlvbihsYXRlcmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJ CQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRl bXNbaV0sIHRydWUpOworCQl9CisKKwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOwor CisJCS8qCisJCSAqIHJvb3QgLT4gZmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQg bm8tb3AgcmVkaXJlY3Qgb24KKwkJICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlk SXNSZWRpcmVjdGVkKHJvb3RscCkgJiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkg PT0gcm9vdF90YXJnZXQpCisJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVk aXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVj b3JkX3JlZGlyZWN0KHByc3RhdGUsIHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJ CQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVw bGVzIGluIHRoZSBjaGFpbiBhcmUgbm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZv ciAoaW50IGkgPSBuZGVhZGNoYWluOyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzIw MzIsMzQgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKIAkgKiBzZXBhcmF0ZWx5IGFzIGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8q CisJICogSWYgdGhlIHJlZGlyZWN0IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRh dGVkIGxpdmUgdHVwbGUsIHRoZQorCSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0 cmVlIGVudHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRv IGEgdHVwbGUgd2l0aCBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRl cmVkIGJ5CisJICogdGhlIHJlYWQgcGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwg d2hpY2ggcmVxdWlyZXMgZmV0Y2hpbmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4g aW5kZXgtb25seSBzY2FuIHRydXN0cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJ ICogdGhhdCBmZXRjaC4gIFNvCisJICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQg YWxsLXZpc2libGUvYWxsLWZyb3plbiB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlz dHM7IGl0IGJlY29tZXMgZWxpZ2libGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dl cHQKKwkgKiB0aGUgc3RhbGUgbGVhdmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0Lgor CSAqLworCWlmIChyZG9mZm51bSA+PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51 bSA8PSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRl bUlkCQl0bHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKwor CQlpZiAoSXRlbUlkSXNOb3JtYWwodGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRo dHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxw KTsKKworCQkJaWYgKCh0aHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRF RCkgIT0gMCkKKwkJCXsKKwkJCQlwcnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsK KwkJCQlwcnN0YXRlLT5zZXRfYWxsX2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQor CiAJQXNzZXJ0KHByc3RhdGUtPm5yZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2Up OwogCXByc3RhdGUtPnJlZGlyZWN0ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9m Zm51bTsKIAlwcnN0YXRlLT5yZWRpcmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiAr IDFdID0gcmRvZmZudW07CkBAIC0xNzM1LDYgKzIwNzcsNjUgQEAgaGVhcF9wcnVuZV9yZWNv cmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0 cnVlOwogfQogCisvKgorICogUmVjb3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRl biBpbiBwbGFjZSBhcyBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1z dXJ2aXZvciBzdHViIGZvcndhcmRpbmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3Vy Y2UgbXVzdCBiZSBhIGRlYWQgaGVhcC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3du IGJ0cmVlCisgKiBlbnRyaWVzIChhIGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNs YWltZWQgb3V0cmlnaHQ6IGEgc3RhbGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRo cm91Z2ggaXQuICBSZXdyaXRpbmcgaXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRo ZQorICogZm9yd2FyZCBsaW5rIGFuZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0 cnMgYml0bWFwIChzbyB0aGUgcmVhZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3 aGlsZSBkcm9wcGluZyBpdHMgWElEcywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6 ZS1zYWZlLgorICovCitzdGF0aWMgdm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVu ZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXRO dW1iZXIgZm9yd2FyZCkKK3sKKwlBc3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1d KTsKKwlwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFz IHdpdGggYSByZWRpcmVjdCB0byBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0 aGUgcGFnZSBtdXN0CisJICogbm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96 ZW4gd2hpbGUgYSBzdHViIGV4aXN0czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQg b3RoZXJ3aXNlIHRydXN0IHRoZSBWTSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICog ZmlsdGVycyBhIG5vdy1zdGFsZSBlbnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4g IEEgc3R1YidzCisJICogSEVBUF9YTUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2li bGUgdG8gZXZlcnkgc25hcHNob3QsIHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBt dXN0IG5ldmVyIGNvbnRhaW4uICBFbGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJ ICogcmVjbGFpbXMgdGhlIHN0dWIuCisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxl ID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2Vy dChwcnN0YXRlLT5uc3R1YnMgPCBNYXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+ c3R1YnNbcHJzdGF0ZS0+bnN0dWJzICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNb cHJzdGF0ZS0+bnN0dWJzICogMiArIDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMr KzsKKworCS8qIFRoZSBkZWFkIGtleSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2Fy ZGVkOyBjb3VudCBpdCByZW1vdmVkLiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlw cnN0YXRlLT5oYXN0dXAgPSB0cnVlOworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5n IGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4K KyAqCisgKiBFbmNvdW50ZXJlZCB3aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFk eSBob2xkcyBzdHVicyBmcm9tIGFuIGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIg aXMgcHJlc2VydmVkIChpdHMgYml0bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBh cworICogYSByZWFzb24gdGhlIHBhZ2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxl L2FsbC1mcm96ZW4uCisgKi8KK3N0YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNo YW5nZWRfbHBfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVt KQoreworCUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUt PnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwor CisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2Fs bF9mcm96ZW4gPSBmYWxzZTsKK30KKwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBt YXJrZWQgZGVhZCAqLwogc3RhdGljIHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjIx Nyw1MiBAQCBoZWFwX3BydW5lX3JlY29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyIG9mZm51bSwgYm9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRl ZCsrOwogfQogCisKKy8qCisgKiBoZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRl eGVkCisgKgkJVHJ1ZSBpZmYgdGhlIExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxp dmUgSE9ULWluZGV4ZWQgKEhPVC9TSVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQ IG11c3QgYmUgcHJlc2VydmVkIHJhdGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VO VVNFRCwgYmVjYXVzZSBhIG5vdC15ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBv aW50IGF0IGl0LgorICoKKyAqIEEgSE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBp bmRleCBlbnRyeSBwb2ludGluZyBhdCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBU SUQuICBDbGFzc2ljIEhPVCdzIGludmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBu bworICogZXh0ZXJuYWwgcmVmZXJlbmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Ig c3VjaCB0dXBsZXM6IHVudGlsCisgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBp bmRleCBlbnRyeSwgYSByZWFkZXIgYXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZp bmQgYSB3YWxrYWJsZSBob3AgYXQgdGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMg ZGVhZCBtZW1iZXJzCisgKiB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5 IHRoaXMgcmVhc29uOyBhIGxpdmUgbWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2lt cGx5IG5vdCBiZSByZWNsYWltZWQgb3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAq CisgKiBFeGNsdWRlZCBmcm9tIHByZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFy ZSBub3QgTFBfTk9STUFMIChSRURJUkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBs ZXMgd2l0aG91dCBIRUFQX0lOREVYRURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVt YmVycyBuZXZlcgorICogICAgIGhhZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVk KTsKKyAqICAgLSB0dXBsZXMgd2l0aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBh IHJlYWwgY2hhaW4gbWVtYmVyKTsKKyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMg KEhFQVBfWE1JTl9JTlZBTElEKTogbmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAg IGluZGV4IGVudHJ5LCBzbyByZWNsYWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGlj IGJvb2wKK2hlYXBfcHJ1bmVfaXRlbV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZm51bSk7CisJSGVhcFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1J ZElzTm9ybWFsKGxwKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFz azIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlm IChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7 CisJaWYgKChodHVwLT50X2luZm9tYXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJ CXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29y ZCBhbiB1bnVzZWQgbGluZSBwb2ludGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8K QEAgLTIwNDksOCArMjQ5Niw0NCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBf cmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAq LwogCUFzc2VydCghcHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnBy b2Nlc3NlZFtvZmZudW1dID0gdHJ1ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3Q6IGlmIHRoaXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhP VC1zZWxlY3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBz dGFsZSBidHJlZQorCSAqIGVudHJpZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0 IG11c3Qgbm90IGJlIHJlcG9ydGVkCisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4g aW5kZXgtb25seSBzY2FuIHdvdWxkIG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjaGVjaykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBu b3Qgb25seSB3aGVuIHRoZQorCSAqIHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1 c2UgYSByZS1wcnVuZSByZWNvcmRzIGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFz IHVuY2hhbmdlZC4KKwkgKi8KKwl7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBy c3RhdGUtPnBhZ2UsIG9mZm51bSk7CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkp CisJCXsKKwkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxw KTsKKworCQkJaWYgKHJkb2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRv ZmZudW0gPD0gUGFnZUdldE1heE9mZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsK KwkJCQlJdGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZu dW0pOworCisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFw VHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0 YXRlLT5wYWdlLCB0bHApOworCisJCQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVB UF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9h bGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBm YWxzZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVy Zm9ybSB0aGUgYWN0dWFsIHBhZ2UgY2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoKS4KICAqCkBAIC0yMDY1LDE2ICsyNTQ4LDI3IEBAIHZvaWQKIGhlYXBf cGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25s eSwKIAkJCQkJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAog CQkJCQkJT2Zmc2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXRO dW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5v d3VudXNlZCwgaW50IG51bnVzZWQsCisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQg bnN0dWJzKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zm c2V0TnVtYmVyICpvZmZudW07CiAJSGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1Jf QVNTRVJUU19PTkxZOwogCiAJLyogU2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUn cyBzb21ldGhpbmcgdG8gZG8gKi8KLQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFk ID4gMCB8fCBudW51c2VkID4gMCk7CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVh ZCA+IDAgfHwgbnVudXNlZCA+IDAgfHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1 bmNhdGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2lu dGVycyAqLworCS8qCisJICogSWYgJ2xwX3RydW5jYXRlX29ubHknLCB3ZSBjYW4gb25seSBy ZW1vdmUgYWxyZWFkeS1kZWFkIGxpbmUgcG9pbnRlcnMKKwkgKiBhbmQgY2Fubm90IHJlLXBv aW50IHJlZGlyZWN0czogcmVwb2ludGluZyBtb3ZlcyB0aGUgdHVwbGUgYW4gaW5kZXgtb25s eQorCSAqIHNjYW4gb3IgYSBjb25jdXJyZW50IGNoYWluIHdhbGsgZXhwZWN0cyB0byBmaW5k LCB3aGljaCBuZWVkcyBhIGNsZWFudXAKKwkgKiBsb2NrIChzZWUgdGhlIGZpbGUgaGVhZGVy IGNvbW1lbnQpLiAgTm8gcHJvZHVjZXIgaW4gdGhpcyBzZXJpZXMgY2FsbHMKKwkgKiB3aXRo IGxwX3RydW5jYXRlX29ubHkgc2V0IGFuZCBhIG5vbnplcm8gbnJlZGlyZWN0ZWQgLS0gdmFj dXVtJ3Mgc2Vjb25kCisJICogcGFzcyAodGhlIGxwX3RydW5jYXRlX29ubHkgY2FsbGVyKSBu ZXZlciByZS1wb2ludHMgYSByZWRpcmVjdCBpdHNlbGYsCisJICogbGVhdmluZyB0aGF0IHRv IGEgbGF0ZXIgcHJ1bmUgdGhhdCBob2xkcyBhIGNsZWFudXAgbG9jayAtLSBzbyBrZWVwCisJ ICogdXBzdHJlYW0ncyBzdHJpY3RlciBhc3NlcnRpb24gcmF0aGVyIHRoYW4gdGhlIHdlYWtl ciBvbmUgdGhpcyB3b3VsZAorCSAqIG90aGVyd2lzZSBuZWVkIHRvIGp1c3RpZnkuCisJICov CiAJQXNzZXJ0KCFscF90cnVuY2F0ZV9vbmx5IHx8IChucmVkaXJlY3RlZCA9PSAwICYmIG5k ZWFkID09IDApKTsKIAogCS8qIFVwZGF0ZSBhbGwgcmVkaXJlY3RlZCBsaW5lIHBvaW50ZXJz ICovCkBAIC0yMDg2LDYgKzI1ODAsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVm ZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZyb21scCA9 IFBhZ2VHZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVkaXJlY3Qg KHRoZSBMUCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBoYXJtbGVz cyBuby1vcC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0aGF0IHdh cworCQkgKiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSByb290IHN0 aWxsIHJlc29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBzbyB0aGUg YXBwbHkgc3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5kIHJlcGxh eS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJdGVtSWRH ZXRSZWRpcmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNpZmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjYwNCwxNiBAQCBoZWFw X3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5jYXRlX29u bHksCiAJCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1JZElzTm9y bWFsKGZyb21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0 ZW0ocGFnZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25s eShodHVwKSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlzIG5vcm1h bGx5IHRoZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9TSVUgY2hh aW4gY29sbGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25seQorCQkJ ICogbWVtYmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRvIHRoZSBs aXZlIHR1cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNlIGlzIGFs bG93ZWQgd2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhFQVBf SU5ERVhFRF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJ c0hlYXBPbmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9J TkRFWEVEX1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEyOCwxMiAr MjY0MSw1NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29s IGxwX3RydW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvb2Zm KTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNOb3JtYWwo dG9scCkpOwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwg dG9scCk7CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2aW5nIG1l bWJlcjogYSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJ c0hlYXBPbmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0KGZyb21s cCwgdG9vZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2aXZvciBz dHVicyBpbiBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAqIG5hbWVz IGEgZGVhZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUgZm9yd2Fy ZGluZyBzdHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlOX0lOVkFM SUR8SEVBUF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVEX1VQREFU RUQgd2l0aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMgYQorCSAq IHN0dWIgcmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBzbyBpdCBy ZW1haW5zIGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5kIHRfY3Rp ZC5vZmZudW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRlbSdzIHN0 b3JhZ2UgKGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpbiB0 aGUKKwkgKiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhlIGJpdG1h cCBzdXJ2aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4KKwkgKi8K KwlvZmZudW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsgaSsrKQor CXsKKwkJT2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVtYmVyIGZv cndhcmQgPSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IG9mZik7CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9uYXR0czsK KworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBUdXBsZUhl YWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNlcnZlIHRo ZSB0dXBsZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0aGUgbmF0 dHMKKwkJICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0cmFpbGlu ZyBtb2RpZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQsIGFuZCBy ZWFkZXJzIG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJICogcmVs YXRpb24ncyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVNTikuICBU aGUgc3R1YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9yd2FyZCBs aW5rOyB0aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwgc28gc3Rh c2ggdGhlIG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRoZQorCQkg KiBwcmltYXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24gYm90aCBw YWdlcyksIHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8KKwkJYml0 bWFwX25hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0dXAtPnRf aW5mb21hc2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElEOworCQl0 dXAtPnRfaW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVEX1VQREFU RUQ7CisJCUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Qb2ludGVy U2V0T2Zmc2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdEluZGV4ZWRT dHViU2V0Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8qIFVwZGF0 ZSBhbGwgbm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2RlYWQ7CiAJ Zm9yIChpbnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjcwNSwyMyBA QCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5j YXRlX29ubHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUgbmVjZXNz YXJ5IHdpdGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0ZW0sIHRo b3VnaC4gKEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkgKiB0aGF0 IHdvdWxkIGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikKKwkJICoK KwkJICogRXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdob3NlIGNo YWluIHJvb3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGludGVudGlv bmFsbHkgbWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBsZXMgbG9v cCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBoZWFwX3By dW5lX3JlY29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAtb25seSAo aXQgd2FzCisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBIRUFQX0lO REVYRURfVVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMgc3RpbGwg bGl2ZSwgc28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RFQUQgdW50 aWwgYW1idWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0gcmVjbGFp bXMKKwkJICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVtSWRIYXNT dG9yYWdlKGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7CiAJCQlo dHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwotCQkJQXNz ZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2VydCghSGVh cFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+dF9pbmZv bWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFwVHVwbGVI ZWFkZXJHZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAgLTIxNzcs NyArMjc0NCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJv b2wgbHBfdHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkKIAkJewot CQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBzZWNvbmQg cGFzcyAqLworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0n cyBzZWNvbmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYmICFJdGVt SWRIYXNTdG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzU1LDggQEAg aGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0 ZV9vbmx5LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVhZC4gIFRo aXMgaXMgb25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRl eGVzLiAgSWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBtYXJrX3Vu dXNlZF9ub3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtlZAotCQkJ ICogTFBfVU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJCQkgKiBM UF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBjaGFpbiBo YXMgYmVlbgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAwKQogCQkJ ewpAQCAtMjI2NCw2ICsyODMyLDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFn ZSkKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2VydChJdGVt SWRIYXNTdG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0YXJnZXRz IHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICovCiAJCUFz c2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5kaWYKQEAg LTI1NjYsNyArMzEzNiw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJv emVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBp bnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50IG5kZWFk LAotCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJCQkJCQkg IE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zmc2V0TnVt YmVyICpzdHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVjOwogCVhM b2dSZWNQdHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTUyLDEwIEBAIGxvZ19oZWFwX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9w cnVuZV9pdGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRlYWRfaXRl bXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVuZV9pdGVt cyBzdHViX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVz UGVyUGFnZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQg PiAwIHx8IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAw IHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwogCWJvb2wJ CWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CiAJYm9v bAkJaGVhcF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzI0MywxNiBAQCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlzaXplb2Yo T2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkKKwl7CisJ CXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJCXN0dWJf aXRlbXMubnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgJnN0 dWJfaXRlbXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0YSkpOwor CQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlYTG9nUmVn aXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZzZXROdW1i ZXIpICogbmZyb3plbik7CkBAIC0yNjkyLDggKzMyNzUsMTcgQEAgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJeGxyZWMu ZmxhZ3MgfD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0KG5yZWRp cmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVtcyBpbiAn dW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8qCisJCSAq IFdpdGhvdXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVhZHktZGVh ZCBsaW5lCisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBUaGUgbGF0 dGVyIGhhcHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNsYWltcyBh IGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAqIHRoZSBy b290IHJlZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUgdW5kZXIg YW4KKwkJICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4ncyByZWFj aGFiaWxpdHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0X2xpdmUp LCBzbyBubyBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAqIGJhc2lz IG9uIHdoaWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBwb2ludGVy cyB0bworCQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0gMCk7CiAJ fQogCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwogCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li5kYWI0YjViMWY4MiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3IEBACiAK ICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgi CisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0 dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMgYm9vbCBs YXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZv aWQgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVt YmVyIGJsa25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJlciAqZGVh ZG9mZnNldHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1idWZmZXIp OworCQkJCQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJ CQkgIGJvb2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2NoZWNrX3dy YXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGxh enlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIElu ZGV4QnVsa0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0aW9uIGlu ZHJlbCwKQEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQkJ CQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJCSAgTlVM TCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwKTsKIAog CQkJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMjY4Niw2ICsyNjg5LDcgQEAgbGF6eV92YWN1 dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQlTaXplCQlmcmVlc3BhY2U7CiAJ CU9mZnNldE51bWJlciBvZmZzZXRzW01heE9mZnNldE51bWJlcl07CiAJCWludAkJCW51bV9v ZmZzZXRzOworCQlib29sCQlnb3RfY2xlYW51cF9sb2NrOwogCiAJCXZhY3V1bV9kZWxheV9w b2ludChmYWxzZSk7CiAKQEAgLTI3MDgsMTAgKzI3MTIsMjAgQEAgbGF6eV92YWN1dW1faGVh cF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKi8KIAkJdmlzaWJpbGl0eW1hcF9waW4o dmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpOwogCi0JCS8qIFdlIG5lZWQgYSBub24t Y2xlYW51cCBleGNsdXNpdmUgbG9jayB0byBtYXJrIGRlYWRfaXRlbXMgdW51c2VkICovCi0J CUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkvKgorCQkgKiBT ZXR0aW5nIGRlYWQgaXRlbXMgdW51c2VkIG5lZWRzIG9ubHkgYW4gZXhjbHVzaXZlIGxvY2su ICBXZSBzdGlsbAorCQkgKiBwcmVmZXIgYSBjbGVhbnVwIGxvY2sgaGVyZSwgYXMgdGhlIGZp cnN0IHBhc3MgZG9lcywgYW5kIGZhbGwgYmFjayB0bworCQkgKiBhbiBleGNsdXNpdmUgbG9j ayBpZiBvbmUgaXMgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gIFRoaXMgcGFzcworCQkg KiBvbmx5IHR1cm5zIExQX0RFQUQgaXRlbXMgaW50byBMUF9VTlVTRUQ7IGl0IGRvZXMgTk9U IHJlY2xhaW0gYQorCQkgKiBjb2xsYXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4ncyBzdHVicyBv ciByZS1wb2ludCBpdHMgcmVkaXJlY3RzIC0tCisJCSAqIHRoYXQgY2hhaW4tc3RydWN0dXJl IHJld3JpdGUgKHdoaWNoIG1vdmVzIFRJRHMgY29uY3VycmVudCBzY2FucworCQkgKiBmb2xs b3csIGFuZCBzbyBuZWVkcyBhIGNsZWFudXAgbG9jaykgaXMgbGVmdCB0byBhIGxhdGVyIHBy dW5lLgorCQkgKi8KKwkJZ290X2NsZWFudXBfbG9jayA9IENvbmRpdGlvbmFsTG9ja0J1ZmZl ckZvckNsZWFudXAoYnVmKTsKKwkJaWYgKCFnb3RfY2xlYW51cF9sb2NrKQorCQkJTG9ja0J1 ZmZlcihidWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAJCWxhenlfdmFjdXVtX2hlYXBf cGFnZSh2YWNyZWwsIGJsa25vLCBidWYsIG9mZnNldHMsCi0JCQkJCQkJICBudW1fb2Zmc2V0 cywgdm1idWZmZXIpOworCQkJCQkJCSAgbnVtX29mZnNldHMsIHZtYnVmZmVyLCBnb3RfY2xl YW51cF9sb2NrKTsKIAogCQkvKiBOb3cgdGhhdCB3ZSd2ZSB2YWN1dW1lZCB0aGUgcGFnZSwg cmVjb3JkIGl0cyBhdmFpbGFibGUgc3BhY2UgKi8KIAkJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKQEAgLTI3NTcsNyArMjc3MSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcmVsKExWUmVs U3RhdGUgKnZhY3JlbCkKIHN0YXRpYyB2b2lkCiBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZS ZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLCBpbnQgbnVtX29mZnNldHMsCi0JCQkJ CSAgQnVmZmVyIHZtYnVmZmVyKQorCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgYm9vbCBnb3Rf Y2xlYW51cF9sb2NrKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7 CiAJT2Zmc2V0TnVtYmVyIHVudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07CkBAIC0yNzgz LDcgKzI3OTcsOSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBhbmQgbWFyayB0aGUg cGFnZSBhbGwtdmlzaWJsZSB3aXRoaW4gdGhlIHNhbWUgY3JpdGljYWwgc2VjdGlvbiwKIAkg KiBlbmFibGluZyBib3RoIGNoYW5nZXMgdG8gYmUgZW1pdHRlZCBpbiBhIHNpbmdsZSBXQUwg cmVjb3JkLiBTaW5jZSB0aGUKIAkgKiB2aXNpYmlsaXR5IGNoZWNrcyBtYXkgcGVyZm9ybSBJ L08gYW5kIGFsbG9jYXRlIG1lbW9yeSwgdGhleSBtdXN0IGJlCi0JICogZG9uZSBvdXRzaWRl IHRoZSBjcml0aWNhbCBzZWN0aW9uLgorCSAqIGRvbmUgb3V0c2lkZSB0aGUgY3JpdGljYWwg c2VjdGlvbi4gIEEgZGVmZXJyZWQgcmVjbGFpbSBsZWF2ZXMgYQorCSAqIG5vdC15ZXQtcmVt b3ZlZCBtZW1iZXIgb24gdGhlIHBhZ2UsIHNvIHNraXAgdGhlIGNoZWNrIHdoZW4gYW55dGhp bmcgd2FzCisJICogZGVmZXJyZWQuCiAJICovCiAJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAogCQkJCQkJCQkJICAgdmFjcmVsLT52 aXN0ZXN0LCB0cnVlLApAQCAtMjgxNSwxMyArMjgzMSwxMiBAQCBsYXp5X3ZhY3V1bV9oZWFw X3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIHRvZmYpOwogCisJCS8q IEEgcmVjbGFpbWFibGUgaXRlbSBpcyBhIGNsYXNzaWMgTFBfREVBRCBsaW5lIHBvaW50ZXIu ICovCiAJCUFzc2VydChJdGVtSWRJc0RlYWQoaXRlbWlkKSAmJiAhSXRlbUlkSGFzU3RvcmFn ZShpdGVtaWQpKTsKIAkJSXRlbUlkU2V0VW51c2VkKGl0ZW1pZCk7CiAJCXVudXNlZFtudW51 c2VkKytdID0gdG9mZjsKIAl9CiAKLQlBc3NlcnQobnVudXNlZCA+IDApOwotCiAJLyogQXR0 ZW1wdCB0byB0cnVuY2F0ZSBsaW5lIHBvaW50ZXIgYXJyYXkgbm93ICovCiAJUGFnZVRydW5j YXRlTGluZVBvaW50ZXJBcnJheShwYWdlKTsKIApAQCAtMjg1MSwxMiArMjg2NiwxMyBAQCBs YXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBi bGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB2bWZsYWdzICE9IDAgPyB2bWJ1ZmZl ciA6IEludmFsaWRCdWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncywKIAkJCQkJCQkJICBjb25m bGljdF94aWQsCi0JCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJl ZCAqLworCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVxdWlyZWQ6IHNl ZSBiZWxvdyAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkg IE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0 ZWQgKi8KIAkJCQkJCQkJICBOVUxMLCAwLAkvKiBkZWFkICovCi0JCQkJCQkJCSAgdW51c2Vk LCBudW51c2VkKTsKKwkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQsCisJCQkJCQkJCSAgTlVM TCwgMCk7IC8qIHN0dWJzICovCiAJfQogCiAJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMzY0 NywxMCArMzY2Myw0NCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmLAogCQkqbG9nZ2luZ19vZmZudW0gPSBvZmZudW07CiAJCWl0 ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAotCQkvKiBVbnVzZWQgb3Ig cmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3QgKi8KLQkJaWYgKCFJ dGVtSWRJc1VzZWQoaXRlbWlkKSB8fCBJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJ LyogVW51c2VkIGxpbmUgcG9pbnRlcnMgYXJlIG9mIG5vIGludGVyZXN0LiAqLworCQlpZiAo IUl0ZW1JZElzVXNlZChpdGVtaWQpKQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogUGxh aW4gcmVkaXJlY3RzIGFyZSBvZiBubyBpbnRlcmVzdCAodGhlIGNoYWluIG1lbWJlciB0aGV5 IHBvaW50IGF0CisJCSAqIGlzIGluc3BlY3RlZCBzZXBhcmF0ZWx5KSAtLSBleGNlcHQgYSBy ZWRpcmVjdCB0aGF0IGZvcndhcmRzIHRvIGEKKwkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgbGl2ZSB0dXBsZS4gIFN1Y2ggYSByZWRpcmVjdCBtYXkgc3RpbGwgYmUKKwkJICogcmVh Y2hlZCBieSBhIHN0YWxlIGluZGV4IGVudHJ5IHdob3NlIGtleSB0aGUgbGl2ZSB0dXBsZSBu byBsb25nZXIKKwkJICogaG9sZHM7IGlmIHRoZSBwYWdlIHdlcmUgbWFya2VkIGFsbC12aXNp YmxlIGFuIGluZGV4LW9ubHkgc2NhbiB3b3VsZAorCQkgKiB0cnVzdCB0aGUgVk0sIHNraXAg dGhlIGhlYXAgZmV0Y2gsIGFuZCBzdXJmYWNlIHRoYXQgc3RhbGUga2V5LgorCQkgKiBLZWVw IHRoZSBwYWdlIG5vdC1hbGwtdmlzaWJsZSB1bnRpbCB0aGUgc3RhbGUgbGVhdmVzIGFyZSBz d2VwdCBhbmQKKwkJICogdGhlIHJlZGlyZWN0IHJlY2xhaW1lZC4gIFRoaXMgbWlycm9ycyB0 aGUgZ3VhcmQgaW4KKwkJICogaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QsIGFwcGxpZWQg aGVyZSBiZWNhdXNlIFZBQ1VVTSdzIHNlY29uZAorCQkgKiBwYXNzIGNhbiBzZXQgYWxsLXZp c2libGUgYWZ0ZXIgcmVjbGFpbWluZyBvdGhlciBpdGVtcyBvbiB0aGUgcGFnZS4KKwkJICov CisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJeworCQkJT2Zmc2V0TnVt YmVyIHJkb2ZmID0gSXRlbUlkR2V0UmVkaXJlY3QoaXRlbWlkKTsKKworCQkJaWYgKHJkb2Zm ID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIHJkb2ZmIDw9IG1heG9mZikKKwkJCXsKKwkJCQlJ dGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgcmRvZmYpOworCisJCQkJaWYgKEl0 ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAg PSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0bHApOworCisJCQkJCWlm ICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJ CQkJCXsKKwkJCQkJCSphbGxfZnJvemVuID0gYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJ CWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJY29udGludWU7CisJCX0KKwogCQlJ dGVtUG9pbnRlclNldCgmKHR1cGxlLnRfc2VsZiksIGJsb2Nrbm8sIG9mZm51bSk7CiAKIAkJ LyoKQEAgLTM2NzYsNiArMzcyNiwyNCBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdl dExlbmd0aChpdGVtaWQpOwogCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxp ZChyZWwpOwogCisJCS8qCisJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Ig c3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSB0aGF0IGlzCisJCSAqIG5vdCBhIHJlYWwgdHVw bGU6IGl0IGZvcndhcmRzIHRocm91Z2ggdGhlIGNoYWluIGFuZCBjYXJyaWVzIGEKKwkJICog cHJlc2VydmVkIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCB0aGF0IGEgcmVhZGVyIGFycml2aW5n IHZpYSBhIHN0YWxlCisJCSAqIGxlYWYgbXVzdCBzdGlsbCBjcm9zcy4gIEEgcGFnZSBob2xk aW5nIG9uZSBtdXN0IHN0YXkgbm90LWFsbC12aXNpYmxlCisJCSAqIHNvIGluZGV4LW9ubHkg c2NhbnMgaGVhcC1mZXRjaCB0aHJvdWdoIHRoZSBjaGFpbiwgZXhhY3RseSBsaWtlIHRoZQor CQkgKiByZWRpcmVjdC10by1TSVUgY2FzZSBhYm92ZS4gIEEgc3R1YidzIGhlYWRlciBpcyBm cm96ZW4taW52YWxpZAorCQkgKiAoSEVBUF9YTUlOX0lOVkFMSUQpLCBzbyB0aGUgdmlzaWJp bGl0eSBjaGVjayBiZWxvdyB3b3VsZCBhbHNvIGNsYXNzCisJCSAqIGl0IG5vdC1hbGwtdmlz aWJsZSAtLSBidXQgcmVjb2duaXplIGl0IGV4cGxpY2l0bHkgaGVyZSByYXRoZXIgdGhhbgor CQkgKiByZWx5aW5nIG9uIHRoYXQgc2lkZSBlZmZlY3QsIHNvIHRoZSBndWFyZCBjYW5ub3Qg c2lsZW50bHkgbGFwc2UgaWYKKwkJICogdGhlIHN0dWIgZW5jb2RpbmcgZXZlciBjaGFuZ2Vz LgorCQkgKi8KKwkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIodHVwbGUudF9kYXRhKSkK KwkJeworCQkJKmFsbF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJYnJlYWs7 CisJCX0KKwogCQkvKiBWaXNpYmlsaXR5IGNoZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUg bWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlvbkNvdW50ID09IDApOwogCQlzd2l0Y2gg KEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oJnR1cGxlLCBidWYsICZkZWFkX2Fm dGVyKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggNzVh ZTZmOWQzNzUuLjk3ZjkyNWRmMTYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwpAQCAtMTA4LDcgKzEwOCw4IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9w cnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJ ICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRp cmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpu ZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVhZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNl ZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2VkKQorCQkJCQkJCQkJICAgaW50ICpudW51c2Vk LCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkgICBpbnQgKm5zdHVicywg T2Zmc2V0TnVtYmVyICoqc3R1YnMpCiB7CiAJaWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpF X1BMQU5TKQogCXsKQEAgLTE3OCw2ICsxNzksMjMgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXpl X3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCSpub3d1 bnVzZWQgPSBOVUxMOwogCX0KIAorCWlmIChmbGFncyAmIFhMSFBfSEFTX0hPVF9JTkRFWEVE X1NUVUJTKQorCXsKKwkJeGxocF9wcnVuZV9pdGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1 bmVfaXRlbXMgKikgY3Vyc29yOworCisJCSpuc3R1YnMgPSBzdWJyZWNvcmQtPm50YXJnZXRz OworCQlBc3NlcnQoKm5zdHVicyA+IDApOworCQkqc3R1YnMgPSAmc3VicmVjb3JkLT5kYXRh WzBdOworCisJCWN1cnNvciArPSBvZmZzZXRvZih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsK KwkJY3Vyc29yICs9IHNpemVvZihPZmZzZXROdW1iZXJbMl0pICogKm5zdHViczsKKwl9CisJ ZWxzZQorCXsKKwkJKm5zdHVicyA9IDA7CisJCSpzdHVicyA9IE5VTEw7CisJfQorCiAJKmZy el9vZmZzZXRzID0gKE9mZnNldE51bWJlciAqKSBjdXJzb3I7CiB9CiAKQEAgLTMwNSw2ICsz MjMsOCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJl Y29yZCkKIAkJCWludAkJCW5yZWRpcmVjdGVkOwogCQkJaW50CQkJbnVudXNlZDsKIAkJCWlu dAkJCW5kZWFkOworCQkJaW50CQkJbnN0dWJzOworCQkJT2Zmc2V0TnVtYmVyICpzdHViczsK IAkJCWludAkJCW5wbGFuczsKIAkJCXhsaHBfZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zm c2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKQEAgLTMxNSwxMCArMzM1LDExIEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJ CQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAm bnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAogCQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93 ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJ CQkJCSAgICZudW51c2VkLCAmbm93dW51c2VkLAorCQkJCQkJCQkJCQkJICAgJm5zdHVicywg JnN0dWJzKTsKIAotCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5y ZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBudW51c2VkOiAldSIsCi0JCQkJCQkJIG5wbGFu cywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51c2VkKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiLCBucGxhbnM6ICV1LCBucmVkaXJlY3RlZDogJXUsIG5kZWFkOiAldSwgbnVudXNl ZDogJXUsIG5zdHViczogJXUiLAorCQkJCQkJCSBucGxhbnMsIG5yZWRpcmVjdGVkLCBuZGVh ZCwgbnVudXNlZCwgbnN0dWJzKTsKIAogCQkJaWYgKG5wbGFucyA+IDApCiAJCQl7CkBAIC0z NDcsNiArMzY4LDEzIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKQogCQkJCWFycmF5X2Rlc2MoYnVmLCBub3d1bnVzZWQsIHNpemVvZihP ZmZzZXROdW1iZXIpLCBudW51c2VkLAogCQkJCQkJICAgJm9mZnNldF9lbGVtX2Rlc2MsIE5V TEwpOwogCQkJfQorCisJCQlpZiAobnN0dWJzID4gMCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1ZiwgIiwgc3R1YnM6Iik7CisJCQkJYXJyYXlfZGVzYyhidWYsIHN0 dWJzLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSAqIDIsCisJCQkJCQkgICBuc3R1YnMsICZyZWRp cmVjdF9lbGVtX2Rlc2MsIE5VTEwpOworCQkJfQogCQl9CiAJfQogCWVsc2UgaWYgKGluZm8g PT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMjM2 NzZhZTcxZTkuLjY0YWU5NzMzMTAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00OTAsNyAr NDkwLDggQEAgZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVG cmVlemVQYXJhbXMgKnBhcmFtcywKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVj dXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9m ZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJT2Zm c2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIg Km5vd3VudXNlZCwgaW50IG51bnVzZWQpOworCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1 bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpzdHVicywgaW50 IG5zdHVicyk7CiBleHRlcm4gdm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2Us IE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1mbGFncywKQEAgLTUwMCw3ICs1MDEs OCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZy b3plbiwgaW50IG5mcm96ZW4sCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3Rl ZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGlu dCBuZGVhZCwKLQkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2Vk KTsKKwkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkLAorCQkJ CQkJCQkJICBPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKTsKIAogLyogaW4gaGVh cC9oZWFwYW0uYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt X3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3 ZDgyMWM4Li44OTk3YTUwNTAwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAg LTI3Myw2ICsyNzMsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqCQl1 aW50MTYJCQkJbnVudXNlZAogICoJCU9mZnNldE51bWJlcgkJbm93dW51c2VkW251bnVzZWRd CiAgKgorICoJeGxocF9wcnVuZV9pdGVtcworICoJCXVpbnQxNgkJCQluc3R1YnMKKyAqCQlP ZmZzZXROdW1iZXIJCXN0dWJzWzIgKiBuc3R1YnNdCisgKgogICoJT2Zmc2V0TnVtYmVyCQkJ ZnJ6X29mZnNldHNbc3VtKFtwbGFuLm50dXBsZXMgZm9yIHBsYW4gaW4gcGxhbnNdKV0KICAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCkBAIC0zNDEsNiArMzQ1LDE4IEBAIHR5cGVk ZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICNkZWZpbmUJCVhMSFBfVk1fQUxMX1ZJU0lCTEUJ CQkoMSA8PCA4KQogI2RlZmluZQkJWExIUF9WTV9BTExfRlJPWkVOCQkJKDEgPDwgOSkKIAor LyoKKyAqIEluZGljYXRlcyB0aGF0IGFuIHhsaHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZCB3 aXRoIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHVi cyBpcyBwcmVzZW50LiAgRWFjaCBwYWlyIChvZmZzZXQsIGZvcndhcmQpIG5hbWVzIGEKKyAq IGxpbmUgcG9pbnRlciB0byBiZSByZXdyaXR0ZW4gaW4gcGxhY2UgaW50byBhbiB4aWQtZnJl ZSBmb3J3YXJkaW5nIHN0dWIKKyAqIChIRUFQX1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5W QUxJRCwgSEVBUF9PTkxZX1RVUExFfEhFQVBfSU5ERVhFRF9VUERBVEVELAorICogbmF0dHM9 PTApIHdob3NlIHRfY3RpZC5vZmZudW0gaXMgc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4g IFRoZSBzdHViJ3MKKyAqIG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBpcyBhbHJlYWR5IHByZXNl bnQgaW4gdGhlIGl0ZW0gb24gdGhlIHBhZ2UgKGl0IGlzIHRoZQorICogcHJlLXBydW5lIHR1 cGxlJ3MgaW5saW5lIGJpdG1hcCwgbGVmdCB1bmRpc3R1cmJlZCksIHNvIGl0IGlzIG5vdCBj YXJyaWVkIGluCisgKiB0aGUgV0FMLgorICovCisjZGVmaW5lCQlYTEhQX0hBU19IT1RfSU5E RVhFRF9TVFVCUwkoMSA8PCAxMCkKKwogLyoKICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3Jp YmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwog ICogKGFwcGVhcnMgaW4geGxfaGVhcF9wcnVuZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1y ZWNvcmQpCkBAIC00OTQsNiArNTEwLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2Vy aWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJ CQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJ CSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJ CQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZzZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJ CQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQpOworCQkJ CQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJ CQkJCQkJCQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0TnVtYmVyICoqc3R1YnMpOwogCiAj ZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0dfSCAqLwotLSAKMi41MC4xCgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAwYjc4NjZmZDc3NTA3YmUxZjdlOWIwZDkxZTc3YWY5MmU4YjVkNjRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDYv OV0gVGVhY2ggYW1jaGVjayB0byByZWNvZ25pemUgSE9ULWluZGV4ZWQgY2hhaW5zIGFuZAog Y29sbGFwc2Ugc3R1YnMKCnZlcmlmeV9oZWFwYW0gbXVzdCBub3QgZmxhZyB0aGUgSE9ULWlu ZGV4ZWQgYXJ0aWZhY3RzIGFzIGNvcnJ1cHRpb246IGEgbGl2ZQpIRUFQX0lOREVYRURfVVBE QVRFRCBoZWFwLW9ubHkgdHVwbGUgd2hvc2UgbWlkLWNoYWluIGxpbmUgcG9pbnRlciBpcyBw cmVzZXJ2ZWQKYmVjYXVzZSBhbiBpbmRleCBlbnRyeSBzdGlsbCBwb2ludHMgYXQgaXQsIGFu IHhpZC1mcmVlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsCmFuZCBtb3JlIHRoYW4gb25lIExQ X1JFRElSRUNUIGZvcndhcmRpbmcgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSBhcmUgYWxsCmxl Z2l0aW1hdGUuICBSZWNvZ25pemUgdGhlbSBhbmQgY29udGludWUgY2hlY2tpbmcgdGhlIHJl c3Qgb2YgdGhlIGNoYWluLgoKQ292ZXIgdGhpcyB3aXRoIGFuIGFtY2hlY2sgcmVncmVzc2lv biB0ZXN0LCBhbmQgYWRkIGEgcGdfdXBncmFkZSB0ZXN0IHRoYXQKY2FycmllcyBhIHJlbGF0 aW9uIHdpdGggSE9ULWluZGV4ZWQgY2hhaW5zLCBhbiBBQkEtY3ljbGVkIGluZGV4ZWQgY29s dW1uLCBhbgpvdXQtb2YtbGluZSBpbmRleGVkIGNvbHVtbiwgYW5kIFZBQ1VVTS1jb2xsYXBz ZWQgc3R1YnMgYWNyb3NzIGFuIHVwZ3JhZGUsCnZlcmlmeWluZyB0aGUgZGF0YSwgdmVyaWZ5 X2hlYXBhbSwgYnRfaW5kZXhfY2hlY2ssIGFuZCB0aGUgY2hhaW4gc2NhbnMgb24gdGhlCm5l dyBjbHVzdGVyLgoKQXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0K IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCAgICB8ICA0MCArKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgICAgfCAgMzcg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyAgICAgICAgICAgIHwg IDg5ICsrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QtSU5ERVhFRCB8ICAxMCArKwogc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhl ZC5wbCAgICB8IDExOCArKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwg Mjg1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iaW4vcGdfdXBncmFkZS90LzAwOV9ob3RfaW5kZXhlZC5wbAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCBiL2NvbnRyaWIvYW1j aGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dAppbmRleCA5NzllNWU4NGU3Mi4uYjhkZWUy YmI3MWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFw Lm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKQEAg LTIzMSw2ICsyMzEsNDYgQEAgU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCd0ZXN0X2Zv cmVpZ25fdGFibGUnLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogRVJST1I6ICBjYW5u b3QgY2hlY2sgcmVsYXRpb24gInRlc3RfZm9yZWlnbl90YWJsZSIKIERFVEFJTDogIFRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24gdGFibGVzLgorLS0gSE9U LWluZGV4ZWQgKEhPVC9TSVUpIG9uLXBhZ2UgYXJ0aWZhY3RzOgorLS0KKy0tIEEgSE9ULWlu ZGV4ZWQgVVBEQVRFIGtlZXBzIHRoZSBuZXcgdHVwbGUgb24gdGhlIHNhbWUgcGFnZSBhcyBh IGhlYXAtb25seQorLS0gdHVwbGUgbWFya2VkIEhFQVBfSU5ERVhFRF9VUERBVEVEIGFuZCBw bGFudHMgaW5kZXggZW50cmllcyBwb2ludGluZyBhdCBpdHMKKy0tIG93biBUSUQuICBQcnVu aW5nIGEgY2hhaW4gb2Ygc3VjaCB1cGRhdGVzIGNvbGxhcHNlcyBkZWFkIG1lbWJlcnMgdG8K Ky0tIExQX1JFRElSRUNUIGZvcndhcmRlcnMgYW5kIHByZXNlcnZlcyB0aGUgTFAgb2YgYSBs aXZlIEhPVC1pbmRleGVkIG1lbWJlcgorLS0gd2hvc2UgaW5kZXggZW50cmllcyBtYXkgbm90 IHlldCBiZSBzd2VwdC4gIHZlcmlmeV9oZWFwYW0gbXVzdCB0cmVhdCBhbGwgb2YKKy0tIHRo ZXNlIGFzIGxlZ2l0aW1hdGUuICBUaGlzIHNjZW5hcmlvIGV4ZXJjaXNlcyB0aGVtIGFuZCBh c3NlcnRzIHRoYXQKKy0tIHZlcmlmeV9oZWFwYW0gcmVwb3J0cyB6ZXJvIGNvcnJ1cHRpb24g YWdhaW5zdCBsZWdpdGltYXRlIEhPVC1pbmRleGVkCistLSBhY3Rpdml0eS4KK0NSRUFURSBU QUJMRSBob3RfaW5kZXhlZF9jaGVjayAoaWQgaW50IFBSSU1BUlkgS0VZLCBjMSBpbnQsIGMy IGludCwgYzMgaW50KQorCVdJVEggKGZpbGxmYWN0b3IgPSA3MCk7CitDUkVBVEUgSU5ERVgg aG90X2luZGV4ZWRfY2hlY2tfYzEgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMxKTsKK0NSRUFU RSBJTkRFWCBob3RfaW5kZXhlZF9jaGVja19jMiBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzIp OworSU5TRVJUIElOVE8gaG90X2luZGV4ZWRfY2hlY2sKKwlTRUxFQ1QgZywgZywgZywgZyBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGc7CistLSBTaW5nbGUtc3RlcCBVUERBVEVz OiBlYWNoIHJvdyBnZXRzIG9uZSBIT1QtaW5kZXhlZCB1cGRhdGUuICBFYWNoCistLSBzdWNj ZXNzZnVsIEhPVC1pbmRleGVkIHVwZGF0ZSBrZWVwcyBpdHMgbmV3IHR1cGxlIG9uLXBhZ2Ug YW5kIGluc2VydHMgYW4KKy0tIGVudHJ5IG9ubHkgaW50byB0aGUgaW5kZXggd2hvc2UgYXR0 cmlidXRlIGNoYW5nZWQuCitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMxID0gYzEg KyAxMDAwOworLS0gTXVsdGktc3RlcCBVUERBVEVzOiBkcml2ZSBzZXZlcmFsIHN1Y2Nlc3Np dmUgSE9ULWluZGV4ZWQgdXBkYXRlcyBhZ2FpbnN0CistLSB0aGUgc2FtZSByb3dzIHNvIHBy dW5lIHNlZXMgYSBjaGFpbiBvZiBkZWFkIGludGVybWVkaWF0ZXMgYW5kIGNvbGxhcHNlcwor LS0gdGhlbSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzLiAgQW4gZXhwbGljaXQgVkFDVVVN IHJ1bnMgdGhlIHBydW5lIHBhdGgKKy0tIGFuZCBleGVyY2lzZXMgY2hhaW4gY29sbGFwc2Uu CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9 IDUwOworVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBp ZCA8PSA1MDsKK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hF UkUgaWQgPD0gNTA7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBob3RfaW5kZXhlZF9j aGVjazsKKy0tIHZlcmlmeV9oZWFwYW0gbXVzdCBub3QgcmVwb3J0IGFueSBjb3JydXB0aW9u IGFnYWluc3QgbGVnaXRpbWF0ZSBIT1QtCistLSBpbmRleGVkIGFydGlmYWN0cy4gIFNlbGVj dGluZyB0aGUgY29ycnVwdGluZyBtZXNzYWdlIG1ha2VzIGFueQorLS0gcmVncmVzc2lvbiB1 bm1pc3Rha2FibGUgaW4gdGhlIHJlZ3Jlc3MgZGlmZi4KK1NFTEVDVCBibGtubywgb2ZmbnVt LCBhdHRudW0sIG1zZworCUZST00gdmVyaWZ5X2hlYXBhbSgnaG90X2luZGV4ZWRfY2hlY2sn LAorCQkJCQkgICBzdGFydGJsb2NrIDo9IE5VTEwsCisJCQkJCSAgIGVuZGJsb2NrIDo9IE5V TEwpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJPUCBUQUJMRSBob3RfaW5kZXhlZF9j aGVjazsKIC0tIGNsZWFudXAKIERST1AgVEFCTEUgaGVhcHRlc3Q7CiBEUk9QIFRBQkxFU1BB Q0UgcmVncmVzc190ZXN0X3N0YXRzX3RibHNwYzsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1j aGVjay9zcWwvY2hlY2tfaGVhcC5zcWwgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hl YXAuc3FsCmluZGV4IDE3NDViYWU2MzRlLi5jMGJhMjYzNTE4MCAxMDA2NDQKLS0tIGEvY29u dHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFwLnNxbAorKysgYi9jb250cmliL2FtY2hlY2sv c3FsL2NoZWNrX2hlYXAuc3FsCkBAIC0xMzgsNiArMTM4LDQzIEBAIFNFTEVDVCAqIEZST00g dmVyaWZ5X2hlYXBhbSgndGVzdF9mb3JlaWduX3RhYmxlJywKIAkJCQkJCQlzdGFydGJsb2Nr IDo9IE5VTEwsCiAJCQkJCQkJZW5kYmxvY2sgOj0gTlVMTCk7CiAKKy0tIEhPVC1pbmRleGVk IChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRleGVkIFVQ REFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFwLW9u bHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxhbnRzIGlu ZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmluZyBhIGNo YWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCistLSBMUF9S RURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2ZSBIT1Qt aW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5ZXQgYmUg c3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVzZSBhcyBs ZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNzZXJ0cyB0 aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFnYWluc3Qg bGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFCTEUgaG90 X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBpbnQsIGMz IGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhvdF9pbmRl eGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUgSU5ERVgg aG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsKK0lOU0VS VCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczogZWFjaCBy b3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vzc2Z1bCBI T1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFuZCBpbnNl cnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJpYnV0ZSBj aGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsgMTAwMDsK Ky0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZlIEhPVC1p bmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVuZSBzZWVz IGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0tIHRoZW0g dG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBydW5zIHRo ZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgorVVBEQVRF IGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1MDsKK1VQ REFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7 CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9 IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hlY2s7Cist LSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBhZ2FpbnN0 IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3RpbmcgdGhl IGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5taXN0YWth YmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwgYXR0bnVt LCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywKKwkJCQkJ ICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxMKTsKK0RS T1AgVEFCTEUgaG90X2luZGV4ZWRfY2hlY2s7CisKIC0tIGNsZWFudXAKIERST1AgVEFCTEUg aGVhcHRlc3Q7CiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190ZXN0X3N0YXRzX3RibHNwYzsK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMgYi9jb250cmli L2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCmluZGV4IDIwZmY1OGFhNzgyLi45M2EzYmMzMThh MiAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYworKysgYi9j b250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2RldG9hc3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNp bmNsdWRlICJhY2Nlc3MvaGVhcHRvYXN0LmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRl eGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vz cy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgpAQCAtNTIyLDkgKzUy MywxMiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKi8KIAkJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQoY3R4Lml0ZW1pZCkpCiAJCQl7Ci0JCQkJT2Zmc2V0TnVt YmVyIHJkb2ZmbnVtID0gSXRlbUlkR2V0UmVkaXJlY3QoY3R4Lml0ZW1pZCk7CisJCQkJT2Zm c2V0TnVtYmVyIHJkb2ZmbnVtOwogCQkJCUl0ZW1JZAkJcmRpdGVtOwogCisJCQkJLyogUmVz b2x2ZSB0aGUgcmVkaXJlY3QncyB0YXJnZXQgb2Zmc2V0LiAqLworCQkJCXJkb2ZmbnVtID0g SXRlbUlkR2V0UmVkaXJlY3QoY3R4Lml0ZW1pZCk7CisKIAkJCQlpZiAocmRvZmZudW0gPCBG aXJzdE9mZnNldE51bWJlcikKIAkJCQl7CiAJCQkJCXJlcG9ydF9jb3JydXB0aW9uKCZjdHgs CkBAIC02MTUsMTggKzYxOSw0NyBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQljdHgudHVwaGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBh Z2UsIGN0eC5pdGVtaWQpOwogCQkJY3R4Lm5hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0 dHMoY3R4LnR1cGhkcik7CiAKLQkJCS8qIE9rLCByZWFkeSB0byBjaGVjayB0aGlzIG5leHQg dHVwbGUgKi8KLQkJCWNoZWNrX3R1cGxlKCZjdHgsCi0JCQkJCQkmeG1pbl9jb21taXRfc3Rh dHVzX29rW2N0eC5vZmZudW1dLAotCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c1tjdHgub2Zm bnVtXSk7CisJCQkvKgorCQkJICogQSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGlzIGFuCisJCQkgKiBMUF9OT1JNQUwgaXRlbSB0aGF0IGlzIG5v dCBhIHJlYWwgdHVwbGU6IEhFQVBfSU5ERVhFRF9VUERBVEVECisJCQkgKiB3aXRoIG5hdHRz ID09IDAsIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlOX0lOVkFMSUQpLAorCQkJ ICogY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsgYW5kIGEgbW9kaWZpZWQtYXR0cnMgYml0bWFw LiAgVGhlCisJCQkgKiBwZXItdHVwbGUgY2hlY2tzIGFzc3VtZSBhIHJlYWwgdHVwbGUgYW5k IHdvdWxkIG1pc3JlcG9ydCBpdCwgc28KKwkJCSAqIHNraXAgdGhlbTsgdGhlIHVwZGF0ZS1j aGFpbiBwYXNzIGJlbG93IHN0aWxsIHJlY29yZHMgaXRzCisJCQkgKiBmb3J3YXJkIGVkZ2Ug YW5kIHRyZWF0cyBpdCBsaWtlIGEgcmVkaXJlY3QgKGEgZm9yd2FyZGluZyBub2RlKS4KKwkJ CSAqLworCQkJaWYgKCFIb3RJbmRleGVkSGVhZGVySXNTdHViKGN0eC50dXBoZHIpKQorCQkJ CWNoZWNrX3R1cGxlKCZjdHgsCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1c19va1tjdHgu b2ZmbnVtXSwKKwkJCQkJCQkmeG1pbl9jb21taXRfc3RhdHVzW2N0eC5vZmZudW1dKTsKIAog CQkJLyoKIAkJCSAqIElmIHRoZSBDVElEIGZpZWxkIG9mIHRoaXMgdHVwbGUgc2VlbXMgdG8g cG9pbnQgdG8gYW5vdGhlciB0dXBsZQogCQkJICogb24gdGhlIHNhbWUgcGFnZSwgcmVjb3Jk IHRoYXQgdHVwbGUgYXMgdGhlIHN1Y2Nlc3NvciBvZiB0aGlzCi0JCQkgKiBvbmUuCisJCQkg KiBvbmUuICBBIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIgc3RvcmVzIGl0cyBmb3J3YXJkIGxp bmsgaW4gdGhlCisJCQkgKiB0X2N0aWQgb2Zmc2V0IG9ubHkgKHRoZSBibG9jayBoYWxmIGlz IHJlcHVycG9zZWQgdG8gaG9sZCB0aGUKKwkJCSAqIHN0dWIncyB3cml0ZS10aW1lIG5hdHRz KSwgc28gcmVzb2x2ZSBpdHMgc3VjY2Vzc29yIHZpYSB0aGUgc3R1YgorCQkJICogYWNjZXNz b3I7IHRoZSBmb3J3YXJkIHRhcmdldCBpcyBhbHdheXMgb24gdGhlIHNhbWUgcGFnZS4KIAkJ CSAqLwotCQkJbmV4dGJsa25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0eC50 dXBoZHIpLT50X2N0aWQpOwotCQkJbmV4dG9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0 TnVtYmVyKCYoY3R4LnR1cGhkciktPnRfY3RpZCk7CisJCQlpZiAoSG90SW5kZXhlZEhlYWRl cklzU3R1YihjdHgudHVwaGRyKSkKKwkJCXsKKwkJCQluZXh0Ymxrbm8gPSBjdHguYmxrbm87 CisJCQkJbmV4dG9mZm51bSA9IEhvdEluZGV4ZWRTdHViR2V0Rm9yd2FyZChjdHgudHVwaGRy KTsKKwkJCQlpZiAobmV4dG9mZm51bSA9PSBjdHgub2ZmbnVtIHx8CisJCQkJCW5leHRvZmZu dW0gPCBGaXJzdE9mZnNldE51bWJlciB8fCBuZXh0b2ZmbnVtID4gbWF4b2ZmKQorCQkJCXsK KwkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCSAgcHNwcmludGYoIkhP VC1pbmRleGVkIHN0dWIgZm9yd2FyZCBsaW5rIHRvIGl0ZW0gYXQgb2Zmc2V0ICVkIGlzIG91 dCBvZiByYW5nZSBvciBzZWxmLXJlZmVyZW50aWFsICh2YWxpZCByYW5nZSAlZC4uJWQpIiwK KwkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwKKwkJCQkJCQkJCQkJICAgRmlyc3RPZmZzZXRO dW1iZXIsIG1heG9mZikpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJbmV4dGJsa25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0 eC50dXBoZHIpLT50X2N0aWQpOworCQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJfQogCQkJaWYgKG5leHRi bGtubyA9PSBjdHguYmxrbm8gJiYgbmV4dG9mZm51bSAhPSBjdHgub2ZmbnVtICYmCiAJCQkJ bmV4dG9mZm51bSA+PSBGaXJzdE9mZnNldE51bWJlciAmJiBuZXh0b2ZmbnVtIDw9IG1heG9m ZikKIAkJCQlzdWNjZXNzb3JbY3R4Lm9mZm51bV0gPSBuZXh0b2ZmbnVtOwpAQCAtNjc1LDcg KzcwOCw3IEBAIHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgKi8KIAkJ CQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpOwogCi0JCQkJLyogQ2FuIG9ubHkg cmVkaXJlY3QgdG8gYSBIT1QgdHVwbGUuICovCisJCQkJLyogQSByZWRpcmVjdCB0YXJnZXRz IHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLwogCQkJCW5leHRfaHR1cCA9 IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJ CQlpZiAoIUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkobmV4dF9odHVwKSkKIAkJCQl7CkBA IC02ODcsNiArNzIwLDE5IEBAIHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkvKiBIT1QgY2hhaW5zIHNob3VsZCBub3QgaW50ZXJzZWN0LiAqLwogCQkJCWlmIChwcmVk ZWNlc3NvcltuZXh0b2ZmbnVtXSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQkJCXsKKwkJ CQkJLyoKKwkJCQkJICogSW4gdGhlIEhPVC9TSVUgbW9kZWwgc2V2ZXJhbCByZWRpcmVjdHMg bGVnaXRpbWF0ZWx5CisJCQkJCSAqIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZTog d2hlbiBhIGNoYWluIGNvbGxhcHNlcywKKwkJCQkJICogdGhlIHJvb3QgYW5kIGVhY2ggZW50 cnktYmVhcmluZyBkZWFkIG1lbWJlciBiZWNvbWUgYQorCQkJCQkgKiByZWRpcmVjdCB0byBm aXJzdF9saXZlIHNvIGV2ZXJ5IHN0YWxlIGJ0cmVlIGVudHJ5IHN0aWxsCisJCQkJCSAqIHJl c29sdmVzIHRoZXJlICh0aGUgcmVhZCBwYXRoIHRoZW4gcmVjaGVja3MgdGhlIGxlYWYKKwkJ CQkJICoga2V5KS4gIE11bHRpcGxlIHByZWRlY2Vzc29ycyBhcmUgdGhlcmVmb3JlIGV4cGVj dGVkCisJCQkJCSAqIHdoZW4gdGhlIHRhcmdldCBpcyBIT1Qtc2VsZWN0aXZlbHktdXBkYXRl ZDsga2VlcCB0aGUKKwkJCQkJICogZmlyc3QgcHJlZGVjZXNzb3IgYW5kIGRvIG5vdCByZXBv cnQgaXQgYXMgY29ycnVwdGlvbi4KKwkJCQkJICovCisJCQkJCWlmICgobmV4dF9odHVwLT50 X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJCQkJY29udGlu dWU7CisKIAkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKIAkJCQkJCQkJCSAgcHNwcmlu dGYoInJlZGlyZWN0IGxpbmUgcG9pbnRlciBwb2ludHMgdG8gb2Zmc2V0ICVkLCBidXQgb2Zm c2V0ICVkIGFsc28gcG9pbnRzIHRoZXJlIiwKIAkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwg cHJlZGVjZXNzb3JbbmV4dG9mZm51bV0pKTsKQEAgLTcwMSw2ICs3NDcsMzAgQEAgdmVyaWZ5 X2hlYXBhbShQR19GVU5DVElPTl9BUkdTKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCisJCQkv KgorCQkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGZvcndhcmRzIGxpa2UgYSByZWRp cmVjdDogaXQgaXMgbm90IGEKKwkJCSAqIHJlYWwgdHVwbGUsIHNvIGRvbid0IGFwcGx5IHRo ZSB0dXBsZS10by10dXBsZSB1cGRhdGUtY2hhaW4KKwkJCSAqIGNoZWNrcywgYnV0IGRvIHJl Y29yZCB0aGUgcHJlZGVjZXNzb3IgZWRnZSB0byBpdHMgdGFyZ2V0IHNvIHRoZQorCQkJICog bGl2ZSB0dXBsZSBpdCB1bHRpbWF0ZWx5IGZvcndhcmRzIHRvIGlzIG5vdCBtaXN0YWtlbiBm b3IgYQorCQkJICogY2hhaW4gcm9vdC4gIEl0cyB0YXJnZXQgbXVzdCBiZSBoZWFwLW9ubHkg KGFub3RoZXIgc3R1YiBvciB0aGUKKwkJCSAqIGxpdmUgaGVhcC1vbmx5IHR1cGxlKS4KKwkJ CSAqLworCQkJY3Vycl9odHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4 LnBhZ2UsIGN1cnJfbHApOworCQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3Vycl9o dHVwKSkKKwkJCXsKKwkJCQlpZiAoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpCisJCQkJewor CQkJCQluZXh0X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFn ZSwgbmV4dF9scCk7CisJCQkJCWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShuZXh0 X2h0dXApKQorCQkJCQkJcmVwb3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCQkgIHBz cHJpbnRmKCJIT1QtaW5kZXhlZCBzdHViIGZvcndhcmRzIHRvIGEgbm9uLWhlYXAtb25seSB0 dXBsZSBhdCBvZmZzZXQgJWQiLAorCQkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSkpOworCQkJ CQllbHNlIGlmIChwcmVkZWNlc3NvcltuZXh0b2ZmbnVtXSA9PSBJbnZhbGlkT2Zmc2V0TnVt YmVyKQorCQkJCQkJcHJlZGVjZXNzb3JbbmV4dG9mZm51bV0gPSBjdHgub2ZmbnVtOworCQkJ CX0KKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHRoZSBuZXh0IGxp bmUgcG9pbnRlciBpcyBhIHJlZGlyZWN0LCBvciBpZiBpdCdzIGEgdHVwbGUgYnV0CiAJCQkg KiB0aGUgWE1BWCBvZiB0aGlzIHR1cGxlIGRvZXNuJ3QgbWF0Y2ggdGhlIFhNSU4gb2YgdGhl IG5leHQKQEAgLTcwOSw3ICs3NzksNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkgKi8KIAkJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQobmV4dF9scCkpCiAJCQkJ Y29udGludWU7Ci0JCQljdXJyX2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRl bShjdHgucGFnZSwgY3Vycl9scCk7CiAJCQljdXJyX3htYXggPSBIZWFwVHVwbGVIZWFkZXJH ZXRVcGRhdGVYaWQoY3Vycl9odHVwKTsKIAkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFk ZXIpIFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJCW5leHRfeG1pbiA9IEhl YXBUdXBsZUhlYWRlckdldFhtaW4obmV4dF9odHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCBhYjRmOGJjMTg4MS4uMWY0MWIwZmZm ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5E RVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQK QEAgLTI0NCw2ICsyNDQsMTYgQEAgc3RhbGUgZW50cmllcyAoZW5mb3JjZWQgaW4gaGVhcF9w cnVuZV9yZWNvcmRfcmVkaXJlY3QsIHRoZSBzdHViIHJlY29yZGVycywgYW5kCiBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUpLgogCiAKK2FtY2hlY2sgYW5kIHN0YXRpc3RpY3MK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordmVyaWZ5X2hlYXBhbSB0cmVhdHMgdGhlIEhP VC1pbmRleGVkIGFydGlmYWN0cyBhcyBsZWdpdGltYXRlOiBhIGxpdmUKK0hFQVBfSU5ERVhF RF9VUERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMgcHJlc2Vy dmVkLCBhbmQKK211bHRpcGxlIExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZl IHR1cGxlLgorCitTdGF0aXN0aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBfaG90X2lu ZGV4ZWRfdXBkIGNvdW50cyBIT1QtaW5kZXhlZAorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0t LS0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3Jj L2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCmluZGV4IGZmYmY2YWU4ZDc1Li4wYTZmYTBk Y2ZmMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCB0ZXN0 cyArPSB7CiAgICAgICAndC8wMDZfdHJhbnNmZXJfbW9kZXMucGwnLAogICAgICAgJ3QvMDA3 X211bHRpeGFjdF9jb252ZXJzaW9uLnBsJywKICAgICAgICd0LzAwOF9leHRlbnNpb25fY29u dHJvbF9wYXRoLnBsJywKKyAgICAgICd0LzAwOV9ob3RfaW5kZXhlZC5wbCcsCiAgICAgXSwK ICAgICAnZGVwcyc6IFt0ZXN0X2V4dF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0 eSc6IDQwfSwgIyBwZ191cGdyYWRlIHRlc3RzIGFyZSBzbG93CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwgYi9zcmMvYmluL3BnX3VwZ3Jh ZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmI3MTEyOWFlMDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191 cGdyYWRlL3QvMDA5X2hvdF9pbmRleGVkLnBsCkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHly aWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor IyBwZ191cGdyYWRlIG11c3QgcHJlc2VydmUgSE9ULWluZGV4ZWQgb24tZGlzayBzdGF0ZS4g IEEgcmVsYXRpb24gdGhhdCBoYXMKKyMgYWNjdW11bGF0ZWQgSE9ULWluZGV4ZWQgY2hhaW5z IC0tIGluY2x1ZGluZyBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrCisjIChBQkEpLCBh biBvdXQtb2YtbGluZSAoVE9BU1QpIGluZGV4ZWQgY29sdW1uLCBhbmQgY2hhaW5zIGNvbGxh cHNlZCB0bworIyB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzIGJ5IFZBQ1VVTSAtLSBtdXN0 IGNvbWUgdGhyb3VnaCBhbiB1cGdyYWRlIHdpdGggaXRzCisjIGRhdGEgaW50YWN0LCBpdHMg aW5kZXhlcyBzdHJ1Y3R1cmFsbHkgc291bmQsIGFuZCBpdHMgY2hhaW5zIHN0aWxsIHNjYW5u aW5nCisjIGNvcnJlY3RseS4gIHBnX3VwZ3JhZGUgdHJhbnNmZXJzIGhlYXAgYW5kIGluZGV4 IGZpbGVzIHZlcmJhdGltLCBzbyB0aGlzIGlzCisjIHJlYWxseSBhIGNoZWNrIHRoYXQgdGhl IG5ldy1zdGF0ZSBiaXRzIChIRUFQX0lOREVYRURfVVBEQVRFRCwgY29sbGFwc2Ugc3R1YnMp CisjIGFyZSBub3QgcmVqZWN0ZWQgYnkgcGdfdXBncmFkZSdzIGNoZWNrcyBhbmQgc3RheSBj b3JyZWN0IG9uIHRoZSBuZXcgY2x1c3Rlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRtb2Rl ID0gJEVOVntQR19URVNUX1BHX1VQR1JBREVfTU9ERX0gfHwgJy0tY29weSc7CisKK215ICRv bGRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZScpOwor JG9sZG5vZGUtPmluaXQ7Ciskb2xkbm9kZS0+c3RhcnQ7CisKKyMgQnVpbGQgYSByZWxhdGlv biB3aXRoIHNldmVyYWwgc2Vjb25kYXJ5IGluZGV4ZXMgc28gc2luZ2xlLWNvbHVtbiB1cGRh dGVzCisjIHN0YXkgSE9ULWluZGV4ZWQsIHRoZW4gZXhlcmNpc2UgdGhlIGNhc2VzIHRoYXQg cHJvZHVjZSBpbnRlcmVzdGluZyBvbi1kaXNrCisjIHN0YXRlLgorJG9sZG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjazsKKwlDUkVB VEUgVEFCTEUgaGkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50LCBiaWcgdGV4 dCkKKwkgIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisJQUxURVIgVEFCTEUgaGkgQUxURVIg Q09MVU1OIGJpZyBTRVQgU1RPUkFHRSBFWFRFUk5BTDsKKwlDUkVBVEUgSU5ERVggaGlfayBP TiBoaSAoayk7CisJQ1JFQVRFIElOREVYIGhpX3YgT04gaGkgKHYpOworCUNSRUFURSBJTkRF WCBoaV9iaWcgT04gaGkgKGJpZyk7CisJSU5TRVJUIElOVE8gaGkgU0VMRUNUIGcsIGcsIGcg KiAxMCwgcmVwZWF0KGNocig2NCArIGcpLCAyMDAwKQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIGc7Cit9KTsKKworIyBJbnRlcmxlYXZlIHVwZGF0ZXMgb2YgZGlmZmVyZW50 IGluZGV4ZWQgY29sdW1ucyBvbiB0aGUgc2FtZSByb3dzLiAgQSBtZW1iZXIKKyMgdGhhdCBj aGFuZ2VkIGEgY29sdW1uIG5vdCBjaGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wIHN1cnZp dmVzIFZBQ1VVTSBhcyBhCisjIGNvbGxhcHNlIHN0dWI7IHRoZSByZXN0IGFyZSByZWNsYWlt ZWQuICBSb3cgMSBhZGRpdGlvbmFsbHkgY3ljbGVzIGsgYXdheSBhbmQKKyMgYmFjayAoQUJB KSwgYW5kIHJvdyAyIHJld3JpdGVzIGl0cyB0b2FzdGVkIGluZGV4ZWQgY29sdW1uLgorJG9s ZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSBoaSBTRVQgayA9IGsg KyAxMDAgV0hFUkUgaWQgPD0gMTA7ICAgLS0gY2hhbmdlcyBrCisJVVBEQVRFIGhpIFNFVCB2 ID0gdiArIDEgICBXSEVSRSBpZCA8PSAxMDsgICAgLS0gY2hhbmdlcyB2IChzdXJ2aXZlcyBh cyBzdHViKQorCVVQREFURSBoaSBTRVQgayA9IGsgLSAxMDAgV0hFUkUgaWQgPD0gMTA7ICAg IC0tIGsgYmFjayB0byBvcmlnaW5hbCAoQUJBKQorCVVQREFURSBoaSBTRVQgYmlnID0gcmVw ZWF0KCdaJywgMjAwMCkgV0hFUkUgaWQgPSAyOworfSk7CisjIENvbGxhcHNlIGRlYWQgY2hh aW4gbWVtYmVycyB0byBzdHVicy4KKyRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg J1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpJyk7CisKKyMgVGhlIHByZS11cGdyYWRl IHN0YXRlIG11c3QgYWxyZWFkeSBiZSBzZWxmLWNvbnNpc3RlbnQuCitpcyggJG9sZG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlm eV9oZWFwYW0oJ2hpJyl9KSwKKwknMCcsICdwcmUtdXBncmFkZSBoZWFwIGlzIGNvbnNpc3Rl bnQnKTsKKworIyBTbmFwc2hvdCB0aGUgZGF0YSB3ZSB3aWxsIGNvbXBhcmUgYWZ0ZXIgdGhl IHVwZ3JhZGUuCitteSAkZXhwZWN0ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7U0VMRUNUIGlkLCBrLCB2LCBsZW5ndGgoYmlnKSBGUk9NIGhpIE9SREVSIEJZIGlk fSk7CisKKyRvbGRub2RlLT5zdG9wOworCisjIE5ldyBjbHVzdGVyLCBzYW1lIHZlcnNpb24u CitteSAkbmV3bm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25v ZGUnKTsKKyRuZXdub2RlLT5pbml0OworCitteSAkb2xkYmluZGlyID0gJG9sZG5vZGUtPmNv bmZpZ19kYXRhKCctLWJpbmRpcicpOworbXkgJG5ld2JpbmRpciA9ICRuZXdub2RlLT5jb25m aWdfZGF0YSgnLS1iaW5kaXInKTsKKworIyBSdW4gcGdfdXBncmFkZSBmcm9tIGEgd3JpdGFi bGUgZGlyZWN0b3J5IChtYXRjaGVzIDAwMl9wZ191cGdyYWRlKS4KK2NoZGlyICR7UG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM6OnRtcF9jaGVja307CisKK2NvbW1hbmRfb2soCisJWworCQkn cGdfdXBncmFkZScsICctLW5vLXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZG5v ZGUtPmRhdGFfZGlyLAorCQknLS1uZXctZGF0YWRpcicgPT4gJG5ld25vZGUtPmRhdGFfZGly LAorCQknLS1vbGQtYmluZGlyJyA9PiAkb2xkYmluZGlyLAorCQknLS1uZXctYmluZGlyJyA9 PiAkbmV3YmluZGlyLAorCQknLS1zb2NrZXRkaXInID0+ICRuZXdub2RlLT5ob3N0LAorCQkn LS1vbGQtcG9ydCcgPT4gJG9sZG5vZGUtPnBvcnQsCisJCSctLW5ldy1wb3J0JyA9PiAkbmV3 bm9kZS0+cG9ydCwKKwkJJG1vZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9yIEhP VC1pbmRleGVkIHJlbGF0aW9uJyk7CisKKyRuZXdub2RlLT5zdGFydDsKKworIyBEYXRhIHN1 cnZpdmVkIGludGFjdC4KK215ICRnb3QgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJcXtTRUxFQ1QgaWQsIGssIHYsIGxlbmd0aChiaWcpIEZST00gaGkgT1JERVIgQlkg aWR9KTsKK2lzKCRnb3QsICRleHBlY3QsICdIT1QtaW5kZXhlZCB0YWJsZSBkYXRhIHByZXNl cnZlZCBhY3Jvc3MgcGdfdXBncmFkZScpOworCisjIEhlYXAgYW5kIGluZGV4ZXMgYXJlIHN0 cnVjdHVyYWxseSBzb3VuZCBvbiB0aGUgbmV3IGNsdXN0ZXIuCitpcyggJG5ld25vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9o ZWFwYW0oJ2hpJyl9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaGVhcCBpcyBjb25zaXN0ZW50 IChjb2xsYXBzZSBzdHVicyByZWNvZ25pc2VkKScpOworaXMoICRuZXdub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VMRUNUIGNvdW50KCopIEZST00gKAorCQkJU0VMRUNU IGJ0X2luZGV4X2NoZWNrKGMub2lkKQorCQkJRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5k ZXggaSBPTiBpLmluZGV4cmVsaWQgPSBjLm9pZAorCQkJV0hFUkUgaS5pbmRyZWxpZCA9ICdo aSc6OnJlZ2NsYXNzKSBzfSksCisJJzQnLCAncG9zdC11cGdyYWRlIGluZGV4ZXMgcGFzcyBi dF9pbmRleF9jaGVjaycpOworCisjIFRoZSBBQkEgY2hhaW4gb24gcm93IDEgc3RpbGwgc2Nh bnMgY29ycmVjdGx5IHRocm91Z2ggYSBmb3JjZWQgaW5kZXggc2NhbjoKKyMgaz0xIHJldHVy bnMgZXhhY3RseSB0aGUgb25lIGxpdmUgcm93LCBhbmQgaXRzIHN1cGVyc2VkZWQgdmFsdWUg aXMgZ29uZS4KK2lzKCAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCVNF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOwor CQlTRUxFQ1QgY291bnQoKikgRlJPTSBoaSBXSEVSRSBrID0gMX0pLAorCScxJywgJ3Bvc3Qt dXBncmFkZSBpbmRleCBzY2FuIHJldHVybnMgdGhlIEFCQSByb3cgb25jZScpOworaXMoICRu ZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOyBTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgq KSBGUk9NIGhpIFdIRVJFIGsgPSAxMDF9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaW5kZXgg c2NhbiBkcm9wcyB0aGUgc3VwZXJzZWRlZCB2YWx1ZScpOworCiskbmV3bm9kZS0+c3RvcDsK KworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjUwLjEKCg== --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0007-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0007-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA1OWU2NGZkZjA4ODJiNGJkZWUxNWRiMThhYzMxOWY3ZTNhOTkxNTQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDcv OV0gQWRkIEhPVC1pbmRleGVkIHN0YXRpc3RpY3MgYW5kIHRoZSBjb21wcmVoZW5zaXZlIHRl c3QKIHN1aXRlCgpFeHBvc2UgdGhlIEhPVC1pbmRleGVkIGFjdGl2aXR5IGNvdW50ZXJzIG1h aW50YWluZWQgYnkgdGhlIHdyaXRlIHBhdGg6CnBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1cF9o b3RfaW5kZXhlZF91cGQsIHRoZSBwZXItaW5kZXgKbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgLyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBjb3VudGVycyBpbgpwZ19z dGF0X2FsbF9pbmRleGVzLCBhbmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSBy ZXBvcnRpbmcgcGVyLXJlbGF0aW9uCkhPVC1pbmRleGVkIGNoYWluIGNvbXBvc2l0aW9uLiAg RG9jdW1lbnQgdGhlbSBpbiBtb25pdG9yaW5nLnNnbWwgYW5kIHRoZQpSRUFETUUuCgpXaXRo IHN0YXRpc3RpY3MsIHBydW5lL2NvbGxhcHNlLCBhbmQgYW1jaGVjayByZWNvZ25pdGlvbiBh bGwgaW4gcGxhY2UsIGFkZCB0aGUKZnVsbCBmZWF0dXJlIHRlc3Qgc3VpdGUsIHdoaWNoIHVz ZXMgdGhvc2UgZmFjaWxpdGllcyB0byB2ZXJpZnkgYmVoYXZpb3I6CgotIGhvdF9pbmRleGVk X3VwZGF0ZXMgKHJlZ3Jlc3Npb24pOiBlbGlnaWJpbGl0eSBhbmQgY2xhc3NpZmljYXRpb247 IHNlbGVjdGl2ZQogIG1haW50ZW5hbmNlIGFjcm9zcyBtdWx0aXBsZS9jb21wb3NpdGUgaW5k ZXhlczsgdGhlIGNyb3NzZWQtYXR0cmlidXRlIHJlYWQKICBwYXRoIGZvciBlcXVhbGl0eSwg cmFuZ2UsIGFuZCBpbmVxdWFsaXR5IHNjYW5zOyBhIGtleSBjeWNsZWQgYXdheSBhbmQgYmFj awogIChBQkEpLCBpbmNsdWRpbmcgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M7IFRP QVNUZWQgaW5kZXhlZCBjb2x1bW5zOwogIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGZsaXBz IChrZXkgYW5kIG5vbi1rZXkgcHJlZGljYXRlIGNvbHVtbnMpOwogIHRyaWdnZXItbW9kaWZp ZWQgaW5kZXhlZCBjb2x1bW5zOyBleGNsdXNpb24tY29uc3RyYWludCB0YWJsZXM7IHBhcnRp dGlvbmVkCiAgdGFibGVzOyBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgKGhhc2gsIEdJTiwg R2lTVCk7IGEgVU5JUVVFIGluZGV4IG9uIGEgdHlwZQogIHdoZXJlIGltYWdlIGVxdWFsaXR5 IGRpZmZlcnMgZnJvbSBvcGVyYXRvciBlcXVhbGl0eTsgQ1JFQVRFIElOREVYIC8gUkVJTkRF WAogIGFuZCBEUk9QIElOREVYIG92ZXIgbGl2ZSBjaGFpbnM7IHBydW5lIHJlY2xhbWF0aW9u LCBzdHViIG1peGVzLCBhbmQKICByZS1jb2xsYXBzZSBhY3Jvc3MgcGFydGlhbCBWQUNVVU1z OyB0aGUgbmV2ZXItYWxsLXZpc2libGUgZ3VhcmQ7IGFuZCBEREwKICBhZnRlciBhIGNoYWlu IGV4aXN0cyAoQUREIENPTFVNTiBjcm9zc2luZyBhIGJpdG1hcC1zaXplIGJvdW5kYXJ5LCBE Uk9QCiAgQ09MVU1OKS4KLSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCAoaXNvbGF0aW9uKTog Y29uY3VycmVudCBVUERBVEUgLyBWQUNVVU0gLyBwcnVuZSBhbmQKICBpbmRleCBzY2Fucywg a2V5IGN5Y2xpbmcsIGFib3J0cywgYW5kIHJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBj b25jdXJyZW50CiAgY29sbGFwc2UuCi0gMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5IChyZWNv dmVyeSk6IFdBTCByZXBsYXkgb2YgdGhlIGNoYWluIGFuZCBpdHMgY29sbGFwc2UKICB1bmRl ciB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCi0gcGdfc3VyZ2VyeSBoYW5kbGluZyBvZiBI T1QtaW5kZXhlZCB0dXBsZXMgYW5kIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzLgoKQXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0KIGNvbnRyaWIvcGdfc3VyZ2Vy eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQgIHwgICA4MyArCiBjb250cmliL3BnX3N1 cmdlcnkvaGVhcF9zdXJnZXJ5LmMgICAgICAgICAgICAgfCAgIDE2ICsKIGNvbnRyaWIvcGdf c3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbCAgICAgICB8ICAgNTMgKwogZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgICA1NyArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgICB8ICAgIDMgKwogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaG90X2luZGV4ZWRfc3RhdHMuYyAgIHwgIDE4OCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICAgMSAr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgICA0 ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAgICAgICAgICB8ICAg MTIgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwg ICAyOCArCiAuLi4vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0ICAgICAg fCAgMTM5ICsrCiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlICAgICAg ICAgfCAgICAxICsKIC4uLi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjICAg ICAgICB8ICAxMjMgKysKIHNyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlICAgICAgICAgICAg ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAg ICAgICAgICAgICB8ICAgIDEgKwogLi4uL3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsICAgIHwgIDE0OSArKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQgIHwgMTcxOSArKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAxMiArCiBzcmMvdGVzdC9y ZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgICAxICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2hvdF9pbmRleGVkX3VwZGF0ZXMuc3FsICB8IDExNjcgKysrKysrKysr KysKIDIyIGZpbGVzIGNoYW5nZWQsIDM3NjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRl eGVkX3N0YXRzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhl ZF9yZWNvdmVyeS5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X2luZGV4ZWRfdXBkYXRlcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbAoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtlZmlsZSBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9NYWtl ZmlsZQppbmRleCBhNjY3NzZjNGM0MS4uZGE3NTJhODExNDcgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfc3VyZ2VyeS9NYWtlZmlsZQorKysgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKQEAgLTEwLDYgKzEwLDcgQEAgREFUQSA9IHBnX3N1cmdlcnktLTEuMC5zcWwKIFBHRklM RURFU0MgPSAicGdfc3VyZ2VyeSAtIHBlcmZvcm0gc3VyZ2VyeSBvbiBhIGRhbWFnZWQgcmVs YXRpb24iCiAKIFJFR1JFU1MgPSBoZWFwX3N1cmdlcnkKK0VYVFJBX0lOU1RBTEwgPSBjb250 cmliL3BhZ2VpbnNwZWN0CiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25m aWcKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdl cnkub3V0IGIvY29udHJpYi9wZ19zdXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQK aW5kZXggZGY3ZDEzYjA5MDguLjFhNWZlZjViMmJiIDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dAorKysgYi9jb250cmliL3BnX3N1 cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5Lm91dApAQCAtMTc1LDYgKzE3NSw4OSBAQCBE RVRBSUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KIHNl bGVjdCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSdd Ojp0aWRbXSk7CiBFUlJPUjogIGNhbm5vdCBvcGVyYXRlIG9uIHJlbGF0aW9uICJ2dyIKIERF VEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHZpZXdzLgorLS0g QSBIT1QvU0lVIGNoYWluIGNvbGxhcHNlIHR1cm5zIHRoZSBjaGFpbiByb290IGFuZCBlYWNo IGRlYWQgZW50cnktYmVhcmluZworLS0gbWVtYmVyIGludG8gYW4gTFBfUkVESVJFQ1QgdG8g dGhlIGxpdmUgdHVwbGUuICBwZ19zdXJnZXJ5IG9wZXJhdGVzIG9uIHJlYWwKKy0tIHR1cGxl cyBhbmQgbXVzdCBsZWF2ZSB0aGUgbGl2ZSByb3cgcmVhY2hhYmxlIGFmdGVyIHN1Y2ggYSBj b2xsYXBzZS4KK2NyZWF0ZSBleHRlbnNpb24gcGFnZWluc3BlY3Q7CitjcmVhdGUgdGFibGUg aHRvbWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRoIChmaWxsZmFj dG9yID0gNTApOworY3JlYXRlIGluZGV4IGh0b21iX2Egb24gaHRvbWIoYSk7CitpbnNlcnQg aW50byBodG9tYiB2YWx1ZXMgKDEsIDEwLCAyMCk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBk YXRlcyBvbiBhbiBpbmRleGVkIGF0dHIsIHRoZW4gcHJ1bmU6IHRoZSBkZWFkIG1pZC1jaGFp bgorLS0gdmVyc2lvbnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1RzIHRvIHRoZSBsaXZlIHR1 cGxlLiAgSU5ERVhfQ0xFQU5VUCBvZmYga2VlcHMKKy0tIHRoZSBzdGFsZSBidHJlZSBsZWF2 ZXMgKGFuZCBoZW5jZSB0aGUgcmVkaXJlY3RzKSBpbiBwbGFjZS4KK3VwZGF0ZSBodG9tYiBz ZXQgYSA9IDExIHdoZXJlIGlkID0gMTsKK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDEyIHdoZXJl IGlkID0gMTsKK3ZhY3V1bSAoaW5kZXhfY2xlYW51cCBvZmYpIGh0b21iOworc2VsZWN0IG5f aG90X2luZGV4ZWQgPiAwIGFzIG1hZGVfaG90X2luZGV4ZWQKKyAgZnJvbSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaHRvbWInKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSB0aGUgbGl2ZSByb3cgaXMgaW50 YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxlY3QgaWQsIGEsIGIg ZnJvbSBodG9tYjsKKyBpZCB8IGEgIHwgYiAgCistLS0tKy0tLS0rLS0tLQorICAxIHwgMTIg fCAyMAorKDEgcm93KQorCitkcm9wIHRhYmxlIGh0b21iOworLS0gQSBjb2xsYXBzZSB0aGF0 IGtlZXBzIGEgKnN0dWIqIChhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIExQX05PUk1BTCBpdGVt IHdpdGgKKy0tIG5hdHRzID09IDApLCBub3QganVzdCByZWRpcmVjdHM6IHVwZGF0ZSB0d28g ZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBzbyB0aGUKKy0tIGZpcnN0IGRlYWQgbWVtYmVy J3MgY2hhbmdlZC1hdHRyIGJpdG1hcCBpcyBub3Qgc3Vic3VtZWQgYnkgbGF0ZXIgaG9wcyBh bmQgaXMKKy0tIHByZXNlcnZlZCBhcyBhIHN0dWIuICBwZ19zdXJnZXJ5IG11c3Qgc2tpcCBz dWNoIGEgc3R1YiAtLSBmb3JjaW5nIGEKKy0tIGZyZWV6ZS9raWxsIHdvdWxkIG92ZXJ3cml0 ZSBpdHMgdF9jdGlkIGZvcndhcmQgbGluayBhbmQgY29ycnVwdCB0aGUgY2hhaW4uCitjcmVh dGUgdGFibGUgaHN0dWIgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRo IChmaWxsZmFjdG9yID0gNTApOworY3JlYXRlIGluZGV4IGhzdHViX2Egb24gaHN0dWIoYSk7 CitjcmVhdGUgaW5kZXggaHN0dWJfYiBvbiBoc3R1YihiKTsKK2luc2VydCBpbnRvIGhzdHVi IHZhbHVlcyAoMSwgMTAsIDEwMCk7Cit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMSB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhCit1cGRhdGUgaHN0dWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7ICAgLS0gY2hhbmdlcyBhIGFnYWluIChzdXBlcnNlZGVzKQordXBkYXRlIGhzdHVi IHNldCBiID0gMTAxIHdoZXJlIGlkID0gMTsgIC0tIGNoYW5nZXMgYiAtPiBmaXJzdCBob3An cyB7YX0ga2VwdCBhcyBzdHViCit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBoc3R1YjsK Ky0tIExvY2F0ZSB0aGUgc3R1YjogYW4gTFBfTk9STUFMIGl0ZW0gY2FycnlpbmcgSEVBUF9J TkRFWEVEX1VQREFURUQgKDB4MDgwMCBpbgorLS0gdF9pbmZvbWFzazIpIHdpdGggemVybyBs aXZlIGF0dHJpYnV0ZXMgKHRfaW5mb21hc2syIG5hdHRzIGJpdHMgPT0gMCkuCitzZWxlY3Qg bHAgYXMgc3R1Yl9vZmYKKyAgZnJvbSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKCdo c3R1YicsIDApKQorICB3aGVyZSBscF9mbGFncyA9IDEgICAgICAgICAgICAgICAgICAgICAg IC0tIExQX05PUk1BTAorICAgIGFuZCAodF9pbmZvbWFzazIgJiAyMDQ4KSA8PiAwICAgICAg ICAgIC0tIEhFQVBfSU5ERVhFRF9VUERBVEVECisgICAgYW5kICh0X2luZm9tYXNrMiAmIDIw NDcpID0gMCAgICAgICAgICAgLS0gbmF0dHMgPT0gMCAoc3R1YiBzZW50aW5lbCkKKyAgXGdz ZXQKKy0tIEZvcmNlIGtpbGwvZnJlZXplIG9uIHRoZSBzdHViJ3MgdGlkOiBib3RoIG11c3Qg YmUgcmVmdXNlZCB3aXRoIGEgTk9USUNFLgorc2VsZWN0IGhlYXBfZm9yY2Vfa2lsbCgnaHN0 dWInOjpyZWdjbGFzcywgQVJSQVlbKCcoMCwnIHx8IDonc3R1Yl9vZmYnIHx8ICcpJyldOjp0 aWRbXSk7CitOT1RJQ0U6ICBza2lwcGluZyB0aWQgKDAsIDMpIGZvciByZWxhdGlvbiAiaHN0 dWIiIGJlY2F1c2UgaXQgaXMgYSBIT1QtaW5kZXhlZCBjb2xsYXBzZSBzdHViCisgaGVhcF9m b3JjZV9raWxsIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworc2VsZWN0IGhl YXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJlZ2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidz dHViX29mZicgfHwgJyknKV06OnRpZFtdKTsKK05PVElDRTogIHNraXBwaW5nIHRpZCAoMCwg MykgZm9yIHJlbGF0aW9uICJoc3R1YiIgYmVjYXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNv bGxhcHNlIHN0dWIKKyBoZWFwX2ZvcmNlX2ZyZWV6ZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworLS0gVGhlIGNoYWluIGlzIHVudG91Y2hlZDogdGhlIGxpdmUgcm93 IGlzIHN0aWxsIHJlYWNoYWJsZSB0aHJvdWdoIGVhY2ggaW5kZXguCitzZXQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7CitzZXQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitzZWxlY3QgaWQs IGEsIGIgZnJvbSBoc3R1YiB3aGVyZSBhID0gMTI7CisgaWQgfCBhICB8ICBiICAKKy0tLS0r LS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKworc2VsZWN0IGlkLCBhLCBi IGZyb20gaHN0dWIgd2hlcmUgYiA9IDEwMTsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0t Ky0tLS0tCisgIDEgfCAxMiB8IDEwMQorKDEgcm93KQorCityZXNldCBlbmFibGVfYml0bWFw c2NhbjsKK3Jlc2V0IGVuYWJsZV9zZXFzY2FuOworZHJvcCB0YWJsZSBoc3R1YjsKK2Ryb3Ag ZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OwogLS0gY2xlYW51cC4KIGRyb3AgdmlldyB2dzsKIGRy b3AgZXh0ZW5zaW9uIHBnX3N1cmdlcnk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdl cnkvaGVhcF9zdXJnZXJ5LmMgYi9jb250cmliL3BnX3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMK aW5kZXggYjhjZTEwOTU3ODIuLjdmYzY1M2NjMzM0IDEwMDY0NAotLS0gYS9jb250cmliL3Bn X3N1cmdlcnkvaGVhcF9zdXJnZXJ5LmMKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L2hlYXBf c3VyZ2VyeS5jCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAog I2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90 X2luZGV4ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0Lmgi CkBAIC0yMjYsNiArMjI3LDIxIEBAIGhlYXBfZm9yY2VfY29tbW9uKEZ1bmN0aW9uQ2FsbElu Zm8gZmNpbmZvLCBIZWFwVHVwbGVGb3JjZU9wdGlvbiBoZWFwX2ZvcmNlX29wdCkKIAkJCQkJ CQkJYmxrbm8sIG9mZm5vLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQkJ CWNvbnRpbnVlOwogCQkJfQorCQkJZWxzZSBpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1Yigo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpKSkKKwkJCXsKKwkJ CQkvKgorCQkJCSAqIEEgSE9ULWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBh biB4aWQtZnJlZQorCQkJCSAqIGZvcndhcmRpbmcgbm9kZSwgbm90IGEgcmVhbCB0dXBsZTog aXRzIHRfY3RpZCBjYXJyaWVzIHRoZQorCQkJCSAqIGNoYWluIGZvcndhcmQgbGluayBhbmQg dGhlIHdyaXRlLXRpbWUgbmF0dHMsIGFuZCBpdCBoYXMgbm8KKwkJCQkgKiBhdHRyaWJ1dGUg ZGF0YS4gIEZvcmNpbmcgYSBraWxsIG9yIGZyZWV6ZSB3b3VsZCBvdmVyd3JpdGUKKwkJCQkg KiB0X2N0aWQgYW5kIGNsZWFyIGl0cyB4YWN0IGJpdHMsIGJyZWFraW5nIHRoZSBjaGFpbiB3 YWxrIGFuZAorCQkJCSAqIGNvcnJ1cHRpbmcgdGhlIGhlYXAuICBTa2lwIGl0LCBhcyB3ZSBk byBmb3IgcmVkaXJlY3RzLgorCQkJCSAqLworCQkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkJ KGVycm1zZygic2tpcHBpbmcgdGlkICgldSwgJXUpIGZvciByZWxhdGlvbiBcIiVzXCIgYmVj YXVzZSBpdCBpcyBhIEhPVC1pbmRleGVkIGNvbGxhcHNlIHN0dWIiLAorCQkJCQkJCQlibGtu bywgb2Zmbm8sIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQkJY29udGlu dWU7CisJCQl9CiAKIAkJCS8qIE1hcmsgaXQgZm9yIHByb2Nlc3NpbmcuICovCiAJCQlBc3Nl cnQob2Zmbm8gPD0gTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwpkaWZmIC0tZ2l0IGEvY29udHJp Yi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsIGIvY29udHJpYi9wZ19zdXJnZXJ5 L3NxbC9oZWFwX3N1cmdlcnkuc3FsCmluZGV4IDY1MjZiMjc1MzVkLi5iZTRmZWQyYWY2NSAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdXJnZXJ5L3NxbC9oZWFwX3N1cmdlcnkuc3FsCisr KyBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9zcWwvaGVhcF9zdXJnZXJ5LnNxbApAQCAtODMsNiAr ODMsNTkgQEAgY3JlYXRlIHZpZXcgdncgYXMgc2VsZWN0IDE7CiBzZWxlY3QgaGVhcF9mb3Jj ZV9raWxsKCd2dyc6OnJlZ2NsYXNzLCBBUlJBWVsnKDAsIDEpJ106OnRpZFtdKTsKIHNlbGVj dCBoZWFwX2ZvcmNlX2ZyZWV6ZSgndncnOjpyZWdjbGFzcywgQVJSQVlbJygwLCAxKSddOjp0 aWRbXSk7CiAKKy0tIEEgSE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4g cm9vdCBhbmQgZWFjaCBkZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQ X1JFRElSRUNUIHRvIHRoZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiBy ZWFsCistLSB0dXBsZXMgYW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBh ZnRlciBzdWNoIGEgY29sbGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0Owor Y3JlYXRlIHRhYmxlIGh0b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkg d2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21i KGEpOworaW5zZXJ0IGludG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhP VC1pbmRleGVkIHVwZGF0ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUg ZGVhZCBtaWQtY2hhaW4KKy0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0 byB0aGUgbGl2ZSB0dXBsZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3Rh bGUgYnRyZWUgbGVhdmVzIChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1 cGRhdGUgaHRvbWIgc2V0IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMiB3aGVyZSBpZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9t YjsKK3NlbGVjdCBuX2hvdF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZy b20gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CistLSB0aGUgbGl2 ZSByb3cgaXMgaW50YWN0IGFuZCByZWFjaGFibGUgYWZ0ZXIgdGhlIGNvbGxhcHNlCitzZWxl Y3QgaWQsIGEsIGIgZnJvbSBodG9tYjsKK2Ryb3AgdGFibGUgaHRvbWI7CisKKy0tIEEgY29s bGFwc2UgdGhhdCBrZWVwcyBhICpzdHViKiAoYW4geGlkLWZyZWUgZm9yd2FyZGluZyBMUF9O T1JNQUwgaXRlbSB3aXRoCistLSBuYXR0cyA9PSAwKSwgbm90IGp1c3QgcmVkaXJlY3RzOiB1 cGRhdGUgdHdvIGRpZmZlcmVudCBpbmRleGVkIGNvbHVtbnMgc28gdGhlCistLSBmaXJzdCBk ZWFkIG1lbWJlcidzIGNoYW5nZWQtYXR0ciBiaXRtYXAgaXMgbm90IHN1YnN1bWVkIGJ5IGxh dGVyIGhvcHMgYW5kIGlzCistLSBwcmVzZXJ2ZWQgYXMgYSBzdHViLiAgcGdfc3VyZ2VyeSBt dXN0IHNraXAgc3VjaCBhIHN0dWIgLS0gZm9yY2luZyBhCistLSBmcmVlemUva2lsbCB3b3Vs ZCBvdmVyd3JpdGUgaXRzIHRfY3RpZCBmb3J3YXJkIGxpbmsgYW5kIGNvcnJ1cHQgdGhlIGNo YWluLgorY3JlYXRlIHRhYmxlIGhzdHViIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBi IGludCkgd2l0aCAoZmlsbGZhY3RvciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBoc3R1Yl9hIG9u IGhzdHViKGEpOworY3JlYXRlIGluZGV4IGhzdHViX2Igb24gaHN0dWIoYik7CitpbnNlcnQg aW50byBoc3R1YiB2YWx1ZXMgKDEsIDEwLCAxMDApOwordXBkYXRlIGhzdHViIHNldCBhID0g MTEgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYQordXBkYXRlIGhzdHViIHNldCBhID0g MTIgd2hlcmUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK3Vw ZGF0ZSBoc3R1YiBzZXQgYiA9IDEwMSB3aGVyZSBpZCA9IDE7ICAtLSBjaGFuZ2VzIGIgLT4g Zmlyc3QgaG9wJ3Mge2F9IGtlcHQgYXMgc3R1YgordmFjdXVtIChpbmRleF9jbGVhbnVwIG9m ZikgaHN0dWI7CistLSBMb2NhdGUgdGhlIHN0dWI6IGFuIExQX05PUk1BTCBpdGVtIGNhcnJ5 aW5nIEhFQVBfSU5ERVhFRF9VUERBVEVEICgweDA4MDAgaW4KKy0tIHRfaW5mb21hc2syKSB3 aXRoIHplcm8gbGl2ZSBhdHRyaWJ1dGVzICh0X2luZm9tYXNrMiBuYXR0cyBiaXRzID09IDAp Lgorc2VsZWN0IGxwIGFzIHN0dWJfb2ZmCisgIGZyb20gaGVhcF9wYWdlX2l0ZW1zKGdldF9y YXdfcGFnZSgnaHN0dWInLCAwKSkKKyAgd2hlcmUgbHBfZmxhZ3MgPSAxICAgICAgICAgICAg ICAgICAgICAgICAtLSBMUF9OT1JNQUwKKyAgICBhbmQgKHRfaW5mb21hc2syICYgMjA0OCkg PD4gMCAgICAgICAgICAtLSBIRUFQX0lOREVYRURfVVBEQVRFRAorICAgIGFuZCAodF9pbmZv bWFzazIgJiAyMDQ3KSA9IDAgICAgICAgICAgIC0tIG5hdHRzID09IDAgKHN0dWIgc2VudGlu ZWwpCisgIFxnc2V0CistLSBGb3JjZSBraWxsL2ZyZWV6ZSBvbiB0aGUgc3R1YidzIHRpZDog Ym90aCBtdXN0IGJlIHJlZnVzZWQgd2l0aCBhIE5PVElDRS4KK3NlbGVjdCBoZWFwX2ZvcmNl X2tpbGwoJ2hzdHViJzo6cmVnY2xhc3MsIEFSUkFZWygnKDAsJyB8fCA6J3N0dWJfb2ZmJyB8 fCAnKScpXTo6dGlkW10pOworc2VsZWN0IGhlYXBfZm9yY2VfZnJlZXplKCdoc3R1Yic6OnJl Z2NsYXNzLCBBUlJBWVsoJygwLCcgfHwgOidzdHViX29mZicgfHwgJyknKV06OnRpZFtdKTsK Ky0tIFRoZSBjaGFpbiBpcyB1bnRvdWNoZWQ6IHRoZSBsaXZlIHJvdyBpcyBzdGlsbCByZWFj aGFibGUgdGhyb3VnaCBlYWNoIGluZGV4Lgorc2V0IGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor c2V0IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0 dWIgd2hlcmUgYSA9IDEyOworc2VsZWN0IGlkLCBhLCBiIGZyb20gaHN0dWIgd2hlcmUgYiA9 IDEwMTsKK3Jlc2V0IGVuYWJsZV9iaXRtYXBzY2FuOworcmVzZXQgZW5hYmxlX3NlcXNjYW47 Citkcm9wIHRhYmxlIGhzdHViOworZHJvcCBleHRlbnNpb24gcGFnZWluc3BlY3Q7CisKIC0t IGNsZWFudXAuCiBkcm9wIHZpZXcgdnc7CiBkcm9wIGV4dGVuc2lvbiBwZ19zdXJnZXJ5Owpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMTJiOWVlMjBkNGEuLmYzNGFhNjQ4YjU5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKQEAgLTQ0NTcsNiArNDQ1NywxOSBAQCBkZXNjcmlwdGlvbiB8 IFdhaXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVy YWJsZSBzdG9yYWdlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVw X2hvdF9pbmRleGVkX3VwZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiByb3dzIHVwZGF0 ZWQgdXNpbmcgdGhlIEhPVC1pbmRleGVkIHBhdGg6IHRoZSBzdWNjZXNzb3IKKyAgICAgICB2 ZXJzaW9uIHN0YXlzIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBoZWFwLW9ubHkgdHVwbGUgZXZl biB0aG91Z2ggaXQKKyAgICAgICBjaGFuZ2VkIG9uZSBvciBtb3JlIGluZGV4ZWQgY29sdW1u cywgYW5kIG9ubHkgdGhlIGFmZmVjdGVkIGluZGV4ZXMKKyAgICAgICByZWNlaXZlIGEgbmV3 IGVudHJ5LiAgRXZlcnkgc3VjaCB1cGRhdGUgaXMgYWxzbyBjb3VudGVkIGluCisgICAgICAg PHN0cnVjdGZpZWxkPm5fdHVwX2hvdF91cGQ8L3N0cnVjdGZpZWxkPi4KKyAgICAgIDwvcGFy YT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+bl90dXBfbmV3cGFnZV91cGQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5iaWdpbnQ8L3R5cGU+CkBAIC00OTI3LDYgKzQ5NDAsMjcgQEAgZGVzY3JpcHRp b24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNo IGR1cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5u X3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBv ZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgYSBuZXcgZW50cnkgaW50byB0 aGlzCisgICAgICAgaW5kZXggKHRoZSB1cGRhdGUgY2hhbmdlZCBvbmUgb2YgdGhpcyBpbmRl eCdzIGF0dHJpYnV0ZXMpCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm5f dHVwX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9m IEhPVC1pbmRleGVkIHVwZGF0ZXMgdGhhdCBza2lwcGVkIHRoaXMgaW5kZXggKHRoZSB1cGRh dGUKKyAgICAgICBjaGFuZ2VkIG5vIGF0dHJpYnV0ZSBvZiB0aGlzIGluZGV4LCBzbyBpdHMg ZXhpc3RpbmcgZW50cnkgY29udGludWVzCisgICAgICAgdG8gcmVzb2x2ZSB0aGUgSE9UIGNo YWluKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgICA8c3RydWN0ZmllbGQ+c3RhdHNfcmVzZXQ8 L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CkBA IC01NjA4LDYgKzU2NDIsMjkgQEAgZGVzY3JpcHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5 IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFibGUgc3RvcmFnZQogICAgICA8 L3RoZWFkPgogCiAgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IGlk PSJwZy1yZWxhdGlvbi1ob3QtaW5kZXhlZC1zdGF0cyIgcm9sZT0iZnVuY190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgICAgPHByaW1hcnk+cGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHM8L3ByaW1h cnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+cGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHM8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0ZXI+cmVsYXRpb248 L3BhcmFtZXRlcj4gPHR5cGU+cmVnY2xhc3M8L3R5cGU+ICkKKyAgICAgICAgPHJldHVybnZh bHVlPnJlY29yZDwvcmV0dXJudmFsdWU+CisgICAgICAgICggPHBhcmFtZXRlcj5uX2hvdF9p bmRleGVkPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAgIDxwYXJh bWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiwKKyAgICAg ICAgPHBhcmFtZXRlcj5hdmdfY2hhaW5fbGVuPC9wYXJhbWV0ZXI+IDx0eXBlPmRvdWJsZSBw cmVjaXNpb248L3R5cGU+LAorICAgICAgICA8cGFyYW1ldGVyPm1heF9jaGFpbl9sZW48L3Bh cmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiApCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBSZXBvcnRzIEhPVC1pbmRleGVkIHN0cnVjdHVyYWwgc3RhdGlz dGljcyBmb3IgYSB0YWJsZSBieSBzY2FubmluZworICAgICAgICBldmVyeSBwYWdlIHVuZGVy IDxsaXRlcmFsPkFjY2Vzc1NoYXJlTG9jazwvbGl0ZXJhbD46CisgICAgICAgIDxwYXJhbWV0 ZXI+bl9ob3RfaW5kZXhlZDwvcGFyYW1ldGVyPiBpcyB0aGUgbnVtYmVyIG9mIGxpdmUKKyAg ICAgICAgSE9ULWluZGV4ZWQgdHVwbGUgdmVyc2lvbnMgcHJlc2VudCwgYW5kCisgICAgICAg IDxwYXJhbWV0ZXI+bl9jaGFpbnM8L3BhcmFtZXRlcj4sIDxwYXJhbWV0ZXI+YXZnX2NoYWlu X2xlbjwvcGFyYW1ldGVyPgorICAgICAgICBhbmQgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVu PC9wYXJhbWV0ZXI+IGRlc2NyaWJlIHRoZSBIT1QtaW5kZXhlZAorICAgICAgICBjaGFpbnMu ICBJbnRlbmRlZCBmb3IgZGlhZ25vc3RpY3MuCisgICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgICA8L3Jvdz4KKwogICAgICAgPHJvdz4KICAgICAgICA8IS0tIFNlZSBhbHNvIHRoZSBl bnRyeSBmb3IgdGhpcyBpbiBmdW5jLnNnbWwgLS0+CiAgICAgICAgPGVudHJ5IHJvbGU9ImZ1 bmNfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvTWFrZWZpbGUKaW5kZXggMWQyN2NjYjkxNmUuLmRmYWYzMzUwNzM2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZQpAQCAtMjAsNiArMjAsNyBAQCBPQkpTID0gXAog CWhlYXBhbV94bG9nLm8gXAogCWhlYXB0b2FzdC5vIFwKIAloaW8ubyBcCisJaG90X2luZGV4 ZWRfc3RhdHMubyBcCiAJcHJ1bmVoZWFwLm8gXAogCXJld3JpdGVoZWFwLm8gXAogCXZhY3V1 bWxhenkubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUu SE9ULUlOREVYRUQgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVY RUQKaW5kZXggMWY0MWIwZmZmZTguLjJlNWU1ZjRhMDgxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECkBAIC0yNTIsNiArMjUyLDkgQEAgSEVB UF9JTkRFWEVEX1VQREFURUQgaGVhcC1vbmx5IHR1cGxlIHdob3NlIGxpbmUgcG9pbnRlciBp cyBwcmVzZXJ2ZWQsIGFuZAogbXVsdGlwbGUgTFBfUkVESVJFQ1RzIGZvcndhcmRpbmcgdG8g b25lIGxpdmUgdHVwbGUuCiAKIFN0YXRpc3RpY3M6IHBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1 cF9ob3RfaW5kZXhlZF91cGQgY291bnRzIEhPVC1pbmRleGVkCit1cGRhdGVzOyBwZ19zdGF0 X2FsbF9pbmRleGVzLm5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkIC8gX3NraXBwZWQg Y291bnQKK3Blci1pbmRleCByZWNoZWNrIG91dGNvbWVzOyBhbmQgcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoKSByZXBvcnRzCitwZXItcmVsYXRpb24gSE9ULWluZGV4ZWQgY2hh aW4gY291bnRzLgogCiAKIEFwcGVuZGljZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9ob3RfaW5kZXhlZF9zdGF0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44OTVhMjk2NTRiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMKQEAgLTAsMCArMSwxODggQEAKKy8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkX3N0YXRzLmMKKyAqCSAgU1FM LWNhbGxhYmxlIGRpYWdub3N0aWMgdGhhdCB3YWxrcyBldmVyeSBwYWdlIG9mIGEgaGVhcCBy ZWxhdGlvbiBhbmQKKyAqCSAgcmVwb3J0cyBob3QtaW5kZXhlZC1yZWxhdGVkIHN0cnVjdHVy YWwgc3RhdGlzdGljcy4KKyAqCisgKiBUaGVzZSBudW1iZXJzIGNvbXBsZW1lbnQgdGhlIHJ1 bm5pbmcgcGdzdGF0IGNvdW50ZXJzCisgKiAobl90dXBfaG90X2luZGV4ZWRfdXBkIGluIHBn X3N0YXRfYWxsX3RhYmxlcyk6IHRoZXkgYW5zd2VyICJ3aGF0IGlzIG9uIGRpc2sKKyAqIHJp Z2h0IG5vdz8iIHJhdGhlciB0aGFuICJob3cgb2Z0ZW4gZGlkIGhvdC1pbmRleGVkIGZpcmUg ZHVyaW5nIHRoZSBzdGF0cworICogd2luZG93PyIuCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3Vw CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aG90X2luZGV4ZWRfc3RhdHMuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNp bmNsdWRlICJhY2Nlc3MvaG90X2luZGV4ZWQuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9k ZXRhaWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImZ1 bmNhcGkuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgorI2luY2x1ZGUgInN0b3Jh Z2UvaXRlbXB0ci5oIgorI2luY2x1ZGUgInV0aWxzL2FjbC5oIgorI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisKKy8qCisgKiBwZ19yZWxh dGlvbl9ob3RfaW5kZXhlZF9zdGF0cyhyZWdjbGFzcykgLT4gcmVjb3JkCisgKgorICogV2Fs a3MgZXZlcnkgYmxvY2sgb2YgdGhlIHJlbGF0aW9uJ3MgbWFpbiBmb3JrIGFuZCBjb3VudHM6 CisgKiAgIG5faG90X2luZGV4ZWQgICAtLSBsaXZlIEhPVC1pbmRleGVkIHZlcnNpb25zIChI RUFQX0lOREVYRURfVVBEQVRFRCwgbmF0dHM+MCwKKyAqICAgICAgICAgICAgICAgICAgICAg IGNhcnJ5aW5nIGFuIGlubGluZS10cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXApCisg KiAgIG5fY2hhaW5zICAgICAgICAtLSBMUF9SRURJUkVDVCBpdGVtcywgaS5lLiBIT1QgY2hh aW4gcm9vdHMuICBNYXRjaGVzCisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgbnVtYmVy IG9mIGRpc3RpbmN0IEhPVCBjaGFpbnMgdGhhdCBoYXZlIHN1cnZpdmVkCisgKiAgICAgICAg ICAgICAgICAgICAgICB0aGUgbW9zdCByZWNlbnQgcHJ1bmUuICBSb290LW5vdC1yZWRpcmVj dCBjaGFpbnMKKyAqICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggMSkgYXJlIG5vdCBj b3VudGVkIGhlcmUgYmVjYXVzZSB0aGV5IGFyZQorICogICAgICAgICAgICAgICAgICAgICAg aW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIG5vbi1jaGFpbiB0dXBsZS4KKyAqICAgYXZnX2No YWluX2xlbiAgIC0tIG1lYW4gbGVuZ3RoIGFjcm9zcyBjaGFpbnMgcm9vdGVkIGF0IGFuIExQ X1JFRElSRUNULAorICogICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBieSB3YWxraW5n IGVhY2ggcmVkaXJlY3QgdGFyZ2V0IHRvIHRoZSBlbmQKKyAqICAgICAgICAgICAgICAgICAg ICAgIG9mIGl0cyBIRUFQX0hPVF9VUERBVEVEIGNoYWluLgorICogICBtYXhfY2hhaW5fbGVu ICAgLS0gbG9uZ2VzdCBjaGFpbiBvYnNlcnZlZC4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3Qg aG9sZCBTRUxFQ1QgcHJpdmlsZWdlIG9uIHRoZSByZWxhdGlvbiwgbGlrZSBvdGhlcgorICog cmVsYXRpb24taW5zcGVjdGlvbiBmdW5jdGlvbnM7IGl0IHRha2VzIG9ubHkgQWNjZXNzU2hh cmVMb2NrIGFuZCBzaG9ydC10ZXJtCisgKiBidWZmZXIgc2hhcmUgbG9ja3Mgd2hpbGUgc2Nh bm5pbmcuCisgKi8KK0RhdHVtCitwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cyhQR19G VU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlS ZWxhdGlvbglyZWw7CisJQWNsUmVzdWx0CWFjbHJlc3VsdDsKKwlCbG9ja051bWJlciBuYmxv Y2tzOworCUJsb2NrTnVtYmVyIGJsazsKKwlpbnQ2NAkJbl9ob3RfaW5kZXhlZCA9IDA7CisJ aW50NjQJCW5fY2hhaW5zID0gMDsKKwlpbnQ2NAkJc3VtX2NoYWluX2xlbiA9IDA7CisJaW50 NjQJCW1heF9jaGFpbl9sZW4gPSAwOworCVR1cGxlRGVzYwl0dXBkZXNjOworCURhdHVtCQl2 YWx1ZXNbNF07CisJYm9vbAkJbnVsbHNbNF0gPSB7MH07CisJSGVhcFR1cGxlCXJlc3VsdHR1 cDsKKworCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJ aWYgKHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJcmVs LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYmCisJCXJlbC0+cmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfVE9BU1RWQUxVRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJc IiVzXCIgaXMgbm90IGEgdGFibGUsIG1hdGVyaWFsaXplZCB2aWV3LCBvciBUT0FTVCB0YWJs ZSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCisJLyogQ2Fs bGVyIG11c3QgYmUgYWJsZSB0byByZWFkIHRoZSByZWxhdGlvbi4gKi8KKwlhY2xyZXN1bHQg PSBwZ19jbGFzc19hY2xjaGVjayhyZWxpZCwgR2V0VXNlcklkKCksIEFDTF9TRUxFQ1QpOwor CWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCWFjbGNoZWNrX2Vycm9yKGFjbHJl c3VsdCwKKwkJCQkJICAgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2lu ZCksCisJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpOworCisJbmJsb2Nr cyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3MocmVsKTsKKworCWZvciAoYmxrID0gMDsg YmxrIDwgbmJsb2NrczsgYmxrKyspCisJeworCQlCdWZmZXIJCWJ1ZjsKKwkJUGFnZQkJcGFn ZTsKKwkJT2Zmc2V0TnVtYmVyIG9mZjsKKwkJT2Zmc2V0TnVtYmVyIG1heG9mZjsKKworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWJ1ZiA9IFJlYWRCdWZmZXJFeHRlbmRlZChy ZWwsIE1BSU5fRk9SS05VTSwgYmxrLCBSQk1fTk9STUFMLCBOVUxMKTsKKwkJTG9ja0J1ZmZl cihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKKwkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVm KTsKKworCQlpZiAoUGFnZUlzTmV3KHBhZ2UpIHx8IFBhZ2VJc0VtcHR5KHBhZ2UpKQorCQl7 CisJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CisJCQljb250aW51ZTsKKwkJfQorCisJ CW1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJCWZvciAob2ZmID0g Rmlyc3RPZmZzZXROdW1iZXI7IG9mZiA8PSBtYXhvZmY7IG9mZiA9IE9mZnNldE51bWJlck5l eHQob2ZmKSkKKwkJeworCQkJSXRlbUlkCQlscCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2Zm KTsKKworCQkJaWYgKCFJdGVtSWRJc1VzZWQobHApKQorCQkJCWNvbnRpbnVlOworCisJCQlp ZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGxwKSkKKwkJCXsKKwkJCQkvKiBXYWxrIHRoZSBjaGFp biBzdGFydGluZyBhdCB0aGUgcmVkaXJlY3QgdGFyZ2V0LiAqLworCQkJCU9mZnNldE51bWJl ciBjdXIgPSBJdGVtSWRHZXRSZWRpcmVjdChscCk7CisJCQkJaW50NjQJCWxlbiA9IDA7CisK KwkJCQkvKgorCQkJCSAqIFdhbGsgdGhlIHNhbWUtcGFnZSBIT1QgY2hhaW4uICBCb3VuZCB0 aGUgbG9vcCBieSB0aGUgcGFnZSdzCisJCQkJICogaXRlbSBjb3VudCBzbyBhIGNvcnJ1cHQg Y3ljbGljIHRfY3RpZCBjYW5ub3Qgc3BpbiBmb3JldmVyCisJCQkJICogdW5kZXIgdGhlIGJ1 ZmZlciBsb2NrLCBhbmQgY2hlY2sgZm9yIGludGVycnVwdHMgZWFjaCBzdGVwLgorCQkJCSAq LworCQkJCXdoaWxlIChjdXIgPj0gRmlyc3RPZmZzZXROdW1iZXIgJiYgY3VyIDw9IG1heG9m ZiAmJiBsZW4gPCBtYXhvZmYpCisJCQkJeworCQkJCQlJdGVtSWQJCWNoYWluX2xwID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBjdXIpOworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGhkcjsKKwor CQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCQkJCWlmICghSXRlbUlkSXNOb3Jt YWwoY2hhaW5fbHApKQorCQkJCQkJYnJlYWs7CisJCQkJCXRoZHIgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBjaGFpbl9scCk7CisJCQkJCWxlbisrOworCQkJCQlp ZiAoISh0aGRyLT50X2luZm9tYXNrMiAmIEhFQVBfSE9UX1VQREFURUQpKQorCQkJCQkJYnJl YWs7CisJCQkJCS8qIEhPVCBjaGFpbnMgc3RheSBvbiBvbmUgcGFnZTsgc3RvcCBpZiB0aGUg bGluayBsZWF2ZXMgaXQuICovCisJCQkJCWlmIChJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVy KCZ0aGRyLT50X2N0aWQpICE9IGJsaykKKwkJCQkJCWJyZWFrOworCQkJCQljdXIgPSBJdGVt UG9pbnRlckdldE9mZnNldE51bWJlcigmdGhkci0+dF9jdGlkKTsKKwkJCQl9CisJCQkJaWYg KGxlbiA+IDApCisJCQkJeworCQkJCQluX2NoYWlucysrOworCQkJCQlzdW1fY2hhaW5fbGVu ICs9IGxlbjsKKwkJCQkJaWYgKGxlbiA+IG1heF9jaGFpbl9sZW4pCisJCQkJCQltYXhfY2hh aW5fbGVuID0gbGVuOworCQkJCX0KKwkJCX0KKwkJCWVsc2UgaWYgKEl0ZW1JZElzTm9ybWFs KGxwKSkKKwkJCXsKKwkJCQlIZWFwVHVwbGVIZWFkZXIgdGhkciA9IChIZWFwVHVwbGVIZWFk ZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGxwKTsKKworCQkJCWlmICghSG90SW5kZXhlZEhlYWRl cklzU3R1Yih0aGRyKSAmJgorCQkJCQkodGhkci0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVY RURfVVBEQVRFRCkgIT0gMCkKKwkJCQkJbl9ob3RfaW5kZXhlZCsrOworCQkJfQorCQl9CisK KwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCX0KKworCXJlbGF0aW9uX2Nsb3NlKHJl bCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxl RGVzYyg0KTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEs ICJuX2hvdF9pbmRleGVkIiwgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRy eSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgIm5fY2hhaW5zIiwgSU5UOE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgImF2Z19j aGFpbl9sZW4iLCBGTE9BVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVw ZGVzYywgKEF0dHJOdW1iZXIpIDQsICJtYXhfY2hhaW5fbGVuIiwgSU5UOE9JRCwgLTEsIDAp OworCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOworCXR1cGRlc2MgPSBCbGVzc1R1cGxl RGVzYyh0dXBkZXNjKTsKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0obl9ob3RfaW5k ZXhlZCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bShuX2NoYWlucyk7CisJaWYgKG5f Y2hhaW5zID4gMCkKKwkJdmFsdWVzWzJdID0gRmxvYXQ4R2V0RGF0dW0oKChkb3VibGUpIHN1 bV9jaGFpbl9sZW4pIC8gKGRvdWJsZSkgbl9jaGFpbnMpOworCWVsc2UKKwkJdmFsdWVzWzJd ID0gRmxvYXQ4R2V0RGF0dW0oMC4wKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKG1h eF9jaGFpbl9sZW4pOworCisJcmVzdWx0dHVwID0gaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2Ms IHZhbHVlcywgbnVsbHMpOworCVBHX1JFVFVSTl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bShy ZXN1bHR0dXApKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21l c29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQKaW5kZXgg MDBlYzA3ZDdmMzAuLmI1YzJhOGQ1Y2I2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNv bi5idWlsZApAQCAtOCw2ICs4LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAn aGVhcGFtX3hsb2cuYycsCiAgICdoZWFwdG9hc3QuYycsCiAgICdoaW8uYycsCisgICdob3Rf aW5kZXhlZF9zdGF0cy5jJywKICAgJ3BydW5laGVhcC5jJywKICAgJ3Jld3JpdGVoZWFwLmMn LAogICAndmFjdXVtbGF6eS5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAppbmRleCA2YzFjNTU0NWNiNS4uMDJjOGEwNDlhMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwKQEAgLTczMCw2ICs3MzAsNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X2FsbF90YWJsZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc191cGRh dGVkKEMub2lkKSBBUyBuX3R1cF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBs ZXNfZGVsZXRlZChDLm9pZCkgQVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfdHVwbGVzX2hvdF91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgICAg ICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQoQy5vaWQpIEFT IG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19uZXdwYWdlX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgICAg ICAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoQy5vaWQpIEFTIG5fbGl2ZV90dXAsCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF9kZWFkX3R1cGxlcyhDLm9pZCkgQVMgbl9kZWFkX3R1 cCwKQEAgLTc2OCw2ICs3NjksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3hhY3RfYWxsX3Rh YmxlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChD Lm9pZCkgQVMgbl90dXBfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfZGVsZXRlZChDLm9pZCkgQVMgbl90dXBfZGVsLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX2hvdF91cGQsCisg ICAgICAgICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVk KEMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgICAgICAgICBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX25ld3Bh Z2VfdXBkCiAgICAgRlJPTSBwZ19jbGFzcyBDIExFRlQgSk9JTgogICAgICAgICAgcGdfaW5k ZXggSSBPTiBDLm9pZCA9IEkuaW5kcmVsaWQKQEAgLTg2OSw2ICs4NzEsOCBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2FsbF9pbmRleGVzIEFTCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9s YXN0c2NhbihJLm9pZCkgQVMgbGFzdF9pZHhfc2NhbiwKICAgICAgICAgICAgIHBnX3N0YXRf Z2V0X3R1cGxlc19yZXR1cm5lZChJLm9pZCkgQVMgaWR4X3R1cF9yZWFkLAogICAgICAgICAg ICAgcGdfc3RhdF9nZXRfdHVwbGVzX2ZldGNoZWQoSS5vaWQpIEFTIGlkeF90dXBfZmV0Y2gs CisgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9z a2lwcGVkKEkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwKKyAgICAg ICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQo SS5vaWQpIEFTIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkLAogICAgICAgICAgICAg cGdfc3RhdF9nZXRfc3RhdF9yZXNldF90aW1lKEkub2lkKSBBUyBzdGF0c19yZXNldAogICAg IEZST00gcGdfY2xhc3MgQyBKT0lOCiAgICAgICAgICAgICBwZ19pbmRleCBYIE9OIEMub2lk ID0gWC5pbmRyZWxpZCBKT0lOCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmlu ZGV4IDU2NWQwZTcwNzY4Li41NTJmMzU0MGNkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bn c3RhdGZ1bmNzLmMKQEAgLTkzLDYgKzkzLDE1IEBAIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc19mZXRjaGVkKQogLyogcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVk ICovCiBQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0ZWQpCiAK Ky8qIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkICovCitQR19TVEFU X0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCkKKworLyog cGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZCAqLworUEdf U1RBVF9HRVRfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVk KQorCisvKiBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVk ICovCitQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQpCisKIC8qIHBnX3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQgKi8K IFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19uZXdwYWdlX3VwZGF0ZWQpCiAK QEAgLTE4ODgsNiArMTg5Nyw5IEBAIFBHX1NUQVRfR0VUX1hBQ1RfUkVMRU5UUllfSU5UNjQo dHVwbGVzX2ZldGNoZWQpCiAvKiBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCAqLwogUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfaG90X3VwZGF0 ZWQpCiAKKy8qIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQg Ki8KK1BHX1NUQVRfR0VUX1hBQ1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVk X3VwZGF0ZWQpCisKIC8qIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRl ZCAqLwogUEdfU1RBVF9HRVRfWEFDVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfbmV3cGFnZV91 cGRhdGVkKQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzY2I4NDM1OWFkZi4u MTc1ZmE4OGViNTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTU5NCw2ICs1 NTk0LDI5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRl ZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0 eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdf c3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkJyB9LAoreyBvaWQgPT4gJzk5NTMnLAorICBk ZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHR1cGxlcyB1cGRhdGVkIHZpYSBIT1Qt aW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSknLAorICBwcm9uYW1lID0+ICdwZ19z dGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICdz JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJn dHlwZXMgPT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9p bmRleGVkX3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1NicsCisgIGRlc2NyID0+ICdzdGF0 aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IHNraXBwZWQgdGhp cyBpbmRleCcsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkX3NraXBwZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVs ID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAor ICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBl ZCcgfSwKK3sgb2lkID0+ICc5OTU3JywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJl ciBvZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgaW5zZXJ0ZWQgaW50byB0aGlzIGluZGV4 JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0 ZWRfbWF0Y2hlZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKKyAgcHJvcGFyYWxsZWwgPT4gJ3In LCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCisgIHByb3Ny YyA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkJyB9LAor eyBvaWQgPT4gJzk5NTUnLAorICBkZXNjciA9PiAnSE9ULWluZGV4ZWQgc3RydWN0dXJhbCBz dGF0czogSE9ULWluZGV4ZWQgdmVyc2lvbnMgYW5kIGNoYWluIGxlbmd0aHMnLAorICBwcm9u YW1lID0+ICdwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cycsIHByb3ZvbGF0aWxlID0+ ICd2JywKKyAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBw cm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3JlZ2Ns YXNzLGludDgsaW50OCxmbG9hdDgsaW50OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxv LG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3JlbGF0aW9uLG5faG90X2luZGV4ZWQsbl9j aGFpbnMsYXZnX2NoYWluX2xlbixtYXhfY2hhaW5fbGVufScsCisgIHByb3NyYyA9PiAncGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMnIH0sCiB7IG9pZCA9PiAnNjIxNycsCiAgIGRl c2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdHVwbGVzIHVwZGF0ZWQgb250byBhIG5l dyBwYWdlJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBk YXRlZCcsIHByb3ZvbGF0aWxlID0+ICdzJywKQEAgLTYxNzksNiArNjIwMiwxMSBAQAogICBw cm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCcsIHByb3Zv bGF0aWxlID0+ICd2JywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ4JywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQnIH0sCit7IG9pZCA9PiAnOTk1NCcsCisgIGRlc2Ny ID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdHVwbGUgdXBkYXRlcyBp biBjdXJyZW50IHRyYW5zYWN0aW9uJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAg cHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdpbnQ4JywgcHJvYXJndHlwZXMg PT4gJ29pZCcsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZCcgfSwKIHsgb2lkID0+ICc2MjE4JywKICAgZGVzY3IgPT4gJ3N0YXRp c3RpY3M6IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCBvbnRvIGEgbmV3IHBhZ2UgaW4gY3Vy cmVudCB0cmFuc2FjdGlvbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX25ld3BhZ2VfdXBkYXRlZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5v dXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJp YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMmY2Mjgw MTUxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9o b3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5vdXQKQEAgLTAsMCArMSwxMzkgQEAKK1BhcnNlZCB0 ZXN0IHNwZWMgd2l0aCA2IHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9u b3NlcSBzMV9jeWNsZSBzMl9lcTEwIHMyX2VxMjAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczFfY3ljbGU6IFVQREFURSBoaWEgU0VUIGsgPSAy MCBXSEVSRSBpZCA9IDE7IFVQREFURSBoaWEgU0VUIGsgPSAxMCBXSEVSRSBpZCA9IDE7Citz dGVwIHMyX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMTA7CitpZHwg aworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKK3N0ZXAgczJfZXEyMDogU0VMRUNUIGlkLCBr IEZST00gaGlhIFdIRVJFIGsgPSAyMDsKK2lkfGsKKy0tKy0KKygwIHJvd3MpCisKKworc3Rh cnRpbmcgcGVybXV0YXRpb246IHMyX25vc2VxIHMxX2N5Y2xlIHMyX3JhbmdlCitzdGVwIHMy X25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMxX2N5Y2xlOiBVUERB VEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMTAg V0hFUkUgaWQgPSAxOworc3RlcCBzMl9yYW5nZTogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdI RVJFIGsgPj0gNSBPUkRFUiBCWSBrOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMl9ub3NlcSBzMV9iZWdpbiBzMV91cGQyMCBz MV9hYm9ydCBzMl9lcTIwIHMyX2VxMTAKK3N0ZXAgczJfbm9zZXE6IFNFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91cGQyMDogVVBE QVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfYWJvcnQ6IFJPTExC QUNLOworc3RlcCBzMl9lcTIwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDIw OworaWR8aworLS0rLQorKDAgcm93cykKKworc3RlcCBzMl9lcTEwOiBTRUxFQ1QgaWQsIGsg RlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEgcm93KQor CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczJfaW5zMTAg czFfY29tbWl0CitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERB VEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMl9pbnMxMDogSU5TRVJU IElOVE8gaGl1IFZBTFVFUyAoMiwgMTAsIHJlcGVhdCgneScsIDQwKSk7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7CitzdGVwIHMyX2luczEwOiA8Li4uIGNvbXBs ZXRlZD4KKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9j b21taXQgczJfaW5zMTAKK3N0ZXAgczFfYmVnaW46IEJFR0lOOworc3RlcCBzMV91dXBkMjA6 IFVQREFURSBoaXUgU0VUIGsgPSAyMCBXSEVSRSBpZCA9IDE7CitzdGVwIHMxX2NvbW1pdDog Q09NTUlUOworc3RlcCBzMl9pbnMxMDogSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMiwgMTAs IHJlcGVhdCgneScsIDQwKSk7CisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMV9iZWdpbiBz MV91dXBkMjAgczFfY29tbWl0IHMyX2luczIwCitzdGVwIHMxX2JlZ2luOiBCRUdJTjsKK3N0 ZXAgczFfdXVwZDIwOiBVUERBVEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOworc3Rl cCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfaW5zMjA6IElOU0VSVCBJTlRPIGhpdSBW QUxVRVMgKDMsIDIwLCByZXBlYXQoJ3onLCA0MCkpOworRVJST1I6ICBkdXBsaWNhdGUga2V5 IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJoaXVfayIKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMzX2JlZ2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAgczNfZXEx MCBzM19jb21taXQKK3N0ZXAgczNfYmVnaW46IEJFR0lOIElTT0xBVElPTiBMRVZFTCBSRVBF QVRBQkxFIFJFQUQ7IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK3N0ZXAgczNfZXExMDog U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8 MTAKKygxIHJvdykKKworc3RlcCBzMl90bzMwOiBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hF UkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMzAgV0hFUkUgaWQgPSAxOworc3RlcCBz Ml9zY2FuMzA6IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgU0VMRUNUIGlkLCBrIEZST00g aGlhIFdIRVJFIGsgPSAzMDsKK2lkfCBrCistLSstLQorIDF8MzAKKygxIHJvdykKKworc3Rl cCBzM19lcTEwOiBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsK Ky0tKy0tCisgMXwxMAorKDEgcm93KQorCitzdGVwIHMzX2NvbW1pdDogQ09NTUlUOworCitz dGFydGluZyBwZXJtdXRhdGlvbjogYjFfYmVnaW4gYjFfc25hcCBiMl91cGRhdGUgYjJfdmFj dXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorc3RlcCBiMV9iZWdpbjogQkVHSU47Citz dGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOworaWR8 ICB2CistLSstLS0KKyAxfDQwMAorKDEgcm93KQorCitzdGVwIGIyX3VwZGF0ZTogVVBEQVRF IGhpYiBTRVQgdiA9IDUwMCBXSEVSRSBpZCA9IDE7CitzdGVwIGIyX3ZhY3V1bTogVkFDVVVN IChJTkRFWF9DTEVBTlVQIG9mZikgaGliOworc3RlcCBiMV9zbmFwOiBTRUxFQ1QgaWQsIHYg RlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfHYKKy0tKy0KKygwIHJvd3MpCisKK3N0ZXAg YjFfY29tbWl0OiBDT01NSVQ7CitzdGVwIGIzX3NlcTogU0VMRUNUIGlkLCB2IEZST00gaGli IE9SREVSIEJZIGlkOworaWR8ICB2CistLSstLS0KKyAxfDUwMAorIDJ8IDIwCisgM3wgMzAK KyA0fCA0MAorIDV8IDUwCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBi MV9iZWdpbiBiMl91cGRhdGUgYjFfc25hcCBiMl92YWN1dW0gYjFfc25hcCBiMV9jb21taXQg YjNfc2VxCitzdGVwIGIxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgYjJfdXBkYXRlOiBVUERBVEUg aGliIFNFVCB2ID0gNTAwIFdIRVJFIGlkID0gMTsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlk LCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitz dGVwIGIyX3ZhY3V1bTogVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGliOworc3RlcCBi MV9zbmFwOiBTRUxFQ1QgaWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfHYKKy0t Ky0KKygwIHJvd3MpCisKK3N0ZXAgYjFfY29tbWl0OiBDT01NSVQ7CitzdGVwIGIzX3NlcTog U0VMRUNUIGlkLCB2IEZST00gaGliIE9SREVSIEJZIGlkOworaWR8ICB2CistLSstLS0KKyAx fDUwMAorIDJ8IDIwCisgM3wgMzAKKyA0fCA0MAorIDV8IDUwCisoNSByb3dzKQorCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBiOGViZTkyNTUzYy4uZTlh ZmI0ODE5OWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2No ZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQpAQCAt MTI4LDMgKzEyOCw0IEBAIHRlc3Q6IG1hdHZpZXctd3JpdGUtc2tldwogdGVzdDogbG9jay1u b3dhaXQKIHRlc3Q6IGZvci1wb3J0aW9uLW9mCiB0ZXN0OiBkZGwtZGVwZW5kZW5jeS1sb2Nr aW5nCit0ZXN0OiBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMgYi9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjQ3MDViZjM3ZTAKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2 ZXJzYXJpYWwuc3BlYwpAQCAtMCwwICsxLDEyMyBAQAorIyBBZHZlcnNhcmlhbCBjb3JyZWN0 bmVzcyB0ZXN0cyBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgRWFjaCBw ZXJtdXRhdGlvbiBwaW5zIGEgY2FzZSB0aGF0IHRoZSBtaWQtY2hhaW4tcG9pbnRpbmcgaW52 YXJpYW50IG11c3QKKyMgc2F0aXNmeTogYW4gaW5kZXggZW50cnkgcG9pbnRzIGF0IHRoZSBo ZWFwLW9ubHkgdmVyc2lvbiB3aG9zZSBrZXkgaXQKKyMgbWF0Y2hlZCwgYW5kIGEgY2hhaW4g d2FsayB0aGF0IGNyb3NzZXMgYSBIT1QtaW5kZXhlZCBob3AgZHJvcHMgdGhlIGFycml2aW5n CisjIGVudHJ5IHdoZW4gdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBvdmVybGFwcyB0 aGUgaW5kZXgncyBrZXkgY29sdW1ucworIyAobm8ga2V5IGNvbXBhcmlzb24pLiAgVGhlc2Ug YXJlCisjIGV4YWN0bHkgdGhlIGNhc2VzIHRoYXQgaGlzdG9yaWNhbGx5IGJyb2tlIHdyaXRl LWFtcGxpZmljYXRpb24tcmVkdWN0aW9uCisjIGRlc2lnbnMuCisKK3NldHVwCit7CisgICAg Q1JFQVRFIFRBQkxFIGhpYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgcGFkIHRleHQp IFdJVEggKGZpbGxmYWN0b3IgPSA0MCk7CisgICAgQ1JFQVRFIElOREVYIGhpYV9rIE9OIGhp YShrKTsKKyAgICBDUkVBVEUgVEFCTEUgaGl1IChpZCBpbnQgUFJJTUFSWSBLRVksIGsgaW50 LCBwYWQgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDQwKTsKKyAgICBDUkVBVEUgVU5JUVVF IElOREVYIGhpdV9rIE9OIGhpdShrKTsKKyAgICBJTlNFUlQgSU5UTyBoaWEgVkFMVUVTICgx LCAxMCwgcmVwZWF0KCd4JywgNDApKTsKKyAgICBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgx LCAxMCwgcmVwZWF0KCd4JywgNDApKTsKKworICAgIC0tIFRhYmxlIGZvciB0aGUgY29uY3Vy cmVudC1jb2xsYXBzZSByZWFkZXItY29uc2lzdGVuY3kgY2FzZSAoNykuCisgICAgQ1JFQVRF IFRBQkxFIGhpYiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGludCwgcGFkIHRleHQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CisgICAgQ1JFQVRFIElOREVYIGhpYl92X2lkeCBPTiBoaWIo dik7CisgICAgSU5TRVJUIElOVE8gaGliIFNFTEVDVCBnLCBnICogMTAsIHJlcGVhdCgneCcs IDUwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBnOworICAgIFVQREFURSBoaWIgU0VU IHYgPSAxMDAgV0hFUkUgaWQgPSAxOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAyMDAgV0hF UkUgaWQgPSAxOworICAgIFVQREFURSBoaWIgU0VUIHYgPSAzMDAgV0hFUkUgaWQgPSAxOwor ICAgIFVQREFURSBoaWIgU0VUIHYgPSA0MDAgV0hFUkUgaWQgPSAxOworfQorCit0ZWFyZG93 bgoreworICAgIERST1AgVEFCTEUgaGlhOworICAgIERST1AgVEFCTEUgaGl1OworICAgIERS T1AgVEFCTEUgaGliOworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxX2JlZ2luICAgeyBCRUdJ TjsgfQorIyBDeWNsZSB0aGUgaW5kZXhlZCBrZXkgYXdheSBhbmQgYmFjazogMTAgLT4gMjAg LT4gMTAuICBUaGUgb3JpZ2luYWwgMTAgbGVhZgorIyBhbmQgdGhlIGZyZXNobHktaW5zZXJ0 ZWQgMTAgbGVhZiBib3RoIHJlc29sdmUgdG8gdGhlIGxpdmUgdHVwbGU7IHRoZSBjaGFpbgor IyB3YWxrIG11c3QgZHJvcCB0aGUgc3RhbGUgb25lIHNvIGEgbG9va3VwIHJldHVybnMgdGhl IHJvdyBleGFjdGx5IG9uY2UuCitzdGVwIHMxX2N5Y2xlICAgeyBVUERBVEUgaGlhIFNFVCBr ID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAx OyB9CisjIEEgc2luZ2xlIEhPVC1pbmRleGVkIHVwZGF0ZSBvbiBoaWEsIHVzZWQgYnkgdGhl IGFib3J0IGFuZCByZWFkZXIgY2FzZXMuCitzdGVwIHMxX3VwZDIwICAgeyBVUERBVEUgaGlh IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyB9CisjIEEgSE9ULWluZGV4ZWQgdXBkYXRlIG9u IHRoZSBVTklRVUUtaW5kZXhlZCB0YWJsZSwgZnJlZWluZyBrZXkgMTAgZm9yIGs9MjAuCitz dGVwIHMxX3V1cGQyMCAgeyBVUERBVEUgaGl1IFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyB9 CitzdGVwIHMxX2NvbW1pdCAgeyBDT01NSVQ7IH0KK3N0ZXAgczFfYWJvcnQgICB7IFJPTExC QUNLOyB9CisKK3Nlc3Npb24gczIKKyMgSW5kZXgtb25seSBsb29rdXBzIChmb3JjZWQpIHRo YXQgZXhlcmNpc2UgdGhlIHN0YWxlLWxlYWYgcmVjaGVjay4KK3N0ZXAgczJfbm9zZXEgICB7 IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsgfQorc3RlcCBzMl9lcTEwICAgIHsgU0VMRUNU IGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsgfQorc3RlcCBzMl9lcTIwICAgIHsgU0VM RUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAyMDsgfQorc3RlcCBzMl9yYW5nZSAgIHsg U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPj0gNSBPUkRFUiBCWSBrOyB9CisjIENv bmN1cnJlbnQgdW5pcXVlIGluc2VydCBvZiB0aGUga2V5IHMxIGlzIGZyZWVpbmcgKDEwKSBh bmQgb2YgdGhlIGtleSBzMSBpcworIyB0YWtpbmcgKDIwKTsgX2J0X2NoZWNrX3VuaXF1ZSBt dXN0IGZpbHRlciB0aGUgc3RhbGUgMTAgbGVhZiBidXQgc3RpbGwKKyMgY29uZmxpY3Qgb24g dGhlIGxpdmUga2V5Lgorc3RlcCBzMl9pbnMxMCAgIHsgSU5TRVJUIElOVE8gaGl1IFZBTFVF UyAoMiwgMTAsIHJlcGVhdCgneScsIDQwKSk7IH0KK3N0ZXAgczJfaW5zMjAgICB7IElOU0VS VCBJTlRPIGhpdSBWQUxVRVMgKDMsIDIwLCByZXBlYXQoJ3onLCA0MCkpOyB9CisjIE1vdmUg dGhlIGluZGV4ZWQga2V5IHdlbGwgYXdheSBmcm9tIDEwICh0d28gSE9ULWluZGV4ZWQgaG9w cykgYW5kIGZvcmNlIGFuCisjIGluZGV4IHNjYW4gb24gdGhlIG5ldyBrZXkuICBUaGF0IHNj YW4gcmVhY2hlcyB0aGUgbGl2ZSB0dXBsZSB0aHJvdWdoIHRoZQorIyBzdGFsZSAxMCBsZWFm IGFuZCBtYXkgdHJ5IHRvIGtpbGwgaXQgZm9yIGJsb2F0IHJlY2xhaW0uCitzdGVwIHMyX3Rv MzAgICAgeyBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERBVEUgaGlh IFNFVCBrID0gMzAgV0hFUkUgaWQgPSAxOyB9CitzdGVwIHMyX3NjYW4zMCAgeyBTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMzA7 IH0KKworIyBSZWFkZXIgaG9sZGluZyBhbiBvbGRlciBSRVBFQVRBQkxFIFJFQUQgc25hcHNo b3QgdGhhdCBzdGlsbCBzZWVzIGs9MTAuCitzZXNzaW9uIHMzCitzdGVwIHMzX2JlZ2luICAg eyBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyBTRVQgZW5hYmxlX3Nl cXNjYW4gPSBvZmY7IH0KK3N0ZXAgczNfZXExMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID0gMTA7IH0KK3N0ZXAgczNfY29tbWl0ICB7IENPTU1JVDsgfQorCitzZXNz aW9uIGIxCitzdGVwIGIxX2JlZ2luICAgeyBCRUdJTjsgfQorIyBSZWFkZXIgdGFrZXMgYSBz bmFwc2hvdCBhbmQgcmVhZHMgdGhlIGNoYWluIHZpYSB0aGUgc2Vjb25kYXJ5IGluZGV4Lgor c3RlcCBiMV9zbmFwICAgIHsgU0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0MDA7 IH0KK3N0ZXAgYjFfY29tbWl0ICB7IENPTU1JVDsgfQorCitzZXNzaW9uIGIyCisjIEZvcmNl IHBydW5lL2NvbGxhcHNlOiBhbm90aGVyIEhPVC1pbmRleGVkIHVwZGF0ZSBwbHVzIGEgVkFD VVVNIHRoYXQKKyMgY29sbGFwc2VzIHRoZSBkZWFkIGNoYWluIG1lbWJlcnMgdG8gTFBfUkVE SVJFQ1QgZm9yd2FyZGVycy4KK3N0ZXAgYjJfdXBkYXRlICB7IFVQREFURSBoaWIgU0VUIHYg PSA1MDAgV0hFUkUgaWQgPSAxOyB9CitzdGVwIGIyX3ZhY3V1bSAgeyBWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaWI7IH0KKworc2Vzc2lvbiBiMworc3RlcCBiM19zZXEgICAgIHsg U0VMRUNUIGlkLCB2IEZST00gaGliIE9SREVSIEJZIGlkOyB9CisKKyMgMS4gYS0+Yi0+YSBj eWNsZTogZXhhY3RseSBvbmUgcm93IGZvciB0aGUgY3ljbGVkLWJhY2sga2V5LCBub25lIGZv ciB0aGUKKyMgICAgdHJhbnNpZW50IGtleS4KK3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2N5 Y2xlIHMyX2VxMTAgczJfZXEyMAorCisjIDIuIFJhbmdlIHNjYW4gcmV0dXJucyB0aGUgbGl2 ZSByb3cgZXhhY3RseSBvbmNlIGFjcm9zcyB0aGUgc3RhbGUrZnJlc2gKKyMgICAgbGVhdmVz IGxlZnQgYnkgdGhlIGN5Y2xlLgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfY3ljbGUgczJf cmFuZ2UKKworIyAzLiBBYm9ydCBvZiBhIEhPVC1pbmRleGVkIHVwZGF0ZTogdGhlIG5ldyBr ZXkgbXVzdCBub3Qgc3VyZmFjZSBhbmQgdGhlIG9sZAorIyAgICBrZXkgbXVzdCBzdGlsbCBy ZXNvbHZlIHRvIHRoZSAocmVzdG9yZWQpIGxpdmUgdHVwbGUuCitwZXJtdXRhdGlvbiBzMl9u b3NlcSBzMV9iZWdpbiBzMV91cGQyMCBzMV9hYm9ydCBzMl9lcTIwIHMyX2VxMTAKKworIyA0 LiBDb25jdXJyZW50IHVuaXF1ZSBpbnNlcnQgd2hpbGUgYSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgaW4gZmxpZ2h0LiAgQW4KKyMgICAgaW5zZXJ0IG9mIHRoZSBrZXkgczEgaXMgZnJlZWlu ZyAoMTApIG11c3Qgd2FpdCBvbiB0aGUgdW5jb21taXR0ZWQgdXBkYXRlciwKKyMgICAgdGhl biBzdWNjZWVkIG9uY2UgaXQgY29tbWl0cyAodGhlIHN0YWxlIDEwIGxlYWYgaXMgZmlsdGVy ZWQpLgorcGVybXV0YXRpb24gczFfYmVnaW4gczFfdXVwZDIwIHMyX2luczEwIHMxX2NvbW1p dAorCisjIDUuIEFmdGVyIHRoZSB1cGRhdGUgY29tbWl0cywgdGhlIGZyZWVkIGtleSAoMTAp IGluc2VydHMgY2xlYW5seSBhbmQgdGhlCisjICAgIHRha2VuIGtleSAoMjApIGNvbmZsaWN0 cyAtLSB0aGUgbGl2ZSBsZWFmIGlzIGhvbm91cmVkLCB0aGUgc3RhbGUgb25lIGlzIG5vdC4K K3Blcm11dGF0aW9uIHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMTAKK3Bl cm11dGF0aW9uIHMxX2JlZ2luIHMxX3V1cGQyMCBzMV9jb21taXQgczJfaW5zMjAKKworIyA2 LiBTbmFwc2hvdCBzYWZldHkgb2Ygc3RhbGUtbGVhZiByZWNsYWltLiAgQW4gb2xkZXIgUkVQ RUFUQUJMRSBSRUFEIHJlYWRlcgorIyAgICBzdGlsbCBzZWVzIGs9MTA7IGEgY29uY3VycmVu dCBzZXNzaW9uIHRoZW4gbW92ZXMgdGhlIGtleSB0byAzMCBhbmQgcnVucyBhbgorIyAgICBp bmRleCBzY2FuIHRoYXQgcmVhY2hlcyB0aGUgbGl2ZSB0dXBsZSB0aHJvdWdoIHRoZSBzdGFs ZSAxMCBsZWFmIGFuZCBtYXkKKyMgICAgdHJ5IHRvIHJlY2xhaW0gaXQuICBUaGUgcmVjbGFp bSBpcyBnYXRlZCBvbiB0aGUgc2tpcHBlZCB2ZXJzaW9ucyBiZWluZworIyAgICBkZWFkIHRv IGFsbCB0cmFuc2FjdGlvbnMsIHdoaWNoIHMzJ3MgaGVsZCBzbmFwc2hvdCBwcmV2ZW50cywg c28gczMgbXVzdAorIyAgICBzdGlsbCBmaW5kIHRoZSByb3cgYnkgaz0xMCBhZnRlciB0aGUg c2Nhbi4KK3Blcm11dGF0aW9uIHMzX2JlZ2luIHMzX2VxMTAgczJfdG8zMCBzMl9zY2FuMzAg czNfZXExMCBzM19jb21taXQKKworIyA3LiBSZWFkZXIgY29uc2lzdGVuY3kgYWNyb3NzIGEg Y29uY3VycmVudCBwcnVuZS9jb2xsYXBzZS4gIHMxJ3MgaW5kZXggc2NhbiwKKyMgICAgY3Jv c3NpbmcgdGhlIGNvbGxhcHNlZCBjaGFpbiBhZnRlciB0aGUgVkFDVVVNLCBtdXN0IHN0aWxs IHJldHVybiB0aGUgcm93CisjICAgIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFw OyB0aGUgcXVlcnkgbXVzdCBub3QgZXJyb3IgYW5kIHRoZSByb3cgY291bnQKKyMgICAgbXVz dCBiZSBjb25zaXN0ZW50LgorcGVybXV0YXRpb24gYjFfYmVnaW4gYjFfc25hcCBiMl91cGRh dGUgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorcGVybXV0YXRpb24gYjFf YmVnaW4gYjJfdXBkYXRlIGIxX3NuYXAgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIz X3NlcQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUgYi9zcmMvdGVz dC9yZWNvdmVyeS9NYWtlZmlsZQppbmRleCBkNDFhYWFmOGFlMS4uMjczNmNhYTFhMWIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L3Jl Y292ZXJ5L01ha2VmaWxlCkBAIC05LDcgKzksOCBAQAogIwogIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIAotRVhUUkFfSU5TVEFMTD1jb250cmliL3BnX3ByZXdhcm0gXAorRVhUUkFfSU5TVEFM TD1jb250cmliL2FtY2hlY2sgXAorCWNvbnRyaWIvcGdfcHJld2FybSBcCiAJY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMgXAogCWNvbnRyaWIvdGVzdF9kZWNvZGluZyBcCiAJc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNv dmVyeS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4 IGFkMGQ4NWY0MTg5Li44ZGJjZGEzNTc3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAg LTYzLDYgKzYzLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDUyX2NoZWNrcG9pbnRfc2Vn bWVudF9taXNzaW5nLnBsJywKICAgICAgICd0LzA1M19zdGFuZGJ5X2xvZ2luX2V2ZW50X3Ry aWdnZXIucGwnLAogICAgICAgJ3QvMDU0X3VubG9nZ2VkX3NlcXVlbmNlX3Byb21vdGlvbi5w bCcsCisgICAgICAndC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwnLAogICAgIF0sCiAg IH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhl ZF9yZWNvdmVyeS5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hvdF9pbmRleGVkX3Jl Y292ZXJ5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNmYw NzdiMzE1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDU1X2hv dF9pbmRleGVkX3JlY292ZXJ5LnBsCkBAIC0wLDAgKzEsMTQ5IEBACisKKyMgQ29weXJpZ2h0 IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIENy YXNoLXJlY292ZXJ5IGNvdmVyYWdlIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJVSkgY2hhaW5z LgorIworIyBCdWlsZCBhIEhPVC1pbmRleGVkIGNoYWluIGJ5IHJlcGVhdGVkbHkgVVBEQVRF aW5nIGEgc2luZ2xlIHJvdywKKyMgY2hhbmdpbmcgb25lIGluZGV4ZWQgKG5vbi1QSykgY29s dW1uIGVhY2ggdGltZS4gIEZvcmNlIGEgcHJ1bmUgc28gdGhlCisjIGRlYWQgY2hhaW4gbWVt YmVycyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJzICh3aXRoIHRoZSBsaXZl CisjIEhPVC1pbmRleGVkIHZlcnNpb24gdmlzaWJsZSB2aWEgcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMgYXMKKyMgbl9ob3RfaW5kZXhlZCA+IDApLiAgQ3Jhc2gtcmVjb3ZlciB0 aGUgcHJpbWFyeSB3aXRoIHN0b3AoJ2ltbWVkaWF0ZScpCisjIHNvIHRoZSBjb2xsYXBzZWQg Y2hhaW4gY29tZXMgYmFjayBmcm9tIFdBTCBvciBmcm9tIHRoZSBGUEkuICBBZnRlcgorIyBy ZXN0YXJ0LCB2ZXJpZnk6CisjCisjICAgMS4gYW4gaW5kZXggbG9va3VwIHdhbGtpbmcgdGhl IGNoYWluIHJldHVybnMgdGhlIGxpdmUgdHVwbGUsCisjICAgMi4gcGdfYW1jaGVjayAodmVy aWZ5X2hlYXBhbSkgcmVwb3J0cyBubyBlcnJvcnMgb24gdGhlIHJlbGF0aW9uLAorIyAgIDMu IFZBQ1VVTSByZWNsYWltcyB0aGUgY29sbGFwc2VkIGNoYWluIChuX2hvdF9pbmRleGVkIGRy b3BzIHRvIDApLgorIwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxs JzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9kZS0+aW5pdDsKKyMgRGlzYWJs ZSBhdXRvdmFjdXVtIHRvIGtlZXAgdGhlIGNoYWluIHNoYXBlIHN0YWJsZSB1cCB0byB0aGUg ZXhwbGljaXQKKyMgcHJ1bmUgd2UgdHJpZ2dlciBiZWxvdy4KKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgcXthdXRvdmFjdXVtID0gb2ZmCit3YWxfY29uc2lzdGVu Y3lfY2hlY2tpbmcgPSAnYWxsJ30pOworJG5vZGUtPnN0YXJ0OworCisjIGFtY2hlY2sgKHZl cmlmeV9oZWFwYW0pIGlzIHNoaXBwZWQgYXMgYSBjb250cmliIGV4dGVuc2lvbjsgd2UgdXNl IGl0CisjIGZyb20gU1FMIGFmdGVyIHRoZSBjcmFzaC1yZXN0YXJ0IGN5Y2xlLgorJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe0NSRUFURSBFWFRFTlNJT04gYW1jaGVja30pOwor CisjIFdpZGUtaXNoIHRhYmxlOiBQSyArIGZvdXIgaW5kZXhlZCBjb2x1bW5zIHBsdXMgYSBu b24taW5kZXhlZCBwYXlsb2FkCisjIHNvIEhPVC1pbmRleGVkIHVwZGF0ZXMgaGF2ZSB3aWR0 aCB0byBhbW9ydGlzZS4gIGZpbGxmYWN0b3IgPSA1MCBrZWVwcworIyBmcmVlIHNwYWNlIG9u LXBhZ2UgZm9yIEhPVC1pbmRleGVkIGNvbnRpbnVhdGlvbnMuCiskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIGhpX3JlY292ICgKKwkJaWQgICAgICBp bnQgUFJJTUFSWSBLRVksCisJCWMxICAgICAgaW50LAorCQljMiAgICAgIGludCwKKwkJYzMg ICAgICBpbnQsCisJCWM0ICAgICAgaW50LAorCQlwYXlsb2FkIHRleHQKKwkpIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisJQ1JFQVRFIElOREVYIGhpX3JlY292X2MxIE9OIGhpX3JlY292 KGMxKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3ZfYzIgT04gaGlfcmVjb3YoYzIpOworCUNS RUFURSBJTkRFWCBoaV9yZWNvdl9jMyBPTiBoaV9yZWNvdihjMyk7CisJQ1JFQVRFIElOREVY IGhpX3JlY292X2M0IE9OIGhpX3JlY292KGM0KTsKKwlJTlNFUlQgSU5UTyBoaV9yZWNvdiBW QUxVRVMgKDEsIDEwMCwgMjAwLCAzMDAsIDQwMCwgJ3BheWxvYWQnKTsKK30pOworCisjIEJ1 aWxkIGEgSE9ULWluZGV4ZWQgY2hhaW46IGZpdmUgVVBEQVRFcywgZWFjaCB0b3VjaGluZyBv bmUgaW5kZXhlZAorIyBjb2x1bW4uICBFdmVyeSBVUERBVEUga2VlcHMgdGhlIG5ldyB2ZXJz aW9uIG9uLXBhZ2UgYW5kIHBsYW50cyBhIGZyZXNoCisjIGluZGV4IGVudHJ5IGJlY2F1c2Ug YzEgaXMgaW5kZXhlZCBhbmQgY2hhbmdlZC4gIFVzZSBhIFNRTCB0cmFuc2FjdGlvbi0KKyMg cmFuZ2UgbG9vcCBzbyBlYWNoIFVQREFURSBpcyBpdHMgb3duIHhhY3QgKHhtaW4veG1heCBk aXN0aW5jdCkuCitmb3IgbXkgJGkgKDEgLi4gNSkKK3sKKwlteSAkbmV3dmFsID0gMTAwICsg JGk7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIGhpX3JlY292 IFNFVCBjMSA9ICRuZXd2YWwgV0hFUkUgaWQgPSAxIik7Cit9CisKK215ICRwcmVfcHJ1bmUg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgbl9ob3RfaW5kZXhl ZCBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNvdicpfSk7Citj bXBfb2soJHByZV9wcnVuZSwgJz4nLCAwLAorCSdIT1QtaW5kZXhlZCBjaGFpbiBoYXMgYXQg bGVhc3Qgb25lIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbiBiZWZvcmUgcHJ1bmUnKTsKKwor IyBGb3JjZSBhIHBydW5lLiAgVGhlIGNoYWluIGhhcyBkZWFkIGhlYXAtb25seSBtZW1iZXJz IGZyb20gdGhlIGVhcmx5CisjIFVQREFURXMgKHRoZWlyIHhtaW5zIGFyZSBub3cgY29tbWl0 dGVkIGFuZCBiZWxvdyB0aGUgc25hcHNob3QgaG9yaXpvbikuCisjIEEgU0VMRUNUIHVuZGVy IGRlZmF1bHQgaXNvbGF0aW9uIHZpc2l0cyB0aGUgcGFnZTsgdW5kZXIKKyMgZGVmYXVsdF9z dGF0aXN0aWNzX3RhcmdldCBldGMuIHRoYXQncyBub3QgZW5vdWdoIG9uIGl0cyBvd24gdG8g dHJpZ2dlcgorIyBwcnVuZS4gIFRoZSByZWxpYWJsZSB3YXkgdG8gZHJpdmUgb3Bwb3J0dW5p c3RpYyBwcnVuZSBpcyBhIHF1ZXJ5IHRoYXQKKyMgZXhlcmNpc2VzIHRoZSBoZWFwX3BhZ2Vf cHJ1bmVfb3B0IHBhdGgsIHdoaWNoIGZpcmVzIGZyb20gYW4gaW5kZXhzY2FuCisjIHRoYXQg ZmluZHMgdGhlIHBhZ2Ugbm9uLWFsbC12aXNpYmxlLiAgVXNlIGEgc2VxdWVudGlhbCBzY2Fu IHBsdXMgYQorIyBzdWJzZXF1ZW50IFVQREFURSB0aGF0IGl0c2VsZiBsb29rcyBmb3IgZnJl ZSBzcGFjZSAoaGVhcF91cGRhdGUgY2FsbHMKKyMgaGVhcF9wYWdlX3BydW5lX29wdCkuCisk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VUIGVuYWJsZV9pbmRleHNjYW4g PSBvZmY7CisJU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb3Y7CisJVVBEQVRFIGhpX3Jl Y292IFNFVCBwYXlsb2FkID0gJ3BydW5lZCcgV0hFUkUgaWQgPSAxOworfSk7CisKKyMgUmVh ZCB0aGUgY2hhaW4gc3RhdGUgYWZ0ZXIgdGhlIHBydW5lOiB0aGUgbGl2ZSBIT1QtaW5kZXhl ZCB2ZXJzaW9uCisjIHJlbWFpbnMgd2hpbGUgZGVhZCBtZW1iZXJzIGNvbGxhcHNlIHRvIExQ X1JFRElSRUNUIGZvcndhcmRlcnMuCitteSAkcG9zdF9wcnVuZSA9ICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hvdF9pbmRleGVkIEZST00gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292Jyl9KTsKK2NtcF9vaygkcG9zdF9wcnVu ZSwgJz4nLCAwLAorCSdsaXZlIEhPVC1pbmRleGVkIHZlcnNpb24gc3Vydml2ZXMgb3Bwb3J0 dW5pc3RpYyBwcnVuZScpOworCisjIENyYXNoLXJlc3RhcnQuICBzdG9wKCdpbW1lZGlhdGUn KSBpcyB0aGUgc3RhbmRhcmQgImtpbGwgLTkiIHNpbXVsYXRpb24KKyMgdXNlZCBlbHNld2hl cmUgaW4gc3JjL3Rlc3QvcmVjb3ZlcnkvLiAgV2UgaW50ZW50aW9uYWxseSBkbyBOT1QgaXNz dWUgYQorIyBDSEVDS1BPSU5UIGZpcnN0OiB0aGF0IHdvdWxkIGFkdmFuY2UgdGhlIHJlZG8g cG9pbnQgcGFzdCB0aGUgSE9ULWluZGV4ZWQKKyMgVVBEQVRFL3BydW5lIHJlY29yZHMgYW5k IGxlYXZlIG5vdGhpbmcgZm9yIHJlY292ZXJ5IHRvIHJlcGxheS4gIENyYXNoaW5nCisjIHdp dGhvdXQgYSBjaGVja3BvaW50IGZvcmNlcyBzdGFydHVwIHJlZG8gdG8gcmVjb25zdHJ1Y3Qg dGhlIGNvbGxhcHNlZAorIyBjaGFpbiBmcm9tIFdBTCwgYW5kIHdhbF9jb25zaXN0ZW5jeV9j aGVja2luZyA9ICdhbGwnIChzZXQgYWJvdmUpIGNvbXBhcmVzCisjIGVhY2ggcmVwbGF5ZWQg cGFnZSBhZ2FpbnN0IGl0cyBmdWxsLXBhZ2UgaW1hZ2UsIGNhdGNoaW5nIGFueSBkaXZlcmdl bmNlCisjIGJldHdlZW4gdGhlIHdyaXRlIHBhdGggYW5kIHRoZSByZWRvIHBhdGguCiskbm9k ZS0+c3RvcCgnaW1tZWRpYXRlJyk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgMS4gQ2hhaW4gd2Fs ayB2aWEgdGhlIGluZGV4ZWQgY29sdW1uIG9uIHRoZSBsaXZlIHJvdyByZXR1cm5zIHRoZQor IyAgICBjb3JyZWN0IChhbmQgb25seSB0aGUgY29ycmVjdCkgdHVwbGUuICBjMSA9IDEwNSB3 YXMgdGhlIGxhc3QKKyMgICAgVVBEQVRFLCBzbyB0aGUgbGl2ZSB0dXBsZSBoYXMgYzEgPSAx MDUgYW5kIGMyLi5jNCB1bmNoYW5nZWQuCitteSAkbGl2ZSA9ICRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwlTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisJU0VMRUNUIGlk LCBjMSwgYzIsIGMzLCBjNCwgcGF5bG9hZCBGUk9NIGhpX3JlY292IFdIRVJFIGMxID0gMTA1 OworfSk7CitpcygkbGl2ZSwgIjF8MTA1fDIwMHwzMDB8NDAwfHBydW5lZCIsCisJJ2luZGV4 IGxvb2t1cCBvbiBjaGFpbiByZXR1cm5zIHRoZSBwb3N0LXBydW5lIGxpdmUgdHVwbGUnKTsK KworIyBPbGRlciBjMSB2YWx1ZXMgYXJlIG5vdCByZWFjaGFibGU6IGV2ZXJ5IHN0YWxlIGJ0 cmVlIGVudHJ5IHRoYXQKKyMgY2hhaW4tcmVzb2x2ZXMgYWNyb3NzIGEgSE9UL1NJVSBob3Ag bXVzdCBiZSBkcm9wcGVkIGJ5IHRoZSByZWFkLXNpZGUKKyMgY3Jvc3NlZC1hdHRyaWJ1dGUg Yml0bWFwLgorbXkgJHN0YWxlX2NvdW50ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb3YgV0hFUkUgYzEgPSAxMDB9KTsK K2lzKCRzdGFsZV9jb3VudCwgJzAnLAorCSdzdGFsZSBidHJlZSBlbnRyaWVzIGFyZSBmaWx0 ZXJlZCBieSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwJyk7CisKKyMgMi4gdmVyaWZ5 X2hlYXBhbSByZXBvcnRzIG5vIGVycm9ycyBvbiB0aGUgcmVsYXRpb24gKHNraXBfb3B0aW9u ID0KKyMgICAgJ2FsbC1mcm96ZW4nIGlzIHRoZSBkZWZhdWx0OyB3ZSB3YW50IHRvIHNjYW4g ZXZlcnl0aGluZykuCitteSAkaGVhcGNoZWNrID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxeworCVNFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY292 JywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgOj0gJ25vbmUn LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfdG9hc3QgOj0g ZmFsc2UpOworfSk7CitpcygkaGVhcGNoZWNrLCAnMCcsCisJJ3ZlcmlmeV9oZWFwYW0gcmVw b3J0cyB6ZXJvIGVycm9ycyBhZnRlciBjcmFzaCByZWNvdmVyeScpOworCisjIDMuIFJlY2xh bWF0aW9uOiBhZnRlciB0aGUgbGl2ZSByb3cgaXMgZGVsZXRlZCwgdHdvIFZBQ1VVTSAoRlJF RVpFKQorIyAgICBwYXNzZXMgZHJpdmUgcHJ1bmUgdG8gcmV2aXNpdCB0aGUgcGFnZSBhbmQg cmVjbGFpbSB0aGUgbm93LWZ1bGx5LWRlYWQKKyMgICAgY29sbGFwc2VkIGNoYWluICh0aGUg Zmlyc3QgcmVtb3ZlcyB0aGUgZGVhZCByb3cncyBpbmRleCBlbnRyaWVzIGFuZAorIyAgICBy ZWR1Y2VzIGl0cyBMUDsgdGhlIHNlY29uZCByZWNsYWltcyB0aGUgdW5yZWZlcmVuY2VkIG1l bWJlcnMgYW5kCisjICAgIHJlLXBvaW50cyB0aGUgcmVkaXJlY3QpLiAgQWZ0ZXIgdGhhdCwg bl9ob3RfaW5kZXhlZCBtdXN0IGJlIHplcm8uCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsIHF7REVMRVRFIEZST00gaGlfcmVjb3YgV0hFUkUgaWQgPSAxfSk7Ciskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NL SVBQSU5HKSBoaV9yZWNvdn0pOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgaGlfcmVjb3Z9KTsKK215 ICRmaW5hbCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBuX2hv dF9pbmRleGVkIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY292 Jyl9KTsKK2lzKCRmaW5hbCwgJzAnLAorCSd0d28gVkFDVVVNIChGUkVFWkUpIHBhc3NlcyBh ZnRlciBERUxFVEUgcmVjbGFpbSB0aGUgY2hhaW4gcG9zdC1yZWNvdmVyeScpOworCiskbm9k ZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOTAzMGY3ZjY4NTEKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CkBAIC0w LDAgKzEsMTcxOSBAQAorLS0KKy0tIEhPVF9JTkRFWEVEX1VQREFURVMKKy0tIFRlc3QgSE9U LWluZGV4ZWQgdXBkYXRlIChob3QtaW5kZXhlZCksIGFrYSBIT1QtaW5kZXhlZCwgYmVoYXZp b3VyCistLQorLS0gRXZlcnkgVVBEQVRFIGluIHRoaXMgZmlsZSBtb2RpZmllcyBhdCBsZWFz dCBvbmUgbm9uLXN1bW1hcml6aW5nCistLSBpbmRleGVkIGF0dHJpYnV0ZS4gIE9uIGEgcHJl LWhvdC1pbmRleGVkIHNlcnZlciBhbGwgb2YgdGhlc2Ugd291bGQgYmUKKy0tIG5vbi1IT1Q7 IG9uIHRoZSBob3QtaW5kZXhlZCBicmFuY2ggZWFjaCBlbGlnaWJsZSB1cGRhdGUgc3RheXMg b24tcGFnZSBhbmQKKy0tIGluc2VydHMgaW50byBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0 dHJpYnV0ZXMgYWN0dWFsbHkgY2hhbmdlZC4KKy0tCistLSBXZSB2ZXJpZnkgZm91ciB0aGlu Z3M6CistLSAgIChBKSBwZ19zdGF0IGNvdW50ZXJzOiBIT1QgYW5kIGhvdC1pbmRleGVkIGNv dW50cyBpbmNyZW1lbnQgYXMgZXhwZWN0ZWQKKy0tICAgKEIpIGluZGV4IGxvb2t1cHMgcmV0 dXJuIHRoZSBuZXcgdmFsdWUgYW5kIG5vdCB0aGUgc3RhbGUgdmFsdWUKKy0tICAgICAgIGZv ciBFUVVBTElUWSBxdWVyaWVzICh0aGUgcmVhZC1zaWRlIHN0YWxlbmVzcyB0ZXN0IGRyb3Bz IGEKKy0tICAgICAgIGxlYWYgd2hvc2UgY292ZXJlZCBhdHRyaWJ1dGUgY2hhbmdlZCBvbiB0 aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlKQorLS0gICAoQykgcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMgcmVwb3J0cyB0aGUgSE9ULWluZGV4ZWQgdmVyc2lvbnMgd2UgZXhwZWN0 CistLSAgIChEKSAqKlJBTkdFL0lORVFVQUxJVFkqKiBxdWVyaWVzIHJldHVybiB0aGUgY29y cmVjdCBudW1iZXIgb2YKKy0tICAgICAgIHR1cGxlcyAtLSB0aGlzIGlzIHRoZSBjbGFzcyBv ZiBidWdzIHdoZXJlIGEgc3RhbGUgYnRyZWUKKy0tICAgICAgIGVudHJ5J3Mga2V5IGlzIHN0 aWxsIHJlYWNoYWJsZSB2aWEgYSBsb29zZXIgc2NhbiBrZXk7IHRoZQorLS0gICAgICAgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhcnJpdmFsIGJlY2F1c2Ug dGhlIGluZGV4J3MKKy0tICAgICAgIGF0dHJpYnV0ZSBjaGFuZ2VkIGJldHdlZW4gdGhhdCBs ZWFmJ3MgdGFyZ2V0IGFuZCB0aGUgbGl2ZSB0dXBsZQorLS0KK0NSRUFURSBFWFRFTlNJT04g SUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9O IGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKHVwZGF0ZXMg QklHSU5ULCBob3QgQklHSU5UKSBBUyAkJAorREVDTEFSRSByZWxfb2lkIG9pZDsKK0JFR0lO CisgICAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKKyAgICB1cGRhdGVz IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKSAr CisgICAgICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVw bGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICAgIENPQUxFU0NFKHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKTsKKyAgICBS RVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgT1IgUkVQ TEFDRSBGVU5DVElPTiBnZXRfaGlfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFC TEUgKHVwZGF0ZXMgQklHSU5ULCBob3QgQklHSU5ULCBob3RfaWR4IEJJR0lOVCkgQVMgJCQK K0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6 OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90 dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09BTEVTQ0Uo cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90X2lkeCA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAg ICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkKHJlbF9vaWQpLCAwKTsKKyAgICBSRVRVUk4gTkVYVDsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEuIEJhc2ljIGhvdC1p bmRleGVkOiBtb2RpZnlpbmcgYW4gaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9UIGFuZCBjb3Vu dHMgYXMgaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2Jhc2ljICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgaW5kZXhlZF9j b2wgaW50LAorICAgIG5vbl9pbmRleGVkX2NvbCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYmFzaWNfaWR4IE9OIGhpX2Jhc2ljKGluZGV4ZWRf Y29sKTsKK0lOU0VSVCBJTlRPIGhpX2Jhc2ljIFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcp OworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhv dC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBIT1QgY291bnRlciBh bmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFURSBoaV9iYXNpYyBT RVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9iYXNpYycpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0t LS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cp CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgaW5kZXguCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCwg aW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsKKyAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlf YmFzaWMKKyAgIFJlY2hlY2sgQ29uZDogKGluZGV4ZWRfY29sID0gMTUwKQorICAgLT4gIEJp dG1hcCBJbmRleCBTY2FuIG9uIGhpX2Jhc2ljX2lkeAorICAgICAgICAgSW5kZXggQ29uZDog KGluZGV4ZWRfY29sID0gMTUwKQorKDQgcm93cykKKworU0VMRUNUIGlkLCBpbmRleGVkX2Nv bCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIHwgaW5kZXhl ZF9jb2wgCistLS0tKy0tLS0tLS0tLS0tLS0KKyAgMSB8ICAgICAgICAgMTUwCisoMSByb3cp CisKKy0tIFRoZSBvbGQgdmFsdWUgaXMgbm90IHJlYWNoYWJsZSB0aHJvdWdoIHRoaXMgaW5k ZXg6IHRoZSBzdGFsZSBidHJlZQorLS0gZW50cnkgKGluZGV4ZWRfY29sPTEwMCkgd2Fsa3Mg dG8gdGhlIGN1cnJlbnQgdHVwbGUgdmlhIHRoZSBob3QtaW5kZXhlZCBob3AsCistLSBub2Rl SW5kZXhzY2FuIHJlLWV2YWx1YXRlcyBgaW5kZXhlZF9jb2wgPSAxMDBgIGFnYWluc3QgdGhl IGN1cnJlbnQKKy0tIHR1cGxlIChpbmRleGVkX2NvbD0xNTApLCBhbmQgdGhlIHJvdyBpcyBj b3JyZWN0bHkgZHJvcHBlZC4gIFRoaXMgaXMKKy0tIHRoZSBlcXVhbGl0eS1sb29rdXAgY2Fz ZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGhhbmRsZXMuCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX2Jhc2ljIFdIRVJFIGluZGV4ZWRfY29sID0gMTAw OworICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQml0bWFwIEhlYXAgU2NhbiBv biBoaV9iYXNpYworICAgUmVjaGVjayBDb25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gaGlfYmFzaWNfaWR4CisgICAgICAgICBJbmRleCBD b25kOiAoaW5kZXhlZF9jb2wgPSAxMDApCisoNCByb3dzKQorCitTRUxFQ1QgaWQgRlJPTSBo aV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3Mp CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gcGdfcmVsYXRpb25faG90X2luZGV4ZWRf c3RhdHMgc2VlcyBvbmUgSE9ULWluZGV4ZWQgdmVyc2lvbiwgemVybyBIT1QgcmVkaXJlY3Rz ICh0aGUKKy0tIGNoYWluIGhhcyBub3QgeWV0IGJlZW4gcHJ1bmVkIHNvIG5vIExQX1JFRElS RUNUIGV4aXN0cykuCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCwgbl9jaGFpbnMsIGF2Z19jaGFp bl9sZW4sIG1heF9jaGFpbl9sZW4KK0ZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3Rh dHMoJ2hpX2Jhc2ljJyk7Cisgbl9ob3RfaW5kZXhlZCB8IG5fY2hhaW5zIHwgYXZnX2NoYWlu X2xlbiB8IG1heF9jaGFpbl9sZW4gCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMSB8ICAgICAgICAw IHwgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgIDAKKygxIHJvdykKKworRFJPUCBUQUJM RSBoaV9iYXNpYzsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gUkFOR0UvSU5F UVVBTElUWSBjb3JyZWN0bmVzcyBhZnRlciBob3QtaW5kZXhlZCBvbiBhbiBpbmRleGVkIGNv bHVtbgorLS0KKy0tIFRoaXMgaXMgdGhlIHRlc3QgY2xhc3MgdGhhdCBjYXRjaGVzIHRoZSBo b3QtaW5kZXhlZCBmYWxzZS1kdXAgYnVnOiBhIHN0YWxlCistLSBidHJlZSBlbnRyeSB3aG9z ZSBrZXkgdmFsdWUgc3RpbGwgc2F0aXNmaWVzIHRoZSByYW5nZSBwcmVkaWNhdGUsCistLSBy ZWFjaGFibGUgdmlhIHRoZSBob3QtaW5kZXhlZCBjaGFpbiBob3AuCistLQorLS0gVG8gZXhl cmNpc2UgdGhlIGJ1ZyB3ZSBtdXN0IGZvcmNlIGFuIEluZGV4U2NhbiBwbGFuICh0aGUKKy0t IEluZGV4T25seVNjYW4gcGF0aCBwZXJtaXNzaXZlbHkgZHJvcHMgZXZlcnkgaG90LWluZGV4 ZWQtcmVhY2hhYmxlIGluZGV4LW9ubHkKKy0tIGhpdDsgdGhlIEJpdG1hcEhlYXBTY2FuIHBh dGggZGVkdXBzIGJ5IFRJRCkuICBXZSBpbmNsdWRlIGEgcGF5bG9hZAorLS0gY29sdW1uIG5v dCBwcmVzZW50IGluIHRoZSBQSyBzbyB0aGUgcGxhbm5lciBtdXN0IGhlYXAtZmV0Y2guCist LQorLS0gVGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgbWFrZXMgdGhl IEluZGV4U2NhbiByZXR1cm4gdGhlIGNvcnJlY3QKKy0tIGNvdW50IG9mIDE6IHRoZSBzdGFs ZSBlbnRyeSAoJzEnLCc1JykgY2hhaW4td2Fsa3MgdG8gdGhlIGxpdmUgdHVwbGUgYWNyb3Nz CistLSB0aGUgYi1jaGFuZ2luZyBob3AsIGFuZCBiZWNhdXNlIHRoZSBQSyBjb3ZlcnMgYiB0 aGUgb3ZlcmxhcCBpcyBub24tZW1wdHksIHNvCistLSB0aGUgc3RhbGUgbGVhZiBpcyBkcm9w cGVkLiAgVGhlIGZyZXNoIGVudHJ5ICgnMScsJzE1JykgcG9pbnRzIGRpcmVjdGx5IGF0IHRo ZQorLS0gbGl2ZSB0dXBsZSAobm8gaG9wIGFmdGVyIGl0KSBhbmQgaXMga2VwdC4gIFRoZSBP UkRFUiBCWSBsaWtld2lzZSByZXR1cm5zIHRoZQorLS0gc2luZ2xlIGxpdmUgcm93LgorLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmFuZ2UgKAorICAgIGEg aW50LAorICAgIGIgaW50LAorICAgIHBheWxvYWQgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAo YSwgYikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0lOU0VSVCBJTlRPIGhpX3Jhbmdl IFZBTFVFUyAoMSwgNSwgJ2hpJyk7CistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNl Y29uZCBQSyBjb2x1bW46IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlu cywgbmV3IGVudHJ5ICgnMScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9p bnRzIGF0CistLSB0aGUgY2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJl Y3RseSBhdCB0aGUgbmV3CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2Ug U0VUIGIgPSAxNSBXSEVSRSBhID0gMSBBTkQgYiA9IDU7CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW46IHBh eWxvYWQgSVMgTk9UIE5VTEwgZm9yY2VzIGhlYXAgZmV0Y2gsIG5vIEluZGV4T25seVNjYW4u CistLSBUaGUgc3RhbGUgKCcxJywnNScpIGxlYWYgaXMgZHJvcHBlZCBieSB0aGUgY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwLCBzbyB0aGlzCistLSByZXR1cm5zIDEuCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIElu ZGV4IFNjYW4gdXNpbmcgaGlfcmFuZ2VfcGtleSBvbiBoaV9yYW5nZQorICAgICAgICAgSW5k ZXggQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAwKSkKKyAgICAgICAgIEZpbHRlcjogKHBh eWxvYWQgSVMgTk9UIE5VTEwpCisoNCByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgYSwgYiBG Uk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMIE9SREVS IEJZIGI7CisgYSB8IGIgIAorLS0tKy0tLS0KKyAxIHwgMTUKKygxIHJvdykKKworLS0gSW5k ZXhPbmx5U2NhbjogdGhlIHBhZ2UgaG9sZHMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVt YmVyIHNvIGl0IGlzIG5ldmVyIGFsbC12aXNpYmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBo ZWFwIGZldGNoIGFuZCB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBz dGFsZSAoJzEnLCc1JykKKy0tIGxlYWYsIHNvIGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIg PCAxMDA7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5n IGhpX3JhbmdlX3BrZXkgb24gaGlfcmFuZ2UKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9 IDEpIEFORCAoYiA8IDEwMCkpCisoMyByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBo aV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAgMQorKDEgcm93KQorCistLSBCaXRtYXBIZWFwU2NhbjogVElEIGRlZHVwIGNvbGxhcHNl cyB0aGUgc3RhbGUgYW5kIGZyZXNoIGhpdHMuCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IG9m ZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1JFU0VUIGVuYWJsZV9iaXRt YXBzY2FuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9y YW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgQml0bWFw IEhlYXAgU2NhbiBvbiBoaV9yYW5nZQorICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSAx KSBBTkQgKGIgPCAxMDApKQorICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGhp X3JhbmdlX3BrZXkKKyAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFORCAo YiA8IDEwMCkpCisoNSByb3dzKQorCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBX SEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEg cm93KQorCitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25s eXNjYW47CistLSBTZXFTY2FuOiByZWFkcyB0aGUgaGVhcCBkaXJlY3RseSwgc2VlcyBleGFj dGx5IG9uZSBsaXZlIHR1cGxlLgorUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRVQgZW5hYmxl X2luZGV4c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CisgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBTZXEgU2Nh biBvbiBoaV9yYW5nZQorICAgICAgICAgRmlsdGVyOiAoKGIgPCAxMDApIEFORCAoYSA9IDEp KQorKDMgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9 IDEgQU5EIGIgPCAxMDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKwor UkVTRVQgZW5hYmxlX2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOwor UkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CistLSBTYW1lIHNoYXBlIG9uIGEgc2Vjb25kYXJ5 IChub24tUEspIGJ0cmVlOiBhbm90aGVyIGhvdC1pbmRleGVkIHVwZGF0ZSBvbiBiLgorQ1JF QVRFIElOREVYIGhpX3JhbmdlX2JfaWR4IE9OIGhpX3JhbmdlKGIpOworVVBEQVRFIGhpX3Jh bmdlIFNFVCBiID0gMjUgV0hFUkUgYSA9IDEgQU5EIGIgPSAxNTsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2Nh biBwYXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxpZXMuCitTRUxF Q1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFO RCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGNvdW50IAorLS0tLS0tLQorICAgICAxCisoMSBy b3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitEUk9QIFRBQkxFIGhpX3JhbmdlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAz LiBBbGwtb3Itbm9uZSBvbiBhIG11bHRpLWluZGV4ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9u bHkgdG91Y2hlcyBpbmRleGVzCistLSAgICB3aG9zZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX211bHRpICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAg ICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOworQ1JFQVRFIElOREVYIGhpX211bHRpX2FfaWR4IE9OIGhpX211bHRpKGNvbF9h KTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9iX2lkeCBPTiBoaV9tdWx0aShjb2xfYik7CitD UkVBVEUgSU5ERVggaGlfbXVsdGlfY19pZHggT04gaGlfbXVsdGkoY29sX2MpOworSU5TRVJU IElOVE8gaGlfbXVsdGkgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0g Y29sX2Egb25seTogdW5kZXIgaG90LWluZGV4ZWQgdGhpcyBpcyBIT1QtaW5kZXhlZCwgYW5k IG9ubHkgaGlfbXVsdGlfYV9pZHgKKy0tIGdldHMgYSBuZXcgZW50cnkuICBoaV9tdWx0aV9i X2lkeCAvIGhpX211bHRpX2NfaWR4IGtlZXAgcG9pbnRpbmcKKy0tIGF0IHRoZSBjaGFpbiBy b290LgorVVBEQVRFIGhpX211bHRpIFNFVCBjb2xfYSA9IDE1IFdIRVJFIGlkID0gMTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsKKyB1cGRhdGVzIHwgaG90IHwg aG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwg ICAgICAgMQorKDEgcm93KQorCistLSBMb29rdXBzIG9uIGFsbCB0aHJlZSBpbmRleGVzIHJl dHVybiB0aGUgcm93LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZS T00gaGlfbXVsdGkgV0hFUkUgY29sX2EgPSAxNTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93 KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIwOworIGlkIAor LS0tLQorICAxCisoMSByb3cpCisKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNv bF9jID0gMzA7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworLS0gT2xkIGNvbF9hIHZh bHVlIGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5 IHRoZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCkuCitTRUxFQ1Qg aWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworIGlkIAorLS0tLQorKDAgcm93 cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX211bHRpOworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBNdWx0aS1jb2x1bW4gYnRyZWU6IGhvdC1p bmRleGVkIG9uIHBhcnQgb2YgYSBjb21wb3NpdGUga2V5CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jb21wb3NpdGUgKAorICAgIGlkIGludCBQUklNQVJZ IEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2IgaW50LAorICAgIGRhdGEgdGV4dAor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2NvbXBvc2l0ZV9h Yl9pZHggT04gaGlfY29tcG9zaXRlKGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBoaV9j b21wb3NpdGUgVkFMVUVTICgxLCAxMCwgMjAsICdkYXRhJyk7CistLSBjb2xfYSBpcyBwYXJ0 IG9mIHRoZSBjb21wb3NpdGUga2V5OiBob3QtaW5kZXhlZC4KK1VQREFURSBoaV9jb21wb3Np dGUgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBv c2l0ZScpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0t LS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKKy0tIFJlc2V0 IGFuZCB0aGVuIHVwZGF0ZSBjb2xfYiAoYWxzbyBwYXJ0IG9mIHRoZSBrZXkpLgorVVBEQVRF IGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxMDsKK1VQREFURSBoaV9jb21wb3NpdGUgU0VU IGNvbF9iID0gMjU7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2NvbXBvc2l0ZScp OworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0t LQorICAgICAgIDMgfCAgIDMgfCAgICAgICAzCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlf Y29tcG9zaXRlOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1LiBQYXJ0aWFsIGlu ZGV4OiBzdGF0dXMgdHJhbnNpdGlvbiBvdXQtb2YtcHJlZGljYXRlCistLQorLS0gJ3N0YXR1 cycgaXMgYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4uICBBIGNoYW5nZSB0byBh IHByZWRpY2F0ZQorLS0gY29sdW1uIGNhbiBmbGlwIGEgcm93IGluIG9yIG91dCBvZiB0aGUg aW5kZXgsIHdoaWNoIHRoZSByZWFkLXNpZGUga2V5CistLSByZWNoZWNrIGNhbm5vdCBkZXRl Y3QsIHNvIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgY29uc2VydmF0aXZlbHkgZGlzcXVhbGlm aWVzCistLSBIT1QtaW5kZXhlZCBmb3IgYW55IHByZWRpY2F0ZS1jb2x1bW4gY2hhbmdlIChl dmVuIHRoaXMgb3V0LW9mLXByZWRpY2F0ZSAtPgorLS0gb3V0LW9mLXByZWRpY2F0ZSBjYXNl KS4gIFRoZSB1cGRhdGUgaXMgdGhlcmVmb3JlIG5vbi1IT1QsIGFuZCB0aGUgcGFydGlhbAor LS0gaW5kZXggY29ycmVjdGx5IHN0YXlzIGVtcHR5IGZvciB0aGVzZSBub24tJ2FjdGl2ZScg cm93cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRp YWwgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4dCwKKyAgICBk YXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9w YXJ0aWFsX2FjdGl2ZV9pZHggT04gaGlfcGFydGlhbChzdGF0dXMpIFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3RpdmUn LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5hY3Rp dmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAnZGVs ZXRlZCcsICdkYXRhMycpOworLS0gb3V0IC0+IG91dCB0cmFuc2l0aW9uIG9uIHRoZSBwcmVk aWNhdGUgY29sdW1uOiBIT1QtaW5kZXhlZCBrZWVwcyBpdCBvbi1wYWdlLAorLS0gYW5kIHRo ZSBwYXJ0aWFsIGluZGV4IGdldHMgbm8gZW50cnkgKHRoZSByb3cgc2F0aXNmaWVzIHRoZSBw cmVkaWNhdGUgbmVpdGhlcgorLS0gYmVmb3JlIG5vciBhZnRlciB0aGUgdXBkYXRlKS4KK1VQ REFURSBoaV9wYXJ0aWFsIFNFVCBzdGF0dXMgPSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0aWFsJyk7CisgdXBkYXRlcyB8IGhv dCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAg MSB8ICAgICAgIDEKKygxIHJvdykKKworLS0gVGhlIHBhcnRpYWwgaW5kZXggc3RpbGwgY29y cmVjdGx5IGFuc3dlcnMgImFjdGl2ZSIgcXVlcmllcy4KK1NFTEVDVCBpZCwgc3RhdHVzIEZS T00gaGlfcGFydGlhbCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKKyBpZCB8IHN0YXR1cyAK Ky0tLS0rLS0tLS0tLS0KKyAgMSB8IGFjdGl2ZQorKDEgcm93KQorCitEUk9QIFRBQkxFIGhp X3BhcnRpYWw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDYuIFBhcnRpdGlvbjog aG90LWluZGV4ZWQgaW5zaWRlIG9uZSBwYXJ0aXRpb24KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKAorICAgIGlkIGludCwKKyAgICBwYXJ0aXRp b25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0ZXh0LAorICAg IFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9OIEJZIFJBTkdF IChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBoaV9wYXJ0XzEgUEFSVElUSU9OIE9G IGhpX3BhcnQKKyAgICBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9pZHggT04gaGlfcGFydChpbmRl eGVkX2NvbCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0IFZBTFVFUyAoMSwgNTAsIDEwMCwgJ2Rh dGEnKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnRfMScpOworIHVwZGF0ZXMg fCBob3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEg fCAgIDEgfCAgICAgICAxCisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfcGFydCBXSEVSRSBp bmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0IENBU0NBREU7CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9kaWZpZXMgaW5kZXhlZCBjb2x1bW46IGhv dC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRy aWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJfaWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dl cmVkX2NvbCk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAo KQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitCRUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29s ID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9idW1wCisg ICAgQkVGT1JFIFVQREFURSBPTiBoaV90cmlnZ2VyCisgICAgRk9SIEVBQ0ggUk9XCisgICAg RVhFQ1VURSBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKK0lOU0VSVCBJTlRPIGhpX3Ry aWdnZXIgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CistLSBVUERBVEUncyBTRVQgY2xh dXNlIGRvZXNuJ3QgdG91Y2ggdGhlIGluZGV4ZWQgY29sdW1uLCBidXQgdGhlCistLSB0cmln Z2VyIG1vZGlmaWVzIGl0IHZpYSBoZWFwX21vZGlmeV90dXBsZS4gIGhvdC1pbmRleGVkIG11 c3QgZGV0ZWN0IHRoaXMKKy0tIGFuZCBrZWVwIHRoZSB0dXBsZSBvbi1wYWdlIChIRUFQX0lO REVYRURfVVBEQVRFRCkgcGx1cyBhIG5ldyBidHJlZSBlbnRyeS4KK1VQREFURSBoaV90cmln Z2VyIFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0 X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdl dF9oaV9jb3VudCgnaGlfdHJpZ2dlcicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAor LS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCiso MSByb3cpCisKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaGlfdHJpZ2dlciBXSEVSRSBp ZCA9IDE7CisgdHJpZ2dlcmVkX2NvbCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAx MDEKKygxIHJvdykKKworLS0gTmV3IHZhbHVlIHJlYWNoYWJsZS4KK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgdHJpZ2dlcmVk X2NvbCA9IDEwMTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCiso MCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfdHJpZ2dl ciBDQVNDQURFOworRFJPUCBGVU5DVElPTiBoaV90cmlnZ2VyX2J1bXAoKTsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOC4gSlNPTkIgZXhwcmVzc2lvbiBpbmRleDogSE9ULWlu ZGV4ZWQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gZXhwcmVzc2lvbgorLS0gICAgaW5kZXhl cywgc28gdGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCB1cGRhdGUgKGhvdF9p ZHggPSAwKS4KKy0tICAgIFJlYWRzIHN0YXkgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2pzb25iICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZGF0YSBqc29uYgorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhpX2pzb25iX25hbWVfaWR4IE9OIGhpX2pzb25iICgoZGF0YS0+PiduYW1lJykp OworSU5TRVJUIElOVE8gaGlfanNvbmIgVkFMVUVTICgxLCAneyJuYW1lIjoiQWxpY2UiLCJh Z2UiOjMwfScpOworLS0gQ2hhbmdpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbidzIHZhbHVl IChuYW1lKTogZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QKKy0tIHlldCBzdXBwb3J0ZWQs IHNvIHRoaXMgaXMgYSBub24tSE9UIHVwZGF0ZS4KK1VQREFURSBoaV9qc29uYiBTRVQgZGF0 YSA9IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAx OworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisK K1NFTEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9qc29uYicpOworIHVwZGF0ZXMgfCBo b3QgfCBob3RfaWR4IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAg IDAgfCAgICAgICAwCisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF TEVDVCBpZCBGUk9NIGhpX2pzb25iIFdIRVJFIGRhdGEtPj4nbmFtZScgPSAnQWxpY2UyJzsK KyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9qc29uYiBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlJzsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9qc29uYjsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gR0lOIGluZGV4IHdpdGggY2hhbmdlZCBleHRyYWN0 ZWQga2V5czogaG90LWluZGV4ZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX2dpbiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRhZ3MgdGV4 dFtdCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfZ2luX3Rh Z3NfaWR4IE9OIGhpX2dpbiBVU0lORyBnaW4gKHRhZ3MpOworSU5TRVJUIElOVE8gaGlfZ2lu IFZBTFVFUyAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddKTsKKy0tIEFkZGluZyBhIHRhZyB5 aWVsZHMgYSBkaWZmZXJlbnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBE QVRFIGhpX2dpbiBTRVQgdGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfZ2luJyk7CisgdXBk YXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tCisgICAg ICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUn XTsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK K0RST1AgVEFCTEUgaGlfZ2luOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMC4g UGVyLWluZGV4IEhPVC1pbmRleGVkIGNvdW50ZXJzOiBza2lwcGVkIHZzIG1hdGNoZWQKKy0t CistLSBBIHRhYmxlIHdpdGggdHdvIGluZGVwZW5kZW50IHNlY29uZGFyeSBpbmRleGVzLiAg QW4gVVBEQVRFIHRvdWNoZXMgYQorLS0gY29sdW1uIGNvdmVyZWQgYnkgb25seSBvbmUgb2Yg dGhlbTsgdGhlIEhPVC1pbmRleGVkIHBhdGggbXVzdCBpbnNlcnQKKy0tIGludG8gdGhhdCBv bmUgaW5kZXggYW5kIHNraXAgdGhlIG90aGVyLiAgcGdfc3RhdF9hbGxfaW5kZXhlcyByZXBv cnRzCistLSBtYXRjaGVkPjAgb24gdGhlIHVwZGF0ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBv biB0aGUgdW50b3VjaGVkIGluZGV4LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaG90aWR4X3BlcmluZGV4ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQsCisgICAgYiBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYSBPTiBob3RpZHhfcGVyaW5kZXgoYSk7CitDUkVB VEUgSU5ERVggaG90aWR4X3BlcmluZGV4X2IgT04gaG90aWR4X3BlcmluZGV4KGIpOworSU5T RVJUIElOVE8gaG90aWR4X3BlcmluZGV4IFZBTFVFUyAoMSwgMTAwLCAyMDApOworLS0gTW9k aWZ5IG9ubHkgY29sdW1uIGEuICBIT1QtaW5kZXhlZCBpbnNlcnRzIGludG8gaG90aWR4X3Bl cmluZGV4X2EgYW5kCistLSBza2lwcyBob3RpZHhfcGVyaW5kZXhfYiAocHJpbWFyeSBrZXkg aW5kcmVsaWQgaXMgdGhlIHRhYmxlIGl0c2VsZiBhbmQKKy0tIGFsc28gdW5jaGFuZ2VkLCBz byBpdCBjb3VudHMgYXMgc2tpcHBlZCB0b28pLgorVVBEQVRFIGhvdGlkeF9wZXJpbmRleCBT RVQgYSA9IDEwMSBXSEVSRSBpZCA9IDE7CistLSBGb3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0 YXRzIHRvIHRoZSBzaGFyZWQgZW50cnkuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluZGV4cmVsbmFtZSwKKyAgICAgICBu X3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCBBUyBtYXRjaGVkLAorICAgICAgIG5fdHVw X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkIEFTIHNraXBwZWQKKyAgRlJPTSBwZ19zdGF0X2Fs bF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnCisgT1JERVIg QlkgaW5kZXhyZWxuYW1lOworICAgICBpbmRleHJlbG5hbWUgICAgIHwgbWF0Y2hlZCB8IHNr aXBwZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0KKyBo b3RpZHhfcGVyaW5kZXhfYSAgICB8ICAgICAgIDEgfCAgICAgICAwCisgaG90aWR4X3Blcmlu ZGV4X2IgICAgfCAgICAgICAwIHwgICAgICAgMQorIGhvdGlkeF9wZXJpbmRleF9wa2V5IHwg ICAgICAgMCB8ICAgICAgIDEKKygzIHJvd3MpCisKKy0tIEEgc2Vjb25kIFVQREFURSB0b3Vj aGluZyBvbmx5IGIgaW52ZXJ0cyB0aGUgYXNzaWdubWVudC4KK1VQREFURSBob3RpZHhfcGVy aW5kZXggU0VUIGIgPSAyMDEgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisg ICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAg ICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdf c3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4Jwor IE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAgICAgaW5kZXhyZWxuYW1lICAgICB8IG1hdGNo ZWQgfCBza2lwcGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAgfCAgICAgICAxIHwgICAgICAgMQorIGhvdGlk eF9wZXJpbmRleF9iICAgIHwgICAgICAgMSB8ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhf cGtleSB8ICAgICAgIDAgfCAgICAgICAyCisoMyByb3dzKQorCistLSBJbnZhcmlhbnQ6IG1h dGNoZWQgKyBza2lwcGVkID09IG93bmluZyB0YWJsZSdzIG5fdHVwX2hvdF9pbmRleGVkX3Vw ZC4KK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQgKyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyB0b3RhbCwKKyAg ICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9NIHBnX3N0YXRfYWxsX3Rh YmxlcworICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSBBUyB0 YWJsZV9ob3RfaWR4X3VwZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSBy ZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5hbWU7Cisg ICAgIGluZGV4cmVsbmFtZSAgICAgfCB0b3RhbCB8IHRhYmxlX2hvdF9pZHhfdXBkIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyBob3Rp ZHhfcGVyaW5kZXhfYSAgICB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhf cGVyaW5kZXhfYiAgICB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKyBob3RpZHhfcGVy aW5kZXhfcGtleSB8ICAgICAyIHwgICAgICAgICAgICAgICAgIDIKKygzIHJvd3MpCisKKy0t IEJvb2xlYW4gYXNzZXJ0aW9uIG9mIHRoZSBzYW1lIGludmFyaWFudC4gIFRoaXMgaXMgdGhl IGNhbm9uaWNhbCBmb3JtCistLSByZXZpZXdlcnMgYXNrZWQgZm9yOiBldmVyeSBpbmRleCBl bnRyeSBpcyBlaXRoZXIgbWF0Y2hlZCAodGhlIGluZGV4CistLSBnb3QgYSBmcmVzaCBpbnNl cnQgdGhpcyBVUERBVEUpIG9yIHNraXBwZWQgKEhPVC1pbmRleGVkIGNvcnJlY3RseQorLS0g YXZvaWRlZCBhbiBpbnNlcnQgYmVjYXVzZSB0aGUgaW5kZXgncyBhdHRycyBkaWQgbm90IGNo YW5nZSkuICBJZiB0aGUKKy0tIHR3byBjb3VudGVycyBkcmlmdCBhcGFydCBmcm9tIHRoZSB0 YWJsZS1sZXZlbCBuX3R1cF9ob3RfaW5kZXhlZF91cGQgd2UKKy0tIGhhdmUgZWl0aGVyIGxv c3QgYSBwZXItaW5kZXggaW5jcmVtZW50IG9yIGRvdWJsZS1jb3VudGVkIG9uZS4KK1NFTEVD VCBib29sX2FuZCgobl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgKyBuX3R1cF9ob3Rf aW5kZXhlZF91cGRfc2tpcHBlZCkgPQorICAgICAgICAgICAgICAgIChTRUxFQ1Qgbl90dXBf aG90X2luZGV4ZWRfdXBkIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCisgICAgICAgICAgICAg ICAgICBXSEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcpKQorICAgICAgICAgQVMg cGVyaW5kZXhfaW52YXJpYW50X2hvbGRzCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcwor IFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JzsKKyBwZXJpbmRleF9pbnZhcmlh bnRfaG9sZHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwor RFJPUCBUQUJMRSBob3RpZHhfcGVyaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIDExLiBMb25nIGhvdC1sb29wIFVQREFURSBzdGF5cyBjb21wYWN0IGFuZCBIT1QtaW5k ZXhlZAorLS0KKy0tIEEgbG9uZyBydW4gb2YgSE9ULWluZGV4ZWQgVVBEQVRFcyB0byBhIHNp bmdsZSByb3cgc3RheXMgY29tcGFjdDogcHJ1bmUKKy0tIGNvbGxhcHNlcyBlYWNoIGRlYWQg dmVyc2lvbiB0byBhIHJlZGlyZWN0IHRvIHRoZSBsaXZlIHR1cGxlIGFuZCByZXVzZXMgaXRz CistLSBzbG90LCBzbyB0aGUgaGVhcCBzdGF5cyBib3VuZGVkIGFuZCB0aGUgY2hhaW4gZG9l cyBub3QgZ3JvdyB1bmJvdW5kZWQuCistLSBFdmVyeSBVUERBVEUgdGhhdCBjaGFuZ2VzIHRo ZSBpbmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVyIGluZGV4LAorLS0gaGVyZSB0 aGUgUEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jaGFpbmNhcCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7 CitDUkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04gaGlfY2hhaW5jYXAoYSk7CitJ TlNFUlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworRE8gJCQKK0RFQ0xBUkUK KyAgICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAg ICBVUERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQg TE9PUDsKK0VORCAkJDsKKy0tIEFmdGVyIDIwMCBVUERBVEVzIHRoZSByb3cncyB2YWx1ZSBp cyAyMDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWluY2FwIFdIRVJFIGlkID0gMTsKKyAgYSAg CistLS0tLQorIDIwMAorKDEgcm93KQorCistLSBFdmVyeSBVUERBVEUgdG9vayB0aGUgSE9U LWluZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlzIHVuY2hhbmdlZCwgc28gaXQgaXMKKy0t IHNraXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWR2YW5jZWQuCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhv dF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdo aV9jaGFpbmNhcCcpOworIGhvdF9pbmRleGVkX2ZpcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworLS0gVGhlIGhlYXAgc3RheWVkIGNvbXBhY3Q6IHBydW5lK2Nv bGxhcHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28gdGhlCistLSBzaW5nbGUg bGl2ZSByb3cgc3RheXMgd2l0aGluIGEgY291cGxlIG9mIHBhZ2VzLiAgcGdfcmVsYXRpb25f c2l6ZSByZWZsZWN0cworLS0gdGhlIHRhYmxlJ3MgYWN0dWFsIGN1cnJlbnQgc2l6ZSByZWdh cmRsZXNzIG9mIHZhY3V1bS9hbmFseXplIHN0YXRzLCB1bmxpa2UKKy0tIHBnX2NsYXNzLnJl bHBhZ2VzICh3aGljaCBpcyBvbmx5IHVwZGF0ZWQgYnkgVkFDVVVNL0FOQUxZWkUgYW5kIHdv dWxkIGJlCistLSB0cml2aWFsbHkgPD0gMSBvbiB0aGlzIG5ldmVyLXZhY3V1bWVkIHRhYmxl IGV2ZW4gaWYgcHJ1bmluZyBoYWQgZmFpbGVkIGFuZAorLS0gdGhlIGhlYXAgaGFkIGJhbGxv b25lZCkuCitTRUxFQ1QgcGdfcmVsYXRpb25fc2l6ZSgnaGlfY2hhaW5jYXAnKSA8PSA4MTky ICogMiBBUyBoZWFwX3N0YXllZF9jb21wYWN0OworIGhlYXBfc3RheWVkX2NvbXBhY3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfY2hh aW5jYXA7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDEyLiBSZWNsYW1hdGlvbiBv ZiBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBieSBwcnVuZQorLS0KKy0tIEEgZGVh ZCBIT1QtaW5kZXhlZCBjaGFpbiBtZW1iZXIgaXMgcHJlc2VydmVkIGF0IHBydW5lIHRpbWUg KGl0cyBzdGFsZSBsZWFmCistLSBtYXkgc3RpbGwgZXhpc3QpIGFuZCB0aGUgY2hhaW4gY29s bGFwc2VzIHRvIGFuIExQX1JFRElSRUNUIGZvcndhcmRlcjsgdGhlCistLSBpbmRleCBjbGVh bnVwIHBhc3MgdGhlbiBzd2VlcHMgdGhlIHN0YWxlIGxlYWYsIGFuZCBhIGxhdGVyIFZBQ1VV TSByZWNsYWltcworLS0gdGhlIG5vdy11bnJlZmVyZW5jZWQgbWVtYmVyIGFuZCByZS1wb2lu dHMgdGhlIHJlZGlyZWN0IG9uY2UgaXQgZmFsbHMgYmVsb3cKKy0tIHRoZSBnbG9iYWwgeG1p biBob3Jpem9uLiAgV2UgYXNzZXJ0IG9ubHkgdGhhdCB0aGUgY2hhaW4gY29sbGFwc2VzCist LSAobl9jaGFpbnMgPSAwKTogdGhhdCBpcyB0aGUgZGV0ZXJtaW5pc3RpYyBwcm9vZiB0aGUg bWVjaGFuaXNtIHdvcmtlZC4gIFRoZQorLS0gZmluYWwgbWVtYmVyJ3MgcmVjbGFpbSAobl9o b3RfaW5kZXhlZCByZWFjaGluZyAwKSBhZGRpdGlvbmFsbHkgcmVxdWlyZXMgdGhlCistLSBk ZWxldGVkIHR1cGxlIHRvIGZhbGwgYmVsb3cgdGhlIGdsb2JhbCB4bWluIGhvcml6b24sIHdo aWNoIGEgc25hcHNob3QgaGVsZAorLS0gZWxzZXdoZXJlIGluIHRoZSBydW5uaW5nIHJlZ3Jl c3Npb24gY2x1c3RlciBjYW4gZGVsYXkgaW5kZWZpbml0ZWx5IC0tIHNvIHdlCistLSBkbyBu b3QgYXNzZXJ0IGFuIGV4YWN0IG5faG90X2luZGV4ZWQgaGVyZSAoYXV0b3ZhY3V1bV9lbmFi bGVkIGlzIG9mZiBvbmx5IHRvCistLSBrZWVwIG91ciBvd24gVkFDVVVNcyBmcm9tIGJlaW5n IHNraXBwZWQgb24gYSBzdG9sZW4gbG9jaykuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQg PSBmYWxzZSk7CitDUkVBVEUgSU5ERVggaGlfcmVjbGFpbV9hX2lkeCBPTiBoaV9yZWNsYWlt KGEpOworSU5TRVJUIElOVE8gaGlfcmVjbGFpbSBWQUxVRVMgKDEsIDEwMCk7CistLSBHZW5l cmF0ZSBhIGNvbGxhcHNlZCBjaGFpbiB2aWEgYSBIT1QtaW5kZXhlZCB1cGRhdGUuCitVUERB VEUgaGlfcmVjbGFpbSBTRVQgYSA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qgbl9ob3Rf aW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0KKyAg RlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworIGhv dF9pbmRleGVkX3ByZXNlbnRfYmVmb3JlX3JlY2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIERlbGV0ZSB0aGUgbGl2ZSB0 dXBsZS4gIFRoZSBmaXJzdCBWQUNVVU0gY29sbGFwc2VzIHRoZSBkZWFkIGNoYWluIGFuZCBz d2VlcHMKKy0tIHRoZSBzdGFsZSBsZWFmOyBhIGxhdGVyIFZBQ1VVTSByZWNsYWltcyB0aGUg bm93LXVucmVmZXJlbmNlZCBtZW1iZXIgb25jZSBpdAorLS0gZmFsbHMgYmVsb3cgdGhlIGds b2JhbCB4bWluIGhvcml6b24uICBBc3NlcnQgb25seSB0aGUgZGV0ZXJtaW5pc3RpYworLS0g Y29sbGFwc2UgKG5fY2hhaW5zID0gMCk7IHRoZSBtZW1iZXItcmVjbGFpbSBjb3VudCBpcyBo b3Jpem9uLWRlcGVuZGVudCBhbmQKKy0tIG5vdCBzb21ldGhpbmcgYSByZWdyZXNzIHRlc3Qg Y2FuIHBpbiBkb3duLgorREVMRVRFIEZST00gaGlfcmVjbGFpbSBXSEVSRSBpZCA9IDE7CitW QUNVVU0gaGlfcmVjbGFpbTsKK1ZBQ1VVTSBoaV9yZWNsYWltOworU0VMRUNUIG5fY2hhaW5z ID0gMCBBUyBjaGFpbl9jb2xsYXBzZWRfYWZ0ZXJfcmVjbGFpbQorICBGUk9NIHBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNsYWltJyk7CisgY2hhaW5fY29sbGFwc2Vk X2FmdGVyX3JlY2xhaW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3JlY2xhaW07CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDEzLiBQYWdlIHdpdGggYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVy IGlzIG5ldmVyIG1hcmtlZCBhbGwtdmlzaWJsZQorLS0KKy0tIHBydW5laGVhcCBkZWxpYmVy YXRlbHkgbGVhdmVzIFBEX0FMTF9WSVNJQkxFIGNsZWFyIG9uIGFueSBwYWdlIHRoYXQgc3Rp bGwKKy0tIGNhcnJpZXMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyOiBhbiBpbmRl eC1vbmx5IHNjYW4gbXVzdCBoZWFwLWZldGNoCistLSB0aHJvdWdoIHRoZSBjaGFpbiBzbyB0 aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyIHN0YWxl IGJ0cmVlCistLSBlbnRyaWVzLgorLS0KKy0tIFdlIGZvcmNlIHRoZSBmcmVlemUgcGF0aCB3 aXRoIFZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGFuZAorLS0gdGhl biByZWFkIHBkX2ZsYWdzIHZpYSBwYWdlaW5zcGVjdC5wYWdlX2hlYWRlci4gIFRoZSBwYWdl IG11c3Qgc3RpbGwgY2FycnkKKy0tIGEgSE9ULWluZGV4ZWQgbWVtYmVyIChuX2hvdF9pbmRl eGVkID4gMCkgQU5EIG11c3Qgbm90IGhhdmUgUERfQUxMX1ZJU0lCTEUKKy0tICgweDAwMDQp LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdm0gKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0g NTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV92bV9h X2lkeCBPTiBoaV92bShhKTsKK0lOU0VSVCBJTlRPIGhpX3ZtIFZBTFVFUyAoMSwgMSk7Cist LSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBsZWF2ZSBhIG11bHRpLWhvcCBjaGFpbiwgc28g YSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQKKy0tIG1lbWJlciByZW1haW5zIG9uIHRoZSBwYWdl IGFmdGVyIHBydW5lLCB3aGljaCBpcyB3aGF0IHRoaXMgdGVzdCBuZWVkcy4KK1VQREFURSBo aV92bSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3ZtIFNFVCBhID0gMyBX SEVSRSBpZCA9IDE7CistLSBGb3JjZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBW QUNVVU0gd2l0aCBESVNBQkxFX1BBR0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBw YWdlOyBGUkVFWkUgcHVzaGVzIGhpbnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55Cist LSBwYWdlIGJlYXJpbmcgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3Rp bGwgcmVwb3J0IGFsbF92aXNpYmxlID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BB R0VfU0tJUFBJTkcpIGhpX3ZtOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3Rf aW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMo J2hpX3ZtJyk7CisgaG90X2luZGV4ZWRfcHJlc2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworLS0gUERfQUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJl IDAgb24gYSBwYWdlIHdpdGggYSBwcmVzZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAm IDQpID0gMCBBUyBub3RfbWFya2VkX2FsbF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIo Z2V0X3Jhd19wYWdlKCdoaV92bScsIDApKTsKKyBub3RfbWFya2VkX2FsbF92aXNpYmxlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhp X3ZtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVw OiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBhIHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJl bmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAgb3IgaW5kZXggZW50cmllczsgaXQgb25seSB1 cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRoZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVz dCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRlCistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5k ZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJlIGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBu b3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRlciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBp ZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVlbnQgVVBEQVRFIG11c3QgY29udGludWUgdG8g ZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3lj bGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMg KDEsIDEwMCk7CistLSBDeWNsZSB0aGUgY29sdW1uIG5hbWUgYW5kIGNvbmZpcm0gYm90aCBp bnRlcm1lZGlhdGUgZm9ybXMgZHJpdmUgSE9ULWluZGV4ZWQuCitBTFRFUiBUQUJMRSBoaV9j eWNsZSBSRU5BTUUgQ09MVU1OIGEgVE8gYjsKK1VQREFURSBoaV9jeWNsZSBTRVQgYiA9IDIw MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVy X2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUnKTsKKyBob3Rf aW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHQKKygxIHJvdykKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENP TFVNTiBiIFRPIGE7CitVUERBVEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAx OworLS0gTG9va3VwIHZpYSB0aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwg bm90IGFueSBvZiB0aGUKKy0tIHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsK KyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAgMSB8IDMwMAorKDEgcm93KQorCitTRUxFQ1Qg aWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykK KworU0VMRUNUIGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9jeWNs ZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkg Y29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hl biBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhl IGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5 IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMK Ky0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwg aXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVu Y2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jy aW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4g VVNJTkcgYnJpbihiY29sKTsKK0lOU0VSVCBJTlRPIGhpX2JyaW4gVkFMVUVTICgxLCAxMDAp OworLS0gQ2FwdHVyZSB0aGUgSE9ULWluZGV4ZWQgY291bnRlciBiZWZvcmUsIGRyaXZlIGEg QlJJTi1vbmx5IHVwZGF0ZSwKKy0tIGFuZCBhc3NlcnQgdGhhdCBjbGFzc2ljIEhPVCBhZHZh bmNlZCB3aGlsZSBIT1QtaW5kZXhlZCBkaWQgbm90LgorU0VMRUNUIHBnX3N0YXRfZm9yY2Vf bmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9p ZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBo aV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKGhvdCAtIDApID4g MCBBUyBjbGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVm b3JlIEFTIGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgn aGlfYnJpbicpOworIGNsYXNzaWNfaG90X2ZpcmVkIHwgaG90X2luZGV4ZWRfZGlkX25vdF9m aXJlIAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSBUaGUgQlJJTiBpbmRleCBz ZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5zZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9i cmluIFdIRVJFIGlkID0gMTsKKyBiY29sIAorLS0tLS0tCisgIDIwMAorKDEgcm93KQorCitE Uk9QIFRBQkxFIGhpX2JyaW47CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBV TklRVUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9y IGVxdWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVy IHRoZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFn ZXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZy ZXNoIGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxl YWYgZm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3Mg ayBjaGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFn ZS1iYXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQor LS0gb3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUg dW5pcXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZy ZXNoIGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRl ciBpdCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWlu ZSBjb25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNl IHRoZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0 dHJpYnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3Vu dW0gKGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAy bmQgaW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVF UyAoMS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAx MDA7ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9p bmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKyBtYWRlX2hvdF9pbmRleGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBBIG51bWVyaWNhbGx5LWVxdWFsIGlu c2VydCBtdXN0IGNvbmZsaWN0ICh0aGUgZnJlc2ggbGVhZiBjYXRjaGVzIGl0KToKK0lOU0VS VCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEpOyAgICAgICAgICAgICAgLS0gZXhwZWN0 IGR1cGxpY2F0ZSBrZXkgZXJyb3IKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9s YXRlcyB1bmlxdWUgY29uc3RyYWludCAiaGlfdW51bV9rX2tleSIKK0RFVEFJTDogIEtleSAo ayk9KDEuMCkgYWxyZWFkeSBleGlzdHMuCistLSBBIGdlbnVpbmVseSBkaWZmZXJlbnQgdmFs dWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMi4wLCAyKTsK K1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRFUiBCWSBqOworICBrICAgfCAgaiAgCist LS0tLS0rLS0tLS0KKyAgMi4wIHwgICAyCisgMS4wMCB8IDEwMAorKDIgcm93cykKKworRFJP UCBUQUJMRSBoaV91bnVtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JF QVRFIElOREVYIGFuZCBSRUlOREVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0t CistLSBBIGZyZXNobHkgYnVpbHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3Vy cmVudCB2YWx1ZXMsIG5ldmVyIGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxk IHNjYW5zIGxpdmUgdHVwbGVzIG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhl ZCBsaXZlIHR1cGxlJ3MgZW50cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmll cyBoYXZlIG5vCistLSBob3AgYWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBrZWVwcyB0aGVtLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUg VEFCTEUgaGlfcmVpbmRleCAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhp X3JlaW5kZXgoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9 IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBo aV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4g bG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRl eCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSBy b3cpCisKKy0tIEJ1aWxkIGEgTkVXIGluZGV4IGFuZCBSRUlOREVYIHRoZSBleGlzdGluZyBv bmUgb3ZlciB0aGUgbGl2ZSBjaGFpbnMuCitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9iIE9O IGhpX3JlaW5kZXgoYik7CitSRUlOREVYIElOREVYIGhpX3JlaW5kZXhfYTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlaW5kZXggV0hFUkUg YSA9IDIwNDsgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBpZCA0CisgaWQgfCAgYSAgCist LS0tKy0tLS0tCisgIDQgfCAyMDQKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEZST00g aGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisg Y291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlf cmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hseSBidWlsdCBp bmRleCAtPiAyCisgaWQgCistLS0tCisgIDIKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CitEUk9QIFRBQkxFIGhpX3JlaW5kZXg7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFp bnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMgYXJlIGRyb3BwZWQs IGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0gSE9ULWluZGV4ZWQg bWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBvZiBzdWNoIGEgbm8t aW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUgd2l0aG91dCBlcnJvciwgYW5kIHJl YWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0IGZvcndhcmRlcnMu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9kcm9waWR4IChp ZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92 YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9kcm9waWR4X2EgT04g aGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VMRUNUIGcsIGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9waWR4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBEQVRFIGhp X2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2FpbiAtPiBs b25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9ob3RfaW5k ZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9kcm9waWR4 Jyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworLS0gRHJvcCBldmVyeSBpbmRleCwgbGVhdmluZyBwcmVzZXJ2ZWQgSE9ULWluZGV4 ZWQgbWVtYmVycyB3aXRoIG5vIGluZGV4IHRvIHN3ZWVwLgorRFJPUCBJTkRFWCBoaV9kcm9w aWR4X2E7CitBTFRFUiBUQUJMRSBoaV9kcm9waWR4IERST1AgQ09OU1RSQUlOVCBoaV9kcm9w aWR4X3BrZXk7CistLSBNdXN0IG5vdCBjcmFzaCBvbiB0aGUgbm8taW5kZXggcGF0aDsgdHdv IHBhc3NlcyBleGVyY2lzZSB0aGUgc2Vjb25kLXBhc3MKKy0tIHJlY2xhaW0gZ3VhcmQgYXMg d2VsbC4KK1ZBQ1VVTSBoaV9kcm9waWR4OworVkFDVVVNIGhpX2Ryb3BpZHg7CistLSBSZWFk cyByZW1haW4gY29ycmVjdCBhZnRlciB0aGUgaW5kZXhlcyBhcmUgZ29uZS4KK1NFTEVDVCBp ZCwgYSBGUk9NIGhpX2Ryb3BpZHggT1JERVIgQlkgaWQ7CisgaWQgfCAgYSAgCistLS0tKy0t LS0tCisgIDEgfCAyMDEKKyAgMiB8IDIwMgorICAzIHwgMjAzCisgIDQgfCAyMDQKKyAgNSB8 IDIwNQorICA2IHwgMjA2CisoNiByb3dzKQorCitEUk9QIFRBQkxFIGhpX2Ryb3BpZHg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE5LiBSZS1jb2xsYXBzZSBvZiBhIGRhdGEt cmVkaXJlY3QgY2hhaW4gYWNyb3NzIHBhcnRpYWwgVkFDVVVNcworLS0KKy0tIEEgY2hhaW4g dGhhdCBjb2xsYXBzZXMgdG8gYSBIT1QtaW5kZXhlZCBkYXRhIHJlZGlyZWN0LCBpcyB2YWN1 dW1lZCB3aXRoCistLSBJTkRFWF9DTEVBTlVQIG9mZiAoc28gdGhlIHN0YWxlIGxlYXZlcyBh bmQgdGhlIHJlZGlyZWN0IHN1cnZpdmUpLCB0aGVuCistLSByZWNlaXZlcyBmdXJ0aGVyIEhP VC1pbmRleGVkIHVwZGF0ZXMgdGhhdCByZS1jb2xsYXBzZSB0aGUgY2hhaW4gYW5kCistLSBy ZS1wb2ludCB0aGUgcmVkaXJlY3QgYXQgYSBuZXcgbGl2ZSB0dXBsZSwgbXVzdCBub3QgbGVh dmUgdGhlIHJlZGlyZWN0CistLSBkYW5nbGluZy4gIEEgc3Vic2VxdWVudCBmdWxsIFZBQ1VV TSBtdXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJyb3IsIGxlYXZlIHRoZQorLS0gaGVhcCBjb25z aXN0ZW50ICh2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgbm90aGluZyksIGFuZCByZWFkcyBtdXN0 IHN0YXkKKy0tIGNvcnJlY3QuICAoUmVncmVzc2lvbjogYW4gZWFybGllciByZXZpc2lvbiBj cmFzaGVkIHJlY2xhaW1pbmcgYSBtaWQtY2hhaW4KKy0tIG1lbWJlciB3aGlsZSBhIGRhdGEg cmVkaXJlY3Qgc3RpbGwgcG9pbnRlZCBwYXN0IGl0LikKKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hlY2s7CitDUkVBVEUg VEFCTEUgaGlfcmVjb2xsYXBzZSAoaWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCkgV0lUSCAo ZmlsbGZhY3RvciA9IDUwLCBhdXRvdmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CitDUkVBVEUg SU5ERVggaGlfcmVjb2xsYXBzZV9hIE9OIGhpX3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5U TyBoaV9yZWNvbGxhcHNlIFZBTFVFUyAoMSwgMSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhP VC1pbmRleGVkIHVwZGF0ZXMsIHRoZW4gcHJ1bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxl CistLSBsZWF2aW5nIHRoZSBzdGFsZSBidHJlZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NM RUFOVVAgb2ZmKS4KK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9 IDE7CitVUERBVEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFD VVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNl OiBtb3JlIEhPVC1pbmRleGVkIHVwZGF0ZXMgZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSBy ZWRpcmVjdAorLS0gdGFyZ2V0OyB0aGUgbmV4dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEg cmVkaXJlY3QgYXQgdGhlIG5ldyBmaXJzdCBsaXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBp dHMgdW5pb24uCitVUERBVEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAx OworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBu b3cgcmVjbGFpbXMgdGhlIGRlYWQgY2hhaW47IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11 c3Qgbm90CistLSBkYW5nbGUuICBUd28gcGFzc2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGly ZWN0IHJlLXBvaW50IHNlY29uZCBwYXNzLgorVkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNV VU0gaGlfcmVjb2xsYXBzZTsKKy0tIEhlYXAgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lz dGVudCAobm8gcm93cyA9PSBubyBjb3JydXB0aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5 X2hlYXBhbSgnaGlfcmVjb2xsYXBzZScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwg bXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBz ZSBXSEVSRSBhID0gNTsgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgMQorIGlkIHwgYSAK Ky0tLS0rLS0tCisgIDEgfCA1CisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhp X3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAtLSBvYnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291 bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9yZWNvbGxhcHNlIE9SREVSIEJZIGlkOworIGlkIHwg YSAKKy0tLS0rLS0tCisgIDEgfCA1CisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfcmVjb2xs YXBzZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9u IG92ZXIgYW4gZW50cnkgdGhhdCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0t CistLSBBIGRhdGEgcmVkaXJlY3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEg Yml0bWFwLCBzbyBpdCByZXBvcnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdl IHRydWUpIGV2ZW4gdGhvdWdoIGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4 X2RlbGV0ZV9jaGVja19odGlkIG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJl YWQgaXRzIGJsb2IgYXMgYQorLS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xs YXBzZSBhIGNoYWluIHJvb3QgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5n IHRoZSBzdGFsZSBsZWFmIHRoYXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiks IHRoZW4gaW5zZXJ0CistLSBtYW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBi dHJlZSBib3R0b20tdXAgZGVsZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVw bGVzIG92ZXIgdGhhdCBzdGFsZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhpX2lkZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9p ZGRlbF9hIE9OIGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgx LCAxKTsKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAg ICAgICAgLS0gSE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdI RVJFIGlkID0gMTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVY X0NMRUFOVVAgb2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0 YSByZWRpcmVjdCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9m IHRoZSBzdGFsZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0t IGRlbGV0aW9uLCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRo ZSBkYXRhLXJlZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMu ICBNdXN0IG5vdCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlf aWRkZWwgU0VMRUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZB Q1VVTSBoaV9pZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwn KTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsK K1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAg LS0gY3VycmVudCB2YWx1ZSAtPiBhID0gMworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCAz CisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9pZGRl bDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjEuIEEgY2hhbmdlIHRvIGEgY29s dW1uIGNvdmVyZWQgYnkgYSBub24tYnRyZWUgaW5kZXggQU0gaXMgSE9ULWluZGV4ZWQKKy0t CistLSBBIEhPVC1pbmRleGVkIHVwZGF0ZSBsZWF2ZXMgYSBzdGFsZSBwcmUtdXBkYXRlIGxl YWYgdGhhdCB0aGUgcmVhZCBzaWRlCistLSBmaWx0ZXJzIHZpYSB0aGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwLCB3aGljaCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljLgorLS0gQSBj b2x1bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCAoaGVyZSBhIEdpU1QgaW5kZXgg b24gYSBwb2ludCBjb2x1bW4pCistLSBpcyB0aGVyZWZvcmUgSE9ULWluZGV4ZWQgbGlrZSBh bnkgb3RoZXIsIGFuZCB0aGUgR2lTVCBpbmRleCBzdGlsbCByZXR1cm5zCistLSBjb3JyZWN0 IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4gIEEgY2hhbmdlIHRvIGEgYnRyZWUtb25seSBj b2x1bW4gb24gdGhlCistLSBzYW1lIHRhYmxlIGlzIGxpa2V3aXNlIEhPVC1pbmRleGVkLgor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbm9uYnRyZWUgKGlk IGludCBQUklNQVJZIEtFWSwgdGFnIGludCwgcCBwb2ludCkKKyAgICBXSVRIIChmaWxsZmFj dG9yID0gMTApOworQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3RhZyBPTiBoaV9ub25idHJl ZSAodGFnKTsgICAgICAgICAgLS0gYnRyZWUgaW5kZXgKK0NSRUFURSBJTkRFWCBoaV9ub25i dHJlZV9wIE9OIGhpX25vbmJ0cmVlIFVTSU5HIGdpc3QgKHApOyAgIC0tIEdpU1QsIG5vbi1i dHJlZQorSU5TRVJUIElOVE8gaGlfbm9uYnRyZWUgU0VMRUNUIGcsIGcsIHBvaW50KGcsIGcp CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gQ2hhbmdlIHRoZSBH aVNULWNvdmVyZWQgY29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCku CitVUERBVEUgaGlfbm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSAr IDEwMDApOworU0VMRUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBn ZXRfaGlfY291bnQoJ2hpX25vbmJ0cmVlJyk7CisgZ2lzdF9jb2xfaG90X2luZGV4ZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAyMDAKKygxIHJvdykK KworLS0gVGhlIEdpU1QgaW5kZXggbXVzdCByZXR1cm4gY29ycmVjdCByZXN1bHRzOiB0aGUg b2xkIHBvc2l0aW9ucyBhcmUgZ29uZSBhbmQKKy0tIGV2ZXJ5IHJvdyBpcyBmb3VuZCBhdCBp dHMgbmV3IHBvc2l0aW9uIChubyBzdGFsZSBsZWFmIHN1cmZhY2VzIGFuIG9sZCBrZXkpLgor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGF0X29sZF9w b3NpdGlvbnMKKyAgICBGUk9NIGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAgYm94KHBvaW50KDAs IDApLCBwb2ludCgzMDAsIDMwMCkpOworIGF0X29sZF9wb3NpdGlvbnMgCistLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgq KSBBUyBhdF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxA IGJveChwb2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworIGF0X25ld19w b3NpdGlvbnMgCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMjAwCisoMSBy b3cpCisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworLS0gQ2hhbmdpbmcgdGhlIGJ0cmVlLW9u bHkgY29sdW1uIChwIHVuY2hhbmdlZCkgc3RheXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaGlf bm9uYnRyZWUgU0VUIHRhZyA9IHRhZyArIDEwMDA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMg YnRyZWVfY29sX2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJl ZScpOworIGJ0cmVlX2NvbF9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMi4gQUJBIG9uIGEgdW5pcXVlIGtleSBhY3Jvc3Mg dHdvIGRpc3RpbmN0IGxpdmUgcm93czogYSBrZXkgY3ljbGVkIGF3YXkKKy0tIGFuZCBiYWNr IG11c3Qgc3RpbGwgY29sbGlkZSB3aXRoIGFub3RoZXIgcm93IHRoYXQgaG9sZHMgaXQuICBU aGUgc3RhbGUKKy0tIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZSBtdXN0IG5vdCBsZXQgYSBn ZW51aW5lIGR1cGxpY2F0ZSBzbGlwIHBhc3QgdGhlCistLSB1bmlxdWVuZXNzIGNoZWNrIC0t IHRoZSByZWFkLXNpZGUgcmVjaGVjayBjb21wYXJlcyB0aGUgbGl2ZSBrZXksIG5vdCBqdXN0 CistLSBhIGNoYW5nZWQtYXR0cmlidXRlIGJpdG1hcC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX2FiYSAoayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaV9hYmFfayBPTiBoaV9hYmEgKGsp OworQ1JFQVRFIElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQgSU5UTyBo aV9hYmEgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7CistLSBDeWNsZSByb3cxJ3MgdW5pcXVl IGtleSAxIC0+IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9U LWluZGV4ZWQgYW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFU RSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsg PSAxIFdIRVJFIHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2lu ZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2FiYScpOworIGN5Y2xlZF9ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSByb3cxIGlzIGxp dmUgYXQgayA9IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRvIGsgPSAxIG11c3QgcmFpc2Ug YSB1bmlxdWUKKy0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBzdGFsZSAnMScgbGVhdmVzIGZy b20gdGhlIGN5Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDIwOwor RVJST1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50 ICJoaV9hYmFfayIKK0RFVEFJTDogIEtleSAoayk9KDEpIGFscmVhZHkgZXhpc3RzLgorRFJP UCBUQUJMRSBoaV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0 aWFsIGluZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4u ICBGbGlwcGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2 aW5nIHRoZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUg cHJlZGljYXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQs IHNvCistLSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3Rh bGUgcGFydGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBp cyBpbnZvbHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9wYXJ0cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4p CisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJl ZF9rIE9OIGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9w YXJ0cHJlZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CistLSBGbGlwIHRoZSBwcmVkaWNhdGUg Y29sdW1uICdhY3RpdmUnIHRydWUgLT4gZmFsc2U7IHRoZSBpbmRleCBrZXkgayBpcworLS0g dW5jaGFuZ2VkLiAgVGhlIHJvdyBubyBsb25nZXIgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUs IHNvIGl0cyBwYXJ0aWFsLWluZGV4CistLSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQsIG5vdCBs ZWZ0IHBvaW50aW5nIGludG8gdGhlIGNoYWluLgorVVBEQVRFIGhpX3BhcnRwcmVkIFNFVCBh Y3RpdmUgPSBmYWxzZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdCwgaG90X2lkeCBGUk9NIGdl dF9oaV9jb3VudCgnaGlfcGFydHByZWQnKTsKKyBob3QgfCBob3RfaWR4IAorLS0tLS0rLS0t LS0tLS0tCisgICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgcGFydGlhbCBpbmRl eCBtdXN0IG5vdCBzdXJmYWNlIHRoZSByb3cgbm93IHRoYXQgYWN0aXZlID0gZmFsc2UuCist LSBBIHF1ZXJ5IHdob3NlIHF1YWwgZXhhY3RseSBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRp Y2F0ZSB1c2VzIHRoZSBpbmRleAorLS0gd2l0aG91dCByZS1maWx0ZXJpbmcgJ2FjdGl2ZScg b24gdGhlIGhlYXAsIHNvIGEgc3RhbGUgZW50cnkgd291bGQgc3VyZmFjZS4KK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgYWN0aXZl OworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXgg U2NhbiB1c2luZyBoaV9wYXJ0cHJlZF9rIG9uIGhpX3BhcnRwcmVkCisoMSByb3cpCisKK1NF TEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFjdGl2ZTsKKyBp ZCAKKy0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJF IGFjdGl2ZTsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRwcmVkOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAg UmVwZWF0ZWQgdXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0t IG9mIGNvbHVtbiBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1l bWJlcnMgd2hvc2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWlu KSBhbmQga2VlcHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJv b3QgcmVkaXJlY3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2Fs ayBjcm9zc2VzIG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5k ZXggYW5kIGFtY2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFw c2UsIGFuZCBhIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdp dGhvdXQgc2V2ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQs IGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZh bHNlKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2EgT04gaGlfc3R1Ym1peCAoYSk7CitD UkVBVEUgSU5ERVggaGlfc3R1Ym1peF9iIE9OIGhpX3N0dWJtaXggKGIpOworSU5TRVJUIElO VE8gaGlfc3R1Ym1peCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX3N0dWJtaXgg U0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7ICAgLS0gY2hhbmdlcyBhCitVUERBVEUgaGlfc3R1 Ym1peCBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2VzIGEgYWdhaW4gKHN1 cGVyc2VkZXMpCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYiA9IDEwMSBXSEVSRSBpZCA9IDE7 ICAtLSBjaGFuZ2VzIGIKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VUIGVuYWJsZV9zZXFzY2Fu ID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhLCBi IEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTI7ICAgLS0gY3VycmVudCBhCisgaWQgfCBh ICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTIgfCAxMDEKKygxIHJvdykKKwor U0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBiID0gMTAxOyAgLS0gY3Vy cmVudCBiCisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTIgfCAx MDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTA7 ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dzKQorCitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU ICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVw dGlvbiBhY3Jvc3Mgc3R1YnMKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKKy0tIEEgc2Vjb25k IHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rpbmcgc3R1YnMgKG5vIHByaW9yWG1heCBzZXZl cikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDEzIFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBh ID0gMTM7CisgaWQgfCBhICB8ICBiICAKKy0tLS0rLS0tLSstLS0tLQorICAxIHwgMTMgfCAx MDEKKygxIHJvdykKKworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4 Jyk7CisgYmxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3N0dWJtaXg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI1LiBFeGNsdXNpb24tY29uc3RyYWludCB0 YWJsZXMgYXJlIEhPVC1pbmRleGVkLWVsaWdpYmxlLgorLS0KKy0tIEFuIGV4Y2x1c2lvbiBj b25zdHJhaW50IGlzIGVuZm9yY2VkIGJ5IGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29u c3RyYWludCwKKy0tIHdoaWNoIHJlY2hlY2tzIGVhY2ggY2FuZGlkYXRlIGFnYWluc3QgdGhl IGxpdmUgdHVwbGUncyBjdXJyZW50IGluZGV4LWZvcm0KKy0tIHdpdGggdGhlIGNvbnN0cmFp bnQncyBvd24gb3BlcmF0b3JzLCBzbyBhIHN0YWxlIGVudHJ5IGxlZnQgYnkgYSBIT1QtaW5k ZXhlZAorLS0gdXBkYXRlIGlzIHNraXBwZWQgd2hpbGUgdGhlIGxpdmUga2V5IGFsd2F5cyBo YXMgaXRzIG93biBlbnRyeS4gIFVwZGF0aW5nIGEKKy0tIG5vbi1jb25zdHJhaW5lZCBpbmRl eGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCAodGhlIEdpU1QgZXhjbHVzaW9uIGluZGV4IGlz CistLSBza2lwcGVkKSwgYW5kIHRoZSBjb25zdHJhaW50IHN0YXlzIGNvcnJlY3QuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9leGNsICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgdGFnIGludCwKKyAgICBkdXJpbmcgaW50NHJhbmdlLAor ICAgIEVYQ0xVREUgVVNJTkcgZ2lzdCAoZHVyaW5nIFdJVEggJiYpCispIFdJVEggKGZpbGxm YWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfZXhjbF90YWcgT04gaGlfZXhjbCh0YWcp OworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDEsIDEwMCwgaW50NHJhbmdlKDEsIDEw KSksICgyLCAyMDAsIGludDRyYW5nZSgyMCwgMzApKTsKKy0tIFVwZGF0ZSBhIG5vbi1jb25z dHJhaW5lZCBpbmRleGVkIGNvbHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGlu ZGV4CistLSBhbmQgUEsgc2tpcHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQg aXMgc3RpbGwgZW5mb3JjZWQuCitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfZXhjbCcpOworIHRhZ191cGRhdGVfaG90X2lu ZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0lOU0VS VCBJTlRPIGhpX2V4Y2wgVkFMVUVTICgzLCAzMDAsIGludDRyYW5nZSg1LCAxNSkpOyAgLS0g b3ZlcmxhcHMgaWQ9MSdzICgxLDEwKQorRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUg dmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgImhpX2V4Y2xfZHVyaW5nX2V4Y2wiCitE RVRBSUw6ICBLZXkgKGR1cmluZyk9KFs1LDE1KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChkdXJpbmcpPShbMSwxMCkpLgorLS0gTW92ZSBpZD0xJ3MgcmFuZ2UgYXdheSAodGhp cyB1cGRhdGVzIHRoZSBHaVNUIGluZGV4LCBsZWF2aW5nIGEgc3RhbGUgZW50cnkKKy0tIGZv ciB0aGUgb2xkICgxLDEwKSByYW5nZSkuICBBIHJhbmdlIG92ZXJsYXBwaW5nIG9ubHkgdGhl IE9MRCByYW5nZSBub3cKKy0tIGluc2VydHMgY2xlYW5seSAodGhlIHN0YWxlIGVudHJ5IGlz IHNraXBwZWQpOyBvbmUgb3ZlcmxhcHBpbmcgdGhlIE5FVyByYW5nZQorLS0gc3RpbGwgY29u ZmxpY3RzLgorVVBEQVRFIGhpX2V4Y2wgU0VUIGR1cmluZyA9IGludDRyYW5nZSgxMDAsIDEx MCkgV0hFUkUgaWQgPSAxOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDQsIDQwMCwg aW50NHJhbmdlKDUsIDE1KSk7ICAgLS0gb25seSBvdmVybGFwcGVkIG9sZCByYW5nZTogT0sK K0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICg1LCA1MDAsIGludDRyYW5nZSgxMDUsIDEx NSkpOy0tIG92ZXJsYXBzIG5ldyAoMTAwLDExMCk6IGNvbmZsaWN0CitFUlJPUjogIGNvbmZs aWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhj bF9kdXJpbmdfZXhjbCIKK0RFVEFJTDogIEtleSAoZHVyaW5nKT0oWzEwNSwxMTUpKSBjb25m bGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGR1cmluZyk9KFsxMDAsMTEwKSkuCitEUk9QIFRB QkxFIGhpX2V4Y2w7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBUT0FTVCBp bnRlcmFjdGlvbi4gIEFuIGluZGV4ZWQgY29sdW1uIHN0b3JlZCBvdXQtb2YtbGluZSBtdXN0 IGJlaGF2ZQorLS0gY29ycmVjdGx5IGFjcm9zcyBIT1QtaW5kZXhlZCB1cGRhdGVzOiBhbiBl bnRyeSBrZXB0IGFjcm9zcyBhbiB1cGRhdGUgb2YgYQorLS0gZGlmZmVyZW50IGNvbHVtbiBz dGlsbCByZXNvbHZlcyB0byB0aGUgKHVuY2hhbmdlZCkgdG9hc3RlZCB2YWx1ZSwgYW5kIGFm dGVyCistLSB0aGUgdG9hc3RlZCBjb2x1bW4gaXRzZWxmIGlzIGNoYW5nZWQgdGhlIHN0YWxl IGVudHJ5IGlzIGRyb3BwZWQgYnkgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAg KG5vIHZhbHVlIGNvbXBhcmlzb24gb3IgZGV0b2FzdGluZyBpcyBuZWVkZWQpLgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdG9hc3QgKGlkIGludCBQUklN QVJZIEtFWSwgYmlnIHRleHQsIHRhZyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitB TFRFUiBUQUJMRSBoaV90b2FzdCBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVS TkFMOyAgLS0gbm8gY29tcHJlc3Npb24KK0NSRUFURSBJTkRFWCBoaV90b2FzdF9iaWcgT04g aGlfdG9hc3QgKGJpZyk7CitDUkVBVEUgSU5ERVggaGlfdG9hc3RfdGFnIE9OIGhpX3RvYXN0 ICh0YWcpOworSU5TRVJUIElOVE8gaGlfdG9hc3QgVkFMVUVTICgxLCByZXBlYXQoJ0EnLCAy MDAwKSwgMTApOworLS0gVGhlIGJpZyB2YWx1ZSBpcyBzdG9yZWQgb3V0LW9mLWxpbmUuCitT RUxFQ1QgcGdfY29sdW1uX3NpemUoYmlnKSA+IDE1MDAgQVMgYmlnX2lzX2V4dGVybmFsIEZS T00gaGlfdG9hc3QgV0hFUkUgaWQgPSAxOworIGJpZ19pc19leHRlcm5hbCAKKy0tLS0tLS0t LS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGFn IGxlYXZlcyBiaWcgKGFuZCBpdHMgaW5kZXggZW50cnkpIHVuY2hhbmdlZC4KK1VQREFURSBo aV90b2FzdCBTRVQgdGFnID0gMTEgV0hFUkUgaWQgPSAxOworU0VMRUNUIGhvdF9pZHggPiAw IEFTIHRhZ191cGRhdGVfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RvYXN0 Jyk7CisgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCB0YWcsIGxlbmd0aChiaWcpIEZST00g aGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7CisgaWQgfCB0YWcgfCBs ZW5ndGggCistLS0tKy0tLS0tKy0tLS0tLS0tCisgIDEgfCAgMTEgfCAgIDIwMDAKKygxIHJv dykKKworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRoZSB0b2FzdGVkIGluZGV4ZWQgY29s dW1uIGl0c2VsZjogdGhlIG9sZCBlbnRyeSBpcworLS0gbm93IHN0YWxlIGJlY2F1c2UgdGhl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBzaG93cyBiaWcgY2hhbmdlZC4KK1VQREFURSBo aV90b2FzdCBTRVQgYmlnID0gcmVwZWF0KCdCJywgMjAwMCkgV0hFUkUgaWQgPSAxOworU0VM RUNUIGlkIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7ICAg LS0gc3RhbGU6IDAgcm93cworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkLCBs ZW5ndGgoYmlnKSBGUk9NIGhpX3RvYXN0IFdIRVJFIGJpZyA9IHJlcGVhdCgnQicsIDIwMDAp OyAgLS0gY3VycmVudAorIGlkIHwgbGVuZ3RoIAorLS0tLSstLS0tLS0tLQorICAxIHwgICAy MDAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3RvYXN0Jyk7Cisg Ymxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3RvYXN0OworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyNy4gQUJBIG9uIGFuIGluZGV4ZWQgY29sdW1uLiAgQSBI T1QtaW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQKKy0tIGNvbHVtbiB0byBh IHZhbHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkgaGVsZCBsZWF2ZXMgdHdv IGxlYXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNoYWluLXJlc29sdmluZyB0 byB0aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJlY2hlY2sgY2Fubm90IHRl bGwgdGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cgdHdpY2U7IHRoZQorLS0g Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBsZWFm IChpdHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5nIGhvcHMpIGFuZCBrZWVw cyBvbmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5kZXggc2NhbgorLS0gcmV0 dXJucyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVzdCBub3QgY2hhbmdlIHRo YXQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGlk IGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVgg aGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEs IDEsIDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSBpZCA9IDE7ICAgLS0g SE9ULWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUgaGlfYWJhIFNFVCBrID0g MSBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3ljbGVkIGJhY2sgKEFCQSkK K1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9m ZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlfYWJhIFdIRVJFIGsgPSAx OyAgICAgLS0gZXhhY3RseSAxCisgazFfb25jZSAKKy0tLS0tLS0tLQorICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGszX2dvbmUgRlJPTSBoaV9hYmEgV0hFUkUg ayA9IDM7ICAgICAtLSAwIChzdGFsZSBkcm9wcGVkKQorIGszX2dvbmUgCistLS0tLS0tLS0K KyAgICAgICAwCisoMSByb3cpCisKK1JFSU5ERVggSU5ERVggaGlfYWJhX2s7CitTRUxFQ1Qg Y291bnQoKikgQVMgazFfYWZ0ZXJfcmVpbmRleCBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMTsg IC0tIHN0aWxsIDEKKyBrMV9hZnRlcl9yZWluZGV4IAorLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsK K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdo aV9hYmEnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlfYWJhOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOC4gUGFydGlhbCBpbmRleCwgcHJlZGlj YXRlIGNvbHVtbiBjaGFuZ2VkIGJ1dCB0aGUgcm93IFNUQVlTIGluIHRoZSBpbmRleAorLS0g KHByZWRpY2F0ZSBzdGlsbCB0cnVlLCBrZXkgdW5jaGFuZ2VkKS4gIFRoZSB1cGRhdGUgaXMg SE9ULWluZGV4ZWQ7IHNlbGVjdGl2ZQorLS0gbWFpbnRlbmFuY2UgcmUtaW5zZXJ0cyBhIGZy ZXNoIGVudHJ5ICh0aGUgcHJlZGljYXRlIGNvbHVtbiBjaGFuZ2VkIGFuZCBzdGlsbAorLS0g aG9sZHMpLCBzbyB0aGUgcm93IGlzIHN0aWxsIHJldHVybmVkIC0tIHRoZSBiaXRtYXAgZHJv cHMgdGhlIG9sZGVyIGVudHJ5IGFuZAorLS0gdGhlIGZyZXNoIG9uZSByZS1zdXBwbGllcyBp dC4gIEd1YXJkcyBhZ2FpbnN0IGEgImxvc3Qgcm93IiBmcm9tIG92ZXItZWFnZXIKKy0tIGRy b3BwaW5nLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFy dHN0YXkgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIG4gaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2sgT04gaGlfcGFydHN0YXkg KGspIFdIRVJFIG4gPiAwOworQ1JFQVRFIElOREVYIGhpX3BhcnRzdGF5X2lkMiBPTiBoaV9w YXJ0c3RheSAoaWQpOworSU5TRVJUIElOVE8gaGlfcGFydHN0YXkgVkFMVUVTICgxLCA1LCAz KTsKK1VQREFURSBoaV9wYXJ0c3RheSBTRVQgbiA9IDcgV0hFUkUgaWQgPSAxOyAgIC0tIG4g My0+Nywgc3RpbGwgPiAwLCBrIHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBzdGF5 X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0c3RheScpOworIHN0 YXlfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBzdGF5X3Jvd3MgRlJPTSBoaV9wYXJ0c3RheSBX SEVSRSBrID0gNSBBTkQgbiA+IDA7ICAgLS0gd2FudCAxCisgc3RheV9yb3dzIAorLS0tLS0t LS0tLS0KKyAgICAgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfcGFydHN0YXk7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI5LiBQYXJ0aXRpb25lZCB0YWJsZS4gIEEgd2l0 aGluLXBhcnRpdGlvbiBVUERBVEUgb2Ygb25lIGluZGV4ZWQgY29sdW1uIGlzCistLSBIT1Qt aW5kZXhlZCBvbiB0aGUgbGVhZiBwYXJ0aXRpb24ncyBoZWFwIGV4YWN0bHkgYXMgZm9yIGEg bm9uLXBhcnRpdGlvbmVkCistLSB0YWJsZTsgYSBjcm9zcy1wYXJ0aXRpb24gdXBkYXRlIGlz IGEgZGVsZXRlK2luc2VydCBhbmQgbmV2ZXIgSE9ULgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoaWQgaW50LCBhIGludCwgYiBpbnQpIFBBUlRJ VElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnQxIFBBUlRJVElPTiBP RiBoaV9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwMCkKKyAgICBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYSBPTiBoaV9wYXJ0IChhKTsK K0NSRUFURSBJTkRFWCBoaV9wYXJ0X2IgT04gaGlfcGFydCAoYik7CitJTlNFUlQgSU5UTyBo aV9wYXJ0IFZBTFVFUyAoMSwgMTAsIDIwKTsKK1VQREFURSBoaV9wYXJ0IFNFVCBhID0gMTEg V0hFUkUgaWQgPSAxOyAgIC0tIG9uZSBpbmRleGVkIGNvbCwgd2l0aGluIHBhcnRpdGlvbgor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2Nv dW50KCdoaV9wYXJ0MScpOworIHBhcnRfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTEgRlJP TSBoaV9wYXJ0IFdIRVJFIGEgPSAxMTsgICAtLSB3YW50IDEKKyBhMTEgCistLS0tLQorICAg MQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYTEwIEZST00gaGlfcGFydCBXSEVS RSBhID0gMTA7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorIGExMCAKKy0tLS0tCisg ICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQxJyk7Cisg Ymxrbm8gfCBvZmZudW0gfCBhdHRudW0gfCBtc2cgCistLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGhpX3BhcnQ7CistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDMwLiBOb24tYnRyZWUgYWNjZXNzIG1ldGhvZCAoaGFzaCku ICBSZWFkLXNpZGUgc3RhbGVuZXNzIGlzIGFjY2Vzcy1tZXRob2QKKy0tIGFnbm9zdGljICh0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwKSwgc28gYW55IGluZGV4IEFNJ3MgY29sdW1u IGlzCistLSBIT1QtaW5kZXhlZC4gIEhhc2ggaXMgdGhlIHNoYXJwZXN0IGNhc2U6IGl0cyBz Y2FucyByZWNoZWNrIHRoZSBoZWFwIHZhbHVlLAorLS0gd2hpY2ggYWxvbmUgY2Fubm90IGRp c2FtYmlndWF0ZSBhIHZhbHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpIC0tIHRoZQor LS0gYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBzbyB0aGUgcm93IGlzIHJldHVy bmVkIGV4YWN0bHkgb25jZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRB QkxFIGhpX2hhc2ggKGlkIGludCBQUklNQVJZIEtFWSwgdiBpbnQsIHcgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdiBPTiBoaV9oYXNoIFVT SU5HIGhhc2ggKHYpOworQ1JFQVRFIElOREVYIGhpX2hhc2hfdyBPTiBoaV9oYXNoICh3KTsK K0lOU0VSVCBJTlRPIGhpX2hhc2ggVkFMVUVTICgxLCAxMCwgMTAwKTsKK1VQREFURSBoaV9o YXNoIFNFVCB2ID0gOTkgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSAx MCBXSEVSRSBpZCA9IDE7ICAgLS0gQUJBOiAxMCAtPiA5OSAtPiAxMCwgdyB1bmNoYW5nZWQK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25l eHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgaGFzaF9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfaGFzaCcpOworIGhhc2hfaXNfaG90X2luZGV4ZWQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NF VCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3Yx MCBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQgMSAobm8gZHVwbGljYXRl KQorIGhhc2hfdjEwIAorLS0tLS0tLS0tLQorICAgICAgICAxCisoMSByb3cpCisKK1NFTEVD VCBjb3VudCgqKSBBUyBoYXNoX3Y5OSBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDk5OyAgIC0t IHdhbnQgMCAoc3RhbGUgZHJvcHBlZCkKKyBoYXNoX3Y5OSAKKy0tLS0tLS0tLS0KKyAgICAg ICAgMAorKDEgcm93KQorCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJs ZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9oYXNoOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAzMS4gRERMIGFmdGVyIGEgSE9ULWluZGV4ZWQgY2hhaW4gZXhpc3RzLiAgVGhl IHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKy0tIGJpdG1hcCBvbiB0aGUgcGFnZSBpcyBrZXll ZCBieSBwaHlzaWNhbCBhdHRyaWJ1dGUgbnVtYmVyIGFuZCBzaXplZCBieSB0aGUKKy0tIHJl bGF0aW9uJ3MgbmF0dHMgQVQgV1JJVEUgVElNRS4gIEluZGV4ZXMgYWRkZWQvZHJvcHBlZCBh ZnRlciB0aGUgY2hhaW4KKy0tIGZvcm1zLCBhbmQgQUREL0RST1AgQ09MVU1OLCBtdXN0IG5v dCBjb3JydXB0IHRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIHRlc3QuCistLSBUaGUgc2hhcnAg Y2FzZSBpcyBBREQgQ09MVU1OIGNyb3NzaW5nIGFuIDgtYXR0cmlidXRlIGJvdW5kYXJ5LCB3 aGljaCBncm93cworLS0gY2VpbChuYXR0cy84KTogcmVhZGVycyBtdXN0IGxvY2F0ZSBlYWNo IGhvcCdzIGJpdG1hcCBmcm9tIHRoYXQgaG9wJ3Mgb3duCistLSB3cml0ZS10aW1lIG5hdHRz IChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyAvIHRoZSBzdHViJ3Mgc3Rhc2hlZCBuYXR0cyks IG5vdAorLS0gdGhlIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cy4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gRXhhY3RseSA4IGF0dHJpYnV0ZXMgKGMxLi5jNyArIHBheWxvYWQp IHNvIGFkZGluZyB0aGUgOXRoIGZsaXBzIHRoZSBiaXRtYXAKKy0tIGZyb20gMSBieXRlIHRv IDIuICBjNyBpcyB0aGUgY29sdW1uIHdlIGNodXJuOyBjMiBpcyBhbiB1bmNoYW5nZWQgaW5k ZXhlZAorLS0gY29sdW1uIHdob3NlIGxlYWYgbXVzdCBzdGF5IGN1cnJlbnQuCitDUkVBVEUg VEFCTEUgaGlfZGRsICgKKyAgICBjMSBpbnQgUFJJTUFSWSBLRVksIGMyIGludCwgYzMgaW50 LCBjNCBpbnQsCisgICAgYzUgaW50LCBjNiBpbnQsIGM3IGludCwgcGF5bG9hZCB0ZXh0Cisp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOwor Q1JFQVRFIElOREVYIGhpX2RkbF9jMiBPTiBoaV9kZGwoYzIpOworQ1JFQVRFIElOREVYIGhp X2RkbF9jNyBPTiBoaV9kZGwoYzcpOworSU5TRVJUIElOVE8gaGlfZGRsIFZBTFVFUyAoMSwg MTAsIDIwLCAzMCwgNDAsIDUwLCA3MCwgJ3AnKTsKKy0tIEZvcm0gYSBIT1QtaW5kZXhlZCBj aGFpbiBvbiBjNyBCRUZPUkUgYW55IGZ1cnRoZXIgRERMLgorVVBEQVRFIGhpX2RkbCBTRVQg YzcgPSA3MSBXSEVSRSBjMSA9IDE7CitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDcyIFdIRVJF IGMxID0gMTsKKy0tIChhKSBDUkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWluIGV4aXN0czog dGhlIG5ldyBpbmRleCBpcyBidWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0dXBsZSB1bmRl ciBpdHMgb3duIFRJRCwgc28gaXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgorQ1JFQVRFIElO REVYIGhpX2RkbF9jMyBPTiBoaV9kZGwoYzMpOworLS0gKGIpIEFERCBDT0xVTU4gY3Jvc3Np bmcgdGhlIDgtYXR0cmlidXRlIGJvdW5kYXJ5IChuYXR0cyA4IC0+IDkpLiAgRXhpc3RpbmcK Ky0tIGhvcHMga2VlcCB0aGVpciAxLWJ5dGUgYml0bWFwczsgdGhlIHJlbGF0aW9uIG5vdyB3 YW50cyAyLiAgUmVhZHMgdGhyb3VnaCB0aGUKKy0tIG9sZCBjaGFpbiBtdXN0IHN0aWxsIGJl IGNvcnJlY3QuCitBTFRFUiBUQUJMRSBoaV9kZGwgQUREIENPTFVNTiBjOSBpbnQ7CitDUkVB VEUgSU5ERVggaGlfZGRsX2M5IE9OIGhpX2RkbChjOSk7CitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CistLSBMaXZlIGM3IGlzIDcyLiAgVGhlIGM3IGluZGV4IG11c3Qg cmV0dXJuIHRoZSBsaXZlIHJvdyBmb3IgNzIgYW5kIGRyb3AgdGhlCistLSBzdGFsZSBsZWF2 ZXMgZm9yIDcwIGFuZCA3MSAob2Zmc2V0cyBtaXNyZWFkIHdvdWxkIGNvcnJ1cHQgdGhpcyku CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzIgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3 MiBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MiAKKy0tLS0tLS0tLS0KKyAg ICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUg RlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBj N19lcV83MF9zdGFsZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzFfc3RhbGUgRlJPTSBoaV9kZGwg V0hFUkUgYzcgPSA3MSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MV9zdGFs ZSAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBj MiBuZXZlciBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW46IGl0cyBsZWFmIG11c3QgTk9UIGJl IGp1ZGdlZCBzdGFsZSBldmVuCistLSB0aG91Z2ggYSBjcm9zc2VkIGhvcCBjaGFuZ2VkIGM3 LiAgQSBtaXNyZWFkIGJpdG1hcCBjb3VsZCBzcHVyaW91c2x5IGZsYWcgaXQuCitTRUxFQ1Qg Y291bnQoKikgQVMgYzJfZXFfMTBfY3VycmVudCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEw IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGMyX2VxXzEwX2N1cnJlbnQgCistLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIChjKSBDb250 aW51ZSBjaHVybmluZyBjNyBBRlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBi aXRtYXAgaXMgc2l6ZWQKKy0tIGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3Bz IGFyZSAxIGJ5dGUuICBBIGNoYWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0 IHN0aWxsIHJlc29sdmUgY29ycmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBX SEVSRSBjMSA9IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwg V0hFUkUgYzcgPSA3MyBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83MyAKKy0t LS0tLS0tLS0KKyAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzdf ZXFfNzJfbm93X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQg SVMgTk9UIE5VTEw7CisgYzdfZXFfNzJfbm93X3N0YWxlIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gKGQpIENvbGxhcHNlIHRo ZSBjaGFpbiB0byBzdHVicyB2aWEgVkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHVi IG11c3QKKy0tIHByZXNlcnZlIGl0cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAg c3RheXMgbG9jYXRhYmxlIHBvc3QtQUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3 ID0gNzQgV0hFUkUgYzEgPSAxOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRs OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2Rk bCBXSEVSRSBjNyA9IDc0IEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworIGM3X2VxXzc0X2Fm dGVyX3ZhY3V1bSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9hZnRlcl92 YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjMl9lcV8xMF9hZnRlcl92YWN1dW0gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSAoZSkgRFJPUCBDT0xVTU4g a2VlcHMgdGhlIGF0dG51bSBzbG90IChubyByZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBh bGlnbmVkLgorQUxURVIgVEFCTEUgaGlfZGRsIERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNv dW50KCopIEFTIGM3X2FmdGVyX2Ryb3AgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQg cGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19hZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0 ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBO VUxMOworIGMyX2FmdGVyX2Ryb3AgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAx CisoMSByb3cpCisKKy0tIChmKSBEUk9QIElOREVYIG9uIHRoZSBjaHVybmVkIGNvbHVtbjog cmVtYWluaW5nIGluZGV4ZXMgc3RpbGwgcmVzb2x2ZS4KK0RST1AgSU5ERVggaGlfZGRsX2M3 OworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3BpZHggRlJPTSBoaV9kZGwgV0hF UkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9hZnRlcl9kcm9waWR4 IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitS RVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQg ZW5hYmxlX2luZGV4b25seXNjYW47CistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJtcyB0 aGUgbGl2ZSByb3c7IHRoZSBjb3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0aHJv dWdoIHRoZSBwb3N0LURETCBpbmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3b3Vs ZCBicmVhayBpZiBhCistLSBtaXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3RhbGVu ZXNzIHZlcmRpY3QuCitTRUxFQ1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBjMSA9 IDE7CisgYzEgfCBjMiB8IGM3IAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEwIHwgNzQKKygx IHJvdykKKworRFJPUCBUQUJMRSBoaV9kZGw7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky0tIENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElPTiBn ZXRfaGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4dCk7 CistLSBwYWdlaW5zcGVjdCBhbmQgYW1jaGVjayB3ZXJlIGJvdGggY3JlYXRlZCBhYm92ZSB3 aXRoIElGIE5PVCBFWElTVFMgYW5kIG1heQorLS0gaGF2ZSBwcmUtZXhpc3RlZCB0aGlzIHRl c3Q7IGxlYXZlIHRoZW0sIG1hdGNoaW5nIGFtY2hlY2sncyB0cmVhdG1lbnQsCistLSByYXRo ZXIgdGhhbiByaXNrIGRyb3BwaW5nIGFuIGV4dGVuc2lvbiB0aGlzIHRlc3QgZGlkIG5vdCBj cmVhdGUuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDM5OTA1YzJk ZTE0Li5kODI4NTQyMzIyMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK QEAgLTE4MTAsNiArMTgxMCw4IEBAIHBnX3N0YXRfYWxsX2luZGV4ZXN8IFNFTEVDVCBjLm9p ZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihpLm9pZCkgQVMgbGFzdF9p ZHhfc2NhbiwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQoaS5vaWQpIEFTIGlk eF90dXBfcmVhZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfZmV0Y2hlZChpLm9pZCkgQVMg aWR4X3R1cF9mZXRjaCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBk YXRlZF9za2lwcGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkKGku b2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBwZ19zdGF0X2dl dF9zdGF0X3Jlc2V0X3RpbWUoaS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAgICBGUk9NICgoKHBn X2NsYXNzIGMKICAgICAgSk9JTiBwZ19pbmRleCB4IE9OICgoYy5vaWQgPSB4LmluZHJlbGlk KSkpCkBAIC0xODI5LDYgKzE4MzEsNyBAQCBwZ19zdGF0X2FsbF90YWJsZXN8IFNFTEVDVCBj Lm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChjLm9pZCkg QVMgbl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxldGVkKGMub2lkKSBB UyBuX3R1cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKGMub2lk KSBBUyBuX3R1cF9ob3RfdXBkLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhl ZF91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAgICAgcGdfc3Rh dF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91 cGQsCiAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoYy5vaWQpIEFTIG5fbGl2ZV90dXAs CiAgICAgcGdfc3RhdF9nZXRfZGVhZF90dXBsZXMoYy5vaWQpIEFTIG5fZGVhZF90dXAsCkBA IC0yMzMyLDYgKzIzMzUsOCBAQCBwZ19zdGF0X3N5c19pbmRleGVzfCBTRUxFQ1QgcmVsaWQs CiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAgICAgaWR4X3R1cF9m ZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwKKyAgICBuX3R1cF9o b3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAogICAgRlJPTSBwZ19z dGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFOWSAoQVJSQVlbJ3Bn X2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBPUiAoc2No ZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yMzQ4LDYgKzIzNTMsNyBAQCBw Z19zdGF0X3N5c190YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX3R1cF91cGQsCiAgICAg bl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAgbl90dXBfaG90X2luZGV4ZWRf dXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90dXAsCiAgICAgbl9k ZWFkX3R1cCwKQEAgLTIzODcsNiArMjM5Myw4IEBAIHBnX3N0YXRfdXNlcl9pbmRleGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAg ICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAog ICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA8PiBB TEwgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9uX3NjaGVtYSc6Om5h bWVdKSkgQU5EIChzY2hlbWFuYW1lICF+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yNDAz LDYgKzI0MTEsNyBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAg bl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3RfdXBkLAorICAgIG5f dHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICBuX2xp dmVfdHVwLAogICAgIG5fZGVhZF90dXAsCkBAIC0yNDU4LDYgKzI0NjcsNyBAQCBwZ19zdGF0 X3hhY3RfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX3VwZCwKICAgICBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKGMub2lkKSBBUyBuX3R1cF9kZWwsCiAgICAg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX2hv dF91cGQsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZChjLm9pZCkgQVMgbl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfbmV3cGFnZV91cGQK ICAgIEZST00gKChwZ19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19pbmRleCBpIE9OICgo Yy5vaWQgPSBpLmluZHJlbGlkKSkpCkBAIC0yNDc1LDYgKzI0ODUsNyBAQCBwZ19zdGF0X3hh Y3Rfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAgICBuX3R1 cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGQs CiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0X2FsbF90YWJs ZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdfY2F0YWxvZyc6Om5h bWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hlbWFuYW1lIH4gJ15w Z190b2FzdCc6OnRleHQpKTsKQEAgLTI0OTgsNiArMjUwOSw3IEBAIHBnX3N0YXRfeGFjdF91 c2VyX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwKICAgICBuX3R1cF9k ZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGQsCiAg ICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0X2FsbF90YWJsZXMK ICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1l LCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNjaGVtYW5hbWUgIX4gJ15w Z190b2FzdCc6OnRleHQpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4 IGJkOTVjYzI0OTc3Li40ZmRlNWI2YjBjNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCkBAIC0xNDcsNiArMTQ3LDcgQEAgdGVzdDogZmFzdF9kZWZhdWx0CiAjIEhPVCB1 cGRhdGVzIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGhvdF91cGRhdGVzCit0ZXN0OiBo b3RfaW5kZXhlZF91cGRhdGVzCiAKICMgcnVuIHRhYmxlc3BhY2UgdGVzdCBhdCB0aGUgZW5k IGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBkdXJpbmcKICMgc2V0 dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZmVhYzcxOTFjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDExNjcgQEAK Ky0tCistLSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1pbmRleGVkIHVwZGF0 ZSAoaG90LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91cgorLS0KKy0tIEV2 ZXJ5IFVQREFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qgb25lIG5vbi1zdW1t YXJpemluZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1ob3QtaW5kZXhlZCBz ZXJ2ZXIgYWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBvbiB0aGUgaG90LWlu ZGV4ZWQgYnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9uLXBhZ2UgYW5kCist LSBpbnNlcnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGFjdHVh bGx5IGNoYW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdzOgorLS0gICAoQSkg cGdfc3RhdCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3VudHMgaW5jcmVtZW50 IGFzIGV4cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVybiB0aGUgbmV3IHZh bHVlIGFuZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3IgRVFVQUxJVFkgcXVl cmllcyAodGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBhCistLSAgICAgICBs ZWFmIHdob3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIHdheSB0byB0aGUg bGl2ZSB0dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHJl cG9ydHMgdGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAorLS0gICAoRCkgKipS QU5HRS9JTkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJlY3QgbnVtYmVyIG9m CistLSAgICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2YgYnVncyB3aGVyZSBh IHN0YWxlIGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGlsbCByZWFjaGFibGUg dmlhIGEgbG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRoZSBpbmRleCdzCist LSAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVhZidzIHRhcmdldCBh bmQgdGhlIGxpdmUgdHVwbGUKKy0tCisKK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNU UyBwYWdlaW5zcGVjdDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hvdF9j b3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRlcyBCSUdJTlQsIGhv dCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxf b2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVT Q0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAg ICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29p ZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3Vw ZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIFJFVFVSTiBORVhU OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gZ2V0X2hpX2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRh dGVzIEJJR0lOVCwgaG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFTICQkCitERUNMQVJF IHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFz czo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3Vw ZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FM RVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAg ICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo cmVsX29pZCksIDApOworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVw bGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxf b2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs OworCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4gQmFzaWMgaG90LWluZGV4 ZWQ6IG1vZGlmeWluZyBhbiBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QgYW5kIGNvdW50cyBh cyBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfYmFzaWMgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBpbmRleGVkX2NvbCBp bnQsCisgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBoaV9iYXNpY19pZHggT04gaGlfYmFzaWMoaW5kZXhlZF9jb2wp OworCitJTlNFUlQgSU5UTyBoaV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsK KworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhPVC4gIFVuZGVyIGhv dC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBIT1QgY291bnRlciBh bmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFURSBoaV9iYXNpYyBT RVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX2Jhc2lj Jyk7CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0aGUgaW5kZXguCitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBp ZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDE1MDsK K1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2Nv bCA9IDE1MDsKKworLS0gVGhlIG9sZCB2YWx1ZSBpcyBub3QgcmVhY2hhYmxlIHRocm91Z2gg dGhpcyBpbmRleDogdGhlIHN0YWxlIGJ0cmVlCistLSBlbnRyeSAoaW5kZXhlZF9jb2w9MTAw KSB3YWxrcyB0byB0aGUgY3VycmVudCB0dXBsZSB2aWEgdGhlIGhvdC1pbmRleGVkIGhvcCwK Ky0tIG5vZGVJbmRleHNjYW4gcmUtZXZhbHVhdGVzIGBpbmRleGVkX2NvbCA9IDEwMGAgYWdh aW5zdCB0aGUgY3VycmVudAorLS0gdHVwbGUgKGluZGV4ZWRfY29sPTE1MCksIGFuZCB0aGUg cm93IGlzIGNvcnJlY3RseSBkcm9wcGVkLiAgVGhpcyBpcworLS0gdGhlIGVxdWFsaXR5LWxv b2t1cCBjYXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgaGFuZGxlcy4KK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hFUkUgaW5kZXhlZF9j b2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9 IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cyBzZWVzIG9uZSBIT1QtaW5kZXhlZCB2ZXJzaW9uLCB6ZXJvIEhPVCByZWRp cmVjdHMgKHRoZQorLS0gY2hhaW4gaGFzIG5vdCB5ZXQgYmVlbiBwcnVuZWQgc28gbm8gTFBf UkVESVJFQ1QgZXhpc3RzKS4KK1NFTEVDVCBuX2hvdF9pbmRleGVkLCBuX2NoYWlucywgYXZn X2NoYWluX2xlbiwgbWF4X2NoYWluX2xlbgorRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhl ZF9zdGF0cygnaGlfYmFzaWMnKTsKKworRFJPUCBUQUJMRSBoaV9iYXNpYzsKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBSQU5HRS9JTkVRVUFMSVRZIGNvcnJlY3RuZXNz IGFmdGVyIGhvdC1pbmRleGVkIG9uIGFuIGluZGV4ZWQgY29sdW1uCistLQorLS0gVGhpcyBp cyB0aGUgdGVzdCBjbGFzcyB0aGF0IGNhdGNoZXMgdGhlIGhvdC1pbmRleGVkIGZhbHNlLWR1 cCBidWc6IGEgc3RhbGUKKy0tIGJ0cmVlIGVudHJ5IHdob3NlIGtleSB2YWx1ZSBzdGlsbCBz YXRpc2ZpZXMgdGhlIHJhbmdlIHByZWRpY2F0ZSwKKy0tIHJlYWNoYWJsZSB2aWEgdGhlIGhv dC1pbmRleGVkIGNoYWluIGhvcC4KKy0tCistLSBUbyBleGVyY2lzZSB0aGUgYnVnIHdlIG11 c3QgZm9yY2UgYW4gSW5kZXhTY2FuIHBsYW4gKHRoZQorLS0gSW5kZXhPbmx5U2NhbiBwYXRo IHBlcm1pc3NpdmVseSBkcm9wcyBldmVyeSBob3QtaW5kZXhlZC1yZWFjaGFibGUgaW5kZXgt b25seQorLS0gaGl0OyB0aGUgQml0bWFwSGVhcFNjYW4gcGF0aCBkZWR1cHMgYnkgVElEKS4g IFdlIGluY2x1ZGUgYSBwYXlsb2FkCistLSBjb2x1bW4gbm90IHByZXNlbnQgaW4gdGhlIFBL IHNvIHRoZSBwbGFubmVyIG11c3QgaGVhcC1mZXRjaC4KKy0tCistLSBUaGUgcmVhZC1zaWRl IGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBtYWtlcyB0aGUgSW5kZXhTY2FuIHJldHVybiB0 aGUgY29ycmVjdAorLS0gY291bnQgb2YgMTogdGhlIHN0YWxlIGVudHJ5ICgnMScsJzUnKSBj aGFpbi13YWxrcyB0byB0aGUgbGl2ZSB0dXBsZSBhY3Jvc3MKKy0tIHRoZSBiLWNoYW5naW5n IGhvcCwgYW5kIGJlY2F1c2UgdGhlIFBLIGNvdmVycyBiIHRoZSBvdmVybGFwIGlzIG5vbi1l bXB0eSwgc28KKy0tIHRoZSBzdGFsZSBsZWFmIGlzIGRyb3BwZWQuICBUaGUgZnJlc2ggZW50 cnkgKCcxJywnMTUnKSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlCistLSBsaXZlIHR1cGxlIChu byBob3AgYWZ0ZXIgaXQpIGFuZCBpcyBrZXB0LiAgVGhlIE9SREVSIEJZIGxpa2V3aXNlIHJl dHVybnMgdGhlCistLSBzaW5nbGUgbGl2ZSByb3cuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9yYW5nZSAoCisgICAgYSBpbnQsCisgICAgYiBpbnQsCisg ICAgcGF5bG9hZCB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChhLCBiKQorKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOworCitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxVRVMgKDEsIDUsICdo aScpOworCistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29uZCBQSyBjb2x1bW46 IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywgbmV3IGVudHJ5ICgn MScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRzIGF0CistLSB0aGUg Y2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3RseSBhdCB0aGUgbmV3 CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VUIGIgPSAxNSBXSEVS RSBhID0gMSBBTkQgYiA9IDU7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKworLS0gSW5kZXhTY2FuOiBwYXlsb2FkIElTIE5P VCBOVUxMIGZvcmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2FuLgorLS0gVGhlIHN0 YWxlICgnMScsJzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCwgc28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5n ZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NF TEVDVCBhLCBiIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEwgT1JERVIgQlkgYjsKKworLS0gSW5kZXhPbmx5U2NhbjogdGhlIHBhZ2UgaG9sZHMg YSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5ldmVyIGFsbC12aXNp YmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0aGUgY3Jvc3NlZC1h dHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykKKy0tIGxlYWYsIHNv IGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00g aGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJP TSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKworLS0gQml0bWFwSGVhcFNj YW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVzaCBoaXRzLgorU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBv ZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitT RUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsK K1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsK KworLS0gU2VxU2NhbjogcmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNlZXMgZXhhY3RseSBv bmUgbGl2ZSB0dXBsZS4KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7CitTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitSRVNFVCBl bmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNjYW47CitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKKworLS0gU2FtZSBzaGFwZSBvbiBhIHNlY29uZGFyeSAobm9u LVBLKSBidHJlZTogYW5vdGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24gYi4KK0NSRUFURSBJ TkRFWCBoaV9yYW5nZV9iX2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFURSBoaV9yYW5nZSBT RVQgYiA9IDI1IFdIRVJFIGEgPSAxIEFORCBiID0gMTU7CisKK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0tIEluZGV4U2NhbiBw YXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxpZXMuCitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBBTkQgMTAwIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFi bGVfYml0bWFwc2NhbjsKKworRFJPUCBUQUJMRSBoaV9yYW5nZTsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBhIG11bHRpLWluZGV4ZWQgdGFi bGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVzCistLSAgICB3aG9zZSBhdHRy aWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAor ICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX211bHRpX2FfaWR4 IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0aV9iX2lkeCBPTiBo aV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfY19pZHggT04gaGlfbXVs dGkoY29sX2MpOworCitJTlNFUlQgSU5UTyBoaV9tdWx0aSBWQUxVRVMgKDEsIDEwLCAyMCwg MzAsICdpbml0aWFsJyk7CisKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4CistLSBnZXRzIGEg bmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lkeCBrZWVwIHBvaW50 aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0aSBTRVQgY29sX2Eg PSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsKKworLS0gTG9va3Vw cyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNvbF9hID0gMTU7 CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIwOworU0VMRUNUIGlk IEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2MgPSAzMDsKKworLS0gT2xkIGNvbF9hIHZhbHVl IGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBkcm9wcGVkIGJ5IHRo ZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCkuCitTRUxFQ1QgaWQg RlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CisKK0RST1AgVEFCTEUgaGlfbXVsdGk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBwYXJ0IG9mIGEgY29t cG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlf Y29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAor ICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhpX2NvbXBvc2l0ZShj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUgVkFMVUVTICgxLCAx MCwgMjAsICdkYXRhJyk7CisKKy0tIGNvbF9hIGlzIHBhcnQgb2YgdGhlIGNvbXBvc2l0ZSBr ZXk6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2EgPSAxNTsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworLS0gUmVzZXQgYW5kIHRoZW4gdXBkYXRl IGNvbF9iIChhbHNvIHBhcnQgb2YgdGhlIGtleSkuCitVUERBVEUgaGlfY29tcG9zaXRlIFNF VCBjb2xfYSA9IDEwOworVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29sX2IgPSAyNTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworRFJPUCBUQUJMRSBoaV9jb21wb3NpdGU7CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBpbmRleDogc3RhdHVz IHRyYW5zaXRpb24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0dXMnIGlzIGEgcGFy dGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8gYSBwcmVkaWNhdGUK Ky0tIGNvbHVtbiBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhlIGluZGV4LCB3aGlj aCB0aGUgcmVhZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0ZWN0LCBzbyBIZWFw VXBkYXRlSG90QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxpZmllcworLS0gSE9U LWluZGV4ZWQgZm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAoZXZlbiB0aGlzIG91 dC1vZi1wcmVkaWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2FzZSkuICBUaGUgdXBk YXRlIGlzIHRoZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwKKy0tIGluZGV4IGNv cnJlY3RseSBzdGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUnIHJvd3MuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0aWFsICgKKyAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0Cisp IFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydGlhbF9hY3Rp dmVfaWR4IE9OIGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK KworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEn KTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0 YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdk YXRhMycpOworCistLSBvdXQgLT4gb3V0IHRyYW5zaXRpb24gb24gdGhlIHByZWRpY2F0ZSBj b2x1bW46IEhPVC1pbmRleGVkIGtlZXBzIGl0IG9uLXBhZ2UsCistLSBhbmQgdGhlIHBhcnRp YWwgaW5kZXggZ2V0cyBubyBlbnRyeSAodGhlIHJvdyBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0 ZSBuZWl0aGVyCistLSBiZWZvcmUgbm9yIGFmdGVyIHRoZSB1cGRhdGUpLgorVVBEQVRFIGhp X3BhcnRpYWwgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfcGFydGlhbCcpOworCistLSBUaGUgcGFydGlhbCBpbmRleCBzdGlsbCBjb3JyZWN0 bHkgYW5zd2VycyAiYWN0aXZlIiBxdWVyaWVzLgorU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBo aV9wYXJ0aWFsIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitEUk9QIFRBQkxFIGhpX3Bh cnRpYWw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4gUGFydGl0aW9uOiBo b3QtaW5kZXhlZCBpbnNpZGUgb25lIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoCisgICAgaWQgaW50LAorICAgIHBhcnRpdGlv bl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQsCisgICAg UFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkgUkFOR0Ug KHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnRfMSBQQVJUSVRJT04gT0Yg aGlfcGFydAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwMCkgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0X2lkeCBPTiBoaV9wYXJ0KGluZGV4 ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEsIDUwLCAxMDAsICdk YXRhJyk7CisKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBp ZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBG Uk9NIGdldF9oaV9jb3VudCgnaGlfcGFydF8xJyk7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfcGFydCBDQVNDQURFOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9kaWZpZXMgaW5kZXhl ZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQgaW50IFBSSU1BUlkg S0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJfaWR4IE9OIGhpX3Ry aWdnZXIodHJpZ2dlcmVkX2NvbCk7CisKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGhp X3RyaWdnZXJfYnVtcCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JFR0lOCisgICAgTkVX LnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7CisgICAgUkVUVVJOIE5F VzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIGJlZm9y ZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04gaGlfdHJpZ2dlcgorICAgIEZP UiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CisK K0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7CisK Ky0tIFVQREFURSdzIFNFVCBjbGF1c2UgZG9lc24ndCB0b3VjaCB0aGUgaW5kZXhlZCBjb2x1 bW4sIGJ1dCB0aGUKKy0tIHRyaWdnZXIgbW9kaWZpZXMgaXQgdmlhIGhlYXBfbW9kaWZ5X3R1 cGxlLiAgaG90LWluZGV4ZWQgbXVzdCBkZXRlY3QgdGhpcworLS0gYW5kIGtlZXAgdGhlIHR1 cGxlIG9uLXBhZ2UgKEhFQVBfSU5ERVhFRF9VUERBVEVEKSBwbHVzIGEgbmV3IGJ0cmVlIGVu dHJ5LgorVVBEQVRFIGhpX3RyaWdnZXIgU0VUIGRhdGEgPSAndXBkYXRlZCcgV0hFUkUgaWQg PSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJP TSBnZXRfaGlfY291bnQoJ2hpX3RyaWdnZXInKTsKK1NFTEVDVCB0cmlnZ2VyZWRfY29sIEZS T00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisKKy0tIE5ldyB2YWx1ZSByZWFjaGFibGUu CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2Vy IFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90cmlnZ2Vy IFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKKwor RFJPUCBUQUJMRSBoaV90cmlnZ2VyIENBU0NBREU7CitEUk9QIEZVTkNUSU9OIGhpX3RyaWdn ZXJfYnVtcCgpOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4 cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIG9uIGV4 cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFsbHMgYmFjayB0byBh IG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFkcyBzdGF5IGNvcnJl Y3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9qc29uYiAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1lX2lkeCBPTiBoaV9q c29uYiAoKGRhdGEtPj4nbmFtZScpKTsKKworSU5TRVJUIElOVE8gaGlfanNvbmIgVkFMVUVT ICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworCistLSBDaGFuZ2luZyB0aGUg aW5kZXhlZCBleHByZXNzaW9uJ3MgdmFsdWUgKG5hbWUpOiBleHByZXNzaW9uIGluZGV4ZXMg YXJlIG5vdAorLS0geWV0IHN1cHBvcnRlZCwgc28gdGhpcyBpcyBhIG5vbi1IT1QgdXBkYXRl LgorVVBEQVRFIGhpX2pzb25iIFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0n LCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfanNvbmInKTsKKwor U0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00gaGlfanNvbmIgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworU0VMRUNUIGlkIEZST00gaGlfanNvbmIg V0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZSc7CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsK KworRFJPUCBUQUJMRSBoaV9qc29uYjsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSA5LiBHSU4gaW5kZXggd2l0aCBjaGFuZ2VkIGV4dHJhY3RlZCBrZXlzOiBob3QtaW5kZXhl ZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZ2luICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10KKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9naW5fdGFnc19pZHggT04gaGlfZ2luIFVT SU5HIGdpbiAodGFncyk7CisKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxVRVMgKDEsIEFSUkFZ Wyd0YWcxJywgJ3RhZzInXSk7CisKKy0tIEFkZGluZyBhIHRhZyB5aWVsZHMgYSBkaWZmZXJl bnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2dpbiBTRVQg dGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJFIGlkID0gMTsKK1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hp X2NvdW50KCdoaV9naW4nKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1JFU0VUIGVu YWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX2dpbjsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRleGVkIGNvdW50ZXJzOiBza2lw cGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGggdHdvIGluZGVwZW5kZW50IHNl Y29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMgYQorLS0gY29sdW1uIGNvdmVy ZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRleGVkIHBhdGggbXVzdCBpbnNl cnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAgdGhlIG90aGVyLiAgcGdfc3Rh dF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAgb24gdGhlIHVwZGF0ZWQgaW5k ZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGluZGV4LgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3BlcmluZGV4ICgKKyAgICBpZCBp bnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBpbnQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhfYSBPTiBob3RpZHhf cGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3BlcmluZGV4X2IgT04gaG90aWR4 X3BlcmluZGV4KGIpOworCitJTlNFUlQgSU5UTyBob3RpZHhfcGVyaW5kZXggVkFMVUVTICgx LCAxMDAsIDIwMCk7CisKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAgSE9ULWluZGV4ZWQg aW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tpcHMgaG90aWR4X3Bl cmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJsZSBpdHNlbGYgYW5k CistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBwZWQgdG9vKS4KK1VQ REFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQgPSAxOworCistLSBG b3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQgZW50cnkuCitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUs CisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAg ICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00g cGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4 JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gQSBzZWNvbmQgVVBEQVRFIHRvdWNo aW5nIG9ubHkgYiBpbnZlcnRzIHRoZSBhc3NpZ25tZW50LgorVVBEQVRFIGhvdGlkeF9wZXJp bmRleCBTRVQgYiA9IDIwMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90 X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhl cworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4 cmVsbmFtZTsKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBlZCA9PSBvd25pbmcg dGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAor ICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4 ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBuX3R1cF9ob3RfaW5k ZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAgIFdIRVJFIHJlbG5h bWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91cGQKKyAgRlJPTSBw Z19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgn CisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBCb29sZWFuIGFzc2VydGlvbiBvZiB0 aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZm9ybQorLS0gcmV2 aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0aGVyIG1hdGNoZWQg KHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBEQVRFKSBvciBza2lw cGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4gaW5zZXJ0IGJlY2F1 c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYgdGhlCistLSB0d28g Y291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwgbl90dXBfaG90X2lu ZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWluZGV4IGluY3JlbWVu dCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQoKG5fdHVwX2hvdF9p bmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQpID0K KyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9NIHBn X3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFtZSA9ICdo b3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2ludmFyaWFudF9ob2xk cworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hvdGlk eF9wZXJpbmRleCc7CisKK0RST1AgVEFCTEUgaG90aWR4X3BlcmluZGV4OworCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1sb29wIFVQREFURSBzdGF5cyBj b21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9uZyBydW4gb2YgSE9ULWluZGV4 ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29tcGFjdDogcHJ1bmUKKy0tIGNv bGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGlyZWN0IHRvIHRoZSBsaXZlIHR1 cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUgaGVhcCBzdGF5cyBib3VuZGVk IGFuZCB0aGUgY2hhaW4gZG9lcyBub3QgZ3JvdyB1bmJvdW5kZWQuCistLSBFdmVyeSBVUERB VEUgdGhhdCBjaGFuZ2VzIHRoZSBpbmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVy IGluZGV4LAorLS0gaGVyZSB0aGUgUEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRl eGVkIHBhdGguCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9j aGFpbmNhcCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEgg KGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04g aGlfY2hhaW5jYXAoYSk7CisKK0lOU0VSVCBJTlRPIGhpX2NoYWluY2FwIFZBTFVFUyAoMSwg MCk7CisKK0RPICQkCitERUNMQVJFCisgICAgaSBpbnQ7CitCRUdJTgorICAgIEZPUiBpIElO IDEgLi4gMjAwIExPT1AKKyAgICAgICAgVVBEQVRFIGhpX2NoYWluY2FwIFNFVCBhID0gaSBX SEVSRSBpZCA9IDE7CisgICAgRU5EIExPT1A7CitFTkQgJCQ7CisKKy0tIEFmdGVyIDIwMCBV UERBVEVzIHRoZSByb3cncyB2YWx1ZSBpcyAyMDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWlu Y2FwIFdIRVJFIGlkID0gMTsKKworLS0gRXZlcnkgVVBEQVRFIHRvb2sgdGhlIEhPVC1pbmRl eGVkIHBhdGggKHRoZSBQSyBpbmRleCBpcyB1bmNoYW5nZWQsIHNvIGl0IGlzCistLSBza2lw cGVkKSwgc28gbl90dXBfaG90X2luZGV4ZWRfdXBkIGFkdmFuY2VkLgorU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRl eGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jaGFpbmNhcCcpOworCistLSBU aGUgaGVhcCBzdGF5ZWQgY29tcGFjdDogcHJ1bmUrY29sbGFwc2UgcmVjbGFpbWVkIHRoZSBk ZWFkIHZlcnNpb25zLCBzbyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdyBzdGF5cyB3aXRoaW4g YSBjb3VwbGUgb2YgcGFnZXMuICBwZ19yZWxhdGlvbl9zaXplIHJlZmxlY3RzCistLSB0aGUg dGFibGUncyBhY3R1YWwgY3VycmVudCBzaXplIHJlZ2FyZGxlc3Mgb2YgdmFjdXVtL2FuYWx5 emUgc3RhdHMsIHVubGlrZQorLS0gcGdfY2xhc3MucmVscGFnZXMgKHdoaWNoIGlzIG9ubHkg dXBkYXRlZCBieSBWQUNVVU0vQU5BTFlaRSBhbmQgd291bGQgYmUKKy0tIHRyaXZpYWxseSA8 PSAxIG9uIHRoaXMgbmV2ZXItdmFjdXVtZWQgdGFibGUgZXZlbiBpZiBwcnVuaW5nIGhhZCBm YWlsZWQgYW5kCistLSB0aGUgaGVhcCBoYWQgYmFsbG9vbmVkKS4KK1NFTEVDVCBwZ19yZWxh dGlvbl9zaXplKCdoaV9jaGFpbmNhcCcpIDw9IDgxOTIgKiAyIEFTIGhlYXBfc3RheWVkX2Nv bXBhY3Q7CisKK0RST1AgVEFCTEUgaGlfY2hhaW5jYXA7CisKKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLS0gMTIuIFJlY2xhbWF0aW9uIG9mIGEgY29sbGFwc2VkIEhPVC1pbmRleGVk IGNoYWluIGJ5IHBydW5lCistLQorLS0gQSBkZWFkIEhPVC1pbmRleGVkIGNoYWluIG1lbWJl ciBpcyBwcmVzZXJ2ZWQgYXQgcHJ1bmUgdGltZSAoaXRzIHN0YWxlIGxlYWYKKy0tIG1heSBz dGlsbCBleGlzdCkgYW5kIHRoZSBjaGFpbiBjb2xsYXBzZXMgdG8gYW4gTFBfUkVESVJFQ1Qg Zm9yd2FyZGVyOyB0aGUKKy0tIGluZGV4IGNsZWFudXAgcGFzcyB0aGVuIHN3ZWVwcyB0aGUg c3RhbGUgbGVhZiwgYW5kIGEgbGF0ZXIgVkFDVVVNIHJlY2xhaW1zCistLSB0aGUgbm93LXVu cmVmZXJlbmNlZCBtZW1iZXIgYW5kIHJlLXBvaW50cyB0aGUgcmVkaXJlY3Qgb25jZSBpdCBm YWxscyBiZWxvdworLS0gdGhlIGdsb2JhbCB4bWluIGhvcml6b24uICBXZSBhc3NlcnQgb25s eSB0aGF0IHRoZSBjaGFpbiBjb2xsYXBzZXMKKy0tIChuX2NoYWlucyA9IDApOiB0aGF0IGlz IHRoZSBkZXRlcm1pbmlzdGljIHByb29mIHRoZSBtZWNoYW5pc20gd29ya2VkLiAgVGhlCist LSBmaW5hbCBtZW1iZXIncyByZWNsYWltIChuX2hvdF9pbmRleGVkIHJlYWNoaW5nIDApIGFk ZGl0aW9uYWxseSByZXF1aXJlcyB0aGUKKy0tIGRlbGV0ZWQgdHVwbGUgdG8gZmFsbCBiZWxv dyB0aGUgZ2xvYmFsIHhtaW4gaG9yaXpvbiwgd2hpY2ggYSBzbmFwc2hvdCBoZWxkCistLSBl bHNld2hlcmUgaW4gdGhlIHJ1bm5pbmcgcmVncmVzc2lvbiBjbHVzdGVyIGNhbiBkZWxheSBp bmRlZmluaXRlbHkgLS0gc28gd2UKKy0tIGRvIG5vdCBhc3NlcnQgYW4gZXhhY3Qgbl9ob3Rf aW5kZXhlZCBoZXJlIChhdXRvdmFjdXVtX2VuYWJsZWQgaXMgb2ZmIG9ubHkgdG8KKy0tIGtl ZXAgb3VyIG93biBWQUNVVU1zIGZyb20gYmVpbmcgc2tpcHBlZCBvbiBhIHN0b2xlbiBsb2Nr KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xhaW0g KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBo aV9yZWNsYWltX2FfaWR4IE9OIGhpX3JlY2xhaW0oYSk7CisKK0lOU0VSVCBJTlRPIGhpX3Jl Y2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBzZWQgY2hhaW4g dmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0gU0VUIGEgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5k ZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKworLS0gRGVsZXRlIHRoZSBsaXZlIHR1cGxl LiAgVGhlIGZpcnN0IFZBQ1VVTSBjb2xsYXBzZXMgdGhlIGRlYWQgY2hhaW4gYW5kIHN3ZWVw cworLS0gdGhlIHN0YWxlIGxlYWY7IGEgbGF0ZXIgVkFDVVVNIHJlY2xhaW1zIHRoZSBub3ct dW5yZWZlcmVuY2VkIG1lbWJlciBvbmNlIGl0CistLSBmYWxscyBiZWxvdyB0aGUgZ2xvYmFs IHhtaW4gaG9yaXpvbi4gIEFzc2VydCBvbmx5IHRoZSBkZXRlcm1pbmlzdGljCistLSBjb2xs YXBzZSAobl9jaGFpbnMgPSAwKTsgdGhlIG1lbWJlci1yZWNsYWltIGNvdW50IGlzIGhvcml6 b24tZGVwZW5kZW50IGFuZAorLS0gbm90IHNvbWV0aGluZyBhIHJlZ3Jlc3MgdGVzdCBjYW4g cGluIGRvd24uCitERUxFVEUgRlJPTSBoaV9yZWNsYWltIFdIRVJFIGlkID0gMTsKK1ZBQ1VV TSBoaV9yZWNsYWltOworVkFDVVVNIGhpX3JlY2xhaW07CisKK1NFTEVDVCBuX2NoYWlucyA9 IDAgQVMgY2hhaW5fY29sbGFwc2VkX2FmdGVyX3JlY2xhaW0KKyAgRlJPTSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjbGFpbScpOworCitEUk9QIFRBQkxFIGhpX3Jl Y2xhaW07CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTMuIFBhZ2Ugd2l0aCBh IHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1iZXIgaXMgbmV2ZXIgbWFya2VkIGFsbC12aXNp YmxlCistLQorLS0gcHJ1bmVoZWFwIGRlbGliZXJhdGVseSBsZWF2ZXMgUERfQUxMX1ZJU0lC TEUgY2xlYXIgb24gYW55IHBhZ2UgdGhhdCBzdGlsbAorLS0gY2FycmllcyBhIHByZXNlcnZl ZCBIT1QtaW5kZXhlZCBtZW1iZXI6IGFuIGluZGV4LW9ubHkgc2NhbiBtdXN0IGhlYXAtZmV0 Y2gKKy0tIHRocm91Z2ggdGhlIGNoYWluIHNvIHRoZSByZWFkLXNpZGUgY3Jvc3NlZC1hdHRy aWJ1dGUgYml0bWFwIGNhbiBmaWx0ZXIgc3RhbGUgYnRyZWUKKy0tIGVudHJpZXMuCistLQor LS0gV2UgZm9yY2UgdGhlIGZyZWV6ZSBwYXRoIHdpdGggVkFDVVVNIChGUkVFWkUsIERJU0FC TEVfUEFHRV9TS0lQUElORykgYW5kCistLSB0aGVuIHJlYWQgcGRfZmxhZ3MgdmlhIHBhZ2Vp bnNwZWN0LnBhZ2VfaGVhZGVyLiAgVGhlIHBhZ2UgbXVzdCBzdGlsbCBjYXJyeQorLS0gYSBI T1QtaW5kZXhlZCBtZW1iZXIgKG5faG90X2luZGV4ZWQgPiAwKSBBTkQgbXVzdCBub3QgaGF2 ZSBQRF9BTExfVklTSUJMRQorLS0gKDB4MDAwNCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV92bSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVkID0g ZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3ZtX2FfaWR4IE9OIGhpX3ZtKGEpOworCitJTlNF UlQgSU5UTyBoaV92bSBWQUxVRVMgKDEsIDEpOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMgbGVhdmUgYSBtdWx0aS1ob3AgY2hhaW4sIHNvIGEgcHJlc2VydmVkIEhPVC1pbmRleGVk CistLSBtZW1iZXIgcmVtYWlucyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuZSwgd2hpY2ggaXMg d2hhdCB0aGlzIHRlc3QgbmVlZHMuCitVUERBVEUgaGlfdm0gU0VUIGEgPSAyIFdIRVJFIGlk ID0gMTsKK1VQREFURSBoaV92bSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworCistLSBGb3Jj ZSB0aGUgYWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxFX1BB R0VfU0tJUFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVzIGhp bnQgYml0cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBwcmVz ZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNpYmxl ID0gMC4KK1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3ZtOwor CitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+PSAxIEFTIGhvdF9pbmRleGVkX3ByZXNlbnQKKyAg RlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdm0nKTsKKworLS0gUERf QUxMX1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGggYSBwcmVz ZXJ2ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFya2VkX2Fs bF92aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92bScsIDAp KTsKKworRFJPUCBUQUJMRSBoaV92bTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCist LSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBhIHN0YXlz IGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAgb3IgaW5k ZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRoZSByZWxj YWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRlCistLSBi aXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJlIGF0dHJp YnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRlciB0d28g cmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVlbnQgVVBE QVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CisKK0lOU0VS VCBJTlRPIGhpX2N5Y2xlIFZBTFVFUyAoMSwgMTAwKTsKKworLS0gQ3ljbGUgdGhlIGNvbHVt biBuYW1lIGFuZCBjb25maXJtIGJvdGggaW50ZXJtZWRpYXRlIGZvcm1zIGRyaXZlIEhPVC1p bmRleGVkLgorQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBhIFRPIGI7CitV UERBVEUgaGlfY3ljbGUgU0VUIGIgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhvdF9pbmRl eGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfY3ljbGUn KTsKKworQUxURVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERB VEUgaGlfY3ljbGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0 aGUgaW5kZXggcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0t IHByZS1yZW5hbWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNU IGlkLCBhIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKK1NFTEVDVCBpZCBGUk9NIGhp X2N5Y2xlIFdIRVJFIGEgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBh ID0gMjAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfY3ljbGU7 CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkg Y29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFTU0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBIRUFQX0hFQVBfT05MWV9VUERBVEUgd2hl biBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGUgaXMgY292ZXJlZCBvbmx5 IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJSSU4tb25seSBjb2x1bW4gaXMgdGhl IGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBnZXRzIGEKKy0tIG5ldyBzdW1tYXJ5 IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11cGRhdGUgYnRyZWUgZW50cnkgaXMK Ky0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBub3QgZmlyZS4gIFRoZSBzaWduYWwg aXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90dXBfaG90X2luZGV4ZWRfdXBkIHVu Y2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2Jy aW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBiY29sIGludAorKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2JyaW5faWR4IE9OIGhpX2JyaW4g VVNJTkcgYnJpbihiY29sKTsKKworSU5TRVJUIElOVE8gaGlfYnJpbiBWQUxVRVMgKDEsIDEw MCk7CisKKy0tIENhcHR1cmUgdGhlIEhPVC1pbmRleGVkIGNvdW50ZXIgYmVmb3JlLCBkcml2 ZSBhIEJSSU4tb25seSB1cGRhdGUsCistLSBhbmQgYXNzZXJ0IHRoYXQgY2xhc3NpYyBIT1Qg YWR2YW5jZWQgd2hpbGUgSE9ULWluZGV4ZWQgZGlkIG5vdC4KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZS T00gZ2V0X2hpX2NvdW50KCdoaV9icmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBi Y29sID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKK1NFTEVDVCAoaG90IC0gMCkgPiAwIEFTIGNsYXNzaWNfaG90X2ZpcmVkLAorICAg ICAgIGhvdF9pZHggPSA6aG90X2lkeF9iZWZvcmUgQVMgaG90X2luZGV4ZWRfZGlkX25vdF9m aXJlCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9icmluJyk7CisKKy0tIFRoZSBCUklOIGlu ZGV4IHNlZXMgdGhlIG5ldyB2YWx1ZSB2aWEgYW1pbnNlcnQuCitTRUxFQ1QgYmNvbCBGUk9N IGhpX2JyaW4gV0hFUkUgaWQgPSAxOworCitEUk9QIFRBQkxFIGhpX2JyaW47CisKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTYuIFVOSVFVRSBpbmRleCBvbiBhIHR5cGUgd2hl cmUgaW1hZ2UgZXF1YWxpdHkgIT0gb3BlcmF0b3IgZXF1YWxpdHkKKy0tCistLSBudW1lcmlj IDEuMCBhbmQgMS4wMCBhcmUgZXF1YWwgdW5kZXIgdGhlIGJ0cmVlIG9wY2xhc3MgYnV0IGhh dmUKKy0tIGRpZmZlcmVudCBvbi1kaXNrIGltYWdlcy4gIEEgSE9ULWluZGV4ZWQgdXBkYXRl IDEuMCAtPiAxLjAwIGluc2VydHMgYQorLS0gZnJlc2ggbGVhZiBjYXJyeWluZyB0aGUgbGl2 ZSBpbWFnZSBhbmQgbGVhdmVzIGEgc3RhbGUgbGVhZiBmb3IgMS4wCistLSAodGhlIGhvcCdz IG1vZGlmaWVkLWF0dHJzIGJpdG1hcCBtYXJrcyBrIGNoYW5nZWQsIHNpbmNlIG1vZGlmaWVk LWNvbHVtbgorLS0gZGV0ZWN0aW9uIGlzIGltYWdlLWJhc2VkKS4gIEEgbGF0ZXIgSU5TRVJU IG9mIGEgdmFsdWUgZXF1YWwgdW5kZXIgdGhlCistLSBvcGNsYXNzIG11c3Qgc3RpbGwgYmUg ZGV0ZWN0ZWQgYXMgYSBkdXBsaWNhdGU6IHRoZSB1bmlxdWUgY2hlY2sgcmVhY2hlcworLS0g dGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgZnJlc2ggbGVhZiwgd2hpY2ggcG9pbnRzIGRp cmVjdGx5IGF0IGl0IChubyBob3AKKy0tIGFmdGVyIGl0LCBzbyB0aGUgb3ZlcmxhcCBpcyBl bXB0eSBhbmQgdGhlIGxlYWYgaXMgYSBnZW51aW5lIGNvbmZsaWN0KTsgdGhlCistLSBzdGFs ZSAxLjAgbGVhZiBpcyBza2lwcGVkIGJlY2F1c2UgdGhlIGstY2hhbmdpbmcgaG9wIG92ZXJs YXBzIHRoZSB1bmlxdWUKKy0tIGluZGV4J3MgYXR0cmlidXRlLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdW51bSAoayBudW1lcmljIFVOSVFVRSwgaiBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfdW51bV9qIE9O IGhpX3VudW0oaik7ICAgICAgICAgICAgIC0tIDJuZCBpbmRleGVkIGF0dHIsIGtlcHQgZml4 ZWQKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEwMCk7CitVUERBVEUgaGlf dW51bSBTRVQgayA9IDEuMDAgV0hFUkUgaiA9IDEwMDsgICAgICAgIC0tIEhPVC1pbmRleGVk OiAxLjAgLT4gMS4wMAorU0VMRUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2lu ZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfdW51bScp OworLS0gQSBudW1lcmljYWxseS1lcXVhbCBpbnNlcnQgbXVzdCBjb25mbGljdCAodGhlIGZy ZXNoIGxlYWYgY2F0Y2hlcyBpdCk6CitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4w LCAxKTsgICAgICAgICAgICAgIC0tIGV4cGVjdCBkdXBsaWNhdGUga2V5IGVycm9yCistLSBB IGdlbnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBo aV91bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRF UiBCWSBqOworRFJPUCBUQUJMRSBoaV91bnVtOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE3LiBDUkVBVEUgSU5ERVggYW5kIFJFSU5ERVggb3ZlciBsaXZlIEhPVC1pbmRl eGVkIGNoYWlucworLS0KKy0tIEEgZnJlc2hseSBidWlsdCBvciByZWJ1aWx0IGluZGV4IG11 c3QgcmVmbGVjdCBjdXJyZW50IHZhbHVlcywgbmV2ZXIgYQorLS0gc3RhbGUgY2hhaW4gbWVt YmVyOiB0aGUgYnVpbGQgc2NhbnMgbGl2ZSB0dXBsZXMgb25seSBhbmQgcG9pbnRzIGVhY2gK Ky0tIEhPVC1pbmRleGVkIGxpdmUgdHVwbGUncyBlbnRyeSBhdCBpdHMgb3duIFRJRCwgc28g dGhlIG5ldyBlbnRyaWVzIGhhdmUgbm8KKy0tIGhvcCBhZnRlciB0aGVtIGFuZCB0aGUgY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGtlZXBzIHRoZW0uCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWluZGV4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9y ZWluZGV4X2EgT04gaGlfcmVpbmRleChhKTsKK0lOU0VSVCBJTlRPIGhpX3JlaW5kZXggU0VM RUNUIGcsIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9y ZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQg b24gYQorVVBEQVRFIGhpX3JlaW5kZXggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAg ICAtLSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAg QVMgbWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0 YXRzKCdoaV9yZWluZGV4Jyk7CistLSBCdWlsZCBhIE5FVyBpbmRleCBhbmQgUkVJTkRFWCB0 aGUgZXhpc3Rpbmcgb25lIG92ZXIgdGhlIGxpdmUgY2hhaW5zLgorQ1JFQVRFIElOREVYIGhp X3JlaW5kZXhfYiBPTiBoaV9yZWluZGV4KGIpOworUkVJTkRFWCBJTkRFWCBoaV9yZWluZGV4 X2E7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9y ZWluZGV4IFdIRVJFIGEgPSAyMDQ7ICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gaWQgNAor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBv YnNvbGV0ZSB2YWx1ZSAtPiAwCitTRUxFQ1QgaWQgRlJPTSBoaV9yZWluZGV4IFdIRVJFIGIg PSAyOyAgICAgICAgICAgIC0tIHZpYSBmcmVzaGx5IGJ1aWx0IGluZGV4IC0+IDIKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9yZWluZGV4OworCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIgbGl2ZSBIT1Qt aW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxsIGluZGV4ZXMg YXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNlcnZlZAorLS0g SE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4gIFZBQ1VVTSBv ZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUgd2l0aG91dCBl cnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0tIHJlZGlyZWN0 IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFjdG9y ID0gNTAsIGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9k cm9waWR4X2EgT04gaGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VM RUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9w aWR4IFNFVCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24g YQorVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAt LSBhZ2FpbiAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMg bWFkZV9ob3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRz KCdoaV9kcm9waWR4Jyk7CistLSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZl ZCBIT1QtaW5kZXhlZCBtZW1iZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElO REVYIGhpX2Ryb3BpZHhfYTsKK0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJB SU5UIGhpX2Ryb3BpZHhfcGtleTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRl eCBwYXRoOyB0d28gcGFzc2VzIGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFp bSBndWFyZCBhcyB3ZWxsLgorVkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlk eDsKKy0tIFJlYWRzIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25l LgorU0VMRUNUIGlkLCBhIEZST00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKK0RST1AgVEFC TEUgaGlfZHJvcGlkeDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4gUmUt Y29sbGFwc2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZBQ1VV TXMKKy0tCistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQgZGF0 YSByZWRpcmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYgKHNv IHRoZSBzdGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgorLS0g cmVjZWl2ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFwc2Ug dGhlIGNoYWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxpdmUg dHVwbGUsIG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBBIHN1 YnNlcXVlbnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBsZWF2 ZSB0aGUKKy0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5vdGhp bmcpLCBhbmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246IGFu IGVhcmxpZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCistLSBt ZW1iZXIgd2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4pCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNU UyBhbWNoZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklNQVJZ IEtFWSwgYSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFibGVk ID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBPTiBoaV9yZWNvbGxh cHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMgKDEsIDEpOworLS0g Rmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVuIHBydW5lIHRvIGEg ZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlfcmVjb2xsYXBzZSBT RVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAz IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFw c2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRhdGVzIGV4dGVuZCB0 aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhlIG5leHQgcHJ1bmUg cmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmlyc3QgbGl2ZQorLS0g dHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VU IGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNSBX SEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNl OworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNoYWluOyB0aGUgcmUt cG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdvIHBhc3NlcyBhbHNv IGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFzcy4KK1ZBQ1VVTSBo aV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBIZWFwIG11c3QgYmUg c3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29ycnVwdGlvbikuCitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2UnKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlY29sbGFwc2UgV0hF UkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZhbHVlIC0+IGlkIDEKK1NFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDM7ICAtLSBvYnNvbGV0ZSB2YWx1ZSAt PiAwCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX3JlY29s bGFwc2UgT1JERVIgQlkgaWQ7CitEUk9QIFRBQkxFIGhpX3JlY29sbGFwc2U7CisKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjAuIEluZGV4IGRlbGV0aW9uIG92ZXIgYW4gZW50 cnkgdGhhdCBwb2ludHMgYXQgYSBkYXRhLXJlZGlyZWN0IHJvb3QKKy0tCistLSBBIGRhdGEg cmVkaXJlY3QgaXMgYW4gTFBfUkVESVJFQ1QgdGhhdCBjYXJyaWVzIGEgYml0bWFwLCBzbyBp dCByZXBvcnRzCistLSBscF9sZW4gPiAwIChJdGVtSWRIYXNTdG9yYWdlIHRydWUpIGV2ZW4g dGhvdWdoIGl0IGlzIG5vdCBhIG5vcm1hbCB0dXBsZS4KKy0tIGluZGV4X2RlbGV0ZV9jaGVj a19odGlkIG11c3QgdHJlYXQgaXQgYXMgYSByZWRpcmVjdCwgbm90IHJlYWQgaXRzIGJsb2Ig YXMgYQorLS0gSGVhcFR1cGxlSGVhZGVyLiAgUmVwcm9kdWNlOiBjb2xsYXBzZSBhIGNoYWlu IHJvb3QgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBrZWVwaW5nIHRoZSBzdGFsZSBs ZWFmIHRoYXQgcG9pbnRzIGF0IGl0IChJTkRFWF9DTEVBTlVQIG9mZiksIHRoZW4gaW5zZXJ0 CistLSBtYW55IGR1cGxpY2F0ZXMgb2YgdGhlIHN0YWxlIGtleSBzbyBidHJlZSBib3R0b20t dXAgZGVsZXRpb24gcnVucworLS0gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzIG92ZXIgdGhh dCBzdGFsZSBlbnRyeS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX2lkZGVsIChpZCBpbnQsIGEgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAsIGF1dG92 YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9hIE9OIGhp X2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsKK1VQREFU RSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAgLS0gSE9U LWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsg ICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2Zm KSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRpcmVjdCwg a2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBzdGFsZSBr ZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0aW9uLCB3 aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRhLXJlZGly ZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0IG5vdCBj cmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwgU0VMRUNU IGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBoaV9pZGRl bDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlk ID0gMTsgICAgICAgICAgICAgLS0gY3VycmVudCB2YWx1ZSAtPiBhID0gMworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2lkZGVsOworCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDIxLiBBIGNoYW5nZSB0byBhIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9u LWJ0cmVlIGluZGV4IEFNIGlzIEhPVC1pbmRleGVkCistLQorLS0gQSBIT1QtaW5kZXhlZCB1 cGRhdGUgbGVhdmVzIGEgc3RhbGUgcHJlLXVwZGF0ZSBsZWFmIHRoYXQgdGhlIHJlYWQgc2lk ZQorLS0gZmlsdGVycyB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2gg aXMgYWNjZXNzLW1ldGhvZCBhZ25vc3RpYy4KKy0tIEEgY29sdW1uIGNvdmVyZWQgYnkgYSBu b24tYnRyZWUgaW5kZXggKGhlcmUgYSBHaVNUIGluZGV4IG9uIGEgcG9pbnQgY29sdW1uKQor LS0gaXMgdGhlcmVmb3JlIEhPVC1pbmRleGVkIGxpa2UgYW55IG90aGVyLCBhbmQgdGhlIEdp U1QgaW5kZXggc3RpbGwgcmV0dXJucworLS0gY29ycmVjdCByZXN1bHRzIGFjcm9zcyB0aGUg Y2hhaW4uICBBIGNoYW5nZSB0byBhIGJ0cmVlLW9ubHkgY29sdW1uIG9uIHRoZQorLS0gc2Ft ZSB0YWJsZSBpcyBsaWtld2lzZSBIT1QtaW5kZXhlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX25vbmJ0cmVlIChpZCBpbnQgUFJJTUFSWSBLRVksIHRh ZyBpbnQsIHAgcG9pbnQpCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJ TkRFWCBoaV9ub25idHJlZV90YWcgT04gaGlfbm9uYnRyZWUgKHRhZyk7ICAgICAgICAgIC0t IGJ0cmVlIGluZGV4CitDUkVBVEUgSU5ERVggaGlfbm9uYnRyZWVfcCBPTiBoaV9ub25idHJl ZSBVU0lORyBnaXN0IChwKTsgICAtLSBHaVNULCBub24tYnRyZWUKK0lOU0VSVCBJTlRPIGhp X25vbmJ0cmVlIFNFTEVDVCBnLCBnLCBwb2ludChnLCBnKQorICAgIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwMCkgZzsKKworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVyZWQgY29sdW1u IGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUgaGlfbm9uYnRy ZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOworU0VMRUNUIGhv dF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX25v bmJ0cmVlJyk7CisKKy0tIFRoZSBHaVNUIGluZGV4IG11c3QgcmV0dXJuIGNvcnJlY3QgcmVz dWx0czogdGhlIG9sZCBwb3NpdGlvbnMgYXJlIGdvbmUgYW5kCistLSBldmVyeSByb3cgaXMg Zm91bmQgYXQgaXRzIG5ldyBwb3NpdGlvbiAobm8gc3RhbGUgbGVhZiBzdXJmYWNlcyBhbiBv bGQga2V5KS4KK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBB UyBhdF9vbGRfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJv eChwb2ludCgwLCAwKSwgcG9pbnQoMzAwLCAzMDApKTsKK1NFTEVDVCBjb3VudCgqKSBBUyBh dF9uZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJveChw b2ludCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworUkVTRVQgZW5hYmxlX3Nl cXNjYW47CisKKy0tIENoYW5naW5nIHRoZSBidHJlZS1vbmx5IGNvbHVtbiAocCB1bmNoYW5n ZWQpIHN0YXlzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCB0YWcgPSB0 YWcgKyAxMDAwOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGJ0cmVlX2NvbF9pc19ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfbm9uYnRyZWUnKTsKK0RST1AgVEFCTEUgaGlf bm9uYnRyZWU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjIuIEFCQSBvbiBh IHVuaXF1ZSBrZXkgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M6IGEga2V5IGN5Y2xl ZCBhd2F5CistLSBhbmQgYmFjayBtdXN0IHN0aWxsIGNvbGxpZGUgd2l0aCBhbm90aGVyIHJv dyB0aGF0IGhvbGRzIGl0LiAgVGhlIHN0YWxlCistLSBsZWF2ZXMgbGVmdCBieSB0aGUgY3lj bGUgbXVzdCBub3QgbGV0IGEgZ2VudWluZSBkdXBsaWNhdGUgc2xpcCBwYXN0IHRoZQorLS0g dW5pcXVlbmVzcyBjaGVjayAtLSB0aGUgcmVhZC1zaWRlIHJlY2hlY2sgY29tcGFyZXMgdGhl IGxpdmUga2V5LCBub3QganVzdAorLS0gYSBjaGFuZ2VkLWF0dHJpYnV0ZSBiaXRtYXAuCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGsgaW50LCB2 IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaGlf YWJhX2sgT04gaGlfYWJhIChrKTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEg KHYpOworSU5TRVJUIElOVE8gaGlfYWJhIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApOworCist LSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNv IGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQgYW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVz IGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsK K1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4 ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2FiYScp OworCistLSByb3cxIGlzIGxpdmUgYXQgayA9IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRv IGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUKKy0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBz dGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9 IDEgV0hFUkUgdiA9IDIwOworRFJPUCBUQUJMRSBoaV9hYmE7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gMjMuIFBhcnRpYWwgaW5kZXggd2hvc2UgcHJlZGljYXRlIHJlZmVy ZW5jZXMgYSBub24ta2V5IGNvbHVtbi4gIEZsaXBwaW5nIHRoZQorLS0gcm93IG91dCBvZiB0 aGUgcHJlZGljYXRlIHdoaWxlIGxlYXZpbmcgdGhlIGluZGV4ZWQga2V5IHVuY2hhbmdlZCBp cworLS0gSE9ULWluZGV4ZWQ6IHRoZSBwcmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhl IGluZGV4J3MgYXR0cmlidXRlIHNldCwgc28KKy0tIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBi aXRtYXAgZHJvcHMgdGhlIG5vdy1zdGFsZSBwYXJ0aWFsLWluZGV4IGVudHJ5IG9uIHJlYWQK Ky0tIChubyB2YWx1ZSByZWNoZWNrIGlzIGludm9sdmVkKS4KKy0tIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnRwcmVkIChpZCBpbnQgUFJJTUFSWSBLRVks IGsgaW50LCBhY3RpdmUgYm9vbGVhbikKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX3BhcnRwcmVkX2sgT04gaGlfcGFydHByZWQgKGspIFdIRVJFIGFj dGl2ZTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRwcmVkIFZBTFVFUyAoMSwgMTAwLCB0cnVlKTsK KworLS0gRmxpcCB0aGUgcHJlZGljYXRlIGNvbHVtbiAnYWN0aXZlJyB0cnVlIC0+IGZhbHNl OyB0aGUgaW5kZXgga2V5IGsgaXMKKy0tIHVuY2hhbmdlZC4gIFRoZSByb3cgbm8gbG9uZ2Vy IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlLCBzbyBpdHMgcGFydGlhbC1pbmRleAorLS0gZW50 cnkgbXVzdCBiZSByZW1vdmVkLCBub3QgbGVmdCBwb2ludGluZyBpbnRvIHRoZSBjaGFpbi4K K1VQREFURSBoaV9wYXJ0cHJlZCBTRVQgYWN0aXZlID0gZmFsc2UgV0hFUkUgaWQgPSAxOwor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdCwgaG90X2lk eCBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydHByZWQnKTsKKworLS0gVGhlIHBhcnRpYWwg aW5kZXggbXVzdCBub3Qgc3VyZmFjZSB0aGUgcm93IG5vdyB0aGF0IGFjdGl2ZSA9IGZhbHNl LgorLS0gQSBxdWVyeSB3aG9zZSBxdWFsIGV4YWN0bHkgbWF0Y2hlcyB0aGUgcGFydGlhbCBw cmVkaWNhdGUgdXNlcyB0aGUgaW5kZXgKKy0tIHdpdGhvdXQgcmUtZmlsdGVyaW5nICdhY3Rp dmUnIG9uIHRoZSBoZWFwLCBzbyBhIHN0YWxlIGVudHJ5IHdvdWxkIHN1cmZhY2UuCitTRVQg ZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitF WFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFj dGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFj dGl2ZTsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsKK1JFU0VU IGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxF IGhpX3BhcnRwcmVkOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI0LiBSZWNs YWltICsgc3R1YiBtaXguICBSZXBlYXRlZCB1cGRhdGVzIG9mIGNvbHVtbiBhIGZvbGxvd2Vk IGJ5IGFuIHVwZGF0ZQorLS0gb2YgY29sdW1uIGIgYnVpbGQgYSBjaGFpbiB3aG9zZSBwcnVu ZSByZWNsYWltcyB0aGUgbWVtYmVycyB3aG9zZSBjaGFuZ2Ugd2FzCistLSBzdXBlcnNlZGVk IChhIGNoYW5nZWQgYWdhaW4pIGFuZCBrZWVwcyBzdHVicyBmb3IgdGhvc2UgdGhhdCB3ZXJl IG5vdCwgc28gYQorLS0gcm9vdCByZWRpcmVjdCBlbmRzIHVwIHBvaW50aW5nIGF0IGEgc3R1 YiBhbmQgYSBsYXRlciB3YWxrIGNyb3NzZXMgbWlkLWNoYWluCistLSBzdHVicy4gIFJlYWRz IHRocm91Z2ggZWFjaCBpbmRleCBhbmQgYW1jaGVjayBtdXN0IHN0YXkgY29ycmVjdCBhY3Jv c3MgdGhlCistLSBjb2xsYXBzZSwgYW5kIGEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUg ZXhpc3Rpbmcgc3R1YnMgd2l0aG91dCBzZXZlcmluZworLS0gdGhlIGNoYWluLgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfc3R1Ym1peCAoaWQgaW50IFBS SU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3Zh Y3V1bV9lbmFibGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYSBPTiBo aV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2IgT04gaGlfc3R1Ym1p eCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitV UERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2Vz IGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOyAgIC0tIGNo YW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBoaV9zdHVibWl4IFNFVCBiID0g MTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFDVVVNIGhpX3N0dWJtaXg7CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMjsgICAtLSBj dXJyZW50IGEKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0dWJtaXggV0hFUkUgYiA9IDEw MTsgIC0tIGN1cnJlbnQgYgorU0VMRUNUIGlkIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0g MTA7ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVwdGlvbiBhY3Jvc3Mgc3R1YnMKKy0t IEEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rpbmcgc3R1YnMgKG5vIHByaW9y WG1heCBzZXZlcikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDEzIFdIRVJFIGlkID0g MTsKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBhLCBiIEZST00gaGlfc3R1Ym1p eCBXSEVSRSBhID0gMTM7CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJt aXgnKTsKK0RST1AgVEFCTEUgaGlfc3R1Ym1peDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyNS4gRXhjbHVzaW9uLWNvbnN0cmFpbnQgdGFibGVzIGFyZSBIT1QtaW5kZXhl ZC1lbGlnaWJsZS4KKy0tCistLSBBbiBleGNsdXNpb24gY29uc3RyYWludCBpcyBlbmZvcmNl ZCBieSBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQsCistLSB3aGljaCBy ZWNoZWNrcyBlYWNoIGNhbmRpZGF0ZSBhZ2FpbnN0IHRoZSBsaXZlIHR1cGxlJ3MgY3VycmVu dCBpbmRleC1mb3JtCistLSB3aXRoIHRoZSBjb25zdHJhaW50J3Mgb3duIG9wZXJhdG9ycywg c28gYSBzdGFsZSBlbnRyeSBsZWZ0IGJ5IGEgSE9ULWluZGV4ZWQKKy0tIHVwZGF0ZSBpcyBz a2lwcGVkIHdoaWxlIHRoZSBsaXZlIGtleSBhbHdheXMgaGFzIGl0cyBvd24gZW50cnkuICBV cGRhdGluZyBhCistLSBub24tY29uc3RyYWluZWQgaW5kZXhlZCBjb2x1bW4gaXMgSE9ULWlu ZGV4ZWQgKHRoZSBHaVNUIGV4Y2x1c2lvbiBpbmRleCBpcworLS0gc2tpcHBlZCksIGFuZCB0 aGUgY29uc3RyYWludCBzdGF5cyBjb3JyZWN0LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitDUkVBVEUgVEFCTEUgaGlfZXhjbCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHRhZyBpbnQsCisgICAgZHVyaW5nIGludDRyYW5nZSwKKyAgICBFWENMVURFIFVTSU5HIGdp c3QgKGR1cmluZyBXSVRIICYmKQorKSBXSVRIIChmaWxsZmFjdG9yID0gMTApOworQ1JFQVRF IElOREVYIGhpX2V4Y2xfdGFnIE9OIGhpX2V4Y2wodGFnKTsKK0lOU0VSVCBJTlRPIGhpX2V4 Y2wgVkFMVUVTICgxLCAxMDAsIGludDRyYW5nZSgxLCAxMCkpLCAoMiwgMjAwLCBpbnQ0cmFu Z2UoMjAsIDMwKSk7CisKKy0tIFVwZGF0ZSBhIG5vbi1jb25zdHJhaW5lZCBpbmRleGVkIGNv bHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGluZGV4CistLSBhbmQgUEsgc2tp cHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgc3RpbGwgZW5mb3JjZWQu CitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9j b3VudCgnaGlfZXhjbCcpOworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDMsIDMwMCwg aW50NHJhbmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0xJ3MgKDEsMTApCisKKy0tIE1v dmUgaWQ9MSdzIHJhbmdlIGF3YXkgKHRoaXMgdXBkYXRlcyB0aGUgR2lTVCBpbmRleCwgbGVh dmluZyBhIHN0YWxlIGVudHJ5CistLSBmb3IgdGhlIG9sZCAoMSwxMCkgcmFuZ2UpLiAgQSBy YW5nZSBvdmVybGFwcGluZyBvbmx5IHRoZSBPTEQgcmFuZ2Ugbm93CistLSBpbnNlcnRzIGNs ZWFubHkgKHRoZSBzdGFsZSBlbnRyeSBpcyBza2lwcGVkKTsgb25lIG92ZXJsYXBwaW5nIHRo ZSBORVcgcmFuZ2UKKy0tIHN0aWxsIGNvbmZsaWN0cy4KK1VQREFURSBoaV9leGNsIFNFVCBk dXJpbmcgPSBpbnQ0cmFuZ2UoMTAwLCAxMTApIFdIRVJFIGlkID0gMTsKK0lOU0VSVCBJTlRP IGhpX2V4Y2wgVkFMVUVTICg0LCA0MDAsIGludDRyYW5nZSg1LCAxNSkpOyAgIC0tIG9ubHkg b3ZlcmxhcHBlZCBvbGQgcmFuZ2U6IE9LCitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAo NSwgNTAwLCBpbnQ0cmFuZ2UoMTA1LCAxMTUpKTstLSBvdmVybGFwcyBuZXcgKDEwMCwxMTAp OiBjb25mbGljdAorRFJPUCBUQUJMRSBoaV9leGNsOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDI2LiBUT0FTVCBpbnRlcmFjdGlvbi4gIEFuIGluZGV4ZWQgY29sdW1uIHN0 b3JlZCBvdXQtb2YtbGluZSBtdXN0IGJlaGF2ZQorLS0gY29ycmVjdGx5IGFjcm9zcyBIT1Qt aW5kZXhlZCB1cGRhdGVzOiBhbiBlbnRyeSBrZXB0IGFjcm9zcyBhbiB1cGRhdGUgb2YgYQor LS0gZGlmZmVyZW50IGNvbHVtbiBzdGlsbCByZXNvbHZlcyB0byB0aGUgKHVuY2hhbmdlZCkg dG9hc3RlZCB2YWx1ZSwgYW5kIGFmdGVyCistLSB0aGUgdG9hc3RlZCBjb2x1bW4gaXRzZWxm IGlzIGNoYW5nZWQgdGhlIHN0YWxlIGVudHJ5IGlzIGRyb3BwZWQgYnkgdGhlCistLSBjcm9z c2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZhbHVlIGNvbXBhcmlzb24gb3IgZGV0b2FzdGlu ZyBpcyBuZWVkZWQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfdG9hc3QgKGlkIGludCBQUklNQVJZIEtFWSwgYmlnIHRleHQsIHRhZyBpbnQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitBTFRFUiBUQUJMRSBoaV90b2FzdCBBTFRFUiBDT0xVTU4g YmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFMOyAgLS0gbm8gY29tcHJlc3Npb24KK0NSRUFURSBJ TkRFWCBoaV90b2FzdF9iaWcgT04gaGlfdG9hc3QgKGJpZyk7CitDUkVBVEUgSU5ERVggaGlf dG9hc3RfdGFnIE9OIGhpX3RvYXN0ICh0YWcpOworSU5TRVJUIElOVE8gaGlfdG9hc3QgVkFM VUVTICgxLCByZXBlYXQoJ0EnLCAyMDAwKSwgMTApOworLS0gVGhlIGJpZyB2YWx1ZSBpcyBz dG9yZWQgb3V0LW9mLWxpbmUuCitTRUxFQ1QgcGdfY29sdW1uX3NpemUoYmlnKSA+IDE1MDAg QVMgYmlnX2lzX2V4dGVybmFsIEZST00gaGlfdG9hc3QgV0hFUkUgaWQgPSAxOworLS0gSE9U LWluZGV4ZWQgdXBkYXRlIG9mIHRhZyBsZWF2ZXMgYmlnIChhbmQgaXRzIGluZGV4IGVudHJ5 KSB1bmNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIHRhZyA9IDExIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIEZST00g Z2V0X2hpX2NvdW50KCdoaV90b2FzdCcpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGlkLCB0YWcsIGxlbmd0aChi aWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdBJywgMjAwMCk7CistLSBI T1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRvYXN0ZWQgaW5kZXhlZCBjb2x1bW4gaXRzZWxm OiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cgc3RhbGUgYmVjYXVzZSB0aGUgY3Jvc3NlZC1h dHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBjaGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNF VCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgaWQgRlJP TSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAwKTsgICAtLSBzdGFsZTog MCByb3dzCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmln ID0gcmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CitSRVNFVCBlbmFibGVfYml0bWFw c2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVh cGFtKCdoaV90b2FzdCcpOworRFJPUCBUQUJMRSBoaV90b2FzdDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSAyNy4gQUJBIG9uIGFuIGluZGV4ZWQgY29sdW1uLiAgQSBIT1Qt aW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQKKy0tIGNvbHVtbiB0byBhIHZh bHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkgaGVsZCBsZWF2ZXMgdHdvIGxl YXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNoYWluLXJlc29sdmluZyB0byB0 aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJlY2hlY2sgY2Fubm90IHRlbGwg dGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cgdHdpY2U7IHRoZQorLS0gY3Jv c3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSBhbmNlc3RvciBsZWFmIChp dHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5nIGhvcHMpIGFuZCBrZWVwcyBv bmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5kZXggc2NhbgorLS0gcmV0dXJu cyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVzdCBub3QgY2hhbmdlIHRoYXQu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9hYmEgKGlkIGlu dCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlf YWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEs IDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSBpZCA9IDE7ICAgLS0gSE9U LWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMSBX SEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3ljbGVkIGJhY2sgKEFCQSkKK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsK K1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlfYWJhIFdIRVJFIGsgPSAxOyAg ICAgLS0gZXhhY3RseSAxCitTRUxFQ1QgY291bnQoKikgQVMgazNfZ29uZSBGUk9NIGhpX2Fi YSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3BwZWQpCitSRUlOREVYIElOREVY IGhpX2FiYV9rOworU0VMRUNUIGNvdW50KCopIEFTIGsxX2FmdGVyX3JlaW5kZXggRlJPTSBo aV9hYmEgV0hFUkUgayA9IDE7ICAtLSBzdGlsbCAxCitSRVNFVCBlbmFibGVfYml0bWFwc2Nh bjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICogRlJPTSB2ZXJpZnlfaGVhcGFt KCdoaV9hYmEnKTsKK0RST1AgVEFCTEUgaGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDI4LiBQYXJ0aWFsIGluZGV4LCBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQg YnV0IHRoZSByb3cgU1RBWVMgaW4gdGhlIGluZGV4CistLSAocHJlZGljYXRlIHN0aWxsIHRy dWUsIGtleSB1bmNoYW5nZWQpLiAgVGhlIHVwZGF0ZSBpcyBIT1QtaW5kZXhlZDsgc2VsZWN0 aXZlCistLSBtYWludGVuYW5jZSByZS1pbnNlcnRzIGEgZnJlc2ggZW50cnkgKHRoZSBwcmVk aWNhdGUgY29sdW1uIGNoYW5nZWQgYW5kIHN0aWxsCistLSBob2xkcyksIHNvIHRoZSByb3cg aXMgc3RpbGwgcmV0dXJuZWQgLS0gdGhlIGJpdG1hcCBkcm9wcyB0aGUgb2xkZXIgZW50cnkg YW5kCistLSB0aGUgZnJlc2ggb25lIHJlLXN1cHBsaWVzIGl0LiAgR3VhcmRzIGFnYWluc3Qg YSAibG9zdCByb3ciIGZyb20gb3Zlci1lYWdlcgorLS0gZHJvcHBpbmcuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0c3RheSAoaWQgaW50IFBSSU1B UlkgS0VZLCBrIGludCwgbiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUg SU5ERVggaGlfcGFydHN0YXlfayBPTiBoaV9wYXJ0c3RheSAoaykgV0hFUkUgbiA+IDA7CitD UkVBVEUgSU5ERVggaGlfcGFydHN0YXlfaWQyIE9OIGhpX3BhcnRzdGF5IChpZCk7CitJTlNF UlQgSU5UTyBoaV9wYXJ0c3RheSBWQUxVRVMgKDEsIDUsIDMpOworVVBEQVRFIGhpX3BhcnRz dGF5IFNFVCBuID0gNyBXSEVSRSBpZCA9IDE7ICAgLS0gbiAzLT43LCBzdGlsbCA+IDAsIGsg dW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1Qg aG90X2lkeCA+IDAgQVMgc3RheV9pc19ob3RfaW5kZXhlZCBGUk9NIGdldF9oaV9jb3VudCgn aGlfcGFydHN0YXknKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBzdGF5X3Jvd3MgRlJPTSBo aV9wYXJ0c3RheSBXSEVSRSBrID0gNSBBTkQgbiA+IDA7ICAgLS0gd2FudCAxCitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBo aV9wYXJ0c3RheTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyOS4gUGFydGl0 aW9uZWQgdGFibGUuICBBIHdpdGhpbi1wYXJ0aXRpb24gVVBEQVRFIG9mIG9uZSBpbmRleGVk IGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQgb24gdGhlIGxlYWYgcGFydGl0aW9uJ3MgaGVh cCBleGFjdGx5IGFzIGZvciBhIG5vbi1wYXJ0aXRpb25lZAorLS0gdGFibGU7IGEgY3Jvc3Mt cGFydGl0aW9uIHVwZGF0ZSBpcyBhIGRlbGV0ZStpbnNlcnQgYW5kIG5ldmVyIEhPVC4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3BhcnQgKGlkIGludCwg YSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlkKTsKK0NSRUFURSBUQUJMRSBo aV9wYXJ0MSBQQVJUSVRJT04gT0YgaGlfcGFydCBGT1IgVkFMVUVTIEZST00gKDApIFRPICgx MDApCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0 X2EgT04gaGlfcGFydCAoYSk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9iIE9OIGhpX3BhcnQg KGIpOworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEsIDEwLCAyMCk7CitVUERBVEUg aGlfcGFydCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBvbmUgaW5kZXhlZCBjb2ws IHdpdGhpbiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK K1NFTEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hp X2NvdW50KCdoaV9wYXJ0MScpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGExMSBGUk9NIGhp X3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQorU0VMRUNUIGNvdW50KCopIEFTIGEx MCBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDEwOyAgIC0tIHdhbnQgMCAoc3RhbGUgZHJvcHBl ZCkKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQxJyk7CitEUk9QIFRBQkxFIGhp X3BhcnQ7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMzAuIE5vbi1idHJlZSBh Y2Nlc3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgYWNjZXNzLW1l dGhvZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLCBzbyBh bnkgaW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkLiAgSGFzaCBpcyB0aGUg c2hhcnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhlIGhlYXAgdmFsdWUsCistLSB3 aGljaCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFsdWUgY3ljbGVkIGF3YXkgYW5k IGJhY2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9y IHNvIHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLgorLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQgaW50IFBSSU1BUlkgS0VZLCB2 IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf aGFzaF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitDUkVBVEUgSU5ERVggaGlfaGFz aF93IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlfaGFzaCBWQUxVRVMgKDEsIDEw LCAxMDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERB VEUgaGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsgICAtLSBBQkE6IDEwIC0+IDk5 IC0+IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgp OworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhhc2hfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRf aGlfY291bnQoJ2hpX2hhc2gnKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBl bmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBoYXNoX3YxMCBG Uk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQgMSAobm8gZHVwbGljYXRlKQor U0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlfaGFzaCBXSEVSRSB2ID0gOTk7 ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47 CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlfaGFzaDsKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAzMS4gRERMIGFmdGVyIGEgSE9ULWluZGV4ZWQgY2hh aW4gZXhpc3RzLiAgVGhlIHBlci1ob3AgbW9kaWZpZWQtYXR0cnMKKy0tIGJpdG1hcCBvbiB0 aGUgcGFnZSBpcyBrZXllZCBieSBwaHlzaWNhbCBhdHRyaWJ1dGUgbnVtYmVyIGFuZCBzaXpl ZCBieSB0aGUKKy0tIHJlbGF0aW9uJ3MgbmF0dHMgQVQgV1JJVEUgVElNRS4gIEluZGV4ZXMg YWRkZWQvZHJvcHBlZCBhZnRlciB0aGUgY2hhaW4KKy0tIGZvcm1zLCBhbmQgQUREL0RST1Ag Q09MVU1OLCBtdXN0IG5vdCBjb3JydXB0IHRoZSByZWFkLXNpZGUgc3RhbGVuZXNzIHRlc3Qu CistLSBUaGUgc2hhcnAgY2FzZSBpcyBBREQgQ09MVU1OIGNyb3NzaW5nIGFuIDgtYXR0cmli dXRlIGJvdW5kYXJ5LCB3aGljaCBncm93cworLS0gY2VpbChuYXR0cy84KTogcmVhZGVycyBt dXN0IGxvY2F0ZSBlYWNoIGhvcCdzIGJpdG1hcCBmcm9tIHRoYXQgaG9wJ3Mgb3duCistLSB3 cml0ZS10aW1lIG5hdHRzIChIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyAvIHRoZSBzdHViJ3Mg c3Rhc2hlZCBuYXR0cyksIG5vdAorLS0gdGhlIHJlbGF0aW9uJ3MgY3VycmVudCBuYXR0cy4K Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRXhhY3RseSA4IGF0dHJpYnV0ZXMgKGMx Li5jNyArIHBheWxvYWQpIHNvIGFkZGluZyB0aGUgOXRoIGZsaXBzIHRoZSBiaXRtYXAKKy0t IGZyb20gMSBieXRlIHRvIDIuICBjNyBpcyB0aGUgY29sdW1uIHdlIGNodXJuOyBjMiBpcyBh biB1bmNoYW5nZWQgaW5kZXhlZAorLS0gY29sdW1uIHdob3NlIGxlYWYgbXVzdCBzdGF5IGN1 cnJlbnQuCitDUkVBVEUgVEFCTEUgaGlfZGRsICgKKyAgICBjMSBpbnQgUFJJTUFSWSBLRVks IGMyIGludCwgYzMgaW50LCBjNCBpbnQsCisgICAgYzUgaW50LCBjNiBpbnQsIGM3IGludCwg cGF5bG9hZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCwgYXV0b3ZhY3V1bV9lbmFi bGVkID0gZmFsc2UpOworQ1JFQVRFIElOREVYIGhpX2RkbF9jMiBPTiBoaV9kZGwoYzIpOwor Q1JFQVRFIElOREVYIGhpX2RkbF9jNyBPTiBoaV9kZGwoYzcpOworSU5TRVJUIElOVE8gaGlf ZGRsIFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgNDAsIDUwLCA3MCwgJ3AnKTsKKworLS0gRm9y bSBhIEhPVC1pbmRleGVkIGNoYWluIG9uIGM3IEJFRk9SRSBhbnkgZnVydGhlciBEREwuCitV UERBVEUgaGlfZGRsIFNFVCBjNyA9IDcxIFdIRVJFIGMxID0gMTsKK1VQREFURSBoaV9kZGwg U0VUIGM3ID0gNzIgV0hFUkUgYzEgPSAxOworCistLSAoYSkgQ1JFQVRFIElOREVYIGFmdGVy IHRoZSBjaGFpbiBleGlzdHM6IHRoZSBuZXcgaW5kZXggaXMgYnVpbHQgYWdhaW5zdCB0aGUK Ky0tIGxpdmUgdHVwbGUgdW5kZXIgaXRzIG93biBUSUQsIHNvIGl0cyBlbnRyeSBpcyBuZXZl ciBzdGFsZS4KK0NSRUFURSBJTkRFWCBoaV9kZGxfYzMgT04gaGlfZGRsKGMzKTsKKworLS0g KGIpIEFERCBDT0xVTU4gY3Jvc3NpbmcgdGhlIDgtYXR0cmlidXRlIGJvdW5kYXJ5IChuYXR0 cyA4IC0+IDkpLiAgRXhpc3RpbmcKKy0tIGhvcHMga2VlcCB0aGVpciAxLWJ5dGUgYml0bWFw czsgdGhlIHJlbGF0aW9uIG5vdyB3YW50cyAyLiAgUmVhZHMgdGhyb3VnaCB0aGUKKy0tIG9s ZCBjaGFpbiBtdXN0IHN0aWxsIGJlIGNvcnJlY3QuCitBTFRFUiBUQUJMRSBoaV9kZGwgQURE IENPTFVNTiBjOSBpbnQ7CitDUkVBVEUgSU5ERVggaGlfZGRsX2M5IE9OIGhpX2RkbChjOSk7 CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiA9IG9mZjsKKworLS0gTGl2ZSBjNyBp cyA3Mi4gIFRoZSBjNyBpbmRleCBtdXN0IHJldHVybiB0aGUgbGl2ZSByb3cgZm9yIDcyIGFu ZCBkcm9wIHRoZQorLS0gc3RhbGUgbGVhdmVzIGZvciA3MCBhbmQgNzEgKG9mZnNldHMgbWlz cmVhZCB3b3VsZCBjb3JydXB0IHRoaXMpLgorU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcy IEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitT RUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzBfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3MCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83MV9zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcxIEFORCBwYXlsb2FkIElTIE5P VCBOVUxMOworCistLSBjMiBuZXZlciBjaGFuZ2VkIGFjcm9zcyB0aGUgY2hhaW46IGl0cyBs ZWFmIG11c3QgTk9UIGJlIGp1ZGdlZCBzdGFsZSBldmVuCistLSB0aG91Z2ggYSBjcm9zc2Vk IGhvcCBjaGFuZ2VkIGM3LiAgQSBtaXNyZWFkIGJpdG1hcCBjb3VsZCBzcHVyaW91c2x5IGZs YWcgaXQuCitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfY3VycmVudCBGUk9NIGhpX2Rk bCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAoYykgQ29u dGludWUgY2h1cm5pbmcgYzcgQUZURVIgdGhlIEFERCBDT0xVTU46IHRoZSBuZXcgaG9wJ3Mg Yml0bWFwIGlzIHNpemVkCistLSBmb3IgbmF0dHMgOSAoMiBieXRlcyk7IHRoZSBvbGQgaG9w cyBhcmUgMSBieXRlLiAgQSBjaGFpbiB3aXRoIG1peGVkLXNpemUKKy0tIGJpdG1hcHMgbXVz dCBzdGlsbCByZXNvbHZlIGNvcnJlY3RseS4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzMg V0hFUkUgYzEgPSAxOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzczIEZST00gaGlfZGRs IFdIRVJFIGM3ID0gNzMgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQo KikgQVMgYzdfZXFfNzJfbm93X3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5E IHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChkKSBDb2xsYXBzZSB0aGUgY2hhaW4gdG8g c3R1YnMgdmlhIFZBQ1VVTSwgdGhlbiByZWFkIGFnYWluOiB0aGUgc3R1YiBtdXN0CistLSBw cmVzZXJ2ZSBpdHMgd3JpdGUtdGltZSBuYXR0cyBzbyBpdHMgYml0bWFwIHN0YXlzIGxvY2F0 YWJsZSBwb3N0LUFERCBDT0xVTU4uCitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDc0IFdIRVJF IGMxID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX2RkbDsKK1NFTEVDVCBj b3VudCgqKSBBUyBjN19lcV83NF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9l cV8xMF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9h ZCBJUyBOT1QgTlVMTDsKKworLS0gKGUpIERST1AgQ09MVU1OIGtlZXBzIHRoZSBhdHRudW0g c2xvdCAobm8gcmVudW1iZXIpLCBzbyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KK0FMVEVSIFRB QkxFIGhpX2RkbCBEUk9QIENPTFVNTiBjNDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19hZnRl cl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMgTk9UIE5V TEw7CitTRUxFQ1QgY291bnQoKikgQVMgYzJfYWZ0ZXJfZHJvcCBGUk9NIGhpX2RkbCBXSEVS RSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworCistLSAoZikgRFJPUCBJTkRF WCBvbiB0aGUgY2h1cm5lZCBjb2x1bW46IHJlbWFpbmluZyBpbmRleGVzIHN0aWxsIHJlc29s dmUuCitEUk9QIElOREVYIGhpX2RkbF9jNzsKK1NFTEVDVCBjb3VudCgqKSBBUyBjMl9hZnRl cl9kcm9waWR4IEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9U IE5VTEw7CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKKworLS0gVGhlIHNlcXNjYW4gdHJ1 dGggY29uZmlybXMgdGhlIGxpdmUgcm93OyB0aGUgY291bnQgYXNzZXJ0aW9ucyBhYm92ZSAo cmVhZAorLS0gdGhyb3VnaCB0aGUgcG9zdC1EREwgaW5kZXhlcykgbWF0Y2ggaXQsIHdoaWNo IGlzIHdoYXQgd291bGQgYnJlYWsgaWYgYQorLS0gbWlzLXNpemVkIGJpdG1hcCBjb3JydXB0 ZWQgdGhlIHN0YWxlbmVzcyB2ZXJkaWN0LgorU0VMRUNUIGMxLCBjMiwgYzcgRlJPTSBoaV9k ZGwgV0hFUkUgYzEgPSAxOworCitEUk9QIFRBQkxFIGhpX2RkbDsKKworLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCistLSBDbGVhbnVwCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RS T1AgRlVOQ1RJT04gZ2V0X2hpX2NvdW50KHRleHQpOworRFJPUCBGVU5DVElPTiBnZXRfaG90 X2NvdW50KHRleHQpOworLS0gcGFnZWluc3BlY3QgYW5kIGFtY2hlY2sgd2VyZSBib3RoIGNy ZWF0ZWQgYWJvdmUgd2l0aCBJRiBOT1QgRVhJU1RTIGFuZCBtYXkKKy0tIGhhdmUgcHJlLWV4 aXN0ZWQgdGhpcyB0ZXN0OyBsZWF2ZSB0aGVtLCBtYXRjaGluZyBhbWNoZWNrJ3MgdHJlYXRt ZW50LAorLS0gcmF0aGVyIHRoYW4gcmlzayBkcm9wcGluZyBhbiBleHRlbnNpb24gdGhpcyB0 ZXN0IGRpZCBub3QgY3JlYXRlLgotLSAKMi41MC4xCgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhMjE2ZDgxYTdmMmFjNjY5ZGZmYWI2ZWNhMjEwYmU3ZTEzNjBkNmEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDgv OV0gR2F0ZSBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9u CiBhcHBseSBwYXRoCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRp dHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQpzdGFsZSBpbmRleCBsZWFm IHRoYXQgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBtdXN0 IHRvbGVyYXRlCi0tIHdoaWNoIHRoZXkgZG8sIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnNjcmli ZXIncyBpbmRleGVkIGF0dHJpYnV0ZXMgZG8gbm90CmV4dGVuZCBwYXN0IHRoZSBjb2x1bW5z IHRob3NlIGxvb2t1cHMga2V5IG9uLiAgQWRkIHRoZSBwZXItc3Vic2NyaXB0aW9uCmhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAoc3ViaG90aW5kZXhlZG9uYXBwbHk6IG9mZiAvIHN1 YnNldF9vbmx5IChkZWZhdWx0KQovIGFsd2F5cykgYW5kIGhhdmUgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSBjb25zdWx0IGl0IHdoZW4gcnVubmluZyBpbiBhbiBhcHBseQp3b3JrZXIsIGNv bXBhcmluZyB0aGUgcmVsYXRpb24ncyBpbmRleGVkLWF0dHJpYnV0ZSBzZXQgYWdhaW5zdCBp dHMgcHJpbWFyeS1rZXkKYXR0cmlidXRlczogIm9mZiIgZGlzcXVhbGlmaWVzIEhPVC1pbmRl eGVkIHdoZW5ldmVyIGFueSBpbmRleGVkIGF0dHJpYnV0ZSBsaWVzCm91dHNpZGUgdGhlIHBy aW1hcnkga2V5LCAic3Vic2V0X29ubHkiIHJlcXVpcmVzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMgdG8gYmUgYQpzdWJzZXQgb2YgdGhlIHByaW1hcnkga2V5LCBhbmQgImFsd2F5cyIgYXBw bGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KCldpcmUgdGhlIG9wdGlvbiB0aHJvdWdoIENS RUFURS9BTFRFUiBTVUJTQ1JJUFRJT04sIHBnX3N1YnNjcmlwdGlvbiwgcGdfZHVtcCwKYW5k IHBzcWwncyBcZFJzKywgYW5kIGRvY3VtZW50IGl0IChjcmVhdGVfc3Vic2NyaXB0aW9uLCBh bHRlcl9zdWJzY3JpcHRpb24sCmNhdGFsb2dzKS4gIENvdmVyIGFwcGx5IHVuZGVyIGVhY2gg bW9kZSAoMDM5KSwgYXBwbHkgdW5kZXIgUkVQTElDQSBJREVOVElUWQpGVUxMIGFuZCBhIG5v bi1QSyBVU0lORyBJTkRFWCB3aG9zZSBrZXkgaXMgY3ljbGVkICgwNDApLCBhbmQgZGVjb2Rp bmcgb2YKSE9ULWluZGV4ZWQgdXBkYXRlIGNoYWlucyAodGVzdF9kZWNvZGluZykuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi90ZXN0X2Rl Y29kaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vdGVzdF9kZWNv ZGluZy9leHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQgICAgfCAgNTkgKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgICAgIHwgIDI5ICsrCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA3ICstCiBkb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgNTUgKysrCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICAgfCAgMzQgKysK IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAzMCAr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAg MSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAg NDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAzMyArKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAg IHwgIDE3ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgfCAxNzYgKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCAgICAgICAgICAgICB8ICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsICAgfCA0MTYgKysrKysrKysrKysrKysrKysrCiAuLi4vdC8wNDBf aG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbCAgICAgfCAxMTAgKysrKysKIDIzIGZp bGVzIGNoYW5nZWQsIDk4NyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90X2luZGV4 ZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9o b3RfaW5kZXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5w bAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQppbmRleCAwMTExMTI0Mzk5YS4uODAwMjE2YjJh ZTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXJlcGFjayBzcGlsbCBzbG90 IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlyZXBh Y2sgc3BpbGwgc2xvdCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vf c3RyZWFtIGhvdF9pbmRleGVkCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAg b25kaXNrX3N0YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFw c2hvdF90cmFuc2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwK IAl0d29waGFzZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdl X3NuYXBzaG90IFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9ob3RfaW5kZXhlZC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90 X2luZGV4ZWQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x ZTIxODZmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9l eHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQKQEAgLTAsMCArMSw1OSBAQAorLS0gTG9naWNhbCBk ZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwgbGV2ZWwgKHRoZSBu ZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBtdXN0IGRlY29kZSBl eGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEgY2hhaW4gb2YKKy0t IEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElUWSBGVUxMIHNvIHRo ZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4gYm90aCBiZSBjaGVj a2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9N IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcs ICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEg cm93KQorCitDUkVBVEUgVEFCTEUgaGlfZGVjb2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9k ZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9O IGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJMRSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElU WSBGVUxMOworSU5TRVJUIElOVE8gaGlfZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7Cist LSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9uZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5 cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBh bmQgYmFjayAoQUJBKSBhbmQgdGhlbiBkZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEg PSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUg aWQgPSAxOworREVMRVRFIEZST00gaGlfZGVjb2RlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVUxMLAorICAgICAgICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9k ZWNvZGU6IElOU0VSVDogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06 MTAwCisgQ09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJdOjEwMCBu ZXctdHVwbGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMAor IENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQt a2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAgbmV3LXR1 cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEKKyBDT01N SVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisg QkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lO CisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJTgorIHRh YmxlIHB1YmxpYy5oaV9kZWNvZGU6IERFTEVURTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJd OjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisoMjEgcm93cykKKworU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworRFJPUCBUQUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvbWVzb24uYnVpbGQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVzb24uYnVpbGQK aW5kZXggYWM2NTU4NTNkMjYuLjkxNzY1Y2EwZTcyIDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21l c29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICdzdGF0cycs CiAgICAgICAndHdvcGhhc2UnLAogICAgICAgJ3R3b3BoYXNlX3N0cmVhbScsCisgICAgICAn aG90X2luZGV4ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsKICAgICAgICct LXRlbXAtY29uZmlnJywgZmlsZXMoJ2xvZ2ljYWwuY29uZicpLApkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgYi9jb250cmliL3Rlc3Rf ZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDVkN2QwOTFiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApAQCAtMCwwICsxLDI5IEBACist LSBMb2dpY2FsIGRlY29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRl eGVkIHVwZGF0ZSBpcyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBs ZXZlbCAodGhlIG5ldyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11 c3QgZGVjb2RlIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBj aGFpbiBvZgorLS0gSE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZ IEZVTEwgc28gdGhlIGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBi b3RoIGJlIGNoZWNrZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CisKK1NFTEVD VCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgVEFCTEUgaGlfZGVj b2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOwor Q1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9OIGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJM RSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyBoaV9k ZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0tIGVhY2ggdXBkYXRlIGNoYW5nZXMgb25l IGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlzIEhPVC1pbmRleGVkCitVUERBVEUgaGlf ZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQg YiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFuZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRl bGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJPTSBoaV9k ZWNvZGUgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwKKyAgICAgICAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKK1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworRFJPUCBU QUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEzOTE3Li40Yzlh YmE3MmJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTg3MjcsNiArODcyNywyMiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJob3RpbmRleGVkb25hcHBseTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBHYXRpbmcgbW9kZSBm b3IgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBDb3JyZXNwb25kcyB0byB0aGUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBseTwv bGl0ZXJhbD48L2xpbms+CisgICAgICAgc3Vic2NyaXB0aW9uIG9wdGlvbjoKKyAgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+bzwvbGl0 ZXJhbD4gPSBvZmY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJh PjxsaXRlcmFsPnM8L2xpdGVyYWw+ID0gc3Vic2V0X29ubHkgKGRlZmF1bHQpPC9wYXJhPjwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5hPC9saXRlcmFs PiA9IGFsd2F5czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzZXJ2ZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCBmYWQxZjkwOTU2YS4uN2JhMTkxODA5NDcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjk0LDggKzI5NCwxMSBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC10d28tcGhhc2UiPjxsaXRlcmFsPnR3 b19waGFzZTwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxsaXRl cmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxpbmsg bGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0ZW50 aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRlcmFs PjwvbGluaz4sCi0gICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9u LXBhcmFtcy13aXRoLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48bGl0ZXJhbD53YWxfcmVjZWl2 ZXJfdGltZW91dDwvbGl0ZXJhbD48L2xpbms+LCBhbmQKLSAgICAgIDxsaW5rIGxpbmtlbmQ9 InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFyYW1zLXdpdGgtY29uZmxpY3QtbG9nLWRlc3Rp bmF0aW9uIj48bGl0ZXJhbD5jb25mbGljdF9sb2dfZGVzdGluYXRpb248L2xpdGVyYWw+PC9s aW5rPi4KKyAgICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tcGFy YW1zLXdpdGgtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjxsaXRlcmFsPndhbF9yZWNlaXZlcl90 aW1lb3V0PC9saXRlcmFsPjwvbGluaz4sCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRoLWNvbmZsaWN0LWxvZy1kZXN0aW5hdGlvbiI+ PGxpdGVyYWw+Y29uZmxpY3RfbG9nX2Rlc3RpbmF0aW9uPC9saXRlcmFsPjwvbGluaz4sIGFu ZAorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMt d2l0aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBw bHk8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIEZvciA8bGl0ZXJhbD5ob3RfaW5kZXhlZF9v bl9hcHBseTwvbGl0ZXJhbD4sIHRoZSBuZXcgdmFsdWUgdGFrZXMgZWZmZWN0CisgICAgICBh dCB0aGUgYXBwbHkgd29ya2VyJ3MgbmV4dCBjYXRhbG9nIHJlbG9hZC4KICAgICAgIE9ubHkg YSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNl PC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDgxZmJmMzQ4N2E0Li4wZDU5Zjg1N2JiMyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTY1MSw2 ICs2NTEsNjEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgIDwvcGFy YT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0 aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmhvdF9p bmRleGVkX29uX2FwcGx5PC9saXRlcmFsPiAoPHR5cGU+dGV4dDwvdHlwZT4pPC90ZXJtPgor ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBDb250cm9s cyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24ncyBhcHBseSB3b3JrZXIgbWF5IHRha2UgdGhl CisgICAgICAgICAgSE9ULWluZGV4ZWQgdXBkYXRlIHBhdGggd2hlbiBhbiA8Y29tbWFuZD5V UERBVEU8L2NvbW1hbmQ+IHJlcGxpY2F0ZWQKKyAgICAgICAgICBmcm9tIHRoZSBwdWJsaXNo ZXIgdG91Y2hlcyBhbiBpbmRleGVkIGF0dHJpYnV0ZS4gIEJlY2F1c2UgdGhlCisgICAgICAg ICAgc3Vic2NyaWJlcidzIGluZGV4IHNldCBtYXkgZGlmZmVyIGZyb20gdGhlIHB1Ymxpc2hl cidzLCBhbgorICAgICAgICAgIHVuY29uc3RyYWluZWQgSE9ULWluZGV4ZWQgZGVjaXNpb24g b24gdGhlIGFwcGx5IHBhdGggY2FuIHByb2R1Y2UgYQorICAgICAgICAgIGhlYXAgY2hhaW4g d2hvc2UgaW5kZXggc3RhdGUgZGlzYWdyZWVzIHdpdGggdGhlIHVwc3RyZWFtIHJvdy4gIFRo ZQorICAgICAgICAgIG9wdGlvbiByZXN0cmljdHMgd2hlbiB0aGUgYXBwbHkgd29ya2VyIGlz IGFsbG93ZWQgdG8gdGFrZSB0aGF0IHBhdGguCisgICAgICAgICA8L3BhcmE+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBBY2NlcHRlZCB2YWx1ZXMgYXJlOgorICAgICAgICAgIDx2 YXJpYWJsZWxpc3Q+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8 dGVybT48bGl0ZXJhbD5vZmY8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBGb3JjZSBub24tSE9U IG9uIGFwcGx5IHdoZW5ldmVyIHRoZSBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZAorICAg ICAgICAgICAgICBhdHRyaWJ1dGUgYmV5b25kIHRoZSBwcmltYXJ5IGtleS4gIFRoaXMgbWF0 Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgICAgICAgICAgICAgIHByZS1leGlzdGluZyBiZWhh dmlvdXIuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4K KyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+ CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5zdWJzZXRfb25seTwvbGl0ZXJhbD48L3Rl cm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICAgIEFsbG93IHRoZSBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhlIHN1 YnNjcmliZXIncworICAgICAgICAgICAgICBpbmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0 IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2gKKyAgICAgICAgICAgICAgaW5jbHVk ZXMgdGhlIG5vLXNlY29uZGFyeS1pbmRleCBjYXNlKS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQg YW5kCisgICAgICAgICAgICAgIGNhcHR1cmVzIHRoZSBjb21tb24gcmVwbGljYXRpb24tcmVh ZHkgc2NoZW1hIHNoYXBlIHdoaWxlIHN0YXlpbmcKKyAgICAgICAgICAgICAgc2FmZSB3aGVu IHRoZSBzdWJzY3JpYmVyIGFkZHMgaW5kZXhlcyB0aGUgcHVibGlzaGVyIGRvZXMgbm90Cisg ICAgICAgICAgICAgIGhhdmUuCisgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5hbHdheXM8L2xpdGVy YWw+PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJh PgorICAgICAgICAgICAgICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5 IG9uIGFwcGx5LiAgVGhlIG9wZXJhdG9yCisgICAgICAgICAgICAgIHRha2VzIHJlc3BvbnNp YmlsaXR5IGZvciBrZWVwaW5nIHRoZSBzdWJzY3JpYmVyJ3MgaW5kZXhlZC1hdHRyCisgICAg ICAgICAgICAgIHNldCBjb21wYXRpYmxlIHdpdGggdGhlIHB1Ymxpc2hlcidzOyBkaXZlcmdl bnQgc2NoZW1hcyBjYW4KKyAgICAgICAgICAgICAgcHJvZHVjZSBzcHVyaW91cyBkdXBsaWNh dGUta2V5IGNvbmZsaWN0cyBmb3Igc3Vic2VxdWVudAorICAgICAgICAgICAgICBpbnNlcnRz IG9uIHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDwv dmFyaWFibGVsaXN0PgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAppbmRleCAyZTVlNWY0YTA4MS4uNTU2MTQ5 OGQ5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1Qt SU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVY RUQKQEAgLTI1Nyw2ICsyNTcsNDAgQEAgcGVyLWluZGV4IHJlY2hlY2sgb3V0Y29tZXM7IGFu ZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygpIHJlcG9ydHMKIHBlci1yZWxhdGlv biBIT1QtaW5kZXhlZCBjaGFpbiBjb3VudHMuCiAKIAorTG9naWNhbCByZXBsaWNhdGlvbgor LS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxp Y2EtaWRlbnRpdHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQorc3RhbGUg aW5kZXggbGVhZjsgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3Vw cyB0b2xlcmF0ZSB0aGF0Citvbmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUg Y292ZXJlZCBieSB0aGUgcmVwbGljYSBpZGVudGl0eS4gIFRoZQorcGVyLXN1YnNjcmlwdGlv biBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRpb24gKHBnX3N1YnNjcmlwdGlvbi5zdWJob3Rp bmRleGVkb25hcHBseSwKK29mZiAvIHN1YnNldF9vbmx5IC8gYWx3YXlzOyBzdWJzZXRfb25s eSBpcyB0aGUgZGVmYXVsdCkgY29udHJvbHMgdGhpczoKK0hlYXBVcGRhdGVIb3RBbGxvd2Fi bGUgY29uc3VsdHMgR2V0SG90SW5kZXhlZEFwcGx5TW9kZSBvbiB0aGUgYXBwbHkgcGF0aCBh bmQKK2ZhbGxzIGJhY2sgdG8gbm9uLUhPVCB3aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMg YXJlIG5vdCBleGFjdGx5IHRoZSBwcmltYXJ5CitrZXkgKG9mZikgb3Igbm90IGEgc3Vic2V0 IG9mIGl0IChzdWJzZXRfb25seSkuCisKKworUmVjb3ZlcnkKKy0tLS0tLS0tCisKK0hPVC1p bmRleGVkIHVwZGF0ZXMgYW5kIHRoZSBwcnVuZS9jb2xsYXBzZSB1c2UgdGhlIGV4aXN0aW5n IGhlYXAgVVBEQVRFIGFuZAorcHJ1bmUvZnJlZXplIFdBTCByZWNvcmRzLCBzbyBjcmFzaCBy ZWNvdmVyeSByZXBsYXlzIHRoZW0gd2l0aCBubyBuZXcgcmVjb3JkCit0eXBlcy4gIHNyYy90 ZXN0L3JlY292ZXJ5L3QvMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5LnBsIGJ1aWxkcyBhIGNo YWluLAorY3Jhc2hlcyB3aXRob3V0IGEgY2hlY2twb2ludCAoZm9yY2luZyBXQUwgcmVkbyks IGFuZCB2ZXJpZmllcyB0aGUgY2hhaW4gd2FsaywKK3ZlcmlmeV9oZWFwYW0sIGFuZCB2YWN1 dW0gcmVjbGFtYXRpb24gYWZ0ZXIgcmVzdGFydCwgd2l0aAord2FsX2NvbnNpc3RlbmN5X2No ZWNraW5nID0gJ2FsbCcgY29tcGFyaW5nIGVhY2ggcmVwbGF5ZWQgcGFnZSB0byBpdHMgRlBJ LgorCisKK0FkdmVyc2FyaWFsIHRlc3RzCistLS0tLS0tLS0tLS0tLS0tLQorCitzcmMvdGVz dC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyBleGVyY2lz ZXMgdGhlIGNhc2VzIHRoZQoraW52YXJpYW50IG11c3Qgc2F0aXNmeSB1bmRlciBjb25jdXJy ZW5jeToga2V5IGN5Y2xpbmcgKFgtPlktPlgpLCBhYm9ydGVkCitIT1QtaW5kZXhlZCB1cGRh dGVzLCBjb25jdXJyZW50IHVuaXF1ZSBpbnNlcnRzIGFnYWluc3QgYSBmcmVlZC90YWtlbiBr ZXksCitzbmFwc2hvdC1zYWZlIHJlY2xhaW0gb2Ygc3RhbGUgbGVhdmVzLCBhbmQgcmVhZGVy IGNvbnNpc3RlbmN5IGFjcm9zcyBhCitjb25jdXJyZW50IHBydW5lL2NvbGxhcHNlLgorCisK IEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpp bmRleCAzYmZhYzhjMGIxOC4uM2RmYzYxOWNjNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCkBAIC00NTA0LDYgKzQ1MDQsMzYgQEAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShS ZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMp CiAJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJl bGF0aW9uLAogCQkJCQkJCQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKIAor CS8qCisJICogVGhlIGxvZ2ljYWwtcmVwbGljYXRpb24gYXBwbHkgcGF0aCBnYXRlcyBIT1Qt aW5kZXhlZCB1cGRhdGVzIG9uIHRoZQorCSAqIHBlci1zdWJzY3JpcHRpb24gaG90X2luZGV4 ZWRfb25fYXBwbHkgb3B0aW9uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YKKwkgKiBhIHJl cGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIGxlYXZlcyBhIHN0YWxlIGluZGV4IGxlYWY7IHRo ZSBhcHBseQorCSAqIHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBjb3BlIHdp dGggdGhhdCAoc2VlCisJICogUmVsYXRpb25GaW5kUmVwbFR1cGxlQnlJbmRleCksIGJ1dCBv bmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUKKwkgKiBhIHN1YnNldCBvZiB0 aGUgcmVwbGljYSBpZGVudGl0eS4gICJvZmYiIGRpc3F1YWxpZmllcyB3aGVuZXZlciB0aGUK KwkgKiBzdWJzY3JpYmVyIGhhcyBhbnkgaW5kZXhlZCBhdHRyaWJ1dGUgYmV5b25kIGl0cyBQ SzsgInN1YnNldF9vbmx5IiAodGhlCisJICogZGVmYXVsdCkgcmVxdWlyZXMgdGhlIGluZGV4 ZWQgYXR0cmlidXRlcyB0byBiZSBhIHN1YnNldCBvZiB0aGUgUEs7CisJICogImFsd2F5cyIg YXBwbGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KKwkgKi8KKwlpZiAoSXNMb2dpY2FsV29y a2VyKCkpCisJeworCQljaGFyCQltb2RlID0gR2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpOwor CQljb25zdCBCaXRtYXBzZXQgICpwa19hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0 bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX1BS SU1BUllfS0VZKTsKKworCQlpZiAobW9kZSA9PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09G RikKKwkJeworCQkJaWYgKCFibXNfZXF1YWwoYWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQor CQkJCXJldHVybiBIRUFQX1VQREFURV9BTExfSU5ERVhFUzsKKwkJfQorCQllbHNlIGlmICht b2RlID09IExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpCisJCXsKKwkJCWlm ICghYm1zX2lzX3N1YnNldChhbGxfaWR4X2F0dHJzLCBwa19hdHRycykpCisJCQkJcmV0dXJu IEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOworCQl9CisJCS8qIExPR0lDQUxSRVBfSE9UX0lO REVYRURfQUxXQVlTOiBubyBhcHBseS1wYXRoIGdhdGluZy4gKi8KKwl9CisKIAkvKgogCSAq IFN5c3RlbSBjYXRhbG9ncyBrZWVwIGNsYXNzaWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcg bm8gbm9uLXN1bW1hcml6aW5nCiAJICogaW5kZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1 cm5lZCBIRUFQX0hFQVBfT05MWV9VUERBVEUgYWJvdmUpLCBidXQgZG8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDIwNjhlMDNjNTcxLi5iMDY1YTdiZTI0 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0xMzMsNiAr MTMzLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBi b29sIGNvbm5pbmZvX25lZWRlZCwKIAlzdWItPm1heHJldGVudGlvbiA9IHN1YmZvcm0tPnN1 Ym1heHJldGVudGlvbjsKIAlzdWItPnJldGVudGlvbmFjdGl2ZSA9IHN1YmZvcm0tPnN1YnJl dGVudGlvbmFjdGl2ZTsKIAlzdWItPmNvbmZsaWN0bG9ncmVsaWQgPSBzdWJmb3JtLT5zdWJj b25mbGljdGxvZ3JlbGlkOworCXN1Yi0+aG90aW5kZXhlZG9uYXBwbHkgPSBzdWJmb3JtLT5z dWJob3RpbmRleGVkb25hcHBseTsKIAogCWlmIChjb25uaW5mb19uZWVkZWQpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDAyYzhhMDQ5YTMyLi45ZjU0 NWZkMjY0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTU0 Miw2ICsxNTQyLDcgQEAgR1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24s IHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5h cnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJ ICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJydW5hc293bmVyLCBzdWJmYWlsb3ZlciwKICAg ICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxlcywgc3VibWF4cmV0ZW50aW9uLCBzdWJy ZXRlbnRpb25hY3RpdmUsCisgICAgICAgICAgICAgIHN1YmhvdGluZGV4ZWRvbmFwcGx5LAog ICAgICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YmNvbmZsaWN0bG9ncmVsaWQsIHN1YmNvbmZs aWN0bG9nZGVzdCwgc3Vic2xvdG5hbWUsCiAgICAgICAgICAgICAgIHN1YnN5bmNjb21taXQs IHN1YndhbHJjdnRpbWVvdXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9O IHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKaW5kZXggNDI5MmU3ZmI4ZjQuLmJmOWRiYTNmNGU0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04Miw2ICs4Miw3IEBA CiAjZGVmaW5lIFNVQk9QVF9MU04JCQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09S SUdJTgkJCQkweDAwMDQwMDAwCiAjZGVmaW5lIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVAkw eDAwMDgwMDAwCisjZGVmaW5lIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWQkweDAwMTAw MDAwCiAKIC8qIGNoZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmlu ZSBJc1NldCh2YWwsIGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0x MTMsNiArMTE0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCUNvbmZsaWN0TG9nRGVz dCBjb25mbGljdGxvZ2Rlc3Q7CiAJWExvZ1JlY1B0cglsc247CiAJY2hhcgkgICAqd2FsX3Jl Y2VpdmVyX3RpbWVvdXQ7CisJY2hhcgkJaG90aW5kZXhlZG9uYXBwbHk7CiB9IFN1Yk9wdHM7 CiAKIC8qCkBAIC0yMDcsNiArMjA5LDggQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCW9wdHMtPm9yaWdp biA9IHBzdHJkdXAoTE9HSUNBTFJFUF9PUklHSU5fQU5ZKTsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9DT05GTElDVF9MT0dfREVTVCkpCiAJCW9wdHMtPmNvbmZsaWN0 bG9nZGVzdCA9IENPTkZMSUNUX0xPR19ERVNUX0xPRzsKKwlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCW9wdHMtPmhvdGluZGV4 ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWTsKIAogCS8q IFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC00NTks NiArNDYzLDMwIEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJb3B0cy0+Y29uZmxpY3Rsb2dkZXN0ID0g R2V0Q29uZmxpY3RMb2dEZXN0KHZhbCk7CiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBT VUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Q7CiAJCX0KKwkJZWxzZSBpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkgJiYKKwkJCQkgc3RyY21w KGRlZmVsLT5kZWZuYW1lLCAiaG90X2luZGV4ZWRfb25fYXBwbHkiKSA9PSAwKQorCQl7CisJ CQljaGFyCSAgICp2YWw7CisKKwkJCWlmIChJc1NldChvcHRzLT5zcGVjaWZpZWRfb3B0cywg U1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVm RWxlbShkZWZlbCwgcHN0YXRlKTsKKworCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VC T1BUX0hPVF9JTkRFWEVEX09OX0FQUExZOworCQkJdmFsID0gZGVmR2V0U3RyaW5nKGRlZmVs KTsKKworCQkJaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAib2ZmIikgPT0gMCkKKwkJCQlvcHRz LT5ob3RpbmRleGVkb25hcHBseSA9IExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGOworCQkJ ZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJzdWJzZXRfb25seSIpID09IDApCisJCQkJ b3B0cy0+aG90aW5kZXhlZG9uYXBwbHkgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNF VF9PTkxZOworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcCh2YWwsICJhbHdheXMiKSA9PSAw KQorCQkJCW9wdHMtPmhvdGluZGV4ZWRvbmFwcGx5ID0gTE9HSUNBTFJFUF9IT1RfSU5ERVhF RF9BTFdBWVM7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJIGVycm1zZygidW5y ZWNvZ25pemVkIHZhbHVlIGZvciBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIFwiJXNcIjogXCIl c1wiIiwKKwkJCQkJCQkJImhvdF9pbmRleGVkX29uX2FwcGx5IiwgdmFsKSwKKwkJCQkJCSBl cnJoaW50KCJWYWxpZCB2YWx1ZXMgYXJlIFwib2ZmXCIsIFwic3Vic2V0X29ubHlcIiwgYW5k IFwiYWx3YXlzXCIuIikpKTsKKwkJfQogCQllbHNlCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCkBAIC02OTksNyArNzI3LDggQEAg Q3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0 aW9uU3RtdCAqc3RtdCwKIAkJCQkJICBTVUJPUFRfUkVUQUlOX0RFQURfVFVQTEVTIHwKIAkJ CQkJICBTVUJPUFRfTUFYX1JFVEVOVElPTl9EVVJBVElPTiB8CiAJCQkJCSAgU1VCT1BUX1dB TF9SRUNFSVZFUl9USU1FT1VUIHwgU1VCT1BUX09SSUdJTiB8Ci0JCQkJCSAgU1VCT1BUX0NP TkZMSUNUX0xPR19ERVNUKTsKKwkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1QgfAor CQkJCQkgIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJcGFyc2Vfc3Vic2NyaXB0 aW9uX29wdGlvbnMocHN0YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9w dHMpOwogCiAJLyoKQEAgLTg1Myw2ICs4ODIsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlJbnQz MkdldERhdHVtKG9wdHMubWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3VicmV0ZW50aW9uYWN0aXZlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ob3B0cy5y ZXRhaW5kZWFkdHVwbGVzKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90 aW5kZXhlZG9uYXBwbHkgLSAxXSA9CisJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRv bmFwcGx5KTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0g PSBPYmplY3RJZEdldERhdHVtKHNlcnZlcmlkKTsKIAlpZiAoIU9pZElzVmFsaWQoc2VydmVy aWQpKQogCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9 CkBAIC0xNjI0LDcgKzE2NTUsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkgIFNVQk9QVF9N QVhfUkVURU5USU9OX0RVUkFUSU9OIHwKIAkJCQkJCQkgIFNVQk9QVF9XQUxfUkVDRUlWRVJf VElNRU9VVCB8CiAJCQkJCQkJICBTVUJPUFRfT1JJR0lOIHwKLQkJCQkJCQkgIFNVQk9QVF9D T05GTElDVF9MT0dfREVTVCk7CisJCQkJCQkJICBTVUJPUFRfQ09ORkxJQ1RfTE9HX0RFU1Qg fAorCQkJCQkJCSAgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKTsKIAkJCWJyZWFrOwog CiAJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX0VOQUJMRUQ6CkBAIC0yMDExLDYgKzIwNDMs MTMgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCX0KIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0 cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQl7 CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJob3RpbmRleGVkb25hcHBs eSAtIDFdID0KKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRvbmFwcGx5KTsK KwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBw bHkgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJCQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKIAkJ CQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCmluZGV4IDc3OTkyNjZjNjE0Li40ZTJhMmFjOThlYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00ODQsNiArNDg0LDE0IEBAIFdhbFJl Y2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiBTdWJzY3JpcHRp b24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKIHN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9u VmFsaWQgPSBmYWxzZTsKIAorLyoKKyAqIENhY2hlIG9mIHRoZSBwZXItc3Vic2NyaXB0aW9u IGhvdF9pbmRleGVkX29uX2FwcGx5IG1vZGUuICBUaGUgYXBwbHkgd29ya2VyCisgKiByZWZy ZXNoZXMgdGhpcyBhZnRlciBldmVyeSBzdWNjZXNzZnVsIGxvYWQgb2YgTXlTdWJzY3JpcHRp b247IHJlYWRlcnMKKyAqIG91dHNpZGUgd29ya2VyLmMgZ28gdGhyb3VnaCBHZXRIb3RJbmRl eGVkQXBwbHlNb2RlKCkgc28gdGhleSBkb24ndCBuZWVkCisgKiB2aXNpYmlsaXR5IGludG8g dGhlIFN1YnNjcmlwdGlvbiBzdHJ1Y3Qgb3IgdGhlIGFwcGx5IHdvcmtlcidzIGdsb2JhbHMu CisgKi8KK3N0YXRpYyBjaGFyIGhvdF9pbmRleGVkX2FwcGx5X21vZGUgPSBMT0dJQ0FMUkVQ X0hPVF9JTkRFWEVEX09GRjsKKwogc3RhdGljIExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29y a2Vyc19zdWJpZHMgPSBOSUw7CiAKIGJvb2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOwpAQCAtNTE3MSw2ICs1MTc5LDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCU1lbW9yeUNvbnRleHREZWxldGUoTXlTdWJzY3JpcHRpb24tPmN4dCk7CiAJTXlT dWJzY3JpcHRpb24gPSBuZXdzdWI7CiAKKwkvKiBSZWZyZXNoIHRoZSBjYWNoZWQgSE9ULWlu ZGV4ZWQgYXBwbHkgbW9kZSBmcm9tIHRoZSBuZXcgdHVwbGUuICovCisJaG90X2luZGV4ZWRf YXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkb25hcHBseTsKKwogCS8q IENoYW5nZSBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lz aGVzICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzeW5jaHJvbm91c19jb21taXQiLCBNeVN1YnNj cmlwdGlvbi0+c3luY2NvbW1pdCwKIAkJCQkJUEdDX0JBQ0tFTkQsIFBHQ19TX09WRVJSSURF KTsKQEAgLTU4NDQsNiArNTg1NSwxMiBAQCBJbml0aWFsaXplTG9nUmVwV29ya2VyKHZvaWQp CiAKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gdHJ1ZTsKIAorCS8qCisJICogQ2FjaGUgdGhl IHN1YnNjcmlwdGlvbidzIEhPVC1pbmRleGVkIGFwcGx5IG1vZGUgc28gaXQgaXMgY2hlYXAg dG8KKwkgKiBjb25zdWx0IGZyb20gdGhlIGhlYXAgYWNjZXNzIG1ldGhvZCAodmlhIEdldEhv dEluZGV4ZWRBcHBseU1vZGUoKSkuCisJICovCisJaG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9 IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkb25hcHBseTsKKwogCWlmICghTXlTdWJzY3Jp cHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKQEAgLTYwODMsNiArNjEwMCwy MiBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2Vy ICE9IE5VTEw7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGNhY2hlZCBIT1QtaW5kZXhlZCBh cHBseSBtb2RlIG9mIHRoZSBjdXJyZW50IGxvZ2ljYWwgcmVwbGljYXRpb24KKyAqIHdvcmtl cidzIHN1YnNjcmlwdGlvbi4KKyAqCisgKiBDYWxsZXJzIG91dHNpZGUgd29ya2VyLmMgKG5v dGFibHkgaGVhcGFtLmMncyBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKSB1c2UKKyAqIHRoaXMg YWNjZXNzb3IgdG8gYXZvaWQgcHVsbGluZyBpbiB3b3JrZXJfaW50ZXJuYWwuaCBvciB0aGUg U3Vic2NyaXB0aW9uCisgKiBzdHJ1Y3QuICBOb24tYXBwbHkgcHJvY2Vzc2VzIGdldCBMT0dJ Q0FMUkVQX0hPVF9JTkRFWEVEX09GRiwgd2hpY2ggaXMgdGhlCisgKiBjb25zZXJ2YXRpdmUg dmFsdWU7IGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIGd1YXJkIHdpdGggSXNMb2dpY2FsV29y a2VyKCkKKyAqIGZpcnN0IGZvciBjbGFyaXR5LCBidXQgdGhlIGFjY2Vzc29yIGlzIHNhZmUg ZWl0aGVyIHdheS4KKyAqLworY2hhcgorR2V0SG90SW5kZXhlZEFwcGx5TW9kZSh2b2lkKQor eworCXJldHVybiBob3RfaW5kZXhlZF9hcHBseV9tb2RlOworfQorCiAvKgogICogSXMgY3Vy cmVudCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXI/CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDRkNjYwZDE0YjRjLi5iNzU0YWYxN2NkMiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCkBAIC01MTM4LDYgKzUxMzgsNyBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9zdWJmYWlsb3ZlcjsKIAlpbnQJCQlpX3N1YnJl dGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJaV9zdWJtYXhyZXRlbnRpb247CisJaW50CQkJaV9z dWJob3RpbmRleGVkb25hcHBseTsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwogCkBAIC01MjM1 LDYgKzUyMzYsMTQgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgIiAnLTEnIEFTIHN1YndhbHJjdnRp bWVvdXQsXG4iKTsKIAorCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE5MDAwMCkKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIgcy5zdWJob3RpbmRleGVk b25hcHBseSxcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCisJCQkJ CQkgICIgJyVjJyBBUyBzdWJob3RpbmRleGVkb25hcHBseSxcbiIsCisJCQkJCQkgIExPR0lD QUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpOworCiAJaWYgKGZvdXQtPnJlbW90ZVZl cnNpb24gPj0gMTkwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmcy5z cnZuYW1lIEFTIHN1YnNlcnZlcm5hbWVcbiIpOwogCWVsc2UKQEAgLTUyNzksNiArNTI4OCw3 IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpX3N1YmZhaWxvdmVyID0g UFFmbnVtYmVyKHJlcywgInN1YmZhaWxvdmVyIik7CiAJaV9zdWJyZXRhaW5kZWFkdHVwbGVz ID0gUFFmbnVtYmVyKHJlcywgInN1YnJldGFpbmRlYWR0dXBsZXMiKTsKIAlpX3N1Ym1heHJl dGVudGlvbiA9IFBRZm51bWJlcihyZXMsICJzdWJtYXhyZXRlbnRpb24iKTsKKwlpX3N1Ymhv dGluZGV4ZWRvbmFwcGx5ID0gUFFmbnVtYmVyKHJlcywgInN1YmhvdGluZGV4ZWRvbmFwcGx5 Iik7CiAJaV9zdWJzZXJ2ZXJuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNlcnZlcm5hbWUi KTsKIAlpX3N1YmNvbm5pbmZvID0gUFFmbnVtYmVyKHJlcywgInN1YmNvbm5pbmZvIik7CiAJ aV9zdWJzbG90bmFtZSA9IFBRZm51bWJlcihyZXMsICJzdWJzbG90bmFtZSIpOwpAQCAtNTMy Miw2ICs1MzMyLDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJKHN0 cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJyZXRhaW5kZWFkdHVwbGVzKSwgInQiKSA9 PSAwKTsKIAkJc3ViaW5mb1tpXS5zdWJtYXhyZXRlbnRpb24gPQogCQkJYXRvaShQUWdldHZh bHVlKHJlcywgaSwgaV9zdWJtYXhyZXRlbnRpb24pKTsKKwkJc3ViaW5mb1tpXS5zdWJob3Rp bmRleGVkb25hcHBseSA9CisJCQkqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YmhvdGluZGV4 ZWRvbmFwcGx5KSk7CiAJCWlmIChQUWdldGlzbnVsbChyZXMsIGksIGlfc3ViY29ubmluZm8p KQogCQkJc3ViaW5mb1tpXS5zdWJjb25uaW5mbyA9IE5VTEw7CiAJCWVsc2UKQEAgLTU1OTks NiArNTYxMSwxMSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1 YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN1YmluZm8tPnN1Ym1heHJldGVudGlv bikKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIsIG1heF9yZXRlbnRpb25fZHVyYXRp b24gPSAlZCIsIHN1YmluZm8tPnN1Ym1heHJldGVudGlvbik7CiAKKwlpZiAoc3ViaW5mby0+ c3ViaG90aW5kZXhlZG9uYXBwbHkgPT0gTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF9PRkYpCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9 IG9mZiIpOworCWVsc2UgaWYgKHN1YmluZm8tPnN1YmhvdGluZGV4ZWRvbmFwcGx5ID09IExP R0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBhbHdheXMiKTsKKwogCWlmIChzdHJj bXAoc3ViaW5mby0+c3Vic3luY2NvbW1pdCwgIm9mZiIpICE9IDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LCAiLCBzeW5jaHJvbm91c19jb21taXQgPSAlcyIsIGZtdElkKHN1Ymlu Zm8tPnN1YnN5bmNjb21taXQpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNWE2NzI2ZDhiMTIu LmUzZTc0MDFkZjA4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTcyMiw2ICs3MjIsNyBAQCB0eXBl ZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWJvb2wJCXN1YmZhaWxvdmVyOwogCWJv b2wJCXN1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJc3VibWF4cmV0ZW50aW9uOworCWNo YXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwogCWNoYXIJICAgKnN1YnNlcnZlcm5hbWU7CiAJ Y2hhcgkgICAqc3ViY29ubmluZm87CiAJY2hhcgkgICAqc3Vic2xvdG5hbWU7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5j CmluZGV4IGZlZjg2YjRjY2EzLi5hYjNkYTY0Y2JjYiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY4NzAs NyArNjg3MCw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu LCBib29sIHZlcmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKIAlz dGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLAogCQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKLQlmYWxzZSwgZmFsc2UsIGZhbHNl LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsKIAogCWluaXRQUUV4cEJ1ZmZl cigmYnVmKTsKIApAQCAtNjk0Myw2ICs2OTQzLDE0IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJCQkJCQkJICAiLCBzdWJt YXhyZXRlbnRpb24gQVMgXCIlc1wiXG4iLAogCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNYXgg cmV0ZW50aW9uIGR1cmF0aW9uIikpOwogCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAor CQkJCQkJCSAgIiwgKENBU0Ugc3ViaG90aW5kZXhlZG9uYXBwbHlcbiIKKwkJCQkJCQkgICIg ICAgV0hFTiAiIENwcEFzU3RyaW5nMihMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRikgIiBU SEVOICdvZmYnXG4iCisJCQkJCQkJICAiICAgIFdIRU4gIiBDcHBBc1N0cmluZzIoTE9HSUNB TFJFUF9IT1RfSU5ERVhFRF9TVUJTRVRfT05MWSkgIiBUSEVOICdzdWJzZXRfb25seSdcbiIK KwkJCQkJCQkgICIgICAgV0hFTiAiIENwcEFzU3RyaW5nMihMT0dJQ0FMUkVQX0hPVF9JTkRF WEVEX0FMV0FZUykgIiBUSEVOICdhbHdheXMnXG4iCisJCQkJCQkJICAiICAgRU5EKSBBUyBc IiVzXCJcbiIsCisJCQkJCQkJICBnZXR0ZXh0X25vb3AoIkhPVC1pbmRleGVkIG9uIGFwcGx5 IikpOworCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIiwgc3VicmV0 ZW50aW9uYWN0aXZlIEFTIFwiJXNcIlxuIiwKIAkJCQkJCQkgIGdldHRleHRfbm9vcCgiUmV0 ZW50aW9uIGFjdGl2ZSIpKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggYmUz NmNhOTc5MDMuLmMyZWEwYWRjYmQ2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApA QCAtNTcsNiArNTcsOSBAQAogICovCiAKIC8qCQkJCQkJCXl5eXltbWRkTiAqLworLyogWFhY IGJ1bXAgY2F0dmVyc2lvbiAtLSB0aGlzIGNvbW1pdCBhZGRzIGEgY2F0YWxvZyBjb2x1bW4K KyAqIChzdWJob3RpbmRleGVkb25hcHBseSkgYW5kIHRvdWNoZXMgcGdfc3Vic2NyaXB0aW9u OyB0aGUgY29tbWl0dGVyCisgKiBzZXRzIHRoZSByZWFsIHZhbHVlIGF0IGNvbW1pdCB0aW1l IHRvIGF2b2lkIG5lZWRsZXNzIHJlYmFzZSBjaHVybi4gKi8KICNkZWZpbmUgQ0FUQUxPR19W RVJTSU9OX05PCTIwMjYwNzA3MgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCmluZGV4IDY1Y2U4ZTE0NWZiLi45YmU1NTZiODg0ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Miw2ICs5MiwxMCBAQCBDQVRB TE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9T SEFSRURfUkVMQVRJT04gQktJX1JPVwogCQkJCQkJCQkJICogZXhjZWVkZWQgbWF4X3JldGVu dGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJCQkJICogZGVmaW5lZCAqLwogCisJY2hhcgkJ c3ViaG90aW5kZXhlZG9uYXBwbHk7CS8qIFBlci1zdWJzY3JpcHRpb24gZ2F0aW5nIG9mIHRo ZSBIT1QtCisJCQkJCQkJCQkJICogaW5kZXhlZCBhcHBseSBwYXRoLiAgU2VlCisJCQkJCQkJ CQkJICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvbnN0YW50cy4gKi8KKwogCU9pZAkJ CXN1YnNlcnZlciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWduX3NlcnZlcik7CS8qIElmIGNv bm5lY3Rpb24gdXNlcwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZlciAqLwogCkBAIC0xNzMs NiArMTc3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCQkgKiBl eGNlZWRlZCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZp bmVkICovCiAJT2lkCQkJY29uZmxpY3Rsb2dyZWxpZDsJLyogY29uZmxpY3QgbG9nIHRhYmxl IE9pZCAqLworCWNoYXIJCWhvdGluZGV4ZWRvbmFwcGx5OyAvKiBQZXItc3Vic2NyaXB0aW9u IGdhdGluZyBvZiB0aGUKKwkJCQkJCQkJCSAqIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBT ZWUKKwkJCQkJCQkJCSAqIExPR0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb25zdGFudHMuICov CiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNh dGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNv bW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KQEAgLTIyMCw2ICsyMjcsMjYgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9TVFJFQU1f UEFSQUxMRUwgJ3AnCiAKKy8qCisgKiBQZXItc3Vic2NyaXB0aW9uIGdhdGluZyBvZiB0aGUg SE9ULWluZGV4ZWQgYXBwbHkgcGF0aC4gIFJlY29yZGVkIGFzIGEKKyAqIHNpbmdsZS1jaGFy YWN0ZXIgY29kZSBpbiBwZ19zdWJzY3JpcHRpb24uc3ViaG90aW5kZXhlZG9uYXBwbHkuCisg KgorICogICAnbycgLS0gT0ZGOiBmb3JjZSBub24tSE9UIG9uIGFwcGx5IHdoZW5ldmVyIHRo ZSBzdWJzY3JpYmVyIGNhcnJpZXMgYW55CisgKgkJICBpbmRleGVkIGF0dHJpYnV0ZSBiZXlv bmQgdGhlIHByaW1hcnkga2V5LiAgTWF0Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgKgkJICBi ZWhhdmlvdXIgYmVmb3JlIHRoaXMgb3B0aW9uIHdhcyBpbnRyb2R1Y2VkLgorICogICAncycg LS0gU1VCU0VUX09OTFkgKGRlZmF1bHQgZm9yIGZyZXNobHkgY3JlYXRlZCBzdWJzY3JpcHRp b25zKTogYWxsb3cgdGhlCisgKgkJICBIT1QtaW5kZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhl IHN1YnNjcmliZXIncyBmdWxsIGluZGV4ZWQtYXR0ciBzZXQgaXMKKyAqCQkgIGEgc3Vic2V0 IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAod2hpY2ggY292ZXJzIHRoZSBuby1zZWNvbmRh cnktCisgKgkJICBpbmRleCBjYXNlIGFzIHdlbGwpLiAgU2FmZSBvbiBtYXRjaGluZyBzY2hl bWFzOyBmYWxscyBiYWNrIHRvIG5vbi1IT1QKKyAqCQkgIHdoZW4gdGhlIHN1YnNjcmliZXIg YWRkcyBpbmRleGVzIGJleW9uZCB0aGUgcHJpbWFyeSBrZXkuCisgKiAgICdhJyAtLSBBTFdB WVM6IHVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkgb24gYXBwbHkuICBU aGUKKyAqCQkgIG9wZXJhdG9yIGFjY2VwdHMgcmVzcG9uc2liaWxpdHkgZm9yIGtlZXBpbmcg c3Vic2NyaWJlciBhbmQgcHVibGlzaGVyCisgKgkJICBpbmRleGVkLWF0dHIgc2V0cyBjb21w YXRpYmxlLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGCQkJJ28n CisjZGVmaW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkJJ3MnCisjZGVm aW5lIExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTCQknYScKKwogI2VuZGlmCQkJCQkJ CS8qIEVYUE9TRV9UT19DTElFTlRfQ09ERSAqLwogCiBleHRlcm4gU3Vic2NyaXB0aW9uICpH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2ssCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggN2Q3NDhhMjhkYTguLmM5ZGY3 ZDMyZjJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29y a2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBA IC0yNCw2ICsyNCwxNCBAQCBleHRlcm4gdm9pZCBTZXF1ZW5jZVN5bmNXb3JrZXJNYWluKERh dHVtIG1haW5fYXJnKTsKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKIGV4 dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CiAKKy8qCisg KiBBY2Nlc3NvciBmb3IgdGhlIGNhY2hlZCBob3RfaW5kZXhlZF9vbl9hcHBseSBtb2RlIG9m IHRoZSBjdXJyZW50IGFwcGx5CisgKiB3b3JrZXIncyBzdWJzY3JpcHRpb24uICBSZXR1cm5z IGEgTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvZGUgKHNlZQorICogY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaCkuICBOb24tYXBwbHkgcHJvY2Vzc2VzIGFsd2F5cyBzZWUKKyAqIExP R0lDQUxSRVBfSE9UX0lOREVYRURfT0ZGLgorICovCitleHRlcm4gY2hhciBHZXRIb3RJbmRl eGVkQXBwbHlNb2RlKHZvaWQpOworCiBleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5 TWVzc2FnZUludGVycnVwdCh2b2lkKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NQYXJhbGxlbEFw cGx5TWVzc2FnZXModm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dAppbmRleCBkMjAxYWQ3NjRmMC4uY2MxZDliYmIxNDYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTEzOSwxOCAr MTM5LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBDT05ORUNU SU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVCiBXQVJOSU5HOiAgc3Vic2Ny aXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1 YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrIHJlZ3Jlc3NfdGVz dHN1YjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8 IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxl cyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJl dGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0 aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9y aWdpbiA9IGFueSk7CiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYg ICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIg dGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEg ICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTIzNywxMCArMjM3LDEwIEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsKIEVSUk9S OiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3NpbmcgIj0iIGFmdGVy ICJmb29iYXIiIGluIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcKIAogXGRScysKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50 aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRp b24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAwIHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0 cHViMiwgdGVzdHB1YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTI0OSwxMCArMjQ5 LDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSAnbmV3bmFtZScpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHBhc3N3b3JkX3JlcXVpcmVkID0gZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHJ1bl9hc19vd25lciA9IHRydWUpOwogXGRScysKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgZiAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IHRlc3Qgc3Vi c2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFw cGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVz dHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBmICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qy IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAocGFz c3dvcmRfcmVxdWlyZWQgPSB0cnVlKTsKQEAgLTI2OCwxMCArMjY4LDEwIEBAIEVSUk9SOiAg dW5yZWNvZ25pemVkIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXI6ICJjcmVhdGVfc2xvdCIKIC0t IG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcw LzEyMzQ1Jyk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDEyMzQ1IHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAxMjM0 NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIC0tIG9rIC0gd2l0aCBsc24gPSBO T05FCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNLSVAgKGxzbiA9IE5PTkUpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTS0lQIChsc24gPSAnMC8wJyk7CiBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0 aW9uIChMU04pOiAwLzAKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlwdGlvbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAg IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBG YWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24g ZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVs ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBm ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29u bHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogQkVHSU47CkBAIC0zMTks MTAgKzMxOSwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViX2ZvbyBT RVQgKHdhbF9yZWNlaXZlcl90aW1lb3V0ID0gJzgwcycpOwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUICh3YWxfcmVjZWl2ZXJfdGltZW91dCA9ICdmb29i YXInKTsKIEVSUk9SOiAgaW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICJ3YWxfcmVjZWl2 ZXJfdGltZW91dCI6ICJmb29iYXIiCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4g fCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZl ciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3Jp cHRpb24gICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlw dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK KyAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rl c3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgODBzICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNj cmlwdGlvbgogKDEgcm93KQogCiAtLSByZW5hbWUgYmFjayB0byBrZWVwIHRoZSByZXN0IHNp bXBsZQpAQCAtMzUxLDE5ICszNTEsMTkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIK IFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVj dGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24s IGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgog XGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IHQgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAw LzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cp CiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBm YWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1 YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBv d25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCBy ZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8 ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAg ICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBh cHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8 IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpA QCAtMzc1LDI3ICszNzUsMjcgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5J Tkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBI SU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0 ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBh bHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBT ZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3Jp cHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IG9uICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAw MDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0 ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0 aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJh bGxlbCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0 cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVw bGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZl ciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAg ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAg ICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1p bmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBz dWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gYWxy ZWFkeSBleGlzdHMKQEAgLTQxMCwxMCArNDEwLDEwIEBAIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQUREIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRI IChyZWZyCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIEFERCBQVUJMSUNB VElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKIEVSUk9S OiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAi cmVncmVzc190ZXN0c3ViIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50 aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24g Ci0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAg ICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUg fCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBS ZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2Zm ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJz ZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwg MC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRpb24gdXNlZCBt b3JlIHRoYW4gb25jZQpAQCAtNDI4LDEwICs0MjgsMTAgQEAgRVJST1I6ICBwdWJsaWNhdGlv biAidGVzdHB1YjMiIGlzIG5vdCBpbiBzdWJzY3JpcHRpb24gInJlZ3Jlc3NfdGVzdHN1YiIK IC0tIG9rIC0gZGVsZXRlIHB1YmxpY2F0aW9ucwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIxLCB0ZXN0cHViMiBXSVRIIChy ZWZyZXNoID0gZmFsc2UpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dv cmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRh aW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQg b24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExT TiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9v bmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAw MDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YjsKQEAgLTQ2NywxOSArNDY3LDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBX QVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3Rl ZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBj cmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBh bmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxk UnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERl c2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFz IG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4 IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCist LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQog CiAtLSB3ZSBjYW4gYWx0ZXIgc3RyZWFtaW5nIHdoZW4gdHdvX3BoYXNlIGVuYWJsZWQKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSB0cnVl KTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZh aWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBk dXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNO ICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAg IHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwg UnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVz IHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0 ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZv ICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CkBAIC00ODksMTAgKzQ4OSwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QnIFBVQgogV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5v dCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3Qg bWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNj cmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNh dGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8g fCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRp b24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lw IExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0K LSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgc3Vic2V0X29ubHkgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNs b3RfbmFtZSA9IE5PTkUpOwpAQCAtNTA1LDE4ICs1MDUsMTggQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBp cyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBt dXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBz dWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVi bGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNh YmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3du ZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0 ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAg U2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVx dWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVh ZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBw bHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBE ZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHN1YnNldF9vbmx5ICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAw IHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFk IHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBI T1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtNTI5LDEwICs1Mjks MTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRp b24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCiBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRp b24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFuZCBhbHRlciB0aGUgc3Vic2Ny aXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25zLgogXGRScysKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2 ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBh cmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAg ICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIg fCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9u IHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IHN1YnNldF9vbmx5ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTU0OSwxMCAr NTQ5LDEwIEBAIE5PVElDRTogIG1heF9yZXRlbnRpb25fZHVyYXRpb24gaXMgaW5lZmZlY3Rp dmUgd2hlbiByZXRhaW5fZGVhZF90dXBsZXMgaXMgZGlzYWJsCiBXQVJOSU5HOiAgc3Vic2Ny aXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxp Y2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1 YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgMTAwMCB8 IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxv dmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJh dGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgIDEwMDAgfCBzdWJzZXRfb25seSAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAg ICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiAtLSBmYWlsIC0gbWF4 X3JldGVudGlvbl9kdXJhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZQpAQCAtNTYxLDEwICs1 NjEsMTAgQEAgRVJST1I6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGNhbm5vdCBiZSBuZWdh dGl2ZQogLS0gb2sKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUICht YXhfcmV0ZW50aW9uX2R1cmF0aW9uID0gMCk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNj cmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1 aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFk IHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVj ZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBI T1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0 IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAg fCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAw IHwgc3Vic2V0X29ubHkgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAg ICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L21lc29uLmJ1aWxkCmluZGV4IGU3MWU5NWM2Mjk3Li5mN2VlNWI4NDQ5YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZApAQCAtNDgsNiArNDgsOCBAQCB0ZXN0cyArPSB7CiAg ICAgICAndC8wMzZfc2VxdWVuY2VzLnBsJywKICAgICAgICd0LzAzN19leGNlcHQucGwnLAog ICAgICAgJ3QvMDM4X3dhbHNuZF9zaHV0ZG93bl90aW1lb3V0LnBsJywKKyAgICAgICd0LzAz OV9ob3RfaW5kZXhlZF9hcHBseS5wbCcsCisgICAgICAndC8wNDBfaG90X2luZGV4ZWRfcmVw bGljYV9pZGVudGl0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAg fSwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3RfaW5kZXhl ZF9hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzOV9ob3RfaW5kZXhlZF9h cHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmUxMDhl NmYwODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlf aG90X2luZGV4ZWRfYXBwbHkucGwKQEAgLTAsMCArMSw0MTYgQEAKKworIyBDb3B5cmlnaHQg KGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgUGVy LXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRpb246IHBhcnNlciwgY2F0 YWxvZyByb3VuZC10cmlwLAorIyBBTFRFUiBiZWhhdmlvdXIsIGFuZCBhcHBseS1wYXRoIGdh dGluZyB1bmRlciBlYWNoIG9mIHRoZSB0aHJlZSBtb2Rlcy4KK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl cjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOwordXNl IFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7CisKK215ICRwdWJsaXNoZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJHB1Ymxpc2hlci0+aW5pdChh bGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiskcHVibGlzaGVyLT5zdGFydDsKKwor bXkgJHN1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNj cmliZXInKTsKKyRzdWJzY3JpYmVyLT5pbml0OworJHN1YnNjcmliZXItPnN0YXJ0OworCitt eSAkcHViX2Nvbm5pbmZvID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3Rn cmVzJzsKKworIyAtLS0gU2NoZW1hIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdGFiX2V4dHJhIGhhcyBhbiBl eHRyYSBidHJlZSBpbmRleCBiZXlvbmQgdGhlIHByaW1hcnkga2V5IG9uIHRoZQorIyBzdWJz Y3JpYmVyIHNpZGU7IHRoYXQgaXMgdGhlIHNjaGVtYSBzaGFwZSB0aGF0IHN1YnNldF9vbmx5 IG11c3QgZGVtb3RlCisjIHRvIG5vbi1IT1Qgb24gYXBwbHkgYnV0IGFsd2F5cyBtdXN0IGxl dCB0aHJvdWdoLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVB VEUgVEFCTEUgdGFiX2V4dHJhIChpZCBpbnQgUFJJTUFSWSBLRVksIHBheWxvYWQgaW50LCB0 YWcgdGV4dCl9KTsKKworIyB0YWJfcGsgaGFzIG9ubHkgdGhlIHByaW1hcnkga2V5OyBpbmRl eGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0IG9mIHRoZSBQSworIyBhdHRycywgc28gc3Vic2V0 X29ubHkgYW5kIGFsd2F5cyBzaG91bGQgYm90aCBhbGxvdyBIT1QtaW5kZXhlZCBvbiBhcHBs eS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxF IHRhYl9wayAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCl9KTsKKworJHB1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgUFVCTElDQVRJT04gcHVi IEZPUiBUQUJMRSB0YWJfZXh0cmEsIHRhYl9wa30pOworCisjIFN1YnNjcmliZXIgbWlycm9y cyBib3RoIHRhYmxlcy4gIHRhYl9leHRyYSBoYXMgdGhlIGV4dHJhIHNlY29uZGFyeSBpbmRl eAorIyBvbmx5IG9uIHRoZSBzdWJzY3JpYmVyLCB3aGljaCBpcyB0aGUgc2NoZW1hLWRpdmVy Z2VuY2UgY2FzZSB0aGUgb3B0aW9uCisjIGdhdGVzLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9leHRyYSAoaWQgaW50IFBSSU1B UlkgS0VZLCBwYXlsb2FkIGludCwgdGFnIHRleHQpfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgSU5ERVggdGFiX2V4dHJhX3BheWxvYWRfaWR4 IE9OIHRhYl9leHRyYShwYXlsb2FkKX0pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl9wayAoaWQgaW50IFBSSU1BUlkgS0VZLCBw YXlsb2FkIGludCl9KTsKKworIyAtLS0gUGFyc2VyIC8gY2F0YWxvZyBjaGVja3MgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZhdWx0IG9u IGZyZXNoIHN1YnNjcmlwdGlvbiBpcyAncycgKHN1YnNldF9vbmx5KS4KKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJf ZGVmYXVsdAorCSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9O IHB1YgorCSAgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFi bGVkID0gZmFsc2UsCisJICAgICAgICBjcmVhdGVfc2xvdCA9IGZhbHNlKTsKK30pOworaXMo ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1Qgc3ViaG90 aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRpb24KKwkJICBXSEVSRSBzdWJuYW1l ID0gJ3N1Yl9kZWZhdWx0J30pLAorCSdzJywKKwknZnJlc2ggc3Vic2NyaXB0aW9uIGRlZmF1 bHRzIHRvIHN1YnNldF9vbmx5Jyk7CisKKyMgRXhwbGljaXQgJ2Fsd2F5cycgaXMgc3RvcmVk IGFzICdhJy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JF QVRFIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzX3AKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29u bmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwg c2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3JlYXRlX3Ns b3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJyk7Cit9KTsKK2lz KCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1Ymhv dGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFt ZSA9ICdzdWJfYWx3YXlzX3AnfSksCisJJ2EnLAorCSdDUkVBVEUgd2l0aCBob3RfaW5kZXhl ZF9vbl9hcHBseSA9IGFsd2F5cyBzdG9yZXMgYScpOworCisjIEFMVEVSIFNVQlNDUklQVElP TiBTRVQgdXBkYXRlcyB0aGUgY29sdW1uLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0IFNFVCAoaG90X2lu ZGV4ZWRfb25fYXBwbHkgPSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdf c3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfZGVmYXVsdCd9KSwKKwkn bycsCisJJ0FMVEVSIFNVQlNDUklQVElPTiBTRVQgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBv ZmYgc3RvcmVzIG8nKTsKKworIyBVbmtub3duIHZhbHVlcyBhcmUgcmVqZWN0ZWQuCitteSAo JHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkc3Vic2NyaWJlci0+cHNxbCgncG9zdGdyZXMn LCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9ib2d1cworCSAgQ09OTkVDVElPTiAn JHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoY29ubmVjdCA9 IGZhbHNlLCBzbG90X25hbWUgPSBOT05FLCBlbmFibGVkID0gZmFsc2UsCisJICAgICAgICBj cmVhdGVfc2xvdCA9IGZhbHNlLCBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdib2d1cycpOwor fSk7Citpc250KCRyZXQsIDAsICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2YWx1ZSBp cyByZWplY3RlZCcpOworbGlrZSgkc3RkZXJyLAorCSBxci91bnJlY29nbml6ZWQgdmFsdWUg Zm9yIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgImhvdF9pbmRleGVkX29uX2FwcGx5Ii8sCisJ ICdib2d1cyBob3RfaW5kZXhlZF9vbl9hcHBseSB2YWx1ZSByZXBvcnRzIHRoZSBleHBlY3Rl ZCBlcnJvcicpOworCisjIERyb3AgdGhlIHBsYWNlaG9sZGVyIHN1YnNjcmlwdGlvbnMgc28g d2UgY2FuIHJlYnVpbGQgd2l0aCByZWFsIHNsb3RzLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1bHQnKTsKKyRzdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9h bHdheXNfcCcpOworCisjIC0tLSBBcHBseS1wYXRoIGJlaGF2aW91ciAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByZS1wb3B1bGF0ZSBi b3RoIHNpZGVzIGlkZW50aWNhbGx5IHNvIHdlIGNhbiB1c2UgY29weV9kYXRhPWZhbHNlIGFu ZAorIyBhdm9pZCBkdXBsaWNhdGUta2V5IGNvbmZsaWN0cyB3aGVuIHdlIHJlY3JlYXRlIHN1 YnNjcmlwdGlvbnMgYWNyb3NzIHRoZQorIyB0aHJlZSB0ZXN0IGNhc2VzLiAgV2UgdXBkYXRl IG5vbi1vdmVybGFwcGluZyBpZCByYW5nZXMgcGVyIGNhc2Ugc28gdGhlCisjIHBnX3N0YXQg Y291bnRlcnMgc2VnbWVudCBjbGVhbmx5LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNFTEVDVCBnLCAwLCAndCcg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7CiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9waworCSAgU0VMRUNUIGcsIDAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfZXh0cmEKKwkgIFNFTEVDVCBn LCAwLCAndCcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnfSk7Ciskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsKKwkgIFNF TEVDVCBnLCAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworCisjIEhlbHBl cjogcmVhZCBjb3VudGVycyBhbmQgcG9sbCB1cCB0byAxMCBzIGZvciBuX3R1cF91cGQgdG8g cmVhY2ggYQorIyBtaW5pbXVtIHRhcmdldCB2YWx1ZSAodGhlIGFwcGx5IHdvcmtlciBmbHVz aGVzIHBnc3RhdCBhc3luY2hyb25vdXNseSkuCitzdWIgcG9sbF9jb3VudGVycworeworCW15 ICgkbm9kZSwgJHRhYmxlLCAkdXBkX3RhcmdldCkgPSBAXzsKKworCW15ICRkZWFkbGluZSA9 IHRpbWUoKSArIDEwOworCW15ICRyb3cgPSAnJzsKKwl3aGlsZSAoMSkKKwl7CisJCSRyb3cg PSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQlxcXtTRUxFQ1QgY29hbGVzY2Uo bl90dXBfdXBkLCAwKSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLCAw KSwKKwkJCSAgICAgICAgICBjb2FsZXNjZShuX3R1cF9ob3RfaW5kZXhlZF91cGQsIDApCisJ CQkgICBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICckdGFibGUn fSk7CisJCW15ICgkdXBkKSA9IHNwbGl0IC9cfC8sICRyb3c7CisJCWxhc3QgaWYgKCR1cGQg KyAwKSA+PSAkdXBkX3RhcmdldCB8fCB0aW1lKCkgPj0gJGRlYWRsaW5lOworCQl1c2xlZXAo MTAwXzAwMCk7CisJfQorCW15ICgkdXBkLCAkaG90LCAkaG90X2lkeCkgPSBzcGxpdCAvXHwv LCAkcm93OworCXJldHVybiAoJHVwZCArIDAsICRob3QgKyAwLCAkaG90X2lkeCArIDApOwor fQorCisjIEhlbHBlcjogZmlyZSBVUERBVEVzIHRoYXQgdG91Y2ggdGhlIGluZGV4ZWQgcGF5 bG9hZCBjb2x1bW4gb24gYSBnaXZlbgorIyBpZCByYW5nZSBhbmQgcmV0dXJuIHRoZSBkZWx0 YXMgaW4gKG5fdHVwX3VwZCwgbl90dXBfaG90X3VwZCwKKyMgbl90dXBfaG90X2luZGV4ZWRf dXBkKSBvbiB0aGUgc3Vic2NyaWJlci4KK3N1YiBhcHBseV91cGRhdGVzX2FuZF9yZWFkCit7 CisJbXkgKCR0YWJsZSwgJHN1Yl9uYW1lLCAkaWRfbG8sICRpZF9oaSkgPSBAXzsKKworCW15 ICgkdXBkMCwgJGhvdDAsICRob3RpZHgwKSA9CisJICBwb2xsX2NvdW50ZXJzKCRzdWJzY3Jp YmVyLCAkdGFibGUsIDApOworCisJZm9yIG15ICRpICgkaWRfbG8gLi4gJGlkX2hpKQorCXsK KwkJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQkiVVBEQVRFICR0YWJs ZSBTRVQgcGF5bG9hZCA9IHBheWxvYWQgKyAxIFdIRVJFIGlkID0gJGkiKTsKKwl9CisJJHB1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkc3ViX25hbWUpOworCisJbXkgJG4gPSAkaWRf aGkgLSAkaWRfbG8gKyAxOworCW15ICgkdXBkMSwgJGhvdDEsICRob3RpZHgxKSA9CisJICBw b2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAkdGFibGUsICR1cGQwICsgJG4pOworCW5vdGUo IiR0YWJsZSAkc3ViX25hbWUgJGlkX2xvLi4kaWRfaGk6IGRuX3VwZD0iCisJCSAuICgkdXBk MSAtICR1cGQwKSAuICIgZGhvdD0iIC4gKCRob3QxIC0gJGhvdDApCisJCSAuICIgZGhvdGlk eD0iIC4gKCRob3RpZHgxIC0gJGhvdGlkeDApKTsKKwlyZXR1cm4gKCR1cGQxIC0gJHVwZDAs ICRob3QxIC0gJGhvdDAsICRob3RpZHgxIC0gJGhvdGlkeDApOworfQorCisjIENhc2UgMTog b2ZmLCBzdWJzY3JpYmVyLW9ubHkgc2Vjb25kYXJ5IGluZGV4LiAgSE9ULWluZGV4ZWQgbXVz dCBiZQorIyBzdXBwcmVzc2VkIG9uIHRhYl9leHRyYS4gIFBsYWluIEhPVCB1cGRhdGVzIGFs c28gc3RheSB6ZXJvIGJlY2F1c2UgZXZlcnkKKyMgVVBEQVRFIHRvdWNoZXMgYHBheWxvYWRg IHdoaWNoIGlzIGluZGV4ZWQgb24gdGhlIHN1YnNjcmliZXIuCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX29mZgor CSAgQ09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAg V0lUSCAoc2xvdF9uYW1lID0gJ3N1Yl9vZmZfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwK KwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ29mZicsIGNvcHlfZGF0YSA9IGZh bHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX29mZicpOwor CitteSAodW5kZWYsIHVuZGVmLCAkb2ZmX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRh dGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX29mZicsIDEsIDIwKTsKK2lzKCRvZmZf ZXh0cmFfaG90aWR4LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gb2ZmOiBubyBI T1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfb2ZmJyk7CisKKyMg Q2FzZSAyOiBzdWJzZXRfb25seS4gIE9uIHRhYl9wayAobm8gc2Vjb25kYXJ5IGluZGV4LCBp bmRleGVkLWF0dHIgc2V0IGlzCisjIGEgc3Vic2V0IG9mIFBLIGF0dHJzKSwgY2xhc3NpYyBI T1QgbXVzdCBmaXJlIGJlY2F1c2UgYHBheWxvYWRgIGlzIG5vdAorIyBpbmRleGVkIHRoZXJl LiAgT24gdGFiX2V4dHJhIChzdWJzY3JpYmVyJ3MgYHBheWxvYWRgIGluZGV4IGlzIE5PVCBj b3ZlcmVkCisjIGJ5IHRoZSBQSyksIHRoZSBhcHBseSB3b3JrZXIgbXVzdCBkZW1vdGUgdG8g bm9uLUhPVCBqdXN0IGxpa2UgJ29mZicuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3N1YnNldAorCSAgQ09OTkVD VElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoc2xv dF9uYW1lID0gJ3N1Yl9zdWJzZXRfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwKKwkgICAg ICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ3N1YnNldF9vbmx5JywgY29weV9kYXRhID0g ZmFsc2UpOworfSk7CiskcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzdWJfc3Vic2V0 Jyk7CisKK215ICh1bmRlZiwgJHNzX3BrX2hvdCwgJHNzX3BrX2hvdGlkeCkgPQorICBhcHBs eV91cGRhdGVzX2FuZF9yZWFkKCd0YWJfcGsnLCAnc3ViX3N1YnNldCcsIDEsIDIwKTsKK2Nt cF9vaygkc3NfcGtfaG90LCAnPicsIDAsCisJICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0g c3Vic2V0X29ubHk6IGNsYXNzaWMgSE9UIGZpcmVzIG9uIHRhYl9waycpOworCitteSAodW5k ZWYsIHVuZGVmLCAkc3NfZXh0cmFfaG90aWR4KSA9CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3Jl YWQoJ3RhYl9leHRyYScsICdzdWJfc3Vic2V0JywgMjEsIDQwKTsKK2lzKCRzc19leHRyYV9o b3RpZHgsIDAsCisgICAnaG90X2luZGV4ZWRfb25fYXBwbHkgPSBzdWJzZXRfb25seTogbm8g SE9ULWluZGV4ZWQgb24gdGFiX2V4dHJhJyk7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQnKTsKKworIyBDYXNl IDM6IGFsd2F5cy4gIFVuY29uZGl0aW9uYWwgSE9ULWluZGV4ZWQgZWxpZ2liaWxpdHkuICBP biB0YWJfZXh0cmEKKyMgdXBkYXRlcyB0b3VjaGluZyB0aGUgaW5kZXhlZCBwYXlsb2FkIGNv bHVtbiBzaG91bGQgbm93IHJ1biBvbiB0aGUKKyMgSE9ULWluZGV4ZWQgcGF0aDogbl90dXBf aG90X2luZGV4ZWRfdXBkIG11c3QgaW5jcmVhc2UuCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2Fsd2F5cworCSAg Q09OTkVDVElPTiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lU SCAoc2xvdF9uYW1lID0gJ3N1Yl9hbHdheXNfc2xvdCcsIGNyZWF0ZV9zbG90ID0gdHJ1ZSwK KwkgICAgICAgIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycsIGNvcHlfZGF0YSA9 IGZhbHNlKTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX2Fsd2F5 cycpOworCitteSAodW5kZWYsIHVuZGVmLCAkYWxfZXh0cmFfaG90aWR4KSA9CisgIGFwcGx5 X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfYWx3YXlzJywgNDEsIDgwKTsK K2NtcF9vaygkYWxfZXh0cmFfaG90aWR4LCAnPicsIDAsCisJICAgJ2hvdF9pbmRleGVkX29u X2FwcGx5ID0gYWx3YXlzOiBIT1QtaW5kZXhlZCBmaXJlcyBvbiB0YWJfZXh0cmEnKTsKKwor IyBBTFRFUiBiYWNrIHRvIG9mZiBhbmQgdmVyaWZ5IHRoZSBhcHBseSB3b3JrZXIgcGlja3Mg dXAgdGhlIG5ldyBtb2RlLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CXF7QUxURVIgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMgU0VUIChob3RfaW5kZXhlZF9vbl9h cHBseSA9ICdvZmYnKX0pOworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJcXtTRUxFQ1Qgc3ViaG90aW5kZXhlZG9uYXBwbHkgRlJPTSBwZ19zdWJzY3JpcHRp b24KKwkJICBXSEVSRSBzdWJuYW1lID0gJ3N1Yl9hbHdheXMnfSksCisJJ28nLAorCSdBTFRF UiBzdWJfYWx3YXlzIFNFVCBob3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZiBwZXJzaXN0cycp OworCisjIERyaXZlIGFub3RoZXIgYmF0Y2ggb2YgdXBkYXRlcyBhbmQgY29uZmlybSBuX3R1 cF9ob3RfaW5kZXhlZF91cGQgZG9lcyBOT1QKKyMgYWR2YW5jZSBhZnRlciB0aGUgd29ya2Vy IHJlcmVhZHMgdGhlIGNhdGFsb2cuCitteSAodW5kZWYsIHVuZGVmLCAkcG9zdF9hbHRlcl9o b3RpZHgpID0KKyAgYXBwbHlfdXBkYXRlc19hbmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9h bHdheXMnLCA4MSwgMTAwKTsKK2lzKCRwb3N0X2FsdGVyX2hvdGlkeCwgMCwKKyAgICdBTFRF UiB0byBvZmYgZnJlZXplcyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWZ0ZXIgd29ya2VyIHJl cmVhZCcpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNV QlNDUklQVElPTiBzdWJfYWx3YXlzJyk7CisKKyMgLS0tIFN1YnNjcmliZXIgSU5TRVJULWFm dGVyLXJlcGxpY2F0ZWQtVVBEQVRFIHBlciBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMK KyMgVmVyaWZ5IHRoYXQgYSBzdWJzY3JpYmVyIElOU0VSVCB1c2luZyB0aGUgT0xEIHZhbHVl IG9mIGEgcmVwbGljYXRlZAorIyBVUERBVEUncyBpbmRleGVkIGNvbHVtbiBzdWNjZWVkcyB3 aXRob3V0IGEgc3B1cmlvdXMgdW5pcXVlLXZpb2xhdGlvbgorIyB1bmRlciBlYWNoIGFwcGx5 IG1vZGUuICBVc2UgYSBkZWRpY2F0ZWQgdGFibGUgKHRhYl91aykgc28gdGhlIHVuaXF1ZQor IyBjb25zdHJhaW50IGNhbiBiZSBkZWZpbmVkIHVwLWZyb250IGFuZCB0aGUgdGVzdCBkb2Vz IG5vdCBjb2xsaWRlIHdpdGgKKyMgcHJlLXBvcHVsYXRlZCByb3dzIGZyb20gdGhlIGFwcGx5 LXBhdGggc2NlbmFyaW9zIGFib3ZlLgorIworIyBQdWJsaXNoZXIgdXBkYXRlcyByb3cgJHVw ZF9pZCBjaGFuZ2luZyBwYXlsb2FkIGZyb20gMCB0byA5OTkuICBUaGUKKyMgc3Vic2NyaWJl ciB0aGVuIGluc2VydHMgYSBmcmVzaCByb3cgd2l0aCBwYXlsb2FkPTAgKHRoZSBwcmUtdXBk YXRlCisjIHZhbHVlKS4gIFVuZGVyIGFsbCB0aHJlZSBtb2RlcyBfYnRfY2hlY2tfdW5pcXVl J3MgcmVjaGVjayBvZiB0aGUKKyMgY29uZmxpY3RpbmcgdHVwbGUncyBsaXZlIGtleSBtdXN0 IHJlY29nbml6ZSB0aGUgc3RhbGUgbGVhZiBlbnRyeSBwb2ludGluZworIyBhdCB0aGUgY2hh aW4gcm9vdCwgc28gdGhlIElOU0VSVCBzdWNjZWVkcy4KKworJHB1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgKKwkgICAgaWQgICAg ICBpbnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAgICB0YWcgICAgIHRl eHQsCisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRzdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfdWsgKAorCSAgICBpZCAg ICAgIGludCBQUklNQVJZIEtFWSwKKwkgICAgcGF5bG9hZCBpbnQsCisJICAgIHRhZyAgICAg dGV4dCwKKwkgICAgVU5JUVVFIChwYXlsb2FkLCB0YWcpKX0pOworJHB1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFRBQkxF IHRhYl91a30pOworCitmb3IgbXkgJG1vZGUgKCdvZmYnLCAnc3Vic2V0X29ubHknLCAnYWx3 YXlzJykKK3sKKwlteSAkYmFzZV9pZCA9ICgkbW9kZSBlcSAnb2ZmJykgPyAxCisJICAgICAg ICAgICAgICA6ICgkbW9kZSBlcSAnc3Vic2V0X29ubHknKSA/IDEwMCA6IDIwMDsKKwlteSAk dXBkX2lkICA9ICRiYXNlX2lkICsgMTsKKwlteSAkaW5zX2lkICA9ICRiYXNlX2lkICsgMjsK KworCSMgU2VlZCBhIHJvdyB0aGF0IHdlIHdpbGwgVVBEQVRFIG9uIHRoZSBwdWJsaXNoZXIg KHBheWxvYWQgc3RhcnRzIGF0IDApLAorCSMgYW5kIGRyYWluIHRoZSBhcHBseSBmb3IgaXQg YmVmb3JlIGNoYW5naW5nIHBheWxvYWQuCisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0YWJfdWsgVkFMVUVTICgkdXBkX2lkLCAwLCAnbW9k ZV8kbW9kZScpIik7CisKKwkkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFx eworCQlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9kZQorCQkgIENPTk5FQ1RJT04g JyRwdWJfY29ubmluZm8nCisJCSAgUFVCTElDQVRJT04gcHViCisJCSAgV0lUSCAoc2xvdF9u YW1lID0gJ3N1Yl91a18ke21vZGV9X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJCSAg ICAgICAgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnJG1vZGUnLCBjb3B5X2RhdGEgPSB0cnVl KTsKKwl9KTsKKwkkcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCJzdWJfdWtfJG1vZGUi KTsKKworCSMgUHVibGlzaGVyIFVQREFURTogcGF5bG9hZCAwIC0+IDk5OS4KKwkkcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0YWJfdWsgU0VUIHBheWxv YWQgPSA5OTkgV0hFUkUgaWQgPSAkdXBkX2lkIik7CisJJHB1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgic3ViX3VrXyRtb2RlIik7CisKKwkjIFN1YnNjcmliZXIgSU5TRVJUIHdpdGgg dGhlIE9MRCBwYXlsb2FkIHZhbHVlIGJ1dCBhIHVuaXF1ZSB0YWcuICBUaGUKKwkjIGV4aXN0 aW5nIGNoYWluIGxlYWYgd2l0aCBrZXkgKDAsICdtb2RlXyRtb2RlJykgaXMgbm93IHN0YWxl OiB0aGUKKwkjIGxpdmUgdHVwbGUgYXQgdGhlIGNoYWluIHJvb3QgaGFzIHBheWxvYWQ9OTk5 LiAgX2J0X2NoZWNrX3VuaXF1ZQorCSMgcmVjaGVja3MgdGhlIGNvbmZsaWN0aW5nIHR1cGxl J3MgbGl2ZSBrZXkgYW5kIHJlY29nbml6ZXMgdGhlIHN0YWxlCisJIyBsZWFmLCBhbGxvd2lu ZyB0aGlzIElOU0VSVCB0byBzdWNjZWVkLgorCW15ICgkciwgJG91dCwgJGVycikgPSAkc3Vi c2NyaWJlci0+cHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGFiX3VrIFZBTFVF UyAoJGluc19pZCwgMCwgJ2ZyZXNoXyRtb2RlJykiKTsKKwlpcygkciwgMCwKKwkgICAiaG90 X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCSAgIC4gInN1YnNjcmliZXIgSU5TRVJU IHdpdGggb2xkIHBheWxvYWQgdmFsdWUgc3VjY2VlZHMiKTsKKwlsaWtlKCRlcnIsIHFyL14k LywKKwkJICJob3RfaW5kZXhlZF9vbl9hcHBseSA9ICRtb2RlOiAiCisJCSAuICJJTlNFUlQg ZGlkIG5vdCByYWlzZSBhbiBlcnJvciIpOworCisJJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiRFJPUCBTVUJTQ1JJUFRJT04gc3ViX3VrXyRtb2RlIik7Cit9CisK KyMgLS0tIGFsd2F5cy1tb2RlIHNhZmV0eSB3aXRoIGluZGV4ZWQgYXR0cnMgYmV5b25kIHRo ZSByZXBsaWNhIGlkZW50aXR5IC0tLS0tCisjCisjIEFtaXQncyBjb3JuZXI6IHVuZGVyIGhv dF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycgdGhlIGFwcGx5IHdvcmtlciBtYXkKKyMg cnVuIGEgSE9ULWluZGV4ZWQgdXBkYXRlIGV2ZW4gd2hlbiB0aGUgdGFibGUgaGFzIGFuIGlu ZGV4ZWQgYXR0cmlidXRlIHRoYXQKKyMgaXMgTk9UIGNvdmVyZWQgYnkgdGhlIHJlcGxpY2Eg aWRlbnRpdHkuICBUaGUgcmVhZC1zaWRlIHN0YWxlbmVzcyBtZWNoYW5pc20KKyMgbXVzdCBz dGlsbCBsZXQgdGhlIGFwcGx5IHdvcmtlcidzIGxhdGVyIHJlcGxpY2EtaWRlbnRpdHkgbG9v a3VwcyBmaW5kIHRoZQorIyByb3csIGFuZCBERUxFVEUvVVBEQVRFIHJlcGxpY2F0aW9uIG11 c3QgY29udmVyZ2UsIGluY2x1ZGluZyB3aGVuIHRoZQorIyByZXBsaWNhLWlkZW50aXR5IGNv bHVtbiBpdHNlbGYgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkuCisjCisjIHRhYl9y aTogcmVwbGljYSBpZGVudGl0eSBpcyBhIFVOSVFVRSBpbmRleCBvbiByaWQgKG5vdCB0aGUg UEspLCBhbmQgdGhlcmUKKyMgaXMgYW4gZXh0cmEgc2Vjb25kYXJ5IGluZGV4IG9uIHBheWxv YWQgdGhhdCBpcyBOT1QgcGFydCBvZiB0aGUgcmVwbGljYQorIyBpZGVudGl0eS4gIFNvIGEg cGF5bG9hZCBjaGFuZ2UgbWFrZXMgdGhlIHBheWxvYWQgbGVhZiBzdGFsZSwgYW5kIGFuIHJp ZAorIyBBQkEgY3ljbGUgbWFrZXMgdGhlIHJpZCAocmVwbGljYS1pZGVudGl0eSkgbGVhZiBz dGFsZSAtLSBib3RoIHdoaWxlCisjICdhbHdheXMnIGtlZXBzIHRoZSB1cGRhdGVzIG9uIHRo ZSBIT1QgY2hhaW4uCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlD UkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBLRVksIHJpZCBpbnQgTk9UIE5V TEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9yaV9yaWRfdWsg T04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3JpIFJFUExJQ0EgSURFTlRJVFkg VVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUgUFVCTElDQVRJT04gcHViX3Jp IEZPUiBUQUJMRSB0YWJfcmk7Cit9KTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXsKKwlDUkVBVEUgVEFCTEUgdGFiX3JpIChpZCBpbnQgUFJJTUFSWSBLRVksIHJp ZCBpbnQgTk9UIE5VTEwsIHBheWxvYWQgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRh Yl9yaV9yaWRfdWsgT04gdGFiX3JpKHJpZCk7CisJQUxURVIgVEFCTEUgdGFiX3JpIFJFUExJ Q0EgSURFTlRJVFkgVVNJTkcgSU5ERVggdGFiX3JpX3JpZF91azsKKwlDUkVBVEUgSU5ERVgg dGFiX3JpX3BheWxvYWRfaWR4IE9OIHRhYl9yaShwYXlsb2FkKTsKK30pOworCiskcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0lOU0VSVCBJTlRPIHRhYl9yaSBWQUxV RVMgKDEsIDEwLCAwKSwgKDIsIDIwLCAwKX0pOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX3JpCisJICBDT05O RUNUSU9OICckcHViX2Nvbm5pbmZvJworCSAgUFVCTElDQVRJT04gcHViX3JpCisJICBXSVRI IChzbG90X25hbWUgPSAnc3ViX3JpX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBjb3B5X2RhdGEgPSB0cnVl KTsKK30pOworIyBXYWl0IGZvciB0aGUgaW5pdGlhbCB0YWJsZSBDT1BZIHRvIGZpbmlzaCwg bm90IGp1c3Qgc3RyZWFtaW5nIGNhdGNoLXVwLCBzbworIyB0aGUgc2VlZGVkIHJvd3MgYXJl IHByZXNlbnQgYmVmb3JlIHdlIHN0YXJ0IHVwZGF0aW5nIHRoZW0uCiskc3Vic2NyaWJlci0+ d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1Yl9yaScpOworCisj IEN5Y2xlIHRoZSByZXBsaWNhLWlkZW50aXR5IGNvbHVtbiBhd2F5IGFuZCBiYWNrIChBQkEp LCBhbmQgYWxzbyBjaHVybiB0aGUKKyMgZXh0cmEgcGF5bG9hZCBpbmRleCwgYWxsIHJlcGxp Y2F0ZWQgdW5kZXIgJ2Fsd2F5cycuICBFYWNoIHN0ZXAgaXMgYQorIyBIT1QtaW5kZXhlZCB1 cGRhdGUgb24gdGhlIHN1YnNjcmliZXIgdGhhdCBsZWF2ZXMgYSBzdGFsZSBsZWFmLgorJHB1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJVVBEQVRFIHRhYl9yaSBTRVQg cmlkID0gMTEsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9IDE7CisJVVBEQVRF IHRhYl9yaSBTRVQgcmlkID0gMTAsIHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9 IDE7ICAtLSByaWQgQUJBCisJVVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9IHBheWxvYWQg KyAxIFdIRVJFIGlkID0gMjsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgn c3ViX3JpJyk7CisKKyMgQ29uZmlybSB0aGUgYXBwbHkgd29ya2VyIGFjdHVhbGx5IHRvb2sg dGhlIEhPVC1pbmRleGVkIHBhdGggb24gdGFiX3JpICh0aGUKKyMgd2hvbGUgcG9pbnQgb2Yg J2Fsd2F5cycgd2l0aCBpbmRleGVkIGF0dHJzIGJleW9uZCB0aGUgcmVwbGljYSBpZGVudGl0 eSkuCisjIFdpdGhvdXQgdGhpcyB0aGUgY29udmVyZ2VuY2UvdmVyaWZ5X2hlYXBhbSBhc3Nl cnRzIGJlbG93IGNvdWxkIHBhc3MKKyMgdmFjdW91c2x5IGlmIGVsaWdpYmlsaXR5IHNpbGVu dGx5IHJlZ3Jlc3NlZCB0byBwbGFpbiBub24tSE9ULgorbXkgKHVuZGVmLCB1bmRlZiwgJHJp X2hvdGlkeCkgPSBwb2xsX2NvdW50ZXJzKCRzdWJzY3JpYmVyLCAndGFiX3JpJywgMyk7Citj bXBfb2soJHJpX2hvdGlkeCwgJz4nLCAwLAorCSAgICdhbHdheXMtbW9kZTogSE9ULWluZGV4 ZWQgcGF0aCBmaXJlZCBvbiB0YWJfcmkgKHJpZC9wYXlsb2FkIGNodXJuKScpOworCisjIEEg c3Vic2VxdWVudCByZXBsaWNhdGVkIFVQREFURSBrZXllZCBieSB0aGUgcmVwbGljYSBpZGVu dGl0eSAocmlkKSBtdXN0CisjIGZpbmQgdGhlIHJvdyBkZXNwaXRlIHRoZSBzdGFsZSByaWQv cGF5bG9hZCBsZWF2ZXMgdGhlIEFCQSBsZWZ0IGJlaGluZC4KKyRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCXF7VVBEQVRFIHRhYl9yaSBTRVQgcGF5bG9hZCA9IDEwMCBX SEVSRSBpZCA9IDF9KTsKKyMgQW5kIGEgcmVwbGljYXRlZCBERUxFVEUgcmVzb2x2ZWQgdGhy b3VnaCB0aGUgcmVwbGljYS1pZGVudGl0eSBpbmRleCBtdXN0CisjIGFsc28gZmluZCBhbmQg cmVtb3ZlIHRoZSByaWdodCByb3cuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXtERUxFVEUgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSk7CiskcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWJfcmknKTsKKworaXMoICRzdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgcmlkIHx8ICc6JyB8fCBwYXlsb2FkIEZST00g dGFiX3JpIFdIRVJFIGlkID0gMX0pLAorCScxMDoxMDAnLAorCSdhbHdheXMtbW9kZTogcmVw bGljYXRlZCBVUERBVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgYWZ0ZXIgcmlkIEFCQScpOwor aXMoICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291 bnQoKikgRlJPTSB0YWJfcmkgV0hFUkUgaWQgPSAyfSksCisJJzAnLAorCSdhbHdheXMtbW9k ZTogcmVwbGljYXRlZCBERUxFVEUgZm91bmQgdGhlIHJvdyB2aWEgUkkgd2l0aCBzdGFsZSBs ZWF2ZXMnKTsKKyMgRnVsbCBjb252ZXJnZW5jZSBjcm9zcy1jaGVjay4KK2lzKCAkc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN0cmluZ19hZ2coaWQg fHwgJywnIHx8IHJpZCB8fCAnLCcgfHwgcGF5bG9hZCwgJzsnIE9SREVSIEJZIGlkKQorCQkg IEZST00gdGFiX3JpfSksCisJJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CXF7U0VMRUNUIHN0cmluZ19hZ2coaWQgfHwgJywnIHx8IHJpZCB8fCAnLCcgfHwgcGF5bG9h ZCwgJzsnIE9SREVSIEJZIGlkKQorCQkgIEZST00gdGFiX3JpfSksCisJJ2Fsd2F5cy1tb2Rl OiB0YWJfcmkgY29udmVyZ2VzIGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyJyk7 CisKKyMgdmVyaWZ5X2hlYXBhbSBmaW5kcyBubyBjb3JydXB0aW9uIGluIHRoZSBIT1QtaW5k ZXhlZCBjaGFpbnMgbGVmdCBiZWhpbmQuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjaycpOworaXMo ICRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQo KikgRlJPTSB2ZXJpZnlfaGVhcGFtKCd0YWJfcmknKX0pLAorCScwJywKKwknYWx3YXlzLW1v ZGU6IHZlcmlmeV9oZWFwYW0gY2xlYW4gb24gdGFiX3JpIGFmdGVyIHN0YWxlLWxlYWYgY2h1 cm4nKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJT Q1JJUFRJT04gc3ViX3JpJyk7CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHku cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9p ZGVudGl0eS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjgw MTc4N2I0YzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w NDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbApAQCAtMCwwICsxLDExMCBAQAor IyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKKyMgTGl2ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIG9mIEhPVC1pbmRleGVkIHVwZGF0 ZXMgdW5kZXIgbm9uLWRlZmF1bHQgcmVwbGljYQorIyBpZGVudGl0aWVzLiAgVGhlIGFwcGx5 IHdvcmtlciBsb2NhdGVzIHRoZSByb3cgdG8gdXBkYXRlIG9yIGRlbGV0ZSB2aWEgdGhlCisj IHJlcGxpY2EgaWRlbnRpdHk6IGEgc2Vxc2NhbiBmb3IgUkVQTElDQSBJREVOVElUWSBGVUxM LCBhbmQgdGhlIG5vbWluYXRlZAorIyBpbmRleCBmb3IgUkVQTElDQSBJREVOVElUWSBVU0lO RyBJTkRFWC4gIE9uIGEgc3Vic2NyaWJlciB3aG9zZSB0YWJsZXMgY2FycnkKKyMgZXh0cmEg aW5kZXhlcyAoc28gYXBwbHkgcGVyZm9ybXMgSE9ULWluZGV4ZWQgdXBkYXRlcyBhbmQgbGVh dmVzIHN0YWxlIGluZGV4CisjIGxlYXZlcyksIHRoYXQgbG9va3VwIG11c3Qgc3RpbGwgZmlu ZCB0aGUgY3VycmVudCByb3cgLS0gaW5jbHVkaW5nIGFmdGVyIHRoZQorIyBpZGVudGl0eSBj b2x1bW4ncyB2YWx1ZSBpcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoQUJBKS4KK3VzZSBzdHJp Y3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpN b3JlOworCitteSAkcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJHB1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRzdWJzY3JpYmVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskc3Vic2NyaWJl ci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHB1Yl9jb25uaW5mbyA9ICRw dWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CisKKyMgdGFiX2Z1bGw6 IFJFUExJQ0EgSURFTlRJVFkgRlVMTCAoYXBwbHkgdXNlcyBhIHNlcXVlbnRpYWwgc2Nhbiku CisjIHRhYl9pZHg6ICBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIG9uIGEgbm9uLVBL IHVuaXF1ZSBpbmRleCB3aG9zZQorIyAgICAgICAgICAgY29sdW1uIGlzIGl0c2VsZiB1cGRh dGVkLCBzbyB0aGUgYXBwbHktc2lkZSBpbmRleCBsb29rdXAgbXVzdAorIyAgICAgICAgICAg dG9sZXJhdGUgc3RhbGUgbGVhdmVzIGxlZnQgYnkgZWFybGllciBIT1QtaW5kZXhlZCB1cGRh dGVzLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRB QkxFIHRhYl9mdWxsIChhIGludCwgYiBpbnQsIGMgaW50KTsKKwlBTFRFUiBUQUJMRSB0YWJf ZnVsbCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9pZHggKGsg aW50IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpOworCUNSRUFURSBVTklRVUUgSU5ERVggdGFi X2lkeF9rIE9OIHRhYl9pZHggKGspOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQTElDQSBJ REVOVElUWSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1 YiBGT1IgVEFCTEUgdGFiX2Z1bGwsIHRhYl9pZHg7Cit9KTsKKworIyBUaGUgc3Vic2NyaWJl ciBhZGRzIGV4dHJhIHNlY29uZGFyeSBpbmRleGVzIHNvIHRoYXQgYW4gVVBEQVRFIGNoYW5n aW5nIG9uZQorIyBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1QtaW5kZXhlZCBvbiBhcHBseS4K KyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlDUkVBVEUgVEFCTEUg dGFiX2Z1bGwgKGEgaW50LCBiIGludCwgYyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CisJQ1JFQVRFIElOREVYIHRhYl9mdWxsX2IgT04gdGFiX2Z1bGwgKGIpOworCUNSRUFURSBJ TkRFWCB0YWJfZnVsbF9jIE9OIHRhYl9mdWxsIChjKTsKKwlBTFRFUiBUQUJMRSB0YWJfZnVs bCBSRVBMSUNBIElERU5USVRZIEZVTEw7CisJQ1JFQVRFIFRBQkxFIHRhYl9pZHggKGsgaW50 IE5PVCBOVUxMLCB2IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisJQ1JF QVRFIFVOSVFVRSBJTkRFWCB0YWJfaWR4X2sgT04gdGFiX2lkeCAoayk7CisJQ1JFQVRFIElO REVYIHRhYl9pZHhfdiBPTiB0YWJfaWR4ICh2KTsKKwlDUkVBVEUgSU5ERVggdGFiX2lkeF93 IE9OIHRhYl9pZHggKHcpOworCUFMVEVSIFRBQkxFIHRhYl9pZHggUkVQTElDQSBJREVOVElU WSBVU0lORyBJTkRFWCB0YWJfaWR4X2s7Cit9KTsKKworIyBBbGxvdyBIT1QtaW5kZXhlZCB1 cGRhdGVzIG9uIHRoZSBhcHBseSBwYXRoLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YgorCSAgQ09OTkVDVElPTiAn JHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1YgorCSAgV0lUSCAoaG90X2luZGV4 ZWRfb25fYXBwbHkgPSBhbHdheXMpOworfSk7Ciskc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vi c2NyaXB0aW9uX3N5bmMoJHB1Ymxpc2hlciwgJ3N1YicpOworCisjIFNlZWQgYm90aCB0YWJs ZXMuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlJTlNFUlQgSU5U TyB0YWJfZnVsbCBWQUxVRVMgKDEsIDEwLCAxMDApLCAoMiwgMjAsIDIwMCk7CisJSU5TRVJU IElOVE8gdGFiX2lkeCBWQUxVRVMgKDEsIDEwLCAxMDAwKSwgKDIsIDIwLCAyMDAwKTsKK30p OworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViJyk7CisKKyMgQSBydW4gb2Yg c2luZ2xlLWNvbHVtbiB1cGRhdGVzOiBlYWNoIHN0YXlzIEhPVC1pbmRleGVkIG9uIHRoZSBz dWJzY3JpYmVyIGFuZAorIyBsZWF2ZXMgc3RhbGUgbGVhdmVzLCB0aGVuIHRoZSBpZGVudGl0 eS9QSyByb3cgaXMgbWF0Y2hlZCBhZ2FpbiBieSB0aGUgbmV4dAorIyBjaGFuZ2UuICBJbmNs dWRlIGFuIEFCQSBjeWNsZSBvbiB0aGUgVVNJTkcgSU5ERVggY29sdW1uIGsgKDEgLT4gMyAt PiAxKS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSB0 YWJfZnVsbCBTRVQgYiA9IGIgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfZnVsbCBT RVQgYyA9IGMgKyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfZnVsbCBTRVQgYiA9IGIg KyAxIFdIRVJFIGEgPSAxOworCVVQREFURSB0YWJfaWR4IFNFVCB2ID0gdiArIDEgV0hFUkUg ayA9IDE7CisJVVBEQVRFIHRhYl9pZHggU0VUIGsgPSAzIFdIRVJFIGsgPSAxOworCVVQREFU RSB0YWJfaWR4IFNFVCB3ID0gdyArIDEgV0hFUkUgayA9IDM7CisJVVBEQVRFIHRhYl9pZHgg U0VUIGsgPSAxIFdIRVJFIGsgPSAzOworCURFTEVURSBGUk9NIHRhYl9mdWxsIFdIRVJFIGEg PSAyOworCURFTEVURSBGUk9NIHRhYl9pZHggV0hFUkUgayA9IDI7Cit9KTsKKyRwdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisjIFRoZSBzdWJzY3JpYmVyIG11c3Qg bWF0Y2ggdGhlIHB1Ymxpc2hlciBleGFjdGx5OiB0aGUgUkkgbG9va3VwcyBmb3VuZCB0aGUK KyMgcmlnaHQgcm93cyBhY3Jvc3MgdGhlIEhPVC1pbmRleGVkIGNoYWlucyBhbmQgdGhlIEFC QSBjeWNsZS4KK215ICRwdWJfZnVsbCA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCXF7U0VMRUNUIGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBhfSk7Citt eSAkc3ViX2Z1bGwgPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtT RUxFQ1QgYSwgYiwgYyBGUk9NIHRhYl9mdWxsIE9SREVSIEJZIGF9KTsKK2lzKCRzdWJfZnVs bCwgJHB1Yl9mdWxsLCAnUkVQTElDQSBJREVOVElUWSBGVUxMOiBzdWJzY3JpYmVyIG1hdGNo ZXMgcHVibGlzaGVyJyk7CisKK215ICRwdWJfaWR4ID0gJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JERVIgQlkg a30pOworbXkgJHN1Yl9pZHggPSAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcXtTRUxFQ1QgaywgdiwgdyBGUk9NIHRhYl9pZHggT1JERVIgQlkga30pOworaXMoJHN1 Yl9pZHgsICRwdWJfaWR4LAorCSdSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYOiBzdWJz Y3JpYmVyIG1hdGNoZXMgcHVibGlzaGVyIGFjcm9zcyBBQkEnKTsKKworIyBUaGUgc3Vic2Ny aWJlcidzIHRhYmxlcyBtdXN0IGJlIHN0cnVjdHVyYWxseSBjb25zaXN0ZW50IChzdHVicyBy ZWNvZ25pc2VkKS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtDUkVB VEUgRVhURU5TSU9OIGFtY2hlY2t9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZST00gdmVyaWZ5X2hlYXBhbSgndGFi X2lkeCcpfSksCisJJzAnLAorCSdzdWJzY3JpYmVyIHRhYl9pZHggaGFzIG5vIGhlYXAgY29y cnVwdGlvbiBhZnRlciBIT1QtaW5kZXhlZCBhcHBseScpOworCiskc3Vic2NyaWJlci0+c3Rv cDsKKyRwdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi41MC4xCgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac Content-Disposition: attachment; filename*0="v57-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v57-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSAyMzQyYjMwY2MxMzgxZjk0ZTA0MjUyZDY4MmNiNWJhZTRkN2ViOGViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjU3IDkv OV0gW0RPIE5PVCBNRVJHRV0gQWRkIGEgSE9UL1NJVSBiZW5jaG1hcmsgaGFybmVzcwoKQS9C IGFuZCBzaW5nbGUtdmFyaWFudCBiZW5jaG1hcmsgc2NyaXB0cyBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlczogYnVpbGQgdHdvCnBvc3RncmVzIHZhcmlhbnRzLCBydW4gcGdiZW5jaCB3b3Jr bG9hZHMgZXhlcmNpc2luZyBjbGFzc2ljLUhPVCwgbm9uLUhPVCwgYW5kCkhPVC1pbmRleGVk IHBhdGhzLCBhbmQgYSBzZWxmLWNvbnRhaW5lZCBibG9hdCBwcm9iZSB0aGF0IHJlcG9ydHMg dGhlIHNraXAgY291bnQKKGluZGV4IHdyaXRlcyBhdm9pZGVkIG9uIHVuY2hhbmdlZCBpbmRl eGVzKSBhbmQgY2hhbmdlZC1pbmRleCBib3VuZGluZy4gIE5vdApmb3IgbWVyZ2U7IGtlcHQg Zm9yIGV2YWx1YXRpbmcgdGhlIGZlYXR1cmUuCi0tLQogc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvUkVBRE1FLm1kICAgICAgICAgICAgIHwgIDgyICsrKysKIHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAuLi4vc2l1L3Nj cmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwogLi4uL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsKIC4uLi9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSArCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2ggICAg ICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0 ZS5zcWwgICAgfCAgIDcgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NjAgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5tZAog Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxv YXQuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3Jp cHRzL2J1aWxkLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Jl YWRfaW5kZXhzY2FuLnNxbAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvcnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjlhNjJkMjY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1p bmRleGVkKSBBL0IgYmVuY2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRz LCBpZGVudGljYWwgcGdkYXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lz aW5nIGNsYXNzaWMgSE9ULCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMj IENvbnRlbnRzCisKKy0gYHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdy ZXMgdmFyaWFudHMgKGBtYXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3Jp Z2luL21hc3RlcjsgYHRlcGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJl cworICBhIHdyaXRhYmxlIGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAv c2NyYXRjaC90ZXBpZC1iZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2 ZXIuICBSdW5zIGBzaW1wbGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhl ZF91cGRhdGVgLCBgaG90X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQg YHdpZGVfTmAKKyAgZm9yIE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBs YXRlbmN5LCBXQUwgYnl0ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5k CisgIGluZGV4IHNpemUsIHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBy dW4gdG8gYCRCRU5DSC9yZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmct cnVubmluZyBzaW5nbGUtd29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9U JS9XQUwvYmxvYXQgZXZlcnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAg c2Vjb25kcworICBvZiBjb25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3Jp cHRzL2Jsb2F0LnNoYCAtLSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBk YXRlK3ZhY3V1bSBjeWNsZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBh bmQgYW4gdW5jaGFuZ2VkIGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0 cyAodmlhIHBnc3RhdHR1cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5k ZWQgd2l0aCBwZXJpb2RpYworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0 IGl0LCBwbHVzIHRoZSBza2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRl cyBhdm9pZGluZyB0aGUgdW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3 YXkKKyAgY2x1c3Rlciwgc28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCist IGBzY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxl IFNFVCBiID0gcmFuZCBXSEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVk X21peGVkLnNxbGAgIC0tIDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBV UERBVEUuCistIGBzY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0 cmVlIGluZGV4IHNjYW5zIG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8g c3RhbGUgZW50cmllcyk7IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAg YWRkcyBubyBwZXItc2NhbiBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkZWNpZGVzCisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24g YW5kIHRoZSBzY2FuIHJlcXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRl X3VwZGF0ZS5zcWxgIC0tIGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmts b2FkOworICB0aGUgYFNFVGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRX SURFX1NURVBTYC4KKworIyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50 cyAocnVuIG9uY2UgcGVyIGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCBCRU5DSD0vc2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWls ZC5zaAorCisjIFN0YW5kYXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTgg RFVSQVRJT049MTIwIFwKKyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2 IFwKKyAgLi9zY3JpcHRzL3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYg VEhSRUFEUz04IERVUkFUSU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5z aAorCisjIEJsb2F0IHByb2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRl cGlkIGJ1aWxkKQorQkVOQ0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xF Uz04IFVQREFURVM9MjAgXAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYg dmFycworCitgYGAKK1JFUE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFz IC5naXQpCitCRU5DSCAgICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVp bGQgdHJlZXMsIHJlc3VsdHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2 ZXMgc2l1X3RhYmxlIHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdi ZW5jaCAtYworVEhSRUFEUyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRz IHBlciB3b3JrbG9hZAorV0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1 bW5zIGluIHdpZGVfdGFibGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgY29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAg ICAgICAgICAgICAoZGVmYXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVz IHBvcnQgZm9yIHRoZSBiZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNx bC5jb25mIHNldHRpbmcgKGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24g Zm9yIHRoZSBtYXN0ZXIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisg ICAgICAgICAgICAgd2l0aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9u IGZvciB0aGUgdGVwaWQgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9u bHk6CitCSU5ESVIgICAgICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0 ZXBpZCB2YXJpYW50IHVuZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAo ZGVmYXVsdCA1MDAwKQorQ1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZh dWx0IDgpCitVUERBVEVTICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVs dCAyMCkKK2BgYAorCitUaGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBh bmQgRnJlZUJTRDsgdGhlIENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNz PSAtLXBwaWQgTEVBREVSIC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Bl ci1waWQgYHBzYCAoRnJlZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjM0MTcxYzY4ZjViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApAQCAtMCww ICsxLDg0IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIFNpbmdsZS12YXJpYW50IGJsb2F0 IGJlbmNobWFyayBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgVGhlIEEv QiBydW4uc2ggbWVhc3VyZXMgVFBTL1dBTC9hZ2dyZWdhdGUgc2l6ZTsgaXQgZG9lcyBub3Qg aXNvbGF0ZSB0d28KKyMgYmxvYXQgcHJvcGVydGllcyBvZiB0aGUgSE9ULWluZGV4ZWQgcGF0 aCwgd2hpY2ggdGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzOgorIworIyAgIDEuIFN0YWxlIGlu ZGV4IGVudHJpZXMgb24gdGhlIENIQU5HRUQgaW5kZXggYWNjdW11bGF0ZSBiZXR3ZWVuIHZh Y3V1bXMsCisjICAgICAgYnV0IFZBQ1VVTSByZWNsYWltcyB0aGVtLCBzbyBzaXplIHN0YXlz IGJvdW5kZWQgYWNyb3NzIHVwZGF0ZSt2YWN1dW0KKyMgICAgICBjeWNsZXMuICBTa2lwcGlu ZyB2YWN1dW0gbGV0cyB0aGVtIGdyb3cgdW5ib3VuZGVkICh0aGUgaW5oZXJlbnQKKyMgICAg ICBpbnRlci12YWN1dW0gYmxvYXQ7IHJlYWQtZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBtZWFud2hpbGUpLgorIyAgIDIuIEFuIGluZGV4IG9uIGFuIFVOQ0hB TkdFRCBjb2x1bW4gaXMgc2tpcHBlZCBieSBIT1QtaW5kZXhlZCB1cGRhdGVzICh0aGUKKyMg ICAgICBzZWxlY3RpdmUtdXBkYXRlIGJlbmVmaXQpIC0tIHZpc2libGUgYXMgYSBza2lwIGNv dW50LiAgVXBkYXRlcyB0aGF0IGZhbGwKKyMgICAgICBiYWNrIHRvIG5vbi1IT1QgKGUuZy4g d2hlbiB0aGUgcGFnZSBoYXMgbm8gcm9vbSBmb3IgdGhlIGNoYWluKSBzdGlsbAorIyAgICAg IGluc2VydCBpbnRvIGl0LCBzbyBpdHMgc2l6ZSByZWZsZWN0cyBvbmx5IHRoZSBub24tSE9U IHJlbWFpbmRlci4KKyMKKyMgVXNlcyB0aGUgdGVwaWQgdmFyaWFudCBidWlsdCBieSBidWls ZC5zaCAob3ZlcnJpZGUgQklORElSIGZvciBhbnkgYnVpbGQpIGFuZAorIyBhIHRocm93YXdh eSBjbHVzdGVyIHVuZGVyICRCRU5DSCwgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgQS9CIHBn ZGF0YS4KKyMKKyMgRW52OiBCRU5DSCAoZGVmYXVsdCAvc2NyYXRjaC9zaXUtYmVuY2gpLCBC SU5ESVIgKGRlZmF1bHQgdGVwaWQgdmFyaWFudCBiaW4pLAorIyAgICAgIFBPUlQgKGRlZmF1 bHQgNTc0ODEpLCBST1dTIChkZWZhdWx0IDUwMDApLCBDWUNMRVMgKGRlZmF1bHQgOCksCisj ICAgICAgVVBEQVRFUyAodXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSwgZGVmYXVsdCAyMCku CitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVu Y2h9CitCSU5ESVI9JHtCSU5ESVI6LSRCRU5DSC90ZXBpZC91c3IvbG9jYWwvcGdzcWwvYmlu fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorUk9XUz0ke1JPV1M6LTUwMDB9CitDWUNMRVM9JHtD WUNMRVM6LTh9CitVUERBVEVTPSR7VVBEQVRFUzotMjB9CitEQVRBRElSPSRCRU5DSC9fZGF0 YV9ibG9hdAorCitiYXNlPSQoZGlybmFtZSAiJEJJTkRJUiIpCitpZiBbIC1kICIkYmFzZS9s aWI2NCIgXTsgdGhlbgorICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkYmFzZS9saWI2NCR7 TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0iCitlbHNlCisgIGV4cG9ydCBM RF9MSUJSQVJZX1BBVEg9IiRiYXNlL2xpYiR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJB UllfUEFUSH0iCitmaQorCitQU1FMPSgiJEJJTkRJUi9wc3FsIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgLVggLXEpCitQKCkgeyAiJHtQU1FMW0BdfSIgLUF0ICIkQCI7IH0K KworIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3AgLW0gZmFzdCA+L2Rldi9u dWxsIDI+JjEgfHwgdHJ1ZQorcm0gLXJmICIkREFUQURJUiIKKyIkQklORElSL2luaXRkYiIg LUQgIiREQVRBRElSIiAtVSBwb3N0Z3JlcyAtLW5vLXN5bmMgPi9kZXYvbnVsbAorY2F0ID4+ ICIkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitwb3J0ID0gJFBPUlQKK2F1dG92 YWN1dW0gPSBvZmYKK2ZzeW5jID0gb2ZmCitFT0YKKyIkQklORElSL3BnX2N0bCIgLUQgIiRE QVRBRElSIiAtbyAiLXAgJFBPUlQiIC1sICIkQkVOQ0gvX2Jsb2F0LmxvZyIgLXcgc3RhcnQg Pi9kZXYvbnVsbAordHJhcCAnIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3Ag LW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZScgRVhJVAorIiR7UFNRTFtAXX0iIC1j ICJDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdzdGF0dHVwbGU7IiA+L2Rldi9u dWxsCisKKyMgJDEgPSB0YWJsZSBuYW1lLCAkMiA9IHZhY3V1bV9lYWNoICgxLzApLiAgUmV0 dXJucyBmaW5hbCBpZHhfYSBjb21wb3NpdGlvbi4KK3J1bl9hcm0oKSB7CisgIGxvY2FsIHRi bD0kMSB2YWM9JDIKKyAgIiR7UFNRTFtAXX0iIDw8U1FMID4vZGV2L251bGwKK0RST1AgVEFC TEUgSUYgRVhJU1RTICR0Ymw7CitDUkVBVEUgVEFCTEUgJHRibCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYICR7dGJsfV9hIE9OICR0YmwoYSk7ICAgLS0gY2hhbmdlZCBjb2x1bW4K K0NSRUFURSBJTkRFWCAke3RibH1fYiBPTiAkdGJsKGIpOyAgIC0tIG5ldmVyIGNoYW5nZWQK K0lOU0VSVCBJTlRPICR0YmwgU0VMRUNUIGcsIGcsIGcsIHJlcGVhdCgneCcsIDQwKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAkUk9XUykgZzsKK1ZBQ1VVTSAoRlJFRVpFLCBBTkFMWVpF KSAkdGJsOworU1FMCisgIGxvY2FsIGN5YworICBmb3IgKChjeWMgPSAxOyBjeWMgPD0gQ1lD TEVTOyBjeWMrKykpOyBkbworICAgICIke1BTUUxbQF19IiAtYyAiRE8gXCRcJCBCRUdJTiBG T1IgdSBJTiAxLi4kVVBEQVRFUyBMT09QIFVQREFURSAkdGJsIFNFVCBhID0gYSArIDE7IEVO RCBMT09QOyBFTkQgXCRcJDsiID4vZGV2L251bGwKKyAgICBbICIkdmFjIiA9IDEgXSAmJiAi JHtQU1FMW0BdfSIgLWMgIlZBQ1VVTSAkdGJsOyIgPi9kZXYvbnVsbAorICBkb25lCisgIFAg LWMgIlNFTEVDVCAnJHRibCh2YWN1dW1fZWFjaD0kdmFjKTonCisgICAgICAgIHx8ICcgaWR4 X2Ffa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1fYScpLzEwMjQKKyAgICAgICAg fHwgJyBpZHhfYV9saXZlPScgfHwgKFNFTEVDVCB0dXBsZV9jb3VudCBGUk9NIHBnc3RhdHR1 cGxlKCcke3RibH1fYScpKQorICAgICAgICB8fCAnIGlkeF9hX2ZyZWUlPScgfHwgcm91bmQo KFNFTEVDVCBmcmVlX3BlcmNlbnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0Ymx9X2EnKSk6Om51 bWVyaWMsMSkKKyAgICAgICAgfHwgJyBpZHhfYl9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUo JyR7dGJsfV9iJykvMTAyNAorICAgICAgICB8fCAnIGlkeF9iX3NraXBzPScgfHwgY29hbGVz Y2UoKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcyBX SEVSRSBpbmRleHJlbG5hbWU9JyR7dGJsfV9iJyksIDApOyIKK30KKworZWNobyAiPT09IEhP VC1pbmRleGVkIGJsb2F0OiAkQ1lDTEVTIGN5Y2xlcyB4ICgkVVBEQVRFUyB1cGRhdGVzL3Jv dyB4ICRST1dTIHJvd3MpID09PSIKK3J1bl9hcm0gdF92YWMgMQorcnVuX2FybSB0X25vdmFj IDAKK2VjaG8gImlkeF9hOiBib3VuZGVkIHdpdGggdmFjdXVtX2VhY2g9MSwgdW5ib3VuZGVk IHdpdGggPTAgKHN0YWxlIGVudHJpZXMgYWNjdW11bGF0ZSIKK2VjaG8gInVudGlsIHJlY2xh aW1lZCkuICBpZHhfYl9za2lwcyBjb3VudHMgZW50cmllcyB0aGUgSE9ULWluZGV4ZWQgcGF0 aCBhdm9pZGVkIG9uIgorZWNobyAidGhlIHVuY2hhbmdlZCBpbmRleDsgaWR4X2Jfa2IgaXMg b25seSB0aGUgbm9uLUhPVC1mYWxsYmFjayByZW1haW5kZXIuIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCBiL3NyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAuLmIyZjBlZTUyNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApAQCAtMCwwICsxLDU0IEBACisjIS91 c3IvYmluL2VudiBiYXNoCisjIEJ1aWxkIHR3byBwb3N0Z3JlcyB2YXJpYW50cyBmb3IgdGVw aWQgKEhPVC1pbmRleGVkKSBBL0IgYmVuY2htYXJrcy4KKyMKKyMgRW52IHZhcnMgKGFsbCBv cHRpb25hbCk6CisjICAgUkVQTyAgICAgICAgICAtLSBwYXRoIHRvIHBvc3RncmVzIHNvdXJj ZSByZXBvIChkZWZhdWx0OiAkSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCwgb3IgL3NjcmF0Y2gv c2l1LWJlbmNoL3JlcG8pCisjICAgQkVOQ0ggICAgICAgICAtLSBiZW5jaCByb290IChkZWZh dWx0OiAvc2NyYXRjaC9zaXUtYmVuY2gpCisjICAgTUFTVEVSX1JFViAgICAtLSByZXZpc2lv biBmb3IgdGhlICJtYXN0ZXIiIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFz ZSB3aXRoIG9yaWdpbi9tYXN0ZXIpCisjICAgVEVQSURfUkVWICAgICAtLSByZXZpc2lvbiBm b3IgdGhlICJ0ZXBpZCIgIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorIyAgIEpPQlMgICAg ICAgICAgLS0gcGFyYWxsZWwgY29tcGlsZSBqb2JzIChkZWZhdWx0OiBucHJvYyBvciA4KQor c2V0IC1ldW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNo fQorSk9CUz0ke0pPQlM6LSQoIChjb21tYW5kIC12IG5wcm9jID4vZGV2L251bGwgJiYgbnBy b2MpIHx8IHN5c2N0bCAtbiBody5uY3B1IDI+L2Rldi9udWxsIHx8IGVjaG8gOCApfQoraWYg WyAteiAiJHtSRVBPOi19IiBdOyB0aGVuCisgIGZvciBjYW5kaWRhdGUgaW4gIiRIT01FL3dz L3Bvc3RncmVzL3RlcGlkIiAiJEJFTkNIL3JlcG8iIC9zY3JhdGNoL3BnOyBkbworICAgIGlm IFsgLWQgIiRjYW5kaWRhdGUvLmdpdCIgXTsgdGhlbiBSRVBPPSRjYW5kaWRhdGU7IGJyZWFr OyBmaQorICBkb25lCitmaQorOiAiJHtSRVBPOj9SRVBPIG5vdCBzZXQgYW5kIG5vIGRlZmF1 bHQgZm91bmR9IgorY2QgIiRSRVBPIgorCitURVBJRF9SRVY9JHtURVBJRF9SRVY6LXRlcGlk fQorTUFTVEVSX1JFVj0ke01BU1RFUl9SRVY6LSQoZ2l0IG1lcmdlLWJhc2UgIiRURVBJRF9S RVYiIG9yaWdpbi9tYXN0ZXIgMj4vZGV2L251bGwgfHwgZ2l0IG1lcmdlLWJhc2UgIiRURVBJ RF9SRVYiIG1hc3Rlcil9CisKK2VjaG8gIlJFUE89JFJFUE8gIE1BU1RFUj0kTUFTVEVSX1JF ViAgVEVQSUQ9JFRFUElEX1JFViAgSk9CUz0kSk9CUyAgQkVOQ0g9JEJFTkNIIgorCitkaWUo KSB7IHByaW50ZiAnYnVpbGQ6ICVzXG4nICIkKiIgPiYyOyBleGl0IDE7IH0KK2lmIGdpdCBz dGF0dXMgLS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisg IGRpZSAicmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3Ig Y29tbWl0IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0k MQorICBsb2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hv ICI9PT0gYnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgWyAtZCAiJHBy ZWZpeCIgXSAmJiBmaW5kICIkcHJlZml4IiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGly ICIkcHJlZml4IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVp ZXQgLS1kZXRhY2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisg IFsgLWQgIiRibGQiIF0gJiYgZmluZCAiJGJsZCIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBy bWRpciAiJGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vz ci9sb2NhbC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZh bHNlIFwKKyAgICAtRGV4dHJhX3ZlcnNpb249LXNpdWJlbmNoLSRuYW1lID4vZGV2L251bGwK KyAgbWVzb24gY29tcGlsZSAtQyAiJGJsZCIgLWogIiRKT0JTIgorICBtZXNvbiBpbnN0YWxs IC1DICIkYmxkIiAtLWRlc3RkaXI9LyA+L2Rldi9udWxsCisgICIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbC9iaW4vcG9zdGdyZXMiIC0tdmVyc2lvbgorfQorCitPUklHPSQoZ2l0IHN5bWJv bGljLXJlZiAtLXF1aWV0IC0tc2hvcnQgSEVBRCB8fCBnaXQgcmV2LXBhcnNlIEhFQUQpCit0 cmFwICdnaXQgY2hlY2tvdXQgLS1xdWlldCAiJE9SSUciJyBFWElUCisKK2J1aWxkX3Zhcmlh bnQgbWFzdGVyICIkTUFTVEVSX1JFViIKK2J1aWxkX3ZhcmlhbnQgdGVwaWQgICIkVEVQSURf UkVWIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hv dF9pbmRleGVkX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2FiMzI4OWRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbApAQCAtMCwwICsxLDExIEBA CistLSBNaXhlZCB3b3JrbG9hZDogODAlIHNlbGVjdHMsIDIwJSBpbmRleGVkLWNvbHVtbiB1 cGRhdGVzLgorLS0gRXhlcmNpc2VzIGJvdGggdGhlIGhvdC1pbmRleGVkIHdyaXRlciBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlLWJpdG1hcCByZWFkZXIuCitcc2V0IGFpZCByYW5kb20o MSwgOnNjYWxlICogMTAwMDAwKQorXHNldCBiaWQgcmFuZG9tKDEsIDEwMDAwMDApCitcc2V0 IHdoaWNoIHJhbmRvbSgxLCAxMDApCitCRUdJTjsKK1NFTEVDVCAqIEZST00gc2l1X3RhYmxl IFdIRVJFIGEgPSA6YWlkOworXGlmIDp3aGljaCA+IDgwCisgIFVQREFURSBzaXVfdGFibGUg U0VUIGIgPSA6YmlkIFdIRVJFIGEgPSA6YWlkOworXGVuZGlmCitDT01NSVQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0 ZS5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYxYmNm OTU5YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNiBAQAorLS0gaG90LWlu ZGV4ZWQtZnJpZW5kbHkgd29ya2xvYWQ6IG5hcnJvdyB0YWJsZSB3aXRoIGEgZmV3IG5vbi1Q SyBpbmRleGVzLgorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBp bmRleGVkIGNvbHVtbiBvbiBhIHJhbmRvbSByb3cuCistLSBXaXRoIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQ7IHdpdGhvdXQgaG90LWluZGV4ZWQgaXQgaXMgbm9uLUhPVC4K K1xzZXQgYWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IG5ld19iIHJhbmRv bSgxLCAxMDAwMDAwKQorVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IDpuZXdfYiBXSEVSRSBh ID0gOmFpZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cmVhZF9pbmRleHNjYW4uc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9y ZWFkX2luZGV4c2Nhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NTY4OTc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwKQEAgLTAsMCArMSwxMSBAQAorLS0g cmVhZF9pbmRleHNjYW46IHJlYWQtb25seSBidHJlZSBpbmRleC1zY2FuIHdvcmtsb2FkIGNv bmZpcm1pbmcgdGhlCistLSBIT1QtaW5kZXhlZCByZWFkIHBhdGggYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCBvbiB0YWJsZXMgd2l0aCBubyBzdGFsZQorLS0gZW50cmllcy4KKy0tIFRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRlcyBzdGFsZW5lc3Mgd2l0aG91dCBh IGtleSBjb21wYXJpc29uIGFuZAorLS0gdGhlIHNjYW4gZG9lcyBub3QgcmVxdWVzdCB0aGUg aW5kZXggdHVwbGUsIHNvIG9uIGEgZnJlc2hseSByZXNldCBzaXVfdGFibGUKKy0tIChubyBz dGFsZSBIT1QtaW5kZXhlZCBlbnRyaWVzKSB0aGVyZSBzaG91bGQgYmUgbm8gbWFzdGVyLXZz LXRlcGlkCistLSBkaWZmZXJlbmNlIG9uIHRoaXMgY2VsbC4gIFRoZSBwcmVkaWNhdGUgaXMg YW4gZXF1YWxpdHkgb24gdGhlCistLSBpbmRleGVkIGNvbHVtbiBiIGFuZCB0aGUgdGFyZ2V0 IGxpc3QgaW5jbHVkZXMgdGhlIG5vbi1pbmRleGVkIGNvbHVtbiBlLAorLS0gZm9yY2luZyBh IHBsYWluIChoZWFwLWZldGNoaW5nKSBpbmRleCBzY2FuIHJhdGhlciB0aGFuIGFuIGluZGV4 LW9ubHkgc2Nhbi4KK1xzZXQgaWQgcmFuZG9tKDEsIDpyb3dzKQorU0VMRUNUIGEsIGIsIGMs IGQsIGUgRlJPTSBzaXVfdGFibGUgV0hFUkUgYiA9IDppZDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvcnVuLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw MDAwMDAuLmZhMzMwYWQ0ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ydW4uc2gKQEAgLTAsMCArMSwzNzcgQEAKKyMhL3Vzci9iaW4v ZW52IGJhc2gKKyMgQS9CIHBnYmVuY2ggaGFybmVzcyBmb3IgdGVwaWQ6IG1hc3RlciAodXBz dHJlYW0pIHZzIHRlcGlkIChIT1QtaW5kZXhlZCkuCisjCisjIEVudiB2YXJzOgorIyAgIFND QUxFICAgICAgIC0tIHBnYmVuY2ggLXMgKGFsc28gbXVsdGlwbGllciBmb3Igc2l1X3RhYmxl IHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCisjICAgQ0xJRU5UUyAgICAgLS0gcGdiZW5jaCAt YworIyAgIFRIUkVBRFMgICAgIC0tIHBnYmVuY2ggLWoKKyMgICBEVVJBVElPTiAgICAtLSBw Z2JlbmNoIC1UIChzZWNvbmRzIHBlciB3b3JrbG9hZCkKKyMgICBXSURFX0NPTFMgICAtLSAj IG9mIGluZGV4ZWQgY29sdW1ucyBpbiB0aGUgd2lkZV90YWJsZSAoZGVmYXVsdCAxNikKKyMg ICBXSURFX1NURVBTICAtLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAidXBkYXRlZCBjb2x1 bW5zIiBjb3VudHMgZm9yCisjICAgICAgICAgICAgICAgICB0aGUgd2lkZSB3b3JrbG9hZCAo ZGVmYXVsdCAiMCwxLDQsOCxXSURFX0NPTFMiKQorIyAgIFBPUlQgICAgICAgIC0tIHBvc3Rn cmVzIHBvcnQgKGRlZmF1bHQgNTc0ODApCisjCisjIEZvciBlYWNoIHZhcmlhbnQgaW4ge21h c3RlciwgdGVwaWR9OgorIyAgIGluaXRkYiBmcmVzaCBwZ2RhdGEsIHN0YXJ0IHBvc3RncmVz LCBjcmVhdGUgdGVzdCBvYmplY3RzLAorIyAgIHJ1biB3b3JrbG9hZHMgKHBnYmVuY2ggLU4g c2ltcGxlX3VwZGF0ZSwgaG90X2luZGV4ZWRfdXBkYXRlLCBob3RfaW5kZXhlZF9taXhlZCwK KyMgICByZWFkX2luZGV4c2NhbiwgYW5kIHdpZGVfTiBmb3IgZWFjaCB2YWx1ZSBpbiBXSURF X1NURVBTKSwgY29sbGVjdCBUUFMgKyBIT1QKKyMgICBjb3VudHMgKyBXQUwgZGVsdGEgKyBw ZWFrIENQVS9SU1Mgc2FtcGxlZCB2aWEgcGlkc3RhdC4KKyMgRW1pdHMgQ1NWICsgTWFya2Rv d24gc3VtbWFyeSB1bmRlciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVzdWx0cy8uCitzZXQgLWV1 byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVuY2h9CitTQ0FM RT0ke1NDQUxFOi0yMH0KK0NMSUVOVFM9JHtDTElFTlRTOi0xNn0KK1RIUkVBRFM9JHtUSFJF QURTOi04fQorRFVSQVRJT049JHtEVVJBVElPTjotMTIwfQorV0lERV9DT0xTPSR7V0lERV9D T0xTOi0xNn0KK1dJREVfU1RFUFM9JHtXSURFX1NURVBTOi0wLDEsNCw4LDE2fQorUE9SVD0k e1BPUlQ6LTU3NDgwfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRC RU5DSC9yZXN1bHRzLyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy8kVFMKK21rZGlyIC1w ICIkTE9HRElSIgorZWNobyAidmFyaWFudCx3b3JrbG9hZCx0cHMsbGF0ZW5jeV9hdmdfbXMs Y2xhc3NpY19ob3RfdXBkYXRlcyxob3RfaW5kZXhlZF91cGRhdGVzLG5vbl9ob3RfdXBkYXRl cyx0b3RhbF91cGRhdGVzLHdhbF9ieXRlcyxibG9hdF9wYWdlc19iZWZvcmUsYmxvYXRfcGFn ZXNfYWZ0ZXIsaW5kZXhfc2l6ZV9iZWZvcmUsaW5kZXhfc2l6ZV9hZnRlcixjcHVfcGN0X3Bl YWsscnNzX21pYl9wZWFrLHBlcl9pbmRleF9iZWZvcmUscGVyX2luZGV4X2FmdGVyIiA+ICIk T1VUIgorZWNobyAiPT09IHNpdS1iZW5jaCBBL0IgcnVuICRUUyAtPiAkT1VUIChzY2FsZT0k U0NBTEUgY2xpZW50cz0kQ0xJRU5UUyB0aHJlYWRzPSRUSFJFQURTIGR1cmF0aW9uPSR7RFVS QVRJT059cykiCisKK2Jpbl9vZigpIHsKKyAgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9w Z3NxbC9iaW4iCit9CisKK0xEX29mKCkgeworICBsb2NhbCBiYXNlPSRCRU5DSC8kMS91c3Iv bG9jYWwvcGdzcWwKKyAgIyBMaW51eCBkaXN0cm9zIHRoYXQgc3BsaXQgNjQtYml0IGxpYnMg dXNlIGxpYjY0OyBtb3N0IG90aGVycyB1c2UgbGliLgorICBpZiBbIC1kICIkYmFzZS9saWI2 NCIgXTsgdGhlbgorICAgIGVjaG8gIiRiYXNlL2xpYjY0IgorICBlbHNlCisgICAgZWNobyAi JGJhc2UvbGliIgorICBmaQorfQorCitwc3FsX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlm dAorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9w c3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIgorfQorCitwZ2Jl bmNoX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlmdAorICBMRF9MSUJSQVJZX1BBVEg9IiQo TERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgIiRAIgorfQorCitzdGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMQor ICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBbIC1kICIkZGF0YWRpciIgXSAm JiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBybWRpciAiJGRhdGFk aXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERf b2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9z dGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgbG9jYWwgc2I9JHtTSEFS RURfQlVGRkVSUzotNTEyTUJ9CisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25m IiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkc2IKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dh bF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1l b3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ19kZXN0aW5hdGlvbiA9ICdz dGRlcnInCitsb2dnaW5nX2NvbGxlY3RvciA9IG9mZgorcG9ydCA9ICRQT1JUCitFT0YKKyAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3Rs IiAtRCAiJGRhdGFkaXIiIFwKKyAgICAtbyAiLXAgJFBPUlQiIC1sICIkTE9HRElSL3BnXyR2 LmxvZyIgc3RhcnQgPi9kZXYvbnVsbAorICBzbGVlcCAyCit9CisKK3N0b3BfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3RsIiAtRCAi JGRhdGFkaXIiIHN0b3AgLW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitw b3N0bWFzdGVyX3BpZCgpIHsKKyAgbG9jYWwgdj0kMQorICBoZWFkIC0xICIkQkVOQ0gvX2Rh dGFfJHYvcG9zdG1hc3Rlci5waWQiIDI+L2Rldi9udWxsCit9CisKK3NldHVwX3NjaGVtYXMo KSB7CisgIGxvY2FsIHY9JDEKKyAgc2VlZF9zaXVfdGFibGUgIiR2IgorICBzZWVkX3dpZGVf dGFibGUgIiR2IgorICAjIHBnYmVuY2ggc2NoZW1hIGZvciBidWlsdC1pbiBzaW1wbGVfdXBk YXRlLgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgXAorICAgIC1pIC1z ICIkU0NBTEUiIC1xIHBvc3RncmVzID4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAy PiYxCit9CisKKyMgc2VlZF9zaXVfdGFibGU6IChyZSljcmVhdGUgdGhlIG5hcnJvdyB0YWJs ZSB1c2VkIGJ5IHRoZSBzaXVfKiB3b3JrbG9hZHMuCitzZWVkX3NpdV90YWJsZSgpIHsKKyAg bG9jYWwgdj0kMQorICBsb2NhbCByb3dzPSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9h cyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUg VEFCTEUgc2l1X3RhYmxlKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50 LCBlIHRleHQpOworQ1JFQVRFIElOREVYIHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFU RSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFibGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04g c2l1X3RhYmxlKGQpOworSU5TRVJUIElOVE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBp LCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFT IGk7CitWQUNVVU0gKEZVTEwsIEFOQUxZWkUpIHNpdV90YWJsZTsKK0NIRUNLUE9JTlQ7CitT UUwKK30KKworIyBzZWVkX3dpZGVfdGFibGU6IChyZSljcmVhdGUgdGhlIHdpZGUgdGFibGUg d2l0aCBXSURFX0NPTFMgaW5kZXhlZCBjb2x1bW5zLgorc2VlZF93aWRlX3RhYmxlKCkgewor ICBsb2NhbCB2PSQxCisgIGxvY2FsIGNvbGRlZnM9IiIgaW5zZXJ0Y29scz0iIiBpbnNlcnR2 YWxzPSIiIGlkeGxpc3Q9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJFdJREVfQ09MUyIpOyBk bworICAgIGNvbGRlZnMrPSIsIGMkaSBpbnQiCisgICAgaW5zZXJ0Y29scys9IiwgYyRpIgor ICAgIGluc2VydHZhbHMrPSIsIGkiCisgICAgaWR4bGlzdCs9IkNSRUFURSBJTkRFWCB3aWRl X2MkaSBPTiB3aWRlX3RhYmxlKGMkaSk7ICIKKyAgZG9uZQorICBsb2NhbCB3aWRlX3Jvd3M9 JCgoU0NBTEUgKiAxMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElG IEVYSVNUUyB3aWRlX3RhYmxlOworQ1JFQVRFIFRBQkxFIHdpZGVfdGFibGUoaWQgaW50IFBS SU1BUlkgS0VZICRjb2xkZWZzKTsKKyRpZHhsaXN0CitJTlNFUlQgSU5UTyB3aWRlX3RhYmxl KGlkICRpbnNlcnRjb2xzKSBTRUxFQ1QgaSAkaW5zZXJ0dmFscyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkd2lkZV9yb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSB3aWRl X3RhYmxlOworQ0hFQ0tQT0lOVDsKK1NRTAorfQorCisjIHJlc2V0X3N0YXRlOiByZXN0b3Jl IGEgd29ya2xvYWQncyB0YXJnZXQgdGFibGUgdG8gaXRzIHNlZWRlZCBiYXNlbGluZS4KKyMg VXNlZCBiZXR3ZWVuIHdvcmtsb2FkcyBzbyBwZXItd29ya2xvYWQgYmxvYXQvaWR4X3NpemUg ZGVsdGFzIGFyZSBub3QKKyMgcG9sbHV0ZWQgYnkgY2FycnlvdmVyIGZyb20gZWFybGllciB3 b3JrbG9hZHMgaW4gdGhlIHNhbWUgdmFyaWFudCBydW4uCisjIEZvciBwZ2JlbmNoX2FjY291 bnRzIHdlIHJlLWluaXRpYWxpc2UgdmlhIGBwZ2JlbmNoIC1pYDsgZm9yIG91cgorIyBoYW5k LXJvbGxlZCB0YWJsZXMgd2UgZHJvcCArIHJlY3JlYXRlICsgcmVzZWVkLgorcmVzZXRfc3Rh dGUoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgY2FzZSAiJHRhYmxlIiBpbgorICAg IHBnYmVuY2hfYWNjb3VudHMpCisgICAgICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2 IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9z dGdyZXMgXAorICAgICAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+PiIkTE9HRElS L3BnYmVuY2hfaW5pdF8kdi5sb2ciIDI+JjEKKyAgICAgIHBzcWxfYXMgIiR2IiAtYyAiQ0hF Q0tQT0lOVCIgPi9kZXYvbnVsbAorICAgICAgOzsKKyAgICBzaXVfdGFibGUpCisgICAgICBz ZWVkX3NpdV90YWJsZSAiJHYiCisgICAgICA7OworICAgIHdpZGVfdGFibGUpCisgICAgICBz ZWVkX3dpZGVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICAqKQorICAgICAgZWNobyAicmVz ZXRfc3RhdGU6IHVua25vd24gdGFibGUgJHRhYmxlIiA+JjIKKyAgICAgIHJldHVybiAxCisg ICAgICA7OworICBlc2FjCisgIHBzcWxfYXMgIiR2IiAtYyAiU0VMRUNUIHBnX3N0YXRfcmVz ZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKCckdGFibGUnOjpyZWdjbGFzczo6b2lkKSIgPi9k ZXYvbnVsbAorfQorCitibG9hdF9zdGF0cygpIHsKKyAgbG9jYWwgdj0kMSB0YWJsZT0kMgor ICBwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJyR0YWJsZScpLzgx OTIgfHwgJywnIHx8IHBnX2luZGV4ZXNfc2l6ZSgnJHRhYmxlJykiCit9CisKKyMgc2l1X2Nv dW50OiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyBvYnNlcnZlZCBvbiAkdGFibGUg c2luY2UgaXRzCisjIHBnc3RhdCBjb3VudGVycyB3ZXJlIGxhc3QgcmVzZXQuICBSZXR1cm5z ICIwIiBvbiBtYXN0ZXIgKHdoZXJlIHRoZQorIyBjb3VudGVyIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCkgc28gdGhlIENTViBjb2x1bW4gc3RheXMgbnVtZXJpYy4KK3NpdV9jb3VudCgpIHsK KyAgbG9jYWwgdj0kMSB0YWJsZT0kMgorICBsb2NhbCB2YWwKKyAgdmFsPSQocHNxbF9hcyAi JHYiIC1BdGMgXAorICAgICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBk LCAwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIg Mj4vZGV2L251bGwpCisgIFtbICIkdmFsIiA9fiBeWzAtOV0rJCBdXSB8fCB2YWw9MAorICBl Y2hvICIkdmFsIgorfQorCisjIHBlcl9pbmRleF9zaXplczogZW1pdCAiaWR4MT1ieXRlcztp ZHgyPWJ5dGVzOy4uLiIgZm9yIHRoZSBpbmRleGVzIG9uCisjICR0YWJsZSwgc29ydGVkIGJ5 IGluZGV4cmVsaWQuICBVc2VkIGJ5IHRoZSB3aWRlXyogd29ya2xvYWRzIHNvIHdlIGNhbgor IyBzZWUgcGVyLWNvbHVtbiBpbmRleCBncm93dGggcmF0aGVyIHRoYW4ganVzdCB0aGUgYWdn cmVnYXRlLiAgUmV0dXJucworIyB0aGUgbGl0ZXJhbCAibm9uZSIgd2hlbiAkdGFibGUgaGFz IG5vIGluZGV4ZXMuCitwZXJfaW5kZXhfc2l6ZXMoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9 JDIKKyAgbG9jYWwgb3V0CisgIG91dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qgc3Ry aW5nX2FnZygKKyAgICAgICAgICAgaS5yZWxuYW1lIHx8ICc9JyB8fCBwZ19yZWxhdGlvbl9z aXplKGkub2lkKTo6dGV4dCwKKyAgICAgICAgICAgJzsnIE9SREVSIEJZIGkub2lkKQorICAg ICAgICAgRlJPTSBwZ19jbGFzcyB0CisgICAgICAgICBKT0lOIHBnX2luZGV4IGl4IE9OIGl4 LmluZHJlbGlkID0gdC5vaWQKKyAgICAgICAgIEpPSU4gcGdfY2xhc3MgaSAgT04gaS5vaWQg PSBpeC5pbmRleHJlbGlkCisgICAgICAgICBXSEVSRSB0LnJlbG5hbWUgPSAnJHRhYmxlJyIp CisgIFsgLW4gIiRvdXQiIF0gfHwgb3V0PSJub25lIgorICBlY2hvICIkb3V0IgorfQorCitz YW1wbGVfcGVhaygpIHsKKyAgIyBTYW1wbGUgQ1BVIC8gUlNTIG9mIHRoZSBwb3N0bWFzdGVy IHRyZWUgZm9yICREVVJBVElPTis1IHNlY29uZHMuCisgICMgV3JpdGVzICJwZWFrX2NwdV9w Y3QscGVha19yc3NfbWliIiB0byB0aGUgZ2l2ZW4gb3V0ZmlsZS4gIFBvcnRhYmxlIGFjcm9z cworICAjIExpbnV4IC8gRnJlZUJTRCAoZmFsbHMgYmFjayB0byBwZ3JlcCArIHBlci1waWQg cHMgd2hlcmUgLS1wcGlkIGlzbid0CisgICMgYXZhaWxhYmxlKS4gIFJldHVybnMgJ05BLE5B JyBpZiB0aGUgc2FtcGxlciBjYW4ndCBjb2xsZWN0IHVzZWZ1bCBkYXRhLgorICBsb2NhbCBv dXRmaWxlPSQxIHY9JDIKKyAgbG9jYWwgbGVhZGVyCisgIGxlYWRlcj0kKHBvc3RtYXN0ZXJf cGlkICIkdiIpCisgIFsgLXogIiRsZWFkZXIiIF0gJiYgeyBlY2hvICJOQSxOQSIgPiAiJG91 dGZpbGUiOyByZXR1cm47IH0KKyAgbG9jYWwgZHVyPSQoKCBEVVJBVElPTiArIDUgKSkKKyAg KAorICAgIGxvY2FsIG1heF9jcHU9MAorICAgIGxvY2FsIG1heF9yc3M9MAorICAgIGxvY2Fs IHQwPSQoZGF0ZSArJXMpCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgQ2hpbGRyZW4gb2Yg dGhlIGxlYWRlciArIHRoZSBsZWFkZXIgaXRzZWxmLgorICAgICAgbG9jYWwgcGlkcworICAg ICAgcGlkcz0kKCAocGdyZXAgLVAgIiRsZWFkZXIiIDI+L2Rldi9udWxsOyBlY2hvICIkbGVh ZGVyIikgfCB0ciAnXG4nICcgJykKKyAgICAgIGxvY2FsIHNhbXBsZQorICAgICAgc2FtcGxl PSQocHMgLW8gcGNwdT0scnNzPSAtcCAkcGlkcyAyPi9kZXYvbnVsbCB8IFwKKyAgICAgICAg ICAgICAgIGF3ayAne2NwdSs9JDE7IHJzcys9JDJ9IEVORHtwcmludGYgIiUuMWYgJWRcbiIs IGNwdSswLCByc3MrMH0nKQorICAgICAgbG9jYWwgYyByCisgICAgICByZWFkIC1yIGMgciA8 PDwiJHNhbXBsZSIKKyAgICAgIGlmIFsgLW4gIiR7YzotfSIgXSAmJiBbIC1uICIke3I6LX0i IF07IHRoZW4KKyAgICAgICAgYXdrIC12IG09IiRtYXhfY3B1IiAtdiBjPSIkYyIgJ0JFR0lO e2V4aXQgIShjPm0pfScgJiYgbWF4X2NwdT0kYworICAgICAgICBbICIkciIgLWd0ICIkbWF4 X3JzcyIgXSAyPi9kZXYvbnVsbCAmJiBtYXhfcnNzPSRyCisgICAgICBmaQorICAgICAgbG9j YWwgbm93PSQoZGF0ZSArJXMpCisgICAgICBbICQoKG5vdyAtIHQwKSkgLWdlICIkZHVyIiBd ICYmIGJyZWFrCisgICAgICBzbGVlcCAxCisgICAgZG9uZQorICAgIGxvY2FsIHJzc19taWI9 JCgoIG1heF9yc3MgLyAxMDI0ICkpCisgICAgZWNobyAiJG1heF9jcHUsJHJzc19taWIiID4g IiRvdXRmaWxlIgorICApICYKKyAgZWNobyAkIQorfQorCitydW5fb25lKCkgeworICBsb2Nh bCB2PSQxIHdvcmtsb2FkPSQyIHNjcmlwdD0kMyB0YWJsZT0kezQ6LXNpdV90YWJsZX0gZXh0 cmFfc2V0PSR7NTotfQorCisgIGxvY2FsIHdhbF9zdGFydCB3YWxfZW5kIGhvdF9zdGFydCBo b3RfZW5kIHRvdGFsX3N0YXJ0IHRvdGFsX2VuZCB0cHMgbGF0CisgIGxvY2FsIHNpdV9zdGFy dCBzaXVfZW5kCisgIGxvY2FsIGJsb2F0X2JlZm9yZSBibG9hdF9hZnRlciBpZHhfYmVmb3Jl IGlkeF9hZnRlcgorICBsb2NhbCBwZXJfaWR4X2JlZm9yZSBwZXJfaWR4X2FmdGVyCisgIHJl YWQgLXIgYmxvYXRfYmVmb3JlIGlkeF9iZWZvcmUgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9iZWZvcmU9JChwZXJfaW5kZXhfc2l6 ZXMgIiR2IiAiJHRhYmxlIikKKworICB3YWxfc3RhcnQ9JChwc3FsX2FzICIkdiIgLUF0YyAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X3N0YXJ0PSQocHNx bF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00g cGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKyAgc2l1X3N0 YXJ0PSQoc2l1X2NvdW50ICIkdiIgIiR0YWJsZSIpCisgIHRvdGFsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0 X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIG91dD0i JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LmxvZyIKKyAgbG9jYWwgY3B1X3Jzc19maWxlPSRM T0dESVIvJHt2fV8ke3dvcmtsb2FkfS5jcHUKKyAgbG9jYWwgc2FtcGxlcl9waWQKKyAgc2Ft cGxlcl9waWQ9JChzYW1wbGVfcGVhayAiJGNwdV9yc3NfZmlsZSIgIiR2IikKKworICBzZXQg K2UKKyAgY2FzZSAiJHdvcmtsb2FkIiBpbgorICAgIHNpbXBsZV91cGRhdGUpCisgICAgICBw Z2JlbmNoX2FzICIkdiIgLU4gLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVS QVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7Owor ICAgIHdpZGVfKikKKyAgICAgICMgYnVpbGQgdGhlIFNFVCBjbGF1c2UgZnJvbSBleHRyYV9z ZXQgd2hpY2ggaXMgImMxPTp2LGMyPTp2LC4uLiIKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAt ZiA8KHNlZCAicy86d2lkZV9zZXRfY2xhdXNlLyRleHRyYV9zZXQvIiAiJHNjcmlwdCIpIFwK KyAgICAgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwK KyAgICAgICAgLUQgInNjYWxlPSRTQ0FMRSIgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisg ICAgICA7OworICAgIHJlYWRfaW5kZXhzY2FuKQorICAgICAgIyByZWFkLW9ubHk7IHBhc3Mg dGhlIHJvdyBjb3VudCBzbyB0aGUgc2NyaXB0IGNhbiBwaWNrIHJhbmRvbSBrZXlzCisgICAg ICBwZ2JlbmNoX2FzICIkdiIgLWYgIiRzY3JpcHQiIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJyb3dzPSQoKFNDQUxFICogMTAw MDAwKSkiIC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICAqKQorICAg ICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhS RUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+ JjEKKyAgICAgIDs7CisgIGVzYWMKKyAgc2V0IC1lCisKKyAgd2FpdCAiJHNhbXBsZXJfcGlk IiAyPi9kZXYvbnVsbCB8fCB0cnVlCisgIGxvY2FsIGNwdV9yc3MKKyAgY3B1X3Jzcz0kKGNh dCAiJGNwdV9yc3NfZmlsZSIgMj4vZGV2L251bGwgfHwgZWNobyAiTkEsTkEiKQorCisgIHRw cz0kKGF3ayAnL3RwcyA9IC97cHJpbnQgJDM7IGV4aXR9JyAiJG91dCIpCisgIGxhdD0kKGF3 ayAnL2xhdGVuY3kgYXZlcmFnZSA9IC97cHJpbnQgJDQ7IGV4aXR9JyAiJG91dCIpCisgIHRw cz0ke3RwczotTkF9CisgIGxhdD0ke2xhdDotTkF9CisKKyAgd2FsX2VuZD0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICBob3Rf ZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikK KyAgc2l1X2VuZD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9lbmQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX3VwZCwwKSBGUk9NIHBn X3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisKKyAgbG9jYWwg d2FsX2J5dGVzCisgIHdhbF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdf d2FsX2xzbl9kaWZmKCckd2FsX2VuZCc6OnBnX2xzbiwgJyR3YWxfc3RhcnQnOjpwZ19sc24p OjpiaWdpbnQiKQorCisgICMgQ2FwdHVyZSBhIFdBTCByZWNvcmQtdHlwZSBoaXN0b2dyYW0g Zm9yIHRoaXMgd29ya2xvYWQuICBwZ193YWxkdW1wJ3MKKyAgIyAtLXN0YXRzPXJlY29yZCBv dXRwdXQgaXMgcmljaCAofjYwIGxpbmVzKSBzbyBzdGFzaCBpdCBpbiBMT0dESVIKKyAgIyBy YXRoZXIgdGhhbiB0cnlpbmcgdG8gZm9sZCBpbnRvIHRoZSBDU1YuICBUb2xlcmF0ZSBmYWls dXJlczogaWYgdGhlCisgICMgc2VnbWVudCBjb250YWluaW5nIHdhbF9zdGFydCBoYXMgYmVl biByZWN5Y2xlZCAocmFyZSB3aXRoCisgICMgbWF4X3dhbF9zaXplPTRHQiBidXQgcG9zc2li bGUgdW5kZXIgbG9uZyBjaGFpbmVkIHJ1bnMpLCB3ZSBlbWl0IGEKKyAgIyBub3RlIGFuZCBt b3ZlIG9uIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlIHdob2xlIHJ1bi4KKyAgbG9jYWwgd2Fs X3N0YXRzX2ZpbGU9JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LndhbHN0YXRzCisgIExEX0xJ QlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX3dhbGR1bXAi IFwKKyAgICAtLXN0YXRzPXJlY29yZCAtcCAiJEJFTkNIL19kYXRhXyR2L3BnX3dhbCIgXAor ICAgIC0tc3RhcnQ9IiR3YWxfc3RhcnQiIC0tZW5kPSIkd2FsX2VuZCIgXAorICAgID4gIiR3 YWxfc3RhdHNfZmlsZSIgMj4gIiR7d2FsX3N0YXRzX2ZpbGV9LmVyciIgXAorICAgIHx8IGVj aG8gInBnX3dhbGR1bXAgdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U7IHNlZSAke3dhbF9z dGF0c19maWxlfS5lcnIiID4gIiR3YWxfc3RhdHNfZmlsZSIKKworICByZWFkIC1yIGJsb2F0 X2FmdGVyIGlkeF9hZnRlciA8PDwiJChibG9hdF9zdGF0cyAiJHYiICIkdGFibGUiIHwgdHIg LCAnICcpIgorICBwZXJfaWR4X2FmdGVyPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJs ZSIpCisKKyAgbG9jYWwgaG90PSQoKGhvdF9lbmQgLSBob3Rfc3RhcnQpKQorICBsb2NhbCBz aXU9JCgoc2l1X2VuZCAtIHNpdV9zdGFydCkpCisgIGxvY2FsIHRvdD0kKCh0b3RhbF9lbmQg LSB0b3RhbF9zdGFydCkpCisgIGxvY2FsIGNsYXNzaWNfaG90PSQoKGhvdCAtIHNpdSkpCisg IGxvY2FsIG5vbl9ob3Q9JCgodG90IC0gaG90KSkKKworICBwcmludGYgJyVzLCVzLCVzLCVz LCVkLCVkLCVkLCVkLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiIFwKKyAgICAiJHdhbF9ieXRlcyIgXAorICAgICIkYmxvYXRfYmVmb3JlIiAi JGJsb2F0X2FmdGVyIiBcCisgICAgIiRpZHhfYmVmb3JlIiAiJGlkeF9hZnRlciIgXAorICAg ICIkY3B1X3JzcyIgIiRwZXJfaWR4X2JlZm9yZSIgIiRwZXJfaWR4X2FmdGVyIiA+PiAiJE9V VCIKKyAgcHJpbnRmICcgICUtOHMgJS0xNHMgdHBzPSUxMHMgbGF0PSU2cyBjbGFzc2ljX2hv dD0lN2QgaGk9JTdkIG5vbl9ob3Q9JTdkIHRvdD0lLTdkIHdhbD0lMTJzIGJsb2F0PSVzLT4l cyBpZHg9JXMtPiVzIGNwdV9yc3M9JXNcbicgXAorICAgICIkdiIgIiR3b3JrbG9hZCIgIiR0 cHMiICIkbGF0IiAiJGNsYXNzaWNfaG90IiAiJHNpdSIgIiRub25faG90IiAiJHRvdCIgIiR3 YWxfYnl0ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgIiRpZHhf YmVmb3JlIiAiJGlkeF9hZnRlciIgIiRjcHVfcnNzIgorfQorCitidWlsZF93aWRlX3NldF9j bGF1c2UoKSB7CisgICMgZW1pdCBlLmcuICJjMT06dixjMj06diwuLi4sY049OnYiIGZvciBm aXJzdCBOIGNvbHMuCisgIGxvY2FsIG49JDEKKyAgaWYgWyAiJG4iIC1lcSAwIF07IHRoZW4K KyAgICAjIE5vIGluZGV4ZWQtY29sIHVwZGF0ZTsgdG91Y2ggYSBub24taW5kZXhlZCBjb2x1 bW4gKGlkICUgMSBzbyBpdCdzIGEgbm8tb3ApCisgICAgZWNobyAiaWQ9aWQiCisgICAgcmV0 dXJuCisgIGZpCisgIGxvY2FsIGNsYXVzZXM9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJG4i KTsgZG8KKyAgICBbIC1uICIkY2xhdXNlcyIgXSAmJiBjbGF1c2VzKz0iLCIKKyAgICBjbGF1 c2VzKz0iYyRpPTp2IgorICBkb25lCisgIGVjaG8gIiRjbGF1c2VzIgorfQorCitmb3IgdiBp biBtYXN0ZXIgdGVwaWQ7IGRvCisgIGVjaG8gIi0tLSB2YXJpYW50OiAkdiIKKyAgc3RvcF9w ZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZXR1cF9zY2hlbWFzICIkdiIK KworICBydW5fb25lICIkdiIgc2ltcGxlX3VwZGF0ZSAnJyAgICAgICAgICAgICAgICAgICAg cGdiZW5jaF9hY2NvdW50cworICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5f b25lICIkdiIgaG90X2luZGV4ZWRfdXBkYXRlICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5k ZXhlZF91cGRhdGUuc3FsIiAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3Rh YmxlCisgIHJ1bl9vbmUgIiR2IiBob3RfaW5kZXhlZF9taXhlZCAgICAgIiRCRU5DSC9zY3Jp cHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCIgICBzaXVfdGFibGUKKyAgcmVzZXRfc3RhdGUg IiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIHJlYWRfaW5kZXhzY2FuICAgICAgICAi JEJFTkNIL3NjcmlwdHMvcmVhZF9pbmRleHNjYW4uc3FsIiAgICAgIHNpdV90YWJsZQorCisg IGZvciBuIGluICR7V0lERV9TVEVQUy8vLC8gfTsgZG8KKyAgICByZXNldF9zdGF0ZSAiJHYi IHdpZGVfdGFibGUKKyAgICBydW5fb25lICIkdiIgIndpZGVfJHtufSIgIiRCRU5DSC9zY3Jp cHRzL3dpZGVfdXBkYXRlLnNxbCIgd2lkZV90YWJsZSBcCisgICAgICAgICAgICAiJChidWls ZF93aWRlX3NldF9jbGF1c2UgIiRuIikiCisgIGRvbmUKKworICBzdG9wX3BnICIkdiIKK2Rv bmUKKworZWNobyAiPT09IHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8 IGhlYWQgLTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3NvYWsuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2gKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjZkMTI3ZjFjMDEyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNo CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIHRlcGlkIHNvYWs6 IHJ1biBob3RfaW5kZXhlZF91cGRhdGUgZm9yICREVVJBVElPTiBzZWNvbmRzIG9uIGVhY2gg dmFyaWFudCwgc2FtcGxpbmcKKyMgVFBTIC8gSE9ULXJhdGUgLyBXQUwgdm9sdW1lIC8gdGFi bGUraW5kZXggYmxvYXQgZXZlcnkgJFNBTVBMRSBzZWNvbmRzLgorIyBFbWl0cyBhIENTViB3 aXRoIG9uZSBzYW1wbGUgcm93IHBlciB0aWNrIHBlciB2YXJpYW50Lgorc2V0IC1ldW8gcGlw ZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorU0NBTEU9JHtT Q0FMRTotNTB9CitDTElFTlRTPSR7Q0xJRU5UUzotMTZ9CitUSFJFQURTPSR7VEhSRUFEUzot OH0KK0RVUkFUSU9OPSR7RFVSQVRJT046LTkwMH0gICAgICMgMTUgbWludXRlcworU0FNUExF PSR7U0FNUExFOi02MH0gICAgICAgICAgIyBldmVyeSA2MCBzCitQT1JUPSR7UE9SVDotNTc1 MDN9CitTSEFSRURfQlVGRkVSUz0ke1NIQVJFRF9CVUZGRVJTOi0yR0J9CisKK1RTPSQoZGF0 ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvc29ha18kVFMuY3N2 CitMT0dESVI9JEJFTkNIL2xvZ3Mvc29ha18kVFMKK21rZGlyIC1wICIkTE9HRElSIgorZWNo byAidmFyaWFudCx0X3NlY3MsdHBzX2luc3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFn ZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVzX3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRP VVQiCitlY2hvICI9PT0gc29hayAkVFMgLT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAi JEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBi PSRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8g IiRiL2xpYjY0IiB8fCBlY2hvICIkYi9saWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9 JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAi JHYiKS9wc3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQor cGdiZW5jaF9hcygpIHsgbG9jYWwgdj0kMTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChM RF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JU IiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRh dGFkaXI9JEJFTkNIL19kYXRhXyR2CisgIFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRk YXRhZGlyIiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtk aXIgLXAgIiRkYXRhZGlyIgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIk KGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9H RElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3Fs LmNvbmYiIDw8RU9GCitzaGFyZWRfYnVmZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19t ZW0gPSAzMk1CCittYXhfd2FsX3NpemUgPSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9u CitjaGVja3BvaW50X3RpbWVvdXQgPSAxMG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0 b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVtX25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwCithdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAw LjEKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1w ICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xl ZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFU SD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9f ZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3Nl dHVwKCkgeworICBsb2NhbCB2PSQxIHJvd3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3Fs X2FzICIkdiIgPDxTUUwKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFU RSBUQUJMRSBzaXVfdGFibGUoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBp bnQsIGUgdGV4dCk7CitDUkVBVEUgSU5ERVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JF QVRFIElOREVYIHNpdV9jIE9OIHNpdV90YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBP TiBzaXVfdGFibGUoZCk7CitJTlNFUlQgSU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGks IGksIGksIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykg QVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkgc2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2Fr KCkgeworICBsb2NhbCB2PSQxCisgIGVjaG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9O fXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FNUExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVl CisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9 JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0 IikKKyAgbG9jYWwgaG90MCB0b3QwCisgIGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVz IFdIRVJFIHJlbG5hbWU9J3NpdV90YWJsZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1B dGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2Vy X3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9 JGhvdDAgcHJldl90b3Q9JHRvdDAKKworICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tn cm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdyb3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIk QkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIg LW4gcG9zdGdyZXMgPiIkTE9HRElSL3BnYmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwg cGdiPSQhCisKKyAgbG9jYWwgdD0wCisgIHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIg XTsgZG8KKyAgICBzbGVlcCAiJFNBTVBMRSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAg IGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlk eF9ieXRlcyBuX2RlYWQKKyAgICBub3dfaG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYi IC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91 c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQo cHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIp CisgICAgd2FsX2J5dGVzPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNu X2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNuLCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQor ICAgIGhlYXBfcGFnZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3Np emUoJ3NpdV90YWJsZScpLzgxOTIiKQorICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAt QXRjICJTRUxFQ1QgcGdfaW5kZXhlc19zaXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFk PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKwor ICAgIGxvY2FsIGRfaG90PSQoKG5vd19ob3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90 b3Q9JCgobm93X3RvdCAtIHByZXZfdG90KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0Cisg ICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBdOyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBk PSIkZF90b3QiIC12IHM9IiRTQU1QTEUiICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykK KyAgICAgIGhvdF9wY3Q9JChhd2sgLXYgaD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJ TntwcmludGYgIiUuMWYiLCAxMDAqaC90fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsg aG90X3BjdD0wCisgICAgZmkKKyAgICBwcmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVz XG4nICIkdiIgIiR0IiAiJHRwc19pIiAiJGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhf Ynl0ZXMiICIkd2FsX2J5dGVzIiAiJG5fZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcg ICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEy cyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBcCisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiCisgICAgcHJldl9ob3Q9JG5vd19ob3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBk b25lCisKKyAgd2FpdCAiJHBnYiIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIk diIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitk b25lCisKK2VjaG8gIj09PSBzb2FrIHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIk T1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Njcmlw dHMvd2lkZV91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMmMyZmYxNGFjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lk ZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBzZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdp dGggV0lERV9DT0xTIGludGVnZXIKKy0tIGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJl ZS1pbmRleGVkLiAgVGhlIHdvcmtsb2FkIFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51 bWJlciBvZiB0aG9zZSBpbmRleGVkIGNvbHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoV0lE RV9VUERDT0xTIGVudiB2YXIpIG9uIGEgcmFuZG9tIHJvdy4KK1xzZXQgcmlkIHJhbmRvbSgx LCA6c2NhbGUgKiAxMDAwKQorXHNldCB2IHJhbmRvbSgxLCAxMDAwMDAwMDAwKQorVVBEQVRF IHdpZGVfdGFibGUgU0VUIDp3aWRlX3NldF9jbGF1c2UgV0hFUkUgaWQgPSA6cmlkOwotLSAK Mi41MC4xCgo= --ac1126a1fccdd6b97e3336b1b4d3333f6193e9ac--